ZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzLy5naXRpZ25vcmUgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MDhlODQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMjIgQEAKKy90YXJnZXQvDQorL2xvZ3MvDQorLmNsYXNzcGF0aA0KKy5zZXR0aW5ncy8NCisNCisjIFRhcmdldCBkaXJzIGluIGFsbCBwcm9qZWN0cw0KKyoqL3RhcmdldC1pZGUvKg0KKyoqL3RhcmdldC8qDQorKiovbG9ncy8qDQorKiovdG9rZW5zLyoNCisNCisjIEFkZGVkIGZvciBJbnRlbGxpaiBJREVBIElERQ0KKyoqL2RlYnVnLWxvZ3MvKg0KKyoqLy5pZGVhLyoNCisqKi8qLmltbA0KKyoqLyoucHJvamVjdA0KKyoqLy5zcHJpbmdCZWFucw0KKw0KKw0KKyoqLyp2ZXJzaW9uc0JhY2t1cA0KKyoqL2JsYWNrRHVja0h1YioNCisqKi8qLmpzb25sZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL1JFQURNRS5tZCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvUkVBRE1FLm1kCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9SRUFETUVfRklSU1QudHh0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvUkVBRE1FX0ZJUlNULnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvUkVBRE1FX0ZJUlNULnR4dApkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vZXRjL1NlY3VyaXR5RmlsdGVyRXhwcmVzc2lvbnMuY2ZnIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vZXRjL1NlY3VyaXR5RmlsdGVyRXhwcmVzc2lvbnMuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxODVkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9ldGMvU2VjdXJpdHlGaWx0ZXJFeHByZXNzaW9ucy5jZmcKQEAgLTAsMCArMSw3MSBAQAorKD4pXGR7Myw0fSg8XC8uKnNlY3VyaXR5PikgJDF4eHh4JDIKKyg+KVxkezExLDEyfShcZHs0fTxcLy4qY3JlZGl0Q2FyZE51bWJlcj4pICQxeHh4eHh4eHh4eHh4JDIKKyg+KVxkKyhcZHs0fTxcLy4qc29jaWFsU2VjdXJpdHlOdW1iZXIuKj4pICQxeHh4eHgkMgorKD4pXGR7NX0oXGR7NH08XC8uKnNzbj4pICQxeHh4eHgkMgorKD4pXGQqKFxkezN9PFwvLippZE51bWJlcj4pICQxeHh4eHh4JDIKKyg+KVxkezExLDEyfShcZHs0fTxcL2NhcmROdW1iZXI+KSAkMXh4eHh4eHh4eHh4eCQyCisoPilbXj5dKig8XC9bXj5dKltwUF1hc3N3b3JkPikgJDF4eHh4eHgkMgorKD4pXGR7Myw0fSg8XC9jdnY+KSAkMXh4eCQyCisoQ2FyZFxzTnVtYmVyXHM9XHMpXGR7MTEsMTJ9KFxkezR9KSAkMXh4eHh4eHh4eHh4eCQyCisoQ1ZWXHM9XHMpLi4uICQxeHh4CisoU1NOXHM9XHMpXGR7OX0gJDF4eHh4eHh4eHgKKyg+KVxkezExLDEyfShcZHs0fTxcL2NjTnVtPikgJDF4eHh4eHh4eHh4eHgkMgorKD4pXGR7Myw0fSg8XC9jdnZOdW1iZXI+KSAkMXh4eCQyCisoY2NOdW1ccyo9XHMqKVxkezExLDEyfShcZHs0fSkgJDF4eHh4eHh4eHh4eHgkMgorKGN2dk51bWJlclxzKj1ccyopXGR7Myw0fSAkMXh4eCQyCisoPikuKig8XC9wYXNzY29kZT4pICQxeHh4eHh4JDIKKyhwYXNzd29yZFxzKj1ccyopXFMrICQxeHh4eHh4CisoPilcZHs1fShcZHs0fTxcLy4qYnVzaW5lc3NUYXhJZD4pICQxeHh4eHgkMgorKHRheF9pZFxzaW5cc3JlY29yZD1ccylcZHs1fShcZHs0fSkgJDF4eHh4eCQyCisodGF4X2lkXHNpblxzcmVxdWVzdD1ccylcZHs1fShcZHs0fSkgJDF4eHh4eCQyCisoc29jaWFsU2VjdXJpdHlOdW1iZXJccyo9XHMqKVxkKyhcZHs0fSkgJDF4eHh4eCQyCisoU1NOXHNpblxzcmVjb3JkPSlcZCsoXGR7NH0pICQxeHh4eHgkMgorKHNzbjdccyopXGQrKFxkezR9KSAkMXh4eHh4JDIKKyg+KVxkKyhcZHs0fTxcL2NhbTp0YXhJZD4pICQxeHh4eHgkMgorKD4pXGQrKFxkezR9PFwvLipyb3V0aW5nTnVtYmVyPikgJDF4eHh4eCQyCisoPilcZCsoXGR7NH08XC9iYW5rVFJOPikgJDF4eHh4eCQyCisoPilcZCsoXGR7NH08XC9kcmFmdEFjY291bnQ+KSAkMXh4eHh4JDIKKyhTU05cc2luXHNyZXF1ZXN0XHM9KVxkKyhcZHs0fSkgJDF4eHh4eCQyCisoSW5wdXRcc3RvXHNDYXNUdXhcc0N0cmw6XHNTU05ccylcZCsoXGR7NH0pICQxeHh4eHgkMgorKGJ1c2luZXNzVGF4SWRccylcZCsoXGR7NH0pICQxeHh4eHgkMgorKElucXVpcmVTaW5nbGVDcmVkaXRcc1RheF9JRF9JbnB1dFxzaW5cc3Jlc3BvbnNlPVxzKVxkKyhcZHs0fSkgJDF4eHh4eCQyCisoPGNvbTpzc051bWJlcj4pXGQrKFxkezR9PFwvY29tOnNzTnVtYmVyPikgJDF4eHh4eCQyCisoU3NOdW1iZXI6XHMpXGQrKFxkezR9KSAkMXh4eHh4JDIKKyhCdXNpbmVzc1RheElkOlxzKVxkKyhcZHs0fSkgJDF4eHh4eCQyCisoPGFjYzpwYXNzY29kZT4pLiooPFwvYWNjOnBhc3Njb2RlPikgJDF4eHh4eHgkMgorKD4pXGR7NH0oPFwvLipjcmVkaXRDYXJkRXhwaXJhdGlvbkRhdGU+KSAkMXh4eHgkMgorKGJpcnRoRGF0ZT4pXGQrKC0pXGQrKC0pXGQrKDxcLy4qYmlydGhEYXRlPikgJDF4eHh4JDJ4eCQzeHgkNAorKHBob3RvSWROdW1iZXI+KVxkKyhcZHs0fTxcLy4qcGhvdG9JZE51bWJlcikgJDF4eHh4eHh4eHh4eHh4eHgkMgorKHNvY2lhbFNlY3VyaXR5TnVtYmVyPilcZCsoXGR7NH08XC8uKnNvY2lhbFNlY3VyaXR5TnVtYmVyKSAkMXh4eHh4JDIKKyhjYXJkRXhwaXJhdGlvbkRhdGU+KVxkKygtKVxkKygtKVxkKyg8XC8uKmNhcmRFeHBpcmF0aW9uRGF0ZT4pICQxeHh4eCQyeHgkM3h4JDQKKyhzZWN1cml0eUNvZGU+KVxkKyg8XC8uKnNlY3VyaXR5Q29kZT4pICQxeHh4eCQyCisocGhvdG9faWRfbmJyPilcZCsoXGR7NH08XC8uKnBob3RvX2lkX25icikgJDF4eHh4eHh4eHh4eHh4eHgkMgorKHNvY2lhbF9zZWN1cml0eV9uYnI+KVxkKyhcZHs0fTxcLy4qc29jaWFsX3NlY3VyaXR5X25icikgJDF4eHh4eCQyCisoYmlydGhfZGF0ZT4pXGQrKC8pXGQrKC8pXGQrKDxcLy4qYmlydGhfZGF0ZT4pICQxeHgkMnh4JDN4eHh4JDQKKyhkYXRlT2ZCaXJ0aD4pXGQrKC8pXGQrKC8pXGQrKDxcLy4qZGF0ZU9mQmlydGg+KSAkMXh4JDJ4eCQzeHh4eCQ0CisoZGF0ZU9mQmlydGg+KVxkKygtKVxkKygtKVxkKyg8XC8uKmRhdGVPZkJpcnRoPikgJDF4eHh4JDJ4eCQzeHgkNAorKGRhdGVPZkJpcnRoPilcZCsoLSlcZCsoLSlcZCsoWjxcLy4qZGF0ZU9mQmlydGg+KSAkMXh4eHgkMnh4JDN4eCQ0CisoZGF0ZU9mQmlydGg+KVxkKygvKVxkKygvKVxkKyhaPFwvLipkYXRlT2ZCaXJ0aD4pICQxeHgkMnh4JDN4eHh4JDQKKyg+KVx3Kihcd3szfTxcLy4qaWROdW1iZXI+KSAkMXh4eHh4eCQyCisodGF4SWQ+KVxkKyhcZHs0fTxcLy4qdGF4SWQ+KSAkMXh4eHh4JDIKKyhhY2NvdW50TnVtYmVyPilcZHsxMiwxOX0oXGR7NH08XC8uKmFjY291bnROdW1iZXI+KSAkMXh4eHh4eHh4eHh4eHh4eCQyCisoPilbXj5dKig8XC9bXj5dKmV0aG5pY2l0eT4pICQxeHh4eHh4JDIKKyg+KVtePl0qKDxcL1tePl0qUkFDRT4pICQxeCQyCisoPilbXj5dKig8XC9bXj5dKm1pbm9yaXR5PikgJDF4JDIKKyg+KVtePl0qKDxcL1tePl0qTUlOT1JJVFk+KSAkMXgkMgorKEJJUlRIX0RBVEU+KVxkKygtKVxkKygtKVxkKyg8XC8uKkJJUlRIX0RBVEU+KSAkMXh4JDJ4eCQzeHh4eCQ0CisoY3VzdG9tMDc+KVxkKygtKVxkKygtKVxkKyg8XC8uKmN1c3RvbTA3PikgJDF4eCQyeHgkM3h4eHgkNAorKCZndDspXGR7MTEsMTJ9KFxkezR9Jmx0O1wvLipjcmVkaXRDYXJkTnVtYmVyJmd0OykgJDF4eHh4eHh4eHh4eHgkMgorKCZndDspXGR7Myw0fSgmbHQ7XC8uKnNlY3VyaXR5Jmd0OykgJDF4eHh4JDIKKygmZ3Q7KVxkezExLDEyfShcZHs0fSZsdDtcLy4qOi4qY3JlZGl0Q2FyZE51bWJlciZndDspICQxeHh4eHh4eHh4eHh4JDIKKygmZ3Q7KVxkezMsNH0oJmx0O1wvLio6LipzZWN1cml0eSZndDspICQxeHh4eCQyCisoPilcZHszLDR9KDxcLy4qY1ZWQ29kZT4pICQxeHh4eCQyCisoJmd0OylcZHszLDR9KCZsdDtcLy4qY1ZWQ29kZSZndDspICQxeHh4eCQyCisoJmd0OylcZHszLDR9KCZsdDtcLy4qOi4qY1ZWQ29kZSZndDspICQxeHh4eCQyCisoJmd0OykuKigmbHQ7XC91c2VyUGFzc3dvcmQmZ3Q7KSAkMXh4eHh4eHgkMgorKCZndDspLiooJmx0O1wvLio6dXNlclBhc3N3b3JkJmd0OykgJDF4eHh4eHgkMgorKCZndDspLiooJmx0O1wvdXNlclBhc3N3b3JkJmd0OykgJDF4eHh4eHh4JDIKKyhcInVzZXJQYXNzd29yZFwiXHMqOlxzKlwiKSguKj8pKFwiKSAkMXh4eHh4eCQzCisoXCJjbmc6dXNlclBhc3N3b3JkXCJccyo6XHMqXCIpKC4qPykoXCIpICQxeHh4eHh4JDMKKyhcInVzZXJQYXNzd29yZFwiXHMqOlxzKikoXGQrKSgsfFxzfH18XSkgJDF4eHh4eHgkMworKFwiY25nOnVzZXJQYXNzd29yZFwiXHMqOlxzKikoXGQrKSgsfFxzfH18XSkgJDF4eHh4eHgkMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2V0Yy9TZWN1cml0eUZpbHRlckV4cHJlc3Npb25zUG9vbC5wcm9wZXJ0aWVzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vZXRjL1NlY3VyaXR5RmlsdGVyRXhwcmVzc2lvbnNQb29sLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmYWE0NQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2V0Yy9TZWN1cml0eUZpbHRlckV4cHJlc3Npb25zUG9vbC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMjIgQEAKKyMKKyMgQ29weXJpZ2h0IKkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIworCitNYXhBY3RpdmU9MTUwCisjVGltZUJldHdlZW5FdmljdGlvblJ1bnNNaWxsaXM9MTAKKworI01pbiBhbmQgTWF4IGlkbGUgYXJlIG9ubHkgdXNlZCBpZiBUaW1lQmV0d2VlbkV2aWN0aW9uUnVuc01pbGxpcyBpcyBzZXQgdG8gYSB2YWx1ZSA+IDAKKyNNYXhJZGxlPTEwCisjTWluSWRsZT01CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9ldGMvcnVuLnNvdXJjZSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2V0Yy9ydW4uc291cmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYTVlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9ldGMvcnVuLnNvdXJjZQpAQCAtMCwwICsxLDE2IEBACitqYXZhIC1jbGFzc3BhdGggIi9ldGM6JHtBUFBfSE9NRX0vbGliLyo6L2xpYi8qOi9zcmM6L3NjaGVtYTovZ2VuZXJhdGVkLXNvdXJjZXM6JHtBUFBfQ09ORklHX0hPTUV9OiR7QVBQX0hPTUV9IiBcCistRGFwcE5hbWU9JHtBUFBMSUNBVElPTk5BTUV9IC1EYXBwVmVyc2lvbj0ke0JVTkRMRVZFUlNJT059IFwKKy1Ecm91dGVPZmZlcj0ke1JPVVRFT0ZGRVJ9IFwKKy1EVkVSU0lPTl9ST1VURU9GRkVSX0VOVkNPTlRFWFQ9JHtCVU5ETEVWRVJTSU9OfS8ke1NUSUNLWVNFTEVDVE9SS0VZfS8ke0VOVkNPTlRFWFR9IFwKKy1EU2VjdXJpdHlGaWxlUGF0aD0vZXRjIFwKKy1EUkVTVF9OQU1FX05PUk1BTElaRVJfUEFUVEVSTl9GSUxFPS9ldGMvUGF0dGVybklucHV0cy50eHQgXAorLURtc19uYW1lPW9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuQ29udHJvbGxlckJsdWVwcmludHMgXAorLURsb2dnaW5nLmNvbmZpZz0ke0FQUF9DT05GSUdfSE9NRX0vbG9nYmFjay54bWwgXAorLURqYXZhLnNlY3VyaXR5LmVnZD1maWxlOi9kZXYvLi91cmFuZG9tIFwKKy1EQVBQTkFNRT0ke0FQUF9OQU1FfSAtREFQUEVOVj0ke0FQUF9FTlZ9IC1EQVBQVkVSU0lPTj0ke0FQUF9WRVJTSU9OfSAtRE5BTUVTUEFDRT0ke05BTUVTUEFDRX0gXAorLURzcHJpbmcuY29uZmlnLmxvY2F0aW9uPSR7QVBQX0NPTkZJR19IT01FfS8gXAorLURzcHJpbmcuZGF0YXNvdXJjZS51cmw9JHtEQl9VUkx9IFwKKy1Ec3ByaW5nLmRhdGFzb3VyY2UudXNlcm5hbWU9JHtEQl9VU0VSfSBcCistRHNwcmluZy5kYXRhc291cmNlLnBhc3N3b3JkPSR7REJfUEFTU1dPUkR9IFwKKy1EYmx1ZXByaW50cy5sb2FkLmluaXRpYWwtZGF0YT0ke0lOSVRfREFUQV9MT0FEfSBcCitvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLkNvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL0RlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzVlMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL0RlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24KQEAgLTAsMCArMSw0MTEgQEAKK3sNCisgICJtZXRhZGF0YSI6IHsNCisgICAgInRlbXBsYXRlX2F1dGhvciI6ICJCcmluZGEgU2FudGggTXV0aHVyYW1hbGluZ2FtIiwNCisgICAgImF1dGhvci1lbWFpbCI6ICJicmluZGFzYW50aEBnbWFpbC5jb20iLA0KKyAgICAidXNlci1ncm91cHMiIDogIkFETUlOLCBPUEVSQVRJT04iLA0KKyAgICAidGVtcGxhdGVfbmFtZSI6ICJiYXNlY29uZmlndXJhdGlvbiIsDQorICAgICJ0ZW1wbGF0ZV92ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgInRlbXBsYXRlX3RhZ3MiOiAiYnJpbmRhLCB0b3NjYSINCisgIH0sDQorICAidG9wb2xvZ3lfdGVtcGxhdGUiOiB7DQorICAgICJpbnB1dHMiOiB7DQorICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJzY29wZS10eXBlIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJob3N0bmFtZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAibm9kZV90ZW1wbGF0ZXMiOiB7DQorICAgICAgImFjdGl2YXRlLXByb2Nlc3MiOiB7DQorICAgICAgICAidHlwZSI6ICJicG1uLWFjdGl2YXRlIiwNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAicHJvY2Vzcy1uYW1lIjogeyAiZ2V0X2lucHV0IiA6ICJhY3Rpb24tbmFtZSIgfSwNCisgICAgICAgICAgInZlcnNpb24iIDogeyAiZ2V0X3Byb3BlcnR5IiA6IFsiU0VMRiIsICJwcm9jZXNzLW5hbWUiXSB9LA0KKyAgICAgICAgICAiY29udGVudCI6IHsgImdldF9hcnRpZmFjdCIgOiBbIlNFTEYiLCAiYWN0aXZhdGUtcHJvY2VzcyJdIH0NCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3RzIjogew0KKyAgICAgICAgICAiYWN0aXZhdGUtcHJvY2VzcyI6IHsNCisgICAgICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1icG1uLWNhbXVuZGEiLA0KKyAgICAgICAgICAgICJmaWxlIjogIlBsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAgICJ0eXBlIjogImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICJwcm9wZXJ0aWVzIjp7DQorICAgICAgICAgICJyZXF1ZXN0LWlkIjogWyIxMjM0IiwgIjEyMzQiXQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAiRGVmYXVsdENvbXBvbmVudE5vZGUiOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7ICJnZXRfaW5wdXQiIDogImFjdGlvbi1uYW1lIiB9LA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogInZuZi10eXBlIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWVzdC1pZCI6IHsgImdldF9pbnB1dCIgOiAicmVxdWVzdC1pZCIgfSwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiB7ICJnZXRfaW5wdXQiIDogImhvc3RuYW1lIiB9LA0KKyAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZS1jb250ZW50IjogeyAiZ2V0X2FydGlmYWN0IiA6IFsiU0VMRiIsICJiYXNlY29uZmlnLXRlbXBsYXRlIl0gfSwNCisgICAgICAgICAgICAgICAgICAibWFwcGluZy1jb250ZW50IjogeyAiZ2V0X2FydGlmYWN0IiA6IFsiU0VMRiIsICJiYXNlY29uZmlnLW1hcHBpbmciXSB9DQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyI6IHsNCisgICAgICAgICAgImJhc2Vjb25maWctdGVtcGxhdGUiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkiLA0KKyAgICAgICAgICAgICJmaWxlIjogIlRlbXBsYXRlcy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bCINCisgICAgICAgICAgfSwNCisgICAgICAgICAgImJhc2Vjb25maWctbWFwcGluZyI6IHsNCisgICAgICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1tYXBwaW5nLXJlc291cmNlIiwNCisgICAgICAgICAgICAiZmlsZSI6ICJNYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcHkiOiB7DQorICAgICAgICAidHlwZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAicHJvcGVydGllcyI6ew0KKyAgICAgICAgICAicmVxdWVzdC1pZCI6IFsiMTIzNCIsICIxMjM0Il0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIjogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAgICJpbXBsZW1lbnRhdGlvbiIgOnsNCisgICAgICAgICAgICAgICAgICAicHJpbWFyeSIgOiAiY29tcG9uZW50LXNjcmlwdCINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7ICJnZXRfaW5wdXQiIDogImFjdGlvbi1uYW1lIiB9DQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyI6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1zY3JpcHQiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbiIsDQorICAgICAgICAgICAgImZpbGUiOiAiU2NyaXB0cy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIndvcmtmbG93cyI6ew0KKyAgICAgICJhY3RpdmF0ZS1wcm9jZXNzIjp7DQorICAgICAgICAic3RlcHMiIDogew0KKyAgICAgICAgICAgICJjYWxsLXJlc291cmNlLWFzc2lnbm1lbnQiIDogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJJbnZva2UgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQiLA0KKyAgICAgICAgICAgICAgInRhcmdldCIgOiAicmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAgICAgICAiYWN0aXZpdGllcyIgOiBbDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAiY2FsbF9vcGVyYXRpb24iOiAiUmVzb3VyY2VBc3NpZ25tZW50Tm9kZS5wcm9jZXNzIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgIm9uX3N1Y2Nlc3MiIDogWw0KKyAgICAgICAgICAgICAgICAiZG93bmxvYWQtYmFzZWNvbmZpZyINCisgICAgICAgICAgICAgIF0NCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAiZG93bmxvYWQtYmFzZWNvbmZpZyIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJDYWxsIERvd25sb2FkIEJhc2UgQ29uZmlnIENvbXBvbmVudCIsDQorICAgICAgICAgICAgInRhcmdldCIgOiAiYWN0aXZhdGUtbmV0Y29uZiIsDQorICAgICAgICAgICAgImFjdGl2aXRpZXMiIDogWw0KKyAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAiY2FsbF9vcGVyYXRpb24iOiAiTmV0Y29uZlRyYW5zYWN0aW9uTm9kZS5wcm9jZXNzIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgIm9uX3N1Y2Nlc3MiIDogWw0KKyAgICAgICAgICAgICAgImRvd25sb2FkLWxpY2VuY2UiDQorICAgICAgICAgICAgXQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiZG93bmxvYWQtbGljZW5jZSIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJDYWxsIERvd25sb2FkIExpY2VuY2UgQ29tcG9uZW50IiwNCisgICAgICAgICAgICAidGFyZ2V0IiA6ICJhY3RpdmF0ZS1uZXRjb25mIiwNCisgICAgICAgICAgICAiYWN0aXZpdGllcyIgOiBbDQorICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICJjYWxsX29wZXJhdGlvbiI6ICJOZXRjb25mVHJhbnNhY3Rpb25Ob2RlLnByb2Nlc3MiDQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgXQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9LA0KKyAgImFydGlmYWN0X3R5cGVzIjogew0KKyAgICAiYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIiBWZWxvY2l0eSBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgInZ0bCINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZSI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiIFZlbG9jaXR5IFRlbXBsYXRlIFJlc291cmNlIE1hcHBpbmcgRmlsZSB1c2VkIGFsb25nIHdpdGggQ29uZmlndXJhdGlvbiB0ZW1wbGF0ZSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJqc29uIg0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1zY3JpcHQta290bGluIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgS290bGluIFNjcmlwdCBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgImt0Ig0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1zY3JpcHQtcHl0aG9uIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgS290bGluIFNjcmlwdCBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgInB5Ig0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1icG1uLWNhbXVuZGEiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIiBDYW11bmRhIEJQTSBGaWxlIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgImJwbW4iDQorICAgICAgXSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbiINCisgICAgfSwNCisgICAgImFydGlmYWN0LWNvbXBvbmVudC1qYXIiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBvbmVudCBKYXIiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAiZmlsZV9leHQiOiBbDQorICAgICAgICAiamFyIg0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0NCisgIH0sDQorICAibm9kZV90eXBlcyI6IHsNCisgICAgImJwbW4tYWN0aXZhdGUiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgQlBNTiBBY3RpdmF0ZSBub2RlIHR5cGUiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9jZXNzLW5hbWUiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInZlcnNpb24iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZGVmYXVsdCIgOiAiTEFURVNUIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorICAgIH0sDQorICAgICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQgQVBJIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAidHlwZSI6IHsNCisgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIkRlZmF1bHRPcGVyYXRpb24iOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICJ2YWxpZGF0ZSI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAidmFsaWRhdGUgZm9yIGFjdGlvbiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiYXJ0aWZhY3RzIiA6ew0KKyAgICAgICAgImNvbXBvbmVudC1qYXIiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wb25lbnQgSmFyIiwNCisgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtY29tcG9uZW50LWphciIsDQorICAgICAgICAgICJmaWxlIjogIkNvbXBvbmVudC9iYXNlY29tcG9uZW50LmphciINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuUm9vdCINCisgICAgfSwNCisgICAgInRvc2NhLm5vZGVzLmNvbXBvbmVudC5QeXRob24iOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBQeXRob24gQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInR5cGUiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0T3BlcmF0aW9uIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAidmFsaWRhdGUiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInZhbGlkYXRlIGZvciBhY3Rpb24iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImFydGlmYWN0cyIgOnsNCisgICAgICAgICJjb21wb25lbnQtamFyIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcG9uZW50IEphciIsDQorICAgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbXBvbmVudC1qYXIiLA0KKyAgICAgICAgICAiZmlsZSI6ICJDb21wb25lbnQvYmFzZWNvbXBvbmVudC5qYXIiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLlJvb3QiDQorICAgIH0sDQorICAgICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0Q29tcG9uZW50Tm9kZSI6IHsNCisgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlY2lwZSBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yIHJlc291cmNlLWlkIHNob3VsZCBiZSBwcmVzZW50IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInRlbXBsYXRlLWNvbnRlbnQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklkIHVzZWQgdG8gcHVsbCB0aGUgZGF0YSBjb250ZW50IGZyb20gdGhlIGRhdGEgYmFzZS4gRWl0aGVyIHRlbXBsYXRlLWRhdGEgb3IgcmVzb3VyY2UtaWQgc2hvdWxkIGJlIHByZXNlbnQiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAibWFwcGluZy1jb250ZW50Ijogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yIHJlc291cmNlLWlkIHNob3VsZCBiZSBwcmVzZW50IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KKyAgICB9LA0KKyAgICAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQtcHl0aG9uIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVjaXBlIE5hbWUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuY29tcG9uZW50LlB5dGhvbiINCisgICAgfQ0KKyAgfSwNCisgICJkYXRhX3R5cGVzIjogew0KKyAgICAic2FtcGxlLXByb3BlcnR5IiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBzYW1wbGUgZGF0YSB0eXBlIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicHJvY2Vzcy1uYW1lIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgImRlZmF1bHQiIDogIkxBVEVTVCINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iIDogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KKyAgICB9DQorICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9NYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9NYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWJmYjUxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uCkBAIC0wLDAgKzEsMyBAQAorew0KKyAgImFzc2lnbm1lbnRzIjogIlNhbXBsZSBBc3NpZ25tZW50cyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1BsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1BsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTRjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4KQEAgLTAsMCArMSw2NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8YnBtbjpkZWZpbml0aW9ucyB4bWxuczpicG1uPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L01PREVMIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOmJwbW5kaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9ESSINCisgICAgICAgICAgICAgICAgICB4bWxuczpkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOmRjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyINCisgICAgICAgICAgICAgICAgICB4bWxuczpjYW11bmRhPSJodHRwOi8vY2FtdW5kYS5vcmcvc2NoZW1hLzEuMC9icG1uIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIGlkPSJEZWZpbml0aW9uc18xIg0KKyAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vc2NoZW1hL2JwbW4iIGV4cG9ydGVyPSJDYW11bmRhIE1vZGVsZXIiIGV4cG9ydGVyVmVyc2lvbj0iMS4xMS4yIj4NCisgICAgPGJwbW46cHJvY2VzcyBpZD0iQWN0aXZhdGVQcm9jZXNzIiBpc0V4ZWN1dGFibGU9InRydWUiPg0KKyAgICAgICAgPGJwbW46c3RhcnRFdmVudCBpZD0iU3RhcnRFdmVudF8xIj4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzdGFydEV2ZW50Pg0KKyAgICAgICAgPGJwbW46ZW5kRXZlbnQgaWQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgIDxicG1uOmluY29taW5nPlNlcXVlbmNlRmxvd18xYXkwazZwPC9icG1uOmluY29taW5nPg0KKyAgICAgICAgPC9icG1uOmVuZEV2ZW50Pg0KKyAgICAgICAgPGJwbW46c2VxdWVuY2VGbG93IGlkPSJTZXF1ZW5jZUZsb3dfMGwwZHE1OCIgc291cmNlUmVmPSJTdGFydEV2ZW50XzEiIHRhcmdldFJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siLz4NCisgICAgICAgIDxicG1uOnNlcXVlbmNlRmxvdyBpZD0iU2VxdWVuY2VGbG93XzFheTBrNnAiIHNvdXJjZVJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siIHRhcmdldFJlZj0iRW5kRXZlbnRfMXByMGtpbCIvPg0KKyAgICAgICAgPGJwbW46c2VydmljZVRhc2sgaWQ9ImFjdGl2YXRlX2RldmljZV90YXNrIiBuYW1lPSJBY3RpdmF0ZSBEZXZpY2UiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW11bmRhOmRlbGVnYXRlRXhwcmVzc2lvbj0iJHtjb21wb25lbnREZWxlZ2F0ZVNlcnZpY2V9Ij4NCisgICAgICAgICAgICA8YnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICAgICAgPGNhbXVuZGE6aW5wdXRPdXRwdXQ+DQorICAgICAgICAgICAgICAgICAgICA8Y2FtdW5kYTppbnB1dFBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciI+PCFbQ0RBVEFbcmVzb3VyY2UtYXNzaWdubWVudA0KK11dPjwvY2FtdW5kYTppbnB1dFBhcmFtZXRlcj4NCisgICAgICAgICAgICAgICAgPC9jYW11bmRhOmlucHV0T3V0cHV0Pg0KKyAgICAgICAgICAgIDwvYnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICA8YnBtbjppbmNvbWluZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjppbmNvbWluZz4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMWF5MGs2cDwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzZXJ2aWNlVGFzaz4NCisgICAgPC9icG1uOnByb2Nlc3M+DQorICAgIDxicG1uZGk6QlBNTkRpYWdyYW0gaWQ9IkJQTU5EaWFncmFtXzEiPg0KKyAgICAgICAgPGJwbW5kaTpCUE1OUGxhbmUgaWQ9IkJQTU5QbGFuZV8xIiBicG1uRWxlbWVudD0iQWN0aXZhdGVQcm9jZXNzIj4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iX0JQTU5TaGFwZV9TdGFydEV2ZW50XzIiIGJwbW5FbGVtZW50PSJTdGFydEV2ZW50XzEiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE3NSIgeT0iMTQzIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE0OCIgeT0iMTc5IiB3aWR0aD0iOTAiIGhlaWdodD0iMjAiLz4NCisgICAgICAgICAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iRW5kRXZlbnRfMXByMGtpbF9kaSIgYnBtbkVsZW1lbnQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU3NSIgeT0iMTE0IiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU5MyIgeT0iMTU0IiB3aWR0aD0iMCIgaGVpZ2h0PSIxMiIvPg0KKyAgICAgICAgICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPg0KKyAgICAgICAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IlNlcXVlbmNlRmxvd18wbDBkcTU4X2RpIiBicG1uRWxlbWVudD0iU2VxdWVuY2VGbG93XzBsMGRxNTgiPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyMTEiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIzMzQiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICAgICAgICAgIDxkYzpCb3VuZHMgeD0iMjg4IiB5PSIxNDkiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJTZXF1ZW5jZUZsb3dfMWF5MGs2cF9kaSIgYnBtbkVsZW1lbnQ9IlNlcXVlbmNlRmxvd18xYXkwazZwIj4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNDM0IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTc1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjUyMCIgeT0iMTM0LjUiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iU2VydmljZVRhc2tfMGU4ZWs0Zl9kaSIgYnBtbkVsZW1lbnQ9ImFjdGl2YXRlX2RldmljZV90YXNrIj4NCisgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSIzMzQiIHk9IjEwOSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIvPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgIDwvYnBtbmRpOkJQTU5QbGFuZT4NCisgICAgPC9icG1uZGk6QlBNTkRpYWdyYW0+DQorPC9icG1uOmRlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9TY3JpcHRzL1NhbXBsZVB5dGhvbkNvbXBvbmVudE5vZGUucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMTk4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5CkBAIC0wLDAgKzEsOCBAQAorZnJvbSBjb20uYnJ2aXRoLm9yY2hlc3RyYXRvci5jb3JlLmludGVyZmFjZXMgaW1wb3J0IENvbXBvbmVudE5vZGUNCisNCitjbGFzcyBTYW1wbGVQeXRob25Db21wb25lbnROb2RlKENvbXBvbmVudE5vZGUpOg0KKyAgICBkZWYgcHJlcGFyZShzZWxmLCBjb250ZXh0LCBjb21wb25lbnRDb250ZXh0KToNCisgICAgICAgIHJldHVybiBOb25lDQorDQorICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbnRleHQsIGNvbXBvbmVudENvbnRleHQpOg0KKyAgICAgICAgcmV0dXJuIE5vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9fX2luaXRfXy5weSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9TY3JpcHRzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjM4YzE1Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEKQEAgLTAsMCArMSw4IEBACitUT1NDQS1NZXRhLUZpbGUtVmVyc2lvbjogMS4wLjANCitDU0FSLVZlcnNpb246IDEuMA0KK0NyZWF0ZWQtQnk6IEJyaW5kYSBTYW50aCBNDQorRW50cnktRGVmaW5pdGlvbnM6IERlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24NCitUZW1wbGF0ZS1UYWdzOiBCcmluZGEgU2FudGgsIGFjdGl2YXRpb24tYmx1ZXByaW50DQorDQorTmFtZTogUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4NCitDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5icG1uDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1RlbXBsYXRlcy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2YzU5MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwKQEAgLTAsMCArMSBAQAorVGhpcyBpcyBTYW1wbGUgVmVsb2NpdHkgVGVtcGxhdGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vX19pbml0X18ucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMzI2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC1tYXBwaW5nLXJlc291cmNlLmpzb24KQEAgLTAsMCArMSw4IEBACit7DQorICAiZGVzY3JpcHRpb24iOiAiIFZlbG9jaXR5IFRlbXBsYXRlIFJlc291cmNlIE1hcHBpbmcgRmlsZSB1c2VkIGFsb25nIHdpdGggQ29uZmlndXJhdGlvbiB0ZW1wbGF0ZSIsDQorICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAiZmlsZV9leHQiOiBbDQorICAgICJqc29uIg0KKyAgXSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC1zY3JpcHQtcHl0aG9uLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC1zY3JpcHQtcHl0aG9uLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4ZDJiNgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LXNjcmlwdC1weXRob24uanNvbgpAQCAtMCwwICsxLDggQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICIgS290bGluIFNjcmlwdCBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJmaWxlX2V4dCI6IFsNCisgICAgInB5Ig0KKyAgXSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzk1ZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkuanNvbgpAQCAtMCwwICsxLDggQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICIgVmVsb2NpdHkgVGVtcGxhdGUgdXNlZCBmb3IgQ29uZmlndXJhdGlvbiIsDQorICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAiZmlsZV9leHQiOiBbDQorICAgICJ2dGwiDQorICBdLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL3Rvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbi5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvdG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3Yzk1NgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL3Rvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbi5qc29uCkBAIC0wLDAgKzEsNSBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIlRPU0NBIGJhc2UgdHlwZSBmb3IgaW1wbGVtZW50YXRpb24gYXJ0aWZhY3RzIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcHJvcGVydHkuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcHJvcGVydHkuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0YjEwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kYXRhdHlwZS1wcm9wZXJ0eS5qc29uCkBAIC0wLDAgKzEsMjcgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBFbnRyeSBwb2ludCBJbnB1dCBEYXRhIFR5cGUsIHdoaWNoIGlzIGR5bmFtaWMgZGF0YXR5cGUsIFRoZSBwYXJhbWV0ZXIgbmFtZXMgd2lsbCBiZSBwb3B1bGF0ZWQgZHVyaW5nIHRoZSBEZXNpZ24gdGltZSBmb3IgZWFjaCBpbnB1dHMiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJ0eXBlIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJkZXNjcmlwdGlvbiI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJInJlcXVpcmVkIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogImJvb2xlYW4iDQorCQl9LA0KKwkJImRlZmF1bHQiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjOTgxNmUKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpAQCAtMCwwICsxLDQ2IEBACit7DQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBEYXRhIFR5cGUiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJwcm9wZXJ0eSI6IHsNCisJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5Ig0KKwkJfSwNCisJCSJpbnB1dC1wYXJhbSI6IHsNCisJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCSJ0eXBlIjogImJvb2xlYW4iDQorCQl9LA0KKwkJImRpY3Rpb25hcnktbmFtZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJImRpY3Rpb25hcnktc291cmNlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiZGVwZW5kZW5jaWVzIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAibGlzdCIsDQorCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCX0NCisJCX0sDQorCQkic3RhdHVzIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkibWVzc2FnZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJInVwZGF0ZWQtZGF0ZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJInVwZGF0ZWQtYnkiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LWxpY2Vuc2Uta2V5Lmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LWxpY2Vuc2Uta2V5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTljMzEyYgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZHQtbGljZW5zZS1rZXkuanNvbgpAQCAtMCwwICsxLDExIEBACit7DQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgZHQtcGxpY2Vuc2Uta2V5IERhdGEgVHlwZSIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJImxpY2Vuc2Uta2V5Ijogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LXY0LWFnZ3JlZ2F0ZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC12NC1hZ2dyZWdhdGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDJhN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC12NC1hZ2dyZWdhdGUuanNvbgpAQCAtMCwwICsxLDE1IEBACit7DQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgZHQtdjQtYWdncmVnYXRlIERhdGEgVHlwZSIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJImlwdjQtYWRkcmVzcyI6IHsNCisJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiaXB2NC1wbGVuIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogImludGVnZXIiDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvdG9zY2EuZGF0YXR5cGVzLkNyZWRlbnRpYWwuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvdG9zY2EuZGF0YXR5cGVzLkNyZWRlbnRpYWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjBhNTUxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS90b3NjYS5kYXRhdHlwZXMuQ3JlZGVudGlhbC5qc29uCkBAIC0wLDAgKzEsMzEgQEAKK3sNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJkZXNjcmlwdGlvbiI6ICJDcmVkZW50aWFsIiwNCisgICJwcm9wZXJ0aWVzIjogew0KKyAgICAicHJvdG9jb2wiOiB7DQorICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICB9LA0KKyAgICAidG9rZW5fdHlwZSI6IHsNCisgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgImRlZmF1bHQiIDogInBhc3N3b3JkIg0KKyAgICB9LA0KKyAgICAidG9rZW4iOiB7DQorICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICB9LA0KKyAgICAia2V5cyI6IHsNCisgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAidHlwZSI6ICJsaXN0IiwNCisgICAgICAiZW50cnlfc2NoZW1hIjogew0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0NCisgICAgfSwNCisgICAgInVzZXIiOiB7DQorICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICB9DQorICB9LA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9hcnRpZmFjdC1jb25maWctdGVtcGxhdGUuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5YmJmYwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlLmpzb24KQEAgLTAsMCArMSwzNyBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBDb25maWd1cmF0aW9uIFZlbG9jaXR5IFRlbXBsYXRlIiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJhY3Rpb24tbmFtZXMiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJImNvbnRlbnQiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfSwNCisJCSJtYXBwaW5nIjogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuTWFwcGluZyIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJtYXBwaW5nIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCINCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5BcnRpZmFjdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtY29uZmlnLWdlbmVyYXRvci5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtY29uZmlnLWdlbmVyYXRvci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NGY5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1jb25maWctZ2VuZXJhdG9yLmpzb24KQEAgLTAsMCArMSw3MiBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBHZW5lcmF0ZSBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiY29tcG9uZW50LW5vZGUiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQl9DQorCX0sDQorCSJpbnRlcmZhY2VzIjogew0KKwkJIm9yZy1vcGVuZWNvbXAtc2RuYy1jb25maWctZ2VuZXJhdG9yLXNlcnZpY2UtQ29uZmlnR2VuZXJhdG9yTm9kZSI6IHsNCisJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJInByb2Nlc3MiOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJ0ZW1wbGF0ZS1kYXRhIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBKU09OIHN0cmluZyB3aGljaCBpcyB1c2VkIHRvIG1hc2ggd2l0aCB0ZW1wbGF0ZS4gRWl0aGVyIHRlbXBsYXRlLWRhdGEgb3IgKCByZXNvdXJjZS1pZCBhbmQgcmVzb3VyY2UtdHlwZSApIHNob3VsZCBiZSBwcmVzZW50IiwNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJ0ZW1wbGF0ZS1jb250ZW50Ijogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBEeW5hbWljIFRlbXBsYXRlIHVzZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbi4iLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInJlc291cmNlLXR5cGUiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJDb25kaXRpb25hbCA6IHJlc291cmNlLXR5cGUgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciAoIHJlc291cmNlLWlkIGFuZCByZXNvdXJjZS10eXBlICkgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInJlcXVlc3QtaWQiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJyZXNvdXJjZS1pZCI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkNvbmRpdGlvbmFsIDogSWQgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciAoIHJlc291cmNlLWlkIGFuZCByZXNvdXJjZS10eXBlICkgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJImFjdGlvbi1uYW1lIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkidGVtcGxhdGUtbmFtZSI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkNvbmRpdGlvbmFsIDogTmFtZSBvZiB0aGUgQXJ0aWZhY3QgTm9kZSBUZW1wbGF0ZSwgdG8gZ2V0IHRoZSB0ZW1wbGF0ZSBDb250ZW50LiBJZiB0ZW1wbGF0ZS1jb250ZW50IGlzIHByZXNlbnQsIHRoZW4gY29udGVudCB3b250IGJlIHJldGVyaXZlZCBmcm9tIHRoZSBBcnRpZmFjdCBOb2RlIFRlbXBsYXRlLiIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9DQorCQkJCQl9LA0KKwkJCQkJIm91dHB1dHMiOiB7DQorCQkJCQkJImdlbmVyYXRlZC1jb25maWciOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJHZW5lcmF0ZWQgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFRlbXBsYXRlIGFkbiBSZXNvdXJjZSBEYXRhIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJIm1hc2staW5mbyI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIklmIHRlbXBsYXRlIGNvbnRhaW5zIG1hc2sgZW5jcmlwdGlvbiBrZXlzLCB0aGVuIHRoaXMgbWFzay1pbmZvIGZpZWxkIHdpbGwgYmUgZ2VuZXJhdGVkLCBUaGlzIEpTT04gQ29udGVudCBhbGxpZ25zIHRvIHRoZSBiZWFuIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLmN1c3RvbS5NYXNrSW5mbyAiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIlN0YXR1cyBvZiB0aGUgQ29tcG9uZW50IEV4ZWN1dGlvbiAoIHN1Y2Nlc3Mgb3IgZmFpbHVyZSApIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWQ2NjdhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtbmV0Y29uZi1leGVjdXRvci5qc29uCkBAIC0wLDAgKzEsNzkgQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIE5ldGNvbmYgVHJhbnNhY3Rpb24gQ29uZmlndXJhdGlvbiBDb21wb25lbnQgQVBJIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICJjb21wb25lbnQtbm9kZSI6IHsNCisgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgfQ0KKyAgfSwNCisgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICJuZXRjb25mLWNvbm5lY3Rpb24iOiB7DQorICAgICAgImNhcGFiaWxpdHkiOiAibmV0Y29uZiIsDQorICAgICAgIm5vZGUiOiAidm5mLW5ldGNvbmYtZGV2aWNlIiwNCisgICAgICAicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuQ29ubmVjdHNUbyINCisgICAgfQ0KKyAgfSwNCisgICJpbnRlcmZhY2VzIjogew0KKyAgICAib3JnLW9wZW5lY29tcC1zZG5jLW5ldGNvbmYtYWRhcHRvci1zZXJ2aWNlLU5ldGNvbmZFeGVjdXRvck5vZGUiOiB7DQorICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAicmVxdWVzdC1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIE5hbWUiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBWZXJzaW9uIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWN0aW9uIE5hbWUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBUeXBlIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgSWQgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzZXJ2YXRpb24taWQiOiB7DQorCQkJCSJkZXNjcmlwdGlvbiI6ICJSZXNlcnZhdGlvbiBJZCB1c2VkIHRvIHNlbmQgdG8gTlBNIiwNCisJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKyAgICAgICAgICAgICJleGVjdXRpb24tc2NyaXB0Ijogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlB5dGhvbiBTY3JpcHQgdG8gRXhlY3V0ZSBmb3IgdGhpcyBDb21wb25lbnQgYWN0aW9uLCBJdCBzaG91bGQgcmVmZXIgYW55IG9uZSBvZiBQcnl0aG9uIEFydGlmYWN0IERlZmluaXRpb24gZm9yIHRoaXMgTm9kZSBUZW1wbGF0ZS4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGlvbiBSZXNwb25zZSBEYXRhIGluIEpTT04gZm9ybWF0LiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YzAyODQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50Lmpzb24KQEAgLTAsMCArMSw2OCBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQgQVBJIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICJjb21wb25lbnQtbm9kZSI6IHsNCisgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgfQ0KKyAgfSwNCisgICJpbnRlcmZhY2VzIjogew0KKyAgICAib3JnLW9wZW5lY29tcC1zZG5jLWNvbmZpZy1hc3NpZ25tZW50LXNlcnZpY2UtQ29uZmlnQXNzaWdubWVudE5vZGUiOiB7DQorICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS1uYW1lIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlcnZpY2UgVGVtcGxhdGUgTmFtZS4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBWZXJzaW9uLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInJlc291cmNlLXR5cGUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCB0eXBlLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInRlbXBsYXRlLW5hbWVzIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGFydGlmYWN0IE5vZGUgVGVtcGxhdGVzLCB0byBnZXQgdGhlIHRlbXBsYXRlIENvbnRlbnQuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJsaXN0IiwNCisgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQsIFVuaXF1ZSBJZCBmb3IgdGhlIHJlcXVlc3QuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgSWQuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWN0aW9uIE5hbWUgb2YgdGhlIHByb2Nlc3MiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAic3RhdHVzIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1hY3RpdmF0ZS1uZXRjb25mLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWFjdGl2YXRlLW5ldGNvbmYuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjM4ZGYwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1hY3RpdmF0ZS1uZXRjb25mLmpzb24KQEAgLTAsMCArMSw2NiBAQAoreworCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIERvd25sb2FkIE5ldGNvbmYgRGlyZWN0ZWQgR3JhcGgiLAorCSJ2ZXJzaW9uIjogIjEuMC4wIiwKKwkicHJvcGVydGllcyI6IHsKKwkJIm1vZGUiOiB7CisJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCSJ0eXBlIjogInN0cmluZyIsCisJCQkiZGVmYXVsdCI6ICJzeW5jIgorCQl9LAorCQkidmVyc2lvbiI6IHsKKwkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJInR5cGUiOiAic3RyaW5nIiwKKwkJCSJkZWZhdWx0IjogIkxBVEVTVCIKKwkJfSwKKwkJImlzLXN0YXJ0LWZsb3ciOiB7CisJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCSJ0eXBlIjogImJvb2xlYW4iLAorCQkJImRlZmF1bHQiOiAiZmFsc2UiCisJCX0KKwl9LAorCSJjYXBhYmlsaXRpZXMiOiB7CisJCSJkZy1ub2RlIjogeworCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiCisJCX0sCisJCSJjb250ZW50IjogeworCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwKKwkJCSJwcm9wZXJ0aWVzIjogeworCQkJCSJ0eXBlIjogeworCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCQkJInR5cGUiOiAic3RyaW5nIiwKKwkJCQkJImRlZmF1bHQiOiAianNvbiIKKwkJCQl9LAorCQkJCSJjb250ZW50IjogeworCQkJCQkicmVxdWlyZWQiOiB0cnVlLAorCQkJCQkidHlwZSI6ICJzdHJpbmciCisJCQkJfQorCQkJfQorCQl9CisJfSwKKwkicmVxdWlyZW1lbnRzIjogeworCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7CisJCQkiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsCisJCQkibm9kZSI6ICJjb21wb25lbnQtbmV0Y29uZi1leGVjdXRvciIsCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIgorCQl9CisJfSwKKwkiaW50ZXJmYWNlcyI6IHsKKwkJIkNPTkZJRyI6IHsKKwkJCSJvcGVyYXRpb25zIjogeworCQkJCSJBY3RpdmF0ZU5ldGNvbmYiOiB7CisJCQkJCSJpbnB1dHMiOiB7CisJCQkJCQkicGFyYW1zIjogeworCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJCQkJCSJ0eXBlIjogImxpc3QiLAorCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7CisJCQkJCQkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5IgorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0sCisJCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWNvbmZpZy1nZW5lcmF0b3IuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctY29uZmlnLWdlbmVyYXRvci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YmFjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWNvbmZpZy1nZW5lcmF0b3IuanNvbgpAQCAtMCwwICsxLDY1IEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEFjdGl2YXRlIERHIGZvciBDb25maWcgR2VuZXJhdG9yIERpcmVjdGVkIEdyYXBoIiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJtb2RlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAic3luYyINCisJCX0sDQorCQkidmVyc2lvbiI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogIkxBVEVTVCINCisJCX0sDQorCQkiaXMtc3RhcnQtZmxvdyI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkiZGVmYXVsdCI6ICJmYWxzZSINCisJCX0NCisJfSwNCisJImNhcGFiaWxpdGllcyI6IHsNCisJCSJkZy1ub2RlIjogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKwkJfSwNCisJCSJjb250ZW50Ijogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJ0eXBlIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAianNvbiINCisJCQkJfSwNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkicmVxdWlyZW1lbnRzIjogew0KKwkJImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkibm9kZSI6ICJjb21wb25lbnQtY29uZmlnLWdlbmVyYXRvciIsDQorCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCX0NCisJfSwNCisJImludGVyZmFjZXMiOiB7DQorCQkiQ09ORklHIjogew0KKwkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkiR2VuZXJhdGVDb25maWd1cmF0aW9uIjogew0KKwkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkicGFyYW1zIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAibGlzdCIsDQorCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ24tYWN0aXZhdGUuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWduLWFjdGl2YXRlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk4ZmE1YQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWduLWFjdGl2YXRlLmpzb24KQEAgLTAsMCArMSw3MCBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ24gYW5kIEFjdGl2YXRlIE5ldGNvbmYgRGlyZWN0ZWQgR3JhcGgiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJIm1vZGUiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJzeW5jIg0KKwkJfSwNCisJCSJ2ZXJzaW9uIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAiTEFURVNUIg0KKwkJfSwNCisJCSJpcy1zdGFydC1mbG93Ijogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogImJvb2xlYW4iLA0KKwkJCSJkZWZhdWx0IjogImZhbHNlIg0KKwkJfQ0KKwl9LA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJImRnLW5vZGUiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQl9LA0KKwkJImNvbnRlbnQiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJInR5cGUiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJqc29uIg0KKwkJCQl9LA0KKwkJCQkiY29udGVudCI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkicmVxdWlyZW1lbnRzIjogew0KKwkJInJhLWNvbXBvbmVudCI6IHsNCisJCQkiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorCQkJIm5vZGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKwkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorCQl9LA0KKwkJIm5ldGNvbmYtY29tcG9uZW50Ijogew0KKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkibm9kZSI6ICJjb21wb25lbnQtbmV0Y29uZi1leGVjdXRvciIsDQorCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCX0NCisJfSwNCisJImludGVyZmFjZXMiOiB7DQorCQkiQ09ORklHIjogew0KKwkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkiUmVzb3VyY2VBc3NpZ25BbmRBY3RpdmF0ZSI6IHsNCisJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJInBhcmFtcyI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuREciDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWdubWVudC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ25tZW50Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmYmI2OAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCkBAIC0wLDAgKzEsNjUgQEAKK3sNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBEaXJlY3RlZCBHcmFwaCIsDQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkibW9kZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogInN5bmMiDQorCQl9LA0KKwkJInZlcnNpb24iOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJMQVRFU1QiDQorCQl9LA0KKwkJImlzLXN0YXJ0LWZsb3ciOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiYm9vbGVhbiIsDQorCQkJImRlZmF1bHQiOiAiZmFsc2UiDQorCQl9DQorCX0sDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiZGctbm9kZSI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCX0sDQorCQkiY29udGVudCI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkidHlwZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogImpzb24iDQorCQkJCX0sDQorCQkJCSJjb250ZW50Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJyZXF1aXJlbWVudHMiOiB7DQorCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7DQorCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCSJub2RlIjogImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKwkJfQ0KKwl9LA0KKwkiaW50ZXJmYWNlcyI6IHsNCisJCSJDT05GSUciOiB7DQorCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCSJSZXNvdXJjZUFzc2lnbm1lbnQiOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJwYXJhbXMiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5Ig0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkRHIg0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL3ZuZi1uZXRjb25mLWRldmljZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS92bmYtbmV0Y29uZi1kZXZpY2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDU3M2JhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS92bmYtbmV0Y29uZi1kZXZpY2UuanNvbgpAQCAtMCwwICsxLDQyIEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFZORiBEZXZpY2Ugd2l0aCBOZXRjb25mICBDYXBhYmlsaXR5IiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJIm5ldGNvbmYiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5OZXRjb25mIiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJImxvZ2luLWtleSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAic2RuYyINCisJCQkJfSwNCisJCQkJImxvZ2luLWFjY291bnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogInNkbmMtdGFjYWNzIg0KKwkJCQl9LA0KKwkJCQkic291cmNlIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJucG0iDQorCQkJCX0sDQorCQkJCSJ0YXJnZXQtaXAtYWRkcmVzcyI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0sDQorCQkJCSJwb3J0LW51bWJlciI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCSJkZWZhdWx0IjogODMwDQorCQkJCX0sDQorCQkJCSJjb25uZWN0aW9uLXRpbWUtb3V0Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCSJkZWZhdWx0IjogMzANCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5WbmYiDQorCQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9vcHQvYXBwL29uYXAvY29uZmlnL2FwcGxpY2F0aW9uLnByb3BlcnRpZXMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9vcHQvYXBwL29uYXAvY29uZmlnL2FwcGxpY2F0aW9uLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyMDE3ZAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL29wdC9hcHAvb25hcC9jb25maWcvYXBwbGljYXRpb24ucHJvcGVydGllcwpAQCAtMCwwICsxLDc1IEBACisjCisjIENvcHlyaWdodCCpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKworaW5mby5idWlsZC5hcnRpZmFjdD1AcHJvamVjdC5hcnRpZmFjdElkQAoraW5mby5idWlsZC5uYW1lPUBwcm9qZWN0Lm5hbWVACitpbmZvLmJ1aWxkLmRlc2NyaXB0aW9uPUBwcm9qZWN0LmRlc2NyaXB0aW9uQAoraW5mby5idWlsZC52ZXJzaW9uPUBwcm9qZWN0LnZlcnNpb25ACitpbmZvLmJ1aWxkLmdyb3VwSWQ9QHByb2plY3QuZ3JvdXBJZEAKK2xvZ2dpbmcubGV2ZWwucm9vdD1pbmZvCisKK3NlcnZlci5jb250ZXh0UGF0aD0vCitzZXJ2ZXIuc2VydmxldC1wYXRoPS8KK3NwcmluZy5qZXJzZXkuYXBwbGljYXRpb24tcGF0aD0vYXBpL2NvbnRyb2xsZXItYmx1ZXByaW50cy92MQorc2VydmVyLnJvdXRpbmdQYXRoPS9hcGkKKworbW90cy5hcHBsaWNhdGlvbi5hY3JvbnltPU1PVFNfSUQKK3BsYXRmb3JtLmlkZW50aWZpZXI9QUpTQzdfSkVSU0VZCisjc3ByaW5nLmF1dG9jb25maWd1cmUuZXhjbHVkZT1vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5qZGJjLkRhdGFTb3VyY2VBdXRvQ29uZmlndXJhdGlvbixvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5vcm0uanBhLkhpYmVybmF0ZUpwYUF1dG9Db25maWd1cmF0aW9uCisKKyNsb2dnaW5nLnBhdHRlcm4uY29uc29sZT0lY2xyKCVke3l5eXktTU0tZGQgSEg6bW06c3MuU1NTfSl7ZmFpbnR9ICVjbHIoJTVwKSAlY2xyKCQgdGhyZWFkSWQ6IHtQSUQ6LSB9KXttYWdlbnRhfSAlY2xyKC0tLSl7ZmFpbnR9ICVjbHIoWyBob3N0bmFtZTogJVh7aG9zdG5hbWV9IHNlcnZpY2VOYW1lOiAlWHtzZXJ2aWNlTmFtZX0gdmVyc2lvbjogJVh7dmVyc2lvbn0gdHJhbnNhY3Rpb25JZDogJVh7dHJhbnNhY3Rpb25JZH0gcmVxdWVzdFRpbWVTdGFtcDogJVh7cmVxdWVzdFRpbWVzdGFtcH0gIHJlc3BvbnNlVGltZVN0YW1wOiAlWHtyZXNwb25zZVRpbWVzdGFtcH0gZHVyYXRpb246ICVYe2R1cmF0aW9ufV0pe3llbGxvd30gJWNscihbJTE1LjE1dF0pe2ZhaW50fSAlY2xyKCUtNDAuNDBsb2dnZXJ7Mzl9KXtjeWFufSAlY2xyKDope2ZhaW50fSAlbSVuJXdleAorCisjVGhlIG1heCBudW1iZXIgb2YgYWN0aXZlIHRocmVhZHMgaW4gdGhpcyBwb29sCitzZXJ2ZXIudG9tY2F0Lm1heC10aHJlYWRzPTIwMAorI1RoZSBtaW5pbXVtIG51bWJlciBvZiB0aHJlYWRzIGFsd2F5cyBrZXB0IGFsaXZlCitzZXJ2ZXIudG9tY2F0Lm1pbi1TcGFyZS1UaHJlYWRzPTI1CisjVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYmVmb3JlIGFuIGlkbGUgdGhyZWFkIHNodXRzZG93biwgdW5sZXNzIHRoZSBudW1iZXIgb2YgYWN0aXZlIHRocmVhZHMgYXJlIGxlc3Mgb3IgZXF1YWwgdG8gbWluU3BhcmVUaHJlYWRzCitzZXJ2ZXIudG9tY2F0Lm1heC1pZGxlLXRpbWU9NjAwMDAKKworI2ZvciBjaGFuZ2luZyB0aGUgdG9tY2F0IHBvcnQuLi4KKyNzZXJ2ZXIucG9ydD04MDgxCisKKyNTZXJ2bGV0IGNvbnRleHQgcGFyYW1ldGVycworc2VydmVyLmNvbnRleHRfcGFyYW1ldGVycy5wLW5hbWU9dmFsdWUgI2NvbnRleHQgcGFyYW1ldGVyIHdpdGggcC1uYW1lIGFzIGtleSBhbmQgdmFsdWUgYXMgdmFsdWUuCisKKyMgbWFrZSB0aGlzIHRydWUgZm9yIEFBRiBhdXRoZW50aWNhdGlvbiBhbmQgcGxhY2UgY2FkaS5wcm9wZXJ0aWVzIGludG8gZXRjIGZvbGRlcgorYWFmLmVuYWJsZWQ9ZmFsc2UKKworIyBzZXQgdG8gdHJ1ZSB0byBlbmFibGUgdmVyc2lvbiBwcm94eQorI2l2cC5lbmFibGVkPWZhbHNlCisKK2xvZ2dpbmcubGV2ZWwub3JnLnNwcmluZ2ZyYW1ld29yay53ZWI9SU5GTworbG9nZ2luZy5sZXZlbC5vcmcuaGliZXJuYXRlLlNRTD13YXJuCitsb2dnaW5nLmxldmVsLm9yZy5oaWJlcm5hdGUudHlwZS5kZXNjcmlwdG9yLnNxbD1kZWJ1ZworCitzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLnNob3dfc3FsPXRydWUKK3NwcmluZy5qcGEucHJvcGVydGllcy5oaWJlcm5hdGUudXNlX3NxbF9jb21tZW50cz10cnVlCitzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLmZvcm1hdF9zcWw9dHJ1ZQorCisjIHNwcmluZy5kYXRhc291cmNlLnVybCwgc3ByaW5nLmRhdGFzb3VyY2UudXNlcm5hbWUsc3ByaW5nLmRhdGFzb3VyY2UucGFzc3dvcmQgIG1heSBiZSBvdmVycmlkZGVuIGJ5IEVOViB2YXJpYWJsZXMKK3NwcmluZy5kYXRhc291cmNlLnVybD1qZGJjOm15c3FsOi8vbG9jYWxob3N0OjMzMDYvc2RuY3RsCitzcHJpbmcuZGF0YXNvdXJjZS51c2VybmFtZT1zZG5jdGwKK3NwcmluZy5kYXRhc291cmNlLnBhc3N3b3JkPXNkbmN0bAorc3ByaW5nLmRhdGFzb3VyY2UuZHJpdmVyLWNsYXNzLW5hbWU9Y29tLm15c3FsLmpkYmMuRHJpdmVyCitzcHJpbmcuanBhLnNob3ctc3FsID0gdHJ1ZQorc3ByaW5nLmpwYS5oaWJlcm5hdGUuZGRsLWF1dG8gPSBub25lCitzcHJpbmcuanBhLmhpYmVybmF0ZS5uYW1pbmctc3RyYXRlZ3kgPSBvcmcuaGliZXJuYXRlLmNmZy5JbXByb3ZlZE5hbWluZ1N0cmF0ZWd5CitzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLmRpYWxlY3QgPSBvcmcuaGliZXJuYXRlLmRpYWxlY3QuTXlTUUw1RGlhbGVjdAorCisjTG9hZCBCbHVlcHJpbnRzCisjIGJsdWVwcmludHMubG9hZC5pbml0aWFsLWRhdGEgbWF5IGJlIG92ZXJyaWRkZW4gYnkgRU5WIHZhcmlhYmxlcworYmx1ZXByaW50cy5sb2FkLmluaXRpYWwtZGF0YT10cnVlCitibHVlcHJpbnRzLmxvYWQucGF0aD1sb2FkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vb3B0L2FwcC9vbmFwL2NvbmZpZy9sb2diYWNrLnhtbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL29wdC9hcHAvb25hcC9jb25maWcvbG9nYmFjay54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RkMjBjOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL29wdC9hcHAvb25hcC9jb25maWcvbG9nYmFjay54bWwKQEAgLTAsMCArMSwzNiBAQAorPCEtLQ0KKyAgfiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAgfg0KKyAgfiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIH4NCisgIH4gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgfg0KKyAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgLS0+DQorDQorPGNvbmZpZ3VyYXRpb24+DQorICAgIDxhcHBlbmRlciBuYW1lPSJTVERPVVQiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLkNvbnNvbGVBcHBlbmRlciI+DQorICAgICAgICA8IS0tIGVuY29kZXJzIGFyZSBhc3NpZ25lZCB0aGUgdHlwZQ0KKyAgICAgICAgICAgICBjaC5xb3MubG9nYmFjay5jbGFzc2ljLmVuY29kZXIuUGF0dGVybkxheW91dEVuY29kZXIgYnkgZGVmYXVsdCAtLT4NCisgICAgICAgIDxlbmNvZGVyPg0KKyAgICAgICAgICAgIDxwYXR0ZXJuPiVke0hIOm1tOnNzLlNTU30gJS01bGV2ZWwgJWxvZ2dlcnsxMDB9IC0gJW1zZyVuPC9wYXR0ZXJuPg0KKyAgICAgICAgPC9lbmNvZGVyPg0KKyAgICA8L2FwcGVuZGVyPg0KKw0KKw0KKyAgICA8bG9nZ2VyIG5hbWU9Im9yZy5zcHJpbmdmcmFtZXdvcmsiIGxldmVsPSJpbmZvIi8+DQorICAgIDxsb2dnZXIgbmFtZT0ib3JnLnNwcmluZ2ZyYW1ld29yay53ZWIiIGxldmVsPSJkZWJ1ZyIvPg0KKyAgICA8bG9nZ2VyIG5hbWU9Im9yZy5oaWJlcm5hdGUiIGxldmVsPSJlcnJvciIvPg0KKyAgICA8bG9nZ2VyIG5hbWU9Im9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMiIGxldmVsPSJpbmZvIi8+DQorDQorICAgIDxyb290IGxldmVsPSJ3YXJuIj4NCisgICAgICAgIDxhcHBlbmRlci1yZWYgcmVmPSJTVERPVVQiLz4NCisgICAgPC9yb290Pg0KKw0KKzwvY29uZmlndXJhdGlvbj4NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9wb20ueG1sIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWI0NWUyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vcG9tLnhtbApAQCAtMCwwICsxLDI0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICB+IENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICB+DQorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgfg0KKyAgfiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICB+DQorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICAtLT4NCisNCis8cHJvamVjdA0KKyAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcveHNkL21hdmVuLTQuMC4wLnhzZCINCisgICAgICAgIHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiDQorICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4NCisgICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKyAgICA8cGFyZW50Pg0KKyAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4NCisgICAgICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXBhcmVudDwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDx2ZXJzaW9uPjAuMy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKyAgICAgICAgPHJlbGF0aXZlUGF0aD4uLi9wYXJlbnQ8L3JlbGF0aXZlUGF0aD4NCisgICAgPC9wYXJlbnQ+DQorICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLWFwcGxpY2F0aW9uPC9hcnRpZmFjdElkPg0KKyAgICA8bmFtZT5Db250cm9sbGVyIEJsdWVwcmludHMgQXBwbGljYXRpb248L25hbWU+DQorICAgIDxwcm9wZXJ0aWVzPg0KKyAgICAgICAgPHN3YWdnZXIuZGlyZWN0b3J5PiR7YmFzZWRpcn0vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdDwvc3dhZ2dlci5kaXJlY3Rvcnk+DQorICAgICAgICA8amF2YS52ZXJzaW9uPjEuODwvamF2YS52ZXJzaW9uPg0KKyAgICAgICAgPGRvY2tlci5yZWdpc3RyeT54eHh4eHh4eHg6NTEwMDwvZG9ja2VyLnJlZ2lzdHJ5Pg0KKyAgICAgICAgPGFzc2VtYmx5LmlkPmRpc3RyaWJ1dGlvbjwvYXNzZW1ibHkuaWQ+DQorICAgICAgICA8YnVpbGQubnVtYmVyPmxvY2FsPC9idWlsZC5udW1iZXI+DQorICAgICAgICA8bmFtZS5zcGFjZT5vcmcub25hcC5jY3Nkay5hcHBzPC9uYW1lLnNwYWNlPiAgICAgPCEtLSA8bmFtZS5zcGFjZT4ke25hbWVzcGFjZX08L25hbWUuc3BhY2U+IC0tPg0KKyAgICAgICAgPGdybS5uYW1lc3BhY2U+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JtLm5hbWVzcGFjZT4NCisgICAgICAgIDxhcmNoZXR5cGVWZXJzaW9uPjIwMC4wLjQ5PC9hcmNoZXR5cGVWZXJzaW9uPg0KKyAgICAgICAgPHNlcnZpY2VBcnRpZmFjdE5hbWU+Y29udHJvbGxlcmJsdWVwcmludHM8L3NlcnZpY2VBcnRpZmFjdE5hbWU+DQorDQorICAgICAgICA8IS0tIFNvbmFyIC0tPg0KKyAgICAgICAgPHNvbmFyLmphdmEuY292ZXJhZ2VQbHVnaW4+amFjb2NvPC9zb25hci5qYXZhLmNvdmVyYWdlUGx1Z2luPg0KKyAgICAgICAgPHNvbmFyLmR5bmFtaWNBbmFseXNpcz5yZXVzZVJlcG9ydHM8L3NvbmFyLmR5bmFtaWNBbmFseXNpcz4NCisgICAgICAgIDxzb25hci5zdXJlZmlyZS5yZXBvcnRzUGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9zdXJlZmlyZS1yZXBvcnRzPC9zb25hci5zdXJlZmlyZS5yZXBvcnRzUGF0aD4NCisgICAgICAgIDxzb25hci5mYWlsc2FmZS5yZXBvcnRzUGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9mYWlsc2FmZS1yZXBvcnRzPC9zb25hci5mYWlsc2FmZS5yZXBvcnRzUGF0aD4NCisgICAgICAgIDxqYWNvY28ucGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9qYWNvY29fcmVwb3J0PC9qYWNvY28ucGF0aD4NCisgICAgICAgIDxqYWNvY28uaXRQYXRoPiR7YmFzZWRpcn0vdGFyZ2V0L2phY29jb19pdFJlcG9ydDwvamFjb2NvLml0UGF0aD4NCisgICAgICAgIDxzb25hci5qYWNvY28ucmVwb3J0UGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9qYWNvY28tdXQuZXhlYzwvc29uYXIuamFjb2NvLnJlcG9ydFBhdGg+DQorICAgICAgICA8c29uYXIuamFjb2NvLml0UmVwb3J0UGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9qYWNvY28taXQuZXhlYzwvc29uYXIuamFjb2NvLml0UmVwb3J0UGF0aD4NCisgICAgICAgIDxzb25hci5sYW5ndWFnZT5qYXZhPC9zb25hci5sYW5ndWFnZT4NCisgICAgICAgIDxpbGliLnZlcnNpb24+Mi4wLjc8L2lsaWIudmVyc2lvbj4NCisgICAgICAgIDwhLS08c2tpcC5hc3NlbWJseT5mYWxzZTwvc2tpcC5hc3NlbWJseT4tLT4NCisgICAgICAgIDwhLS08c2tpcC5zd2FnZ2VyLmdlbmVyYXRpb24+ZmFsc2U8L3NraXAuc3dhZ2dlci5nZW5lcmF0aW9uPi0tPg0KKyAgICA8L3Byb3BlcnRpZXM+DQorDQorICAgIDxkZXBlbmRlbmNpZXM+DQorDQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXNlcnZpY2U8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Q8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3Qtc3RhcnRlci1hY3R1YXRvcjwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgICAgIDxkZXBlbmRlbmN5Pg0KKyAgICAgICAgICAgIDxncm91cElkPm9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdDwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zcHJpbmctYm9vdC1kZXZ0b29sczwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICA8b3B0aW9uYWw+dHJ1ZTwvb3B0aW9uYWw+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb20uaDJkYXRhYmFzZTwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5oMjwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICA8c2NvcGU+cnVudGltZTwvc2NvcGU+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Q8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3Qtc3RhcnRlci10ZXN0PC9hcnRpZmFjdElkPg0KKyAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgPC9kZXBlbmRlbmNpZXM+DQorICAgIDxidWlsZD4NCisgICAgICAgIDxyZXNvdXJjZXM+DQorICAgICAgICAgICAgPHJlc291cmNlPg0KKyAgICAgICAgICAgICAgICA8IS0tY29uZmlnIGFuZCByZXNvdXJjZSBmaWxlcyAtLT4NCisgICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4ke2Jhc2VkaXJ9L2V0YzwvZGlyZWN0b3J5Pg0KKyAgICAgICAgICAgICAgICA8dGFyZ2V0UGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9ldGM8L3RhcmdldFBhdGg+DQorICAgICAgICAgICAgICAgIDxmaWx0ZXJpbmc+dHJ1ZTwvZmlsdGVyaW5nPg0KKyAgICAgICAgICAgICAgICA8aW5jbHVkZXM+DQorICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKi8qPC9pbmNsdWRlPg0KKyAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPg0KKyAgICAgICAgICAgIDwvcmVzb3VyY2U+DQorICAgICAgICAgICAgPHJlc291cmNlPg0KKyAgICAgICAgICAgICAgICA8IS0tY29uZmlnIGFuZCByZXNvdXJjZSBmaWxlcyAtLT4NCisgICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4ke2Jhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5Pg0KKyAgICAgICAgICAgICAgICA8dGFyZ2V0UGF0aD4ke2Jhc2VkaXJ9L3RhcmdldC9zcmMvbWFpbi9yZXNvdXJjZXM8L3RhcmdldFBhdGg+DQorICAgICAgICAgICAgICAgIDxmaWx0ZXJpbmc+dHJ1ZTwvZmlsdGVyaW5nPg0KKyAgICAgICAgICAgICAgICA8aW5jbHVkZXM+DQorICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKi8qPC9pbmNsdWRlPg0KKyAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPg0KKyAgICAgICAgICAgIDwvcmVzb3VyY2U+DQorICAgICAgICAgICAgPHJlc291cmNlPg0KKyAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5PnNyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5Pg0KKyAgICAgICAgICAgICAgICA8aW5jbHVkZXM+DQorICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKi8qPC9pbmNsdWRlPg0KKyAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPg0KKyAgICAgICAgICAgICAgICA8ZmlsdGVyaW5nPnRydWU8L2ZpbHRlcmluZz4NCisgICAgICAgICAgICA8L3Jlc291cmNlPg0KKyAgICAgICAgICAgIDxyZXNvdXJjZT4NCisgICAgICAgICAgICAgICAgPGRpcmVjdG9yeT5zcmMvbWFpbi9kb2NrZXI8L2RpcmVjdG9yeT4NCisgICAgICAgICAgICAgICAgPHRhcmdldFBhdGg+JHtiYXNlZGlyfS90YXJnZXQ8L3RhcmdldFBhdGg+DQorICAgICAgICAgICAgICAgIDxpbmNsdWRlcz4NCisgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPioqLyo8L2luY2x1ZGU+DQorICAgICAgICAgICAgICAgIDwvaW5jbHVkZXM+DQorICAgICAgICAgICAgICAgIDxmaWx0ZXJpbmc+dHJ1ZTwvZmlsdGVyaW5nPg0KKyAgICAgICAgICAgIDwvcmVzb3VyY2U+DQorICAgICAgICA8L3Jlc291cmNlcz4NCisgICAgICAgIDxwbHVnaW5zPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5qYWNvY288L2dyb3VwSWQ+DQorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY29jby1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjAuNy41LjIwMTUwNTI0MTk0NjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbnM+DQorICAgICAgICAgICAgICAgICAgICA8IS0tIFByZXBhcmVzIHRoZSBwcm9wZXJ0eSBwb2ludGluZyB0byB0aGUgSmFDb0NvIHJ1bnRpbWUgYWdlbnQgd2hpY2gNCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBwYXNzZWQgYXMgVk0gYXJndW1lbnQgd2hlbiBNYXZlbiB0aGUgU3VyZWZpcmUgcGx1Z2luIGlzIGV4ZWN1dGVkLiAtLT4NCisgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPnByZS11bml0LXRlc3Q8L2lkPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWw+cHJlcGFyZS1hZ2VudDwvZ29hbD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNldHMgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbnMgdGhlIGV4ZWN1dGlvbiBkYXRhLiAtLT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlc3RGaWxlPiR7c29uYXIuamFjb2NvLnJlcG9ydFBhdGh9PC9kZXN0RmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5TmFtZT5zdXJlZmlyZUFyZ0xpbmU8L3Byb3BlcnR5TmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDwhLS0gRW5zdXJlcyB0aGF0IHRoZSBjb2RlIGNvdmVyYWdlIHJlcG9ydCBmb3IgdW5pdCB0ZXN0cyBpcyBjcmVhdGVkDQorICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdW5pdCB0ZXN0cyBoYXZlIGJlZW4gcnVuLiAtLT4NCisgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPnBvc3QtdW5pdC10ZXN0PC9pZD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dGVzdDwvcGhhc2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5yZXBvcnQ8L2dvYWw+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXRzIHRoZSBwYXRoIHRvIHRoZSBmaWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBleGVjdXRpb24gZGF0YS4gLS0+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkYXRhRmlsZT4ke3NvbmFyLmphY29jby5yZXBvcnRQYXRofTwvZGF0YUZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2V0cyB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGNvZGUgY292ZXJhZ2UgcmVwb3J0LiAtLT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4ke2phY29jby5wYXRofTwvb3V0cHV0RGlyZWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPg0KKyAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmdpdGh1Yi5rb25nY2hlbjwvZ3JvdXBJZD4NCisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3dhZ2dlci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjMuMS43PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNraXBTd2FnZ2VyR2VuZXJhdGlvbj4ke3NraXAuc3dhZ2dlci5nZW5lcmF0aW9ufTwvc2tpcFN3YWdnZXJHZW5lcmF0aW9uPi0tPg0KKyAgICAgICAgICAgICAgICAgICAgPGFwaVNvdXJjZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGFwaVNvdXJjZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjaGVtZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NoZW1lPmh0dHA8L3NjaGVtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY2hlbWU+aHR0cHM8L3NjaGVtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zY2hlbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bG9jYXRpb25zPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxvY2F0aW9uPm9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHM8L2xvY2F0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xvY2F0aW9ucz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJhc2VQYXRoPi9hcGkvY29udHJvbGxlci1ibHVlcHJpbnRzL3YxPC9iYXNlUGF0aD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluZm8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29udHJvbGxlciBCbHVlcHJpbnQgU2VydmljZTwvdGl0bGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5mbz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN3YWdnZXJEaXJlY3Rvcnk+JHtzd2FnZ2VyLmRpcmVjdG9yeX08L3N3YWdnZXJEaXJlY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9hcGlTb3VyY2U+DQorICAgICAgICAgICAgICAgICAgICA8L2FwaVNvdXJjZXM+DQorICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbnM+DQorICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHBoYXNlPmNvbXBpbGU8L3BoYXNlPiAtLT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+cGFja2FnZTwvcGhhc2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+DQorICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+DQorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWFudHJ1bi1wbHVnaW48L2FydGlmYWN0SWQ+DQorICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPg0KKyAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+YW50LXRlc3Q8L2lkPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhc2tzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpeGNybGYgc3JjZGlyPSIke2Jhc2VkaXJ9IiBlb2w9InVuaXgiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz0iKiovKi5zaCwgKiovKi5zb3VyY2UiLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YXNrcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5ydW48L2dvYWw+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9nb2Fscz4NCisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPg0KKyAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPCEtLWJ1aWxkIHRoZSBmaW5hbCBhcnRpZmFjdCBmb3IgZG9ja2VyIGRlcGxveW1lbnQgLS0+DQorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWFzc2VtYmx5LXBsdWdpbjwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+My4wLjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2tpcEFzc2VtYmx5PiR7c2tpcC5hc3NlbWJseX08L3NraXBBc3NlbWJseT4tLT4NCisgICAgICAgICAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+dGFyZ2V0PC9vdXRwdXREaXJlY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRvcnM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0b3I+c3JjL2Fzc2VtYmx5L2Rpc3RyaWJ1dGlvbi54bWw8L2Rlc2NyaXB0b3I+DQorICAgICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0b3JzPg0KKyAgICAgICAgICAgICAgICAgICAgPHRhckxvbmdGaWxlTW9kZT5wb3NpeDwvdGFyTG9uZ0ZpbGVNb2RlPg0KKyAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPg0KKyAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+JHthc3NlbWJseS5pZH08L2lkPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbHM+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPnNpbmdsZTwvZ29hbD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPg0KKyAgICAgICAgICAgICAgICAgICAgPC9leGVjdXRpb24+DQorICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1jb21waWxlci1wbHVnaW48L2FydGlmYWN0SWQ+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjMuMTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8IS0tIDxza2lwPiR7c2tpcC5jb21waWxlfTwvc2tpcD4tLT4NCisgICAgICAgICAgICAgICAgICAgIDxzb3VyY2U+MS44PC9zb3VyY2U+DQorICAgICAgICAgICAgICAgICAgICA8dGFyZ2V0PjEuODwvdGFyZ2V0Pg0KKyAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L3BsdWdpbnM+DQorICAgIDwvYnVpbGQ+DQorPC9wcm9qZWN0Pg0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9hc3NlbWJseS9kaXN0cmlidXRpb24ueG1sIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL2Fzc2VtYmx5L2Rpc3RyaWJ1dGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRmYjUyZAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9hc3NlbWJseS9kaXN0cmlidXRpb24ueG1sCkBAIC0wLDAgKzEsODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIH4gQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKyAgfgorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgfgorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgfgorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxhc3NlbWJseSB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvQVNTRU1CTFkvMi4wLjAiCisgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKyAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL0FTU0VNQkxZLzIuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9hc3NlbWJseS0yLjAuMC54c2QiPgorICAgIDwhLS0gY3JlYXRlIGEgdGFyLmd6IGZpbGUgY29udGFpbmluZyB0aGUgcHJvamVjdHMgZGVwZW5kZW5jaWVzIC0tPgorICAgIDxpZD4ke2Fzc2VtYmx5LmlkfTwvaWQ+CisgICAgPGZvcm1hdHM+CisgICAgICAgIDxmb3JtYXQ+dGFyLmd6PC9mb3JtYXQ+CisgICAgPC9mb3JtYXRzPgorICAgIDxkZXBlbmRlbmN5U2V0cz4KKyAgICAgICAgPGRlcGVuZGVuY3lTZXQ+CisgICAgICAgICAgICA8b3V0cHV0RGlyZWN0b3J5Pi9vcHQvYXBwL29uYXAvbGliPC9vdXRwdXREaXJlY3Rvcnk+CisgICAgICAgICAgICA8ZXhjbHVkZXM+CisgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+b3JnLnNsZjRqOnNsZjRqLWxvZzRqMTI8L2V4Y2x1ZGU+CisgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+amF2YXguc2VydmxldDpzZXJ2bGV0LWFwaTwvZXhjbHVkZT4KKyAgICAgICAgICAgICAgICA8ZXhjbHVkZT5qYXZheC5zZXJ2bGV0OmphdmF4LnNlcnZsZXQtYXBpPC9leGNsdWRlPgorICAgICAgICAgICAgICAgIDxleGNsdWRlPmoyZWU6ajJlZTwvZXhjbHVkZT4KKyAgICAgICAgICAgICAgICA8ZXhjbHVkZT5sb2c0ajpsb2c0ajwvZXhjbHVkZT4KKyAgICAgICAgICAgICAgICA8ZXhjbHVkZT5jb20uc3VuOmoyZWU8L2V4Y2x1ZGU+CisgICAgICAgICAgICAgICAgPGV4Y2x1ZGU+bG9nNGo6YXBhY2hlLWxvZzRqLWV4dHJhczwvZXhjbHVkZT4KKyAgICAgICAgICAgICAgICA8ZXhjbHVkZT5vcmcuc2xmNGo6c2xmNGotc2ltcGxlPC9leGNsdWRlPgorICAgICAgICAgICAgPC9leGNsdWRlcz4KKyAgICAgICAgPC9kZXBlbmRlbmN5U2V0PgorICAgIDwvZGVwZW5kZW5jeVNldHM+CisgICAgPGZpbGVTZXRzPgorICAgICAgICA8ZmlsZVNldD4KKyAgICAgICAgICAgIDxkaXJlY3Rvcnk+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5PgorICAgICAgICAgICAgPGluY2x1ZGVzPgorICAgICAgICAgICAgICAgIDxpbmNsdWRlPmFwcGxpY2F0aW9uLnByb3BlcnRpZXM8L2luY2x1ZGU+CisgICAgICAgICAgICA8L2luY2x1ZGVzPgorICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT4vPC9vdXRwdXREaXJlY3Rvcnk+CisgICAgICAgICAgICA8dXNlRGVmYXVsdEV4Y2x1ZGVzPnRydWU8L3VzZURlZmF1bHRFeGNsdWRlcz4KKyAgICAgICAgPC9maWxlU2V0PgorICAgICAgICA8ZmlsZVNldD4KKyAgICAgICAgICAgIDxkaXJlY3Rvcnk+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL2RvY2tlcjwvZGlyZWN0b3J5PgorICAgICAgICAgICAgPGluY2x1ZGVzPgorICAgICAgICAgICAgICAgIDxpbmNsdWRlPkRvY2tlcmZpbGU8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgPGluY2x1ZGU+c3RhcnRTZXJ2aWNlLnNoPC9pbmNsdWRlPgorICAgICAgICAgICAgPC9pbmNsdWRlcz4KKyAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+Lzwvb3V0cHV0RGlyZWN0b3J5PgorICAgICAgICAgICAgPHVzZURlZmF1bHRFeGNsdWRlcz50cnVlPC91c2VEZWZhdWx0RXhjbHVkZXM+CisgICAgICAgIDwvZmlsZVNldD4KKyAgICAgICAgPGZpbGVTZXQ+CisgICAgICAgICAgICA8ZGlyZWN0b3J5PiR7cHJvamVjdC5iYXNlZGlyfS9zcmMvbWFpbi9ncm9vdnk8L2RpcmVjdG9yeT4KKyAgICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+c3JjL21haW4vZ3Jvb3Z5PC9vdXRwdXREaXJlY3Rvcnk+CisgICAgICAgICAgICA8dXNlRGVmYXVsdEV4Y2x1ZGVzPnRydWU8L3VzZURlZmF1bHRFeGNsdWRlcz4KKyAgICAgICAgPC9maWxlU2V0PgorICAgICAgICA8ZmlsZVNldD4KKyAgICAgICAgICAgIDxkaXJlY3Rvcnk+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlczwvZGlyZWN0b3J5PgorICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT5zcmMvbWFpbi9yZXNvdXJjZXM8L291dHB1dERpcmVjdG9yeT4KKyAgICAgICAgICAgIDx1c2VEZWZhdWx0RXhjbHVkZXM+dHJ1ZTwvdXNlRGVmYXVsdEV4Y2x1ZGVzPgorICAgICAgICA8L2ZpbGVTZXQ+CisgICAgICAgIDxmaWxlU2V0PgorICAgICAgICAgICAgPGRpcmVjdG9yeT4ke3Byb2plY3QuYmFzZWRpcn0vZXRjPC9kaXJlY3Rvcnk+CisgICAgICAgICAgICA8b3V0cHV0RGlyZWN0b3J5Pi9ldGM8L291dHB1dERpcmVjdG9yeT4KKyAgICAgICAgICAgIDx1c2VEZWZhdWx0RXhjbHVkZXM+dHJ1ZTwvdXNlRGVmYXVsdEV4Y2x1ZGVzPgorICAgICAgICA8L2ZpbGVTZXQ+CisgICAgICAgIDxmaWxlU2V0PgorICAgICAgICAgICAgPGRpcmVjdG9yeT4ke3Byb2plY3QuYmFzZWRpcn0vbG9hZDwvZGlyZWN0b3J5PgorICAgICAgICAgICAgPG91dHB1dERpcmVjdG9yeT5sb2FkPC9vdXRwdXREaXJlY3Rvcnk+CisgICAgICAgICAgICA8dXNlRGVmYXVsdEV4Y2x1ZGVzPnRydWU8L3VzZURlZmF1bHRFeGNsdWRlcz4KKyAgICAgICAgPC9maWxlU2V0PgorICAgIDwvZmlsZVNldHM+Cis8L2Fzc2VtYmx5PgpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vZGMvZG9ja2VyLWNvbXBvc2UueWFtbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2RjL2RvY2tlci1jb21wb3NlLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY5NmQwMgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2RjL2RvY2tlci1jb21wb3NlLnlhbWwKQEAgLTAsMCArMSwzNiBAQAordmVyc2lvbjogJzMuMycNCisNCitzZXJ2aWNlczoNCisgICBkYjoNCisgICAgIGltYWdlOiBteXNxbDo1LjcuMjINCisgICAgIGNvbnRhaW5lcl9uYW1lOiBjYi1teXNxbA0KKyAgICAgcG9ydHM6DQorICAgICAgIC0gIjMzMDc6MzMwNiINCisgICAgIHZvbHVtZXM6DQorICAgICAgIC0gfi92bV9teXNxbDovdmFyL2xpYi9teXNxbA0KKyAgICAgcmVzdGFydDogYWx3YXlzDQorICAgICBlbnZpcm9ubWVudDoNCisgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogc2RuY3RsDQorICAgICAgIE1ZU1FMX0RBVEFCQVNFOiBzZG5jdGwNCisgICAgICAgTVlTUUxfVVNFUjogc2RuY3RsDQorICAgICAgIE1ZU1FMX1BBU1NXT1JEOiBzZG5jdGwNCisgICBjb250cm9sbGVyLWJsdWVwcmludHM6DQorICAgICBkZXBlbmRzX29uOg0KKyAgICAgICAtIGRiDQorICAgICBpbWFnZTogb25hcC9jb250cm9sbGVyYmx1ZXByaW50czoxLjAuMA0KKyAgICAgY29udGFpbmVyX25hbWU6IGNiLXJlc3QNCisgICAgIHBvcnRzOg0KKyAgICAgICAtICI4MDgwOjgwODAiDQorICAgICByZXN0YXJ0OiBhbHdheXMNCisgICAgIHZvbHVtZXM6DQorICAgICAgIC0gfi9zaGFyZS92bV9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb25maWc6L29wdC9hcHAvb25hcC9jb25maWcNCisgICAgICAgLSB+L3NoYXJlL3ZtX21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2xvZ3M6L2xvZ3MNCisgICAgIGVudmlyb25tZW50Og0KKyAgICAgICBEQl9VUkw6IGpkYmM6bXlzcWw6Ly9kYjozMzA2L3NkbmN0bA0KKyAgICAgICBEQl9VU0VSOiBzZG5jdGwNCisgICAgICAgREJfUEFTU1dPUkQ6IHNkbmN0bA0KKyAgICAgICBJTklUX0RBVEFfTE9BRDogInRydWUiDQorICAgICAgIEFQUF9DT05GSUdfSE9NRTogL29wdC9hcHAvb25hcC9jb25maWcNCisgICAgICAgQlVORExFVkVSU0lPTjogMS4wLjANCisgICAgICAgU1RJQ0tZU0VMRUNUT1JLRVk6DQorICAgICAgIEVOVkNPTlRFWFQ6IERFVgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2RvY2tlci9Eb2NrZXJmaWxlIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vZG9ja2VyL0RvY2tlcmZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYzMDRlMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2RvY2tlci9Eb2NrZXJmaWxlCkBAIC0wLDAgKzEsMTcgQEAKK0ZST00gYW5hcHNpeC9hbHBpbmUtamF2YTo4X2pkaworCitSVU4gYXBrIGFkZCAtLW5vLWNhY2hlIGN1cmwKKworQ09QWSBzdGFydFNlcnZpY2Uuc2ggL3N0YXJ0U2VydmljZS5zaAorUlVOIGNobW9kIDc3NyAvc3RhcnRTZXJ2aWNlLnNoICYmIGRvczJ1bml4IC9zdGFydFNlcnZpY2Uuc2gKKworQ09QWSBAcHJvamVjdC5idWlsZC5maW5hbE5hbWVALUBhc3NlbWJseS5pZEAudGFyLmd6IC9zb3VyY2UudGFyLmd6CisKK1JVTiAobWtkaXIgLXAgL3NvdXJjZSAvb3B0L2FwcC9vbmFwKSAmJiAodGFyIC14emYgL3NvdXJjZS50YXIuZ3ogLUMgL3NvdXJjZSkgXAorJiYgKG12IC9zb3VyY2UvQHByb2plY3QuYnVpbGQuZmluYWxOYW1lQCAvc291cmNlL2FwcCkgXAorJiYgKGNwIC1yZiAvc291cmNlL2FwcC9vcHQvYXBwL29uYXAvbGliIC9vcHQvYXBwL29uYXAvKSBcCismJiAoY3AgLXJmIC9zb3VyY2UvYXBwL2V0YyAvKSBcCismJiAoY3AgLXJmIC9zb3VyY2UvYXBwL2xvYWQgLykgXAorJiYgKHJtIC1yZiAvc291cmNlKQorCitFTlRSWVBPSU5UIC9zdGFydFNlcnZpY2Uuc2gKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2RvY2tlci9zdGFydFNlcnZpY2Uuc2ggYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9kb2NrZXIvc3RhcnRTZXJ2aWNlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNzdjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9kb2NrZXIvc3RhcnRTZXJ2aWNlLnNoCkBAIC0wLDAgKzEsOCBAQAorIyEvYmluL3NoCisKK25vZGVOYW1lPUNvbnRyb2xsZXJCbHVlcHJpbnRzXzEuMC4wXyQoY2F0IC9wcm9jL3NlbGYvY2dyb3VwIHwgZ3JlcCBkb2NrZXIgfCBzZWQgcy9cXC8vXFxuL2cgfCB0YWlsIC0xKQorCitlY2hvICJBUFAgQ29uZmlnIEhPTUUgOiAke0FQUF9DT05GSUdfSE9NRX0iCitleHBvcnQgQVBQX0hPTUU9L29wdC9hcHAvb25hcAorCitzb3VyY2UgL2V0Yy9ydW4uc291cmNlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQXBwbGljYXRpb25Db25zdGFudHMuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9BcHBsaWNhdGlvbkNvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNzJlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQXBwbGljYXRpb25Db25zdGFudHMuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzOw0KKw0KKy8qKg0KKyAqIEFwcGxpY2F0aW9uQ29uc3RhbnRzLmphdmEgUHVycG9zZTogUHJvdmlkZSBDb250cm9sbGVyQmx1cHJpbnRzQXBwbGljYXRpb24gQ29uc3RhbnQgSW5mb3JtYXRpb24NCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorcHVibGljIGZpbmFsIGNsYXNzIEFwcGxpY2F0aW9uQ29uc3RhbnRzIHsNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvbi5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDgyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQ29udHJvbGxlckJsdXByaW50c0FwcGxpY2F0aW9uLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsNCisNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LlNwcmluZ0FwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5FbmFibGVBdXRvQ29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LmF1dG9jb25maWd1cmUuU3ByaW5nQm9vdEFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5Db21wb25lbnRTY2FuOw0KKw0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK0BTcHJpbmdCb290QXBwbGljYXRpb24NCitAQ29tcG9uZW50U2NhbihiYXNlUGFja2FnZXMgPSB7Im9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMifSkNCitARW5hYmxlQXV0b0NvbmZpZ3VyYXRpb24NCitwdWJsaWMgY2xhc3MgQ29udHJvbGxlckJsdXByaW50c0FwcGxpY2F0aW9uIHsNCisNCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgew0KKyAgICAgICAgU3ByaW5nQXBwbGljYXRpb24ucnVuKENvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvbi5jbGFzcywgYXJncyk7DQorICAgIH0NCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNGaWx0ZXJDb25maWd1cmF0aW9uLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQ29udHJvbGxlckJsdXByaW50c0ZpbHRlckNvbmZpZ3VyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjRiZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNGaWx0ZXJDb25maWd1cmF0aW9uLmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsNCisNCisNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLlZhbHVlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5Db25maWd1cmF0aW9uOw0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK0BDb25maWd1cmF0aW9uDQorcHVibGljIGNsYXNzIENvbnRyb2xsZXJCbHVwcmludHNGaWx0ZXJDb25maWd1cmF0aW9uIHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEplcnNleUNvbmZpZ3VyYXRpb24uY2xhc3MpOw0KKw0KKyAgICBAVmFsdWUoIiR7c2VydmVyLnJvdXRpbmdQYXRoOiN7bnVsbH19IikNCisgICAgcHJpdmF0ZSBTdHJpbmcgcm91dGluZ1BhdGg7DQorDQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9Db3JzQ29uZmlnLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQ29yc0NvbmZpZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkOWFiMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQ29yc0NvbmZpZy5qYXZhCkBAIC0wLDAgKzEsNTIgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHM7DQorDQorDQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkJlYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkNvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmNvcnMuQ29yc0NvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmNvcnMuVXJsQmFzZWRDb3JzQ29uZmlndXJhdGlvblNvdXJjZTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuZmlsdGVyLkNvcnNGaWx0ZXI7DQorDQorLyoqDQorICogQ29yc0NvbmZpZy5qYXZhIFB1cnBvc2U6IFByb3ZpZGUgQ29uZmlndXJhdGlvbiBHZW5lcmF0b3IgQ29yc0NvbmZpZyBJbmZvcm1hdGlvbg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitAQ29uZmlndXJhdGlvbg0KK3B1YmxpYyBjbGFzcyBDb3JzQ29uZmlnIHsNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBDT1JTIEltcGxlbWVudGF0aW9uIGZvciBkaWZmZXJlbnQgT3JnaW4gR1VJIHRvIGFjY2Vzcy4NCisgICAgICoNCisgICAgICogQHJldHVybiBDb3JzRmlsdGVyDQorICAgICAqLw0KKyAgICBAQmVhbg0KKyAgICBwdWJsaWMgQ29yc0ZpbHRlciBjb3JzRmlsdGVyKCkgew0KKyAgICAgICAgVXJsQmFzZWRDb3JzQ29uZmlndXJhdGlvblNvdXJjZSBzb3VyY2UgPSBuZXcgVXJsQmFzZWRDb3JzQ29uZmlndXJhdGlvblNvdXJjZSgpOw0KKyAgICAgICAgQ29yc0NvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IENvcnNDb25maWd1cmF0aW9uKCk7DQorICAgICAgICBjb25maWcuc2V0QWxsb3dDcmVkZW50aWFscyh0cnVlKTsNCisgICAgICAgIGNvbmZpZy5hZGRBbGxvd2VkT3JpZ2luKCIqIik7DQorICAgICAgICBjb25maWcuYWRkQWxsb3dlZEhlYWRlcigiKiIpOw0KKyAgICAgICAgY29uZmlnLmFkZEFsbG93ZWRNZXRob2QoIioiKTsNCisgICAgICAgIHNvdXJjZS5yZWdpc3RlckNvcnNDb25maWd1cmF0aW9uKCIvKioiLCBjb25maWcpOw0KKyAgICAgICAgcmV0dXJuIG5ldyBDb3JzRmlsdGVyKHNvdXJjZSk7DQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0RhdGFiYXNlQ29uZmlnLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvRGF0YWJhc2VDb25maWcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE1NGZmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0RhdGFiYXNlQ29uZmlnLmphdmEKQEAgLTAsMCArMSw2MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsNCisNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LmF1dG9jb25maWd1cmUuZG9tYWluLkVudGl0eVNjYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkJlYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkNvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5jb25maWcuRW5hYmxlSnBhQXVkaXRpbmc7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5jb25maWcuRW5hYmxlSnBhUmVwb3NpdG9yaWVzOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLm9ybS5qcGEuTG9jYWxDb250YWluZXJFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsub3JtLmpwYS52ZW5kb3IuSGliZXJuYXRlSnBhVmVuZG9yQWRhcHRlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLkVuYWJsZVRyYW5zYWN0aW9uTWFuYWdlbWVudDsNCisNCitpbXBvcnQgamF2YXguc3FsLkRhdGFTb3VyY2U7DQorDQorLyoqDQorICogRGF0YWJhc2VDb25maWcuamF2YSBQdXJwb3NlOiBQcm92aWRlIENvbmZpZ3VyYXRpb24gR2VuZXJhdG9yIERhdGFiYXNlQ29uZmlnIEluZm9ybWF0aW9uDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BDb25maWd1cmF0aW9uDQorQEVudGl0eVNjYW4oIm9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4iKQ0KK0BFbmFibGVUcmFuc2FjdGlvbk1hbmFnZW1lbnQNCitARW5hYmxlSnBhUmVwb3NpdG9yaWVzKCJvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeSIpDQorQEVuYWJsZUpwYUF1ZGl0aW5nDQorcHVibGljIGNsYXNzIERhdGFiYXNlQ29uZmlnIHsNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBlbnRpdHlNYW5hZ2VyRmFjdG9yeSBtZXRob2QNCisgICAgICoNCisgICAgICogQHBhcmFtIGRhdGFTb3VyY2UNCisgICAgICogQHJldHVybiBMb2NhbENvbnRhaW5lckVudGl0eU1hbmFnZXJGYWN0b3J5QmVhbg0KKyAgICAgKi8NCisNCisgICAgQEJlYW4NCisgICAgcHVibGljIExvY2FsQ29udGFpbmVyRW50aXR5TWFuYWdlckZhY3RvcnlCZWFuIGVudGl0eU1hbmFnZXJGYWN0b3J5KERhdGFTb3VyY2UgZGF0YVNvdXJjZSkgew0KKyAgICAgICAgSGliZXJuYXRlSnBhVmVuZG9yQWRhcHRlciB2ZW5kb3JBZGFwdGVyID0gbmV3IEhpYmVybmF0ZUpwYVZlbmRvckFkYXB0ZXIoKTsNCisgICAgICAgIHZlbmRvckFkYXB0ZXIuc2V0R2VuZXJhdGVEZGwodHJ1ZSk7DQorICAgICAgICB2ZW5kb3JBZGFwdGVyLnNldFNob3dTcWwoZmFsc2UpOw0KKyAgICAgICAgTG9jYWxDb250YWluZXJFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW4gZmFjdG9yeSA9IG5ldyBMb2NhbENvbnRhaW5lckVudGl0eU1hbmFnZXJGYWN0b3J5QmVhbigpOw0KKyAgICAgICAgZmFjdG9yeS5zZXRKcGFWZW5kb3JBZGFwdGVyKHZlbmRvckFkYXB0ZXIpOw0KKyAgICAgICAgZmFjdG9yeS5zZXRQYWNrYWdlc1RvU2Nhbigib3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbiIpOw0KKyAgICAgICAgZmFjdG9yeS5zZXREYXRhU291cmNlKGRhdGFTb3VyY2UpOw0KKyAgICAgICAgcmV0dXJuIGZhY3Rvcnk7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0plcnNleUNvbmZpZ3VyYXRpb24uamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9KZXJzZXlDb25maWd1cmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNiMGZhZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9KZXJzZXlDb25maWd1cmF0aW9uLmphdmEKQEAgLTAsMCArMSwxMDIgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHM7DQorDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25JbmNsdWRlOw0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQuRGVzZXJpYWxpemF0aW9uRmVhdHVyZTsNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLk1hcHBlckZlYXR1cmU7DQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7DQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5TZXJpYWxpemF0aW9uRmVhdHVyZTsNCitpbXBvcnQgaW8uc3dhZ2dlci5qYXhycy5jb25maWcuQmVhbkNvbmZpZzsNCitpbXBvcnQgaW8uc3dhZ2dlci5qYXhycy5saXN0aW5nLkFwaUxpc3RpbmdSZXNvdXJjZTsNCitpbXBvcnQgaW8uc3dhZ2dlci5qYXhycy5saXN0aW5nLlN3YWdnZXJTZXJpYWxpemVyczsNCitpbXBvcnQgb3JnLmdsYXNzZmlzaC5qZXJzZXkuc2VydmVyLlJlc291cmNlQ29uZmlnOw0KK2ltcG9ydCBvcmcuZ2xhc3NmaXNoLmplcnNleS5zZXJ2bGV0LlNlcnZsZXRQcm9wZXJ0aWVzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuY29tbW9uLlNlcnZpY2VFeGNlcHRpb25NYXBwZXI7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5ycy5Db25maWdNb2RlbFJlc3RJbXBsOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucnMuTW9kZWxUeXBlUmVzdEltcGw7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5ycy5SZXNvdXJjZURpY3Rpb25hcnlSZXN0SW1wbDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJzLlNlcnZpY2VUZW1wbGF0ZVJlc3RJbXBsOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5CZWFuOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5QcmltYXJ5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuQ29tcG9uZW50Ow0KKw0KK2ltcG9ydCBqYXZheC53cy5ycy5jb3JlLk1lZGlhVHlwZTsNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitAQ29tcG9uZW50DQorcHVibGljIGNsYXNzIEplcnNleUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBSZXNvdXJjZUNvbmZpZyB7DQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihKZXJzZXlDb25maWd1cmF0aW9uLmNsYXNzKTsNCisgICAgLyoqDQorICAgICAqDQorICAgICAqLw0KKyAgICBAQXV0b3dpcmVkDQorICAgIHB1YmxpYyBKZXJzZXlDb25maWd1cmF0aW9uKCkgew0KKyAgICAgICAgcmVnaXN0ZXIoQ29uZmlnTW9kZWxSZXN0SW1wbC5jbGFzcyk7DQorICAgICAgICByZWdpc3RlcihNb2RlbFR5cGVSZXN0SW1wbC5jbGFzcyk7DQorICAgICAgICByZWdpc3RlcihSZXNvdXJjZURpY3Rpb25hcnlSZXN0SW1wbC5jbGFzcyk7DQorICAgICAgICByZWdpc3RlcihTZXJ2aWNlVGVtcGxhdGVSZXN0SW1wbC5jbGFzcyk7DQorICAgICAgICByZWdpc3RlcihTZXJ2aWNlRXhjZXB0aW9uTWFwcGVyLmNsYXNzKTsNCisgICAgICAgIHByb3BlcnR5KFNlcnZsZXRQcm9wZXJ0aWVzLkZJTFRFUl9GT1JXQVJEX09OXzQwNCwgdHJ1ZSk7DQorICAgICAgICBjb25maWd1cmVTd2FnZ2VyKCk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqDQorICAgICAqIEByZXR1cm4gT2JqZWN0TWFwcGVyDQorICAgICAqLw0KKyAgICBAQmVhbg0KKyAgICBAUHJpbWFyeQ0KKyAgICBwdWJsaWMgT2JqZWN0TWFwcGVyIG9iamVjdE1hcHBlcigpIHsNCisgICAgICAgIE9iamVjdE1hcHBlciBvYmplY3RNYXBwZXIgPSBuZXcgT2JqZWN0TWFwcGVyKCk7DQorICAgICAgICBvYmplY3RNYXBwZXIuc2V0U2VyaWFsaXphdGlvbkluY2x1c2lvbihKc29uSW5jbHVkZS5JbmNsdWRlLk5PTl9OVUxMKTsNCisgICAgICAgIG9iamVjdE1hcHBlci5jb25maWd1cmUoU2VyaWFsaXphdGlvbkZlYXR1cmUuV1JJVEVfREFURVNfQVNfVElNRVNUQU1QUywgZmFsc2UpOw0KKyAgICAgICAgb2JqZWN0TWFwcGVyLmVuYWJsZShNYXBwZXJGZWF0dXJlLkFDQ0VQVF9DQVNFX0lOU0VOU0lUSVZFX1BST1BFUlRJRVMpOw0KKyAgICAgICAgb2JqZWN0TWFwcGVyLmVuYWJsZShEZXNlcmlhbGl6YXRpb25GZWF0dXJlLlJFQURfRU5VTVNfVVNJTkdfVE9fU1RSSU5HKTsNCisgICAgICAgIG9iamVjdE1hcHBlci5lbmFibGUoU2VyaWFsaXphdGlvbkZlYXR1cmUuV1JJVEVfRU5VTVNfVVNJTkdfVE9fU1RSSU5HKTsNCisgICAgICAgIHJldHVybiBvYmplY3RNYXBwZXI7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqDQorICAgICAqLw0KKyAgICBwcml2YXRlIHZvaWQgY29uZmlndXJlU3dhZ2dlcigpIHsNCisgICAgICAgIHJlZ2lzdGVyKEFwaUxpc3RpbmdSZXNvdXJjZS5jbGFzcyk7DQorICAgICAgICByZWdpc3RlcihTd2FnZ2VyU2VyaWFsaXplcnMuY2xhc3MpOw0KKyAgICAgICAgQmVhbkNvbmZpZyBiZWFuQ29uZmlnID0gbmV3IEJlYW5Db25maWcoKTsNCisgICAgICAgIGJlYW5Db25maWcuc2V0VmVyc2lvbigiMS4wLjAiKTsNCisgICAgICAgIGJlYW5Db25maWcuc2V0U2NoZW1lcyhuZXcgU3RyaW5nW117Imh0dHAiLCAiaHR0cHMifSk7DQorICAgICAgICBiZWFuQ29uZmlnLnNldEJhc2VQYXRoKCIvYXBpL2NvbnRyb2xsZXItYmx1ZXByaW50cy92MSIpOw0KKyAgICAgICAgYmVhbkNvbmZpZy5zZXRUaXRsZSgiQ29udHJvbGxlciBCbHVlcHJpbnRzIEFQSSIpOw0KKyAgICAgICAgYmVhbkNvbmZpZy5zZXREZXNjcmlwdGlvbigiQ29udHJvbGxlciBCbHVlUHJpbnRzIEFQSSIpOw0KKyAgICAgICAgYmVhbkNvbmZpZy5nZXRTd2FnZ2VyKCkuYWRkQ29uc3VtZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04pOw0KKyAgICAgICAgYmVhbkNvbmZpZy5nZXRTd2FnZ2VyKCkuYWRkUHJvZHVjZXMoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04pOw0KKyAgICAgICAgYmVhbkNvbmZpZy5zZXRSZXNvdXJjZVBhY2thZ2UoIm9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMiKTsNCisgICAgICAgIGJlYW5Db25maWcuc2V0UHJldHR5UHJpbnQodHJ1ZSk7DQorICAgICAgICBiZWFuQ29uZmlnLnNldFNjYW4odHJ1ZSk7DQorICAgIH0NCisNCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL1dlYk12Y0NvbmZpZ3VyYXRpb24uamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9XZWJNdmNDb25maWd1cmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5MGMwNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9XZWJNdmNDb25maWd1cmF0aW9uLmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsNCisNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uQ29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldC5jb25maWcuYW5ub3RhdGlvbi5FbmFibGVXZWJNdmM7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQuY29uZmlnLmFubm90YXRpb24uUmVzb3VyY2VIYW5kbGVyUmVnaXN0cnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQuY29uZmlnLmFubm90YXRpb24uV2ViTXZjQ29uZmlndXJlckFkYXB0ZXI7DQorDQorLyoqDQorICoNCisgKiBXZWJNdmNDb25maWd1cmF0aW9uIFdlYk12Y0NvbmZpZ3VyYXRpb24NCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK0BDb25maWd1cmF0aW9uDQorQEVuYWJsZVdlYk12Yw0KK3B1YmxpYyBjbGFzcyBXZWJNdmNDb25maWd1cmF0aW9uIGV4dGVuZHMgV2ViTXZjQ29uZmlndXJlckFkYXB0ZXIgew0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIHZvaWQgYWRkUmVzb3VyY2VIYW5kbGVycyhSZXNvdXJjZUhhbmRsZXJSZWdpc3RyeSByZWdpc3RyeSkgew0KKyAgICAgICAgcmVnaXN0cnkuYWRkUmVzb3VyY2VIYW5kbGVyKCIvc3dhZ2dlci11aS8qKiIpLmFkZFJlc291cmNlTG9jYXRpb25zKCJjbGFzc3BhdGg6L3N3YWdnZXItdWkvZGlzdC8iKTsNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL2RhdGEuc3FsIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3NxbC9kYXRhLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3NxbC9kYXRhLnNxbApkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3NxbC9zY2hlbWEtbG9jYWwuc3FsIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3NxbC9zY2hlbWEtbG9jYWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYTljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL3NjaGVtYS1sb2NhbC5zcWwKQEAgLTAsMCArMSw4NyBAQAorLS0gZHJvcCB0YWJsZSBzZG5jdGwuTU9ERUxfVFlQRTsNCistLSBkcm9wIHRhYmxlIHNkbmN0bC5SRVNPVVJDRV9ESUNUSU9OQVJZOw0KKy0tIGRyb3AgdGFibGUgc2RuY3RsLkNPTkZJR19NT0RFTF9DT05URU5UOw0KKy0tIGRyb3AgdGFibGUgc2RuY3RsLkNPTkZJR19NT0RFTDsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIENPTkZJR19NT0RFTA0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgc2RuY3RsLkNPTkZJR19NT0RFTCAoDQorICBjb25maWdfbW9kZWxfaWQgCQlJTlQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KKyAgc2VydmljZV91dWlkIAkJCVZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgZGlzdHJpYnV0aW9uX2lkIAkJVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzZXJ2aWNlX25hbWUgCQkJVkFSQ0hBUigyNTUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgc2VydmljZV9kZXNjcmlwdGlvbiAJCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX3V1aWQgCQlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICByZXNvdXJjZV9pbnN0YW5jZV9uYW1lIAlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICByZXNvdXJjZV9uYW1lIAkJdmFyY2hhcigyNTUpIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcmVzb3VyY2VfdmVyc2lvbiAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcmVzb3VyY2VfdHlwZSAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgYXJ0aWZhY3RfdXVpZCAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgYXJ0aWZhY3RfdHlwZSAJCXZhcmNoYXIoNTApIG5vdCBudWxsLA0KKyAgYXJ0aWZhY3RfdmVyc2lvbiAJCXZhcmNoYXIoMjUpIG5vdCBudWxsLA0KKyAgYXJ0aWZhY3RfZGVzY3JpcHRpb24gCQlsb25ndGV4dCBudWxsIGRlZmF1bHQgbnVsbCwNCisgIGludGVybmFsX3ZlcnNpb24gCQlpbnQoMTEpIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgY3JlYXRpb25fZGF0ZSAJCWRhdGV0aW1lIG5vdCBudWxsIGRlZmF1bHQgY3VycmVudF90aW1lc3RhbXAsDQorICBhcnRpZmFjdF9uYW1lIAkJdmFyY2hhcigxMDApIG5vdCBudWxsLA0KKyAgcHVibGlzaGVkIAkJCXZhcmNoYXIoMSkgbm90IG51bGwsDQorICB1cGRhdGVkX2J5IAkJCXZhcmNoYXIoMTAwKSBub3QgbnVsbCwNCisgIHRhZ3MgCQkJCWxvbmd0ZXh0IG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcHJpbWFyeSBrZXkgUEtfQ09ORklHX01PREVMIChjb25maWdfbW9kZWxfaWQpLA0KKyAgVU5JUVVFIEtFWSBVS19DT05GSUdfTU9ERUwgKGFydGlmYWN0X25hbWUgLCBhcnRpZmFjdF92ZXJzaW9uKQ0KKykgRU5HSU5FPUlubm9EQjsNCisNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIENPTkZJR19NT0RFTF9DT05URU5UDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBzZG5jdGwuQ09ORklHX01PREVMX0NPTlRFTlQgKA0KKyAgY29uZmlnX21vZGVsX2NvbnRlbnRfaWQgCUlOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsIA0KKyAgY29uZmlnX21vZGVsX2lkIAkJSU5UIE5PVCBOVUxMLA0KKyAgbmFtZSAJCQkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgY29udGVudF90eXBlIAkJCVZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgZGVzY3JpcHRpb24gCQkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICB1cGRhdGVkX2RhdGUgCQkJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGNvbnRlbnQgCQkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBQUklNQVJZIEtFWSBQS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2NvbnRlbnRfaWQpLA0KKyAgVU5JUVVFIEtFWSBVS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2lkLCBuYW1lLCBjb250ZW50X3R5cGUpLA0KKyAgRk9SRUlHTiBLRVkgRktfQ09ORklHX01PREVMX0NPTlRFTlQgKGNvbmZpZ19tb2RlbF9pZCkgUkVGRVJFTkNFUyBzZG5jdGwuQ09ORklHX01PREVMKGNvbmZpZ19tb2RlbF9pZCkgT04gREVMRVRFIENBU0NBREUNCispIEVOR0lORT1Jbm5vREI7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSB0YWJsZSBNT0RFTF9UWVBFDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBzZG5jdGwuTU9ERUxfVFlQRSAoDQorICBtb2RlbF9uYW1lIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGVyaXZlZF9mcm9tIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGVmaW5pdGlvbl90eXBlIAlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZWZpbml0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB2ZXJzaW9uIAkJVkFSQ0hBUigxMCkgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCUxPTkdURVhUIE5PVCBOVUxMLA0KKyAgdGFncyAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwgIA0KKyAgY3JlYXRpb25fZGF0ZSAJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIHVwZGF0ZWRfYnkgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBQUklNQVJZIEtFWSBQS19NT0RFTF9UWVBFIChtb2RlbF9uYW1lKSwNCisgIElOREVYIElYX01PREVMX1RZUEUgKG1vZGVsX25hbWUpDQorKSBFTkdJTkU9SW5ub0RCOw0KKw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgUkVTT1VSQ0VfRElDVElPTkFSWQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgc2RuY3RsLlJFU09VUkNFX0RJQ1RJT05BUlkgKA0KKyAgbmFtZSAJCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICByZXNvdXJjZV9wYXRoIAlWQVJDSEFSKDUwMCkgTk9UIE5VTEwsICANCisgIHJlc291cmNlX3R5cGUgCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGRhdGFfdHlwZSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGVudHJ5X3NjaGVtYSAJCVZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHZhbGlkX3ZhbHVlcyAJCUxPTkdURVhUIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgc2FtcGxlX3ZhbHVlIAkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBkZWZpbml0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCUxPTkdURVhUIE5PVCBOVUxMLA0KKyAgdGFncyAJCQlMT05HVEVYVCBOT1QgTlVMTCwgIA0KKyAgY3JlYXRpb25fZGF0ZSAJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIHVwZGF0ZWRfYnkgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBwcmltYXJ5IGtleSBQS19SRVNPVVJDRV9ESUNUSU9OQVJZIChuYW1lKSwNCisgIElOREVYIElYX1JFU09VUkNFX0RJQ1RJT05BUlkgKG5hbWUpDQorKSBFTkdJTkU9SW5ub0RCOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zcWwvc2NoZW1hLnNxbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zcWwvc2NoZW1hLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODg0Y2YzCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3NxbC9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsODIgQEAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgQ09ORklHX01PREVMDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBjb25maWd1cmF0b3IuQ09ORklHX01PREVMICgNCisgIGNvbmZpZ19tb2RlbF9pZCAJCUlOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQorICBzZXJ2aWNlX3V1aWQgCQkJVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBkaXN0cmlidXRpb25faWQgCQlWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHNlcnZpY2VfbmFtZSAJCQlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzZXJ2aWNlX2Rlc2NyaXB0aW9uIAkJVkFSQ0hBUigyNTUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgcmVzb3VyY2VfdXVpZCAJCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX2luc3RhbmNlX25hbWUgCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX25hbWUgCQl2YXJjaGFyKDI1NSkgbnVsbCBkZWZhdWx0IG51bGwsDQorICByZXNvdXJjZV92ZXJzaW9uIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICByZXNvdXJjZV90eXBlIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBhcnRpZmFjdF91dWlkIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBhcnRpZmFjdF90eXBlIAkJdmFyY2hhcig1MCkgbm90IG51bGwsDQorICBhcnRpZmFjdF92ZXJzaW9uIAkJdmFyY2hhcigyNSkgbm90IG51bGwsDQorICBhcnRpZmFjdF9kZXNjcmlwdGlvbiAJCWxvbmd0ZXh0IG51bGwgZGVmYXVsdCBudWxsLA0KKyAgaW50ZXJuYWxfdmVyc2lvbiAJCWludCgxMSkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBjcmVhdGlvbl9kYXRlIAkJZGF0ZXRpbWUgbm90IG51bGwgZGVmYXVsdCBjdXJyZW50X3RpbWVzdGFtcCwNCisgIGFydGlmYWN0X25hbWUgCQl2YXJjaGFyKDEwMCkgbm90IG51bGwsDQorICBwdWJsaXNoZWQgCQkJdmFyY2hhcigxKSBub3QgbnVsbCwNCisgIHVwZGF0ZWRfYnkgCQkJdmFyY2hhcigxMDApIG5vdCBudWxsLA0KKyAgdGFncyAJCQkJbG9uZ3RleHQgbnVsbCBkZWZhdWx0IG51bGwsDQorICBwcmltYXJ5IGtleSBQS19DT05GSUdfTU9ERUwgKGNvbmZpZ19tb2RlbF9pZCksDQorICBVTklRVUUgS0VZIFVLX0NPTkZJR19NT0RFTCAoYXJ0aWZhY3RfbmFtZSAsIGFydGlmYWN0X3ZlcnNpb24pDQorKSBFTkdJTkU9SW5ub0RCOw0KKw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgQ09ORklHX01PREVMX0NPTlRFTlQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGNvbmZpZ3VyYXRvci5DT05GSUdfTU9ERUxfQ09OVEVOVCAoDQorICBjb25maWdfbW9kZWxfY29udGVudF9pZCAJSU5UKDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwgDQorICBjb25maWdfbW9kZWxfaWQgCQlJTlQgTk9UIE5VTEwsDQorICBuYW1lIAkJCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBjb250ZW50X3R5cGUgCQkJVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHVwZGF0ZWRfZGF0ZSAJCQlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgY29udGVudCAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIFBSSU1BUlkgS0VZIFBLX0NPTkZJR19NT0RFTF9DT05URU5UIChjb25maWdfbW9kZWxfY29udGVudF9pZCksDQorICBVTklRVUUgS0VZIFVLX0NPTkZJR19NT0RFTF9DT05URU5UIChjb25maWdfbW9kZWxfaWQsIG5hbWUsIGNvbnRlbnRfdHlwZSksDQorICBGT1JFSUdOIEtFWSBGS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2lkKSBSRUZFUkVOQ0VTIGNvbmZpZ3VyYXRvci5DT05GSUdfTU9ERUwoY29uZmlnX21vZGVsX2lkKSBPTiBERUxFVEUgQ0FTQ0FERQ0KKykgRU5HSU5FPUlubm9EQjsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIE1PREVMX1RZUEUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGNvbmZpZ3VyYXRvci5NT0RFTF9UWVBFICgNCisgIG1vZGVsX25hbWUgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZXJpdmVkX2Zyb20gCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZWZpbml0aW9uX3R5cGUgCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGRlZmluaXRpb24gCQlMT05HVEVYVCBOT1QgTlVMTCwNCisgIHZlcnNpb24gCQlWQVJDSEFSKDEwKSBOT1QgTlVMTCwNCisgIGRlc2NyaXB0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB0YWdzIAkJCUxPTkdURVhUIE5VTEwgREVGQVVMVCBOVUxMLCAgDQorICBjcmVhdGlvbl9kYXRlIAlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgdXBkYXRlZF9ieSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIFBSSU1BUlkgS0VZIFBLX01PREVMX1RZUEUgKG1vZGVsX25hbWUpLA0KKyAgSU5ERVggSVhfTU9ERUxfVFlQRSAobW9kZWxfbmFtZSkNCispIEVOR0lORT1Jbm5vREI7DQorDQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSB0YWJsZSBSRVNPVVJDRV9ESUNUSU9OQVJZDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBjb25maWd1cmF0b3IuUkVTT1VSQ0VfRElDVElPTkFSWSAoDQorICBuYW1lIAkJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIHJlc291cmNlX3BhdGggCVZBUkNIQVIoNTAwKSBOT1QgTlVMTCwgIA0KKyAgcmVzb3VyY2VfdHlwZSAJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGF0YV90eXBlIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZW50cnlfc2NoZW1hIAkJVkFSQ0hBUigxMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgdmFsaWRfdmFsdWVzIAkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzYW1wbGVfdmFsdWUgCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGRlZmluaXRpb24gCQlMT05HVEVYVCBOT1QgTlVMTCwNCisgIGRlc2NyaXB0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB0YWdzIAkJCUxPTkdURVhUIE5PVCBOVUxMLCAgDQorICBjcmVhdGlvbl9kYXRlIAlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgdXBkYXRlZF9ieSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIHByaW1hcnkga2V5IFBLX1JFU09VUkNFX0RJQ1RJT05BUlkgKG5hbWUpLA0KKyAgSU5ERVggSVhfUkVTT1VSQ0VfRElDVElPTkFSWSAobmFtZSkNCispIEVOR0lORT1Jbm5vREI7DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9jc3MvcHJpbnQuY3NzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9jc3MvcHJpbnQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNDFmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy9wcmludC5jc3MKQEAgLTAsMCArMSBAQAorLnN3YWdnZXItc2VjdGlvbiBwcmUgY29kZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6LjVlbTtiYWNrZ3JvdW5kOiNmMGYwZjB9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmNsb2p1cmUgLmJ1aWx0X2luLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5saXNwIC50aXRsZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAubmdpbnggLnRpdGxlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zdWJzdCwuc3dhZ2dlci1zZWN0aW9uIHByZSAudGFnIC50aXRsZSwuc3dhZ2dlci1zZWN0aW9uIHByZSBjb2Rle2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmFkZGl0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hZ2dyZWdhdGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmFwYWNoZSAuY2JyYWNrZXQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmFwYWNoZSAudGFnLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5iYXNoIC52YXJpYWJsZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuY29uc3RhbnQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmRqYW5nbyAudmFyaWFibGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmVybGFuZ19yZXBsIC5mdW5jdGlvbl9vcl9hdG9tLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5mbG93LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAuaGVhZGVyLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5wYXJlbnQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnByZXByb2Nlc3Nvciwuc3dhZ2dlci1zZWN0aW9uIHByZSAucnVieSAuc3ltYm9sLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5ydWJ5IC5zeW1ib2wgLnN0cmluZywuc3dhZ2dlci1zZWN0aW9uIHByZSAucnVsZXMgLnZhbHVlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5ydWxlcyAudmFsdWUgLm51bWJlciwuc3dhZ2dlci1zZWN0aW9uIHByZSAuc21hbGx0YWxrIC5jbGFzcywuc3dhZ2dlci1zZWN0aW9uIHByZSAuc3RyZWFtLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zdHJpbmcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRhZyAudmFsdWUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRlbXBsYXRlX3RhZywuc3dhZ2dlci1zZWN0aW9uIHByZSAudGV4IC5jb21tYW5kLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50ZXggLnNwZWNpYWwsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRpdGxle2NvbG9yOiM4MDB9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmFubm90YXRpb24sLnN3YWdnZXItc2VjdGlvbiBwcmUgLmNodW5rLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jb21tZW50LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5kaWZmIC5oZWFkZXIsLnN3YWdnZXItc2VjdGlvbiBwcmUgLm1hcmtkb3duIC5ibG9ja3F1b3RlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50ZW1wbGF0ZV9jb21tZW50e2NvbG9yOiM4ODh9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmNoYW5nZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZGF0ZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZ28gLmNvbnN0YW50LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5saXRlcmFsLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAuYnVsbGV0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAubGlua191cmwsLnN3YWdnZXItc2VjdGlvbiBwcmUgLm51bWJlciwuc3dhZ2dlci1zZWN0aW9uIHByZSAucmVnZXhwLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zbWFsbHRhbGsgLmNoYXIsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnNtYWxsdGFsayAuc3ltYm9se2NvbG9yOiMwODB9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmFwYWNoZSAuc3FicmFja2V0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hcnJheSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuYXR0cl9zZWxlY3Rvciwuc3dhZ2dlci1zZWN0aW9uIHByZSAuY2xvanVyZSAuYXR0cmlidXRlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jb2ZmZWVzY3JpcHQgLnByb3BlcnR5LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5kZWNvcmF0b3IsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmRlbGV0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5kb2N0eXBlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5lbnZ2YXIsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmVybGFuZ19yZXBsIC5yZXNlcnZlZCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZmlsdGVyIC5hcmd1bWVudCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuaW1wb3J0YW50LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5qYXZhZG9jLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5sYWJlbCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubG9jYWx2YXJzLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAubGlua19sYWJlbCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubmdpbnggLmJ1aWx0X2luLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5waSwuc3dhZ2dlci1zZWN0aW9uIHByZSAucHJvbXB0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5wc2V1ZG8sLnN3YWdnZXItc2VjdGlvbiBwcmUgLnJ1YnkgLnN0cmluZywuc3dhZ2dlci1zZWN0aW9uIHByZSAuc2hlYmFuZywuc3dhZ2dlci1zZWN0aW9uIHByZSAudGV4IC5mb3JtdWxhLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC52aGRsIC5hdHRyaWJ1dGV7Y29sb3I6Izg4Zn0uc3dhZ2dlci1zZWN0aW9uIHByZSAuYWdncmVnYXRlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hcGFjaGUgLnRhZywuc3dhZ2dlci1zZWN0aW9uIHByZSAuYmFzaCAudmFyaWFibGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmJ1aWx0X2luLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jc3MgLnRhZywuc3dhZ2dlci1zZWN0aW9uIHByZSAuZ28gLnR5cGVuYW1lLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5pZCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuamF2YWRvY3RhZywuc3dhZ2dlci1zZWN0aW9uIHByZSAua2V5d29yZCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLnN0cm9uZywuc3dhZ2dlci1zZWN0aW9uIHByZSAucGhwZG9jLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5yZXF1ZXN0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zbWFsbHRhbGsgLmNsYXNzLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zdGF0dXMsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRleCAuY29tbWFuZCwuc3dhZ2dlci1zZWN0aW9uIHByZSAudGl0bGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLndpbnV0aWxzLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC55YXJkb2N0YWd7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAuZW1waGFzaXN7Zm9udC1zdHlsZTppdGFsaWN9LnN3YWdnZXItc2VjdGlvbiBwcmUgLm5naW54IC5idWlsdF9pbntmb250LXdlaWdodDo0MDB9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmNvZmZlZXNjcmlwdCAuamF2YXNjcmlwdCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuamF2YXNjcmlwdCAueG1sLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50ZXggLmZvcm11bGEsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnhtbCAuY2RhdGEsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnhtbCAuY3NzLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC54bWwgLmphdmFzY3JpcHQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnhtbCAudmJzY3JpcHR7b3BhY2l0eTouNX0uc3dhZ2dlci1zZWN0aW9uIC5obGpze2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmc6LjVlbTtiYWNrZ3JvdW5kOiNmMGYwZjB9LnN3YWdnZXItc2VjdGlvbiAuaGxqcywuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXN1YnN0e2NvbG9yOiM0NDR9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1hdHRyaWJ1dGUsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1kb2N0YWcsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1rZXl3b3JkLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtbWV0YS1rZXl3b3JkLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtbmFtZSwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXNlbGVjdG9yLXRhZ3tmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1hZGRpdGlvbiwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLWJ1aWx0X2luLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtYnVsbGV0LC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtY29kZSwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLWxpdGVyYWx7Y29sb3I6IzFmODExZn0uc3dhZ2dlci1zZWN0aW9uIC5obGpzLWxpbmssLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1yZWdleHAsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zZWxlY3Rvci1hdHRyLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc2VsZWN0b3ItcHNldWRvLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc3ltYm9sLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy12YXJpYWJsZXtjb2xvcjojYmM2MDYwfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtZGVsZXRpb24sLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1udW1iZXIsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1xdW90ZSwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXNlbGVjdG9yLWNsYXNzLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc2VsZWN0b3ItaWQsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zdHJpbmcsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy10ZW1wbGF0ZS10YWcsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy10eXBle2NvbG9yOiM4MDB9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zZWN0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtdGl0bGV7Y29sb3I6IzgwMDtmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1jb21tZW50e2NvbG9yOiM4ODh9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1tZXRhe2NvbG9yOiMyYjZlYTF9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1lbXBoYXNpc3tmb250LXN0eWxlOml0YWxpY30uc3dhZ2dlci1zZWN0aW9uIC5obGpzLXN0cm9uZ3tmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwe2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO21pbi13aWR0aDo3NjBweDttYXgtd2lkdGg6OTYwcHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYiwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgc3Ryb25ne2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjtmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGJsb2NrcXVvdGUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHF7cXVvdGVzOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHB7bGluZS1oZWlnaHQ6MS40ZW07cGFkZGluZzowIDAgMTBweDtjb2xvcjojMzMzfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBibG9ja3F1b3RlOmFmdGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBibG9ja3F1b3RlOmJlZm9yZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgcTphZnRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgcTpiZWZvcmV7Y29udGVudDpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnUgaDEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5oZWFkaW5nX3dpdGhfbWVudSBoMiwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51IGgzLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnUgaDQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5oZWFkaW5nX3dpdGhfbWVudSBoNSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51IGg2e2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpsZWZ0Oy1tcy1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjYwJX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxlIHRoZWFkIHRyIHRoe3BhZGRpbmc6NXB4O2ZvbnQtc2l6ZTouOWVtO2NvbG9yOiM2NjY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzk5OX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdGFibGUgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZHtib3JkZXItYm90dG9tOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxlIHRib2R5IHRyLm9mZnNldHtiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxlIHRib2R5IHRyIHRke3BhZGRpbmc6NnB4O2ZvbnQtc2l6ZTouOWVtO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7dmVydGljYWwtYWxpZ246dG9wO2xpbmUtaGVpZ2h0OjEuM2VtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBvbHttYXJnaW46MCAwIDEwcHg7cGFkZGluZzowIDAgMCAxOHB4O2xpc3Qtc3R5bGUtdHlwZTpkZWNpbWFsfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBvbCBsaXtwYWRkaW5nOjVweCAwO2ZvbnQtc2l6ZTouOWVtO2NvbG9yOiMzMzN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIG9sLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bHtsaXN0LXN0eWxlOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgxIGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgyIGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgzIGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg0IGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg1IGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg2IGF7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgxIGE6aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgyIGE6aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgzIGE6aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg0IGE6aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg1IGE6aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg2IGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDEgc3Bhbi5kaXZpZGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMiBzcGFuLmRpdmlkZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgzIHNwYW4uZGl2aWRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDQgc3Bhbi5kaXZpZGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNSBzcGFuLmRpdmlkZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg2IHNwYW4uZGl2aWRlcntjb2xvcjojYWFhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBhe2NvbG9yOiM1NDdmMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGEgaW1ne2JvcmRlcjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBhcnRpY2xlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBhc2lkZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZGV0YWlscywuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZmlnY2FwdGlvbiwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZmlndXJlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb290ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGhlYWRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaGdyb3VwLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBtZW51LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBuYXYsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHNlY3Rpb24sLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHN1bW1hcnl7ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgcHJle2ZvbnQtZmFtaWx5OkFub255bW91cyBQcm8sTWVubG8sQ29uc29sYXMsQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y2ZGI7Ym9yZGVyOjFweCBzb2xpZCAjZTVlMGM2O3BhZGRpbmc6MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgcHJlIGNvZGV7bGluZS1oZWlnaHQ6MS42ZW07YmFja2dyb3VuZDpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuY29udGVudD4uY29udGVudC10eXBlPmRpdj5sYWJlbHtjbGVhcjpib3RoO2Rpc3BsYXk6YmxvY2s7Y29sb3I6IzBmNmFiNDtmb250LXNpemU6MS4xZW07bWFyZ2luOjA7cGFkZGluZzoxNXB4IDAgNXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuY29udGVudCBwcmV7Zm9udC1zaXplOjEycHg7bWFyZ2luLXRvcDo1cHg7cGFkZGluZzo1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pY29uLWJ0bntjdXJzb3I6cG9pbnRlcn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmluZm9fdGl0bGV7cGFkZGluZy1ib3R0b206MTBweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjI1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5mb290ZXJ7bWFyZ2luLXRvcDoyMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBkaXYuYmlnIHAsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHAuYmlne2ZvbnQtc2l6ZToxZW07bWFyZ2luLWJvdHRvbToxMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZ1bGx3aWR0aCBvbCBsaS5udW1lcmljIGlucHV0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZ1bGx3aWR0aCBvbCBsaS5zdHJpbmcgaW5wdXQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZnVsbHdpZHRoIG9sIGxpLnRleHQgdGV4dGFyZWEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZnVsbHdpZHRoIG9sIGxpLnVybCBpbnB1dHt3aWR0aDo1MDBweCFpbXBvcnRhbnR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX2xpY2Vuc2UsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX3Rvc3twYWRkaW5nLWJvdHRvbTo1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tZXNzYWdlLWZhaWx7Y29sb3I6I2MwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmluZm9fZW1haWwsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX25hbWUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX3VybHtwYWRkaW5nLWJvdHRvbTo1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX2Rlc2NyaXB0aW9ue3BhZGRpbmctYm90dG9tOjEwcHg7Zm9udC1zaXplOjE1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBvbCBsaSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIHVsIGxpe3BhZGRpbmc6M3B4IDA7bGluZS1oZWlnaHQ6MS40ZW07Y29sb3I6IzMzM30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5udW1lcmljIGlucHV0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLnN0cmluZyBpbnB1dCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS51cmwgaW5wdXR7ZGlzcGxheTpibG9jaztwYWRkaW5nOjRweDt3aWR0aDphdXRvO2NsZWFyOmJvdGh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkubnVtZXJpYyBpbnB1dC50aXRsZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5zdHJpbmcgaW5wdXQudGl0bGUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkudXJsIGlucHV0LnRpdGxle2ZvbnQtc2l6ZToxLjNlbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdGFibGUuZnVsbHdpZHRoe3dpZHRoOjEwMCV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmV7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW07bGluZS1oZWlnaHQ6MS41ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLnNpZ25hdHVyZS1uYXYgYXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojYWFhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5zaWduYXR1cmUtbmF2IGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5zaWduYXR1cmUtbmF2IC5zZWxlY3RlZHtjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5wcm9wVHlwZXtjb2xvcjojNTVhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIHByZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgcHJle2ZvbnQtc2l6ZTouODVlbTtsaW5lLWhlaWdodDoxLjJlbTtvdmVyZmxvdzphdXRvO2hlaWdodDoyMDBweDtyZXNpemU6dmVydGljYWw7Y3Vyc29yOnBvaW50ZXJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgdWwuc2lnbmF0dXJlLW5hdntkaXNwbGF5OmJsb2NrO21pbi13aWR0aDoyMzBweDttYXJnaW46MDtwYWRkaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgdWwuc2lnbmF0dXJlLW5hdiBsaTpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MDtib3JkZXItcmlnaHQ6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSB1bC5zaWduYXR1cmUtbmF2IGxpe2Zsb2F0OmxlZnQ7bWFyZ2luOjAgNXB4IDVweCAwO3BhZGRpbmc6MnB4IDVweCAycHggMDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLnByb3BPcHR7Y29sb3I6IzU1NX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuc25pcHBldCBzbWFsbHtmb250LXNpemU6Ljc1ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLnByb3BPcHRLZXl7Zm9udC1zdHlsZTppdGFsaWN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5zdHJvbmd7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwMDA7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIGRpdntmb250LXNpemU6LjllbTtsaW5lLWhlaWdodDoxLjVlbTttYXJnaW4tbGVmdDoxZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5zdHJvbmdlcntmb250LXdlaWdodDo3MDA7Y29sb3I6IzAwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gLnByb3BXcmFwIC5vcHRpb25zV3JhcHBlcntib3JkZXItc3BhY2luZzowO3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNiYmI7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxMXB4O21heC13aWR0aDo0MDBweDtsaW5lLWhlaWdodDozMHB4O2NvbG9yOiMwMDA7cGFkZGluZzo1cHg7bWFyZ2luLWxlZnQ6MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gLnByb3BXcmFwIC5vcHRpb25zV3JhcHBlciB0aHt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2ZvbnQtc2l6ZToxMXB4O2NvbG9yOiM2NjY7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NXB4O2xpbmUtaGVpZ2h0OjE1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5wcm9wV3JhcCAub3B0aW9uc1dyYXBwZXIgLm9wdGlvbk5hbWV7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiAucHJvcERlc2MubWFya2Rvd24+cDpmaXJzdC1jaGlsZCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gLnByb3BEZXNjLm1hcmtkb3duPnA6bGFzdC1jaGlsZHtkaXNwbGF5OmlubGluZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gLnByb3BEZXNjLm1hcmtkb3duPnA6bm90KDpmaXJzdC1jaGlsZCk6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7Y29udGVudDoiIn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gc3BhbjpsYXN0LW9mLXR5cGUucHJvcERlc2MubWFya2Rvd24+cDpvbmx5LWNoaWxke21hcmdpbi1yaWdodDotM3B4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5wcm9wTmFtZXtmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLnNpZ25hdHVyZS1jb250YWluZXJ7Y2xlYXI6Ym90aH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmJvZHktdGV4dGFyZWF7d2lkdGg6MzAwcHg7aGVpZ2h0OjEwMHB4O2JvcmRlcjoxcHggc29saWQgI2FhYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIGxpIGNvZGUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBwIGNvZGV7Zm9udC1mYW1pbHk6QW5vbnltb3VzIFBybyxNZW5sbyxDb25zb2xhcyxCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2JhY2tncm91bmQtY29sb3I6I2YwZjBmMDtjb2xvcjojMDAwO3BhZGRpbmc6MXB4IDNweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLnJlcXVpcmVke2ZvbnQtd2VpZ2h0OjcwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmVkaXRvcl9ob2xkZXJ7Zm9udC1mYW1pbHk6QW5vbnltb3VzIFBybyxNZW5sbyxDb25zb2xhcyxCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2ZvbnQtc2l6ZTouOWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuZWRpdG9yX2hvbGRlciBsYWJlbHtmb250LXdlaWdodDo0MDAhaW1wb3J0YW50fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuZWRpdG9yX2hvbGRlciBsYWJlbC5yZXF1aXJlZHtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBpbnB1dC5wYXJhbWV0ZXJ7d2lkdGg6MzAwcHg7Ym9yZGVyOjFweCBzb2xpZCAjYWFhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMXtjb2xvcjojMDAwO2ZvbnQtc2l6ZToxLjVlbTtsaW5lLWhlaWdodDoxLjNlbTtwYWRkaW5nOjEwcHggMDtmb250LWZhbWlseTpEcm9pZCBTYW5zLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnV7ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnUgdWx7ZGlzcGxheTpibG9jaztjbGVhcjpub25lO2Zsb2F0OnJpZ2h0Oy1tcy1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbi10b3A6MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDJ7Y29sb3I6IzAwMDtmb250LXNpemU6MS4zZW07cGFkZGluZzoxMHB4IDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgyIGF7Y29sb3I6IzAwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDIgc3Bhbi5zdWJ7Zm9udC1zaXplOi43ZW07Y29sb3I6Izk5OTtmb250LXN0eWxlOml0YWxpY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDIgc3Bhbi5zdWIgYXtjb2xvcjojNzc3fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBzcGFuLndlYWt7Y29sb3I6IzY2Nn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1lc3NhZ2Utc3VjY2Vzc3tjb2xvcjojODliZjA0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBjYXB0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB0ZCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdGh7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0OjQwMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5jb2Rle2ZvbnQtZmFtaWx5OkFub255bW91cyBQcm8sTWVubG8sQ29uc29sYXMsQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS50ZXh0IHRleHRhcmVhe2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjtoZWlnaHQ6MjUwcHg7cGFkZGluZzo0cHg7ZGlzcGxheTpibG9jaztjbGVhcjpib3RofS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLnNlbGVjdCBzZWxlY3R7ZGlzcGxheTpibG9jaztjbGVhcjpib3RofS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLmJvb2xlYW57ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLmJvb2xlYW4gbGFiZWx7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NsZWFyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLmJvb2xlYW4gaW5wdXR7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O2NsZWFyOm5vbmU7bWFyZ2luOjAgNXB4IDAgMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5yZXF1aXJlZCBsYWJlbHtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpIGxhYmVse2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aDt3aWR0aDphdXRvO3BhZGRpbmc6MCAwIDNweDtjb2xvcjojNjY2fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpIGxhYmVsIGFiYnJ7cGFkZGluZy1sZWZ0OjNweDtjb2xvcjojODg4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpIHAuaW5saW5lLWhpbnRze21hcmdpbi1sZWZ0OjA7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1zaXplOi45ZW07bWFyZ2luOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5idXR0b25ze21hcmdpbjowO3BhZGRpbmc6MH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgc3Bhbi5ibGFuaywuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgc3Bhbi5lbXB0eXtjb2xvcjojODg4O2ZvbnQtc3R5bGU6aXRhbGljfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWFya2Rvd24gaDN7Y29sb3I6IzU0N2YwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIGg0e2NvbG9yOiM2NjZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBwcmV7Zm9udC1mYW1pbHk6QW5vbnltb3VzIFBybyxNZW5sbyxDb25zb2xhcyxCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO2JhY2tncm91bmQtY29sb3I6I2ZjZjZkYjtib3JkZXI6MXB4IHNvbGlkICNlNWUwYzY7cGFkZGluZzoxMHB4O21hcmdpbjowIDAgMTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIHByZSBjb2Rle2xpbmUtaGVpZ2h0OjEuNmVtO292ZXJmbG93OmF1dG99LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGRpdi5naXN0e21hcmdpbjoyMHB4IDAgMjVweCFpbXBvcnRhbnR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlc3tmb250LWZhbWlseTpEcm9pZCBTYW5zLHNhbnMtc2VyaWY7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UuYWN0aXZlIGRpdi5oZWFkaW5nIGgyIGEsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZTpob3ZlciBkaXYuaGVhZGluZyBoMiBhe2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZS5hY3RpdmUgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2U6aG92ZXIgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiM1NTV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5ne2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9uc3tvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpyaWdodDttYXJnaW46MTRweCAxMHB4IDAgMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7ZmxvYXQ6bGVmdDtjbGVhcjpub25lO21hcmdpbjowO3BhZGRpbmc6MnB4IDEwcHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2NvbG9yOiM2NjY7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7Y29sb3I6I2FhYTt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGEuYWN0aXZlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhOmFjdGl2ZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaS5maXJzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGk6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmxhc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDowO2JvcmRlci1yaWdodDpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucy5maXJzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnM6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyBoMntjb2xvcjojOTk5O3BhZGRpbmctbGVmdDowO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpsZWZ0O2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjtmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyBoMiBhe2NvbG9yOiM5OTl9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyBoMiBhOmhvdmVye2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb257ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO21hcmdpbjowIDAgMTBweDtwYWRkaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmd7ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrO21hcmdpbjowO3BhZGRpbmc6MH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoM3tkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDt3aWR0aDphdXRvO21hcmdpbjowO3BhZGRpbmc6MDtsaW5lLWhlaWdodDoxLjFlbTtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIGgzIHNwYW4ucGF0aHtwYWRkaW5nLWxlZnQ6MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoMyBzcGFuLnBhdGggYXtjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIGgzIHNwYW4ucGF0aCBhLnRvZ2dsZU9wZXJhdGlvbi5kZXByZWNhdGVke3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgaDMgc3Bhbi5wYXRoIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NTBweDtmb250LXNpemU6LjdlbTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjdweCAwIDRweDtib3JkZXItcmFkaXVzOjJweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoMyBzcGFue21hcmdpbjowO3BhZGRpbmc6MH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyB1bC5vcHRpb25ze292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7ZGlzcGxheTpibG9jaztjbGVhcjpub25lO2Zsb2F0OnJpZ2h0O21hcmdpbjo2cHggMTBweCAwIDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaXtmbG9hdDpsZWZ0O2NsZWFyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzoycHggMTBweDtmb250LXNpemU6LjllbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhIC5tYXJrZG93biBwe2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO2xpbmUtaGVpZ2h0OmluaGVyaXR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhIC5uaWNrbmFtZXtjb2xvcjojYWFhO3BhZGRpbmc6MDtsaW5lLWhlaWdodDppbmhlcml0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkuYWNjZXNze2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnR7Ym9yZGVyLXRvcDpub25lO3BhZGRpbmc6MTBweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7bWFyZ2luOjAgMCAyMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50IGg0e2ZvbnQtc2l6ZToxLjFlbTttYXJnaW46MDtwYWRkaW5nOjE1cHggMCA1cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVye2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtwYWRkaW5nOjRweCAwIDAgMTBweDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6LjllbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgaW5wdXQuc3VibWl0e2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpsZWZ0O3BhZGRpbmc6NnB4IDhweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgc3Bhbi5yZXNwb25zZV90aHJvYmJlcntiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWFnZXMvdGhyb2JiZXIuZ2lmKTt3aWR0aDoxMjhweDtoZWlnaHQ6MTZweDtkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6cmlnaHR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZm9ybSBpbnB1dFt0eXBlPXRleHRdLmVycm9ye291dGxpbmU6MnB4IHNvbGlkICMwMDA7b3V0bGluZS1jb2xvcjojYzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50IGZvcm0gc2VsZWN0W25hbWU9cGFyYW1ldGVyQ29udGVudFR5cGVde21heC13aWR0aDozMDBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBkaXYucmVzcG9uc2UgZGl2LmJsb2NrIHByZXtmb250LWZhbWlseTpBbm9ueW1vdXMgUHJvLE1lbmxvLENvbnNvbGFzLEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7cGFkZGluZzoxMHB4O2ZvbnQtc2l6ZTouOWVtO21heC1oZWlnaHQ6NDAwcHg7b3ZlcmZsb3cteTphdXRvfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuaGVhZGluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmOWYyZTk7Ym9yZGVyOjFweCBzb2xpZCAjZjBlMGNhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7YmFja2dyb3VuZC1jb2xvcjojYzU4NjJifS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2YwZTBjYTtjb2xvcjojYzU4NjJifS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7Y29sb3I6I2M1ODYyYn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZmFmNWVlO2JvcmRlcjoxcHggc29saWQgI2YwZTBjYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmNvbnRlbnQgaDR7Y29sb3I6I2M1ODYyYn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGF7Y29sb3I6I2RjYjY3Zn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2ZjZmZjZDtib3JkZXI6MXB4IHNvbGlkICMwMDA7Ym9yZGVyLWNvbG9yOiNmZmQyMGZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JhY2tncm91bmQtY29sb3I6I2ZmZDIwZn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2JvcmRlci1yaWdodC1jb2xvcjojZmZkMjBmO2NvbG9yOiNmZmQyMGZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7Y29sb3I6I2ZmZDIwZn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2ZjZmZjZDtib3JkZXI6MXB4IHNvbGlkICMwMDA7Ym9yZGVyLWNvbG9yOiNmZmQyMGZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuY29udGVudCBoNHtjb2xvcjojZmZkMjBmfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGF7Y29sb3I6IzZmYzk5Mn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZjVlOGU4O2JvcmRlcjoxcHggc29saWQgI2U4YzZjN30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmhlYWRpbmcgaDMgc3Bhbi5odHRwX21ldGhvZCBhe3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtiYWNrZ3JvdW5kLWNvbG9yOiNhNDFlMjJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2JvcmRlci1yaWdodC1jb2xvcjojZThjNmM3O2NvbG9yOiNhNDFlMjJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojYTQxZTIyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmN2VkZWQ7Ym9yZGVyOjFweCBzb2xpZCAjZThjNmM3fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuY29udGVudCBoNHtjb2xvcjojYTQxZTIyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtjb2xvcjojYzg3ODdhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZTdmNmVjO2JvcmRlcjoxcHggc29saWQgI2MzZThkMX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5oZWFkaW5nIGgzIHNwYW4uaHR0cF9tZXRob2QgYXtiYWNrZ3JvdW5kLWNvbG9yOiMxMGE1NGF9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2MzZThkMTtjb2xvcjojMTBhNTRhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiMxMGE1NGF9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmY3ZjA7Ym9yZGVyOjFweCBzb2xpZCAjYzNlOGQxfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmNvbnRlbnQgaDR7Y29sb3I6IzEwYTU0YX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlciBhe2NvbG9yOiM2ZmM5OTJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZmNlOWUzO2JvcmRlcjoxcHggc29saWQgI2Y1ZDVjM30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7YmFja2dyb3VuZC1jb2xvcjojZDM4MDQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2JvcmRlci1yaWdodC1jb2xvcjojZjBjZWNiO2NvbG9yOiNkMzgwNDJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiNkMzgwNDJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZmFmMGVmO2JvcmRlcjoxcHggc29saWQgI2YwY2VjYn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuY29udGVudCBoNHtjb2xvcjojZDM4MDQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlciBhe2NvbG9yOiNkY2I2N2Z9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2U3ZjBmNztib3JkZXI6MXB4IHNvbGlkICNjM2Q5ZWN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5nIGgzIHNwYW4uaHR0cF9tZXRob2QgYXtiYWNrZ3JvdW5kLWNvbG9yOiMwZjZhYjR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkO2JvcmRlci1yaWdodC1jb2xvcjojYzNkOWVjO2NvbG9yOiMwZjZhYjR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmYzZjk7Ym9yZGVyOjFweCBzb2xpZCAjYzNkOWVjfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuY29udGVudCBoNHtjb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtjb2xvcjojNmZhNWQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLm9wdGlvbnMgZGl2LmhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZTdmMGY3O2JvcmRlcjoxcHggc29saWQgI2MzZDllY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5vcHRpb25zIGRpdi5oZWFkaW5nIGgzIHNwYW4uaHR0cF9tZXRob2QgYXtiYWNrZ3JvdW5kLWNvbG9yOiMwZjZhYjR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ub3B0aW9ucyBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2MzZDllYztjb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLm9wdGlvbnMgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiMwZjZhYjR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ub3B0aW9ucyBkaXYuY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmYzZjk7Ym9yZGVyOjFweCBzb2xpZCAjYzNkOWVjfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLm9wdGlvbnMgZGl2LmNvbnRlbnQgaDR7Y29sb3I6IzBmNmFiNH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5vcHRpb25zIGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlciBhe2NvbG9yOiM2ZmE1ZDJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5jb250ZW50LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuY29udGVudCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5jb250ZW50LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5jb250ZW50LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmNvbnRlbnQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5jb250ZW50e2JvcmRlci10b3A6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaS5sYXN0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpOmxhc3QtY2hpbGQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkubGFzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5nZXQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaS5sYXN0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkubGFzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpOmxhc3QtY2hpbGQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmxhc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpOmxhc3QtY2hpbGQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkubGFzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MDtib3JkZXItcmlnaHQ6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIHVsLm9wdGlvbnMgbGkgYS5hY3RpdmUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyB1bC5vcHRpb25zIGxpIGE6YWN0aXZlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgdWwub3B0aW9ucyBsaSBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucy5maXJzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zOmZpcnN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgdWwub3B0aW9ucyBsaS5maXJzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIHVsLm9wdGlvbnMgbGk6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHAjY29sb3Bob257bWFyZ2luOjAgMTVweCA0MHB4O3BhZGRpbmc6MTBweCAwO2ZvbnQtc2l6ZTouOGVtO2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO2NvbG9yOiM5OTk7Zm9udC1zdHlsZTppdGFsaWN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHAjY29sb3Bob24gYXt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNTQ3ZjAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoM3tjb2xvcjojMDAwO2ZvbnQtc2l6ZToxLjFlbTtwYWRkaW5nOjEwcHggMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIG9sLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWFya2Rvd24gdWx7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO21hcmdpbjo1cHggMCAxMHB4O3BhZGRpbmc6MCAwIDAgMThweDtsaXN0LXN0eWxlLXR5cGU6ZGlzY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmYzZjk7Ym9yZGVyOjFweCBzb2xpZCAjYzNkOWVjO3BhZGRpbmc6MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveCBsYWJlbHtjb2xvcjojMGY2YWI0IWltcG9ydGFudH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveCBpbnB1dFt0eXBlPXN1Ym1pdF17ZGlzcGxheTpibG9jaztwYWRkaW5nOjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybV9ib3ggcC53ZWFre2ZvbnQtc2l6ZTouOGVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm1fYm94IHB7Zm9udC1zaXplOi45ZW07cGFkZGluZzowIDAgMTVweDtjb2xvcjojN2U3YjZkfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm1fYm94IHAgYXtjb2xvcjojNjQ2MjU3fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm1fYm94IHAgc3Ryb25ne2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5vcGVyYXRpb24tc3RhdHVzIHRkLm1hcmtkb3duPnA6bGFzdC1jaGlsZHtwYWRkaW5nLWJvdHRvbTowfS5zd2FnZ2VyLXNlY3Rpb24gLnRpdGxle2ZvbnQtc3R5bGU6Ym9sZH0uc3dhZ2dlci1zZWN0aW9uIC5zZWNvbmRhcnlfZm9ybXtkaXNwbGF5Om5vbmV9LnN3YWdnZXItc2VjdGlvbiAubWFpbl9pbWFnZXtkaXNwbGF5OmJsb2NrO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnN3YWdnZXItc2VjdGlvbiAub2F1dGhfYm9keXttYXJnaW4tbGVmdDoxMDBweDttYXJnaW4tcmlnaHQ6MTAwcHh9LnN3YWdnZXItc2VjdGlvbiAub2F1dGhfc3VibWl0e3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhvcml6ZS13cmFwcGVye21hcmdpbjoxNXB4IDAgMTBweH0uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemUtd3JhcHBlcl9vcGVyYXRpb257ZmxvYXQ6cmlnaHR9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplX19idG46aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcn0uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemVfX2J0bl9vcGVyYXRpb246aG92ZXIgLmF1dGhvcml6ZS1zY29wZXN7ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemUtc2NvcGVze3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbi10b3A6MjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NXB4O2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTNweDttYXgtd2lkdGg6MzAwcHg7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojMDAwO3BhZGRpbmc6NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhvcml6ZS1zY29wZXMgLmF1dGhvcml6ZV9fc2NvcGV7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplX19idG5fb3BlcmF0aW9ue2hlaWdodDoxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvZXhwbG9yZXJfaWNvbnMucG5nKSBuby1yZXBlYXR9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ2lue2JhY2tncm91bmQtcG9zaXRpb246MCAwO3dpZHRoOjE4cHg7bWFyZ2luLXRvcDotNnB4O21hcmdpbi1sZWZ0OjRweH0uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemVfX2J0bl9vcGVyYXRpb25fbG9nb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTMwcHggMDt3aWR0aDoxOHB4O21hcmdpbi10b3A6LTZweDttYXJnaW4tbGVmdDo0cHh9LnN3YWdnZXItc2VjdGlvbiAjYXV0aF9jb250YWluZXJ7Y29sb3I6I2ZmZjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXI6bm9uZTtwYWRkaW5nOjVweDt3aWR0aDo4N3B4O2hlaWdodDoxM3B4fS5zd2FnZ2VyLXNlY3Rpb24gI2F1dGhfY29udGFpbmVyIC5hdXRob3JpemVfX2J0bntjb2xvcjojZmZmfS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVye3BhZGRpbmc6MCAwIDEwcHg7bWFyZ2luLWJvdHRvbTo1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYztmb250LXNpemU6LjllbX0uc3dhZ2dlci1zZWN0aW9uIC5hdXRoX2NvbnRhaW5lciAuYXV0aF9fdGl0bGV7Y29sb3I6IzU0N2YwMDtmb250LXNpemU6MS4yZW19LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmJhc2ljX2F1dGhfX2xhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjYwcHh9LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmF1dGhfX2Rlc2NyaXB0aW9ue2NvbG9yOiM5OTk7bWFyZ2luLWJvdHRvbTo1cHh9LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmF1dGhfX2J1dHRvbnttYXJnaW4tdG9wOjEwcHg7aGVpZ2h0OjMwcHh9LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmtleV9hdXRoX19maWVsZHttYXJnaW46NXB4IDB9LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmtleV9hdXRoX19sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo2MHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1kaWFsb2d7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1kaWFsb2ctd3JhcHBlcnt6LWluZGV4OjI7d2lkdGg6NTAwcHg7YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6MjBweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6Izc3Nztwb3NpdGlvbjpmaXhlZDt0b3A6NTAlO2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKX0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nLXNoYWRvd3twb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvcGFjaXR5Oi4yO2JhY2tncm91bmQtY29sb3I6Z3JheTt6LWluZGV4OjF9LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLWRpYWxvZyAuYXBpLXBvcHVwLXRpdGxle2ZvbnQtc2l6ZToyNHB4O3BhZGRpbmc6MTBweCAwfS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1kaWFsb2cgLmVycm9yLW1zZ3twYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctYm90dG9tOjVweH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nIC5hcGktcG9wdXAtY29udGVudHttYXgtaGVpZ2h0OjUwMHB4O292ZXJmbG93LXk6YXV0b30uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nIC5hcGktcG9wdXAtYXV0aGJ0biwuc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nIC5hcGktcG9wdXAtY2FuY2Vse2hlaWdodDozMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1zY29wZXN7cGFkZGluZzoxMHB4IDIwcHh9LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLXNjb3BlcyBsaXtwYWRkaW5nOjVweCAwO2xpbmUtaGVpZ2h0OjIwcHh9LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLXNjb3BlcyBsaSBpbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1zY29wZXMgLmFwaS1zY29wZS1kZXNje3BhZGRpbmctbGVmdDoyMHB4O2ZvbnQtc3R5bGU6aXRhbGljfS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1hY3Rpb25ze3BhZGRpbmctdG9wOjEwcHh9LnN3YWdnZXItc2VjdGlvbiBmaWVsZHNldHtwYWRkaW5nLWJvdHRvbToxMHB4O3BhZGRpbmctbGVmdDoyMHB4fSNoZWFkZXJ7ZGlzcGxheTpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIHByZXttYXgtaGVpZ2h0Om5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5ib2R5LXRleHRhcmVhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBpbnB1dC5wYXJhbWV0ZXJ7d2lkdGg6MTAwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25ze2Rpc3BsYXk6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cywuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy9yZXNldC5jc3MgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy9yZXNldC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiNGMyOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvY3NzL3Jlc2V0LmNzcwpAQCAtMCwwICsxIEBACithLGFiYnIsYWNyb255bSxhZGRyZXNzLGFwcGxldCxhcnRpY2xlLGFzaWRlLGF1ZGlvLGIsYmlnLGJsb2NrcXVvdGUsYm9keSxjYW52YXMsY2FwdGlvbixjZW50ZXIsY2l0ZSxjb2RlLGRkLGRlbCxkZXRhaWxzLGRmbixkaXYsZGwsZHQsZW0sZW1iZWQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxodG1sLGksaWZyYW1lLGltZyxpbnMsa2JkLGxhYmVsLGxlZ2VuZCxsaSxtYXJrLG1lbnUsbmF2LG9iamVjdCxvbCxvdXRwdXQscCxwcmUscSxydWJ5LHMsc2FtcCxzZWN0aW9uLHNtYWxsLHNwYW4sc3RyaWtlLHN0cm9uZyxzdWIsc3VtbWFyeSxzdXAsdGFibGUsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdGltZSx0cix0dCx1LHVsLHZhcix2aWRlb3ttYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Zm9udC1zaXplOjEwMCU7Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfWFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxtZW51LG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2t9Ym9keXtsaW5lLWhlaWdodDoxfW9sLHVse2xpc3Qtc3R5bGU6bm9uZX1ibG9ja3F1b3RlLHF7cXVvdGVzOm5vbmV9YmxvY2txdW90ZTphZnRlcixibG9ja3F1b3RlOmJlZm9yZSxxOmFmdGVyLHE6YmVmb3Jle2NvbnRlbnQ6IiI7Y29udGVudDpub25lfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvY3NzL3NjcmVlbi5jc3MgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy9zY3JlZW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYzU3NzQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy9zY3JlZW4uY3NzCkBAIC0wLDAgKzEgQEAKKy5zd2FnZ2VyLXNlY3Rpb24gcHJlIGNvZGV7ZGlzcGxheTpibG9jaztwYWRkaW5nOi41ZW07YmFja2dyb3VuZDojZjBmMGYwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jbG9qdXJlIC5idWlsdF9pbiwuc3dhZ2dlci1zZWN0aW9uIHByZSAubGlzcCAudGl0bGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLm5naW54IC50aXRsZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuc3Vic3QsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRhZyAudGl0bGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgY29kZXtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hZGRpdGlvbiwuc3dhZ2dlci1zZWN0aW9uIHByZSAuYWdncmVnYXRlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hcGFjaGUgLmNicmFja2V0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hcGFjaGUgLnRhZywuc3dhZ2dlci1zZWN0aW9uIHByZSAuYmFzaCAudmFyaWFibGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmNvbnN0YW50LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5kamFuZ28gLnZhcmlhYmxlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5lcmxhbmdfcmVwbCAuZnVuY3Rpb25fb3JfYXRvbSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZmxvdywuc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLmhlYWRlciwuc3dhZ2dlci1zZWN0aW9uIHByZSAucGFyZW50LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5wcmVwcm9jZXNzb3IsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnJ1YnkgLnN5bWJvbCwuc3dhZ2dlci1zZWN0aW9uIHByZSAucnVieSAuc3ltYm9sIC5zdHJpbmcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnJ1bGVzIC52YWx1ZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAucnVsZXMgLnZhbHVlIC5udW1iZXIsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnNtYWxsdGFsayAuY2xhc3MsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnN0cmVhbSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuc3RyaW5nLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50YWcgLnZhbHVlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50ZW1wbGF0ZV90YWcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRleCAuY29tbWFuZCwuc3dhZ2dlci1zZWN0aW9uIHByZSAudGV4IC5zcGVjaWFsLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50aXRsZXtjb2xvcjojODAwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hbm5vdGF0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jaHVuaywuc3dhZ2dlci1zZWN0aW9uIHByZSAuY29tbWVudCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZGlmZiAuaGVhZGVyLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5tYXJrZG93biAuYmxvY2txdW90ZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAudGVtcGxhdGVfY29tbWVudHtjb2xvcjojODg4fS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jaGFuZ2UsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmRhdGUsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmdvIC5jb25zdGFudCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubGl0ZXJhbCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLmJ1bGxldCwuc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLmxpbmtfdXJsLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5udW1iZXIsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnJlZ2V4cCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuc21hbGx0YWxrIC5jaGFyLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5zbWFsbHRhbGsgLnN5bWJvbHtjb2xvcjojMDgwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5hcGFjaGUgLnNxYnJhY2tldCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuYXJyYXksLnN3YWdnZXItc2VjdGlvbiBwcmUgLmF0dHJfc2VsZWN0b3IsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmNsb2p1cmUgLmF0dHJpYnV0ZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuY29mZmVlc2NyaXB0IC5wcm9wZXJ0eSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZGVjb3JhdG9yLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5kZWxldGlvbiwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZG9jdHlwZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuZW52dmFyLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5lcmxhbmdfcmVwbCAucmVzZXJ2ZWQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmZpbHRlciAuYXJndW1lbnQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmltcG9ydGFudCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuamF2YWRvYywuc3dhZ2dlci1zZWN0aW9uIHByZSAubGFiZWwsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmxvY2FsdmFycywuc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLmxpbmtfbGFiZWwsLnN3YWdnZXItc2VjdGlvbiBwcmUgLm5naW54IC5idWlsdF9pbiwuc3dhZ2dlci1zZWN0aW9uIHByZSAucGksLnN3YWdnZXItc2VjdGlvbiBwcmUgLnByb21wdCwuc3dhZ2dlci1zZWN0aW9uIHByZSAucHNldWRvLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5ydWJ5IC5zdHJpbmcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnNoZWJhbmcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRleCAuZm9ybXVsYSwuc3dhZ2dlci1zZWN0aW9uIHByZSAudmhkbCAuYXR0cmlidXRle2NvbG9yOiM4OGZ9LnN3YWdnZXItc2VjdGlvbiBwcmUgLmFnZ3JlZ2F0ZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuYXBhY2hlIC50YWcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmJhc2ggLnZhcmlhYmxlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5idWlsdF9pbiwuc3dhZ2dlci1zZWN0aW9uIHByZSAuY3NzIC50YWcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmdvIC50eXBlbmFtZSwuc3dhZ2dlci1zZWN0aW9uIHByZSAuaWQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmphdmFkb2N0YWcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmtleXdvcmQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLm1hcmtkb3duIC5zdHJvbmcsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnBocGRvYywuc3dhZ2dlci1zZWN0aW9uIHByZSAucmVxdWVzdCwuc3dhZ2dlci1zZWN0aW9uIHByZSAuc21hbGx0YWxrIC5jbGFzcywuc3dhZ2dlci1zZWN0aW9uIHByZSAuc3RhdHVzLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC50ZXggLmNvbW1hbmQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLnRpdGxlLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC53aW51dGlscywuc3dhZ2dlci1zZWN0aW9uIHByZSAueWFyZG9jdGFne2ZvbnQtd2VpZ2h0OjcwMH0uc3dhZ2dlci1zZWN0aW9uIHByZSAubWFya2Rvd24gLmVtcGhhc2lze2ZvbnQtc3R5bGU6aXRhbGljfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5uZ2lueCAuYnVpbHRfaW57Zm9udC13ZWlnaHQ6NDAwfS5zd2FnZ2VyLXNlY3Rpb24gcHJlIC5jb2ZmZWVzY3JpcHQgLmphdmFzY3JpcHQsLnN3YWdnZXItc2VjdGlvbiBwcmUgLmphdmFzY3JpcHQgLnhtbCwuc3dhZ2dlci1zZWN0aW9uIHByZSAudGV4IC5mb3JtdWxhLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC54bWwgLmNkYXRhLC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC54bWwgLmNzcywuc3dhZ2dlci1zZWN0aW9uIHByZSAueG1sIC5qYXZhc2NyaXB0LC5zd2FnZ2VyLXNlY3Rpb24gcHJlIC54bWwgLnZic2NyaXB0e29wYWNpdHk6LjV9LnN3YWdnZXItc2VjdGlvbiAuaGxqc3tkaXNwbGF5OmJsb2NrO292ZXJmbG93LXg6YXV0bztwYWRkaW5nOi41ZW07YmFja2dyb3VuZDojZjBmMGYwfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zdWJzdHtjb2xvcjojNDQ0fS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtYXR0cmlidXRlLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtZG9jdGFnLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMta2V5d29yZCwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLW1ldGEta2V5d29yZCwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLW5hbWUsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zZWxlY3Rvci10YWd7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtYWRkaXRpb24sLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1idWlsdF9pbiwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLWJ1bGxldCwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLWNvZGUsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1saXRlcmFse2NvbG9yOiMxZjgxMWZ9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1saW5rLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtcmVnZXhwLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc2VsZWN0b3ItYXR0ciwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXNlbGVjdG9yLXBzZXVkbywuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXN5bWJvbCwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtdmFyaWFibGV7Y29sb3I6I2JjNjA2MH0uc3dhZ2dlci1zZWN0aW9uIC5obGpzLWRlbGV0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtbnVtYmVyLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtcXVvdGUsLnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zZWxlY3Rvci1jbGFzcywuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXNlbGVjdG9yLWlkLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc3RyaW5nLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtdGVtcGxhdGUtdGFnLC5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtdHlwZXtjb2xvcjojODAwfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtc2VjdGlvbiwuc3dhZ2dlci1zZWN0aW9uIC5obGpzLXRpdGxle2NvbG9yOiM4MDA7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtY29tbWVudHtjb2xvcjojODg4fS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtbWV0YXtjb2xvcjojMmI2ZWExfS5zd2FnZ2VyLXNlY3Rpb24gLmhsanMtZW1waGFzaXN7Zm9udC1zdHlsZTppdGFsaWN9LnN3YWdnZXItc2VjdGlvbiAuaGxqcy1zdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcHtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjttaW4td2lkdGg6NzYwcHg7bWF4LXdpZHRoOjk2MHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHN0cm9uZ3tmb250LWZhbWlseTpEcm9pZCBTYW5zLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBibG9ja3F1b3RlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBxe3F1b3Rlczpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBwe2xpbmUtaGVpZ2h0OjEuNGVtO3BhZGRpbmc6MCAwIDEwcHg7Y29sb3I6IzMzM30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYmxvY2txdW90ZTphZnRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYmxvY2txdW90ZTpiZWZvcmUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHE6YWZ0ZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHE6YmVmb3Jle2NvbnRlbnQ6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51IGgxLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnUgaDIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5oZWFkaW5nX3dpdGhfbWVudSBoMywuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51IGg0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaGVhZGluZ193aXRoX21lbnUgaDUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5oZWFkaW5nX3dpdGhfbWVudSBoNntkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDo2MCV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB0YWJsZSB0aGVhZCB0ciB0aHtwYWRkaW5nOjVweDtmb250LXNpemU6LjllbTtjb2xvcjojNjY2O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5OTl9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxlIHRib2R5IHRyOmxhc3QtY2hpbGQgdGR7Ym9yZGVyLWJvdHRvbTpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB0YWJsZSB0Ym9keSB0ci5vZmZzZXR7YmFja2dyb3VuZC1jb2xvcjojZjBmMGYwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB0YWJsZSB0Ym9keSB0ciB0ZHtwYWRkaW5nOjZweDtmb250LXNpemU6LjllbTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO3ZlcnRpY2FsLWFsaWduOnRvcDtsaW5lLWhlaWdodDoxLjNlbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgb2x7bWFyZ2luOjAgMCAxMHB4O3BhZGRpbmc6MCAwIDAgMThweDtsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgb2wgbGl7cGFkZGluZzo1cHggMDtmb250LXNpemU6LjllbTtjb2xvcjojMzMzfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBvbCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWx7bGlzdC1zdHlsZTpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMSBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMiBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMyBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNCBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNSBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNiBhe3RleHQtZGVjb3JhdGlvbjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMSBhOmhvdmVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMiBhOmhvdmVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMyBhOmhvdmVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNCBhOmhvdmVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNSBhOmhvdmVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNiBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgxIHNwYW4uZGl2aWRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDIgc3Bhbi5kaXZpZGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMyBzcGFuLmRpdmlkZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGg0IHNwYW4uZGl2aWRlciwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDUgc3Bhbi5kaXZpZGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoNiBzcGFuLmRpdmlkZXJ7Y29sb3I6I2FhYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYXtjb2xvcjojNTQ3ZjAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBhIGltZ3tib3JkZXI6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYXJ0aWNsZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYXNpZGUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGRldGFpbHMsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZpZ2NhcHRpb24sLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZpZ3VyZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9vdGVyLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoZWFkZXIsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGhncm91cCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgbWVudSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgbmF2LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBzZWN0aW9uLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBzdW1tYXJ5e2Rpc3BsYXk6YmxvY2t9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHByZXtmb250LWZhbWlseTpBbm9ueW1vdXMgUHJvLE1lbmxvLENvbnNvbGFzLEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7YmFja2dyb3VuZC1jb2xvcjojZmNmNmRiO2JvcmRlcjoxcHggc29saWQgI2U1ZTBjNjtwYWRkaW5nOjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHByZSBjb2Rle2xpbmUtaGVpZ2h0OjEuNmVtO2JhY2tncm91bmQ6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmNvbnRlbnQ+LmNvbnRlbnQtdHlwZT5kaXY+bGFiZWx7Y2xlYXI6Ym90aDtkaXNwbGF5OmJsb2NrO2NvbG9yOiMwZjZhYjQ7Zm9udC1zaXplOjEuMWVtO21hcmdpbjowO3BhZGRpbmc6MTVweCAwIDVweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmNvbnRlbnQgcHJle2ZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6NXB4O3BhZGRpbmc6NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaWNvbi1idG57Y3Vyc29yOnBvaW50ZXJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX3RpdGxle3BhZGRpbmctYm90dG9tOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToyNXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuZm9vdGVye21hcmdpbi10b3A6MjBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZGl2LmJpZyBwLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBwLmJpZ3tmb250LXNpemU6MWVtO21hcmdpbi1ib3R0b206MTBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mdWxsd2lkdGggb2wgbGkubnVtZXJpYyBpbnB1dCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mdWxsd2lkdGggb2wgbGkuc3RyaW5nIGlucHV0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZ1bGx3aWR0aCBvbCBsaS50ZXh0IHRleHRhcmVhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZ1bGx3aWR0aCBvbCBsaS51cmwgaW5wdXR7d2lkdGg6NTAwcHghaW1wb3J0YW50fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaW5mb19saWNlbnNlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaW5mb190b3N7cGFkZGluZy1ib3R0b206NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWVzc2FnZS1mYWlse2NvbG9yOiNjMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5pbmZvX2VtYWlsLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaW5mb19uYW1lLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaW5mb191cmx7cGFkZGluZy1ib3R0b206NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuaW5mb19kZXNjcmlwdGlvbntwYWRkaW5nLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxNXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWFya2Rvd24gb2wgbGksLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biB1bCBsaXtwYWRkaW5nOjNweCAwO2xpbmUtaGVpZ2h0OjEuNGVtO2NvbG9yOiMzMzN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkubnVtZXJpYyBpbnB1dCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5zdHJpbmcgaW5wdXQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkudXJsIGlucHV0e2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo0cHg7d2lkdGg6YXV0bztjbGVhcjpib3RofS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLm51bWVyaWMgaW5wdXQudGl0bGUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkuc3RyaW5nIGlucHV0LnRpdGxlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuaW5wdXRzIG9sIGxpLnVybCBpbnB1dC50aXRsZXtmb250LXNpemU6MS4zZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRhYmxlLmZ1bGx3aWR0aHt3aWR0aDoxMDAlfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJle2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjtmb250LXNpemU6MWVtO2xpbmUtaGVpZ2h0OjEuNWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5zaWduYXR1cmUtbmF2IGF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6I2FhYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuc2lnbmF0dXJlLW5hdiBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y29sb3I6IzAwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuc2lnbmF0dXJlLW5hdiAuc2VsZWN0ZWR7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAucHJvcFR5cGV7Y29sb3I6IzU1YX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSBwcmU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZkfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIHByZXtmb250LXNpemU6Ljg1ZW07bGluZS1oZWlnaHQ6MS4yZW07b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MjAwcHg7cmVzaXplOnZlcnRpY2FsO2N1cnNvcjpwb2ludGVyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIHVsLnNpZ25hdHVyZS1uYXZ7ZGlzcGxheTpibG9jazttaW4td2lkdGg6MjMwcHg7bWFyZ2luOjA7cGFkZGluZzowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIHVsLnNpZ25hdHVyZS1uYXYgbGk6bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjA7Ym9yZGVyLXJpZ2h0Om5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgdWwuc2lnbmF0dXJlLW5hdiBsaXtmbG9hdDpsZWZ0O21hcmdpbjowIDVweCA1cHggMDtwYWRkaW5nOjJweCA1cHggMnB4IDA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5wcm9wT3B0e2NvbG9yOiM1NTV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLnNuaXBwZXQgc21hbGx7Zm9udC1zaXplOi43NWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5wcm9wT3B0S2V5e2ZvbnQtc3R5bGU6aXRhbGljfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiAuc3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDAwO2ZvbnQtc2l6ZTouOWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiBkaXZ7Zm9udC1zaXplOi45ZW07bGluZS1oZWlnaHQ6MS41ZW07bWFyZ2luLWxlZnQ6MWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiAuc3Ryb25nZXJ7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5wcm9wV3JhcCAub3B0aW9uc1dyYXBwZXJ7Ym9yZGVyLXNwYWNpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTFweDttYXgtd2lkdGg6NDAwcHg7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojMDAwO3BhZGRpbmc6NXB4O21hcmdpbi1sZWZ0OjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5wcm9wV3JhcCAub3B0aW9uc1dyYXBwZXIgdGh7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlcjoxcHggc29saWQgI2JiYjtmb250LXNpemU6MTFweDtjb2xvcjojNjY2O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjVweDtsaW5lLWhlaWdodDoxNXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiAucHJvcFdyYXAgLm9wdGlvbnNXcmFwcGVyIC5vcHRpb25OYW1le2ZvbnQtd2VpZ2h0OjcwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAuZGVzY3JpcHRpb24gLnByb3BEZXNjLm1hcmtkb3duPnA6Zmlyc3QtY2hpbGQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5wcm9wRGVzYy5tYXJrZG93bj5wOmxhc3QtY2hpbGR7ZGlzcGxheTppbmxpbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIC5wcm9wRGVzYy5tYXJrZG93bj5wOm5vdCg6Zmlyc3QtY2hpbGQpOmJlZm9yZXtkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uIHNwYW46bGFzdC1vZi10eXBlLnByb3BEZXNjLm1hcmtkb3duPnA6b25seS1jaGlsZHttYXJnaW4tcmlnaHQ6LTNweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1vZGVsLXNpZ25hdHVyZSAucHJvcE5hbWV7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubW9kZWwtc2lnbmF0dXJlIC5zaWduYXR1cmUtY29udGFpbmVye2NsZWFyOmJvdGh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5ib2R5LXRleHRhcmVhe3dpZHRoOjMwMHB4O2hlaWdodDoxMDBweDtib3JkZXI6MXB4IHNvbGlkICNhYWF9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBsaSBjb2RlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWFya2Rvd24gcCBjb2Rle2ZvbnQtZmFtaWx5OkFub255bW91cyBQcm8sTWVubG8sQ29uc29sYXMsQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Y29sb3I6IzAwMDtwYWRkaW5nOjFweCAzcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5yZXF1aXJlZHtmb250LXdlaWdodDo3MDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5lZGl0b3JfaG9sZGVye2ZvbnQtZmFtaWx5OkFub255bW91cyBQcm8sTWVubG8sQ29uc29sYXMsQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LXNpemU6LjllbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmVkaXRvcl9ob2xkZXIgbGFiZWx7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmVkaXRvcl9ob2xkZXIgbGFiZWwucmVxdWlyZWR7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaW5wdXQucGFyYW1ldGVye3dpZHRoOjMwMHB4O2JvcmRlcjoxcHggc29saWQgI2FhYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDF7Y29sb3I6IzAwMDtmb250LXNpemU6MS41ZW07bGluZS1oZWlnaHQ6MS4zZW07cGFkZGluZzoxMHB4IDA7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjcwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51e2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmhlYWRpbmdfd2l0aF9tZW51IHVse2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpyaWdodDstbXMtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tdG9wOjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgye2NvbG9yOiMwMDA7Zm9udC1zaXplOjEuM2VtO3BhZGRpbmc6MTBweCAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBoMiBhe2NvbG9yOiMwMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgyIHNwYW4uc3Vie2ZvbnQtc2l6ZTouN2VtO2NvbG9yOiM5OTk7Zm9udC1zdHlsZTppdGFsaWN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgyIHNwYW4uc3ViIGF7Y29sb3I6Izc3N30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgc3Bhbi53ZWFre2NvbG9yOiM2NjZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tZXNzYWdlLXN1Y2Nlc3N7Y29sb3I6Izg5YmYwNH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgY2FwdGlvbiwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdGQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHRoe3RleHQtYWxpZ246bGVmdDtmb250LXdlaWdodDo0MDA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAuY29kZXtmb250LWZhbWlseTpBbm9ueW1vdXMgUHJvLE1lbmxvLENvbnNvbGFzLEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2V9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkudGV4dCB0ZXh0YXJlYXtmb250LWZhbWlseTpEcm9pZCBTYW5zLHNhbnMtc2VyaWY7aGVpZ2h0OjI1MHB4O3BhZGRpbmc6NHB4O2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5zZWxlY3Qgc2VsZWN0e2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5ib29sZWFue2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5ib29sZWFuIGxhYmVse2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjbGVhcjpub25lO21hcmdpbjowO3BhZGRpbmc6MH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaS5ib29sZWFuIGlucHV0e2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjbGVhcjpub25lO21hcmdpbjowIDVweCAwIDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybXRhc3RpYyBmaWVsZHNldC5pbnB1dHMgb2wgbGkucmVxdWlyZWQgbGFiZWx7Y29sb3I6IzAwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaSBsYWJlbHtkaXNwbGF5OmJsb2NrO2NsZWFyOmJvdGg7d2lkdGg6YXV0bztwYWRkaW5nOjAgMCAzcHg7Y29sb3I6IzY2Nn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaSBsYWJlbCBhYmJye3BhZGRpbmctbGVmdDozcHg7Y29sb3I6Izg4OH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtdGFzdGljIGZpZWxkc2V0LmlucHV0cyBvbCBsaSBwLmlubGluZS1oaW50c3ttYXJnaW4tbGVmdDowO2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTouOWVtO21hcmdpbjowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm10YXN0aWMgZmllbGRzZXQuYnV0dG9uc3ttYXJnaW46MDtwYWRkaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHNwYW4uYmxhbmssLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHNwYW4uZW1wdHl7Y29sb3I6Izg4ODtmb250LXN0eWxlOml0YWxpY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIGgze2NvbG9yOiM1NDdmMDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBoNHtjb2xvcjojNjY2fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAubWFya2Rvd24gcHJle2ZvbnQtZmFtaWx5OkFub255bW91cyBQcm8sTWVubG8sQ29uc29sYXMsQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y2ZGI7Ym9yZGVyOjFweCBzb2xpZCAjZTVlMGM2O3BhZGRpbmc6MTBweDttYXJnaW46MCAwIDEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBwcmUgY29kZXtsaW5lLWhlaWdodDoxLjZlbTtvdmVyZmxvdzphdXRvfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBkaXYuZ2lzdHttYXJnaW46MjBweCAwIDI1cHghaW1wb3J0YW50fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXN7Zm9udC1mYW1pbHk6RHJvaWQgU2FucyxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouOWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2V7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlLmFjdGl2ZSBkaXYuaGVhZGluZyBoMiBhLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2U6aG92ZXIgZGl2LmhlYWRpbmcgaDIgYXtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UuYWN0aXZlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlOmhvdmVyIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojNTU1fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2U6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZ3tib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnN7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6cmlnaHQ7bWFyZ2luOjE0cHggMTBweCAwIDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2Zsb2F0OmxlZnQ7Y2xlYXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjJweCAxMHB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtjb2xvcjojNjY2O2ZvbnQtc2l6ZTouOWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiNhYWE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhLmFjdGl2ZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYTphY3RpdmUsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkuZmlyc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaS5sYXN0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxke3BhZGRpbmctcmlnaHQ6MDtib3JkZXItcmlnaHQ6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMuZmlyc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDJ7Y29sb3I6Izk5OTtwYWRkaW5nLWxlZnQ6MDtkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDtmb250LWZhbWlseTpEcm9pZCBTYW5zLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NzAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDIgYXtjb2xvcjojOTk5fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDIgYTpob3Zlcntjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9ue2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jazttYXJnaW46MCAwIDEwcHg7cGFkZGluZzowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5ne2Zsb2F0Om5vbmU7Y2xlYXI6Ym90aDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpibG9jazttYXJnaW46MDtwYWRkaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgaDN7ZGlzcGxheTpibG9jaztjbGVhcjpub25lO2Zsb2F0OmxlZnQ7d2lkdGg6YXV0bzttYXJnaW46MDtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6MS4xZW07Y29sb3I6IzAwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoMyBzcGFuLnBhdGh7cGFkZGluZy1sZWZ0OjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgaDMgc3Bhbi5wYXRoIGF7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyBoMyBzcGFuLnBhdGggYS50b2dnbGVPcGVyYXRpb24uZGVwcmVjYXRlZHt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIGgzIHNwYW4ucGF0aCBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgaDMgc3Bhbi5odHRwX21ldGhvZCBhe3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojZmZmO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjUwcHg7Zm9udC1zaXplOi43ZW07dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo3cHggMCA0cHg7Ym9yZGVyLXJhZGl1czoycHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgaDMgc3BhbnttYXJnaW46MDtwYWRkaW5nOjB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgdWwub3B0aW9uc3tvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6bm9uZTtmbG9hdDpyaWdodDttYXJnaW46NnB4IDEwcHggMCAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGl7ZmxvYXQ6bGVmdDtjbGVhcjpub25lO21hcmdpbjowO3BhZGRpbmc6MnB4IDEwcHg7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe3RleHQtZGVjb3JhdGlvbjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYSAubWFya2Rvd24gcHtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDtsaW5lLWhlaWdodDppbmhlcml0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYSAubmlja25hbWV7Y29sb3I6I2FhYTtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6aW5oZXJpdH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmFjY2Vzc3tjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50e2JvcmRlci10b3A6bm9uZTtwYWRkaW5nOjEwcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4O21hcmdpbjowIDAgMjBweH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBoNHtmb250LXNpemU6MS4xZW07bWFyZ2luOjA7cGFkZGluZzoxNXB4IDAgNXB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlcntmbG9hdDpub25lO2NsZWFyOmJvdGg7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2t9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGF7cGFkZGluZzo0cHggMCAwIDEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGlucHV0LnN1Ym1pdHtkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDtwYWRkaW5nOjZweCA4cHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIHNwYW4ucmVzcG9uc2VfdGhyb2JiZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1hZ2VzL3Rocm9iYmVyLmdpZik7d2lkdGg6MTI4cHg7aGVpZ2h0OjE2cHg7ZGlzcGxheTpibG9jaztjbGVhcjpub25lO2Zsb2F0OnJpZ2h0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50IGZvcm0gaW5wdXRbdHlwZT10ZXh0XS5lcnJvcntvdXRsaW5lOjJweCBzb2xpZCAjMDAwO291dGxpbmUtY29sb3I6I2MwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCBmb3JtIHNlbGVjdFtuYW1lPXBhcmFtZXRlckNvbnRlbnRUeXBlXXttYXgtd2lkdGg6MzAwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQgZGl2LnJlc3BvbnNlIGRpdi5ibG9jayBwcmV7Zm9udC1mYW1pbHk6QW5vbnltb3VzIFBybyxNZW5sbyxDb25zb2xhcyxCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sQ291cmllciBOZXcsbW9ub3NwYWNlO3BhZGRpbmc6MTBweDtmb250LXNpemU6LjllbTttYXgtaGVpZ2h0OjQwMHB4O292ZXJmbG93LXk6YXV0b30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZjlmMmU5O2JvcmRlcjoxcHggc29saWQgI2YwZTBjYX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmhlYWRpbmcgaDMgc3Bhbi5odHRwX21ldGhvZCBhe2JhY2tncm91bmQtY29sb3I6I2M1ODYyYn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmMGUwY2E7Y29sb3I6I2M1ODYyYn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wdXQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiNjNTg2MmJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2ZhZjVlZTtib3JkZXI6MXB4IHNvbGlkICNmMGUwY2F9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5jb250ZW50IGg0e2NvbG9yOiNjNTg2MmJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlciBhe2NvbG9yOiNkY2I2N2Z9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuaGVhZGluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmY2ZmY2Q7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1jb2xvcjojZmZkMjBmfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmhlYWRpbmcgaDMgc3Bhbi5odHRwX21ldGhvZCBhe3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmQyMGZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZDIwZjtjb2xvcjojZmZkMjBmfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaSBhe2NvbG9yOiNmZmQyMGZ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuY29udGVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmY2ZmY2Q7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1jb2xvcjojZmZkMjBmfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmhlYWQgZGl2LmNvbnRlbnQgaDR7Y29sb3I6I2ZmZDIwZn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5jb250ZW50IGRpdi5zYW5kYm94X2hlYWRlciBhe2NvbG9yOiM2ZmM5OTJ9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2Y1ZThlODtib3JkZXI6MXB4IHNvbGlkICNlOGM2Yzd9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5oZWFkaW5nIGgzIHNwYW4uaHR0cF9tZXRob2QgYXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7YmFja2dyb3VuZC1jb2xvcjojYTQxZTIyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2U4YzZjNztjb2xvcjojYTQxZTIyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7Y29sb3I6I2E0MWUyMn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZjdlZGVkO2JvcmRlcjoxcHggc29saWQgI2U4YzZjN30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmNvbnRlbnQgaDR7Y29sb3I6I2E0MWUyMn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGF7Y29sb3I6I2M4Nzg3YX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2U3ZjZlYztib3JkZXI6MXB4IHNvbGlkICNjM2U4ZDF9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7YmFja2dyb3VuZC1jb2xvcjojMTBhNTRhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjM2U4ZDE7Y29sb3I6IzEwYTU0YX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojMTBhNTRhfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZWJmN2YwO2JvcmRlcjoxcHggc29saWQgI2MzZThkMX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5jb250ZW50IGg0e2NvbG9yOiMxMGE1NGF9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucG9zdCBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtjb2xvcjojNmZjOTkyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2ZjZTllMztib3JkZXI6MXB4IHNvbGlkICNmNWQ1YzN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmhlYWRpbmcgaDMgc3Bhbi5odHRwX21ldGhvZCBhe2JhY2tncm91bmQtY29sb3I6I2QzODA0Mn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2YwY2VjYjtjb2xvcjojZDM4MDQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojZDM4MDQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBhdGNoIGRpdi5jb250ZW50e2JhY2tncm91bmQtY29sb3I6I2ZhZjBlZjtib3JkZXI6MXB4IHNvbGlkICNmMGNlY2J9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmNvbnRlbnQgaDR7Y29sb3I6I2QzODA0Mn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtjb2xvcjojZGNiNjdmfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuaGVhZGluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNlN2YwZjc7Ym9yZGVyOjFweCBzb2xpZCAjYzNkOWVjfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7YmFja2dyb3VuZC1jb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpe2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQtY29sb3I6I2MzZDllYztjb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpIGF7Y29sb3I6IzBmNmFiNH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5nZXQgZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZWJmM2Y5O2JvcmRlcjoxcHggc29saWQgI2MzZDllY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5nZXQgZGl2LmNvbnRlbnQgaDR7Y29sb3I6IzBmNmFiNH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5nZXQgZGl2LmNvbnRlbnQgZGl2LnNhbmRib3hfaGVhZGVyIGF7Y29sb3I6IzZmYTVkMn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5vcHRpb25zIGRpdi5oZWFkaW5ne2JhY2tncm91bmQtY29sb3I6I2U3ZjBmNztib3JkZXI6MXB4IHNvbGlkICNjM2Q5ZWN9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ub3B0aW9ucyBkaXYuaGVhZGluZyBoMyBzcGFuLmh0dHBfbWV0aG9kIGF7YmFja2dyb3VuZC1jb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLm9wdGlvbnMgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNjM2Q5ZWM7Y29sb3I6IzBmNmFiNH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5vcHRpb25zIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkgYXtjb2xvcjojMGY2YWI0fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLm9wdGlvbnMgZGl2LmNvbnRlbnR7YmFja2dyb3VuZC1jb2xvcjojZWJmM2Y5O2JvcmRlcjoxcHggc29saWQgI2MzZDllY30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5vcHRpb25zIGRpdi5jb250ZW50IGg0e2NvbG9yOiMwZjZhYjR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ub3B0aW9ucyBkaXYuY29udGVudCBkaXYuc2FuZGJveF9oZWFkZXIgYXtjb2xvcjojNmZhNWQyfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmRlbGV0ZSBkaXYuY29udGVudCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5nZXQgZGl2LmNvbnRlbnQsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uaGVhZCBkaXYuY29udGVudCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuY29udGVudCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wb3N0IGRpdi5jb250ZW50LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuY29udGVudHtib3JkZXItdG9wOm5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZGVsZXRlIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkubGFzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5kZWxldGUgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLmdldCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmxhc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24uZ2V0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGk6bGFzdC1jaGlsZCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGkubGFzdCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5oZWFkIGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGk6bGFzdC1jaGlsZCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIGxpLm9wZXJhdGlvbi5wYXRjaCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmxhc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucGF0Y2ggZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaS5sYXN0LC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnBvc3QgZGl2LmhlYWRpbmcgdWwub3B0aW9ucyBsaTpsYXN0LWNoaWxkLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgbGkub3BlcmF0aW9uLnB1dCBkaXYuaGVhZGluZyB1bC5vcHRpb25zIGxpLmxhc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyBsaS5vcGVyYXRpb24ucHV0IGRpdi5oZWFkaW5nIHVsLm9wdGlvbnMgbGk6bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjA7Ym9yZGVyLXJpZ2h0Om5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyB1bC5vcHRpb25zIGxpIGEuYWN0aXZlLC5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMgdWwub3B0aW9ucyBsaSBhOmFjdGl2ZSwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIHVsLm9wdGlvbnMgbGkgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLmVuZHBvaW50IHVsLm9wZXJhdGlvbnMuZmlyc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9uczpmaXJzdC1jaGlsZCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgdWwjcmVzb3VyY2VzIGxpLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5lbmRwb2ludCB1bC5vcGVyYXRpb25zIHVsLm9wdGlvbnMgbGkuZmlyc3QsLnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIHVsI3Jlc291cmNlcyBsaS5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkuZW5kcG9pbnQgdWwub3BlcmF0aW9ucyB1bC5vcHRpb25zIGxpOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDowfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBwI2NvbG9waG9ue21hcmdpbjowIDE1cHggNDBweDtwYWRkaW5nOjEwcHggMDtmb250LXNpemU6LjhlbTtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjtjb2xvcjojOTk5O2ZvbnQtc3R5bGU6aXRhbGljfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBwI2NvbG9waG9uIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzU0N2YwMH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgaDN7Y29sb3I6IzAwMDtmb250LXNpemU6MS4xZW07cGFkZGluZzoxMHB4IDB9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIC5tYXJrZG93biBvbCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLm1hcmtkb3duIHVse2ZvbnQtZmFtaWx5OkRyb2lkIFNhbnMsc2Fucy1zZXJpZjttYXJnaW46NXB4IDAgMTBweDtwYWRkaW5nOjAgMCAwIDE4cHg7bGlzdC1zdHlsZS10eXBlOmRpc2N9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybV9ib3h7YmFja2dyb3VuZC1jb2xvcjojZWJmM2Y5O2JvcmRlcjoxcHggc29saWQgI2MzZDllYztwYWRkaW5nOjEwcHh9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybV9ib3ggbGFiZWx7Y29sb3I6IzBmNmFiNCFpbXBvcnRhbnR9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGZvcm0uZm9ybV9ib3ggaW5wdXRbdHlwZT1zdWJtaXRde2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCBmb3JtLmZvcm1fYm94IHAud2Vha3tmb250LXNpemU6LjhlbX0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveCBwe2ZvbnQtc2l6ZTouOWVtO3BhZGRpbmc6MCAwIDE1cHg7Y29sb3I6IzdlN2I2ZH0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveCBwIGF7Y29sb3I6IzY0NjI1N30uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgZm9ybS5mb3JtX2JveCBwIHN0cm9uZ3tjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCAub3BlcmF0aW9uLXN0YXR1cyB0ZC5tYXJrZG93bj5wOmxhc3QtY2hpbGR7cGFkZGluZy1ib3R0b206MH0uc3dhZ2dlci1zZWN0aW9uIC50aXRsZXtmb250LXN0eWxlOmJvbGR9LnN3YWdnZXItc2VjdGlvbiAuc2Vjb25kYXJ5X2Zvcm17ZGlzcGxheTpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLm1haW5faW1hZ2V7ZGlzcGxheTpibG9jazttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvfS5zd2FnZ2VyLXNlY3Rpb24gLm9hdXRoX2JvZHl7bWFyZ2luLWxlZnQ6MTAwcHg7bWFyZ2luLXJpZ2h0OjEwMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLm9hdXRoX3N1Ym1pdHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9ja30uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemUtd3JhcHBlcnttYXJnaW46MTVweCAwIDEwcHh9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplLXdyYXBwZXJfb3BlcmF0aW9ue2Zsb2F0OnJpZ2h0fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhvcml6ZV9fYnRuOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXJ9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplX19idG5fb3BlcmF0aW9uOmhvdmVyIC5hdXRob3JpemUtc2NvcGVze2Rpc3BsYXk6YmxvY2t9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplLXNjb3Blc3twb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOjIwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjVweDtkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjEzcHg7bWF4LXdpZHRoOjMwMHB4O2xpbmUtaGVpZ2h0OjMwcHg7Y29sb3I6IzAwMDtwYWRkaW5nOjVweH0uc3dhZ2dlci1zZWN0aW9uIC5hdXRob3JpemUtc2NvcGVzIC5hdXRob3JpemVfX3Njb3Ble3RleHQtZGVjb3JhdGlvbjpub25lfS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhvcml6ZV9fYnRuX29wZXJhdGlvbntoZWlnaHQ6MThweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2VzL2V4cGxvcmVyX2ljb25zLnBuZykgbm8tcmVwZWF0fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhvcml6ZV9fYnRuX29wZXJhdGlvbl9sb2dpbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDt3aWR0aDoxOHB4O21hcmdpbi10b3A6LTZweDttYXJnaW4tbGVmdDo0cHh9LnN3YWdnZXItc2VjdGlvbiAuYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ291dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMHB4IDA7d2lkdGg6MThweDttYXJnaW4tdG9wOi02cHg7bWFyZ2luLWxlZnQ6NHB4fS5zd2FnZ2VyLXNlY3Rpb24gI2F1dGhfY29udGFpbmVye2NvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyOm5vbmU7cGFkZGluZzo1cHg7d2lkdGg6ODdweDtoZWlnaHQ6MTNweH0uc3dhZ2dlci1zZWN0aW9uICNhdXRoX2NvbnRhaW5lciAuYXV0aG9yaXplX19idG57Y29sb3I6I2ZmZn0uc3dhZ2dlci1zZWN0aW9uIC5hdXRoX2NvbnRhaW5lcntwYWRkaW5nOjAgMCAxMHB4O21hcmdpbi1ib3R0b206NXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7Zm9udC1zaXplOi45ZW19LnN3YWdnZXItc2VjdGlvbiAuYXV0aF9jb250YWluZXIgLmF1dGhfX3RpdGxle2NvbG9yOiM1NDdmMDA7Zm9udC1zaXplOjEuMmVtfS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVyIC5iYXNpY19hdXRoX19sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo2MHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVyIC5hdXRoX19kZXNjcmlwdGlvbntjb2xvcjojOTk5O21hcmdpbi1ib3R0b206NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVyIC5hdXRoX19idXR0b257bWFyZ2luLXRvcDoxMHB4O2hlaWdodDozMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVyIC5rZXlfYXV0aF9fZmllbGR7bWFyZ2luOjVweCAwfS5zd2FnZ2VyLXNlY3Rpb24gLmF1dGhfY29udGFpbmVyIC5rZXlfYXV0aF9fbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NjBweH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9ne3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6bm9uZX0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nLXdyYXBwZXJ7ei1pbmRleDoyO3dpZHRoOjUwMHB4O2JhY2tncm91bmQ6I2ZmZjtwYWRkaW5nOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM3Nzc7cG9zaXRpb246Zml4ZWQ7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLWRpYWxvZy1zaGFkb3d7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3BhY2l0eTouMjtiYWNrZ3JvdW5kLWNvbG9yOmdyYXk7ei1pbmRleDoxfS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1kaWFsb2cgLmFwaS1wb3B1cC10aXRsZXtmb250LXNpemU6MjRweDtwYWRkaW5nOjEwcHggMH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtZGlhbG9nIC5lcnJvci1tc2d7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLWJvdHRvbTo1cHh9LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLWRpYWxvZyAuYXBpLXBvcHVwLWNvbnRlbnR7bWF4LWhlaWdodDo1MDBweDtvdmVyZmxvdy15OmF1dG99LnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLWRpYWxvZyAuYXBpLXBvcHVwLWF1dGhidG4sLnN3YWdnZXItc2VjdGlvbiAuYXBpLXBvcHVwLWRpYWxvZyAuYXBpLXBvcHVwLWNhbmNlbHtoZWlnaHQ6MzBweH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtc2NvcGVze3BhZGRpbmc6MTBweCAyMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1zY29wZXMgbGl7cGFkZGluZzo1cHggMDtsaW5lLWhlaWdodDoyMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1wb3B1cC1zY29wZXMgbGkgaW5wdXR7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtc2NvcGVzIC5hcGktc2NvcGUtZGVzY3twYWRkaW5nLWxlZnQ6MjBweDtmb250LXN0eWxlOml0YWxpY30uc3dhZ2dlci1zZWN0aW9uIC5hcGktcG9wdXAtYWN0aW9uc3twYWRkaW5nLXRvcDoxMHB4fS5zd2FnZ2VyLXNlY3Rpb24gZmllbGRzZXR7cGFkZGluZy1ib3R0b206MTBweDtwYWRkaW5nLWxlZnQ6MjBweH0uc3dhZ2dlci1zZWN0aW9uIC5hY2Nlc3MsLnN3YWdnZXItc2VjdGlvbiAuYXV0aHtmbG9hdDpyaWdodH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktaWN7aGVpZ2h0OjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9leHBsb3Jlcl9pY29ucy5wbmcpIG5vLXJlcGVhdH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktaWMgLmFwaV9pbmZvcm1hdGlvbl9wYW5lbHtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tdG9wOjIwcHg7bWFyZ2luLWxlZnQ6LTVweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6NXB4O2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTNweDttYXgtd2lkdGg6MzAwcHg7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojMDAwO3BhZGRpbmc6NXB4fS5zd2FnZ2VyLXNlY3Rpb24gLmFwaS1pYyAuYXBpX2luZm9ybWF0aW9uX3BhbmVsIHAgLmFwaS1tc2ctZW5hYmxlZHtjb2xvcjpncmVlbn0uc3dhZ2dlci1zZWN0aW9uIC5hcGktaWMgLmFwaV9pbmZvcm1hdGlvbl9wYW5lbCBwIC5hcGktbXNnLWRpc2FibGVke2NvbG9yOnJlZH0uc3dhZ2dlci1zZWN0aW9uIC5hcGktaWM6aG92ZXIgLmFwaV9pbmZvcm1hdGlvbl9wYW5lbHtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrfS5zd2FnZ2VyLXNlY3Rpb24gLmljLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7d2lkdGg6MThweDttYXJnaW4tdG9wOi02cHg7bWFyZ2luLWxlZnQ6NHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmljLXdhcm5pbmd7YmFja2dyb3VuZC1wb3NpdGlvbjotNjBweCAwO3dpZHRoOjE4cHg7bWFyZ2luLXRvcDotNnB4O21hcmdpbi1sZWZ0OjRweH0uc3dhZ2dlci1zZWN0aW9uIC5pYy1lcnJvcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMHB4IDA7d2lkdGg6MThweDttYXJnaW4tdG9wOi02cHg7bWFyZ2luLWxlZnQ6NHB4fS5zd2FnZ2VyLXNlY3Rpb24gLmljLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MHB4IDA7d2lkdGg6NThweDttYXJnaW4tdG9wOi00cHg7Y3Vyc29yOnBvaW50ZXJ9LnN3YWdnZXItc2VjdGlvbiAuaWMtb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggMDt3aWR0aDo1OHB4O21hcmdpbi10b3A6LTRweDtjdXJzb3I6cG9pbnRlcn0uc3dhZ2dlci1zZWN0aW9uICNoZWFkZXJ7YmFja2dyb3VuZC1jb2xvcjojODliZjA0O3BhZGRpbmc6OXB4IDE0cHggMTlweDtoZWlnaHQ6MjNweDttaW4td2lkdGg6Nzc1cHh9LnN3YWdnZXItc2VjdGlvbiAjaW5wdXRfYmFzZVVybHt3aWR0aDo0MDBweH0uc3dhZ2dlci1zZWN0aW9uICNhcGlfc2VsZWN0b3J7ZGlzcGxheTpibG9jaztjbGVhcjpub25lO2Zsb2F0OnJpZ2h0fS5zd2FnZ2VyLXNlY3Rpb24gI2FwaV9zZWxlY3RvciAuaW5wdXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y2xlYXI6bm9uZTttYXJnaW46MCAxMHB4IDAgMH0uc3dhZ2dlci1zZWN0aW9uICNhcGlfc2VsZWN0b3IgaW5wdXR7Zm9udC1zaXplOi45ZW07cGFkZGluZzozcHg7bWFyZ2luOjB9LnN3YWdnZXItc2VjdGlvbiAjaW5wdXRfYXBpS2V5e3dpZHRoOjIwMHB4fS5zd2FnZ2VyLXNlY3Rpb24gI2F1dGhfY29udGFpbmVyIC5hdXRob3JpemVfX2J0biwuc3dhZ2dlci1zZWN0aW9uICNleHBsb3Jle2Rpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDhweDtmb250LXNpemU6LjllbTtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzU0N2YwMDtib3JkZXItcmFkaXVzOjRweH0uc3dhZ2dlci1zZWN0aW9uICNhdXRoX2NvbnRhaW5lciAuYXV0aG9yaXplX19idG46aG92ZXIsLnN3YWdnZXItc2VjdGlvbiAjZXhwbG9yZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM1NDdmMDB9LnN3YWdnZXItc2VjdGlvbiAjaGVhZGVyICNsb2dve2ZvbnQtc2l6ZToxLjVlbTtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6I2ZmZn0uc3dhZ2dlci1zZWN0aW9uICNoZWFkZXIgI2xvZ28gLmxvZ29fX2ltZ3tkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7bWFyZ2luLXRvcDoycHh9LnN3YWdnZXItc2VjdGlvbiAjaGVhZGVyICNsb2dvIC5sb2dvX190aXRsZXtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjVweCAwIDAgMTBweH0uc3dhZ2dlci1zZWN0aW9uICNjb250ZW50X21lc3NhZ2V7bWFyZ2luOjEwcHggMTVweDtmb250LXN0eWxlOml0YWxpYztjb2xvcjojOTk5fS5zd2FnZ2VyLXNlY3Rpb24gI21lc3NhZ2UtYmFye21pbi1oZWlnaHQ6MzBweDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMHB4fS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItY29sbGFwc2U6YmVmb3Jle2NvbnRlbnQ6Ii0ifS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItZXhwYW5kOmJlZm9yZXtjb250ZW50OiIrIn0uc3dhZ2dlci1zZWN0aW9uIC5lcnJvcntvdXRsaW5lLWNvbG9yOiNjMDA7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvY3NzL3N0eWxlLmNzcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvY3NzL3N0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjkwN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9jc3Mvc3R5bGUuY3NzCkBAIC0wLDAgKzEgQEAKKy5zd2FnZ2VyLXNlY3Rpb24gI2hlYWRlciBhI2xvZ297Zm9udC1zaXplOjEuNWVtO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtwYWRkaW5nOjIwcHggMCAyMHB4IDQwcHh9I3RleHQtaGVhZHtmb250LXNpemU6ODBweDtmb250LWZhbWlseTpSb2JvdG8sc2Fucy1zZXJpZjtjb2xvcjojZmZmO2Zsb2F0OnJpZ2h0O21hcmdpbi1yaWdodDoyMCV9Lm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1icmFuZCwubmF2YmFyLWZpeGVkLXRvcCAubmF2YmFyLW5hdiwubmF2YmFyLWhlYWRlcntoZWlnaHQ6YXV0b30ubmF2YmFyLWludmVyc2V7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JvcmRlci1jb2xvcjojMDAwfSNuYXZiYXItYnJhbmR7bWFyZ2luLWxlZnQ6MjAlfS5uYXZ0ZXh0e2ZvbnQtc2l6ZToxMHB4fS5oMSxoMXtmb250LXNpemU6NjBweH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1oZWFkZXIgLm5hdmJhci1icmFuZHtjb2xvcjojYTJkZmVlfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDIgYXtjb2xvcjojMzkzOTM5O2ZvbnQtZmFtaWx5OkFydm8sc2VyaWY7Zm9udC1zaXplOjEuNWVtfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDIgYTpob3Zlcntjb2xvcjojMDAwfS5zd2FnZ2VyLXNlY3Rpb24gLnN3YWdnZXItdWktd3JhcCB1bCNyZXNvdXJjZXMgbGkucmVzb3VyY2UgZGl2LmhlYWRpbmcgaDJ7Y29sb3I6IzUyNTI1MjtwYWRkaW5nLWxlZnQ6MDtkaXNwbGF5OmJsb2NrO2NsZWFyOm5vbmU7ZmxvYXQ6bGVmdDtmb250LWZhbWlseTpBcnZvLHNlcmlmO2ZvbnQtd2VpZ2h0OjcwMH0ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1jb2xsYXBzZSwubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1mb3Jte2JvcmRlci1jb2xvcjojMGEwYTBhfS5jb250YWluZXIxe3dpZHRoOjE1MDBweDttYXJnaW46YXV0bzttYXJnaW4tdG9wOjA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTIwcHg7bWFyZ2luLWJvdHRvbToyMTBweH0uY29udGFpbmVyLWlubmVye3dpZHRoOjEyMDBweDttYXJnaW46YXV0bztiYWNrZ3JvdW5kLWNvbG9yOmhzbGEoMTkyLDglLDg4JSwuNzUpO3BhZGRpbmctYm90dG9tOjQwcHg7cGFkZGluZy10b3A6NDBweDtib3JkZXItcmFkaXVzOjE1cHh9LmhlYWRlci1jb250ZW50e3BhZGRpbmc6MDt3aWR0aDoxMDAwcHh9LnRpdGxlMXtmb250LXNpemU6ODBweDtmb250LWZhbWlseTpWb2xsa29ybixzZXJpZjtjb2xvcjojNDA0MDQwO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjQwcHg7cGFkZGluZy1ib3R0b206MTAwcHh9I2ljb257bWFyZ2luLXRvcDotMThweH0uc3VidGV4dHtmb250LXNpemU6MjVweDtmb250LXN0eWxlOml0YWxpYztjb2xvcjojMDhiO3RleHQtYWxpZ246cmlnaHQ7cGFkZGluZy1yaWdodDoyNTBweH0uYmctcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDQ2OGJ9Lm5hdmJhci1kZWZhdWx0IC5uYXY+bGk+YSwubmF2YmFyLWRlZmF1bHQgLm5hdj5saT5hOmZvY3VzLC5uYXZiYXItZGVmYXVsdCAubmF2PmxpPmE6Zm9jdXM6aG92ZXIsLm5hdmJhci1kZWZhdWx0IC5uYXY+bGk+YTpob3Zlcntjb2xvcjojMDhifS50ZXh0LWZhZGVke2ZvbnQtc2l6ZToyNXB4O2ZvbnQtZmFtaWx5OlZvbGxrb3JuLHNlcmlmfS5zZWN0aW9uLWhlYWRpbmd7Zm9udC1mYW1pbHk6Vm9sbGtvcm4sc2VyaWY7Zm9udC1zaXplOjQ1cHg7cGFkZGluZy1ib3R0b206MTBweH1ocntib3JkZXItY29sb3I6IzAwNDY4YjtwYWRkaW5nLWJvdHRvbToxMHB4fS5kZXNjcmlwdGlvbnttYXJnaW4tdG9wOjIwcHg7cGFkZGluZy1ib3R0b206MjAwcHh9LmRlc2NyaXB0aW9uIGxpe2ZvbnQtZmFtaWx5OlZvbGxrb3JuLHNlcmlmO2ZvbnQtc2l6ZToyNXB4O2NvbG9yOiM1MjUyNTI7bWFyZ2luLWxlZnQ6MjglO3BhZGRpbmctdG9wOjVweH0uZ2Fwe21hcmdpbi10b3A6MjAwcHh9LnRyb3VibGVzaG9vdGluZ3RleHR7Y29sb3I6aHNsYSgwLDAlLDEwMCUsLjcpO3BhZGRpbmctbGVmdDozMCV9LnRyb3VibGVzaG9vdGluZ3RleHQgbGl7bGlzdC1zdHlsZS10eXBlOmNpcmNsZTtmb250LXNpemU6MjVweDtwYWRkaW5nLWJvdHRvbTo1cHh9Lm92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxfS5ibG9jay5yZXNwb25zZV9ib2R5Lmpzb246aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmJhY2tkcm9we2NvbG9yOmJsdWV9I215TW9kYWx7aGVpZ2h0OjEwMCV9Lm1vZGFsLWJhY2tkcm9we2JvdHRvbTowO3Bvc2l0aW9uOmZpeGVkfS5jdXJse3BhZGRpbmc6MTBweDtmb250LWZhbWlseTpBbm9ueW1vdXMgUHJvLE1lbmxvLENvbnNvbGFzLEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubyxDb3VyaWVyIE5ldyxtb25vc3BhY2U7Zm9udC1zaXplOi45ZW07bWF4LWhlaWdodDo0MDBweDttYXJnaW4tdG9wOjVweDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZC1jb2xvcjojZmNmNmRiO2JvcmRlcjoxcHggc29saWQgI2U1ZTBjNjtib3JkZXItcmFkaXVzOjRweH0uY3VybF90aXRsZXtmb250LXNpemU6MS4xZW07bWFyZ2luOjA7cGFkZGluZzoxNXB4IDAgNXB4O2ZvbnQtZmFtaWx5Ok9wZW4gU2FucyxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjF9LmZvb3RlcntkaXNwbGF5Om5vbmV9LnN3YWdnZXItc2VjdGlvbiAuc3dhZ2dlci11aS13cmFwIGgye3BhZGRpbmc6MH1oMnttYXJnaW46MDttYXJnaW4tYm90dG9tOjVweH0ubWFya2Rvd24gcCwuc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgLmNvZGV7Zm9udC1zaXplOjE1cHg7Zm9udC1mYW1pbHk6QXJ2byxzZXJpZn0uc3dhZ2dlci1zZWN0aW9uIC5zd2FnZ2VyLXVpLXdyYXAgYntmb250LWZhbWlseTpBcnZvLHNlcmlmfSNzaWduaW46aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmRyb3Bkb3duLW1lbnV7cGFkZGluZzoxNXB4fS5uYXZiYXItcmlnaHQgLmRyb3Bkb3duLW1lbnV7bGVmdDowO3JpZ2h0OmF1dG99I3NpZ25pbmJ1dHRvbnt3aWR0aDoxMDAlO2hlaWdodDozMnB4O2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDhifS5uYXZiYXItZGVmYXVsdCAubmF2PmxpIC5kZXRhaWxze2NvbG9yOiMwMDA7dGV4dC10cmFuc2Zvcm06bm9uZTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDA7Zm9udC1mYW1pbHk6T3BlbiBTYW5zLHNhbnMtc2VyaWY7Zm9udC1zdHlsZTppdGFsaWM7bGluZS1oZWlnaHQ6MjBweDt0b3A6LTJweH0ubmF2YmFyLWRlZmF1bHQgLm5hdj5saSAuZGV0YWlsczpob3Zlcntjb2xvcjojMDAwfSNzaWdub3V0e3dpZHRoOjEwMCU7aGVpZ2h0OjMycHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwOGJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9jc3MvdHlwb2dyYXBoeS5jc3MgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2Nzcy90eXBvZ3JhcGh5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9jc3MvdHlwb2dyYXBoeS5jc3MKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvZm9udHMvRHJvaWRTYW5zLUJvbGQudHRmIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9mb250cy9Ecm9pZFNhbnMtQm9sZC50dGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM2YzRkMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvZm9udHMvRHJvaWRTYW5zLUJvbGQudHRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvZm9udHMvRHJvaWRTYW5zLnR0ZiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvZm9udHMvRHJvaWRTYW5zLnR0ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTE3YTBjCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9mb250cy9Ecm9pZFNhbnMudHRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2NvbGxhcHNlLmdpZiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2NvbGxhcHNlLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODQzZThjCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvY29sbGFwc2UuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2V4cGFuZC5naWYgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2ltYWdlcy9leHBhbmQuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3N2JmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2ltYWdlcy9leHBhbmQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2V4cGxvcmVyX2ljb25zLnBuZyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2V4cGxvcmVyX2ljb25zLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTQzYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvZXhwbG9yZXJfaWNvbnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24tMTZ4MTYucG5nIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvZmF2aWNvbi0xNngxNi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZTEzYgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24tMTZ4MTYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24tMzJ4MzIucG5nIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvZmF2aWNvbi0zMngzMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBhMzM1MgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24tMzJ4MzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24uaWNvIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvZmF2aWNvbi5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI2MGJjZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2Zhdmljb24uaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2xvZ29fc21hbGwucG5nIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvbG9nb19zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzOTA4ZQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL2xvZ29fc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3BldF9zdG9yZV9hcGkucG5nIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvcGV0X3N0b3JlX2FwaS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE5MmFkOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3BldF9zdG9yZV9hcGkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3Rocm9iYmVyLmdpZiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3Rocm9iYmVyLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjM5Mzg4Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvdGhyb2JiZXIuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3dvcmRuaWtfYXBpLnBuZyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW1hZ2VzL3dvcmRuaWtfYXBpLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzBkZGFiCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbWFnZXMvd29yZG5pa19hcGkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW5kZXguaHRtbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGM1M2IwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzwhLS0KKyAgfiBNb2RpZmljYXRpb25zIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCisgIH4KKyAgfiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIH4KKyAgfiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIH4KKyAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgIDxtZXRhIGh0dHAtZXF1aXY9IngtdWEtY29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CisgIDx0aXRsZT5Td2FnZ2VyIFVJPC90aXRsZT4KKyAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9ImltYWdlcy9mYXZpY29uLTMyeDMyLnBuZyIgc2l6ZXM9IjMyeDMyIiAvPgorICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaW1hZ2VzL2Zhdmljb24tMTZ4MTYucG5nIiBzaXplcz0iMTZ4MTYiIC8+CisgIDxsaW5rIGhyZWY9J2Nzcy90eXBvZ3JhcGh5LmNzcycgbWVkaWE9J3NjcmVlbicgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2NzcycvPgorICA8bGluayBocmVmPSdjc3MvcmVzZXQuY3NzJyBtZWRpYT0nc2NyZWVuJyByZWw9J3N0eWxlc2hlZXQnIHR5cGU9J3RleHQvY3NzJy8+CisgIDxsaW5rIGhyZWY9J2Nzcy9zY3JlZW4uY3NzJyBtZWRpYT0nc2NyZWVuJyByZWw9J3N0eWxlc2hlZXQnIHR5cGU9J3RleHQvY3NzJy8+CisgIDxsaW5rIGhyZWY9J2Nzcy9yZXNldC5jc3MnIG1lZGlhPSdwcmludCcgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2NzcycvPgorICA8bGluayBocmVmPSdjc3MvcHJpbnQuY3NzJyBtZWRpYT0ncHJpbnQnIHJlbD0nc3R5bGVzaGVldCcgdHlwZT0ndGV4dC9jc3MnLz4KKworICA8c2NyaXB0IHNyYz0nbGliL29iamVjdC1hc3NpZ24tcG9sbHlmaWxsLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2pxdWVyeS0xLjguMC5taW4uanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSdsaWIvanF1ZXJ5LnNsaWRldG8ubWluLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2pxdWVyeS53aWdnbGUubWluLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2pxdWVyeS5iYS1iYnEubWluLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2hhbmRsZWJhcnMtNC4wLjUuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSdsaWIvbG9kYXNoLm1pbi5qcycgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9J2xpYi9iYWNrYm9uZS1taW4uanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+CisgIDxzY3JpcHQgc3JjPSdzd2FnZ2VyLXVpLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrX2V4dGVuZGVkLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL2pzb25lZGl0b3IubWluLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorICA8c2NyaXB0IHNyYz0nbGliL21hcmtlZC5qcycgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz48L3NjcmlwdD4KKyAgPHNjcmlwdCBzcmM9J2xpYi9zd2FnZ2VyLW9hdXRoLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PgorCisgIDwhLS0gU29tZSBiYXNpYyB0cmFuc2xhdGlvbnMgLS0+CisgIDwhLS0gPHNjcmlwdCBzcmM9J2xhbmcvdHJhbnNsYXRvci5qcycgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz48L3NjcmlwdD4gLS0+CisgIDwhLS0gPHNjcmlwdCBzcmM9J2xhbmcvcnUuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+IC0tPgorICA8IS0tIDxzY3JpcHQgc3JjPSdsYW5nL2VuLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0PiAtLT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgJChmdW5jdGlvbiAoKSB7CisgICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5tYXRjaCgvdXJsPShbXiZdKykvKTsKKyAgICAgIGlmICh1cmwgJiYgdXJsLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgdXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybFsxXSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvL3VybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvYXBpL2NvbnRyb2xsZXItYmx1ZXByaW50cy92MS9zd2FnZ2VyLmpzb24iOworICAgICAgICB1cmwgPSAiLi4vc3dhZ2dlci5qc29uIjsKKyAgICAgIH0KKworICAgICAgaGxqcy5jb25maWd1cmUoeworICAgICAgICBoaWdobGlnaHRTaXplVGhyZXNob2xkOiA1MDAwCisgICAgICB9KTsKKworICAgICAgLy8gUHJlIGxvYWQgdHJhbnNsYXRlLi4uCisgICAgICBpZih3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IpIHsKKyAgICAgICAgd2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLnRyYW5zbGF0ZSgpOworICAgICAgfQorICAgICAgd2luZG93LnN3YWdnZXJVaSA9IG5ldyBTd2FnZ2VyVWkoeworICAgICAgICB1cmw6IHVybCwKKyAgICAgICAgZG9tX2lkOiAic3dhZ2dlci11aS1jb250YWluZXIiLAorICAgICAgICBzdXBwb3J0ZWRTdWJtaXRNZXRob2RzOiBbJ2dldCcsICdwb3N0JywgJ3B1dCcsICdkZWxldGUnLCAncGF0Y2gnXSwKKyAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24oc3dhZ2dlckFwaSwgc3dhZ2dlclVpKXsKKyAgICAgICAgICBpZih0eXBlb2YgaW5pdE9BdXRoID09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgIGluaXRPQXV0aCh7CisgICAgICAgICAgICAgIGNsaWVudElkOiAieW91ci1jbGllbnQtaWQiLAorICAgICAgICAgICAgICBjbGllbnRTZWNyZXQ6ICJ5b3VyLWNsaWVudC1zZWNyZXQtaWYtcmVxdWlyZWQiLAorICAgICAgICAgICAgICByZWFsbTogInlvdXItcmVhbG1zIiwKKyAgICAgICAgICAgICAgYXBwTmFtZTogInlvdXItYXBwLW5hbWUiLAorICAgICAgICAgICAgICBzY29wZVNlcGFyYXRvcjogIiAiLAorICAgICAgICAgICAgICBhZGRpdGlvbmFsUXVlcnlTdHJpbmdQYXJhbXM6IHt9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZih3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IpIHsKKyAgICAgICAgICAgIHdpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvci50cmFuc2xhdGUoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIG9uRmFpbHVyZTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgIGxvZygiVW5hYmxlIHRvIExvYWQgU3dhZ2dlclVJIik7CisgICAgICAgIH0sCisgICAgICAgIGRvY0V4cGFuc2lvbjogIm5vbmUiLAorICAgICAgICBqc29uRWRpdG9yOiBmYWxzZSwKKyAgICAgICAgZGVmYXVsdE1vZGVsUmVuZGVyaW5nOiAnc2NoZW1hJywKKyAgICAgICAgc2hvd1JlcXVlc3RIZWFkZXJzOiBmYWxzZSwKKyAgICAgICAgc2hvd09wZXJhdGlvbklkczogZmFsc2UKKyAgICAgIH0pOworCisgICAgICB3aW5kb3cuc3dhZ2dlclVpLmxvYWQoKTsKKworICAgICAgZnVuY3Rpb24gbG9nKCkgeworICAgICAgICBpZiAoJ2NvbnNvbGUnIGluIHdpbmRvdykgeworICAgICAgICAgIGNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgfSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBjbGFzcz0ic3dhZ2dlci1zZWN0aW9uIj4KKzxkaXYgaWQ9J2hlYWRlcic+CisgIDxkaXYgY2xhc3M9InN3YWdnZXItdWktd3JhcCI+CisgICAgPGEgaWQ9ImxvZ28iIGhyZWY9Imh0dHA6Ly9zd2FnZ2VyLmlvIj48aW1nIGNsYXNzPSJsb2dvX19pbWciIGFsdD0ic3dhZ2dlciIgaGVpZ2h0PSIzMCIgd2lkdGg9IjMwIiBzcmM9ImltYWdlcy9sb2dvX3NtYWxsLnBuZyIgLz48c3BhbiBjbGFzcz0ibG9nb19fdGl0bGUiPnN3YWdnZXI8L3NwYW4+PC9hPgorICAgIDxmb3JtIGlkPSdhcGlfc2VsZWN0b3InPgorICAgICAgPGRpdiBjbGFzcz0naW5wdXQnPjxpbnB1dCBwbGFjZWhvbGRlcj0iaHR0cDovL2V4YW1wbGUuY29tL2FwaSIgaWQ9ImlucHV0X2Jhc2VVcmwiIG5hbWU9ImJhc2VVcmwiIHR5cGU9InRleHQiLz48L2Rpdj4KKyAgICAgIDxkaXYgaWQ9J2F1dGhfY29udGFpbmVyJz48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9J2lucHV0Jz48YSBpZD0iZXhwbG9yZSIgY2xhc3M9ImhlYWRlcl9fYnRuIiBocmVmPSIjIiBkYXRhLXN3LXRyYW5zbGF0ZT5FeHBsb3JlPC9hPjwvZGl2PgorICAgIDwvZm9ybT4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0ibWVzc2FnZS1iYXIiIGNsYXNzPSJzd2FnZ2VyLXVpLXdyYXAiIGRhdGEtc3ctdHJhbnNsYXRlPiZuYnNwOzwvZGl2PgorPGRpdiBpZD0ic3dhZ2dlci11aS1jb250YWluZXIiIGNsYXNzPSJzd2FnZ2VyLXVpLXdyYXAiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2NhLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2NhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YzgxNWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvY2EuanMKQEAgLTAsMCArMSw1MyBAQAorJ3VzZSBzdHJpY3QnOworCisvKiBqc2hpbnQgcXVvdG1hcms6IGRvdWJsZSAqLword2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLmxlYXJuKHsKKyAgICAiV2FybmluZzogRGVwcmVjYXRlZCI6IkFkdmVydMOobmNpYTogT2Jzb2xldCIsCisgICAgIkltcGxlbWVudGF0aW9uIE5vdGVzIjoiTm90ZXMgZCdpbXBsZW1lbnRhY2nDsyIsCisgICAgIlJlc3BvbnNlIENsYXNzIjoiQ2xhc3NlIGRlIGxhIFJlc3Bvc3RhIiwKKyAgICAiU3RhdHVzIjoiRXN0YXR1cyIsCisgICAgIlBhcmFtZXRlcnMiOiJQYXLDoG1ldHJlcyIsCisgICAgIlBhcmFtZXRlciI6IlBhcsOgbWV0cmUiLAorICAgICJWYWx1ZSI6IlZhbG9yIiwKKyAgICAiRGVzY3JpcHRpb24iOiJEZXNjcmlwY2nDsyIsCisgICAgIlBhcmFtZXRlciBUeXBlIjoiVGlwdXMgZGVsIFBhcsOgbWV0cmUiLAorICAgICJEYXRhIFR5cGUiOiJUaXB1cyBkZSBsYSBEYWRhIiwKKyAgICAiUmVzcG9uc2UgTWVzc2FnZXMiOiJNaXNzYXRnZXMgZGUgbGEgUmVzcG9zdGEiLAorICAgICJIVFRQIFN0YXR1cyBDb2RlIjoiQ29kaSBkJ0VzdGF0dXMgSFRUUCIsCisgICAgIlJlYXNvbiI6IlJhw7MiLAorICAgICJSZXNwb25zZSBNb2RlbCI6Ik1vZGVsIGRlIGxhIFJlc3Bvc3RhIiwKKyAgICAiUmVxdWVzdCBVUkwiOiJVUkwgZGUgbGEgU29swrdsaWNpdHVkIiwKKyAgICAiUmVzcG9uc2UgQm9keSI6IkNvcyBkZSBsYSBSZXNwb3N0YSIsCisgICAgIlJlc3BvbnNlIENvZGUiOiJDb2RpIGRlIGxhIFJlc3Bvc3RhIiwKKyAgICAiUmVzcG9uc2UgSGVhZGVycyI6IkNhcMOnYWxlcmVzIGRlIGxhIFJlc3Bvc3RhIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6IkFtYWdhciBSZXNwb3N0YSIsCisgICAgIlRyeSBpdCBvdXQhIjoiUHJvdmEtaG8hIiwKKyAgICAiU2hvdy9IaWRlIjoiTW9zdHJhci9BbWFnYXIiLAorICAgICJMaXN0IE9wZXJhdGlvbnMiOiJMbGlzdGEgT3BlcmFjaW9ucyIsCisgICAgIkV4cGFuZCBPcGVyYXRpb25zIjoiRXhwYW5kaXIgT3BlcmFjaW9ucyIsCisgICAgIlJhdyI6IkNydSIsCisgICAgImNhbid0IHBhcnNlIEpTT04uICBSYXcgcmVzdWx0Ijoibm8gcHVjIGFuYWxpdHphciBlbCBKU09OLiAgUmVzdWx0YXQgY3J1IiwKKyAgICAiRXhhbXBsZSBWYWx1ZSI6IlZhbG9yIGQnRXhlbXBsZSIsCisgICAgIk1vZGVsIFNjaGVtYSI6IkVzcXVlbWEgZGVsIE1vZGVsIiwKKyAgICAiTW9kZWwiOiJNb2RlbCIsCisgICAgImFwcGx5IjoiYXBsaWNhciIsCisgICAgIlVzZXJuYW1lIjoiTm9tIGQndXN1YXJpIiwKKyAgICAiUGFzc3dvcmQiOiJDb250cmFzZW55YSIsCisgICAgIlRlcm1zIG9mIHNlcnZpY2UiOiJUZXJtZXMgZGVsIHNlcnZlaSIsCisgICAgIkNyZWF0ZWQgYnkiOiJDcmVhdCBwZXIiLAorICAgICJTZWUgbW9yZSBhdCI6IlZldXJlIG3DqXMgZW4iLAorICAgICJDb250YWN0IHRoZSBkZXZlbG9wZXIiOiJDb250YWN0YXIgYW1iIGVsIGRlc2Vudm9sdXBhZG9yIiwKKyAgICAiYXBpIHZlcnNpb24iOiJ2ZXJzacOzIGRlIGxhIGFwaSIsCisgICAgIlJlc3BvbnNlIENvbnRlbnQgVHlwZSI6IlRpcHVzIGRlIENvbnRpbmd1dCBkZSBsYSBSZXNwb3N0YSIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoicmVjb2xsaW50IHJlY3VycyIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiJyZWNvbGxpbnMgbGxpc3RhIGRlIHJlY3Vyc29zIiwKKyAgICAiRXhwbG9yZSI6IkV4cGxvcmFudCIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiJNb3N0cmFyIEFQSSBkJ0V4ZW1wbGUgU3dhZ2dlciBQZXRzdG9yZSIsCisgICAgIkNhbid0IHJlYWQgZnJvbSBzZXJ2ZXIuICBJdCBtYXkgbm90IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGFjY2Vzcy1jb250cm9sLW9yaWdpbiBzZXR0aW5ncy4iOiJObyBlcyBwb3QgbGxlZ2lyIGRlbCBzZXJ2aWRvci4gUG90c2VyIG5vIHRlbml1IGxhIGNvbmZpZ3VyYWNpw7MgZGUgY29udHJvbCBkJ2FjY8OpcyBhcHJvcGlhZGEuIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IlNpIHVzIHBsYXUsIGVzcGVjaWZpcXVldSBlbCBwcm90b2NvbCBwZXIgYSIsCisgICAgIkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iOiJObyBlcyBwb3QgbGxlZ2lyIGVsIEpTT04gZGUgc3dhZ2dlciBkZXMgZGUiLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IkZpbmFsaXR6YWRhIGxhIGPDoHJyZWdhIGRlbCByZWN1cnMgaW5mb3JtYXRpdS4gUmVuZGVyaXR6YW50IFN3YWdnZXIgVUkiLAorICAgICJVbmFibGUgdG8gcmVhZCBhcGkiOiJObyBlcyBwb3QgbGxlZ2lyIGwnYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoiZGVzIGRlIGxhIHJ1dGEiLAorICAgICJzZXJ2ZXIgcmV0dXJuZWQiOiJlbCBzZXJ2aWRvciBoYSByZXRvcm5hdCIKK30pOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2VsLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2VsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDFmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvZWwuanMKQEAgLTAsMCArMSw1NiBAQAorJ3VzZSBzdHJpY3QnOworCisvKiBqc2hpbnQgcXVvdG1hcms6IGRvdWJsZSAqLword2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLmxlYXJuKHsKKyAgICAiV2FybmluZzogRGVwcmVjYXRlZCI6Is6gz4HOv861zrnOtM6/z4DOv86vzrfPg863OiDOiM+HzrXOuSDOsc+Azr/Pg8+Fz4HOuM61zq8iLAorICAgICJJbXBsZW1lbnRhdGlvbiBOb3RlcyI6Is6jzrfOvM61zrnPjs+DzrXOuc+CIM6lzrvOv8+Azr/Or863z4POt8+CIiwKKyAgICAiUmVzcG9uc2UgQ2xhc3MiOiLOkc+Az4zOus+BzrnPg863IiwKKyAgICAiU3RhdHVzIjoizprOsc+EzqzPg8+EzrHPg863IiwKKyAgICAiUGFyYW1ldGVycyI6Is6gzrHPgc6szrzOtc+Ez4HOv865IiwKKyAgICAiUGFyYW1ldGVyIjoizqDOsc+BzqzOvM61z4TPgc6/z4IiLAorICAgICJWYWx1ZSI6Is6kzrnOvM6uIiwKKyAgICAiRGVzY3JpcHRpb24iOiLOoM61z4HOuc6zz4HOsc+Gzq4iLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6Is6kz43PgM6/z4IgzqDOsc+BzrHOvM6tz4TPgc6/z4UiLAorICAgICJEYXRhIFR5cGUiOiLOpM+Nz4DOv8+CIM6UzrXOtM6/zrzOrc69z4nOvSIsCisgICAgIlJlc3BvbnNlIE1lc3NhZ2VzIjoizpzOt869z43OvM6xz4TOsSDOkc+Az4zOus+BzrnPg863z4IiLAorICAgICJIVFRQIFN0YXR1cyBDb2RlIjoizprPic60zrnOus+Mz4IgzprOsc+EzqzPg8+EzrHPg863z4IgSFRUUCIsCisgICAgIlJlYXNvbiI6Is6RzrnPhM65zr/Ou86/zrPOr86xIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiLOnM6/zr3PhM6tzrvOvyDOkc+Az4zOus+BzrnPg863z4IiLAorICAgICJSZXF1ZXN0IFVSTCI6IlVSTCDOkc65z4TOrs68zrHPhM6/z4IiLAorICAgICJSZXNwb25zZSBCb2R5IjoizqPPjs68zrEgzpHPgM+MzrrPgc65z4POt8+CIiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6Is6az4nOtM65zrrPjM+CIM6Rz4DPjM66z4HOuc+DzrfPgiIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiLOlc+AzrnOus61z4bOsc67zq/OtM61z4IgzpHPgM+MzrrPgc65z4POt8+CIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6Is6Rz4DPjM66z4HPhc+IzrcgzpHPgM+MzrrPgc65z4POt8+CIiwKKyAgICAiSGVhZGVycyI6Is6Vz4DOuc66zrXPhs6xzrvOr860zrXPgiIsCisgICAgIlRyeSBpdCBvdXQhIjoizpTOv866zrnOvM6sz4PPhM61IM+Ezr8hIiwKKyAgICAiU2hvdy9IaWRlIjoizpXOvM+GzqzOvc65z4POty/Okc+Az4zOus+Bz4XPiM63IiwKKyAgICAiTGlzdCBPcGVyYXRpb25zIjoizpvOr8+Dz4TOsSDOm861zrnPhM6/z4XPgc6zzrnPjs69IiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiLOkc69zqzPgM+Ez4XOvs63IM6bzrXOuc+Ezr/Phc+BzrPOuc+Ozr0iLAorICAgICJSYXciOiLOkc66zrHPhM6tz4HOs86xz4PPhM6/IiwKKyAgICAiY2FuJ3QgcGFyc2UgSlNPTi4gIFJhdyByZXN1bHQiOiLOsc60z4XOvc6xzrzOr86xIM6xzr3OrM67z4XPg863z4IgSlNPTi4gIM6RzrrOsc+Ezq3Pgc6zzrHPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEiLAorICAgICJFeGFtcGxlIFZhbHVlIjoizqDOsc+BzqzOtM61zrnOs868zrEgzqTOuc68zq7PgiIsCisgICAgIk1vZGVsIFNjaGVtYSI6Is6jz4fOrs68zrEgzpzOv869z4TOrc67zr/PhSIsCisgICAgIk1vZGVsIjoizpzOv869z4TOrc67zr8iLAorICAgICJDbGljayB0byBzZXQgYXMgcGFyYW1ldGVyIHZhbHVlIjoizqDOsc+Ezq7Pg8+EzrUgzrPOuc6xIM69zrEgzrjOrc+DzrXPhM61IM+EzrnOvM6uIM+AzrHPgc6xzrzOrc+Ez4HOv8+FIiwKKyAgICAiYXBwbHkiOiLOtc+GzrHPgc68zr/Os86uIiwKKyAgICAiVXNlcm5hbWUiOiLOjM69zr/OvM6xIM+Hz4HOrs+DzrciLAorICAgICJQYXNzd29yZCI6Is6az4nOtM65zrrPjM+CIM+Az4HPjM+DzrLOsc+DzrfPgiIsCisgICAgIlRlcm1zIG9mIHNlcnZpY2UiOiLOjM+Bzr/OuSDPh8+Bzq7Pg863z4IiLAorICAgICJDcmVhdGVkIGJ5IjoizpTOt868zrnOv8+Fz4HOs86uzrjOt866zrUgzrHPgM+MIiwKKyAgICAiU2VlIG1vcmUgYXQiOiLOlM61zq/PhM61IM+AzrXPgc65z4PPg8+Mz4TOtc+BzrEgz4PPhM6/IiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoizpXPgM65zrrOv865zr3Pic69zq7Pg8+EzrUgzrzOtSDPhM6/zr0gz4DPgc6/zrPPgc6xzrzOvM6xz4TOuc+Dz4TOriIsCisgICAgImFwaSB2ZXJzaW9uIjoizq3Ous60zr/Pg863IGFwaSIsCisgICAgIlJlc3BvbnNlIENvbnRlbnQgVHlwZSI6Is6kz43PgM6/z4IgzqDOtc+BzrnOtc+Hzr/OvM6tzr3Ov8+FIM6Rz4DPjM66z4HOuc+DzrfPgiIsCisgICAgIlBhcmFtZXRlciBjb250ZW50IHR5cGU6IjoizqTPjc+Azr/PgiDPgM61z4HOuc61z4fOv868zq3Ovc6/z4Ugz4DOsc+BzrHOvM6tz4TPgc6/z4U6IiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UiOiLPgM6xz4HOsc67zrHOss6uIM+Az4zPgc6/z4UiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSBsaXN0Ijoiz4DOsc+BzrHOu86xzrLOriDOu86vz4PPhM6xz4Igz4DPjM+Bz4nOvSIsCisgICAgIkV4cGxvcmUiOiLOlc6+zrXPgc61z43Ovc63z4POtyIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiLOlc68z4bOrM69zrnPg863IEFwaSDOlM61zrnOs868zqzPhM+Jzr0gUGV0c3RvcmUgz4TOv8+FIFN3YWdnZXIiLAorICAgICJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIjoizpHOtM+Fzr3Osc68zq/OsSDOsc69zqzOs869z4nPg863z4IgzrHPgM+MIM+Ezr/OvSDOtc6+z4XPgM63z4HOtc+EzrfPhM6uLiAgzpzPgM6/z4HOtc6vIM69zrEgzrzOt869IM6tz4fOtc65IM66zrHPhM6szrvOu863zrvOtc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOs865zrEgYWNjZXNzLWNvbnRyb2wtb3JpZ2luLiIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiLOoM6xz4HOsc66zrHOu8+OIM+Az4HOv8+DzrTOuc6/z4HOr8+Dz4TOtSDPhM6/IM+Az4HPic+Ez4zOus6/zrvOu86/IM6zzrnOsSIsCisgICAgIkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iOiLOkc60z4XOvc6xzrzOr86xIM6xzr3OrM6zzr3Pic+DzrfPgiBzd2FnZ2VyIEpTT04gzrHPgM+MIiwKKyAgICAiRmluaXNoZWQgTG9hZGluZyBSZXNvdXJjZSBJbmZvcm1hdGlvbi4gUmVuZGVyaW5nIFN3YWdnZXIgVUkiOiLOn867zr/Ous67zq7Pgc+Jz4POtyDOps+Mz4HPhM+Jz4POt8+CIM6gzrvOt8+Bzr/Phs6/z4HOuc66z47OvSDOoM+Mz4HOv8+FLiDOoM6xz4HOv8+Fz4POr86xz4POtyBTd2FnZ2VyIFVJIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoizpHOtM+Fzr3Osc68zq/OsSDOsc69zqzOs869z4nPg863z4IgYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoizrHPgM+MIM+Ezr8gzrzOv869zr/PgM6sz4TOuSIsCisgICAgInNlcnZlciByZXR1cm5lZCI6Is6/IM61zr7Phc+AzrfPgc61z4TOt8+Bzq7PgiDOtc+Azq3Pg8+Ez4HOtc+IzrUiCit9KTsKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9lbi5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9lbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTgzMTM2Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2VuLmpzCkBAIC0wLDAgKzEsNTYgQEAKKyd1c2Ugc3RyaWN0JzsKKworLyoganNoaW50IHF1b3RtYXJrOiBkb3VibGUgKi8KK3dpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvci5sZWFybih7CisgICAgIldhcm5pbmc6IERlcHJlY2F0ZWQiOiJXYXJuaW5nOiBEZXByZWNhdGVkIiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiJJbXBsZW1lbnRhdGlvbiBOb3RlcyIsCisgICAgIlJlc3BvbnNlIENsYXNzIjoiUmVzcG9uc2UgQ2xhc3MiLAorICAgICJTdGF0dXMiOiJTdGF0dXMiLAorICAgICJQYXJhbWV0ZXJzIjoiUGFyYW1ldGVycyIsCisgICAgIlBhcmFtZXRlciI6IlBhcmFtZXRlciIsCisgICAgIlZhbHVlIjoiVmFsdWUiLAorICAgICJEZXNjcmlwdGlvbiI6IkRlc2NyaXB0aW9uIiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiJQYXJhbWV0ZXIgVHlwZSIsCisgICAgIkRhdGEgVHlwZSI6IkRhdGEgVHlwZSIsCisgICAgIlJlc3BvbnNlIE1lc3NhZ2VzIjoiUmVzcG9uc2UgTWVzc2FnZXMiLAorICAgICJIVFRQIFN0YXR1cyBDb2RlIjoiSFRUUCBTdGF0dXMgQ29kZSIsCisgICAgIlJlYXNvbiI6IlJlYXNvbiIsCisgICAgIlJlc3BvbnNlIE1vZGVsIjoiUmVzcG9uc2UgTW9kZWwiLAorICAgICJSZXF1ZXN0IFVSTCI6IlJlcXVlc3QgVVJMIiwKKyAgICAiUmVzcG9uc2UgQm9keSI6IlJlc3BvbnNlIEJvZHkiLAorICAgICJSZXNwb25zZSBDb2RlIjoiUmVzcG9uc2UgQ29kZSIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiJSZXNwb25zZSBIZWFkZXJzIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6IkhpZGUgUmVzcG9uc2UiLAorICAgICJIZWFkZXJzIjoiSGVhZGVycyIsCisgICAgIlRyeSBpdCBvdXQhIjoiVHJ5IGl0IG91dCEiLAorICAgICJTaG93L0hpZGUiOiJTaG93L0hpZGUiLAorICAgICJMaXN0IE9wZXJhdGlvbnMiOiJMaXN0IE9wZXJhdGlvbnMiLAorICAgICJFeHBhbmQgT3BlcmF0aW9ucyI6IkV4cGFuZCBPcGVyYXRpb25zIiwKKyAgICAiUmF3IjoiUmF3IiwKKyAgICAiY2FuJ3QgcGFyc2UgSlNPTi4gIFJhdyByZXN1bHQiOiJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCIsCisgICAgIkV4YW1wbGUgVmFsdWUiOiJFeGFtcGxlIFZhbHVlIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoiTW9kZWwgU2NoZW1hIiwKKyAgICAiTW9kZWwiOiJNb2RlbCIsCisgICAgIkNsaWNrIHRvIHNldCBhcyBwYXJhbWV0ZXIgdmFsdWUiOiJDbGljayB0byBzZXQgYXMgcGFyYW1ldGVyIHZhbHVlIiwKKyAgICAiYXBwbHkiOiJhcHBseSIsCisgICAgIlVzZXJuYW1lIjoiVXNlcm5hbWUiLAorICAgICJQYXNzd29yZCI6IlBhc3N3b3JkIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IlRlcm1zIG9mIHNlcnZpY2UiLAorICAgICJDcmVhdGVkIGJ5IjoiQ3JlYXRlZCBieSIsCisgICAgIlNlZSBtb3JlIGF0IjoiU2VlIG1vcmUgYXQiLAorICAgICJDb250YWN0IHRoZSBkZXZlbG9wZXIiOiJDb250YWN0IHRoZSBkZXZlbG9wZXIiLAorICAgICJhcGkgdmVyc2lvbiI6ImFwaSB2ZXJzaW9uIiwKKyAgICAiUmVzcG9uc2UgQ29udGVudCBUeXBlIjoiUmVzcG9uc2UgQ29udGVudCBUeXBlIiwKKyAgICAiUGFyYW1ldGVyIGNvbnRlbnQgdHlwZToiOiJQYXJhbWV0ZXIgY29udGVudCB0eXBlOiIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoiZmV0Y2hpbmcgcmVzb3VyY2UiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSBsaXN0IjoiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdCIsCisgICAgIkV4cGxvcmUiOiJFeHBsb3JlIiwKKyAgICAiU2hvdyBTd2FnZ2VyIFBldHN0b3JlIEV4YW1wbGUgQXBpcyI6IlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiLAorICAgICJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIjoiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiJQbGVhc2Ugc3BlY2lmeSB0aGUgcHJvdG9jb2wgZm9yIiwKKyAgICAiQ2FuJ3QgcmVhZCBzd2FnZ2VyIEpTT04gZnJvbSI6IkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IkZpbmlzaGVkIExvYWRpbmcgUmVzb3VyY2UgSW5mb3JtYXRpb24uIFJlbmRlcmluZyBTd2FnZ2VyIFVJIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoiVW5hYmxlIHRvIHJlYWQgYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoiZnJvbSBwYXRoIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoic2VydmVyIHJldHVybmVkIgorfSk7CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvZXMuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmYTAxNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9lcy5qcwpAQCAtMCwwICsxLDUzIEBACisndXNlIHN0cmljdCc7CisKKy8qIGpzaGludCBxdW90bWFyazogZG91YmxlICovCit3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IubGVhcm4oeworICAgICJXYXJuaW5nOiBEZXByZWNhdGVkIjoiQWR2ZXJ0ZW5jaWE6IE9ic29sZXRvIiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiJOb3RhcyBkZSBpbXBsZW1lbnRhY2nDs24iLAorICAgICJSZXNwb25zZSBDbGFzcyI6IkNsYXNlIGRlIGxhIFJlc3B1ZXN0YSIsCisgICAgIlN0YXR1cyI6IlN0YXR1cyIsCisgICAgIlBhcmFtZXRlcnMiOiJQYXLDoW1ldHJvcyIsCisgICAgIlBhcmFtZXRlciI6IlBhcsOhbWV0cm8iLAorICAgICJWYWx1ZSI6IlZhbG9yIiwKKyAgICAiRGVzY3JpcHRpb24iOiJEZXNjcmlwY2nDs24iLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6IlRpcG8gZGVsIFBhcsOhbWV0cm8iLAorICAgICJEYXRhIFR5cGUiOiJUaXBvIGRlbCBEYXRvIiwKKyAgICAiUmVzcG9uc2UgTWVzc2FnZXMiOiJNZW5zYWplcyBkZSBsYSBSZXNwdWVzdGEiLAorICAgICJIVFRQIFN0YXR1cyBDb2RlIjoiQ8OzZGlnbyBkZSBTdGF0dXMgSFRUUCIsCisgICAgIlJlYXNvbiI6IlJhesOzbiIsCisgICAgIlJlc3BvbnNlIE1vZGVsIjoiTW9kZWxvIGRlIGxhIFJlc3B1ZXN0YSIsCisgICAgIlJlcXVlc3QgVVJMIjoiVVJMIGRlIGxhIFNvbGljaXR1ZCIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiJDdWVycG8gZGUgbGEgUmVzcHVlc3RhIiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6IkPDs2RpZ28gZGUgbGEgUmVzcHVlc3RhIiwKKyAgICAiUmVzcG9uc2UgSGVhZGVycyI6IkVuY2FiZXphZG9zIGRlIGxhIFJlc3B1ZXN0YSIsCisgICAgIkhpZGUgUmVzcG9uc2UiOiJPY3VsdGFyIFJlc3B1ZXN0YSIsCisgICAgIlRyeSBpdCBvdXQhIjoiUHJ1w6liYWxvISIsCisgICAgIlNob3cvSGlkZSI6Ik1vc3RyYXIvT2N1bHRhciIsCisgICAgIkxpc3QgT3BlcmF0aW9ucyI6Ikxpc3RhciBPcGVyYWNpb25lcyIsCisgICAgIkV4cGFuZCBPcGVyYXRpb25zIjoiRXhwYW5kaXIgT3BlcmFjaW9uZXMiLAorICAgICJSYXciOiJDcnVkbyIsCisgICAgImNhbid0IHBhcnNlIEpTT04uICBSYXcgcmVzdWx0Ijoibm8gcHVlZGUgcGFyc2VhciBlbCBKU09OLiAgUmVzdWx0YWRvIGNydWRvIiwKKyAgICAiRXhhbXBsZSBWYWx1ZSI6IlZhbG9yIGRlIEVqZW1wbG8iLAorICAgICJNb2RlbCBTY2hlbWEiOiJFc3F1ZW1hIGRlbCBNb2RlbG8iLAorICAgICJNb2RlbCI6Ik1vZGVsbyIsCisgICAgImFwcGx5IjoiYXBsaWNhciIsCisgICAgIlVzZXJuYW1lIjoiTm9tYnJlIGRlIHVzdWFyaW8iLAorICAgICJQYXNzd29yZCI6IkNvbnRyYXNlw7FhIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IlTDqXJtaW5vcyBkZSBTZXJ2aWNpbyIsCisgICAgIkNyZWF0ZWQgYnkiOiJDcmVhZG8gcG9yIiwKKyAgICAiU2VlIG1vcmUgYXQiOiJWZXIgbcOhcyBlbiIsCisgICAgIkNvbnRhY3QgdGhlIGRldmVsb3BlciI6IkNvbnRhY3RhciBhbCBkZXNhcnJvbGxhZG9yIiwKKyAgICAiYXBpIHZlcnNpb24iOiJ2ZXJzacOzbiBkZSBsYSBhcGkiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiJUaXBvIGRlIENvbnRlbmlkbyAoQ29udGVudCBUeXBlKSBkZSBsYSBSZXNwdWVzdGEiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSI6ImJ1c2NhbmRvIHJlY3Vyc28iLAorICAgICJmZXRjaGluZyByZXNvdXJjZSBsaXN0IjoiYnVzY2FuZG8gbGlzdGEgZGVsIHJlY3Vyc28iLAorICAgICJFeHBsb3JlIjoiRXhwbG9yYXIiLAorICAgICJTaG93IFN3YWdnZXIgUGV0c3RvcmUgRXhhbXBsZSBBcGlzIjoiTW9zdHJhciBBcGkgRWplbXBsbyBkZSBTd2FnZ2VyIFBldHN0b3JlIiwKKyAgICAiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6Ik5vIHNlIHB1ZWRlIGxlZXIgZGVsIHNlcnZpZG9yLiBUYWwgdmV6IG5vIHRpZW5lIGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbnRyb2wgZGUgYWNjZXNvIGRlIG9yaWdlbiAoYWNjZXNzLWNvbnRyb2wtb3JpZ2luKSBhcHJvcGlhZG8uIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IlBvciBmYXZvciwgZXNwZWNpZmljYXIgZWwgcHJvdG9jb2xhIHBhcmEiLAorICAgICJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tIjoiTm8gc2UgcHVlZGUgbGVlciBlbCBKU09OIGRlIHN3YWdnZXIgZGVzZGUiLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IkZpbmFsaXphZGEgbGEgY2FyZ2EgZGVsIHJlY3Vyc28gZGUgSW5mb3JtYWNpw7NuLiBNb3N0cmFuZG8gU3dhZ2dlciBVSSIsCisgICAgIlVuYWJsZSB0byByZWFkIGFwaSI6Ik5vIHNlIHB1ZWRlIGxlZXIgbGEgYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoiZGVzZGUgcnV0YSIsCisgICAgInNlcnZlciByZXR1cm5lZCI6ImVsIHNlcnZpZG9yIHJldG9ybsOzIgorfSk7CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvZnIuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvZnIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg4ZGZmMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9mci5qcwpAQCAtMCwwICsxLDU0IEBACisndXNlIHN0cmljdCc7CisKKy8qIGpzaGludCBxdW90bWFyazogZG91YmxlICovCit3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IubGVhcm4oeworICAgICJXYXJuaW5nOiBEZXByZWNhdGVkIjoiQXZlcnRpc3NlbWVudCA6IE9ic29sw6h0ZSIsCisgICAgIkltcGxlbWVudGF0aW9uIE5vdGVzIjoiTm90ZXMgZCdpbXBsw6ltZW50YXRpb24iLAorICAgICJSZXNwb25zZSBDbGFzcyI6IkNsYXNzZSBkZSBsYSByw6lwb25zZSIsCisgICAgIlN0YXR1cyI6IlN0YXR1dCIsCisgICAgIlBhcmFtZXRlcnMiOiJQYXJhbcOodHJlcyIsCisgICAgIlBhcmFtZXRlciI6IlBhcmFtw6h0cmUiLAorICAgICJWYWx1ZSI6IlZhbGV1ciIsCisgICAgIkRlc2NyaXB0aW9uIjoiRGVzY3JpcHRpb24iLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6IlR5cGUgZHUgcGFyYW3DqHRyZSIsCisgICAgIkRhdGEgVHlwZSI6IlR5cGUgZGUgZG9ubsOpZXMiLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6Ik1lc3NhZ2VzIGRlIGxhIHLDqXBvbnNlIiwKKyAgICAiSFRUUCBTdGF0dXMgQ29kZSI6IkNvZGUgZGUgc3RhdHV0IEhUVFAiLAorICAgICJSZWFzb24iOiJSYWlzb24iLAorICAgICJSZXNwb25zZSBNb2RlbCI6Ik1vZMOobGUgZGUgcsOpcG9uc2UiLAorICAgICJSZXF1ZXN0IFVSTCI6IlVSTCBhcHBlbMOpZSIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiJDb3JwcyBkZSBsYSByw6lwb25zZSIsCisgICAgIlJlc3BvbnNlIENvZGUiOiJDb2RlIGRlIGxhIHLDqXBvbnNlIiwKKyAgICAiUmVzcG9uc2UgSGVhZGVycyI6IkVuLXTDqnRlcyBkZSBsYSByw6lwb25zZSIsCisgICAgIkhpZGUgUmVzcG9uc2UiOiJDYWNoZXIgbGEgcsOpcG9uc2UiLAorICAgICJIZWFkZXJzIjoiRW4tdMOqdGVzIiwKKyAgICAiVHJ5IGl0IG91dCEiOiJUZXN0ZXogISIsCisgICAgIlNob3cvSGlkZSI6IkFmZmljaGVyL01hc3F1ZXIiLAorICAgICJMaXN0IE9wZXJhdGlvbnMiOiJMaXN0ZSBkZXMgb3DDqXJhdGlvbnMiLAorICAgICJFeHBhbmQgT3BlcmF0aW9ucyI6IkTDqXZlbG9wcGVyIGxlcyBvcMOpcmF0aW9ucyIsCisgICAgIlJhdyI6IkJydXQiLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6ImltcG9zc2libGUgZGUgZMOpY29kZXIgbGUgSlNPTi4gIFLDqXN1bHRhdCBicnV0IiwKKyAgICAiRXhhbXBsZSBWYWx1ZSI6IkV4ZW1wbGUgbGEgdmFsZXVyIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoiRMOpZmluaXRpb24gZHUgbW9kw6hsZSIsCisgICAgIk1vZGVsIjoiTW9kw6hsZSIsCisgICAgImFwcGx5IjoiYXBwbGlxdWVyIiwKKyAgICAiVXNlcm5hbWUiOiJOb20gZCd1dGlsaXNhdGV1ciIsCisgICAgIlBhc3N3b3JkIjoiTW90IGRlIHBhc3NlIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IkNvbmRpdGlvbnMgZGUgc2VydmljZSIsCisgICAgIkNyZWF0ZWQgYnkiOiJDcsOpw6kgcGFyIiwKKyAgICAiU2VlIG1vcmUgYXQiOiJWb2lyIHBsdXMgc3VyIiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoiQ29udGFjdGVyIGxlIGTDqXZlbG9wcGV1ciIsCisgICAgImFwaSB2ZXJzaW9uIjoidmVyc2lvbiBkZSBsJ2FwaSIsCisgICAgIlJlc3BvbnNlIENvbnRlbnQgVHlwZSI6IkNvbnRlbnQgVHlwZSBkZSBsYSByw6lwb25zZSIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoicsOpY3Vww6lyYXRpb24gZGUgbGEgcmVzc291cmNlIiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdCI6InLDqWN1cMOpcmF0aW9uIGRlIGxhIGxpc3RlIGRlIHJlc3NvdXJjZXMiLAorICAgICJFeHBsb3JlIjoiRXhwbG9yZXIiLAorICAgICJTaG93IFN3YWdnZXIgUGV0c3RvcmUgRXhhbXBsZSBBcGlzIjoiTW9udHJlciBsZXMgQXBpcyBkZSBsJ2V4ZW1wbGUgUGV0c3RvcmUgZGUgU3dhZ2dlciIsCisgICAgIkNhbid0IHJlYWQgZnJvbSBzZXJ2ZXIuICBJdCBtYXkgbm90IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGFjY2Vzcy1jb250cm9sLW9yaWdpbiBzZXR0aW5ncy4iOiJJbXBvc3NpYmxlIGRlIGxpcmUgw6AgcGFydGlyIGR1IHNlcnZldXIuIElsIHNlIHBldXQgcXVlIGxlcyByw6lnbGFnZXMgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIG5lIHNvaWVudCBwYXMgYXBwcm9wcmnDqXMuIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IlZldWlsbGV6IHNww6ljaWZpZXIgdW4gcHJvdG9jb2xlIHBvdXIiLAorICAgICJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tIjoiSW1wb3NzaWJsZSBkZSBsaXJlIGxlIEpTT04gc3dhZ2dlciDDoCBwYXJ0aXIgZGUiLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IkNoYXJnZW1lbnQgZGVzIGluZm9ybWF0aW9ucyB0ZXJtaW7DqS4gQWZmaWNoYWdlIGRlIFN3YWdnZXIgVUkiLAorICAgICJVbmFibGUgdG8gcmVhZCBhcGkiOiJJbXBvc3NpYmxlIGRlIGxpcmUgbCdhcGkiLAorICAgICJmcm9tIHBhdGgiOiLDoCBwYXJ0aXIgZHUgY2hlbWluIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoicsOpcG9uc2UgZHUgc2VydmV1ciIKK30pOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2dlby5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9nZW8uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5YzIwZAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9nZW8uanMKQEAgLTAsMCArMSw1NiBAQAorJ3VzZSBzdHJpY3QnOworCisvKiBqc2hpbnQgcXVvdG1hcms6IGRvdWJsZSAqLword2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLmxlYXJuKHsKKyAgICAiV2FybmluZzogRGVwcmVjYXRlZCI6IuGDp+GDo+GDoOGDkOGDk+GDpuGDlOGDkeGDkDog4YOQ4YOm4YOQ4YOgIOGDkuGDkOGDm+GDneGDmOGDp+GDlOGDnOGDlOGDkeGDkCIsCisgICAgIkltcGxlbWVudGF0aW9uIE5vdGVzIjoi4YOY4YOb4YOe4YOa4YOU4YOb4YOU4YOc4YOi4YOQ4YOq4YOY4YOY4YOhIOGDkOGDpuGDrOGDlOGDoOGDkCIsCisgICAgIlJlc3BvbnNlIENsYXNzIjoi4YOg4YOU4YOh4YOe4YOd4YOc4YOhIOGDmeGDmuGDkOGDoeGDmCIsCisgICAgIlN0YXR1cyI6IuGDoeGDouGDkOGDouGDo+GDoeGDmCIsCisgICAgIlBhcmFtZXRlcnMiOiLhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dhg5Thg5Hhg5giLAorICAgICJQYXJhbWV0ZXIiOiLhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dhg5giLAorICAgICJWYWx1ZSI6IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCIsCisgICAgIkRlc2NyaXB0aW9uIjoi4YOQ4YOm4YOs4YOU4YOg4YOQIiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiLhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dhg5jhg6Eg4YOi4YOY4YOe4YOYIiwKKyAgICAiRGF0YSBUeXBlIjoi4YOb4YOd4YOc4YOQ4YOq4YOU4YOb4YOY4YOhIOGDouGDmOGDnuGDmCIsCisgICAgIlJlc3BvbnNlIE1lc3NhZ2VzIjoi4YOe4YOQ4YOh4YOj4YOu4YOYIiwKKyAgICAiSFRUUCBTdGF0dXMgQ29kZSI6IkhUVFAg4YOh4YOi4YOQ4YOi4YOj4YOh4YOYIiwKKyAgICAiUmVhc29uIjoi4YOb4YOY4YOW4YOU4YOW4YOYIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiLhg6Dhg5Thg6Hhg57hg53hg5zhg6Eg4YOb4YOd4YOT4YOU4YOa4YOYIiwKKyAgICAiUmVxdWVzdCBVUkwiOiLhg5vhg53hg5fhg67hg53hg5Xhg5zhg5jhg6EgVVJMIiwKKyAgICAiUmVzcG9uc2UgQm9keSI6IuGDnuGDkOGDoeGDo+GDruGDmOGDoSDhg6Hhg67hg5Thg6Phg5rhg5giLAorICAgICJSZXNwb25zZSBDb2RlIjoi4YOe4YOQ4YOh4YOj4YOu4YOY4YOhIOGDmeGDneGDk+GDmCIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiLhg57hg5Dhg6Hhg6Phg67hg5jhg6Eg4YOw4YOU4YOT4YOU4YOg4YOU4YOR4YOYIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6IuGDk+GDkOGDm+GDkOGDmuGDlCDhg57hg5Dhg6Hhg6Phg67hg5giLAorICAgICJIZWFkZXJzIjoi4YOw4YOU4YOT4YOU4YOg4YOU4YOR4YOYIiwKKyAgICAiVHJ5IGl0IG91dCEiOiLhg6rhg5Dhg5Phg5QgISIsCisgICAgIlNob3cvSGlkZSI6IuGDkuGDkOGDm+GDneGDqeGDlOGDnOGDkC/hg5Phg5Dhg5vhg5Dhg5rhg5Xhg5AiLAorICAgICJMaXN0IE9wZXJhdGlvbnMiOiLhg53hg57hg5Thg6Dhg5Dhg6rhg5jhg5Thg5Hhg5jhg6Eg4YOh4YOY4YOQIiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiLhg53hg57hg5Thg6Dhg5Dhg6rhg5jhg5Thg5Hhg5gg4YOV4YOg4YOq4YOa4YOQ4YOTIiwKKyAgICAiUmF3Ijoi4YOc4YOU4YOT4YOa4YOYIiwKKyAgICAiY2FuJ3QgcGFyc2UgSlNPTi4gIFJhdyByZXN1bHQiOiJKU09OLeGDmOGDoSDhg5Phg5Dhg5vhg6Phg6jhg5Dhg5Xhg5Thg5Hhg5Ag4YOV4YOU4YOgIOGDm+GDneGDruGDlOGDoOGDruGDk+GDkC4gIOGDnOGDlOGDk+GDmuGDmCDhg57hg5Dhg6Hhg6Phg67hg5giLAorICAgICJFeGFtcGxlIFZhbHVlIjoi4YOb4YOQ4YOS4YOQ4YOa4YOY4YOX4YOYIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoi4YOb4YOd4YOT4YOU4YOa4YOY4YOhIOGDoeGDouGDoOGDo+GDpeGDouGDo+GDoOGDkCIsCisgICAgIk1vZGVsIjoi4YOb4YOd4YOT4YOU4YOa4YOYIiwKKyAgICAiQ2xpY2sgdG8gc2V0IGFzIHBhcmFtZXRlciB2YWx1ZSI6IuGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDmOGDoeGDl+GDleGDmOGDoSDhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5jhg6Eg4YOb4YOY4YOh4YOQ4YOc4YOY4YOt4YOU4YOR4YOa4YOQ4YOTLCDhg5Phg5Dhg5Dhg5nhg5rhg5jhg5nhg5QiLAorICAgICJhcHBseSI6IuGDkuGDkOGDm+GDneGDp+GDlOGDnOGDlOGDkeGDkCIsCisgICAgIlVzZXJuYW1lIjoi4YOb4YOd4YOu4YOb4YOQ4YOg4YOU4YOR4YOU4YOa4YOYIiwKKyAgICAiUGFzc3dvcmQiOiLhg57hg5Dhg6Dhg53hg5rhg5giLAorICAgICJUZXJtcyBvZiBzZXJ2aWNlIjoi4YOb4YOd4YOb4YOh4YOQ4YOu4YOj4YOg4YOU4YOR4YOY4YOhIOGDnuGDmOGDoOGDneGDkeGDlOGDkeGDmCIsCisgICAgIkNyZWF0ZWQgYnkiOiLhg6jhg5Thg6Xhg5vhg5zhg5AiLAorICAgICJTZWUgbW9yZSBhdCI6IuGDnOGDkOGDruGDlCDhg5Xhg6Dhg6rhg5rhg5Dhg5MiLAorICAgICJDb250YWN0IHRoZSBkZXZlbG9wZXIiOiLhg5Phg5Dhg6Phg5nhg5Dhg5Xhg6jhg5jhg6Dhg5Phg5gg4YOT4YOU4YOV4YOU4YOa4YOd4YOe4YOU4YOg4YOhIiwKKyAgICAiYXBpIHZlcnNpb24iOiJhcGkg4YOV4YOU4YOg4YOh4YOY4YOQIiwKKyAgICAiUmVzcG9uc2UgQ29udGVudCBUeXBlIjoi4YOe4YOQ4YOh4YOj4YOu4YOY4YOhIOGDmeGDneGDnOGDouGDlOGDnOGDouGDmOGDoSDhg6Lhg5jhg57hg5giLAorICAgICJQYXJhbWV0ZXIgY29udGVudCB0eXBlOiI6IuGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDmOGDoSDhg5nhg53hg5zhg6Lhg5Thg5zhg6Lhg5jhg6Eg4YOi4YOY4YOe4YOYOiIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoi4YOg4YOU4YOh4YOj4YOg4YOh4YOU4YOR4YOY4YOhIOGDm+GDmOGDpuGDlOGDkeGDkCIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiLhg6Dhg5Thg6Hhg6Phg6Dhg6Hhg5Thg5Hhg5jhg6Eg4YOh4YOY4YOY4YOhIOGDm+GDmOGDpuGDlOGDkeGDkCIsCisgICAgIkV4cGxvcmUiOiLhg5zhg5Dhg67hg5Xhg5AiLAorICAgICJTaG93IFN3YWdnZXIgUGV0c3RvcmUgRXhhbXBsZSBBcGlzIjoi4YOc4YOQ4YOu4YOUIFN3YWdnZXIgUGV0c3RvcmUg4YOh4YOQ4YOb4YOQ4YOS4YOQ4YOa4YOY4YOX4YOdIEFwaSIsCisgICAgIkNhbid0IHJlYWQgZnJvbSBzZXJ2ZXIuICBJdCBtYXkgbm90IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGFjY2Vzcy1jb250cm9sLW9yaWdpbiBzZXR0aW5ncy4iOiLhg6Hhg5Thg6Dhg5Xhg5Thg6Dhg5fhg5Dhg5wg4YOT4YOQ4YOZ4YOQ4YOV4YOo4YOY4YOg4YOU4YOR4YOQIOGDleGDlOGDoCDhg67hg5Thg6Dhg67hg5Phg5Thg5Hhg5AuICDhg6jhg5Thg5Dhg5vhg53hg6zhg5vhg5Thg5cgYWNjZXNzLWNvbnRyb2wtb3JpZ2luLiIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiLhg5vhg5jhg6Phg5fhg5jhg5fhg5Thg5cg4YOe4YOg4YOd4YOi4YOd4YOZ4YOd4YOa4YOYIiwKKyAgICAiQ2FuJ3QgcmVhZCBzd2FnZ2VyIEpTT04gZnJvbSI6InN3YWdnZXIgSlNPTiDhg6zhg5Dhg5nhg5jhg5fhg67hg5Xhg5Ag4YOV4YOU4YOgIOGDm+GDneGDruGDlOGDoOGDruGDk+GDkCIsCisgICAgIkZpbmlzaGVkIExvYWRpbmcgUmVzb3VyY2UgSW5mb3JtYXRpb24uIFJlbmRlcmluZyBTd2FnZ2VyIFVJIjoi4YOg4YOU4YOh4YOj4YOg4YOh4YOU4YOR4YOY4YOhIOGDqeGDkOGDouGDleGDmOGDoOGDl+GDleGDkCDhg6Hhg6Dhg6Phg5rhg5Phg5Thg5Hhg5AuIFN3YWdnZXIgVUkg4YOg4YOU4YOc4YOT4YOU4YOg4YOT4YOU4YOR4YOQIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoiYXBpIOGDrOGDkOGDmeGDmOGDl+GDruGDleGDkCDhg5Xhg5Thg6Ag4YOb4YOd4YOu4YOU4YOg4YOu4YOT4YOQIiwKKyAgICAiZnJvbSBwYXRoIjoi4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOY4YOT4YOQ4YOcIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoi4YOh4YOU4YOg4YOV4YOU4YOg4YOb4YOQIOGDk+GDkOGDkOGDkeGDoOGDo+GDnOGDkCIKK30pOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2l0LmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2l0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MjljMmEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvaXQuanMKQEAgLTAsMCArMSw1MiBAQAorJ3VzZSBzdHJpY3QnOworCisvKiBqc2hpbnQgcXVvdG1hcms6IGRvdWJsZSAqLword2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLmxlYXJuKHsKKyAgICAiV2FybmluZzogRGVwcmVjYXRlZCI6IkF0dGVuemlvbmU6IERlcHJlY2F0byIsCisgICAgIkltcGxlbWVudGF0aW9uIE5vdGVzIjoiTm90ZSBkaSBpbXBsZW1lbnRhemlvbmUiLAorICAgICJSZXNwb25zZSBDbGFzcyI6IkNsYXNzZSBkZWxsYSByaXNwb3N0YSIsCisgICAgIlN0YXR1cyI6IlN0YXRvIiwKKyAgICAiUGFyYW1ldGVycyI6IlBhcmFtZXRyaSIsCisgICAgIlBhcmFtZXRlciI6IlBhcmFtZXRybyIsCisgICAgIlZhbHVlIjoiVmFsb3JlIiwKKyAgICAiRGVzY3JpcHRpb24iOiJEZXNjcml6aW9uZSIsCisgICAgIlBhcmFtZXRlciBUeXBlIjoiVGlwbyBkaSBwYXJhbWV0cm8iLAorICAgICJEYXRhIFR5cGUiOiJUaXBvIGRpIGRhdG8iLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6Ik1lc3NhZ2dpIGRlbGxhIHJpc3Bvc3RhIiwKKyAgICAiSFRUUCBTdGF0dXMgQ29kZSI6IkNvZGljZSBzdGF0byBIVFRQIiwKKyAgICAiUmVhc29uIjoiTW90aXZvIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiJNb2RlbGxvIGRpIHJpc3Bvc3RhIiwKKyAgICAiUmVxdWVzdCBVUkwiOiJVUkwgZGVsbGEgcmljaGllc3RhIiwKKyAgICAiUmVzcG9uc2UgQm9keSI6IkNvcnBvIGRlbGxhIHJpc3Bvc3RhIiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6Ik9nZ2V0dG8gZGVsbGEgcmlzcG9zdGEiLAorICAgICJSZXNwb25zZSBIZWFkZXJzIjoiSW50ZXN0YXppb25pIGRlbGxhIHJpc3Bvc3RhIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6Ik5hc2NvbmRpIHJpc3Bvc3RhIiwKKyAgICAiVHJ5IGl0IG91dCEiOiJQcm92YWxvISIsCisgICAgIlNob3cvSGlkZSI6Ik1vc3RyYS9OYXNjb25kaSIsCisgICAgIkxpc3QgT3BlcmF0aW9ucyI6Ik1vc3RyYSBvcGVyYXppb25pIiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiJFc3BhbmRpIG9wZXJhemlvbmkiLAorICAgICJSYXciOiJHcmV6em8gKHJhdykiLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6Im5vbiDDqCBwb3NzaWJpbGUgcGFyc2FyZSBpbCBKU09OLiBSaXN1bHRhdG8gZ3JlenpvIChyYXcpLiIsCisgICAgIk1vZGVsIFNjaGVtYSI6IlNjaGVtYSBkZWwgbW9kZWxsbyIsCisgICAgIk1vZGVsIjoiTW9kZWxsbyIsCisgICAgImFwcGx5IjoiYXBwbGljYSIsCisgICAgIlVzZXJuYW1lIjoiTm9tZSB1dGVudGUiLAorICAgICJQYXNzd29yZCI6IlBhc3N3b3JkIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IkNvbmRpemlvbmkgZGVsIHNlcnZpemlvIiwKKyAgICAiQ3JlYXRlZCBieSI6IkNyZWF0byBkYSIsCisgICAgIlNlZSBtb3JlIGF0IjoiSW5mb3JtYXppb25pIGFnZ2l1bnRpdmU6IiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoiQ29udGF0dGEgbG8gc3ZpbHVwcGF0b3JlIiwKKyAgICAiYXBpIHZlcnNpb24iOiJ2ZXJzaW9uZSBhcGkiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiJUaXBvIGRpIGNvbnRlbnV0byAoY29udGVudCB0eXBlKSBkZWxsYSByaXNwb3N0YSIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoicmVjdXBlcmFuZG8gbGEgcmlzb3JzYSIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiJyZWN1cGVyYW5kbyBsaXN0YSByaXNvcnNlIiwKKyAgICAiRXhwbG9yZSI6IkVzcGxvcmEiLAorICAgICJTaG93IFN3YWdnZXIgUGV0c3RvcmUgRXhhbXBsZSBBcGlzIjoiTW9zdHJhIGxlIGFwaSBkaSBlc2VtcGlvIGRpIFN3YWdnZXIgUGV0c3RvcmUiLAorICAgICJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIjoiTm9uIMOoIHBvc3NpYmlsZSBsZWdnZXJlIGRhbCBzZXJ2ZXIuIFBvdHJlYmJlIG5vbiBhdmVyZSBsZSBpbXBvc3RhemlvbmkgZGkgY29udHJvbGxvIGFjY2Vzc28gb3JpZ2luZSAoYWNjZXNzLWNvbnRyb2wtb3JpZ2luKSBhcHByb3ByaWF0ZS4iLAorICAgICJQbGVhc2Ugc3BlY2lmeSB0aGUgcHJvdG9jb2wgZm9yIjoiU2kgcHJlZ2EgZGkgc3BlY2lmaWNhcmUgaWwgcHJvdG9jb2xsbyBwZXIiLAorICAgICJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tIjoiSW1wb3NzaWJpbGUgbGVnZ2VyZSBKU09OIHN3YWdnZXIgZGE6IiwKKyAgICAiRmluaXNoZWQgTG9hZGluZyBSZXNvdXJjZSBJbmZvcm1hdGlvbi4gUmVuZGVyaW5nIFN3YWdnZXIgVUkiOiJMZXR0dXJhIGluZm9ybWF6aW9uaSByaXNvcnNlIHRlcm1pYW50YS4gU3dhZ2dlciBVSSB2aWVuZSBtb3N0cmF0YSIsCisgICAgIlVuYWJsZSB0byByZWFkIGFwaSI6IkltcG9zc2liaWxlIGxlZ2dlcmUgbGEgYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoiZGEgY2FydGVsbGEiLAorICAgICJzZXJ2ZXIgcmV0dXJuZWQiOiJpbCBzZXJ2ZXIgaGEgcmVzdGl0dWl0byIKK30pOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2phLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL2phLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYmViMzcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvamEuanMKQEAgLTAsMCArMSw1NiBAQAorJ3VzZSBzdHJpY3QnOworCisvKiBqc2hpbnQgcXVvdG1hcms6IGRvdWJsZSAqLword2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLmxlYXJuKHsKKyAgICAiV2FybmluZzogRGVwcmVjYXRlZCI6IuitpuWRijog5buD5q2i5LqI5a6aIiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiLlrp/oo4Xjg6Hjg6IiLAorICAgICJSZXNwb25zZSBDbGFzcyI6IuODrOOCueODneODs+OCueOCr+ODqeOCuSIsCisgICAgIlN0YXR1cyI6IuOCueODhuODvOOCv+OCuSIsCisgICAgIlBhcmFtZXRlcnMiOiLjg5Hjg6njg6Hjg7zjgr/nvqQiLAorICAgICJQYXJhbWV0ZXIiOiLjg5Hjg6njg6Hjg7zjgr8iLAorICAgICJWYWx1ZSI6IuWApCIsCisgICAgIkRlc2NyaXB0aW9uIjoi6Kqs5piOIiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiLjg5Hjg6njg6Hjg7zjgr/jgr/jgqTjg5ciLAorICAgICJEYXRhIFR5cGUiOiLjg4fjg7zjgr/jgr/jgqTjg5ciLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6IuODrOOCueODneODs+OCueODoeODg+OCu+ODvOOCuCIsCisgICAgIkhUVFAgU3RhdHVzIENvZGUiOiJIVFRQ44K544OG44O844K/44K544Kz44O844OJIiwKKyAgICAiUmVhc29uIjoi55CG55SxIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiLjg6zjgrnjg53jg7Pjgrnjg6Ljg4fjg6siLAorICAgICJSZXF1ZXN0IFVSTCI6IuODquOCr+OCqOOCueODiFVSTCIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiLjg6zjgrnjg53jg7Pjgrnjg5zjg4fjgqMiLAorICAgICJSZXNwb25zZSBDb2RlIjoi44Os44K544Od44Oz44K544Kz44O844OJIiwKKyAgICAiUmVzcG9uc2UgSGVhZGVycyI6IuODrOOCueODneODs+OCueODmOODg+ODgCIsCisgICAgIkhpZGUgUmVzcG9uc2UiOiLjg6zjgrnjg53jg7PjgrnjgpLpmqDjgZkiLAorICAgICJIZWFkZXJzIjoi44OY44OD44OAIiwKKyAgICAiVHJ5IGl0IG91dCEiOiLlrp/pmpvjgavlrp/ooYwhIiwKKyAgICAiU2hvdy9IaWRlIjoi6KGo56S6L+mdnuihqOekuiIsCisgICAgIkxpc3QgT3BlcmF0aW9ucyI6IuaTjeS9nOS4gOimpyIsCisgICAgIkV4cGFuZCBPcGVyYXRpb25zIjoi5pON5L2c44Gu5bGV6ZaLIiwKKyAgICAiUmF3Ijoi5pyq5Yqg5belIiwKKyAgICAiY2FuJ3QgcGFyc2UgSlNPTi4gIFJhdyByZXN1bHQiOiJKU09O44G46Kej6YeI44Gn44GN44G+44Gb44KTLiAg5pyq5Yqg5bel44Gu57WQ5p6cIiwKKyAgICAiRXhhbXBsZSBWYWx1ZSI6IuWApOOBruS+iyIsCisgICAgIk1vZGVsIFNjaGVtYSI6IuODouODh+ODq+OCueOCreODvOODniIsCisgICAgIk1vZGVsIjoi44Oi44OH44OrIiwKKyAgICAiQ2xpY2sgdG8gc2V0IGFzIHBhcmFtZXRlciB2YWx1ZSI6IuODkeODqeODoeODvOOCv+WApOOBqOioreWumuOBmeOCi+OBq+OBr+OCr+ODquODg+OCryIsCisgICAgImFwcGx5Ijoi5a6f6KGMIiwKKyAgICAiVXNlcm5hbWUiOiLjg6bjg7zjgrblkI0iLAorICAgICJQYXNzd29yZCI6IuODkeOCueODr+ODvOODiSIsCisgICAgIlRlcm1zIG9mIHNlcnZpY2UiOiLjgrXjg7zjg5PjgrnliKnnlKjopo/ntIQiLAorICAgICJDcmVhdGVkIGJ5IjoiQ3JlYXRlZCBieSIsCisgICAgIlNlZSBtb3JlIGF0Ijoi6Kmz57Sw44KS6KaL44KLIiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoi6ZaL55m66ICF44Gr6YCj57WhIiwKKyAgICAiYXBpIHZlcnNpb24iOiJBUEnjg5Djg7zjgrjjg6fjg7MiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiLjg6zjgrnjg53jg7Pjgrkg44Kz44Oz44OG44Oz44OE44K/44Kk44OXIiwKKyAgICAiUGFyYW1ldGVyIGNvbnRlbnQgdHlwZToiOiLjg5Hjg6njg6Hjg7zjgr/jgrPjg7Pjg4bjg7Pjg4Tjgr/jgqTjg5c6IiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UiOiLjg6rjgr3jg7zjgrnjga7lj5blvpciLAorICAgICJmZXRjaGluZyByZXNvdXJjZSBsaXN0Ijoi44Oq44K944O844K55LiA6Kan44Gu5Y+W5b6XIiwKKyAgICAiRXhwbG9yZSI6Iuiqv+afuyIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiJTd2FnZ2Vy44Oa44OD44OI44K544OI44KiQVBJ44Gu6KGo56S6IiwKKyAgICAiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6IuOCteODvOODkOOBi+OCieiqreOBv+i+vOOCgeOBvuOBm+OCky4gIOmBqeWIh+OBqmFjY2Vzcy1jb250cm9sLW9yaWdpbuioreWumuOCkuaMgeOBo+OBpuOBhOOBquOBhOWPr+iDveaAp+OBjOOBguOCiuOBvuOBmS4iLAorICAgICJQbGVhc2Ugc3BlY2lmeSB0aGUgcHJvdG9jb2wgZm9yIjoi44OX44Ot44OI44Kz44Or44KS5oyH5a6a44GX44Gm44GP44Gg44GV44GEIiwKKyAgICAiQ2FuJ3QgcmVhZCBzd2FnZ2VyIEpTT04gZnJvbSI6IuasoeOBi+OCiXN3YWdnZXIgSlNPTuOCkuiqreOBv+i+vOOCgeOBvuOBm+OCkyIsCisgICAgIkZpbmlzaGVkIExvYWRpbmcgUmVzb3VyY2UgSW5mb3JtYXRpb24uIFJlbmRlcmluZyBTd2FnZ2VyIFVJIjoi44Oq44K944O844K55oOF5aCx44Gu6Kqt44G/6L6844G/44GM5a6M5LqG44GX44G+44GX44GfLiBTd2FnZ2VyIFVJ44KS5o+P55S744GX44Gm44GE44G+44GZIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoiQVBJ44KS6Kqt44G/6L6844KB44G+44Gb44KTIiwKKyAgICAiZnJvbSBwYXRoIjoi5qyh44Gu44OR44K544GL44KJIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoi44K144O844OQ44GL44KJ44Gu6L+U562UIgorfSk7CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcva28ta3IuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcva28ta3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNjNzYyNgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9rby1rci5qcwpAQCAtMCwwICsxLDUzIEBACisndXNlIHN0cmljdCc7CisKKy8qIGpzaGludCBxdW90bWFyazogZG91YmxlICovCit3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IubGVhcm4oeworICAgICJXYXJuaW5nOiBEZXByZWNhdGVkIjoi6rK96rOg77ya7Y+Q6riw7JiI7KCV65CoIiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiLqtaztmIQg64W47Yq4IiwKKyAgICAiUmVzcG9uc2UgQ2xhc3MiOiLsnZHri7Ug7YG0656Y7IqkIiwKKyAgICAiU3RhdHVzIjoi7IOB7YOcIiwKKyAgICAiUGFyYW1ldGVycyI6IuunpOqwnOuzgOyImOuTpCIsCisgICAgIlBhcmFtZXRlciI6IuunpOqwnOuzgOyImCIsCisgICAgIlZhbHVlIjoi6rCSIiwKKyAgICAiRGVzY3JpcHRpb24iOiLshKTrqoUiLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6IuunpOqwnOuzgOyImCDtg4DsnoUiLAorICAgICJEYXRhIFR5cGUiOiLrjbDsnbTthLAg7YOA7J6FIiwKKyAgICAiUmVzcG9uc2UgTWVzc2FnZXMiOiLsnZHri7Ug66mU7IS47KeAIiwKKyAgICAiSFRUUCBTdGF0dXMgQ29kZSI6IkhUVFAg7IOB7YOcIOy9lOuTnCIsCisgICAgIlJlYXNvbiI6IuybkOyduCIsCisgICAgIlJlc3BvbnNlIE1vZGVsIjoi7J2R64u1IOuqqOuNuCIsCisgICAgIlJlcXVlc3QgVVJMIjoi7JqU7LKtIFVSTCIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiLsnZHri7Ug67O466y4IiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6IuydkeuLtSDsvZTrk5wiLAorICAgICJSZXNwb25zZSBIZWFkZXJzIjoi7J2R64u1IO2XpOuNlCIsCisgICAgIkhpZGUgUmVzcG9uc2UiOiLsnZHri7Ug7Iio6riw6riwIiwKKyAgICAiSGVhZGVycyI6Iu2XpOuNlCIsCisgICAgIlRyeSBpdCBvdXQhIjoi7I2o67O06riw77yBIiwKKyAgICAiU2hvdy9IaWRlIjoi67O07J206riwL+yIqOq4sOq4sCIsCisgICAgIkxpc3QgT3BlcmF0aW9ucyI6IuuqqeuhnSDsnpHsl4UiLAorICAgICJFeHBhbmQgT3BlcmF0aW9ucyI6IuyghOqwnCDsnpHsl4UiLAorICAgICJSYXciOiLsm5Drs7giLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6IkpTT07snYQg7YyM7Iux7ZWg7IiYIOyXhuydjC4g7JuQ67O46rKw6rO8OiIsCisgICAgIk1vZGVsIFNjaGVtYSI6IuuqqOuNuCDsiqTtgqTrp4giLAorICAgICJNb2RlbCI6IuuqqOuNuCIsCisgICAgImFwcGx5Ijoi7KCB7JqpIiwKKyAgICAiVXNlcm5hbWUiOiLsgqzsmqnsnpAg7J2066aEIiwKKyAgICAiUGFzc3dvcmQiOiLslZTtmLgiLAorICAgICJUZXJtcyBvZiBzZXJ2aWNlIjoi7J207Jqp7JW96rSAIiwKKyAgICAiQ3JlYXRlZCBieSI6IuyekeyEseyekCIsCisgICAgIlNlZSBtb3JlIGF0Ijoi7LaU6rCA7KCV67O077yaIiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoi6rCc67Cc7J6Q7JeQ6rKMIOusuOydmCIsCisgICAgImFwaSB2ZXJzaW9uIjoiYXBp67KE7KCEIiwKKyAgICAiUmVzcG9uc2UgQ29udGVudCBUeXBlIjoi7J2R64u1Q29udGVudCBUeXBlIiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UiOiLrpqzshozsiqQg6rCA7KC47Jik6riwIiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdCI6IuumrOyGjOyKpCDrqqnroZ0g6rCA7KC47Jik6riwIiwKKyAgICAiRXhwbG9yZSI6Iu2DkOyDiSIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiJTd2FnZ2VyIFBldHN0b3JlIOyYiOygnCDrs7TquLAiLAorICAgICJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIjoi7ISc67KE66Gc67aA7YSwIOydveyWtOuTpOydvOyImCDsl4bsirXri4jri6QuIGFjY2Vzcy1jb250cm9sLW9yaWdpbiDshKTsoJXsnbQg7Jis67CU66W07KeAIOyViuydhOyImCDsnojsirXri4jri6QuIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IuuLpOydjOydhCDsnITtlZwg7ZSE66Gc7Yag7L2c7J2EIOygle2VmOyEuOyalCIsCisgICAgIkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iOiJzd2FnZ2VyIEpTT04g7J2EIOuLpOydjOycvOuhnCDrtoDthLAg7J297J2E7IiYIOyXhuyKteuLiOuLpCIsCisgICAgIkZpbmlzaGVkIExvYWRpbmcgUmVzb3VyY2UgSW5mb3JtYXRpb24uIFJlbmRlcmluZyBTd2FnZ2VyIFVJIjoi66as7IaM7IqkIOygleuztCDrtojrn6zsmKTquLAg7JmE66OMLiBTd2FnZ2VyIFVJIOuenOuNlOungSIsCisgICAgIlVuYWJsZSB0byByZWFkIGFwaSI6ImFwaeulvCDsnb3snYQg7IiYIOyXhuyKteuLiOuLpC4iLAorICAgICJmcm9tIHBhdGgiOiLri6TsnYwg6rK966Gc66GcIOu2gO2EsCIsCisgICAgInNlcnZlciByZXR1cm5lZCI6IuyEnOuyhCDsnZHri7XtlaguIgorfSk7CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvcGwuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvcGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U0MWU5MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9wbC5qcwpAQCAtMCwwICsxLDUzIEBACisndXNlIHN0cmljdCc7CisKKy8qIGpzaGludCBxdW90bWFyazogZG91YmxlICovCit3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IubGVhcm4oeworICAgICJXYXJuaW5nOiBEZXByZWNhdGVkIjoiVXdhZ2E6IFd5Y29mYW5lIiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiJVd2FnaSBJbXBsZW1lbnRhY2ppIiwKKyAgICAiUmVzcG9uc2UgQ2xhc3MiOiJLbGFzYSBPZHBvd2llZHppIiwKKyAgICAiU3RhdHVzIjoiU3RhdHVzIiwKKyAgICAiUGFyYW1ldGVycyI6IlBhcmFtZXRyeSIsCisgICAgIlBhcmFtZXRlciI6IlBhcmFtZXRyIiwKKyAgICAiVmFsdWUiOiJXYXJ0b8WbxIciLAorICAgICJEZXNjcmlwdGlvbiI6Ik9waXMiLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6IlR5cCBQYXJhbWV0cnUiLAorICAgICJEYXRhIFR5cGUiOiJUeXAgRGFueWNoIiwKKyAgICAiUmVzcG9uc2UgTWVzc2FnZXMiOiJXaWFkb21vxZtjaSBPZHBvd2llZHppIiwKKyAgICAiSFRUUCBTdGF0dXMgQ29kZSI6IktvZCBTdGF0dXN1IEhUVFAiLAorICAgICJSZWFzb24iOiJQcnp5Y3p5bmEiLAorICAgICJSZXNwb25zZSBNb2RlbCI6Ik1vZGVsIE9kcG93aWVkemkiLAorICAgICJSZXF1ZXN0IFVSTCI6IlVSTCBXeXdvxYJhbmlhIiwKKyAgICAiUmVzcG9uc2UgQm9keSI6IlRyZcWbxIcgT2Rwb3dpZWR6aSIsCisgICAgIlJlc3BvbnNlIENvZGUiOiJLb2QgT2Rwb3dpZWR6aSIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiJOYWfFgsOzd2tpIE9kcG93aWVkemkiLAorICAgICJIaWRlIFJlc3BvbnNlIjoiVWtyeWogT2Rwb3dpZWTFuiIsCisgICAgIkhlYWRlcnMiOiJOYWfFgsOzd2tpIiwKKyAgICAiVHJ5IGl0IG91dCEiOiJXeXByw7NidWohIiwKKyAgICAiU2hvdy9IaWRlIjoiUG9rYcW8L1VrcnlqIiwKKyAgICAiTGlzdCBPcGVyYXRpb25zIjoiTGlzdGEgT3BlcmFjamkiLAorICAgICJFeHBhbmQgT3BlcmF0aW9ucyI6IlJvendpxYQgT3BlcmFjamUiLAorICAgICJSYXciOiJOaWVwcnpldHdvcnpvbmUiLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6Im5pZSBtb8W8bmEgcHJ6ZXR3b3J6ecSHIHBsaWt1IEpTT04uICBOaWVwcnpldHdvcnpvbmUgZGFuZSIsCisgICAgIk1vZGVsIFNjaGVtYSI6IlNjaGVtYXQgTW9kZWx1IiwKKyAgICAiTW9kZWwiOiJNb2RlbCIsCisgICAgImFwcGx5IjoidcW8eWoiLAorICAgICJVc2VybmFtZSI6Ik5hendhIHXFvHl0a293bmlrYSIsCisgICAgIlBhc3N3b3JkIjoiSGFzxYJvIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IldhcnVua2kgdcW8eXdhbmlhIiwKKyAgICAiQ3JlYXRlZCBieSI6IlV0d29yem9uZSBwcnpleiIsCisgICAgIlNlZSBtb3JlIGF0IjoiWm9iYWN6IHdpxJljZWogbmEiLAorICAgICJDb250YWN0IHRoZSBkZXZlbG9wZXIiOiJLb250YWt0IHogZGV3ZWxvcGVyZW0iLAorICAgICJhcGkgdmVyc2lvbiI6IndlcnNqYSBhcGkiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiJUeXAgWmFzb2J1IE9kcG93aWVkemkiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSI6IsWCYWRvd2FuaWUgemFzb2J1IiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdCI6IsWCYWRvd2FuaWUgbGlzdHkgemFzb2LDs3ciLAorICAgICJFeHBsb3JlIjoiRWtzcGxvcnVqIiwKKyAgICAiU2hvdyBTd2FnZ2VyIFBldHN0b3JlIEV4YW1wbGUgQXBpcyI6IlBva2HFvCBQcnp5a8WCYWRvd2UgQXBpIFN3YWdnZXIgUGV0c3RvcmUiLAorICAgICJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIjoiQnJhayBwb8WCxIVjemVuaWEgeiBzZXJ3ZXJlbS4gTW/FvGUgb24gbmllIG1pZcSHIG9kcG93aWVkbmljaCB1c3Rhd2llxYQgYWNjZXNzLWNvbnRyb2wtb3JpZ2luLiIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiJQcm9zesSZIHBvZGHEhyBwcm90b2vDs8WCIGRsYSIsCisgICAgIkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iOiJOaWUgbW/FvG5hIG9kY3p5dGHEhyBzd2FnZ2VyIEpTT04geiIsCisgICAgIkZpbmlzaGVkIExvYWRpbmcgUmVzb3VyY2UgSW5mb3JtYXRpb24uIFJlbmRlcmluZyBTd2FnZ2VyIFVJIjoiVWtvxYRjem9ubyDFgWFkb3dhbmllIEluZm9ybWFjamkgbyBaYXNvYmllLiBSZW5kZXJvd2FuaWUgU3dhZ2dlciBVSSIsCisgICAgIlVuYWJsZSB0byByZWFkIGFwaSI6Ik5pZSBtb8W8bmEgb2Rjenl0YcSHIGFwaSIsCisgICAgImZyb20gcGF0aCI6InplIMWbY2llxbxraSIsCisgICAgInNlcnZlciByZXR1cm5lZCI6InNlcndlciB6d3LDs2NpxYIiCit9KTsKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9wdC5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9wdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmU3YzEzCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL3B0LmpzCkBAIC0wLDAgKzEsNTMgQEAKKyd1c2Ugc3RyaWN0JzsKKworLyoganNoaW50IHF1b3RtYXJrOiBkb3VibGUgKi8KK3dpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvci5sZWFybih7CisgICAgIldhcm5pbmc6IERlcHJlY2F0ZWQiOiJBdmlzbzogRGVwcmVjaWFkbyIsCisgICAgIkltcGxlbWVudGF0aW9uIE5vdGVzIjoiTm90YXMgZGUgSW1wbGVtZW50YcOnw6NvIiwKKyAgICAiUmVzcG9uc2UgQ2xhc3MiOiJDbGFzc2UgZGUgcmVzcG9zdGEiLAorICAgICJTdGF0dXMiOiJTdGF0dXMiLAorICAgICJQYXJhbWV0ZXJzIjoiUGFyw6JtZXRyb3MiLAorICAgICJQYXJhbWV0ZXIiOiJQYXLDom1ldHJvIiwKKyAgICAiVmFsdWUiOiJWYWxvciIsCisgICAgIkRlc2NyaXB0aW9uIjoiRGVzY3Jpw6fDo28iLAorICAgICJQYXJhbWV0ZXIgVHlwZSI6IlRpcG8gZGUgcGFyw6JtZXRybyIsCisgICAgIkRhdGEgVHlwZSI6IlRpcG8gZGUgZGFkb3MiLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6Ik1lbnNhZ2VucyBkZSByZXNwb3N0YSIsCisgICAgIkhUVFAgU3RhdHVzIENvZGUiOiJDw7NkaWdvIGRlIHN0YXR1cyBIVFRQIiwKKyAgICAiUmVhc29uIjoiUmF6w6NvIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiJNb2RlbG8gcmVzcG9zdGEiLAorICAgICJSZXF1ZXN0IFVSTCI6IlVSTCByZXF1aXNpw6fDo28iLAorICAgICJSZXNwb25zZSBCb2R5IjoiQ29ycG8gZGEgcmVzcG9zdGEiLAorICAgICJSZXNwb25zZSBDb2RlIjoiQ8OzZGlnbyBkYSByZXNwb3N0YSIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiJDYWJlw6dhbGhvIGRhIHJlc3Bvc3RhIiwKKyAgICAiSGVhZGVycyI6IkNhYmXDp2FsaG9zIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6IkVzY29uZGVyIHJlc3Bvc3RhIiwKKyAgICAiVHJ5IGl0IG91dCEiOiJUZW50ZSBhZ29yYSEiLAorICAgICJTaG93L0hpZGUiOiJNb3N0cmFyL0VzY29uZGVyIiwKKyAgICAiTGlzdCBPcGVyYXRpb25zIjoiTGlzdGFyIG9wZXJhw6fDtWVzIiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiJFeHBhbmRpciBvcGVyYcOnw7VlcyIsCisgICAgIlJhdyI6IkNydSIsCisgICAgImNhbid0IHBhcnNlIEpTT04uICBSYXcgcmVzdWx0IjoiRmFsaGEgYW8gYW5hbGlzYXIgSlNPTi4gIFJlc3VsdG8gY3J1IiwKKyAgICAiTW9kZWwgU2NoZW1hIjoiTW9kZWxvIGVzcXVlbWEiLAorICAgICJNb2RlbCI6Ik1vZGVsbyIsCisgICAgImFwcGx5IjoiQXBsaWNhciIsCisgICAgIlVzZXJuYW1lIjoiVXN1w6FyaW8iLAorICAgICJQYXNzd29yZCI6IlNlbmhhIiwKKyAgICAiVGVybXMgb2Ygc2VydmljZSI6IlRlcm1vcyBkbyBzZXJ2acOnbyIsCisgICAgIkNyZWF0ZWQgYnkiOiJDcmlhZG8gcG9yIiwKKyAgICAiU2VlIG1vcmUgYXQiOiJWZWphIG1haXMgZW0iLAorICAgICJDb250YWN0IHRoZSBkZXZlbG9wZXIiOiJDb250YXRlIG8gZGVzZW52b2x2ZWRvciIsCisgICAgImFwaSB2ZXJzaW9uIjoiVmVyc8OjbyBhcGkiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiJUaXBvIGRlIGNvbnRlw7pkbyBkYSByZXNwb3N0YSIsCisgICAgImZldGNoaW5nIHJlc291cmNlIjoiYnVzY2EgcmVjdXJzbyIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiJidXNjYW5kbyBsaXN0YSBkZSByZWN1cnNvcyIsCisgICAgIkV4cGxvcmUiOiJFeHBsb3JhciIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiJTaG93IFN3YWdnZXIgUGV0c3RvcmUgRXhhbXBsZSBBcGlzIiwKKyAgICAiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6Ik7Do28gw6kgcG9zc8OtdmVsIGxlciBkbyBzZXJ2aWRvci4gUG9kZSBuw6NvIHRlciBhcyBhcHJvcHJpYWRhcyBjb25maWd1cmHDp8O1ZXMgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IlBvciBmYXZvciBlc3BlY2lmaXF1ZSBvIHByb3RvY29sbyIsCisgICAgIkNhbid0IHJlYWQgc3dhZ2dlciBKU09OIGZyb20iOiJOw6NvIMOpIHBvc3PDrXZlbCBsZXIgbyBKU09OIFN3YWdnZXIgZGUiLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IkNhcnJlZ2FyIGluZm9ybWHDp8OjbyBkZSByZWN1cnNvIGZpbmFsaXphZGEuIFJlbmRlcml6YW5kbyBTd2FnZ2VyIFVJIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoiTsOjbyBmb2kgcG9zc8OtdmVsIGxlciBhcGkiLAorICAgICJmcm9tIHBhdGgiOiJkbyBjYW1pbmhvIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoic2Vydmlkb3IgcmV0b3Jub3UiCit9KTsKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9ydS5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy9ydS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTI3NDRlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL3J1LmpzCkBAIC0wLDAgKzEsNTYgQEAKKyd1c2Ugc3RyaWN0JzsKKworLyoganNoaW50IHF1b3RtYXJrOiBkb3VibGUgKi8KK3dpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvci5sZWFybih7CisgICAgIldhcm5pbmc6IERlcHJlY2F0ZWQiOiLQn9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1OiDQo9GB0YLQsNGA0LXQu9C+IiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiLQl9Cw0LzQtdGC0LrQuCIsCisgICAgIlJlc3BvbnNlIENsYXNzIjoi0J/RgNC40LzQtdGAINC+0YLQstC10YLQsCIsCisgICAgIlN0YXR1cyI6ItCh0YLQsNGC0YPRgSIsCisgICAgIlBhcmFtZXRlcnMiOiLQn9Cw0YDQsNC80LXRgtGA0YsiLAorICAgICJQYXJhbWV0ZXIiOiLQn9Cw0YDQsNC80LXRgtGAIiwKKyAgICAiVmFsdWUiOiLQl9C90LDRh9C10L3QuNC1IiwKKyAgICAiRGVzY3JpcHRpb24iOiLQntC/0LjRgdCw0L3QuNC1IiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiLQotC40L8g0L/QsNGA0LDQvNC10YLRgNCwIiwKKyAgICAiRGF0YSBUeXBlIjoi0KLQuNC/INC00LDQvdC90YvRhSIsCisgICAgIkhUVFAgU3RhdHVzIENvZGUiOiJIVFRQINC60L7QtCIsCisgICAgIlJlYXNvbiI6ItCf0YDQuNGH0LjQvdCwIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiLQodGC0YDRg9C60YLRg9GA0LAg0L7RgtCy0LXRgtCwIiwKKyAgICAiUmVxdWVzdCBVUkwiOiJVUkwg0LfQsNC/0YDQvtGB0LAiLAorICAgICJSZXNwb25zZSBCb2R5Ijoi0KLQtdC70L4g0L7RgtCy0LXRgtCwIiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6IkhUVFAg0LrQvtC0INC+0YLQstC10YLQsCIsCisgICAgIlJlc3BvbnNlIEhlYWRlcnMiOiLQl9Cw0LPQvtC70L7QstC60Lgg0L7RgtCy0LXRgtCwIiwKKyAgICAiSGlkZSBSZXNwb25zZSI6ItCh0L/RgNGP0YLQsNGC0Ywg0L7RgtCy0LXRgiIsCisgICAgIkhlYWRlcnMiOiLQl9Cw0LPQvtC70L7QstC60LgiLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6ItCn0YLQviDQvNC+0LbQtdGCINC/0YDQuNC50YLQuCDQsiDQvtGC0LLQtdGCIiwKKyAgICAiVHJ5IGl0IG91dCEiOiLQn9C+0L/RgNC+0LHQvtCy0LDRgtGMISIsCisgICAgIlNob3cvSGlkZSI6ItCf0L7QutCw0LfQsNGC0Ywv0KHQutGA0YvRgtGMIiwKKyAgICAiTGlzdCBPcGVyYXRpb25zIjoi0J7Qv9C10YDQsNGG0LjQuCDQutGA0LDRgtC60L4iLAorICAgICJFeHBhbmQgT3BlcmF0aW9ucyI6ItCe0L/QtdGA0LDRhtC40Lgg0L/QvtC00YDQvtCx0L3QviIsCisgICAgIlJhdyI6ItCSINGB0YvRgNC+0Lwg0LLQuNC00LUiLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6ItCd0LUg0YPQtNCw0LXRgtGB0Y8g0YDQsNGB0L/QsNGA0YHQuNGC0Ywg0L7RgtCy0LXRgjoiLAorICAgICJFeGFtcGxlIFZhbHVlIjoi0J/RgNC40LzQtdGAIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoi0KHRgtGA0YPQutGC0YPRgNCwIiwKKyAgICAiTW9kZWwiOiLQntC/0LjRgdCw0L3QuNC1IiwKKyAgICAiQ2xpY2sgdG8gc2V0IGFzIHBhcmFtZXRlciB2YWx1ZSI6ItCd0LDQttC80LjRgtC1LCDRh9GC0L7QsdGLINC40YHQv9C70YzQt9C+0LLQsNGC0Ywg0LIg0LrQsNGH0LXRgdGC0LLQtSDQt9C90LDRh9C10L3QuNGPINC/0LDRgNCw0LzQtdGC0YDQsCIsCisgICAgImFwcGx5Ijoi0L/RgNC40LzQtdC90LjRgtGMIiwKKyAgICAiVXNlcm5hbWUiOiLQmNC80Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIiwKKyAgICAiUGFzc3dvcmQiOiLQn9Cw0YDQvtC70YwiLAorICAgICJUZXJtcyBvZiBzZXJ2aWNlIjoi0KPRgdC70L7QstC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8iLAorICAgICJDcmVhdGVkIGJ5Ijoi0KDQsNC30YDQsNCx0L7RgtCw0L3QviIsCisgICAgIlNlZSBtb3JlIGF0Ijoi0JXRidC1INGC0YPRgiIsCisgICAgIkNvbnRhY3QgdGhlIGRldmVsb3BlciI6ItCh0LLRj9C30LDRgtGM0YHRjyDRgSDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QvCIsCisgICAgImFwaSB2ZXJzaW9uIjoi0JLQtdGA0YHQuNGPIEFQSSIsCisgICAgIlJlc3BvbnNlIENvbnRlbnQgVHlwZSI6IkNvbnRlbnQgVHlwZSDQvtGC0LLQtdGC0LAiLAorICAgICJQYXJhbWV0ZXIgY29udGVudCB0eXBlOiI6IkNvbnRlbnQgVHlwZSDQv9Cw0YDQsNC80LXRgtGA0LA6IiwKKyAgICAiZmV0Y2hpbmcgcmVzb3VyY2UiOiLQn9C+0LvRg9GH0LXQvdC40LUg0YDQtdGB0YPRgNGB0LAiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSBsaXN0Ijoi0J/QvtC70YPRh9C10L3QuNC1INGA0LXRgdGD0YDRgdC+0LIiLAorICAgICJFeHBsb3JlIjoi0J/QvtC60LDQt9Cw0YLRjCIsCisgICAgIlNob3cgU3dhZ2dlciBQZXRzdG9yZSBFeGFtcGxlIEFwaXMiOiLQn9C+0LrQsNC30LDRgtGMINC/0YDQuNC80LXRgNGLINCQ0J/QmCIsCisgICAgIkNhbid0IHJlYWQgZnJvbSBzZXJ2ZXIuIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6ItCd0LUg0YPQtNCw0LXRgtGB0Y8g0L/QvtC70YPRh9C40YLRjCDQvtGC0LLQtdGCINC+0YIg0YHQtdGA0LLQtdGA0LAuINCS0L7Qt9C80L7QttC90L4sINC/0YDQvtCx0LvQtdC80LAg0YEg0L3QsNGB0YLRgNC+0LnQutCw0LzQuCDQtNC+0YHRgtGD0L/QsCIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiLQn9C+0LbQsNC70YPQudGB0YLQsCwg0YPQutCw0LbQuNGC0LUg0L/RgNC+0YLQvtC60L7QuyDQtNC70Y8iLAorICAgICJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tIjoi0J3QtSDQv9C+0LvRg9GH0LDQtdGC0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Ywgc3dhZ2dlciBqc29uINC40LciLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6ItCX0LDQs9GA0YPQt9C60LAg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0YDQtdGB0YPRgNGB0LDRhSDQt9Cw0LLQtdGA0YjQtdC90LAuINCg0LXQvdC00LXRgNC40LwiLAorICAgICJVbmFibGUgdG8gcmVhZCBhcGkiOiLQndC1INGD0LTQsNC70L7RgdGMINC/0YDQvtGH0LjRgtCw0YLRjCBhcGkiLAorICAgICJmcm9tIHBhdGgiOiLQv9C+INCw0LTRgNC10YHRgyIsCisgICAgInNlcnZlciByZXR1cm5lZCI6ItGB0LXRgNCy0LXRgCDRgdC60LDQt9Cw0LsiCit9KTsKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy90ci5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy90ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjQyNmE5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL3RyLmpzCkBAIC0wLDAgKzEsNTMgQEAKKyd1c2Ugc3RyaWN0JzsKKworLyoganNoaW50IHF1b3RtYXJrOiBkb3VibGUgKi8KK3dpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvci5sZWFybih7CisgICAgIldhcm5pbmc6IERlcHJlY2F0ZWQiOiJVeWFyxLE6IERlcHJlY2F0ZWQiLAorICAgICJJbXBsZW1lbnRhdGlvbiBOb3RlcyI6IkdlcsOnZWtsZcWfdGlyaW0gTm90bGFyxLEiLAorICAgICJSZXNwb25zZSBDbGFzcyI6IkTDtm5lbiBTxLFuxLFmIiwKKyAgICAiU3RhdHVzIjoiU3RhdMO8IiwKKyAgICAiUGFyYW1ldGVycyI6IlBhcmFtZXRyZWxlciIsCisgICAgIlBhcmFtZXRlciI6IlBhcmFtZXRyZSIsCisgICAgIlZhbHVlIjoiRGXEn2VyIiwKKyAgICAiRGVzY3JpcHRpb24iOiJBw6fEsWtsYW1hIiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiJQYXJhbWV0cmUgVGlwaSIsCisgICAgIkRhdGEgVHlwZSI6IlZlcmkgVGlwaSIsCisgICAgIlJlc3BvbnNlIE1lc3NhZ2VzIjoiRMO2bsO8xZ8gTWVzYWrEsSIsCisgICAgIkhUVFAgU3RhdHVzIENvZGUiOiJIVFRQIFN0YXTDvCBLb2R1IiwKKyAgICAiUmVhc29uIjoiR2VyZWvDp2UiLAorICAgICJSZXNwb25zZSBNb2RlbCI6IkTDtm7DvMWfIE1vZGVsaSIsCisgICAgIlJlcXVlc3QgVVJMIjoixLBzdGVrIFVSTCIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiJEw7Zuw7zFnyDEsMOnZXJpxJ9pIiwKKyAgICAiUmVzcG9uc2UgQ29kZSI6IkTDtm7DvMWfIEtvZHUiLAorICAgICJSZXNwb25zZSBIZWFkZXJzIjoiRMO2bsO8xZ8gw5xzdCBCaWxnaWxlcmkiLAorICAgICJIaWRlIFJlc3BvbnNlIjoiRMO2bsO8xZ/DvCBHaXpsZSIsCisgICAgIkhlYWRlcnMiOiLDnHN0IEJpbGdpbGVyIiwKKyAgICAiVHJ5IGl0IG91dCEiOiJEZW5lISIsCisgICAgIlNob3cvSGlkZSI6IkfDtnN0ZXIvR2l6bGUiLAorICAgICJMaXN0IE9wZXJhdGlvbnMiOiJPcGVyYXN5b25sYXLEsSBMaXN0ZWxlIiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiJPcGVyYXN5b25sYXLEsSBBw6ciLAorICAgICJSYXciOiJIYW0iLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6IkpTT04gw6fDtnrDvG1sZW5lbWl5b3IuICBIYW0gc29udcOnIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoiTW9kZWwgxZ5lbWEiLAorICAgICJNb2RlbCI6Ik1vZGVsIiwKKyAgICAiYXBwbHkiOiJ1eWd1bGEiLAorICAgICJVc2VybmFtZSI6Ikt1bGxhbsSxY8SxIEFkxLEiLAorICAgICJQYXNzd29yZCI6IlBhcm9sYSIsCisgICAgIlRlcm1zIG9mIHNlcnZpY2UiOiJTZXJ2aXMgxZ9hcnRsYXLEsSIsCisgICAgIkNyZWF0ZWQgYnkiOiJPbHXFn3R1cmFuIiwKKyAgICAiU2VlIG1vcmUgYXQiOiJEYWhhIGZhemxhc8SxIGnDp2luIiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoiR2VsacWfdGlyaWNpIGlsZSDEsGxldGnFn2ltZSBHZcOnaW4iLAorICAgICJhcGkgdmVyc2lvbiI6ImFwaSB2ZXJzaXlvbiIsCisgICAgIlJlc3BvbnNlIENvbnRlbnQgVHlwZSI6IkTDtm7DvMWfIMSww6dlcmlrIFRpcGkiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSI6ImtheW5hayBnZXRpcmlsaXlvciIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiJrYXluYWsgbGlzdGVzaSBnZXRpcmlsaXlvciIsCisgICAgIkV4cGxvcmUiOiJLZcWfZmV0IiwKKyAgICAiU2hvdyBTd2FnZ2VyIFBldHN0b3JlIEV4YW1wbGUgQXBpcyI6IlN3YWdnZXIgUGV0c3RvcmUgw5ZybmVrIEFwaSd5aSBHw7ZyIiwKKyAgICAiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6IlN1bnVjdWRhbiBva3VtYSB5YXDEsWxhbcSxeW9yLiBTdW51Y3UgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIGF5YXJsYXLEsW7EsXrEsSBrb250cm9sIGVkaW4uIiwKKyAgICAiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciI6IkzDvHRmZW4gaXN0ZW5lbiBhZHJlcyBpw6dpbiBwcm90b2tvbCBiZWxpcnRpbml6IiwKKyAgICAiQ2FuJ3QgcmVhZCBzd2FnZ2VyIEpTT04gZnJvbSI6IlN3YWdnZXIgSlNPTiBidSBrYXluYWt0YW4gb2t1bmFtxLF5b3IiLAorICAgICJGaW5pc2hlZCBMb2FkaW5nIFJlc291cmNlIEluZm9ybWF0aW9uLiBSZW5kZXJpbmcgU3dhZ2dlciBVSSI6IktheW5hayBiYWdsYW50xLFzxLEgdGFtYW1sYW5kxLEuIFN3YWdnZXIgVUkgZ8O2c3RlcmltZSBoYXrEsXJsYW7EsXlvciIsCisgICAgIlVuYWJsZSB0byByZWFkIGFwaSI6ImFwaSBva3VuYW1hZMSxIiwKKyAgICAiZnJvbSBwYXRoIjoieW9sZGFuIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoic3VudWN1eWEgZMO2bsO8bGTDvCIKK30pOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL3RyYW5zbGF0b3IuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvdHJhbnNsYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmI4NzlmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9sYW5nL3RyYW5zbGF0b3IuanMKQEAgLTAsMCArMSwzOSBAQAorJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIFRyYW5zbGF0b3IgZm9yIGRvY3VtZW50YXRpb24gcGFnZXMuCisgKgorICogVG8gZW5hYmxlIHRyYW5zbGF0aW9uIHlvdSBzaG91bGQgaW5jbHVkZSBvbmUgb2YgbGFuZ3VhZ2UtZmlsZXMgaW4geW91ciBpbmRleC5odG1sCisgKiBhZnRlciA8c2NyaXB0IHNyYz0nbGFuZy90cmFuc2xhdG9yLmpzJyB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPjwvc2NyaXB0Pi4KKyAqIEZvciBleGFtcGxlIC0gPHNjcmlwdCBzcmM9J2xhbmcvcnUuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+CisgKgorICogSWYgeW91IHdpc2ggdG8gdHJhbnNsYXRlIHNvbWUgbmV3IHRleHRzIHlvdSBzaG91bGQgZG8gdHdvIHRoaW5nczoKKyAqIDEuIEFkZCBhIG5ldyBwaHJhc2UgcGFpciAoIk5ldyBQaHJhc2UiOiAiTmV3IFRyYW5zbGF0aW9uIikgaW50byB5b3VyIGxhbmd1YWdlIGZpbGUgKGZvciBleGFtcGxlIGxhbmcvcnUuanMpLiBJdCB3aWxsIGJlIGdyZWF0IGlmIHlvdSBhZGQgaXQgaW4gb3RoZXIgbGFuZ3VhZ2UgZmlsZXMgdG9vLgorICogMi4gTWFyayB0aGF0IHRleHQgaXQgdGVtcGxhdGVzIHRoaXMgd2F5IDxhbnlIdG1sVGFnIGRhdGEtc3ctdHJhbnNsYXRlPk5ldyBQaHJhc2U8L2FueUh0bWxUYWc+IG9yIDxhbnlIdG1sVGFnIGRhdGEtc3ctdHJhbnNsYXRlIHZhbHVlPSdOZXcgUGhyYXNlJy8+LgorICogVGhlIG1haW4gdGhpbmcgaGVyZSBpcyBhdHRyaWJ1dGUgZGF0YS1zdy10cmFuc2xhdGUuIE9ubHkgaW5uZXIgaHRtbCwgdGl0bGUtYXR0cmlidXRlIGFuZCB2YWx1ZS1hdHRyaWJ1dGUgYXJlIGdvaW5nIHRvIHRyYW5zbGF0ZS4KKyAqCisgKi8KK3dpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvciA9IHsKKworICAgIF93b3JkczpbXSwKKworICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24oc2VsKSB7CisgICAgICB2YXIgJHRoaXMgPSB0aGlzOworICAgICAgc2VsID0gc2VsIHx8ICdbZGF0YS1zdy10cmFuc2xhdGVdJzsKKworICAgICAgJChzZWwpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAgICQodGhpcykuaHRtbCgkdGhpcy5fdHJ5VHJhbnNsYXRlKCQodGhpcykuaHRtbCgpKSk7CisKKyAgICAgICAgJCh0aGlzKS52YWwoJHRoaXMuX3RyeVRyYW5zbGF0ZSgkKHRoaXMpLnZhbCgpKSk7CisgICAgICAgICQodGhpcykuYXR0cigndGl0bGUnLCAkdGhpcy5fdHJ5VHJhbnNsYXRlKCQodGhpcykuYXR0cigndGl0bGUnKSkpOworICAgICAgfSk7CisgICAgfSwKKworICAgIF90cnlUcmFuc2xhdGU6IGZ1bmN0aW9uKHdvcmQpIHsKKyAgICAgIHJldHVybiB0aGlzLl93b3Jkc1skLnRyaW0od29yZCldICE9PSB1bmRlZmluZWQgPyB0aGlzLl93b3Jkc1skLnRyaW0od29yZCldIDogd29yZDsKKyAgICB9LAorCisgICAgbGVhcm46IGZ1bmN0aW9uKHdvcmRzTWFwKSB7CisgICAgICB0aGlzLl93b3JkcyA9IHdvcmRzTWFwOworICAgIH0KK307CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvemgtY24uanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xhbmcvemgtY24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FmNjFhZAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGFuZy96aC1jbi5qcwpAQCAtMCwwICsxLDU2IEBACisndXNlIHN0cmljdCc7CisKKy8qIGpzaGludCBxdW90bWFyazogZG91YmxlICovCit3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IubGVhcm4oeworICAgICJXYXJuaW5nOiBEZXByZWNhdGVkIjoi6K2m5ZGK77ya5bey6L+H5pe2IiwKKyAgICAiSW1wbGVtZW50YXRpb24gTm90ZXMiOiLlrp7njrDlpIfms6giLAorICAgICJSZXNwb25zZSBDbGFzcyI6IuWTjeW6lOexuyIsCisgICAgIlN0YXR1cyI6IueKtuaAgSIsCisgICAgIlBhcmFtZXRlcnMiOiLlj4LmlbAiLAorICAgICJQYXJhbWV0ZXIiOiLlj4LmlbAiLAorICAgICJWYWx1ZSI6IuWAvCIsCisgICAgIkRlc2NyaXB0aW9uIjoi5o+P6L+wIiwKKyAgICAiUGFyYW1ldGVyIFR5cGUiOiLlj4LmlbDnsbvlnosiLAorICAgICJEYXRhIFR5cGUiOiLmlbDmja7nsbvlnosiLAorICAgICJSZXNwb25zZSBNZXNzYWdlcyI6IuWTjeW6lOa2iOaBryIsCisgICAgIkhUVFAgU3RhdHVzIENvZGUiOiJIVFRQ54q25oCB56CBIiwKKyAgICAiUmVhc29uIjoi5Y6f5ZugIiwKKyAgICAiUmVzcG9uc2UgTW9kZWwiOiLlk43lupTmqKHlnosiLAorICAgICJSZXF1ZXN0IFVSTCI6Iuivt+axglVSTCIsCisgICAgIlJlc3BvbnNlIEJvZHkiOiLlk43lupTkvZMiLAorICAgICJSZXNwb25zZSBDb2RlIjoi5ZON5bqU56CBIiwKKyAgICAiUmVzcG9uc2UgSGVhZGVycyI6IuWTjeW6lOWktCIsCisgICAgIkhpZGUgUmVzcG9uc2UiOiLpmpDol4/lk43lupQiLAorICAgICJIZWFkZXJzIjoi5aS0IiwKKyAgICAiVHJ5IGl0IG91dCEiOiLor5XkuIDkuIvvvIEiLAorICAgICJTaG93L0hpZGUiOiLmmL7npLov6ZqQ6JePIiwKKyAgICAiTGlzdCBPcGVyYXRpb25zIjoi5pi+56S65pON5L2cIiwKKyAgICAiRXhwYW5kIE9wZXJhdGlvbnMiOiLlsZXlvIDmk43kvZwiLAorICAgICJSYXciOiLljp/lp4siLAorICAgICJjYW4ndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdCI6IuaXoOazleino+aekEpTT04uIOWOn+Wni+e7k+aenCIsCisgICAgIkV4YW1wbGUgVmFsdWUiOiLnpLrkvosiLAorICAgICJDbGljayB0byBzZXQgYXMgcGFyYW1ldGVyIHZhbHVlIjoi54K55Ye76K6+572u5Y+C5pWwIiwKKyAgICAiTW9kZWwgU2NoZW1hIjoi5qih5Z6L5p625p6EIiwKKyAgICAiTW9kZWwiOiLmqKHlnosiLAorICAgICJhcHBseSI6IuW6lOeUqCIsCisgICAgIlVzZXJuYW1lIjoi55So5oi35ZCNIiwKKyAgICAiUGFzc3dvcmQiOiLlr4bnoIEiLAorICAgICJUZXJtcyBvZiBzZXJ2aWNlIjoi5pyN5Yqh5p2h5qy+IiwKKyAgICAiQ3JlYXRlZCBieSI6IuWIm+W7uuiAhSIsCisgICAgIlNlZSBtb3JlIGF0Ijoi5p+l55yL5pu05aSa77yaIiwKKyAgICAiQ29udGFjdCB0aGUgZGV2ZWxvcGVyIjoi6IGU57O75byA5Y+R6ICFIiwKKyAgICAiYXBpIHZlcnNpb24iOiJhcGnniYjmnKwiLAorICAgICJSZXNwb25zZSBDb250ZW50IFR5cGUiOiLlk43lupRDb250ZW50IFR5cGUiLAorICAgICJQYXJhbWV0ZXIgY29udGVudCB0eXBlOiI6IuWPguaVsOexu+WeizoiLAorICAgICJmZXRjaGluZyByZXNvdXJjZSI6Iuato+WcqOiOt+WPlui1hOa6kCIsCisgICAgImZldGNoaW5nIHJlc291cmNlIGxpc3QiOiLmraPlnKjojrflj5botYTmupDliJfooagiLAorICAgICJFeHBsb3JlIjoi5rWP6KeIIiwKKyAgICAiU2hvdyBTd2FnZ2VyIFBldHN0b3JlIEV4YW1wbGUgQXBpcyI6IuaYvuekuiBTd2FnZ2VyIFBldHN0b3JlIOekuuS+iyBBcGlzIiwKKyAgICAiQ2FuJ3QgcmVhZCBmcm9tIHNlcnZlci4gIEl0IG1heSBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzLWNvbnRyb2wtb3JpZ2luIHNldHRpbmdzLiI6IuaXoOazleS7juacjeWKoeWZqOivu+WPluOAguWPr+iDveayoeacieato+ehruiuvue9rmFjY2Vzcy1jb250cm9sLW9yaWdpbuOAgiIsCisgICAgIlBsZWFzZSBzcGVjaWZ5IHRoZSBwcm90b2NvbCBmb3IiOiLor7fmjIflrprljY/orq7vvJoiLAorICAgICJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tIjoi5peg5rOV6K+75Y+Wc3dhZ2dlciBKU09O5LqOIiwKKyAgICAiRmluaXNoZWQgTG9hZGluZyBSZXNvdXJjZSBJbmZvcm1hdGlvbi4gUmVuZGVyaW5nIFN3YWdnZXIgVUkiOiLlt7LliqDovb3otYTmupDkv6Hmga/jgILmraPlnKjmuLLmn5NTd2FnZ2VyIFVJIiwKKyAgICAiVW5hYmxlIHRvIHJlYWQgYXBpIjoi5peg5rOV6K+75Y+WYXBpIiwKKyAgICAiZnJvbSBwYXRoIjoi5LuO6Lev5b6EIiwKKyAgICAic2VydmVyIHJldHVybmVkIjoi5pyN5Yqh5Zmo6L+U5ZueIgorfSk7CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9iYWNrYm9uZS1taW4uanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9iYWNrYm9uZS1taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmZjAyZQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2JhY2tib25lLW1pbi5qcwpAQCAtMCwwICsxIEBACishZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbInVuZGVyc2NvcmUiLCJqcXVlcnkiLCJleHBvcnRzIl0sZnVuY3Rpb24oaSxuLHMpe3QuQmFja2JvbmU9ZSh0LHMsaSxuKX0pO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzKXt2YXIgaT1yZXF1aXJlKCJ1bmRlcnNjb3JlIik7ZSh0LGV4cG9ydHMsaSl9ZWxzZSB0LkJhY2tib25lPWUodCx7fSx0Ll8sdC5qUXVlcnl8fHQuWmVwdG98fHQuZW5kZXJ8fHQuJCl9KHRoaXMsZnVuY3Rpb24odCxlLGksbil7dmFyIHM9dC5CYWNrYm9uZSxyPVtdLGE9KHIucHVzaCxyLnNsaWNlKTtyLnNwbGljZTtlLlZFUlNJT049IjEuMS4yIixlLiQ9bixlLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdC5CYWNrYm9uZT1zLHRoaXN9LGUuZW11bGF0ZUhUVFA9ITEsZS5lbXVsYXRlSlNPTj0hMTt2YXIgbz1lLkV2ZW50cz17b246ZnVuY3Rpb24odCxlLGkpe2lmKCFjKHRoaXMsIm9uIix0LFtlLGldKXx8IWUpcmV0dXJuIHRoaXM7dGhpcy5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPXt9KTt2YXIgbj10aGlzLl9ldmVudHNbdF18fCh0aGlzLl9ldmVudHNbdF09W10pO3JldHVybiBuLnB1c2goe2NhbGxiYWNrOmUsY29udGV4dDppLGN0eDppfHx0aGlzfSksdGhpc30sb25jZTpmdW5jdGlvbih0LGUsbil7aWYoIWModGhpcywib25jZSIsdCxbZSxuXSl8fCFlKXJldHVybiB0aGlzO3ZhciBzPXRoaXMscj1pLm9uY2UoZnVuY3Rpb24oKXtzLm9mZih0LHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk7cmV0dXJuIHIuX2NhbGxiYWNrPWUsdGhpcy5vbih0LHIsbil9LG9mZjpmdW5jdGlvbih0LGUsbil7dmFyIHMscixhLG8saCx1LGwsZDtpZighdGhpcy5fZXZlbnRzfHwhYyh0aGlzLCJvZmYiLHQsW2Usbl0pKXJldHVybiB0aGlzO2lmKCF0JiYhZSYmIW4pcmV0dXJuIHRoaXMuX2V2ZW50cz12b2lkIDAsdGhpcztmb3Iobz10P1t0XTppLmtleXModGhpcy5fZXZlbnRzKSxoPTAsdT1vLmxlbmd0aDtoPHU7aCsrKWlmKHQ9b1toXSxhPXRoaXMuX2V2ZW50c1t0XSl7aWYodGhpcy5fZXZlbnRzW3RdPXM9W10sZXx8bilmb3IobD0wLGQ9YS5sZW5ndGg7bDxkO2wrKylyPWFbbF0sKGUmJmUhPT1yLmNhbGxiYWNrJiZlIT09ci5jYWxsYmFjay5fY2FsbGJhY2t8fG4mJm4hPT1yLmNvbnRleHQpJiZzLnB1c2gocik7cy5sZW5ndGh8fGRlbGV0ZSB0aGlzLl9ldmVudHNbdF19cmV0dXJuIHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpczt2YXIgZT1hLmNhbGwoYXJndW1lbnRzLDEpO2lmKCFjKHRoaXMsInRyaWdnZXIiLHQsZSkpcmV0dXJuIHRoaXM7dmFyIGk9dGhpcy5fZXZlbnRzW3RdLG49dGhpcy5fZXZlbnRzLmFsbDtyZXR1cm4gaSYmdShpLGUpLG4mJnUobixhcmd1bWVudHMpLHRoaXN9LHN0b3BMaXN0ZW5pbmc6ZnVuY3Rpb24odCxlLG4pe3ZhciBzPXRoaXMuX2xpc3RlbmluZ1RvO2lmKCFzKXJldHVybiB0aGlzO3ZhciByPSFlJiYhbjtufHwib2JqZWN0IiE9dHlwZW9mIGV8fChuPXRoaXMpLHQmJigocz17fSlbdC5fbGlzdGVuSWRdPXQpO2Zvcih2YXIgYSBpbiBzKXQ9c1thXSx0Lm9mZihlLG4sdGhpcyksKHJ8fGkuaXNFbXB0eSh0Ll9ldmVudHMpKSYmZGVsZXRlIHRoaXMuX2xpc3RlbmluZ1RvW2FdO3JldHVybiB0aGlzfX0saD0vXHMrLyxjPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFpKXJldHVybiEwO2lmKCJvYmplY3QiPT10eXBlb2YgaSl7Zm9yKHZhciBzIGluIGkpdFtlXS5hcHBseSh0LFtzLGlbc11dLmNvbmNhdChuKSk7cmV0dXJuITF9aWYoaC50ZXN0KGkpKXtmb3IodmFyIHI9aS5zcGxpdChoKSxhPTAsbz1yLmxlbmd0aDthPG87YSsrKXRbZV0uYXBwbHkodCxbclthXV0uY29uY2F0KG4pKTtyZXR1cm4hMX1yZXR1cm4hMH0sdT1mdW5jdGlvbih0LGUpe3ZhciBpLG49LTEscz10Lmxlbmd0aCxyPWVbMF0sYT1lWzFdLG89ZVsyXTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpmb3IoOysrbjxzOykoaT10W25dKS5jYWxsYmFjay5jYWxsKGkuY3R4KTtyZXR1cm47Y2FzZSAxOmZvcig7KytuPHM7KShpPXRbbl0pLmNhbGxiYWNrLmNhbGwoaS5jdHgscik7cmV0dXJuO2Nhc2UgMjpmb3IoOysrbjxzOykoaT10W25dKS5jYWxsYmFjay5jYWxsKGkuY3R4LHIsYSk7cmV0dXJuO2Nhc2UgMzpmb3IoOysrbjxzOykoaT10W25dKS5jYWxsYmFjay5jYWxsKGkuY3R4LHIsYSxvKTtyZXR1cm47ZGVmYXVsdDpmb3IoOysrbjxzOykoaT10W25dKS5jYWxsYmFjay5hcHBseShpLmN0eCxlKTtyZXR1cm59fSxsPXtsaXN0ZW5Ubzoib24iLGxpc3RlblRvT25jZToib25jZSJ9O2kuZWFjaChsLGZ1bmN0aW9uKHQsZSl7b1tlXT1mdW5jdGlvbihlLG4scyl7dmFyIHI9dGhpcy5fbGlzdGVuaW5nVG98fCh0aGlzLl9saXN0ZW5pbmdUbz17fSksYT1lLl9saXN0ZW5JZHx8KGUuX2xpc3RlbklkPWkudW5pcXVlSWQoImwiKSk7cmV0dXJuIHJbYV09ZSxzfHwib2JqZWN0IiE9dHlwZW9mIG58fChzPXRoaXMpLGVbdF0obixzLHRoaXMpLHRoaXN9fSksby5iaW5kPW8ub24sby51bmJpbmQ9by5vZmYsaS5leHRlbmQoZSxvKTt2YXIgZD1lLk1vZGVsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dHx8e307ZXx8KGU9e30pLHRoaXMuY2lkPWkudW5pcXVlSWQoImMiKSx0aGlzLmF0dHJpYnV0ZXM9e30sZS5jb2xsZWN0aW9uJiYodGhpcy5jb2xsZWN0aW9uPWUuY29sbGVjdGlvbiksZS5wYXJzZSYmKG49dGhpcy5wYXJzZShuLGUpfHx7fSksbj1pLmRlZmF1bHRzKHt9LG4saS5yZXN1bHQodGhpcywiZGVmYXVsdHMiKSksdGhpcy5zZXQobixlKSx0aGlzLmNoYW5nZWQ9e30sdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07aS5leHRlbmQoZC5wcm90b3R5cGUsbyx7Y2hhbmdlZDpudWxsLHZhbGlkYXRpb25FcnJvcjpudWxsLGlkQXR0cmlidXRlOiJpZCIsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sdG9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBpLmNsb25lKHRoaXMuYXR0cmlidXRlcyl9LHN5bmM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zeW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19LGVzY2FwZTpmdW5jdGlvbih0KXtyZXR1cm4gaS5lc2NhcGUodGhpcy5nZXQodCkpfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXRoaXMuZ2V0KHQpfSxzZXQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBzLHIsYSxvLGgsYyx1LGw7aWYobnVsbD09dClyZXR1cm4gdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIHQ/KHI9dCxuPWUpOihyPXt9KVt0XT1lLG58fChuPXt9KSwhdGhpcy5fdmFsaWRhdGUocixuKSlyZXR1cm4hMTthPW4udW5zZXQsaD1uLnNpbGVudCxvPVtdLGM9dGhpcy5fY2hhbmdpbmcsdGhpcy5fY2hhbmdpbmc9ITAsY3x8KHRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcz1pLmNsb25lKHRoaXMuYXR0cmlidXRlcyksdGhpcy5jaGFuZ2VkPXt9KSxsPXRoaXMuYXR0cmlidXRlcyx1PXRoaXMuX3ByZXZpb3VzQXR0cmlidXRlcyx0aGlzLmlkQXR0cmlidXRlIGluIHImJih0aGlzLmlkPXJbdGhpcy5pZEF0dHJpYnV0ZV0pO2ZvcihzIGluIHIpZT1yW3NdLGkuaXNFcXVhbChsW3NdLGUpfHxvLnB1c2gocyksaS5pc0VxdWFsKHVbc10sZSk/ZGVsZXRlIHRoaXMuY2hhbmdlZFtzXTp0aGlzLmNoYW5nZWRbc109ZSxhP2RlbGV0ZSBsW3NdOmxbc109ZTtpZighaCl7by5sZW5ndGgmJih0aGlzLl9wZW5kaW5nPW4pO2Zvcih2YXIgZD0wLGY9by5sZW5ndGg7ZDxmO2QrKyl0aGlzLnRyaWdnZXIoImNoYW5nZToiK29bZF0sdGhpcyxsW29bZF1dLG4pfWlmKGMpcmV0dXJuIHRoaXM7aWYoIWgpZm9yKDt0aGlzLl9wZW5kaW5nOyluPXRoaXMuX3BlbmRpbmcsdGhpcy5fcGVuZGluZz0hMSx0aGlzLnRyaWdnZXIoImNoYW5nZSIsdGhpcyxuKTtyZXR1cm4gdGhpcy5fcGVuZGluZz0hMSx0aGlzLl9jaGFuZ2luZz0hMSx0aGlzfSx1bnNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnNldCh0LHZvaWQgMCxpLmV4dGVuZCh7fSxlLHt1bnNldDohMH0pKX0sY2xlYXI6ZnVuY3Rpb24odCl7dmFyIGU9e307Zm9yKHZhciBuIGluIHRoaXMuYXR0cmlidXRlcyllW25dPXZvaWQgMDtyZXR1cm4gdGhpcy5zZXQoZSxpLmV4dGVuZCh7fSx0LHt1bnNldDohMH0pKX0saGFzQ2hhbmdlZDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8haS5pc0VtcHR5KHRoaXMuY2hhbmdlZCk6aS5oYXModGhpcy5jaGFuZ2VkLHQpfSxjaGFuZ2VkQXR0cmlidXRlczpmdW5jdGlvbih0KXtpZighdClyZXR1cm4hIXRoaXMuaGFzQ2hhbmdlZCgpJiZpLmNsb25lKHRoaXMuY2hhbmdlZCk7dmFyIGUsbj0hMSxzPXRoaXMuX2NoYW5naW5nP3RoaXMuX3ByZXZpb3VzQXR0cmlidXRlczp0aGlzLmF0dHJpYnV0ZXM7Zm9yKHZhciByIGluIHQpaS5pc0VxdWFsKHNbcl0sZT10W3JdKXx8KChufHwobj17fSkpW3JdPWUpO3JldHVybiBufSxwcmV2aW91czpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmdGhpcy5fcHJldmlvdXNBdHRyaWJ1dGVzP3RoaXMuX3ByZXZpb3VzQXR0cmlidXRlc1t0XTpudWxsfSxwcmV2aW91c0F0dHJpYnV0ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jbG9uZSh0aGlzLl9wcmV2aW91c0F0dHJpYnV0ZXMpfSxmZXRjaDpmdW5jdGlvbih0KXt0PXQ/aS5jbG9uZSh0KTp7fSx2b2lkIDA9PT10LnBhcnNlJiYodC5wYXJzZT0hMCk7dmFyIGU9dGhpcyxuPXQuc3VjY2VzcztyZXR1cm4gdC5zdWNjZXNzPWZ1bmN0aW9uKGkpe3JldHVybiEhZS5zZXQoZS5wYXJzZShpLHQpLHQpJiYobiYmbihlLGksdCksdm9pZCBlLnRyaWdnZXIoInN5bmMiLGUsaSx0KSl9LFUodGhpcyx0KSx0aGlzLnN5bmMoInJlYWQiLHRoaXMsdCl9LHNhdmU6ZnVuY3Rpb24odCxlLG4pe3ZhciBzLHIsYSxvPXRoaXMuYXR0cmlidXRlcztpZihudWxsPT10fHwib2JqZWN0Ij09dHlwZW9mIHQ/KHM9dCxuPWUpOihzPXt9KVt0XT1lLG49aS5leHRlbmQoe3ZhbGlkYXRlOiEwfSxuKSxzJiYhbi53YWl0KXtpZighdGhpcy5zZXQocyxuKSlyZXR1cm4hMX1lbHNlIGlmKCF0aGlzLl92YWxpZGF0ZShzLG4pKXJldHVybiExO3MmJm4ud2FpdCYmKHRoaXMuYXR0cmlidXRlcz1pLmV4dGVuZCh7fSxvLHMpKSx2b2lkIDA9PT1uLnBhcnNlJiYobi5wYXJzZT0hMCk7dmFyIGg9dGhpcyxjPW4uc3VjY2VzcztyZXR1cm4gbi5zdWNjZXNzPWZ1bmN0aW9uKHQpe2guYXR0cmlidXRlcz1vO3ZhciBlPWgucGFyc2UodCxuKTtyZXR1cm4gbi53YWl0JiYoZT1pLmV4dGVuZChzfHx7fSxlKSksIShpLmlzT2JqZWN0KGUpJiYhaC5zZXQoZSxuKSkmJihjJiZjKGgsdCxuKSx2b2lkIGgudHJpZ2dlcigic3luYyIsaCx0LG4pKX0sVSh0aGlzLG4pLHI9dGhpcy5pc05ldygpPyJjcmVhdGUiOm4ucGF0Y2g/InBhdGNoIjoidXBkYXRlIiwicGF0Y2giPT09ciYmKG4uYXR0cnM9cyksYT10aGlzLnN5bmMocix0aGlzLG4pLHMmJm4ud2FpdCYmKHRoaXMuYXR0cmlidXRlcz1vKSxhfSxkZXN0cm95OmZ1bmN0aW9uKHQpe3Q9dD9pLmNsb25lKHQpOnt9O3ZhciBlPXRoaXMsbj10LnN1Y2Nlc3Mscz1mdW5jdGlvbigpe2UudHJpZ2dlcigiZGVzdHJveSIsZSxlLmNvbGxlY3Rpb24sdCl9O2lmKHQuc3VjY2Vzcz1mdW5jdGlvbihpKXsodC53YWl0fHxlLmlzTmV3KCkpJiZzKCksbiYmbihlLGksdCksZS5pc05ldygpfHxlLnRyaWdnZXIoInN5bmMiLGUsaSx0KX0sdGhpcy5pc05ldygpKXJldHVybiB0LnN1Y2Nlc3MoKSwhMTtVKHRoaXMsdCk7dmFyIHI9dGhpcy5zeW5jKCJkZWxldGUiLHRoaXMsdCk7cmV0dXJuIHQud2FpdHx8cygpLHJ9LHVybDpmdW5jdGlvbigpe3ZhciB0PWkucmVzdWx0KHRoaXMsInVybFJvb3QiKXx8aS5yZXN1bHQodGhpcy5jb2xsZWN0aW9uLCJ1cmwiKXx8aigpO3JldHVybiB0aGlzLmlzTmV3KCk/dDp0LnJlcGxhY2UoLyhbXlwvXSkkLywiJDEvIikrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpfSxwYXJzZTpmdW5jdGlvbih0LGUpe3JldHVybiB0fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmF0dHJpYnV0ZXMpfSxpc05ldzpmdW5jdGlvbigpe3JldHVybiF0aGlzLmhhcyh0aGlzLmlkQXR0cmlidXRlKX0saXNWYWxpZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdGUoe30saS5leHRlbmQodHx8e30se3ZhbGlkYXRlOiEwfSkpfSxfdmFsaWRhdGU6ZnVuY3Rpb24odCxlKXtpZighZS52YWxpZGF0ZXx8IXRoaXMudmFsaWRhdGUpcmV0dXJuITA7dD1pLmV4dGVuZCh7fSx0aGlzLmF0dHJpYnV0ZXMsdCk7dmFyIG49dGhpcy52YWxpZGF0aW9uRXJyb3I9dGhpcy52YWxpZGF0ZSh0LGUpfHxudWxsO3JldHVybiFufHwodGhpcy50cmlnZ2VyKCJpbnZhbGlkIix0aGlzLG4saS5leHRlbmQoZSx7dmFsaWRhdGlvbkVycm9yOm59KSksITEpfX0pO3ZhciBmPVsia2V5cyIsInZhbHVlcyIsInBhaXJzIiwiaW52ZXJ0IiwicGljayIsIm9taXQiXTtpLmVhY2goZixmdW5jdGlvbih0KXtkLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3ZhciBlPWEuY2FsbChhcmd1bWVudHMpO3JldHVybiBlLnVuc2hpZnQodGhpcy5hdHRyaWJ1dGVzKSxpW3RdLmFwcGx5KGksZSl9fSk7dmFyIHA9ZS5Db2xsZWN0aW9uPWZ1bmN0aW9uKHQsZSl7ZXx8KGU9e30pLGUubW9kZWwmJih0aGlzLm1vZGVsPWUubW9kZWwpLHZvaWQgMCE9PWUuY29tcGFyYXRvciYmKHRoaXMuY29tcGFyYXRvcj1lLmNvbXBhcmF0b3IpLHRoaXMuX3Jlc2V0KCksdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0JiZ0aGlzLnJlc2V0KHQsaS5leHRlbmQoe3NpbGVudDohMH0sZSkpfSxnPXthZGQ6ITAscmVtb3ZlOiEwLG1lcmdlOiEwfSx2PXthZGQ6ITAscmVtb3ZlOiExfTtpLmV4dGVuZChwLnByb3RvdHlwZSxvLHttb2RlbDpkLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt9LHRvSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9KU09OKHQpfSl9LHN5bmM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5zeW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYWRkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuc2V0KHQsaS5leHRlbmQoe21lcmdlOiExfSxlLHYpKX0scmVtb3ZlOmZ1bmN0aW9uKHQsZSl7dmFyIG49IWkuaXNBcnJheSh0KTt0PW4/W3RdOmkuY2xvbmUodCksZXx8KGU9e30pO3ZhciBzLHIsYSxvO2ZvcihzPTAscj10Lmxlbmd0aDtzPHI7cysrKW89dFtzXT10aGlzLmdldCh0W3NdKSxvJiYoZGVsZXRlIHRoaXMuX2J5SWRbby5pZF0sZGVsZXRlIHRoaXMuX2J5SWRbby5jaWRdLGE9dGhpcy5pbmRleE9mKG8pLHRoaXMubW9kZWxzLnNwbGljZShhLDEpLHRoaXMubGVuZ3RoLS0sZS5zaWxlbnR8fChlLmluZGV4PWEsby50cmlnZ2VyKCJyZW1vdmUiLG8sdGhpcyxlKSksdGhpcy5fcmVtb3ZlUmVmZXJlbmNlKG8sZSkpO3JldHVybiBuP3RbMF06dH0sc2V0OmZ1bmN0aW9uKHQsZSl7ZT1pLmRlZmF1bHRzKHt9LGUsZyksZS5wYXJzZSYmKHQ9dGhpcy5wYXJzZSh0LGUpKTt2YXIgbj0haS5pc0FycmF5KHQpO3Q9bj90P1t0XTpbXTppLmNsb25lKHQpO3ZhciBzLHIsYSxvLGgsYyx1LGw9ZS5hdCxmPXRoaXMubW9kZWwscD10aGlzLmNvbXBhcmF0b3ImJm51bGw9PWwmJmUuc29ydCE9PSExLHY9aS5pc1N0cmluZyh0aGlzLmNvbXBhcmF0b3IpP3RoaXMuY29tcGFyYXRvcjpudWxsLG09W10seT1bXSxfPXt9LGI9ZS5hZGQsdz1lLm1lcmdlLHg9ZS5yZW1vdmUsRT0hKHB8fCFifHwheCkmJltdO2ZvcihzPTAscj10Lmxlbmd0aDtzPHI7cysrKXtpZihoPXRbc118fHt9LGE9aCBpbnN0YW5jZW9mIGQ/bz1oOmhbZi5wcm90b3R5cGUuaWRBdHRyaWJ1dGV8fCJpZCJdLGM9dGhpcy5nZXQoYSkpeCYmKF9bYy5jaWRdPSEwKSx3JiYoaD1oPT09bz9vLmF0dHJpYnV0ZXM6aCxlLnBhcnNlJiYoaD1jLnBhcnNlKGgsZSkpLGMuc2V0KGgsZSkscCYmIXUmJmMuaGFzQ2hhbmdlZCh2KSYmKHU9ITApKSx0W3NdPWM7ZWxzZSBpZihiKXtpZihvPXRbc109dGhpcy5fcHJlcGFyZU1vZGVsKGgsZSksIW8pY29udGludWU7bS5wdXNoKG8pLHRoaXMuX2FkZFJlZmVyZW5jZShvLGUpfW89Y3x8bywhRXx8IW8uaXNOZXcoKSYmX1tvLmlkXXx8RS5wdXNoKG8pLF9bby5pZF09ITB9aWYoeCl7Zm9yKHM9MCxyPXRoaXMubGVuZ3RoO3M8cjsrK3MpX1sobz10aGlzLm1vZGVsc1tzXSkuY2lkXXx8eS5wdXNoKG8pO3kubGVuZ3RoJiZ0aGlzLnJlbW92ZSh5LGUpfWlmKG0ubGVuZ3RofHxFJiZFLmxlbmd0aClpZihwJiYodT0hMCksdGhpcy5sZW5ndGgrPW0ubGVuZ3RoLG51bGwhPWwpZm9yKHM9MCxyPW0ubGVuZ3RoO3M8cjtzKyspdGhpcy5tb2RlbHMuc3BsaWNlKGwrcywwLG1bc10pO2Vsc2V7RSYmKHRoaXMubW9kZWxzLmxlbmd0aD0wKTt2YXIgaz1FfHxtO2ZvcihzPTAscj1rLmxlbmd0aDtzPHI7cysrKXRoaXMubW9kZWxzLnB1c2goa1tzXSl9aWYodSYmdGhpcy5zb3J0KHtzaWxlbnQ6ITB9KSwhZS5zaWxlbnQpe2ZvcihzPTAscj1tLmxlbmd0aDtzPHI7cysrKShvPW1bc10pLnRyaWdnZXIoImFkZCIsbyx0aGlzLGUpOyh1fHxFJiZFLmxlbmd0aCkmJnRoaXMudHJpZ2dlcigic29ydCIsdGhpcyxlKX1yZXR1cm4gbj90WzBdOnR9LHJlc2V0OmZ1bmN0aW9uKHQsZSl7ZXx8KGU9e30pO2Zvcih2YXIgbj0wLHM9dGhpcy5tb2RlbHMubGVuZ3RoO248cztuKyspdGhpcy5fcmVtb3ZlUmVmZXJlbmNlKHRoaXMubW9kZWxzW25dLGUpO3JldHVybiBlLnByZXZpb3VzTW9kZWxzPXRoaXMubW9kZWxzLHRoaXMuX3Jlc2V0KCksdD10aGlzLmFkZCh0LGkuZXh0ZW5kKHtzaWxlbnQ6ITB9LGUpKSxlLnNpbGVudHx8dGhpcy50cmlnZ2VyKCJyZXNldCIsdGhpcyxlKSx0fSxwdXNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRkKHQsaS5leHRlbmQoe2F0OnRoaXMubGVuZ3RofSxlKSl9LHBvcDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmF0KHRoaXMubGVuZ3RoLTEpO3JldHVybiB0aGlzLnJlbW92ZShlLHQpLGV9LHVuc2hpZnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGQodCxpLmV4dGVuZCh7YXQ6MH0sZSkpfSxzaGlmdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmF0KDApO3JldHVybiB0aGlzLnJlbW92ZShlLHQpLGV9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkodGhpcy5tb2RlbHMsYXJndW1lbnRzKX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpcmV0dXJuIHRoaXMuX2J5SWRbdF18fHRoaXMuX2J5SWRbdC5pZF18fHRoaXMuX2J5SWRbdC5jaWRdfSxhdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tb2RlbHNbdF19LHdoZXJlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuaXNFbXB0eSh0KT9lP3ZvaWQgMDpbXTp0aGlzW2U/ImZpbmQiOiJmaWx0ZXIiXShmdW5jdGlvbihlKXtmb3IodmFyIGkgaW4gdClpZih0W2ldIT09ZS5nZXQoaSkpcmV0dXJuITE7cmV0dXJuITB9KX0sZmluZFdoZXJlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndoZXJlKHQsITApfSxzb3J0OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmNvbXBhcmF0b3IpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc29ydCBhIHNldCB3aXRob3V0IGEgY29tcGFyYXRvciIpO3JldHVybiB0fHwodD17fSksaS5pc1N0cmluZyh0aGlzLmNvbXBhcmF0b3IpfHwxPT09dGhpcy5jb21wYXJhdG9yLmxlbmd0aD90aGlzLm1vZGVscz10aGlzLnNvcnRCeSh0aGlzLmNvbXBhcmF0b3IsdGhpcyk6dGhpcy5tb2RlbHMuc29ydChpLmJpbmQodGhpcy5jb21wYXJhdG9yLHRoaXMpKSx0LnNpbGVudHx8dGhpcy50cmlnZ2VyKCJzb3J0Iix0aGlzLHQpLHRoaXN9LHBsdWNrOmZ1bmN0aW9uKHQpe3JldHVybiBpLmludm9rZSh0aGlzLm1vZGVscywiZ2V0Iix0KX0sZmV0Y2g6ZnVuY3Rpb24odCl7dD10P2kuY2xvbmUodCk6e30sdm9pZCAwPT09dC5wYXJzZSYmKHQucGFyc2U9ITApO3ZhciBlPXQuc3VjY2VzcyxuPXRoaXM7cmV0dXJuIHQuc3VjY2Vzcz1mdW5jdGlvbihpKXt2YXIgcz10LnJlc2V0PyJyZXNldCI6InNldCI7bltzXShpLHQpLGUmJmUobixpLHQpLG4udHJpZ2dlcigic3luYyIsbixpLHQpfSxVKHRoaXMsdCksdGhpcy5zeW5jKCJyZWFkIix0aGlzLHQpfSxjcmVhdGU6ZnVuY3Rpb24odCxlKXtpZihlPWU/aS5jbG9uZShlKTp7fSwhKHQ9dGhpcy5fcHJlcGFyZU1vZGVsKHQsZSkpKXJldHVybiExO2Uud2FpdHx8dGhpcy5hZGQodCxlKTt2YXIgbj10aGlzLHM9ZS5zdWNjZXNzO3JldHVybiBlLnN1Y2Nlc3M9ZnVuY3Rpb24odCxpKXtlLndhaXQmJm4uYWRkKHQsZSkscyYmcyh0LGksZSl9LHQuc2F2ZShudWxsLGUpLHR9LHBhcnNlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubW9kZWxzKX0sX3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5sZW5ndGg9MCx0aGlzLm1vZGVscz1bXSx0aGlzLl9ieUlkPXt9fSxfcHJlcGFyZU1vZGVsOmZ1bmN0aW9uKHQsZSl7aWYodCBpbnN0YW5jZW9mIGQpcmV0dXJuIHQ7ZT1lP2kuY2xvbmUoZSk6e30sZS5jb2xsZWN0aW9uPXRoaXM7dmFyIG49bmV3IHRoaXMubW9kZWwodCxlKTtyZXR1cm4gbi52YWxpZGF0aW9uRXJyb3I/KHRoaXMudHJpZ2dlcigiaW52YWxpZCIsdGhpcyxuLnZhbGlkYXRpb25FcnJvcixlKSwhMSk6bn0sX2FkZFJlZmVyZW5jZTpmdW5jdGlvbih0LGUpe3RoaXMuX2J5SWRbdC5jaWRdPXQsbnVsbCE9dC5pZCYmKHRoaXMuX2J5SWRbdC5pZF09dCksdC5jb2xsZWN0aW9ufHwodC5jb2xsZWN0aW9uPXRoaXMpLHQub24oImFsbCIsdGhpcy5fb25Nb2RlbEV2ZW50LHRoaXMpfSxfcmVtb3ZlUmVmZXJlbmNlOmZ1bmN0aW9uKHQsZSl7dGhpcz09PXQuY29sbGVjdGlvbiYmZGVsZXRlIHQuY29sbGVjdGlvbix0Lm9mZigiYWxsIix0aGlzLl9vbk1vZGVsRXZlbnQsdGhpcyl9LF9vbk1vZGVsRXZlbnQ6ZnVuY3Rpb24odCxlLGksbil7KCJhZGQiIT09dCYmInJlbW92ZSIhPT10fHxpPT09dGhpcykmJigiZGVzdHJveSI9PT10JiZ0aGlzLnJlbW92ZShlLG4pLGUmJnQ9PT0iY2hhbmdlOiIrZS5pZEF0dHJpYnV0ZSYmKGRlbGV0ZSB0aGlzLl9ieUlkW2UucHJldmlvdXMoZS5pZEF0dHJpYnV0ZSldLG51bGwhPWUuaWQmJih0aGlzLl9ieUlkW2UuaWRdPWUpKSx0aGlzLnRyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19KTt2YXIgbT1bImZvckVhY2giLCJlYWNoIiwibWFwIiwiY29sbGVjdCIsInJlZHVjZSIsImZvbGRsIiwiaW5qZWN0IiwicmVkdWNlUmlnaHQiLCJmb2xkciIsImZpbmQiLCJkZXRlY3QiLCJmaWx0ZXIiLCJzZWxlY3QiLCJyZWplY3QiLCJldmVyeSIsImFsbCIsInNvbWUiLCJhbnkiLCJpbmNsdWRlIiwiY29udGFpbnMiLCJpbnZva2UiLCJtYXgiLCJtaW4iLCJ0b0FycmF5Iiwic2l6ZSIsImZpcnN0IiwiaGVhZCIsInRha2UiLCJpbml0aWFsIiwicmVzdCIsInRhaWwiLCJkcm9wIiwibGFzdCIsIndpdGhvdXQiLCJkaWZmZXJlbmNlIiwiaW5kZXhPZiIsInNodWZmbGUiLCJsYXN0SW5kZXhPZiIsImlzRW1wdHkiLCJjaGFpbiIsInNhbXBsZSJdO2kuZWFjaChtLGZ1bmN0aW9uKHQpe3AucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIGU9YS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIGUudW5zaGlmdCh0aGlzLm1vZGVscyksaVt0XS5hcHBseShpLGUpfX0pO3ZhciB5PVsiZ3JvdXBCeSIsImNvdW50QnkiLCJzb3J0QnkiLCJpbmRleEJ5Il07aS5lYWNoKHksZnVuY3Rpb24odCl7cC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxuKXt2YXIgcz1pLmlzRnVuY3Rpb24oZSk/ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXQoZSl9O3JldHVybiBpW3RdKHRoaXMubW9kZWxzLHMsbil9fSk7dmFyIF89ZS5WaWV3PWZ1bmN0aW9uKHQpe3RoaXMuY2lkPWkudW5pcXVlSWQoInZpZXciKSx0fHwodD17fSksaS5leHRlbmQodGhpcyxpLnBpY2sodCx3KSksdGhpcy5fZW5zdXJlRWxlbWVudCgpLHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5kZWxlZ2F0ZUV2ZW50cygpfSxiPS9eKFxTKylccyooLiopJC8sdz1bIm1vZGVsIiwiY29sbGVjdGlvbiIsImVsIiwiaWQiLCJhdHRyaWJ1dGVzIiwiY2xhc3NOYW1lIiwidGFnTmFtZSIsImV2ZW50cyJdO2kuZXh0ZW5kKF8ucHJvdG90eXBlLG8se3RhZ05hbWU6ImRpdiIsJDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy4kZWwuZmluZCh0KX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scmVuZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5yZW1vdmUoKSx0aGlzLnN0b3BMaXN0ZW5pbmcoKSx0aGlzfSxzZXRFbGVtZW50OmZ1bmN0aW9uKHQsaSl7cmV0dXJuIHRoaXMuJGVsJiZ0aGlzLnVuZGVsZWdhdGVFdmVudHMoKSx0aGlzLiRlbD10IGluc3RhbmNlb2YgZS4kP3Q6ZS4kKHQpLHRoaXMuZWw9dGhpcy4kZWxbMF0saSE9PSExJiZ0aGlzLmRlbGVnYXRlRXZlbnRzKCksdGhpc30sZGVsZWdhdGVFdmVudHM6ZnVuY3Rpb24odCl7aWYoIXQmJiEodD1pLnJlc3VsdCh0aGlzLCJldmVudHMiKSkpcmV0dXJuIHRoaXM7dGhpcy51bmRlbGVnYXRlRXZlbnRzKCk7Zm9yKHZhciBlIGluIHQpe3ZhciBuPXRbZV07aWYoaS5pc0Z1bmN0aW9uKG4pfHwobj10aGlzW3RbZV1dKSxuKXt2YXIgcz1lLm1hdGNoKGIpLHI9c1sxXSxhPXNbMl07bj1pLmJpbmQobix0aGlzKSxyKz0iLmRlbGVnYXRlRXZlbnRzIit0aGlzLmNpZCwiIj09PWE/dGhpcy4kZWwub24ocixuKTp0aGlzLiRlbC5vbihyLGEsbil9fXJldHVybiB0aGlzfSx1bmRlbGVnYXRlRXZlbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsLm9mZigiLmRlbGVnYXRlRXZlbnRzIit0aGlzLmNpZCksdGhpc30sX2Vuc3VyZUVsZW1lbnQ6ZnVuY3Rpb24oKXtpZih0aGlzLmVsKXRoaXMuc2V0RWxlbWVudChpLnJlc3VsdCh0aGlzLCJlbCIpLCExKTtlbHNle3ZhciB0PWkuZXh0ZW5kKHt9LGkucmVzdWx0KHRoaXMsImF0dHJpYnV0ZXMiKSk7dGhpcy5pZCYmKHQuaWQ9aS5yZXN1bHQodGhpcywiaWQiKSksdGhpcy5jbGFzc05hbWUmJih0WyJjbGFzcyJdPWkucmVzdWx0KHRoaXMsImNsYXNzTmFtZSIpKTt2YXIgbj1lLiQoIjwiK2kucmVzdWx0KHRoaXMsInRhZ05hbWUiKSsiPiIpLmF0dHIodCk7dGhpcy5zZXRFbGVtZW50KG4sITEpfX19KSxlLnN5bmM9ZnVuY3Rpb24odCxuLHMpe3ZhciByPUVbdF07aS5kZWZhdWx0cyhzfHwocz17fSkse2VtdWxhdGVIVFRQOmUuZW11bGF0ZUhUVFAsZW11bGF0ZUpTT046ZS5lbXVsYXRlSlNPTn0pO3ZhciBhPXt0eXBlOnIsZGF0YVR5cGU6Impzb24ifTtpZihzLnVybHx8KGEudXJsPWkucmVzdWx0KG4sInVybCIpfHxqKCkpLG51bGwhPXMuZGF0YXx8IW58fCJjcmVhdGUiIT09dCYmInVwZGF0ZSIhPT10JiYicGF0Y2giIT09dHx8KGEuY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL2pzb24iLGEuZGF0YT1KU09OLnN0cmluZ2lmeShzLmF0dHJzfHxuLnRvSlNPTihzKSkpLHMuZW11bGF0ZUpTT04mJihhLmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLGEuZGF0YT1hLmRhdGE/e21vZGVsOmEuZGF0YX06e30pLHMuZW11bGF0ZUhUVFAmJigiUFVUIj09PXJ8fCJERUxFVEUiPT09cnx8IlBBVENIIj09PXIpKXthLnR5cGU9IlBPU1QiLHMuZW11bGF0ZUpTT04mJihhLmRhdGEuX21ldGhvZD1yKTt2YXIgbz1zLmJlZm9yZVNlbmQ7cy5iZWZvcmVTZW5kPWZ1bmN0aW9uKHQpe2lmKHQuc2V0UmVxdWVzdEhlYWRlcigiWC1IVFRQLU1ldGhvZC1PdmVycmlkZSIsciksbylyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSJHRVQiPT09YS50eXBlfHxzLmVtdWxhdGVKU09OfHwoYS5wcm9jZXNzRGF0YT0hMSksIlBBVENIIj09PWEudHlwZSYmeCYmKGEueGhyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfSk7dmFyIGg9cy54aHI9ZS5hamF4KGkuZXh0ZW5kKGEscykpO3JldHVybiBuLnRyaWdnZXIoInJlcXVlc3QiLG4saCxzKSxofTt2YXIgeD0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2luZG93LkFjdGl2ZVhPYmplY3R8fHdpbmRvdy5YTUxIdHRwUmVxdWVzdCYmKG5ldyBYTUxIdHRwUmVxdWVzdCkuZGlzcGF0Y2hFdmVudCksRT17Y3JlYXRlOiJQT1NUIix1cGRhdGU6IlBVVCIscGF0Y2g6IlBBVENIIiwiZGVsZXRlIjoiREVMRVRFIixyZWFkOiJHRVQifTtlLmFqYXg9ZnVuY3Rpb24oKXtyZXR1cm4gZS4kLmFqYXguYXBwbHkoZS4kLGFyZ3VtZW50cyl9O3ZhciBrPWUuUm91dGVyPWZ1bmN0aW9uKHQpe3R8fCh0PXt9KSx0LnJvdXRlcyYmKHRoaXMucm91dGVzPXQucm91dGVzKSx0aGlzLl9iaW5kUm91dGVzKCksdGhpcy5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVD0vXCgoLio/KVwpL2csJD0vKFwoXD8pPzpcdysvZyxTPS9cKlx3Ky9nLEg9L1tcLXt9XFtcXSs/LixcXFxeJHwjXHNdL2c7aS5leHRlbmQoay5wcm90b3R5cGUsbyx7aW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scm91dGU6ZnVuY3Rpb24odCxuLHMpe2kuaXNSZWdFeHAodCl8fCh0PXRoaXMuX3JvdXRlVG9SZWdFeHAodCkpLGkuaXNGdW5jdGlvbihuKSYmKHM9bixuPSIiKSxzfHwocz10aGlzW25dKTt2YXIgcj10aGlzO3JldHVybiBlLmhpc3Rvcnkucm91dGUodCxmdW5jdGlvbihpKXt2YXIgYT1yLl9leHRyYWN0UGFyYW1ldGVycyh0LGkpO3IuZXhlY3V0ZShzLGEpLHIudHJpZ2dlci5hcHBseShyLFsicm91dGU6IituXS5jb25jYXQoYSkpLHIudHJpZ2dlcigicm91dGUiLG4sYSksZS5oaXN0b3J5LnRyaWdnZXIoInJvdXRlIixyLG4sYSl9KSx0aGlzfSxleGVjdXRlOmZ1bmN0aW9uKHQsZSl7dCYmdC5hcHBseSh0aGlzLGUpfSxuYXZpZ2F0ZTpmdW5jdGlvbih0LGkpe3JldHVybiBlLmhpc3RvcnkubmF2aWdhdGUodCxpKSx0aGlzfSxfYmluZFJvdXRlczpmdW5jdGlvbigpe2lmKHRoaXMucm91dGVzKXt0aGlzLnJvdXRlcz1pLnJlc3VsdCh0aGlzLCJyb3V0ZXMiKTtmb3IodmFyIHQsZT1pLmtleXModGhpcy5yb3V0ZXMpO251bGwhPSh0PWUucG9wKCkpOyl0aGlzLnJvdXRlKHQsdGhpcy5yb3V0ZXNbdF0pfX0sX3JvdXRlVG9SZWdFeHA6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKEgsIlxcJCYiKS5yZXBsYWNlKFQsIig/OiQxKT8iKS5yZXBsYWNlKCQsZnVuY3Rpb24odCxlKXtyZXR1cm4gZT90OiIoW14vP10rKSJ9KS5yZXBsYWNlKFMsIihbXj9dKj8pIiksbmV3IFJlZ0V4cCgiXiIrdCsiKD86XFw/KFtcXHNcXFNdKikpPyQiKX0sX2V4dHJhY3RQYXJhbWV0ZXJzOmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leGVjKGUpLnNsaWNlKDEpO3JldHVybiBpLm1hcChuLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9PT1uLmxlbmd0aC0xP3R8fG51bGw6dD9kZWNvZGVVUklDb21wb25lbnQodCk6bnVsbH0pfX0pO3ZhciBBPWUuSGlzdG9yeT1mdW5jdGlvbigpe3RoaXMuaGFuZGxlcnM9W10saS5iaW5kQWxsKHRoaXMsImNoZWNrVXJsIiksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih0aGlzLmxvY2F0aW9uPXdpbmRvdy5sb2NhdGlvbix0aGlzLmhpc3Rvcnk9d2luZG93Lmhpc3RvcnkpfSxJPS9eWyNcL118XHMrJC9nLE49L15cLyt8XC8rJC9nLFI9L21zaWUgW1x3Ll0rLyxPPS9cLyQvLFA9LyMuKiQvO0Euc3RhcnRlZD0hMSxpLmV4dGVuZChBLnByb3RvdHlwZSxvLHtpbnRlcnZhbDo1MCxhdFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9bXlwvXSQvLCIkJi8iKT09PXRoaXMucm9vdH0sZ2V0SGFzaDpmdW5jdGlvbih0KXt2YXIgZT0odHx8dGhpcykubG9jYXRpb24uaHJlZi5tYXRjaCgvIyguKikkLyk7cmV0dXJuIGU/ZVsxXToiIn0sZ2V0RnJhZ21lbnQ6ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KWlmKHRoaXMuX2hhc1B1c2hTdGF0ZXx8IXRoaXMuX3dhbnRzSGFzaENoYW5nZXx8ZSl7dD1kZWNvZGVVUkkodGhpcy5sb2NhdGlvbi5wYXRobmFtZSt0aGlzLmxvY2F0aW9uLnNlYXJjaCk7dmFyIGk9dGhpcy5yb290LnJlcGxhY2UoTywiIik7dC5pbmRleE9mKGkpfHwodD10LnNsaWNlKGkubGVuZ3RoKSl9ZWxzZSB0PXRoaXMuZ2V0SGFzaCgpO3JldHVybiB0LnJlcGxhY2UoSSwiIil9LHN0YXJ0OmZ1bmN0aW9uKHQpe2lmKEEuc3RhcnRlZCl0aHJvdyBuZXcgRXJyb3IoIkJhY2tib25lLmhpc3RvcnkgaGFzIGFscmVhZHkgYmVlbiBzdGFydGVkIik7QS5zdGFydGVkPSEwLHRoaXMub3B0aW9ucz1pLmV4dGVuZCh7cm9vdDoiLyJ9LHRoaXMub3B0aW9ucyx0KSx0aGlzLnJvb3Q9dGhpcy5vcHRpb25zLnJvb3QsdGhpcy5fd2FudHNIYXNoQ2hhbmdlPXRoaXMub3B0aW9ucy5oYXNoQ2hhbmdlIT09ITEsdGhpcy5fd2FudHNQdXNoU3RhdGU9ISF0aGlzLm9wdGlvbnMucHVzaFN0YXRlLHRoaXMuX2hhc1B1c2hTdGF0ZT0hISh0aGlzLm9wdGlvbnMucHVzaFN0YXRlJiZ0aGlzLmhpc3RvcnkmJnRoaXMuaGlzdG9yeS5wdXNoU3RhdGUpO3ZhciBuPXRoaXMuZ2V0RnJhZ21lbnQoKSxzPWRvY3VtZW50LmRvY3VtZW50TW9kZSxyPVIuZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpJiYoIXN8fHM8PTcpO2lmKHRoaXMucm9vdD0oIi8iK3RoaXMucm9vdCsiLyIpLnJlcGxhY2UoTiwiLyIpLHImJnRoaXMuX3dhbnRzSGFzaENoYW5nZSl7dmFyIGE9ZS4kKCc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDowIiB0YWJpbmRleD0iLTEiPicpO3RoaXMuaWZyYW1lPWEuaGlkZSgpLmFwcGVuZFRvKCJib2R5IilbMF0uY29udGVudFdpbmRvdyx0aGlzLm5hdmlnYXRlKG4pfXRoaXMuX2hhc1B1c2hTdGF0ZT9lLiQod2luZG93KS5vbigicG9wc3RhdGUiLHRoaXMuY2hlY2tVcmwpOnRoaXMuX3dhbnRzSGFzaENoYW5nZSYmIm9uaGFzaGNoYW5nZSJpbiB3aW5kb3cmJiFyP2UuJCh3aW5kb3cpLm9uKCJoYXNoY2hhbmdlIix0aGlzLmNoZWNrVXJsKTp0aGlzLl93YW50c0hhc2hDaGFuZ2UmJih0aGlzLl9jaGVja1VybEludGVydmFsPXNldEludGVydmFsKHRoaXMuY2hlY2tVcmwsdGhpcy5pbnRlcnZhbCkpLHRoaXMuZnJhZ21lbnQ9bjt2YXIgbz10aGlzLmxvY2F0aW9uO2lmKHRoaXMuX3dhbnRzSGFzaENoYW5nZSYmdGhpcy5fd2FudHNQdXNoU3RhdGUpe2lmKCF0aGlzLl9oYXNQdXNoU3RhdGUmJiF0aGlzLmF0Um9vdCgpKXJldHVybiB0aGlzLmZyYWdtZW50PXRoaXMuZ2V0RnJhZ21lbnQobnVsbCwhMCksdGhpcy5sb2NhdGlvbi5yZXBsYWNlKHRoaXMucm9vdCsiIyIrdGhpcy5mcmFnbWVudCksITA7dGhpcy5faGFzUHVzaFN0YXRlJiZ0aGlzLmF0Um9vdCgpJiZvLmhhc2gmJih0aGlzLmZyYWdtZW50PXRoaXMuZ2V0SGFzaCgpLnJlcGxhY2UoSSwiIiksdGhpcy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSx0aGlzLnJvb3QrdGhpcy5mcmFnbWVudCkpfWlmKCF0aGlzLm9wdGlvbnMuc2lsZW50KXJldHVybiB0aGlzLmxvYWRVcmwoKX0sc3RvcDpmdW5jdGlvbigpe2UuJCh3aW5kb3cpLm9mZigicG9wc3RhdGUiLHRoaXMuY2hlY2tVcmwpLm9mZigiaGFzaGNoYW5nZSIsdGhpcy5jaGVja1VybCksdGhpcy5fY2hlY2tVcmxJbnRlcnZhbCYmY2xlYXJJbnRlcnZhbCh0aGlzLl9jaGVja1VybEludGVydmFsKSxBLnN0YXJ0ZWQ9ITF9LHJvdXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy5oYW5kbGVycy51bnNoaWZ0KHtyb3V0ZTp0LGNhbGxiYWNrOmV9KX0sY2hlY2tVcmw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRGcmFnbWVudCgpO3JldHVybiBlPT09dGhpcy5mcmFnbWVudCYmdGhpcy5pZnJhbWUmJihlPXRoaXMuZ2V0RnJhZ21lbnQodGhpcy5nZXRIYXNoKHRoaXMuaWZyYW1lKSkpLGUhPT10aGlzLmZyYWdtZW50JiYodGhpcy5pZnJhbWUmJnRoaXMubmF2aWdhdGUoZSksdm9pZCB0aGlzLmxvYWRVcmwoKSl9LGxvYWRVcmw6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5mcmFnbWVudD10aGlzLmdldEZyYWdtZW50KHQpLGkuYW55KHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oZSl7aWYoZS5yb3V0ZS50ZXN0KHQpKXJldHVybiBlLmNhbGxiYWNrKHQpLCEwfSl9LG5hdmlnYXRlOmZ1bmN0aW9uKHQsZSl7aWYoIUEuc3RhcnRlZClyZXR1cm4hMTtlJiZlIT09ITB8fChlPXt0cmlnZ2VyOiEhZX0pO3ZhciBpPXRoaXMucm9vdCsodD10aGlzLmdldEZyYWdtZW50KHR8fCIiKSk7aWYodD10LnJlcGxhY2UoUCwiIiksdGhpcy5mcmFnbWVudCE9PXQpe2lmKHRoaXMuZnJhZ21lbnQ9dCwiIj09PXQmJiIvIiE9PWkmJihpPWkuc2xpY2UoMCwtMSkpLHRoaXMuX2hhc1B1c2hTdGF0ZSl0aGlzLmhpc3RvcnlbZS5yZXBsYWNlPyJyZXBsYWNlU3RhdGUiOiJwdXNoU3RhdGUiXSh7fSxkb2N1bWVudC50aXRsZSxpKTtlbHNle2lmKCF0aGlzLl93YW50c0hhc2hDaGFuZ2UpcmV0dXJuIHRoaXMubG9jYXRpb24uYXNzaWduKGkpO3RoaXMuX3VwZGF0ZUhhc2godGhpcy5sb2NhdGlvbix0LGUucmVwbGFjZSksdGhpcy5pZnJhbWUmJnQhPT10aGlzLmdldEZyYWdtZW50KHRoaXMuZ2V0SGFzaCh0aGlzLmlmcmFtZSkpJiYoZS5yZXBsYWNlfHx0aGlzLmlmcmFtZS5kb2N1bWVudC5vcGVuKCkuY2xvc2UoKSx0aGlzLl91cGRhdGVIYXNoKHRoaXMuaWZyYW1lLmxvY2F0aW9uLHQsZS5yZXBsYWNlKSl9cmV0dXJuIGUudHJpZ2dlcj90aGlzLmxvYWRVcmwodCk6dm9pZCAwfX0sX3VwZGF0ZUhhc2g6ZnVuY3Rpb24odCxlLGkpe2lmKGkpe3ZhciBuPXQuaHJlZi5yZXBsYWNlKC8oamF2YXNjcmlwdDp8IykuKiQvLCIiKTt0LnJlcGxhY2UobisiIyIrZSl9ZWxzZSB0Lmhhc2g9IiMiK2V9fSksZS5oaXN0b3J5PW5ldyBBO3ZhciBDPWZ1bmN0aW9uKHQsZSl7dmFyIG4scz10aGlzO249dCYmaS5oYXModCwiY29uc3RydWN0b3IiKT90LmNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpLmV4dGVuZChuLHMsZSk7dmFyIHI9ZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yPW59O3JldHVybiByLnByb3RvdHlwZT1zLnByb3RvdHlwZSxuLnByb3RvdHlwZT1uZXcgcix0JiZpLmV4dGVuZChuLnByb3RvdHlwZSx0KSxuLl9fc3VwZXJfXz1zLnByb3RvdHlwZSxufTtkLmV4dGVuZD1wLmV4dGVuZD1rLmV4dGVuZD1fLmV4dGVuZD1BLmV4dGVuZD1DO3ZhciBqPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdBICJ1cmwiIHByb3BlcnR5IG9yIGZ1bmN0aW9uIG11c3QgYmUgc3BlY2lmaWVkJyl9LFU9ZnVuY3Rpb24odCxlKXt2YXIgaT1lLmVycm9yO2UuZXJyb3I9ZnVuY3Rpb24obil7aSYmaSh0LG4sZSksdC50cmlnZ2VyKCJlcnJvciIsdCxuLGUpfX07cmV0dXJuIGV9KSxCYWNrYm9uZS5WaWV3PWZ1bmN0aW9uKHQpe3JldHVybiB0LmV4dGVuZCh7Y29uc3RydWN0b3I6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWV8fHt9LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pfShCYWNrYm9uZS5WaWV3KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9lczUtc2hpbS5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2VzNS1zaGltLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMGZjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9lczUtc2hpbS5qcwpAQCAtMCwwICsxIEBACishZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUoKTp0LnJldHVybkV4cG9ydHM9ZSgpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIHQsZSxyPUFycmF5LG49ci5wcm90b3R5cGUsbz1PYmplY3QsaT1vLnByb3RvdHlwZSxhPUZ1bmN0aW9uLHU9YS5wcm90b3R5cGUsZj1TdHJpbmcscz1mLnByb3RvdHlwZSxsPU51bWJlcixjPWwucHJvdG90eXBlLGg9bi5zbGljZSxwPW4uc3BsaWNlLHk9bi5wdXNoLGQ9bi51bnNoaWZ0LGc9bi5jb25jYXQsdj1uLmpvaW4sYj11LmNhbGwsdz11LmFwcGx5LFQ9TWF0aC5tYXgsbT1NYXRoLm1pbixEPWkudG9TdHJpbmcseD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyxTPUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxPPS9eXHMqY2xhc3MgLyxqPWZ1bmN0aW9uKHQpe3RyeXt2YXIgZT1TLmNhbGwodCkscj1lLnJlcGxhY2UoL1wvXC8uKlxuL2csIiIpLG49ci5yZXBsYWNlKC9cL1wqWy5cc1xTXSpcKlwvL2csIiIpLG89bi5yZXBsYWNlKC9cbi9nbSwiICIpLnJlcGxhY2UoLyB7Mn0vZywiICIpO3JldHVybiBPLnRlc3Qobyl9Y2F0Y2goaSl7cmV0dXJuITF9fSxFPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4haih0KSYmKFMuY2FsbCh0KSwhMCl9Y2F0Y2goZSl7cmV0dXJuITF9fSxNPSJbb2JqZWN0IEZ1bmN0aW9uXSIsST0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLHQ9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJiJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpZih4KXJldHVybiBFKHQpO2lmKGoodCkpcmV0dXJuITE7dmFyIGU9RC5jYWxsKHQpO3JldHVybiBlPT09TXx8ZT09PUl9LFU9UmVnRXhwLnByb3RvdHlwZS5leGVjLEY9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBVLmNhbGwodCksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSxOPSJbb2JqZWN0IFJlZ0V4cF0iO2U9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYoeD9GKHQpOkQuY2FsbCh0KT09PU4pfTt2YXIgayxDPVN0cmluZy5wcm90b3R5cGUudmFsdWVPZixSPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gQy5jYWxsKHQpLCEwfWNhdGNoKGUpe3JldHVybiExfX0sQT0iW29iamVjdCBTdHJpbmddIjtrPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0JiYoeD9SKHQpOkQuY2FsbCh0KT09PUEpfTt2YXIgJD1vLmRlZmluZVByb3BlcnR5JiZmdW5jdGlvbigpe3RyeXt2YXIgdD17fTtvLmRlZmluZVByb3BlcnR5KHQsIngiLHtlbnVtZXJhYmxlOiExLHZhbHVlOnR9KTtmb3IodmFyIGUgaW4gdClyZXR1cm4hMTtyZXR1cm4gdC54PT09dH1jYXRjaChyKXtyZXR1cm4hMX19KCksUD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT0kP2Z1bmN0aW9uKHQsZSxyLG4peyFuJiZlIGluIHR8fG8uZGVmaW5lUHJvcGVydHkodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpyfSl9OmZ1bmN0aW9uKHQsZSxyLG4peyFuJiZlIGluIHR8fCh0W2VdPXIpfSxmdW5jdGlvbihyLG4sbyl7Zm9yKHZhciBpIGluIG4pdC5jYWxsKG4saSkmJmUocixpLG5baV0sbyl9fShpLmhhc093blByb3BlcnR5KSxKPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsPT09dHx8Im9iamVjdCIhPT1lJiYiZnVuY3Rpb24iIT09ZX0sWj1sLmlzTmFOfHxmdW5jdGlvbih0KXtyZXR1cm4gdCE9PXR9LHo9e1RvSW50ZWdlcjpmdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4gWihlKT9lPTA6MCE9PWUmJmUhPT0xLzAmJmUhPT0tKDEvMCkmJihlPShlPjB8fC0xKSpNYXRoLmZsb29yKE1hdGguYWJzKGUpKSksZX0sVG9QcmltaXRpdmU6ZnVuY3Rpb24oZSl7dmFyIHIsbixvO2lmKEooZSkpcmV0dXJuIGU7aWYobj1lLnZhbHVlT2YsdChuKSYmKHI9bi5jYWxsKGUpLEoocikpKXJldHVybiByO2lmKG89ZS50b1N0cmluZyx0KG8pJiYocj1vLmNhbGwoZSksSihyKSkpcmV0dXJuIHI7dGhyb3cgbmV3IFR5cGVFcnJvcn0sVG9PYmplY3Q6ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW4ndCBjb252ZXJ0ICIrdCsiIHRvIG9iamVjdCIpO3JldHVybiBvKHQpfSxUb1VpbnQzMjpmdW5jdGlvbih0KXtyZXR1cm4gdD4+PjB9fSxHPWZ1bmN0aW9uKCl7fTtQKHUse2JpbmQ6ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcztpZighdChyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIrcik7Zm9yKHZhciBuLGk9aC5jYWxsKGFyZ3VtZW50cywxKSx1PWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIG4pe3ZhciB0PXcuY2FsbChyLHRoaXMsZy5jYWxsKGksaC5jYWxsKGFyZ3VtZW50cykpKTtyZXR1cm4gbyh0KT09PXQ/dDp0aGlzfXJldHVybiB3LmNhbGwocixlLGcuY2FsbChpLGguY2FsbChhcmd1bWVudHMpKSl9LGY9VCgwLHIubGVuZ3RoLWkubGVuZ3RoKSxzPVtdLGw9MDtsPGY7bCsrKXkuY2FsbChzLCIkIitsKTtyZXR1cm4gbj1hKCJiaW5kZXIiLCJyZXR1cm4gZnVuY3Rpb24gKCIrdi5jYWxsKHMsIiwiKSsiKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IikodSksci5wcm90b3R5cGUmJihHLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuLnByb3RvdHlwZT1uZXcgRyxHLnByb3RvdHlwZT1udWxsKSxufX0pO3ZhciBZPWIuYmluZChpLmhhc093blByb3BlcnR5KSxCPWIuYmluZChpLnRvU3RyaW5nKSxIPWIuYmluZChoKSxXPXcuYmluZChoKSxMPWIuYmluZChzLnNsaWNlKSxYPWIuYmluZChzLnNwbGl0KSxxPWIuYmluZChzLmluZGV4T2YpLEs9Yi5iaW5kKHkpLFE9Yi5iaW5kKGkucHJvcGVydHlJc0VudW1lcmFibGUpLFY9Yi5iaW5kKG4uc29ydCksXz1yLmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1CKHQpfSx0dD0xIT09W10udW5zaGlmdCgwKTtQKG4se3Vuc2hpZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5sZW5ndGh9fSx0dCksUChyLHtpc0FycmF5Ol99KTt2YXIgZXQ9bygiYSIpLHJ0PSJhIiE9PWV0WzBdfHwhKDAgaW4gZXQpLG50PWZ1bmN0aW9uKHQpe3ZhciBlPSEwLHI9ITAsbj0hMTtpZih0KXRyeXt0LmNhbGwoImZvbyIsZnVuY3Rpb24odCxyLG4peyJvYmplY3QiIT10eXBlb2YgbiYmKGU9ITEpfSksdC5jYWxsKFsxXSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtyPSJzdHJpbmciPT10eXBlb2YgdGhpc30sIngiKX1jYXRjaChvKXtuPSEwfXJldHVybiEhdCYmIW4mJmUmJnJ9O1Aobix7Zm9yRWFjaDpmdW5jdGlvbihlKXt2YXIgcixuPXouVG9PYmplY3QodGhpcyksbz1ydCYmayh0aGlzKT9YKHRoaXMsIiIpOm4saT0tMSxhPXouVG9VaW50MzIoby5sZW5ndGgpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmKHI9YXJndW1lbnRzWzFdKSwhdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IoOysraTxhOylpIGluIG8mJigidW5kZWZpbmVkIj09dHlwZW9mIHI/ZShvW2ldLGksbik6ZS5jYWxsKHIsb1tpXSxpLG4pKX19LCFudChuLmZvckVhY2gpKSxQKG4se21hcDpmdW5jdGlvbihlKXt2YXIgbixvPXouVG9PYmplY3QodGhpcyksaT1ydCYmayh0aGlzKT9YKHRoaXMsIiIpOm8sYT16LlRvVWludDMyKGkubGVuZ3RoKSx1PXIoYSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiYobj1hcmd1bWVudHNbMV0pLCF0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5tYXAgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKHZhciBmPTA7ZjxhO2YrKylmIGluIGkmJigidW5kZWZpbmVkIj09dHlwZW9mIG4/dVtmXT1lKGlbZl0sZixvKTp1W2ZdPWUuY2FsbChuLGlbZl0sZixvKSk7cmV0dXJuIHV9fSwhbnQobi5tYXApKSxQKG4se2ZpbHRlcjpmdW5jdGlvbihlKXt2YXIgcixuLG89ei5Ub09iamVjdCh0aGlzKSxpPXJ0JiZrKHRoaXMpP1godGhpcywiIik6byxhPXouVG9VaW50MzIoaS5sZW5ndGgpLHU9W107aWYoYXJndW1lbnRzLmxlbmd0aD4xJiYobj1hcmd1bWVudHNbMV0pLCF0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maWx0ZXIgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKHZhciBmPTA7ZjxhO2YrKylmIGluIGkmJihyPWlbZl0sKCJ1bmRlZmluZWQiPT10eXBlb2Ygbj9lKHIsZixvKTplLmNhbGwobixyLGYsbykpJiZLKHUscikpO3JldHVybiB1fX0sIW50KG4uZmlsdGVyKSksUChuLHtldmVyeTpmdW5jdGlvbihlKXt2YXIgcixuPXouVG9PYmplY3QodGhpcyksbz1ydCYmayh0aGlzKT9YKHRoaXMsIiIpOm4saT16LlRvVWludDMyKG8ubGVuZ3RoKTtpZihhcmd1bWVudHMubGVuZ3RoPjEmJihyPWFyZ3VtZW50c1sxXSksIXQoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Zvcih2YXIgYT0wO2E8aTthKyspaWYoYSBpbiBvJiYhKCJ1bmRlZmluZWQiPT10eXBlb2Ygcj9lKG9bYV0sYSxuKTplLmNhbGwocixvW2FdLGEsbikpKXJldHVybiExO3JldHVybiEwfX0sIW50KG4uZXZlcnkpKSxQKG4se3NvbWU6ZnVuY3Rpb24oZSl7dmFyIHIsbj16LlRvT2JqZWN0KHRoaXMpLG89cnQmJmsodGhpcyk/WCh0aGlzLCIiKTpuLGk9ei5Ub1VpbnQzMihvLmxlbmd0aCk7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiYocj1hcmd1bWVudHNbMV0pLCF0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb21lIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Zvcih2YXIgYT0wO2E8aTthKyspaWYoYSBpbiBvJiYoInVuZGVmaW5lZCI9PXR5cGVvZiByP2Uob1thXSxhLG4pOmUuY2FsbChyLG9bYV0sYSxuKSkpcmV0dXJuITA7cmV0dXJuITF9fSwhbnQobi5zb21lKSk7dmFyIG90PSExO24ucmVkdWNlJiYob3Q9Im9iamVjdCI9PXR5cGVvZiBuLnJlZHVjZS5jYWxsKCJlczUiLGZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBufSkpLFAobix7cmVkdWNlOmZ1bmN0aW9uKGUpe3ZhciByPXouVG9PYmplY3QodGhpcyksbj1ydCYmayh0aGlzKT9YKHRoaXMsIiIpOnIsbz16LlRvVWludDMyKG4ubGVuZ3RoKTtpZighdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2lmKDA9PT1vJiYxPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7dmFyIGksYT0wO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBmb3IoOzspe2lmKGEgaW4gbil7aT1uW2ErK107YnJlYWt9aWYoKythPj1vKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO2E8bzthKyspYSBpbiBuJiYoaT1lKGksblthXSxhLHIpKTtyZXR1cm4gaX19LCFvdCk7dmFyIGl0PSExO24ucmVkdWNlUmlnaHQmJihpdD0ib2JqZWN0Ij09dHlwZW9mIG4ucmVkdWNlUmlnaHQuY2FsbCgiZXM1IixmdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbn0pKSxQKG4se3JlZHVjZVJpZ2h0OmZ1bmN0aW9uKGUpe3ZhciByPXouVG9PYmplY3QodGhpcyksbj1ydCYmayh0aGlzKT9YKHRoaXMsIiIpOnIsbz16LlRvVWludDMyKG4ubGVuZ3RoKTtpZighdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7aWYoMD09PW8mJjE9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZVJpZ2h0IG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO3ZhciBpLGE9by0xO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTIpaT1hcmd1bWVudHNbMV07ZWxzZSBmb3IoOzspe2lmKGEgaW4gbil7aT1uW2EtLV07YnJlYWt9aWYoLS1hPDApdGhyb3cgbmV3IFR5cGVFcnJvcigicmVkdWNlUmlnaHQgb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9aWYoYTwwKXJldHVybiBpO2RvIGEgaW4gbiYmKGk9ZShpLG5bYV0sYSxyKSk7d2hpbGUoYS0tKTtyZXR1cm4gaX19LCFpdCk7dmFyIGF0PW4uaW5kZXhPZiYmWzAsMV0uaW5kZXhPZigxLDIpIT09LTE7UChuLHtpbmRleE9mOmZ1bmN0aW9uKHQpe3ZhciBlPXJ0JiZrKHRoaXMpP1godGhpcywiIik6ei5Ub09iamVjdCh0aGlzKSxyPXouVG9VaW50MzIoZS5sZW5ndGgpO2lmKDA9PT1yKXJldHVybi0xO3ZhciBuPTA7Zm9yKGFyZ3VtZW50cy5sZW5ndGg+MSYmKG49ei5Ub0ludGVnZXIoYXJndW1lbnRzWzFdKSksbj1uPj0wP246VCgwLHIrbik7bjxyO24rKylpZihuIGluIGUmJmVbbl09PT10KXJldHVybiBuO3JldHVybi0xfX0sYXQpO3ZhciB1dD1uLmxhc3RJbmRleE9mJiZbMCwxXS5sYXN0SW5kZXhPZigwLC0zKSE9PS0xO1Aobix7bGFzdEluZGV4T2Y6ZnVuY3Rpb24odCl7dmFyIGU9cnQmJmsodGhpcyk/WCh0aGlzLCIiKTp6LlRvT2JqZWN0KHRoaXMpLHI9ei5Ub1VpbnQzMihlLmxlbmd0aCk7aWYoMD09PXIpcmV0dXJuLTE7dmFyIG49ci0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihuPW0obix6LlRvSW50ZWdlcihhcmd1bWVudHNbMV0pKSksbj1uPj0wP246ci1NYXRoLmFicyhuKTtuPj0wO24tLSlpZihuIGluIGUmJnQ9PT1lW25dKXJldHVybiBuO3JldHVybi0xfX0sdXQpO3ZhciBmdD1mdW5jdGlvbigpe3ZhciB0PVsxLDJdLGU9dC5zcGxpY2UoKTtyZXR1cm4gMj09PXQubGVuZ3RoJiZfKGUpJiYwPT09ZS5sZW5ndGh9KCk7UChuLHtzcGxpY2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/W106cC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSwhZnQpO3ZhciBzdD1mdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiBuLnNwbGljZS5jYWxsKHQsMCwwLDEpLDE9PT10Lmxlbmd0aH0oKTtQKG4se3NwbGljZTpmdW5jdGlvbih0LGUpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciByPWFyZ3VtZW50cztyZXR1cm4gdGhpcy5sZW5ndGg9VCh6LlRvSW50ZWdlcih0aGlzLmxlbmd0aCksMCksYXJndW1lbnRzLmxlbmd0aD4wJiYibnVtYmVyIiE9dHlwZW9mIGUmJihyPUgoYXJndW1lbnRzKSxyLmxlbmd0aDwyP0socix0aGlzLmxlbmd0aC10KTpyWzFdPXouVG9JbnRlZ2VyKGUpKSxwLmFwcGx5KHRoaXMscil9fSwhc3QpO3ZhciBsdD1mdW5jdGlvbigpe3ZhciB0PW5ldyByKDFlNSk7cmV0dXJuIHRbOF09IngiLHQuc3BsaWNlKDEsMSksNz09PXQuaW5kZXhPZigieCIpfSgpLGN0PWZ1bmN0aW9uKCl7dmFyIHQ9MjU2LGU9W107cmV0dXJuIGVbdF09ImEiLGUuc3BsaWNlKHQrMSwwLCJiIiksImEiPT09ZVt0XX0oKTtQKG4se3NwbGljZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPXouVG9PYmplY3QodGhpcyksbz1bXSxpPXouVG9VaW50MzIobi5sZW5ndGgpLGE9ei5Ub0ludGVnZXIodCksdT1hPDA/VChpK2EsMCk6bShhLGkpLHM9bShUKHouVG9JbnRlZ2VyKGUpLDApLGktdSksbD0wO2w8czspcj1mKHUrbCksWShuLHIpJiYob1tsXT1uW3JdKSxsKz0xO3ZhciBjLGg9SChhcmd1bWVudHMsMikscD1oLmxlbmd0aDtpZihwPHMpe2w9dTtmb3IodmFyIHk9aS1zO2w8eTspcj1mKGwrcyksYz1mKGwrcCksWShuLHIpP25bY109bltyXTpkZWxldGUgbltjXSxsKz0xO2w9aTtmb3IodmFyIGQ9aS1zK3A7bD5kOylkZWxldGUgbltsLTFdLGwtPTF9ZWxzZSBpZihwPnMpZm9yKGw9aS1zO2w+dTspcj1mKGwrcy0xKSxjPWYobCtwLTEpLFkobixyKT9uW2NdPW5bcl06ZGVsZXRlIG5bY10sbC09MTtsPXU7Zm9yKHZhciBnPTA7ZzxoLmxlbmd0aDsrK2cpbltsXT1oW2ddLGwrPTE7cmV0dXJuIG4ubGVuZ3RoPWktcytwLG99fSwhbHR8fCFjdCk7dmFyIGh0LHB0PW4uam9pbjt0cnl7aHQ9IjEsMiwzIiE9PUFycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoIjEyMyIsIiwiKX1jYXRjaCh5dCl7aHQ9ITB9aHQmJlAobix7am9pbjpmdW5jdGlvbih0KXt2YXIgZT0idW5kZWZpbmVkIj09dHlwZW9mIHQ/IiwiOnQ7cmV0dXJuIHB0LmNhbGwoayh0aGlzKT9YKHRoaXMsIiIpOnRoaXMsZSl9fSxodCk7dmFyIGR0PSIxLDIiIT09WzEsMl0uam9pbih2b2lkIDApO2R0JiZQKG4se2pvaW46ZnVuY3Rpb24odCl7dmFyIGU9InVuZGVmaW5lZCI9PXR5cGVvZiB0PyIsIjp0O3JldHVybiBwdC5jYWxsKHRoaXMsZSl9fSxkdCk7dmFyIGd0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT16LlRvT2JqZWN0KHRoaXMpLHI9ei5Ub1VpbnQzMihlLmxlbmd0aCksbj0wO248YXJndW1lbnRzLmxlbmd0aDspZVtyK25dPWFyZ3VtZW50c1tuXSxuKz0xO3JldHVybiBlLmxlbmd0aD1yK24scitufSx2dD1mdW5jdGlvbigpe3ZhciB0PXt9LGU9QXJyYXkucHJvdG90eXBlLnB1c2guY2FsbCh0LHZvaWQgMCk7cmV0dXJuIDEhPT1lfHwxIT09dC5sZW5ndGh8fCJ1bmRlZmluZWQiIT10eXBlb2YgdFswXXx8IVkodCwwKX0oKTtQKG4se3B1c2g6ZnVuY3Rpb24odCl7cmV0dXJuIF8odGhpcyk/eS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6Z3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sdnQpO3ZhciBidD1mdW5jdGlvbigpe3ZhciB0PVtdLGU9dC5wdXNoKHZvaWQgMCk7cmV0dXJuIDEhPT1lfHwxIT09dC5sZW5ndGh8fCJ1bmRlZmluZWQiIT10eXBlb2YgdFswXXx8IVkodCwwKX0oKTtQKG4se3B1c2g6Z3R9LGJ0KSxQKG4se3NsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9ayh0aGlzKT9YKHRoaXMsIiIpOnRoaXM7cmV0dXJuIFcocixhcmd1bWVudHMpfX0scnQpO3ZhciB3dD1mdW5jdGlvbigpe3RyeXtyZXR1cm5bMSwyXS5zb3J0KG51bGwpLFsxLDJdLnNvcnQoe30pLCEwfWNhdGNoKHQpe31yZXR1cm4hMX0oKSxUdD1mdW5jdGlvbigpe3RyeXtyZXR1cm5bMSwyXS5zb3J0KC9hLyksITF9Y2F0Y2godCl7fXJldHVybiEwfSgpLG10PWZ1bmN0aW9uKCl7dHJ5e3JldHVyblsxLDJdLnNvcnQodm9pZCAwKSwhMH1jYXRjaCh0KXt9cmV0dXJuITF9KCk7UChuLHtzb3J0OmZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZSlyZXR1cm4gVih0aGlzKTtpZighdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29ydCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gVih0aGlzLGUpfX0sd3R8fCFtdHx8IVR0KTt2YXIgRHQ9IVEoe3RvU3RyaW5nOm51bGx9LCJ0b1N0cmluZyIpLHh0PVEoZnVuY3Rpb24oKXt9LCJwcm90b3R5cGUiKSxTdD0hWSgieCIsIjAiKSxPdD1mdW5jdGlvbih0KXt2YXIgZT10LmNvbnN0cnVjdG9yO3JldHVybiBlJiZlLnByb3RvdHlwZT09PXR9LGp0PXskd2luZG93OiEwLCRjb25zb2xlOiEwLCRwYXJlbnQ6ITAsJHNlbGY6ITAsJGZyYW1lOiEwLCRmcmFtZXM6ITAsJGZyYW1lRWxlbWVudDohMCwkd2Via2l0SW5kZXhlZERCOiEwLCR3ZWJraXRTdG9yYWdlSW5mbzohMCwkZXh0ZXJuYWw6ITB9LEV0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7Zm9yKHZhciB0IGluIHdpbmRvdyl0cnl7IWp0WyIkIit0XSYmWSh3aW5kb3csdCkmJm51bGwhPT13aW5kb3dbdF0mJiJvYmplY3QiPT10eXBlb2Ygd2luZG93W3RdJiZPdCh3aW5kb3dbdF0pfWNhdGNoKGUpe3JldHVybiEwfXJldHVybiExfSgpLE10PWZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhRXQpcmV0dXJuIE90KHQpO3RyeXtyZXR1cm4gT3QodCl9Y2F0Y2goZSl7cmV0dXJuITF9fSxJdD1bInRvU3RyaW5nIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZU9mIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjb25zdHJ1Y3RvciJdLFV0PUl0Lmxlbmd0aCxGdD1mdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcmd1bWVudHNdIj09PUIodCl9LE50PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoJiZlLmxlbmd0aD49MCYmIV8oZSkmJnQoZS5jYWxsZWUpfSxrdD1GdChhcmd1bWVudHMpP0Z0Ok50O1Aobyx7a2V5czpmdW5jdGlvbihlKXt2YXIgcj10KGUpLG49a3QoZSksbz1udWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlLGk9byYmayhlKTtpZighbyYmIXImJiFuKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QiKTt2YXIgYT1bXSx1PXh0JiZyO2lmKGkmJlN0fHxuKWZvcih2YXIgcz0wO3M8ZS5sZW5ndGg7KytzKUsoYSxmKHMpKTtpZighbilmb3IodmFyIGwgaW4gZSl1JiYicHJvdG90eXBlIj09PWx8fCFZKGUsbCl8fEsoYSxmKGwpKTtpZihEdClmb3IodmFyIGM9TXQoZSksaD0wO2g8VXQ7aCsrKXt2YXIgcD1JdFtoXTtjJiYiY29uc3RydWN0b3IiPT09cHx8IVkoZSxwKXx8SyhhLHApfXJldHVybiBhfX0pO3ZhciBDdD1vLmtleXMmJmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT1vLmtleXMoYXJndW1lbnRzKS5sZW5ndGh9KDEsMiksUnQ9by5rZXlzJiZmdW5jdGlvbigpe3ZhciB0PW8ua2V5cyhhcmd1bWVudHMpO3JldHVybiAxIT09YXJndW1lbnRzLmxlbmd0aHx8MSE9PXQubGVuZ3RofHwxIT09dFswXX0oMSksQXQ9by5rZXlzO1Aobyx7a2V5czpmdW5jdGlvbih0KXtyZXR1cm4gQXQoa3QodCk/SCh0KTp0KX19LCFDdHx8UnQpO3ZhciAkdCxQdCxKdD0wIT09bmV3IERhdGUoKC0weGM3ODJiNWIzNDJiMjQpKS5nZXRVVENNb250aCgpLFp0PW5ldyBEYXRlKCgtMHg1NWQzMThkNTZhNzI0KSksenQ9bmV3IERhdGUoMTQ0OTY2MjRlNSksR3Q9Ik1vbiwgMDEgSmFuIC00NTg3NSAxMTo1OTo1OSBHTVQiIT09WnQudG9VVENTdHJpbmcoKSxZdD1adC5nZXRUaW1lem9uZU9mZnNldCgpO1l0PC03MjA/KCR0PSJUdWUgSmFuIDAyIC00NTg3NSIhPT1adC50b0RhdGVTdHJpbmcoKSxQdD0hL15UaHUgRGVjIDEwIDIwMTUgXGRcZDpcZFxkOlxkXGQgR01UWy1cK11cZFxkXGRcZCg/OiB8JCkvLnRlc3QoenQudG9TdHJpbmcoKSkpOigkdD0iTW9uIEphbiAwMSAtNDU4NzUiIT09WnQudG9EYXRlU3RyaW5nKCksUHQ9IS9eV2VkIERlYyAwOSAyMDE1IFxkXGQ6XGRcZDpcZFxkIEdNVFstXCtdXGRcZFxkXGQoPzogfCQpLy50ZXN0KHp0LnRvU3RyaW5nKCkpKTt2YXIgQnQ9Yi5iaW5kKERhdGUucHJvdG90eXBlLmdldEZ1bGxZZWFyKSxIdD1iLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0TW9udGgpLFd0PWIuYmluZChEYXRlLnByb3RvdHlwZS5nZXREYXRlKSxMdD1iLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDRnVsbFllYXIpLFh0PWIuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENNb250aCkscXQ9Yi5iaW5kKERhdGUucHJvdG90eXBlLmdldFVUQ0RhdGUpLEt0PWIuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENEYXkpLFF0PWIuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENIb3VycyksVnQ9Yi5iaW5kKERhdGUucHJvdG90eXBlLmdldFVUQ01pbnV0ZXMpLF90PWIuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENTZWNvbmRzKSx0ZT1iLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDTWlsbGlzZWNvbmRzKSxlZT1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLHJlPVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gV3QobmV3IERhdGUoZSx0LDApKX07UChEYXRlLnByb3RvdHlwZSx7Z2V0RnVsbFllYXI6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciB0PUJ0KHRoaXMpO3JldHVybiB0PDAmJkh0KHRoaXMpPjExP3QrMTp0fSxnZXRNb250aDpmdW5jdGlvbigpe2lmKCEodGhpcyYmdGhpcyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuIik7dmFyIHQ9QnQodGhpcyksZT1IdCh0aGlzKTtyZXR1cm4gdDwwJiZlPjExPzA6ZX0sZ2V0RGF0ZTpmdW5jdGlvbigpe2lmKCEodGhpcyYmdGhpcyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuIik7dmFyIHQ9QnQodGhpcyksZT1IdCh0aGlzKSxyPVd0KHRoaXMpO2lmKHQ8MCYmZT4xMSl7aWYoMTI9PT1lKXJldHVybiByO3ZhciBuPW5lKDAsdCsxKTtyZXR1cm4gbi1yKzF9cmV0dXJuIHJ9LGdldFVUQ0Z1bGxZZWFyOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgdD1MdCh0aGlzKTtyZXR1cm4gdDwwJiZYdCh0aGlzKT4xMT90KzE6dH0sZ2V0VVRDTW9udGg6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciB0PUx0KHRoaXMpLGU9WHQodGhpcyk7cmV0dXJuIHQ8MCYmZT4xMT8wOmV9LGdldFVUQ0RhdGU6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciB0PUx0KHRoaXMpLGU9WHQodGhpcykscj1xdCh0aGlzKTtpZih0PDAmJmU+MTEpe2lmKDEyPT09ZSlyZXR1cm4gcjt2YXIgbj1uZSgwLHQrMSk7cmV0dXJuIG4tcisxfXJldHVybiByfX0sSnQpLFAoRGF0ZS5wcm90b3R5cGUse3RvVVRDU3RyaW5nOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgdD1LdCh0aGlzKSxlPXF0KHRoaXMpLHI9WHQodGhpcyksbj1MdCh0aGlzKSxvPVF0KHRoaXMpLGk9VnQodGhpcyksYT1fdCh0aGlzKTtyZXR1cm4gZWVbdF0rIiwgIisoZTwxMD8iMCIrZTplKSsiICIrcmVbcl0rIiAiK24rIiAiKyhvPDEwPyIwIitvOm8pKyI6IisoaTwxMD8iMCIraTppKSsiOiIrKGE8MTA/IjAiK2E6YSkrIiBHTVQifX0sSnR8fEd0KSxQKERhdGUucHJvdG90eXBlLHt0b0RhdGVTdHJpbmc6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciB0PXRoaXMuZ2V0RGF5KCksZT10aGlzLmdldERhdGUoKSxyPXRoaXMuZ2V0TW9udGgoKSxuPXRoaXMuZ2V0RnVsbFllYXIoKTtyZXR1cm4gZWVbdF0rIiAiK3JlW3JdKyIgIisoZTwxMD8iMCIrZTplKSsiICIrbn19LEp0fHwkdCksKEp0fHxQdCkmJihEYXRlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2lmKCEodGhpcyYmdGhpcyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuIik7dmFyIHQ9dGhpcy5nZXREYXkoKSxlPXRoaXMuZ2V0RGF0ZSgpLHI9dGhpcy5nZXRNb250aCgpLG49dGhpcy5nZXRGdWxsWWVhcigpLG89dGhpcy5nZXRIb3VycygpLGk9dGhpcy5nZXRNaW51dGVzKCksYT10aGlzLmdldFNlY29uZHMoKSx1PXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKSxmPU1hdGguZmxvb3IoTWF0aC5hYnModSkvNjApLHM9TWF0aC5mbG9vcihNYXRoLmFicyh1KSU2MCk7cmV0dXJuIGVlW3RdKyIgIityZVtyXSsiICIrKGU8MTA/IjAiK2U6ZSkrIiAiK24rIiAiKyhvPDEwPyIwIitvOm8pKyI6IisoaTwxMD8iMCIraTppKSsiOiIrKGE8MTA/IjAiK2E6YSkrIiBHTVQiKyh1PjA/Ii0iOiIrIikrKGY8MTA/IjAiK2Y6ZikrKHM8MTA/IjAiK3M6cyl9LCQmJm8uZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITB9KSk7dmFyIG9lPS02MjE5ODc1NTJlNSxpZT0iLTAwMDAwMSIsYWU9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJm5ldyBEYXRlKG9lKS50b0lTT1N0cmluZygpLmluZGV4T2YoaWUpPT09LTEsdWU9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJiIxOTY5LTEyLTMxVDIzOjU5OjU5Ljk5OVoiIT09bmV3IERhdGUoKC0xKSkudG9JU09TdHJpbmcoKSxmZT1iLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSk7UChEYXRlLnByb3RvdHlwZSx7dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXtpZighaXNGaW5pdGUodGhpcyl8fCFpc0Zpbml0ZShmZSh0aGlzKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkRhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nIGNhbGxlZCBvbiBub24tZmluaXRlIHZhbHVlLiIpO3ZhciB0PUx0KHRoaXMpLGU9WHQodGhpcyk7dCs9TWF0aC5mbG9vcihlLzEyKSxlPShlJTEyKzEyKSUxMjt2YXIgcj1bZSsxLHF0KHRoaXMpLFF0KHRoaXMpLFZ0KHRoaXMpLF90KHRoaXMpXTt0PSh0PDA/Ii0iOnQ+OTk5OT8iKyI6IiIpK0woIjAwMDAwIitNYXRoLmFicyh0KSwwPD10JiZ0PD05OTk5Py00Oi02KTtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbilyW25dPUwoIjAwIityW25dLC0yKTtyZXR1cm4gdCsiLSIrSChyLDAsMikuam9pbigiLSIpKyJUIitIKHIsMikuam9pbigiOiIpKyIuIitMKCIwMDAiK3RlKHRoaXMpLC0zKSsiWiJ9fSxhZXx8dWUpO3ZhciBzZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9KU09OJiZudWxsPT09bmV3IERhdGUoTmFOKS50b0pTT04oKSYmbmV3IERhdGUob2UpLnRvSlNPTigpLmluZGV4T2YoaWUpIT09LTEmJkRhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHt0b0lTT1N0cmluZzpmdW5jdGlvbigpe3JldHVybiEwfX0pfWNhdGNoKHQpe3JldHVybiExfX0oKTtzZXx8KERhdGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihlKXt2YXIgcj1vKHRoaXMpLG49ei5Ub1ByaW1pdGl2ZShyKTtpZigibnVtYmVyIj09dHlwZW9mIG4mJiFpc0Zpbml0ZShuKSlyZXR1cm4gbnVsbDt2YXIgaT1yLnRvSVNPU3RyaW5nO2lmKCF0KGkpKXRocm93IG5ldyBUeXBlRXJyb3IoInRvSVNPU3RyaW5nIHByb3BlcnR5IGlzIG5vdCBjYWxsYWJsZSIpO3JldHVybiBpLmNhbGwocil9KTt2YXIgbGU9MWUxNT09PURhdGUucGFyc2UoIiswMzM2NTgtMDktMjdUMDE6NDY6NDAuMDAwWiIpLGNlPSFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTA0LTA0VDI0OjAwOjAwLjUwMFoiKSl8fCFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTExLTMxVDIzOjU5OjU5LjAwMFoiKSl8fCFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTEyLTMxVDIzOjU5OjYwLjAwMFoiKSksaGU9aXNOYU4oRGF0ZS5wYXJzZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIikpO2lmKGhlfHxjZXx8IWxlKXt2YXIgcGU9TWF0aC5wb3coMiwzMSktMSx5ZT1aKG5ldyBEYXRlKDE5NzAsMCwxLDAsMCwwLHBlKzEpLmdldFRpbWUoKSk7RGF0ZT1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihyLG4sbyxpLGEsdSxzKXt2YXIgbCxjPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIHQpe3ZhciBoPXUscD1zO2lmKHllJiZjPj03JiZzPnBlKXt2YXIgeT1NYXRoLmZsb29yKHMvcGUpKnBlLGQ9TWF0aC5mbG9vcih5LzFlMyk7aCs9ZCxwLT0xZTMqZH1sPTE9PT1jJiZmKHIpPT09cj9uZXcgdChlLnBhcnNlKHIpKTpjPj03P25ldyB0KHIsbixvLGksYSxoLHApOmM+PTY/bmV3IHQocixuLG8saSxhLGgpOmM+PTU/bmV3IHQocixuLG8saSxhKTpjPj00P25ldyB0KHIsbixvLGkpOmM+PTM/bmV3IHQocixuLG8pOmM+PTI/bmV3IHQocixuKTpjPj0xP25ldyB0KHIgaW5zdGFuY2VvZiB0PytyOnIpOm5ldyB0fWVsc2UgbD10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gSihsKXx8UChsLHtjb25zdHJ1Y3RvcjplfSwhMCksbH0scj1uZXcgUmVnRXhwKCJeKFxcZHs0fXxbKy1dXFxkezZ9KSg/Oi0oXFxkezJ9KSg/Oi0oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSg/OjooXFxkezJ9KSg/OihcXC5cXGR7MSx9KSk/KT8oWnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKSxuPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzQsMzY1XSxvPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZT4xPzE6MDtyZXR1cm4gbltlXStNYXRoLmZsb29yKCh0LTE5NjkrcikvNCktTWF0aC5mbG9vcigodC0xOTAxK3IpLzEwMCkrTWF0aC5mbG9vcigodC0xNjAxK3IpLzQwMCkrMzY1Kih0LTE5NzApfSxpPWZ1bmN0aW9uKGUpe3ZhciByPTAsbj1lO2lmKHllJiZuPnBlKXt2YXIgbz1NYXRoLmZsb29yKG4vcGUpKnBlLGk9TWF0aC5mbG9vcihvLzFlMyk7cis9aSxuLT0xZTMqaX1yZXR1cm4gbChuZXcgdCgxOTcwLDAsMSwwLDAscixuKSl9O2Zvcih2YXIgYSBpbiB0KVkodCxhKSYmKGVbYV09dFthXSk7UChlLHtub3c6dC5ub3csVVRDOnQuVVRDfSwhMCksZS5wcm90b3R5cGU9dC5wcm90b3R5cGUsUChlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6ZX0sITApO3ZhciB1PWZ1bmN0aW9uKGUpe3ZhciBuPXIuZXhlYyhlKTtpZihuKXt2YXIgYSx1PWwoblsxXSksZj1sKG5bMl18fDEpLTEscz1sKG5bM118fDEpLTEsYz1sKG5bNF18fDApLGg9bChuWzVdfHwwKSxwPWwobls2XXx8MCkseT1NYXRoLmZsb29yKDFlMypsKG5bN118fDApKSxkPUJvb2xlYW4obls0XSYmIW5bOF0pLGc9Ii0iPT09bls5XT8xOi0xLHY9bChuWzEwXXx8MCksYj1sKG5bMTFdfHwwKSx3PWg+MHx8cD4wfHx5PjA7cmV0dXJuIGM8KHc/MjQ6MjUpJiZoPDYwJiZwPDYwJiZ5PDFlMyYmZj4tMSYmZjwxMiYmdjwyNCYmYjw2MCYmcz4tMSYmczxvKHUsZisxKS1vKHUsZikmJihhPTYwKigyNCoobyh1LGYpK3MpK2MrdipnKSxhPTFlMyooNjAqKGEraCtiKmcpK3ApK3ksZCYmKGE9aShhKSksLTg2NGUxMzw9YSYmYTw9ODY0ZTEzKT9hOk5hTn1yZXR1cm4gdC5wYXJzZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3JldHVybiBQKGUse3BhcnNlOnV9KSxlfShEYXRlKX1EYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9KTt2YXIgZGU9Yy50b0ZpeGVkJiYoIjAuMDAwIiE9PThlLTUudG9GaXhlZCgzKXx8IjEiIT09LjkudG9GaXhlZCgwKXx8IjEuMjUiIT09MS4yNTUudG9GaXhlZCgyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKSxnZT17YmFzZToxZTcsc2l6ZTo2LGRhdGE6WzAsMCwwLDAsMCwwXSxtdWx0aXBseTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWU7KytyPGdlLnNpemU7KW4rPXQqZ2UuZGF0YVtyXSxnZS5kYXRhW3JdPW4lZ2UuYmFzZSxuPU1hdGguZmxvb3Iobi9nZS5iYXNlKX0sZGl2aWRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1nZS5zaXplLHI9MDstLWU+PTA7KXIrPWdlLmRhdGFbZV0sZ2UuZGF0YVtlXT1NYXRoLmZsb29yKHIvdCkscj1yJXQqZ2UuYmFzZX0sbnVtVG9TdHJpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9Z2Uuc2l6ZSxlPSIiOy0tdD49MDspaWYoIiIhPT1lfHwwPT09dHx8MCE9PWdlLmRhdGFbdF0pe3ZhciByPWYoZ2UuZGF0YVt0XSk7IiI9PT1lP2U9cjplKz1MKCIwMDAwMDAwIiwwLDctci5sZW5ndGgpK3J9cmV0dXJuIGV9LHBvdzpmdW5jdGlvbiBBZSh0LGUscil7cmV0dXJuIDA9PT1lP3I6ZSUyPT09MT9BZSh0LGUtMSxyKnQpOkFlKHQqdCxlLzIscil9LGxvZzpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXQ7cj49NDA5NjspZSs9MTIsci89NDA5Njtmb3IoO3I+PTI7KWUrPTEsci89MjtyZXR1cm4gZX19LHZlPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixvLGksYSx1LHM7aWYoZT1sKHQpLGU9WihlKT8wOk1hdGguZmxvb3IoZSksZTwwfHxlPjIwKXRocm93IG5ldyBSYW5nZUVycm9yKCJOdW1iZXIudG9GaXhlZCBjYWxsZWQgd2l0aCBpbnZhbGlkIG51bWJlciBvZiBkZWNpbWFscyIpO2lmKHI9bCh0aGlzKSxaKHIpKXJldHVybiJOYU4iO2lmKHI8PS0xZTIxfHxyPj0xZTIxKXJldHVybiBmKHIpO2lmKG49IiIscjwwJiYobj0iLSIscj0tciksbz0iMCIscj4xZS0yMSlpZihpPWdlLmxvZyhyKmdlLnBvdygyLDY5LDEpKS02OSxhPWk8MD9yKmdlLnBvdygyLC1pLDEpOnIvZ2UucG93KDIsaSwxKSxhKj00NTAzNTk5NjI3MzcwNDk2LGk9NTItaSxpPjApe2ZvcihnZS5tdWx0aXBseSgwLGEpLHU9ZTt1Pj03OylnZS5tdWx0aXBseSgxZTcsMCksdS09Nztmb3IoZ2UubXVsdGlwbHkoZ2UucG93KDEwLHUsMSksMCksdT1pLTE7dT49MjM7KWdlLmRpdmlkZSgxPDwyMyksdS09MjM7Z2UuZGl2aWRlKDE8PHUpLGdlLm11bHRpcGx5KDEsMSksZ2UuZGl2aWRlKDIpLG89Z2UubnVtVG9TdHJpbmcoKX1lbHNlIGdlLm11bHRpcGx5KDAsYSksZ2UubXVsdGlwbHkoMTw8LWksMCksbz1nZS5udW1Ub1N0cmluZygpK0woIjAuMDAwMDAwMDAwMDAwMDAwMDAwMDAiLDIsMitlKTtyZXR1cm4gZT4wPyhzPW8ubGVuZ3RoLG89czw9ZT9uK0woIjAuMDAwMDAwMDAwMDAwMDAwMDAwMCIsMCxlLXMrMikrbzpuK0wobywwLHMtZSkrIi4iK0wobyxzLWUpKTpvPW4rbyxvfTtQKGMse3RvRml4ZWQ6dmV9LGRlKTt2YXIgYmU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIjEiPT09MS4udG9QcmVjaXNpb24odm9pZCAwKX1jYXRjaCh0KXtyZXR1cm4hMH19KCksd2U9Yy50b1ByZWNpc2lvbjtQKGMse3RvUHJlY2lzaW9uOmZ1bmN0aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdD93ZS5jYWxsKHRoaXMpOndlLmNhbGwodGhpcyx0KX19LGJlKSwyIT09ImFiIi5zcGxpdCgvKD86YWIpKi8pLmxlbmd0aHx8NCE9PSIuIi5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGh8fCJ0Ij09PSJ0ZXNzdCIuc3BsaXQoLyhzKSovKVsxXXx8NCE9PSJ0ZXN0Ii5zcGxpdCgvKD86KS8sLTEpLmxlbmd0aHx8IiIuc3BsaXQoLy4/LykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MT8hZnVuY3Rpb24oKXt2YXIgdD0idW5kZWZpbmVkIj09dHlwZW9mLygpPz8vLmV4ZWMoIiIpWzFdLHI9TWF0aC5wb3coMiwzMiktMTtzLnNwbGl0PWZ1bmN0aW9uKG4sbyl7dmFyIGk9U3RyaW5nKHRoaXMpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmMD09PW8pcmV0dXJuW107aWYoIWUobikpcmV0dXJuIFgodGhpcyxuLG8pO3ZhciBhLHUsZixzLGw9W10sYz0obi5pZ25vcmVDYXNlPyJpIjoiIikrKG4ubXVsdGlsaW5lPyJtIjoiIikrKG4udW5pY29kZT8idSI6IiIpKyhuLnN0aWNreT8ieSI6IiIpLGg9MCxwPW5ldyBSZWdFeHAobi5zb3VyY2UsYysiZyIpO3R8fChhPW5ldyBSZWdFeHAoIl4iK3Auc291cmNlKyIkKD8hXFxzKSIsYykpO3ZhciBkPSJ1bmRlZmluZWQiPT10eXBlb2Ygbz9yOnouVG9VaW50MzIobyk7Zm9yKHU9cC5leGVjKGkpO3UmJihmPXUuaW5kZXgrdVswXS5sZW5ndGgsIShmPmgmJihLKGwsTChpLGgsdS5pbmRleCkpLCF0JiZ1Lmxlbmd0aD4xJiZ1WzBdLnJlcGxhY2UoYSxmdW5jdGlvbigpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aC0yO3QrKykidW5kZWZpbmVkIj09dHlwZW9mIGFyZ3VtZW50c1t0XSYmKHVbdF09dm9pZCAwKX0pLHUubGVuZ3RoPjEmJnUuaW5kZXg8aS5sZW5ndGgmJnkuYXBwbHkobCxIKHUsMSkpLHM9dVswXS5sZW5ndGgsaD1mLGwubGVuZ3RoPj1kKSkpOylwLmxhc3RJbmRleD09PXUuaW5kZXgmJnAubGFzdEluZGV4KyssdT1wLmV4ZWMoaSk7cmV0dXJuIGg9PT1pLmxlbmd0aD8hcyYmcC50ZXN0KCIiKXx8SyhsLCIiKTpLKGwsTChpLGgpKSxsLmxlbmd0aD5kP0gobCwwLGQpOmx9fSgpOiIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoJiYocy5zcGxpdD1mdW5jdGlvbih0LGUpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdCYmMD09PWU/W106WCh0aGlzLHQsZSl9KTt2YXIgVGU9cy5yZXBsYWNlLG1lPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIngiLnJlcGxhY2UoL3goLik/L2csZnVuY3Rpb24oZSxyKXtLKHQscil9KSwxPT09dC5sZW5ndGgmJiJ1bmRlZmluZWQiPT10eXBlb2YgdFswXX0oKTttZXx8KHMucmVwbGFjZT1mdW5jdGlvbihyLG4pe3ZhciBvPXQobiksaT1lKHIpJiYvXClbKj9dLy50ZXN0KHIuc291cmNlKTtpZihvJiZpKXt2YXIgYT1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG89ci5sYXN0SW5kZXg7ci5sYXN0SW5kZXg9MDt2YXIgaT1yLmV4ZWModCl8fFtdO3JldHVybiByLmxhc3RJbmRleD1vLEsoaSxhcmd1bWVudHNbZS0yXSxhcmd1bWVudHNbZS0xXSksbi5hcHBseSh0aGlzLGkpfTtyZXR1cm4gVGUuY2FsbCh0aGlzLHIsYSl9cmV0dXJuIFRlLmNhbGwodGhpcyxyLG4pfSk7dmFyIERlPXMuc3Vic3RyLHhlPSIiLnN1YnN0ciYmImIiIT09IjBiIi5zdWJzdHIoLTEpO1Aocyx7c3Vic3RyOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dDtyZXR1cm4gdDwwJiYocj1UKHRoaXMubGVuZ3RoK3QsMCkpLERlLmNhbGwodGhpcyxyLGUpfX0seGUpO3ZhciBTZT0iXHRcblx4MEJcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI5XHVmZWZmIixPZT0i4oCLIixqZT0iWyIrU2UrIl0iLEVlPW5ldyBSZWdFeHAoIl4iK2plK2plKyIqIiksTWU9bmV3IFJlZ0V4cChqZStqZSsiKiQiKSxJZT1zLnRyaW0mJihTZS50cmltKCl8fCFPZS50cmltKCkpO1Aocyx7dHJpbTpmdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpc3x8bnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiK3RoaXMrIiB0byBvYmplY3QiKTtyZXR1cm4gZih0aGlzKS5yZXBsYWNlKEVlLCIiKS5yZXBsYWNlKE1lLCIiKX19LEllKTt2YXIgVWU9Yi5iaW5kKFN0cmluZy5wcm90b3R5cGUudHJpbSksRmU9cy5sYXN0SW5kZXhPZiYmImFiY+OBguOBhCIubGFzdEluZGV4T2YoIuOBguOBhCIsMikhPT0tMTtQKHMse2xhc3RJbmRleE9mOmZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpc3x8bnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiK3RoaXMrIiB0byBvYmplY3QiKTtmb3IodmFyIGU9Zih0aGlzKSxyPWYodCksbj1hcmd1bWVudHMubGVuZ3RoPjE/bChhcmd1bWVudHNbMV0pOk5hTixvPVoobik/MS8wOnouVG9JbnRlZ2VyKG4pLGk9bShUKG8sMCksZS5sZW5ndGgpLGE9ci5sZW5ndGgsdT1pK2E7dT4wOyl7dT1UKDAsdS1hKTt2YXIgcz1xKEwoZSx1LGkrYSkscik7aWYocyE9PS0xKXJldHVybiB1K3N9cmV0dXJuLTF9fSxGZSk7dmFyIE5lPXMubGFzdEluZGV4T2Y7aWYoUChzLHtsYXN0SW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gTmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sMSE9PXMubGFzdEluZGV4T2YubGVuZ3RoKSw4PT09cGFyc2VJbnQoU2UrIjA4IikmJjIyPT09cGFyc2VJbnQoU2UrIjB4MTYiKXx8KHBhcnNlSW50PWZ1bmN0aW9uKHQpe3ZhciBlPS9eW1wtK10/MFt4WF0vO3JldHVybiBmdW5jdGlvbihyLG4pe3ZhciBvPVVlKFN0cmluZyhyKSksaT1sKG4pfHwoZS50ZXN0KG8pPzE2OjEwKTtyZXR1cm4gdChvLGkpfX0ocGFyc2VJbnQpKSwxL3BhcnNlRmxvYXQoIi0wIikhPT0tKDEvMCkmJihwYXJzZUZsb2F0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1VZShTdHJpbmcoZSkpLG49dChyKTtyZXR1cm4gMD09PW4mJiItIj09PUwociwwLDEpPy0wOm59fShwYXJzZUZsb2F0KSksIlJhbmdlRXJyb3I6IHRlc3QiIT09U3RyaW5nKG5ldyBSYW5nZUVycm9yKCJ0ZXN0IikpKXt2YXIga2U9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHRoaXN8fG51bGw9PT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIit0aGlzKyIgdG8gb2JqZWN0Iik7dmFyIHQ9dGhpcy5uYW1lOyJ1bmRlZmluZWQiPT10eXBlb2YgdD90PSJFcnJvciI6InN0cmluZyIhPXR5cGVvZiB0JiYodD1mKHQpKTt2YXIgZT10aGlzLm1lc3NhZ2U7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlP2U9IiI6InN0cmluZyIhPXR5cGVvZiBlJiYoZT1mKGUpKSx0P2U/dCsiOiAiK2U6dDplfTtFcnJvci5wcm90b3R5cGUudG9TdHJpbmc9a2V9aWYoJCl7dmFyIENlPWZ1bmN0aW9uKHQsZSl7aWYoUSh0LGUpKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSk7ci5jb25maWd1cmFibGUmJihyLmVudW1lcmFibGU9ITEsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxyKSl9fTtDZShFcnJvci5wcm90b3R5cGUsIm1lc3NhZ2UiKSwiIiE9PUVycm9yLnByb3RvdHlwZS5tZXNzYWdlJiYoRXJyb3IucHJvdG90eXBlLm1lc3NhZ2U9IiIpLENlKEVycm9yLnByb3RvdHlwZSwibmFtZSIpfWlmKCIvYS9naW0iIT09U3RyaW5nKC9hL2dpbSkpe3ZhciBSZT1mdW5jdGlvbigpe3ZhciB0PSIvIit0aGlzLnNvdXJjZSsiLyI7cmV0dXJuIHRoaXMuZ2xvYmFsJiYodCs9ImciKSx0aGlzLmlnbm9yZUNhc2UmJih0Kz0iaSIpLHRoaXMubXVsdGlsaW5lJiYodCs9Im0iKSx0fTtSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nPVJlfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2hhbmRsZWJhcnMtNC4wLjUuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9oYW5kbGViYXJzLTQuMC41LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDI1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9oYW5kbGViYXJzLTQuMC41LmpzCkBAIC0wLDAgKzEsMyBAQAorIWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuSGFuZGxlYmFycz1lKCk6dC5IYW5kbGViYXJzPWUoKX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHMpe2lmKHJbc10pcmV0dXJuIHJbc10uZXhwb3J0czt2YXIgaT1yW3NdPXtleHBvcnRzOnt9LGlkOnMsbG9hZGVkOiExfTtyZXR1cm4gdFtzXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxlKSxpLmxvYWRlZD0hMCxpLmV4cG9ydHN9dmFyIHI9e307cmV0dXJuIGUubT10LGUuYz1yLGUucD0iIixlKDApfShbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKCl7dmFyIHQ9digpO3JldHVybiB0LmNvbXBpbGU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gbC5jb21waWxlKGUscix0KX0sdC5wcmVjb21waWxlPWZ1bmN0aW9uKGUscil7cmV0dXJuIGwucHJlY29tcGlsZShlLHIsdCl9LHQuQVNUPWNbImRlZmF1bHQiXSx0LkNvbXBpbGVyPWwuQ29tcGlsZXIsdC5KYXZhU2NyaXB0Q29tcGlsZXI9dVsiZGVmYXVsdCJdLHQuUGFyc2VyPWgucGFyc2VyLHQucGFyc2U9aC5wYXJzZSx0fXZhciBpPXIoMSlbImRlZmF1bHQiXTtlLl9fZXNNb2R1bGU9ITA7dmFyIGE9cigyKSxuPWkoYSksbz1yKDIxKSxjPWkobyksaD1yKDIyKSxsPXIoMjcpLHA9cigyOCksdT1pKHApLGY9cigyNSksZD1pKGYpLG09cigyMCksZz1pKG0pLHY9blsiZGVmYXVsdCJdLmNyZWF0ZSx5PXMoKTt5LmNyZWF0ZT1zLGdbImRlZmF1bHQiXSh5KSx5LlZpc2l0b3I9ZFsiZGVmYXVsdCJdLHlbImRlZmF1bHQiXT15LGVbImRlZmF1bHQiXT15LHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO2VbImRlZmF1bHQiXT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6eyJkZWZhdWx0Ijp0fX0sZS5fX2VzTW9kdWxlPSEwfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHMoKXt2YXIgdD1uZXcgby5IYW5kbGViYXJzRW52aXJvbm1lbnQ7cmV0dXJuIGYuZXh0ZW5kKHQsbyksdC5TYWZlU3RyaW5nPWhbImRlZmF1bHQiXSx0LkV4Y2VwdGlvbj1wWyJkZWZhdWx0Il0sdC5VdGlscz1mLHQuZXNjYXBlRXhwcmVzc2lvbj1mLmVzY2FwZUV4cHJlc3Npb24sdC5WTT1tLHQudGVtcGxhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIG0udGVtcGxhdGUoZSx0KX0sdH12YXIgaT1yKDMpWyJkZWZhdWx0Il0sYT1yKDEpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwO3ZhciBuPXIoNCksbz1pKG4pLGM9cigxOCksaD1hKGMpLGw9cig2KSxwPWEobCksdT1yKDUpLGY9aSh1KSxkPXIoMTkpLG09aShkKSxnPXIoMjApLHY9YShnKSx5PXMoKTt5LmNyZWF0ZT1zLHZbImRlZmF1bHQiXSh5KSx5WyJkZWZhdWx0Il09eSxlWyJkZWZhdWx0Il09eSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtlWyJkZWZhdWx0Il09ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pO3JldHVybiBlWyJkZWZhdWx0Il09dCxlfSxlLl9fZXNNb2R1bGU9ITB9LGZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyh0LGUscil7dGhpcy5oZWxwZXJzPXR8fHt9LHRoaXMucGFydGlhbHM9ZXx8e30sdGhpcy5kZWNvcmF0b3JzPXJ8fHt9LGMucmVnaXN0ZXJEZWZhdWx0SGVscGVycyh0aGlzKSxoLnJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyl9dmFyIGk9cigxKVsiZGVmYXVsdCJdO2UuX19lc01vZHVsZT0hMCxlLkhhbmRsZWJhcnNFbnZpcm9ubWVudD1zO3ZhciBhPXIoNSksbj1yKDYpLG89aShuKSxjPXIoNyksaD1yKDE1KSxsPXIoMTcpLHA9aShsKSx1PSI0LjAuNSI7ZS5WRVJTSU9OPXU7dmFyIGY9NztlLkNPTVBJTEVSX1JFVklTSU9OPWY7dmFyIGQ9ezE6Ijw9IDEuMC5yYy4yIiwyOiI9PSAxLjAuMC1yYy4zIiwzOiI9PSAxLjAuMC1yYy40Iiw0OiI9PSAxLngueCIsNToiPT0gMi4wLjAtYWxwaGEueCIsNjoiPj0gMi4wLjAtYmV0YS4xIiw3OiI+PSA0LjAuMCJ9O2UuUkVWSVNJT05fQ0hBTkdFUz1kO3ZhciBtPSJbb2JqZWN0IE9iamVjdF0iO3MucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpzLGxvZ2dlcjpwWyJkZWZhdWx0Il0sbG9nOnBbImRlZmF1bHQiXS5sb2cscmVnaXN0ZXJIZWxwZXI6ZnVuY3Rpb24odCxlKXtpZihhLnRvU3RyaW5nLmNhbGwodCk9PT1tKXtpZihlKXRocm93IG5ldyBvWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycyIpO2EuZXh0ZW5kKHRoaXMuaGVscGVycyx0KX1lbHNlIHRoaXMuaGVscGVyc1t0XT1lfSx1bnJlZ2lzdGVySGVscGVyOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmhlbHBlcnNbdF19LHJlZ2lzdGVyUGFydGlhbDpmdW5jdGlvbih0LGUpe2lmKGEudG9TdHJpbmcuY2FsbCh0KT09PW0pYS5leHRlbmQodGhpcy5wYXJ0aWFscyx0KTtlbHNle2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZSl0aHJvdyBuZXcgb1siZGVmYXVsdCJdKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgIicrdCsnIiBhcyB1bmRlZmluZWQnKTt0aGlzLnBhcnRpYWxzW3RdPWV9fSx1bnJlZ2lzdGVyUGFydGlhbDpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5wYXJ0aWFsc1t0XX0scmVnaXN0ZXJEZWNvcmF0b3I6ZnVuY3Rpb24odCxlKXtpZihhLnRvU3RyaW5nLmNhbGwodCk9PT1tKXtpZihlKXRocm93IG5ldyBvWyJkZWZhdWx0Il0oIkFyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycyIpO2EuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycyx0KX1lbHNlIHRoaXMuZGVjb3JhdG9yc1t0XT1lfSx1bnJlZ2lzdGVyRGVjb3JhdG9yOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmRlY29yYXRvcnNbdF19fTt2YXIgZz1wWyJkZWZhdWx0Il0ubG9nO2UubG9nPWcsZS5jcmVhdGVGcmFtZT1hLmNyZWF0ZUZyYW1lLGUubG9nZ2VyPXBbImRlZmF1bHQiXX0sZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbFt0XX1mdW5jdGlvbiBzKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspZm9yKHZhciByIGluIGFyZ3VtZW50c1tlXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2VdLHIpJiYodFtyXT1hcmd1bWVudHNbZV1bcl0pO3JldHVybiB0fWZ1bmN0aW9uIGkodCxlKXtmb3IodmFyIHI9MCxzPXQubGVuZ3RoO3I8cztyKyspaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gYSh0KXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe2lmKHQmJnQudG9IVE1MKXJldHVybiB0LnRvSFRNTCgpO2lmKG51bGw9PXQpcmV0dXJuIiI7aWYoIXQpcmV0dXJuIHQrIiI7dD0iIit0fXJldHVybiB1LnRlc3QodCk/dC5yZXBsYWNlKHAscik6dH1mdW5jdGlvbiBuKHQpe3JldHVybiF0JiYwIT09dHx8ISghbSh0KXx8MCE9PXQubGVuZ3RoKX1mdW5jdGlvbiBvKHQpe3ZhciBlPXMoe30sdCk7cmV0dXJuIGUuX3BhcmVudD10LGV9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0LnBhdGg9ZSx0fWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4odD90KyIuIjoiIikrZX1lLl9fZXNNb2R1bGU9ITAsZS5leHRlbmQ9cyxlLmluZGV4T2Y9aSxlLmVzY2FwZUV4cHJlc3Npb249YSxlLmlzRW1wdHk9bixlLmNyZWF0ZUZyYW1lPW8sZS5ibG9ja1BhcmFtcz1jLGUuYXBwZW5kQ29udGV4dFBhdGg9aDt2YXIgbD17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjeDI3OyIsImAiOiImI3g2MDsiLCI9IjoiJiN4M0Q7In0scD0vWyY8PiInYD1dL2csdT0vWyY8PiInYD1dLyxmPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS50b1N0cmluZz1mO3ZhciBkPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fTtkKC94LykmJihlLmlzRnVuY3Rpb249ZD1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmIltvYmplY3QgRnVuY3Rpb25dIj09PWYuY2FsbCh0KX0pLGUuaXNGdW5jdGlvbj1kO3ZhciBtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiEoIXR8fCJvYmplY3QiIT10eXBlb2YgdCkmJiJbb2JqZWN0IEFycmF5XSI9PT1mLmNhbGwodCl9O2UuaXNBcnJheT1tfSxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQsZSl7dmFyIGk9ZSYmZS5sb2MsYT12b2lkIDAsbj12b2lkIDA7aSYmKGE9aS5zdGFydC5saW5lLG49aS5zdGFydC5jb2x1bW4sdCs9IiAtICIrYSsiOiIrbik7Zm9yKHZhciBvPUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCksYz0wO2M8cy5sZW5ndGg7YysrKXRoaXNbc1tjXV09b1tzW2NdXTtFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxyKSxpJiYodGhpcy5saW5lTnVtYmVyPWEsdGhpcy5jb2x1bW49bil9ZS5fX2VzTW9kdWxlPSEwO3ZhciBzPVsiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJtZXNzYWdlIiwibmFtZSIsIm51bWJlciIsInN0YWNrIl07ci5wcm90b3R5cGU9bmV3IEVycm9yLGVbImRlZmF1bHQiXT1yLHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyh0KXtuWyJkZWZhdWx0Il0odCksY1siZGVmYXVsdCJdKHQpLGxbImRlZmF1bHQiXSh0KSx1WyJkZWZhdWx0Il0odCksZFsiZGVmYXVsdCJdKHQpLGdbImRlZmF1bHQiXSh0KSx5WyJkZWZhdWx0Il0odCl9dmFyIGk9cigxKVsiZGVmYXVsdCJdO2UuX19lc01vZHVsZT0hMCxlLnJlZ2lzdGVyRGVmYXVsdEhlbHBlcnM9czt2YXIgYT1yKDgpLG49aShhKSxvPXIoOSksYz1pKG8pLGg9cigxMCksbD1pKGgpLHA9cigxMSksdT1pKHApLGY9cigxMiksZD1pKGYpLG09cigxMyksZz1pKG0pLHY9cigxNCkseT1pKHYpfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuX19lc01vZHVsZT0hMDt2YXIgcz1yKDUpO2VbImRlZmF1bHQiXT1mdW5jdGlvbih0KXt0LnJlZ2lzdGVySGVscGVyKCJibG9ja0hlbHBlck1pc3NpbmciLGZ1bmN0aW9uKGUscil7dmFyIGk9ci5pbnZlcnNlLGE9ci5mbjtpZihlPT09ITApcmV0dXJuIGEodGhpcyk7aWYoZT09PSExfHxudWxsPT1lKXJldHVybiBpKHRoaXMpO2lmKHMuaXNBcnJheShlKSlyZXR1cm4gZS5sZW5ndGg+MD8oci5pZHMmJihyLmlkcz1bci5uYW1lXSksdC5oZWxwZXJzLmVhY2goZSxyKSk6aSh0aGlzKTtpZihyLmRhdGEmJnIuaWRzKXt2YXIgbj1zLmNyZWF0ZUZyYW1lKHIuZGF0YSk7bi5jb250ZXh0UGF0aD1zLmFwcGVuZENvbnRleHRQYXRoKHIuZGF0YS5jb250ZXh0UGF0aCxyLm5hbWUpLHI9e2RhdGE6bn19cmV0dXJuIGEoZSxyKX0pfSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO3ZhciBzPXIoMSlbImRlZmF1bHQiXTtlLl9fZXNNb2R1bGU9ITA7dmFyIGk9cig1KSxhPXIoNiksbj1zKGEpO2VbImRlZmF1bHQiXT1mdW5jdGlvbih0KXt0LnJlZ2lzdGVySGVscGVyKCJlYWNoIixmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoZSxyLGEpe2gmJihoLmtleT1lLGguaW5kZXg9cixoLmZpcnN0PTA9PT1yLGgubGFzdD0hIWEsbCYmKGguY29udGV4dFBhdGg9bCtlKSksYys9cyh0W2VdLHtkYXRhOmgsYmxvY2tQYXJhbXM6aS5ibG9ja1BhcmFtcyhbdFtlXSxlXSxbbCtlLG51bGxdKX0pfWlmKCFlKXRocm93IG5ldyBuWyJkZWZhdWx0Il0oIk11c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCIpO3ZhciBzPWUuZm4sYT1lLmludmVyc2Usbz0wLGM9IiIsaD12b2lkIDAsbD12b2lkIDA7aWYoZS5kYXRhJiZlLmlkcyYmKGw9aS5hcHBlbmRDb250ZXh0UGF0aChlLmRhdGEuY29udGV4dFBhdGgsZS5pZHNbMF0pKyIuIiksaS5pc0Z1bmN0aW9uKHQpJiYodD10LmNhbGwodGhpcykpLGUuZGF0YSYmKGg9aS5jcmVhdGVGcmFtZShlLmRhdGEpKSx0JiYib2JqZWN0Ij09dHlwZW9mIHQpaWYoaS5pc0FycmF5KHQpKWZvcih2YXIgcD10Lmxlbmd0aDtvPHA7bysrKW8gaW4gdCYmcihvLG8sbz09PXQubGVuZ3RoLTEpO2Vsc2V7dmFyIHU9dm9pZCAwO2Zvcih2YXIgZiBpbiB0KXQuaGFzT3duUHJvcGVydHkoZikmJih2b2lkIDAhPT11JiZyKHUsby0xKSx1PWYsbysrKTt2b2lkIDAhPT11JiZyKHUsby0xLCEwKX1yZXR1cm4gMD09PW8mJihjPWEodGhpcykpLGN9KX0sdC5leHBvcnRzPWVbImRlZmF1bHQiXX0sZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgcz1yKDEpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwO3ZhciBpPXIoNiksYT1zKGkpO2VbImRlZmF1bHQiXT1mdW5jdGlvbih0KXt0LnJlZ2lzdGVySGVscGVyKCJoZWxwZXJNaXNzaW5nIixmdW5jdGlvbigpe2lmKDEhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBhWyJkZWZhdWx0Il0oJ01pc3NpbmcgaGVscGVyOiAiJythcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXS5uYW1lKyciJyl9KX0sdC5leHBvcnRzPWVbImRlZmF1bHQiXX0sZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtlLl9fZXNNb2R1bGU9ITA7dmFyIHM9cig1KTtlWyJkZWZhdWx0Il09ZnVuY3Rpb24odCl7dC5yZWdpc3RlckhlbHBlcigiaWYiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMuaXNGdW5jdGlvbih0KSYmKHQ9dC5jYWxsKHRoaXMpKSwhZS5oYXNoLmluY2x1ZGVaZXJvJiYhdHx8cy5pc0VtcHR5KHQpP2UuaW52ZXJzZSh0aGlzKTplLmZuKHRoaXMpfSksdC5yZWdpc3RlckhlbHBlcigidW5sZXNzIixmdW5jdGlvbihlLHIpe3JldHVybiB0LmhlbHBlcnNbImlmIl0uY2FsbCh0aGlzLGUse2ZuOnIuaW52ZXJzZSxpbnZlcnNlOnIuZm4saGFzaDpyLmhhc2h9KX0pfSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtlLl9fZXNNb2R1bGU9ITAsZVsiZGVmYXVsdCJdPWZ1bmN0aW9uKHQpe3QucmVnaXN0ZXJIZWxwZXIoImxvZyIsZnVuY3Rpb24oKXtmb3IodmFyIGU9W3ZvaWQgMF0scj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoLTE7cysrKWUucHVzaChhcmd1bWVudHNbc10pO3ZhciBpPTE7bnVsbCE9ci5oYXNoLmxldmVsP2k9ci5oYXNoLmxldmVsOnIuZGF0YSYmbnVsbCE9ci5kYXRhLmxldmVsJiYoaT1yLmRhdGEubGV2ZWwpLGVbMF09aSx0LmxvZy5hcHBseSh0LGUpfSl9LHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO2UuX19lc01vZHVsZT0hMCxlWyJkZWZhdWx0Il09ZnVuY3Rpb24odCl7dC5yZWdpc3RlckhlbHBlcigibG9va3VwIixmdW5jdGlvbih0LGUpe3JldHVybiB0JiZ0W2VdfSl9LHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZS5fX2VzTW9kdWxlPSEwO3ZhciBzPXIoNSk7ZVsiZGVmYXVsdCJdPWZ1bmN0aW9uKHQpe3QucmVnaXN0ZXJIZWxwZXIoIndpdGgiLGZ1bmN0aW9uKHQsZSl7cy5pc0Z1bmN0aW9uKHQpJiYodD10LmNhbGwodGhpcykpO3ZhciByPWUuZm47aWYocy5pc0VtcHR5KHQpKXJldHVybiBlLmludmVyc2UodGhpcyk7dmFyIGk9ZS5kYXRhO3JldHVybiBlLmRhdGEmJmUuaWRzJiYoaT1zLmNyZWF0ZUZyYW1lKGUuZGF0YSksaS5jb250ZXh0UGF0aD1zLmFwcGVuZENvbnRleHRQYXRoKGUuZGF0YS5jb250ZXh0UGF0aCxlLmlkc1swXSkpLHIodCx7ZGF0YTppLGJsb2NrUGFyYW1zOnMuYmxvY2tQYXJhbXMoW3RdLFtpJiZpLmNvbnRleHRQYXRoXSl9KX0pfSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHModCl7blsiZGVmYXVsdCJdKHQpfXZhciBpPXIoMSlbImRlZmF1bHQiXTtlLl9fZXNNb2R1bGU9ITAsZS5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzPXM7dmFyIGE9cigxNiksbj1pKGEpfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuX19lc01vZHVsZT0hMDt2YXIgcz1yKDUpO2VbImRlZmF1bHQiXT1mdW5jdGlvbih0KXt0LnJlZ2lzdGVyRGVjb3JhdG9yKCJpbmxpbmUiLGZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBhPXQ7cmV0dXJuIGUucGFydGlhbHN8fChlLnBhcnRpYWxzPXt9LGE9ZnVuY3Rpb24oaSxhKXt2YXIgbj1yLnBhcnRpYWxzO3IucGFydGlhbHM9cy5leHRlbmQoe30sbixlLnBhcnRpYWxzKTt2YXIgbz10KGksYSk7cmV0dXJuIHIucGFydGlhbHM9bixvfSksZS5wYXJ0aWFsc1tpLmFyZ3NbMF1dPWkuZm4sYX0pfSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2UuX19lc01vZHVsZT0hMDt2YXIgcz1yKDUpLGk9e21ldGhvZE1hcDpbImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciJdLGxldmVsOiJpbmZvIixsb29rdXBMZXZlbDpmdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPXMuaW5kZXhPZihpLm1ldGhvZE1hcCx0LnRvTG93ZXJDYXNlKCkpO3Q9ZT49MD9lOnBhcnNlSW50KHQsMTApfXJldHVybiB0fSxsb2c6ZnVuY3Rpb24odCl7aWYodD1pLmxvb2t1cExldmVsKHQpLCJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmaS5sb29rdXBMZXZlbChpLmxldmVsKTw9dCl7dmFyIGU9aS5tZXRob2RNYXBbdF07Y29uc29sZVtlXXx8KGU9ImxvZyIpO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkocj4xP3ItMTowKSxhPTE7YTxyO2ErKylzW2EtMV09YXJndW1lbnRzW2FdO2NvbnNvbGVbZV0uYXBwbHkoY29uc29sZSxzKX19fTtlWyJkZWZhdWx0Il09aSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKHQpe3RoaXMuc3RyaW5nPXR9ZS5fX2VzTW9kdWxlPSEwLHIucHJvdG90eXBlLnRvU3RyaW5nPXIucHJvdG90eXBlLnRvSFRNTD1mdW5jdGlvbigpe3JldHVybiIiK3RoaXMuc3RyaW5nfSxlWyJkZWZhdWx0Il09cix0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHModCl7dmFyIGU9dCYmdFswXXx8MSxyPXYuQ09NUElMRVJfUkVWSVNJT047aWYoZSE9PXIpe2lmKGU8cil7dmFyIHM9di5SRVZJU0lPTl9DSEFOR0VTW3JdLGk9di5SRVZJU0lPTl9DSEFOR0VTW2VdO3Rocm93IG5ldyBnWyJkZWZhdWx0Il0oIlRlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuIFBsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCIrcysiKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCIraSsiKS4iKX10aHJvdyBuZXcgZ1siZGVmYXVsdCJdKCJUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuIFBsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoIit0WzFdKyIpLiIpfX1mdW5jdGlvbiBpKHQsZSl7ZnVuY3Rpb24gcihyLHMsaSl7aS5oYXNoJiYocz1kLmV4dGVuZCh7fSxzLGkuaGFzaCksaS5pZHMmJihpLmlkc1swXT0hMCkpLHI9ZS5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMscixzLGkpO3ZhciBhPWUuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMscixzLGkpO2lmKG51bGw9PWEmJmUuY29tcGlsZSYmKGkucGFydGlhbHNbaS5uYW1lXT1lLmNvbXBpbGUocix0LmNvbXBpbGVyT3B0aW9ucyxlKSxhPWkucGFydGlhbHNbaS5uYW1lXShzLGkpKSxudWxsIT1hKXtpZihpLmluZGVudCl7Zm9yKHZhciBuPWEuc3BsaXQoIlxuIiksbz0wLGM9bi5sZW5ndGg7bzxjJiYobltvXXx8bysxIT09Yyk7bysrKW5bb109aS5pbmRlbnQrbltvXTthPW4uam9pbigiXG4iKX1yZXR1cm4gYX10aHJvdyBuZXcgZ1siZGVmYXVsdCJdKCJUaGUgcGFydGlhbCAiK2kubmFtZSsiIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUiKX1mdW5jdGlvbiBzKGUpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIiIrdC5tYWluKGksZSxpLmhlbHBlcnMsaS5wYXJ0aWFscyxuLGMsbyl9dmFyIGE9YXJndW1lbnRzLmxlbmd0aDw9MXx8dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxuPWEuZGF0YTtzLl9zZXR1cChhKSwhYS5wYXJ0aWFsJiZ0LnVzZURhdGEmJihuPWgoZSxuKSk7dmFyIG89dm9pZCAwLGM9dC51c2VCbG9ja1BhcmFtcz9bXTp2b2lkIDA7cmV0dXJuIHQudXNlRGVwdGhzJiYobz1hLmRlcHRocz9lIT09YS5kZXB0aHNbMF0/W2VdLmNvbmNhdChhLmRlcHRocyk6YS5kZXB0aHM6W2VdKSwocj1sKHQubWFpbixyLGksYS5kZXB0aHN8fFtdLG4sYykpKGUsYSl9aWYoIWUpdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgiTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlIik7aWYoIXR8fCF0Lm1haW4pdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgiVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICIrdHlwZW9mIHQpO3QubWFpbi5kZWNvcmF0b3I9dC5tYWluX2QsZS5WTS5jaGVja1JldmlzaW9uKHQuY29tcGlsZXIpO3ZhciBpPXtzdHJpY3Q6ZnVuY3Rpb24odCxlKXtpZighKGUgaW4gdCkpdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgnIicrZSsnIiBub3QgZGVmaW5lZCBpbiAnK3QpO3JldHVybiB0W2VdfSxsb29rdXA6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgscz0wO3M8cjtzKyspaWYodFtzXSYmbnVsbCE9dFtzXVtlXSlyZXR1cm4gdFtzXVtlXX0sbGFtYmRhOmZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC5jYWxsKGUpOnR9LGVzY2FwZUV4cHJlc3Npb246ZC5lc2NhcGVFeHByZXNzaW9uLGludm9rZVBhcnRpYWw6cixmbjpmdW5jdGlvbihlKXt2YXIgcj10W2VdO3JldHVybiByLmRlY29yYXRvcj10W2UrIl9kIl0scn0scHJvZ3JhbXM6W10scHJvZ3JhbTpmdW5jdGlvbih0LGUscixzLGkpe3ZhciBuPXRoaXMucHJvZ3JhbXNbdF0sbz10aGlzLmZuKHQpO3JldHVybiBlfHxpfHxzfHxyP249YSh0aGlzLHQsbyxlLHIscyxpKTpufHwobj10aGlzLnByb2dyYW1zW3RdPWEodGhpcyx0LG8pKSxufSxkYXRhOmZ1bmN0aW9uKHQsZSl7Zm9yKDt0JiZlLS07KXQ9dC5fcGFyZW50O3JldHVybiB0fSxtZXJnZTpmdW5jdGlvbih0LGUpe3ZhciByPXR8fGU7cmV0dXJuIHQmJmUmJnQhPT1lJiYocj1kLmV4dGVuZCh7fSxlLHQpKSxyfSxub29wOmUuVk0ubm9vcCxjb21waWxlckluZm86dC5jb21waWxlcn07cmV0dXJuIHMuaXNUb3A9ITAscy5fc2V0dXA9ZnVuY3Rpb24ocil7ci5wYXJ0aWFsPyhpLmhlbHBlcnM9ci5oZWxwZXJzLGkucGFydGlhbHM9ci5wYXJ0aWFscyxpLmRlY29yYXRvcnM9ci5kZWNvcmF0b3JzKTooaS5oZWxwZXJzPWkubWVyZ2Uoci5oZWxwZXJzLGUuaGVscGVycyksdC51c2VQYXJ0aWFsJiYoaS5wYXJ0aWFscz1pLm1lcmdlKHIucGFydGlhbHMsZS5wYXJ0aWFscykpLCh0LnVzZVBhcnRpYWx8fHQudXNlRGVjb3JhdG9ycykmJihpLmRlY29yYXRvcnM9aS5tZXJnZShyLmRlY29yYXRvcnMsZS5kZWNvcmF0b3JzKSkpfSxzLl9jaGlsZD1mdW5jdGlvbihlLHIscyxuKXtpZih0LnVzZUJsb2NrUGFyYW1zJiYhcyl0aHJvdyBuZXcgZ1siZGVmYXVsdCJdKCJtdXN0IHBhc3MgYmxvY2sgcGFyYW1zIik7aWYodC51c2VEZXB0aHMmJiFuKXRocm93IG5ldyBnWyJkZWZhdWx0Il0oIm11c3QgcGFzcyBwYXJlbnQgZGVwdGhzIik7cmV0dXJuIGEoaSxlLHRbZV0sciwwLHMsbil9LHN9ZnVuY3Rpb24gYSh0LGUscixzLGksYSxuKXtmdW5jdGlvbiBvKGUpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT97fTphcmd1bWVudHNbMV0sbz1uO3JldHVybiBuJiZlIT09blswXSYmKG89W2VdLmNvbmNhdChuKSkscih0LGUsdC5oZWxwZXJzLHQucGFydGlhbHMsaS5kYXRhfHxzLGEmJltpLmJsb2NrUGFyYW1zXS5jb25jYXQoYSksbyl9cmV0dXJuIG89bChyLG8sdCxuLHMsYSksby5wcm9ncmFtPWUsby5kZXB0aD1uP24ubGVuZ3RoOjAsby5ibG9ja1BhcmFtcz1pfHwwLG99ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuIHQ/dC5jYWxsfHxyLm5hbWV8fChyLm5hbWU9dCx0PXIucGFydGlhbHNbdF0pOnQ9IkBwYXJ0aWFsLWJsb2NrIj09PXIubmFtZT9yLmRhdGFbInBhcnRpYWwtYmxvY2siXTpyLnBhcnRpYWxzW3IubmFtZV0sdH1mdW5jdGlvbiBvKHQsZSxyKXtyLnBhcnRpYWw9ITAsci5pZHMmJihyLmRhdGEuY29udGV4dFBhdGg9ci5pZHNbMF18fHIuZGF0YS5jb250ZXh0UGF0aCk7dmFyIHM9dm9pZCAwO2lmKHIuZm4mJnIuZm4hPT1jJiYoci5kYXRhPXYuY3JlYXRlRnJhbWUoci5kYXRhKSxzPXIuZGF0YVsicGFydGlhbC1ibG9jayJdPXIuZm4scy5wYXJ0aWFscyYmKHIucGFydGlhbHM9ZC5leHRlbmQoe30sci5wYXJ0aWFscyxzLnBhcnRpYWxzKSkpLHZvaWQgMD09PXQmJnMmJih0PXMpLHZvaWQgMD09PXQpdGhyb3cgbmV3IGdbImRlZmF1bHQiXSgiVGhlIHBhcnRpYWwgIityLm5hbWUrIiBjb3VsZCBub3QgYmUgZm91bmQiKTtpZih0IGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIHQoZSxyKX1mdW5jdGlvbiBjKCl7cmV0dXJuIiJ9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiBlJiYicm9vdCJpbiBlfHwoZT1lP3YuY3JlYXRlRnJhbWUoZSk6e30sZS5yb290PXQpLGV9ZnVuY3Rpb24gbCh0LGUscixzLGksYSl7aWYodC5kZWNvcmF0b3Ipe3ZhciBuPXt9O2U9dC5kZWNvcmF0b3IoZSxuLHIscyYmc1swXSxpLGEscyksZC5leHRlbmQoZSxuKX1yZXR1cm4gZX12YXIgcD1yKDMpWyJkZWZhdWx0Il0sdT1yKDEpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwLGUuY2hlY2tSZXZpc2lvbj1zLGUudGVtcGxhdGU9aSxlLndyYXBQcm9ncmFtPWEsZS5yZXNvbHZlUGFydGlhbD1uLGUuaW52b2tlUGFydGlhbD1vLGUubm9vcD1jO3ZhciBmPXIoNSksZD1wKGYpLG09cig2KSxnPXUobSksdj1yKDQpfSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7ZS5fX2VzTW9kdWxlPSEwLGVbImRlZmF1bHQiXT1mdW5jdGlvbih0KXt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIHI/cjp3aW5kb3cscz1lLkhhbmRsZWJhcnM7dC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuSGFuZGxlYmFycz09PXQmJihlLkhhbmRsZWJhcnM9cyksdH19LHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19KS5jYWxsKGUsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSl9LGZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO2UuX19lc01vZHVsZT0hMDt2YXIgcj17aGVscGVyczp7aGVscGVyRXhwcmVzc2lvbjpmdW5jdGlvbih0KXtyZXR1cm4iU3ViRXhwcmVzc2lvbiI9PT10LnR5cGV8fCgiTXVzdGFjaGVTdGF0ZW1lbnQiPT09dC50eXBlfHwiQmxvY2tTdGF0ZW1lbnQiPT09dC50eXBlKSYmISEodC5wYXJhbXMmJnQucGFyYW1zLmxlbmd0aHx8dC5oYXNoKX0sc2NvcGVkSWQ6ZnVuY3Rpb24odCl7cmV0dXJuL15cLnx0aGlzXGIvLnRlc3QodC5vcmlnaW5hbCl9LHNpbXBsZUlkOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dC5wYXJ0cy5sZW5ndGgmJiFyLmhlbHBlcnMuc2NvcGVkSWQodCkmJiF0LmRlcHRofX19O2VbImRlZmF1bHQiXT1yLHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcyh0LGUpe2lmKCJQcm9ncmFtIj09PXQudHlwZSlyZXR1cm4gdDtvWyJkZWZhdWx0Il0ueXk9ZixmLmxvY0luZm89ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBmLlNvdXJjZUxvY2F0aW9uKGUmJmUuc3JjTmFtZSx0KX07dmFyIHI9bmV3IGhbImRlZmF1bHQiXShlKTtyZXR1cm4gci5hY2NlcHQob1siZGVmYXVsdCJdLnBhcnNlKHQpKX12YXIgaT1yKDEpWyJkZWZhdWx0Il0sYT1yKDMpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwLGUucGFyc2U9czt2YXIgbj1yKDIzKSxvPWkobiksYz1yKDI0KSxoPWkoYyksbD1yKDI2KSxwPWEobCksdT1yKDUpO2UucGFyc2VyPW9bImRlZmF1bHQiXTt2YXIgZj17fTt1LmV4dGVuZChmLHApfSxmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLnl5PXt9fXZhciBlPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIscm9vdDozLHByb2dyYW06NCxFT0Y6NSxwcm9ncmFtX3JlcGV0aXRpb24wOjYsc3RhdGVtZW50OjcsbXVzdGFjaGU6OCxibG9jazo5LHJhd0Jsb2NrOjEwLHBhcnRpYWw6MTEscGFydGlhbEJsb2NrOjEyLGNvbnRlbnQ6MTMsQ09NTUVOVDoxNCxDT05URU5UOjE1LG9wZW5SYXdCbG9jazoxNixyYXdCbG9ja19yZXBldGl0aW9uX3BsdXMwOjE3LEVORF9SQVdfQkxPQ0s6MTgsT1BFTl9SQVdfQkxPQ0s6MTksaGVscGVyTmFtZToyMCxvcGVuUmF3QmxvY2tfcmVwZXRpdGlvbjA6MjEsb3BlblJhd0Jsb2NrX29wdGlvbjA6MjIsQ0xPU0VfUkFXX0JMT0NLOjIzLG9wZW5CbG9jazoyNCxibG9ja19vcHRpb24wOjI1LGNsb3NlQmxvY2s6MjYsb3BlbkludmVyc2U6MjcsYmxvY2tfb3B0aW9uMToyOCxPUEVOX0JMT0NLOjI5LG9wZW5CbG9ja19yZXBldGl0aW9uMDozMCxvcGVuQmxvY2tfb3B0aW9uMDozMSxvcGVuQmxvY2tfb3B0aW9uMTozMixDTE9TRTozMyxPUEVOX0lOVkVSU0U6MzQsb3BlbkludmVyc2VfcmVwZXRpdGlvbjA6MzUsb3BlbkludmVyc2Vfb3B0aW9uMDozNixvcGVuSW52ZXJzZV9vcHRpb24xOjM3LG9wZW5JbnZlcnNlQ2hhaW46MzgsT1BFTl9JTlZFUlNFX0NIQUlOOjM5LG9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjA6NDAsb3BlbkludmVyc2VDaGFpbl9vcHRpb24wOjQxLG9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMTo0MixpbnZlcnNlQW5kUHJvZ3JhbTo0MyxJTlZFUlNFOjQ0LGludmVyc2VDaGFpbjo0NSxpbnZlcnNlQ2hhaW5fb3B0aW9uMDo0NixPUEVOX0VOREJMT0NLOjQ3LE9QRU46NDgsbXVzdGFjaGVfcmVwZXRpdGlvbjA6NDksbXVzdGFjaGVfb3B0aW9uMDo1MCxPUEVOX1VORVNDQVBFRDo1MSxtdXN0YWNoZV9yZXBldGl0aW9uMTo1MixtdXN0YWNoZV9vcHRpb24xOjUzLENMT1NFX1VORVNDQVBFRDo1NCxPUEVOX1BBUlRJQUw6NTUscGFydGlhbE5hbWU6NTYscGFydGlhbF9yZXBldGl0aW9uMDo1NyxwYXJ0aWFsX29wdGlvbjA6NTgsb3BlblBhcnRpYWxCbG9jazo1OSxPUEVOX1BBUlRJQUxfQkxPQ0s6NjAsb3BlblBhcnRpYWxCbG9ja19yZXBldGl0aW9uMDo2MSxvcGVuUGFydGlhbEJsb2NrX29wdGlvbjA6NjIscGFyYW06NjMsc2V4cHI6NjQsT1BFTl9TRVhQUjo2NSxzZXhwcl9yZXBldGl0aW9uMDo2NixzZXhwcl9vcHRpb24wOjY3LENMT1NFX1NFWFBSOjY4LGhhc2g6NjksaGFzaF9yZXBldGl0aW9uX3BsdXMwOjcwLGhhc2hTZWdtZW50OjcxLElEOjcyLEVRVUFMUzo3MyxibG9ja1BhcmFtczo3NCxPUEVOX0JMT0NLX1BBUkFNUzo3NSxibG9ja1BhcmFtc19yZXBldGl0aW9uX3BsdXMwOjc2LENMT1NFX0JMT0NLX1BBUkFNUzo3NyxwYXRoOjc4LGRhdGFOYW1lOjc5LFNUUklORzo4MCxOVU1CRVI6ODEsQk9PTEVBTjo4MixVTkRFRklORUQ6ODMsTlVMTDo4NCxEQVRBOjg1LHBhdGhTZWdtZW50czo4NixTRVA6ODcsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDU6IkVPRiIsMTQ6IkNPTU1FTlQiLDE1OiJDT05URU5UIiwxODoiRU5EX1JBV19CTE9DSyIsMTk6Ik9QRU5fUkFXX0JMT0NLIiwyMzoiQ0xPU0VfUkFXX0JMT0NLIiwyOToiT1BFTl9CTE9DSyIsMzM6IkNMT1NFIiwzNDoiT1BFTl9JTlZFUlNFIiwzOToiT1BFTl9JTlZFUlNFX0NIQUlOIiw0NDoiSU5WRVJTRSIsNDc6Ik9QRU5fRU5EQkxPQ0siLDQ4OiJPUEVOIiw1MToiT1BFTl9VTkVTQ0FQRUQiLDU0OiJDTE9TRV9VTkVTQ0FQRUQiLDU1OiJPUEVOX1BBUlRJQUwiLDYwOiJPUEVOX1BBUlRJQUxfQkxPQ0siLDY1OiJPUEVOX1NFWFBSIiw2ODoiQ0xPU0VfU0VYUFIiLDcyOiJJRCIsNzM6IkVRVUFMUyIsNzU6Ik9QRU5fQkxPQ0tfUEFSQU1TIiw3NzoiQ0xPU0VfQkxPQ0tfUEFSQU1TIiw4MDoiU1RSSU5HIiw4MToiTlVNQkVSIiw4MjoiQk9PTEVBTiIsODM6IlVOREVGSU5FRCIsODQ6Ik5VTEwiLDg1OiJEQVRBIiw4NzoiU0VQIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFs0LDFdLFs3LDFdLFs3LDFdLFs3LDFdLFs3LDFdLFs3LDFdLFs3LDFdLFs3LDFdLFsxMywxXSxbMTAsM10sWzE2LDVdLFs5LDRdLFs5LDRdLFsyNCw2XSxbMjcsNl0sWzM4LDZdLFs0MywyXSxbNDUsM10sWzQ1LDFdLFsyNiwzXSxbOCw1XSxbOCw1XSxbMTEsNV0sWzEyLDNdLFs1OSw1XSxbNjMsMV0sWzYzLDFdLFs2NCw1XSxbNjksMV0sWzcxLDNdLFs3NCwzXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzU2LDFdLFs1NiwxXSxbNzksMl0sWzc4LDFdLFs4NiwzXSxbODYsMV0sWzYsMF0sWzYsMl0sWzE3LDFdLFsxNywyXSxbMjEsMF0sWzIxLDJdLFsyMiwwXSxbMjIsMV0sWzI1LDBdLFsyNSwxXSxbMjgsMF0sWzI4LDFdLFszMCwwXSxbMzAsMl0sWzMxLDBdLFszMSwxXSxbMzIsMF0sWzMyLDFdLFszNSwwXSxbMzUsMl0sWzM2LDBdLFszNiwxXSxbMzcsMF0sWzM3LDFdLFs0MCwwXSxbNDAsMl0sWzQxLDBdLFs0MSwxXSxbNDIsMF0sWzQyLDFdLFs0NiwwXSxbNDYsMV0sWzQ5LDBdLFs0OSwyXSxbNTAsMF0sWzUwLDFdLFs1MiwwXSxbNTIsMl0sWzUzLDBdLFs1MywxXSxbNTcsMF0sWzU3LDJdLFs1OCwwXSxbNTgsMV0sWzYxLDBdLFs2MSwyXSxbNjIsMF0sWzYyLDFdLFs2NiwwXSxbNjYsMl0sWzY3LDBdLFs2NywxXSxbNzAsMV0sWzcwLDJdLFs3NiwxXSxbNzYsMl1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odCxlLHIscyxpLGEsbil7dmFyIG89YS5sZW5ndGgtMTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBhW28tMV07Y2FzZSAyOnRoaXMuJD1zLnByZXBhcmVQcm9ncmFtKGFbb10pO2JyZWFrO2Nhc2UgMzp0aGlzLiQ9YVtvXTticmVhaztjYXNlIDQ6dGhpcy4kPWFbb107YnJlYWs7Y2FzZSA1OnRoaXMuJD1hW29dO2JyZWFrO2Nhc2UgNjp0aGlzLiQ9YVtvXTticmVhaztjYXNlIDc6dGhpcy4kPWFbb107YnJlYWs7Y2FzZSA4OnRoaXMuJD1hW29dO2JyZWFrO2Nhc2UgOTp0aGlzLiQ9e3R5cGU6IkNvbW1lbnRTdGF0ZW1lbnQiLHZhbHVlOnMuc3RyaXBDb21tZW50KGFbb10pLHN0cmlwOnMuc3RyaXBGbGFncyhhW29dLGFbb10pLGxvYzpzLmxvY0luZm8odGhpcy5fJCl9O2JyZWFrO2Nhc2UgMTA6dGhpcy4kPXt0eXBlOiJDb250ZW50U3RhdGVtZW50IixvcmlnaW5hbDphW29dLHZhbHVlOmFbb10sbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAxMTp0aGlzLiQ9cy5wcmVwYXJlUmF3QmxvY2soYVtvLTJdLGFbby0xXSxhW29dLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMTI6dGhpcy4kPXtwYXRoOmFbby0zXSxwYXJhbXM6YVtvLTJdLGhhc2g6YVtvLTFdfTticmVhaztjYXNlIDEzOnRoaXMuJD1zLnByZXBhcmVCbG9jayhhW28tM10sYVtvLTJdLGFbby0xXSxhW29dLCExLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMTQ6dGhpcy4kPXMucHJlcGFyZUJsb2NrKGFbby0zXSxhW28tMl0sYVtvLTFdLGFbb10sITAsdGhpcy5fJCk7YnJlYWs7Y2FzZSAxNTp0aGlzLiQ9e29wZW46YVtvLTVdLHBhdGg6YVtvLTRdLHBhcmFtczphW28tM10saGFzaDphW28tMl0sYmxvY2tQYXJhbXM6YVtvLTFdLHN0cmlwOnMuc3RyaXBGbGFncyhhW28tNV0sYVtvXSl9O2JyZWFrO2Nhc2UgMTY6dGhpcy4kPXtwYXRoOmFbby00XSxwYXJhbXM6YVtvLTNdLGhhc2g6YVtvLTJdLGJsb2NrUGFyYW1zOmFbby0xXSxzdHJpcDpzLnN0cmlwRmxhZ3MoYVtvLTVdLGFbb10pfTticmVhaztjYXNlIDE3OnRoaXMuJD17cGF0aDphW28tNF0scGFyYW1zOmFbby0zXSxoYXNoOmFbby0yXSxibG9ja1BhcmFtczphW28tMV0sc3RyaXA6cy5zdHJpcEZsYWdzKGFbby01XSxhW29dKX07YnJlYWs7Y2FzZSAxODp0aGlzLiQ9e3N0cmlwOnMuc3RyaXBGbGFncyhhW28tMV0sYVtvLTFdKSxwcm9ncmFtOmFbb119O2JyZWFrO2Nhc2UgMTk6dmFyIGM9cy5wcmVwYXJlQmxvY2soYVtvLTJdLGFbby0xXSxhW29dLGFbb10sITEsdGhpcy5fJCksaD1zLnByZXBhcmVQcm9ncmFtKFtjXSxhW28tMV0ubG9jKTtoLmNoYWluZWQ9ITAsdGhpcy4kPXtzdHJpcDphW28tMl0uc3RyaXAscHJvZ3JhbTpoLGNoYWluOiEwfTticmVhaztjYXNlIDIwOnRoaXMuJD1hW29dO2JyZWFrO2Nhc2UgMjE6dGhpcy4kPXtwYXRoOmFbby0xXSxzdHJpcDpzLnN0cmlwRmxhZ3MoYVtvLTJdLGFbb10pfTticmVhaztjYXNlIDIyOnRoaXMuJD1zLnByZXBhcmVNdXN0YWNoZShhW28tM10sYVtvLTJdLGFbby0xXSxhW28tNF0scy5zdHJpcEZsYWdzKGFbby00XSxhW29dKSx0aGlzLl8kKTticmVhaztjYXNlIDIzOnRoaXMuJD1zLnByZXBhcmVNdXN0YWNoZShhW28tM10sYVtvLTJdLGFbby0xXSxhW28tNF0scy5zdHJpcEZsYWdzKGFbby00XSxhW29dKSx0aGlzLl8kKTticmVhaztjYXNlIDI0OnRoaXMuJD17dHlwZToiUGFydGlhbFN0YXRlbWVudCIsbmFtZTphW28tM10scGFyYW1zOmFbby0yXSxoYXNoOmFbby0xXSxpbmRlbnQ6IiIsc3RyaXA6cy5zdHJpcEZsYWdzKGFbby00XSxhW29dKSxsb2M6cy5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDI1OnRoaXMuJD1zLnByZXBhcmVQYXJ0aWFsQmxvY2soYVtvLTJdLGFbby0xXSxhW29dLHRoaXMuXyQpO2JyZWFrO2Nhc2UgMjY6dGhpcy4kPXtwYXRoOmFbby0zXSxwYXJhbXM6YVtvLTJdLGhhc2g6YVtvLTFdLHN0cmlwOnMuc3RyaXBGbGFncyhhW28tNF0sYVtvXSl9O2JyZWFrO2Nhc2UgMjc6dGhpcy4kPWFbb107YnJlYWs7Y2FzZSAyODp0aGlzLiQ9YVtvXTticmVhaztjYXNlIDI5OnRoaXMuJD17dHlwZToiU3ViRXhwcmVzc2lvbiIscGF0aDphW28tM10scGFyYW1zOmFbby0yXSxoYXNoOmFbby0xXSxsb2M6cy5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDMwOnRoaXMuJD17dHlwZToiSGFzaCIscGFpcnM6YVtvXSxsb2M6cy5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDMxOnRoaXMuJD17dHlwZToiSGFzaFBhaXIiLGtleTpzLmlkKGFbby0yXSksdmFsdWU6YVtvXSxsb2M6cy5sb2NJbmZvKHRoaXMuXyQpfTticmVhaztjYXNlIDMyOnRoaXMuJD1zLmlkKGFbby0xXSk7YnJlYWs7Y2FzZSAzMzp0aGlzLiQ9YVtvXTticmVhaztjYXNlIDM0OnRoaXMuJD1hW29dO2JyZWFrO2Nhc2UgMzU6dGhpcy4kPXt0eXBlOiJTdHJpbmdMaXRlcmFsIix2YWx1ZTphW29dLG9yaWdpbmFsOmFbb10sbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzNjp0aGlzLiQ9e3R5cGU6Ik51bWJlckxpdGVyYWwiLHZhbHVlOk51bWJlcihhW29dKSxvcmlnaW5hbDpOdW1iZXIoYVtvXSksbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzNzp0aGlzLiQ9e3R5cGU6IkJvb2xlYW5MaXRlcmFsIix2YWx1ZToidHJ1ZSI9PT1hW29dLG9yaWdpbmFsOiJ0cnVlIj09PWFbb10sbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzODp0aGlzLiQ9e3R5cGU6IlVuZGVmaW5lZExpdGVyYWwiLG9yaWdpbmFsOnZvaWQgMCx2YWx1ZTp2b2lkIDAsbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9e3R5cGU6Ik51bGxMaXRlcmFsIixvcmlnaW5hbDpudWxsLHZhbHVlOm51bGwsbG9jOnMubG9jSW5mbyh0aGlzLl8kKX07YnJlYWs7Y2FzZSA0MDp0aGlzLiQ9YVtvXTticmVhaztjYXNlIDQxOnRoaXMuJD1hW29dO2JyZWFrO2Nhc2UgNDI6dGhpcy4kPXMucHJlcGFyZVBhdGgoITAsYVtvXSx0aGlzLl8kKTticmVhaztjYXNlIDQzOnRoaXMuJD1zLnByZXBhcmVQYXRoKCExLGFbb10sdGhpcy5fJCk7YnJlYWs7Y2FzZSA0NDphW28tMl0ucHVzaCh7cGFydDpzLmlkKGFbb10pLG9yaWdpbmFsOmFbb10sc2VwYXJhdG9yOmFbby0xXX0pLHRoaXMuJD1hW28tMl07YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9W3twYXJ0OnMuaWQoYVtvXSksb3JpZ2luYWw6YVtvXX1dO2JyZWFrO2Nhc2UgNDY6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDc6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9W2Fbb11dO2JyZWFrO2Nhc2UgNDk6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSA1MDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA1MTphW28tMV0ucHVzaChhW29dKTticmVhaztjYXNlIDU4OnRoaXMuJD1bXTticmVhaztjYXNlIDU5OmFbby0xXS5wdXNoKGFbb10pO2JyZWFrO2Nhc2UgNjQ6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNjU6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSA3MDp0aGlzLiQ9W107YnJlYWs7Y2FzZSA3MTphW28tMV0ucHVzaChhW29dKTticmVhaztjYXNlIDc4OnRoaXMuJD1bXTticmVhaztjYXNlIDc5OmFbby0xXS5wdXNoKGFbb10pO2JyZWFrO2Nhc2UgODI6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgODM6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSA4Njp0aGlzLiQ9W107YnJlYWs7Y2FzZSA4NzphW28tMV0ucHVzaChhW29dKTticmVhaztjYXNlIDkwOnRoaXMuJD1bXTticmVhaztjYXNlIDkxOmFbby0xXS5wdXNoKGFbb10pO2JyZWFrO2Nhc2UgOTQ6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgOTU6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSA5ODp0aGlzLiQ9W2Fbb11dO2JyZWFrO2Nhc2UgOTk6YVtvLTFdLnB1c2goYVtvXSk7YnJlYWs7Y2FzZSAxMDA6dGhpcy4kPVthW29dXTticmVhaztjYXNlIDEwMTphW28tMV0ucHVzaChhW29dKX19LHRhYmxlOlt7MzoxLDQ6Miw1OlsyLDQ2XSw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHsxOlszXX0sezU6WzEsNF19LHs1OlsyLDJdLDc6NSw4OjYsOTo3LDEwOjgsMTE6OSwxMjoxMCwxMzoxMSwxNDpbMSwxMl0sMTU6WzEsMjBdLDE2OjE3LDE5OlsxLDIzXSwyNDoxNSwyNzoxNiwyOTpbMSwyMV0sMzQ6WzEsMjJdLDM5OlsyLDJdLDQ0OlsyLDJdLDQ3OlsyLDJdLDQ4OlsxLDEzXSw1MTpbMSwxNF0sNTU6WzEsMThdLDU5OjE5LDYwOlsxLDI0XX0sezE6WzIsMV19LHs1OlsyLDQ3XSwxNDpbMiw0N10sMTU6WzIsNDddLDE5OlsyLDQ3XSwyOTpbMiw0N10sMzQ6WzIsNDddLDM5OlsyLDQ3XSw0NDpbMiw0N10sNDc6WzIsNDddLDQ4OlsyLDQ3XSw1MTpbMiw0N10sNTU6WzIsNDddLDYwOlsyLDQ3XX0sezU6WzIsM10sMTQ6WzIsM10sMTU6WzIsM10sMTk6WzIsM10sMjk6WzIsM10sMzQ6WzIsM10sMzk6WzIsM10sNDQ6WzIsM10sNDc6WzIsM10sNDg6WzIsM10sNTE6WzIsM10sNTU6WzIsM10sNjA6WzIsM119LHs1OlsyLDRdLDE0OlsyLDRdLDE1OlsyLDRdLDE5OlsyLDRdLDI5OlsyLDRdLDM0OlsyLDRdLDM5OlsyLDRdLDQ0OlsyLDRdLDQ3OlsyLDRdLDQ4OlsyLDRdLDUxOlsyLDRdLDU1OlsyLDRdLDYwOlsyLDRdfSx7NTpbMiw1XSwxNDpbMiw1XSwxNTpbMiw1XSwxOTpbMiw1XSwyOTpbMiw1XSwzNDpbMiw1XSwzOTpbMiw1XSw0NDpbMiw1XSw0NzpbMiw1XSw0ODpbMiw1XSw1MTpbMiw1XSw1NTpbMiw1XSw2MDpbMiw1XX0sezU6WzIsNl0sMTQ6WzIsNl0sMTU6WzIsNl0sMTk6WzIsNl0sMjk6WzIsNl0sMzQ6WzIsNl0sMzk6WzIsNl0sNDQ6WzIsNl0sNDc6WzIsNl0sNDg6WzIsNl0sNTE6WzIsNl0sNTU6WzIsNl0sNjA6WzIsNl19LHs1OlsyLDddLDE0OlsyLDddLDE1OlsyLDddLDE5OlsyLDddLDI5OlsyLDddLDM0OlsyLDddLDM5OlsyLDddLDQ0OlsyLDddLDQ3OlsyLDddLDQ4OlsyLDddLDUxOlsyLDddLDU1OlsyLDddLDYwOlsyLDddfSx7NTpbMiw4XSwxNDpbMiw4XSwxNTpbMiw4XSwxOTpbMiw4XSwyOTpbMiw4XSwzNDpbMiw4XSwzOTpbMiw4XSw0NDpbMiw4XSw0NzpbMiw4XSw0ODpbMiw4XSw1MTpbMiw4XSw1NTpbMiw4XSw2MDpbMiw4XX0sezU6WzIsOV0sMTQ6WzIsOV0sMTU6WzIsOV0sMTk6WzIsOV0sMjk6WzIsOV0sMzQ6WzIsOV0sMzk6WzIsOV0sNDQ6WzIsOV0sNDc6WzIsOV0sNDg6WzIsOV0sNTE6WzIsOV0sNTU6WzIsOV0sNjA6WzIsOV19LHsyMDoyNSw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDozNiw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs0OjM3LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDM5OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezQ6MzgsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sNDQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHsxMzo0MCwxNTpbMSwyMF0sMTc6Mzl9LHsyMDo0Miw1Njo0MSw2NDo0Myw2NTpbMSw0NF0sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDo0NSw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NTpbMiwxMF0sMTQ6WzIsMTBdLDE1OlsyLDEwXSwxODpbMiwxMF0sMTk6WzIsMTBdLDI5OlsyLDEwXSwzNDpbMiwxMF0sMzk6WzIsMTBdLDQ0OlsyLDEwXSw0NzpbMiwxMF0sNDg6WzIsMTBdLDUxOlsyLDEwXSw1NTpbMiwxMF0sNjA6WzIsMTBdfSx7MjA6NDYsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDcsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDgsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDIsNTY6NDksNjQ6NDMsNjU6WzEsNDRdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsyLDc4XSw0OTo1MCw2NTpbMiw3OF0sNzI6WzIsNzhdLDgwOlsyLDc4XSw4MTpbMiw3OF0sODI6WzIsNzhdLDgzOlsyLDc4XSw4NDpbMiw3OF0sODU6WzIsNzhdfSx7MjM6WzIsMzNdLDMzOlsyLDMzXSw1NDpbMiwzM10sNjU6WzIsMzNdLDY4OlsyLDMzXSw3MjpbMiwzM10sNzU6WzIsMzNdLDgwOlsyLDMzXSw4MTpbMiwzM10sODI6WzIsMzNdLDgzOlsyLDMzXSw4NDpbMiwzM10sODU6WzIsMzNdfSx7MjM6WzIsMzRdLDMzOlsyLDM0XSw1NDpbMiwzNF0sNjU6WzIsMzRdLDY4OlsyLDM0XSw3MjpbMiwzNF0sNzU6WzIsMzRdLDgwOlsyLDM0XSw4MTpbMiwzNF0sODI6WzIsMzRdLDgzOlsyLDM0XSw4NDpbMiwzNF0sODU6WzIsMzRdfSx7MjM6WzIsMzVdLDMzOlsyLDM1XSw1NDpbMiwzNV0sNjU6WzIsMzVdLDY4OlsyLDM1XSw3MjpbMiwzNV0sNzU6WzIsMzVdLDgwOlsyLDM1XSw4MTpbMiwzNV0sODI6WzIsMzVdLDgzOlsyLDM1XSw4NDpbMiwzNV0sODU6WzIsMzVdfSx7MjM6WzIsMzZdLDMzOlsyLDM2XSw1NDpbMiwzNl0sNjU6WzIsMzZdLDY4OlsyLDM2XSw3MjpbMiwzNl0sNzU6WzIsMzZdLDgwOlsyLDM2XSw4MTpbMiwzNl0sODI6WzIsMzZdLDgzOlsyLDM2XSw4NDpbMiwzNl0sODU6WzIsMzZdfSx7MjM6WzIsMzddLDMzOlsyLDM3XSw1NDpbMiwzN10sNjU6WzIsMzddLDY4OlsyLDM3XSw3MjpbMiwzN10sNzU6WzIsMzddLDgwOlsyLDM3XSw4MTpbMiwzN10sODI6WzIsMzddLDgzOlsyLDM3XSw4NDpbMiwzN10sODU6WzIsMzddfSx7MjM6WzIsMzhdLDMzOlsyLDM4XSw1NDpbMiwzOF0sNjU6WzIsMzhdLDY4OlsyLDM4XSw3MjpbMiwzOF0sNzU6WzIsMzhdLDgwOlsyLDM4XSw4MTpbMiwzOF0sODI6WzIsMzhdLDgzOlsyLDM4XSw4NDpbMiwzOF0sODU6WzIsMzhdfSx7MjM6WzIsMzldLDMzOlsyLDM5XSw1NDpbMiwzOV0sNjU6WzIsMzldLDY4OlsyLDM5XSw3MjpbMiwzOV0sNzU6WzIsMzldLDgwOlsyLDM5XSw4MTpbMiwzOV0sODI6WzIsMzldLDgzOlsyLDM5XSw4NDpbMiwzOV0sODU6WzIsMzldfSx7MjM6WzIsNDNdLDMzOlsyLDQzXSw1NDpbMiw0M10sNjU6WzIsNDNdLDY4OlsyLDQzXSw3MjpbMiw0M10sNzU6WzIsNDNdLDgwOlsyLDQzXSw4MTpbMiw0M10sODI6WzIsNDNdLDgzOlsyLDQzXSw4NDpbMiw0M10sODU6WzIsNDNdLDg3OlsxLDUxXX0sezcyOlsxLDM1XSw4Njo1Mn0sezIzOlsyLDQ1XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpbMiw0NV0sNzI6WzIsNDVdLDc1OlsyLDQ1XSw4MDpbMiw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6WzIsNDVdLDg1OlsyLDQ1XSw4NzpbMiw0NV19LHs1Mjo1Myw1NDpbMiw4Ml0sNjU6WzIsODJdLDcyOlsyLDgyXSw4MDpbMiw4Ml0sODE6WzIsODJdLDgyOlsyLDgyXSw4MzpbMiw4Ml0sODQ6WzIsODJdLDg1OlsyLDgyXX0sezI1OjU0LDM4OjU2LDM5OlsxLDU4XSw0Mzo1Nyw0NDpbMSw1OV0sNDU6NTUsNDc6WzIsNTRdfSx7Mjg6NjAsNDM6NjEsNDQ6WzEsNTldLDQ3OlsyLDU2XX0sezEzOjYzLDE1OlsxLDIwXSwxODpbMSw2Ml19LHsxNTpbMiw0OF0sMTg6WzIsNDhdfSx7MzM6WzIsODZdLDU3OjY0LDY1OlsyLDg2XSw3MjpbMiw4Nl0sODA6WzIsODZdLDgxOlsyLDg2XSw4MjpbMiw4Nl0sODM6WzIsODZdLDg0OlsyLDg2XSw4NTpbMiw4Nl19LHszMzpbMiw0MF0sNjU6WzIsNDBdLDcyOlsyLDQwXSw4MDpbMiw0MF0sODE6WzIsNDBdLDgyOlsyLDQwXSw4MzpbMiw0MF0sODQ6WzIsNDBdLDg1OlsyLDQwXX0sezMzOlsyLDQxXSw2NTpbMiw0MV0sNzI6WzIsNDFdLDgwOlsyLDQxXSw4MTpbMiw0MV0sODI6WzIsNDFdLDgzOlsyLDQxXSw4NDpbMiw0MV0sODU6WzIsNDFdfSx7MjA6NjUsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjY6NjYsNDc6WzEsNjddfSx7MzA6NjgsMzM6WzIsNThdLDY1OlsyLDU4XSw3MjpbMiw1OF0sNzU6WzIsNThdLDgwOlsyLDU4XSw4MTpbMiw1OF0sODI6WzIsNThdLDgzOlsyLDU4XSw4NDpbMiw1OF0sODU6WzIsNThdfSx7MzM6WzIsNjRdLDM1OjY5LDY1OlsyLDY0XSw3MjpbMiw2NF0sNzU6WzIsNjRdLDgwOlsyLDY0XSw4MTpbMiw2NF0sODI6WzIsNjRdLDgzOlsyLDY0XSw4NDpbMiw2NF0sODU6WzIsNjRdfSx7MjE6NzAsMjM6WzIsNTBdLDY1OlsyLDUwXSw3MjpbMiw1MF0sODA6WzIsNTBdLDgxOlsyLDUwXSw4MjpbMiw1MF0sODM6WzIsNTBdLDg0OlsyLDUwXSw4NTpbMiw1MF19LHszMzpbMiw5MF0sNjE6NzEsNjU6WzIsOTBdLDcyOlsyLDkwXSw4MDpbMiw5MF0sODE6WzIsOTBdLDgyOlsyLDkwXSw4MzpbMiw5MF0sODQ6WzIsOTBdLDg1OlsyLDkwXX0sezIwOjc1LDMzOlsyLDgwXSw1MDo3Miw2Mzo3Myw2NDo3Niw2NTpbMSw0NF0sNjk6NzQsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NzI6WzEsODBdfSx7MjM6WzIsNDJdLDMzOlsyLDQyXSw1NDpbMiw0Ml0sNjU6WzIsNDJdLDY4OlsyLDQyXSw3MjpbMiw0Ml0sNzU6WzIsNDJdLDgwOlsyLDQyXSw4MTpbMiw0Ml0sODI6WzIsNDJdLDgzOlsyLDQyXSw4NDpbMiw0Ml0sODU6WzIsNDJdLDg3OlsxLDUxXX0sezIwOjc1LDUzOjgxLDU0OlsyLDg0XSw2Mzo4Miw2NDo3Niw2NTpbMSw0NF0sNjk6ODMsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjY6ODQsNDc6WzEsNjddfSx7NDc6WzIsNTVdfSx7NDo4NSw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSwzOTpbMiw0Nl0sNDQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHs0NzpbMiwyMF19LHsyMDo4Niw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs0Ojg3LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ3OlsyLDQ2XSw0ODpbMiw0Nl0sNTE6WzIsNDZdLDU1OlsyLDQ2XSw2MDpbMiw0Nl19LHsyNjo4OCw0NzpbMSw2N119LHs0NzpbMiw1N119LHs1OlsyLDExXSwxNDpbMiwxMV0sMTU6WzIsMTFdLDE5OlsyLDExXSwyOTpbMiwxMV0sMzQ6WzIsMTFdLDM5OlsyLDExXSw0NDpbMiwxMV0sNDc6WzIsMTFdLDQ4OlsyLDExXSw1MTpbMiwxMV0sNTU6WzIsMTFdLDYwOlsyLDExXX0sezE1OlsyLDQ5XSwxODpbMiw0OV19LHsyMDo3NSwzMzpbMiw4OF0sNTg6ODksNjM6OTAsNjQ6NzYsNjU6WzEsNDRdLDY5OjkxLDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezY1OlsyLDk0XSw2Njo5Miw2ODpbMiw5NF0sNzI6WzIsOTRdLDgwOlsyLDk0XSw4MTpbMiw5NF0sODI6WzIsOTRdLDgzOlsyLDk0XSw4NDpbMiw5NF0sODU6WzIsOTRdfSx7NTpbMiwyNV0sMTQ6WzIsMjVdLDE1OlsyLDI1XSwxOTpbMiwyNV0sMjk6WzIsMjVdLDM0OlsyLDI1XSwzOTpbMiwyNV0sNDQ6WzIsMjVdLDQ3OlsyLDI1XSw0ODpbMiwyNV0sNTE6WzIsMjVdLDU1OlsyLDI1XSw2MDpbMiwyNV19LHsyMDo5Myw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwzMTo5NCwzMzpbMiw2MF0sNjM6OTUsNjQ6NzYsNjU6WzEsNDRdLDY5Ojk2LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3NTpbMiw2MF0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwzMzpbMiw2Nl0sMzY6OTcsNjM6OTgsNjQ6NzYsNjU6WzEsNDRdLDY5Ojk5LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3NTpbMiw2Nl0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NSwyMjoxMDAsMjM6WzIsNTJdLDYzOjEwMSw2NDo3Niw2NTpbMSw0NF0sNjk6MTAyLDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc1LDMzOlsyLDkyXSw2MjoxMDMsNjM6MTA0LDY0Ojc2LDY1OlsxLDQ0XSw2OToxMDUsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzEsMTA2XX0sezMzOlsyLDc5XSw2NTpbMiw3OV0sNzI6WzIsNzldLDgwOlsyLDc5XSw4MTpbMiw3OV0sODI6WzIsNzldLDgzOlsyLDc5XSw4NDpbMiw3OV0sODU6WzIsNzldfSx7MzM6WzIsODFdfSx7MjM6WzIsMjddLDMzOlsyLDI3XSw1NDpbMiwyN10sNjU6WzIsMjddLDY4OlsyLDI3XSw3MjpbMiwyN10sNzU6WzIsMjddLDgwOlsyLDI3XSw4MTpbMiwyN10sODI6WzIsMjddLDgzOlsyLDI3XSw4NDpbMiwyN10sODU6WzIsMjddfSx7MjM6WzIsMjhdLDMzOlsyLDI4XSw1NDpbMiwyOF0sNjU6WzIsMjhdLDY4OlsyLDI4XSw3MjpbMiwyOF0sNzU6WzIsMjhdLDgwOlsyLDI4XSw4MTpbMiwyOF0sODI6WzIsMjhdLDgzOlsyLDI4XSw4NDpbMiwyOF0sODU6WzIsMjhdfSx7MjM6WzIsMzBdLDMzOlsyLDMwXSw1NDpbMiwzMF0sNjg6WzIsMzBdLDcxOjEwNyw3MjpbMSwxMDhdLDc1OlsyLDMwXX0sezIzOlsyLDk4XSwzMzpbMiw5OF0sNTQ6WzIsOThdLDY4OlsyLDk4XSw3MjpbMiw5OF0sNzU6WzIsOThdfSx7MjM6WzIsNDVdLDMzOlsyLDQ1XSw1NDpbMiw0NV0sNjU6WzIsNDVdLDY4OlsyLDQ1XSw3MjpbMiw0NV0sNzM6WzEsMTA5XSw3NTpbMiw0NV0sODA6WzIsNDVdLDgxOlsyLDQ1XSw4MjpbMiw0NV0sODM6WzIsNDVdLDg0OlsyLDQ1XSw4NTpbMiw0NV0sODc6WzIsNDVdfSx7MjM6WzIsNDRdLDMzOlsyLDQ0XSw1NDpbMiw0NF0sNjU6WzIsNDRdLDY4OlsyLDQ0XSw3MjpbMiw0NF0sNzU6WzIsNDRdLDgwOlsyLDQ0XSw4MTpbMiw0NF0sODI6WzIsNDRdLDgzOlsyLDQ0XSw4NDpbMiw0NF0sODU6WzIsNDRdLDg3OlsyLDQ0XX0sezU0OlsxLDExMF19LHs1NDpbMiw4M10sNjU6WzIsODNdLDcyOlsyLDgzXSw4MDpbMiw4M10sODE6WzIsODNdLDgyOlsyLDgzXSw4MzpbMiw4M10sODQ6WzIsODNdLDg1OlsyLDgzXX0sezU0OlsyLDg1XX0sezU6WzIsMTNdLDE0OlsyLDEzXSwxNTpbMiwxM10sMTk6WzIsMTNdLDI5OlsyLDEzXSwzNDpbMiwxM10sMzk6WzIsMTNdLDQ0OlsyLDEzXSw0NzpbMiwxM10sNDg6WzIsMTNdLDUxOlsyLDEzXSw1NTpbMiwxM10sNjA6WzIsMTNdfSx7Mzg6NTYsMzk6WzEsNThdLDQzOjU3LDQ0OlsxLDU5XSw0NToxMTIsNDY6MTExLDQ3OlsyLDc2XX0sezMzOlsyLDcwXSw0MDoxMTMsNjU6WzIsNzBdLDcyOlsyLDcwXSw3NTpbMiw3MF0sODA6WzIsNzBdLDgxOlsyLDcwXSw4MjpbMiw3MF0sODM6WzIsNzBdLDg0OlsyLDcwXSw4NTpbMiw3MF19LHs0NzpbMiwxOF19LHs1OlsyLDE0XSwxNDpbMiwxNF0sMTU6WzIsMTRdLDE5OlsyLDE0XSwyOTpbMiwxNF0sMzQ6WzIsMTRdLDM5OlsyLDE0XSw0NDpbMiwxNF0sNDc6WzIsMTRdLDQ4OlsyLDE0XSw1MTpbMiwxNF0sNTU6WzIsMTRdLDYwOlsyLDE0XX0sezMzOlsxLDExNF19LHszMzpbMiw4N10sNjU6WzIsODddLDcyOlsyLDg3XSw4MDpbMiw4N10sODE6WzIsODddLDgyOlsyLDg3XSw4MzpbMiw4N10sODQ6WzIsODddLDg1OlsyLDg3XX0sezMzOlsyLDg5XX0sezIwOjc1LDYzOjExNiw2NDo3Niw2NTpbMSw0NF0sNjc6MTE1LDY4OlsyLDk2XSw2OToxMTcsNzA6NzcsNzE6NzgsNzI6WzEsNzldLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MzM6WzEsMTE4XX0sezMyOjExOSwzMzpbMiw2Ml0sNzQ6MTIwLDc1OlsxLDEyMV19LHszMzpbMiw1OV0sNjU6WzIsNTldLDcyOlsyLDU5XSw3NTpbMiw1OV0sODA6WzIsNTldLDgxOlsyLDU5XSw4MjpbMiw1OV0sODM6WzIsNTldLDg0OlsyLDU5XSw4NTpbMiw1OV19LHszMzpbMiw2MV0sNzU6WzIsNjFdfSx7MzM6WzIsNjhdLDM3OjEyMiw3NDoxMjMsNzU6WzEsMTIxXX0sezMzOlsyLDY1XSw2NTpbMiw2NV0sNzI6WzIsNjVdLDc1OlsyLDY1XSw4MDpbMiw2NV0sODE6WzIsNjVdLDgyOlsyLDY1XSw4MzpbMiw2NV0sODQ6WzIsNjVdLDg1OlsyLDY1XX0sezMzOlsyLDY3XSw3NTpbMiw2N119LHsyMzpbMSwxMjRdfSx7MjM6WzIsNTFdLDY1OlsyLDUxXSw3MjpbMiw1MV0sODA6WzIsNTFdLDgxOlsyLDUxXSw4MjpbMiw1MV0sODM6WzIsNTFdLDg0OlsyLDUxXSw4NTpbMiw1MV19LHsyMzpbMiw1M119LHszMzpbMSwxMjVdfSx7MzM6WzIsOTFdLDY1OlsyLDkxXSw3MjpbMiw5MV0sODA6WzIsOTFdLDgxOlsyLDkxXSw4MjpbMiw5MV0sODM6WzIsOTFdLDg0OlsyLDkxXSw4NTpbMiw5MV19LHszMzpbMiw5M119LHs1OlsyLDIyXSwxNDpbMiwyMl0sMTU6WzIsMjJdLDE5OlsyLDIyXSwyOTpbMiwyMl0sMzQ6WzIsMjJdLDM5OlsyLDIyXSw0NDpbMiwyMl0sNDc6WzIsMjJdLDQ4OlsyLDIyXSw1MTpbMiwyMl0sNTU6WzIsMjJdLDYwOlsyLDIyXX0sezIzOlsyLDk5XSwzMzpbMiw5OV0sNTQ6WzIsOTldLDY4OlsyLDk5XSw3MjpbMiw5OV0sNzU6WzIsOTldfSx7NzM6WzEsMTA5XX0sezIwOjc1LDYzOjEyNiw2NDo3Niw2NTpbMSw0NF0sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwyM10sMTQ6WzIsMjNdLDE1OlsyLDIzXSwxOTpbMiwyM10sMjk6WzIsMjNdLDM0OlsyLDIzXSwzOTpbMiwyM10sNDQ6WzIsMjNdLDQ3OlsyLDIzXSw0ODpbMiwyM10sNTE6WzIsMjNdLDU1OlsyLDIzXSw2MDpbMiwyM119LHs0NzpbMiwxOV19LHs0NzpbMiw3N119LHsyMDo3NSwzMzpbMiw3Ml0sNDE6MTI3LDYzOjEyOCw2NDo3Niw2NTpbMSw0NF0sNjk6MTI5LDcwOjc3LDcxOjc4LDcyOlsxLDc5XSw3NTpbMiw3Ml0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs1OlsyLDI0XSwxNDpbMiwyNF0sMTU6WzIsMjRdLDE5OlsyLDI0XSwyOTpbMiwyNF0sMzQ6WzIsMjRdLDM5OlsyLDI0XSw0NDpbMiwyNF0sNDc6WzIsMjRdLDQ4OlsyLDI0XSw1MTpbMiwyNF0sNTU6WzIsMjRdLDYwOlsyLDI0XX0sezY4OlsxLDEzMF19LHs2NTpbMiw5NV0sNjg6WzIsOTVdLDcyOlsyLDk1XSw4MDpbMiw5NV0sODE6WzIsOTVdLDgyOlsyLDk1XSw4MzpbMiw5NV0sODQ6WzIsOTVdLDg1OlsyLDk1XX0sezY4OlsyLDk3XX0sezU6WzIsMjFdLDE0OlsyLDIxXSwxNTpbMiwyMV0sMTk6WzIsMjFdLDI5OlsyLDIxXSwzNDpbMiwyMV0sMzk6WzIsMjFdLDQ0OlsyLDIxXSw0NzpbMiwyMV0sNDg6WzIsMjFdLDUxOlsyLDIxXSw1NTpbMiwyMV0sNjA6WzIsMjFdfSx7MzM6WzEsMTMxXX0sezMzOlsyLDYzXX0sezcyOlsxLDEzM10sNzY6MTMyfSx7MzM6WzEsMTM0XX0sezMzOlsyLDY5XX0sezE1OlsyLDEyXX0sezE0OlsyLDI2XSwxNTpbMiwyNl0sMTk6WzIsMjZdLDI5OlsyLDI2XSwzNDpbMiwyNl0sNDc6WzIsMjZdLDQ4OlsyLDI2XSw1MTpbMiwyNl0sNTU6WzIsMjZdLDYwOlsyLDI2XX0sezIzOlsyLDMxXSwzMzpbMiwzMV0sNTQ6WzIsMzFdLDY4OlsyLDMxXSw3MjpbMiwzMV0sNzU6WzIsMzFdfSx7MzM6WzIsNzRdLDQyOjEzNSw3NDoxMzYsNzU6WzEsMTIxXX0sezMzOlsyLDcxXSw2NTpbMiw3MV0sNzI6WzIsNzFdLDc1OlsyLDcxXSw4MDpbMiw3MV0sODE6WzIsNzFdLDgyOlsyLDcxXSw4MzpbMiw3MV0sODQ6WzIsNzFdLDg1OlsyLDcxXX0sezMzOlsyLDczXSw3NTpbMiw3M119LHsyMzpbMiwyOV0sMzM6WzIsMjldLDU0OlsyLDI5XSw2NTpbMiwyOV0sNjg6WzIsMjldLDcyOlsyLDI5XSw3NTpbMiwyOV0sODA6WzIsMjldLDgxOlsyLDI5XSw4MjpbMiwyOV0sODM6WzIsMjldLDg0OlsyLDI5XSw4NTpbMiwyOV19LHsxNDpbMiwxNV0sMTU6WzIsMTVdLDE5OlsyLDE1XSwyOTpbMiwxNV0sMzQ6WzIsMTVdLDM5OlsyLDE1XSw0NDpbMiwxNV0sNDc6WzIsMTVdLDQ4OlsyLDE1XSw1MTpbMiwxNV0sNTU6WzIsMTVdLDYwOlsyLDE1XX0sezcyOlsxLDEzOF0sNzc6WzEsMTM3XX0sezcyOlsyLDEwMF0sNzc6WzIsMTAwXX0sezE0OlsyLDE2XSwxNTpbMiwxNl0sMTk6WzIsMTZdLDI5OlsyLDE2XSwzNDpbMiwxNl0sNDQ6WzIsMTZdLDQ3OlsyLDE2XSwKKzQ4OlsyLDE2XSw1MTpbMiwxNl0sNTU6WzIsMTZdLDYwOlsyLDE2XX0sezMzOlsxLDEzOV19LHszMzpbMiw3NV19LHszMzpbMiwzMl19LHs3MjpbMiwxMDFdLDc3OlsyLDEwMV19LHsxNDpbMiwxN10sMTU6WzIsMTddLDE5OlsyLDE3XSwyOTpbMiwxN10sMzQ6WzIsMTddLDM5OlsyLDE3XSw0NDpbMiwxN10sNDc6WzIsMTddLDQ4OlsyLDE3XSw1MTpbMiwxN10sNTU6WzIsMTddLDYwOlsyLDE3XX1dLGRlZmF1bHRBY3Rpb25zOns0OlsyLDFdLDU1OlsyLDU1XSw1NzpbMiwyMF0sNjE6WzIsNTddLDc0OlsyLDgxXSw4MzpbMiw4NV0sODc6WzIsMThdLDkxOlsyLDg5XSwxMDI6WzIsNTNdLDEwNTpbMiw5M10sMTExOlsyLDE5XSwxMTI6WzIsNzddLDExNzpbMiw5N10sMTIwOlsyLDYzXSwxMjM6WzIsNjldLDEyNDpbMiwxMl0sMTM2OlsyLDc1XSwxMzc6WzIsMzJdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEVycm9yKHQpfSxwYXJzZTpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHQ9ci5sZXhlci5sZXgoKXx8MSwibnVtYmVyIiE9dHlwZW9mIHQmJih0PXIuc3ltYm9sc19bdF18fHQpLHR9dmFyIHI9dGhpcyxzPVswXSxpPVtudWxsXSxhPVtdLG49dGhpcy50YWJsZSxvPSIiLGM9MCxoPTAsbD0wO3RoaXMubGV4ZXIuc2V0SW5wdXQodCksdGhpcy5sZXhlci55eT10aGlzLnl5LHRoaXMueXkubGV4ZXI9dGhpcy5sZXhlcix0aGlzLnl5LnBhcnNlcj10aGlzLCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpcy5sZXhlci55eWxsb2MmJih0aGlzLmxleGVyLnl5bGxvYz17fSk7dmFyIHA9dGhpcy5sZXhlci55eWxsb2M7YS5wdXNoKHApO3ZhciB1PXRoaXMubGV4ZXIub3B0aW9ucyYmdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlczsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy55eS5wYXJzZUVycm9yJiYodGhpcy5wYXJzZUVycm9yPXRoaXMueXkucGFyc2VFcnJvcik7Zm9yKHZhciBmLGQsbSxnLHYseSxrLFMsYixfPXt9Ozspe2lmKG09c1tzLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW21dP2c9dGhpcy5kZWZhdWx0QWN0aW9uc1ttXToobnVsbCE9PWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgZnx8KGY9ZSgpKSxnPW5bbV0mJm5bbV1bZl0pLCJ1bmRlZmluZWQiPT10eXBlb2YgZ3x8IWcubGVuZ3RofHwhZ1swXSl7dmFyIFA9IiI7aWYoIWwpe2I9W107Zm9yKHkgaW4gblttXSl0aGlzLnRlcm1pbmFsc19beV0mJnk+MiYmYi5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19beV0rIiciKTtQPXRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGMrMSkrIjpcbiIrdGhpcy5sZXhlci5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitiLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bZl18fGYpKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjKzEpKyI6IFVuZXhwZWN0ZWQgIisoMT09Zj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tmXXx8ZikrIiciKSx0aGlzLnBhcnNlRXJyb3IoUCx7dGV4dDp0aGlzLmxleGVyLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tmXXx8ZixsaW5lOnRoaXMubGV4ZXIueXlsaW5lbm8sbG9jOnAsZXhwZWN0ZWQ6Yn0pfX1pZihnWzBdaW5zdGFuY2VvZiBBcnJheSYmZy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK20rIiwgdG9rZW46ICIrZik7c3dpdGNoKGdbMF0pe2Nhc2UgMTpzLnB1c2goZiksaS5wdXNoKHRoaXMubGV4ZXIueXl0ZXh0KSxhLnB1c2godGhpcy5sZXhlci55eWxsb2MpLHMucHVzaChnWzFdKSxmPW51bGwsZD8oZj1kLGQ9bnVsbCk6KGg9dGhpcy5sZXhlci55eWxlbmcsbz10aGlzLmxleGVyLnl5dGV4dCxjPXRoaXMubGV4ZXIueXlsaW5lbm8scD10aGlzLmxleGVyLnl5bGxvYyxsPjAmJmwtLSk7YnJlYWs7Y2FzZSAyOmlmKGs9dGhpcy5wcm9kdWN0aW9uc19bZ1sxXV1bMV0sXy4kPWlbaS5sZW5ndGgta10sXy5fJD17Zmlyc3RfbGluZTphW2EubGVuZ3RoLShrfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6YVthLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmFbYS5sZW5ndGgtKGt8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46YVthLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdSYmKF8uXyQucmFuZ2U9W2FbYS5sZW5ndGgtKGt8fDEpXS5yYW5nZVswXSxhW2EubGVuZ3RoLTFdLnJhbmdlWzFdXSksdj10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbChfLG8saCxjLHRoaXMueXksZ1sxXSxpLGEpLCJ1bmRlZmluZWQiIT10eXBlb2YgdilyZXR1cm4gdjtrJiYocz1zLnNsaWNlKDAsLTEqayoyKSxpPWkuc2xpY2UoMCwtMSprKSxhPWEuc2xpY2UoMCwtMSprKSkscy5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2dbMV1dWzBdKSxpLnB1c2goXy4kKSxhLnB1c2goXy5fJCksUz1uW3Nbcy5sZW5ndGgtMl1dW3Nbcy5sZW5ndGgtMV1dLHMucHVzaChTKTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0scj1mdW5jdGlvbigpe3ZhciB0PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMueXkucGFyc2VyKXRocm93IG5ldyBFcnJvcih0KTt0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHQsZSl9LHNldElucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnB1dD10LHRoaXMuX21vcmU9dGhpcy5fbGVzcz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9dCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9dCx0aGlzLm1hdGNoZWQrPXQ7dmFyIGU9dC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIGU/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHR9LHVucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLHI9dC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWUtMSksdGhpcy5vZmZzZXQtPWU7dmFyIHM9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksci5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPXIubGVuZ3RoLTEpO3ZhciBpPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpyPyhyLmxlbmd0aD09PXMubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStzW3MubGVuZ3RoLXIubGVuZ3RoXS5sZW5ndGgtclswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baVswXSxpWzBdK3RoaXMueXlsZW5nLWVdKSx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30sbGVzczpmdW5jdGlvbih0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UodCkpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHQubGVuZ3RoPjIwPyIuLi4iOiIiKSt0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tYXRjaDtyZXR1cm4gdC5sZW5ndGg8MjAmJih0Kz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC10Lmxlbmd0aCkpLCh0LnN1YnN0cigwLDIwKSsodC5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXN0SW5wdXQoKSxlPW5ldyBBcnJheSh0Lmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHQrdGhpcy51cGNvbWluZ0lucHV0KCkrIlxuIitlKyJeIn0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciB0LGUscixzLGk7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgYT10aGlzLl9jdXJyZW50UnVsZXMoKSxuPTA7bjxhLmxlbmd0aCYmKHI9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1thW25dXSksIXJ8fGUmJiEoclswXS5sZW5ndGg+ZVswXS5sZW5ndGgpfHwoZT1yLHM9bix0aGlzLm9wdGlvbnMuZmxleCkpO24rKyk7cmV0dXJuIGU/KGk9ZVswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksaSYmKHRoaXMueXlsaW5lbm8rPWkubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46aT9pW2kubGVuZ3RoLTFdLmxlbmd0aC1pW2kubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rZVswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz1lWzBdLHRoaXMubWF0Y2grPWVbMF0sdGhpcy5tYXRjaGVzPWUsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShlWzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz1lWzBdLHQ9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsYVtzXSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSx0P3Q6dm9pZCAwKToiIj09PXRoaXMuX2lucHV0P3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrIi4gVW5yZWNvZ25pemVkIHRleHQuXG4iK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5uZXh0KCk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0P3Q6dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24odCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKHQpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0yXX0scHVzaFN0YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYmVnaW4odCl9fTtyZXR1cm4gdC5vcHRpb25zPXt9LHQucGVyZm9ybUFjdGlvbj1mdW5jdGlvbih0LGUscixzKXtmdW5jdGlvbiBpKHQscil7cmV0dXJuIGUueXl0ZXh0PWUueXl0ZXh0LnN1YnN0cih0LGUueXlsZW5nLXIpfXN3aXRjaChyKXtjYXNlIDA6aWYoIlxcXFwiPT09ZS55eXRleHQuc2xpY2UoLTIpPyhpKDAsMSksdGhpcy5iZWdpbigibXUiKSk6IlxcIj09PWUueXl0ZXh0LnNsaWNlKC0xKT8oaSgwLDEpLHRoaXMuYmVnaW4oImVtdSIpKTp0aGlzLmJlZ2luKCJtdSIpLGUueXl0ZXh0KXJldHVybiAxNTticmVhaztjYXNlIDE6cmV0dXJuIDE1O2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE1O2Nhc2UgMzpyZXR1cm4gdGhpcy5iZWdpbigicmF3IiksMTU7Y2FzZSA0OnJldHVybiB0aGlzLnBvcFN0YXRlKCksInJhdyI9PT10aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdPzE1OihlLnl5dGV4dD1lLnl5dGV4dC5zdWJzdHIoNSxlLnl5bGVuZy05KSwiRU5EX1JBV19CTE9DSyIpO2Nhc2UgNTpyZXR1cm4gMTU7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMTQ7Y2FzZSA3OnJldHVybiA2NTtjYXNlIDg6cmV0dXJuIDY4O2Nhc2UgOTpyZXR1cm4gMTk7Y2FzZSAxMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oInJhdyIpLDIzO2Nhc2UgMTE6cmV0dXJuIDU1O2Nhc2UgMTI6cmV0dXJuIDYwO2Nhc2UgMTM6cmV0dXJuIDI5O2Nhc2UgMTQ6cmV0dXJuIDQ3O2Nhc2UgMTU6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSw0NDtjYXNlIDE2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksNDQ7Y2FzZSAxNzpyZXR1cm4gMzQ7Y2FzZSAxODpyZXR1cm4gMzk7Y2FzZSAxOTpyZXR1cm4gNTE7Y2FzZSAyMDpyZXR1cm4gNDg7Y2FzZSAyMTp0aGlzLnVucHV0KGUueXl0ZXh0KSx0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY29tIik7YnJlYWs7Y2FzZSAyMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE0O2Nhc2UgMjM6cmV0dXJuIDQ4O2Nhc2UgMjQ6cmV0dXJuIDczO2Nhc2UgMjU6cmV0dXJuIDcyO2Nhc2UgMjY6cmV0dXJuIDcyO2Nhc2UgMjc6cmV0dXJuIDg3O2Nhc2UgMjg6YnJlYWs7Y2FzZSAyOTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDU0O2Nhc2UgMzA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwzMztjYXNlIDMxOnJldHVybiBlLnl5dGV4dD1pKDEsMikucmVwbGFjZSgvXFwiL2csJyInKSw4MDtjYXNlIDMyOnJldHVybiBlLnl5dGV4dD1pKDEsMikucmVwbGFjZSgvXFwnL2csIiciKSw4MDtjYXNlIDMzOnJldHVybiA4NTtjYXNlIDM0OnJldHVybiA4MjtjYXNlIDM1OnJldHVybiA4MjtjYXNlIDM2OnJldHVybiA4MztjYXNlIDM3OnJldHVybiA4NDtjYXNlIDM4OnJldHVybiA4MTtjYXNlIDM5OnJldHVybiA3NTtjYXNlIDQwOnJldHVybiA3NztjYXNlIDQxOnJldHVybiA3MjtjYXNlIDQyOnJldHVybiBlLnl5dGV4dD1lLnl5dGV4dC5yZXBsYWNlKC9cXChbXFxcXV0pL2csIiQxIiksNzI7Y2FzZSA0MzpyZXR1cm4iSU5WQUxJRCI7Y2FzZSA0NDpyZXR1cm4gNX19LHQucnVsZXM9Wy9eKD86W15ceDAwXSo/KD89KFx7XHspKSkvLC9eKD86W15ceDAwXSspLywvXig/OlteXHgwMF17Mix9Pyg/PShce1x7fFxcXHtce3xcXFxcXHtce3wkKSkpLywvXig/Olx7XHtce1x7KD89W15cL10pKS8sL14oPzpce1x7XHtce1wvW15ccyEiIyUtLFwuXC87LT5AXFstXF5gXHstfl0rKD89Wz19XHNcLy5dKVx9XH1cfVx9KS8sL14oPzpbXlx4MDBdKj8oPz0oXHtce1x7XHspKSkvLC9eKD86W1xzXFNdKj8tLSh+KT9cfVx9KS8sL14oPzpcKCkvLC9eKD86XCkpLywvXig/Olx7XHtce1x7KS8sL14oPzpcfVx9XH1cfSkvLC9eKD86XHtceyh+KT8+KS8sL14oPzpce1x7KH4pPyM+KS8sL14oPzpce1x7KH4pPyNcKj8pLywvXig/Olx7XHsofik/XC8pLywvXig/Olx7XHsofik/XF5ccyoofik/XH1cfSkvLC9eKD86XHtceyh+KT9ccyplbHNlXHMqKH4pP1x9XH0pLywvXig/Olx7XHsofik/XF4pLywvXig/Olx7XHsofik/XHMqZWxzZVxiKS8sL14oPzpce1x7KH4pP1x7KS8sL14oPzpce1x7KH4pPyYpLywvXig/Olx7XHsofik/IS0tKS8sL14oPzpce1x7KH4pPyFbXHNcU10qP1x9XH0pLywvXig/Olx7XHsofik/XCo/KS8sL14oPzo9KS8sL14oPzpcLlwuKS8sL14oPzpcLig/PShbPX59XHNcLy4pfF0pKSkvLC9eKD86W1wvLl0pLywvXig/OlxzKykvLC9eKD86XH0ofik/XH1cfSkvLC9eKD86KH4pP1x9XH0pLywvXig/OiIoXFxbIl18W14iXSkqIikvLC9eKD86JyhcXFsnXXxbXiddKSonKS8sL14oPzpAKS8sL14oPzp0cnVlKD89KFt+fVxzKV0pKSkvLC9eKD86ZmFsc2UoPz0oW359XHMpXSkpKS8sL14oPzp1bmRlZmluZWQoPz0oW359XHMpXSkpKS8sL14oPzpudWxsKD89KFt+fVxzKV0pKSkvLC9eKD86LT9bMC05XSsoPzpcLlswLTldKyk/KD89KFt+fVxzKV0pKSkvLC9eKD86YXNccytcfCkvLC9eKD86XHwpLywvXig/OihbXlxzISIjJS0sXC5cLzstPkBcWy1cXmBcey1+XSsoPz0oWz1+fVxzXC8uKXxdKSkpKS8sL14oPzpcWyhcXFxdfFteXF1dKSpcXSkvLC9eKD86LikvLC9eKD86JCkvXSx0LmNvbmRpdGlvbnM9e211OntydWxlczpbNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDRdLGluY2x1c2l2ZTohMX0sZW11OntydWxlczpbMl0saW5jbHVzaXZlOiExfSxjb206e3J1bGVzOls2XSxpbmNsdXNpdmU6ITF9LHJhdzp7cnVsZXM6WzMsNCw1XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDEsNDRdLGluY2x1c2l2ZTohMH19LHR9KCk7cmV0dXJuIGUubGV4ZXI9cix0LnByb3RvdHlwZT1lLGUuUGFyc2VyPXQsbmV3IHR9KCk7ZS5fX2VzTW9kdWxlPSEwLGVbImRlZmF1bHQiXT1yfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHMoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/e306YXJndW1lbnRzWzBdO3RoaXMub3B0aW9ucz10fWZ1bmN0aW9uIGkodCxlLHIpe3ZvaWQgMD09PWUmJihlPXQubGVuZ3RoKTt2YXIgcz10W2UtMV0saT10W2UtMl07cmV0dXJuIHM/IkNvbnRlbnRTdGF0ZW1lbnQiPT09cy50eXBlPyhpfHwhcj8vXHI/XG5ccyo/JC86LyhefFxyP1xuKVxzKj8kLykudGVzdChzLm9yaWdpbmFsKTp2b2lkIDA6cn1mdW5jdGlvbiBhKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0tMSk7dmFyIHM9dFtlKzFdLGk9dFtlKzJdO3JldHVybiBzPyJDb250ZW50U3RhdGVtZW50Ij09PXMudHlwZT8oaXx8IXI/L15ccyo/XHI/XG4vOi9eXHMqPyhccj9cbnwkKS8pLnRlc3Qocy5vcmlnaW5hbCk6dm9pZCAwOnJ9ZnVuY3Rpb24gbih0LGUscil7dmFyIHM9dFtudWxsPT1lPzA6ZSsxXTtpZihzJiYiQ29udGVudFN0YXRlbWVudCI9PT1zLnR5cGUmJihyfHwhcy5yaWdodFN0cmlwcGVkKSl7dmFyIGk9cy52YWx1ZTtzLnZhbHVlPXMudmFsdWUucmVwbGFjZShyPy9eXHMrLzovXlsgXHRdKlxyP1xuPy8sIiIpLHMucmlnaHRTdHJpcHBlZD1zLnZhbHVlIT09aX19ZnVuY3Rpb24gbyh0LGUscil7dmFyIHM9dFtudWxsPT1lP3QubGVuZ3RoLTE6ZS0xXTtpZihzJiYiQ29udGVudFN0YXRlbWVudCI9PT1zLnR5cGUmJihyfHwhcy5sZWZ0U3RyaXBwZWQpKXt2YXIgaT1zLnZhbHVlO3JldHVybiBzLnZhbHVlPXMudmFsdWUucmVwbGFjZShyPy9ccyskLzovWyBcdF0rJC8sIiIpLHMubGVmdFN0cmlwcGVkPXMudmFsdWUhPT1pLHMubGVmdFN0cmlwcGVkfX12YXIgYz1yKDEpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwO3ZhciBoPXIoMjUpLGw9YyhoKTtzLnByb3RvdHlwZT1uZXcgbFsiZGVmYXVsdCJdLHMucHJvdG90eXBlLlByb2dyYW09ZnVuY3Rpb24odCl7dmFyIGU9IXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lLHI9IXRoaXMuaXNSb290U2Vlbjt0aGlzLmlzUm9vdFNlZW49ITA7Zm9yKHZhciBzPXQuYm9keSxjPTAsaD1zLmxlbmd0aDtjPGg7YysrKXt2YXIgbD1zW2NdLHA9dGhpcy5hY2NlcHQobCk7aWYocCl7dmFyIHU9aShzLGMsciksZj1hKHMsYyxyKSxkPXAub3BlblN0YW5kYWxvbmUmJnUsbT1wLmNsb3NlU3RhbmRhbG9uZSYmZixnPXAuaW5saW5lU3RhbmRhbG9uZSYmdSYmZjtwLmNsb3NlJiZuKHMsYywhMCkscC5vcGVuJiZvKHMsYywhMCksZSYmZyYmKG4ocyxjKSxvKHMsYykmJiJQYXJ0aWFsU3RhdGVtZW50Ij09PWwudHlwZSYmKGwuaW5kZW50PS8oWyBcdF0rJCkvLmV4ZWMoc1tjLTFdLm9yaWdpbmFsKVsxXSkpLGUmJmQmJihuKChsLnByb2dyYW18fGwuaW52ZXJzZSkuYm9keSksbyhzLGMpKSxlJiZtJiYobihzLGMpLG8oKGwuaW52ZXJzZXx8bC5wcm9ncmFtKS5ib2R5KSl9fXJldHVybiB0fSxzLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudD1zLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jaz1zLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ9ZnVuY3Rpb24odCl7dGhpcy5hY2NlcHQodC5wcm9ncmFtKSx0aGlzLmFjY2VwdCh0LmludmVyc2UpO3ZhciBlPXQucHJvZ3JhbXx8dC5pbnZlcnNlLHI9dC5wcm9ncmFtJiZ0LmludmVyc2Uscz1yLGM9cjtpZihyJiZyLmNoYWluZWQpZm9yKHM9ci5ib2R5WzBdLnByb2dyYW07Yy5jaGFpbmVkOyljPWMuYm9keVtjLmJvZHkubGVuZ3RoLTFdLnByb2dyYW07dmFyIGg9e29wZW46dC5vcGVuU3RyaXAub3BlbixjbG9zZTp0LmNsb3NlU3RyaXAuY2xvc2Usb3BlblN0YW5kYWxvbmU6YShlLmJvZHkpLGNsb3NlU3RhbmRhbG9uZTppKChzfHxlKS5ib2R5KX07aWYodC5vcGVuU3RyaXAuY2xvc2UmJm4oZS5ib2R5LG51bGwsITApLHIpe3ZhciBsPXQuaW52ZXJzZVN0cmlwO2wub3BlbiYmbyhlLmJvZHksbnVsbCwhMCksbC5jbG9zZSYmbihzLmJvZHksbnVsbCwhMCksdC5jbG9zZVN0cmlwLm9wZW4mJm8oYy5ib2R5LG51bGwsITApLCF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZSYmaShlLmJvZHkpJiZhKHMuYm9keSkmJihvKGUuYm9keSksbihzLmJvZHkpKX1lbHNlIHQuY2xvc2VTdHJpcC5vcGVuJiZvKGUuYm9keSxudWxsLCEwKTtyZXR1cm4gaH0scy5wcm90b3R5cGUuRGVjb3JhdG9yPXMucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN0cmlwfSxzLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50PXMucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5zdHJpcHx8e307cmV0dXJue2lubGluZVN0YW5kYWxvbmU6ITAsb3BlbjplLm9wZW4sY2xvc2U6ZS5jbG9zZX19LGVbImRlZmF1bHQiXT1zLHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcygpe3RoaXMucGFyZW50cz1bXX1mdW5jdGlvbiBpKHQpe3RoaXMuYWNjZXB0UmVxdWlyZWQodCwicGF0aCIpLHRoaXMuYWNjZXB0QXJyYXkodC5wYXJhbXMpLHRoaXMuYWNjZXB0S2V5KHQsImhhc2giKX1mdW5jdGlvbiBhKHQpe2kuY2FsbCh0aGlzLHQpLHRoaXMuYWNjZXB0S2V5KHQsInByb2dyYW0iKSx0aGlzLmFjY2VwdEtleSh0LCJpbnZlcnNlIil9ZnVuY3Rpb24gbih0KXt0aGlzLmFjY2VwdFJlcXVpcmVkKHQsIm5hbWUiKSx0aGlzLmFjY2VwdEFycmF5KHQucGFyYW1zKSx0aGlzLmFjY2VwdEtleSh0LCJoYXNoIil9dmFyIG89cigxKVsiZGVmYXVsdCJdO2UuX19lc01vZHVsZT0hMDt2YXIgYz1yKDYpLGg9byhjKTtzLnByb3RvdHlwZT17Y29uc3RydWN0b3I6cyxtdXRhdGluZzohMSxhY2NlcHRLZXk6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmFjY2VwdCh0W2VdKTtpZih0aGlzLm11dGF0aW5nKXtpZihyJiYhcy5wcm90b3R5cGVbci50eXBlXSl0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSAiJytyLnR5cGUrJyIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJytlKyIgb24gIit0LnR5cGUpO3RbZV09cn19LGFjY2VwdFJlcXVpcmVkOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5hY2NlcHRLZXkodCxlKSwhdFtlXSl0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKHQudHlwZSsiIHJlcXVpcmVzICIrZSl9LGFjY2VwdEFycmF5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl0aGlzLmFjY2VwdEtleSh0LGUpLHRbZV18fCh0LnNwbGljZShlLDEpLGUtLSxyLS0pfSxhY2NlcHQ6ZnVuY3Rpb24odCl7aWYodCl7aWYoIXRoaXNbdC50eXBlXSl0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKCJVbmtub3duIHR5cGU6ICIrdC50eXBlLHQpO3RoaXMuY3VycmVudCYmdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KSx0aGlzLmN1cnJlbnQ9dDt2YXIgZT10aGlzW3QudHlwZV0odCk7cmV0dXJuIHRoaXMuY3VycmVudD10aGlzLnBhcmVudHMuc2hpZnQoKSwhdGhpcy5tdXRhdGluZ3x8ZT9lOmUhPT0hMT90OnZvaWQgMH19LFByb2dyYW06ZnVuY3Rpb24odCl7dGhpcy5hY2NlcHRBcnJheSh0LmJvZHkpfSxNdXN0YWNoZVN0YXRlbWVudDppLERlY29yYXRvcjppLEJsb2NrU3RhdGVtZW50OmEsRGVjb3JhdG9yQmxvY2s6YSxQYXJ0aWFsU3RhdGVtZW50Om4sUGFydGlhbEJsb2NrU3RhdGVtZW50OmZ1bmN0aW9uKHQpe24uY2FsbCh0aGlzLHQpLHRoaXMuYWNjZXB0S2V5KHQsInByb2dyYW0iKX0sQ29udGVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sQ29tbWVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sU3ViRXhwcmVzc2lvbjppLFBhdGhFeHByZXNzaW9uOmZ1bmN0aW9uKCl7fSxTdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKCl7fSxOdW1iZXJMaXRlcmFsOmZ1bmN0aW9uKCl7fSxCb29sZWFuTGl0ZXJhbDpmdW5jdGlvbigpe30sVW5kZWZpbmVkTGl0ZXJhbDpmdW5jdGlvbigpe30sTnVsbExpdGVyYWw6ZnVuY3Rpb24oKXt9LEhhc2g6ZnVuY3Rpb24odCl7dGhpcy5hY2NlcHRBcnJheSh0LnBhaXJzKX0sSGFzaFBhaXI6ZnVuY3Rpb24odCl7dGhpcy5hY2NlcHRSZXF1aXJlZCh0LCJ2YWx1ZSIpfX0sZVsiZGVmYXVsdCJdPXMsdC5leHBvcnRzPWVbImRlZmF1bHQiXX0sZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKHQsZSl7aWYoZT1lLnBhdGg/ZS5wYXRoLm9yaWdpbmFsOmUsdC5wYXRoLm9yaWdpbmFsIT09ZSl7dmFyIHI9e2xvYzp0LnBhdGgubG9jfTt0aHJvdyBuZXcgZ1siZGVmYXVsdCJdKHQucGF0aC5vcmlnaW5hbCsiIGRvZXNuJ3QgbWF0Y2ggIitlLHIpfX1mdW5jdGlvbiBpKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnN0YXJ0PXtsaW5lOmUuZmlyc3RfbGluZSxjb2x1bW46ZS5maXJzdF9jb2x1bW59LHRoaXMuZW5kPXtsaW5lOmUubGFzdF9saW5lLGNvbHVtbjplLmxhc3RfY29sdW1ufX1mdW5jdGlvbiBhKHQpe3JldHVybi9eXFsuKlxdJC8udGVzdCh0KT90LnN1YnN0cigxLHQubGVuZ3RoLTIpOnR9ZnVuY3Rpb24gbih0LGUpe3JldHVybntvcGVuOiJ+Ij09PXQuY2hhckF0KDIpLGNsb3NlOiJ+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTMpfX1mdW5jdGlvbiBvKHQpe3JldHVybiB0LnJlcGxhY2UoL15ce1x7fj9cIS0/LT8vLCIiKS5yZXBsYWNlKC8tPy0/fj9cfVx9JC8sIiIpfWZ1bmN0aW9uIGModCxlLHIpe3I9dGhpcy5sb2NJbmZvKHIpO2Zvcih2YXIgcz10PyJAIjoiIixpPVtdLGE9MCxuPSIiLG89MCxjPWUubGVuZ3RoO288YztvKyspe3ZhciBoPWVbb10ucGFydCxsPWVbb10ub3JpZ2luYWwhPT1oO2lmKHMrPShlW29dLnNlcGFyYXRvcnx8IiIpK2gsbHx8Ii4uIiE9PWgmJiIuIiE9PWgmJiJ0aGlzIiE9PWgpaS5wdXNoKGgpO2Vsc2V7aWYoaS5sZW5ndGg+MCl0aHJvdyBuZXcgZ1siZGVmYXVsdCJdKCJJbnZhbGlkIHBhdGg6ICIrcyx7bG9jOnJ9KTsiLi4iPT09aCYmKGErKyxuKz0iLi4vIil9fXJldHVybnt0eXBlOiJQYXRoRXhwcmVzc2lvbiIsZGF0YTp0LGRlcHRoOmEscGFydHM6aSxvcmlnaW5hbDpzLGxvYzpyfX1mdW5jdGlvbiBoKHQsZSxyLHMsaSxhKXt2YXIgbj1zLmNoYXJBdCgzKXx8cy5jaGFyQXQoMiksbz0ieyIhPT1uJiYiJiIhPT1uLGM9L1wqLy50ZXN0KHMpO3JldHVybnt0eXBlOmM/IkRlY29yYXRvciI6Ik11c3RhY2hlU3RhdGVtZW50IixwYXRoOnQscGFyYW1zOmUsaGFzaDpyLGVzY2FwZWQ6byxzdHJpcDppLGxvYzp0aGlzLmxvY0luZm8oYSl9fWZ1bmN0aW9uIGwodCxlLHIsaSl7cyh0LHIpLGk9dGhpcy5sb2NJbmZvKGkpO3ZhciBhPXt0eXBlOiJQcm9ncmFtIixib2R5OmUsc3RyaXA6e30sbG9jOml9O3JldHVybnt0eXBlOiJCbG9ja1N0YXRlbWVudCIscGF0aDp0LnBhdGgscGFyYW1zOnQucGFyYW1zLGhhc2g6dC5oYXNoLHByb2dyYW06YSxvcGVuU3RyaXA6e30saW52ZXJzZVN0cmlwOnt9LGNsb3NlU3RyaXA6e30sbG9jOml9fWZ1bmN0aW9uIHAodCxlLHIsaSxhLG4pe2kmJmkucGF0aCYmcyh0LGkpO3ZhciBvPS9cKi8udGVzdCh0Lm9wZW4pO2UuYmxvY2tQYXJhbXM9dC5ibG9ja1BhcmFtczt2YXIgYz12b2lkIDAsaD12b2lkIDA7aWYocil7aWYobyl0aHJvdyBuZXcgZ1siZGVmYXVsdCJdKCJVbmV4cGVjdGVkIGludmVyc2UgYmxvY2sgb24gZGVjb3JhdG9yIixyKTtyLmNoYWluJiYoci5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcD1pLnN0cmlwKSxoPXIuc3RyaXAsYz1yLnByb2dyYW19cmV0dXJuIGEmJihhPWMsYz1lLGU9YSkse3R5cGU6bz8iRGVjb3JhdG9yQmxvY2siOiJCbG9ja1N0YXRlbWVudCIscGF0aDp0LnBhdGgscGFyYW1zOnQucGFyYW1zLGhhc2g6dC5oYXNoLHByb2dyYW06ZSxpbnZlcnNlOmMsb3BlblN0cmlwOnQuc3RyaXAsaW52ZXJzZVN0cmlwOmgsY2xvc2VTdHJpcDppJiZpLnN0cmlwLGxvYzp0aGlzLmxvY0luZm8obil9fWZ1bmN0aW9uIHUodCxlKXtpZighZSYmdC5sZW5ndGgpe3ZhciByPXRbMF0ubG9jLHM9dFt0Lmxlbmd0aC0xXS5sb2M7ciYmcyYmKGU9e3NvdXJjZTpyLnNvdXJjZSxzdGFydDp7bGluZTpyLnN0YXJ0LmxpbmUsY29sdW1uOnIuc3RhcnQuY29sdW1ufSxlbmQ6e2xpbmU6cy5lbmQubGluZSxjb2x1bW46cy5lbmQuY29sdW1ufX0pfXJldHVybnt0eXBlOiJQcm9ncmFtIixib2R5OnQsc3RyaXA6e30sbG9jOmV9fWZ1bmN0aW9uIGYodCxlLHIsaSl7cmV0dXJuIHModCxyKSx7dHlwZToiUGFydGlhbEJsb2NrU3RhdGVtZW50IixuYW1lOnQucGF0aCxwYXJhbXM6dC5wYXJhbXMsaGFzaDp0Lmhhc2gscHJvZ3JhbTplLG9wZW5TdHJpcDp0LnN0cmlwLGNsb3NlU3RyaXA6ciYmci5zdHJpcCxsb2M6dGhpcy5sb2NJbmZvKGkpfX12YXIgZD1yKDEpWyJkZWZhdWx0Il07ZS5fX2VzTW9kdWxlPSEwLGUuU291cmNlTG9jYXRpb249aSxlLmlkPWEsZS5zdHJpcEZsYWdzPW4sZS5zdHJpcENvbW1lbnQ9byxlLnByZXBhcmVQYXRoPWMsZS5wcmVwYXJlTXVzdGFjaGU9aCxlLnByZXBhcmVSYXdCbG9jaz1sLGUucHJlcGFyZUJsb2NrPXAsZS5wcmVwYXJlUHJvZ3JhbT11LGUucHJlcGFyZVBhcnRpYWxCbG9jaz1mO3ZhciBtPXIoNiksZz1kKG0pfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHMoKXt9ZnVuY3Rpb24gaSh0LGUscil7aWYobnVsbD09dHx8InN0cmluZyIhPXR5cGVvZiB0JiYiUHJvZ3JhbSIhPT10LnR5cGUpdGhyb3cgbmV3IGxbImRlZmF1bHQiXSgiWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgIit0KTtlPWV8fHt9LCJkYXRhImluIGV8fChlLmRhdGE9ITApLGUuY29tcGF0JiYoZS51c2VEZXB0aHM9ITApO3ZhciBzPXIucGFyc2UodCxlKSxpPShuZXcgci5Db21waWxlcikuY29tcGlsZShzLGUpO3JldHVybihuZXcgci5KYXZhU2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUoaSxlKX1mdW5jdGlvbiBhKHQsZSxyKXtmdW5jdGlvbiBzKCl7dmFyIHM9ci5wYXJzZSh0LGUpLGk9KG5ldyByLkNvbXBpbGVyKS5jb21waWxlKHMsZSksYT0obmV3IHIuSmF2YVNjcmlwdENvbXBpbGVyKS5jb21waWxlKGksZSx2b2lkIDAsITApO3JldHVybiByLnRlbXBsYXRlKGEpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gYXx8KGE9cygpKSxhLmNhbGwodGhpcyx0LGUpfWlmKHZvaWQgMD09PWUmJihlPXt9KSxudWxsPT10fHwic3RyaW5nIiE9dHlwZW9mIHQmJiJQcm9ncmFtIiE9PXQudHlwZSl0aHJvdyBuZXcgbFsiZGVmYXVsdCJdKCJZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAiK3QpOyJkYXRhImluIGV8fChlLmRhdGE9ITApLGUuY29tcGF0JiYoZS51c2VEZXB0aHM9ITApO3ZhciBhPXZvaWQgMDtyZXR1cm4gaS5fc2V0dXA9ZnVuY3Rpb24odCl7cmV0dXJuIGF8fChhPXMoKSksYS5fc2V0dXAodCl9LGkuX2NoaWxkPWZ1bmN0aW9uKHQsZSxyLGkpe3JldHVybiBhfHwoYT1zKCkpLGEuX2NoaWxkKHQsZSxyLGkpfSxpfWZ1bmN0aW9uIG4odCxlKXtpZih0PT09ZSlyZXR1cm4hMDtpZihwLmlzQXJyYXkodCkmJnAuaXNBcnJheShlKSYmdC5sZW5ndGg9PT1lLmxlbmd0aCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspaWYoIW4odFtyXSxlW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24gbyh0KXtpZighdC5wYXRoLnBhcnRzKXt2YXIgZT10LnBhdGg7dC5wYXRoPXt0eXBlOiJQYXRoRXhwcmVzc2lvbiIsZGF0YTohMSxkZXB0aDowLHBhcnRzOltlLm9yaWdpbmFsKyIiXSxvcmlnaW5hbDplLm9yaWdpbmFsKyIiLGxvYzplLmxvY319fXZhciBjPXIoMSlbImRlZmF1bHQiXTtlLl9fZXNNb2R1bGU9ITAsZS5Db21waWxlcj1zLGUucHJlY29tcGlsZT1pLGUuY29tcGlsZT1hO3ZhciBoPXIoNiksbD1jKGgpLHA9cig1KSx1PXIoMjEpLGY9Yyh1KSxkPVtdLnNsaWNlO3MucHJvdG90eXBlPXtjb21waWxlcjpzLGVxdWFsczpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wY29kZXMubGVuZ3RoO2lmKHQub3Bjb2Rlcy5sZW5ndGghPT1lKXJldHVybiExO2Zvcih2YXIgcj0wO3I8ZTtyKyspe3ZhciBzPXRoaXMub3Bjb2Rlc1tyXSxpPXQub3Bjb2Rlc1tyXTtpZihzLm9wY29kZSE9PWkub3Bjb2RlfHwhbihzLmFyZ3MsaS5hcmdzKSlyZXR1cm4hMX1lPXRoaXMuY2hpbGRyZW4ubGVuZ3RoO2Zvcih2YXIgcj0wO3I8ZTtyKyspaWYoIXRoaXMuY2hpbGRyZW5bcl0uZXF1YWxzKHQuY2hpbGRyZW5bcl0pKXJldHVybiExO3JldHVybiEwfSxndWlkOjAsY29tcGlsZTpmdW5jdGlvbih0LGUpe3RoaXMuc291cmNlTm9kZT1bXSx0aGlzLm9wY29kZXM9W10sdGhpcy5jaGlsZHJlbj1bXSx0aGlzLm9wdGlvbnM9ZSx0aGlzLnN0cmluZ1BhcmFtcz1lLnN0cmluZ1BhcmFtcyx0aGlzLnRyYWNrSWRzPWUudHJhY2tJZHMsZS5ibG9ja1BhcmFtcz1lLmJsb2NrUGFyYW1zfHxbXTt2YXIgcj1lLmtub3duSGVscGVycztpZihlLmtub3duSGVscGVycz17aGVscGVyTWlzc2luZzohMCxibG9ja0hlbHBlck1pc3Npbmc6ITAsZWFjaDohMCwiaWYiOiEwLHVubGVzczohMCwid2l0aCI6ITAsbG9nOiEwLGxvb2t1cDohMH0scilmb3IodmFyIHMgaW4gcilzIGluIHImJihlLmtub3duSGVscGVyc1tzXT1yW3NdKTtyZXR1cm4gdGhpcy5hY2NlcHQodCl9LGNvbXBpbGVQcm9ncmFtOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyB0aGlzLmNvbXBpbGVyLHI9ZS5jb21waWxlKHQsdGhpcy5vcHRpb25zKSxzPXRoaXMuZ3VpZCsrO3JldHVybiB0aGlzLnVzZVBhcnRpYWw9dGhpcy51c2VQYXJ0aWFsfHxyLnVzZVBhcnRpYWwsdGhpcy5jaGlsZHJlbltzXT1yLHRoaXMudXNlRGVwdGhzPXRoaXMudXNlRGVwdGhzfHxyLnVzZURlcHRocyxzfSxhY2NlcHQ6ZnVuY3Rpb24odCl7aWYoIXRoaXNbdC50eXBlXSl0aHJvdyBuZXcgbFsiZGVmYXVsdCJdKCJVbmtub3duIHR5cGU6ICIrdC50eXBlLHQpO3RoaXMuc291cmNlTm9kZS51bnNoaWZ0KHQpO3ZhciBlPXRoaXNbdC50eXBlXSh0KTtyZXR1cm4gdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCksZX0sUHJvZ3JhbTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXMudW5zaGlmdCh0LmJsb2NrUGFyYW1zKTtmb3IodmFyIGU9dC5ib2R5LHI9ZS5sZW5ndGgscz0wO3M8cjtzKyspdGhpcy5hY2NlcHQoZVtzXSk7cmV0dXJuIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5zaGlmdCgpLHRoaXMuaXNTaW1wbGU9MT09PXIsdGhpcy5ibG9ja1BhcmFtcz10LmJsb2NrUGFyYW1zP3QuYmxvY2tQYXJhbXMubGVuZ3RoOjAsdGhpc30sQmxvY2tTdGF0ZW1lbnQ6ZnVuY3Rpb24odCl7byh0KTt2YXIgZT10LnByb2dyYW0scj10LmludmVyc2U7ZT1lJiZ0aGlzLmNvbXBpbGVQcm9ncmFtKGUpLHI9ciYmdGhpcy5jb21waWxlUHJvZ3JhbShyKTt2YXIgcz10aGlzLmNsYXNzaWZ5U2V4cHIodCk7ImhlbHBlciI9PT1zP3RoaXMuaGVscGVyU2V4cHIodCxlLHIpOiJzaW1wbGUiPT09cz8odGhpcy5zaW1wbGVTZXhwcih0KSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLGUpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsciksdGhpcy5vcGNvZGUoImVtcHR5SGFzaCIpLHRoaXMub3Bjb2RlKCJibG9ja1ZhbHVlIix0LnBhdGgub3JpZ2luYWwpKToodGhpcy5hbWJpZ3VvdXNTZXhwcih0LGUsciksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixlKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLHIpLHRoaXMub3Bjb2RlKCJlbXB0eUhhc2giKSx0aGlzLm9wY29kZSgiYW1iaWd1b3VzQmxvY2tWYWx1ZSIpKSx0aGlzLm9wY29kZSgiYXBwZW5kIil9LERlY29yYXRvckJsb2NrOmZ1bmN0aW9uKHQpe3ZhciBlPXQucHJvZ3JhbSYmdGhpcy5jb21waWxlUHJvZ3JhbSh0LnByb2dyYW0pLHI9dGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyh0LGUsdm9pZCAwKSxzPXQucGF0aDt0aGlzLnVzZURlY29yYXRvcnM9ITAsdGhpcy5vcGNvZGUoInJlZ2lzdGVyRGVjb3JhdG9yIixyLmxlbmd0aCxzLm9yaWdpbmFsKX0sUGFydGlhbFN0YXRlbWVudDpmdW5jdGlvbih0KXt0aGlzLnVzZVBhcnRpYWw9ITA7dmFyIGU9dC5wcm9ncmFtO2UmJihlPXRoaXMuY29tcGlsZVByb2dyYW0odC5wcm9ncmFtKSk7dmFyIHI9dC5wYXJhbXM7aWYoci5sZW5ndGg+MSl0aHJvdyBuZXcgbFsiZGVmYXVsdCJdKCJVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6ICIrci5sZW5ndGgsdCk7ci5sZW5ndGh8fCh0aGlzLm9wdGlvbnMuZXhwbGljaXRQYXJ0aWFsQ29udGV4dD90aGlzLm9wY29kZSgicHVzaExpdGVyYWwiLCJ1bmRlZmluZWQiKTpyLnB1c2goe3R5cGU6IlBhdGhFeHByZXNzaW9uIixwYXJ0czpbXSxkZXB0aDowfSkpO3ZhciBzPXQubmFtZS5vcmlnaW5hbCxpPSJTdWJFeHByZXNzaW9uIj09PXQubmFtZS50eXBlO2kmJnRoaXMuYWNjZXB0KHQubmFtZSksdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyh0LGUsdm9pZCAwLCEwKTt2YXIgYT10LmluZGVudHx8IiI7dGhpcy5vcHRpb25zLnByZXZlbnRJbmRlbnQmJmEmJih0aGlzLm9wY29kZSgiYXBwZW5kQ29udGVudCIsYSksYT0iIiksdGhpcy5vcGNvZGUoImludm9rZVBhcnRpYWwiLGkscyxhKSx0aGlzLm9wY29kZSgiYXBwZW5kIil9LFBhcnRpYWxCbG9ja1N0YXRlbWVudDpmdW5jdGlvbih0KXt0aGlzLlBhcnRpYWxTdGF0ZW1lbnQodCl9LE11c3RhY2hlU3RhdGVtZW50OmZ1bmN0aW9uKHQpe3RoaXMuU3ViRXhwcmVzc2lvbih0KSx0LmVzY2FwZWQmJiF0aGlzLm9wdGlvbnMubm9Fc2NhcGU/dGhpcy5vcGNvZGUoImFwcGVuZEVzY2FwZWQiKTp0aGlzLm9wY29kZSgiYXBwZW5kIil9LERlY29yYXRvcjpmdW5jdGlvbih0KXt0aGlzLkRlY29yYXRvckJsb2NrKHQpfSxDb250ZW50U3RhdGVtZW50OmZ1bmN0aW9uKHQpe3QudmFsdWUmJnRoaXMub3Bjb2RlKCJhcHBlbmRDb250ZW50Iix0LnZhbHVlKX0sQ29tbWVudFN0YXRlbWVudDpmdW5jdGlvbigpe30sU3ViRXhwcmVzc2lvbjpmdW5jdGlvbih0KXtvKHQpO3ZhciBlPXRoaXMuY2xhc3NpZnlTZXhwcih0KTsic2ltcGxlIj09PWU/dGhpcy5zaW1wbGVTZXhwcih0KToiaGVscGVyIj09PWU/dGhpcy5oZWxwZXJTZXhwcih0KTp0aGlzLmFtYmlndW91c1NleHByKHQpfSxhbWJpZ3VvdXNTZXhwcjpmdW5jdGlvbih0LGUscil7dmFyIHM9dC5wYXRoLGk9cy5wYXJ0c1swXSxhPW51bGwhPWV8fG51bGwhPXI7dGhpcy5vcGNvZGUoImdldENvbnRleHQiLHMuZGVwdGgpLHRoaXMub3Bjb2RlKCJwdXNoUHJvZ3JhbSIsZSksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixyKSxzLnN0cmljdD0hMCx0aGlzLmFjY2VwdChzKSx0aGlzLm9wY29kZSgiaW52b2tlQW1iaWd1b3VzIixpLGEpfSxzaW1wbGVTZXhwcjpmdW5jdGlvbih0KXt2YXIgZT10LnBhdGg7ZS5zdHJpY3Q9ITAsdGhpcy5hY2NlcHQoZSksdGhpcy5vcGNvZGUoInJlc29sdmVQb3NzaWJsZUxhbWJkYSIpfSxoZWxwZXJTZXhwcjpmdW5jdGlvbih0LGUscil7dmFyIHM9dGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyh0LGUsciksaT10LnBhdGgsYT1pLnBhcnRzWzBdO2lmKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNbYV0pdGhpcy5vcGNvZGUoImludm9rZUtub3duSGVscGVyIixzLmxlbmd0aCxhKTtlbHNle2lmKHRoaXMub3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KXRocm93IG5ldyBsWyJkZWZhdWx0Il0oIllvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICIrYSx0KTtpLnN0cmljdD0hMCxpLmZhbHN5PSEwLHRoaXMuYWNjZXB0KGkpLHRoaXMub3Bjb2RlKCJpbnZva2VIZWxwZXIiLHMubGVuZ3RoLGkub3JpZ2luYWwsZlsiZGVmYXVsdCJdLmhlbHBlcnMuc2ltcGxlSWQoaSkpfX0sUGF0aEV4cHJlc3Npb246ZnVuY3Rpb24odCl7dGhpcy5hZGREZXB0aCh0LmRlcHRoKSx0aGlzLm9wY29kZSgiZ2V0Q29udGV4dCIsdC5kZXB0aCk7dmFyIGU9dC5wYXJ0c1swXSxyPWZbImRlZmF1bHQiXS5oZWxwZXJzLnNjb3BlZElkKHQpLHM9IXQuZGVwdGgmJiFyJiZ0aGlzLmJsb2NrUGFyYW1JbmRleChlKTtzP3RoaXMub3Bjb2RlKCJsb29rdXBCbG9ja1BhcmFtIixzLHQucGFydHMpOmU/dC5kYXRhPyh0aGlzLm9wdGlvbnMuZGF0YT0hMCx0aGlzLm9wY29kZSgibG9va3VwRGF0YSIsdC5kZXB0aCx0LnBhcnRzLHQuc3RyaWN0KSk6dGhpcy5vcGNvZGUoImxvb2t1cE9uQ29udGV4dCIsdC5wYXJ0cyx0LmZhbHN5LHQuc3RyaWN0LHIpOnRoaXMub3Bjb2RlKCJwdXNoQ29udGV4dCIpfSxTdHJpbmdMaXRlcmFsOmZ1bmN0aW9uKHQpe3RoaXMub3Bjb2RlKCJwdXNoU3RyaW5nIix0LnZhbHVlKX0sTnVtYmVyTGl0ZXJhbDpmdW5jdGlvbih0KXt0aGlzLm9wY29kZSgicHVzaExpdGVyYWwiLHQudmFsdWUpfSxCb29sZWFuTGl0ZXJhbDpmdW5jdGlvbih0KXt0aGlzLm9wY29kZSgicHVzaExpdGVyYWwiLHQudmFsdWUpfSxVbmRlZmluZWRMaXRlcmFsOmZ1bmN0aW9uKCl7dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwidW5kZWZpbmVkIil9LE51bGxMaXRlcmFsOmZ1bmN0aW9uKCl7dGhpcy5vcGNvZGUoInB1c2hMaXRlcmFsIiwibnVsbCIpfSxIYXNoOmZ1bmN0aW9uKHQpe3ZhciBlPXQucGFpcnMscj0wLHM9ZS5sZW5ndGg7Zm9yKHRoaXMub3Bjb2RlKCJwdXNoSGFzaCIpO3I8cztyKyspdGhpcy5wdXNoUGFyYW0oZVtyXS52YWx1ZSk7Zm9yKDtyLS07KXRoaXMub3Bjb2RlKCJhc3NpZ25Ub0hhc2giLGVbcl0ua2V5KTt0aGlzLm9wY29kZSgicG9wSGFzaCIpfSxvcGNvZGU6ZnVuY3Rpb24odCl7dGhpcy5vcGNvZGVzLnB1c2goe29wY29kZTp0LGFyZ3M6ZC5jYWxsKGFyZ3VtZW50cywxKSxsb2M6dGhpcy5zb3VyY2VOb2RlWzBdLmxvY30pfSxhZGREZXB0aDpmdW5jdGlvbih0KXt0JiYodGhpcy51c2VEZXB0aHM9ITApfSxjbGFzc2lmeVNleHByOmZ1bmN0aW9uKHQpe3ZhciBlPWZbImRlZmF1bHQiXS5oZWxwZXJzLnNpbXBsZUlkKHQucGF0aCkscj1lJiYhIXRoaXMuYmxvY2tQYXJhbUluZGV4KHQucGF0aC5wYXJ0c1swXSkscz0hciYmZlsiZGVmYXVsdCJdLmhlbHBlcnMuaGVscGVyRXhwcmVzc2lvbih0KSxpPSFyJiYoc3x8ZSk7aWYoaSYmIXMpe3ZhciBhPXQucGF0aC5wYXJ0c1swXSxuPXRoaXMub3B0aW9ucztuLmtub3duSGVscGVyc1thXT9zPSEwOm4ua25vd25IZWxwZXJzT25seSYmKGk9ITEpfXJldHVybiBzPyJoZWxwZXIiOmk/ImFtYmlndW91cyI6InNpbXBsZSJ9LHB1c2hQYXJhbXM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXRoaXMucHVzaFBhcmFtKHRbZV0pfSxwdXNoUGFyYW06ZnVuY3Rpb24odCl7dmFyIGU9bnVsbCE9dC52YWx1ZT90LnZhbHVlOnQub3JpZ2luYWx8fCIiO2lmKHRoaXMuc3RyaW5nUGFyYW1zKWUucmVwbGFjZSYmKGU9ZS5yZXBsYWNlKC9eKFwuP1wuXC8pKi9nLCIiKS5yZXBsYWNlKC9cLy9nLCIuIikpLHQuZGVwdGgmJnRoaXMuYWRkRGVwdGgodC5kZXB0aCksdGhpcy5vcGNvZGUoImdldENvbnRleHQiLHQuZGVwdGh8fDApLHRoaXMub3Bjb2RlKCJwdXNoU3RyaW5nUGFyYW0iLGUsdC50eXBlKSwiU3ViRXhwcmVzc2lvbiI9PT10LnR5cGUmJnRoaXMuYWNjZXB0KHQpO2Vsc2V7aWYodGhpcy50cmFja0lkcyl7dmFyIHI9dm9pZCAwO2lmKCF0LnBhcnRzfHxmWyJkZWZhdWx0Il0uaGVscGVycy5zY29wZWRJZCh0KXx8dC5kZXB0aHx8KHI9dGhpcy5ibG9ja1BhcmFtSW5kZXgodC5wYXJ0c1swXSkpLHIpe3ZhciBzPXQucGFydHMuc2xpY2UoMSkuam9pbigiLiIpO3RoaXMub3Bjb2RlKCJwdXNoSWQiLCJCbG9ja1BhcmFtIixyLHMpfWVsc2UgZT10Lm9yaWdpbmFsfHxlLGUucmVwbGFjZSYmKGU9ZS5yZXBsYWNlKC9edGhpcyg/OlwufCQpLywiIikucmVwbGFjZSgvXlwuXC8vLCIiKS5yZXBsYWNlKC9eXC4kLywiIikpLHRoaXMub3Bjb2RlKCJwdXNoSWQiLHQudHlwZSxlKX10aGlzLmFjY2VwdCh0KX19LHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOmZ1bmN0aW9uKHQsZSxyLHMpe3ZhciBpPXQucGFyYW1zO3JldHVybiB0aGlzLnB1c2hQYXJhbXMoaSksdGhpcy5vcGNvZGUoInB1c2hQcm9ncmFtIixlKSx0aGlzLm9wY29kZSgicHVzaFByb2dyYW0iLHIpLHQuaGFzaD90aGlzLmFjY2VwdCh0Lmhhc2gpOnRoaXMub3Bjb2RlKCJlbXB0eUhhc2giLHMpLGl9LGJsb2NrUGFyYW1JbmRleDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7ZTxyO2UrKyl7dmFyIHM9dGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zW2VdLGk9cyYmcC5pbmRleE9mKHMsdCk7aWYocyYmaT49MClyZXR1cm5bZSxpXX19fX0sZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzKHQpe3RoaXMudmFsdWU9dH1mdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIGEodCxlLHIscyl7dmFyIGk9ZS5wb3BTdGFjaygpLGE9MCxuPXIubGVuZ3RoO2Zvcih0JiZuLS07YTxuO2ErKylpPWUubmFtZUxvb2t1cChpLHJbYV0scyk7cmV0dXJuIHQ/W2UuYWxpYXNhYmxlKCJjb250YWluZXIuc3RyaWN0IiksIigiLGksIiwgIixlLnF1b3RlZFN0cmluZyhyW2FdKSwiKSJdOml9dmFyIG49cigxKVsiZGVmYXVsdCJdO2UuX19lc01vZHVsZT0hMDt2YXIgbz1yKDQpLGM9cig2KSxoPW4oYyksbD1yKDUpLHA9cigyOSksdT1uKHApO2kucHJvdG90eXBlPXtuYW1lTG9va3VwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuaXNWYWxpZEphdmFTY3JpcHRWYXJpYWJsZU5hbWUoZSk/W3QsIi4iLGVdOlt0LCJbIixKU09OLnN0cmluZ2lmeShlKSwiXSJdfSxkZXB0aGVkTG9va3VwOmZ1bmN0aW9uKHQpe3JldHVyblt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxvb2t1cCIpLCcoZGVwdGhzLCAiJyx0LCciKSddfSxjb21waWxlckluZm86ZnVuY3Rpb24oKXt2YXIgdD1vLkNPTVBJTEVSX1JFVklTSU9OLGU9by5SRVZJU0lPTl9DSEFOR0VTW3RdO3JldHVyblt0LGVdfSxhcHBlbmRUb0J1ZmZlcjpmdW5jdGlvbih0LGUscil7cmV0dXJuIGwuaXNBcnJheSh0KXx8KHQ9W3RdKSx0PXRoaXMuc291cmNlLndyYXAodCxlKSx0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlP1sicmV0dXJuICIsdCwiOyJdOnI/WyJidWZmZXIgKz0gIix0LCI7Il06KHQuYXBwZW5kVG9CdWZmZXI9ITAsdCl9LGluaXRpYWxpemVCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoIiIpfSxjb21waWxlOmZ1bmN0aW9uKHQsZSxyLHMpe3RoaXMuZW52aXJvbm1lbnQ9dCx0aGlzLm9wdGlvbnM9ZSx0aGlzLnN0cmluZ1BhcmFtcz10aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zLHRoaXMudHJhY2tJZHM9dGhpcy5vcHRpb25zLnRyYWNrSWRzLHRoaXMucHJlY29tcGlsZT0hcyx0aGlzLm5hbWU9dGhpcy5lbnZpcm9ubWVudC5uYW1lLHRoaXMuaXNDaGlsZD0hIXIsdGhpcy5jb250ZXh0PXJ8fHtkZWNvcmF0b3JzOltdLHByb2dyYW1zOltdLGVudmlyb25tZW50czpbXX0sdGhpcy5wcmVhbWJsZSgpLHRoaXMuc3RhY2tTbG90PTAsdGhpcy5zdGFja1ZhcnM9W10sdGhpcy5hbGlhc2VzPXt9LHRoaXMucmVnaXN0ZXJzPXtsaXN0OltdfSx0aGlzLmhhc2hlcz1bXSx0aGlzLmNvbXBpbGVTdGFjaz1bXSx0aGlzLmlubGluZVN0YWNrPVtdLHRoaXMuYmxvY2tQYXJhbXM9W10sdGhpcy5jb21waWxlQ2hpbGRyZW4odCxlKSx0aGlzLnVzZURlcHRocz10aGlzLnVzZURlcHRoc3x8dC51c2VEZXB0aHN8fHQudXNlRGVjb3JhdG9yc3x8dGhpcy5vcHRpb25zLmNvbXBhdCx0aGlzLnVzZUJsb2NrUGFyYW1zPXRoaXMudXNlQmxvY2tQYXJhbXN8fHQudXNlQmxvY2tQYXJhbXM7dmFyIGk9dC5vcGNvZGVzLGE9dm9pZCAwLG49dm9pZCAwLG89dm9pZCAwLGM9dm9pZCAwO2ZvcihvPTAsYz1pLmxlbmd0aDtvPGM7bysrKWE9aVtvXSx0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb249YS5sb2Msbj1ufHxhLmxvYyx0aGlzW2Eub3Bjb2RlXS5hcHBseSh0aGlzLGEuYXJncyk7aWYodGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uPW4sdGhpcy5wdXNoU291cmNlKCIiKSx0aGlzLnN0YWNrU2xvdHx8dGhpcy5pbmxpbmVTdGFjay5sZW5ndGh8fHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCl0aHJvdyBuZXcgaFsiZGVmYXVsdCJdKCJDb21waWxlIGNvbXBsZXRlZCB3aXRoIGNvbnRlbnQgbGVmdCBvbiBzdGFjayIpO3RoaXMuZGVjb3JhdG9ycy5pc0VtcHR5KCk/dGhpcy5kZWNvcmF0b3JzPXZvaWQgMDoodGhpcy51c2VEZWNvcmF0b3JzPSEwLHRoaXMuZGVjb3JhdG9ycy5wcmVwZW5kKCJ2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzO1xuIiksdGhpcy5kZWNvcmF0b3JzLnB1c2goInJldHVybiBmbjsiKSxzP3RoaXMuZGVjb3JhdG9ycz1GdW5jdGlvbi5hcHBseSh0aGlzLFsiZm4iLCJwcm9wcyIsImNvbnRhaW5lciIsImRlcHRoMCIsImRhdGEiLCJibG9ja1BhcmFtcyIsImRlcHRocyIsdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCldKToodGhpcy5kZWNvcmF0b3JzLnByZXBlbmQoImZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aDAsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiIpLHRoaXMuZGVjb3JhdG9ycy5wdXNoKCJ9XG4iKSx0aGlzLmRlY29yYXRvcnM9dGhpcy5kZWNvcmF0b3JzLm1lcmdlKCkpKTt2YXIgbD10aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChzKTtpZih0aGlzLmlzQ2hpbGQpcmV0dXJuIGw7dmFyIHA9e2NvbXBpbGVyOnRoaXMuY29tcGlsZXJJbmZvKCksbWFpbjpsfTt0aGlzLmRlY29yYXRvcnMmJihwLm1haW5fZD10aGlzLmRlY29yYXRvcnMscC51c2VEZWNvcmF0b3JzPSEwKTt2YXIgdT10aGlzLmNvbnRleHQsZj11LnByb2dyYW1zLGQ9dS5kZWNvcmF0b3JzO2ZvcihvPTAsYz1mLmxlbmd0aDtvPGM7bysrKWZbb10mJihwW29dPWZbb10sZFtvXSYmKHBbbysiX2QiXT1kW29dLHAudXNlRGVjb3JhdG9ycz0hMCkpO3JldHVybiB0aGlzLmVudmlyb25tZW50LnVzZVBhcnRpYWwmJihwLnVzZVBhcnRpYWw9ITApLHRoaXMub3B0aW9ucy5kYXRhJiYocC51c2VEYXRhPSEwKSx0aGlzLnVzZURlcHRocyYmKHAudXNlRGVwdGhzPSEwKSx0aGlzLnVzZUJsb2NrUGFyYW1zJiYocC51c2VCbG9ja1BhcmFtcz0hMCksdGhpcy5vcHRpb25zLmNvbXBhdCYmKHAuY29tcGF0PSEwKSxzP3AuY29tcGlsZXJPcHRpb25zPXRoaXMub3B0aW9uczoocC5jb21waWxlcj1KU09OLnN0cmluZ2lmeShwLmNvbXBpbGVyKSx0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb249e3N0YXJ0OntsaW5lOjEsY29sdW1uOjB9fSxwPXRoaXMub2JqZWN0TGl0ZXJhbChwKSxlLnNyY05hbWU/KHA9cC50b1N0cmluZ1dpdGhTb3VyY2VNYXAoe2ZpbGU6ZS5kZXN0TmFtZX0pLHAubWFwPXAubWFwJiZwLm1hcC50b1N0cmluZygpKTpwPXAudG9TdHJpbmcoKSkscH0scHJlYW1ibGU6ZnVuY3Rpb24oKXt0aGlzLmxhc3RDb250ZXh0PTAsdGhpcy5zb3VyY2U9bmV3IHVbImRlZmF1bHQiXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSksdGhpcy5kZWNvcmF0b3JzPW5ldyB1WyJkZWZhdWx0Il0odGhpcy5vcHRpb25zLnNyY05hbWUpfSxjcmVhdGVGdW5jdGlvbkNvbnRleHQ6ZnVuY3Rpb24odCl7dmFyIGU9IiIscj10aGlzLnN0YWNrVmFycy5jb25jYXQodGhpcy5yZWdpc3RlcnMubGlzdCk7ci5sZW5ndGg+MCYmKGUrPSIsICIrci5qb2luKCIsICIpKTt2YXIgcz0wO2Zvcih2YXIgaSBpbiB0aGlzLmFsaWFzZXMpe3ZhciBhPXRoaXMuYWxpYXNlc1tpXTt0aGlzLmFsaWFzZXMuaGFzT3duUHJvcGVydHkoaSkmJmEuY2hpbGRyZW4mJmEucmVmZXJlbmNlQ291bnQ+MSYmKGUrPSIsIGFsaWFzIisgKytzKyI9IitpLGEuY2hpbGRyZW5bMF09ImFsaWFzIitzKX12YXIgbj1bImNvbnRhaW5lciIsImRlcHRoMCIsImhlbHBlcnMiLCJwYXJ0aWFscyIsImRhdGEiXTsodGhpcy51c2VCbG9ja1BhcmFtc3x8dGhpcy51c2VEZXB0aHMpJiZuLnB1c2goImJsb2NrUGFyYW1zIiksdGhpcy51c2VEZXB0aHMmJm4ucHVzaCgiZGVwdGhzIik7dmFyIG89dGhpcy5tZXJnZVNvdXJjZShlKTtyZXR1cm4gdD8obi5wdXNoKG8pLEZ1bmN0aW9uLmFwcGx5KHRoaXMsbikpOnRoaXMuc291cmNlLndyYXAoWyJmdW5jdGlvbigiLG4uam9pbigiLCIpLCIpIHtcbiAgIixvLCJ9Il0pfSxtZXJnZVNvdXJjZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLHI9IXRoaXMuZm9yY2VCdWZmZXIscz12b2lkIDAsaT12b2lkIDAsYT12b2lkIDAsbj12b2lkIDA7cmV0dXJuIHRoaXMuc291cmNlLmVhY2goZnVuY3Rpb24odCl7dC5hcHBlbmRUb0J1ZmZlcj8oYT90LnByZXBlbmQoIiAgKyAiKTphPXQsbj10KTooYSYmKGk/YS5wcmVwZW5kKCJidWZmZXIgKz0gIik6cz0hMCxuLmFkZCgiOyIpLGE9bj12b2lkIDApLGk9ITAsZXx8KHI9ITEpKX0pLHI/YT8oYS5wcmVwZW5kKCJyZXR1cm4gIiksbi5hZGQoIjsiKSk6aXx8dGhpcy5zb3VyY2UucHVzaCgncmV0dXJuICIiOycpOih0Kz0iLCBidWZmZXIgPSAiKyhzPyIiOnRoaXMuaW5pdGlhbGl6ZUJ1ZmZlcigpKSxhPyhhLnByZXBlbmQoInJldHVybiBidWZmZXIgKyAiKSxuLmFkZCgiOyIpKTp0aGlzLnNvdXJjZS5wdXNoKCJyZXR1cm4gYnVmZmVyOyIpKSx0JiZ0aGlzLnNvdXJjZS5wcmVwZW5kKCJ2YXIgIit0LnN1YnN0cmluZygyKSsocz8iIjoiO1xuIikpLHRoaXMuc291cmNlLm1lcmdlKCl9LGJsb2NrVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hbGlhc2FibGUoImhlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nIikscj1bdGhpcy5jb250ZXh0TmFtZSgwKV07dGhpcy5zZXR1cEhlbHBlckFyZ3ModCwwLHIpO3ZhciBzPXRoaXMucG9wU3RhY2soKTtyLnNwbGljZSgxLDAscyksdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChlLCJjYWxsIixyKSl9LGFtYmlndW91c0Jsb2NrVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmFsaWFzYWJsZSgiaGVscGVycy5ibG9ja0hlbHBlck1pc3NpbmciKSxlPVt0aGlzLmNvbnRleHROYW1lKDApXTt0aGlzLnNldHVwSGVscGVyQXJncygiIiwwLGUsITApLHRoaXMuZmx1c2hJbmxpbmUoKTt2YXIgcj10aGlzLnRvcFN0YWNrKCk7ZS5zcGxpY2UoMSwwLHIpLHRoaXMucHVzaFNvdXJjZShbImlmICghIix0aGlzLmxhc3RIZWxwZXIsIikgeyAiLHIsIiA9ICIsdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKHQsImNhbGwiLGUpLCJ9Il0pfSxhcHBlbmRDb250ZW50OmZ1bmN0aW9uKHQpe3RoaXMucGVuZGluZ0NvbnRlbnQ/dD10aGlzLnBlbmRpbmdDb250ZW50K3Q6dGhpcy5wZW5kaW5nTG9jYXRpb249dGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uLHRoaXMucGVuZGluZ0NvbnRlbnQ9dH0sYXBwZW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0lubGluZSgpKXRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uKHQpe3JldHVyblsiICE9IG51bGwgPyAiLHQsJyA6ICIiJ119KSx0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtlbHNle3ZhciB0PXRoaXMucG9wU3RhY2soKTt0aGlzLnB1c2hTb3VyY2UoWyJpZiAoIix0LCIgIT0gbnVsbCkgeyAiLHRoaXMuYXBwZW5kVG9CdWZmZXIodCx2b2lkIDAsITApLCIgfSJdKSx0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlJiZ0aGlzLnB1c2hTb3VyY2UoWyJlbHNlIHsgIix0aGlzLmFwcGVuZFRvQnVmZmVyKCInJyIsdm9pZCAwLCEwKSwiIH0iXSl9fSxhcHBlbmRFc2NhcGVkOmZ1bmN0aW9uKCl7dGhpcy5wdXNoU291cmNlKHRoaXMuYXBwZW5kVG9CdWZmZXIoW3RoaXMuYWxpYXNhYmxlKCJjb250YWluZXIuZXNjYXBlRXhwcmVzc2lvbiIpLCIoIix0aGlzLnBvcFN0YWNrKCksIikiXSkpfSxnZXRDb250ZXh0OmZ1bmN0aW9uKHQpe3RoaXMubGFzdENvbnRleHQ9dH0scHVzaENvbnRleHQ6ZnVuY3Rpb24oKXt0aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5jb250ZXh0TmFtZSh0aGlzLmxhc3RDb250ZXh0KSl9LGxvb2t1cE9uQ29udGV4dDpmdW5jdGlvbih0LGUscixzKXt2YXIgaT0wO3N8fCF0aGlzLm9wdGlvbnMuY29tcGF0fHx0aGlzLmxhc3RDb250ZXh0P3RoaXMucHVzaENvbnRleHQoKTp0aGlzLnB1c2godGhpcy5kZXB0aGVkTG9va3VwKHRbaSsrXSkpLHRoaXMucmVzb2x2ZVBhdGgoImNvbnRleHQiLHQsaSxlLHIpfSxsb29rdXBCbG9ja1BhcmFtOmZ1bmN0aW9uKHQsZSl7dGhpcy51c2VCbG9ja1BhcmFtcz0hMCx0aGlzLnB1c2goWyJibG9ja1BhcmFtc1siLHRbMF0sIl1bIix0WzFdLCJdIl0pLHRoaXMucmVzb2x2ZVBhdGgoImNvbnRleHQiLGUsMSl9LGxvb2t1cERhdGE6ZnVuY3Rpb24odCxlLHIpe3Q/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJjb250YWluZXIuZGF0YShkYXRhLCAiK3QrIikiKTp0aGlzLnB1c2hTdGFja0xpdGVyYWwoImRhdGEiKSx0aGlzLnJlc29sdmVQYXRoKCJkYXRhIixlLDAsITAscil9LHJlc29sdmVQYXRoOmZ1bmN0aW9uKHQsZSxyLHMsaSl7dmFyIG49dGhpcztpZih0aGlzLm9wdGlvbnMuc3RyaWN0fHx0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cylyZXR1cm4gdm9pZCB0aGlzLnB1c2goYSh0aGlzLm9wdGlvbnMuc3RyaWN0JiZpLHRoaXMsZSx0KSk7Zm9yKHZhciBvPWUubGVuZ3RoO3I8bztyKyspdGhpcy5yZXBsYWNlU3RhY2soZnVuY3Rpb24oaSl7dmFyIGE9bi5uYW1lTG9va3VwKGksZVtyXSx0KTtyZXR1cm4gcz9bIiAmJiAiLGFdOlsiICE9IG51bGwgPyAiLGEsIiA6ICIsaV19KX0scmVzb2x2ZVBvc3NpYmxlTGFtYmRhOmZ1bmN0aW9uKCl7dGhpcy5wdXNoKFt0aGlzLmFsaWFzYWJsZSgiY29udGFpbmVyLmxhbWJkYSIpLCIoIix0aGlzLnBvcFN0YWNrKCksIiwgIix0aGlzLmNvbnRleHROYW1lKDApLCIpIl0pfSxwdXNoU3RyaW5nUGFyYW06ZnVuY3Rpb24odCxlKXt0aGlzLnB1c2hDb250ZXh0KCksdGhpcy5wdXNoU3RyaW5nKGUpLCJTdWJFeHByZXNzaW9uIiE9PWUmJigic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5wdXNoU3RyaW5nKHQpOnRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0KSl9LGVtcHR5SGFzaDpmdW5jdGlvbih0KXt0aGlzLnRyYWNrSWRzJiZ0aGlzLnB1c2goInt9IiksdGhpcy5zdHJpbmdQYXJhbXMmJih0aGlzLnB1c2goInt9IiksdGhpcy5wdXNoKCJ7fSIpKSx0aGlzLnB1c2hTdGFja0xpdGVyYWwodD8idW5kZWZpbmVkIjoie30iKX0scHVzaEhhc2g6ZnVuY3Rpb24oKXt0aGlzLmhhc2gmJnRoaXMuaGFzaGVzLnB1c2godGhpcy5oYXNoKSx0aGlzLmhhc2g9e3ZhbHVlczpbXSx0eXBlczpbXSxjb250ZXh0czpbXSxpZHM6W119fSxwb3BIYXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oYXNoO3RoaXMuaGFzaD10aGlzLmhhc2hlcy5wb3AoKSx0aGlzLnRyYWNrSWRzJiZ0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKHQuaWRzKSksdGhpcy5zdHJpbmdQYXJhbXMmJih0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKHQuY29udGV4dHMpKSx0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKHQudHlwZXMpKSksdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbCh0LnZhbHVlcykpfSxwdXNoU3RyaW5nOmZ1bmN0aW9uKHQpe3RoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyh0KSl9LHB1c2hMaXRlcmFsOmZ1bmN0aW9uKHQpe3RoaXMucHVzaFN0YWNrTGl0ZXJhbCh0KX0scHVzaFByb2dyYW06ZnVuY3Rpb24odCl7bnVsbCE9dD90aGlzLnB1c2hTdGFja0xpdGVyYWwodGhpcy5wcm9ncmFtRXhwcmVzc2lvbih0KSk6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKG51bGwpfSxyZWdpc3RlckRlY29yYXRvcjpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubmFtZUxvb2t1cCgiZGVjb3JhdG9ycyIsZSwiZGVjb3JhdG9yIikscz10aGlzLnNldHVwSGVscGVyQXJncyhlLHQpO3RoaXMuZGVjb3JhdG9ycy5wdXNoKFsiZm4gPSAiLHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwociwiIixbImZuIiwicHJvcHMiLCJjb250YWluZXIiLHNdKSwiIHx8IGZuOyJdKX0saW52b2tlSGVscGVyOmZ1bmN0aW9uKHQsZSxyKXt2YXIgcz10aGlzLnBvcFN0YWNrKCksaT10aGlzLnNldHVwSGVscGVyKHQsZSksYT1yP1tpLm5hbWUsIiB8fCAiXToiIixuPVsiKCJdLmNvbmNhdChhLHMpO3RoaXMub3B0aW9ucy5zdHJpY3R8fG4ucHVzaCgiIHx8ICIsdGhpcy5hbGlhc2FibGUoImhlbHBlcnMuaGVscGVyTWlzc2luZyIpKSxuLnB1c2goIikiKSx0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKG4sImNhbGwiLGkuY2FsbFBhcmFtcykpfSxpbnZva2VLbm93bkhlbHBlcjpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuc2V0dXBIZWxwZXIodCxlKTt0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKHIubmFtZSwiY2FsbCIsci5jYWxsUGFyYW1zKSl9LGludm9rZUFtYmlndW91czpmdW5jdGlvbih0LGUpe3RoaXMudXNlUmVnaXN0ZXIoImhlbHBlciIpO3ZhciByPXRoaXMucG9wU3RhY2soKTt0aGlzLmVtcHR5SGFzaCgpO3ZhciBzPXRoaXMuc2V0dXBIZWxwZXIoMCx0LGUpLGk9dGhpcy5sYXN0SGVscGVyPXRoaXMubmFtZUxvb2t1cCgiaGVscGVycyIsdCwiaGVscGVyIiksYT1bIigiLCIoaGVscGVyID0gIixpLCIgfHwgIixyLCIpIl07dGhpcy5vcHRpb25zLnN0cmljdHx8KGFbMF09IihoZWxwZXIgPSAiLGEucHVzaCgiICE9IG51bGwgPyBoZWxwZXIgOiAiLHRoaXMuYWxpYXNhYmxlKCJoZWxwZXJzLmhlbHBlck1pc3NpbmciKSkpLHRoaXMucHVzaChbIigiLGEscy5wYXJhbXNJbml0P1siKSwoIixzLnBhcmFtc0luaXRdOltdLCIpLCIsIih0eXBlb2YgaGVscGVyID09PSAiLHRoaXMuYWxpYXNhYmxlKCciZnVuY3Rpb24iJyksIiA/ICIsdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKCJoZWxwZXIiLCJjYWxsIixzLmNhbGxQYXJhbXMpLCIgOiBoZWxwZXIpKSJdKX0saW52b2tlUGFydGlhbDpmdW5jdGlvbih0LGUscil7dmFyIHM9W10saT10aGlzLnNldHVwUGFyYW1zKGUsMSxzKTt0JiYoZT10aGlzLnBvcFN0YWNrKCksZGVsZXRlIGkubmFtZSksciYmKGkuaW5kZW50PUpTT04uc3RyaW5naWZ5KHIpKSxpLmhlbHBlcnM9ImhlbHBlcnMiLGkucGFydGlhbHM9InBhcnRpYWxzIixpLmRlY29yYXRvcnM9ImNvbnRhaW5lci5kZWNvcmF0b3JzIix0P3MudW5zaGlmdChlKTpzLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCJwYXJ0aWFscyIsZSwicGFydGlhbCIpKSx0aGlzLm9wdGlvbnMuY29tcGF0JiYoaS5kZXB0aHM9ImRlcHRocyIpLGk9dGhpcy5vYmplY3RMaXRlcmFsKGkpLAorcy5wdXNoKGkpLHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoImNvbnRhaW5lci5pbnZva2VQYXJ0aWFsIiwiIixzKSl9LGFzc2lnblRvSGFzaDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBvcFN0YWNrKCkscj12b2lkIDAscz12b2lkIDAsaT12b2lkIDA7dGhpcy50cmFja0lkcyYmKGk9dGhpcy5wb3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKHM9dGhpcy5wb3BTdGFjaygpLHI9dGhpcy5wb3BTdGFjaygpKTt2YXIgYT10aGlzLmhhc2g7ciYmKGEuY29udGV4dHNbdF09cikscyYmKGEudHlwZXNbdF09cyksaSYmKGEuaWRzW3RdPWkpLGEudmFsdWVzW3RdPWV9LHB1c2hJZDpmdW5jdGlvbih0LGUscil7IkJsb2NrUGFyYW0iPT09dD90aGlzLnB1c2hTdGFja0xpdGVyYWwoImJsb2NrUGFyYW1zWyIrZVswXSsiXS5wYXRoWyIrZVsxXSsiXSIrKHI/IiArICIrSlNPTi5zdHJpbmdpZnkoIi4iK3IpOiIiKSk6IlBhdGhFeHByZXNzaW9uIj09PXQ/dGhpcy5wdXNoU3RyaW5nKGUpOiJTdWJFeHByZXNzaW9uIj09PXQ/dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJ0cnVlIik6dGhpcy5wdXNoU3RhY2tMaXRlcmFsKCJudWxsIil9LGNvbXBpbGVyOmksY29tcGlsZUNoaWxkcmVuOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY2hpbGRyZW4scz12b2lkIDAsaT12b2lkIDAsYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7cz1yW2FdLGk9bmV3IHRoaXMuY29tcGlsZXI7dmFyIG89dGhpcy5tYXRjaEV4aXN0aW5nUHJvZ3JhbShzKTtudWxsPT1vPyh0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgiIiksbz10aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoLHMuaW5kZXg9byxzLm5hbWU9InByb2dyYW0iK28sdGhpcy5jb250ZXh0LnByb2dyYW1zW29dPWkuY29tcGlsZShzLGUsdGhpcy5jb250ZXh0LCF0aGlzLnByZWNvbXBpbGUpLHRoaXMuY29udGV4dC5kZWNvcmF0b3JzW29dPWkuZGVjb3JhdG9ycyx0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW29dPXMsdGhpcy51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHN8fGkudXNlRGVwdGhzLHRoaXMudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFtc3x8aS51c2VCbG9ja1BhcmFtcyk6KHMuaW5kZXg9byxzLm5hbWU9InByb2dyYW0iK28sdGhpcy51c2VEZXB0aHM9dGhpcy51c2VEZXB0aHN8fHMudXNlRGVwdGhzLHRoaXMudXNlQmxvY2tQYXJhbXM9dGhpcy51c2VCbG9ja1BhcmFtc3x8cy51c2VCbG9ja1BhcmFtcyl9fSxtYXRjaEV4aXN0aW5nUHJvZ3JhbTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPXRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoO2U8cjtlKyspe3ZhciBzPXRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbZV07aWYocyYmcy5lcXVhbHModCkpcmV0dXJuIGV9fSxwcm9ncmFtRXhwcmVzc2lvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW3RdLHI9W2UuaW5kZXgsImRhdGEiLGUuYmxvY2tQYXJhbXNdO3JldHVybih0aGlzLnVzZUJsb2NrUGFyYW1zfHx0aGlzLnVzZURlcHRocykmJnIucHVzaCgiYmxvY2tQYXJhbXMiKSx0aGlzLnVzZURlcHRocyYmci5wdXNoKCJkZXB0aHMiKSwiY29udGFpbmVyLnByb2dyYW0oIityLmpvaW4oIiwgIikrIikifSx1c2VSZWdpc3RlcjpmdW5jdGlvbih0KXt0aGlzLnJlZ2lzdGVyc1t0XXx8KHRoaXMucmVnaXN0ZXJzW3RdPSEwLHRoaXMucmVnaXN0ZXJzLmxpc3QucHVzaCh0KSl9LHB1c2g6ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBzfHwodD10aGlzLnNvdXJjZS53cmFwKHQpKSx0aGlzLmlubGluZVN0YWNrLnB1c2godCksdH0scHVzaFN0YWNrTGl0ZXJhbDpmdW5jdGlvbih0KXt0aGlzLnB1c2gobmV3IHModCkpfSxwdXNoU291cmNlOmZ1bmN0aW9uKHQpe3RoaXMucGVuZGluZ0NvbnRlbnQmJih0aGlzLnNvdXJjZS5wdXNoKHRoaXMuYXBwZW5kVG9CdWZmZXIodGhpcy5zb3VyY2UucXVvdGVkU3RyaW5nKHRoaXMucGVuZGluZ0NvbnRlbnQpLHRoaXMucGVuZGluZ0xvY2F0aW9uKSksdGhpcy5wZW5kaW5nQ29udGVudD12b2lkIDApLHQmJnRoaXMuc291cmNlLnB1c2godCl9LHJlcGxhY2VTdGFjazpmdW5jdGlvbih0KXt2YXIgZT1bIigiXSxyPXZvaWQgMCxpPXZvaWQgMCxhPXZvaWQgMDtpZighdGhpcy5pc0lubGluZSgpKXRocm93IG5ldyBoWyJkZWZhdWx0Il0oInJlcGxhY2VTdGFjayBvbiBub24taW5saW5lIik7dmFyIG49dGhpcy5wb3BTdGFjayghMCk7aWYobiBpbnN0YW5jZW9mIHMpcj1bbi52YWx1ZV0sZT1bIigiLHJdLGE9ITA7ZWxzZXtpPSEwO3ZhciBvPXRoaXMuaW5jclN0YWNrKCk7ZT1bIigoIix0aGlzLnB1c2gobyksIiA9ICIsbiwiKSJdLHI9dGhpcy50b3BTdGFjaygpfXZhciBjPXQuY2FsbCh0aGlzLHIpO2F8fHRoaXMucG9wU3RhY2soKSxpJiZ0aGlzLnN0YWNrU2xvdC0tLHRoaXMucHVzaChlLmNvbmNhdChjLCIpIikpfSxpbmNyU3RhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFja1Nsb3QrKyx0aGlzLnN0YWNrU2xvdD50aGlzLnN0YWNrVmFycy5sZW5ndGgmJnRoaXMuc3RhY2tWYXJzLnB1c2goInN0YWNrIit0aGlzLnN0YWNrU2xvdCksdGhpcy50b3BTdGFja05hbWUoKX0sdG9wU3RhY2tOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuInN0YWNrIit0aGlzLnN0YWNrU2xvdH0sZmx1c2hJbmxpbmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlubGluZVN0YWNrO3RoaXMuaW5saW5lU3RhY2s9W107Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXt2YXIgaT10W2VdO2lmKGkgaW5zdGFuY2VvZiBzKXRoaXMuY29tcGlsZVN0YWNrLnB1c2goaSk7ZWxzZXt2YXIgYT10aGlzLmluY3JTdGFjaygpO3RoaXMucHVzaFNvdXJjZShbYSwiID0gIixpLCI7Il0pLHRoaXMuY29tcGlsZVN0YWNrLnB1c2goYSl9fX0saXNJbmxpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGh9LHBvcFN0YWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXNJbmxpbmUoKSxyPShlP3RoaXMuaW5saW5lU3RhY2s6dGhpcy5jb21waWxlU3RhY2spLnBvcCgpO2lmKCF0JiZyIGluc3RhbmNlb2YgcylyZXR1cm4gci52YWx1ZTtpZighZSl7aWYoIXRoaXMuc3RhY2tTbG90KXRocm93IG5ldyBoWyJkZWZhdWx0Il0oIkludmFsaWQgc3RhY2sgcG9wIik7dGhpcy5zdGFja1Nsb3QtLX1yZXR1cm4gcn0sdG9wU3RhY2s6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlzSW5saW5lKCk/dGhpcy5pbmxpbmVTdGFjazp0aGlzLmNvbXBpbGVTdGFjayxlPXRbdC5sZW5ndGgtMV07cmV0dXJuIGUgaW5zdGFuY2VvZiBzP2UudmFsdWU6ZX0sY29udGV4dE5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXNlRGVwdGhzJiZ0PyJkZXB0aHNbIit0KyJdIjoiZGVwdGgiK3R9LHF1b3RlZFN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zb3VyY2UucXVvdGVkU3RyaW5nKHQpfSxvYmplY3RMaXRlcmFsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKHQpfSxhbGlhc2FibGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hbGlhc2VzW3RdO3JldHVybiBlPyhlLnJlZmVyZW5jZUNvdW50KyssZSk6KGU9dGhpcy5hbGlhc2VzW3RdPXRoaXMuc291cmNlLndyYXAodCksZS5hbGlhc2FibGU9ITAsZS5yZWZlcmVuY2VDb3VudD0xLGUpfSxzZXR1cEhlbHBlcjpmdW5jdGlvbih0LGUscil7dmFyIHM9W10saT10aGlzLnNldHVwSGVscGVyQXJncyhlLHQscyxyKSxhPXRoaXMubmFtZUxvb2t1cCgiaGVscGVycyIsZSwiaGVscGVyIiksbj10aGlzLmFsaWFzYWJsZSh0aGlzLmNvbnRleHROYW1lKDApKyIgIT0gbnVsbCA/ICIrdGhpcy5jb250ZXh0TmFtZSgwKSsiIDoge30iKTtyZXR1cm57cGFyYW1zOnMscGFyYW1zSW5pdDppLG5hbWU6YSxjYWxsUGFyYW1zOltuXS5jb25jYXQocyl9fSxzZXR1cFBhcmFtczpmdW5jdGlvbih0LGUscil7dmFyIHM9e30saT1bXSxhPVtdLG49W10sbz0hcixjPXZvaWQgMDtvJiYocj1bXSkscy5uYW1lPXRoaXMucXVvdGVkU3RyaW5nKHQpLHMuaGFzaD10aGlzLnBvcFN0YWNrKCksdGhpcy50cmFja0lkcyYmKHMuaGFzaElkcz10aGlzLnBvcFN0YWNrKCkpLHRoaXMuc3RyaW5nUGFyYW1zJiYocy5oYXNoVHlwZXM9dGhpcy5wb3BTdGFjaygpLHMuaGFzaENvbnRleHRzPXRoaXMucG9wU3RhY2soKSk7dmFyIGg9dGhpcy5wb3BTdGFjaygpLGw9dGhpcy5wb3BTdGFjaygpOyhsfHxoKSYmKHMuZm49bHx8ImNvbnRhaW5lci5ub29wIixzLmludmVyc2U9aHx8ImNvbnRhaW5lci5ub29wIik7Zm9yKHZhciBwPWU7cC0tOyljPXRoaXMucG9wU3RhY2soKSxyW3BdPWMsdGhpcy50cmFja0lkcyYmKG5bcF09dGhpcy5wb3BTdGFjaygpKSx0aGlzLnN0cmluZ1BhcmFtcyYmKGFbcF09dGhpcy5wb3BTdGFjaygpLGlbcF09dGhpcy5wb3BTdGFjaygpKTtyZXR1cm4gbyYmKHMuYXJncz10aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHIpKSx0aGlzLnRyYWNrSWRzJiYocy5pZHM9dGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShuKSksdGhpcy5zdHJpbmdQYXJhbXMmJihzLnR5cGVzPXRoaXMuc291cmNlLmdlbmVyYXRlQXJyYXkoYSkscy5jb250ZXh0cz10aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGkpKSx0aGlzLm9wdGlvbnMuZGF0YSYmKHMuZGF0YT0iZGF0YSIpLHRoaXMudXNlQmxvY2tQYXJhbXMmJihzLmJsb2NrUGFyYW1zPSJibG9ja1BhcmFtcyIpLHN9LHNldHVwSGVscGVyQXJnczpmdW5jdGlvbih0LGUscixzKXt2YXIgaT10aGlzLnNldHVwUGFyYW1zKHQsZSxyKTtyZXR1cm4gaT10aGlzLm9iamVjdExpdGVyYWwoaSkscz8odGhpcy51c2VSZWdpc3Rlcigib3B0aW9ucyIpLHIucHVzaCgib3B0aW9ucyIpLFsib3B0aW9ucz0iLGldKTpyPyhyLnB1c2goaSksIiIpOml9fSxmdW5jdGlvbigpe2Zvcih2YXIgdD0iYnJlYWsgZWxzZSBuZXcgdmFyIGNhc2UgZmluYWxseSByZXR1cm4gdm9pZCBjYXRjaCBmb3Igc3dpdGNoIHdoaWxlIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCBkZWZhdWx0IGlmIHRocm93IGRlbGV0ZSBpbiB0cnkgZG8gaW5zdGFuY2VvZiB0eXBlb2YgYWJzdHJhY3QgZW51bSBpbnQgc2hvcnQgYm9vbGVhbiBleHBvcnQgaW50ZXJmYWNlIHN0YXRpYyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlciBjaGFyIGZpbmFsIG5hdGl2ZSBzeW5jaHJvbml6ZWQgY2xhc3MgZmxvYXQgcGFja2FnZSB0aHJvd3MgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVudCBkZWJ1Z2dlciBpbXBsZW1lbnRzIHByb3RlY3RlZCB2b2xhdGlsZSBkb3VibGUgaW1wb3J0IHB1YmxpYyBsZXQgeWllbGQgYXdhaXQgbnVsbCB0cnVlIGZhbHNlIi5zcGxpdCgiICIpLGU9aS5SRVNFUlZFRF9XT1JEUz17fSxyPTAscz10Lmxlbmd0aDtyPHM7cisrKWVbdFtyXV09ITB9KCksaS5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZT1mdW5jdGlvbih0KXtyZXR1cm4haS5SRVNFUlZFRF9XT1JEU1t0XSYmL15bYS16QS1aXyRdWzAtOWEtekEtWl8kXSokLy50ZXN0KHQpfSxlWyJkZWZhdWx0Il09aSx0LmV4cG9ydHM9ZVsiZGVmYXVsdCJdfSxmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHModCxlLHIpe2lmKGEuaXNBcnJheSh0KSl7Zm9yKHZhciBzPVtdLGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspcy5wdXNoKGUud3JhcCh0W2ldLHIpKTtyZXR1cm4gc31yZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHQ/dCsiIjp0fWZ1bmN0aW9uIGkodCl7dGhpcy5zcmNGaWxlPXQsdGhpcy5zb3VyY2U9W119ZS5fX2VzTW9kdWxlPSEwO3ZhciBhPXIoNSksbj12b2lkIDA7dHJ5e31jYXRjaChvKXt9bnx8KG49ZnVuY3Rpb24odCxlLHIscyl7dGhpcy5zcmM9IiIscyYmdGhpcy5hZGQocyl9LG4ucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7YS5pc0FycmF5KHQpJiYodD10LmpvaW4oIiIpKSx0aGlzLnNyYys9dH0scHJlcGVuZDpmdW5jdGlvbih0KXthLmlzQXJyYXkodCkmJih0PXQuam9pbigiIikpLHRoaXMuc3JjPXQrdGhpcy5zcmN9LHRvU3RyaW5nV2l0aFNvdXJjZU1hcDpmdW5jdGlvbigpe3JldHVybntjb2RlOnRoaXMudG9TdHJpbmcoKX19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3JjfX0pLGkucHJvdG90eXBlPXtpc0VtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuc291cmNlLmxlbmd0aH0scHJlcGVuZDpmdW5jdGlvbih0LGUpe3RoaXMuc291cmNlLnVuc2hpZnQodGhpcy53cmFwKHQsZSkpfSxwdXNoOmZ1bmN0aW9uKHQsZSl7dGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAodCxlKSl9LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbXB0eSgpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dC5hZGQoWyIgICIsZSwiXG4iXSl9KSx0fSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLHI9dGhpcy5zb3VyY2UubGVuZ3RoO2U8cjtlKyspdCh0aGlzLnNvdXJjZVtlXSl9LGVtcHR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50TG9jYXRpb258fHtzdGFydDp7fX07cmV0dXJuIG5ldyBuKHQuc3RhcnQubGluZSx0LnN0YXJ0LmNvbHVtbix0aGlzLnNyY0ZpbGUpfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT90aGlzLmN1cnJlbnRMb2NhdGlvbnx8e3N0YXJ0Ont9fTphcmd1bWVudHNbMV07cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6KHQ9cyh0LHRoaXMsZSksbmV3IG4oZS5zdGFydC5saW5lLGUuc3RhcnQuY29sdW1uLHRoaXMuc3JjRmlsZSx0KSl9LGZ1bmN0aW9uQ2FsbDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHI9dGhpcy5nZW5lcmF0ZUxpc3QociksdGhpcy53cmFwKFt0LGU/Ii4iK2UrIigiOiIoIixyLCIpIl0pfSxxdW90ZWRTdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuJyInKyh0KyIiKS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvIi9nLCdcXCInKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIpLnJlcGxhY2UoL1x1MjAyOS9nLCJcXHUyMDI5IikrJyInfSxvYmplY3RMaXRlcmFsOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe3ZhciBpPXModFtyXSx0aGlzKTsidW5kZWZpbmVkIiE9PWkmJmUucHVzaChbdGhpcy5xdW90ZWRTdHJpbmcociksIjoiLGldKX12YXIgYT10aGlzLmdlbmVyYXRlTGlzdChlKTtyZXR1cm4gYS5wcmVwZW5kKCJ7IiksYS5hZGQoIn0iKSxhfSxnZW5lcmF0ZUxpc3Q6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuZW1wdHkoKSxyPTAsaT10Lmxlbmd0aDtyPGk7cisrKXImJmUuYWRkKCIsIiksZS5hZGQocyh0W3JdLHRoaXMpKTtyZXR1cm4gZX0sZ2VuZXJhdGVBcnJheTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdlbmVyYXRlTGlzdCh0KTtyZXR1cm4gZS5wcmVwZW5kKCJbIiksZS5hZGQoIl0iKSxlfX0sZVsiZGVmYXVsdCJdPWksdC5leHBvcnRzPWVbImRlZmF1bHQiXX1dKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvaGlnaGxpZ2h0LjkuMS4wLnBhY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwMGM2OAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrLmpzCkBAIC0wLDAgKzEgQEAKKyFmdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGV4cG9ydHM/ZShleHBvcnRzKTooc2VsZi5obGpzPWUoe30pLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgiaGxqcyIsW10sZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZ20sIiZhbXA7IikucmVwbGFjZSgvPC9nbSwiJmx0OyIpLnJlcGxhY2UoLz4vZ20sIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbihlLHIpe3ZhciB0PWUmJmUuZXhlYyhyKTtyZXR1cm4gdCYmMD09dC5pbmRleH1mdW5jdGlvbiBhKGUpe3JldHVybi9eKG5vLT9oaWdobGlnaHR8cGxhaW58dGV4dCkkL2kudGVzdChlKX1mdW5jdGlvbiBjKGUpe3ZhciByLHQsbixjPWUuY2xhc3NOYW1lKyIgIjtpZihjKz1lLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmNsYXNzTmFtZToiIix0PS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLmV4ZWMoYykpcmV0dXJuIEUodFsxXSk/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3IoYz1jLnNwbGl0KC9ccysvKSxyPTAsbj1jLmxlbmd0aDtuPnI7cisrKWlmKEUoY1tyXSl8fGEoY1tyXSkpcmV0dXJuIGNbcl19ZnVuY3Rpb24gaShlLHIpe3ZhciB0LG49e307Zm9yKHQgaW4gZSluW3RdPWVbdF07aWYocilmb3IodCBpbiByKW5bdF09clt0XTtyZXR1cm4gbn1mdW5jdGlvbiBvKGUpe3ZhciByPVtdO3JldHVybiBmdW5jdGlvbiBuKGUsYSl7Zm9yKHZhciBjPWUuZmlyc3RDaGlsZDtjO2M9Yy5uZXh0U2libGluZykzPT1jLm5vZGVUeXBlP2ErPWMubm9kZVZhbHVlLmxlbmd0aDoxPT1jLm5vZGVUeXBlJiYoci5wdXNoKHtldmVudDoic3RhcnQiLG9mZnNldDphLG5vZGU6Y30pLGE9bihjLGEpLHQoYykubWF0Y2goL2JyfGhyfGltZ3xpbnB1dC8pfHxyLnB1c2goe2V2ZW50OiJzdG9wIixvZmZzZXQ6YSxub2RlOmN9KSk7cmV0dXJuIGF9KGUsMCkscn1mdW5jdGlvbiBzKGUsbixhKXtmdW5jdGlvbiBjKCl7cmV0dXJuIGUubGVuZ3RoJiZuLmxlbmd0aD9lWzBdLm9mZnNldCE9blswXS5vZmZzZXQ/ZVswXS5vZmZzZXQ8blswXS5vZmZzZXQ/ZTpuOiJzdGFydCI9PW5bMF0uZXZlbnQ/ZTpuOmUubGVuZ3RoP2U6bn1mdW5jdGlvbiBpKGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIiAiK2Uubm9kZU5hbWUrJz0iJytyKGUudmFsdWUpKyciJ31sKz0iPCIrdChlKStBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLG4pLmpvaW4oIiIpKyI+In1mdW5jdGlvbiBvKGUpe2wrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gcyhlKXsoInN0YXJ0Ij09ZS5ldmVudD9pOm8pKGUubm9kZSl9Zm9yKHZhciB1PTAsbD0iIixmPVtdO2UubGVuZ3RofHxuLmxlbmd0aDspe3ZhciBiPWMoKTtpZihsKz1yKGEuc3Vic3RyKHUsYlswXS5vZmZzZXQtdSkpLHU9YlswXS5vZmZzZXQsYj09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaChvKTtkbyBzKGIuc3BsaWNlKDAsMSlbMF0pLGI9YygpO3doaWxlKGI9PWUmJmIubGVuZ3RoJiZiWzBdLm9mZnNldD09dSk7Zi5yZXZlcnNlKCkuZm9yRWFjaChpKX1lbHNlInN0YXJ0Ij09YlswXS5ldmVudD9mLnB1c2goYlswXS5ub2RlKTpmLnBvcCgpLHMoYi5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIGwrcihhLnN1YnN0cih1KSl9ZnVuY3Rpb24gdShlKXtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLnNvdXJjZXx8ZX1mdW5jdGlvbiB0KHQsbil7cmV0dXJuIG5ldyBSZWdFeHAocih0KSwibSIrKGUuY0k/ImkiOiIiKSsobj8iZyI6IiIpKX1mdW5jdGlvbiBuKGEsYyl7aWYoIWEuY29tcGlsZWQpe2lmKGEuY29tcGlsZWQ9ITAsYS5rPWEua3x8YS5iSyxhLmspe3ZhciBvPXt9LHM9ZnVuY3Rpb24ocix0KXtlLmNJJiYodD10LnRvTG93ZXJDYXNlKCkpLHQuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuc3BsaXQoInwiKTtvW3RbMF1dPVtyLHRbMV0/TnVtYmVyKHRbMV0pOjFdfSl9OyJzdHJpbmciPT10eXBlb2YgYS5rP3MoImtleXdvcmQiLGEuayk6T2JqZWN0LmtleXMoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3MoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1xiXHcrXGIvLCEwKSxjJiYoYS5iSyYmKGEuYj0iXFxiKCIrYS5iSy5zcGxpdCgiICIpLmpvaW4oInwiKSsiKVxcYiIpLGEuYnx8KGEuYj0vXEJ8XGIvKSxhLmJSPXQoYS5iKSxhLmV8fGEuZVd8fChhLmU9L1xCfFxiLyksYS5lJiYoYS5lUj10KGEuZSkpLGEudEU9cihhLmUpfHwiIixhLmVXJiZjLnRFJiYoYS50RSs9KGEuZT8ifCI6IiIpK2MudEUpKSxhLmkmJihhLmlSPXQoYS5pKSksdm9pZCAwPT09YS5yJiYoYS5yPTEpLGEuY3x8KGEuYz1bXSk7dmFyIHU9W107YS5jLmZvckVhY2goZnVuY3Rpb24oZSl7ZS52P2Uudi5mb3JFYWNoKGZ1bmN0aW9uKHIpe3UucHVzaChpKGUscikpfSk6dS5wdXNoKCJzZWxmIj09ZT9hOmUpfSksYS5jPXUsYS5jLmZvckVhY2goZnVuY3Rpb24oZSl7bihlLGEpfSksYS5zdGFydHMmJm4oYS5zdGFydHMsYyk7dmFyIGw9YS5jLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5iSz8iXFwuPygiK2UuYisiKVxcLj8iOmUuYn0pLmNvbmNhdChbYS50RSxhLmldKS5tYXAocikuZmlsdGVyKEJvb2xlYW4pO2EudD1sLmxlbmd0aD90KGwuam9pbigifCIpLCEwKTp7ZXhlYzpmdW5jdGlvbigpe3JldHVybiBudWxsfX19fW4oZSl9ZnVuY3Rpb24gbChlLHQsYSxjKXtmdW5jdGlvbiBpKGUscil7Zm9yKHZhciB0PTA7dDxyLmMubGVuZ3RoO3QrKylpZihuKHIuY1t0XS5iUixlKSlyZXR1cm4gci5jW3RdfWZ1bmN0aW9uIG8oZSxyKXtpZihuKGUuZVIscikpe2Zvcig7ZS5lbmRzUGFyZW50JiZlLnBhcmVudDspZT1lLnBhcmVudDtyZXR1cm4gZX1yZXR1cm4gZS5lVz9vKGUucGFyZW50LHIpOnZvaWQgMH1mdW5jdGlvbiBzKGUscil7cmV0dXJuIWEmJm4oci5pUixlKX1mdW5jdGlvbiBiKGUscil7dmFyIHQ9Ti5jST9yWzBdLnRvTG93ZXJDYXNlKCk6clswXTtyZXR1cm4gZS5rLmhhc093blByb3BlcnR5KHQpJiZlLmtbdF19ZnVuY3Rpb24gZyhlLHIsdCxuKXt2YXIgYT1uPyIiOncuY2xhc3NQcmVmaXgsYz0nPHNwYW4gY2xhc3M9IicrYSxpPXQ/IiI6Ijwvc3Bhbj4iO3JldHVybiBjKz1lKyciPicsYytyK2l9ZnVuY3Rpb24gcCgpe2lmKCFNLmspcmV0dXJuIHIoQik7dmFyIGU9IiIsdD0wO00ubFIubGFzdEluZGV4PTA7Zm9yKHZhciBuPU0ubFIuZXhlYyhCKTtuOyl7ZSs9cihCLnN1YnN0cih0LG4uaW5kZXgtdCkpO3ZhciBhPWIoTSxuKTthPyhMKz1hWzFdLGUrPWcoYVswXSxyKG5bMF0pKSk6ZSs9cihuWzBdKSx0PU0ubFIubGFzdEluZGV4LG49TS5sUi5leGVjKEIpfXJldHVybiBlK3IoQi5zdWJzdHIodCkpfWZ1bmN0aW9uIGgoKXt2YXIgZT0ic3RyaW5nIj09dHlwZW9mIE0uc0w7aWYoZSYmIXlbTS5zTF0pcmV0dXJuIHIoQik7dmFyIHQ9ZT9sKE0uc0wsQiwhMCxSW00uc0xdKTpmKEIsTS5zTC5sZW5ndGg/TS5zTDp2b2lkIDApO3JldHVybiBNLnI+MCYmKEwrPXQuciksZSYmKFJbTS5zTF09dC50b3ApLGcodC5sYW5ndWFnZSx0LnZhbHVlLCExLCEwKX1mdW5jdGlvbiBkKCl7cmV0dXJuIHZvaWQgMCE9PU0uc0w/aCgpOnAoKX1mdW5jdGlvbiBtKGUsdCl7dmFyIG49ZS5jTj9nKGUuY04sIiIsITApOiIiO2UuckI/KHgrPW4sQj0iIik6ZS5lQj8oeCs9cih0KStuLEI9IiIpOih4Kz1uLEI9dCksTT1PYmplY3QuY3JlYXRlKGUse3BhcmVudDp7dmFsdWU6TX19KX1mdW5jdGlvbiB2KGUsdCl7aWYoQis9ZSx2b2lkIDA9PT10KXJldHVybiB4Kz1kKCksMDt2YXIgbj1pKHQsTSk7aWYobilyZXR1cm4geCs9ZCgpLG0obix0KSxuLnJCPzA6dC5sZW5ndGg7dmFyIGE9byhNLHQpO2lmKGEpe3ZhciBjPU07Yy5yRXx8Yy5lRXx8KEIrPXQpLHgrPWQoKTtkbyBNLmNOJiYoeCs9Ijwvc3Bhbj4iKSxMKz1NLnIsTT1NLnBhcmVudDt3aGlsZShNIT1hLnBhcmVudCk7cmV0dXJuIGMuZUUmJih4Kz1yKHQpKSxCPSIiLGEuc3RhcnRzJiZtKGEuc3RhcnRzLCIiKSxjLnJFPzA6dC5sZW5ndGh9aWYocyh0LE0pKXRocm93IG5ldyBFcnJvcignSWxsZWdhbCBsZXhlbWUgIicrdCsnIiBmb3IgbW9kZSAiJysoTS5jTnx8Ijx1bm5hbWVkPiIpKyciJyk7cmV0dXJuIEIrPXQsdC5sZW5ndGh8fDF9dmFyIE49RShlKTtpZighTil0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGFuZ3VhZ2U6ICInK2UrJyInKTt1KE4pO3ZhciBDLE09Y3x8TixSPXt9LHg9IiI7Zm9yKEM9TTtDIT1OO0M9Qy5wYXJlbnQpQy5jTiYmKHg9ZyhDLmNOLCIiLCEwKSt4KTt2YXIgQj0iIixMPTA7dHJ5e2Zvcih2YXIgUyxBLGs9MDtNLnQubGFzdEluZGV4PWssUz1NLnQuZXhlYyh0KSxTOylBPXYodC5zdWJzdHIoayxTLmluZGV4LWspLFNbMF0pLGs9Uy5pbmRleCtBO2Zvcih2KHQuc3Vic3RyKGspKSxDPU07Qy5wYXJlbnQ7Qz1DLnBhcmVudClDLmNOJiYoeCs9Ijwvc3Bhbj4iKTtyZXR1cm57cjpMLHZhbHVlOngsbGFuZ3VhZ2U6ZSx0b3A6TX19Y2F0Y2goSSl7aWYoLTEhPUkubWVzc2FnZS5pbmRleE9mKCJJbGxlZ2FsIikpcmV0dXJue3I6MCx2YWx1ZTpyKHQpfTt0aHJvdyBJfX1mdW5jdGlvbiBmKGUsdCl7dD10fHx3Lmxhbmd1YWdlc3x8T2JqZWN0LmtleXMoeSk7dmFyIG49e3I6MCx2YWx1ZTpyKGUpfSxhPW47cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihyKXtpZihFKHIpKXt2YXIgdD1sKHIsZSwhMSk7dC5sYW5ndWFnZT1yLHQucj5hLnImJihhPXQpLHQucj5uLnImJihhPW4sbj10KX19KSxhLmxhbmd1YWdlJiYobi5zZWNvbmRfYmVzdD1hKSxufWZ1bmN0aW9uIGIoZSl7cmV0dXJuIHcudGFiUmVwbGFjZSYmKGU9ZS5yZXBsYWNlKC9eKCg8W14+XSs+fFx0KSspL2dtLGZ1bmN0aW9uKGUscil7cmV0dXJuIHIucmVwbGFjZSgvXHQvZyx3LnRhYlJlcGxhY2UpfSkpLHcudXNlQlImJihlPWUucmVwbGFjZSgvXG4vZywiPGJyPiIpKSxlfWZ1bmN0aW9uIGcoZSxyLHQpe3ZhciBuPXI/Q1tyXTp0LGE9W2UudHJpbSgpXTtyZXR1cm4gZS5tYXRjaCgvXGJobGpzXGIvKXx8YS5wdXNoKCJobGpzIiksLTE9PT1lLmluZGV4T2YobikmJmEucHVzaChuKSxhLmpvaW4oIiAiKS50cmltKCl9ZnVuY3Rpb24gcChlKXt2YXIgcj1jKGUpO2lmKCFhKHIpKXt2YXIgdDt3LnVzZUJSPyh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLHQuaW5uZXJIVE1MPWUuaW5uZXJIVE1MLnJlcGxhY2UoL1xuL2csIiIpLnJlcGxhY2UoLzxiclsgXC9dKj4vZywiXG4iKSk6dD1lO3ZhciBuPXQudGV4dENvbnRlbnQsaT1yP2wocixuLCEwKTpmKG4pLHU9byh0KTtpZih1Lmxlbmd0aCl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iik7cC5pbm5lckhUTUw9aS52YWx1ZSxpLnZhbHVlPXModSxvKHApLG4pfWkudmFsdWU9YihpLnZhbHVlKSxlLmlubmVySFRNTD1pLnZhbHVlLGUuY2xhc3NOYW1lPWcoZS5jbGFzc05hbWUscixpLmxhbmd1YWdlKSxlLnJlc3VsdD17bGFuZ3VhZ2U6aS5sYW5ndWFnZSxyZTppLnJ9LGkuc2Vjb25kX2Jlc3QmJihlLnNlY29uZF9iZXN0PXtsYW5ndWFnZTppLnNlY29uZF9iZXN0Lmxhbmd1YWdlLHJlOmkuc2Vjb25kX2Jlc3Qucn0pfX1mdW5jdGlvbiBoKGUpe3c9aSh3LGUpfWZ1bmN0aW9uIGQoKXtpZighZC5jYWxsZWQpe2QuY2FsbGVkPSEwO3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInByZSBjb2RlIik7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLHApfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZCwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZCwhMSl9ZnVuY3Rpb24gdihyLHQpe3ZhciBuPXlbcl09dChlKTtuLmFsaWFzZXMmJm4uYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0NbZV09cn0pfWZ1bmN0aW9uIE4oKXtyZXR1cm4gT2JqZWN0LmtleXMoeSl9ZnVuY3Rpb24gRShlKXtyZXR1cm4gZT0oZXx8IiIpLnRvTG93ZXJDYXNlKCkseVtlXXx8eVtDW2VdXX12YXIgdz17Y2xhc3NQcmVmaXg6ImhsanMtIix0YWJSZXBsYWNlOm51bGwsdXNlQlI6ITEsbGFuZ3VhZ2VzOnZvaWQgMH0seT17fSxDPXt9O3JldHVybiBlLmhpZ2hsaWdodD1sLGUuaGlnaGxpZ2h0QXV0bz1mLGUuZml4TWFya3VwPWIsZS5oaWdobGlnaHRCbG9jaz1wLGUuY29uZmlndXJlPWgsZS5pbml0SGlnaGxpZ2h0aW5nPWQsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPXYsZS5saXN0TGFuZ3VhZ2VzPU4sZS5nZXRMYW5ndWFnZT1FLGUuaW5oZXJpdD1pLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk/IixlLkNOUj0iKC0/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10/XFxkKyk/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEl8SSdtfGlzbid0fGRvbid0fGRvZXNuJ3R8d29uJ3R8YnV0fGp1c3R8c2hvdWxkfHByZXR0eXxzaW1wbHl8ZW5vdWdofGdvbm5hfGdvaW5nfHd0Znxzb3xzdWNofHdpbGx8eW91fHlvdXJ8bGlrZSlcYi99LGUuQz1mdW5jdGlvbihyLHQsbil7dmFyIGE9ZS5pbmhlcml0KHtjTjoiY29tbWVudCIsYjpyLGU6dCxjOltdfSxufHx7fSk7cmV0dXJuIGEuYy5wdXNoKGUuUFdNKSxhLmMucHVzaCh7Y046ImRvY3RhZyIsYjoiKD86VE9ET3xGSVhNRXxOT1RFfEJVR3xYWFgpOiIscjowfSksYX0sZS5DTENNPWUuQygiLy8iLCIkIiksZS5DQkNNPWUuQygiL1xcKiIsIlxcKi8iKSxlLkhDTT1lLkMoIiMiLCIkIiksZS5OTT17Y046Im51bWJlciIsYjplLk5SLHI6MH0sZS5DTk09e2NOOiJudW1iZXIiLGI6ZS5DTlIscjowfSxlLkJOTT17Y046Im51bWJlciIsYjplLkJOUixyOjB9LGUuQ1NTTk09e2NOOiJudW1iZXIiLGI6ZS5OUisiKCV8ZW18ZXh8Y2h8cmVtfHZ3fHZofHZtaW58dm1heHxjbXxtbXxpbnxwdHxwY3xweHxkZWd8Z3JhZHxyYWR8dHVybnxzfG1zfEh6fGtIenxkcGl8ZHBjbXxkcHB4KT8iLHI6MH0sZS5STT17Y046InJlZ2V4cCIsYjovXC8vLGU6L1wvW2dpbXV5XSovLGk6L1xuLyxjOltlLkJFLHtiOi9cWy8sZTovXF0vLHI6MCxjOltlLkJFXX1dfSxlLlRNPXtjTjoidGl0bGUiLGI6ZS5JUixyOjB9LGUuVVRNPXtjTjoidGl0bGUiLGI6ZS5VSVIscjowfSxlfSksaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqc29uIixmdW5jdGlvbihlKXt2YXIgcj17bGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIn0sdD1bZS5RU00sZS5DTk1dLG49e2U6IiwiLGVXOiEwLGVFOiEwLGM6dCxrOnJ9LGE9e2I6InsiLGU6In0iLGM6W3tjTjoiYXR0ciIsYjonXFxzKiInLGU6JyJcXHMqOlxccyonLGVCOiEwLGVFOiEwLGM6W2UuQkVdLGk6IlxcbiIsc3RhcnRzOm59XSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KG4pXSxpOiJcXFMifTtyZXR1cm4gdC5zcGxpY2UodC5sZW5ndGgsMCxhLGMpLHtjOnQsazpyLGk6IlxcUyJ9fSksaGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ4bWwiLGZ1bmN0aW9uKGUpe3ZhciByPSJbQS1aYS16MC05XFwuXzotXSsiLHQ9e2I6LzxcPyhwaHApPyg/IVx3KS8sZTovXD8+LyxzTDoicGhwIn0sbj17ZVc6ITAsaTovPC8scjowLGM6W3Qse2NOOiJhdHRyIixiOnIscjowfSx7YjoiPSIscjowLGM6W3tjTjoic3RyaW5nIixjOlt0XSx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHNcLz5dKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxlLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2NOOiJ0YWciLGI6IjxzdHlsZSg/PVxcc3w+fCQpIixlOiI+IixrOntuYW1lOiJzdHlsZSJ9LGM6W25dLHN0YXJ0czp7ZToiPC9zdHlsZT4iLHJFOiEwLHNMOlsiY3NzIiwieG1sIl19fSx7Y046InRhZyIsYjoiPHNjcmlwdCg/PVxcc3w+fCQpIixlOiI+IixrOntuYW1lOiJzY3JpcHQifSxjOltuXSxzdGFydHM6e2U6Ijwvc2NyaXB0PiIsckU6ITAsc0w6WyJhY3Rpb25zY3JpcHQiLCJqYXZhc2NyaXB0IiwiaGFuZGxlYmFycyIsInhtbCJdfX0sdCx7Y046Im1ldGEiLGI6LzxcP1x3Ky8sZTovXD8+LyxyOjEwfSx7Y046InRhZyIsYjoiPC8/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSxuXX1dfX0pLGhsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7cmV0dXJue2FsaWFzZXM6WyJqcyJdLGs6e2tleXdvcmQ6ImluIG9mIGlmIGZvciB3aGlsZSBmaW5hbGx5IHZhciBuZXcgZnVuY3Rpb24gZG8gcmV0dXJuIHZvaWQgZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHdpdGggdGhyb3cgY2FzZSBkZWZhdWx0IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGxldCB5aWVsZCBjb25zdCBleHBvcnQgc3VwZXIgZGVidWdnZXIgYXMgYXN5bmMgYXdhaXQgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYzpbe2NOOiJtZXRhIixyOjEwLGI6L15ccypbJyJddXNlIChzdHJpY3R8YXNtKVsnIl0vfSx7Y046Im1ldGEiLGI6L14jIS8sZTovJC99LGUuQVNNLGUuUVNNLHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLHtjTjoic3Vic3QiLGI6IlxcJFxceyIsZToiXFx9In1dfSxlLkNMQ00sZS5DQkNNLHtjTjoibnVtYmVyIix2Olt7YjoiXFxiKDBbYkJdWzAxXSspIn0se2I6IlxcYigwW29PXVswLTddKykifSx7YjplLkNOUn1dLHI6MH0se2I6IigiK2UuUlNSKyJ8XFxiKGNhc2V8cmV0dXJufHRocm93KVxcYilcXHMqIixrOiJyZXR1cm4gdGhyb3cgY2FzZSIsYzpbZS5DTENNLGUuQ0JDTSxlLlJNLHtiOi88LyxlOi8+XHMqWyk7XF1dLyxyOjAsc0w6InhtbCJ9XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOi9bQS1aYS16JF9dWzAtOUEtWmEteiRfXSovfSkse2NOOiJwYXJhbXMiLGI6L1woLyxlOi9cKS8sZUI6ITAsZUU6ITAsYzpbZS5DTENNLGUuQ0JDTV19XSxpOi9cW3wlL30se2I6L1wkWyguXS99LHtiOiJcXC4iK2UuSVIscjowfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6L1t7Oz1dLyxlRTohMCxpOi9bOiJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIn0sZS5VVE1dfSx7Yks6ImNvbnN0cnVjdG9yIixlOi9cey8sZUU6ITB9XSxpOi8jKD8hISkvfX0pLGhsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3NzIixmdW5jdGlvbihlKXt2YXIgcj0iW2EtekEtWi1dW2EtekEtWjAtOV8tXSoiLHQ9e2I6L1tBLVpcX1wuXC1dK1xzKjovLHJCOiEwLGU6IjsiLGVXOiEwLGM6W3tjTjoiYXR0cmlidXRlIixiOi9cUy8sZToiOiIsZUU6ITAsc3RhcnRzOntlVzohMCxlRTohMCxjOlt7YjovW1x3LV0rXHMqXCgvLHJCOiEwLGM6W3tjTjoiYnVpbHRfaW4iLGI6L1tcdy1dKy99XX0sZS5DU1NOTSxlLlFTTSxlLkFTTSxlLkNCQ00se2NOOiJudW1iZXIiLGI6IiNbMC05QS1GYS1mXSsifSx7Y046Im1ldGEiLGI6IiFpbXBvcnRhbnQifV19fV19O3JldHVybntjSTohMCxpOi9bPVwvfCdcJF0vLGM6W2UuQ0JDTSx7Y046InNlbGVjdG9yLWlkIixiOi8jW0EtWmEtejAtOV8tXSsvfSx7Y046InNlbGVjdG9yLWNsYXNzIixiOi9cLltBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1hdHRyIixiOi9cWy8sZTovXF0vLGk6IiQifSx7Y046InNlbGVjdG9yLXBzZXVkbyIsYjovOig6KT9bYS16QS1aMC05XF9cLVwrXChcKSInLl0rL30se2I6IkAoZm9udC1mYWNlfHBhZ2UpIixsOiJbYS16LV0rIixrOiJmb250LWZhY2UgcGFnZSJ9LHtiOiJAIixlOiJbeztdIixjOlt7Y046ImtleXdvcmQiLGI6L1xTKy99LHtiOi9ccy8sZVc6ITAsZUU6ITAscjowLGM6W2UuQVNNLGUuUVNNLGUuQ1NTTk1dfV19LHtjTjoic2VsZWN0b3ItdGFnIixiOnIscjowfSx7YjoieyIsZToifSIsaTovXFMvLGM6W2UuQ0JDTSx0XX1dfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrX2V4dGVuZGVkLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvaGlnaGxpZ2h0LjkuMS4wLnBhY2tfZXh0ZW5kZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyYTIyNAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2hpZ2hsaWdodC45LjEuMC5wYWNrX2V4dGVuZGVkLmpzCkBAIC0wLDAgKzEgQEAKKyJ1c2Ugc3RyaWN0IjshZnVuY3Rpb24oKXt2YXIgaCxsO2g9aGxqcy5jb25maWd1cmUsaGxqcy5jb25maWd1cmU9ZnVuY3Rpb24obCl7dmFyIGk9bC5oaWdobGlnaHRTaXplVGhyZXNob2xkO2hsanMuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZD1pPT09K2k/aTpudWxsLGguY2FsbCh0aGlzLGwpfSxsPWhsanMuaGlnaGxpZ2h0QmxvY2ssaGxqcy5oaWdobGlnaHRCbG9jaz1mdW5jdGlvbihoKXt2YXIgaT1oLmlubmVySFRNTCxnPWhsanMuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZDsobnVsbD09Z3x8Zz5pLmxlbmd0aCkmJmwuY2FsbChobGpzLGgpfX0oKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qcXVlcnktMS44LjAubWluLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanF1ZXJ5LTEuOC4wLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmUyYjdmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanF1ZXJ5LTEuOC4wLm1pbi5qcwpAQCAtMCwwICsxLDMgQEAKKyFmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFyIHQ9aGVbZV09e307cmV0dXJuIEsuZWFjaChlLnNwbGl0KHRlKSxmdW5jdGlvbihlLG4pe3Rbbl09ITB9KSx0fWZ1bmN0aW9uIHIoZSxuLHIpe2lmKHI9PT10JiYxPT09ZS5ub2RlVHlwZSl7dmFyIGk9ImRhdGEtIituLnJlcGxhY2UobWUsIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYocj1lLmdldEF0dHJpYnV0ZShpKSwic3RyaW5nIj09dHlwZW9mIHIpe3RyeXtyPSJ0cnVlIj09PXJ8fCJmYWxzZSIhPT1yJiYoIm51bGwiPT09cj9udWxsOityKyIiPT09cj8rcjpnZS50ZXN0KHIpP0sucGFyc2VKU09OKHIpOnIpfWNhdGNoKG8pe31LLmRhdGEoZSxuLHIpfWVsc2Ugcj10fXJldHVybiByfWZ1bmN0aW9uIGkoZSl7dmFyIHQ7Zm9yKHQgaW4gZSlpZigoImRhdGEiIT09dHx8IUsuaXNFbXB0eU9iamVjdChlW3RdKSkmJiJ0b0pTT04iIT09dClyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBvKCl7cmV0dXJuITF9ZnVuY3Rpb24gYSgpe3JldHVybiEwfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIWV8fCFlLnBhcmVudE5vZGV8fDExPT09ZS5wYXJlbnROb2RlLm5vZGVUeXBlfWZ1bmN0aW9uIGwoZSx0KXtkbyBlPWVbdF07d2hpbGUoZSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0LG4pe2lmKHQ9dHx8MCxLLmlzRnVuY3Rpb24odCkpcmV0dXJuIEsuZ3JlcChlLGZ1bmN0aW9uKGUscil7dmFyIGk9ISF0LmNhbGwoZSxyLGUpO3JldHVybiBpPT09bn0pO2lmKHQubm9kZVR5cGUpcmV0dXJuIEsuZ3JlcChlLGZ1bmN0aW9uKGUscil7cmV0dXJuIGU9PT10PT09bn0pO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIHI9Sy5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSk7aWYoX2UudGVzdCh0KSlyZXR1cm4gSy5maWx0ZXIodCxyLCFuKTt0PUsuZmlsdGVyKHQscil9cmV0dXJuIEsuZ3JlcChlLGZ1bmN0aW9uKGUscil7cmV0dXJuIEsuaW5BcnJheShlLHQpPj0wPT09bn0pfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9V2Uuc3BsaXQoInwiKSxuPWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKG4uY3JlYXRlRWxlbWVudClmb3IoO3QubGVuZ3RoOyluLmNyZWF0ZUVsZW1lbnQodC5wb3AoKSk7cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQpe3JldHVybiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdfHxlLmFwcGVuZENoaWxkKGUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpKX1mdW5jdGlvbiBwKGUsdCl7aWYoMT09PXQubm9kZVR5cGUmJksuaGFzRGF0YShlKSl7dmFyIG4scixpLG89Sy5fZGF0YShlKSxhPUsuX2RhdGEodCxvKSxzPW8uZXZlbnRzO2lmKHMpe2RlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fTtmb3IobiBpbiBzKWZvcihyPTAsaT1zW25dLmxlbmd0aDtyPGk7cisrKUsuZXZlbnQuYWRkKHQsbixzW25dW3JdKX1hLmRhdGEmJihhLmRhdGE9Sy5leHRlbmQoe30sYS5kYXRhKSl9fWZ1bmN0aW9uIGQoZSx0KXt2YXIgbjsxPT09dC5ub2RlVHlwZSYmKHQuY2xlYXJBdHRyaWJ1dGVzJiZ0LmNsZWFyQXR0cmlidXRlcygpLHQubWVyZ2VBdHRyaWJ1dGVzJiZ0Lm1lcmdlQXR0cmlidXRlcyhlKSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwib2JqZWN0Ij09PW4/KHQucGFyZW50Tm9kZSYmKHQub3V0ZXJIVE1MPWUub3V0ZXJIVE1MKSxLLnN1cHBvcnQuaHRtbDVDbG9uZSYmZS5pbm5lckhUTUwmJiFLLnRyaW0odC5pbm5lckhUTUwpJiYodC5pbm5lckhUTUw9ZS5pbm5lckhUTUwpKToiaW5wdXQiPT09biYmVmUudGVzdChlLnR5cGUpPyh0LmRlZmF1bHRDaGVja2VkPXQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZSE9PWUudmFsdWUmJih0LnZhbHVlPWUudmFsdWUpKToib3B0aW9uIj09PW4/dC5zZWxlY3RlZD1lLmRlZmF1bHRTZWxlY3RlZDoiaW5wdXQiPT09bnx8InRleHRhcmVhIj09PW4/dC5kZWZhdWx0VmFsdWU9ZS5kZWZhdWx0VmFsdWU6InNjcmlwdCI9PT1uJiZ0LnRleHQhPT1lLnRleHQmJih0LnRleHQ9ZS50ZXh0KSx0LnJlbW92ZUF0dHJpYnV0ZShLLmV4cGFuZG8pKX1mdW5jdGlvbiBoKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gZyhlKXtWZS50ZXN0KGUudHlwZSkmJihlLmRlZmF1bHRDaGVja2VkPWUuY2hlY2tlZCl9ZnVuY3Rpb24gbShlLHQpe2lmKHQgaW4gZSlyZXR1cm4gdDtmb3IodmFyIG49dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLHI9dCxpPW10Lmxlbmd0aDtpLS07KWlmKHQ9bXRbaV0rbix0IGluIGUpcmV0dXJuIHQ7cmV0dXJuIHJ9ZnVuY3Rpb24geShlLHQpe3JldHVybiBlPXR8fGUsIm5vbmUiPT09Sy5jc3MoZSwiZGlzcGxheSIpfHwhSy5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl9ZnVuY3Rpb24gdihlLHQpe2Zvcih2YXIgbixyLGk9W10sbz0wLGE9ZS5sZW5ndGg7bzxhO28rKyluPWVbb10sbi5zdHlsZSYmKGlbb109Sy5fZGF0YShuLCJvbGRkaXNwbGF5IiksdD8oIWlbb10mJiJub25lIj09PW4uc3R5bGUuZGlzcGxheSYmKG4uc3R5bGUuZGlzcGxheT0iIiksIiI9PT1uLnN0eWxlLmRpc3BsYXkmJnkobikmJihpW29dPUsuX2RhdGEobiwib2xkZGlzcGxheSIsVChuLm5vZGVOYW1lKSkpKToocj1udChuLCJkaXNwbGF5IiksIWlbb10mJiJub25lIiE9PXImJksuX2RhdGEobiwib2xkZGlzcGxheSIscikpKTtmb3Iobz0wO288YTtvKyspbj1lW29dLG4uc3R5bGUmJih0JiYibm9uZSIhPT1uLnN0eWxlLmRpc3BsYXkmJiIiIT09bi5zdHlsZS5kaXNwbGF5fHwobi5zdHlsZS5kaXNwbGF5PXQ/aVtvXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGV9ZnVuY3Rpb24gYihlLHQsbil7dmFyIHI9dXQuZXhlYyh0KTtyZXR1cm4gcj9NYXRoLm1heCgwLHJbMV0tKG58fDApKSsoclsyXXx8InB4Iik6dH1mdW5jdGlvbiB4KGUsdCxuLHIpe2Zvcih2YXIgaT1uPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT10PzE6MCxvPTA7aTw0O2krPTIpIm1hcmdpbiI9PT1uJiYobys9Sy5jc3MoZSxuK2d0W2ldLCEwKSkscj8oImNvbnRlbnQiPT09biYmKG8tPXBhcnNlRmxvYXQobnQoZSwicGFkZGluZyIrZ3RbaV0pKXx8MCksIm1hcmdpbiIhPT1uJiYoby09cGFyc2VGbG9hdChudChlLCJib3JkZXIiK2d0W2ldKyJXaWR0aCIpKXx8MCkpOihvKz1wYXJzZUZsb2F0KG50KGUsInBhZGRpbmciK2d0W2ldKSl8fDAsInBhZGRpbmciIT09biYmKG8rPXBhcnNlRmxvYXQobnQoZSwiYm9yZGVyIitndFtpXSsiV2lkdGgiKSl8fDApKTtyZXR1cm4gb31mdW5jdGlvbiB3KGUsdCxuKXt2YXIgcj0id2lkdGgiPT09dD9lLm9mZnNldFdpZHRoOmUub2Zmc2V0SGVpZ2h0LGk9ITAsbz1LLnN1cHBvcnQuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1LLmNzcyhlLCJib3hTaXppbmciKTtpZihyPD0wKXtpZihyPW50KGUsdCksKHI8MHx8bnVsbD09cikmJihyPWUuc3R5bGVbdF0pLGN0LnRlc3QocikpcmV0dXJuIHI7aT1vJiYoSy5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlfHxyPT09ZS5zdHlsZVt0XSkscj1wYXJzZUZsb2F0KHIpfHwwfXJldHVybiByK3goZSx0LG58fChvPyJib3JkZXIiOiJjb250ZW50IiksaSkrInB4In1mdW5jdGlvbiBUKGUpe2lmKHB0W2VdKXJldHVybiBwdFtlXTt2YXIgdD1LKCI8IitlKyI+IikuYXBwZW5kVG8oUi5ib2R5KSxuPXQuY3NzKCJkaXNwbGF5Iik7cmV0dXJuIHQucmVtb3ZlKCksIm5vbmUiIT09biYmIiIhPT1ufHwocnQ9Ui5ib2R5LmFwcGVuZENoaWxkKHJ0fHxLLmV4dGVuZChSLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLHtmcmFtZUJvcmRlcjowLHdpZHRoOjAsaGVpZ2h0OjB9KSksaXQmJnJ0LmNyZWF0ZUVsZW1lbnR8fChpdD0ocnQuY29udGVudFdpbmRvd3x8cnQuY29udGVudERvY3VtZW50KS5kb2N1bWVudCxpdC53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+IiksaXQuY2xvc2UoKSksdD1pdC5ib2R5LmFwcGVuZENoaWxkKGl0LmNyZWF0ZUVsZW1lbnQoZSkpLG49bnQodCwiZGlzcGxheSIpLFIuYm9keS5yZW1vdmVDaGlsZChydCkpLHB0W2VdPW4sbn1mdW5jdGlvbiBOKGUsdCxuLHIpe3ZhciBpO2lmKEsuaXNBcnJheSh0KSlLLmVhY2godCxmdW5jdGlvbih0LGkpe258fGJ0LnRlc3QoZSk/cihlLGkpOk4oZSsiWyIrKCJvYmplY3QiPT10eXBlb2YgaT90OiIiKSsiXSIsaSxuLHIpfSk7ZWxzZSBpZihufHwib2JqZWN0IiE9PUsudHlwZSh0KSlyKGUsdCk7ZWxzZSBmb3IoaSBpbiB0KU4oZSsiWyIraSsiXSIsdFtpXSxuLHIpfWZ1bmN0aW9uIEMoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7InN0cmluZyIhPXR5cGVvZiB0JiYobj10LHQ9IioiKTt2YXIgcixpLG8sYT10LnRvTG93ZXJDYXNlKCkuc3BsaXQodGUpLHM9MCxsPWEubGVuZ3RoO2lmKEsuaXNGdW5jdGlvbihuKSlmb3IoO3M8bDtzKyspcj1hW3NdLG89L15cKy8udGVzdChyKSxvJiYocj1yLnN1YnN0cigxKXx8IioiKSxpPWVbcl09ZVtyXXx8W10saVtvPyJ1bnNoaWZ0IjoicHVzaCJdKG4pfX1mdW5jdGlvbiBFKGUsbixyLGksbyxhKXtvPW98fG4uZGF0YVR5cGVzWzBdLGE9YXx8e30sYVtvXT0hMDtmb3IodmFyIHMsbD1lW29dLHU9MCxjPWw/bC5sZW5ndGg6MCxmPWU9PT1PdDt1PGMmJihmfHwhcyk7dSsrKXM9bFt1XShuLHIsaSksInN0cmluZyI9PXR5cGVvZiBzJiYoIWZ8fGFbc10/cz10OihuLmRhdGFUeXBlcy51bnNoaWZ0KHMpLHM9RShlLG4scixpLHMsYSkpKTtyZXR1cm4oZnx8IXMpJiYhYVsiKiJdJiYocz1FKGUsbixyLGksIioiLGEpKSxzfWZ1bmN0aW9uIGsoZSxuKXt2YXIgcixpLG89Sy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihyIGluIG4pbltyXSE9PXQmJigob1tyXT9lOml8fChpPXt9KSlbcl09bltyXSk7aSYmSy5leHRlbmQoITAsZSxpKX1mdW5jdGlvbiBTKGUsbixyKXt2YXIgaSxvLGEscyxsPWUuY29udGVudHMsdT1lLmRhdGFUeXBlcyxjPWUucmVzcG9uc2VGaWVsZHM7Zm9yKG8gaW4gYylvIGluIHImJihuW2Nbb11dPXJbb10pO2Zvcig7IioiPT09dVswXTspdS5zaGlmdCgpLGk9PT10JiYoaT1lLm1pbWVUeXBlfHxuLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaSlmb3IobyBpbiBsKWlmKGxbb10mJmxbb10udGVzdChpKSl7dS51bnNoaWZ0KG8pO2JyZWFrfWlmKHVbMF1pbiByKWE9dVswXTtlbHNle2ZvcihvIGluIHIpe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbbysiICIrdVswXV0pe2E9bzticmVha31zfHwocz1vKX1hPWF8fHN9aWYoYSlyZXR1cm4gYSE9PXVbMF0mJnUudW5zaGlmdChhKSxyW2FdfWZ1bmN0aW9uIEEoZSx0KXt2YXIgbixyLGksbyxhPWUuZGF0YVR5cGVzLnNsaWNlKCkscz1hWzBdLGw9e30sdT0wO2lmKGUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkpLGFbMV0pZm9yKG4gaW4gZS5jb252ZXJ0ZXJzKWxbbi50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbbl07Zm9yKDtpPWFbKyt1XTspaWYoIioiIT09aSl7aWYoIioiIT09cyYmcyE9PWkpe2lmKG49bFtzKyIgIitpXXx8bFsiKiAiK2ldLCFuKWZvcihyIGluIGwpaWYobz1yLnNwbGl0KCIgIiksb1sxXT09PWkmJihuPWxbcysiICIrb1swXV18fGxbIiogIitvWzBdXSkpe249PT0hMD9uPWxbcl06bFtyXSE9PSEwJiYoaT1vWzBdLGEuc3BsaWNlKHUtLSwwLGkpKTticmVha31pZihuIT09ITApaWYobiYmZVsidGhyb3dzIl0pdD1uKHQpO2Vsc2UgdHJ5e3Q9bih0KX1jYXRjaChjKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjpuP2M6Ik5vIGNvbnZlcnNpb24gZnJvbSAiK3MrIiB0byAiK2l9fX1zPWl9cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fWZ1bmN0aW9uIGooKXt0cnl7cmV0dXJuIG5ldyBlLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKHQpe319ZnVuY3Rpb24gRCgpe3RyeXtyZXR1cm4gbmV3IGUuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaCh0KXt9fWZ1bmN0aW9uIEwoKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1V0PXR9LDApLFV0PUsubm93KCl9ZnVuY3Rpb24gSChlLHQpe0suZWFjaCh0LGZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPShLdFt0XXx8W10pLmNvbmNhdChLdFsiKiJdKSxpPTAsbz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV0uY2FsbChlLHQsbikpcmV0dXJufSl9ZnVuY3Rpb24gRihlLHQsbil7dmFyIHIsaT0wLG89UXQubGVuZ3RoLGE9Sy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBzLmVsZW19KSxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVV0fHxMKCksbj1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tdCkscj0xLShuL2wuZHVyYXRpb258fDApLGk9MCxvPWwudHdlZW5zLmxlbmd0aDtpPG87aSsrKWwudHdlZW5zW2ldLnJ1bihyKTtyZXR1cm4gYS5ub3RpZnlXaXRoKGUsW2wscixuXSkscjwxJiZvP246KGEucmVzb2x2ZVdpdGgoZSxbbF0pLCExKX0sbD1hLnByb21pc2Uoe2VsZW06ZSxwcm9wczpLLmV4dGVuZCh7fSx0KSxvcHRzOksuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9fSxuKSxvcmlnaW5hbFByb3BlcnRpZXM6dCxvcmlnaW5hbE9wdGlvbnM6bixzdGFydFRpbWU6VXR8fEwoKSxkdXJhdGlvbjpuLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbih0LG4scil7dmFyIGk9Sy5Ud2VlbihlLGwub3B0cyx0LG4sbC5vcHRzLnNwZWNpYWxFYXNpbmdbdF18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKGkpLGl9LHN0b3A6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTAscj10P2wudHdlZW5zLmxlbmd0aDowO248cjtuKyspbC50d2VlbnNbbl0ucnVuKDEpO3JldHVybiB0P2EucmVzb2x2ZVdpdGgoZSxbbCx0XSk6YS5yZWplY3RXaXRoKGUsW2wsdF0pLHRoaXN9fSksdT1sLnByb3BzO2ZvcihNKHUsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO2k8bztpKyspaWYocj1RdFtpXS5jYWxsKGwsZSx1LGwub3B0cykpcmV0dXJuIHI7cmV0dXJuIEgobCx1KSxLLmlzRnVuY3Rpb24obC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwoZSxsKSxLLmZ4LnRpbWVyKEsuZXh0ZW5kKHMse2FuaW06bCxxdWV1ZTpsLm9wdHMucXVldWUsZWxlbTplfSkpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpfWZ1bmN0aW9uIE0oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYocj1LLmNhbWVsQ2FzZShuKSxpPXRbcl0sbz1lW25dLEsuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLGE9Sy5jc3NIb29rc1tyXSxhJiYiZXhwYW5kImluIGEpe289YS5leHBhbmQobyksZGVsZXRlIGVbcl07Zm9yKG4gaW4gbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKX1lbHNlIHRbcl09aX1mdW5jdGlvbiBPKGUsdCxuKXt2YXIgcixpLG8sYSxzLGwsdSxjLGY9dGhpcyxwPWUuc3R5bGUsZD17fSxoPVtdLGc9ZS5ub2RlVHlwZSYmeShlKTtuLnF1ZXVlfHwodT1LLl9xdWV1ZUhvb2tzKGUsImZ4IiksbnVsbD09dS51bnF1ZXVlZCYmKHUudW5xdWV1ZWQ9MCxjPXUuZW1wdHkuZmlyZSx1LmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXt1LnVucXVldWVkfHxjKCl9KSx1LnVucXVldWVkKyssZi5hbHdheXMoZnVuY3Rpb24oKXtmLmFsd2F5cyhmdW5jdGlvbigpe3UudW5xdWV1ZWQtLSxLLnF1ZXVlKGUsImZ4IikubGVuZ3RofHx1LmVtcHR5LmZpcmUoKX0pfSkpLDE9PT1lLm5vZGVUeXBlJiYoImhlaWdodCJpbiB0fHwid2lkdGgiaW4gdCkmJihuLm92ZXJmbG93PVtwLm92ZXJmbG93LHAub3ZlcmZsb3dYLHAub3ZlcmZsb3dZXSwiaW5saW5lIj09PUsuY3NzKGUsImRpc3BsYXkiKSYmIm5vbmUiPT09Sy5jc3MoZSwiZmxvYXQiKSYmKEsuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0JiYiaW5saW5lIiE9PVQoZS5ub2RlTmFtZSk/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksbi5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsSy5zdXBwb3J0LnNocmlua1dyYXBCbG9ja3N8fGYuZG9uZShmdW5jdGlvbigpe3Aub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxwLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLHAub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSk7Zm9yKHIgaW4gdClpZihvPXRbcl0sSnQuZXhlYyhvKSl7aWYoZGVsZXRlIHRbcl0sbz09PShnPyJoaWRlIjoic2hvdyIpKWNvbnRpbnVlO2gucHVzaChyKX1pZihhPWgubGVuZ3RoKWZvcihzPUsuX2RhdGEoZSwiZnhzaG93Iil8fEsuX2RhdGEoZSwiZnhzaG93Iix7fSksZz9LKGUpLnNob3coKTpmLmRvbmUoZnVuY3Rpb24oKXtLKGUpLmhpZGUoKX0pLGYuZG9uZShmdW5jdGlvbigpe3ZhciB0O0sucmVtb3ZlRGF0YShlLCJmeHNob3ciLCEwKTtmb3IodCBpbiBkKUsuc3R5bGUoZSx0LGRbdF0pfSkscj0wO3I8YTtyKyspaT1oW3JdLGw9Zi5jcmVhdGVUd2VlbihpLGc/c1tpXTowKSxkW2ldPXNbaV18fEsuc3R5bGUoZSxpKSxpIGluIHN8fChzW2ldPWwuc3RhcnQsZyYmKGwuZW5kPWwuc3RhcnQsbC5zdGFydD0id2lkdGgiPT09aXx8ImhlaWdodCI9PT1pPzE6MCkpfWZ1bmN0aW9uIF8oZSx0LG4scixpKXtyZXR1cm4gbmV3IF8ucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1mdW5jdGlvbiBxKGUsdCl7Zm9yKHZhciBuLHI9e2hlaWdodDplfSxpPTA7aTw0O2krPTItdCluPWd0W2ldLHJbIm1hcmdpbiIrbl09clsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKHIub3BhY2l0eT1yLndpZHRoPWUpLHJ9ZnVuY3Rpb24gQihlKXtyZXR1cm4gSy5pc1dpbmRvdyhlKT9lOjk9PT1lLm5vZGVUeXBlJiYoZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRXaW5kb3cpfXZhciBXLFAsUj1lLmRvY3VtZW50LCQ9ZS5sb2NhdGlvbixJPWUubmF2aWdhdG9yLHo9ZS5qUXVlcnksWD1lLiQsVT1BcnJheS5wcm90b3R5cGUucHVzaCxZPUFycmF5LnByb3RvdHlwZS5zbGljZSxKPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLFY9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxHPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksUT1TdHJpbmcucHJvdG90eXBlLnRyaW0sSz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgSy5mbi5pbml0KGUsdCxXKX0sWj0vW1wtK10/KD86XGQqXC58KVxkKyg/OltlRV1bXC0rXT9cZCt8KS8uc291cmNlLGVlPS9cUy8sdGU9L1xzKy8sbmU9ZWUudGVzdCgiwqAiKT8vXltcc1x4QTBdK3xbXHNceEEwXSskL2c6L15ccyt8XHMrJC9nLHJlPS9eKD86W14jPF0qKDxbXHdcV10rPilbXj5dKiR8IyhbXHdcLV0qKSQpLyxpZT0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLG9lPS9eW1xdLDp7fVxzXSokLyxhZT0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHNlPS9cXCg/OlsiXFxcL2JmbnJ0XXx1W1xkYS1mQS1GXXs0fSkvZyxsZT0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZFxkKlwufClcZCsoPzpbZUVdW1wtK10/XGQrfCkvZyx1ZT0vXi1tcy0vLGNlPS8tKFtcZGEtel0pL2dpLGZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrIiIpLnRvVXBwZXJDYXNlKCl9LHBlPWZ1bmN0aW9uKCl7Ui5hZGRFdmVudExpc3RlbmVyPyhSLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHBlLCExKSxLLnJlYWR5KCkpOiJjb21wbGV0ZSI9PT1SLnJlYWR5U3RhdGUmJihSLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHBlKSxLLnJlYWR5KCkpfSxkZT17fTtLLmZuPUsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLLGluaXQ6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG8sYTtpZighZSlyZXR1cm4gdGhpcztpZihlLm5vZGVUeXBlKXJldHVybiB0aGlzLmNvbnRleHQ9dGhpc1swXT1lLHRoaXMubGVuZ3RoPTEsdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGk9IjwiPT09ZS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiZlLmxlbmd0aD49Mz9bbnVsbCxlLG51bGxdOnJlLmV4ZWMoZSksaSYmKGlbMV18fCFuKSl7aWYoaVsxXSlyZXR1cm4gbj1uIGluc3RhbmNlb2YgSz9uWzBdOm4sYT1uJiZuLm5vZGVUeXBlP24ub3duZXJEb2N1bWVudHx8bjpSLGU9Sy5wYXJzZUhUTUwoaVsxXSxhLCEwKSxpZS50ZXN0KGlbMV0pJiZLLmlzUGxhaW5PYmplY3QobikmJnRoaXMuYXR0ci5jYWxsKGUsbiwhMCksSy5tZXJnZSh0aGlzLGUpO2lmKG89Ui5nZXRFbGVtZW50QnlJZChpWzJdKSxvJiZvLnBhcmVudE5vZGUpe2lmKG8uaWQhPT1pWzJdKXJldHVybiByLmZpbmQoZSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPW99cmV0dXJuIHRoaXMuY29udGV4dD1SLHRoaXMuc2VsZWN0b3I9ZSx0aGlzfXJldHVybiFufHxuLmpxdWVyeT8obnx8cikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKG4pLmZpbmQoZSl9cmV0dXJuIEsuaXNGdW5jdGlvbihlKT9yLnJlYWR5KGUpOihlLnNlbGVjdG9yIT09dCYmKHRoaXMuc2VsZWN0b3I9ZS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9ZS5jb250ZXh0KSxLLm1ha2VBcnJheShlLHRoaXMpKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjguMCIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBZLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90aGlzLnRvQXJyYXkoKTplPDA/dGhpc1t0aGlzLmxlbmd0aCtlXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUsubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGUpO3JldHVybiByLnByZXZPYmplY3Q9dGhpcyxyLmNvbnRleHQ9dGhpcy5jb250ZXh0LCJmaW5kIj09PXQ/ci5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrbjp0JiYoci5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyIuIit0KyIoIituKyIpIikscn0sZWFjaDpmdW5jdGlvbihlLHQpe3JldHVybiBLLmVhY2godGhpcyxlLHQpfSxyZWFkeTpmdW5jdGlvbihlKXtyZXR1cm4gSy5yZWFkeS5wcm9taXNlKCkuZG9uZShlKSx0aGlzfSxlcTpmdW5jdGlvbihlKXtyZXR1cm4gZT0rZSxlPT09LTE/dGhpcy5zbGljZShlKTp0aGlzLnNsaWNlKGUsZSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soWS5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixZLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEsubWFwKHRoaXMsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKHQsbix0KX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpVLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxLLmZuLmluaXQucHJvdG90eXBlPUsuZm4sSy5leHRlbmQ9Sy5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSxuLHIsaSxvLGEscz1hcmd1bWVudHNbMF18fHt9LGw9MSx1PWFyZ3VtZW50cy5sZW5ndGgsYz0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgcyYmKGM9cyxzPWFyZ3VtZW50c1sxXXx8e30sbD0yKSwib2JqZWN0IiE9dHlwZW9mIHMmJiFLLmlzRnVuY3Rpb24ocykmJihzPXt9KSx1PT09bCYmKHM9dGhpcywtLWwpO2w8dTtsKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW2xdKSlmb3IobiBpbiBlKXI9c1tuXSxpPWVbbl0scyE9PWkmJihjJiZpJiYoSy5pc1BsYWluT2JqZWN0KGkpfHwobz1LLmlzQXJyYXkoaSkpKT8obz8obz0hMSxhPXImJksuaXNBcnJheShyKT9yOltdKTphPXImJksuaXNQbGFpbk9iamVjdChyKT9yOnt9LHNbbl09Sy5leHRlbmQoYyxhLGkpKTppIT09dCYmKHNbbl09aSkpO3JldHVybiBzfSxLLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbih0KXtyZXR1cm4gZS4kPT09SyYmKGUuJD1YKSx0JiZlLmpRdWVyeT09PUsmJihlLmpRdWVyeT16KSxLfSxpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihlKXtlP0sucmVhZHlXYWl0Kys6Sy5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGUpe2lmKGU9PT0hMD8hLS1LLnJlYWR5V2FpdDohSy5pc1JlYWR5KXtpZighUi5ib2R5KXJldHVybiBzZXRUaW1lb3V0KEsucmVhZHksMSk7Sy5pc1JlYWR5PSEwLGUhPT0hMCYmLS1LLnJlYWR5V2FpdD4wfHwoUC5yZXNvbHZlV2l0aChSLFtLXSksSy5mbi50cmlnZ2VyJiZLKFIpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpKX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09PUsudHlwZShlKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iYXJyYXkiPT09Sy50eXBlKGUpfSxpc1dpbmRvdzpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09ZS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihlKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfSx0eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP1N0cmluZyhlKTpkZVtWLmNhbGwoZSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXtpZighZXx8Im9iamVjdCIhPT1LLnR5cGUoZSl8fGUubm9kZVR5cGV8fEsuaXNXaW5kb3coZSkpcmV0dXJuITE7dHJ5e2lmKGUuY29uc3RydWN0b3ImJiFHLmNhbGwoZSwiY29uc3RydWN0b3IiKSYmIUcuY2FsbChlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKG4pe3JldHVybiExfXZhciByO2ZvcihyIGluIGUpO3JldHVybiByPT09dHx8Ry5jYWxsKGUscil9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1cm4hMH0sZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxwYXJzZUhUTUw6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIGU/KCJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0wKSx0PXR8fFIsKHI9aWUuZXhlYyhlKSk/W3QuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9Sy5idWlsZEZyYWdtZW50KFtlXSx0LG4/bnVsbDpbXSksSy5tZXJnZShbXSwoci5jYWNoZWFibGU/Sy5jbG9uZShyLmZyYWdtZW50KTpyLmZyYWdtZW50KS5jaGlsZE5vZGVzKSkpOm51bGx9LHBhcnNlSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiB0Pyh0PUsudHJpbSh0KSxlLkpTT04mJmUuSlNPTi5wYXJzZT9lLkpTT04ucGFyc2UodCk6b2UudGVzdCh0LnJlcGxhY2Uoc2UsIkAiKS5yZXBsYWNlKGxlLCJdIikucmVwbGFjZShhZSwiIikpP25ldyBGdW5jdGlvbigicmV0dXJuICIrdCkoKTp2b2lkIEsuZXJyb3IoIkludmFsaWQgSlNPTjogIit0KSk6bnVsbH0scGFyc2VYTUw6ZnVuY3Rpb24obil7dmFyIHIsaTtpZighbnx8InN0cmluZyIhPXR5cGVvZiBuKXJldHVybiBudWxsO3RyeXtlLkRPTVBhcnNlcj8oaT1uZXcgRE9NUGFyc2VyLHI9aS5wYXJzZUZyb21TdHJpbmcobiwidGV4dC94bWwiKSk6KHI9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxyLmFzeW5jPSJmYWxzZSIsci5sb2FkWE1MKG4pKX1jYXRjaChvKXtyPXR9cmV0dXJuKCFyfHwhci5kb2N1bWVudEVsZW1lbnR8fHIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmSy5lcnJvcigiSW52YWxpZCBYTUw6ICIrbikscn0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbih0KXt0JiZlZS50ZXN0KHQpJiYoZS5leGVjU2NyaXB0fHxmdW5jdGlvbih0KXtlLmV2YWwuY2FsbChlLHQpfSkodCl9LGNhbWVsQ2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHVlLCJtcy0iKS5yZXBsYWNlKGNlLGZlKX0sbm9kZU5hbWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvPTAsYT1lLmxlbmd0aCxzPWE9PT10fHxLLmlzRnVuY3Rpb24oZSk7aWYocilpZihzKXtmb3IoaSBpbiBlKWlmKG4uYXBwbHkoZVtpXSxyKT09PSExKWJyZWFrfWVsc2UgZm9yKDtvPGEmJm4uYXBwbHkoZVtvKytdLHIpIT09ITE7KTtlbHNlIGlmKHMpe2ZvcihpIGluIGUpaWYobi5jYWxsKGVbaV0saSxlW2ldKT09PSExKWJyZWFrfWVsc2UgZm9yKDtvPGEmJm4uY2FsbChlW29dLG8sZVtvKytdKSE9PSExOyk7cmV0dXJuIGV9LHRyaW06UT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjpRLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUudG9TdHJpbmcoKS5yZXBsYWNlKG5lLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKG49Sy50eXBlKGUpLG51bGw9PWUubGVuZ3RofHwic3RyaW5nIj09PW58fCJmdW5jdGlvbiI9PT1ufHwicmVnZXhwIj09PW58fEsuaXNXaW5kb3coZSk/VS5jYWxsKHIsZSk6Sy5tZXJnZShyLGUpKSxyfSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih0KXtpZihKKXJldHVybiBKLmNhbGwodCxlLG4pO2ZvcihyPXQubGVuZ3RoLG49bj9uPDA/TWF0aC5tYXgoMCxyK24pOm46MDtuPHI7bisrKWlmKG4gaW4gdCYmdFtuXT09PWUpcmV0dXJuIG59cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGUsbil7dmFyIHI9bi5sZW5ndGgsaT1lLmxlbmd0aCxvPTA7aWYoIm51bWJlciI9PXR5cGVvZiByKWZvcig7bzxyO28rKyllW2krK109bltvXTtlbHNlIGZvcig7bltvXSE9PXQ7KWVbaSsrXT1uW28rK107cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT1bXSxvPTAsYT1lLmxlbmd0aDtmb3Iobj0hIW47bzxhO28rKylyPSEhdChlW29dLG8pLG4hPT1yJiZpLnB1c2goZVtvXSk7cmV0dXJuIGl9LG1hcDpmdW5jdGlvbihlLG4scil7dmFyIGksbyxhPVtdLHM9MCxsPWUubGVuZ3RoLHU9ZSBpbnN0YW5jZW9mIEt8fGwhPT10JiYibnVtYmVyIj09dHlwZW9mIGwmJihsPjAmJmVbMF0mJmVbbC0xXXx8MD09PWx8fEsuaXNBcnJheShlKSk7aWYodSlmb3IoO3M8bDtzKyspaT1uKGVbc10scyxyKSxudWxsIT1pJiYoYVthLmxlbmd0aF09aSk7ZWxzZSBmb3IobyBpbiBlKWk9bihlW29dLG8sciksbnVsbCE9aSYmKGFbYS5sZW5ndGhdPWkpO3JldHVybiBhLmNvbmNhdC5hcHBseShbXSxhKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGUsbil7dmFyIHIsaSxvO3JldHVybiJzdHJpbmciPT10eXBlb2YgbiYmKHI9ZVtuXSxuPWUsZT1yKSxLLmlzRnVuY3Rpb24oZSk/KGk9WS5jYWxsKGFyZ3VtZW50cywyKSxvPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobixpLmNvbmNhdChZLmNhbGwoYXJndW1lbnRzKSkpfSxvLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8by5ndWlkfHxLLmd1aWQrKyxvKTp0fSxhY2Nlc3M6ZnVuY3Rpb24oZSxuLHIsaSxvLGEscyl7dmFyIGwsdT1udWxsPT1yLGM9MCxmPWUubGVuZ3RoO2lmKHImJiJvYmplY3QiPT10eXBlb2Ygcil7Zm9yKGMgaW4gcilLLmFjY2VzcyhlLG4sYyxyW2NdLDEsYSxpKTtvPTF9ZWxzZSBpZihpIT09dCl7aWYobD1zPT09dCYmSy5pc0Z1bmN0aW9uKGkpLHUmJihsPyhsPW4sbj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChLKGUpLG4pfSk6KG4uY2FsbChlLGkpLG49bnVsbCkpLG4pZm9yKDtjPGY7YysrKW4oZVtjXSxyLGw/aS5jYWxsKGVbY10sYyxuKGVbY10scikpOmkscyk7bz0xfXJldHVybiBvP2U6dT9uLmNhbGwoZSk6Zj9uKGVbMF0scik6YX0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSksSy5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKHQpe2lmKCFQKWlmKFA9Sy5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT1SLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PVIucmVhZHlTdGF0ZSYmUi5hZGRFdmVudExpc3RlbmVyKXNldFRpbWVvdXQoSy5yZWFkeSwxKTtlbHNlIGlmKFIuYWRkRXZlbnRMaXN0ZW5lcilSLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHBlLCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEsucmVhZHksITEpO2Vsc2V7Ui5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixwZSksZS5hdHRhY2hFdmVudCgib25sb2FkIixLLnJlYWR5KTt2YXIgbj0hMTt0cnl7bj1udWxsPT1lLmZyYW1lRWxlbWVudCYmUi5kb2N1bWVudEVsZW1lbnR9Y2F0Y2gocil7fW4mJm4uZG9TY3JvbGwmJmZ1bmN0aW9uIGkoKXtpZighSy5pc1JlYWR5KXt0cnl7bi5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGUpe3JldHVybiBzZXRUaW1lb3V0KGksNTApfUsucmVhZHkoKX19KCl9cmV0dXJuIFAucHJvbWlzZSh0KX0sSy5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7ZGVbIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSksVz1LKFIpO3ZhciBoZT17fTtLLkNhbGxiYWNrcz1mdW5jdGlvbihlKXtlPSJzdHJpbmciPT10eXBlb2YgZT9oZVtlXXx8bihlKTpLLmV4dGVuZCh7fSxlKTt2YXIgcixpLG8sYSxzLGwsdT1bXSxjPSFlLm9uY2UmJltdLGY9ZnVuY3Rpb24odCl7Zm9yKHI9ZS5tZW1vcnkmJnQsaT0hMCxsPWF8fDAsYT0wLHM9dS5sZW5ndGgsbz0hMDt1JiZsPHM7bCsrKWlmKHVbbF0uYXBwbHkodFswXSx0WzFdKT09PSExJiZlLnN0b3BPbkZhbHNlKXtyPSExO2JyZWFrfW89ITEsdSYmKGM/Yy5sZW5ndGgmJmYoYy5zaGlmdCgpKTpyP3U9W106cC5kaXNhYmxlKCkpfSxwPXthZGQ6ZnVuY3Rpb24oKXtpZih1KXt2YXIgdD11Lmxlbmd0aDshZnVuY3Rpb24gbih0KXtLLmVhY2godCxmdW5jdGlvbih0LHIpeyFLLmlzRnVuY3Rpb24ocil8fGUudW5pcXVlJiZwLmhhcyhyKT9yJiZyLmxlbmd0aCYmbihyKTp1LnB1c2gocil9KX0oYXJndW1lbnRzKSxvP3M9dS5sZW5ndGg6ciYmKGE9dCxmKHIpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHUmJksuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXtmb3IodmFyIG47KG49Sy5pbkFycmF5KHQsdSxuKSk+LTE7KXUuc3BsaWNlKG4sMSksbyYmKG48PXMmJnMtLSxuPD1sJiZsLS0pfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBLLmluQXJyYXkoZSx1KT4tMX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdT1bXSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHU9Yz1yPXQsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdX0sbG9jazpmdW5jdGlvbigpe3JldHVybiBjPXQscnx8cC5kaXNhYmxlKCksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWN9LGZpcmVXaXRoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8W10sdD1bZSx0LnNsaWNlP3Quc2xpY2UoKTp0XSx1JiYoIWl8fGMpJiYobz9jLnB1c2godCk6Zih0KSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBwLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhaX19O3JldHVybiBwfSxLLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9W1sicmVzb2x2ZSIsImRvbmUiLEsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsSy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsSy5DYWxsYmFja3MoIm1lbW9yeSIpXV0sbj0icGVuZGluZyIscj17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO3JldHVybiBLLkRlZmVycmVkKGZ1bmN0aW9uKG4pe0suZWFjaCh0LGZ1bmN0aW9uKHQscil7dmFyIG89clswXSxhPWVbdF07aVtyWzFdXShLLmlzRnVuY3Rpb24oYSk/ZnVuY3Rpb24oKXt2YXIgZT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtlJiZLLmlzRnVuY3Rpb24oZS5wcm9taXNlKT9lLnByb21pc2UoKS5kb25lKG4ucmVzb2x2ZSkuZmFpbChuLnJlamVjdCkucHJvZ3Jlc3Mobi5ub3RpZnkpOm5bbysiV2l0aCJdKHRoaXM9PT1pP246dGhpcyxbZV0pfTpuW29dKX0pLGU9bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGU/Sy5leHRlbmQoZSxyKTpyfX0saT17fTtyZXR1cm4gci5waXBlPXIudGhlbixLLmVhY2godCxmdW5jdGlvbihlLG8pe3ZhciBhPW9bMl0scz1vWzNdO3Jbb1sxXV09YS5hZGQscyYmYS5hZGQoZnVuY3Rpb24oKXtuPXN9LHRbMV5lXVsyXS5kaXNhYmxlLHRbMl1bMl0ubG9jayksaVtvWzBdXT1hLmZpcmUsaVtvWzBdKyJXaXRoIl09YS5maXJlV2l0aH0pLHIucHJvbWlzZShpKSxlJiZlLmNhbGwoaSxpKSxpfSx3aGVuOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPTAsbz1ZLmNhbGwoYXJndW1lbnRzKSxhPW8ubGVuZ3RoLHM9MSE9PWF8fGUmJksuaXNGdW5jdGlvbihlLnByb21pc2UpP2E6MCxsPTE9PT1zP2U6Sy5EZWZlcnJlZCgpLHU9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiBmdW5jdGlvbihpKXtuW2VdPXRoaXMscltlXT1hcmd1bWVudHMubGVuZ3RoPjE/WS5jYWxsKGFyZ3VtZW50cyk6aSxyPT09dD9sLm5vdGlmeVdpdGgobixyKTotLXN8fGwucmVzb2x2ZVdpdGgobixyKX19O2lmKGE+MSlmb3IodD1uZXcgQXJyYXkoYSksbj1uZXcgQXJyYXkoYSkscj1uZXcgQXJyYXkoYSk7aTxhO2krKylvW2ldJiZLLmlzRnVuY3Rpb24ob1tpXS5wcm9taXNlKT9vW2ldLnByb21pc2UoKS5kb25lKHUoaSxyLG8pKS5mYWlsKGwucmVqZWN0KS5wcm9ncmVzcyh1KGksbix0KSk6LS1zO3JldHVybiBzfHxsLnJlc29sdmVXaXRoKHIsbyksbC5wcm9taXNlKCl9fSksSy5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIHQsbixyLGksbyxhLHMsbCx1LGMsZixwPVIuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYocC5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxwLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixuPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxyPXAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxyLnN0eWxlLmNzc1RleHQ9InRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41Iiwhbnx8IW4ubGVuZ3RofHwhcilyZXR1cm57fTtpPVIuY3JlYXRlRWxlbWVudCgic2VsZWN0Iiksbz1pLmFwcGVuZENoaWxkKFIuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSx0PXtsZWFkaW5nV2hpdGVzcGFjZTozPT09cC5maXJzdENoaWxkLm5vZGVUeXBlLHRib2R5OiFwLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhcC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KHIuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDoiL2EiPT09ci5nZXRBdHRyaWJ1dGUoImhyZWYiKSxvcGFjaXR5Oi9eMC41Ly50ZXN0KHIuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFyLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246Im9uIj09PWEudmFsdWUsb3B0U2VsZWN0ZWQ6by5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6InQiIT09cC5jbGFzc05hbWUsZW5jdHlwZTohIVIuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZToiPDpuYXY+PC86bmF2PiIhPT1SLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MLGJveE1vZGVsOiJDU1MxQ29tcGF0Ij09PVIuY29tcGF0TW9kZSxzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5nUmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0sYS5jaGVja2VkPSEwLHQubm9DbG9uZUNoZWNrZWQ9YS5jbG9uZU5vZGUoITApLmNoZWNrZWQsaS5kaXNhYmxlZD0hMCx0Lm9wdERpc2FibGVkPSFvLmRpc2FibGVkO3RyeXtkZWxldGUgcC50ZXN0fWNhdGNoKGQpe3QuZGVsZXRlRXhwYW5kbz0hMX1pZighcC5hZGRFdmVudExpc3RlbmVyJiZwLmF0dGFjaEV2ZW50JiZwLmZpcmVFdmVudCYmKHAuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGY9ZnVuY3Rpb24oKXt0Lm5vQ2xvbmVFdmVudD0hMX0pLHAuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSxwLmRldGFjaEV2ZW50KCJvbmNsaWNrIixmKSksYT1SLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlLGEuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGEuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHAuYXBwZW5kQ2hpbGQoYSkscz1SLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxzLmFwcGVuZENoaWxkKHAubGFzdENoaWxkKSx0LmNoZWNrQ2xvbmU9cy5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsdC5hcHBlbmRDaGVja2VkPWEuY2hlY2tlZCxzLnJlbW92ZUNoaWxkKGEpLHMuYXBwZW5kQ2hpbGQocCkscC5hdHRhY2hFdmVudClmb3IodSBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWw9Im9uIit1LGM9bCBpbiBwLGN8fChwLnNldEF0dHJpYnV0ZShsLCJyZXR1cm47IiksYz0iZnVuY3Rpb24iPT10eXBlb2YgcFtsXSksdFt1KyJCdWJibGVzIl09YztyZXR1cm4gSyhmdW5jdGlvbigpe3ZhciBuLHIsaSxvLGE9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsiLHM9Ui5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO3MmJihuPVIuY3JlYXRlRWxlbWVudCgiZGl2Iiksbi5zdHlsZS5jc3NUZXh0PSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOjFweCIscy5pbnNlcnRCZWZvcmUobixzLmZpcnN0Q2hpbGQpLHI9Ui5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLmFwcGVuZENoaWxkKHIpLHIuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixpPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksaVswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixjPTA9PT1pWzBdLm9mZnNldEhlaWdodCxpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIix0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1jJiYwPT09aVswXS5vZmZzZXRIZWlnaHQsci5pbm5lckhUTUw9IiIsci5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLHQuYm94U2l6aW5nPTQ9PT1yLm9mZnNldFdpZHRoLHQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9MSE9PXMub2Zmc2V0VG9wLGUuZ2V0Q29tcHV0ZWRTdHlsZSYmKHQucGl4ZWxQb3NpdGlvbj0iMSUiIT09KGUuZ2V0Q29tcHV0ZWRTdHlsZShyLG51bGwpfHx7fSkudG9wLHQuYm94U2l6aW5nUmVsaWFibGU9IjRweCI9PT0oZS5nZXRDb21wdXRlZFN0eWxlKHIsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoLG89Ui5jcmVhdGVFbGVtZW50KCJkaXYiKSxvLnN0eWxlLmNzc1RleHQ9ci5zdHlsZS5jc3NUZXh0PWEsby5zdHlsZS5tYXJnaW5SaWdodD1vLnN0eWxlLndpZHRoPSIwIixyLnN0eWxlLndpZHRoPSIxcHgiLHIuYXBwZW5kQ2hpbGQobyksdC5yZWxpYWJsZU1hcmdpblJpZ2h0PSFwYXJzZUZsb2F0KChlLmdldENvbXB1dGVkU3R5bGUobyxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSksInVuZGVmaW5lZCIhPXR5cGVvZiByLnN0eWxlLnpvb20mJihyLmlubmVySFRNTD0iIixyLnN0eWxlLmNzc1RleHQ9YSsid2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsdC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PTM9PT1yLm9mZnNldFdpZHRoLHIuc3R5bGUuZGlzcGxheT0iYmxvY2siLHIuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLHIuaW5uZXJIVE1MPSI8ZGl2PjwvZGl2PiIsci5maXJzdENoaWxkLnN0eWxlLndpZHRoPSI1cHgiLHQuc2hyaW5rV3JhcEJsb2Nrcz0zIT09ci5vZmZzZXRXaWR0aCxuLnN0eWxlLnpvb209MSkscy5yZW1vdmVDaGlsZChuKSxuPXI9aT1vPW51bGwpfSkscy5yZW1vdmVDaGlsZChwKSxuPXI9aT1vPWE9cz1wPW51bGwsdH0oKTt2YXIgZ2U9L14oPzpcey4qXH18XFsuKlxdKSQvLG1lPS8oW0EtWl0pL2c7Sy5leHRlbmQoe2NhY2hlOnt9LGRlbGV0ZWRJZHM6W10sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKEsuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gZT1lLm5vZGVUeXBlP0suY2FjaGVbZVtLLmV4cGFuZG9dXTplW0suZXhwYW5kb10sISFlJiYhaShlKX0sZGF0YTpmdW5jdGlvbihlLG4scixpKXtpZihLLmFjY2VwdERhdGEoZSkpe3ZhciBvLGEscz1LLmV4cGFuZG8sbD0ic3RyaW5nIj09dHlwZW9mIG4sdT1lLm5vZGVUeXBlLGM9dT9LLmNhY2hlOmUsZj11P2Vbc106ZVtzXSYmcztpZihmJiZjW2ZdJiYoaXx8Y1tmXS5kYXRhKXx8IWx8fHIhPT10KXJldHVybiBmfHwodT9lW3NdPWY9Sy5kZWxldGVkSWRzLnBvcCgpfHwrK0sudXVpZDpmPXMpLGNbZl18fChjW2ZdPXt9LHV8fChjW2ZdLnRvSlNPTj1LLm5vb3ApKSwib2JqZWN0IiE9dHlwZW9mIG4mJiJmdW5jdGlvbiIhPXR5cGVvZiBufHwoaT9jW2ZdPUsuZXh0ZW5kKGNbZl0sbik6Y1tmXS5kYXRhPUsuZXh0ZW5kKGNbZl0uZGF0YSxuKSksbz1jW2ZdLGl8fChvLmRhdGF8fChvLmRhdGE9e30pLG89by5kYXRhKSxyIT09dCYmKG9bSy5jYW1lbENhc2UobildPXIpLGw/KGE9b1tuXSxudWxsPT1hJiYoYT1vW0suY2FtZWxDYXNlKG4pXSkpOmE9byxhfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQsbil7aWYoSy5hY2NlcHREYXRhKGUpKXt2YXIgcixvLGEscz1lLm5vZGVUeXBlLGw9cz9LLmNhY2hlOmUsdT1zP2VbSy5leHBhbmRvXTpLLmV4cGFuZG87aWYobFt1XSl7aWYodCYmKHI9bj9sW3VdOmxbdV0uZGF0YSkpe0suaXNBcnJheSh0KXx8KHQgaW4gcj90PVt0XToodD1LLmNhbWVsQ2FzZSh0KSx0PXQgaW4gcj9bdF06dC5zcGxpdCgiICIpKSk7Zm9yKG89MCxhPXQubGVuZ3RoO288YTtvKyspZGVsZXRlIHJbdFtvXV07aWYoIShuP2k6Sy5pc0VtcHR5T2JqZWN0KShyKSlyZXR1cm59KG58fChkZWxldGUgbFt1XS5kYXRhLGkobFt1XSkpKSYmKHM/Sy5jbGVhbkRhdGEoW2VdLCEwKTpLLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8bCE9bC53aW5kb3c/ZGVsZXRlIGxbdV06bFt1XT1udWxsKX19fSxfZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEsuZGF0YShlLHQsbiwhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmSy5ub0RhdGFbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4hdHx8dCE9PSEwJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09dH19KSxLLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLG4pe3ZhciBpLG8sYSxzLGwsdT10aGlzWzBdLGM9MCxmPW51bGw7aWYoZT09PXQpe2lmKHRoaXMubGVuZ3RoJiYoZj1LLmRhdGEodSksMT09PXUubm9kZVR5cGUmJiFLLl9kYXRhKHUsInBhcnNlZEF0dHJzIikpKXtmb3IoYT11LmF0dHJpYnV0ZXMsbD1hLmxlbmd0aDtjPGw7YysrKXM9YVtjXS5uYW1lLDA9PT1zLmluZGV4T2YoImRhdGEtIikmJihzPUsuY2FtZWxDYXNlKHMuc3Vic3RyaW5nKDUpKSxyKHUscyxmW3NdKSk7Sy5fZGF0YSh1LCJwYXJzZWRBdHRycyIsITApfXJldHVybiBmfXJldHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVuY3Rpb24oKXtLLmRhdGEodGhpcyxlKX0pOihpPWUuc3BsaXQoIi4iLDIpLGlbMV09aVsxXT8iLiIraVsxXToiIixvPWlbMV0rIiEiLEsuYWNjZXNzKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG49PT10PyhmPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK28sW2lbMF1dKSxmPT09dCYmdSYmKGY9Sy5kYXRhKHUsZSksZj1yKHUsZSxmKSksZj09PXQmJmlbMV0/dGhpcy5kYXRhKGlbMF0pOmYpOihpWzFdPW4sdm9pZCB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1LKHRoaXMpO3QudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK28saSksSy5kYXRhKHRoaXMsZSxuKSx0LnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitvLGkpfSkpfSxudWxsLG4sYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITEpKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Sy5yZW1vdmVEYXRhKHRoaXMsZSl9KX19KSxLLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1LLl9kYXRhKGUsdCksbiYmKCFyfHxLLmlzQXJyYXkobik/cj1LLl9kYXRhKGUsdCxLLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1LLnF1ZXVlKGUsdCkscj1uLnNoaWZ0KCksaT1LLl9xdWV1ZUhvb2tzKGUsdCksbz1mdW5jdGlvbigpe0suZGVxdWV1ZShlLHQpfTsiaW5wcm9ncmVzcyI9PT1yJiYocj1uLnNoaWZ0KCkpLHImJigiZngiPT09dCYmbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGkuc3RvcCxyLmNhbGwoZSxvLGkpKSwhbi5sZW5ndGgmJmkmJmkuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihlLHQpe3ZhciBuPXQrInF1ZXVlSG9va3MiO3JldHVybiBLLl9kYXRhKGUsbil8fEsuX2RhdGEoZSxuLHtlbXB0eTpLLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtLLnJlbW92ZURhdGEoZSx0KyJxdWV1ZSIsITApLEsucmVtb3ZlRGF0YShlLG4sITApfSl9KX19KSxLLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSxuKXt2YXIgcj0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYmKG49ZSxlPSJmeCIsci0tKSxhcmd1bWVudHMubGVuZ3RoPHI/Sy5xdWV1ZSh0aGlzWzBdLGUpOm49PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9Sy5xdWV1ZSh0aGlzLGUsbik7Sy5fcXVldWVIb29rcyh0aGlzLGUpLCJmeCI9PT1lJiYiaW5wcm9ncmVzcyIhPT10WzBdJiZLLmRlcXVldWUodGhpcyxlKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtLLmRlcXVldWUodGhpcyxlKX0pfSxkZWxheTpmdW5jdGlvbihlLHQpe3JldHVybiBlPUsuZng/Sy5meC5zcGVlZHNbZV18fGU6ZSx0PXR8fCJmeCIsdGhpcy5xdWV1ZSh0LGZ1bmN0aW9uKHQsbil7dmFyIHI9c2V0VGltZW91dCh0LGUpO24uc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChyKX19KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLG4pe3ZhciByLGk9MSxvPUsuRGVmZXJyZWQoKSxhPXRoaXMscz10aGlzLmxlbmd0aCxsPWZ1bmN0aW9uKCl7LS1pfHxvLnJlc29sdmVXaXRoKGEsW2FdKX07Zm9yKCJzdHJpbmciIT10eXBlb2YgZSYmKG49ZSxlPXQpLGU9ZXx8ImZ4IjtzLS07KShyPUsuX2RhdGEoYVtzXSxlKyJxdWV1ZUhvb2tzIikpJiZyLmVtcHR5JiYoaSsrLHIuZW1wdHkuYWRkKGwpKTtyZXR1cm4gbCgpLG8ucHJvbWlzZShuKX19KTt2YXIgeWUsdmUsYmUseGU9L1tcdFxyXG5dL2csd2U9L1xyL2csVGU9L14oPzpidXR0b258aW5wdXQpJC9pLE5lPS9eKD86YnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLENlPS9eYSg/OnJlYXwpJC9pLEVlPS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLGtlPUsuc3VwcG9ydC5nZXRTZXRBdHRyaWJ1dGU7Sy5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSy5hY2Nlc3ModGhpcyxLLmF0dHIsZSx0LGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0sucmVtb3ZlQXR0cih0aGlzLGUpfSl9LHByb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSy5hY2Nlc3ModGhpcyxLLnByb3AsZSx0LGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9Sy5wcm9wRml4W2VdfHxlLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2VdPXQsZGVsZXRlIHRoaXNbZV19Y2F0Y2gobil7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscztpZihLLmlzRnVuY3Rpb24oZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXtLKHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLHQsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGUmJiJzdHJpbmciPT10eXBlb2YgZSlmb3IodD1lLnNwbGl0KHRlKSxuPTAscj10aGlzLmxlbmd0aDtuPHI7bisrKWlmKGk9dGhpc1tuXSwxPT09aS5ub2RlVHlwZSlpZihpLmNsYXNzTmFtZXx8MSE9PXQubGVuZ3RoKXtmb3Iobz0iICIraS5jbGFzc05hbWUrIiAiLGE9MCxzPXQubGVuZ3RoO2E8czthKyspfm8uaW5kZXhPZigiICIrdFthXSsiICIpfHwobys9dFthXSsiICIpO2kuY2xhc3NOYW1lPUsudHJpbShvKX1lbHNlIGkuY2xhc3NOYW1lPWU7cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxvLGEscyxsO2lmKEsuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe0sodGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsdCx0aGlzLmNsYXNzTmFtZSkpfSk7aWYoZSYmInN0cmluZyI9PXR5cGVvZiBlfHxlPT09dClmb3Iobj0oZXx8IiIpLnNwbGl0KHRlKSxzPTAsbD10aGlzLmxlbmd0aDtzPGw7cysrKWlmKGk9dGhpc1tzXSwxPT09aS5ub2RlVHlwZSYmaS5jbGFzc05hbWUpe2ZvcihyPSgiICIraS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHhlLCIgIiksbz0wLGE9bi5sZW5ndGg7bzxhO28rKylmb3IoO3IuaW5kZXhPZigiICIrbltvXSsiICIpPi0xOylyPXIucmVwbGFjZSgiICIrbltvXSsiICIsIiAiKTtpLmNsYXNzTmFtZT1lP0sudHJpbShyKToiIn1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10eXBlb2YgZSxyPSJib29sZWFuIj09dHlwZW9mIHQ7cmV0dXJuIEsuaXNGdW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24obil7Syh0aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcyxuLHRoaXMuY2xhc3NOYW1lLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1uKWZvcih2YXIgaSxvPTAsYT1LKHRoaXMpLHM9dCxsPWUuc3BsaXQodGUpO2k9bFtvKytdOylzPXI/czohYS5oYXNDbGFzcyhpKSxhW3M/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShpKTtlbHNlInVuZGVmaW5lZCIhPT1uJiYiYm9vbGVhbiIhPT1ufHwodGhpcy5jbGFzc05hbWUmJksuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxlPT09ITE/IiI6Sy5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSxoYXNDbGFzczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9IiAiK2UrIiAiLG49MCxyPXRoaXMubGVuZ3RoO248cjtuKyspaWYoMT09PXRoaXNbbl0ubm9kZVR5cGUmJigiICIrdGhpc1tuXS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHhlLCIgIikuaW5kZXhPZih0KT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGUpe3ZhciBuLHIsaSxvPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGk9Sy5pc0Z1bmN0aW9uKGUpLHRoaXMuZWFjaChmdW5jdGlvbihyKXt2YXIgbyxhPUsodGhpcyk7MT09PXRoaXMubm9kZVR5cGUmJihvPWk/ZS5jYWxsKHRoaXMscixhLnZhbCgpKTplLG51bGw9PW8/bz0iIjoibnVtYmVyIj09dHlwZW9mIG8/bys9IiI6Sy5pc0FycmF5KG8pJiYobz1LLm1hcChvLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksbj1LLnZhbEhvb2tzW3RoaXMudHlwZV18fEsudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxuJiYic2V0ImluIG4mJm4uc2V0KHRoaXMsbywidmFsdWUiKSE9PXR8fCh0aGlzLnZhbHVlPW8pKX0pO2lmKG8pcmV0dXJuIG49Sy52YWxIb29rc1tvLnR5cGVdfHxLLnZhbEhvb2tzW28ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sbiYmImdldCJpbiBuJiYocj1uLmdldChvLCJ2YWx1ZSIpKSE9PXQ/cjoocj1vLnZhbHVlLCJzdHJpbmciPT10eXBlb2Ygcj9yLnJlcGxhY2Uod2UsIiIpOm51bGw9PXI/IiI6cil9fX0pLEsuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hdHRyaWJ1dGVzLnZhbHVlO3JldHVybiF0fHx0LnNwZWNpZmllZD9lLnZhbHVlOmUudGV4dH19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG89ZS5zZWxlY3RlZEluZGV4LGE9W10scz1lLm9wdGlvbnMsbD0ic2VsZWN0LW9uZSI9PT1lLnR5cGU7aWYobzwwKXJldHVybiBudWxsO2ZvcihuPWw/bzowLHI9bD9vKzE6cy5sZW5ndGg7bjxyO24rKylpZihpPXNbbl0saS5zZWxlY3RlZCYmKEsuc3VwcG9ydC5vcHREaXNhYmxlZD8haS5kaXNhYmxlZDpudWxsPT09aS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpJiYoIWkucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUsubm9kZU5hbWUoaS5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYodD1LKGkpLnZhbCgpLGwpcmV0dXJuIHQ7YS5wdXNoKHQpfXJldHVybiBsJiYhYS5sZW5ndGgmJnMubGVuZ3RoP0soc1tvXSkudmFsKCk6YX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49Sy5tYWtlQXJyYXkodCk7cmV0dXJuIEsoZSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Sy5pbkFycmF5KEsodGhpcykudmFsKCksbik+PTB9KSxuLmxlbmd0aHx8KGUuc2VsZWN0ZWRJbmRleD0tMSksbn19fSxhdHRyRm46e30sYXR0cjpmdW5jdGlvbihlLG4scixpKXt2YXIgbyxhLHMsbD1lLm5vZGVUeXBlO2lmKGUmJjMhPT1sJiY4IT09bCYmMiE9PWwpcmV0dXJuIGkmJksuaXNGdW5jdGlvbihLLmZuW25dKT9LKGUpW25dKHIpOiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Sy5wcm9wKGUsbixyKToocz0xIT09bHx8IUsuaXNYTUxEb2MoZSkscyYmKG49bi50b0xvd2VyQ2FzZSgpLGE9Sy5hdHRySG9va3Nbbl18fChFZS50ZXN0KG4pP3ZlOnllKSksciE9PXQ/bnVsbD09PXI/dm9pZCBLLnJlbW92ZUF0dHIoZSxuKTphJiYic2V0ImluIGEmJnMmJihvPWEuc2V0KGUscixuKSkhPT10P286KGUuc2V0QXR0cmlidXRlKG4sIiIrcikscik6YSYmImdldCJpbiBhJiZzJiZudWxsIT09KG89YS5nZXQoZSxuKSk/bzoobz1lLmdldEF0dHJpYnV0ZShuKSxudWxsPT09bz90Om8pKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE9MDtpZih0JiYxPT09ZS5ub2RlVHlwZSlmb3Iocj10LnNwbGl0KHRlKTthPHIubGVuZ3RoO2ErKylpPXJbYV0saSYmKG49Sy5wcm9wRml4W2ldfHxpLG89RWUudGVzdChpKSxvfHxLLmF0dHIoZSxpLCIiKSxlLnJlbW92ZUF0dHJpYnV0ZShrZT9pOm4pLG8mJm4gaW4gZSYmKGVbbl09ITEpKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZihUZS50ZXN0KGUubm9kZU5hbWUpJiZlLnBhcmVudE5vZGUpSy5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighSy5zdXBwb3J0LnJhZGlvVmFsdWUmJiJyYWRpbyI9PT10JiZLLm5vZGVOYW1lKGUsImlucHV0Iikpe3ZhciBuPWUudmFsdWU7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ0eXBlIix0KSxuJiYoZS52YWx1ZT1uKSx0fX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geWUmJksubm9kZU5hbWUoZSwiYnV0dG9uIik/eWUuZ2V0KGUsdCk6dCBpbiBlP2UudmFsdWU6bnVsbH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geWUmJksubm9kZU5hbWUoZSwiYnV0dG9uIik/eWUuc2V0KGUsdCxuKTp2b2lkKGUudmFsdWU9dCl9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1lLm5vZGVUeXBlO2lmKGUmJjMhPT1zJiY4IT09cyYmMiE9PXMpcmV0dXJuIGE9MSE9PXN8fCFLLmlzWE1MRG9jKGUpLGEmJihuPUsucHJvcEZpeFtuXXx8bixvPUsucHJvcEhvb2tzW25dKSxyIT09dD9vJiYic2V0ImluIG8mJihpPW8uc2V0KGUscixuKSkhPT10P2k6ZVtuXT1yOm8mJiJnZXQiaW4gbyYmbnVsbCE9PShpPW8uZ2V0KGUsbikpP2k6ZVtuXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gbiYmbi5zcGVjaWZpZWQ/cGFyc2VJbnQobi52YWx1ZSwxMCk6TmUudGVzdChlLm5vZGVOYW1lKXx8Q2UudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6dH19fX0pLHZlPXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcixpPUsucHJvcChlLG4pO3JldHVybiBpPT09ITB8fCJib29sZWFuIiE9dHlwZW9mIGkmJihyPWUuZ2V0QXR0cmlidXRlTm9kZShuKSkmJnIubm9kZVZhbHVlIT09ITE/bi50b0xvd2VyQ2FzZSgpOnR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHQ9PT0hMT9LLnJlbW92ZUF0dHIoZSxuKToocj1LLnByb3BGaXhbbl18fG4sciBpbiBlJiYoZVtyXT0hMCksZS5zZXRBdHRyaWJ1dGUobixuLnRvTG93ZXJDYXNlKCkpKSxufX0sa2V8fChiZT17bmFtZTohMCxpZDohMCxjb29yZHM6ITB9LHllPUsudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oZSxuKXt2YXIgcjtyZXR1cm4gcj1lLmdldEF0dHJpYnV0ZU5vZGUobiksciYmKGJlW25dPyIiIT09ci52YWx1ZTpyLnNwZWNpZmllZCk/ci52YWx1ZTp0fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZ2V0QXR0cmlidXRlTm9kZShuKTtyZXR1cm4gcnx8KHI9Ui5jcmVhdGVBdHRyaWJ1dGUobiksZS5zZXRBdHRyaWJ1dGVOb2RlKHIpKSxyLnZhbHVlPXQrIiJ9fSxLLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGUsdCl7Sy5hdHRySG9va3NbdF09Sy5leHRlbmQoSy5hdHRySG9va3NbdF0se3NldDpmdW5jdGlvbihlLG4pe2lmKCIiPT09bilyZXR1cm4gZS5zZXRBdHRyaWJ1dGUodCwiYXV0byIpLAorbn19KX0pLEsuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OnllLmdldCxzZXQ6ZnVuY3Rpb24oZSx0LG4peyIiPT09dCYmKHQ9ImZhbHNlIikseWUuc2V0KGUsdCxuKX19KSxLLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWR8fEsuZWFjaChbImhyZWYiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGUsbil7Sy5hdHRySG9va3Nbbl09Sy5leHRlbmQoSy5hdHRySG9va3Nbbl0se2dldDpmdW5jdGlvbihlKXt2YXIgcj1lLmdldEF0dHJpYnV0ZShuLDIpO3JldHVybiBudWxsPT09cj90OnJ9fSl9KSxLLnN1cHBvcnQuc3R5bGV8fChLLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlLmNzc1RleHQudG9Mb3dlckNhc2UoKXx8dH0sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUuY3NzVGV4dD0iIit0fX0pLEsuc3VwcG9ydC5vcHRTZWxlY3RlZHx8KEsucHJvcEhvb2tzLnNlbGVjdGVkPUsuZXh0ZW5kKEsucHJvcEhvb2tzLnNlbGVjdGVkLHtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYodC5zZWxlY3RlZEluZGV4LHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpLG51bGx9fSkpLEsuc3VwcG9ydC5lbmN0eXBlfHwoSy5wcm9wRml4LmVuY3R5cGU9ImVuY29kaW5nIiksSy5zdXBwb3J0LmNoZWNrT258fEsuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe0sudmFsSG9va3NbdGhpc109e2dldDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6ZS52YWx1ZX19fSksSy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Sy52YWxIb29rc1t0aGlzXT1LLmV4dGVuZChLLnZhbEhvb2tzW3RoaXNdLHtzZXQ6ZnVuY3Rpb24oZSx0KXtpZihLLmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD1LLmluQXJyYXkoSyhlKS52YWwoKSx0KT49MH19KX0pO3ZhciBTZT0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQWU9L14oW15cLl0qfCkoPzpcLiguKyl8KSQvLGplPS8oPzpefFxzKWhvdmVyKFwuXFMrfClcYi8sRGU9L15rZXkvLExlPS9eKD86bW91c2V8Y29udGV4dG1lbnUpfGNsaWNrLyxIZT0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sRmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEsuZXZlbnQuc3BlY2lhbC5ob3Zlcj9lOmUucmVwbGFjZShqZSwibW91c2VlbnRlciQxIG1vdXNlbGVhdmUkMSIpfTtLLmV2ZW50PXthZGQ6ZnVuY3Rpb24oZSxuLHIsaSxvKXt2YXIgYSxzLGwsdSxjLGYscCxkLGgsZyxtO2lmKDMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmbiYmciYmKGE9Sy5fZGF0YShlKSkpe2ZvcihyLmhhbmRsZXImJihoPXIscj1oLmhhbmRsZXIsbz1oLnNlbGVjdG9yKSxyLmd1aWR8fChyLmd1aWQ9Sy5ndWlkKyspLGw9YS5ldmVudHMsbHx8KGEuZXZlbnRzPWw9e30pLHM9YS5oYW5kbGUsc3x8KGEuaGFuZGxlPXM9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBLfHxlJiZLLmV2ZW50LnRyaWdnZXJlZD09PWUudHlwZT90OksuZXZlbnQuZGlzcGF0Y2guYXBwbHkocy5lbGVtLGFyZ3VtZW50cyl9LHMuZWxlbT1lKSxuPUsudHJpbShGZShuKSkuc3BsaXQoIiAiKSx1PTA7dTxuLmxlbmd0aDt1KyspYz1BZS5leGVjKG5bdV0pfHxbXSxmPWNbMV0scD0oY1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG09Sy5ldmVudC5zcGVjaWFsW2ZdfHx7fSxmPShvP20uZGVsZWdhdGVUeXBlOm0uYmluZFR5cGUpfHxmLG09Sy5ldmVudC5zcGVjaWFsW2ZdfHx7fSxkPUsuZXh0ZW5kKHt0eXBlOmYsb3JpZ1R5cGU6Y1sxXSxkYXRhOmksaGFuZGxlcjpyLGd1aWQ6ci5ndWlkLHNlbGVjdG9yOm8sbmFtZXNwYWNlOnAuam9pbigiLiIpfSxoKSxnPWxbZl0sZ3x8KGc9bFtmXT1bXSxnLmRlbGVnYXRlQ291bnQ9MCxtLnNldHVwJiZtLnNldHVwLmNhbGwoZSxpLHAscykhPT0hMXx8KGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoZixzLCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrZixzKSkpLG0uYWRkJiYobS5hZGQuY2FsbChlLGQpLGQuaGFuZGxlci5ndWlkfHwoZC5oYW5kbGVyLmd1aWQ9ci5ndWlkKSksbz9nLnNwbGljZShnLmRlbGVnYXRlQ291bnQrKywwLGQpOmcucHVzaChkKSxLLmV2ZW50Lmdsb2JhbFtmXT0hMDtlPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGwsdSxjLGYscCxkLGgsZyxtPUsuaGFzRGF0YShlKSYmSy5fZGF0YShlKTtpZihtJiYocD1tLmV2ZW50cykpe2Zvcih0PUsudHJpbShGZSh0fHwiIikpLnNwbGl0KCIgIiksbz0wO288dC5sZW5ndGg7bysrKWlmKGE9QWUuZXhlYyh0W29dKXx8W10scz1sPWFbMV0sdT1hWzJdLHMpe2ZvcihkPUsuZXZlbnQuc3BlY2lhbFtzXXx8e30scz0ocj9kLmRlbGVnYXRlVHlwZTpkLmJpbmRUeXBlKXx8cyxoPXBbc118fFtdLGM9aC5sZW5ndGgsdT11P25ldyBSZWdFeHAoIihefFxcLikiK3Uuc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxmPTA7ZjxoLmxlbmd0aDtmKyspZz1oW2ZdLChpfHxsPT09Zy5vcmlnVHlwZSkmJighbnx8bi5ndWlkPT09Zy5ndWlkKSYmKCF1fHx1LnRlc3QoZy5uYW1lc3BhY2UpKSYmKCFyfHxyPT09Zy5zZWxlY3Rvcnx8IioqIj09PXImJmcuc2VsZWN0b3IpJiYoaC5zcGxpY2UoZi0tLDEpLGcuc2VsZWN0b3ImJmguZGVsZWdhdGVDb3VudC0tLGQucmVtb3ZlJiZkLnJlbW92ZS5jYWxsKGUsZykpOzA9PT1oLmxlbmd0aCYmYyE9PWgubGVuZ3RoJiYoKCFkLnRlYXJkb3dufHxkLnRlYXJkb3duLmNhbGwoZSx1LG0uaGFuZGxlKT09PSExKSYmSy5yZW1vdmVFdmVudChlLHMsbS5oYW5kbGUpLGRlbGV0ZSBwW3NdKX1lbHNlIGZvcihzIGluIHApSy5ldmVudC5yZW1vdmUoZSxzK3Rbb10sbixyLCEwKTtLLmlzRW1wdHlPYmplY3QocCkmJihkZWxldGUgbS5oYW5kbGUsSy5yZW1vdmVEYXRhKGUsImV2ZW50cyIsITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihuLHIsaSxvKXtpZighaXx8MyE9PWkubm9kZVR5cGUmJjghPT1pLm5vZGVUeXBlKXt2YXIgYSxzLGwsdSxjLGYscCxkLGgsZyxtPW4udHlwZXx8bix5PVtdO2lmKEhlLnRlc3QobStLLmV2ZW50LnRyaWdnZXJlZCkpcmV0dXJuO2lmKG0uaW5kZXhPZigiISIpPj0wJiYobT1tLnNsaWNlKDAsLTEpLHM9ITApLG0uaW5kZXhPZigiLiIpPj0wJiYoeT1tLnNwbGl0KCIuIiksbT15LnNoaWZ0KCkseS5zb3J0KCkpLCghaXx8Sy5ldmVudC5jdXN0b21FdmVudFttXSkmJiFLLmV2ZW50Lmdsb2JhbFttXSlyZXR1cm47aWYobj0ib2JqZWN0Ij09dHlwZW9mIG4/bltLLmV4cGFuZG9dP246bmV3IEsuRXZlbnQobSxuKTpuZXcgSy5FdmVudChtKSxuLnR5cGU9bSxuLmlzVHJpZ2dlcj0hMCxuLmV4Y2x1c2l2ZT1zLG4ubmFtZXNwYWNlPXkuam9pbigiLiIpLG4ubmFtZXNwYWNlX3JlPW4ubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3kuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxmPW0uaW5kZXhPZigiOiIpPDA/Im9uIittOiIiLCFpKXthPUsuY2FjaGU7Zm9yKGwgaW4gYSlhW2xdLmV2ZW50cyYmYVtsXS5ldmVudHNbbV0mJksuZXZlbnQudHJpZ2dlcihuLHIsYVtsXS5oYW5kbGUuZWxlbSwhMCk7cmV0dXJufWlmKG4ucmVzdWx0PXQsbi50YXJnZXR8fChuLnRhcmdldD1pKSxyPW51bGwhPXI/Sy5tYWtlQXJyYXkocik6W10sci51bnNoaWZ0KG4pLHA9Sy5ldmVudC5zcGVjaWFsW21dfHx7fSxwLnRyaWdnZXImJnAudHJpZ2dlci5hcHBseShpLHIpPT09ITEpcmV0dXJuO2lmKGg9W1tpLHAuYmluZFR5cGV8fG1dXSwhbyYmIXAubm9CdWJibGUmJiFLLmlzV2luZG93KGkpKXtmb3IoZz1wLmRlbGVnYXRlVHlwZXx8bSx1PUhlLnRlc3QoZyttKT9pOmkucGFyZW50Tm9kZSxjPWk7dTt1PXUucGFyZW50Tm9kZSloLnB1c2goW3UsZ10pLGM9dTtjPT09KGkub3duZXJEb2N1bWVudHx8UikmJmgucHVzaChbYy5kZWZhdWx0Vmlld3x8Yy5wYXJlbnRXaW5kb3d8fGUsZ10pfWZvcihsPTA7bDxoLmxlbmd0aCYmIW4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtsKyspdT1oW2xdWzBdLG4udHlwZT1oW2xdWzFdLGQ9KEsuX2RhdGEodSwiZXZlbnRzIil8fHt9KVtuLnR5cGVdJiZLLl9kYXRhKHUsImhhbmRsZSIpLGQmJmQuYXBwbHkodSxyKSxkPWYmJnVbZl0sZCYmSy5hY2NlcHREYXRhKHUpJiZkLmFwcGx5KHUscik9PT0hMSYmbi5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBuLnR5cGU9bSwhbyYmIW4uaXNEZWZhdWx0UHJldmVudGVkKCkmJighcC5fZGVmYXVsdHx8cC5fZGVmYXVsdC5hcHBseShpLm93bmVyRG9jdW1lbnQscik9PT0hMSkmJigiY2xpY2siIT09bXx8IUsubm9kZU5hbWUoaSwiYSIpKSYmSy5hY2NlcHREYXRhKGkpJiZmJiZpW21dJiYoImZvY3VzIiE9PW0mJiJibHVyIiE9PW18fDAhPT1uLnRhcmdldC5vZmZzZXRXaWR0aCkmJiFLLmlzV2luZG93KGkpJiYoYz1pW2ZdLGMmJihpW2ZdPW51bGwpLEsuZXZlbnQudHJpZ2dlcmVkPW0saVttXSgpLEsuZXZlbnQudHJpZ2dlcmVkPXQsYyYmKGlbZl09YykpLG4ucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24obil7bj1LLmV2ZW50LmZpeChufHxlLmV2ZW50KTt2YXIgcixpLG8sYSxzLGwsdSxjLGYscCxkPShLLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbbi50eXBlXXx8W10saD1kLmRlbGVnYXRlQ291bnQsZz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksbT0hbi5leGNsdXNpdmUmJiFuLm5hbWVzcGFjZSx5PUsuZXZlbnQuc3BlY2lhbFtuLnR5cGVdfHx7fSx2PVtdO2lmKGdbMF09bixuLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIXkucHJlRGlzcGF0Y2h8fHkucHJlRGlzcGF0Y2guY2FsbCh0aGlzLG4pIT09ITEpe2lmKGgmJighbi5idXR0b258fCJjbGljayIhPT1uLnR5cGUpKWZvcihhPUsodGhpcyksYS5jb250ZXh0PXRoaXMsbz1uLnRhcmdldDtvIT10aGlzO289by5wYXJlbnROb2RlfHx0aGlzKWlmKG8uZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PW4udHlwZSl7Zm9yKGw9e30sYz1bXSxhWzBdPW8scj0wO3I8aDtyKyspZj1kW3JdLHA9Zi5zZWxlY3RvcixsW3BdPT09dCYmKGxbcF09YS5pcyhwKSksbFtwXSYmYy5wdXNoKGYpO2MubGVuZ3RoJiZ2LnB1c2goe2VsZW06byxtYXRjaGVzOmN9KX1mb3IoZC5sZW5ndGg+aCYmdi5wdXNoKHtlbGVtOnRoaXMsbWF0Y2hlczpkLnNsaWNlKGgpfSkscj0wO3I8di5sZW5ndGgmJiFuLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7cisrKWZvcih1PXZbcl0sbi5jdXJyZW50VGFyZ2V0PXUuZWxlbSxpPTA7aTx1Lm1hdGNoZXMubGVuZ3RoJiYhbi5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpO2krKylmPXUubWF0Y2hlc1tpXSwobXx8IW4ubmFtZXNwYWNlJiYhZi5uYW1lc3BhY2V8fG4ubmFtZXNwYWNlX3JlJiZuLm5hbWVzcGFjZV9yZS50ZXN0KGYubmFtZXNwYWNlKSkmJihuLmRhdGE9Zi5kYXRhLG4uaGFuZGxlT2JqPWYscz0oKEsuZXZlbnQuc3BlY2lhbFtmLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zi5oYW5kbGVyKS5hcHBseSh1LmVsZW0sZykscyE9PXQmJihuLnJlc3VsdD1zLHM9PT0hMSYmKG4ucHJldmVudERlZmF1bHQoKSxuLnN0b3BQcm9wYWdhdGlvbigpKSkpO3JldHVybiB5LnBvc3REaXNwYXRjaCYmeS5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLG4pLG4ucmVzdWx0fX0scHJvcHM6ImF0dHJDaGFuZ2UgYXR0ck5hbWUgcmVsYXRlZE5vZGUgc3JjRWxlbWVudCBhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lLndoaWNoJiYoZS53aGljaD1udWxsIT10LmNoYXJDb2RlP3QuY2hhckNvZGU6dC5rZXlDb2RlKSxlfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oZSxuKXt2YXIgcixpLG8sYT1uLmJ1dHRvbixzPW4uZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWUucGFnZVgmJm51bGwhPW4uY2xpZW50WCYmKHI9ZS50YXJnZXQub3duZXJEb2N1bWVudHx8UixpPXIuZG9jdW1lbnRFbGVtZW50LG89ci5ib2R5LGUucGFnZVg9bi5jbGllbnRYKyhpJiZpLnNjcm9sbExlZnR8fG8mJm8uc2Nyb2xsTGVmdHx8MCktKGkmJmkuY2xpZW50TGVmdHx8byYmby5jbGllbnRMZWZ0fHwwKSxlLnBhZ2VZPW4uY2xpZW50WSsoaSYmaS5zY3JvbGxUb3B8fG8mJm8uc2Nyb2xsVG9wfHwwKS0oaSYmaS5jbGllbnRUb3B8fG8mJm8uY2xpZW50VG9wfHwwKSksIWUucmVsYXRlZFRhcmdldCYmcyYmKGUucmVsYXRlZFRhcmdldD1zPT09ZS50YXJnZXQ/bi50b0VsZW1lbnQ6cyksIWUud2hpY2gmJmEhPT10JiYoZS53aGljaD0xJmE/MToyJmE/Mzo0JmE/MjowKSxlfX0sZml4OmZ1bmN0aW9uKGUpe2lmKGVbSy5leHBhbmRvXSlyZXR1cm4gZTt2YXIgdCxuLHI9ZSxpPUsuZXZlbnQuZml4SG9va3NbZS50eXBlXXx8e30sbz1pLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGkucHJvcHMpOnRoaXMucHJvcHM7Zm9yKGU9Sy5FdmVudChyKSx0PW8ubGVuZ3RoO3Q7KW49b1stLXRdLGVbbl09cltuXTtyZXR1cm4gZS50YXJnZXR8fChlLnRhcmdldD1yLnNyY0VsZW1lbnR8fFIpLDM9PT1lLnRhcmdldC5ub2RlVHlwZSYmKGUudGFyZ2V0PWUudGFyZ2V0LnBhcmVudE5vZGUpLGUubWV0YUtleT0hIWUubWV0YUtleSxpLmZpbHRlcj9pLmZpbHRlcihlLHIpOmV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpLLmJpbmRSZWFkeX0sbG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihlLHQsbil7Sy5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9bil9LHRlYXJkb3duOmZ1bmN0aW9uKGUsdCl7dGhpcy5vbmJlZm9yZXVubG9hZD09PXQmJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPUsuZXh0ZW5kKG5ldyBLLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7cj9LLmV2ZW50LnRyaWdnZXIoaSxudWxsLHQpOksuZXZlbnQuZGlzcGF0Y2guY2FsbCh0LGkpLGkuaXNEZWZhdWx0UHJldmVudGVkKCkmJm4ucHJldmVudERlZmF1bHQoKX19LEsuZXZlbnQuaGFuZGxlPUsuZXZlbnQuZGlzcGF0Y2gsSy5yZW1vdmVFdmVudD1SLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMSl9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0ib24iK3Q7ZS5kZXRhY2hFdmVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgZVtyXSYmKGVbcl09bnVsbCksZS5kZXRhY2hFdmVudChyLG4pKX0sSy5FdmVudD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgSy5FdmVudD8oZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8ZS5yZXR1cm5WYWx1ZT09PSExfHxlLmdldFByZXZlbnREZWZhdWx0JiZlLmdldFByZXZlbnREZWZhdWx0KCk/YTpvKTp0aGlzLnR5cGU9ZSx0JiZLLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxLLm5vdygpLHRoaXNbSy5leHBhbmRvXT0hMCx2b2lkIDApOm5ldyBLLkV2ZW50KGUsdCl9LEsuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWE7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTplLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hO3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24mJmUuc3RvcFByb3BhZ2F0aW9uKCksZS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWEsdGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOm8saXNQcm9wYWdhdGlvblN0b3BwZWQ6byxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpvfSxLLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5jdGlvbihlLHQpe0suZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOnQsYmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLGk9ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7by5zZWxlY3RvcjtyZXR1cm4gaSYmKGk9PT1yfHxLLmNvbnRhaW5zKHIsaSkpfHwoZS50eXBlPW8ub3JpZ1R5cGUsbj1vLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT10KSxufX19KSxLLnN1cHBvcnQuc3VibWl0QnViYmxlc3x8KEsuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIUsubm9kZU5hbWUodGhpcywiZm9ybSIpJiZ2b2lkIEsuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIG49ZS50YXJnZXQscj1LLm5vZGVOYW1lKG4sImlucHV0Iil8fEsubm9kZU5hbWUobiwiYnV0dG9uIik/bi5mb3JtOnQ7ciYmIUsuX2RhdGEociwiX3N1Ym1pdF9hdHRhY2hlZCIpJiYoSy5ldmVudC5hZGQociwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGUpe2UuX3N1Ym1pdF9idWJibGU9ITB9KSxLLl9kYXRhKHIsIl9zdWJtaXRfYXR0YWNoZWQiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe2UuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgZS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFlLmlzVHJpZ2dlciYmSy5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsZSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiFLLm5vZGVOYW1lKHRoaXMsImZvcm0iKSYmdm9pZCBLLmV2ZW50LnJlbW92ZSh0aGlzLCIuX3N1Ym1pdCIpfX0pLEsuc3VwcG9ydC5jaGFuZ2VCdWJibGVzfHwoSy5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gU2UudGVzdCh0aGlzLm5vZGVOYW1lKT8oImNoZWNrYm94IiE9PXRoaXMudHlwZSYmInJhZGlvIiE9PXRoaXMudHlwZXx8KEsuZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGUpeyJjaGVja2VkIj09PWUub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksSy5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oZSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhZS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLEsuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxlLCEwKX0pKSwhMSk6dm9pZCBLLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtTZS50ZXN0KHQubm9kZU5hbWUpJiYhSy5fZGF0YSh0LCJfY2hhbmdlX2F0dGFjaGVkIikmJihLLmV2ZW50LmFkZCh0LCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiYhZS5pc1NpbXVsYXRlZCYmIWUuaXNUcmlnZ2VyJiZLLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMucGFyZW50Tm9kZSxlLCEwKX0pLEsuX2RhdGEodCwiX2NoYW5nZV9hdHRhY2hlZCIsITApKX0pfSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7aWYodGhpcyE9PXR8fGUuaXNTaW11bGF0ZWR8fGUuaXNUcmlnZ2VyfHwicmFkaW8iIT09dC50eXBlJiYiY2hlY2tib3giIT09dC50eXBlKXJldHVybiBlLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gSy5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSxTZS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLEsuc3VwcG9ydC5mb2N1c2luQnViYmxlc3x8Sy5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihlLHQpe3ZhciBuPTAscj1mdW5jdGlvbihlKXtLLmV2ZW50LnNpbXVsYXRlKHQsZS50YXJnZXQsSy5ldmVudC5maXgoZSksITApfTtLLmV2ZW50LnNwZWNpYWxbdF09e3NldHVwOmZ1bmN0aW9uKCl7MD09PW4rKyYmUi5hZGRFdmVudExpc3RlbmVyKGUsciwhMCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7MD09PS0tbiYmUi5yZW1vdmVFdmVudExpc3RlbmVyKGUsciwhMCl9fX0pLEsuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLG4scixpLGEpe3ZhciBzLGw7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXsic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj10KTtmb3IobCBpbiBlKXRoaXMub24obCxuLHIsZVtsXSxhKTtyZXR1cm4gdGhpc31pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXQpOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXQpOihpPXIscj1uLG49dCkpLGk9PT0hMSlpPW87ZWxzZSBpZighaSlyZXR1cm4gdGhpcztyZXR1cm4gMT09PWEmJihzPWksaT1mdW5jdGlvbihlKXtyZXR1cm4gSygpLm9mZihlKSxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5ndWlkPXMuZ3VpZHx8KHMuZ3VpZD1LLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe0suZXZlbnQuYWRkKHRoaXMsZSxpLHIsbil9KX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLG4scil7dmFyIGksYTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gaT1lLmhhbmRsZU9iaixLKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlKyIuIitpLm5hbWVzcGFjZTppLm9yaWdUeXBlLGkuc2VsZWN0b3IsaS5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGEgaW4gZSl0aGlzLm9mZihhLG4sZVthXSk7cmV0dXJuIHRoaXN9cmV0dXJuIG4hPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIG58fChyPW4sbj10KSxyPT09ITEmJihyPW8pLHRoaXMuZWFjaChmdW5jdGlvbigpe0suZXZlbnQucmVtb3ZlKHRoaXMsZSxyLG4pfSl9LGJpbmQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLm9uKGUsbnVsbCx0LG4pfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmYoZSxudWxsLHQpfSxsaXZlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSyh0aGlzLmNvbnRleHQpLm9uKGUsdGhpcy5zZWxlY3Rvcix0LG4pLHRoaXN9LGRpZTpmdW5jdGlvbihlLHQpe3JldHVybiBLKHRoaXMuY29udGV4dCkub2ZmKGUsdGhpcy5zZWxlY3Rvcnx8IioqIix0KSx0aGlzfSxkZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbih0LGUsbixyKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIDE9PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LHRyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Sy5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe2lmKHRoaXNbMF0pcmV0dXJuIEsuZXZlbnQudHJpZ2dlcihlLHQsdGhpc1swXSwhMCl9LHRvZ2dsZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMsbj1lLmd1aWR8fEsuZ3VpZCsrLHI9MCxpPWZ1bmN0aW9uKG4pe3ZhciBpPShLLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2UuZ3VpZCl8fDApJXI7cmV0dXJuIEsuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrZS5ndWlkLGkrMSksbi5wcmV2ZW50RGVmYXVsdCgpLHRbaV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfHwhMX07Zm9yKGkuZ3VpZD1uO3I8dC5sZW5ndGg7KXRbcisrXS5ndWlkPW47cmV0dXJuIHRoaXMuY2xpY2soaSl9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLEsuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe0suZm5bdF09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09biYmKG49ZSxlPW51bGwpLGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKHQsbnVsbCxlLG4pOnRoaXMudHJpZ2dlcih0KX0sRGUudGVzdCh0KSYmKEsuZXZlbnQuZml4SG9va3NbdF09Sy5ldmVudC5rZXlIb29rcyksTGUudGVzdCh0KSYmKEsuZXZlbnQuZml4SG9va3NbdF09Sy5ldmVudC5tb3VzZUhvb2tzKX0pLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHQsbixyKXtmb3IodmFyIGk9MCxvPXQubGVuZ3RoO2k8bztpKyspb2UoZSx0W2ldLG4scil9ZnVuY3Rpb24gcihlLHQscixpLG8sYSl7dmFyIHMsbD1hZS5zZXRGaWx0ZXJzW3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIGx8fG9lLmVycm9yKHQpLChlfHwhKHM9bykpJiZuKGV8fCIqIixpLHM9W10sbykscy5sZW5ndGg+MD9sKHMscixhKTpbXX1mdW5jdGlvbiBpKGUsaSxvLGEscyl7Zm9yKHZhciBsLHUsYyxmLHAsZCxoLGcsbT0wLHk9cy5sZW5ndGgsdj16LlBPUyxiPW5ldyBSZWdFeHAoIl4iK3Yuc291cmNlKyIoPyEiK0MrIikiLCJpIikseD1mdW5jdGlvbigpe2Zvcih2YXIgZT0xLG49YXJndW1lbnRzLmxlbmd0aC0yO2U8bjtlKyspYXJndW1lbnRzW2VdPT09dCYmKGxbZV09dCl9O208eTttKyspe2Zvcih2LmV4ZWMoIiIpLGU9c1ttXSxmPVtdLGM9MCxwPWE7bD12LmV4ZWMoZSk7KWc9di5sYXN0SW5kZXg9bC5pbmRleCtsWzBdLmxlbmd0aCxnPmMmJihoPWUuc2xpY2UoYyxsLmluZGV4KSxjPWcsZD1baV0sTS50ZXN0KGgpJiYocCYmKGQ9cCkscD1hKSwodT1QLnRlc3QoaCkpJiYoaD1oLnNsaWNlKDAsLTUpLnJlcGxhY2UoTSwiJCYqIikpLGwubGVuZ3RoPjEmJmxbMF0ucmVwbGFjZShiLHgpLHA9cihoLGxbMV0sbFsyXSxkLHAsdSkpO3A/KGY9Zi5jb25jYXQocCksKGg9ZS5zbGljZShjKSkmJiIpIiE9PWg/TS50ZXN0KGgpP24oaCxmLG8sYSk6b2UoaCxpLG8sYT9hLmNvbmNhdChwKTpwKTpULmFwcGx5KG8sZikpOm9lKGUsaSxvLGEpfXJldHVybiAxPT09eT9vOm9lLnVuaXF1ZVNvcnQobyl9ZnVuY3Rpb24gbyhlLHQsbil7Zm9yKHZhciByLGksbyxhPVtdLHM9MCxsPV8uZXhlYyhlKSx1PSFsLnBvcCgpJiYhbC5wb3AoKSxjPXUmJmUubWF0Y2goTyl8fFsiIl0sZj1hZS5wcmVGaWx0ZXIscD1hZS5maWx0ZXIsZD0hbiYmdCE9PWc7bnVsbCE9KGk9Y1tzXSkmJnU7cysrKWZvcihhLnB1c2gocj1bXSksZCYmKGk9IiAiK2kpO2k7KXt1PSExLChsPU0uZXhlYyhpKSkmJihpPWkuc2xpY2UobFswXS5sZW5ndGgpLHU9ci5wdXNoKHtwYXJ0OmwucG9wKCkucmVwbGFjZShGLCIgIiksY2FwdHVyZXM6bH0pKTtmb3IobyBpbiBwKShsPXpbb10uZXhlYyhpKSkmJighZltvXXx8KGw9ZltvXShsLHQsbikpKSYmKGk9aS5zbGljZShsLnNoaWZ0KCkubGVuZ3RoKSx1PXIucHVzaCh7cGFydDpvLGNhcHR1cmVzOmx9KSk7aWYoIXUpYnJlYWt9cmV0dXJuIHV8fG9lLmVycm9yKGUpLGF9ZnVuY3Rpb24gYShlLHQsbil7dmFyIHI9dC5kaXIsaT14Kys7cmV0dXJuIGV8fChlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09bn0pLHQuZmlyc3Q/ZnVuY3Rpb24odCxuKXtmb3IoO3Q9dFtyXTspaWYoMT09PXQubm9kZVR5cGUpcmV0dXJuIGUodCxuKSYmdH06ZnVuY3Rpb24odCxuKXtmb3IodmFyIG8sYT1pKyIuIitmLHM9YSsiLiIrYzt0PXRbcl07KWlmKDE9PT10Lm5vZGVUeXBlKXtpZigobz10W05dKT09PXMpcmV0dXJuIHQuc2l6c2V0O2lmKCJzdHJpbmciPT10eXBlb2YgbyYmMD09PW8uaW5kZXhPZihhKSl7aWYodC5zaXpzZXQpcmV0dXJuIHR9ZWxzZXtpZih0W05dPXMsZSh0LG4pKXJldHVybiB0LnNpenNldD0hMCx0O3Quc2l6c2V0PSExfX19fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT9mdW5jdGlvbihuLHIpe3ZhciBpPXQobixyKTtyZXR1cm4gaSYmZShpPT09ITA/bjppLHIpfTp0fWZ1bmN0aW9uIGwoZSx0LG4pe2Zvcih2YXIgcixpLG89MDtyPWVbb107bysrKWFlLnJlbGF0aXZlW3IucGFydF0/aT1hKGksYWUucmVsYXRpdmVbci5wYXJ0XSx0KTooci5jYXB0dXJlcy5wdXNoKHQsbiksaT1zKGksYWUuZmlsdGVyW3IucGFydF0uYXBwbHkobnVsbCxyLmNhcHR1cmVzKSkpO3JldHVybiBpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7Zm9yKHZhciByLGk9MDtyPWVbaV07aSsrKWlmKHIodCxuKSlyZXR1cm4hMDtyZXR1cm4hMX19dmFyIGMsZixwLGQsaCxnPWUuZG9jdW1lbnQsbT1nLmRvY3VtZW50RWxlbWVudCx5PSJ1bmRlZmluZWQiLHY9ITEsYj0hMCx4PTAsdz1bXS5zbGljZSxUPVtdLnB1c2gsTj0oInNpemNhY2hlIitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKCIuIiwiIiksQz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsRT0iKD86XFxcXC58Wy1cXHddfFteXFx4MDAtXFx4YTBdKSsiLGs9RS5yZXBsYWNlKCJ3IiwidyMiKSxTPSIoWypeJHwhfl0/PSkiLEE9IlxcWyIrQysiKigiK0UrIikiK0MrIiooPzoiK1MrQysiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIraysiKXwpfCkiK0MrIipcXF0iLGo9IjooIitFKyIpKD86XFwoKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcMnwoKD86W14sXXxcXFxcLHwoPzosKD89W15cXFtdKlxcXSkpfCg/OiwoPz1bXlxcKF0qXFwpKSkpKikpXFwpfCkiLEQ9IjoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XFwoKFxcZCopXFwpfCkoPz1bXi1dfCQpIixMPUMrIiooW1xceDIwXFx0XFxyXFxuXFxmPit+XSkiK0MrIioiLEg9Iig/PVteXFx4MjBcXHRcXHJcXG5cXGZdKSg/OlxcXFwufCIrQSsifCIrai5yZXBsYWNlKDIsNykrInxbXlxcXFwoKSxdKSsiLEY9bmV3IFJlZ0V4cCgiXiIrQysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitDKyIrJCIsImciKSxNPW5ldyBSZWdFeHAoIl4iK0wpLE89bmV3IFJlZ0V4cChIKyI/KD89IitDKyIqLHwkKSIsImciKSxfPW5ldyBSZWdFeHAoIl4oPzooPyEsKSg/Oig/Ol58LCkiK0MrIioiK0grIikqP3wiK0MrIiooLio/KSkoXFwpfCQpIikscT1uZXcgUmVnRXhwKEguc2xpY2UoMTksLTYpKyJcXHgyMFxcdFxcclxcblxcZj4rfl0pK3wiK0wsImciKSxCPS9eKD86IyhbXHdcLV0rKXwoXHcrKXxcLihbXHdcLV0rKSkkLyxXPS9bXHgyMFx0XHJcblxmXSpbK35dLyxQPS86bm90XCgkLyxSPS9oXGQvaSwkPS9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2ksST0vXFwoPyFcXCkvZyx6PXtJRDpuZXcgUmVnRXhwKCJeIygiK0UrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrRSsiKSIpLE5BTUU6bmV3IFJlZ0V4cCgiXlxcW25hbWU9WydcIl0/KCIrRSsiKVsnXCJdP1xcXSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrRS5yZXBsYWNlKCJbLSIsIlstXFwqIikrIikiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK0EpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitqKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlxcKCIrQysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrQysiKig/OihbKy1dfCkiK0MrIiooXFxkKyl8KSkiK0MrIipcXCl8KSIsImkiKSxQT1M6bmV3IFJlZ0V4cChELCJpZyIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitDKyIqWz4rfl18IitELCJpIil9LFg9e30sVT1bXSxZPXt9LEo9W10sVj1mdW5jdGlvbihlKXtyZXR1cm4gZS5zaXp6bGVGaWx0ZXI9ITAsZX0sRz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuImlucHV0Ij09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmdC50eXBlPT09ZX19LFE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJnQudHlwZT09PWV9fSxaPWZ1bmN0aW9uKGUpe3ZhciB0PSExLG49Zy5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7dD1lKG4pfWNhdGNoKHIpe31yZXR1cm4gbj1udWxsLHR9LGVlPVooZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxzZWxlY3Q+PC9zZWxlY3Q+Ijt2YXIgdD10eXBlb2YgZS5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJtdWx0aXBsZSIpO3JldHVybiJib29sZWFuIiE9PXQmJiJzdHJpbmciIT09dH0pLHRlPVooZnVuY3Rpb24oZSl7ZS5pZD1OKzAsZS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrTisiJz48L2E+PGRpdiBuYW1lPSciK04rIic+PC9kaXY+IixtLmluc2VydEJlZm9yZShlLG0uZmlyc3RDaGlsZCk7dmFyIHQ9Zy5nZXRFbGVtZW50c0J5TmFtZSYmZy5nZXRFbGVtZW50c0J5TmFtZShOKS5sZW5ndGg9PT0yK2cuZ2V0RWxlbWVudHNCeU5hbWUoTiswKS5sZW5ndGg7cmV0dXJuIGg9IWcuZ2V0RWxlbWVudEJ5SWQoTiksbS5yZW1vdmVDaGlsZChlKSx0fSksbmU9WihmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChnLmNyZWF0ZUNvbW1lbnQoIiIpKSwwPT09ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLHJlPVooZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixlLmZpcnN0Q2hpbGQmJnR5cGVvZiBlLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09eSYmIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSksaWU9WihmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2PiIsISghZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lfHwwPT09ZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoKSYmKGUubGFzdENoaWxkLmNsYXNzTmFtZT0iZSIsMSE9PWUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCl9KSxvZT1mdW5jdGlvbihlLHQsbixyKXtuPW58fFtdLHQ9dHx8Zzt2YXIgaSxvLGEscyxsPXQubm9kZVR5cGU7aWYoMSE9PWwmJjkhPT1sKXJldHVybltdO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG47aWYoYT1sZSh0KSwhYSYmIXImJihpPUIuZXhlYyhlKSkpaWYocz1pWzFdKXtpZig5PT09bCl7aWYobz10LmdldEVsZW1lbnRCeUlkKHMpLCFvfHwhby5wYXJlbnROb2RlKXJldHVybiBuO2lmKG8uaWQ9PT1zKXJldHVybiBuLnB1c2gobyksbn1lbHNlIGlmKHQub3duZXJEb2N1bWVudCYmKG89dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHMpKSYmdWUodCxvKSYmby5pZD09PXMpcmV0dXJuIG4ucHVzaChvKSxufWVsc2V7aWYoaVsyXSlyZXR1cm4gVC5hcHBseShuLHcuY2FsbCh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpLDApKSxuO2lmKChzPWlbM10pJiZpZSYmdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBULmFwcGx5KG4sdy5jYWxsKHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShzKSwwKSksbn1yZXR1cm4gcGUoZSx0LG4scixhKX0sYWU9b2Uuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxtYXRjaDp6LG9yZGVyOlsiSUQiLCJUQUciXSxhdHRySGFuZGxlOnt9LGNyZWF0ZVBzZXVkbzpWLGZpbmQ6e0lEOmg/ZnVuY3Rpb24oZSx0LG4pe2lmKHR5cGVvZiB0LmdldEVsZW1lbnRCeUlkIT09eSYmIW4pe3ZhciByPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIHImJnIucGFyZW50Tm9kZT9bcl06W119fTpmdW5jdGlvbihlLG4scil7aWYodHlwZW9mIG4uZ2V0RWxlbWVudEJ5SWQhPT15JiYhcil7dmFyIGk9bi5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gaT9pLmlkPT09ZXx8dHlwZW9mIGkuZ2V0QXR0cmlidXRlTm9kZSE9PXkmJmkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZT09PWU/W2ldOnQ6W119fSxUQUc6bmU/ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PXkpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSl9OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTtpZigiKiI9PT1lKXtmb3IodmFyIHIsaT1bXSxvPTA7cj1uW29dO28rKykxPT09ci5ub2RlVHlwZSYmaS5wdXNoKHIpO3JldHVybiBpfXJldHVybiBufX0scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKEksIiIpLGVbM109KGVbNF18fGVbNV18fCIiKS5yZXBsYWNlKEksIiIpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXT8oZVsyXXx8b2UuZXJyb3IoZVswXSksZVszXT0rKGVbM10/ZVs0XSsoZVs1XXx8MSk6MiooImV2ZW4iPT09ZVsyXXx8Im9kZCI9PT1lWzJdKSksZVs0XT0rKGVbNl0rZVs3XXx8Im9kZCI9PT1lWzJdKSk6ZVsyXSYmb2UuZXJyb3IoZVswXSksZX0sUFNFVURPOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZVs0XTtyZXR1cm4gei5DSElMRC50ZXN0KGVbMF0pP251bGw6KG4mJih0PV8uZXhlYyhuKSkmJnQucG9wKCkmJihlWzBdPWVbMF0uc2xpY2UoMCx0WzBdLmxlbmd0aC1uLmxlbmd0aC0xKSxuPXRbMF0uc2xpY2UoMCwtMSkpLGUuc3BsaWNlKDIsMyxufHxlWzNdKSxlKX19LGZpbHRlcjp7SUQ6aD9mdW5jdGlvbihlKXtyZXR1cm4gZT1lLnJlcGxhY2UoSSwiIiksZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlKCJpZCIpPT09ZX19OmZ1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZShJLCIiKSxmdW5jdGlvbih0KXt2YXIgbj10eXBlb2YgdC5nZXRBdHRyaWJ1dGVOb2RlIT09eSYmdC5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBuJiZuLnZhbHVlPT09ZX19LFRBRzpmdW5jdGlvbihlKXtyZXR1cm4iKiI9PT1lP2Z1bmN0aW9uKCl7cmV0dXJuITB9OihlPWUucmVwbGFjZShJLCIiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVOYW1lJiZ0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1lfSl9LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PVhbZV07cmV0dXJuIHR8fCh0PVhbZV09bmV3IFJlZ0V4cCgiKF58IitDKyIpIitlKyIoIitDKyJ8JCkiKSxVLnB1c2goZSksVS5sZW5ndGg+YWUuY2FjaGVMZW5ndGgmJmRlbGV0ZSBYW1Uuc2hpZnQoKV0pLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoZS5jbGFzc05hbWV8fHR5cGVvZiBlLmdldEF0dHJpYnV0ZSE9PXkmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9fSxBVFRSOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD9mdW5jdGlvbihyKXt2YXIgaT1vZS5hdHRyKHIsZSksbz1pKyIiO2lmKG51bGw9PWkpcmV0dXJuIiE9Ij09PXQ7c3dpdGNoKHQpe2Nhc2UiPSI6cmV0dXJuIG89PT1uO2Nhc2UiIT0iOnJldHVybiBvIT09bjtjYXNlIl49IjpyZXR1cm4gbiYmMD09PW8uaW5kZXhPZihuKTtjYXNlIio9IjpyZXR1cm4gbiYmby5pbmRleE9mKG4pPi0xO2Nhc2UiJD0iOnJldHVybiBuJiZvLnN1YnN0cihvLmxlbmd0aC1uLmxlbmd0aCk9PT1uO2Nhc2Uifj0iOnJldHVybigiICIrbysiICIpLmluZGV4T2Yobik+LTE7Y2FzZSJ8PSI6cmV0dXJuIG89PT1ufHxvLnN1YnN0cigwLG4ubGVuZ3RoKzEpPT09bisiLSJ9fTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9b2UuYXR0cih0LGUpfX0sQ0hJTEQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoIm50aCI9PT1lKXt2YXIgaT14Kys7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LG8sYT0wLHM9ZTtpZigxPT09biYmMD09PXIpcmV0dXJuITA7aWYodD1lLnBhcmVudE5vZGUsdCYmKHRbTl0hPT1pfHwhZS5zaXpzZXQpKXtmb3Iocz10LmZpcnN0Q2hpbGQ7cyYmKDEhPT1zLm5vZGVUeXBlfHwocy5zaXpzZXQ9KythLHMhPT1lKSk7cz1zLm5leHRTaWJsaW5nKTt0W05dPWl9cmV0dXJuIG89ZS5zaXpzZXQtciwwPT09bj8wPT09bzpvJW49PT0wJiZvL24+PTB9fXJldHVybiBmdW5jdGlvbih0KXt2YXIgbj10O3N3aXRjaChlKXtjYXNlIm9ubHkiOmNhc2UiZmlyc3QiOmZvcig7bj1uLnByZXZpb3VzU2libGluZzspaWYoMT09PW4ubm9kZVR5cGUpcmV0dXJuITE7aWYoImZpcnN0Ij09PWUpcmV0dXJuITA7bj10O2Nhc2UibGFzdCI6Zm9yKDtuPW4ubmV4dFNpYmxpbmc7KWlmKDE9PT1uLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfX19LFBTRVVETzpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT1hZS5wc2V1ZG9zW2VdfHxhZS5wc2V1ZG9zW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIGl8fG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSksaS5zaXp6bGVGaWx0ZXI/aSh0LG4scik6aX19LHBzZXVkb3M6e25vdDpWKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mZShlLnJlcGxhY2UoRiwiJDEiKSx0LG4pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hcihlKX19KSxlbmFibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LGUuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFhZS5wc2V1ZG9zLmVtcHR5KGUpfSxlbXB0eTpmdW5jdGlvbihlKXt2YXIgdDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTspe2lmKGUubm9kZU5hbWU+IkAifHwzPT09KHQ9ZS5ub2RlVHlwZSl8fDQ9PT10KXJldHVybiExO2U9ZS5uZXh0U2libGluZ31yZXR1cm4hMH0sY29udGFpbnM6VihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxjZSh0KSkuaW5kZXhPZihlKT4tMX19KSxoYXM6VihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG9lKGUsdCkubGVuZ3RoPjB9fSksaGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBSLnRlc3QoZS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4iaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT0odD1lLnR5cGUpJiYobnVsbD09KG49ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fG4udG9Mb3dlckNhc2UoKT09PXQpfSxyYWRpbzpHKCJyYWRpbyIpLGNoZWNrYm94OkcoImNoZWNrYm94IiksZmlsZTpHKCJmaWxlIikscGFzc3dvcmQ6RygicGFzc3dvcmQiKSxpbWFnZTpHKCJpbWFnZSIpLHN1Ym1pdDpRKCJzdWJtaXQiKSxyZXNldDpRKCJyZXNldCIpLGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiAkLnRlc3QoZS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gZT09PXQuYWN0aXZlRWxlbWVudCYmKCF0Lmhhc0ZvY3VzfHx0Lmhhc0ZvY3VzKCkpJiYoISFlLnR5cGV8fCEhZS5ocmVmKX0sYWN0aXZlOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09ZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9fSxzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/ZS5zbGljZSgxKTpbZVswXV19LGxhc3Q6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUucG9wKCk7cmV0dXJuIG4/ZTpbcl19LGV2ZW46ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPW4/MTowLG89ZS5sZW5ndGg7aTxvO2krPTIpci5wdXNoKGVbaV0pO3JldHVybiByfSxvZGQ6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXSxpPW4/MDoxLG89ZS5sZW5ndGg7aTxvO2krPTIpci5wdXNoKGVbaV0pO3JldHVybiByfSxsdDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/ZS5zbGljZSgrdCk6ZS5zbGljZSgwLCt0KX0sZ3Q6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP2Uuc2xpY2UoMCwrdCsxKTplLnNsaWNlKCt0KzEpfSxlcTpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5zcGxpY2UoK3QsMSk7cmV0dXJuIG4/ZTpyfX19O2FlLnNldEZpbHRlcnMubnRoPWFlLnNldEZpbHRlcnMuZXEsYWUuZmlsdGVycz1hZS5wc2V1ZG9zLHJlfHwoYWUuYXR0ckhhbmRsZT17aHJlZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSx0eXBlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgidHlwZSIpfX0pLHRlJiYoYWUub3JkZXIucHVzaCgiTkFNRSIpLGFlLmZpbmQuTkFNRT1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0LmdldEVsZW1lbnRzQnlOYW1lIT09eSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5TmFtZShlKX0pLGllJiYoYWUub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1MiKSxhZS5maW5kLkNMQVNTPWZ1bmN0aW9uKGUsdCxuKXtpZih0eXBlb2YgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09eSYmIW4pcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0pO3RyeXt3LmNhbGwobS5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHNlKXt3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPVtdO3Q9dGhpc1tlXTtlKyspbi5wdXNoKHQpO3JldHVybiBufX12YXIgbGU9b2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhdCYmIkhUTUwiIT09dC5ub2RlTmFtZX0sdWU9b2UuY29udGFpbnM9bS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihlLHQpe3JldHVybiEhKDE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpfTptLmNvbnRhaW5zP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEhKHImJjE9PT1yLm5vZGVUeXBlJiZuLmNvbnRhaW5zJiZuLmNvbnRhaW5zKHIpKX06ZnVuY3Rpb24oZSx0KXtmb3IoO3Q9dC5wYXJlbnROb2RlOylpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sY2U9b2UuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdCxuPSIiLHI9MCxpPWUubm9kZVR5cGU7aWYoaSl7aWYoMT09PWl8fDk9PT1pfHwxMT09PWkpe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudClyZXR1cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpbis9Y2UoZSl9ZWxzZSBpZigzPT09aXx8ND09PWkpcmV0dXJuIGUubm9kZVZhbHVlfWVsc2UgZm9yKDt0PWVbcl07cisrKW4rPWNlKHQpO3JldHVybiBufTtvZS5hdHRyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1sZShlKTtyZXR1cm4gcnx8KHQ9dC50b0xvd2VyQ2FzZSgpKSxhZS5hdHRySGFuZGxlW3RdP2FlLmF0dHJIYW5kbGVbdF0oZSk6ZWV8fHI/ZS5nZXRBdHRyaWJ1dGUodCk6KG49ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpLG4/ImJvb2xlYW4iPT10eXBlb2YgZVt0XT9lW3RdP3Q6bnVsbDpuLnNwZWNpZmllZD9uLnZhbHVlOm51bGw6bnVsbCl9LG9lLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sWzAsMF0uc29ydChmdW5jdGlvbigpe3JldHVybiBiPTB9KSxtLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP3A9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQ/KHY9ITAsMCk6KGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/NCZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pPy0xOjF9OihwPWZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIHY9ITAsMDtpZihlLnNvdXJjZUluZGV4JiZ0LnNvdXJjZUluZGV4KXJldHVybiBlLnNvdXJjZUluZGV4LXQuc291cmNlSW5kZXg7dmFyIG4scixpPVtdLG89W10sYT1lLnBhcmVudE5vZGUscz10LnBhcmVudE5vZGUsbD1hO2lmKGE9PT1zKXJldHVybiBkKGUsdCk7aWYoIWEpcmV0dXJuLTE7aWYoIXMpcmV0dXJuIDE7Zm9yKDtsOylpLnVuc2hpZnQobCksbD1sLnBhcmVudE5vZGU7Zm9yKGw9cztsOylvLnVuc2hpZnQobCksbD1sLnBhcmVudE5vZGU7bj1pLmxlbmd0aCxyPW8ubGVuZ3RoO2Zvcih2YXIgdT0wO3U8biYmdTxyO3UrKylpZihpW3VdIT09b1t1XSlyZXR1cm4gZChpW3VdLG9bdV0pO3JldHVybiB1PT09bj9kKGUsb1t1XSwtMSk6ZChpW3VdLHQsMSl9LGQ9ZnVuY3Rpb24oZSx0LG4pe2lmKGU9PT10KXJldHVybiBuO2Zvcih2YXIgcj1lLm5leHRTaWJsaW5nO3I7KXtpZihyPT09dClyZXR1cm4tMTtyPXIubmV4dFNpYmxpbmd9cmV0dXJuIDF9KSxvZS51bmlxdWVTb3J0PWZ1bmN0aW9uKGUpe3ZhciB0LG49MTtpZihwJiYodj1iLGUuc29ydChwKSx2KSlmb3IoO3Q9ZVtuXTtuKyspdD09PWVbbi0xXSYmZS5zcGxpY2Uobi0tLDEpO3JldHVybiBlfTt2YXIgZmU9b2UuY29tcGlsZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxhLHM9WVtlXTtpZihzJiZzLmNvbnRleHQ9PT10KXJldHVybiBzO2ZvcihpPW8oZSx0LG4pLGE9MDtyPWlbYV07YSsrKWlbYV09bChyLHQsbik7cmV0dXJuIHM9WVtlXT11KGkpLHMuY29udGV4dD10LHMucnVucz1zLmRpcnJ1bnM9MCxKLnB1c2goZSksSi5sZW5ndGg+YWUuY2FjaGVMZW5ndGgmJmRlbGV0ZSBZW0ouc2hpZnQoKV0sc307b2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBvZShlLG51bGwsbnVsbCx0KX0sb2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9lKHQsbnVsbCxudWxsLFtlXSkubGVuZ3RoPjB9O3ZhciBwZT1mdW5jdGlvbihlLHQsbixyLG8pe2U9ZS5yZXBsYWNlKEYsIiQxIik7dmFyIGEscyxsLHUscCxkLGgsZyxtLHk9ZS5tYXRjaChPKSx2PWUubWF0Y2gocSksYj10Lm5vZGVUeXBlO2lmKHouUE9TLnRlc3QoZSkpcmV0dXJuIGkoZSx0LG4scix5KTtpZihyKWE9dy5jYWxsKHIsMCk7ZWxzZSBpZih5JiYxPT09eS5sZW5ndGgpe2lmKHYubGVuZ3RoPjEmJjk9PT1iJiYhbyYmKHk9ei5JRC5leGVjKHZbMF0pKSl7aWYodD1hZS5maW5kLklEKHlbMV0sdCxvKVswXSwhdClyZXR1cm4gbjtlPWUuc2xpY2Uodi5zaGlmdCgpLmxlbmd0aCl9Zm9yKGc9KHk9Vy5leGVjKHZbMF0pKSYmIXkuaW5kZXgmJnQucGFyZW50Tm9kZXx8dCxtPXYucG9wKCksZD1tLnNwbGl0KCI6bm90IilbMF0sbD0wLHU9YWUub3JkZXIubGVuZ3RoO2w8dTtsKyspaWYoaD1hZS5vcmRlcltsXSx5PXpbaF0uZXhlYyhkKSl7aWYoYT1hZS5maW5kW2hdKCh5WzFdfHwiIikucmVwbGFjZShJLCIiKSxnLG8pLG51bGw9PWEpY29udGludWU7ZD09PW0mJihlPWUuc2xpY2UoMCxlLmxlbmd0aC1tLmxlbmd0aCkrZC5yZXBsYWNlKHpbaF0sIiIpLGV8fFQuYXBwbHkobix3LmNhbGwoYSwwKSkpO2JyZWFrfX1pZihlKWZvcihzPWZlKGUsdCxvKSxmPXMuZGlycnVucysrLG51bGw9PWEmJihhPWFlLmZpbmQuVEFHKCIqIixXLnRlc3QoZSkmJnQucGFyZW50Tm9kZXx8dCkpLGw9MDtwPWFbbF07bCsrKWM9cy5ydW5zKysscyhwLHQpJiZuLnB1c2gocCk7cmV0dXJuIG59O2cucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgZSx0PXBlLG49Lyd8XFwvZyxyPS9cPVtceDIwXHRcclxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLGk9W10sbz1bIjphY3RpdmUiXSxhPW0ubWF0Y2hlc1NlbGVjdG9yfHxtLm1vek1hdGNoZXNTZWxlY3Rvcnx8bS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG0ub01hdGNoZXNTZWxlY3Rvcnx8bS5tc01hdGNoZXNTZWxlY3RvcjtaKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8c2VsZWN0PjxvcHRpb24gc2VsZWN0ZWQ+PC9vcHRpb24+PC9zZWxlY3Q+IixlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fGkucHVzaCgiXFxbIitDKyIqKD86Y2hlY2tlZHxkaXNhYmxlZHxpc21hcHxtdWx0aXBsZXxyZWFkb25seXxzZWxlY3RlZHx2YWx1ZSkiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxpLnB1c2goIjpjaGVja2VkIil9KSxaKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8cCB0ZXN0PScnPjwvcD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW3Rlc3RePScnXSIpLmxlbmd0aCYmaS5wdXNoKCJbKl4kXT0iK0MrIiooPzpcIlwifCcnKSIpLGUuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0naGlkZGVuJz4iLGUucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fGkucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKX0pLGk9aS5sZW5ndGgmJm5ldyBSZWdFeHAoaS5qb2luKCJ8IikpLHBlPWZ1bmN0aW9uKGUscixvLGEscyl7aWYoIShhfHxzfHxpJiZpLnRlc3QoZSkpKWlmKDk9PT1yLm5vZGVUeXBlKXRyeXtyZXR1cm4gVC5hcHBseShvLHcuY2FsbChyLnF1ZXJ5U2VsZWN0b3JBbGwoZSksMCkpLG99Y2F0Y2gobCl7fWVsc2UgaWYoMT09PXIubm9kZVR5cGUmJiJvYmplY3QiIT09ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgdT1yLmdldEF0dHJpYnV0ZSgiaWQiKSxjPXV8fE4sZj1XLnRlc3QoZSkmJnIucGFyZW50Tm9kZXx8cjt1P2M9Yy5yZXBsYWNlKG4sIlxcJCYiKTpyLnNldEF0dHJpYnV0ZSgiaWQiLGMpO3RyeXtyZXR1cm4gVC5hcHBseShvLHcuY2FsbChmLnF1ZXJ5U2VsZWN0b3JBbGwoZS5yZXBsYWNlKE8sIltpZD0nIitjKyInXSAkJiIpKSwwKSksb31jYXRjaChsKXt9ZmluYWxseXt1fHxyLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19cmV0dXJuIHQoZSxyLG8sYSxzKX0sYSYmKFooZnVuY3Rpb24odCl7ZT1hLmNhbGwodCwiZGl2Iik7dHJ5e2EuY2FsbCh0LCJbdGVzdCE9JyddOnNpenpsZSIpLG8ucHVzaChhZS5tYXRjaC5QU0VVRE8pfWNhdGNoKG4pe319KSxvPW5ldyBSZWdFeHAoby5qb2luKCJ8IikpLG9lLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbih0LG4pe2lmKG49bi5yZXBsYWNlKHIsIj0nJDEnXSIpLCEobGUodCl8fG8udGVzdChuKXx8aSYmaS50ZXN0KG4pKSl0cnl7dmFyIHM9YS5jYWxsKHQsbik7aWYoc3x8ZXx8dC5kb2N1bWVudCYmMTEhPT10LmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBzfWNhdGNoKGwpe31yZXR1cm4gb2UobixudWxsLG51bGwsW3RdKS5sZW5ndGg+MH0pfSgpLG9lLmF0dHI9Sy5hdHRyLEsuZmluZD1vZSxLLmV4cHI9b2Uuc2VsZWN0b3JzLEsuZXhwclsiOiJdPUsuZXhwci5wc2V1ZG9zLEsudW5pcXVlPW9lLnVuaXF1ZVNvcnQsSy50ZXh0PW9lLmdldFRleHQsSy5pc1hNTERvYz1vZS5pc1hNTCxLLmNvbnRhaW5zPW9lLmNvbnRhaW5zfShlKTt2YXIgTWU9L1VudGlsJC8sT2U9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sX2U9L14uW146I1xbXC4sXSokLyxxZT1LLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LEJlPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O0suZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBLKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTAsbj1zLmxlbmd0aDt0PG47dCsrKWlmKEsuY29udGFpbnMoc1t0XSx0aGlzKSlyZXR1cm4hMH0pO2ZvcihhPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixlKSx0PTAsbj10aGlzLmxlbmd0aDt0PG47dCsrKWlmKHI9YS5sZW5ndGgsSy5maW5kKGUsdGhpc1t0XSxhKSx0PjApZm9yKGk9cjtpPGEubGVuZ3RoO2krKylmb3Iobz0wO288cjtvKyspaWYoYVtvXT09PWFbaV0pe2Euc3BsaWNlKGktLSwxKTticmVha31yZXR1cm4gYX0saGFzOmZ1bmN0aW9uKGUpe3ZhciB0LG49SyhlLHRoaXMpLHI9bi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHQ9MDt0PHI7dCsrKWlmKEsuY29udGFpbnModGhpcyxuW3RdKSlyZXR1cm4hMH0pfSxub3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHUodGhpcyxlLCExKSwibm90IixlKX0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayh1KHRoaXMsZSwhMCksImZpbHRlciIsZSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhZSYmKCJzdHJpbmciPT10eXBlb2YgZT9xZS50ZXN0KGUpP0soZSx0aGlzLmNvbnRleHQpLmluZGV4KHRoaXNbMF0pPj0wOksuZmlsdGVyKGUsdGhpcykubGVuZ3RoPjA6dGhpcy5maWx0ZXIoZSkubGVuZ3RoPjApfSxjbG9zZXN0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT1xZS50ZXN0KGUpfHwic3RyaW5nIiE9dHlwZW9mIGU/SyhlLHR8fHRoaXMuY29udGV4dCk6MDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbi5vd25lckRvY3VtZW50JiZuIT09dCYmMTEhPT1uLm5vZGVUeXBlOyl7aWYoYT9hLmluZGV4KG4pPi0xOksuZmluZC5tYXRjaGVzU2VsZWN0b3IobixlKSl7by5wdXNoKG4pO2JyZWFrfW49bi5wYXJlbnROb2RlfXJldHVybiBvPW8ubGVuZ3RoPjE/Sy51bmlxdWUobyk6byx0aGlzLnB1c2hTdGFjayhvLCJjbG9zZXN0IixlKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP0suaW5BcnJheSh0aGlzWzBdLEsoZSkpOksuaW5BcnJheShlLmpxdWVyeT9lWzBdOmUsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGUsdCl7dmFyIG49InN0cmluZyI9PXR5cGVvZiBlP0soZSx0KTpLLm1ha2VBcnJheShlJiZlLm5vZGVUeXBlP1tlXTplKSxyPUsubWVyZ2UodGhpcy5nZXQoKSxuKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2socyhuWzBdKXx8cyhyWzBdKT9yOksudW5pcXVlKHIpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksSy5mbi5hbmRTZWxmPUsuZm4uYWRkQmFjayxLLmVhY2goe3BhcmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExIT09dC5ub2RlVHlwZT90Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIEsuZGlyKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSy5kaXIoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gbChlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gSy5kaXIoZSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4gSy5kaXIoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEsuZGlyKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSy5kaXIoZSwicHJldmlvdXNTaWJsaW5nIixuKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIEsuc2libGluZygoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIEsuc2libGluZyhlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gSy5ub2RlTmFtZShlLCJpZnJhbWUiKT9lLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93LmRvY3VtZW50OksubWVyZ2UoW10sZS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGUsdCl7Sy5mbltlXT1mdW5jdGlvbihuLHIpe3ZhciBpPUsubWFwKHRoaXMsdCxuKTtyZXR1cm4gTWUudGVzdChlKXx8KHI9biksciYmInN0cmluZyI9PXR5cGVvZiByJiYoaT1LLmZpbHRlcihyLGkpKSxpPXRoaXMubGVuZ3RoPjEmJiFCZVtlXT9LLnVuaXF1ZShpKTppLHRoaXMubGVuZ3RoPjEmJk9lLnRlc3QoZSkmJihpPWkucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhpLGUsWS5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX19KSxLLmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoP0suZmluZC5tYXRjaGVzU2VsZWN0b3IodFswXSxlKT9bdFswXV06W106Sy5maW5kLm1hdGNoZXMoZSx0KX0sZGlyOmZ1bmN0aW9uKGUsbixyKXtmb3IodmFyIGk9W10sbz1lW25dO28mJjkhPT1vLm5vZGVUeXBlJiYocj09PXR8fDEhPT1vLm5vZGVUeXBlfHwhSyhvKS5pcyhyKSk7KTE9PT1vLm5vZGVUeXBlJiZpLnB1c2gobyksbz1vW25dO3JldHVybiBpfSxzaWJsaW5nOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufX0pO3ZhciBXZT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsUGU9LyBqUXVlcnlcZCs9Iig/Om51bGx8XGQrKSIvZyxSZT0vXlxzKy8sJGU9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9naSxJZT0vPChbXHc6XSspLyx6ZT0vPHRib2R5L2ksWGU9Lzx8JiM/XHcrOy8sVWU9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxZZT0vPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLEplPW5ldyBSZWdFeHAoIjwoPzoiK1dlKyIpW1xccy8+XSIsImkiKSxWZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvLEdlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLFFlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksS2U9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKXxbXF1cLV17Mn0+XHMqJC9nLFplPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19LGV0PWMoUiksdHQ9ZXQuYXBwZW5kQ2hpbGQoUi5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CitaZS5vcHRncm91cD1aZS5vcHRpb24sWmUudGJvZHk9WmUudGZvb3Q9WmUuY29sZ3JvdXA9WmUuY2FwdGlvbj1aZS50aGVhZCxaZS50aD1aZS50ZCxLLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KFplLl9kZWZhdWx0PVsxLCJYPGRpdj4iLCI8L2Rpdj4iXSksSy5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEsuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10P0sudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fFIpLmNyZWF0ZVRleHROb2RlKGUpKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSx3cmFwQWxsOmZ1bmN0aW9uKGUpe2lmKEsuaXNGdW5jdGlvbihlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe0sodGhpcykud3JhcEFsbChlLmNhbGwodGhpcyx0KSl9KTtpZih0aGlzWzBdKXt2YXIgdD1LKGUsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZ0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSx0Lm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzO2UuZmlyc3RDaGlsZCYmMT09PWUuZmlyc3RDaGlsZC5ub2RlVHlwZTspZT1lLmZpcnN0Q2hpbGQ7cmV0dXJuIGV9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihlKXtyZXR1cm4gSy5pc0Z1bmN0aW9uKGUpP3RoaXMuZWFjaChmdW5jdGlvbih0KXtLKHRoaXMpLndyYXBJbm5lcihlLmNhbGwodGhpcyx0KSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1LKHRoaXMpLG49dC5jb250ZW50cygpO24ubGVuZ3RoP24ud3JhcEFsbChlKTp0LmFwcGVuZChlKX0pfSx3cmFwOmZ1bmN0aW9uKGUpe3ZhciB0PUsuaXNGdW5jdGlvbihlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pe0sodGhpcykud3JhcEFsbCh0P2UuY2FsbCh0aGlzLG4pOmUpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtLLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8Syh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihlKXsoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZSkmJnRoaXMuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihlKXsoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZSkmJnRoaXMuaW5zZXJ0QmVmb3JlKGUsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZighcyh0aGlzWzBdKSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGU9Sy5jbGVhbihhcmd1bWVudHMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhLLm1lcmdlKGUsdGhpcyksImJlZm9yZSIsdGhpcy5zZWxlY3Rvcil9fSxhZnRlcjpmdW5jdGlvbigpe2lmKCFzKHRoaXNbMF0pKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgZT1LLmNsZWFuKGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEsubWVyZ2UodGhpcyxlKSwiYWZ0ZXIiLHRoaXMuc2VsZWN0b3IpfX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHI9MDtudWxsIT0obj10aGlzW3JdKTtyKyspZSYmIUsuZmlsdGVyKGUsW25dKS5sZW5ndGh8fCghdCYmMT09PW4ubm9kZVR5cGUmJihLLmNsZWFuRGF0YShuLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLEsuY2xlYW5EYXRhKFtuXSkpLG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO251bGwhPShlPXRoaXNbdF0pO3QrKylmb3IoMT09PWUubm9kZVR5cGUmJksuY2xlYW5EYXRhKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIEsuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIEsuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSl7dmFyIG49dGhpc1swXXx8e30scj0wLGk9dGhpcy5sZW5ndGg7aWYoZT09PXQpcmV0dXJuIDE9PT1uLm5vZGVUeXBlP24uaW5uZXJIVE1MLnJlcGxhY2UoUGUsIiIpOnQ7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYhVWUudGVzdChlKSYmKEsuc3VwcG9ydC5odG1sU2VyaWFsaXplfHwhSmUudGVzdChlKSkmJihLLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFSZS50ZXN0KGUpKSYmIVplWyhJZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1lLnJlcGxhY2UoJGUsIjwkMT48LyQyPiIpO3RyeXtmb3IoO3I8aTtyKyspbj10aGlzW3JdfHx7fSwxPT09bi5ub2RlVHlwZSYmKEsuY2xlYW5EYXRhKG4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksbi5pbm5lckhUTUw9ZSk7bj0wfWNhdGNoKG8pe319biYmdGhpcy5lbXB0eSgpLmFwcGVuZChlKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihlKXtyZXR1cm4gcyh0aGlzWzBdKT90aGlzLmxlbmd0aD90aGlzLnB1c2hTdGFjayhLKEsuaXNGdW5jdGlvbihlKT9lKCk6ZSksInJlcGxhY2VXaXRoIixlKTp0aGlzOksuaXNGdW5jdGlvbihlKT90aGlzLmVhY2goZnVuY3Rpb24odCl7dmFyIG49Syh0aGlzKSxyPW4uaHRtbCgpO24ucmVwbGFjZVdpdGgoZS5jYWxsKHRoaXMsdCxyKSl9KTooInN0cmluZyIhPXR5cGVvZiBlJiYoZT1LKGUpLmRldGFjaCgpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLm5leHRTaWJsaW5nLG49dGhpcy5wYXJlbnROb2RlO0sodGhpcykucmVtb3ZlKCksdD9LKHQpLmJlZm9yZShlKTpLKG4pLmFwcGVuZChlKX0pKX0sZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlbW92ZShlLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oZSxuLHIpe2U9W10uY29uY2F0LmFwcGx5KFtdLGUpO3ZhciBpLG8sYSxzLGw9MCx1PWVbMF0sYz1bXSxwPXRoaXMubGVuZ3RoO2lmKCFLLnN1cHBvcnQuY2hlY2tDbG9uZSYmcD4xJiYic3RyaW5nIj09dHlwZW9mIHUmJkdlLnRlc3QodSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0sodGhpcykuZG9tTWFuaXAoZSxuLHIpfSk7aWYoSy5pc0Z1bmN0aW9uKHUpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSl7dmFyIG89Syh0aGlzKTtlWzBdPXUuY2FsbCh0aGlzLGksbj9vLmh0bWwoKTp0KSxvLmRvbU1hbmlwKGUsbixyKX0pO2lmKHRoaXNbMF0pe2lmKGk9Sy5idWlsZEZyYWdtZW50KGUsdGhpcyxjKSxhPWkuZnJhZ21lbnQsbz1hLmZpcnN0Q2hpbGQsMT09PWEuY2hpbGROb2Rlcy5sZW5ndGgmJihhPW8pLG8pZm9yKG49biYmSy5ub2RlTmFtZShvLCJ0ciIpLHM9aS5jYWNoZWFibGV8fHAtMTtsPHA7bCsrKXIuY2FsbChuJiZLLm5vZGVOYW1lKHRoaXNbbF0sInRhYmxlIik/Zih0aGlzW2xdLCJ0Ym9keSIpOnRoaXNbbF0sbD09PXM/YTpLLmNsb25lKGEsITAsITApKTthPW89bnVsbCxjLmxlbmd0aCYmSy5lYWNoKGMsZnVuY3Rpb24oZSx0KXt0LnNyYz9LLmFqYXg/Sy5hamF4KHt1cmw6dC5zcmMsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KTpLLmVycm9yKCJubyBhamF4Iik6Sy5nbG9iYWxFdmFsKCh0LnRleHR8fHQudGV4dENvbnRlbnR8fHQuaW5uZXJIVE1MfHwiIikucmVwbGFjZShLZSwiIikpLHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfSl9cmV0dXJuIHRoaXN9fSksSy5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGUsbixyKXt2YXIgaSxvLGEscz1lWzBdO3JldHVybiBuPW58fFIsbj0oblswXXx8bikub3duZXJEb2N1bWVudHx8blswXXx8biwidW5kZWZpbmVkIj09dHlwZW9mIG4uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCYmKG49UiksMT09PWUubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIHMmJnMubGVuZ3RoPDUxMiYmbj09PVImJiI8Ij09PXMuY2hhckF0KDApJiYhWWUudGVzdChzKSYmKEsuc3VwcG9ydC5jaGVja0Nsb25lfHwhR2UudGVzdChzKSkmJihLLnN1cHBvcnQuaHRtbDVDbG9uZXx8IUplLnRlc3QocykpJiYobz0hMCxpPUsuZnJhZ21lbnRzW3NdLGE9aSE9PXQpLGl8fChpPW4uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEsuY2xlYW4oZSxuLGksciksbyYmKEsuZnJhZ21lbnRzW3NdPWEmJmkpKSx7ZnJhZ21lbnQ6aSxjYWNoZWFibGU6b319LEsuZnJhZ21lbnRzPXt9LEsuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsdCl7Sy5mbltlXT1mdW5jdGlvbihuKXt2YXIgcixpPTAsbz1bXSxhPUsobikscz1hLmxlbmd0aCxsPTE9PT10aGlzLmxlbmd0aCYmdGhpc1swXS5wYXJlbnROb2RlO2lmKChudWxsPT1sfHxsJiYxMT09PWwubm9kZVR5cGUmJjE9PT1sLmNoaWxkTm9kZXMubGVuZ3RoKSYmMT09PXMpcmV0dXJuIGFbdF0odGhpc1swXSksdGhpcztmb3IoO2k8cztpKyspcj0oaT4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpLEsoYVtpXSlbdF0ociksbz1vLmNvbmNhdChyKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobyxlLGEuc2VsZWN0b3IpfX0pLEsuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE7aWYoSy5zdXBwb3J0Lmh0bWw1Q2xvbmV8fEsuaXNYTUxEb2MoZSl8fCFKZS50ZXN0KCI8IitlLm5vZGVOYW1lKyI+Iik/YT1lLmNsb25lTm9kZSghMCk6KHR0LmlubmVySFRNTD1lLm91dGVySFRNTCx0dC5yZW1vdmVDaGlsZChhPXR0LmZpcnN0Q2hpbGQpKSwhKEsuc3VwcG9ydC5ub0Nsb25lRXZlbnQmJksuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Sy5pc1hNTERvYyhlKSkpZm9yKGQoZSxhKSxyPWgoZSksaT1oKGEpLG89MDtyW29dOysrbylpW29dJiZkKHJbb10saVtvXSk7aWYodCYmKHAoZSxhKSxuKSlmb3Iocj1oKGUpLGk9aChhKSxvPTA7cltvXTsrK28pcChyW29dLGlbb10pO3JldHVybiByPWk9bnVsbCxhfSxjbGVhbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyxsLHUsZixwLGQsaCxtLHk9MCx2PVtdO2Zvcih0JiYidW5kZWZpbmVkIiE9dHlwZW9mIHQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8KHQ9Uiksbz10PT09UiYmZXQ7bnVsbCE9KGE9ZVt5XSk7eSsrKWlmKCJudW1iZXIiPT10eXBlb2YgYSYmKGErPSIiKSxhKXtpZigic3RyaW5nIj09dHlwZW9mIGEpaWYoWGUudGVzdChhKSl7Zm9yKG89b3x8Yyh0KSxmPWZ8fG8uYXBwZW5kQ2hpbGQodC5jcmVhdGVFbGVtZW50KCJkaXYiKSksYT1hLnJlcGxhY2UoJGUsIjwkMT48LyQyPiIpLHM9KEllLmV4ZWMoYSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksbD1aZVtzXXx8WmUuX2RlZmF1bHQsdT1sWzBdLGYuaW5uZXJIVE1MPWxbMV0rYStsWzJdO3UtLTspZj1mLmxhc3RDaGlsZDtpZighSy5zdXBwb3J0LnRib2R5KWZvcihwPXplLnRlc3QoYSksZD0idGFibGUiIT09c3x8cD8iPHRhYmxlPiIhPT1sWzFdfHxwP1tdOmYuY2hpbGROb2RlczpmLmZpcnN0Q2hpbGQmJmYuZmlyc3RDaGlsZC5jaGlsZE5vZGVzLGk9ZC5sZW5ndGgtMTtpPj0wOy0taSlLLm5vZGVOYW1lKGRbaV0sInRib2R5IikmJiFkW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZkW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZFtpXSk7IUsuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmUmUudGVzdChhKSYmZi5pbnNlcnRCZWZvcmUodC5jcmVhdGVUZXh0Tm9kZShSZS5leGVjKGEpWzBdKSxmLmZpcnN0Q2hpbGQpLGE9Zi5jaGlsZE5vZGVzLGY9by5sYXN0Q2hpbGR9ZWxzZSBhPXQuY3JlYXRlVGV4dE5vZGUoYSk7YS5ub2RlVHlwZT92LnB1c2goYSk6dj1LLm1lcmdlKHYsYSl9aWYoZiYmKG8ucmVtb3ZlQ2hpbGQoZiksYT1mPW89bnVsbCksIUsuc3VwcG9ydC5hcHBlbmRDaGVja2VkKWZvcih5PTA7bnVsbCE9KGE9dlt5XSk7eSsrKUsubm9kZU5hbWUoYSwiaW5wdXQiKT9nKGEpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmSy5ncmVwKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksZyk7aWYobilmb3IoaD1mdW5jdGlvbihlKXtpZighZS50eXBlfHxRZS50ZXN0KGUudHlwZSkpcmV0dXJuIHI/ci5wdXNoKGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk6ZSk6bi5hcHBlbmRDaGlsZChlKX0seT0wO251bGwhPShhPXZbeV0pO3krKylLLm5vZGVOYW1lKGEsInNjcmlwdCIpJiZoKGEpfHwobi5hcHBlbmRDaGlsZChhKSwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJihtPUsuZ3JlcChLLm1lcmdlKFtdLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSxoKSx2LnNwbGljZS5hcHBseSh2LFt5KzEsMF0uY29uY2F0KG0pKSx5Kz1tLmxlbmd0aCkpO3JldHVybiB2fSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scixpLG8sYT0wLHM9Sy5leHBhbmRvLGw9Sy5jYWNoZSx1PUsuc3VwcG9ydC5kZWxldGVFeHBhbmRvLGM9Sy5ldmVudC5zcGVjaWFsO251bGwhPShpPWVbYV0pO2ErKylpZigodHx8Sy5hY2NlcHREYXRhKGkpKSYmKHI9aVtzXSxuPXImJmxbcl0pKXtpZihuLmV2ZW50cylmb3IobyBpbiBuLmV2ZW50cyljW29dP0suZXZlbnQucmVtb3ZlKGksbyk6Sy5yZW1vdmVFdmVudChpLG8sbi5oYW5kbGUpO2xbcl0mJihkZWxldGUgbFtyXSx1P2RlbGV0ZSBpW3NdOmkucmVtb3ZlQXR0cmlidXRlP2kucmVtb3ZlQXR0cmlidXRlKHMpOmlbc109bnVsbCxLLmRlbGV0ZWRJZHMucHVzaChyKSl9fX0pLGZ1bmN0aW9uKCl7dmFyIGUsdDtLLnVhTWF0Y2g9ZnVuY3Rpb24oZSl7ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIHQ9LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhlKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhlKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMoZSl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoZSl8fGUuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8KS8uZXhlYyhlKXx8W107cmV0dXJue2Jyb3dzZXI6dFsxXXx8IiIsdmVyc2lvbjp0WzJdfHwiMCJ9fSxlPUsudWFNYXRjaChJLnVzZXJBZ2VudCksdD17fSxlLmJyb3dzZXImJih0W2UuYnJvd3Nlcl09ITAsdC52ZXJzaW9uPWUudmVyc2lvbiksdC53ZWJraXQmJih0LnNhZmFyaT0hMCksSy5icm93c2VyPXQsSy5zdWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbil7cmV0dXJuIG5ldyBlLmZuLmluaXQodCxuKX1LLmV4dGVuZCghMCxlLHRoaXMpLGUuc3VwZXJjbGFzcz10aGlzLGUuZm49ZS5wcm90b3R5cGU9dGhpcygpLGUuZm4uY29uc3RydWN0b3I9ZSxlLnN1Yj10aGlzLnN1YixlLmZuLmluaXQ9ZnVuY3Rpb24gbihuLHIpe3JldHVybiByJiZyIGluc3RhbmNlb2YgSyYmIShyIGluc3RhbmNlb2YgZSkmJihyPWUocikpLEsuZm4uaW5pdC5jYWxsKHRoaXMsbixyLHQpfSxlLmZuLmluaXQucHJvdG90eXBlPWUuZm47dmFyIHQ9ZShSKTtyZXR1cm4gZX19KCk7dmFyIG50LHJ0LGl0LG90PS9hbHBoYVwoW14pXSpcKS9pLGF0PS9vcGFjaXR5PShbXildKikvLHN0PS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLyxsdD0vXm1hcmdpbi8sdXQ9bmV3IFJlZ0V4cCgiXigiK1orIikoLiopJCIsImkiKSxjdD1uZXcgUmVnRXhwKCJeKCIrWisiKSg/IXB4KVthLXolXSskIiwiaSIpLGZ0PW5ldyBSZWdFeHAoIl4oWy0rXSk9KCIrWisiKSIsImkiKSxwdD17fSxkdD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0saHQ9e2xldHRlclNwYWNpbmc6MCxmb250V2VpZ2h0OjQwMCxsaW5lSGVpZ2h0OjF9LGd0PVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sbXQ9WyJXZWJraXQiLCJPIiwiTW96IiwibXMiXSx5dD1LLmZuLnRvZ2dsZTtLLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIEsuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSxuLHIpe3JldHVybiByIT09dD9LLnN0eWxlKGUsbixyKTpLLmNzcyhlLG4pfSxlLG4sYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiB2KHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHYodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihlLHQpe3ZhciBuPSJib29sZWFuIj09dHlwZW9mIGU7cmV0dXJuIEsuaXNGdW5jdGlvbihlKSYmSy5pc0Z1bmN0aW9uKHQpP3l0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmVhY2goZnVuY3Rpb24oKXsobj9lOnkodGhpcykpP0sodGhpcykuc2hvdygpOksodGhpcykuaGlkZSgpfSl9fSksSy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1udChlLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1uPyIxIjpufX19fSxjc3NOdW1iZXI6e2ZpbGxPcGFjaXR5OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7ImZsb2F0IjpLLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGUsbixyLGkpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIG8sYSxzLGw9Sy5jYW1lbENhc2UobiksdT1lLnN0eWxlO2lmKG49Sy5jc3NQcm9wc1tsXXx8KEsuY3NzUHJvcHNbbF09bSh1LGwpKSxzPUsuY3NzSG9va3Nbbl18fEsuY3NzSG9va3NbbF0scj09PXQpcmV0dXJuIHMmJiJnZXQiaW4gcyYmKG89cy5nZXQoZSwhMSxpKSkhPT10P286dVtuXTtpZihhPXR5cGVvZiByLCJzdHJpbmciPT09YSYmKG89ZnQuZXhlYyhyKSkmJihyPShvWzFdKzEpKm9bMl0rcGFyc2VGbG9hdChLLmNzcyhlLG4pKSxhPSJudW1iZXIiKSwhKG51bGw9PXJ8fCJudW1iZXIiPT09YSYmaXNOYU4ocil8fCgibnVtYmVyIj09PWEmJiFLLmNzc051bWJlcltsXSYmKHIrPSJweCIpLHMmJiJzZXQiaW4gcyYmKHI9cy5zZXQoZSxyLGkpKT09PXQpKSl0cnl7dVtuXT1yfWNhdGNoKGMpe319fSxjc3M6ZnVuY3Rpb24oZSxuLHIsaSl7dmFyIG8sYSxzLGw9Sy5jYW1lbENhc2Uobik7cmV0dXJuIG49Sy5jc3NQcm9wc1tsXXx8KEsuY3NzUHJvcHNbbF09bShlLnN0eWxlLGwpKSxzPUsuY3NzSG9va3Nbbl18fEsuY3NzSG9va3NbbF0scyYmImdldCJpbiBzJiYobz1zLmdldChlLCEwLGkpKSxvPT09dCYmKG89bnQoZSxuKSksIm5vcm1hbCI9PT1vJiZuIGluIGh0JiYobz1odFtuXSkscnx8aSE9PXQ/KGE9cGFyc2VGbG9hdChvKSxyfHxLLmlzTnVtZXJpYyhhKT9hfHwwOm8pOm99LHN3YXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fTtmb3IoaSBpbiB0KW9baV09ZS5zdHlsZVtpXSxlLnN0eWxlW2ldPXRbaV07cj1uLmNhbGwoZSk7Zm9yKGkgaW4gdCllLnN0eWxlW2ldPW9baV07cmV0dXJuIHJ9fSksZS5nZXRDb21wdXRlZFN0eWxlP250PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYT1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkscz1lLnN0eWxlO3JldHVybiBhJiYobj1hW3RdLCIiPT09biYmIUsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlKSYmKG49Sy5zdHlsZShlLHQpKSxjdC50ZXN0KG4pJiZsdC50ZXN0KHQpJiYocj1zLndpZHRoLGk9cy5taW5XaWR0aCxvPXMubWF4V2lkdGgscy5taW5XaWR0aD1zLm1heFdpZHRoPXMud2lkdGg9bixuPWEud2lkdGgscy53aWR0aD1yLHMubWluV2lkdGg9aSxzLm1heFdpZHRoPW8pKSxufTpSLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihudD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbdF0sbz1lLnN0eWxlO3JldHVybiBudWxsPT1pJiZvJiZvW3RdJiYoaT1vW3RdKSxjdC50ZXN0KGkpJiYhc3QudGVzdCh0KSYmKG49by5sZWZ0LHI9ZS5ydW50aW1lU3R5bGUmJmUucnVudGltZVN0eWxlLmxlZnQsciYmKGUucnVudGltZVN0eWxlLmxlZnQ9ZS5jdXJyZW50U3R5bGUubGVmdCksby5sZWZ0PSJmb250U2l6ZSI9PT10PyIxZW0iOmksaT1vLnBpeGVsTGVmdCsicHgiLG8ubGVmdD1uLHImJihlLnJ1bnRpbWVTdHlsZS5sZWZ0PXIpKSwiIj09PWk/ImF1dG8iOml9KSxLLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGUsdCl7Sy5jc3NIb29rc1t0XT17Z2V0OmZ1bmN0aW9uKGUsbixyKXtpZihuKXJldHVybiAwIT09ZS5vZmZzZXRXaWR0aHx8Im5vbmUiIT09bnQoZSwiZGlzcGxheSIpP3coZSx0LHIpOksuc3dhcChlLGR0LGZ1bmN0aW9uKCl7cmV0dXJuIHcoZSx0LHIpfSl9LHNldDpmdW5jdGlvbihlLG4scil7cmV0dXJuIGIoZSxuLHI/eChlLHQscixLLnN1cHBvcnQuYm94U2l6aW5nJiYiYm9yZGVyLWJveCI9PT1LLmNzcyhlLCJib3hTaXppbmciKSk6MCl9fX0pLEsuc3VwcG9ydC5vcGFjaXR5fHwoSy5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXQudGVzdCgodCYmZS5jdXJyZW50U3R5bGU/ZS5jdXJyZW50U3R5bGUuZmlsdGVyOmUuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6dD8iMSI6IiJ9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuPWUuc3R5bGUscj1lLmN1cnJlbnRTdHlsZSxpPUsuaXNOdW1lcmljKHQpPyJhbHBoYShvcGFjaXR5PSIrMTAwKnQrIikiOiIiLG89ciYmci5maWx0ZXJ8fG4uZmlsdGVyfHwiIjtuLnpvb209MSx0Pj0xJiYiIj09PUsudHJpbShvLnJlcGxhY2Uob3QsIiIpKSYmbi5yZW1vdmVBdHRyaWJ1dGUmJihuLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIiksciYmIXIuZmlsdGVyKXx8KG4uZmlsdGVyPW90LnRlc3Qobyk/by5yZXBsYWNlKG90LGkpOm8rIiAiK2kpfX0pLEsoZnVuY3Rpb24oKXtLLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KEsuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihlLHQpe3JldHVybiBLLnN3YXAoZSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sZnVuY3Rpb24oKXtpZih0KXJldHVybiBudChlLCJtYXJnaW5SaWdodCIpfSl9fSksIUsuc3VwcG9ydC5waXhlbFBvc2l0aW9uJiZLLmZuLnBvc2l0aW9uJiZLLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSx0KXtLLmNzc0hvb2tzW3RdPXtnZXQ6ZnVuY3Rpb24oZSxuKXtpZihuKXt2YXIgcj1udChlLHQpO3JldHVybiBjdC50ZXN0KHIpP0soZSkucG9zaXRpb24oKVt0XSsicHgiOnJ9fX19KX0pLEsuZXhwciYmSy5leHByLmZpbHRlcnMmJihLLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLm9mZnNldFdpZHRoJiYwPT09ZS5vZmZzZXRIZWlnaHR8fCFLLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYibm9uZSI9PT0oZS5zdHlsZSYmZS5zdHlsZS5kaXNwbGF5fHxudChlLCJkaXNwbGF5IikpfSxLLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiFLLmV4cHIuZmlsdGVycy5oaWRkZW4oZSl9KSxLLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihlLHQpe0suY3NzSG9va3NbZSt0XT17ZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciByLGk9InN0cmluZyI9PXR5cGVvZiBuP24uc3BsaXQoIiAiKTpbbl0sbz17fTtmb3Iocj0wO3I8NDtyKyspb1tlK2d0W3JdK3RdPWlbcl18fGlbci0yXXx8aVswXTtyZXR1cm4gb319LGx0LnRlc3QoZSl8fChLLmNzc0hvb2tzW2UrdF0uc2V0PWIpfSk7dmFyIHZ0PS8lMjAvZyxidD0vXFtcXSQvLHh0PS9ccj9cbi9nLHd0PS9eKD86Y29sb3J8ZGF0ZXxkYXRldGltZXxkYXRldGltZS1sb2NhbHxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxUdD0vXig/OnNlbGVjdHx0ZXh0YXJlYSkvaTtLLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIEsucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9LLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fFR0LnRlc3QodGhpcy5ub2RlTmFtZSl8fHd0LnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1LKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6Sy5pc0FycmF5KG4pP0subWFwKG4sZnVuY3Rpb24oZSxuKXtyZXR1cm57bmFtZTp0Lm5hbWUsdmFsdWU6ZS5yZXBsYWNlKHh0LCJcclxuIil9fSk6e25hbWU6dC5uYW1lLHZhbHVlOm4ucmVwbGFjZSh4dCwiXHJcbiIpfX0pLmdldCgpfX0pLEsucGFyYW09ZnVuY3Rpb24oZSxuKXt2YXIgcixpPVtdLG89ZnVuY3Rpb24oZSx0KXt0PUsuaXNGdW5jdGlvbih0KT90KCk6bnVsbD09dD8iIjp0LGlbaS5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpfTtpZihuPT09dCYmKG49Sy5hamF4U2V0dGluZ3MmJksuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxLLmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhSy5pc1BsYWluT2JqZWN0KGUpKUsuZWFjaChlLGZ1bmN0aW9uKCl7byh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihyIGluIGUpTihyLGVbcl0sbixvKTtyZXR1cm4gaS5qb2luKCImIikucmVwbGFjZSh2dCwiKyIpfTt2YXIgTnQsQ3QsRXQ9LyMuKiQvLGt0PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvZ20sU3Q9L14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxBdD0vXig/OkdFVHxIRUFEKSQvLGp0PS9eXC9cLy8sRHQ9L1w/LyxMdD0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSxIdD0vKFs/Jl0pXz1bXiZdKi8sRnQ9L14oW1x3XCtcLlwtXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLE10PUsuZm4ubG9hZCxPdD17fSxfdD17fSxxdD1bIiovIl0rWyIqIl07dHJ5e050PSQuaHJlZn1jYXRjaChCdCl7TnQ9Ui5jcmVhdGVFbGVtZW50KCJhIiksTnQuaHJlZj0iIixOdD1OdC5ocmVmfUN0PUZ0LmV4ZWMoTnQudG9Mb3dlckNhc2UoKSl8fFtdLEsuZm4ubG9hZD1mdW5jdGlvbihlLG4scil7aWYoInN0cmluZyIhPXR5cGVvZiBlJiZNdClyZXR1cm4gTXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgaSxvLGEscz10aGlzLGw9ZS5pbmRleE9mKCIgIik7cmV0dXJuIGw+PTAmJihpPWUuc2xpY2UobCxlLmxlbmd0aCksZT1lLnNsaWNlKDAsbCkpLEsuaXNGdW5jdGlvbihuKT8ocj1uLG49dCk6Im9iamVjdCI9PXR5cGVvZiBuJiYobz0iUE9TVCIpLEsuYWpheCh7dXJsOmUsdHlwZTpvLGRhdGFUeXBlOiJodG1sIixkYXRhOm4sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtyJiZzLmVhY2gocixhfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9fSkuZG9uZShmdW5jdGlvbihlKXthPWFyZ3VtZW50cyxzLmh0bWwoaT9LKCI8ZGl2PiIpLmFwcGVuZChlLnJlcGxhY2UoTHQsIiIpKS5maW5kKGkpOmUpfSksdGhpc30sSy5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe0suZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxLLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxuKXtLW25dPWZ1bmN0aW9uKGUscixpLG8pe3JldHVybiBLLmlzRnVuY3Rpb24ocikmJihvPW98fGksaT1yLHI9dCksSy5hamF4KHt0eXBlOm4sdXJsOmUsZGF0YTpyLHN1Y2Nlc3M6aSxkYXRhVHlwZTpvfSl9fSksSy5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihlLG4pe3JldHVybiBLLmdldChlLHQsbiwic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBLLmdldChlLHQsbiwianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9rKGUsSy5hamF4U2V0dGluZ3MpOih0PWUsZT1LLmFqYXhTZXR0aW5ncyksayhlLHQpLGV9LGFqYXhTZXR0aW5nczp7dXJsOk50LGlzTG9jYWw6U3QudGVzdChDdFsxXSksZ2xvYmFsOiEwLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHRleHQ6InRleHQvcGxhaW4iLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsIioiOnF0fSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0In0sY29udmVydGVyczp7IiogdGV4dCI6ZS5TdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6Sy5wYXJzZUpTT04sInRleHQgeG1sIjpLLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7Y29udGV4dDohMCx1cmw6ITB9fSxhamF4UHJlZmlsdGVyOkMoT3QpLGFqYXhUcmFuc3BvcnQ6QyhfdCksYWpheDpmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIHIoZSxuLHIsYSl7dmFyIHUsZix2LGIsdyxOPW47MiE9PXgmJih4PTIsbCYmY2xlYXJUaW1lb3V0KGwpLHM9dCxvPWF8fCIiLFQucmVhZHlTdGF0ZT1lPjA/NDowLHImJihiPVMocCxULHIpKSxlPj0yMDAmJmU8MzAwfHwzMDQ9PT1lPyhwLmlmTW9kaWZpZWQmJih3PVQuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYoSy5sYXN0TW9kaWZpZWRbaV09dyksdz1ULmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIiksdyYmKEsuZXRhZ1tpXT13KSksMzA0PT09ZT8oTj0ibm90bW9kaWZpZWQiLHU9ITApOih1PUEocCxiKSxOPXUuc3RhdGUsZj11LmRhdGEsdj11LmVycm9yLHU9IXYpKToodj1OLE4mJiFlfHwoTj0iZXJyb3IiLGU8MCYmKGU9MCkpKSxULnN0YXR1cz1lLFQuc3RhdHVzVGV4dD0iIisobnx8TiksdT9nLnJlc29sdmVXaXRoKGQsW2YsTixUXSk6Zy5yZWplY3RXaXRoKGQsW1QsTix2XSksVC5zdGF0dXNDb2RlKHkpLHk9dCxjJiZoLnRyaWdnZXIoImFqYXgiKyh1PyJTdWNjZXNzIjoiRXJyb3IiKSxbVCxwLHU/Zjp2XSksbS5maXJlV2l0aChkLFtULE5dKSxjJiYoaC50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHBdKSwtLUsuYWN0aXZlfHxLLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX0ib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUsZT10KSxuPW58fHt9O3ZhciBpLG8sYSxzLGwsdSxjLGYscD1LLmFqYXhTZXR1cCh7fSxuKSxkPXAuY29udGV4dHx8cCxoPWQhPT1wJiYoZC5ub2RlVHlwZXx8ZCBpbnN0YW5jZW9mIEspP0soZCk6Sy5ldmVudCxnPUsuRGVmZXJyZWQoKSxtPUsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHk9cC5zdGF0dXNDb2RlfHx7fSx2PXt9LGI9e30seD0wLHc9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihlLHQpe2lmKCF4KXt2YXIgbj1lLnRvTG93ZXJDYXNlKCk7ZT1iW25dPWJbbl18fGUsdltlXT10fXJldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXg/bzpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgbjtpZigyPT09eCl7aWYoIWEpZm9yKGE9e307bj1rdC5leGVjKG8pOylhW25bMV0udG9Mb3dlckNhc2UoKV09blsyXTtuPWFbZS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbj09PXQ/bnVsbDpufSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiB4fHwocC5taW1lVHlwZT1lKSx0aGlzfSxhYm9ydDpmdW5jdGlvbihlKXtyZXR1cm4gZT1lfHx3LHMmJnMuYWJvcnQoZSkscigwLGUpLHRoaXN9fTtpZihnLnByb21pc2UoVCksVC5zdWNjZXNzPVQuZG9uZSxULmVycm9yPVQuZmFpbCxULmNvbXBsZXRlPW0uYWRkLFQuc3RhdHVzQ29kZT1mdW5jdGlvbihlKXtpZihlKXt2YXIgdDtpZih4PDIpZm9yKHQgaW4gZSl5W3RdPVt5W3RdLGVbdF1dO2Vsc2UgdD1lW1Quc3RhdHVzXSxULmFsd2F5cyh0KX1yZXR1cm4gdGhpc30scC51cmw9KChlfHxwLnVybCkrIiIpLnJlcGxhY2UoRXQsIiIpLnJlcGxhY2UoanQsQ3RbMV0rIi8vIikscC5kYXRhVHlwZXM9Sy50cmltKHAuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5zcGxpdCh0ZSksbnVsbD09cC5jcm9zc0RvbWFpbiYmKHU9RnQuZXhlYyhwLnVybC50b0xvd2VyQ2FzZSgpKSxwLmNyb3NzRG9tYWluPSEoIXV8fHVbMV09PUN0WzFdJiZ1WzJdPT1DdFsyXSYmKHVbM118fCgiaHR0cDoiPT09dVsxXT84MDo0NDMpKT09KEN0WzNdfHwoImh0dHA6Ij09PUN0WzFdPzgwOjQ0MykpKSkscC5kYXRhJiZwLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIHAuZGF0YSYmKHAuZGF0YT1LLnBhcmFtKHAuZGF0YSxwLnRyYWRpdGlvbmFsKSksRShPdCxwLG4sVCksMj09PXgpcmV0dXJuIFQ7aWYoYz1wLmdsb2JhbCxwLnR5cGU9cC50eXBlLnRvVXBwZXJDYXNlKCkscC5oYXNDb250ZW50PSFBdC50ZXN0KHAudHlwZSksYyYmMD09PUsuYWN0aXZlKysmJksuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IiksIXAuaGFzQ29udGVudCYmKHAuZGF0YSYmKHAudXJsKz0oRHQudGVzdChwLnVybCk/IiYiOiI/IikrcC5kYXRhLGRlbGV0ZSBwLmRhdGEpLGk9cC51cmwscC5jYWNoZT09PSExKSl7dmFyIE49Sy5ub3coKSxDPXAudXJsLnJlcGxhY2UoSHQsIiQxXz0iK04pO3AudXJsPUMrKEM9PT1wLnVybD8oRHQudGVzdChwLnVybCk/IiYiOiI/IikrIl89IitOOiIiKX0ocC5kYXRhJiZwLmhhc0NvbnRlbnQmJnAuY29udGVudFR5cGUhPT0hMXx8bi5jb250ZW50VHlwZSkmJlQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixwLmNvbnRlbnRUeXBlKSxwLmlmTW9kaWZpZWQmJihpPWl8fHAudXJsLEsubGFzdE1vZGlmaWVkW2ldJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixLLmxhc3RNb2RpZmllZFtpXSksSy5ldGFnW2ldJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLEsuZXRhZ1tpXSkpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixwLmRhdGFUeXBlc1swXSYmcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXT9wLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dKygiKiIhPT1wLmRhdGFUeXBlc1swXT8iLCAiK3F0KyI7IHE9MC4wMSI6IiIpOnAuYWNjZXB0c1siKiJdKTtmb3IoZiBpbiBwLmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGYscC5oZWFkZXJzW2ZdKTtpZighcC5iZWZvcmVTZW5kfHxwLmJlZm9yZVNlbmQuY2FsbChkLFQscCkhPT0hMSYmMiE9PXgpe3c9ImFib3J0Ijtmb3IoZiBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSlUW2ZdKHBbZl0pO2lmKHM9RShfdCxwLG4sVCkpe1QucmVhZHlTdGF0ZT0xLGMmJmgudHJpZ2dlcigiYWpheFNlbmQiLFtULHBdKSxwLmFzeW5jJiZwLnRpbWVvdXQ+MCYmKGw9c2V0VGltZW91dChmdW5jdGlvbigpe1QuYWJvcnQoInRpbWVvdXQiKX0scC50aW1lb3V0KSk7dHJ5e3g9MSxzLnNlbmQodixyKX1jYXRjaChrKXtpZighKHg8MikpdGhyb3cgaztyKC0xLGspfX1lbHNlIHIoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiBUfXJldHVybiBULmFib3J0KCl9LGFjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9fSk7dmFyIFd0PVtdLFB0PS9cPy8sUnQ9Lyg9KVw/KD89JnwkKXxcP1w/LywkdD1LLm5vdygpO0suYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT1XdC5wb3AoKXx8Sy5leHBhbmRvKyJfIiskdCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksSy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihuLHIsaSl7dmFyIG8sYSxzLGw9bi5kYXRhLHU9bi51cmwsYz1uLmpzb25wIT09ITEsZj1jJiZSdC50ZXN0KHUpLHA9YyYmIWYmJiJzdHJpbmciPT10eXBlb2YgbCYmIShuLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlJ0LnRlc3QobCk7aWYoImpzb25wIj09PW4uZGF0YVR5cGVzWzBdfHxmfHxwKXJldHVybiBvPW4uanNvbnBDYWxsYmFjaz1LLmlzRnVuY3Rpb24obi5qc29ucENhbGxiYWNrKT9uLmpzb25wQ2FsbGJhY2soKTpuLmpzb25wQ2FsbGJhY2ssYT1lW29dLGY/bi51cmw9dS5yZXBsYWNlKFJ0LCIkMSIrbyk6cD9uLmRhdGE9bC5yZXBsYWNlKFJ0LCIkMSIrbyk6YyYmKG4udXJsKz0oUHQudGVzdCh1KT8iJiI6Ij8iKStuLmpzb25wKyI9IitvKSxuLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gc3x8Sy5lcnJvcihvKyIgd2FzIG5vdCBjYWxsZWQiKSxzWzBdfSxuLmRhdGFUeXBlc1swXT0ianNvbiIsZVtvXT1mdW5jdGlvbigpe3M9YXJndW1lbnRzfSxpLmFsd2F5cyhmdW5jdGlvbigpe2Vbb109YSxuW29dJiYobi5qc29ucENhbGxiYWNrPXIuanNvbnBDYWxsYmFjayxXdC5wdXNoKG8pKSxzJiZLLmlzRnVuY3Rpb24oYSkmJmEoc1swXSkscz1hPXR9KSwic2NyaXB0In0pLEsuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gSy5nbG9iYWxFdmFsKGUpLGV9fX0pLEsuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXtlLmNhY2hlPT09dCYmKGUuY2FjaGU9ITEpLGUuY3Jvc3NEb21haW4mJihlLnR5cGU9IkdFVCIsZS5nbG9iYWw9ITEpfSksSy5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2lmKGUuY3Jvc3NEb21haW4pe3ZhciBuLHI9Ui5oZWFkfHxSLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fFIuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGksbyl7bj1SLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLG4uYXN5bmM9ImFzeW5jIixlLnNjcmlwdENoYXJzZXQmJihuLmNoYXJzZXQ9ZS5zY3JpcHRDaGFyc2V0KSxuLnNyYz1lLnVybCxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLGkpeyhpfHwhbi5yZWFkeVN0YXRlfHwvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KG4ucmVhZHlTdGF0ZSkpJiYobi5vbmxvYWQ9bi5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxyJiZuLnBhcmVudE5vZGUmJnIucmVtb3ZlQ2hpbGQobiksbj10LGl8fG8oMjAwLCJzdWNjZXNzIikpfSxyLmluc2VydEJlZm9yZShuLHIuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7biYmbi5vbmxvYWQoMCwxKX19fX0pO3ZhciBJdCx6dD0hIWUuQWN0aXZlWE9iamVjdCYmZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gSXQpSXRbZV0oMCwxKX0sWHQ9MDtLLmFqYXhTZXR0aW5ncy54aHI9ZS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmaigpfHxEKCl9OmosZnVuY3Rpb24oZSl7Sy5leHRlbmQoSy5zdXBwb3J0LHthamF4OiEhZSxjb3JzOiEhZSYmIndpdGhDcmVkZW50aWFscyJpbiBlfSl9KEsuYWpheFNldHRpbmdzLnhocigpKSxLLnN1cHBvcnQuYWpheCYmSy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKG4pe2lmKCFuLmNyb3NzRG9tYWlufHxLLnN1cHBvcnQuY29ycyl7dmFyIHI7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oaSxvKXt2YXIgYSxzLGw9bi54aHIoKTtpZihuLnVzZXJuYW1lP2wub3BlbihuLnR5cGUsbi51cmwsbi5hc3luYyxuLnVzZXJuYW1lLG4ucGFzc3dvcmQpOmwub3BlbihuLnR5cGUsbi51cmwsbi5hc3luYyksbi54aHJGaWVsZHMpZm9yKHMgaW4gbi54aHJGaWVsZHMpbFtzXT1uLnhockZpZWxkc1tzXTtuLm1pbWVUeXBlJiZsLm92ZXJyaWRlTWltZVR5cGUmJmwub3ZlcnJpZGVNaW1lVHlwZShuLm1pbWVUeXBlKSwhbi5jcm9zc0RvbWFpbiYmIWlbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGlbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKHMgaW4gaSlsLnNldFJlcXVlc3RIZWFkZXIocyxpW3NdKX1jYXRjaCh1KXt9bC5zZW5kKG4uaGFzQ29udGVudCYmbi5kYXRhfHxudWxsKSxyPWZ1bmN0aW9uKGUsaSl7dmFyIHMsdSxjLGYscDt0cnl7aWYociYmKGl8fDQ9PT1sLnJlYWR5U3RhdGUpKWlmKHI9dCxhJiYobC5vbnJlYWR5c3RhdGVjaGFuZ2U9Sy5ub29wLHp0JiZkZWxldGUgSXRbYV0pLGkpNCE9PWwucmVhZHlTdGF0ZSYmbC5hYm9ydCgpO2Vsc2V7cz1sLnN0YXR1cyxjPWwuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksZj17fSxwPWwucmVzcG9uc2VYTUwscCYmcC5kb2N1bWVudEVsZW1lbnQmJihmLnhtbD1wKTt0cnl7Zi50ZXh0PWwucmVzcG9uc2VUZXh0fWNhdGNoKGUpe310cnl7dT1sLnN0YXR1c1RleHR9Y2F0Y2goZCl7dT0iIn1zfHwhbi5pc0xvY2FsfHxuLmNyb3NzRG9tYWluPzEyMjM9PT1zJiYocz0yMDQpOnM9Zi50ZXh0PzIwMDo0MDR9fWNhdGNoKGgpe2l8fG8oLTEsaCl9ZiYmbyhzLHUsZixjKX0sbi5hc3luYz80PT09bC5yZWFkeVN0YXRlP3NldFRpbWVvdXQociwwKTooYT0rK1h0LHp0JiYoSXR8fChJdD17fSxLKGUpLnVubG9hZCh6dCkpLEl0W2FdPXIpLGwub25yZWFkeXN0YXRlY2hhbmdlPXIpOnIoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtyJiZyKDAsMSl9fX19KTt2YXIgVXQsWXQsSnQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFZ0PW5ldyBSZWdFeHAoIl4oPzooWy0rXSk9fCkoIitaKyIpKFthLXolXSopJCIsImkiKSxHdD0vcXVldWVIb29rcyQvLFF0PVtPXSxLdD17IioiOltmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPXRoaXMuY3JlYXRlVHdlZW4oZSx0KSxhPVZ0LmV4ZWModCkscz1vLmN1cigpLGw9K3N8fDAsdT0xO2lmKGEpe2lmKG49K2FbMl0scj1hWzNdfHwoSy5jc3NOdW1iZXJbZV0/IiI6InB4IiksInB4IiE9PXImJmwpe2w9Sy5jc3Moby5lbGVtLGUsITApfHxufHwxO2RvIGk9dT11fHwiLjUiLGwvPXUsSy5zdHlsZShvLmVsZW0sZSxsK3IpLHU9by5jdXIoKS9zO3doaWxlKDEhPT11JiZ1IT09aSl9by51bml0PXIsby5zdGFydD1sLG8uZW5kPWFbMV0/bCsoYVsxXSsxKSpuOm59cmV0dXJuIG99XX07Sy5BbmltYXRpb249Sy5leHRlbmQoRix7dHdlZW5lcjpmdW5jdGlvbihlLHQpe0suaXNGdW5jdGlvbihlKT8odD1lLGU9WyIqIl0pOmU9ZS5zcGxpdCgiICIpO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSxLdFtuXT1LdFtuXXx8W10sS3Rbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9RdC51bnNoaWZ0KGUpOlF0LnB1c2goZSl9fSksSy5Ud2Vlbj1fLF8ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfLGluaXQ6ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5nPWl8fCJzd2luZyIsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChLLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9Xy5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6Xy5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1fLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLnBvcz10PUsuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOl8ucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sXy5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9Xy5wcm90b3R5cGUsXy5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGw9PWUuZWxlbVtlLnByb3BdfHxlLmVsZW0uc3R5bGUmJm51bGwhPWUuZWxlbS5zdHlsZVtlLnByb3BdPyh0PUsuY3NzKGUuZWxlbSxlLnByb3AsITEsIiIpLHQmJiJhdXRvIiE9PXQ/dDowKTplLmVsZW1bZS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGUpe0suZnguc3RlcFtlLnByb3BdP0suZnguc3RlcFtlLnByb3BdKGUpOmUuZWxlbS5zdHlsZSYmKG51bGwhPWUuZWxlbS5zdHlsZVtLLmNzc1Byb3BzW2UucHJvcF1dfHxLLmNzc0hvb2tzW2UucHJvcF0pP0suc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpOmUuZWxlbVtlLnByb3BdPWUubm93fX19LF8ucHJvcEhvb2tzLnNjcm9sbFRvcD1fLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LEsuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oZSx0KXt2YXIgbj1LLmZuW3RdO0suZm5bdF09ZnVuY3Rpb24ocixpLG8pe3JldHVybiBudWxsPT1yfHwiYm9vbGVhbiI9PXR5cGVvZiByfHwhZSYmSy5pc0Z1bmN0aW9uKHIpJiZLLmlzRnVuY3Rpb24oaSk/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKHEodCwhMCkscixpLG8pfX0pLEsuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKHkpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPUsuaXNFbXB0eU9iamVjdChlKSxvPUsuc3BlZWQodCxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgdD1GKHRoaXMsSy5leHRlbmQoe30sZSksbyk7aSYmdC5zdG9wKCEwKX07cmV0dXJuIGl8fG8ucXVldWU9PT0hMT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGUsbixyKXt2YXIgaT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KHIpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihyPW4sbj1lLGU9dCksbiYmZSE9PSExJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PSEwLG49bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz1LLnRpbWVycyxhPUsuX2RhdGEodGhpcyk7aWYobilhW25dJiZhW25dLnN0b3AmJmkoYVtuXSk7ZWxzZSBmb3IobiBpbiBhKWFbbl0mJmFbbl0uc3RvcCYmR3QudGVzdChuKSYmaShhW25dKTtmb3Iobj1vLmxlbmd0aDtuLS07KW9bbl0uZWxlbT09PXRoaXMmJihudWxsPT1lfHxvW25dLnF1ZXVlPT09ZSkmJihvW25dLmFuaW0uc3RvcChyKSx0PSExLG8uc3BsaWNlKG4sMSkpOyh0fHwhcikmJksuZGVxdWV1ZSh0aGlzLGUpfSl9fSksSy5lYWNoKHtzbGlkZURvd246cSgic2hvdyIpLHNsaWRlVXA6cSgiaGlkZSIpLHNsaWRlVG9nZ2xlOnEoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oZSx0KXtLLmZuW2VdPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQsZSxuLHIpfX0pLEsuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9LLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fEsuaXNGdW5jdGlvbihlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhSy5pc0Z1bmN0aW9uKHQpJiZ0fTtyZXR1cm4gci5kdXJhdGlvbj1LLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2Ygci5kdXJhdGlvbj9yLmR1cmF0aW9uOnIuZHVyYXRpb24gaW4gSy5meC5zcGVlZHM/Sy5meC5zcGVlZHNbci5kdXJhdGlvbl06Sy5meC5zcGVlZHMuX2RlZmF1bHQsbnVsbCE9ci5xdWV1ZSYmci5xdWV1ZSE9PSEwfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXtLLmlzRnVuY3Rpb24oci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJksuZGVxdWV1ZSh0aGlzLHIucXVldWUpfSxyfSxLLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9fSxLLnRpbWVycz1bXSxLLmZ4PV8ucHJvdG90eXBlLmluaXQsSy5meC50aWNrPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9Sy50aW1lcnMsbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXSwhZSgpJiZ0W25dPT09ZSYmdC5zcGxpY2Uobi0tLDEpO3QubGVuZ3RofHxLLmZ4LnN0b3AoKX0sSy5meC50aW1lcj1mdW5jdGlvbihlKXtlKCkmJksudGltZXJzLnB1c2goZSkmJiFZdCYmKFl0PXNldEludGVydmFsKEsuZngudGljayxLLmZ4LmludGVydmFsKSl9LEsuZnguaW50ZXJ2YWw9MTMsSy5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChZdCksWXQ9bnVsbH0sSy5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sSy5meC5zdGVwPXt9LEsuZXhwciYmSy5leHByLmZpbHRlcnMmJihLLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihlKXtyZXR1cm4gSy5ncmVwKEsudGltZXJzLGZ1bmN0aW9uKHQpe3JldHVybiBlPT09dC5lbGVtfSkubGVuZ3RofSk7dmFyIFp0PS9eKD86Ym9keXxodG1sKSQvaTtLLmZuLm9mZnNldD1mdW5jdGlvbihlKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbih0KXtLLm9mZnNldC5zZXRPZmZzZXQodGhpcyxlLHQpfSk7dmFyIG4scixpLG8sYSxzLGwsdSxjLGYscD10aGlzWzBdLGQ9cCYmcC5vd25lckRvY3VtZW50O2lmKGQpcmV0dXJuKGk9ZC5ib2R5KT09PXA/Sy5vZmZzZXQuYm9keU9mZnNldChwKToocj1kLmRvY3VtZW50RWxlbWVudCxLLmNvbnRhaW5zKHIscCk/KG49cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPUIoZCksYT1yLmNsaWVudFRvcHx8aS5jbGllbnRUb3B8fDAscz1yLmNsaWVudExlZnR8fGkuY2xpZW50TGVmdHx8MCxsPW8ucGFnZVlPZmZzZXR8fHIuc2Nyb2xsVG9wLHU9by5wYWdlWE9mZnNldHx8ci5zY3JvbGxMZWZ0LGM9bi50b3ArbC1hLGY9bi5sZWZ0K3Utcyx7dG9wOmMsbGVmdDpmfSk6e3RvcDowLGxlZnQ6MH0pfSxLLm9mZnNldD17Ym9keU9mZnNldDpmdW5jdGlvbihlKXt2YXIgdD1lLm9mZnNldFRvcCxuPWUub2Zmc2V0TGVmdDtyZXR1cm4gSy5zdXBwb3J0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0JiYodCs9cGFyc2VGbG9hdChLLmNzcyhlLCJtYXJnaW5Ub3AiKSl8fDAsbis9cGFyc2VGbG9hdChLLmNzcyhlLCJtYXJnaW5MZWZ0IikpfHwwKSx7dG9wOnQsbGVmdDpufX0sc2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1LLmNzcyhlLCJwb3NpdGlvbiIpOyJzdGF0aWMiPT09ciYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIGksbyxhPUsoZSkscz1hLm9mZnNldCgpLGw9Sy5jc3MoZSwidG9wIiksdT1LLmNzcyhlLCJsZWZ0IiksYz0oImFic29sdXRlIj09PXJ8fCJmaXhlZCI9PT1yKSYmSy5pbkFycmF5KCJhdXRvIixbbCx1XSk+LTEsZj17fSxwPXt9O2M/KHA9YS5wb3NpdGlvbigpLGk9cC50b3Asbz1wLmxlZnQpOihpPXBhcnNlRmxvYXQobCl8fDAsbz1wYXJzZUZsb2F0KHUpfHwwKSxLLmlzRnVuY3Rpb24odCkmJih0PXQuY2FsbChlLG4scykpLG51bGwhPXQudG9wJiYoZi50b3A9dC50b3Atcy50b3AraSksbnVsbCE9dC5sZWZ0JiYoZi5sZWZ0PXQubGVmdC1zLmxlZnQrbyksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZik6YS5jc3MoZil9fSxLLmZuLmV4dGVuZCh7cG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZT10aGlzWzBdLHQ9dGhpcy5vZmZzZXRQYXJlbnQoKSxuPXRoaXMub2Zmc2V0KCkscj1adC50ZXN0KHRbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9OnQub2Zmc2V0KCk7cmV0dXJuIG4udG9wLT1wYXJzZUZsb2F0KEsuY3NzKGUsIm1hcmdpblRvcCIpKXx8MCxuLmxlZnQtPXBhcnNlRmxvYXQoSy5jc3MoZSwibWFyZ2luTGVmdCIpKXx8MCxyLnRvcCs9cGFyc2VGbG9hdChLLmNzcyh0WzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxyLmxlZnQrPXBhcnNlRmxvYXQoSy5jc3ModFswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwLHt0b3A6bi50b3Atci50b3AsbGVmdDpuLmxlZnQtci5sZWZ0fX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLm9mZnNldFBhcmVudHx8Ui5ib2R5O2UmJiFadC50ZXN0KGUubm9kZU5hbWUpJiYic3RhdGljIj09PUsuY3NzKGUsInBvc2l0aW9uIik7KWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fFIuYm9keX0pfX0pLEsuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLG4pe3ZhciByPS9ZLy50ZXN0KG4pO0suZm5bZV09ZnVuY3Rpb24oaSl7cmV0dXJuIEsuYWNjZXNzKHRoaXMsZnVuY3Rpb24oZSxpLG8pe3ZhciBhPUIoZSk7cmV0dXJuIG89PT10P2E/biBpbiBhP2Fbbl06YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbaV06ZVtpXTp2b2lkKGE/YS5zY3JvbGxUbyhyP0soYSkuc2Nyb2xsTGVmdCgpOm8scj9vOksoYSkuc2Nyb2xsVG9wKCkpOmVbaV09byl9LGUsaSxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pLEsuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGUsbil7Sy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrZSxjb250ZW50Om4sIiI6Im91dGVyIitlfSxmdW5jdGlvbihyLGkpe0suZm5baV09ZnVuY3Rpb24oaSxvKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgaSkscz1yfHwoaT09PSEwfHxvPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBLLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKG4scixpKXt2YXIgbztyZXR1cm4gSy5pc1dpbmRvdyhuKT9uLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IitlXTo5PT09bi5ub2RlVHlwZT8obz1uLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChuLmJvZHlbInNjcm9sbCIrZV0sb1sic2Nyb2xsIitlXSxuLmJvZHlbIm9mZnNldCIrZV0sb1sib2Zmc2V0IitlXSxvWyJjbGllbnQiK2VdKSk6aT09PXQ/Sy5jc3MobixyLGkscyk6Sy5zdHlsZShuLHIsaSxzKX0sbixhP2k6dCxhKX19KX0pLGUualF1ZXJ5PWUuJD1LLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5JiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gS30pfSh3aW5kb3cpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pxdWVyeS5iYS1iYnEubWluLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanF1ZXJ5LmJhLWJicS5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhkMWZmNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pxdWVyeS5iYS1iYnEubWluLmpzCkBAIC0wLDAgKzEgQEAKKyFmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9Zy5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLHQuY29uY2F0KGcuY2FsbChhcmd1bWVudHMpKSl9fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUucmVwbGFjZSgvXlteI10qIz8oLiopJC8sIiQxIil9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS5yZXBsYWNlKC8oPzpeW14/I10qXD8oW14jXSopLiokKT8uKi8sIiQxIil9ZnVuY3Rpb24gaShyLG8sYSxpLGMpe3ZhciB1LHMscCxoLGQ7cmV0dXJuIGkhPT1mPyhwPWEubWF0Y2gocj8vXihbXiNdKilcIz8oLiopJC86L14oW14jP10qKVw/PyhbXiNdKikoIz8uKikvKSxkPXBbM118fCIiLDI9PT1jJiZuKGkpP3M9aS5yZXBsYWNlKHI/UjpFLCIiKTooaD1sKHBbMl0pLGk9bihpKT9sW3I/QTp3XShpKTppLHM9Mj09PWM/aToxPT09Yz9lLmV4dGVuZCh7fSxpLGgpOmUuZXh0ZW5kKHt9LGgsaSkscz1iKHMpLHImJihzPXMucmVwbGFjZShtLHkpKSksdT1wWzFdKyhyPyIjIjpzfHwhcFsxXT8iPyI6IiIpK3MrZCk6dT1vKGEhPT1mP2E6dFtTXVtxXSksdX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdD09PWZ8fCJib29sZWFuIj09dHlwZW9mIHQ/KHI9dCx0PWJbZT9BOnddKCkpOnQ9bih0KT90LnJlcGxhY2UoZT9SOkUsIiIpOnQsbCh0LHIpfWZ1bmN0aW9uIHUodCxyLG8sYSl7cmV0dXJuIG4obyl8fCJvYmplY3QiPT10eXBlb2Ygb3x8KGE9byxvPXIscj1mKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj1lKHRoaXMpLGk9cnx8digpWyh0aGlzLm5vZGVOYW1lfHwiIikudG9Mb3dlckNhc2UoKV18fCIiLGM9aSYmbi5hdHRyKGkpfHwiIjtuLmF0dHIoaSxiW3RdKGMsbyxhKSl9KX12YXIgZixzLGwscCxoLGQsdixtLGc9QXJyYXkucHJvdG90eXBlLnNsaWNlLHk9ZGVjb2RlVVJJQ29tcG9uZW50LGI9ZS5wYXJhbSwkPWUuYmJxPWUuYmJxfHx7fSx4PWUuZXZlbnQuc3BlY2lhbCxqPSJoYXNoY2hhbmdlIix3PSJxdWVyeXN0cmluZyIsQT0iZnJhZ21lbnQiLE49ImVsZW1VcmxBdHRyIixTPSJsb2NhdGlvbiIscT0iaHJlZiIsQz0ic3JjIixFPS9eLipcP3wjLiokL2csUj0vXi4qXCMvLFU9e307Ylt3XT1yKGksMCxhKSxiW0FdPXM9cihpLDEsbykscy5ub0VzY2FwZT1mdW5jdGlvbih0KXt0PXR8fCIiO3ZhciBuPWUubWFwKHQuc3BsaXQoIiIpLGVuY29kZVVSSUNvbXBvbmVudCk7bT1uZXcgUmVnRXhwKG4uam9pbigifCIpLCJnIil9LHMubm9Fc2NhcGUoIiwvIiksZS5kZXBhcmFtPWw9ZnVuY3Rpb24odCxuKXt2YXIgcj17fSxvPXsidHJ1ZSI6ITAsImZhbHNlIjohMSwibnVsbCI6bnVsbH07cmV0dXJuIGUuZWFjaCh0LnJlcGxhY2UoL1wrL2csIiAiKS5zcGxpdCgiJiIpLGZ1bmN0aW9uKHQsYSl7dmFyIGksYz1hLnNwbGl0KCI9IiksdT15KGNbMF0pLHM9cixsPTAscD11LnNwbGl0KCJdWyIpLGg9cC5sZW5ndGgtMTtpZigvXFsvLnRlc3QocFswXSkmJi9cXSQvLnRlc3QocFtoXSk/KHBbaF09cFtoXS5yZXBsYWNlKC9cXSQvLCIiKSxwPXAuc2hpZnQoKS5zcGxpdCgiWyIpLmNvbmNhdChwKSxoPXAubGVuZ3RoLTEpOmg9MCwyPT09Yy5sZW5ndGgpaWYoaT15KGNbMV0pLG4mJihpPWkmJiFpc05hTihpKT8raToidW5kZWZpbmVkIj09PWk/ZjpvW2ldIT09Zj9vW2ldOmkpLGgpZm9yKDtsPD1oO2wrKyl1PSIiPT09cFtsXT9zLmxlbmd0aDpwW2xdLHM9c1t1XT1sPGg/c1t1XXx8KHBbbCsxXSYmaXNOYU4ocFtsKzFdKT97fTpbXSk6aTtlbHNlIGUuaXNBcnJheShyW3VdKT9yW3VdLnB1c2goaSk6clt1XSE9PWY/clt1XT1bclt1XSxpXTpyW3VdPWk7ZWxzZSB1JiYoclt1XT1uP2Y6IiIpfSkscn0sbFt3XT1yKGMsMCksbFtBXT1wPXIoYywxKSxlW05dfHwoZVtOXT1mdW5jdGlvbih0KXtyZXR1cm4gZS5leHRlbmQoVSx0KX0pKHthOnEsYmFzZTpxLGlmcmFtZTpDLGltZzpDLGlucHV0OkMsZm9ybToiYWN0aW9uIixsaW5rOnEsc2NyaXB0OkN9KSx2PWVbTl0sZS5mblt3XT1yKHUsdyksZS5mbltBXT1yKHUsQSksJC5wdXNoU3RhdGU9aD1mdW5jdGlvbihlLHIpe24oZSkmJi9eIy8udGVzdChlKSYmcj09PWYmJihyPTIpO3ZhciBvPWUhPT1mLGE9cyh0W1NdW3FdLG8/ZTp7fSxvP3I6Mik7dFtTXVtxXT1hKygvIy8udGVzdChhKT8iIjoiIyIpfSwkLmdldFN0YXRlPWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PWZ8fCJib29sZWFuIj09dHlwZW9mIGU/cChlKTpwKHQpW2VdfSwkLnJlbW92ZVN0YXRlPWZ1bmN0aW9uKHQpe3ZhciBuPXt9O3QhPT1mJiYobj1kKCksZS5lYWNoKGUuaXNBcnJheSh0KT90OmFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe2RlbGV0ZSBuW3RdfSkpLGgobiwyKX0seFtqXT1lLmV4dGVuZCh4W2pdLHthZGQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlKXt2YXIgdD1lW0FdPXMoKTtlLmdldFN0YXRlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGU9PT1mfHwiYm9vbGVhbiI9PXR5cGVvZiBlP2wodCxlKTpsKHQsbilbZV19LHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciByO3JldHVybiBlLmlzRnVuY3Rpb24odCk/KHI9dCxuKToocj10LmhhbmRsZXIsdm9pZCh0LmhhbmRsZXI9bikpfX0pfShqUXVlcnksdGhpcyksZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGU9ZXx8dFtpXVt1XSxlLnJlcGxhY2UoL15bXiNdKiM/KC4qKSQvLCIkMSIpfXZhciBvLGE9ZS5ldmVudC5zcGVjaWFsLGk9ImxvY2F0aW9uIixjPSJoYXNoY2hhbmdlIix1PSJocmVmIixmPWUuYnJvd3NlcixzPWRvY3VtZW50LmRvY3VtZW50TW9kZSxsPWYubXNpZSYmKHM9PT1ufHxzPDgpLHA9Im9uIitjIGluIHQmJiFsO2VbYysiRGVsYXkiXT0xMDAsYVtjXT1lLmV4dGVuZChhW2NdLHtzZXR1cDpmdW5jdGlvbigpe3JldHVybiFwJiZ2b2lkIGUoby5zdGFydCl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIXAmJnZvaWQgZShvLnN0b3ApfX0pLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7Zj1zPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxsJiYoYT1lKCc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDowIi8+JykuaGlkZSgpLmluc2VydEFmdGVyKCJib2R5IilbMF0uY29udGVudFdpbmRvdyxzPWZ1bmN0aW9uKCl7cmV0dXJuIHIoYS5kb2N1bWVudFtpXVt1XSl9LChmPWZ1bmN0aW9uKGUsdCl7aWYoZSE9PXQpe3ZhciBuPWEuZG9jdW1lbnQ7bi5vcGVuKCkuY2xvc2UoKSxuW2ldLmhhc2g9IiMiK2V9fSkocigpKSl9dmFyIG8sYSxmLHMscD17fTtyZXR1cm4gcC5zdGFydD1mdW5jdGlvbigpe2lmKCFvKXt2YXIgYT1yKCk7Znx8bigpLGZ1bmN0aW9uIGwoKXt2YXIgbj1yKCkscD1zKGEpO24hPT1hPyhmKGE9bixwKSxlKHQpLnRyaWdnZXIoYykpOnAhPT1hJiYodFtpXVt1XT10W2ldW3VdLnJlcGxhY2UoLyMuKi8sIiIpKyIjIitwKSxvPXNldFRpbWVvdXQobCxlW2MrIkRlbGF5Il0pfSgpfX0scC5zdG9wPWZ1bmN0aW9uKCl7YXx8KG8mJmNsZWFyVGltZW91dChvKSxvPTApfSxwfSgpfShqUXVlcnksdGhpcyk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanF1ZXJ5LnNsaWRldG8ubWluLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanF1ZXJ5LnNsaWRldG8ubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTk5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qcXVlcnkuc2xpZGV0by5taW4uanMKQEAgLTAsMCArMSBAQAorIWZ1bmN0aW9uKGkpe2kuZm4uc2xpZGV0bz1mdW5jdGlvbihvKXtyZXR1cm4gbz1pLmV4dGVuZCh7c2xpZGVfZHVyYXRpb246InNsb3ciLGhpZ2hsaWdodF9kdXJhdGlvbjozZTMsaGlnaGxpZ2h0OiEwLGhpZ2hsaWdodF9jb2xvcjoiI0ZGRkY5OSJ9LG8pLHRoaXMuZWFjaChmdW5jdGlvbigpe29iaj1pKHRoaXMpLGkoImJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6b2JqLm9mZnNldCgpLnRvcH0sby5zbGlkZV9kdXJhdGlvbixmdW5jdGlvbigpe28uaGlnaGxpZ2h0JiZpLnVpLnZlcnNpb24mJm9iai5lZmZlY3QoImhpZ2hsaWdodCIse2NvbG9yOm8uaGlnaGxpZ2h0X2NvbG9yfSxvLmhpZ2hsaWdodF9kdXJhdGlvbil9KX0pfX0oalF1ZXJ5KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qcXVlcnkud2lnZ2xlLm1pbi5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pxdWVyeS53aWdnbGUubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNGUyNjEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qcXVlcnkud2lnZ2xlLm1pbi5qcwpAQCAtMCwwICsxIEBACitqUXVlcnkuZm4ud2lnZ2xlPWZ1bmN0aW9uKGUpe3ZhciBhPXtzcGVlZDo1MCx3aWdnbGVzOjMsdHJhdmVsOjUsY2FsbGJhY2s6bnVsbH0sZT1qUXVlcnkuZXh0ZW5kKGEsZSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBhPXRoaXMsbD0oalF1ZXJ5KHRoaXMpLndyYXAoJzxkaXYgY2xhc3M9IndpZ2dsZS13cmFwIj48L2Rpdj4nKS5jc3MoInBvc2l0aW9uIiwicmVsYXRpdmUiKSwwKTtmb3IoaT0xO2k8PWUud2lnZ2xlcztpKyspalF1ZXJ5KHRoaXMpLmFuaW1hdGUoe2xlZnQ6Ii09IitlLnRyYXZlbH0sZS5zcGVlZCkuYW5pbWF0ZSh7bGVmdDoiKz0iKzIqZS50cmF2ZWx9LDIqZS5zcGVlZCkuYW5pbWF0ZSh7bGVmdDoiLT0iK2UudHJhdmVsfSxlLnNwZWVkLGZ1bmN0aW9uKCl7bCsrLGpRdWVyeShhKS5wYXJlbnQoKS5oYXNDbGFzcygid2lnZ2xlLXdyYXAiKSYmalF1ZXJ5KGEpLnBhcmVudCgpLnJlcGxhY2VXaXRoKGEpLGw9PWUud2lnZ2xlcyYmalF1ZXJ5LmlzRnVuY3Rpb24oZS5jYWxsYmFjaykmJmUuY2FsbGJhY2soKX0pfSl9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pzLXlhbWwubWluLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvanMteWFtbC5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxNGE0MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pzLXlhbWwubWluLmpzCkBAIC0wLDAgKzEsMiBAQAorIWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9dCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sdCk7ZWxzZXt2YXIgZTtlPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyxlLmpzeWFtbD10KCl9fShmdW5jdGlvbigpe3ZhciB0O3JldHVybiBmdW5jdGlvbiBlKHQsbixpKXtmdW5jdGlvbiByKGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgYz0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmYylyZXR1cm4gYyhhLCEwKTtpZihvKXJldHVybiBvKGEsITApO3ZhciB1PW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2ErIiciKTt0aHJvdyB1LmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLHV9dmFyIGw9blthXT17ZXhwb3J0czp7fX07dFthXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2FdWzFdW2VdO3JldHVybiByKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4saSl9cmV0dXJuIG5bYV0uZXhwb3J0c31mb3IodmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsYT0wO2E8aS5sZW5ndGg7YSsrKXIoaVthXSk7cmV0dXJuIHJ9KHsxOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiAiK3QrIiBpcyBkZXByZWNhdGVkIGFuZCBjYW5ub3QgYmUgdXNlZC4iKX19dmFyIHI9dCgiLi9qcy15YW1sL2xvYWRlciIpLG89dCgiLi9qcy15YW1sL2R1bXBlciIpO2UuZXhwb3J0cy5UeXBlPXQoIi4vanMteWFtbC90eXBlIiksZS5leHBvcnRzLlNjaGVtYT10KCIuL2pzLXlhbWwvc2NoZW1hIiksZS5leHBvcnRzLkZBSUxTQUZFX1NDSEVNQT10KCIuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlIiksZS5leHBvcnRzLkpTT05fU0NIRU1BPXQoIi4vanMteWFtbC9zY2hlbWEvanNvbiIpLGUuZXhwb3J0cy5DT1JFX1NDSEVNQT10KCIuL2pzLXlhbWwvc2NoZW1hL2NvcmUiKSxlLmV4cG9ydHMuREVGQVVMVF9TQUZFX1NDSEVNQT10KCIuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZSIpLGUuZXhwb3J0cy5ERUZBVUxUX0ZVTExfU0NIRU1BPXQoIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsIiksZS5leHBvcnRzLmxvYWQ9ci5sb2FkLGUuZXhwb3J0cy5sb2FkQWxsPXIubG9hZEFsbCxlLmV4cG9ydHMuc2FmZUxvYWQ9ci5zYWZlTG9hZCxlLmV4cG9ydHMuc2FmZUxvYWRBbGw9ci5zYWZlTG9hZEFsbCxlLmV4cG9ydHMuZHVtcD1vLmR1bXAsZS5leHBvcnRzLnNhZmVEdW1wPW8uc2FmZUR1bXAsZS5leHBvcnRzLllBTUxFeGNlcHRpb249dCgiLi9qcy15YW1sL2V4Y2VwdGlvbiIpLGUuZXhwb3J0cy5NSU5JTUFMX1NDSEVNQT10KCIuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlIiksZS5leHBvcnRzLlNBRkVfU0NIRU1BPXQoIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9zYWZlIiksZS5leHBvcnRzLkRFRkFVTFRfU0NIRU1BPXQoIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsIiksZS5leHBvcnRzLnNjYW49aSgic2NhbiIpLGUuZXhwb3J0cy5wYXJzZT1pKCJwYXJzZSIpLGUuZXhwb3J0cy5jb21wb3NlPWkoImNvbXBvc2UiKSxlLmV4cG9ydHMuYWRkQ29uc3RydWN0b3I9aSgiYWRkQ29uc3RydWN0b3IiKX0seyIuL2pzLXlhbWwvZHVtcGVyIjozLCIuL2pzLXlhbWwvZXhjZXB0aW9uIjo0LCIuL2pzLXlhbWwvbG9hZGVyIjo1LCIuL2pzLXlhbWwvc2NoZW1hIjo3LCIuL2pzLXlhbWwvc2NoZW1hL2NvcmUiOjgsIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsIjo5LCIuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZSI6MTAsIi4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUiOjExLCIuL2pzLXlhbWwvc2NoZW1hL2pzb24iOjEyLCIuL2pzLXlhbWwvdHlwZSI6MTN9XSwyOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0fHxudWxsPT09dH1mdW5jdGlvbiByKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90OmkodCk/W106W3RdfWZ1bmN0aW9uIGEodCxlKXt2YXIgbixpLHIsbztpZihlKWZvcihvPU9iamVjdC5rZXlzKGUpLG49MCxpPW8ubGVuZ3RoO2k+bjtuKz0xKXI9b1tuXSx0W3JdPWVbcl07cmV0dXJuIHR9ZnVuY3Rpb24gcyh0LGUpe3ZhciBuLGk9IiI7Zm9yKG49MDtlPm47bis9MSlpKz10O3JldHVybiBpfWZ1bmN0aW9uIGModCl7cmV0dXJuIDA9PT10JiZOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk9PT0xL3R9ZS5leHBvcnRzLmlzTm90aGluZz1pLGUuZXhwb3J0cy5pc09iamVjdD1yLGUuZXhwb3J0cy50b0FycmF5PW8sZS5leHBvcnRzLnJlcGVhdD1zLGUuZXhwb3J0cy5pc05lZ2F0aXZlWmVybz1jLGUuZXhwb3J0cy5leHRlbmQ9YX0se31dLDM6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0LGUpe3ZhciBuLGkscixvLGEscyxjO2lmKG51bGw9PT1lKXJldHVybnt9O2ZvcihuPXt9LGk9T2JqZWN0LmtleXMoZSkscj0wLG89aS5sZW5ndGg7bz5yO3IrPTEpYT1pW3JdLHM9U3RyaW5nKGVbYV0pLCIhISI9PT1hLnNsaWNlKDAsMikmJihhPSJ0YWc6eWFtbC5vcmcsMjAwMjoiK2Euc2xpY2UoMikpLGM9dC5jb21waWxlZFR5cGVNYXBbYV0sYyYmRS5jYWxsKGMuc3R5bGVBbGlhc2VzLHMpJiYocz1jLnN0eWxlQWxpYXNlc1tzXSksblthXT1zO3JldHVybiBufWZ1bmN0aW9uIHIodCl7dmFyIGUsbixpO2lmKGU9dC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSwyNTU+PXQpbj0ieCIsaT0yO2Vsc2UgaWYoNjU1MzU+PXQpbj0idSIsaT00O2Vsc2V7aWYoISg0Mjk0OTY3Mjk1Pj10KSl0aHJvdyBuZXcgTygiY29kZSBwb2ludCB3aXRoaW4gYSBzdHJpbmcgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gMHhGRkZGRkZGRiIpO249IlUiLGk9OH1yZXR1cm4iXFwiK24rai5yZXBlYXQoIjAiLGktZS5sZW5ndGgpK2V9ZnVuY3Rpb24gbyh0KXt0aGlzLnNjaGVtYT10LnNjaGVtYXx8Uyx0aGlzLmluZGVudD1NYXRoLm1heCgxLHQuaW5kZW50fHwyKSx0aGlzLnNraXBJbnZhbGlkPXQuc2tpcEludmFsaWR8fCExLHRoaXMuZmxvd0xldmVsPWouaXNOb3RoaW5nKHQuZmxvd0xldmVsKT8tMTp0LmZsb3dMZXZlbCx0aGlzLnN0eWxlTWFwPWkodGhpcy5zY2hlbWEsdC5zdHlsZXN8fG51bGwpLHRoaXMuc29ydEtleXM9dC5zb3J0S2V5c3x8ITEsdGhpcy5saW5lV2lkdGg9dC5saW5lV2lkdGh8fDgwLHRoaXMuaW1wbGljaXRUeXBlcz10aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0LHRoaXMuZXhwbGljaXRUeXBlcz10aGlzLnNjaGVtYS5jb21waWxlZEV4cGxpY2l0LHRoaXMudGFnPW51bGwsdGhpcy5yZXN1bHQ9IiIsdGhpcy5kdXBsaWNhdGVzPVtdLHRoaXMudXNlZER1cGxpY2F0ZXM9bnVsbH1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuLGk9ai5yZXBlYXQoIiAiLGUpLHI9MCxvPS0xLGE9IiIscz10Lmxlbmd0aDtzPnI7KW89dC5pbmRleE9mKCJcbiIsciksLTE9PT1vPyhuPXQuc2xpY2Uocikscj1zKToobj10LnNsaWNlKHIsbysxKSxyPW8rMSksbi5sZW5ndGgmJiJcbiIhPT1uJiYoYSs9aSksYSs9bjtyZXR1cm4gYX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIlxuIitqLnJlcGVhdCgiICIsdC5pbmRlbnQqZSl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBuLGkscjtmb3Iobj0wLGk9dC5pbXBsaWNpdFR5cGVzLmxlbmd0aDtpPm47bis9MSlpZihyPXQuaW1wbGljaXRUeXBlc1tuXSxyLnJlc29sdmUoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdSh0KXt0aGlzLnNvdXJjZT10LHRoaXMucmVzdWx0PSIiLHRoaXMuY2hlY2twb2ludD0wfWZ1bmN0aW9uIGwodCxlLG4saSl7dmFyIHIsbyxzLGwsZixtLHksZyx2LHgsQSxiLHcsayxDLGosTyxTLF8sSSxFO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdm9pZCh0LmR1bXA9IicnIik7aWYoLTEhPT1ldC5pbmRleE9mKGUpKXJldHVybiB2b2lkKHQuZHVtcD0iJyIrZSsiJyIpO2ZvcihyPSEwLG89ZS5sZW5ndGg/ZS5jaGFyQ29kZUF0KDApOjAscz1NPT09b3x8TT09PWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKSwoSz09PW98fFc9PT1vfHxHPT09b3x8ej09PW8pJiYocj0hMSkscz8ocj0hMSxsPSExLGY9ITEpOihsPSFpLGY9IWkpLG09ITAseT1uZXcgdShlKSxnPSExLHY9MCx4PTAsQT10LmluZGVudCpuLGI9dC5saW5lV2lkdGgsLTE9PT1iJiYoYj05MDA3MTk5MjU0NzQwOTkxKSw0MD5BP2ItPUE6Yj00MCxrPTA7azxlLmxlbmd0aDtrKyspe2lmKHc9ZS5jaGFyQ29kZUF0KGspLHIpe2lmKGgodykpY29udGludWU7cj0hMX1tJiZ3PT09UCYmKG09ITEpLEM9dHRbd10saj1kKHcpLChDfHxqKSYmKHchPT1OJiZ3IT09RCYmdyE9PVA/KGw9ITEsZj0hMSk6dz09PU4mJihnPSEwLG09ITEsaz4wJiYoTz1lLmNoYXJDb2RlQXQoay0xKSxPPT09TSYmKGY9ITEsbD0hMSkpLGwmJihTPWstdix2PWssUz54JiYoeD1TKSkpLHchPT1EJiYobT0hMSkseS50YWtlVXBUbyhrKSx5LmVzY2FwZUNoYXIoKSl9aWYociYmYyh0LGUpJiYocj0hMSksXz0iIiwobHx8ZikmJihJPTAsZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09TiYmKEkrPTEsZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTIpPT09TiYmKEkrPTEpKSwwPT09ST9fPSItIjoyPT09SSYmKF89IisiKSksZiYmYj54JiYobD0hMSksZ3x8KGY9ITEpLHIpdC5kdW1wPWU7ZWxzZSBpZihtKXQuZHVtcD0iJyIrZSsiJyI7ZWxzZSBpZihsKUU9cChlLGIpLHQuZHVtcD0iPiIrXysiXG4iK2EoRSxBKTtlbHNlIGlmKGYpX3x8KGU9ZS5yZXBsYWNlKC9cbiQvLCIiKSksdC5kdW1wPSJ8IitfKyJcbiIrYShlLEEpO2Vsc2V7aWYoIXkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZHVtcCBzY2FsYXIgdmFsdWUiKTt5LmZpbmlzaCgpLHQuZHVtcD0nIicreS5yZXN1bHQrJyInfX1mdW5jdGlvbiBwKHQsZSl7dmFyIG4saT0iIixyPTAsbz10Lmxlbmd0aCxhPS9cbiskLy5leGVjKHQpO2ZvcihhJiYobz1hLmluZGV4KzEpO28+cjspbj10LmluZGV4T2YoIlxuIixyKSxuPm98fC0xPT09bj8oaSYmKGkrPSJcblxuIiksaSs9Zih0LnNsaWNlKHIsbyksZSkscj1vKTooaSYmKGkrPSJcblxuIiksaSs9Zih0LnNsaWNlKHIsbiksZSkscj1uKzEpO3JldHVybiBhJiYiXG4iIT09YVswXSYmKGkrPWFbMF0pLGl9ZnVuY3Rpb24gZih0LGUpe2lmKCIiPT09dClyZXR1cm4gdDtmb3IodmFyIG4saSxyLG89L1teXHNdIFteXHNdL2csYT0iIixzPTAsYz0wLHU9by5leGVjKHQpO3U7KW49dS5pbmRleCxuLWM+ZSYmKGk9cyE9PWM/czpuLGEmJihhKz0iXG4iKSxyPXQuc2xpY2UoYyxpKSxhKz1yLGM9aSsxKSxzPW4rMSx1PW8uZXhlYyh0KTtyZXR1cm4gYSYmKGErPSJcbiIpLGErPWMhPT1zJiZ0Lmxlbmd0aC1jPmU/dC5zbGljZShjLHMpKyJcbiIrdC5zbGljZShzKzEpOnQuc2xpY2UoYyl9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gRiE9PXQmJk4hPT10JiZUIT09dCYmJCE9PXQmJlYhPT10JiZaIT09dCYmSiE9PXQmJlghPT10JiZVIT09dCYmWSE9PXQmJkIhPT10JiZMIT09dCYmUSE9PXQmJlIhPT10JiZQIT09dCYmRCE9PXQmJnEhPT10JiZIIT09dCYmIXR0W3RdJiYhZCh0KX1mdW5jdGlvbiBkKHQpe3JldHVybiEodD49MzImJjEyNj49dHx8MTMzPT09dHx8dD49MTYwJiY1NTI5NT49dHx8dD49NTczNDQmJjY1NTMzPj10fHx0Pj02NTUzNiYmMTExNDExMT49dCl9ZnVuY3Rpb24gbSh0LGUsbil7dmFyIGkscixvPSIiLGE9dC50YWc7Zm9yKGk9MCxyPW4ubGVuZ3RoO3I+aTtpKz0xKUEodCxlLG5baV0sITEsITEpJiYoMCE9PWkmJihvKz0iLCAiKSxvKz10LmR1bXApO3QudGFnPWEsdC5kdW1wPSJbIitvKyJdIn1mdW5jdGlvbiB5KHQsZSxuLGkpe3ZhciByLG8sYT0iIixjPXQudGFnO2ZvcihyPTAsbz1uLmxlbmd0aDtvPnI7cis9MSlBKHQsZSsxLG5bcl0sITAsITApJiYoaSYmMD09PXJ8fChhKz1zKHQsZSkpLGErPSItICIrdC5kdW1wKTt0LnRhZz1jLHQuZHVtcD1hfHwiW10ifWZ1bmN0aW9uIGcodCxlLG4pe3ZhciBpLHIsbyxhLHMsYz0iIix1PXQudGFnLGw9T2JqZWN0LmtleXMobik7Zm9yKGk9MCxyPWwubGVuZ3RoO3I+aTtpKz0xKXM9IiIsMCE9PWkmJihzKz0iLCAiKSxvPWxbaV0sYT1uW29dLEEodCxlLG8sITEsITEpJiYodC5kdW1wLmxlbmd0aD4xMDI0JiYocys9Ij8gIikscys9dC5kdW1wKyI6ICIsQSh0LGUsYSwhMSwhMSkmJihzKz10LmR1bXAsYys9cykpO3QudGFnPXUsdC5kdW1wPSJ7IitjKyJ9In1mdW5jdGlvbiB2KHQsZSxuLGkpe3ZhciByLG8sYSxjLHUsbCxwPSIiLGY9dC50YWcsaD1PYmplY3Qua2V5cyhuKTtpZih0LnNvcnRLZXlzPT09ITApaC5zb3J0KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5zb3J0S2V5cyloLnNvcnQodC5zb3J0S2V5cyk7ZWxzZSBpZih0LnNvcnRLZXlzKXRocm93IG5ldyBPKCJzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uIik7Zm9yKHI9MCxvPWgubGVuZ3RoO28+cjtyKz0xKWw9IiIsaSYmMD09PXJ8fChsKz1zKHQsZSkpLGE9aFtyXSxjPW5bYV0sQSh0LGUrMSxhLCEwLCEwLCEwKSYmKHU9bnVsbCE9PXQudGFnJiYiPyIhPT10LnRhZ3x8dC5kdW1wJiZ0LmR1bXAubGVuZ3RoPjEwMjQsdSYmKGwrPXQuZHVtcCYmTj09PXQuZHVtcC5jaGFyQ29kZUF0KDApPyI/IjoiPyAiKSxsKz10LmR1bXAsdSYmKGwrPXModCxlKSksQSh0LGUrMSxjLCEwLHUpJiYobCs9dC5kdW1wJiZOPT09dC5kdW1wLmNoYXJDb2RlQXQoMCk/IjoiOiI6ICIsbCs9dC5kdW1wLHArPWwpKTt0LnRhZz1mLHQuZHVtcD1wfHwie30ifWZ1bmN0aW9uIHgodCxlLG4pe3ZhciBpLHIsbyxhLHMsYztmb3Iocj1uP3QuZXhwbGljaXRUeXBlczp0LmltcGxpY2l0VHlwZXMsbz0wLGE9ci5sZW5ndGg7YT5vO28rPTEpaWYocz1yW29dLChzLmluc3RhbmNlT2Z8fHMucHJlZGljYXRlKSYmKCFzLmluc3RhbmNlT2Z8fCJvYmplY3QiPT10eXBlb2YgZSYmZSBpbnN0YW5jZW9mIHMuaW5zdGFuY2VPZikmJighcy5wcmVkaWNhdGV8fHMucHJlZGljYXRlKGUpKSl7aWYodC50YWc9bj9zLnRhZzoiPyIscy5yZXByZXNlbnQpe2lmKGM9dC5zdHlsZU1hcFtzLnRhZ118fHMuZGVmYXVsdFN0eWxlLCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1JLmNhbGwocy5yZXByZXNlbnQpKWk9cy5yZXByZXNlbnQoZSxjKTtlbHNle2lmKCFFLmNhbGwocy5yZXByZXNlbnQsYykpdGhyb3cgbmV3IE8oIiE8IitzLnRhZysnPiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgIicrYysnIiBzdHlsZScpO2k9cy5yZXByZXNlbnRbY10oZSxjKX10LmR1bXA9aX1yZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBBKHQsZSxuLGkscixvKXt0LnRhZz1udWxsLHQuZHVtcD1uLHgodCxuLCExKXx8eCh0LG4sITApO3ZhciBhPUkuY2FsbCh0LmR1bXApO2kmJihpPTA+dC5mbG93TGV2ZWx8fHQuZmxvd0xldmVsPmUpO3ZhciBzLGMsdT0iW29iamVjdCBPYmplY3RdIj09PWF8fCJbb2JqZWN0IEFycmF5XSI9PT1hO2lmKHUmJihzPXQuZHVwbGljYXRlcy5pbmRleE9mKG4pLGM9LTEhPT1zKSwobnVsbCE9PXQudGFnJiYiPyIhPT10LnRhZ3x8Y3x8MiE9PXQuaW5kZW50JiZlPjApJiYocj0hMSksYyYmdC51c2VkRHVwbGljYXRlc1tzXSl0LmR1bXA9IipyZWZfIitzO2Vsc2V7aWYodSYmYyYmIXQudXNlZER1cGxpY2F0ZXNbc10mJih0LnVzZWREdXBsaWNhdGVzW3NdPSEwKSwiW29iamVjdCBPYmplY3RdIj09PWEpaSYmMCE9PU9iamVjdC5rZXlzKHQuZHVtcCkubGVuZ3RoPyh2KHQsZSx0LmR1bXAsciksYyYmKHQuZHVtcD0iJnJlZl8iK3MrdC5kdW1wKSk6KGcodCxlLHQuZHVtcCksYyYmKHQuZHVtcD0iJnJlZl8iK3MrIiAiK3QuZHVtcCkpO2Vsc2UgaWYoIltvYmplY3QgQXJyYXldIj09PWEpaSYmMCE9PXQuZHVtcC5sZW5ndGg/KHkodCxlLHQuZHVtcCxyKSxjJiYodC5kdW1wPSImcmVmXyIrcyt0LmR1bXApKToobSh0LGUsdC5kdW1wKSxjJiYodC5kdW1wPSImcmVmXyIrcysiICIrdC5kdW1wKSk7ZWxzZXtpZigiW29iamVjdCBTdHJpbmddIiE9PWEpe2lmKHQuc2tpcEludmFsaWQpcmV0dXJuITE7dGhyb3cgbmV3IE8oInVuYWNjZXB0YWJsZSBraW5kIG9mIGFuIG9iamVjdCB0byBkdW1wICIrYSl9Ij8iIT09dC50YWcmJmwodCx0LmR1bXAsZSxvKX1udWxsIT09dC50YWcmJiI/IiE9PXQudGFnJiYodC5kdW1wPSIhPCIrdC50YWcrIj4gIit0LmR1bXApfXJldHVybiEwfWZ1bmN0aW9uIGIodCxlKXt2YXIgbixpLHI9W10sbz1bXTtmb3Iodyh0LHIsbyksbj0wLGk9by5sZW5ndGg7aT5uO24rPTEpZS5kdXBsaWNhdGVzLnB1c2gocltvW25dXSk7ZS51c2VkRHVwbGljYXRlcz1uZXcgQXJyYXkoaSl9ZnVuY3Rpb24gdyh0LGUsbil7dmFyIGkscixvO2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpaWYocj1lLmluZGV4T2YodCksLTEhPT1yKS0xPT09bi5pbmRleE9mKHIpJiZuLnB1c2gocik7ZWxzZSBpZihlLnB1c2godCksQXJyYXkuaXNBcnJheSh0KSlmb3Iocj0wLG89dC5sZW5ndGg7bz5yO3IrPTEpdyh0W3JdLGUsbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPTAsbz1pLmxlbmd0aDtvPnI7cis9MSl3KHRbaVtyXV0sZSxuKX1mdW5jdGlvbiBrKHQsZSl7ZT1lfHx7fTt2YXIgbj1uZXcgbyhlKTtyZXR1cm4gYih0LG4pLEEobiwwLHQsITAsITApP24uZHVtcCsiXG4iOiIifWZ1bmN0aW9uIEModCxlKXtyZXR1cm4gayh0LGouZXh0ZW5kKHtzY2hlbWE6X30sZSkpfXZhciBqPXQoIi4vY29tbW9uIiksTz10KCIuL2V4Y2VwdGlvbiIpLFM9dCgiLi9zY2hlbWEvZGVmYXVsdF9mdWxsIiksXz10KCIuL3NjaGVtYS9kZWZhdWx0X3NhZmUiKSxJPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEY9OSxOPTEwLFQ9MTMsTT0zMixMPTMzLEQ9MzQsVT0zNSxxPTM3LFk9MzgsUD0zOSxCPTQyLCQ9NDQsSz00NSxIPTU4LFI9NjIsVz02MyxHPTY0LFY9OTEsWj05Myx6PTk2LEo9MTIzLFE9MTI0LFg9MTI1LHR0PXt9O3R0WzBdPSJcXDAiLHR0WzddPSJcXGEiLHR0WzhdPSJcXGIiLHR0WzldPSJcXHQiLHR0WzEwXT0iXFxuIix0dFsxMV09IlxcdiIsdHRbMTJdPSJcXGYiLHR0WzEzXT0iXFxyIix0dFsyN109IlxcZSIsdHRbMzRdPSdcXCInLHR0WzkyXT0iXFxcXCIsdHRbMTMzXT0iXFxOIix0dFsxNjBdPSJcXF8iLHR0WzgyMzJdPSJcXEwiLHR0WzgyMzNdPSJcXFAiO3ZhciBldD1bInkiLCJZIiwieWVzIiwiWWVzIiwiWUVTIiwib24iLCJPbiIsIk9OIiwibiIsIk4iLCJubyIsIk5vIiwiTk8iLCJvZmYiLCJPZmYiLCJPRkYiXTt1LnByb3RvdHlwZS50YWtlVXBUbz1mdW5jdGlvbih0KXt2YXIgZTtpZih0PHRoaXMuY2hlY2twb2ludCl0aHJvdyBlPW5ldyBFcnJvcigicG9zaXRpb24gc2hvdWxkIGJlID4gY2hlY2twb2ludCIpLGUucG9zaXRpb249dCxlLmNoZWNrcG9pbnQ9dGhpcy5jaGVja3BvaW50LGU7cmV0dXJuIHRoaXMucmVzdWx0Kz10aGlzLnNvdXJjZS5zbGljZSh0aGlzLmNoZWNrcG9pbnQsdCksdGhpcy5jaGVja3BvaW50PXQsdGhpc30sdS5wcm90b3R5cGUuZXNjYXBlQ2hhcj1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIHQ9dGhpcy5zb3VyY2UuY2hhckNvZGVBdCh0aGlzLmNoZWNrcG9pbnQpLGU9dHRbdF18fHIodCksdGhpcy5yZXN1bHQrPWUsdGhpcy5jaGVja3BvaW50Kz0xLHRoaXN9LHUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuc291cmNlLmxlbmd0aD50aGlzLmNoZWNrcG9pbnQmJnRoaXMudGFrZVVwVG8odGhpcy5zb3VyY2UubGVuZ3RoKX0sZS5leHBvcnRzLmR1bXA9ayxlLmV4cG9ydHMuc2FmZUR1bXA9Q30seyIuL2NvbW1vbiI6MiwiLi9leGNlcHRpb24iOjQsIi4vc2NoZW1hL2RlZmF1bHRfZnVsbCI6OSwiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIjoxMH1dLDQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0LGUpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPShuZXcgRXJyb3IpLnN0YWNrfHwiIix0aGlzLm5hbWU9IllBTUxFeGNlcHRpb24iLHRoaXMucmVhc29uPXQsdGhpcy5tYXJrPWUsdGhpcy5tZXNzYWdlPSh0aGlzLnJlYXNvbnx8Iih1bmtub3duIHJlYXNvbikiKSsodGhpcy5tYXJrPyIgIit0aGlzLm1hcmsudG9TdHJpbmcoKToiIil9dmFyIHI9dCgiaW5oZXJpdCIpO3IoaSxFcnJvciksaS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5uYW1lKyI6ICI7cmV0dXJuIGUrPXRoaXMucmVhc29ufHwiKHVua25vd24gcmVhc29uKSIsIXQmJnRoaXMubWFyayYmKGUrPSIgIit0aGlzLm1hcmsudG9TdHJpbmcoKSksZX0sZS5leHBvcnRzPWl9LHtpbmhlcml0OjMxfV0sNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiAxMD09PXR8fDEzPT09dH1mdW5jdGlvbiByKHQpe3JldHVybiA5PT09dHx8MzI9PT10fWZ1bmN0aW9uIG8odCl7cmV0dXJuIDk9PT10fHwzMj09PXR8fDEwPT09dHx8MTM9PT10fWZ1bmN0aW9uIGEodCl7cmV0dXJuIDQ0PT09dHx8OTE9PT10fHw5Mz09PXR8fDEyMz09PXR8fDEyNT09PXR9ZnVuY3Rpb24gcyh0KXt2YXIgZTtyZXR1cm4gdD49NDgmJjU3Pj10P3QtNDg6KGU9MzJ8dCxlPj05NyYmMTAyPj1lP2UtOTcrMTA6LTEpfWZ1bmN0aW9uIGModCl7cmV0dXJuIDEyMD09PXQ/MjoxMTc9PT10PzQ6ODU9PT10Pzg6MH1mdW5jdGlvbiB1KHQpe3JldHVybiB0Pj00OCYmNTc+PXQ/dC00ODotMX1mdW5jdGlvbiBsKHQpe3JldHVybiA0OD09PXQ/IlwwIjo5Nz09PXQ/IgciOjk4PT09dD8iXGIiOjExNj09PXQ/Ilx0Ijo5PT09dD8iXHQiOjExMD09PXQ/IlxuIjoxMTg9PT10PyJceDBCIjoxMDI9PT10PyJcZiI6MTE0PT09dD8iXHIiOjEwMT09PXQ/IhsiOjMyPT09dD8iICI6MzQ9PT10PyciJzo0Nz09PXQ/Ii8iOjkyPT09dD8iXFwiOjc4PT09dD8iwoUiOjk1PT09dD8iwqAiOjc2PT09dD8iXHUyMDI4Ijo4MD09PXQ/Ilx1MjAyOSI6IiJ9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gNjU1MzU+PXQ/U3RyaW5nLmZyb21DaGFyQ29kZSh0KTpTdHJpbmcuZnJvbUNoYXJDb2RlKCh0LTY1NTM2Pj4xMCkrNTUyOTYsKHQtNjU1MzYmMTAyMykrNTYzMjApfWZ1bmN0aW9uIGYodCxlKXt0aGlzLmlucHV0PXQsdGhpcy5maWxlbmFtZT1lLmZpbGVuYW1lfHxudWxsLHRoaXMuc2NoZW1hPWUuc2NoZW1hfHxILHRoaXMub25XYXJuaW5nPWUub25XYXJuaW5nfHxudWxsLHRoaXMubGVnYWN5PWUubGVnYWN5fHwhMSx0aGlzLmltcGxpY2l0VHlwZXM9dGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdCx0aGlzLnR5cGVNYXA9dGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwLHRoaXMubGVuZ3RoPXQubGVuZ3RoLHRoaXMucG9zaXRpb249MCx0aGlzLmxpbmU9MCx0aGlzLmxpbmVTdGFydD0wLHRoaXMubGluZUluZGVudD0wLHRoaXMuZG9jdW1lbnRzPVtdfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gbmV3IEIoZSxuZXcgJCh0LmZpbGVuYW1lLHQuaW5wdXQsdC5wb3NpdGlvbix0LmxpbmUsdC5wb3NpdGlvbi10LmxpbmVTdGFydCkpfWZ1bmN0aW9uIGQodCxlKXt0aHJvdyBoKHQsZSl9ZnVuY3Rpb24gbSh0LGUpe3Qub25XYXJuaW5nJiZ0Lm9uV2FybmluZy5jYWxsKG51bGwsaCh0LGUpKX1mdW5jdGlvbiB5KHQsZSxuLGkpe3ZhciByLG8sYSxzO2lmKG4+ZSl7aWYocz10LmlucHV0LnNsaWNlKGUsbiksaSlmb3Iocj0wLG89cy5sZW5ndGg7bz5yO3IrPTEpYT1zLmNoYXJDb2RlQXQociksOT09PWF8fGE+PTMyJiYxMTE0MTExPj1hfHxkKHQsImV4cGVjdGVkIHZhbGlkIEpTT04gY2hhcmFjdGVyIik7ZWxzZSBYLnRlc3QocykmJmQodCwidGhlIHN0cmVhbSBjb250YWlucyBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMiKTt0LnJlc3VsdCs9c319ZnVuY3Rpb24gZyh0LGUsbil7dmFyIGkscixvLGE7Zm9yKFAuaXNPYmplY3Qobil8fGQodCwiY2Fubm90IG1lcmdlIG1hcHBpbmdzOyB0aGUgcHJvdmlkZWQgc291cmNlIG9iamVjdCBpcyB1bmFjY2VwdGFibGUiKSxpPU9iamVjdC5rZXlzKG4pLG89MCxhPWkubGVuZ3RoO2E+bztvKz0xKXI9aVtvXSxSLmNhbGwoZSxyKXx8KGVbcl09bltyXSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLGE7aWYoaT1TdHJpbmcoaSksbnVsbD09PWUmJihlPXt9KSwidGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UiPT09bilpZihBcnJheS5pc0FycmF5KHIpKWZvcihvPTAsYT1yLmxlbmd0aDthPm87bys9MSlnKHQsZSxyW29dKTtlbHNlIGcodCxlLHIpO2Vsc2UgZVtpXT1yO3JldHVybiBlfWZ1bmN0aW9uIHgodCl7dmFyIGU7ZT10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbiksMTA9PT1lP3QucG9zaXRpb24rKzoxMz09PWU/KHQucG9zaXRpb24rKywxMD09PXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSYmdC5wb3NpdGlvbisrKTpkKHQsImEgbGluZSBicmVhayBpcyBleHBlY3RlZCIpLHQubGluZSs9MSx0LmxpbmVTdGFydD10LnBvc2l0aW9ufWZ1bmN0aW9uIEEodCxlLG4pe2Zvcih2YXIgbz0wLGE9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pOzAhPT1hOyl7Zm9yKDtyKGEpOylhPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO2lmKGUmJjM1PT09YSlkbyBhPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO3doaWxlKDEwIT09YSYmMTMhPT1hJiYwIT09YSk7aWYoIWkoYSkpYnJlYWs7Zm9yKHgodCksYT10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbiksbysrLHQubGluZUluZGVudD0wOzMyPT09YTspdC5saW5lSW5kZW50KyssYT10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKX1yZXR1cm4tMSE9PW4mJjAhPT1vJiZ0LmxpbmVJbmRlbnQ8biYmbSh0LCJkZWZpY2llbnQgaW5kZW50YXRpb24iKSxvfWZ1bmN0aW9uIGIodCl7dmFyIGUsbj10LnBvc2l0aW9uO3JldHVybiBlPXQuaW5wdXQuY2hhckNvZGVBdChuKSwhKDQ1IT09ZSYmNDYhPT1lfHx0LmlucHV0LmNoYXJDb2RlQXQobisxKSE9PWV8fHQuaW5wdXQuY2hhckNvZGVBdChuKzIpIT09ZXx8KG4rPTMsZT10LmlucHV0LmNoYXJDb2RlQXQobiksMCE9PWUmJiFvKGUpKSl9ZnVuY3Rpb24gdyh0LGUpezE9PT1lP3QucmVzdWx0Kz0iICI6ZT4xJiYodC5yZXN1bHQrPVAucmVwZWF0KCJcbiIsZS0xKSl9ZnVuY3Rpb24gayh0LGUsbil7dmFyIHMsYyx1LGwscCxmLGgsZCxtLGc9dC5raW5kLHY9dC5yZXN1bHQ7aWYobT10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbiksbyhtKXx8YShtKXx8MzU9PT1tfHwzOD09PW18fDQyPT09bXx8MzM9PT1tfHwxMjQ9PT1tfHw2Mj09PW18fDM5PT09bXx8MzQ9PT1tfHwzNz09PW18fDY0PT09bXx8OTY9PT1tKXJldHVybiExO2lmKCg2Mz09PW18fDQ1PT09bSkmJihjPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKzEpLG8oYyl8fG4mJmEoYykpKXJldHVybiExO2Zvcih0LmtpbmQ9InNjYWxhciIsdC5yZXN1bHQ9IiIsdT1sPXQucG9zaXRpb24scD0hMTswIT09bTspe2lmKDU4PT09bSl7aWYoYz10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbisxKSxvKGMpfHxuJiZhKGMpKWJyZWFrfWVsc2UgaWYoMzU9PT1tKXtpZihzPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uLTEpLG8ocykpYnJlYWt9ZWxzZXtpZih0LnBvc2l0aW9uPT09dC5saW5lU3RhcnQmJmIodCl8fG4mJmEobSkpYnJlYWs7aWYoaShtKSl7aWYoZj10LmxpbmUsaD10LmxpbmVTdGFydCxkPXQubGluZUluZGVudCxBKHQsITEsLTEpLHQubGluZUluZGVudD49ZSl7cD0hMCxtPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKTtjb250aW51ZX10LnBvc2l0aW9uPWwsdC5saW5lPWYsdC5saW5lU3RhcnQ9aCx0LmxpbmVJbmRlbnQ9ZDticmVha319cCYmKHkodCx1LGwsITEpLHcodCx0LmxpbmUtZiksdT1sPXQucG9zaXRpb24scD0hMSkscihtKXx8KGw9dC5wb3NpdGlvbisxKSxtPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pfXJldHVybiB5KHQsdSxsLCExKSwhIXQucmVzdWx0fHwodC5raW5kPWcsdC5yZXN1bHQ9diwhMSl9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuLHIsbztpZihuPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSwzOSE9PW4pcmV0dXJuITE7Zm9yKHQua2luZD0ic2NhbGFyIix0LnJlc3VsdD0iIix0LnBvc2l0aW9uKysscj1vPXQucG9zaXRpb247MCE9PShuPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSk7KWlmKDM5PT09bil7aWYoeSh0LHIsdC5wb3NpdGlvbiwhMCksbj10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSwzOSE9PW4pcmV0dXJuITA7cj1vPXQucG9zaXRpb24sdC5wb3NpdGlvbisrfWVsc2UgaShuKT8oeSh0LHIsbywhMCksdyh0LEEodCwhMSxlKSkscj1vPXQucG9zaXRpb24pOnQucG9zaXRpb249PT10LmxpbmVTdGFydCYmYih0KT9kKHQsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhciIpOih0LnBvc2l0aW9uKyssbz10LnBvc2l0aW9uKTtkKHQsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXIiKX1mdW5jdGlvbiBqKHQsZSl7dmFyIG4scixvLGEsdSxsO2lmKGw9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pLDM0IT09bClyZXR1cm4hMTtmb3IodC5raW5kPSJzY2FsYXIiLHQucmVzdWx0PSIiLHQucG9zaXRpb24rKyxuPXI9dC5wb3NpdGlvbjswIT09KGw9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pKTspe2lmKDM0PT09bClyZXR1cm4geSh0LG4sdC5wb3NpdGlvbiwhMCksdC5wb3NpdGlvbisrLCEwO2lmKDkyPT09bCl7aWYoeSh0LG4sdC5wb3NpdGlvbiwhMCksbD10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSxpKGwpKUEodCwhMSxlKTtlbHNlIGlmKDI1Nj5sJiZydFtsXSl0LnJlc3VsdCs9b3RbbF0sdC5wb3NpdGlvbisrO2Vsc2UgaWYoKHU9YyhsKSk+MCl7Zm9yKG89dSxhPTA7bz4wO28tLSlsPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pLCh1PXMobCkpPj0wP2E9KGE8PDQpK3U6ZCh0LCJleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIiKTt0LnJlc3VsdCs9cChhKSx0LnBvc2l0aW9uKyt9ZWxzZSBkKHQsInVua25vd24gZXNjYXBlIHNlcXVlbmNlIik7bj1yPXQucG9zaXRpb259ZWxzZSBpKGwpPyh5KHQsbixyLCEwKSx3KHQsQSh0LCExLGUpKSxuPXI9dC5wb3NpdGlvbik6dC5wb3NpdGlvbj09PXQubGluZVN0YXJ0JiZiKHQpP2QodCwidW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyIik6KHQucG9zaXRpb24rKyxyPXQucG9zaXRpb24pfWQodCwidW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhciIpfWZ1bmN0aW9uIE8odCxlKXt2YXIgbixpLHIsYSxzLGMsdSxsLHAsZixoLG09ITAseT10LnRhZyxnPXQuYW5jaG9yO2lmKGg9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pLDkxPT09aClhPTkzLHU9ITEsaT1bXTtlbHNle2lmKDEyMyE9PWgpcmV0dXJuITE7YT0xMjUsdT0hMCxpPXt9fWZvcihudWxsIT09dC5hbmNob3ImJih0LmFuY2hvck1hcFt0LmFuY2hvcl09aSksaD10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKTswIT09aDspe2lmKEEodCwhMCxlKSxoPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSxoPT09YSlyZXR1cm4gdC5wb3NpdGlvbisrLHQudGFnPXksdC5hbmNob3I9Zyx0LmtpbmQ9dT8ibWFwcGluZyI6InNlcXVlbmNlIix0LnJlc3VsdD1pLCEwO218fGQodCwibWlzc2VkIGNvbW1hIGJldHdlZW4gZmxvdyBjb2xsZWN0aW9uIGVudHJpZXMiKSxwPWw9Zj1udWxsLHM9Yz0hMSw2Mz09PWgmJihyPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKzEpLG8ocikmJihzPWM9ITAsdC5wb3NpdGlvbisrLEEodCwhMCxlKSkpLG49dC5saW5lLFQodCxlLFcsITEsITApLHA9dC50YWcsbD10LnJlc3VsdCxBKHQsITAsZSksaD10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbiksIWMmJnQubGluZSE9PW58fDU4IT09aHx8KHM9ITAsaD10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSxBKHQsITAsZSksVCh0LGUsVywhMSwhMCksZj10LnJlc3VsdCksdT92KHQsaSxwLGwsZik6aS5wdXNoKHM/dih0LG51bGwscCxsLGYpOmwpLEEodCwhMCxlKSxoPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSw0ND09PWg/KG09ITAsaD10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSk6bT0hMX1kKHQsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZmxvdyBjb2xsZWN0aW9uIil9ZnVuY3Rpb24gUyh0LGUpe3ZhciBuLG8sYSxzLGM9eixsPSExLHA9ZSxmPTAsaD0hMTtpZihzPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSwxMjQ9PT1zKW89ITE7ZWxzZXtpZig2MiE9PXMpcmV0dXJuITE7bz0hMH1mb3IodC5raW5kPSJzY2FsYXIiLHQucmVzdWx0PSIiOzAhPT1zOylpZihzPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pLDQzPT09c3x8NDU9PT1zKXo9PT1jP2M9NDM9PT1zP1E6SjpkKHQsInJlcGVhdCBvZiBhIGNob21waW5nIG1vZGUgaWRlbnRpZmllciIpO2Vsc2V7aWYoISgoYT11KHMpKT49MCkpYnJlYWs7MD09PWE/ZCh0LCJiYWQgZXhwbGljaXQgaW5kZW50YXRpb24gd2lkdGggb2YgYSBibG9jayBzY2FsYXI7IGl0IGNhbm5vdCBiZSBsZXNzIHRoYW4gb25lIik6bD9kKHQsInJlcGVhdCBvZiBhbiBpbmRlbnRhdGlvbiB3aWR0aCBpZGVudGlmaWVyIik6KHA9ZSthLTEsbD0hMCl9aWYocihzKSl7ZG8gcz10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKTt3aGlsZShyKHMpKTtpZigzNT09PXMpZG8gcz10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKTt3aGlsZSghaShzKSYmMCE9PXMpfWZvcig7MCE9PXM7KXtmb3IoeCh0KSx0LmxpbmVJbmRlbnQ9MCxzPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKTsoIWx8fHQubGluZUluZGVudDxwKSYmMzI9PT1zOyl0LmxpbmVJbmRlbnQrKyxzPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO2lmKCFsJiZ0LmxpbmVJbmRlbnQ+cCYmKHA9dC5saW5lSW5kZW50KSxpKHMpKWYrKztlbHNle2lmKHQubGluZUluZGVudDxwKXtjPT09UT90LnJlc3VsdCs9UC5yZXBlYXQoIlxuIixmKTpjPT09eiYmbCYmKHQucmVzdWx0Kz0iXG4iKTticmVha31mb3Iobz9yKHMpPyhoPSEwLHQucmVzdWx0Kz1QLnJlcGVhdCgiXG4iLGYrMSkpOmg/KGg9ITEsdC5yZXN1bHQrPVAucmVwZWF0KCJcbiIsZisxKSk6MD09PWY/bCYmKHQucmVzdWx0Kz0iICIpOnQucmVzdWx0Kz1QLnJlcGVhdCgiXG4iLGYpOmw/dC5yZXN1bHQrPVAucmVwZWF0KCJcbiIsZisxKTp0LnJlc3VsdCs9UC5yZXBlYXQoIlxuIixmKSxsPSEwLGY9MCxuPXQucG9zaXRpb247IWkocykmJjAhPT1zOylzPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO3kodCxuLHQucG9zaXRpb24sITEpfX1yZXR1cm4hMH1mdW5jdGlvbiBfKHQsZSl7dmFyIG4saSxyLGE9dC50YWcscz10LmFuY2hvcixjPVtdLHU9ITE7Zm9yKG51bGwhPT10LmFuY2hvciYmKHQuYW5jaG9yTWFwW3QuYW5jaG9yXT1jKSxyPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKTswIT09ciYmNDU9PT1yJiYoaT10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbisxKSxvKGkpKTspaWYodT0hMCx0LnBvc2l0aW9uKyssQSh0LCEwLC0xKSYmdC5saW5lSW5kZW50PD1lKWMucHVzaChudWxsKSxyPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKTtlbHNlIGlmKG49dC5saW5lLFQodCxlLFYsITEsITApLGMucHVzaCh0LnJlc3VsdCksQSh0LCEwLC0xKSxyPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSwodC5saW5lPT09bnx8dC5saW5lSW5kZW50PmUpJiYwIT09cilkKHQsImJhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Iik7ZWxzZSBpZih0LmxpbmVJbmRlbnQ8ZSlicmVhaztyZXR1cm4hIXUmJih0LnRhZz1hLHQuYW5jaG9yPXMsdC5raW5kPSJzZXF1ZW5jZSIsdC5yZXN1bHQ9YywhMCl9ZnVuY3Rpb24gSSh0LGUsbil7dmFyIGksYSxzLGMsdT10LnRhZyxsPXQuYW5jaG9yLHA9e30sZj1udWxsLGg9bnVsbCxtPW51bGwseT0hMSxnPSExO2ZvcihudWxsIT09dC5hbmNob3ImJih0LmFuY2hvck1hcFt0LmFuY2hvcl09cCksYz10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbik7MCE9PWM7KXtpZihpPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKzEpLHM9dC5saW5lLDYzIT09YyYmNTghPT1jfHwhbyhpKSl7aWYoIVQodCxuLEcsITEsITApKWJyZWFrO2lmKHQubGluZT09PXMpe2ZvcihjPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKTtyKGMpOyljPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO2lmKDU4PT09YyljPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pLG8oYyl8fGQodCwiYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nIikseSYmKHYodCxwLGYsaCxudWxsKSxmPWg9bT1udWxsKSxnPSEwLHk9ITEsYT0hMSxmPXQudGFnLGg9dC5yZXN1bHQ7ZWxzZXtpZighZylyZXR1cm4gdC50YWc9dSx0LmFuY2hvcj1sLCEwO2QodCwiY2FuIG5vdCByZWFkIGFuIGltcGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBjb2xvbiBpcyBtaXNzZWQiKX19ZWxzZXtpZighZylyZXR1cm4gdC50YWc9dSx0LmFuY2hvcj1sLCEwO2QodCwiY2FuIG5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTsgYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5Iil9fWVsc2UgNjM9PT1jPyh5JiYodih0LHAsZixoLG51bGwpLGY9aD1tPW51bGwpLGc9ITAseT0hMCxhPSEwKTp5Pyh5PSExLGE9ITApOmQodCwiaW5jb21wbGV0ZSBleHBsaWNpdCBtYXBwaW5nIHBhaXI7IGEga2V5IG5vZGUgaXMgbWlzc2VkIiksdC5wb3NpdGlvbis9MSxjPWk7aWYoKHQubGluZT09PXN8fHQubGluZUluZGVudD5lKSYmKFQodCxlLFosITAsYSkmJih5P2g9dC5yZXN1bHQ6bT10LnJlc3VsdCkseXx8KHYodCxwLGYsaCxtKSxmPWg9bT1udWxsKSxBKHQsITAsLTEpLGM9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pKSx0LmxpbmVJbmRlbnQ+ZSYmMCE9PWMpZCh0LCJiYWQgaW5kZW50YXRpb24gb2YgYSBtYXBwaW5nIGVudHJ5Iik7ZWxzZSBpZih0LmxpbmVJbmRlbnQ8ZSlicmVha31yZXR1cm4geSYmdih0LHAsZixoLG51bGwpLGcmJih0LnRhZz11LHQuYW5jaG9yPWwsdC5raW5kPSJtYXBwaW5nIix0LnJlc3VsdD1wKSxnfWZ1bmN0aW9uIEUodCl7dmFyIGUsbixpLHIsYT0hMSxzPSExO2lmKHI9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pLDMzIT09cilyZXR1cm4hMTtpZihudWxsIT09dC50YWcmJmQodCwiZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHkiKSxyPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pLDYwPT09cj8oYT0hMCxyPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pKTozMz09PXI/KHM9ITAsbj0iISEiLHI9dC5pbnB1dC5jaGFyQ29kZUF0KCsrdC5wb3NpdGlvbikpOm49IiEiLGU9dC5wb3NpdGlvbixhKXtkbyByPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO3doaWxlKDAhPT1yJiY2MiE9PXIpO3QucG9zaXRpb248dC5sZW5ndGg/KGk9dC5pbnB1dC5zbGljZShlLHQucG9zaXRpb24pLHI9dC5pbnB1dC5jaGFyQ29kZUF0KCsrdC5wb3NpdGlvbikpOmQodCwidW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSB2ZXJiYXRpbSB0YWciKX1lbHNle2Zvcig7MCE9PXImJiFvKHIpOykzMz09PXImJihzP2QodCwidGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrcyIpOihuPXQuaW5wdXQuc2xpY2UoZS0xLHQucG9zaXRpb24rMSksbnQudGVzdChuKXx8ZCh0LCJuYW1lZCB0YWcgaGFuZGxlIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVycyIpLHM9ITAsZT10LnBvc2l0aW9uKzEpKSxyPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO2k9dC5pbnB1dC5zbGljZShlLHQucG9zaXRpb24pLGV0LnRlc3QoaSkmJmQodCwidGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBmbG93IGluZGljYXRvciBjaGFyYWN0ZXJzIil9cmV0dXJuIGkmJiFpdC50ZXN0KGkpJiZkKHQsInRhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogIitpKSxhP3QudGFnPWk6Ui5jYWxsKHQudGFnTWFwLG4pP3QudGFnPXQudGFnTWFwW25dK2k6IiEiPT09bj90LnRhZz0iISIraToiISEiPT09bj90LnRhZz0idGFnOnlhbWwub3JnLDIwMDI6IitpOmQodCwndW5kZWNsYXJlZCB0YWcgaGFuZGxlICInK24rJyInKSwhMH1mdW5jdGlvbiBGKHQpe3ZhciBlLG47aWYobj10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbiksMzghPT1uKXJldHVybiExO2ZvcihudWxsIT09dC5hbmNob3ImJmQodCwiZHVwbGljYXRpb24gb2YgYW4gYW5jaG9yIHByb3BlcnR5Iiksbj10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSxlPXQucG9zaXRpb247MCE9PW4mJiFvKG4pJiYhYShuKTspbj10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKTtyZXR1cm4gdC5wb3NpdGlvbj09PWUmJmQodCwibmFtZSBvZiBhbiBhbmNob3Igbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlciIpLHQuYW5jaG9yPXQuaW5wdXQuc2xpY2UoZSx0LnBvc2l0aW9uKSwhMH1mdW5jdGlvbiBOKHQpe3ZhciBlLG4saTtpZihpPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSw0MiE9PWkpcmV0dXJuITE7Zm9yKGk9dC5pbnB1dC5jaGFyQ29kZUF0KCsrdC5wb3NpdGlvbiksZT10LnBvc2l0aW9uOzAhPT1pJiYhbyhpKSYmIWEoaSk7KWk9dC5pbnB1dC5jaGFyQ29kZUF0KCsrdC5wb3NpdGlvbik7cmV0dXJuIHQucG9zaXRpb249PT1lJiZkKHQsIm5hbWUgb2YgYW4gYWxpYXMgbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlciIpLG49dC5pbnB1dC5zbGljZShlLHQucG9zaXRpb24pLHQuYW5jaG9yTWFwLmhhc093blByb3BlcnR5KG4pfHxkKHQsJ3VuaWRlbnRpZmllZCBhbGlhcyAiJytuKyciJyksdC5yZXN1bHQ9dC5hbmNob3JNYXBbbl0sQSh0LCEwLC0xKSwhMH1mdW5jdGlvbiBUKHQsZSxuLGkscil7dmFyIG8sYSxzLGMsdSxsLHAsZixoPTEsbT0hMSx5PSExO2lmKHQudGFnPW51bGwsdC5hbmNob3I9bnVsbCx0LmtpbmQ9bnVsbCx0LnJlc3VsdD1udWxsLG89YT1zPVo9PT1ufHxWPT09bixpJiZBKHQsITAsLTEpJiYobT0hMCx0LmxpbmVJbmRlbnQ+ZT9oPTE6dC5saW5lSW5kZW50PT09ZT9oPTA6dC5saW5lSW5kZW50PGUmJihoPS0xKSksMT09PWgpZm9yKDtFKHQpfHxGKHQpOylBKHQsITAsLTEpPyhtPSEwLHM9byx0LmxpbmVJbmRlbnQ+ZT9oPTE6dC5saW5lSW5kZW50PT09ZT9oPTA6dC5saW5lSW5kZW50PGUmJihoPS0xKSk6cz0hMTtpZihzJiYocz1tfHxyKSwoMT09PWh8fFo9PT1uKSYmKHA9Vz09PW58fEc9PT1uP2U6ZSsxLGY9dC5wb3NpdGlvbi10LmxpbmVTdGFydCwxPT09aD9zJiYoXyh0LGYpfHxJKHQsZixwKSl8fE8odCxwKT95PSEwOihhJiZTKHQscCl8fEModCxwKXx8aih0LHApP3k9ITA6Tih0KT8oeT0hMCwobnVsbCE9PXQudGFnfHxudWxsIT09dC5hbmNob3IpJiZkKHQsImFsaWFzIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzIikpOmsodCxwLFc9PT1uKSYmKHk9ITAsbnVsbD09PXQudGFnJiYodC50YWc9Ij8iKSksbnVsbCE9PXQuYW5jaG9yJiYodC5hbmNob3JNYXBbdC5hbmNob3JdPXQucmVzdWx0KSk6MD09PWgmJih5PXMmJl8odCxmKSkpLG51bGwhPT10LnRhZyYmIiEiIT09dC50YWcpaWYoIj8iPT09dC50YWcpe2ZvcihjPTAsdT10LmltcGxpY2l0VHlwZXMubGVuZ3RoO3U+YztjKz0xKWlmKGw9dC5pbXBsaWNpdFR5cGVzW2NdLGwucmVzb2x2ZSh0LnJlc3VsdCkpe3QucmVzdWx0PWwuY29uc3RydWN0KHQucmVzdWx0KSx0LnRhZz1sLnRhZyxudWxsIT09dC5hbmNob3ImJih0LmFuY2hvck1hcFt0LmFuY2hvcl09dC5yZXN1bHQpO2JyZWFrfX1lbHNlIFIuY2FsbCh0LnR5cGVNYXAsdC50YWcpPyhsPXQudHlwZU1hcFt0LnRhZ10sbnVsbCE9PXQucmVzdWx0JiZsLmtpbmQhPT10LmtpbmQmJmQodCwidW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwiK3QudGFnKyc+IHRhZzsgaXQgc2hvdWxkIGJlICInK2wua2luZCsnIiwgbm90ICInK3Qua2luZCsnIicpLGwucmVzb2x2ZSh0LnJlc3VsdCk/KHQucmVzdWx0PWwuY29uc3RydWN0KHQucmVzdWx0KSxudWxsIT09dC5hbmNob3ImJih0LmFuY2hvck1hcFt0LmFuY2hvcl09dC5yZXN1bHQpKTpkKHQsImNhbm5vdCByZXNvbHZlIGEgbm9kZSB3aXRoICE8Iit0LnRhZysiPiBleHBsaWNpdCB0YWciKSk6ZCh0LCJ1bmtub3duIHRhZyAhPCIrdC50YWcrIj4iKTtyZXR1cm4gbnVsbCE9PXQudGFnfHxudWxsIT09dC5hbmNob3J8fHl9ZnVuY3Rpb24gTSh0KXt2YXIgZSxuLGEscyxjPXQucG9zaXRpb24sdT0hMTtmb3IodC52ZXJzaW9uPW51bGwsdC5jaGVja0xpbmVCcmVha3M9dC5sZWdhY3ksdC50YWdNYXA9e30sdC5hbmNob3JNYXA9e307MCE9PShzPXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKSkmJihBKHQsITAsLTEpLHM9dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pLCEodC5saW5lSW5kZW50PjB8fDM3IT09cykpOyl7Zm9yKHU9ITAscz10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKSxlPXQucG9zaXRpb247MCE9PXMmJiFvKHMpOylzPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO2ZvcihuPXQuaW5wdXQuc2xpY2UoZSx0LnBvc2l0aW9uKSxhPVtdLG4ubGVuZ3RoPDEmJmQodCwiZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoIik7MCE9PXM7KXtmb3IoO3Iocyk7KXM9dC5pbnB1dC5jaGFyQ29kZUF0KCsrdC5wb3NpdGlvbik7aWYoMzU9PT1zKXtkbyBzPXQuaW5wdXQuY2hhckNvZGVBdCgrK3QucG9zaXRpb24pO3doaWxlKDAhPT1zJiYhaShzKSk7YnJlYWt9aWYoaShzKSlicmVhaztmb3IoZT10LnBvc2l0aW9uOzAhPT1zJiYhbyhzKTspcz10LmlucHV0LmNoYXJDb2RlQXQoKyt0LnBvc2l0aW9uKTthLnB1c2godC5pbnB1dC5zbGljZShlLHQucG9zaXRpb24pKX0wIT09cyYmeCh0KSxSLmNhbGwoc3Qsbik/c3Rbbl0odCxuLGEpOm0odCwndW5rbm93biBkb2N1bWVudCBkaXJlY3RpdmUgIicrbisnIicpfXJldHVybiBBKHQsITAsLTEpLDA9PT10LmxpbmVJbmRlbnQmJjQ1PT09dC5pbnB1dC5jaGFyQ29kZUF0KHQucG9zaXRpb24pJiY0NT09PXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKzEpJiY0NT09PXQuaW5wdXQuY2hhckNvZGVBdCh0LnBvc2l0aW9uKzIpPyh0LnBvc2l0aW9uKz0zLEEodCwhMCwtMSkpOnUmJmQodCwiZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCIpLFQodCx0LmxpbmVJbmRlbnQtMSxaLCExLCEwKSxBKHQsITAsLTEpLHQuY2hlY2tMaW5lQnJlYWtzJiZ0dC50ZXN0KHQuaW5wdXQuc2xpY2UoYyx0LnBvc2l0aW9uKSkmJm0odCwibm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50IiksdC5kb2N1bWVudHMucHVzaCh0LnJlc3VsdCksdC5wb3NpdGlvbj09PXQubGluZVN0YXJ0JiZiKHQpP3ZvaWQoNDY9PT10LmlucHV0LmNoYXJDb2RlQXQodC5wb3NpdGlvbikmJih0LnBvc2l0aW9uKz0zLEEodCwhMCwtMSkpKTp2b2lkKHQucG9zaXRpb248dC5sZW5ndGgtMSYmZCh0LCJlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCIpKX1mdW5jdGlvbiBMKHQsZSl7dD1TdHJpbmcodCksZT1lfHx7fSwwIT09dC5sZW5ndGgmJigxMCE9PXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKSYmMTMhPT10LmNoYXJDb2RlQXQodC5sZW5ndGgtMSkmJih0Kz0iXG4iKSw2NTI3OT09PXQuY2hhckNvZGVBdCgwKSYmKHQ9dC5zbGljZSgxKSkpO3ZhciBuPW5ldyBmKHQsZSk7Zm9yKG4uaW5wdXQrPSJcMCI7MzI9PT1uLmlucHV0LmNoYXJDb2RlQXQobi5wb3NpdGlvbik7KW4ubGluZUluZGVudCs9MSxuLnBvc2l0aW9uKz0xO2Zvcig7bi5wb3NpdGlvbjxuLmxlbmd0aC0xOylNKG4pO3JldHVybiBuLmRvY3VtZW50c31mdW5jdGlvbiBEKHQsZSxuKXt2YXIgaSxyLG89TCh0LG4pO2ZvcihpPTAscj1vLmxlbmd0aDtyPmk7aSs9MSllKG9baV0pfWZ1bmN0aW9uIFUodCxlKXt2YXIgbj1MKHQsZSk7aWYoMCE9PW4ubGVuZ3RoKXtpZigxPT09bi5sZW5ndGgpcmV0dXJuIG5bMF07dGhyb3cgbmV3IEIoImV4cGVjdGVkIGEgc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzdHJlYW0sIGJ1dCBmb3VuZCBtb3JlIil9fWZ1bmN0aW9uIHEodCxlLG4pe0QodCxlLFAuZXh0ZW5kKHtzY2hlbWE6S30sbikpfWZ1bmN0aW9uIFkodCxlKXtyZXR1cm4gVSh0LFAuZXh0ZW5kKHtzY2hlbWE6S30sZSkpfWZvcih2YXIgUD10KCIuL2NvbW1vbiIpLEI9dCgiLi9leGNlcHRpb24iKSwkPXQoIi4vbWFyayIpLEs9dCgiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIiksSD10KCIuL3NjaGVtYS9kZWZhdWx0X2Z1bGwiKSxSPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksVz0xLEc9MixWPTMsWj00LHo9MSxKPTIsUT0zLFg9L1tceDAwLVx4MDhceDBCXHgwQ1x4MEUtXHgxRlx4N0YtXHg4NFx4ODYtXHg5Rlx1RkZGRVx1RkZGRl18W1x1RDgwMC1cdURCRkZdKD8hW1x1REMwMC1cdURGRkZdKXwoPzpbXlx1RDgwMC1cdURCRkZdfF4pW1x1REMwMC1cdURGRkZdLyx0dD0vW1x4ODVcdTIwMjhcdTIwMjldLyxldD0vWyxcW1xdXHtcfV0vLG50PS9eKD86IXwhIXwhW2EtelwtXSshKSQvaSxpdD0vXig/OiF8W14sXFtcXVx7XH1dKSg/OiVbMC05YS1mXXsyfXxbMC05YS16XC0jO1wvXD86QCY9XCtcJCxfXC4hflwqJ1woXClcW1xdXSkqJC9pLHJ0PW5ldyBBcnJheSgyNTYpLG90PW5ldyBBcnJheSgyNTYpLGF0PTA7MjU2PmF0O2F0KyspcnRbYXRdPWwoYXQpPzE6MCxvdFthdF09bChhdCk7dmFyIHN0PXtZQU1MOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG87bnVsbCE9PXQudmVyc2lvbiYmZCh0LCJkdXBsaWNhdGlvbiBvZiAlWUFNTCBkaXJlY3RpdmUiKSwxIT09bi5sZW5ndGgmJmQodCwiWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudCIpLGk9L14oWzAtOV0rKVwuKFswLTldKykkLy5leGVjKG5bMF0pLG51bGw9PT1pJiZkKHQsImlsbC1mb3JtZWQgYXJndW1lbnQgb2YgdGhlIFlBTUwgZGlyZWN0aXZlIikscj1wYXJzZUludChpWzFdLDEwKSxvPXBhcnNlSW50KGlbMl0sMTApLDEhPT1yJiZkKHQsInVuYWNjZXB0YWJsZSBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IiksdC52ZXJzaW9uPW5bMF0sdC5jaGVja0xpbmVCcmVha3M9Mj5vLDEhPT1vJiYyIT09byYmbSh0LCJ1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Iil9LFRBRzpmdW5jdGlvbih0LGUsbil7dmFyIGkscjsyIT09bi5sZW5ndGgmJmQodCwiVEFHIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgdHdvIGFyZ3VtZW50cyIpLGk9blswXSxyPW5bMV0sbnQudGVzdChpKXx8ZCh0LCJpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZSIpLFIuY2FsbCh0LnRhZ01hcCxpKSYmZCh0LCd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciAiJytpKyciIHRhZyBoYW5kbGUnKSxpdC50ZXN0KHIpfHxkKHQsImlsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZSIpLHQudGFnTWFwW2ldPXJ9fTtlLmV4cG9ydHMubG9hZEFsbD1ELGUuZXhwb3J0cy5sb2FkPVUsZS5leHBvcnRzLnNhZmVMb2FkQWxsPXEsZS5leHBvcnRzLnNhZmVMb2FkPVl9LHsiLi9jb21tb24iOjIsIi4vZXhjZXB0aW9uIjo0LCIuL21hcmsiOjYsIi4vc2NoZW1hL2RlZmF1bHRfZnVsbCI6OSwiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIjoxMH1dLDY6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0LGUsbixpLHIpe3RoaXMubmFtZT10LHRoaXMuYnVmZmVyPWUsdGhpcy5wb3NpdGlvbj1uLHRoaXMubGluZT1pLHRoaXMuY29sdW1uPXJ9dmFyIHI9dCgiLi9jb21tb24iKTtpLnByb3RvdHlwZS5nZXRTbmlwcGV0PWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxvLGEscztpZighdGhpcy5idWZmZXIpcmV0dXJuIG51bGw7Zm9yKHQ9dHx8NCxlPWV8fDc1LG49IiIsaT10aGlzLnBvc2l0aW9uO2k+MCYmLTE9PT0iXDBcclxuwoVcdTIwMjhcdTIwMjkiLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KGktMSkpOylpZihpLT0xLHRoaXMucG9zaXRpb24taT5lLzItMSl7bj0iIC4uLiAiLGkrPTU7YnJlYWt9Zm9yKG89IiIsYT10aGlzLnBvc2l0aW9uO2E8dGhpcy5idWZmZXIubGVuZ3RoJiYtMT09PSJcMFxyXG7ChVx1MjAyOFx1MjAyOSIuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoYSkpOylpZihhKz0xLGEtdGhpcy5wb3NpdGlvbj5lLzItMSl7bz0iIC4uLiAiLGEtPTU7YnJlYWt9cmV0dXJuIHM9dGhpcy5idWZmZXIuc2xpY2UoaSxhKSxyLnJlcGVhdCgiICIsdCkrbitzK28rIlxuIityLnJlcGVhdCgiICIsdCt0aGlzLnBvc2l0aW9uLWkrbi5sZW5ndGgpKyJeIn0saS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24odCl7dmFyIGUsbj0iIjtyZXR1cm4gdGhpcy5uYW1lJiYobis9J2luICInK3RoaXMubmFtZSsnIiAnKSxuKz0iYXQgbGluZSAiKyh0aGlzLmxpbmUrMSkrIiwgY29sdW1uICIrKHRoaXMuY29sdW1uKzEpLHR8fChlPXRoaXMuZ2V0U25pcHBldCgpLGUmJihuKz0iOlxuIitlKSksbn0sZS5leHBvcnRzPWl9LHsiLi9jb21tb24iOjJ9XSw3OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCxlLG4pe3ZhciByPVtdO3JldHVybiB0LmluY2x1ZGUuZm9yRWFjaChmdW5jdGlvbih0KXtuPWkodCxlLG4pfSksdFtlXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe24uZm9yRWFjaChmdW5jdGlvbihlLG4pe2UudGFnPT09dC50YWcmJnIucHVzaChuKX0pLG4ucHVzaCh0KX0pLG4uZmlsdGVyKGZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1yLmluZGV4T2YoZSl9KX1mdW5jdGlvbiByKCl7ZnVuY3Rpb24gdCh0KXtpW3QudGFnXT10fXZhciBlLG4saT17fTtmb3IoZT0wLG49YXJndW1lbnRzLmxlbmd0aDtuPmU7ZSs9MSlhcmd1bWVudHNbZV0uZm9yRWFjaCh0KTtyZXR1cm4gaX1mdW5jdGlvbiBvKHQpe3RoaXMuaW5jbHVkZT10LmluY2x1ZGV8fFtdLHRoaXMuaW1wbGljaXQ9dC5pbXBsaWNpdHx8W10sdGhpcy5leHBsaWNpdD10LmV4cGxpY2l0fHxbXSx0aGlzLmltcGxpY2l0LmZvckVhY2goZnVuY3Rpb24odCl7aWYodC5sb2FkS2luZCYmInNjYWxhciIhPT10LmxvYWRLaW5kKXRocm93IG5ldyBzKCJUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC4iKX0pLHRoaXMuY29tcGlsZWRJbXBsaWNpdD1pKHRoaXMsImltcGxpY2l0IixbXSksdGhpcy5jb21waWxlZEV4cGxpY2l0PWkodGhpcywiZXhwbGljaXQiLFtdKSx0aGlzLmNvbXBpbGVkVHlwZU1hcD1yKHRoaXMuY29tcGlsZWRJbXBsaWNpdCx0aGlzLmNvbXBpbGVkRXhwbGljaXQpfXZhciBhPXQoIi4vY29tbW9uIikscz10KCIuL2V4Y2VwdGlvbiIpLGM9dCgiLi90eXBlIik7by5ERUZBVUxUPW51bGwsby5jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgdCxlO3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6dD1vLkRFRkFVTFQsZT1hcmd1bWVudHNbMF07YnJlYWs7Y2FzZSAyOnQ9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHMoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIFNjaGVtYS5jcmVhdGUgZnVuY3Rpb24iKX1pZih0PWEudG9BcnJheSh0KSxlPWEudG9BcnJheShlKSwhdC5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG99KSl0aHJvdyBuZXcgcygiU3BlY2lmaWVkIGxpc3Qgb2Ygc3VwZXIgc2NoZW1hcyAob3IgYSBzaW5nbGUgU2NoZW1hIG9iamVjdCkgY29udGFpbnMgYSBub24tU2NoZW1hIG9iamVjdC4iKTtpZighZS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGN9KSl0aHJvdyBuZXcgcygiU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LiIpO3JldHVybiBuZXcgbyh7aW5jbHVkZTp0LGV4cGxpY2l0OmV9KX0sZS5leHBvcnRzPW99LHsiLi9jb21tb24iOjIsIi4vZXhjZXB0aW9uIjo0LCIuL3R5cGUiOjEzfV0sODpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT10KCIuLi9zY2hlbWEiKTtlLmV4cG9ydHM9bmV3IGkoe2luY2x1ZGU6W3QoIi4vanNvbiIpXX0pfSx7Ii4uL3NjaGVtYSI6NywiLi9qc29uIjoxMn1dLDk6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9dCgiLi4vc2NoZW1hIik7ZS5leHBvcnRzPWkuREVGQVVMVD1uZXcgaSh7aW5jbHVkZTpbdCgiLi9kZWZhdWx0X3NhZmUiKV0sZXhwbGljaXQ6W3QoIi4uL3R5cGUvanMvdW5kZWZpbmVkIiksdCgiLi4vdHlwZS9qcy9yZWdleHAiKSx0KCIuLi90eXBlL2pzL2Z1bmN0aW9uIildfSl9LHsiLi4vc2NoZW1hIjo3LCIuLi90eXBlL2pzL2Z1bmN0aW9uIjoxOCwiLi4vdHlwZS9qcy9yZWdleHAiOjE5LCIuLi90eXBlL2pzL3VuZGVmaW5lZCI6MjAsIi4vZGVmYXVsdF9zYWZlIjoxMH1dLDEwOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPXQoIi4uL3NjaGVtYSIpO2UuZXhwb3J0cz1uZXcgaSh7aW5jbHVkZTpbdCgiLi9jb3JlIildLGltcGxpY2l0Olt0KCIuLi90eXBlL3RpbWVzdGFtcCIpLHQoIi4uL3R5cGUvbWVyZ2UiKV0sZXhwbGljaXQ6W3QoIi4uL3R5cGUvYmluYXJ5IiksdCgiLi4vdHlwZS9vbWFwIiksdCgiLi4vdHlwZS9wYWlycyIpLHQoIi4uL3R5cGUvc2V0IildfSl9LHsiLi4vc2NoZW1hIjo3LCIuLi90eXBlL2JpbmFyeSI6MTQsIi4uL3R5cGUvbWVyZ2UiOjIyLCIuLi90eXBlL29tYXAiOjI0LCIuLi90eXBlL3BhaXJzIjoyNSwiLi4vdHlwZS9zZXQiOjI3LCIuLi90eXBlL3RpbWVzdGFtcCI6MjksIi4vY29yZSI6OH1dLDExOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPXQoIi4uL3NjaGVtYSIpO2UuZXhwb3J0cz1uZXcgaSh7ZXhwbGljaXQ6W3QoIi4uL3R5cGUvc3RyIiksdCgiLi4vdHlwZS9zZXEiKSx0KCIuLi90eXBlL21hcCIpXX0pfSx7Ii4uL3NjaGVtYSI6NywiLi4vdHlwZS9tYXAiOjIxLCIuLi90eXBlL3NlcSI6MjYsIi4uL3R5cGUvc3RyIjoyOH1dLDEyOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPXQoIi4uL3NjaGVtYSIpO2UuZXhwb3J0cz1uZXcgaSh7aW5jbHVkZTpbdCgiLi9mYWlsc2FmZSIpXSxpbXBsaWNpdDpbdCgiLi4vdHlwZS9udWxsIiksdCgiLi4vdHlwZS9ib29sIiksdCgiLi4vdHlwZS9pbnQiKSx0KCIuLi90eXBlL2Zsb2F0IildfSl9LHsiLi4vc2NoZW1hIjo3LCIuLi90eXBlL2Jvb2wiOjE1LCIuLi90eXBlL2Zsb2F0IjoxNiwiLi4vdHlwZS9pbnQiOjE3LCIuLi90eXBlL251bGwiOjIzLCIuL2ZhaWxzYWZlIjoxMX1dLDEzOltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7dmFyIGU9e307cmV0dXJuIG51bGwhPT10JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3Rbbl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW1N0cmluZyh0KV09bn0pfSksZX1mdW5jdGlvbiByKHQsZSl7aWYoZT1lfHx7fSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKC0xPT09YS5pbmRleE9mKGUpKXRocm93IG5ldyBvKCdVbmtub3duIG9wdGlvbiAiJytlKyciIGlzIG1ldCBpbiBkZWZpbml0aW9uIG9mICInK3QrJyIgWUFNTCB0eXBlLicpfSksdGhpcy50YWc9dCx0aGlzLmtpbmQ9ZS5raW5kfHxudWxsLHRoaXMucmVzb2x2ZT1lLnJlc29sdmV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LHRoaXMuY29uc3RydWN0PWUuY29uc3RydWN0fHxmdW5jdGlvbih0KXtyZXR1cm4gdH0sdGhpcy5pbnN0YW5jZU9mPWUuaW5zdGFuY2VPZnx8bnVsbCx0aGlzLnByZWRpY2F0ZT1lLnByZWRpY2F0ZXx8bnVsbCx0aGlzLnJlcHJlc2VudD1lLnJlcHJlc2VudHx8bnVsbCx0aGlzLmRlZmF1bHRTdHlsZT1lLmRlZmF1bHRTdHlsZXx8bnVsbCx0aGlzLnN0eWxlQWxpYXNlcz1pKGUuc3R5bGVBbGlhc2VzfHxudWxsKSwtMT09PXMuaW5kZXhPZih0aGlzLmtpbmQpKXRocm93IG5ldyBvKCdVbmtub3duIGtpbmQgIicrdGhpcy5raW5kKyciIGlzIHNwZWNpZmllZCBmb3IgIicrdCsnIiBZQU1MIHR5cGUuJyl9dmFyIG89dCgiLi9leGNlcHRpb24iKSxhPVsia2luZCIsInJlc29sdmUiLCJjb25zdHJ1Y3QiLCJpbnN0YW5jZU9mIiwicHJlZGljYXRlIiwicmVwcmVzZW50IiwiZGVmYXVsdFN0eWxlIiwic3R5bGVBbGlhc2VzIl0scz1bInNjYWxhciIsInNlcXVlbmNlIiwibWFwcGluZyJdO2UuZXhwb3J0cz1yfSx7Ii4vZXhjZXB0aW9uIjo0fV0sMTQ6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtpZihudWxsPT09dClyZXR1cm4hMTt2YXIgZSxuLGk9MCxyPXQubGVuZ3RoLG89dTtmb3Iobj0wO3I+bjtuKyspaWYoZT1vLmluZGV4T2YodC5jaGFyQXQobikpLCEoZT42NCkpe2lmKDA+ZSlyZXR1cm4hMTtpKz02fXJldHVybiBpJTg9PT0wfWZ1bmN0aW9uIHIodCl7dmFyIGUsbixpPXQucmVwbGFjZSgvW1xyXG49XS9nLCIiKSxyPWkubGVuZ3RoLG89dSxhPTAsYz1bXTtmb3IoZT0wO3I+ZTtlKyspZSU0PT09MCYmZSYmKGMucHVzaChhPj4xNiYyNTUpLGMucHVzaChhPj44JjI1NSksYy5wdXNoKDI1NSZhKSksYT1hPDw2fG8uaW5kZXhPZihpLmNoYXJBdChlKSk7cmV0dXJuIG49ciU0KjYsMD09PW4/KGMucHVzaChhPj4xNiYyNTUpLGMucHVzaChhPj44JjI1NSksYy5wdXNoKDI1NSZhKSk6MTg9PT1uPyhjLnB1c2goYT4+MTAmMjU1KSxjLnB1c2goYT4+MiYyNTUpKToxMj09PW4mJmMucHVzaChhPj40JjI1NSkscz9uZXcgcyhjKTpjfWZ1bmN0aW9uIG8odCl7dmFyIGUsbixpPSIiLHI9MCxvPXQubGVuZ3RoLGE9dTtmb3IoZT0wO28+ZTtlKyspZSUzPT09MCYmZSYmKGkrPWFbcj4+MTgmNjNdLGkrPWFbcj4+MTImNjNdLGkrPWFbcj4+NiY2M10saSs9YVs2MyZyXSkscj0ocjw8OCkrdFtlXTtyZXR1cm4gbj1vJTMsMD09PW4/KGkrPWFbcj4+MTgmNjNdLGkrPWFbcj4+MTImNjNdLGkrPWFbcj4+NiY2M10saSs9YVs2MyZyXSk6Mj09PW4/KGkrPWFbcj4+MTAmNjNdLGkrPWFbcj4+NCY2M10saSs9YVtyPDwyJjYzXSxpKz1hWzY0XSk6MT09PW4mJihpKz1hW3I+PjImNjNdLGkrPWFbcjw8NCY2M10saSs9YVs2NF0saSs9YVs2NF0pLGl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gcyYmcy5pc0J1ZmZlcih0KX12YXIgcz10KCJidWZmZXIiKS5CdWZmZXIsYz10KCIuLi90eXBlIiksdT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cblxyIjtlLmV4cG9ydHM9bmV3IGMoInRhZzp5YW1sLm9yZywyMDAyOmJpbmFyeSIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTppLGNvbnN0cnVjdDpyLAorcHJlZGljYXRlOmEscmVwcmVzZW50Om99KX0seyIuLi90eXBlIjoxMyxidWZmZXI6MzB9XSwxNTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe2lmKG51bGw9PT10KXJldHVybiExO3ZhciBlPXQubGVuZ3RoO3JldHVybiA0PT09ZSYmKCJ0cnVlIj09PXR8fCJUcnVlIj09PXR8fCJUUlVFIj09PXQpfHw1PT09ZSYmKCJmYWxzZSI9PT10fHwiRmFsc2UiPT09dHx8IkZBTFNFIj09PXQpfWZ1bmN0aW9uIHIodCl7cmV0dXJuInRydWUiPT09dHx8IlRydWUiPT09dHx8IlRSVUUiPT09dH1mdW5jdGlvbiBvKHQpe3JldHVybiJbb2JqZWN0IEJvb2xlYW5dIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgYT10KCIuLi90eXBlIik7ZS5leHBvcnRzPW5ldyBhKCJ0YWc6eWFtbC5vcmcsMjAwMjpib29sIix7a2luZDoic2NhbGFyIixyZXNvbHZlOmksY29uc3RydWN0OnIscHJlZGljYXRlOm8scmVwcmVzZW50Ontsb3dlcmNhc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/InRydWUiOiJmYWxzZSJ9LHVwcGVyY2FzZTpmdW5jdGlvbih0KXtyZXR1cm4gdD8iVFJVRSI6IkZBTFNFIn0sY2FtZWxjYXNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PyJUcnVlIjoiRmFsc2UifX0sZGVmYXVsdFN0eWxlOiJsb3dlcmNhc2UifSl9LHsiLi4vdHlwZSI6MTN9XSwxNjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiBudWxsIT09dCYmISF1LnRlc3QodCl9ZnVuY3Rpb24gcih0KXt2YXIgZSxuLGkscjtyZXR1cm4gZT10LnJlcGxhY2UoL18vZywiIikudG9Mb3dlckNhc2UoKSxuPSItIj09PWVbMF0/LTE6MSxyPVtdLDA8PSIrLSIuaW5kZXhPZihlWzBdKSYmKGU9ZS5zbGljZSgxKSksIi5pbmYiPT09ZT8xPT09bj9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk6TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOiIubmFuIj09PWU/TmFOOjA8PWUuaW5kZXhPZigiOiIpPyhlLnNwbGl0KCI6IikuZm9yRWFjaChmdW5jdGlvbih0KXtyLnVuc2hpZnQocGFyc2VGbG9hdCh0LDEwKSl9KSxlPTAsaT0xLHIuZm9yRWFjaChmdW5jdGlvbih0KXtlKz10KmksaSo9NjB9KSxuKmUpOm4qcGFyc2VGbG9hdChlLDEwKX1mdW5jdGlvbiBvKHQsZSl7dmFyIG47aWYoaXNOYU4odCkpc3dpdGNoKGUpe2Nhc2UibG93ZXJjYXNlIjpyZXR1cm4iLm5hbiI7Y2FzZSJ1cHBlcmNhc2UiOnJldHVybiIuTkFOIjtjYXNlImNhbWVsY2FzZSI6cmV0dXJuIi5OYU4ifWVsc2UgaWYoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZPT09dClzd2l0Y2goZSl7Y2FzZSJsb3dlcmNhc2UiOnJldHVybiIuaW5mIjtjYXNlInVwcGVyY2FzZSI6cmV0dXJuIi5JTkYiO2Nhc2UiY2FtZWxjYXNlIjpyZXR1cm4iLkluZiJ9ZWxzZSBpZihOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk9PT10KXN3aXRjaChlKXtjYXNlImxvd2VyY2FzZSI6cmV0dXJuIi0uaW5mIjtjYXNlInVwcGVyY2FzZSI6cmV0dXJuIi0uSU5GIjtjYXNlImNhbWVsY2FzZSI6cmV0dXJuIi0uSW5mIn1lbHNlIGlmKHMuaXNOZWdhdGl2ZVplcm8odCkpcmV0dXJuIi0wLjAiO3JldHVybiBuPXQudG9TdHJpbmcoMTApLGwudGVzdChuKT9uLnJlcGxhY2UoImUiLCIuZSIpOm59ZnVuY3Rpb24gYSh0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSYmKDAhPT10JTF8fHMuaXNOZWdhdGl2ZVplcm8odCkpfXZhciBzPXQoIi4uL2NvbW1vbiIpLGM9dCgiLi4vdHlwZSIpLHU9bmV3IFJlZ0V4cCgiXig/OlstK10/KD86WzAtOV1bMC05X10qKVxcLlswLTlfXSooPzpbZUVdWy0rXVswLTldKyk/fFxcLlswLTlfXSsoPzpbZUVdWy0rXVswLTldKyk/fFstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXC5bMC05X10qfFstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLig/Om5hbnxOYU58TkFOKSkkIiksbD0vXlstK10/WzAtOV0rZS87ZS5leHBvcnRzPW5ldyBjKCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTppLGNvbnN0cnVjdDpyLHByZWRpY2F0ZTphLHJlcHJlc2VudDpvLGRlZmF1bHRTdHlsZToibG93ZXJjYXNlIn0pfSx7Ii4uL2NvbW1vbiI6MiwiLi4vdHlwZSI6MTN9XSwxNzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiB0Pj00OCYmNTc+PXR8fHQ+PTY1JiY3MD49dHx8dD49OTcmJjEwMj49dH1mdW5jdGlvbiByKHQpe3JldHVybiB0Pj00OCYmNTU+PXR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdD49NDgmJjU3Pj10fWZ1bmN0aW9uIGEodCl7aWYobnVsbD09PXQpcmV0dXJuITE7dmFyIGUsbj10Lmxlbmd0aCxhPTAscz0hMTtpZighbilyZXR1cm4hMTtpZihlPXRbYV0sKCItIj09PWV8fCIrIj09PWUpJiYoZT10WysrYV0pLCIwIj09PWUpe2lmKGErMT09PW4pcmV0dXJuITA7aWYoZT10WysrYV0sImIiPT09ZSl7Zm9yKGErKztuPmE7YSsrKWlmKGU9dFthXSwiXyIhPT1lKXtpZigiMCIhPT1lJiYiMSIhPT1lKXJldHVybiExO3M9ITB9cmV0dXJuIHN9aWYoIngiPT09ZSl7Zm9yKGErKztuPmE7YSsrKWlmKGU9dFthXSwiXyIhPT1lKXtpZighaSh0LmNoYXJDb2RlQXQoYSkpKXJldHVybiExO3M9ITB9cmV0dXJuIHN9Zm9yKDtuPmE7YSsrKWlmKGU9dFthXSwiXyIhPT1lKXtpZighcih0LmNoYXJDb2RlQXQoYSkpKXJldHVybiExO3M9ITB9cmV0dXJuIHN9Zm9yKDtuPmE7YSsrKWlmKGU9dFthXSwiXyIhPT1lKXtpZigiOiI9PT1lKWJyZWFrO2lmKCFvKHQuY2hhckNvZGVBdChhKSkpcmV0dXJuITE7cz0hMH1yZXR1cm4hIXMmJigiOiIhPT1lfHwvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QodC5zbGljZShhKSkpfWZ1bmN0aW9uIHModCl7dmFyIGUsbixpPXQscj0xLG89W107cmV0dXJuLTEhPT1pLmluZGV4T2YoIl8iKSYmKGk9aS5yZXBsYWNlKC9fL2csIiIpKSxlPWlbMF0sKCItIj09PWV8fCIrIj09PWUpJiYoIi0iPT09ZSYmKHI9LTEpLGk9aS5zbGljZSgxKSxlPWlbMF0pLCIwIj09PWk/MDoiMCI9PT1lPyJiIj09PWlbMV0/cipwYXJzZUludChpLnNsaWNlKDIpLDIpOiJ4Ij09PWlbMV0/cipwYXJzZUludChpLDE2KTpyKnBhcnNlSW50KGksOCk6LTEhPT1pLmluZGV4T2YoIjoiKT8oaS5zcGxpdCgiOiIpLmZvckVhY2goZnVuY3Rpb24odCl7by51bnNoaWZ0KHBhcnNlSW50KHQsMTApKX0pLGk9MCxuPTEsby5mb3JFYWNoKGZ1bmN0aW9uKHQpe2krPXQqbixuKj02MH0pLHIqaSk6cipwYXJzZUludChpLDEwKX1mdW5jdGlvbiBjKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpJiYwPT09dCUxJiYhdS5pc05lZ2F0aXZlWmVybyh0KX12YXIgdT10KCIuLi9jb21tb24iKSxsPXQoIi4uL3R5cGUiKTtlLmV4cG9ydHM9bmV3IGwoInRhZzp5YW1sLm9yZywyMDAyOmludCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTphLGNvbnN0cnVjdDpzLHByZWRpY2F0ZTpjLHJlcHJlc2VudDp7YmluYXJ5OmZ1bmN0aW9uKHQpe3JldHVybiIwYiIrdC50b1N0cmluZygyKX0sb2N0YWw6ZnVuY3Rpb24odCl7cmV0dXJuIjAiK3QudG9TdHJpbmcoOCl9LGRlY2ltYWw6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoMTApfSxoZXhhZGVjaW1hbDpmdW5jdGlvbih0KXtyZXR1cm4iMHgiK3QudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9fSxkZWZhdWx0U3R5bGU6ImRlY2ltYWwiLHN0eWxlQWxpYXNlczp7YmluYXJ5OlsyLCJiaW4iXSxvY3RhbDpbOCwib2N0Il0sZGVjaW1hbDpbMTAsImRlYyJdLGhleGFkZWNpbWFsOlsxNiwiaGV4Il19fSl9LHsiLi4vY29tbW9uIjoyLCIuLi90eXBlIjoxM31dLDE4OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7aWYobnVsbD09PXQpcmV0dXJuITE7dHJ5e3ZhciBlPSIoIit0KyIpIixuPXMucGFyc2UoZSx7cmFuZ2U6ITB9KTtyZXR1cm4iUHJvZ3JhbSI9PT1uLnR5cGUmJjE9PT1uLmJvZHkubGVuZ3RoJiYiRXhwcmVzc2lvblN0YXRlbWVudCI9PT1uLmJvZHlbMF0udHlwZSYmIkZ1bmN0aW9uRXhwcmVzc2lvbiI9PT1uLmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlfWNhdGNoKGkpe3JldHVybiExfX1mdW5jdGlvbiByKHQpe3ZhciBlLG49IigiK3QrIikiLGk9cy5wYXJzZShuLHtyYW5nZTohMH0pLHI9W107aWYoIlByb2dyYW0iIT09aS50eXBlfHwxIT09aS5ib2R5Lmxlbmd0aHx8IkV4cHJlc3Npb25TdGF0ZW1lbnQiIT09aS5ib2R5WzBdLnR5cGV8fCJGdW5jdGlvbkV4cHJlc3Npb24iIT09aS5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byByZXNvbHZlIGZ1bmN0aW9uIik7cmV0dXJuIGkuYm9keVswXS5leHByZXNzaW9uLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IucHVzaCh0Lm5hbWUpfSksZT1pLmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnJhbmdlLG5ldyBGdW5jdGlvbihyLG4uc2xpY2UoZVswXSsxLGVbMV0tMSkpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQudG9TdHJpbmcoKX1mdW5jdGlvbiBhKHQpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9dmFyIHM7dHJ5e3M9dCgiZXNwcmltYSIpfWNhdGNoKGMpeyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYocz13aW5kb3cuZXNwcmltYSl9dmFyIHU9dCgiLi4vLi4vdHlwZSIpO2UuZXhwb3J0cz1uZXcgdSgidGFnOnlhbWwub3JnLDIwMDI6anMvZnVuY3Rpb24iLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6aSxjb25zdHJ1Y3Q6cixwcmVkaWNhdGU6YSxyZXByZXNlbnQ6b30pfSx7Ii4uLy4uL3R5cGUiOjEzLGVzcHJpbWE6ImVzcHJpbWEifV0sMTk6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtpZihudWxsPT09dClyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITE7dmFyIGU9dCxuPS9cLyhbZ2ltXSopJC8uZXhlYyh0KSxpPSIiO2lmKCIvIj09PWVbMF0pe2lmKG4mJihpPW5bMV0pLGkubGVuZ3RoPjMpcmV0dXJuITE7aWYoIi8iIT09ZVtlLmxlbmd0aC1pLmxlbmd0aC0xXSlyZXR1cm4hMTtlPWUuc2xpY2UoMSxlLmxlbmd0aC1pLmxlbmd0aC0xKX10cnl7cmV0dXJuITB9Y2F0Y2gocil7cmV0dXJuITF9fWZ1bmN0aW9uIHIodCl7dmFyIGU9dCxuPS9cLyhbZ2ltXSopJC8uZXhlYyh0KSxpPSIiO3JldHVybiIvIj09PWVbMF0mJihuJiYoaT1uWzFdKSxlPWUuc2xpY2UoMSxlLmxlbmd0aC1pLmxlbmd0aC0xKSksbmV3IFJlZ0V4cChlLGkpfWZ1bmN0aW9uIG8odCl7dmFyIGU9Ii8iK3Quc291cmNlKyIvIjtyZXR1cm4gdC5nbG9iYWwmJihlKz0iZyIpLHQubXVsdGlsaW5lJiYoZSs9Im0iKSx0Lmlnbm9yZUNhc2UmJihlKz0iaSIpLGV9ZnVuY3Rpb24gYSh0KXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX12YXIgcz10KCIuLi8uLi90eXBlIik7ZS5leHBvcnRzPW5ldyBzKCJ0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHAiLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6aSxjb25zdHJ1Y3Q6cixwcmVkaWNhdGU6YSxyZXByZXNlbnQ6b30pfSx7Ii4uLy4uL3R5cGUiOjEzfV0sMjA6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSgpe3JldHVybiEwfWZ1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbygpe3JldHVybiIifWZ1bmN0aW9uIGEodCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0fXZhciBzPXQoIi4uLy4uL3R5cGUiKTtlLmV4cG9ydHM9bmV3IHMoInRhZzp5YW1sLm9yZywyMDAyOmpzL3VuZGVmaW5lZCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTppLGNvbnN0cnVjdDpyLHByZWRpY2F0ZTphLHJlcHJlc2VudDpvfSl9LHsiLi4vLi4vdHlwZSI6MTN9XSwyMTpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT10KCIuLi90eXBlIik7ZS5leHBvcnRzPW5ldyBpKCJ0YWc6eWFtbC5vcmcsMjAwMjptYXAiLHtraW5kOiJtYXBwaW5nIixjb25zdHJ1Y3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10P3Q6e319fSl9LHsiLi4vdHlwZSI6MTN9XSwyMjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe3JldHVybiI8PCI9PT10fHxudWxsPT09dH12YXIgcj10KCIuLi90eXBlIik7ZS5leHBvcnRzPW5ldyByKCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZSIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTppfSl9LHsiLi4vdHlwZSI6MTN9XSwyMzpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe2lmKG51bGw9PT10KXJldHVybiEwO3ZhciBlPXQubGVuZ3RoO3JldHVybiAxPT09ZSYmIn4iPT09dHx8ND09PWUmJigibnVsbCI9PT10fHwiTnVsbCI9PT10fHwiTlVMTCI9PT10KX1mdW5jdGlvbiByKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbD09PXR9dmFyIGE9dCgiLi4vdHlwZSIpO2UuZXhwb3J0cz1uZXcgYSgidGFnOnlhbWwub3JnLDIwMDI6bnVsbCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTppLGNvbnN0cnVjdDpyLHByZWRpY2F0ZTpvLHJlcHJlc2VudDp7Y2Fub25pY2FsOmZ1bmN0aW9uKCl7cmV0dXJuIn4ifSxsb3dlcmNhc2U6ZnVuY3Rpb24oKXtyZXR1cm4ibnVsbCJ9LHVwcGVyY2FzZTpmdW5jdGlvbigpe3JldHVybiJOVUxMIn0sY2FtZWxjYXNlOmZ1bmN0aW9uKCl7cmV0dXJuIk51bGwifX0sZGVmYXVsdFN0eWxlOiJsb3dlcmNhc2UifSl9LHsiLi4vdHlwZSI6MTN9XSwyNDpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKHQpe2lmKG51bGw9PT10KXJldHVybiEwO3ZhciBlLG4saSxyLG8sYz1bXSx1PXQ7Zm9yKGU9MCxuPXUubGVuZ3RoO24+ZTtlKz0xKXtpZihpPXVbZV0sbz0hMSwiW29iamVjdCBPYmplY3RdIiE9PXMuY2FsbChpKSlyZXR1cm4hMTtmb3IociBpbiBpKWlmKGEuY2FsbChpLHIpKXtpZihvKXJldHVybiExO289ITB9aWYoIW8pcmV0dXJuITE7aWYoLTEhPT1jLmluZGV4T2YocikpcmV0dXJuITE7Yy5wdXNoKHIpfXJldHVybiEwfWZ1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPT10P3Q6W119dmFyIG89dCgiLi4vdHlwZSIpLGE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPW5ldyBvKCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwIix7a2luZDoic2VxdWVuY2UiLHJlc29sdmU6aSxjb25zdHJ1Y3Q6cn0pfSx7Ii4uL3R5cGUiOjEzfV0sMjU6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgZSxuLGkscixvLHM9dDtmb3Iobz1uZXcgQXJyYXkocy5sZW5ndGgpLGU9MCxuPXMubGVuZ3RoO24+ZTtlKz0xKXtpZihpPXNbZV0sIltvYmplY3QgT2JqZWN0XSIhPT1hLmNhbGwoaSkpcmV0dXJuITE7aWYocj1PYmplY3Qua2V5cyhpKSwxIT09ci5sZW5ndGgpcmV0dXJuITE7b1tlXT1bclswXSxpW3JbMF1dXX1yZXR1cm4hMH1mdW5jdGlvbiByKHQpe2lmKG51bGw9PT10KXJldHVybltdO3ZhciBlLG4saSxyLG8sYT10O2ZvcihvPW5ldyBBcnJheShhLmxlbmd0aCksZT0wLG49YS5sZW5ndGg7bj5lO2UrPTEpaT1hW2VdLHI9T2JqZWN0LmtleXMoaSksb1tlXT1bclswXSxpW3JbMF1dXTtyZXR1cm4gb312YXIgbz10KCIuLi90eXBlIiksYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2UuZXhwb3J0cz1uZXcgbygidGFnOnlhbWwub3JnLDIwMDI6cGFpcnMiLHtraW5kOiJzZXF1ZW5jZSIscmVzb2x2ZTppLGNvbnN0cnVjdDpyfSl9LHsiLi4vdHlwZSI6MTN9XSwyNjpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT10KCIuLi90eXBlIik7ZS5leHBvcnRzPW5ldyBpKCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXEiLHtraW5kOiJzZXF1ZW5jZSIsY29uc3RydWN0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dD90OltdfX0pfSx7Ii4uL3R5cGUiOjEzfV0sMjc6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaSh0KXtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgZSxuPXQ7Zm9yKGUgaW4gbilpZihhLmNhbGwobixlKSYmbnVsbCE9PW5bZV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbCE9PXQ/dDp7fX12YXIgbz10KCIuLi90eXBlIiksYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1uZXcgbygidGFnOnlhbWwub3JnLDIwMDI6c2V0Iix7a2luZDoibWFwcGluZyIscmVzb2x2ZTppLGNvbnN0cnVjdDpyfSl9LHsiLi4vdHlwZSI6MTN9XSwyODpbZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT10KCIuLi90eXBlIik7ZS5leHBvcnRzPW5ldyBpKCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHIiLHtraW5kOiJzY2FsYXIiLGNvbnN0cnVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXQ/dDoiIn19KX0seyIuLi90eXBlIjoxM31dLDI5OltmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCl7cmV0dXJuIG51bGwhPT10JiZudWxsIT09cy5leGVjKHQpfWZ1bmN0aW9uIHIodCl7dmFyIGUsbixpLHIsbyxhLGMsdSxsLHAsZj0wLGg9bnVsbDtpZihlPXMuZXhlYyh0KSxudWxsPT09ZSl0aHJvdyBuZXcgRXJyb3IoIkRhdGUgcmVzb2x2ZSBlcnJvciIpO2lmKG49K2VbMV0saT0rZVsyXS0xLHI9K2VbM10sIWVbNF0pcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKG4saSxyKSk7aWYobz0rZVs0XSxhPStlWzVdLGM9K2VbNl0sZVs3XSl7Zm9yKGY9ZVs3XS5zbGljZSgwLDMpO2YubGVuZ3RoPDM7KWYrPSIwIjtmPStmfXJldHVybiBlWzldJiYodT0rZVsxMF0sbD0rKGVbMTFdfHwwKSxoPTZlNCooNjAqdStsKSwiLSI9PT1lWzldJiYoaD0taCkpLHA9bmV3IERhdGUoRGF0ZS5VVEMobixpLHIsbyxhLGMsZikpLGgmJnAuc2V0VGltZShwLmdldFRpbWUoKS1oKSxwfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQudG9JU09TdHJpbmcoKX12YXIgYT10KCIuLi90eXBlIikscz1uZXcgUmVnRXhwKCJeKFswLTldWzAtOV1bMC05XVswLTldKS0oWzAtOV1bMC05XT8pLShbMC05XVswLTldPykoPzooPzpbVHRdfFsgXFx0XSspKFswLTldWzAtOV0/KTooWzAtOV1bMC05XSk6KFswLTldWzAtOV0pKD86XFwuKFswLTldKikpPyg/OlsgXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pKD86OihbMC05XVswLTldKSk/KSk/KT8kIik7ZS5leHBvcnRzPW5ldyBhKCJ0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAiLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6aSxjb25zdHJ1Y3Q6cixpbnN0YW5jZU9mOkRhdGUscmVwcmVzZW50Om99KX0seyIuLi90eXBlIjoxM31dLDMwOltmdW5jdGlvbih0LGUsbil7fSx7fV0sMzE6W2Z1bmN0aW9uKHQsZSxuKXtlLmV4cG9ydHM9dCgiLi9saWIvaW5oZXJpdCIpfSx7Ii4vbGliL2luaGVyaXQiOjMyfV0sMzI6W2Z1bmN0aW9uKGUsbixpKXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0KXt2YXIgZT1mKHQpO2lmKHYpZm9yKHZhciBuLGk9MDtuPWJbaSsrXTspdC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIG8odCxlLG4pe2Zvcih2YXIgaSxvLGE9cihuKSxzPTAsdT1hLmxlbmd0aDt1PnM7KSJfX3NlbGYiIT09KGk9YVtzKytdKSYmKG89bltpXSx5KG8pJiYoIWN8fG8udG9TdHJpbmcoKS5pbmRleE9mKCIuX19iYXNlIik+LTEpP2VbaV09ZnVuY3Rpb24obixpKXt2YXIgcj10W25dP3Rbbl06Il9fY29uc3RydWN0b3IiPT09bj9lLl9fc2VsZi5fX3BhcmVudDpnO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19iYXNlO3RoaXMuX19iYXNlPXI7dmFyIGU9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuX19iYXNlPXQsZX19KGksbyk6ZVtpXT1vKX1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuLGk9MTtuPXRbaSsrXTspZT95KG4pP3Muc2VsZihlLG4ucHJvdG90eXBlLG4pOnMuc2VsZihlLG4pOmU9eShuKT9zKHRbMF0sbi5wcm90b3R5cGUsbik6cyh0WzBdLG4pO3JldHVybiBlfHx0WzBdfWZ1bmN0aW9uIHMoKXt2YXIgdD1hcmd1bWVudHMsZT1tKHRbMF0pLG49ZXx8eSh0WzBdKSxpPW4/ZT9hKHRbMF0pOnRbMF06dSxyPXRbbj8xOjBdfHx7fSxzPXRbbj8yOjFdLGM9ci5fX2NvbnN0cnVjdG9yfHxuJiZpLnByb3RvdHlwZS5fX2NvbnN0cnVjdG9yP2Z1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Om4/ZnVuY3Rpb24oKXtyZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9OmZ1bmN0aW9uKCl7fTtpZighbilyZXR1cm4gYy5wcm90b3R5cGU9cixjLnByb3RvdHlwZS5fX3NlbGY9Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxoKGMscyk7aChjLGkpLGMuX19wYXJlbnQ9aTt2YXIgbD1pLnByb3RvdHlwZSxmPWMucHJvdG90eXBlPXAobCk7cmV0dXJuIGYuX19zZWxmPWYuY29uc3RydWN0b3I9YyxyJiZvKGwsZixyKSxzJiZvKGksYyxzKSxjfXZhciBjPWZ1bmN0aW9uKCl7fS50b1N0cmluZygpLmluZGV4T2YoIl8iKT4tMSx1PWZ1bmN0aW9uKCl7fSxsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscD1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe307cmV0dXJuIGUucHJvdG90eXBlPXQsbmV3IGV9LGY9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWwuY2FsbCh0LG4pJiZlLnB1c2gobik7cmV0dXJuIGV9LGg9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSlsLmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9LGQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1kLmNhbGwodCl9LHk9ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PWQuY2FsbCh0KX0sZz1mdW5jdGlvbigpe30sdj0hMCx4PXt0b1N0cmluZzoiIn07Zm9yKHZhciBBIGluIHgpeC5oYXNPd25Qcm9wZXJ0eShBKSYmKHY9ITEpO3ZhciBiPXY/WyJ0b1N0cmluZyIsInZhbHVlT2YiXTpudWxsO3Muc2VsZj1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxlPW0odFswXSksbj1lP2EodFswXSx0WzBdWzBdKTp0WzBdLGk9dFsxXSxyPXRbMl0scz1uLnByb3RvdHlwZTtyZXR1cm4gaSYmbyhzLHMsaSksciYmbyhuLG4sciksbn07dmFyIHc9ITA7Im9iamVjdCI9PXR5cGVvZiBpJiYobi5leHBvcnRzPXMsdz0hMSksIm9iamVjdCI9PXR5cGVvZiBtb2R1bGVzJiYobW9kdWxlcy5kZWZpbmUoImluaGVyaXQiLGZ1bmN0aW9uKHQpe3Qocyl9KSx3PSExKSwiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQoZnVuY3Rpb24odCxlLG4pe24uZXhwb3J0cz1zfSksdz0hMSksdyYmKGUuaW5oZXJpdD1zKX0odGhpcyl9LHt9XSwiLyI6W2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9dCgiLi9saWIvanMteWFtbC5qcyIpO2UuZXhwb3J0cz1pfSx7Ii4vbGliL2pzLXlhbWwuanMiOjF9XX0se30sW10pKCIvIil9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qc29uZWRpdG9yLm1pbi5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2pzb25lZGl0b3IubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZGIxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9qc29uZWRpdG9yLm1pbi5qcwpAQCAtMCwwICsxLDUgQEAKKyFmdW5jdGlvbigpe3ZhciB0OyFmdW5jdGlvbigpe3ZhciBlPSExLGk9L3h5ei8udGVzdChmdW5jdGlvbigpe3dpbmRvdy5wb3N0TWVzc2FnZSgieHl6Iil9KT8vXGJfc3VwZXJcYi86Ly4qLztyZXR1cm4gdD1mdW5jdGlvbigpe30sdC5leHRlbmQ9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcygpeyFlJiZ0aGlzLmluaXQmJnRoaXMuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHI9dGhpcy5wcm90b3R5cGU7ZT0hMDt2YXIgbj1uZXcgdGhpcztlPSExO2Zvcih2YXIgbyBpbiB0KW5bb109ImZ1bmN0aW9uIj09dHlwZW9mIHRbb10mJiJmdW5jdGlvbiI9PXR5cGVvZiByW29dJiZpLnRlc3QodFtvXSk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT10aGlzLl9zdXBlcjt0aGlzLl9zdXBlcj1yW3RdO3ZhciBzPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzLl9zdXBlcj1pLHN9fShvLHRbb10pOnRbb107cmV0dXJuIHMucHJvdG90eXBlPW4scy5wcm90b3R5cGUuY29uc3RydWN0b3I9cyxzLmV4dGVuZD1hcmd1bWVudHMuY2FsbGVlLHN9LHR9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7ZT1lfHx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9O3ZhciBpPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO3JldHVybiBpLmluaXRDdXN0b21FdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUsZS5kZXRhaWwpLGl9dC5wcm90b3R5cGU9d2luZG93LkV2ZW50LnByb3RvdHlwZSx3aW5kb3cuQ3VzdG9tRXZlbnQ9dH0oKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9WyJtcyIsIm1veiIsIndlYmtpdCIsIm8iXSxpPTA7aTxlLmxlbmd0aCYmIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7KytpKXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9d2luZG93W2VbaV0rIlJlcXVlc3RBbmltYXRpb25GcmFtZSJdLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZT13aW5kb3dbZVtpXSsiQ2FuY2VsQW5pbWF0aW9uRnJhbWUiXXx8d2luZG93W2VbaV0rIkNhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZSJdO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fCh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGUsaSl7dmFyIHM9KG5ldyBEYXRlKS5nZXRUaW1lKCkscj1NYXRoLm1heCgwLDE2LShzLXQpKSxuPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShzK3IpfSxyKTtyZXR1cm4gdD1zK3Isbn0pLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8KHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZT1mdW5jdGlvbih0KXtjbGVhclRpbWVvdXQodCl9KX0oKSxmdW5jdGlvbigpe0FycmF5LmlzQXJyYXl8fChBcnJheS5pc0FycmF5PWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KX0oKTt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4hKCJvYmplY3QiIT10eXBlb2YgdHx8dC5ub2RlVHlwZXx8bnVsbCE9PXQmJnQ9PT10LndpbmRvdykmJiEodC5jb25zdHJ1Y3RvciYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKX0saT1mdW5jdGlvbih0KXt2YXIgcyxyLG47Zm9yKHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXtzPWFyZ3VtZW50c1tyXTtmb3IobiBpbiBzKXMuaGFzT3duUHJvcGVydHkobikmJihzW25dJiZlKHNbbl0pPyh0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT17fSksaSh0W25dLHNbbl0pKTp0W25dPXNbbl0pfXJldHVybiB0fSxzPWZ1bmN0aW9uKHQsZSl7aWYodCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgaTtpZihBcnJheS5pc0FycmF5KHQpfHwibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aC0xIGluIHQpe2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspaWYoZShpLHRbaV0pPT09ITEpcmV0dXJufWVsc2UgaWYoT2JqZWN0LmtleXMpe3ZhciBzPU9iamVjdC5rZXlzKHQpO2ZvcihpPTA7aTxzLmxlbmd0aDtpKyspaWYoZShzW2ldLHRbc1tpXV0pPT09ITEpcmV0dXJufWVsc2UgZm9yKGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpJiZlKGksdFtpXSk9PT0hMSlyZXR1cm59fSxyPWZ1bmN0aW9uKHQsZSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkhUTUxFdmVudHMiKTtpLmluaXRFdmVudChlLCEwLCEwKSx0LmRpc3BhdGNoRXZlbnQoaSl9LG49ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBFbGVtZW50KSl0aHJvdyBuZXcgRXJyb3IoImVsZW1lbnQgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIEVsZW1lbnQiKTtlPWkoe30sbi5kZWZhdWx0cy5vcHRpb25zLGV8fHt9KSx0aGlzLmVsZW1lbnQ9dCx0aGlzLm9wdGlvbnM9ZSx0aGlzLmluaXQoKX07bi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm4saW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5yZWFkeT0hMTt2YXIgZT1uLmRlZmF1bHRzLnRoZW1lc1t0aGlzLm9wdGlvbnMudGhlbWV8fG4uZGVmYXVsdHMudGhlbWVdO2lmKCFlKXRocm93IlVua25vd24gdGhlbWUgIisodGhpcy5vcHRpb25zLnRoZW1lfHxuLmRlZmF1bHRzLnRoZW1lKTt0aGlzLnNjaGVtYT10aGlzLm9wdGlvbnMuc2NoZW1hLHRoaXMudGhlbWU9bmV3IGUsdGhpcy50ZW1wbGF0ZT10aGlzLm9wdGlvbnMudGVtcGxhdGUsdGhpcy5yZWZzPXRoaXMub3B0aW9ucy5yZWZzfHx7fSx0aGlzLnV1aWQ9MCx0aGlzLl9fZGF0YT17fTt2YXIgaT1uLmRlZmF1bHRzLmljb25saWJzW3RoaXMub3B0aW9ucy5pY29ubGlifHxuLmRlZmF1bHRzLmljb25saWJdO2kmJih0aGlzLmljb25saWI9bmV3IGkpLHRoaXMucm9vdF9jb250YWluZXI9dGhpcy50aGVtZS5nZXRDb250YWluZXIoKSx0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yb290X2NvbnRhaW5lciksdGhpcy50cmFuc2xhdGU9dGhpcy5vcHRpb25zLnRyYW5zbGF0ZXx8bi5kZWZhdWx0cy50cmFuc2xhdGUsdGhpcy5fbG9hZEV4dGVybmFsUmVmcyh0aGlzLnNjaGVtYSxmdW5jdGlvbigpe3QuX2dldERlZmluaXRpb25zKHQuc2NoZW1hKSx0LnZhbGlkYXRvcj1uZXcgbi5WYWxpZGF0b3IodCk7dmFyIGU9dC5nZXRFZGl0b3JDbGFzcyh0LnNjaGVtYSk7dC5yb290PXQuY3JlYXRlRWRpdG9yKGUse2pzb25lZGl0b3I6dCxzY2hlbWE6dC5zY2hlbWEscmVxdWlyZWQ6ITAsY29udGFpbmVyOnQucm9vdF9jb250YWluZXJ9KSx0LnJvb3QucHJlQnVpbGQoKSx0LnJvb3QuYnVpbGQoKSx0LnJvb3QucG9zdEJ1aWxkKCksdC5vcHRpb25zLnN0YXJ0dmFsJiZ0LnJvb3Quc2V0VmFsdWUodC5vcHRpb25zLnN0YXJ0dmFsKSx0LnZhbGlkYXRpb25fcmVzdWx0cz10LnZhbGlkYXRvci52YWxpZGF0ZSh0LnJvb3QuZ2V0VmFsdWUoKSksdC5yb290LnNob3dWYWxpZGF0aW9uRXJyb3JzKHQudmFsaWRhdGlvbl9yZXN1bHRzKSx0LnJlYWR5PSEwLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0LnJlYWR5JiYodC52YWxpZGF0aW9uX3Jlc3VsdHM9dC52YWxpZGF0b3IudmFsaWRhdGUodC5yb290LmdldFZhbHVlKCkpLHQucm9vdC5zaG93VmFsaWRhdGlvbkVycm9ycyh0LnZhbGlkYXRpb25fcmVzdWx0cyksdC50cmlnZ2VyKCJyZWFkeSIpLHQudHJpZ2dlcigiY2hhbmdlIikpfSl9KX0sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy5yZWFkeSl0aHJvdyJKU09OIEVkaXRvciBub3QgcmVhZHkgeWV0LiAgTGlzdGVuIGZvciAncmVhZHknIGV2ZW50IGJlZm9yZSBnZXR0aW5nIHRoZSB2YWx1ZSI7cmV0dXJuIHRoaXMucm9vdC5nZXRWYWx1ZSgpfSxzZXRWYWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5yZWFkeSl0aHJvdyJKU09OIEVkaXRvciBub3QgcmVhZHkgeWV0LiAgTGlzdGVuIGZvciAncmVhZHknIGV2ZW50IGJlZm9yZSBzZXR0aW5nIHRoZSB2YWx1ZSI7cmV0dXJuIHRoaXMucm9vdC5zZXRWYWx1ZSh0KSx0aGlzfSx2YWxpZGF0ZTpmdW5jdGlvbih0KXtpZighdGhpcy5yZWFkeSl0aHJvdyJKU09OIEVkaXRvciBub3QgcmVhZHkgeWV0LiAgTGlzdGVuIGZvciAncmVhZHknIGV2ZW50IGJlZm9yZSB2YWxpZGF0aW5nIjtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy52YWxpZGF0b3IudmFsaWRhdGUodCk6dGhpcy52YWxpZGF0aW9uX3Jlc3VsdHN9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmRlc3Ryb3llZHx8dGhpcy5yZWFkeSYmKHRoaXMuc2NoZW1hPW51bGwsdGhpcy5vcHRpb25zPW51bGwsdGhpcy5yb290LmRlc3Ryb3koKSx0aGlzLnJvb3Q9bnVsbCx0aGlzLnJvb3RfY29udGFpbmVyPW51bGwsdGhpcy52YWxpZGF0b3I9bnVsbCx0aGlzLnZhbGlkYXRpb25fcmVzdWx0cz1udWxsLHRoaXMudGhlbWU9bnVsbCx0aGlzLmljb25saWI9bnVsbCx0aGlzLnRlbXBsYXRlPW51bGwsdGhpcy5fX2RhdGE9bnVsbCx0aGlzLnJlYWR5PSExLHRoaXMuZWxlbWVudC5pbm5lckhUTUw9IiIsdGhpcy5kZXN0cm95ZWQ9ITApfSxvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNhbGxiYWNrcz10aGlzLmNhbGxiYWNrc3x8e30sdGhpcy5jYWxsYmFja3NbdF09dGhpcy5jYWxsYmFja3NbdF18fFtdLHRoaXMuY2FsbGJhY2tzW3RdLnB1c2goZSksdGhpc30sb2ZmOmZ1bmN0aW9uKHQsZSl7aWYodCYmZSl7dGhpcy5jYWxsYmFja3M9dGhpcy5jYWxsYmFja3N8fHt9LHRoaXMuY2FsbGJhY2tzW3RdPXRoaXMuY2FsbGJhY2tzW3RdfHxbXTtmb3IodmFyIGk9W10scz0wO3M8dGhpcy5jYWxsYmFja3NbdF0ubGVuZ3RoO3MrKyl0aGlzLmNhbGxiYWNrc1t0XVtzXSE9PWUmJmkucHVzaCh0aGlzLmNhbGxiYWNrc1t0XVtzXSk7dGhpcy5jYWxsYmFja3NbdF09aX1lbHNlIHQ/KHRoaXMuY2FsbGJhY2tzPXRoaXMuY2FsbGJhY2tzfHx7fSx0aGlzLmNhbGxiYWNrc1t0XT1bXSk6dGhpcy5jYWxsYmFja3M9e307cmV0dXJuIHRoaXN9LHRyaWdnZXI6ZnVuY3Rpb24odCl7aWYodGhpcy5jYWxsYmFja3MmJnRoaXMuY2FsbGJhY2tzW3RdJiZ0aGlzLmNhbGxiYWNrc1t0XS5sZW5ndGgpZm9yKHZhciBlPTA7ZTx0aGlzLmNhbGxiYWNrc1t0XS5sZW5ndGg7ZSsrKXRoaXMuY2FsbGJhY2tzW3RdW2VdKCk7cmV0dXJuIHRoaXN9LHNldE9wdGlvbjpmdW5jdGlvbih0LGUpe2lmKCJzaG93X2Vycm9ycyIhPT10KXRocm93Ik9wdGlvbiAiK3QrIiBtdXN0IGJlIHNldCBkdXJpbmcgaW5zdGFudGlhdGlvbiBhbmQgY2Fubm90IGJlIGNoYW5nZWQgbGF0ZXIiO3JldHVybiB0aGlzLm9wdGlvbnMuc2hvd19lcnJvcnM9ZSx0aGlzLm9uQ2hhbmdlKCksdGhpc30sZ2V0RWRpdG9yQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGU7aWYodD10aGlzLmV4cGFuZFNjaGVtYSh0KSxzKG4uZGVmYXVsdHMucmVzb2x2ZXJzLGZ1bmN0aW9uKGkscyl7dmFyIHI9cyh0KTtyZXR1cm4gciYmbi5kZWZhdWx0cy5lZGl0b3JzW3JdPyhlPXIsITEpOnZvaWQgMH0pLCFlKXRocm93IlVua25vd24gZWRpdG9yIGZvciBzY2hlbWEgIitKU09OLnN0cmluZ2lmeSh0KTtpZighbi5kZWZhdWx0cy5lZGl0b3JzW2VdKXRocm93IlVua25vd24gZWRpdG9yICIrZTtyZXR1cm4gbi5kZWZhdWx0cy5lZGl0b3JzW2VdfSxjcmVhdGVFZGl0b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1pKHt9LHQub3B0aW9uc3x8e30sZSksbmV3IHQoZSl9LG9uQ2hhbmdlOmZ1bmN0aW9uKCl7aWYodGhpcy5yZWFkeSYmIXRoaXMuZmlyaW5nX2NoYW5nZSl7dGhpcy5maXJpbmdfY2hhbmdlPSEwO3ZhciB0PXRoaXM7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0LmZpcmluZ19jaGFuZ2U9ITEsdC5yZWFkeSYmKHQudmFsaWRhdGlvbl9yZXN1bHRzPXQudmFsaWRhdG9yLnZhbGlkYXRlKHQucm9vdC5nZXRWYWx1ZSgpKSwibmV2ZXIiIT09dC5vcHRpb25zLnNob3dfZXJyb3JzP3Qucm9vdC5zaG93VmFsaWRhdGlvbkVycm9ycyh0LnZhbGlkYXRpb25fcmVzdWx0cyk6dC5yb290LnNob3dWYWxpZGF0aW9uRXJyb3JzKFtdKSx0LnRyaWdnZXIoImNoYW5nZSIpKX0pLHRoaXN9fSxjb21waWxlVGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtlPWV8fG4uZGVmYXVsdHMudGVtcGxhdGU7dmFyIGk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZighbi5kZWZhdWx0cy50ZW1wbGF0ZXNbZV0pdGhyb3ciVW5rbm93biB0ZW1wbGF0ZSBlbmdpbmUgIitlO2lmKGk9bi5kZWZhdWx0cy50ZW1wbGF0ZXNbZV0oKSwhaSl0aHJvdyJUZW1wbGF0ZSBlbmdpbmUgIitlKyIgbWlzc2luZyByZXF1aXJlZCBsaWJyYXJ5LiJ9ZWxzZSBpPWU7aWYoIWkpdGhyb3ciTm8gdGVtcGxhdGUgZW5naW5lIHNldCI7aWYoIWkuY29tcGlsZSl0aHJvdyJJbnZhbGlkIHRlbXBsYXRlIGVuZ2luZSBzZXQiO3JldHVybiBpLmNvbXBpbGUodCl9LF9kYXRhOmZ1bmN0aW9uKHQsZSxpKXtpZigzIT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImRhdGEtanNvbmVkaXRvci0iK2UpP3RoaXMuX19kYXRhW3QuZ2V0QXR0cmlidXRlKCJkYXRhLWpzb25lZGl0b3ItIitlKV06bnVsbDt2YXIgczt0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1qc29uZWRpdG9yLSIrZSk/cz10LmdldEF0dHJpYnV0ZSgiZGF0YS1qc29uZWRpdG9yLSIrZSk6KHM9dGhpcy51dWlkKyssdC5zZXRBdHRyaWJ1dGUoImRhdGEtanNvbmVkaXRvci0iK2UscykpLHRoaXMuX19kYXRhW3NdPWl9LHJlZ2lzdGVyRWRpdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVkaXRvcnM9dGhpcy5lZGl0b3JzfHx7fSx0aGlzLmVkaXRvcnNbdC5wYXRoXT10LHRoaXN9LHVucmVnaXN0ZXJFZGl0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWRpdG9ycz10aGlzLmVkaXRvcnN8fHt9LHRoaXMuZWRpdG9yc1t0LnBhdGhdPW51bGwsdGhpc30sZ2V0RWRpdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVkaXRvcnM/dGhpcy5lZGl0b3JzW3RdOnZvaWQgMH0sd2F0Y2g6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy53YXRjaGxpc3Q9dGhpcy53YXRjaGxpc3R8fHt9LHRoaXMud2F0Y2hsaXN0W3RdPXRoaXMud2F0Y2hsaXN0W3RdfHxbXSx0aGlzLndhdGNobGlzdFt0XS5wdXNoKGUpLHRoaXN9LHVud2F0Y2g6ZnVuY3Rpb24odCxlKXtpZighdGhpcy53YXRjaGxpc3R8fCF0aGlzLndhdGNobGlzdFt0XSlyZXR1cm4gdGhpcztpZighZSlyZXR1cm4gdGhpcy53YXRjaGxpc3RbdF09bnVsbCx0aGlzO2Zvcih2YXIgaT1bXSxzPTA7czx0aGlzLndhdGNobGlzdFt0XS5sZW5ndGg7cysrKXRoaXMud2F0Y2hsaXN0W3RdW3NdIT09ZSYmaS5wdXNoKHRoaXMud2F0Y2hsaXN0W3RdW3NdKTtyZXR1cm4gdGhpcy53YXRjaGxpc3RbdF09aS5sZW5ndGg/aTpudWxsLHRoaXN9LG5vdGlmeVdhdGNoZXJzOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLndhdGNobGlzdHx8IXRoaXMud2F0Y2hsaXN0W3RdKXJldHVybiB0aGlzO2Zvcih2YXIgZT0wO2U8dGhpcy53YXRjaGxpc3RbdF0ubGVuZ3RoO2UrKyl0aGlzLndhdGNobGlzdFt0XVtlXSgpfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5yb290fHx0aGlzLnJvb3QuaXNFbmFibGVkKCl9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMucm9vdC5lbmFibGUoKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMucm9vdC5kaXNhYmxlKCl9LF9nZXREZWZpbml0aW9uczpmdW5jdGlvbih0LGUpe2lmKGU9ZXx8IiMvZGVmaW5pdGlvbnMvIix0LmRlZmluaXRpb25zKWZvcih2YXIgaSBpbiB0LmRlZmluaXRpb25zKXQuZGVmaW5pdGlvbnMuaGFzT3duUHJvcGVydHkoaSkmJih0aGlzLnJlZnNbZStpXT10LmRlZmluaXRpb25zW2ldLHQuZGVmaW5pdGlvbnNbaV0uZGVmaW5pdGlvbnMmJnRoaXMuX2dldERlZmluaXRpb25zKHQuZGVmaW5pdGlvbnNbaV0sZStpKyIvZGVmaW5pdGlvbnMvIikpfSxfZ2V0RXh0ZXJuYWxSZWZzOmZ1bmN0aW9uKHQpe3ZhciBlPXt9LGk9ZnVuY3Rpb24odCl7Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmKGVbaV09ITApfTt0LiRyZWYmJiJvYmplY3QiIT10eXBlb2YgdC4kcmVmJiYiIyIhPT10LiRyZWYuc3Vic3RyKDAsMSkmJiF0aGlzLnJlZnNbdC4kcmVmXSYmKGVbdC4kcmVmXT0hMCk7Zm9yKHZhciBzIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShzKSlpZih0W3NdJiYib2JqZWN0Ij09dHlwZW9mIHRbc10mJkFycmF5LmlzQXJyYXkodFtzXSkpZm9yKHZhciByPTA7cjx0W3NdLmxlbmd0aDtyKyspIm9iamVjdCI9PXR5cGVvZiB0W3NdW3JdJiZpKHRoaXMuX2dldEV4dGVybmFsUmVmcyh0W3NdW3JdKSk7ZWxzZSB0W3NdJiYib2JqZWN0Ij09dHlwZW9mIHRbc10mJmkodGhpcy5fZ2V0RXh0ZXJuYWxSZWZzKHRbc10pKTtyZXR1cm4gZX0sX2xvYWRFeHRlcm5hbFJlZnM6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLHI9dGhpcy5fZ2V0RXh0ZXJuYWxSZWZzKHQpLG49MCxvPTAsYT0hMTtzKHIsZnVuY3Rpb24odCl7aWYoIWkucmVmc1t0XSl7aWYoIWkub3B0aW9ucy5hamF4KXRocm93Ik11c3Qgc2V0IGFqYXggb3B0aW9uIHRvIHRydWUgdG8gbG9hZCBleHRlcm5hbCByZWYgIit0O2kucmVmc1t0XT0ibG9hZGluZyIsbysrO3ZhciBzPW5ldyBYTUxIdHRwUmVxdWVzdDtzLm9wZW4oIkdFVCIsdCwhMCkscy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT1zLnJlYWR5U3RhdGUpe2lmKDIwMCE9PXMuc3RhdHVzKXRocm93IHdpbmRvdy5jb25zb2xlLmxvZyhzKSwiRmFpbGVkIHRvIGZldGNoIHJlZiB2aWEgYWpheC0gIit0O3ZhciByO3RyeXtyPUpTT04ucGFyc2Uocy5yZXNwb25zZVRleHQpfWNhdGNoKGgpe3Rocm93IHdpbmRvdy5jb25zb2xlLmxvZyhoKSwiRmFpbGVkIHRvIHBhcnNlIGV4dGVybmFsIHJlZiAiK3R9aWYoIXJ8fCJvYmplY3QiIT10eXBlb2Ygcil0aHJvdyJFeHRlcm5hbCByZWYgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIHNjaGVtYSAtICIrdDtpLnJlZnNbdF09cixpLl9sb2FkRXh0ZXJuYWxSZWZzKHIsZnVuY3Rpb24oKXtuKyssbj49byYmIWEmJihhPSEwLGUoKSl9KX19LHMuc2VuZCgpfX0pLG98fGUoKX0sZXhwYW5kUmVmczpmdW5jdGlvbih0KXtmb3IodD1pKHt9LHQpO3QuJHJlZjspe3ZhciBlPXQuJHJlZjtkZWxldGUgdC4kcmVmLHRoaXMucmVmc1tlXXx8KGU9ZGVjb2RlVVJJQ29tcG9uZW50KGUpKSx0PXRoaXMuZXh0ZW5kU2NoZW1hcyh0LHRoaXMucmVmc1tlXSl9cmV0dXJuIHR9LGV4cGFuZFNjaGVtYTpmdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMsbj1pKHt9LHQpO2lmKCJvYmplY3QiPT10eXBlb2YgdC50eXBlJiYoQXJyYXkuaXNBcnJheSh0LnR5cGUpP3ModC50eXBlLGZ1bmN0aW9uKGUsaSl7Im9iamVjdCI9PXR5cGVvZiBpJiYodC50eXBlW2VdPXIuZXhwYW5kU2NoZW1hKGkpKX0pOnQudHlwZT1yLmV4cGFuZFNjaGVtYSh0LnR5cGUpKSwib2JqZWN0Ij09dHlwZW9mIHQuZGlzYWxsb3cmJihBcnJheS5pc0FycmF5KHQuZGlzYWxsb3cpP3ModC5kaXNhbGxvdyxmdW5jdGlvbihlLGkpeyJvYmplY3QiPT10eXBlb2YgaSYmKHQuZGlzYWxsb3dbZV09ci5leHBhbmRTY2hlbWEoaSkpfSk6dC5kaXNhbGxvdz1yLmV4cGFuZFNjaGVtYSh0LmRpc2FsbG93KSksdC5hbnlPZiYmcyh0LmFueU9mLGZ1bmN0aW9uKGUsaSl7dC5hbnlPZltlXT1yLmV4cGFuZFNjaGVtYShpKX0pLHQuZGVwZW5kZW5jaWVzJiZzKHQuZGVwZW5kZW5jaWVzLGZ1bmN0aW9uKGUsaSl7Im9iamVjdCIhPXR5cGVvZiBpfHxBcnJheS5pc0FycmF5KGkpfHwodC5kZXBlbmRlbmNpZXNbZV09ci5leHBhbmRTY2hlbWEoaSkpfSksdC5ub3QmJih0Lm5vdD10aGlzLmV4cGFuZFNjaGVtYSh0Lm5vdCkpLHQuYWxsT2Ype2ZvcihlPTA7ZTx0LmFsbE9mLmxlbmd0aDtlKyspbj10aGlzLmV4dGVuZFNjaGVtYXMobix0aGlzLmV4cGFuZFNjaGVtYSh0LmFsbE9mW2VdKSk7ZGVsZXRlIG4uYWxsT2Z9aWYodFsiZXh0ZW5kcyJdKXtpZihBcnJheS5pc0FycmF5KHRbImV4dGVuZHMiXSkpZm9yKGU9MDtlPHRbImV4dGVuZHMiXS5sZW5ndGg7ZSsrKW49dGhpcy5leHRlbmRTY2hlbWFzKG4sdGhpcy5leHBhbmRTY2hlbWEodFsiZXh0ZW5kcyJdW2VdKSk7ZWxzZSBuPXRoaXMuZXh0ZW5kU2NoZW1hcyhuLHRoaXMuZXhwYW5kU2NoZW1hKHRbImV4dGVuZHMiXSkpO2RlbGV0ZSBuWyJleHRlbmRzIl19aWYodC5vbmVPZil7dmFyIG89aSh7fSxuKTtmb3IoZGVsZXRlIG8ub25lT2YsZT0wO2U8dC5vbmVPZi5sZW5ndGg7ZSsrKW4ub25lT2ZbZV09dGhpcy5leHRlbmRTY2hlbWFzKHRoaXMuZXhwYW5kU2NoZW1hKHQub25lT2ZbZV0pLG8pfXJldHVybiB0aGlzLmV4cGFuZFJlZnMobil9LGV4dGVuZFNjaGVtYXM6ZnVuY3Rpb24odCxlKXt0PWkoe30sdCksZT1pKHt9LGUpO3ZhciByPXRoaXMsbj17fTtyZXR1cm4gcyh0LGZ1bmN0aW9uKHQsaSl7InVuZGVmaW5lZCIhPXR5cGVvZiBlW3RdPyJyZXF1aXJlZCI9PT10JiYib2JqZWN0Ij09dHlwZW9mIGkmJkFycmF5LmlzQXJyYXkoaSk/bi5yZXF1aXJlZD1pLmNvbmNhdChlW3RdKS5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbmRleE9mKGUpPDAmJnQucHVzaChlKSx0fSxbXSk6InR5cGUiIT09dHx8InN0cmluZyIhPXR5cGVvZiBpJiYhQXJyYXkuaXNBcnJheShpKT8ib2JqZWN0Ij09dHlwZW9mIGkmJkFycmF5LmlzQXJyYXkoaSk/blt0XT1pLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4tMSE9PWVbdF0uaW5kZXhPZihpKX0pOiJvYmplY3QiPT10eXBlb2YgaSYmbnVsbCE9PWk/blt0XT1yLmV4dGVuZFNjaGVtYXMoaSxlW3RdKTpuW3RdPWk6KCJzdHJpbmciPT10eXBlb2YgaSYmKGk9W2ldKSwic3RyaW5nIj09dHlwZW9mIGUudHlwZSYmKGUudHlwZT1bZS50eXBlXSksbi50eXBlPWkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybi0xIT09ZS50eXBlLmluZGV4T2YodCl9KSwxPT09bi50eXBlLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBuLnR5cGVbMF0mJihuLnR5cGU9bi50eXBlWzBdKSk6blt0XT1pfSkscyhlLGZ1bmN0aW9uKGUsaSl7InVuZGVmaW5lZCI9PXR5cGVvZiB0W2VdJiYobltlXT1pKX0pLG59fSxuLmRlZmF1bHRzPXt0aGVtZXM6e30sdGVtcGxhdGVzOnt9LGljb25saWJzOnt9LGVkaXRvcnM6e30sbGFuZ3VhZ2VzOnt9LHJlc29sdmVyczpbXSxjdXN0b21fdmFsaWRhdG9yczpbXX0sbi5WYWxpZGF0b3I9dC5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0aGlzLmpzb25lZGl0b3I9dCx0aGlzLnNjaGVtYT1lfHx0aGlzLmpzb25lZGl0b3Iuc2NoZW1hLHRoaXMub3B0aW9ucz17fSx0aGlzLnRyYW5zbGF0ZT10aGlzLmpzb25lZGl0b3IudHJhbnNsYXRlfHxuLmRlZmF1bHRzLnRyYW5zbGF0ZX0sdmFsaWRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlU2NoZW1hKHRoaXMuc2NoZW1hLHQpfSxfdmFsaWRhdGVTY2hlbWE6ZnVuY3Rpb24odCxlLHIpe3ZhciBvLGEsaCxsPXRoaXMsZD1bXSx1PUpTT04uc3RyaW5naWZ5KGUpO2lmKHI9cnx8InJvb3QiLHQ9aSh7fSx0aGlzLmpzb25lZGl0b3IuZXhwYW5kUmVmcyh0KSksdC5yZXF1aXJlZCYmdC5yZXF1aXJlZD09PSEwKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUpcmV0dXJuIGQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJyZXF1aXJlZCIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3Jfbm90c2V0Iil9KSxkfWVsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXtpZighdGhpcy5qc29uZWRpdG9yLm9wdGlvbnMucmVxdWlyZWRfYnlfZGVmYXVsdClyZXR1cm4gZDtkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToicmVxdWlyZWQiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX25vdHNldCIpfSl9aWYodFsiZW51bSJdKXtmb3Iobz0hMSxhPTA7YTx0WyJlbnVtIl0ubGVuZ3RoO2ErKyl1PT09SlNPTi5zdHJpbmdpZnkodFsiZW51bSJdW2FdKSYmKG89ITApO298fGQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJlbnVtIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9lbnVtIil9KX1pZih0WyJleHRlbmRzIl0pZm9yKGE9MDthPHRbImV4dGVuZHMiXS5sZW5ndGg7YSsrKWQ9ZC5jb25jYXQodGhpcy5fdmFsaWRhdGVTY2hlbWEodFsiZXh0ZW5kcyJdW2FdLGUscikpO2lmKHQuYWxsT2YpZm9yKGE9MDthPHQuYWxsT2YubGVuZ3RoO2ErKylkPWQuY29uY2F0KHRoaXMuX3ZhbGlkYXRlU2NoZW1hKHQuYWxsT2ZbYV0sZSxyKSk7aWYodC5hbnlPZil7Zm9yKG89ITEsYT0wO2E8dC5hbnlPZi5sZW5ndGg7YSsrKWlmKCF0aGlzLl92YWxpZGF0ZVNjaGVtYSh0LmFueU9mW2FdLGUscikubGVuZ3RoKXtvPSEwO2JyZWFrfW98fGQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJhbnlPZiIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfYW55T2YiKX0pfWlmKHQub25lT2Ype289MDt2YXIgcD1bXTtmb3IoYT0wO2E8dC5vbmVPZi5sZW5ndGg7YSsrKXt2YXIgYz10aGlzLl92YWxpZGF0ZVNjaGVtYSh0Lm9uZU9mW2FdLGUscik7Zm9yKGMubGVuZ3RofHxvKyssaD0wO2g8Yy5sZW5ndGg7aCsrKWNbaF0ucGF0aD1yKyIub25lT2ZbIithKyJdIitjW2hdLnBhdGguc3Vic3RyKHIubGVuZ3RoKTtwPXAuY29uY2F0KGMpfTEhPT1vJiYoZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6Im9uZU9mIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9vbmVPZiIsW29dKX0pLGQ9ZC5jb25jYXQocCkpfWlmKHQubm90JiYodGhpcy5fdmFsaWRhdGVTY2hlbWEodC5ub3QsZSxyKS5sZW5ndGh8fGQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJub3QiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX25vdCIpfSkpLHQudHlwZSlpZihBcnJheS5pc0FycmF5KHQudHlwZSkpe2ZvcihvPSExLGE9MDthPHQudHlwZS5sZW5ndGg7YSsrKWlmKHRoaXMuX2NoZWNrVHlwZSh0LnR5cGVbYV0sZSkpe289ITA7YnJlYWt9b3x8ZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6InR5cGUiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX3R5cGVfdW5pb24iKX0pfWVsc2UgdGhpcy5fY2hlY2tUeXBlKHQudHlwZSxlKXx8ZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6InR5cGUiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX3R5cGUiLFt0LnR5cGVdKX0pO2lmKHQuZGlzYWxsb3cpaWYoQXJyYXkuaXNBcnJheSh0LmRpc2FsbG93KSl7Zm9yKG89ITAsYT0wO2E8dC5kaXNhbGxvdy5sZW5ndGg7YSsrKWlmKHRoaXMuX2NoZWNrVHlwZSh0LmRpc2FsbG93W2FdLGUpKXtvPSExO2JyZWFrfW98fGQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJkaXNhbGxvdyIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfZGlzYWxsb3dfdW5pb24iKX0pfWVsc2UgdGhpcy5fY2hlY2tUeXBlKHQuZGlzYWxsb3csZSkmJmQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJkaXNhbGxvdyIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfZGlzYWxsb3ciLFt0LmRpc2FsbG93XSl9KTtpZigibnVtYmVyIj09dHlwZW9mIGUpKHQubXVsdGlwbGVPZnx8dC5kaXZpc2libGVCeSkmJihvPWUvKHQubXVsdGlwbGVPZnx8dC5kaXZpc2libGVCeSksbyE9PU1hdGguZmxvb3IobykmJmQucHVzaCh7cGF0aDpyLHByb3BlcnR5OnQubXVsdGlwbGVPZj8ibXVsdGlwbGVPZiI6ImRpdmlzaWJsZUJ5IixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9tdWx0aXBsZU9mIixbdC5tdWx0aXBsZU9mfHx0LmRpdmlzaWJsZUJ5XSl9KSksdC5oYXNPd25Qcm9wZXJ0eSgibWF4aW11bSIpJiYodC5leGNsdXNpdmVNYXhpbXVtJiZlPj10Lm1heGltdW0/ZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6Im1heGltdW0iLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX21heGltdW1fZXhjbCIsW3QubWF4aW11bV0pfSk6IXQuZXhjbHVzaXZlTWF4aW11bSYmZT50Lm1heGltdW0mJmQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJtYXhpbXVtIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9tYXhpbXVtX2luY2wiLFt0Lm1heGltdW1dKX0pKSx0Lmhhc093blByb3BlcnR5KCJtaW5pbXVtIikmJih0LmV4Y2x1c2l2ZU1pbmltdW0mJmU8PXQubWluaW11bT9kLnB1c2goe3BhdGg6cixwcm9wZXJ0eToibWluaW11bSIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfbWluaW11bV9leGNsIixbdC5taW5pbXVtXSl9KTohdC5leGNsdXNpdmVNaW5pbXVtJiZlPHQubWluaW11bSYmZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6Im1pbmltdW0iLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX21pbmltdW1faW5jbCIsW3QubWluaW11bV0pfSkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXQubWF4TGVuZ3RoJiYoZSsiIikubGVuZ3RoPnQubWF4TGVuZ3RoJiZkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToibWF4TGVuZ3RoIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9tYXhMZW5ndGgiLFt0Lm1heExlbmd0aF0pfSksdC5taW5MZW5ndGgmJihlKyIiKS5sZW5ndGg8dC5taW5MZW5ndGgmJmQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJtaW5MZW5ndGgiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoMT09PXQubWluTGVuZ3RoPyJlcnJvcl9ub3RlbXB0eSI6ImVycm9yX21pbkxlbmd0aCIsW3QubWluTGVuZ3RoXSl9KSx0LnBhdHRlcm4mJihuZXcgUmVnRXhwKHQucGF0dGVybikudGVzdChlKXx8ZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6InBhdHRlcm4iLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX3BhdHRlcm4iKX0pKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJkFycmF5LmlzQXJyYXkoZSkpe2lmKHQuaXRlbXMpaWYoQXJyYXkuaXNBcnJheSh0Lml0ZW1zKSlmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKWlmKHQuaXRlbXNbYV0pZD1kLmNvbmNhdCh0aGlzLl92YWxpZGF0ZVNjaGVtYSh0Lml0ZW1zW2FdLGVbYV0scisiLiIrYSkpO2Vsc2V7aWYodC5hZGRpdGlvbmFsSXRlbXM9PT0hMClicmVhaztpZighdC5hZGRpdGlvbmFsSXRlbXMpe2lmKHQuYWRkaXRpb25hbEl0ZW1zPT09ITEpe2QucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJhZGRpdGlvbmFsSXRlbXMiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX2FkZGl0aW9uYWxJdGVtcyIpfSk7YnJlYWt9YnJlYWt9ZD1kLmNvbmNhdCh0aGlzLl92YWxpZGF0ZVNjaGVtYSh0LmFkZGl0aW9uYWxJdGVtcyxlW2FdLHIrIi4iK2EpKX1lbHNlIGZvcihhPTA7YTxlLmxlbmd0aDthKyspZD1kLmNvbmNhdCh0aGlzLl92YWxpZGF0ZVNjaGVtYSh0Lml0ZW1zLGVbYV0scisiLiIrYSkpO2lmKHQubWF4SXRlbXMmJmUubGVuZ3RoPnQubWF4SXRlbXMmJmQucHVzaCh7cGF0aDpyLHByb3BlcnR5OiJtYXhJdGVtcyIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfbWF4SXRlbXMiLFt0Lm1heEl0ZW1zXSl9KSx0Lm1pbkl0ZW1zJiZlLmxlbmd0aDx0Lm1pbkl0ZW1zJiZkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToibWluSXRlbXMiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX21pbkl0ZW1zIixbdC5taW5JdGVtc10pfSksdC51bmlxdWVJdGVtcyl7dmFyIG09e307Zm9yKGE9MDthPGUubGVuZ3RoO2ErKyl7aWYobz1KU09OLnN0cmluZ2lmeShlW2FdKSxtW29dKXtkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToidW5pcXVlSXRlbXMiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX3VuaXF1ZUl0ZW1zIil9KTticmVha31tW29dPSEwfX19ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXtpZih0Lm1heFByb3BlcnRpZXMpe289MDtmb3IoYSBpbiBlKWUuaGFzT3duUHJvcGVydHkoYSkmJm8rKztvPnQubWF4UHJvcGVydGllcyYmZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6Im1heFByb3BlcnRpZXMiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX21heFByb3BlcnRpZXMiLFt0Lm1heFByb3BlcnRpZXNdKX0pfWlmKHQubWluUHJvcGVydGllcyl7bz0wO2ZvcihhIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShhKSYmbysrO288dC5taW5Qcm9wZXJ0aWVzJiZkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToibWluUHJvcGVydGllcyIsbWVzc2FnZTp0aGlzLnRyYW5zbGF0ZSgiZXJyb3JfbWluUHJvcGVydGllcyIsW3QubWluUHJvcGVydGllc10pfSl9aWYodC5yZXF1aXJlZCYmQXJyYXkuaXNBcnJheSh0LnJlcXVpcmVkKSlmb3IoYT0wO2E8dC5yZXF1aXJlZC5sZW5ndGg7YSsrKSJ1bmRlZmluZWQiPT10eXBlb2YgZVt0LnJlcXVpcmVkW2FdXSYmZC5wdXNoKHtwYXRoOnIscHJvcGVydHk6InJlcXVpcmVkIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9yZXF1aXJlZCIsW3QucmVxdWlyZWRbYV1dKX0pO3ZhciBmPXt9O2lmKHQucHJvcGVydGllcylmb3IoYSBpbiB0LnByb3BlcnRpZXMpdC5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGEpJiYoZlthXT0hMCxkPWQuY29uY2F0KHRoaXMuX3ZhbGlkYXRlU2NoZW1hKHQucHJvcGVydGllc1thXSxlW2FdLHIrIi4iK2EpKSk7aWYodC5wYXR0ZXJuUHJvcGVydGllcylmb3IoYSBpbiB0LnBhdHRlcm5Qcm9wZXJ0aWVzKWlmKHQucGF0dGVyblByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBnPW5ldyBSZWdFeHAoYSk7Zm9yKGggaW4gZSllLmhhc093blByb3BlcnR5KGgpJiZnLnRlc3QoaCkmJihmW2hdPSEwLGQ9ZC5jb25jYXQodGhpcy5fdmFsaWRhdGVTY2hlbWEodC5wYXR0ZXJuUHJvcGVydGllc1thXSxlW2hdLHIrIi4iK2gpKSl9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzfHwhdGhpcy5qc29uZWRpdG9yLm9wdGlvbnMubm9fYWRkaXRpb25hbF9wcm9wZXJ0aWVzfHx0Lm9uZU9mfHx0LmFueU9mfHwodC5hZGRpdGlvbmFsUHJvcGVydGllcz0hMSksInVuZGVmaW5lZCIhPXR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzKWZvcihhIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShhKSYmIWZbYV0pe2lmKCF0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzKXtkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToiYWRkaXRpb25hbFByb3BlcnRpZXMiLG1lc3NhZ2U6dGhpcy50cmFuc2xhdGUoImVycm9yX2FkZGl0aW9uYWxfcHJvcGVydGllcyIsW2FdKX0pO2JyZWFrfWlmKHQuYWRkaXRpb25hbFByb3BlcnRpZXM9PT0hMClicmVhaztkPWQuY29uY2F0KHRoaXMuX3ZhbGlkYXRlU2NoZW1hKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsZVthXSxyKyIuIithKSl9aWYodC5kZXBlbmRlbmNpZXMpZm9yKGEgaW4gdC5kZXBlbmRlbmNpZXMpaWYodC5kZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkoYSkmJiJ1bmRlZmluZWQiIT10eXBlb2YgZVthXSlpZihBcnJheS5pc0FycmF5KHQuZGVwZW5kZW5jaWVzW2FdKSlmb3IoaD0wO2g8dC5kZXBlbmRlbmNpZXNbYV0ubGVuZ3RoO2grKykidW5kZWZpbmVkIj09dHlwZW9mIGVbdC5kZXBlbmRlbmNpZXNbYV1baF1dJiZkLnB1c2goe3BhdGg6cixwcm9wZXJ0eToiZGVwZW5kZW5jaWVzIixtZXNzYWdlOnRoaXMudHJhbnNsYXRlKCJlcnJvcl9kZXBlbmRlbmN5IixbdC5kZXBlbmRlbmNpZXNbYV1baF1dKX0pO2Vsc2UgZD1kLmNvbmNhdCh0aGlzLl92YWxpZGF0ZVNjaGVtYSh0LmRlcGVuZGVuY2llc1thXSxlLHIpKX1yZXR1cm4gcyhuLmRlZmF1bHRzLmN1c3RvbV92YWxpZGF0b3JzLGZ1bmN0aW9uKGkscyl7ZD1kLmNvbmNhdChzLmNhbGwobCx0LGUscikpfSksZH0sX2NoZWNrVHlwZTpmdW5jdGlvbih0LGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD8ic3RyaW5nIj09PXQ/InN0cmluZyI9PXR5cGVvZiBlOiJudW1iZXIiPT09dD8ibnVtYmVyIj09dHlwZW9mIGU6ImludGVnZXIiPT09dD8ibnVtYmVyIj09dHlwZW9mIGUmJmU9PT1NYXRoLmZsb29yKGUpOiJib29sZWFuIj09PXQ/ImJvb2xlYW4iPT10eXBlb2YgZToiYXJyYXkiPT09dD9BcnJheS5pc0FycmF5KGUpOiJvYmplY3QiPT09dD9udWxsIT09ZSYmIUFycmF5LmlzQXJyYXkoZSkmJiJvYmplY3QiPT10eXBlb2YgZToibnVsbCIhPT10fHxudWxsPT09ZTohdGhpcy5fdmFsaWRhdGVTY2hlbWEodCxlKS5sZW5ndGh9fSksbi5BYnN0cmFjdEVkaXRvcj10LmV4dGVuZCh7b25DaGlsZEVkaXRvckNoYW5nZTpmdW5jdGlvbih0KXt0aGlzLm9uQ2hhbmdlKCEwKX0sbm90aWZ5OmZ1bmN0aW9uKCl7dGhpcy5qc29uZWRpdG9yLm5vdGlmeVdhdGNoZXJzKHRoaXMucGF0aCl9LGNoYW5nZTpmdW5jdGlvbigpe3RoaXMucGFyZW50P3RoaXMucGFyZW50Lm9uQ2hpbGRFZGl0b3JDaGFuZ2UodGhpcyk6dGhpcy5qc29uZWRpdG9yLm9uQ2hhbmdlKCl9LG9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMubm90aWZ5KCksdGhpcy53YXRjaF9saXN0ZW5lciYmdGhpcy53YXRjaF9saXN0ZW5lcigpLHQmJnRoaXMuY2hhbmdlKCl9LHJlZ2lzdGVyOmZ1bmN0aW9uKCl7dGhpcy5qc29uZWRpdG9yLnJlZ2lzdGVyRWRpdG9yKHRoaXMpLHRoaXMub25DaGFuZ2UoKX0sdW5yZWdpc3RlcjpmdW5jdGlvbigpe3RoaXMuanNvbmVkaXRvciYmdGhpcy5qc29uZWRpdG9yLnVucmVnaXN0ZXJFZGl0b3IodGhpcyl9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gMTJ9LGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5qc29uZWRpdG9yPXQuanNvbmVkaXRvcix0aGlzLnRoZW1lPXRoaXMuanNvbmVkaXRvci50aGVtZSx0aGlzLnRlbXBsYXRlX2VuZ2luZT10aGlzLmpzb25lZGl0b3IudGVtcGxhdGUsdGhpcy5pY29ubGliPXRoaXMuanNvbmVkaXRvci5pY29ubGliLHRoaXMub3JpZ2luYWxfc2NoZW1hPXQuc2NoZW1hLHRoaXMuc2NoZW1hPXRoaXMuanNvbmVkaXRvci5leHBhbmRTY2hlbWEodGhpcy5vcmlnaW5hbF9zY2hlbWEpLHRoaXMub3B0aW9ucz1pKHt9LHRoaXMub3B0aW9uc3x8e30sdC5zY2hlbWEub3B0aW9uc3x8e30sdCksdC5wYXRofHx0aGlzLnNjaGVtYS5pZHx8KHRoaXMuc2NoZW1hLmlkPSJyb290IiksdGhpcy5wYXRoPXQucGF0aHx8InJvb3QiLHRoaXMuZm9ybW5hbWU9dC5mb3JtbmFtZXx8dGhpcy5wYXRoLnJlcGxhY2UoL1wuKFteLl0rKS9nLCJbJDFdIiksdGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuZm9ybV9uYW1lX3Jvb3QmJih0aGlzLmZvcm1uYW1lPXRoaXMuZm9ybW5hbWUucmVwbGFjZSgvXnJvb3RcWy8sdGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuZm9ybV9uYW1lX3Jvb3QrIlsiKSksdGhpcy5rZXk9dGhpcy5wYXRoLnNwbGl0KCIuIikucG9wKCksdGhpcy5wYXJlbnQ9dC5wYXJlbnQsdGhpcy5saW5rX3dhdGNoZXJzPVtdLHQuY29udGFpbmVyJiZ0aGlzLnNldENvbnRhaW5lcih0LmNvbnRhaW5lcil9LHNldENvbnRhaW5lcjpmdW5jdGlvbih0KXt0aGlzLmNvbnRhaW5lcj10LHRoaXMuc2NoZW1hLmlkJiZ0aGlzLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImRhdGEtc2NoZW1haWQiLHRoaXMuc2NoZW1hLmlkKSx0aGlzLnNjaGVtYS50eXBlJiYic3RyaW5nIj09dHlwZW9mIHRoaXMuc2NoZW1hLnR5cGUmJnRoaXMuY29udGFpbmVyLnNldEF0dHJpYnV0ZSgiZGF0YS1zY2hlbWF0eXBlIix0aGlzLnNjaGVtYS50eXBlKSx0aGlzLmNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImRhdGEtc2NoZW1hcGF0aCIsdGhpcy5wYXRoKX0scHJlQnVpbGQ6ZnVuY3Rpb24oKXt9LGJ1aWxkOmZ1bmN0aW9uKCl7fSxwb3N0QnVpbGQ6ZnVuY3Rpb24oKXt0aGlzLnNldHVwV2F0Y2hMaXN0ZW5lcnMoKSx0aGlzLmFkZExpbmtzKCksdGhpcy5zZXRWYWx1ZSh0aGlzLmdldERlZmF1bHQoKSwhMCksdGhpcy51cGRhdGVIZWFkZXJUZXh0KCksdGhpcy5yZWdpc3RlcigpLHRoaXMub25XYXRjaGVkRmllbGRDaGFuZ2UoKX0sc2V0dXBXYXRjaExpc3RlbmVyczpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy53YXRjaGVkPXt9LHRoaXMuc2NoZW1hLnZhcnMmJih0aGlzLnNjaGVtYS53YXRjaD10aGlzLnNjaGVtYS52YXJzKSx0aGlzLndhdGNoZWRfdmFsdWVzPXt9LHRoaXMud2F0Y2hfbGlzdGVuZXI9ZnVuY3Rpb24oKXt0LnJlZnJlc2hXYXRjaGVkRmllbGRWYWx1ZXMoKSYmdC5vbldhdGNoZWRGaWVsZENoYW5nZSgpfSx0aGlzLnJlZ2lzdGVyKCksdGhpcy5zY2hlbWEuaGFzT3duUHJvcGVydHkoIndhdGNoIikpe3ZhciBlLGkscyxyLG47Zm9yKHZhciBvIGluIHRoaXMuc2NoZW1hLndhdGNoKWlmKHRoaXMuc2NoZW1hLndhdGNoLmhhc093blByb3BlcnR5KG8pKXtpZihlPXRoaXMuc2NoZW1hLndhdGNoW29dLEFycmF5LmlzQXJyYXkoZSk/aT1bZVswXV0uY29uY2F0KGVbMV0uc3BsaXQoIi4iKSk6KGk9ZS5zcGxpdCgiLiIpLHQudGhlbWUuY2xvc2VzdCh0LmNvbnRhaW5lciwnW2RhdGEtc2NoZW1haWQ9IicraVswXSsnIl0nKXx8aS51bnNoaWZ0KCIjIikpLHM9aS5zaGlmdCgpLCIjIj09PXMmJihzPXQuanNvbmVkaXRvci5zY2hlbWEuaWR8fCJyb290Iikscj10LnRoZW1lLmNsb3Nlc3QodC5jb250YWluZXIsJ1tkYXRhLXNjaGVtYWlkPSInK3MrJyJdJyksIXIpdGhyb3ciQ291bGQgbm90IGZpbmQgYW5jZXN0b3Igbm9kZSB3aXRoIGlkICIrcztuPXIuZ2V0QXR0cmlidXRlKCJkYXRhLXNjaGVtYXBhdGgiKSsiLiIraS5qb2luKCIuIiksdC5qc29uZWRpdG9yLndhdGNoKG4sdC53YXRjaF9saXN0ZW5lciksdC53YXRjaGVkW29dPW59fXRoaXMuc2NoZW1hLmhlYWRlclRlbXBsYXRlJiYodGhpcy5oZWFkZXJfdGVtcGxhdGU9dGhpcy5qc29uZWRpdG9yLmNvbXBpbGVUZW1wbGF0ZSh0aGlzLnNjaGVtYS5oZWFkZXJUZW1wbGF0ZSx0aGlzLnRlbXBsYXRlX2VuZ2luZSkpfSxhZGRMaW5rczpmdW5jdGlvbigpe2lmKCF0aGlzLm5vX2xpbmtfaG9sZGVyJiYodGhpcy5saW5rX2hvbGRlcj10aGlzLnRoZW1lLmdldExpbmtzSG9sZGVyKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5saW5rX2hvbGRlciksdGhpcy5zY2hlbWEubGlua3MpKWZvcih2YXIgdD0wO3Q8dGhpcy5zY2hlbWEubGlua3MubGVuZ3RoO3QrKyl0aGlzLmFkZExpbmsodGhpcy5nZXRMaW5rKHRoaXMuc2NoZW1hLmxpbmtzW3RdKSl9LGdldEJ1dHRvbjpmdW5jdGlvbih0LGUsaSl7dmFyIHM9Impzb24tZWRpdG9yLWJ0bi0iK2U7ZT10aGlzLmljb25saWI/dGhpcy5pY29ubGliLmdldEljb24oZSk6bnVsbCwhZSYmaSYmKHQ9aSxpPW51bGwpO3ZhciByPXRoaXMudGhlbWUuZ2V0QnV0dG9uKHQsZSxpKTtyZXR1cm4gci5jbGFzc05hbWUrPSIgIitzKyIgIixyfSxzZXRCdXR0b25UZXh0OmZ1bmN0aW9uKHQsZSxpLHMpe3JldHVybiBpPXRoaXMuaWNvbmxpYj90aGlzLmljb25saWIuZ2V0SWNvbihpKTpudWxsLCFpJiZzJiYoZT1zLHM9bnVsbCksdGhpcy50aGVtZS5zZXRCdXR0b25UZXh0KHQsZSxpLHMpfSxhZGRMaW5rOmZ1bmN0aW9uKHQpe3RoaXMubGlua19ob2xkZXImJnRoaXMubGlua19ob2xkZXIuYXBwZW5kQ2hpbGQodCl9LGdldExpbms6ZnVuY3Rpb24odCl7dmFyIGUsaSxzPXQubWVkaWFUeXBlfHwiYXBwbGljYXRpb24vamF2YXNjcmlwdCIscj1zLnNwbGl0KCIvIilbMF0sbj10aGlzLmpzb25lZGl0b3IuY29tcGlsZVRlbXBsYXRlKHQuaHJlZix0aGlzLnRlbXBsYXRlX2VuZ2luZSk7aWYoImltYWdlIj09PXIpe2U9dGhpcy50aGVtZS5nZXRCbG9ja0xpbmtIb2xkZXIoKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxpLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwiX2JsYW5rIik7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7dGhpcy50aGVtZS5jcmVhdGVJbWFnZUxpbmsoZSxpLG8pLHRoaXMubGlua193YXRjaGVycy5wdXNoKGZ1bmN0aW9uKGUpe3ZhciBzPW4oZSk7aS5zZXRBdHRyaWJ1dGUoImhyZWYiLHMpLGkuc2V0QXR0cmlidXRlKCJ0aXRsZSIsdC5yZWx8fHMpLG8uc2V0QXR0cmlidXRlKCJzcmMiLHMpfSl9ZWxzZSBpZihbImF1ZGlvIiwidmlkZW8iXS5pbmRleE9mKHIpPj0wKXtlPXRoaXMudGhlbWUuZ2V0QmxvY2tMaW5rSG9sZGVyKCksaT10aGlzLnRoZW1lLmdldEJsb2NrTGluaygpLGkuc2V0QXR0cmlidXRlKCJ0YXJnZXQiLCJfYmxhbmsiKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHIpO2Euc2V0QXR0cmlidXRlKCJjb250cm9scyIsImNvbnRyb2xzIiksdGhpcy50aGVtZS5jcmVhdGVNZWRpYUxpbmsoZSxpLGEpLHRoaXMubGlua193YXRjaGVycy5wdXNoKGZ1bmN0aW9uKGUpe3ZhciBzPW4oZSk7aS5zZXRBdHRyaWJ1dGUoImhyZWYiLHMpLGkudGV4dENvbnRlbnQ9dC5yZWx8fHMsYS5zZXRBdHRyaWJ1dGUoInNyYyIscyl9KX1lbHNlIGU9dGhpcy50aGVtZS5nZXRCbG9ja0xpbmsoKSxlLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwiX2JsYW5rIiksZS50ZXh0Q29udGVudD10LnJlbCx0aGlzLmxpbmtfd2F0Y2hlcnMucHVzaChmdW5jdGlvbihpKXt2YXIgcz1uKGkpO2Uuc2V0QXR0cmlidXRlKCJocmVmIixzKSxlLnRleHRDb250ZW50PXQucmVsfHxzfSk7cmV0dXJuIGV9LHJlZnJlc2hXYXRjaGVkRmllbGRWYWx1ZXM6ZnVuY3Rpb24oKXtpZih0aGlzLndhdGNoZWRfdmFsdWVzKXt2YXIgdD17fSxlPSExLGk9dGhpcztpZih0aGlzLndhdGNoZWQpe3ZhciBzLHI7Zm9yKHZhciBuIGluIHRoaXMud2F0Y2hlZCl0aGlzLndhdGNoZWQuaGFzT3duUHJvcGVydHkobikmJihyPWkuanNvbmVkaXRvci5nZXRFZGl0b3IodGhpcy53YXRjaGVkW25dKSxzPXI/ci5nZXRWYWx1ZSgpOm51bGwsaS53YXRjaGVkX3ZhbHVlc1tuXSE9PXMmJihlPSEwKSx0W25dPXMpfXJldHVybiB0LnNlbGY9dGhpcy5nZXRWYWx1ZSgpLHRoaXMud2F0Y2hlZF92YWx1ZXMuc2VsZiE9PXQuc2VsZiYmKGU9ITApLHRoaXMud2F0Y2hlZF92YWx1ZXM9dCxlfX0sZ2V0V2F0Y2hlZEZpZWxkVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2F0Y2hlZF92YWx1ZXN9LHVwZGF0ZUhlYWRlclRleHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmhlYWRlcilpZih0aGlzLmhlYWRlci5jaGlsZHJlbi5sZW5ndGgpe2Zvcih2YXIgdD0wO3Q8dGhpcy5oZWFkZXIuY2hpbGROb2Rlcy5sZW5ndGg7dCsrKWlmKDM9PT10aGlzLmhlYWRlci5jaGlsZE5vZGVzW3RdLm5vZGVUeXBlKXt0aGlzLmhlYWRlci5jaGlsZE5vZGVzW3RdLm5vZGVWYWx1ZT10aGlzLmdldEhlYWRlclRleHQoKTticmVha319ZWxzZSB0aGlzLmhlYWRlci50ZXh0Q29udGVudD10aGlzLmdldEhlYWRlclRleHQoKX0sZ2V0SGVhZGVyVGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oZWFkZXJfdGV4dD90aGlzLmhlYWRlcl90ZXh0OnQ/dGhpcy5zY2hlbWEudGl0bGU6dGhpcy5nZXRUaXRsZSgpfSxvbldhdGNoZWRGaWVsZENoYW5nZTpmdW5jdGlvbigpe3ZhciB0O2lmKHRoaXMuaGVhZGVyX3RlbXBsYXRlKXt0PWkodGhpcy5nZXRXYXRjaGVkRmllbGRWYWx1ZXMoKSx7a2V5OnRoaXMua2V5LGk6dGhpcy5rZXksaTA6MSp0aGlzLmtleSxpMToxKnRoaXMua2V5KzEsdGl0bGU6dGhpcy5nZXRUaXRsZSgpfSk7dmFyIGU9dGhpcy5oZWFkZXJfdGVtcGxhdGUodCk7ZSE9PXRoaXMuaGVhZGVyX3RleHQmJih0aGlzLmhlYWRlcl90ZXh0PWUsdGhpcy51cGRhdGVIZWFkZXJUZXh0KCksdGhpcy5ub3RpZnkoKSl9aWYodGhpcy5saW5rX3dhdGNoZXJzLmxlbmd0aCl7dD10aGlzLmdldFdhdGNoZWRGaWVsZFZhbHVlcygpO2Zvcih2YXIgcz0wO3M8dGhpcy5saW5rX3dhdGNoZXJzLmxlbmd0aDtzKyspdGhpcy5saW5rX3dhdGNoZXJzW3NdKHQpfX0sc2V0VmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZT10fSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxyZWZyZXNoVmFsdWU6ZnVuY3Rpb24oKXt9LGdldENoaWxkRWRpdG9yczpmdW5jdGlvbigpe3JldHVybiExfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLnVucmVnaXN0ZXIodGhpcykscyh0aGlzLndhdGNoZWQsZnVuY3Rpb24oZSxpKXt0Lmpzb25lZGl0b3IudW53YXRjaChpLHQud2F0Y2hfbGlzdGVuZXIpfSksdGhpcy53YXRjaGVkPW51bGwsdGhpcy53YXRjaGVkX3ZhbHVlcz1udWxsLHRoaXMud2F0Y2hfbGlzdGVuZXI9bnVsbCx0aGlzLmhlYWRlcl90ZXh0PW51bGwsdGhpcy5oZWFkZXJfdGVtcGxhdGU9bnVsbCx0aGlzLnZhbHVlPW51bGwsdGhpcy5jb250YWluZXImJnRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUmJnRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpLHRoaXMuY29udGFpbmVyPW51bGwsdGhpcy5qc29uZWRpdG9yPW51bGwsdGhpcy5zY2hlbWE9bnVsbCx0aGlzLnBhdGg9bnVsbCx0aGlzLmtleT1udWxsLHRoaXMucGFyZW50PW51bGx9LGdldERlZmF1bHQ6ZnVuY3Rpb24oKXtpZih0aGlzLnNjaGVtYVsiZGVmYXVsdCJdKXJldHVybiB0aGlzLnNjaGVtYVsiZGVmYXVsdCJdO2lmKHRoaXMuc2NoZW1hWyJlbnVtIl0pcmV0dXJuIHRoaXMuc2NoZW1hWyJlbnVtIl1bMF07dmFyIHQ9dGhpcy5zY2hlbWEudHlwZXx8dGhpcy5zY2hlbWEub25lT2Y7aWYodCYmQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFswXSksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiYodD10LnR5cGUpLHQmJkFycmF5LmlzQXJyYXkodCkmJih0PXRbMF0pLCJzdHJpbmciPT10eXBlb2YgdCl7aWYoIm51bWJlciI9PT10KXJldHVybiAwO2lmKCJib29sZWFuIj09PXQpcmV0dXJuITE7aWYoImludGVnZXIiPT09dClyZXR1cm4gMDtpZigic3RyaW5nIj09PXQpcmV0dXJuIiI7aWYoIm9iamVjdCI9PT10KXJldHVybnt9O2lmKCJhcnJheSI9PT10KXJldHVybltdfXJldHVybiBudWxsfSxnZXRUaXRsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjaGVtYS50aXRsZXx8dGhpcy5rZXl9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITF9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkPSEwfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5kaXNhYmxlZH0saXNSZXF1aXJlZDpmdW5jdGlvbigpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHRoaXMuc2NoZW1hLnJlcXVpcmVkP3RoaXMuc2NoZW1hLnJlcXVpcmVkOnRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5zY2hlbWEmJkFycmF5LmlzQXJyYXkodGhpcy5wYXJlbnQuc2NoZW1hLnJlcXVpcmVkKT90aGlzLnBhcmVudC5zY2hlbWEucmVxdWlyZWQuaW5kZXhPZih0aGlzLmtleSk+LTE6ISF0aGlzLmpzb25lZGl0b3Iub3B0aW9ucy5yZXF1aXJlZF9ieV9kZWZhdWx0fSxnZXREaXNwbGF5VGV4dDpmdW5jdGlvbih0KXt2YXIgZT1bXSxpPXt9O3ModCxmdW5jdGlvbih0LGUpe2UudGl0bGUmJihpW2UudGl0bGVdPWlbZS50aXRsZV18fDAsaVtlLnRpdGxlXSsrKSxlLmRlc2NyaXB0aW9uJiYoaVtlLmRlc2NyaXB0aW9uXT1pW2UuZGVzY3JpcHRpb25dfHwwLGlbZS5kZXNjcmlwdGlvbl0rKyksZS5mb3JtYXQmJihpW2UuZm9ybWF0XT1pW2UuZm9ybWF0XXx8MCxpW2UuZm9ybWF0XSsrKSxlLnR5cGUmJihpW2UudHlwZV09aVtlLnR5cGVdfHwwLGlbZS50eXBlXSsrKX0pLHModCxmdW5jdGlvbih0LHMpe3ZhciByO3I9InN0cmluZyI9PXR5cGVvZiBzP3M6cy50aXRsZSYmaVtzLnRpdGxlXTw9MT9zLnRpdGxlOnMuZm9ybWF0JiZpW3MuZm9ybWF0XTw9MT9zLmZvcm1hdDpzLnR5cGUmJmlbcy50eXBlXTw9MT9zLnR5cGU6cy5kZXNjcmlwdGlvbiYmaVtzLmRlc2NyaXB0aW9uXTw9MT9zLmRlc2NyaXB0b246cy50aXRsZT9zLnRpdGxlOnMuZm9ybWF0P3MuZm9ybWF0OnMudHlwZT9zLnR5cGU6cy5kZXNjcmlwdGlvbj9zLmRlc2NyaXB0aW9uOkpTT04uc3RyaW5naWZ5KHMpLmxlbmd0aDw1MD9KU09OLnN0cmluZ2lmeShzKToidHlwZSIsZS5wdXNoKHIpfSk7dmFyIHI9e307cmV0dXJuIHMoZSxmdW5jdGlvbih0LHMpe3Jbc109cltzXXx8MCxyW3NdKyssaVtzXT4xJiYoZVt0XT1zKyIgIityW3NdKX0pLGV9LGdldE9wdGlvbjpmdW5jdGlvbih0KXt0cnl7dGhyb3ciZ2V0T3B0aW9uIGlzIGRlcHJlY2F0ZWQifWNhdGNoKGUpe3dpbmRvdy5jb25zb2xlLmVycm9yKGUpfXJldHVybiB0aGlzLm9wdGlvbnNbdF19LHNob3dWYWxpZGF0aW9uRXJyb3JzOmZ1bmN0aW9uKHQpe319KSxuLmRlZmF1bHRzLmVkaXRvcnNbIm51bGwiXT1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sc2V0VmFsdWU6ZnVuY3Rpb24oKXt0aGlzLm9uQ2hhbmdlKCl9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gMn19KSxuLmRlZmF1bHRzLmVkaXRvcnMuc3RyaW5nPW4uQWJzdHJhY3RFZGl0b3IuZXh0ZW5kKHtyZWdpc3RlcjpmdW5jdGlvbigpe3RoaXMuX3N1cGVyKCksdGhpcy5pbnB1dCYmdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoIm5hbWUiLHRoaXMuZm9ybW5hbWUpfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnJlbW92ZUF0dHJpYnV0ZSgibmFtZSIpfSxzZXRWYWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYoKCF0aGlzLnRlbXBsYXRlfHxpKSYmKG51bGw9PT10fHwidW5kZWZpbmVkIj09dHlwZW9mIHQ/dD0iIjoib2JqZWN0Ij09dHlwZW9mIHQ/dD1KU09OLnN0cmluZ2lmeSh0KToic3RyaW5nIiE9dHlwZW9mIHQmJih0PSIiK3QpLHQhPT10aGlzLnNlcmlhbGl6ZWQpKXt2YXIgcz10aGlzLnNhbml0aXplKHQpO2lmKHRoaXMuaW5wdXQudmFsdWUhPT1zKXt0aGlzLmlucHV0LnZhbHVlPXMsdGhpcy5zY2VkaXRvcl9pbnN0YW5jZT90aGlzLnNjZWRpdG9yX2luc3RhbmNlLnZhbChzKTp0aGlzLmVwaWNlZGl0b3I/dGhpcy5lcGljZWRpdG9yLmltcG9ydEZpbGUobnVsbCxzKTp0aGlzLmFjZV9lZGl0b3ImJnRoaXMuYWNlX2VkaXRvci5zZXRWYWx1ZShzKTt2YXIgcj1pfHx0aGlzLmdldFZhbHVlKCkhPT10O3RoaXMucmVmcmVzaFZhbHVlKCksZT90aGlzLmlzX2RpcnR5PSExOiJjaGFuZ2UiPT09dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuc2hvd19lcnJvcnMmJih0aGlzLmlzX2RpcnR5PSEwKSx0aGlzLmFkanVzdF9oZWlnaHQmJnRoaXMuYWRqdXN0X2hlaWdodCh0aGlzLmlucHV0KSx0aGlzLm9uQ2hhbmdlKHIpfX19LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXt2YXIgdCxlPU1hdGguY2VpbChNYXRoLm1heCh0aGlzLmdldFRpdGxlKCkubGVuZ3RoLHRoaXMuc2NoZW1hLm1heExlbmd0aHx8MCx0aGlzLnNjaGVtYS5taW5MZW5ndGh8fDApLzUpO3JldHVybiB0PSJ0ZXh0YXJlYSI9PT10aGlzLmlucHV0X3R5cGU/NjpbInRleHQiLCJlbWFpbCJdLmluZGV4T2YodGhpcy5pbnB1dF90eXBlKT49MD80OjIsTWF0aC5taW4oMTIsTWF0aC5tYXgoZSx0KSl9LGJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLm9wdGlvbnMuY29tcGFjdHx8KHRoaXMuaGVhZGVyPXRoaXMubGFiZWw9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRMYWJlbCh0aGlzLmdldFRpdGxlKCksdGhpcy5pc1JlcXVpcmVkKCkpKSx0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbiYmKHRoaXMuZGVzY3JpcHRpb249dGhpcy50aGVtZS5nZXRGb3JtSW5wdXREZXNjcmlwdGlvbih0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbikpLHRoaXMuZm9ybWF0PXRoaXMuc2NoZW1hLmZvcm1hdCwhdGhpcy5mb3JtYXQmJnRoaXMuc2NoZW1hLm1lZGlhJiZ0aGlzLnNjaGVtYS5tZWRpYS50eXBlJiYodGhpcy5mb3JtYXQ9dGhpcy5zY2hlbWEubWVkaWEudHlwZS5yZXBsYWNlKC8oXihhcHBsaWNhdGlvbnx0ZXh0KVwvKHgtKT8oc2NyaXB0XC4pPyl8KC1zb3VyY2UkKS9nLCIiKSksIXRoaXMuZm9ybWF0JiZ0aGlzLm9wdGlvbnMuZGVmYXVsdF9mb3JtYXQmJih0aGlzLmZvcm1hdD10aGlzLm9wdGlvbnMuZGVmYXVsdF9mb3JtYXQpLHRoaXMub3B0aW9ucy5mb3JtYXQmJih0aGlzLmZvcm1hdD10aGlzLm9wdGlvbnMuZm9ybWF0KSx0aGlzLmZvcm1hdClpZigidGV4dGFyZWEiPT09dGhpcy5mb3JtYXQpdGhpcy5pbnB1dF90eXBlPSJ0ZXh0YXJlYSIsdGhpcy5pbnB1dD10aGlzLnRoZW1lLmdldFRleHRhcmVhSW5wdXQoKTtlbHNlIGlmKCJyYW5nZSI9PT10aGlzLmZvcm1hdCl7dGhpcy5pbnB1dF90eXBlPSJyYW5nZSI7dmFyIGU9dGhpcy5zY2hlbWEubWluaW11bXx8MCxpPXRoaXMuc2NoZW1hLm1heGltdW18fE1hdGgubWF4KDEwMCxlKzEpLHM9MTt0aGlzLnNjaGVtYS5tdWx0aXBsZU9mJiYoZSV0aGlzLnNjaGVtYS5tdWx0aXBsZU9mJiYoZT1NYXRoLmNlaWwoZS90aGlzLnNjaGVtYS5tdWx0aXBsZU9mKSp0aGlzLnNjaGVtYS5tdWx0aXBsZU9mKSxpJXRoaXMuc2NoZW1hLm11bHRpcGxlT2YmJihpPU1hdGguZmxvb3IoaS90aGlzLnNjaGVtYS5tdWx0aXBsZU9mKSp0aGlzLnNjaGVtYS5tdWx0aXBsZU9mKSxzPXRoaXMuc2NoZW1hLm11bHRpcGxlT2YpLHRoaXMuaW5wdXQ9dGhpcy50aGVtZS5nZXRSYW5nZUlucHV0KGUsaSxzKX1lbHNlWyJhY3Rpb25zY3JpcHQiLCJiYXRjaGZpbGUiLCJiYmNvZGUiLCJjIiwiYysrIiwiY3BwIiwiY29mZmVlIiwiY3NoYXJwIiwiY3NzIiwiZGFydCIsImRqYW5nbyIsImVqcyIsImVybGFuZyIsImdvbGFuZyIsImhhbmRsZWJhcnMiLCJoYXNrZWxsIiwiaGF4ZSIsImh0bWwiLCJpbmkiLCJqYWRlIiwiamF2YSIsImphdmFzY3JpcHQiLCJqc29uIiwibGVzcyIsImxpc3AiLCJsdWEiLCJtYWtlZmlsZSIsIm1hcmtkb3duIiwibWF0bGFiIiwibXlzcWwiLCJvYmplY3RpdmVjIiwicGFzY2FsIiwicGVybCIsInBnc3FsIiwicGhwIiwicHl0aG9uIiwiciIsInJ1YnkiLCJzYXNzIiwic2NhbGEiLCJzY3NzIiwic21hcnR5Iiwic3FsIiwic3R5bHVzIiwic3ZnIiwidHdpZyIsInZic2NyaXB0IiwieG1sIiwieWFtbCJdLmluZGV4T2YodGhpcy5mb3JtYXQpPj0wPyh0aGlzLmlucHV0X3R5cGU9dGhpcy5mb3JtYXQsdGhpcy5zb3VyY2VfY29kZT0hMCx0aGlzLmlucHV0PXRoaXMudGhlbWUuZ2V0VGV4dGFyZWFJbnB1dCgpKToodGhpcy5pbnB1dF90eXBlPXRoaXMuZm9ybWF0LHRoaXMuaW5wdXQ9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRGaWVsZCh0aGlzLmlucHV0X3R5cGUpKTtlbHNlIHRoaXMuaW5wdXRfdHlwZT0idGV4dCIsdGhpcy5pbnB1dD10aGlzLnRoZW1lLmdldEZvcm1JbnB1dEZpZWxkKHRoaXMuaW5wdXRfdHlwZSk7InVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLnNjaGVtYS5tYXhMZW5ndGgmJnRoaXMuaW5wdXQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLHRoaXMuc2NoZW1hLm1heExlbmd0aCksInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLnNjaGVtYS5wYXR0ZXJuP3RoaXMuaW5wdXQuc2V0QXR0cmlidXRlKCJwYXR0ZXJuIix0aGlzLnNjaGVtYS5wYXR0ZXJuKToidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuc2NoZW1hLm1pbkxlbmd0aCYmdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoInBhdHRlcm4iLCIueyIrdGhpcy5zY2hlbWEubWluTGVuZ3RoKyIsfSIpLHRoaXMub3B0aW9ucy5jb21wYWN0P3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZSs9IiBjb21wYWN0Ijp0aGlzLm9wdGlvbnMuaW5wdXRfd2lkdGgmJih0aGlzLmlucHV0LnN0eWxlLndpZHRoPXRoaXMub3B0aW9ucy5pbnB1dF93aWR0aCksKHRoaXMuc2NoZW1hLnJlYWRPbmx5fHx0aGlzLnNjaGVtYS5yZWFkb25seXx8dGhpcy5zY2hlbWEudGVtcGxhdGUpJiYodGhpcy5hbHdheXNfZGlzYWJsZWQ9ITAsdGhpcy5pbnB1dC5kaXNhYmxlZD0hMCksdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuc2NoZW1hLnRlbXBsYXRlKXJldHVybiB2b2lkKHRoaXMudmFsdWU9dC52YWx1ZSk7dmFyIGk9dGhpcy52YWx1ZSxzPXQuc2FuaXRpemUoaSk7aSE9PXMmJih0aGlzLnZhbHVlPXMpLHQuaXNfZGlydHk9ITAsdC5yZWZyZXNoVmFsdWUoKSx0Lm9uQ2hhbmdlKCEwKX0pLHRoaXMub3B0aW9ucy5pbnB1dF9oZWlnaHQmJih0aGlzLmlucHV0LnN0eWxlLmhlaWdodD10aGlzLm9wdGlvbnMuaW5wdXRfaGVpZ2h0KSx0aGlzLm9wdGlvbnMuZXhwYW5kX2hlaWdodCYmKHRoaXMuYWRqdXN0X2hlaWdodD1mdW5jdGlvbih0KXtpZih0KXt2YXIgZSxpPXQub2Zmc2V0SGVpZ2h0O2lmKHQub2Zmc2V0SGVpZ2h0PHQuc2Nyb2xsSGVpZ2h0KWZvcihlPTA7dC5vZmZzZXRIZWlnaHQ8dC5zY3JvbGxIZWlnaHQrMyYmIShlPjEwMCk7KWUrKyxpKyssdC5zdHlsZS5oZWlnaHQ9aSsicHgiO2Vsc2V7Zm9yKGU9MDt0Lm9mZnNldEhlaWdodD49dC5zY3JvbGxIZWlnaHQrMyYmIShlPjEwMCk7KWUrKyxpLS0sdC5zdHlsZS5oZWlnaHQ9aSsicHgiO3Quc3R5bGUuaGVpZ2h0PWkrMSsicHgifX19LHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGZ1bmN0aW9uKGUpe3QuYWRqdXN0X2hlaWdodCh0aGlzKX0pLHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixmdW5jdGlvbihlKXt0LmFkanVzdF9oZWlnaHQodGhpcyl9KSx0aGlzLmFkanVzdF9oZWlnaHQoKSksdGhpcy5mb3JtYXQmJnRoaXMuaW5wdXQuc2V0QXR0cmlidXRlKCJkYXRhLXNjaGVtYWZvcm1hdCIsdGhpcy5mb3JtYXQpLHRoaXMuY29udHJvbD10aGlzLnRoZW1lLmdldEZvcm1Db250cm9sKHRoaXMubGFiZWwsdGhpcy5pbnB1dCx0aGlzLmRlc2NyaXB0aW9uKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2wpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0LmlucHV0LnBhcmVudE5vZGUmJnQuYWZ0ZXJJbnB1dFJlYWR5KCksdC5hZGp1c3RfaGVpZ2h0JiZ0LmFkanVzdF9oZWlnaHQodC5pbnB1dCl9KSx0aGlzLnNjaGVtYS50ZW1wbGF0ZT8odGhpcy50ZW1wbGF0ZT10aGlzLmpzb25lZGl0b3IuY29tcGlsZVRlbXBsYXRlKHRoaXMuc2NoZW1hLnRlbXBsYXRlLHRoaXMudGVtcGxhdGVfZW5naW5lKSx0aGlzLnJlZnJlc2hWYWx1ZSgpKTp0aGlzLnJlZnJlc2hWYWx1ZSgpfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmFsd2F5c19kaXNhYmxlZHx8KHRoaXMuaW5wdXQuZGlzYWJsZWQ9ITEpLHRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLmlucHV0LmRpc2FibGVkPSEwLHRoaXMuX3N1cGVyKCl9LGFmdGVySW5wdXRSZWFkeTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcztpZih0aGlzLnNvdXJjZV9jb2RlKWlmKHRoaXMub3B0aW9ucy53eXNpd3lnJiZbImh0bWwiLCJiYmNvZGUiXS5pbmRleE9mKHRoaXMuaW5wdXRfdHlwZSk+PTAmJndpbmRvdy5qUXVlcnkmJndpbmRvdy5qUXVlcnkuZm4mJndpbmRvdy5qUXVlcnkuZm4uc2NlZGl0b3IpdD1pKHt9LHtwbHVnaW5zOiJodG1sIj09PWUuaW5wdXRfdHlwZT8ieGh0bWwiOiJiYmNvZGUiLGVtb3RpY29uc0VuYWJsZWQ6ITEsd2lkdGg6IjEwMCUiLGhlaWdodDozMDB9LG4ucGx1Z2lucy5zY2VkaXRvcixlLm9wdGlvbnMuc2NlZGl0b3Jfb3B0aW9uc3x8e30pLHdpbmRvdy5qUXVlcnkoZS5pbnB1dCkuc2NlZGl0b3IodCksZS5zY2VkaXRvcl9pbnN0YW5jZT13aW5kb3cualF1ZXJ5KGUuaW5wdXQpLnNjZWRpdG9yKCJpbnN0YW5jZSIpLGUuc2NlZGl0b3JfaW5zdGFuY2UuYmx1cihmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5qUXVlcnkoIjxkaXY+IitlLnNjZWRpdG9yX2luc3RhbmNlLnZhbCgpKyI8L2Rpdj4iKTt3aW5kb3cualF1ZXJ5KCIjc2NlZGl0b3Itc3RhcnQtbWFya2VyLCNzY2VkaXRvci1lbmQtbWFya2VyLC5zY2VkaXRvci1ubGYiLHQpLnJlbW92ZSgpLGUuaW5wdXQudmFsdWU9dC5odG1sKCksZS52YWx1ZT1lLmlucHV0LnZhbHVlLGUuaXNfZGlydHk9ITAsZS5vbkNoYW5nZSghMCl9KTtlbHNlIGlmKCJtYXJrZG93biI9PT10aGlzLmlucHV0X3R5cGUmJndpbmRvdy5FcGljRWRpdG9yKXRoaXMuZXBpY2VkaXRvcl9jb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmVwaWNlZGl0b3JfY29udGFpbmVyLHRoaXMuaW5wdXQpLHRoaXMuaW5wdXQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdD1pKHt9LG4ucGx1Z2lucy5lcGljZWRpdG9yLHtjb250YWluZXI6dGhpcy5lcGljZWRpdG9yX2NvbnRhaW5lcixjbGllbnRTaWRlU3RvcmFnZTohMX0pLHRoaXMuZXBpY2VkaXRvcj1uZXcgd2luZG93LkVwaWNFZGl0b3IodCkubG9hZCgpLHRoaXMuZXBpY2VkaXRvci5pbXBvcnRGaWxlKG51bGwsdGhpcy5nZXRWYWx1ZSgpKSx0aGlzLmVwaWNlZGl0b3Iub24oInVwZGF0ZSIsZnVuY3Rpb24oKXt2YXIgdD1lLmVwaWNlZGl0b3IuZXhwb3J0RmlsZSgpO2UuaW5wdXQudmFsdWU9dCxlLnZhbHVlPXQsZS5pc19kaXJ0eT0hMCxlLm9uQ2hhbmdlKCEwKX0pO2Vsc2UgaWYod2luZG93LmFjZSl7Cit2YXIgcz10aGlzLmlucHV0X3R5cGU7KCJjcHAiPT09c3x8ImMrKyI9PT1zfHwiYyI9PT1zKSYmKHM9ImNfY3BwIiksdGhpcy5hY2VfY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYWNlX2NvbnRhaW5lci5zdHlsZS53aWR0aD0iMTAwJSIsdGhpcy5hY2VfY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5hY2VfY29udGFpbmVyLnN0eWxlLmhlaWdodD0iNDAwcHgiLHRoaXMuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5hY2VfY29udGFpbmVyLHRoaXMuaW5wdXQpLHRoaXMuaW5wdXQuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5hY2VfZWRpdG9yPXdpbmRvdy5hY2UuZWRpdCh0aGlzLmFjZV9jb250YWluZXIpLHRoaXMuYWNlX2VkaXRvci5zZXRWYWx1ZSh0aGlzLmdldFZhbHVlKCkpLG4ucGx1Z2lucy5hY2UudGhlbWUmJnRoaXMuYWNlX2VkaXRvci5zZXRUaGVtZSgiYWNlL3RoZW1lLyIrbi5wbHVnaW5zLmFjZS50aGVtZSkscz13aW5kb3cuYWNlLnJlcXVpcmUoImFjZS9tb2RlLyIrcykscyYmdGhpcy5hY2VfZWRpdG9yLmdldFNlc3Npb24oKS5zZXRNb2RlKG5ldyBzLk1vZGUpLHRoaXMuYWNlX2VkaXRvci5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciB0PWUuYWNlX2VkaXRvci5nZXRWYWx1ZSgpO2UuaW5wdXQudmFsdWU9dCxlLnJlZnJlc2hWYWx1ZSgpLGUuaXNfZGlydHk9ITAsZS5vbkNoYW5nZSghMCl9KX1lLnRoZW1lLmFmdGVySW5wdXRSZWFkeShlLmlucHV0KX0scmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLmlucHV0LnZhbHVlLCJzdHJpbmciIT10eXBlb2YgdGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9IiIpLHRoaXMuc2VyaWFsaXplZD10aGlzLnZhbHVlfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5zY2VkaXRvcl9pbnN0YW5jZT90aGlzLnNjZWRpdG9yX2luc3RhbmNlLmRlc3Ryb3koKTp0aGlzLmVwaWNlZGl0b3I/dGhpcy5lcGljZWRpdG9yLnVubG9hZCgpOnRoaXMuYWNlX2VkaXRvciYmdGhpcy5hY2VfZWRpdG9yLmRlc3Ryb3koKSx0aGlzLnRlbXBsYXRlPW51bGwsdGhpcy5pbnB1dCYmdGhpcy5pbnB1dC5wYXJlbnROb2RlJiZ0aGlzLmlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5pbnB1dCksdGhpcy5sYWJlbCYmdGhpcy5sYWJlbC5wYXJlbnROb2RlJiZ0aGlzLmxhYmVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5sYWJlbCksdGhpcy5kZXNjcmlwdGlvbiYmdGhpcy5kZXNjcmlwdGlvbi5wYXJlbnROb2RlJiZ0aGlzLmRlc2NyaXB0aW9uLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kZXNjcmlwdGlvbiksdGhpcy5fc3VwZXIoKX0sc2FuaXRpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG9uV2F0Y2hlZEZpZWxkQ2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy50ZW1wbGF0ZSYmKHQ9dGhpcy5nZXRXYXRjaGVkRmllbGRWYWx1ZXMoKSx0aGlzLnNldFZhbHVlKHRoaXMudGVtcGxhdGUodCksITEsITApKSx0aGlzLl9zdXBlcigpfSxzaG93VmFsaWRhdGlvbkVycm9yczpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKCJhbHdheXMiPT09dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuc2hvd19lcnJvcnMpO2Vsc2UgaWYoIXRoaXMuaXNfZGlydHkmJnRoaXMucHJldmlvdXNfZXJyb3Jfc2V0dGluZz09PXRoaXMuanNvbmVkaXRvci5vcHRpb25zLnNob3dfZXJyb3JzKXJldHVybjt0aGlzLnByZXZpb3VzX2Vycm9yX3NldHRpbmc9dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuc2hvd19lcnJvcnM7dmFyIGk9W107cyh0LGZ1bmN0aW9uKHQscyl7cy5wYXRoPT09ZS5wYXRoJiZpLnB1c2gocy5tZXNzYWdlKX0pLGkubGVuZ3RoP3RoaXMudGhlbWUuYWRkSW5wdXRFcnJvcih0aGlzLmlucHV0LGkuam9pbigiLiAiKSsiLiIpOnRoaXMudGhlbWUucmVtb3ZlSW5wdXRFcnJvcih0aGlzLmlucHV0KX19KSxuLmRlZmF1bHRzLmVkaXRvcnMubnVtYmVyPW4uZGVmYXVsdHMuZWRpdG9ycy5zdHJpbmcuZXh0ZW5kKHtzYW5pdGl6ZTpmdW5jdGlvbih0KXtyZXR1cm4odCsiIikucmVwbGFjZSgvW14wLTlcLlwtZUVdL2csIiIpfSxnZXROdW1Db2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIDJ9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIDEqdGhpcy52YWx1ZX19KSxuLmRlZmF1bHRzLmVkaXRvcnMuaW50ZWdlcj1uLmRlZmF1bHRzLmVkaXRvcnMubnVtYmVyLmV4dGVuZCh7c2FuaXRpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQrPSIiLHQucmVwbGFjZSgvW14wLTlcLV0vZywiIil9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gMn19KSxuLmRlZmF1bHRzLmVkaXRvcnMub2JqZWN0PW4uQWJzdHJhY3RFZGl0b3IuZXh0ZW5kKHtnZXREZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGkoe30sdGhpcy5zY2hlbWFbImRlZmF1bHQiXXx8e30pfSxnZXRDaGlsZEVkaXRvcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0b3JzfSxyZWdpc3RlcjpmdW5jdGlvbigpe2lmKHRoaXMuX3N1cGVyKCksdGhpcy5lZGl0b3JzKWZvcih2YXIgdCBpbiB0aGlzLmVkaXRvcnMpdGhpcy5lZGl0b3JzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmVkaXRvcnNbdF0ucmVnaXN0ZXIoKX0sdW5yZWdpc3RlcjpmdW5jdGlvbigpe2lmKHRoaXMuX3N1cGVyKCksdGhpcy5lZGl0b3JzKWZvcih2YXIgdCBpbiB0aGlzLmVkaXRvcnMpdGhpcy5lZGl0b3JzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmVkaXRvcnNbdF0udW5yZWdpc3RlcigpfSxnZXROdW1Db2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKDEyLHRoaXMubWF4d2lkdGgpLDMpfSxlbmFibGU6ZnVuY3Rpb24oKXtpZih0aGlzLmVkaXRqc29uX2J1dHRvbiYmKHRoaXMuZWRpdGpzb25fYnV0dG9uLmRpc2FibGVkPSExKSx0aGlzLmFkZHByb3BlcnR5X2J1dHRvbiYmKHRoaXMuYWRkcHJvcGVydHlfYnV0dG9uLmRpc2FibGVkPSExKSx0aGlzLl9zdXBlcigpLHRoaXMuZWRpdG9ycylmb3IodmFyIHQgaW4gdGhpcy5lZGl0b3JzKXRoaXMuZWRpdG9ycy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5lZGl0b3JzW3RdLmVuYWJsZSgpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5lZGl0anNvbl9idXR0b24mJih0aGlzLmVkaXRqc29uX2J1dHRvbi5kaXNhYmxlZD0hMCksdGhpcy5hZGRwcm9wZXJ0eV9idXR0b24mJih0aGlzLmFkZHByb3BlcnR5X2J1dHRvbi5kaXNhYmxlZD0hMCksdGhpcy5oaWRlRWRpdEpTT04oKSx0aGlzLl9zdXBlcigpLHRoaXMuZWRpdG9ycylmb3IodmFyIHQgaW4gdGhpcy5lZGl0b3JzKXRoaXMuZWRpdG9ycy5oYXNPd25Qcm9wZXJ0eSh0KSYmdGhpcy5lZGl0b3JzW3RdLmRpc2FibGUoKX0sbGF5b3V0RWRpdG9yczpmdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzO2lmKHRoaXMucm93X2NvbnRhaW5lcil7dGhpcy5wcm9wZXJ0eV9vcmRlcj1PYmplY3Qua2V5cyh0aGlzLmVkaXRvcnMpLHRoaXMucHJvcGVydHlfb3JkZXI9dGhpcy5wcm9wZXJ0eV9vcmRlci5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIHM9aS5lZGl0b3JzW3RdLnNjaGVtYS5wcm9wZXJ0eU9yZGVyLHI9aS5lZGl0b3JzW2VdLnNjaGVtYS5wcm9wZXJ0eU9yZGVyO3JldHVybiJudW1iZXIiIT10eXBlb2YgcyYmKHM9MWUzKSwibnVtYmVyIiE9dHlwZW9mIHImJihyPTFlMykscy1yfSk7dmFyIHI7aWYoImdyaWQiPT09dGhpcy5mb3JtYXQpe3ZhciBuPVtdO2ZvcihzKHRoaXMucHJvcGVydHlfb3JkZXIsZnVuY3Rpb24odCxlKXt2YXIgcz1pLmVkaXRvcnNbZV07aWYoIXMucHJvcGVydHlfcmVtb3ZlZCl7Zm9yKHZhciByPSExLG89cy5vcHRpb25zLmhpZGRlbj8wOnMub3B0aW9ucy5ncmlkX2NvbHVtbnN8fHMuZ2V0TnVtQ29sdW1ucygpLGE9cy5vcHRpb25zLmhpZGRlbj8wOnMuY29udGFpbmVyLm9mZnNldEhlaWdodCxoPTA7aDxuLmxlbmd0aDtoKyspbltoXS53aWR0aCtvPD0xMiYmKCFhfHwuNSpuW2hdLm1pbmg8YSYmMipuW2hdLm1heGg+YSkmJihyPWgpO3I9PT0hMSYmKG4ucHVzaCh7d2lkdGg6MCxtaW5oOjk5OTk5OSxtYXhoOjAsZWRpdG9yczpbXX0pLHI9bi5sZW5ndGgtMSksbltyXS5lZGl0b3JzLnB1c2goe2tleTplLHdpZHRoOm8saGVpZ2h0OmF9KSxuW3JdLndpZHRoKz1vLG5bcl0ubWluaD1NYXRoLm1pbihuW3JdLm1pbmgsYSksbltyXS5tYXhoPU1hdGgubWF4KG5bcl0ubWF4aCxhKX19KSx0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XS53aWR0aDwxMil7dmFyIG89ITEsYT0wO2ZvcihlPTA7ZTxuW3RdLmVkaXRvcnMubGVuZ3RoO2UrKylvPT09ITE/bz1lOm5bdF0uZWRpdG9yc1tlXS53aWR0aD5uW3RdLmVkaXRvcnNbb10ud2lkdGgmJihvPWUpLG5bdF0uZWRpdG9yc1tlXS53aWR0aCo9MTIvblt0XS53aWR0aCxuW3RdLmVkaXRvcnNbZV0ud2lkdGg9TWF0aC5mbG9vcihuW3RdLmVkaXRvcnNbZV0ud2lkdGgpLGErPW5bdF0uZWRpdG9yc1tlXS53aWR0aDsxMj5hJiYoblt0XS5lZGl0b3JzW29dLndpZHRoKz0xMi1hKSxuW3RdLndpZHRoPTEyfWlmKHRoaXMubGF5b3V0PT09SlNPTi5zdHJpbmdpZnkobikpcmV0dXJuITE7Zm9yKHRoaXMubGF5b3V0PUpTT04uc3RyaW5naWZ5KG4pLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgaD10aGlzLnRoZW1lLmdldEdyaWRSb3coKTtmb3Ioci5hcHBlbmRDaGlsZChoKSxlPTA7ZTxuW3RdLmVkaXRvcnMubGVuZ3RoO2UrKyl7dmFyIGw9blt0XS5lZGl0b3JzW2VdLmtleSxkPXRoaXMuZWRpdG9yc1tsXTtkLm9wdGlvbnMuaGlkZGVuP2QuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiOnRoaXMudGhlbWUuc2V0R3JpZENvbHVtblNpemUoZC5jb250YWluZXIsblt0XS5lZGl0b3JzW2VdLndpZHRoKSxoLmFwcGVuZENoaWxkKGQuY29udGFpbmVyKX19fWVsc2Ugcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxzKHRoaXMucHJvcGVydHlfb3JkZXIsZnVuY3Rpb24odCxlKXt2YXIgcz1pLmVkaXRvcnNbZV07aWYoIXMucHJvcGVydHlfcmVtb3ZlZCl7dmFyIG49aS50aGVtZS5nZXRHcmlkUm93KCk7ci5hcHBlbmRDaGlsZChuKSxzLm9wdGlvbnMuaGlkZGVuP3MuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiOmkudGhlbWUuc2V0R3JpZENvbHVtblNpemUocy5jb250YWluZXIsMTIpLG4uYXBwZW5kQ2hpbGQocy5jb250YWluZXIpfX0pO3RoaXMucm93X2NvbnRhaW5lci5pbm5lckhUTUw9IiIsdGhpcy5yb3dfY29udGFpbmVyLmFwcGVuZENoaWxkKHIpfX0sZ2V0UHJvcGVydHlTY2hlbWE6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zY2hlbWEucHJvcGVydGllc1t0XXx8e307ZT1pKHt9LGUpO3ZhciBzPSEhdGhpcy5zY2hlbWEucHJvcGVydGllc1t0XTtpZih0aGlzLnNjaGVtYS5wYXR0ZXJuUHJvcGVydGllcylmb3IodmFyIHIgaW4gdGhpcy5zY2hlbWEucGF0dGVyblByb3BlcnRpZXMpaWYodGhpcy5zY2hlbWEucGF0dGVyblByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocikpe3ZhciBuPW5ldyBSZWdFeHAocik7bi50ZXN0KHQpJiYoZS5hbGxPZj1lLmFsbE9mfHxbXSxlLmFsbE9mLnB1c2godGhpcy5zY2hlbWEucGF0dGVyblByb3BlcnRpZXNbcl0pLHM9ITApfXJldHVybiFzJiZ0aGlzLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyYmIm9iamVjdCI9PXR5cGVvZiB0aGlzLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcyYmKGU9aSh7fSx0aGlzLnNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcykpLGV9LHByZUJ1aWxkOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLmVkaXRvcnM9e30sdGhpcy5jYWNoZWRfZWRpdG9ycz17fTt2YXIgdD10aGlzO2lmKHRoaXMuZm9ybWF0PXRoaXMub3B0aW9ucy5sYXlvdXR8fHRoaXMub3B0aW9ucy5vYmplY3RfbGF5b3V0fHx0aGlzLnNjaGVtYS5mb3JtYXR8fHRoaXMuanNvbmVkaXRvci5vcHRpb25zLm9iamVjdF9sYXlvdXR8fCJub3JtYWwiLHRoaXMuc2NoZW1hLnByb3BlcnRpZXM9dGhpcy5zY2hlbWEucHJvcGVydGllc3x8e30sdGhpcy5taW53aWR0aD0wLHRoaXMubWF4d2lkdGg9MCx0aGlzLm9wdGlvbnMudGFibGVfcm93KXModGhpcy5zY2hlbWEucHJvcGVydGllcyxmdW5jdGlvbihlLGkpe3ZhciBzPXQuanNvbmVkaXRvci5nZXRFZGl0b3JDbGFzcyhpKTt0LmVkaXRvcnNbZV09dC5qc29uZWRpdG9yLmNyZWF0ZUVkaXRvcihzLHtqc29uZWRpdG9yOnQuanNvbmVkaXRvcixzY2hlbWE6aSxwYXRoOnQucGF0aCsiLiIrZSxwYXJlbnQ6dCxjb21wYWN0OiEwLHJlcXVpcmVkOiEwfSksdC5lZGl0b3JzW2VdLnByZUJ1aWxkKCk7dmFyIHI9dC5lZGl0b3JzW2VdLm9wdGlvbnMuaGlkZGVuPzA6dC5lZGl0b3JzW2VdLm9wdGlvbnMuZ3JpZF9jb2x1bW5zfHx0LmVkaXRvcnNbZV0uZ2V0TnVtQ29sdW1ucygpO3QubWlud2lkdGgrPXIsdC5tYXh3aWR0aCs9cn0pLHRoaXMubm9fbGlua19ob2xkZXI9ITA7ZWxzZXtpZih0aGlzLm9wdGlvbnMudGFibGUpdGhyb3ciTm90IHN1cHBvcnRlZCB5ZXQiO3RoaXMuZGVmYXVsdFByb3BlcnRpZXM9dGhpcy5zY2hlbWEuZGVmYXVsdFByb3BlcnRpZXN8fE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpLHQubWF4d2lkdGgrPTEscyh0aGlzLmRlZmF1bHRQcm9wZXJ0aWVzLGZ1bmN0aW9uKGUsaSl7dC5hZGRPYmplY3RQcm9wZXJ0eShpLCEwKSx0LmVkaXRvcnNbaV0mJih0Lm1pbndpZHRoPU1hdGgubWF4KHQubWlud2lkdGgsdC5lZGl0b3JzW2ldLm9wdGlvbnMuZ3JpZF9jb2x1bW5zfHx0LmVkaXRvcnNbaV0uZ2V0TnVtQ29sdW1ucygpKSx0Lm1heHdpZHRoKz10LmVkaXRvcnNbaV0ub3B0aW9ucy5ncmlkX2NvbHVtbnN8fHQuZWRpdG9yc1tpXS5nZXROdW1Db2x1bW5zKCkpfSl9dGhpcy5wcm9wZXJ0eV9vcmRlcj1PYmplY3Qua2V5cyh0aGlzLmVkaXRvcnMpLHRoaXMucHJvcGVydHlfb3JkZXI9dGhpcy5wcm9wZXJ0eV9vcmRlci5zb3J0KGZ1bmN0aW9uKGUsaSl7dmFyIHM9dC5lZGl0b3JzW2VdLnNjaGVtYS5wcm9wZXJ0eU9yZGVyLHI9dC5lZGl0b3JzW2ldLnNjaGVtYS5wcm9wZXJ0eU9yZGVyO3JldHVybiJudW1iZXIiIT10eXBlb2YgcyYmKHM9MWUzKSwibnVtYmVyIiE9dHlwZW9mIHImJihyPTFlMykscy1yfSl9LGJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLm9wdGlvbnMudGFibGVfcm93KXRoaXMuZWRpdG9yX2hvbGRlcj10aGlzLmNvbnRhaW5lcixzKHRoaXMuZWRpdG9ycyxmdW5jdGlvbihlLGkpe3ZhciBzPXQudGhlbWUuZ2V0VGFibGVDZWxsKCk7dC5lZGl0b3JfaG9sZGVyLmFwcGVuZENoaWxkKHMpLGkuc2V0Q29udGFpbmVyKHMpLGkuYnVpbGQoKSxpLnBvc3RCdWlsZCgpLHQuZWRpdG9yc1tlXS5vcHRpb25zLmhpZGRlbiYmKHMuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHQuZWRpdG9yc1tlXS5vcHRpb25zLmlucHV0X3dpZHRoJiYocy5zdHlsZS53aWR0aD10LmVkaXRvcnNbZV0ub3B0aW9ucy5pbnB1dF93aWR0aCl9KTtlbHNle2lmKHRoaXMub3B0aW9ucy50YWJsZSl0aHJvdyJOb3Qgc3VwcG9ydGVkIHlldCI7dGhpcy5oZWFkZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLHRoaXMuaGVhZGVyLnRleHRDb250ZW50PXRoaXMuZ2V0VGl0bGUoKSx0aGlzLnRpdGxlPXRoaXMudGhlbWUuZ2V0SGVhZGVyKHRoaXMuaGVhZGVyKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnRpdGxlKSx0aGlzLmNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuZWRpdGpzb25faG9sZGVyPXRoaXMudGhlbWUuZ2V0TW9kYWwoKSx0aGlzLmVkaXRqc29uX3RleHRhcmVhPXRoaXMudGhlbWUuZ2V0VGV4dGFyZWFJbnB1dCgpLHRoaXMuZWRpdGpzb25fdGV4dGFyZWEuc3R5bGUuaGVpZ2h0PSIxNzBweCIsdGhpcy5lZGl0anNvbl90ZXh0YXJlYS5zdHlsZS53aWR0aD0iMzAwcHgiLHRoaXMuZWRpdGpzb25fdGV4dGFyZWEuc3R5bGUuZGlzcGxheT0iYmxvY2siLHRoaXMuZWRpdGpzb25fc2F2ZT10aGlzLmdldEJ1dHRvbigiU2F2ZSIsInNhdmUiLCJTYXZlIiksdGhpcy5lZGl0anNvbl9zYXZlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LnNhdmVKU09OKCl9KSx0aGlzLmVkaXRqc29uX2NhbmNlbD10aGlzLmdldEJ1dHRvbigiQ2FuY2VsIiwiY2FuY2VsIiwiQ2FuY2VsIiksdGhpcy5lZGl0anNvbl9jYW5jZWwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuaGlkZUVkaXRKU09OKCl9KSx0aGlzLmVkaXRqc29uX2hvbGRlci5hcHBlbmRDaGlsZCh0aGlzLmVkaXRqc29uX3RleHRhcmVhKSx0aGlzLmVkaXRqc29uX2hvbGRlci5hcHBlbmRDaGlsZCh0aGlzLmVkaXRqc29uX3NhdmUpLHRoaXMuZWRpdGpzb25faG9sZGVyLmFwcGVuZENoaWxkKHRoaXMuZWRpdGpzb25fY2FuY2VsKSx0aGlzLmFkZHByb3BlcnR5X2hvbGRlcj10aGlzLnRoZW1lLmdldE1vZGFsKCksdGhpcy5hZGRwcm9wZXJ0eV9saXN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYWRkcHJvcGVydHlfbGlzdC5zdHlsZS53aWR0aD0iMjk1cHgiLHRoaXMuYWRkcHJvcGVydHlfbGlzdC5zdHlsZS5tYXhIZWlnaHQ9IjE2MHB4Iix0aGlzLmFkZHByb3BlcnR5X2xpc3Quc3R5bGUucGFkZGluZz0iNXB4IDAiLHRoaXMuYWRkcHJvcGVydHlfbGlzdC5zdHlsZS5vdmVyZmxvd1k9ImF1dG8iLHRoaXMuYWRkcHJvcGVydHlfbGlzdC5zdHlsZS5vdmVyZmxvd1g9ImhpZGRlbiIsdGhpcy5hZGRwcm9wZXJ0eV9saXN0LnN0eWxlLnBhZGRpbmdMZWZ0PSI1cHgiLHRoaXMuYWRkcHJvcGVydHlfbGlzdC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwicHJvcGVydHktc2VsZWN0b3IiKSx0aGlzLmFkZHByb3BlcnR5X2FkZD10aGlzLmdldEJ1dHRvbigiYWRkIiwiYWRkIiwiYWRkIiksdGhpcy5hZGRwcm9wZXJ0eV9pbnB1dD10aGlzLnRoZW1lLmdldEZvcm1JbnB1dEZpZWxkKCJ0ZXh0IiksdGhpcy5hZGRwcm9wZXJ0eV9pbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwiUHJvcGVydHkgbmFtZS4uLiIpLHRoaXMuYWRkcHJvcGVydHlfaW5wdXQuc3R5bGUud2lkdGg9IjIyMHB4Iix0aGlzLmFkZHByb3BlcnR5X2lucHV0LnN0eWxlLm1hcmdpbkJvdHRvbT0iMCIsdGhpcy5hZGRwcm9wZXJ0eV9pbnB1dC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLHRoaXMuYWRkcHJvcGVydHlfYWRkLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtpZihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LmFkZHByb3BlcnR5X2lucHV0LnZhbHVlKXtpZih0LmVkaXRvcnNbdC5hZGRwcm9wZXJ0eV9pbnB1dC52YWx1ZV0pcmV0dXJuIHZvaWQgd2luZG93LmFsZXJ0KCJ0aGVyZSBpcyBhbHJlYWR5IGEgcHJvcGVydHkgd2l0aCB0aGF0IG5hbWUiKTt0LmFkZE9iamVjdFByb3BlcnR5KHQuYWRkcHJvcGVydHlfaW5wdXQudmFsdWUpLHQuZWRpdG9yc1t0LmFkZHByb3BlcnR5X2lucHV0LnZhbHVlXSYmdC5lZGl0b3JzW3QuYWRkcHJvcGVydHlfaW5wdXQudmFsdWVdLmRpc2FibGUoKSx0Lm9uQ2hhbmdlKCEwKX19KSx0aGlzLmFkZHByb3BlcnR5X2hvbGRlci5hcHBlbmRDaGlsZCh0aGlzLmFkZHByb3BlcnR5X2xpc3QpLHRoaXMuYWRkcHJvcGVydHlfaG9sZGVyLmFwcGVuZENoaWxkKHRoaXMuYWRkcHJvcGVydHlfaW5wdXQpLHRoaXMuYWRkcHJvcGVydHlfaG9sZGVyLmFwcGVuZENoaWxkKHRoaXMuYWRkcHJvcGVydHlfYWRkKTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnN0eWxlLmNsZWFyPSJib3RoIix0aGlzLmFkZHByb3BlcnR5X2hvbGRlci5hcHBlbmRDaGlsZChlKSx0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbiYmKHRoaXMuZGVzY3JpcHRpb249dGhpcy50aGVtZS5nZXREZXNjcmlwdGlvbih0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbiksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kZXNjcmlwdGlvbikpLHRoaXMuZXJyb3JfaG9sZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZXJyb3JfaG9sZGVyKSx0aGlzLmVkaXRvcl9ob2xkZXI9dGhpcy50aGVtZS5nZXRJbmRlbnRlZFBhbmVsKCksdGhpcy5lZGl0b3JfaG9sZGVyLnN0eWxlLnBhZGRpbmdCb3R0b209IjAiLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZWRpdG9yX2hvbGRlciksdGhpcy5yb3dfY29udGFpbmVyPXRoaXMudGhlbWUuZ2V0R3JpZENvbnRhaW5lcigpLHRoaXMuZWRpdG9yX2hvbGRlci5hcHBlbmRDaGlsZCh0aGlzLnJvd19jb250YWluZXIpLHModGhpcy5lZGl0b3JzLGZ1bmN0aW9uKGUsaSl7dmFyIHM9dC50aGVtZS5nZXRHcmlkQ29sdW1uKCk7dC5yb3dfY29udGFpbmVyLmFwcGVuZENoaWxkKHMpLGkuc2V0Q29udGFpbmVyKHMpLGkuYnVpbGQoKSxpLnBvc3RCdWlsZCgpfSksdGhpcy50aXRsZV9jb250cm9scz10aGlzLnRoZW1lLmdldEhlYWRlckJ1dHRvbkhvbGRlcigpLHRoaXMuZWRpdGpzb25fY29udHJvbHM9dGhpcy50aGVtZS5nZXRIZWFkZXJCdXR0b25Ib2xkZXIoKSx0aGlzLmFkZHByb3BlcnR5X2NvbnRyb2xzPXRoaXMudGhlbWUuZ2V0SGVhZGVyQnV0dG9uSG9sZGVyKCksdGhpcy50aXRsZS5hcHBlbmRDaGlsZCh0aGlzLnRpdGxlX2NvbnRyb2xzKSx0aGlzLnRpdGxlLmFwcGVuZENoaWxkKHRoaXMuZWRpdGpzb25fY29udHJvbHMpLHRoaXMudGl0bGUuYXBwZW5kQ2hpbGQodGhpcy5hZGRwcm9wZXJ0eV9jb250cm9scyksdGhpcy5jb2xsYXBzZWQ9ITEsdGhpcy50b2dnbGVfYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCIiLCJjb2xsYXBzZSIsIkNvbGxhcHNlIiksdGhpcy50aXRsZV9jb250cm9scy5hcHBlbmRDaGlsZCh0aGlzLnRvZ2dsZV9idXR0b24pLHRoaXMudG9nZ2xlX2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdC5jb2xsYXBzZWQ/KHQuZWRpdG9yX2hvbGRlci5zdHlsZS5kaXNwbGF5PSIiLHQuY29sbGFwc2VkPSExLHQuc2V0QnV0dG9uVGV4dCh0LnRvZ2dsZV9idXR0b24sIiIsImNvbGxhcHNlIiwiQ29sbGFwc2UiKSk6KHQuZWRpdG9yX2hvbGRlci5zdHlsZS5kaXNwbGF5PSJub25lIix0LmNvbGxhcHNlZD0hMCx0LnNldEJ1dHRvblRleHQodC50b2dnbGVfYnV0dG9uLCIiLCJleHBhbmQiLCJFeHBhbmQiKSl9KSx0aGlzLm9wdGlvbnMuY29sbGFwc2VkJiZyKHRoaXMudG9nZ2xlX2J1dHRvbiwiY2xpY2siKSx0aGlzLnNjaGVtYS5vcHRpb25zJiYidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuc2NoZW1hLm9wdGlvbnMuZGlzYWJsZV9jb2xsYXBzZT90aGlzLnNjaGVtYS5vcHRpb25zLmRpc2FibGVfY29sbGFwc2UmJih0aGlzLnRvZ2dsZV9idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIpOnRoaXMuanNvbmVkaXRvci5vcHRpb25zLmRpc2FibGVfY29sbGFwc2UmJih0aGlzLnRvZ2dsZV9idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMuZWRpdGpzb25fYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCJKU09OIiwiZWRpdCIsIkVkaXQgSlNPTiIpLHRoaXMuZWRpdGpzb25fYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LnRvZ2dsZUVkaXRKU09OKCl9KSx0aGlzLmVkaXRqc29uX2NvbnRyb2xzLmFwcGVuZENoaWxkKHRoaXMuZWRpdGpzb25fYnV0dG9uKSx0aGlzLmVkaXRqc29uX2NvbnRyb2xzLmFwcGVuZENoaWxkKHRoaXMuZWRpdGpzb25faG9sZGVyKSx0aGlzLnNjaGVtYS5vcHRpb25zJiYidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuc2NoZW1hLm9wdGlvbnMuZGlzYWJsZV9lZGl0X2pzb24/dGhpcy5zY2hlbWEub3B0aW9ucy5kaXNhYmxlX2VkaXRfanNvbiYmKHRoaXMuZWRpdGpzb25fYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTp0aGlzLmpzb25lZGl0b3Iub3B0aW9ucy5kaXNhYmxlX2VkaXRfanNvbiYmKHRoaXMuZWRpdGpzb25fYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLmFkZHByb3BlcnR5X2J1dHRvbj10aGlzLmdldEJ1dHRvbigiUHJvcGVydGllcyIsImVkaXQiLCJPYmplY3QgUHJvcGVydGllcyIpLHRoaXMuYWRkcHJvcGVydHlfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LnRvZ2dsZUFkZFByb3BlcnR5KCl9KSx0aGlzLmFkZHByb3BlcnR5X2NvbnRyb2xzLmFwcGVuZENoaWxkKHRoaXMuYWRkcHJvcGVydHlfYnV0dG9uKSx0aGlzLmFkZHByb3BlcnR5X2NvbnRyb2xzLmFwcGVuZENoaWxkKHRoaXMuYWRkcHJvcGVydHlfaG9sZGVyKSx0aGlzLnJlZnJlc2hBZGRQcm9wZXJ0aWVzKCl9dGhpcy5vcHRpb25zLnRhYmxlX3Jvdz8odGhpcy5lZGl0b3JfaG9sZGVyPXRoaXMuY29udGFpbmVyLHModGhpcy5wcm9wZXJ0eV9vcmRlcixmdW5jdGlvbihlLGkpe3QuZWRpdG9yX2hvbGRlci5hcHBlbmRDaGlsZCh0LmVkaXRvcnNbaV0uY29udGFpbmVyKX0pKToodGhpcy5sYXlvdXRFZGl0b3JzKCksdGhpcy5sYXlvdXRFZGl0b3JzKCkpfSxzaG93RWRpdEpTT046ZnVuY3Rpb24oKXt0aGlzLmVkaXRqc29uX2hvbGRlciYmKHRoaXMuaGlkZUFkZFByb3BlcnR5KCksdGhpcy5lZGl0anNvbl9ob2xkZXIuc3R5bGUubGVmdD10aGlzLmVkaXRqc29uX2J1dHRvbi5vZmZzZXRMZWZ0KyJweCIsdGhpcy5lZGl0anNvbl9ob2xkZXIuc3R5bGUudG9wPXRoaXMuZWRpdGpzb25fYnV0dG9uLm9mZnNldFRvcCt0aGlzLmVkaXRqc29uX2J1dHRvbi5vZmZzZXRIZWlnaHQrInB4Iix0aGlzLmVkaXRqc29uX3RleHRhcmVhLnZhbHVlPUpTT04uc3RyaW5naWZ5KHRoaXMuZ2V0VmFsdWUoKSxudWxsLDIpLHRoaXMuZGlzYWJsZSgpLHRoaXMuZWRpdGpzb25faG9sZGVyLnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5lZGl0anNvbl9idXR0b24uZGlzYWJsZWQ9ITEsdGhpcy5lZGl0aW5nX2pzb249ITApfSxoaWRlRWRpdEpTT046ZnVuY3Rpb24oKXt0aGlzLmVkaXRqc29uX2hvbGRlciYmdGhpcy5lZGl0aW5nX2pzb24mJih0aGlzLmVkaXRqc29uX2hvbGRlci5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmVuYWJsZSgpLHRoaXMuZWRpdGluZ19qc29uPSExKX0sc2F2ZUpTT046ZnVuY3Rpb24oKXtpZih0aGlzLmVkaXRqc29uX2hvbGRlcil0cnl7dmFyIHQ9SlNPTi5wYXJzZSh0aGlzLmVkaXRqc29uX3RleHRhcmVhLnZhbHVlKTt0aGlzLnNldFZhbHVlKHQpLHRoaXMuaGlkZUVkaXRKU09OKCl9Y2F0Y2goZSl7dGhyb3cgd2luZG93LmFsZXJ0KCJpbnZhbGlkIEpTT04iKSxlfX0sdG9nZ2xlRWRpdEpTT046ZnVuY3Rpb24oKXt0aGlzLmVkaXRpbmdfanNvbj90aGlzLmhpZGVFZGl0SlNPTigpOnRoaXMuc2hvd0VkaXRKU09OKCl9LGluc2VydFByb3BlcnR5Q29udHJvbFVzaW5nUHJvcGVydHlPcmRlcjpmdW5jdGlvbih0LGUsaSl7dmFyIHM7dGhpcy5zY2hlbWEucHJvcGVydGllc1t0XSYmKHM9dGhpcy5zY2hlbWEucHJvcGVydGllc1t0XS5wcm9wZXJ0eU9yZGVyKSwibnVtYmVyIiE9dHlwZW9mIHMmJihzPTFlMyksZS5wcm9wZXJ0eU9yZGVyPXM7Zm9yKHZhciByPTA7cjxpLmNoaWxkTm9kZXMubGVuZ3RoO3IrKyl7dmFyIG49aS5jaGlsZE5vZGVzW3JdO2lmKGUucHJvcGVydHlPcmRlcjxuLnByb3BlcnR5T3JkZXIpe3RoaXMuYWRkcHJvcGVydHlfbGlzdC5pbnNlcnRCZWZvcmUoZSxuKSxlPW51bGw7YnJlYWt9fWUmJnRoaXMuYWRkcHJvcGVydHlfbGlzdC5hcHBlbmRDaGlsZChlKX0sYWRkUHJvcGVydHlDaGVja2JveDpmdW5jdGlvbih0KXt2YXIgZSxpLHMscixuPXRoaXM7cmV0dXJuIGU9bi50aGVtZS5nZXRDaGVja2JveCgpLGUuc3R5bGUud2lkdGg9ImF1dG8iLHM9dGhpcy5zY2hlbWEucHJvcGVydGllc1t0XSYmdGhpcy5zY2hlbWEucHJvcGVydGllc1t0XS50aXRsZT90aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3RdLnRpdGxlOnQsaT1uLnRoZW1lLmdldENoZWNrYm94TGFiZWwocykscj1uLnRoZW1lLmdldEZvcm1Db250cm9sKGksZSksci5zdHlsZS5wYWRkaW5nQm90dG9tPXIuc3R5bGUubWFyZ2luQm90dG9tPXIuc3R5bGUucGFkZGluZ1RvcD1yLnN0eWxlLm1hcmdpblRvcD0wLHIuc3R5bGUuaGVpZ2h0PSJhdXRvIix0aGlzLmluc2VydFByb3BlcnR5Q29udHJvbFVzaW5nUHJvcGVydHlPcmRlcih0LHIsdGhpcy5hZGRwcm9wZXJ0eV9saXN0KSxlLmNoZWNrZWQ9dCBpbiB0aGlzLmVkaXRvcnMsZS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZS5jaGVja2VkP24uYWRkT2JqZWN0UHJvcGVydHkodCk6bi5yZW1vdmVPYmplY3RQcm9wZXJ0eSh0KSxuLm9uQ2hhbmdlKCEwKX0pLG4uYWRkcHJvcGVydHlfY2hlY2tib3hlc1t0XT1lLGV9LHNob3dBZGRQcm9wZXJ0eTpmdW5jdGlvbigpe3RoaXMuYWRkcHJvcGVydHlfaG9sZGVyJiYodGhpcy5oaWRlRWRpdEpTT04oKSx0aGlzLmFkZHByb3BlcnR5X2hvbGRlci5zdHlsZS5sZWZ0PXRoaXMuYWRkcHJvcGVydHlfYnV0dG9uLm9mZnNldExlZnQrInB4Iix0aGlzLmFkZHByb3BlcnR5X2hvbGRlci5zdHlsZS50b3A9dGhpcy5hZGRwcm9wZXJ0eV9idXR0b24ub2Zmc2V0VG9wK3RoaXMuYWRkcHJvcGVydHlfYnV0dG9uLm9mZnNldEhlaWdodCsicHgiLHRoaXMuZGlzYWJsZSgpLHRoaXMuYWRkaW5nX3Byb3BlcnR5PSEwLHRoaXMuYWRkcHJvcGVydHlfYnV0dG9uLmRpc2FibGVkPSExLHRoaXMuYWRkcHJvcGVydHlfaG9sZGVyLnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5yZWZyZXNoQWRkUHJvcGVydGllcygpKX0saGlkZUFkZFByb3BlcnR5OmZ1bmN0aW9uKCl7dGhpcy5hZGRwcm9wZXJ0eV9ob2xkZXImJnRoaXMuYWRkaW5nX3Byb3BlcnR5JiYodGhpcy5hZGRwcm9wZXJ0eV9ob2xkZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5lbmFibGUoKSx0aGlzLmFkZGluZ19wcm9wZXJ0eT0hMSl9LHRvZ2dsZUFkZFByb3BlcnR5OmZ1bmN0aW9uKCl7dGhpcy5hZGRpbmdfcHJvcGVydHk/dGhpcy5oaWRlQWRkUHJvcGVydHkoKTp0aGlzLnNob3dBZGRQcm9wZXJ0eSgpfSxyZW1vdmVPYmplY3RQcm9wZXJ0eTpmdW5jdGlvbih0KXt0aGlzLmVkaXRvcnNbdF0mJih0aGlzLmVkaXRvcnNbdF0udW5yZWdpc3RlcigpLGRlbGV0ZSB0aGlzLmVkaXRvcnNbdF0sdGhpcy5yZWZyZXNoVmFsdWUoKSx0aGlzLmxheW91dEVkaXRvcnMoKSl9LGFkZE9iamVjdFByb3BlcnR5OmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztpZighdGhpcy5lZGl0b3JzW3RdKXtpZih0aGlzLmNhY2hlZF9lZGl0b3JzW3RdKXtpZih0aGlzLmVkaXRvcnNbdF09dGhpcy5jYWNoZWRfZWRpdG9yc1t0XSxlKXJldHVybjt0aGlzLmVkaXRvcnNbdF0ucmVnaXN0ZXIoKX1lbHNle2lmKCEodGhpcy5jYW5IYXZlQWRkaXRpb25hbFByb3BlcnRpZXMoKXx8dGhpcy5zY2hlbWEucHJvcGVydGllcyYmdGhpcy5zY2hlbWEucHJvcGVydGllc1t0XSkpcmV0dXJuO3ZhciBzPWkuZ2V0UHJvcGVydHlTY2hlbWEodCkscj1pLmpzb25lZGl0b3IuZ2V0RWRpdG9yQ2xhc3Mocyk7aWYoaS5lZGl0b3JzW3RdPWkuanNvbmVkaXRvci5jcmVhdGVFZGl0b3Iocix7anNvbmVkaXRvcjppLmpzb25lZGl0b3Isc2NoZW1hOnMscGF0aDppLnBhdGgrIi4iK3QscGFyZW50Oml9KSxpLmVkaXRvcnNbdF0ucHJlQnVpbGQoKSwhZSl7dmFyIG49aS50aGVtZS5nZXRDaGlsZEVkaXRvckhvbGRlcigpO2kuZWRpdG9yX2hvbGRlci5hcHBlbmRDaGlsZChuKSxpLmVkaXRvcnNbdF0uc2V0Q29udGFpbmVyKG4pLGkuZWRpdG9yc1t0XS5idWlsZCgpLGkuZWRpdG9yc1t0XS5wb3N0QnVpbGQoKX1pLmNhY2hlZF9lZGl0b3JzW3RdPWkuZWRpdG9yc1t0XX1lfHwoaS5yZWZyZXNoVmFsdWUoKSxpLmxheW91dEVkaXRvcnMoKSl9fSxvbkNoaWxkRWRpdG9yQ2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMucmVmcmVzaFZhbHVlKCksdGhpcy5fc3VwZXIodCl9LGNhbkhhdmVBZGRpdGlvbmFsUHJvcGVydGllczpmdW5jdGlvbigpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHRoaXMuc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzP3RoaXMuc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzOiF0aGlzLmpzb25lZGl0b3Iub3B0aW9ucy5ub19hZGRpdGlvbmFsX3Byb3BlcnRpZXN9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtzKHRoaXMuY2FjaGVkX2VkaXRvcnMsZnVuY3Rpb24odCxlKXtlLmRlc3Ryb3koKX0pLHRoaXMuZWRpdG9yX2hvbGRlciYmKHRoaXMuZWRpdG9yX2hvbGRlci5pbm5lckhUTUw9IiIpLHRoaXMudGl0bGUmJnRoaXMudGl0bGUucGFyZW50Tm9kZSYmdGhpcy50aXRsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGl0bGUpLHRoaXMuZXJyb3JfaG9sZGVyJiZ0aGlzLmVycm9yX2hvbGRlci5wYXJlbnROb2RlJiZ0aGlzLmVycm9yX2hvbGRlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZXJyb3JfaG9sZGVyKSx0aGlzLmVkaXRvcnM9bnVsbCx0aGlzLmNhY2hlZF9lZGl0b3JzPW51bGwsdGhpcy5lZGl0b3JfaG9sZGVyJiZ0aGlzLmVkaXRvcl9ob2xkZXIucGFyZW50Tm9kZSYmdGhpcy5lZGl0b3JfaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lZGl0b3JfaG9sZGVyKSx0aGlzLmVkaXRvcl9ob2xkZXI9bnVsbCx0aGlzLl9zdXBlcigpfSxnZXRWYWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N1cGVyKCk7aWYodGhpcy5qc29uZWRpdG9yLm9wdGlvbnMucmVtb3ZlX2VtcHR5X3Byb3BlcnRpZXN8fHRoaXMub3B0aW9ucy5yZW1vdmVfZW1wdHlfcHJvcGVydGllcylmb3IodmFyIGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiYodFtlXXx8ZGVsZXRlIHRbZV0pO3JldHVybiB0fSxyZWZyZXNoVmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXt9O2Zvcih2YXIgdCBpbiB0aGlzLmVkaXRvcnMpdGhpcy5lZGl0b3JzLmhhc093blByb3BlcnR5KHQpJiYodGhpcy52YWx1ZVt0XT10aGlzLmVkaXRvcnNbdF0uZ2V0VmFsdWUoKSk7dGhpcy5hZGRpbmdfcHJvcGVydHkmJnRoaXMucmVmcmVzaEFkZFByb3BlcnRpZXMoKX0scmVmcmVzaEFkZFByb3BlcnRpZXM6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuZGlzYWJsZV9wcm9wZXJ0aWVzfHx0aGlzLm9wdGlvbnMuZGlzYWJsZV9wcm9wZXJ0aWVzIT09ITEmJnRoaXMuanNvbmVkaXRvci5vcHRpb25zLmRpc2FibGVfcHJvcGVydGllcylyZXR1cm4gdm9pZCh0aGlzLmFkZHByb3BlcnR5X2NvbnRyb2xzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTt2YXIgdCxlPSExLGk9ITEscz0wLHI9ITE7Zm9yKHQgaW4gdGhpcy5lZGl0b3JzKXRoaXMuZWRpdG9ycy5oYXNPd25Qcm9wZXJ0eSh0KSYmcysrO2U9dGhpcy5jYW5IYXZlQWRkaXRpb25hbFByb3BlcnRpZXMoKSYmISgidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuc2NoZW1hLm1heFByb3BlcnRpZXMmJnM+PXRoaXMuc2NoZW1hLm1heFByb3BlcnRpZXMpLHRoaXMuYWRkcHJvcGVydHlfY2hlY2tib3hlcyYmKHRoaXMuYWRkcHJvcGVydHlfbGlzdC5pbm5lckhUTUw9IiIpLHRoaXMuYWRkcHJvcGVydHlfY2hlY2tib3hlcz17fTtmb3IodCBpbiB0aGlzLmNhY2hlZF9lZGl0b3JzKXRoaXMuY2FjaGVkX2VkaXRvcnMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLmFkZFByb3BlcnR5Q2hlY2tib3godCksdGhpcy5pc1JlcXVpcmVkKHRoaXMuY2FjaGVkX2VkaXRvcnNbdF0pJiZ0IGluIHRoaXMuZWRpdG9ycyYmKHRoaXMuYWRkcHJvcGVydHlfY2hlY2tib3hlc1t0XS5kaXNhYmxlZD0hMCksInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLnNjaGVtYS5taW5Qcm9wZXJ0aWVzJiZzPD10aGlzLnNjaGVtYS5taW5Qcm9wZXJ0aWVzPyh0aGlzLmFkZHByb3BlcnR5X2NoZWNrYm94ZXNbdF0uZGlzYWJsZWQ9dGhpcy5hZGRwcm9wZXJ0eV9jaGVja2JveGVzW3RdLmNoZWNrZWQsdGhpcy5hZGRwcm9wZXJ0eV9jaGVja2JveGVzW3RdLmNoZWNrZWR8fChyPSEwKSk6dCBpbiB0aGlzLmVkaXRvcnM/KHI9ITAsaT0hMCk6ZXx8dGhpcy5zY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT8odGhpcy5hZGRwcm9wZXJ0eV9jaGVja2JveGVzW3RdLmRpc2FibGVkPSExLHI9ITApOnRoaXMuYWRkcHJvcGVydHlfY2hlY2tib3hlc1t0XS5kaXNhYmxlZD0hMCk7dGhpcy5jYW5IYXZlQWRkaXRpb25hbFByb3BlcnRpZXMoKSYmKHI9ITApO2Zvcih0IGluIHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpdGhpcy5zY2hlbWEucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuY2FjaGVkX2VkaXRvcnNbdF18fChyPSEwLHRoaXMuYWRkUHJvcGVydHlDaGVja2JveCh0KSkpO3I/dGhpcy5jYW5IYXZlQWRkaXRpb25hbFByb3BlcnRpZXMoKT9lP3RoaXMuYWRkcHJvcGVydHlfYWRkLmRpc2FibGVkPSExOnRoaXMuYWRkcHJvcGVydHlfYWRkLmRpc2FibGVkPSEwOih0aGlzLmFkZHByb3BlcnR5X2FkZC5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLmFkZHByb3BlcnR5X2lucHV0LnN0eWxlLmRpc3BsYXk9Im5vbmUiKToodGhpcy5oaWRlQWRkUHJvcGVydHkoKSx0aGlzLmFkZHByb3BlcnR5X2NvbnRyb2xzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0saXNSZXF1aXJlZDpmdW5jdGlvbih0KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0LnNjaGVtYS5yZXF1aXJlZD90LnNjaGVtYS5yZXF1aXJlZDpBcnJheS5pc0FycmF5KHRoaXMuc2NoZW1hLnJlcXVpcmVkKT90aGlzLnNjaGVtYS5yZXF1aXJlZC5pbmRleE9mKHQua2V5KT4tMTohIXRoaXMuanNvbmVkaXRvci5vcHRpb25zLnJlcXVpcmVkX2J5X2RlZmF1bHR9LHNldFZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpczt0PXR8fHt9LCgib2JqZWN0IiE9dHlwZW9mIHR8fEFycmF5LmlzQXJyYXkodCkpJiYodD17fSkscyh0aGlzLmNhY2hlZF9lZGl0b3JzLGZ1bmN0aW9uKHMscil7InVuZGVmaW5lZCIhPXR5cGVvZiB0W3NdPyhpLmFkZE9iamVjdFByb3BlcnR5KHMpLHIuc2V0VmFsdWUodFtzXSxlKSk6ZXx8aS5pc1JlcXVpcmVkKHIpP3Iuc2V0VmFsdWUoci5nZXREZWZhdWx0KCksZSk6aS5yZW1vdmVPYmplY3RQcm9wZXJ0eShzKX0pLHModCxmdW5jdGlvbih0LHMpe2kuY2FjaGVkX2VkaXRvcnNbdF18fChpLmFkZE9iamVjdFByb3BlcnR5KHQpLGkuZWRpdG9yc1t0XSYmaS5lZGl0b3JzW3RdLnNldFZhbHVlKHMsZSkpfSksdGhpcy5yZWZyZXNoVmFsdWUoKSx0aGlzLmxheW91dEVkaXRvcnMoKSx0aGlzLm9uQ2hhbmdlKCl9LHNob3dWYWxpZGF0aW9uRXJyb3JzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1bXSxyPVtdO3ModCxmdW5jdGlvbih0LHMpe3MucGF0aD09PWUucGF0aD9pLnB1c2gocyk6ci5wdXNoKHMpfSksdGhpcy5lcnJvcl9ob2xkZXImJihpLmxlbmd0aD8odGhpcy5lcnJvcl9ob2xkZXIuaW5uZXJIVE1MPSIiLHRoaXMuZXJyb3JfaG9sZGVyLnN0eWxlLmRpc3BsYXk9IiIscyhpLGZ1bmN0aW9uKHQsaSl7ZS5lcnJvcl9ob2xkZXIuYXBwZW5kQ2hpbGQoZS50aGVtZS5nZXRFcnJvck1lc3NhZ2UoaS5tZXNzYWdlKSl9KSk6dGhpcy5lcnJvcl9ob2xkZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMub3B0aW9ucy50YWJsZV9yb3cmJihpLmxlbmd0aD90aGlzLnRoZW1lLmFkZFRhYmxlUm93RXJyb3IodGhpcy5jb250YWluZXIpOnRoaXMudGhlbWUucmVtb3ZlVGFibGVSb3dFcnJvcih0aGlzLmNvbnRhaW5lcikpLHModGhpcy5lZGl0b3JzLGZ1bmN0aW9uKHQsZSl7ZS5zaG93VmFsaWRhdGlvbkVycm9ycyhyKX0pfX0pLG4uZGVmYXVsdHMuZWRpdG9ycy5hcnJheT1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7Z2V0RGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjaGVtYVsiZGVmYXVsdCJdfHxbXX0scmVnaXN0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXBlcigpLHRoaXMucm93cylmb3IodmFyIHQ9MDt0PHRoaXMucm93cy5sZW5ndGg7dCsrKXRoaXMucm93c1t0XS5yZWdpc3RlcigpfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fc3VwZXIoKSx0aGlzLnJvd3MpZm9yKHZhciB0PTA7dDx0aGlzLnJvd3MubGVuZ3RoO3QrKyl0aGlzLnJvd3NbdF0udW5yZWdpc3RlcigpfSxnZXROdW1Db2x1bW5zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRJdGVtSW5mbygwKTtyZXR1cm4gdGhpcy50YWJzX2hvbGRlcj9NYXRoLm1heChNYXRoLm1pbigxMix0LndpZHRoKzIpLDQpOnQud2lkdGh9LGVuYWJsZTpmdW5jdGlvbigpe2lmKHRoaXMuYWRkX3Jvd19idXR0b24mJih0aGlzLmFkZF9yb3dfYnV0dG9uLmRpc2FibGVkPSExKSx0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24mJih0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uZGlzYWJsZWQ9ITEpLHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbiYmKHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5kaXNhYmxlZD0hMSksdGhpcy5yb3dzKWZvcih2YXIgdD0wO3Q8dGhpcy5yb3dzLmxlbmd0aDt0KyspdGhpcy5yb3dzW3RdLmVuYWJsZSgpLHRoaXMucm93c1t0XS5tb3ZldXBfYnV0dG9uJiYodGhpcy5yb3dzW3RdLm1vdmV1cF9idXR0b24uZGlzYWJsZWQ9ITEpLHRoaXMucm93c1t0XS5tb3ZlZG93bl9idXR0b24mJih0aGlzLnJvd3NbdF0ubW92ZWRvd25fYnV0dG9uLmRpc2FibGVkPSExKSx0aGlzLnJvd3NbdF0uZGVsZXRlX2J1dHRvbiYmKHRoaXMucm93c1t0XS5kZWxldGVfYnV0dG9uLmRpc2FibGVkPSExKTt0aGlzLl9zdXBlcigpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5hZGRfcm93X2J1dHRvbiYmKHRoaXMuYWRkX3Jvd19idXR0b24uZGlzYWJsZWQ9ITApLHRoaXMucmVtb3ZlX2FsbF9yb3dzX2J1dHRvbiYmKHRoaXMucmVtb3ZlX2FsbF9yb3dzX2J1dHRvbi5kaXNhYmxlZD0hMCksdGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uJiYodGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uLmRpc2FibGVkPSEwKSx0aGlzLnJvd3MpZm9yKHZhciB0PTA7dDx0aGlzLnJvd3MubGVuZ3RoO3QrKyl0aGlzLnJvd3NbdF0uZGlzYWJsZSgpLHRoaXMucm93c1t0XS5tb3ZldXBfYnV0dG9uJiYodGhpcy5yb3dzW3RdLm1vdmV1cF9idXR0b24uZGlzYWJsZWQ9ITApLHRoaXMucm93c1t0XS5tb3ZlZG93bl9idXR0b24mJih0aGlzLnJvd3NbdF0ubW92ZWRvd25fYnV0dG9uLmRpc2FibGVkPSEwKSx0aGlzLnJvd3NbdF0uZGVsZXRlX2J1dHRvbiYmKHRoaXMucm93c1t0XS5kZWxldGVfYnV0dG9uLmRpc2FibGVkPSEwKTt0aGlzLl9zdXBlcigpfSxwcmVCdWlsZDpmdW5jdGlvbigpe3RoaXMuX3N1cGVyKCksdGhpcy5yb3dzPVtdLHRoaXMucm93X2NhY2hlPVtdLHRoaXMuaGlkZV9kZWxldGVfYnV0dG9ucz10aGlzLm9wdGlvbnMuZGlzYWJsZV9hcnJheV9kZWxldGV8fHRoaXMuanNvbmVkaXRvci5vcHRpb25zLmRpc2FibGVfYXJyYXlfZGVsZXRlLHRoaXMuaGlkZV9tb3ZlX2J1dHRvbnM9dGhpcy5vcHRpb25zLmRpc2FibGVfYXJyYXlfcmVvcmRlcnx8dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuZGlzYWJsZV9hcnJheV9yZW9yZGVyLHRoaXMuaGlkZV9hZGRfYnV0dG9uPXRoaXMub3B0aW9ucy5kaXNhYmxlX2FycmF5X2FkZHx8dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuZGlzYWJsZV9hcnJheV9hZGR9LGJ1aWxkOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmNvbXBhY3Q/KHRoaXMucGFuZWw9dGhpcy50aGVtZS5nZXRJbmRlbnRlZFBhbmVsKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wYW5lbCksdGhpcy5jb250cm9scz10aGlzLnRoZW1lLmdldEJ1dHRvbkhvbGRlcigpLHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scyksdGhpcy5yb3dfaG9sZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5yb3dfaG9sZGVyKSk6KHRoaXMuaGVhZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSx0aGlzLmhlYWRlci50ZXh0Q29udGVudD10aGlzLmdldFRpdGxlKCksdGhpcy50aXRsZT10aGlzLnRoZW1lLmdldEhlYWRlcih0aGlzLmhlYWRlcix0aGlzLmlzUmVxdWlyZWQoKSksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50aXRsZSksdGhpcy50aXRsZV9jb250cm9scz10aGlzLnRoZW1lLmdldEhlYWRlckJ1dHRvbkhvbGRlcigpLHRoaXMudGl0bGUuYXBwZW5kQ2hpbGQodGhpcy50aXRsZV9jb250cm9scyksdGhpcy5zY2hlbWEuZGVzY3JpcHRpb24mJih0aGlzLmRlc2NyaXB0aW9uPXRoaXMudGhlbWUuZ2V0RGVzY3JpcHRpb24odGhpcy5zY2hlbWEuZGVzY3JpcHRpb24pLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZGVzY3JpcHRpb24pKSx0aGlzLmVycm9yX2hvbGRlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVycm9yX2hvbGRlciksInRhYnMiPT09dGhpcy5zY2hlbWEuZm9ybWF0Pyh0aGlzLmNvbnRyb2xzPXRoaXMudGhlbWUuZ2V0SGVhZGVyQnV0dG9uSG9sZGVyKCksdGhpcy50aXRsZS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzKSx0aGlzLnRhYnNfaG9sZGVyPXRoaXMudGhlbWUuZ2V0VGFiSG9sZGVyKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJzX2hvbGRlciksdGhpcy5yb3dfaG9sZGVyPXRoaXMudGhlbWUuZ2V0VGFiQ29udGVudEhvbGRlcih0aGlzLnRhYnNfaG9sZGVyKSx0aGlzLmFjdGl2ZV90YWI9bnVsbCk6KHRoaXMucGFuZWw9dGhpcy50aGVtZS5nZXRJbmRlbnRlZFBhbmVsKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wYW5lbCksdGhpcy5yb3dfaG9sZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5yb3dfaG9sZGVyKSx0aGlzLmNvbnRyb2xzPXRoaXMudGhlbWUuZ2V0QnV0dG9uSG9sZGVyKCksdGhpcy5wYW5lbC5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzKSkpLHRoaXMuYWRkQ29udHJvbHMoKX0sb25DaGlsZEVkaXRvckNoYW5nZTpmdW5jdGlvbih0KXt0aGlzLnJlZnJlc2hWYWx1ZSgpLHRoaXMucmVmcmVzaFRhYnMoITApLHRoaXMuX3N1cGVyKHQpfSxnZXRJdGVtVGl0bGU6ZnVuY3Rpb24oKXtpZighdGhpcy5pdGVtX3RpdGxlKWlmKHRoaXMuc2NoZW1hLml0ZW1zJiYhQXJyYXkuaXNBcnJheSh0aGlzLnNjaGVtYS5pdGVtcykpe3ZhciB0PXRoaXMuanNvbmVkaXRvci5leHBhbmRSZWZzKHRoaXMuc2NoZW1hLml0ZW1zKTt0aGlzLml0ZW1fdGl0bGU9dC50aXRsZXx8Iml0ZW0ifWVsc2UgdGhpcy5pdGVtX3RpdGxlPSJpdGVtIjtyZXR1cm4gdGhpcy5pdGVtX3RpdGxlfSxnZXRJdGVtU2NoZW1hOmZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHRoaXMuc2NoZW1hLml0ZW1zKT90Pj10aGlzLnNjaGVtYS5pdGVtcy5sZW5ndGg/dGhpcy5zY2hlbWEuYWRkaXRpb25hbEl0ZW1zPT09ITA/e306dGhpcy5zY2hlbWEuYWRkaXRpb25hbEl0ZW1zP2koe30sdGhpcy5zY2hlbWEuYWRkaXRpb25hbEl0ZW1zKTp2b2lkIDA6aSh7fSx0aGlzLnNjaGVtYS5pdGVtc1t0XSk6dGhpcy5zY2hlbWEuaXRlbXM/aSh7fSx0aGlzLnNjaGVtYS5pdGVtcyk6e319LGdldEl0ZW1JbmZvOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0SXRlbVNjaGVtYSh0KTt0aGlzLml0ZW1faW5mbz10aGlzLml0ZW1faW5mb3x8e307dmFyIGk9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLml0ZW1faW5mb1tpXT90aGlzLml0ZW1faW5mb1tpXTooZT10aGlzLmpzb25lZGl0b3IuZXhwYW5kUmVmcyhlKSx0aGlzLml0ZW1faW5mb1tpXT17dGl0bGU6ZS50aXRsZXx8Iml0ZW0iLCJkZWZhdWx0IjplWyJkZWZhdWx0Il0sd2lkdGg6MTIsY2hpbGRfZWRpdG9yczplLnByb3BlcnRpZXN8fGUuaXRlbXN9LHRoaXMuaXRlbV9pbmZvW2ldKX0sZ2V0RWxlbWVudEVkaXRvcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEl0ZW1JbmZvKHQpLGk9dGhpcy5nZXRJdGVtU2NoZW1hKHQpO2k9dGhpcy5qc29uZWRpdG9yLmV4cGFuZFJlZnMoaSksaS50aXRsZT1lLnRpdGxlKyIgIisodCsxKTt2YXIgcyxyPXRoaXMuanNvbmVkaXRvci5nZXRFZGl0b3JDbGFzcyhpKTtzPXRoaXMudGFic19ob2xkZXI/dGhpcy50aGVtZS5nZXRUYWJDb250ZW50KCk6ZS5jaGlsZF9lZGl0b3JzP3RoaXMudGhlbWUuZ2V0Q2hpbGRFZGl0b3JIb2xkZXIoKTp0aGlzLnRoZW1lLmdldEluZGVudGVkUGFuZWwoKSx0aGlzLnJvd19ob2xkZXIuYXBwZW5kQ2hpbGQocyk7dmFyIG49dGhpcy5qc29uZWRpdG9yLmNyZWF0ZUVkaXRvcihyLHtqc29uZWRpdG9yOnRoaXMuanNvbmVkaXRvcixzY2hlbWE6aSxjb250YWluZXI6cyxwYXRoOnRoaXMucGF0aCsiLiIrdCxwYXJlbnQ6dGhpcyxyZXF1aXJlZDohMH0pO3JldHVybiBuLnByZUJ1aWxkKCksbi5idWlsZCgpLG4ucG9zdEJ1aWxkKCksbi50aXRsZV9jb250cm9sc3x8KG4uYXJyYXlfY29udHJvbHM9dGhpcy50aGVtZS5nZXRCdXR0b25Ib2xkZXIoKSxzLmFwcGVuZENoaWxkKG4uYXJyYXlfY29udHJvbHMpKSxufSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbXB0eSghMCksdGhpcy50aXRsZSYmdGhpcy50aXRsZS5wYXJlbnROb2RlJiZ0aGlzLnRpdGxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy50aXRsZSksdGhpcy5kZXNjcmlwdGlvbiYmdGhpcy5kZXNjcmlwdGlvbi5wYXJlbnROb2RlJiZ0aGlzLmRlc2NyaXB0aW9uLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kZXNjcmlwdGlvbiksdGhpcy5yb3dfaG9sZGVyJiZ0aGlzLnJvd19ob2xkZXIucGFyZW50Tm9kZSYmdGhpcy5yb3dfaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5yb3dfaG9sZGVyKSx0aGlzLmNvbnRyb2xzJiZ0aGlzLmNvbnRyb2xzLnBhcmVudE5vZGUmJnRoaXMuY29udHJvbHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRyb2xzKSx0aGlzLnBhbmVsJiZ0aGlzLnBhbmVsLnBhcmVudE5vZGUmJnRoaXMucGFuZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBhbmVsKSx0aGlzLnJvd3M9dGhpcy5yb3dfY2FjaGU9dGhpcy50aXRsZT10aGlzLmRlc2NyaXB0aW9uPXRoaXMucm93X2hvbGRlcj10aGlzLnBhbmVsPXRoaXMuY29udHJvbHM9bnVsbCx0aGlzLl9zdXBlcigpfSxlbXB0eTpmdW5jdGlvbih0KXtpZih0aGlzLnJvd3Mpe3ZhciBlPXRoaXM7cyh0aGlzLnJvd3MsZnVuY3Rpb24oaSxzKXt0JiYocy50YWImJnMudGFiLnBhcmVudE5vZGUmJnMudGFiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocy50YWIpLGUuZGVzdHJveVJvdyhzLCEwKSxlLnJvd19jYWNoZVtpXT1udWxsKSxlLnJvd3NbaV09bnVsbH0pLGUucm93cz1bXSx0JiYoZS5yb3dfY2FjaGU9W10pfX0sZGVzdHJveVJvdzpmdW5jdGlvbih0LGUpe3ZhciBpPXQuY29udGFpbmVyO2U/KHQuZGVzdHJveSgpLGkucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpLHQudGFiJiZ0LnRhYi5wYXJlbnROb2RlJiZ0LnRhYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQudGFiKSk6KHQudGFiJiYodC50YWIuc3R5bGUuZGlzcGxheT0ibm9uZSIpLGkuc3R5bGUuZGlzcGxheT0ibm9uZSIsdC51bnJlZ2lzdGVyKCkpfSxnZXRNYXg6ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnNjaGVtYS5pdGVtcykmJnRoaXMuc2NoZW1hLmFkZGl0aW9uYWxJdGVtcz09PSExP01hdGgubWluKHRoaXMuc2NoZW1hLml0ZW1zLmxlbmd0aCx0aGlzLnNjaGVtYS5tYXhJdGVtc3x8MS8wKTp0aGlzLnNjaGVtYS5tYXhJdGVtc3x8MS8wfSxyZWZyZXNoVGFiczpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3ModGhpcy5yb3dzLGZ1bmN0aW9uKGkscyl7cy50YWImJih0P3MudGFiX3RleHQudGV4dENvbnRlbnQ9cy5nZXRIZWFkZXJUZXh0KCk6cy50YWI9PT1lLmFjdGl2ZV90YWI/KGUudGhlbWUubWFya1RhYkFjdGl2ZShzLnRhYikscy5jb250YWluZXIuc3R5bGUuZGlzcGxheT0iIik6KGUudGhlbWUubWFya1RhYkluYWN0aXZlKHMudGFiKSxzLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJub25lIikpfSl9LHNldFZhbHVlOmZ1bmN0aW9uKHQsZSl7dD10fHxbXSxBcnJheS5pc0FycmF5KHQpfHwodD1bdF0pO3ZhciBpPUpTT04uc3RyaW5naWZ5KHQpO2lmKGkhPT10aGlzLnNlcmlhbGl6ZWQpe2lmKHRoaXMuc2NoZW1hLm1pbkl0ZW1zKWZvcig7dC5sZW5ndGg8dGhpcy5zY2hlbWEubWluSXRlbXM7KXQucHVzaCh0aGlzLmdldEl0ZW1JbmZvKHQubGVuZ3RoKVsiZGVmYXVsdCJdKTt0aGlzLmdldE1heCgpJiZ0Lmxlbmd0aD50aGlzLmdldE1heCgpJiYodD10LnNsaWNlKDAsdGhpcy5nZXRNYXgoKSkpO3ZhciByPXRoaXM7cyh0LGZ1bmN0aW9uKHQsaSl7ci5yb3dzW3RdP3Iucm93c1t0XS5zZXRWYWx1ZShpLGUpOnIucm93X2NhY2hlW3RdPyhyLnJvd3NbdF09ci5yb3dfY2FjaGVbdF0sci5yb3dzW3RdLnNldFZhbHVlKGksZSksci5yb3dzW3RdLmNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSIiLHIucm93c1t0XS50YWImJihyLnJvd3NbdF0udGFiLnN0eWxlLmRpc3BsYXk9IiIpLHIucm93c1t0XS5yZWdpc3RlcigpKTpyLmFkZFJvdyhpLGUpfSk7Zm9yKHZhciBuPXQubGVuZ3RoO248ci5yb3dzLmxlbmd0aDtuKyspci5kZXN0cm95Um93KHIucm93c1tuXSksci5yb3dzW25dPW51bGw7ci5yb3dzPXIucm93cy5zbGljZSgwLHQubGVuZ3RoKTt2YXIgbz1udWxsO3Moci5yb3dzLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudGFiPT09ci5hY3RpdmVfdGFiPyhvPWUudGFiLCExKTp2b2lkIDB9KSwhbyYmci5yb3dzLmxlbmd0aCYmKG89ci5yb3dzWzBdLnRhYiksci5hY3RpdmVfdGFiPW8sci5yZWZyZXNoVmFsdWUoZSksci5yZWZyZXNoVGFicyghMCksci5yZWZyZXNoVGFicygpLHIub25DaGFuZ2UoKX19LHJlZnJlc2hWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy52YWx1ZT90aGlzLnZhbHVlLmxlbmd0aDowO2lmKHRoaXMudmFsdWU9W10scyh0aGlzLnJvd3MsZnVuY3Rpb24odCxpKXtlLnZhbHVlW3RdPWkuZ2V0VmFsdWUoKX0pLGkhPT10aGlzLnZhbHVlLmxlbmd0aHx8dCl7dmFyIHI9dGhpcy5zY2hlbWEubWluSXRlbXMmJnRoaXMuc2NoZW1hLm1pbkl0ZW1zPj10aGlzLnJvd3MubGVuZ3RoO3ModGhpcy5yb3dzLGZ1bmN0aW9uKHQsaSl7aS5tb3ZlZG93bl9idXR0b24mJih0PT09ZS5yb3dzLmxlbmd0aC0xP2kubW92ZWRvd25fYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiOmkubW92ZWRvd25fYnV0dG9uLnN0eWxlLmRpc3BsYXk9IiIpLGkuZGVsZXRlX2J1dHRvbiYmKHI/aS5kZWxldGVfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiOmkuZGVsZXRlX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSIiKSxlLnZhbHVlW3RdPWkuZ2V0VmFsdWUoKX0pO3ZhciBuPSExO3RoaXMudmFsdWUubGVuZ3RoPzE9PT10aGlzLnZhbHVlLmxlbmd0aD8odGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHJ8fHRoaXMuaGlkZV9kZWxldGVfYnV0dG9ucz90aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSI6KHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSIiLG49ITApKTpyfHx0aGlzLmhpZGVfZGVsZXRlX2J1dHRvbnM/KHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIpOih0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUuZGlzcGxheT0iIix0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uc3R5bGUuZGlzcGxheT0iIixuPSEwKToodGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMucmVtb3ZlX2FsbF9yb3dzX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5nZXRNYXgoKSYmdGhpcy5nZXRNYXgoKTw9dGhpcy5yb3dzLmxlbmd0aHx8dGhpcy5oaWRlX2FkZF9idXR0b24/dGhpcy5hZGRfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIjoodGhpcy5hZGRfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSIiLG49ITApLCF0aGlzLmNvbGxhcHNlZCYmbj90aGlzLmNvbnRyb2xzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6dGhpcy5jb250cm9scy5zdHlsZS5kaXNwbGF5PSJub25lIn19LGFkZFJvdzpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMscj10aGlzLnJvd3MubGVuZ3RoO2kucm93c1tyXT10aGlzLmdldEVsZW1lbnRFZGl0b3IociksaS5yb3dfY2FjaGVbcl09aS5yb3dzW3JdLGkudGFic19ob2xkZXImJihpLnJvd3Nbcl0udGFiX3RleHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGkucm93c1tyXS50YWJfdGV4dC50ZXh0Q29udGVudD1pLnJvd3Nbcl0uZ2V0SGVhZGVyVGV4dCgpLGkucm93c1tyXS50YWI9aS50aGVtZS5nZXRUYWIoaS5yb3dzW3JdLnRhYl90ZXh0KSxpLnJvd3Nbcl0udGFiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbih0KXtpLmFjdGl2ZV90YWI9aS5yb3dzW3JdLnRhYixpLnJlZnJlc2hUYWJzKCksdC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9KSxpLnRoZW1lLmFkZFRhYihpLnRhYnNfaG9sZGVyLGkucm93c1tyXS50YWIpKTt2YXIgbj1pLnJvd3Nbcl0udGl0bGVfY29udHJvbHN8fGkucm93c1tyXS5hcnJheV9jb250cm9scztpLmhpZGVfZGVsZXRlX2J1dHRvbnN8fChpLnJvd3Nbcl0uZGVsZXRlX2J1dHRvbj10aGlzLmdldEJ1dHRvbihpLmdldEl0ZW1UaXRsZSgpLCJkZWxldGUiLCJEZWxldGUgIitpLmdldEl0ZW1UaXRsZSgpKSxpLnJvd3Nbcl0uZGVsZXRlX2J1dHRvbi5jbGFzc05hbWUrPSIgZGVsZXRlIixpLnJvd3Nbcl0uZGVsZXRlX2J1dHRvbi5zZXRBdHRyaWJ1dGUoImRhdGEtaSIsciksaS5yb3dzW3JdLmRlbGV0ZV9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlPTEqdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtaSIpLHI9aS5nZXRWYWx1ZSgpLG49W10sbz1udWxsO3MocixmdW5jdGlvbih0LHMpe3JldHVybiB0PT09ZT92b2lkKGkucm93c1t0XS50YWI9PT1pLmFjdGl2ZV90YWImJihpLnJvd3NbdCsxXT9vPWkucm93c1t0XS50YWI6dCYmKG89aS5yb3dzW3QtMV0udGFiKSkpOnZvaWQgbi5wdXNoKHMpfSksaS5zZXRWYWx1ZShuKSxvJiYoaS5hY3RpdmVfdGFiPW8saS5yZWZyZXNoVGFicygpKSxpLm9uQ2hhbmdlKCEwKX0pLG4mJm4uYXBwZW5kQ2hpbGQoaS5yb3dzW3JdLmRlbGV0ZV9idXR0b24pKSxyJiYhaS5oaWRlX21vdmVfYnV0dG9ucyYmKGkucm93c1tyXS5tb3ZldXBfYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCIiLCJtb3ZldXAiLCJNb3ZlIHVwIiksaS5yb3dzW3JdLm1vdmV1cF9idXR0b24uY2xhc3NOYW1lKz0iIG1vdmV1cCIsaS5yb3dzW3JdLm1vdmV1cF9idXR0b24uc2V0QXR0cmlidXRlKCJkYXRhLWkiLHIpLGkucm93c1tyXS5tb3ZldXBfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZT0xKnRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKTtpZighKDA+PWUpKXt2YXIgcz1pLmdldFZhbHVlKCkscj1zW2UtMV07c1tlLTFdPXNbZV0sc1tlXT1yLGkuc2V0VmFsdWUocyksaS5hY3RpdmVfdGFiPWkucm93c1tlLTFdLnRhYixpLnJlZnJlc2hUYWJzKCksaS5vbkNoYW5nZSghMCl9fSksbiYmbi5hcHBlbmRDaGlsZChpLnJvd3Nbcl0ubW92ZXVwX2J1dHRvbikpLGkuaGlkZV9tb3ZlX2J1dHRvbnN8fChpLnJvd3Nbcl0ubW92ZWRvd25fYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCIiLCJtb3ZlZG93biIsIk1vdmUgZG93biIpLGkucm93c1tyXS5tb3ZlZG93bl9idXR0b24uY2xhc3NOYW1lKz0iIG1vdmVkb3duIixpLnJvd3Nbcl0ubW92ZWRvd25fYnV0dG9uLnNldEF0dHJpYnV0ZSgiZGF0YS1pIixyKSxpLnJvd3Nbcl0ubW92ZWRvd25fYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZT0xKnRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKSxzPWkuZ2V0VmFsdWUoKTtpZighKGU+PXMubGVuZ3RoLTEpKXt2YXIgcj1zW2UrMV07c1tlKzFdPXNbZV0sc1tlXT1yLGkuc2V0VmFsdWUocyksaS5hY3RpdmVfdGFiPWkucm93c1tlKzFdLnRhYixpLnJlZnJlc2hUYWJzKCksaS5vbkNoYW5nZSghMCl9fSksbiYmbi5hcHBlbmRDaGlsZChpLnJvd3Nbcl0ubW92ZWRvd25fYnV0dG9uKSksdCYmaS5yb3dzW3JdLnNldFZhbHVlKHQsZSksaS5yZWZyZXNoVGFicygpfSxhZGRDb250cm9sczpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5jb2xsYXBzZWQ9ITEsdGhpcy50b2dnbGVfYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCIiLCJjb2xsYXBzZSIsIkNvbGxhcHNlIiksdGhpcy50aXRsZV9jb250cm9scy5hcHBlbmRDaGlsZCh0aGlzLnRvZ2dsZV9idXR0b24pO3ZhciBlPXQucm93X2hvbGRlci5zdHlsZS5kaXNwbGF5LGk9dC5jb250cm9scy5zdHlsZS5kaXNwbGF5O3RoaXMudG9nZ2xlX2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24ocyl7cy5wcmV2ZW50RGVmYXVsdCgpLHMuc3RvcFByb3BhZ2F0aW9uKCksdC5jb2xsYXBzZWQ/KHQuY29sbGFwc2VkPSExLHQucGFuZWwmJih0LnBhbmVsLnN0eWxlLmRpc3BsYXk9IiIpLHQucm93X2hvbGRlci5zdHlsZS5kaXNwbGF5PWUsdC50YWJzX2hvbGRlciYmKHQudGFic19ob2xkZXIuc3R5bGUuZGlzcGxheT0iIiksdC5jb250cm9scy5zdHlsZS5kaXNwbGF5PWksdC5zZXRCdXR0b25UZXh0KHRoaXMsIiIsImNvbGxhcHNlIiwiQ29sbGFwc2UiKSk6KHQuY29sbGFwc2VkPSEwLHQucm93X2hvbGRlci5zdHlsZS5kaXNwbGF5PSJub25lIix0LnRhYnNfaG9sZGVyJiYodC50YWJzX2hvbGRlci5zdHlsZS5kaXNwbGF5PSJub25lIiksdC5jb250cm9scy5zdHlsZS5kaXNwbGF5PSJub25lIix0LnBhbmVsJiYodC5wYW5lbC5zdHlsZS5kaXNwbGF5PSJub25lIiksdC5zZXRCdXR0b25UZXh0KHRoaXMsIiIsImV4cGFuZCIsIkV4cGFuZCIpKX0pLHRoaXMub3B0aW9ucy5jb2xsYXBzZWQmJnIodGhpcy50b2dnbGVfYnV0dG9uLCJjbGljayIpLHRoaXMuc2NoZW1hLm9wdGlvbnMmJiJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5zY2hlbWEub3B0aW9ucy5kaXNhYmxlX2NvbGxhcHNlP3RoaXMuc2NoZW1hLm9wdGlvbnMuZGlzYWJsZV9jb2xsYXBzZSYmKHRoaXMudG9nZ2xlX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIik6dGhpcy5qc29uZWRpdG9yLm9wdGlvbnMuZGlzYWJsZV9jb2xsYXBzZSYmKHRoaXMudG9nZ2xlX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5hZGRfcm93X2J1dHRvbj10aGlzLmdldEJ1dHRvbih0aGlzLmdldEl0ZW1UaXRsZSgpLCJhZGQiLCJBZGQgIit0aGlzLmdldEl0ZW1UaXRsZSgpKSx0aGlzLmFkZF9yb3dfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT10LnJvd3MubGVuZ3RoO3Qucm93X2NhY2hlW2ldPyh0LnJvd3NbaV09dC5yb3dfY2FjaGVbaV0sdC5yb3dzW2ldLnNldFZhbHVlKHQucm93c1tpXS5nZXREZWZhdWx0KCkpLHQucm93c1tpXS5jb250YWluZXIuc3R5bGUuZGlzcGxheT0iIix0LnJvd3NbaV0udGFiJiYodC5yb3dzW2ldLnRhYi5zdHlsZS5kaXNwbGF5PSIiKSx0LnJvd3NbaV0ucmVnaXN0ZXIoKSk6dC5hZGRSb3coKSx0LmFjdGl2ZV90YWI9dC5yb3dzW2ldLnRhYix0LnJlZnJlc2hUYWJzKCksdC5yZWZyZXNoVmFsdWUoKSx0Lm9uQ2hhbmdlKCEwKX0pLHQuY29udHJvbHMuYXBwZW5kQ2hpbGQodGhpcy5hZGRfcm93X2J1dHRvbiksdGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCJMYXN0ICIrdGhpcy5nZXRJdGVtVGl0bGUoKSwiZGVsZXRlIiwiRGVsZXRlIExhc3QgIit0aGlzLmdldEl0ZW1UaXRsZSgpKSwKK3RoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGk9dC5nZXRWYWx1ZSgpLHM9bnVsbDt0LnJvd3MubGVuZ3RoPjEmJnQucm93c1t0LnJvd3MubGVuZ3RoLTFdLnRhYj09PXQuYWN0aXZlX3RhYiYmKHM9dC5yb3dzW3Qucm93cy5sZW5ndGgtMl0udGFiKSxpLnBvcCgpLHQuc2V0VmFsdWUoaSkscyYmKHQuYWN0aXZlX3RhYj1zLHQucmVmcmVzaFRhYnMoKSksdC5vbkNoYW5nZSghMCl9KSx0LmNvbnRyb2xzLmFwcGVuZENoaWxkKHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbiksdGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uPXRoaXMuZ2V0QnV0dG9uKCJBbGwiLCJkZWxldGUiLCJEZWxldGUgQWxsIiksdGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LnNldFZhbHVlKFtdKSx0Lm9uQ2hhbmdlKCEwKX0pLHQuY29udHJvbHMuYXBwZW5kQ2hpbGQodGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uKSx0LnRhYnMmJih0aGlzLmFkZF9yb3dfYnV0dG9uLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmFkZF9yb3dfYnV0dG9uLnN0eWxlLnRleHRBbGlnbj0ibGVmdCIsdGhpcy5hZGRfcm93X2J1dHRvbi5zdHlsZS5tYXJnaW5Cb3R0b209IjNweCIsdGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUudGV4dEFsaWduPSJsZWZ0Iix0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUubWFyZ2luQm90dG9tPSIzcHgiLHRoaXMucmVtb3ZlX2FsbF9yb3dzX2J1dHRvbi5zdHlsZS53aWR0aD0iMTAwJSIsdGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uLnN0eWxlLnRleHRBbGlnbj0ibGVmdCIsdGhpcy5yZW1vdmVfYWxsX3Jvd3NfYnV0dG9uLnN0eWxlLm1hcmdpbkJvdHRvbT0iM3B4Iil9LHNob3dWYWxpZGF0aW9uRXJyb3JzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1bXSxyPVtdO3ModCxmdW5jdGlvbih0LHMpe3MucGF0aD09PWUucGF0aD9pLnB1c2gocyk6ci5wdXNoKHMpfSksdGhpcy5lcnJvcl9ob2xkZXImJihpLmxlbmd0aD8odGhpcy5lcnJvcl9ob2xkZXIuaW5uZXJIVE1MPSIiLHRoaXMuZXJyb3JfaG9sZGVyLnN0eWxlLmRpc3BsYXk9IiIscyhpLGZ1bmN0aW9uKHQsaSl7ZS5lcnJvcl9ob2xkZXIuYXBwZW5kQ2hpbGQoZS50aGVtZS5nZXRFcnJvck1lc3NhZ2UoaS5tZXNzYWdlKSl9KSk6dGhpcy5lcnJvcl9ob2xkZXIuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHModGhpcy5yb3dzLGZ1bmN0aW9uKHQsZSl7ZS5zaG93VmFsaWRhdGlvbkVycm9ycyhyKX0pfX0pLG4uZGVmYXVsdHMuZWRpdG9ycy50YWJsZT1uLmRlZmF1bHRzLmVkaXRvcnMuYXJyYXkuZXh0ZW5kKHtyZWdpc3RlcjpmdW5jdGlvbigpe2lmKHRoaXMuX3N1cGVyKCksdGhpcy5yb3dzKWZvcih2YXIgdD0wO3Q8dGhpcy5yb3dzLmxlbmd0aDt0KyspdGhpcy5yb3dzW3RdLnJlZ2lzdGVyKCl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXBlcigpLHRoaXMucm93cylmb3IodmFyIHQ9MDt0PHRoaXMucm93cy5sZW5ndGg7dCsrKXRoaXMucm93c1t0XS51bnJlZ2lzdGVyKCl9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oMTIsdGhpcy53aWR0aCksMyl9LHByZUJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5qc29uZWRpdG9yLmV4cGFuZFJlZnModGhpcy5zY2hlbWEuaXRlbXN8fHt9KTt0aGlzLml0ZW1fdGl0bGU9dC50aXRsZXx8InJvdyIsdGhpcy5pdGVtX2RlZmF1bHQ9dFsiZGVmYXVsdCJdfHxudWxsLHRoaXMuaXRlbV9oYXNfY2hpbGRfZWRpdG9ycz10LnByb3BlcnRpZXN8fHQuaXRlbXMsdGhpcy53aWR0aD0xMix0aGlzLl9zdXBlcigpfSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy50YWJsZT10aGlzLnRoZW1lLmdldFRhYmxlKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50YWJsZSksdGhpcy50aGVhZD10aGlzLnRoZW1lLmdldFRhYmxlSGVhZCgpLHRoaXMudGFibGUuYXBwZW5kQ2hpbGQodGhpcy50aGVhZCksdGhpcy5oZWFkZXJfcm93PXRoaXMudGhlbWUuZ2V0VGFibGVSb3coKSx0aGlzLnRoZWFkLmFwcGVuZENoaWxkKHRoaXMuaGVhZGVyX3JvdyksdGhpcy5yb3dfaG9sZGVyPXRoaXMudGhlbWUuZ2V0VGFibGVCb2R5KCksdGhpcy50YWJsZS5hcHBlbmRDaGlsZCh0aGlzLnJvd19ob2xkZXIpO3ZhciBlPXRoaXMuZ2V0RWxlbWVudEVkaXRvcigwLCEwKTtpZih0aGlzLml0ZW1fZGVmYXVsdD1lLmdldERlZmF1bHQoKSx0aGlzLndpZHRoPWUuZ2V0TnVtQ29sdW1ucygpKzIsdGhpcy5vcHRpb25zLmNvbXBhY3Q/KHRoaXMucGFuZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wYW5lbCkpOih0aGlzLnRpdGxlPXRoaXMudGhlbWUuZ2V0SGVhZGVyKHRoaXMuZ2V0VGl0bGUoKSx0aGlzLmlzUmVxdWlyZWQoKSksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50aXRsZSksdGhpcy50aXRsZV9jb250cm9scz10aGlzLnRoZW1lLmdldEhlYWRlckJ1dHRvbkhvbGRlcigpLHRoaXMudGl0bGUuYXBwZW5kQ2hpbGQodGhpcy50aXRsZV9jb250cm9scyksdGhpcy5zY2hlbWEuZGVzY3JpcHRpb24mJih0aGlzLmRlc2NyaXB0aW9uPXRoaXMudGhlbWUuZ2V0RGVzY3JpcHRpb24odGhpcy5zY2hlbWEuZGVzY3JpcHRpb24pLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZGVzY3JpcHRpb24pKSx0aGlzLnBhbmVsPXRoaXMudGhlbWUuZ2V0SW5kZW50ZWRQYW5lbCgpLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucGFuZWwpLHRoaXMuZXJyb3JfaG9sZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMucGFuZWwuYXBwZW5kQ2hpbGQodGhpcy5lcnJvcl9ob2xkZXIpKSx0aGlzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMudGFibGUpLHRoaXMuY29udHJvbHM9dGhpcy50aGVtZS5nZXRCdXR0b25Ib2xkZXIoKSx0aGlzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMpLHRoaXMuaXRlbV9oYXNfY2hpbGRfZWRpdG9ycylmb3IodmFyIGk9ZS5nZXRDaGlsZEVkaXRvcnMoKSxzPWUucHJvcGVydHlfb3JkZXJ8fE9iamVjdC5rZXlzKGkpLHI9MDtyPHMubGVuZ3RoO3IrKyl7dmFyIG49dC50aGVtZS5nZXRUYWJsZUhlYWRlckNlbGwoaVtzW3JdXS5nZXRUaXRsZSgpKTtpW3Nbcl1dLm9wdGlvbnMuaGlkZGVuJiYobi5zdHlsZS5kaXNwbGF5PSJub25lIiksdC5oZWFkZXJfcm93LmFwcGVuZENoaWxkKG4pfWVsc2UgdC5oZWFkZXJfcm93LmFwcGVuZENoaWxkKHQudGhlbWUuZ2V0VGFibGVIZWFkZXJDZWxsKHRoaXMuaXRlbV90aXRsZSkpO2UuZGVzdHJveSgpLHRoaXMucm93X2hvbGRlci5pbm5lckhUTUw9IiIsdGhpcy5jb250cm9sc19oZWFkZXJfY2VsbD10LnRoZW1lLmdldFRhYmxlSGVhZGVyQ2VsbCgiICIpLHQuaGVhZGVyX3Jvdy5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2xzX2hlYWRlcl9jZWxsKSx0aGlzLmFkZENvbnRyb2xzKCl9LG9uQ2hpbGRFZGl0b3JDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5yZWZyZXNoVmFsdWUoKSx0aGlzLl9zdXBlcigpfSxnZXRJdGVtRGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiBpKHt9LHsiZGVmYXVsdCI6dGhpcy5pdGVtX2RlZmF1bHR9KVsiZGVmYXVsdCJdfSxnZXRJdGVtVGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtX3RpdGxlfSxnZXRFbGVtZW50RWRpdG9yOmZ1bmN0aW9uKHQsZSl7dmFyIHM9aSh7fSx0aGlzLnNjaGVtYS5pdGVtcykscj10aGlzLmpzb25lZGl0b3IuZ2V0RWRpdG9yQ2xhc3Mocyx0aGlzLmpzb25lZGl0b3IpLG49dGhpcy5yb3dfaG9sZGVyLmFwcGVuZENoaWxkKHRoaXMudGhlbWUuZ2V0VGFibGVSb3coKSksbz1uO3RoaXMuaXRlbV9oYXNfY2hpbGRfZWRpdG9yc3x8KG89dGhpcy50aGVtZS5nZXRUYWJsZUNlbGwoKSxuLmFwcGVuZENoaWxkKG8pKTt2YXIgYT10aGlzLmpzb25lZGl0b3IuY3JlYXRlRWRpdG9yKHIse2pzb25lZGl0b3I6dGhpcy5qc29uZWRpdG9yLHNjaGVtYTpzLGNvbnRhaW5lcjpvLHBhdGg6dGhpcy5wYXRoKyIuIit0LHBhcmVudDp0aGlzLGNvbXBhY3Q6ITAsdGFibGVfcm93OiEwfSk7cmV0dXJuIGEucHJlQnVpbGQoKSxlfHwoYS5idWlsZCgpLGEucG9zdEJ1aWxkKCksYS5jb250cm9sc19jZWxsPW4uYXBwZW5kQ2hpbGQodGhpcy50aGVtZS5nZXRUYWJsZUNlbGwoKSksYS5yb3c9bixhLnRhYmxlX2NvbnRyb2xzPXRoaXMudGhlbWUuZ2V0QnV0dG9uSG9sZGVyKCksYS5jb250cm9sc19jZWxsLmFwcGVuZENoaWxkKGEudGFibGVfY29udHJvbHMpLGEudGFibGVfY29udHJvbHMuc3R5bGUubWFyZ2luPTAsYS50YWJsZV9jb250cm9scy5zdHlsZS5wYWRkaW5nPTApLGF9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD0iIix0aGlzLnRpdGxlJiZ0aGlzLnRpdGxlLnBhcmVudE5vZGUmJnRoaXMudGl0bGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnRpdGxlKSx0aGlzLmRlc2NyaXB0aW9uJiZ0aGlzLmRlc2NyaXB0aW9uLnBhcmVudE5vZGUmJnRoaXMuZGVzY3JpcHRpb24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRlc2NyaXB0aW9uKSx0aGlzLnJvd19ob2xkZXImJnRoaXMucm93X2hvbGRlci5wYXJlbnROb2RlJiZ0aGlzLnJvd19ob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnJvd19ob2xkZXIpLHRoaXMudGFibGUmJnRoaXMudGFibGUucGFyZW50Tm9kZSYmdGhpcy50YWJsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGFibGUpLHRoaXMucGFuZWwmJnRoaXMucGFuZWwucGFyZW50Tm9kZSYmdGhpcy5wYW5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGFuZWwpLHRoaXMucm93cz10aGlzLnRpdGxlPXRoaXMuZGVzY3JpcHRpb249dGhpcy5yb3dfaG9sZGVyPXRoaXMudGFibGU9dGhpcy5wYW5lbD1udWxsLHRoaXMuX3N1cGVyKCl9LHNldFZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodD10fHxbXSx0aGlzLnNjaGVtYS5taW5JdGVtcylmb3IoO3QubGVuZ3RoPHRoaXMuc2NoZW1hLm1pbkl0ZW1zOyl0LnB1c2godGhpcy5nZXRJdGVtRGVmYXVsdCgpKTt0aGlzLnNjaGVtYS5tYXhJdGVtcyYmdC5sZW5ndGg+dGhpcy5zY2hlbWEubWF4SXRlbXMmJih0PXQuc2xpY2UoMCx0aGlzLnNjaGVtYS5tYXhJdGVtcykpO3ZhciBpPUpTT04uc3RyaW5naWZ5KHQpO2lmKGkhPT10aGlzLnNlcmlhbGl6ZWQpe3ZhciByPSExLG49dGhpcztzKHQsZnVuY3Rpb24odCxlKXtuLnJvd3NbdF0/bi5yb3dzW3RdLnNldFZhbHVlKGUpOihuLmFkZFJvdyhlKSxyPSEwKX0pO2Zvcih2YXIgbz10Lmxlbmd0aDtvPG4ucm93cy5sZW5ndGg7bysrKXt2YXIgYT1uLnJvd3Nbb10uY29udGFpbmVyO24uaXRlbV9oYXNfY2hpbGRfZWRpdG9yc3x8bi5yb3dzW29dLnJvdy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4ucm93c1tvXS5yb3cpLG4ucm93c1tvXS5kZXN0cm95KCksYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSksbi5yb3dzW29dPW51bGwscj0hMH1uLnJvd3M9bi5yb3dzLnNsaWNlKDAsdC5sZW5ndGgpLG4ucmVmcmVzaFZhbHVlKCksKHJ8fGUpJiZuLnJlZnJlc2hSb3dCdXR0b25zKCksbi5vbkNoYW5nZSgpfX0scmVmcmVzaFJvd0J1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5zY2hlbWEubWluSXRlbXMmJnRoaXMuc2NoZW1hLm1pbkl0ZW1zPj10aGlzLnJvd3MubGVuZ3RoLGk9ITE7cyh0aGlzLnJvd3MsZnVuY3Rpb24ocyxyKXtyLm1vdmVkb3duX2J1dHRvbiYmKHM9PT10LnJvd3MubGVuZ3RoLTE/ci5tb3ZlZG93bl9idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSI6KGk9ITAsci5tb3ZlZG93bl9idXR0b24uc3R5bGUuZGlzcGxheT0iIikpLHIuZGVsZXRlX2J1dHRvbiYmKGU/ci5kZWxldGVfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiOihpPSEwLHIuZGVsZXRlX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSIiKSksci5tb3ZldXBfYnV0dG9uJiYoaT0hMCl9KSxzKHRoaXMucm93cyxmdW5jdGlvbih0LGUpe2k/ZS5jb250cm9sc19jZWxsLnN0eWxlLmRpc3BsYXk9IiI6ZS5jb250cm9sc19jZWxsLnN0eWxlLmRpc3BsYXk9Im5vbmUifSksaT90aGlzLmNvbnRyb2xzX2hlYWRlcl9jZWxsLnN0eWxlLmRpc3BsYXk9IiI6dGhpcy5jb250cm9sc19oZWFkZXJfY2VsbC5zdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgcj0hMTt0aGlzLnZhbHVlLmxlbmd0aD8xPT09dGhpcy52YWx1ZS5sZW5ndGh8fHRoaXMuaGlkZV9kZWxldGVfYnV0dG9ucz8odGhpcy50YWJsZS5zdHlsZS5kaXNwbGF5PSIiLHRoaXMucmVtb3ZlX2FsbF9yb3dzX2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIixlfHx0aGlzLmhpZGVfZGVsZXRlX2J1dHRvbnM/dGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiOih0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUuZGlzcGxheT0iIixyPSEwKSk6KHRoaXMudGFibGUuc3R5bGUuZGlzcGxheT0iIixlfHx0aGlzLmhpZGVfZGVsZXRlX2J1dHRvbnM/KHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIpOih0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b24uc3R5bGUuZGlzcGxheT0iIix0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uc3R5bGUuZGlzcGxheT0iIixyPSEwKSk6KHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy50YWJsZS5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5zY2hlbWEubWF4SXRlbXMmJnRoaXMuc2NoZW1hLm1heEl0ZW1zPD10aGlzLnJvd3MubGVuZ3RofHx0aGlzLmhpZGVfYWRkX2J1dHRvbj90aGlzLmFkZF9yb3dfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiOih0aGlzLmFkZF9yb3dfYnV0dG9uLnN0eWxlLmRpc3BsYXk9IiIscj0hMCkscj90aGlzLmNvbnRyb2xzLnN0eWxlLmRpc3BsYXk9IiI6dGhpcy5jb250cm9scy5zdHlsZS5kaXNwbGF5PSJub25lIn0scmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLnZhbHVlPVtdLHModGhpcy5yb3dzLGZ1bmN0aW9uKGUsaSl7dC52YWx1ZVtlXT1pLmdldFZhbHVlKCl9KSx0aGlzLnNlcmlhbGl6ZWQ9SlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSl9LGFkZFJvdzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9dGhpcy5yb3dzLmxlbmd0aDtlLnJvd3NbaV09dGhpcy5nZXRFbGVtZW50RWRpdG9yKGkpO3ZhciByPWUucm93c1tpXS50YWJsZV9jb250cm9sczt0aGlzLmhpZGVfZGVsZXRlX2J1dHRvbnN8fChlLnJvd3NbaV0uZGVsZXRlX2J1dHRvbj10aGlzLmdldEJ1dHRvbigiIiwiZGVsZXRlIiwiRGVsZXRlIiksZS5yb3dzW2ldLmRlbGV0ZV9idXR0b24uY2xhc3NOYW1lKz0iIGRlbGV0ZSIsZS5yb3dzW2ldLmRlbGV0ZV9idXR0b24uc2V0QXR0cmlidXRlKCJkYXRhLWkiLGkpLGUucm93c1tpXS5kZWxldGVfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgaT0xKnRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLWkiKSxyPWUuZ2V0VmFsdWUoKSxuPVtdO3MocixmdW5jdGlvbih0LGUpe3QhPT1pJiZuLnB1c2goZSl9KSxlLnNldFZhbHVlKG4pLGUub25DaGFuZ2UoITApfSksci5hcHBlbmRDaGlsZChlLnJvd3NbaV0uZGVsZXRlX2J1dHRvbikpLGkmJiF0aGlzLmhpZGVfbW92ZV9idXR0b25zJiYoZS5yb3dzW2ldLm1vdmV1cF9idXR0b249dGhpcy5nZXRCdXR0b24oIiIsIm1vdmV1cCIsIk1vdmUgdXAiKSxlLnJvd3NbaV0ubW92ZXVwX2J1dHRvbi5jbGFzc05hbWUrPSIgbW92ZXVwIixlLnJvd3NbaV0ubW92ZXVwX2J1dHRvbi5zZXRBdHRyaWJ1dGUoImRhdGEtaSIsaSksZS5yb3dzW2ldLm1vdmV1cF9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBpPTEqdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtaSIpO2lmKCEoMD49aSkpe3ZhciBzPWUuZ2V0VmFsdWUoKSxyPXNbaS0xXTtzW2ktMV09c1tpXSxzW2ldPXIsZS5zZXRWYWx1ZShzKSxlLm9uQ2hhbmdlKCEwKX19KSxyLmFwcGVuZENoaWxkKGUucm93c1tpXS5tb3ZldXBfYnV0dG9uKSksdGhpcy5oaWRlX21vdmVfYnV0dG9uc3x8KGUucm93c1tpXS5tb3ZlZG93bl9idXR0b249dGhpcy5nZXRCdXR0b24oIiIsIm1vdmVkb3duIiwiTW92ZSBkb3duIiksZS5yb3dzW2ldLm1vdmVkb3duX2J1dHRvbi5jbGFzc05hbWUrPSIgbW92ZWRvd24iLGUucm93c1tpXS5tb3ZlZG93bl9idXR0b24uc2V0QXR0cmlidXRlKCJkYXRhLWkiLGkpLGUucm93c1tpXS5tb3ZlZG93bl9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBpPTEqdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtaSIpLHM9ZS5nZXRWYWx1ZSgpO2lmKCEoaT49cy5sZW5ndGgtMSkpe3ZhciByPXNbaSsxXTtzW2krMV09c1tpXSxzW2ldPXIsZS5zZXRWYWx1ZShzKSxlLm9uQ2hhbmdlKCEwKX19KSxyLmFwcGVuZENoaWxkKGUucm93c1tpXS5tb3ZlZG93bl9idXR0b24pKSx0JiZlLnJvd3NbaV0uc2V0VmFsdWUodCl9LGFkZENvbnRyb2xzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmNvbGxhcHNlZD0hMSx0aGlzLnRvZ2dsZV9idXR0b249dGhpcy5nZXRCdXR0b24oIiIsImNvbGxhcHNlIiwiQ29sbGFwc2UiKSx0aGlzLnRpdGxlX2NvbnRyb2xzJiYodGhpcy50aXRsZV9jb250cm9scy5hcHBlbmRDaGlsZCh0aGlzLnRvZ2dsZV9idXR0b24pLHRoaXMudG9nZ2xlX2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdC5jb2xsYXBzZWQ/KHQuY29sbGFwc2VkPSExLHQucGFuZWwuc3R5bGUuZGlzcGxheT0iIix0LnNldEJ1dHRvblRleHQodGhpcywiIiwiY29sbGFwc2UiLCJDb2xsYXBzZSIpKToodC5jb2xsYXBzZWQ9ITAsdC5wYW5lbC5zdHlsZS5kaXNwbGF5PSJub25lIix0LnNldEJ1dHRvblRleHQodGhpcywiIiwiZXhwYW5kIiwiRXhwYW5kIikpfSksdGhpcy5vcHRpb25zLmNvbGxhcHNlZCYmcih0aGlzLnRvZ2dsZV9idXR0b24sImNsaWNrIiksdGhpcy5zY2hlbWEub3B0aW9ucyYmInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLnNjaGVtYS5vcHRpb25zLmRpc2FibGVfY29sbGFwc2U/dGhpcy5zY2hlbWEub3B0aW9ucy5kaXNhYmxlX2NvbGxhcHNlJiYodGhpcy50b2dnbGVfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTp0aGlzLmpzb25lZGl0b3Iub3B0aW9ucy5kaXNhYmxlX2NvbGxhcHNlJiYodGhpcy50b2dnbGVfYnV0dG9uLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSksdGhpcy5hZGRfcm93X2J1dHRvbj10aGlzLmdldEJ1dHRvbih0aGlzLmdldEl0ZW1UaXRsZSgpLCJhZGQiLCJBZGQgIit0aGlzLmdldEl0ZW1UaXRsZSgpKSx0aGlzLmFkZF9yb3dfYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0LmFkZFJvdygpLHQucmVmcmVzaFZhbHVlKCksdC5yZWZyZXNoUm93QnV0dG9ucygpLHQub25DaGFuZ2UoITApfSksdC5jb250cm9scy5hcHBlbmRDaGlsZCh0aGlzLmFkZF9yb3dfYnV0dG9uKSx0aGlzLmRlbGV0ZV9sYXN0X3Jvd19idXR0b249dGhpcy5nZXRCdXR0b24oIkxhc3QgIit0aGlzLmdldEl0ZW1UaXRsZSgpLCJkZWxldGUiLCJEZWxldGUgTGFzdCAiK3RoaXMuZ2V0SXRlbVRpdGxlKCkpLHRoaXMuZGVsZXRlX2xhc3Rfcm93X2J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGk9dC5nZXRWYWx1ZSgpO2kucG9wKCksdC5zZXRWYWx1ZShpKSx0Lm9uQ2hhbmdlKCEwKX0pLHQuY29udHJvbHMuYXBwZW5kQ2hpbGQodGhpcy5kZWxldGVfbGFzdF9yb3dfYnV0dG9uKSx0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b249dGhpcy5nZXRCdXR0b24oIkFsbCIsImRlbGV0ZSIsIkRlbGV0ZSBBbGwiKSx0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuc2V0VmFsdWUoW10pLHQub25DaGFuZ2UoITApfSksdC5jb250cm9scy5hcHBlbmRDaGlsZCh0aGlzLnJlbW92ZV9hbGxfcm93c19idXR0b24pfX0pLG4uZGVmYXVsdHMuZWRpdG9ycy5tdWx0aXBsZT1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7cmVnaXN0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmVkaXRvcnMpe2Zvcih2YXIgdD0wO3Q8dGhpcy5lZGl0b3JzLmxlbmd0aDt0KyspdGhpcy5lZGl0b3JzW3RdJiZ0aGlzLmVkaXRvcnNbdF0udW5yZWdpc3RlcigpO3RoaXMuZWRpdG9yc1t0aGlzLnR5cGVdJiZ0aGlzLmVkaXRvcnNbdGhpcy50eXBlXS5yZWdpc3RlcigpfXRoaXMuX3N1cGVyKCl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXBlcigpLHRoaXMuZWRpdG9ycylmb3IodmFyIHQ9MDt0PHRoaXMuZWRpdG9ycy5sZW5ndGg7dCsrKXRoaXMuZWRpdG9yc1t0XSYmdGhpcy5lZGl0b3JzW3RdLnVucmVnaXN0ZXIoKX0sZ2V0TnVtQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkaXRvcnNbdGhpcy50eXBlXT9NYXRoLm1heCh0aGlzLmVkaXRvcnNbdGhpcy50eXBlXS5nZXROdW1Db2x1bW5zKCksNCk6NH0sZW5hYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5lZGl0b3JzKWZvcih2YXIgdD0wO3Q8dGhpcy5lZGl0b3JzLmxlbmd0aDt0KyspdGhpcy5lZGl0b3JzW3RdJiZ0aGlzLmVkaXRvcnNbdF0uZW5hYmxlKCk7dGhpcy5zd2l0Y2hlci5kaXNhYmxlZD0hMSx0aGlzLl9zdXBlcigpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7aWYodGhpcy5lZGl0b3JzKWZvcih2YXIgdD0wO3Q8dGhpcy5lZGl0b3JzLmxlbmd0aDt0KyspdGhpcy5lZGl0b3JzW3RdJiZ0aGlzLmVkaXRvcnNbdF0uZGlzYWJsZSgpO3RoaXMuc3dpdGNoZXIuZGlzYWJsZWQ9ITAsdGhpcy5fc3VwZXIoKX0sc3dpdGNoRWRpdG9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5lZGl0b3JzW3RdfHx0aGlzLmJ1aWxkQ2hpbGRFZGl0b3IodCksZS50eXBlPXQsZS5yZWdpc3RlcigpO3ZhciBpPWUuZ2V0VmFsdWUoKTtzKGUuZWRpdG9ycyxmdW5jdGlvbih0LHMpe3MmJihlLnR5cGU9PT10PyhlLmtlZXBfdmFsdWVzJiZzLnNldFZhbHVlKGksITApLHMuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9IiIpOnMuY29udGFpbmVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0pLGUucmVmcmVzaFZhbHVlKCksZS5yZWZyZXNoSGVhZGVyVGV4dCgpfSxidWlsZENoaWxkRWRpdG9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscz10aGlzLnR5cGVzW3RdLHI9ZS50aGVtZS5nZXRDaGlsZEVkaXRvckhvbGRlcigpO2UuZWRpdG9yX2hvbGRlci5hcHBlbmRDaGlsZChyKTt2YXIgbjsic3RyaW5nIj09dHlwZW9mIHM/KG49aSh7fSxlLnNjaGVtYSksbi50eXBlPXMpOihuPWkoe30sZS5zY2hlbWEscyksbj1lLmpzb25lZGl0b3IuZXhwYW5kUmVmcyhuKSxzLnJlcXVpcmVkJiZBcnJheS5pc0FycmF5KHMucmVxdWlyZWQpJiZlLnNjaGVtYS5yZXF1aXJlZCYmQXJyYXkuaXNBcnJheShlLnNjaGVtYS5yZXF1aXJlZCkmJihuLnJlcXVpcmVkPWUuc2NoZW1hLnJlcXVpcmVkLmNvbmNhdChzLnJlcXVpcmVkKSkpO3ZhciBvPWUuanNvbmVkaXRvci5nZXRFZGl0b3JDbGFzcyhuKTtlLmVkaXRvcnNbdF09ZS5qc29uZWRpdG9yLmNyZWF0ZUVkaXRvcihvLHtqc29uZWRpdG9yOmUuanNvbmVkaXRvcixzY2hlbWE6bixjb250YWluZXI6cixwYXRoOmUucGF0aCxwYXJlbnQ6ZSxyZXF1aXJlZDohMH0pLGUuZWRpdG9yc1t0XS5wcmVCdWlsZCgpLGUuZWRpdG9yc1t0XS5idWlsZCgpLGUuZWRpdG9yc1t0XS5wb3N0QnVpbGQoKSxlLmVkaXRvcnNbdF0uaGVhZGVyJiYoZS5lZGl0b3JzW3RdLmhlYWRlci5zdHlsZS5kaXNwbGF5PSJub25lIiksZS5lZGl0b3JzW3RdLm9wdGlvbj1lLnN3aXRjaGVyX29wdGlvbnNbdF0sci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2VfaGVhZGVyX3RleHQiLGZ1bmN0aW9uKCl7ZS5yZWZyZXNoSGVhZGVyVGV4dCgpfSksdCE9PWUudHlwZSYmKHIuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxwcmVCdWlsZDpmdW5jdGlvbigpe2lmKHRoaXMudHlwZXM9W10sdGhpcy50eXBlPTAsdGhpcy5lZGl0b3JzPVtdLHRoaXMudmFsaWRhdG9ycz1bXSx0aGlzLmtlZXBfdmFsdWVzPSEwLCJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5qc29uZWRpdG9yLm9wdGlvbnMua2VlcF9vbmVvZl92YWx1ZXMmJih0aGlzLmtlZXBfdmFsdWVzPXRoaXMuanNvbmVkaXRvci5vcHRpb25zLmtlZXBfb25lb2ZfdmFsdWVzKSwidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMub3B0aW9ucy5rZWVwX29uZW9mX3ZhbHVlcyYmKHRoaXMua2VlcF92YWx1ZXM9dGhpcy5vcHRpb25zLmtlZXBfb25lb2ZfdmFsdWVzKSx0aGlzLnNjaGVtYS5vbmVPZil0aGlzLm9uZU9mPSEwLHRoaXMudHlwZXM9dGhpcy5zY2hlbWEub25lT2Yscyh0aGlzLnR5cGVzLGZ1bmN0aW9uKHQsZSl7fSksZGVsZXRlIHRoaXMuc2NoZW1hLm9uZU9mO2Vsc2V7aWYodGhpcy5zY2hlbWEudHlwZSYmImFueSIhPT10aGlzLnNjaGVtYS50eXBlKUFycmF5LmlzQXJyYXkodGhpcy5zY2hlbWEudHlwZSk/dGhpcy50eXBlcz10aGlzLnNjaGVtYS50eXBlOnRoaXMudHlwZXM9W3RoaXMuc2NoZW1hLnR5cGVdO2Vsc2UgaWYodGhpcy50eXBlcz1bInN0cmluZyIsIm51bWJlciIsImludGVnZXIiLCJib29sZWFuIiwib2JqZWN0IiwiYXJyYXkiLCJudWxsIl0sdGhpcy5zY2hlbWEuZGlzYWxsb3cpe3ZhciB0PXRoaXMuc2NoZW1hLmRpc2FsbG93OyJvYmplY3QiPT10eXBlb2YgdCYmQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKTt2YXIgZT1bXTtzKHRoaXMudHlwZXMsZnVuY3Rpb24oaSxzKXstMT09PXQuaW5kZXhPZihzKSYmZS5wdXNoKHMpfSksdGhpcy50eXBlcz1lfWRlbGV0ZSB0aGlzLnNjaGVtYS50eXBlfXRoaXMuZGlzcGxheV90ZXh0PXRoaXMuZ2V0RGlzcGxheVRleHQodGhpcy50eXBlcyl9LGJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuY29udGFpbmVyO3RoaXMuaGVhZGVyPXRoaXMubGFiZWw9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRMYWJlbCh0aGlzLmdldFRpdGxlKCksdGhpcy5pc1JlcXVpcmVkKCkpLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuaGVhZGVyKSx0aGlzLnN3aXRjaGVyPXRoaXMudGhlbWUuZ2V0U3dpdGNoZXIodGhpcy5kaXNwbGF5X3RleHQpLGUuYXBwZW5kQ2hpbGQodGhpcy5zd2l0Y2hlciksdGhpcy5zd2l0Y2hlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQuc3dpdGNoRWRpdG9yKHQuZGlzcGxheV90ZXh0LmluZGV4T2YodGhpcy52YWx1ZSkpLHQub25DaGFuZ2UoITApfSksdGhpcy5lZGl0b3JfaG9sZGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuYXBwZW5kQ2hpbGQodGhpcy5lZGl0b3JfaG9sZGVyKSx0aGlzLnN3aXRjaGVyX29wdGlvbnM9dGhpcy50aGVtZS5nZXRTd2l0Y2hlck9wdGlvbnModGhpcy5zd2l0Y2hlcikscyh0aGlzLnR5cGVzLGZ1bmN0aW9uKGUscyl7dC5lZGl0b3JzW2VdPSExO3ZhciByOyJzdHJpbmciPT10eXBlb2Ygcz8ocj1pKHt9LHQuc2NoZW1hKSxyLnR5cGU9cyk6KHI9aSh7fSx0LnNjaGVtYSxzKSxzLnJlcXVpcmVkJiZBcnJheS5pc0FycmF5KHMucmVxdWlyZWQpJiZ0LnNjaGVtYS5yZXF1aXJlZCYmQXJyYXkuaXNBcnJheSh0LnNjaGVtYS5yZXF1aXJlZCkmJihyLnJlcXVpcmVkPXQuc2NoZW1hLnJlcXVpcmVkLmNvbmNhdChzLnJlcXVpcmVkKSkpLHQudmFsaWRhdG9yc1tlXT1uZXcgbi5WYWxpZGF0b3IodC5qc29uZWRpdG9yLHIpfSksdGhpcy5zd2l0Y2hFZGl0b3IoMCl9LG9uQ2hpbGRFZGl0b3JDaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5lZGl0b3JzW3RoaXMudHlwZV0mJih0aGlzLnJlZnJlc2hWYWx1ZSgpLHRoaXMucmVmcmVzaEhlYWRlclRleHQoKSksdGhpcy5fc3VwZXIoKX0scmVmcmVzaEhlYWRlclRleHQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldERpc3BsYXlUZXh0KHRoaXMudHlwZXMpO3ModGhpcy5zd2l0Y2hlcl9vcHRpb25zLGZ1bmN0aW9uKGUsaSl7aS50ZXh0Q29udGVudD10W2VdfSl9LHJlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5lZGl0b3JzW3RoaXMudHlwZV0uZ2V0VmFsdWUoKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO3ModGhpcy52YWxpZGF0b3JzLGZ1bmN0aW9uKGUscyl7cmV0dXJuIHMudmFsaWRhdGUodCkubGVuZ3RoP3ZvaWQgMDooaS50eXBlPWUsaS5zd2l0Y2hlci52YWx1ZT1pLmRpc3BsYXlfdGV4dFtlXSwhMSl9KSx0aGlzLnN3aXRjaEVkaXRvcih0aGlzLnR5cGUpLHRoaXMuZWRpdG9yc1t0aGlzLnR5cGVdLnNldFZhbHVlKHQsZSksdGhpcy5yZWZyZXNoVmFsdWUoKSxpLm9uQ2hhbmdlKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtzKHRoaXMuZWRpdG9ycyxmdW5jdGlvbih0LGUpe2UmJmUuZGVzdHJveSgpfSksdGhpcy5lZGl0b3JfaG9sZGVyJiZ0aGlzLmVkaXRvcl9ob2xkZXIucGFyZW50Tm9kZSYmdGhpcy5lZGl0b3JfaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lZGl0b3JfaG9sZGVyKSx0aGlzLnN3aXRjaGVyJiZ0aGlzLnN3aXRjaGVyLnBhcmVudE5vZGUmJnRoaXMuc3dpdGNoZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnN3aXRjaGVyKSx0aGlzLl9zdXBlcigpfSxzaG93VmFsaWRhdGlvbkVycm9yczpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMub25lT2Y/cyh0aGlzLmVkaXRvcnMsZnVuY3Rpb24ocixuKXtpZihuKXt2YXIgbz1lLnBhdGgrIi5vbmVPZlsiK3IrIl0iLGE9W107cyh0LGZ1bmN0aW9uKHQscyl7aWYocy5wYXRoLnN1YnN0cigwLG8ubGVuZ3RoKT09PW8pe3ZhciByPWkoe30scyk7ci5wYXRoPWUucGF0aCtyLnBhdGguc3Vic3RyKG8ubGVuZ3RoKSxhLnB1c2gocil9fSksbi5zaG93VmFsaWRhdGlvbkVycm9ycyhhKX19KTpzKHRoaXMuZWRpdG9ycyxmdW5jdGlvbihlLGkpe2kmJmkuc2hvd1ZhbGlkYXRpb25FcnJvcnModCl9KX19KSxuLmRlZmF1bHRzLmVkaXRvcnNbImVudW0iXT1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7Z2V0TnVtQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiA0fSxidWlsZDpmdW5jdGlvbigpe3RoaXMuY29udGFpbmVyLHRoaXMudGl0bGU9dGhpcy5oZWFkZXI9dGhpcy5sYWJlbD10aGlzLnRoZW1lLmdldEZvcm1JbnB1dExhYmVsKHRoaXMuZ2V0VGl0bGUoKSx0aGlzLmlzUmVxdWlyZWQoKSksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy50aXRsZSksdGhpcy5vcHRpb25zLmVudW1fdGl0bGVzPXRoaXMub3B0aW9ucy5lbnVtX3RpdGxlc3x8W10sdGhpc1siZW51bSJdPXRoaXMuc2NoZW1hWyJlbnVtIl0sdGhpcy5zZWxlY3RlZD0wLHRoaXMuc2VsZWN0X29wdGlvbnM9W10sdGhpcy5odG1sX3ZhbHVlcz1bXTtmb3IodmFyIHQ9dGhpcyxlPTA7ZTx0aGlzWyJlbnVtIl0ubGVuZ3RoO2UrKyl0aGlzLnNlbGVjdF9vcHRpb25zW2VdPXRoaXMub3B0aW9ucy5lbnVtX3RpdGxlc1tlXXx8IlZhbHVlICIrKGUrMSksdGhpcy5odG1sX3ZhbHVlc1tlXT10aGlzLmdldEhUTUwodGhpc1siZW51bSJdW2VdKTt0aGlzLnN3aXRjaGVyPXRoaXMudGhlbWUuZ2V0U3dpdGNoZXIodGhpcy5zZWxlY3Rfb3B0aW9ucyksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zd2l0Y2hlciksdGhpcy5kaXNwbGF5X2FyZWE9dGhpcy50aGVtZS5nZXRJbmRlbnRlZFBhbmVsKCksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kaXNwbGF5X2FyZWEpLHRoaXMub3B0aW9ucy5oaWRlX2Rpc3BsYXkmJih0aGlzLmRpc3BsYXlfYXJlYS5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5zd2l0Y2hlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dC5zZWxlY3RlZD10LnNlbGVjdF9vcHRpb25zLmluZGV4T2YodGhpcy52YWx1ZSksdC52YWx1ZT10WyJlbnVtIl1bdC5zZWxlY3RlZF0sdC5yZWZyZXNoVmFsdWUoKSx0Lm9uQ2hhbmdlKCEwKX0pLHRoaXMudmFsdWU9dGhpc1siZW51bSJdWzBdLHRoaXMucmVmcmVzaFZhbHVlKCksMT09PXRoaXNbImVudW0iXS5sZW5ndGgmJih0aGlzLnN3aXRjaGVyLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0scmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LnNlbGVjdGVkPS0xO3ZhciBlPUpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpO3JldHVybiBzKHRoaXNbImVudW0iXSxmdW5jdGlvbihpLHMpe3JldHVybiBlPT09SlNPTi5zdHJpbmdpZnkocyk/KHQuc2VsZWN0ZWQ9aSwhMSk6dm9pZCAwfSksdC5zZWxlY3RlZDwwP3ZvaWQgdC5zZXRWYWx1ZSh0WyJlbnVtIl1bMF0pOih0aGlzLnN3aXRjaGVyLnZhbHVlPXRoaXMuc2VsZWN0X29wdGlvbnNbdGhpcy5zZWxlY3RlZF0sdm9pZCh0aGlzLmRpc3BsYXlfYXJlYS5pbm5lckhUTUw9dGhpcy5odG1sX3ZhbHVlc1t0aGlzLnNlbGVjdGVkXSkpfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmFsd2F5c19kaXNhYmxlZHx8KHRoaXMuc3dpdGNoZXIuZGlzYWJsZWQ9ITEpLHRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLnN3aXRjaGVyLmRpc2FibGVkPSEwLHRoaXMuX3N1cGVyKCl9LGdldEhUTUw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT09dClyZXR1cm4iPGVtPm51bGw8L2VtPiI7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgaT0iIjtyZXR1cm4gcyh0LGZ1bmN0aW9uKHMscil7dmFyIG49ZS5nZXRIVE1MKHIpO0FycmF5LmlzQXJyYXkodCl8fChuPSI8ZGl2PjxlbT4iK3MrIjwvZW0+OiAiK24rIjwvZGl2PiIpLGkrPSI8bGk+IituKyI8L2xpPiJ9KSxpPUFycmF5LmlzQXJyYXkodCk/IjxvbD4iK2krIjwvb2w+IjoiPHVsIHN0eWxlPSdtYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDsnPiIraSsiPC91bD4ifXJldHVybiJib29sZWFuIj09dHlwZW9mIHQ/dD8idHJ1ZSI6ImZhbHNlIjoic3RyaW5nIj09dHlwZW9mIHQ/dC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iik6dH0sc2V0VmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZSE9PXQmJih0aGlzLnZhbHVlPXQsdGhpcy5yZWZyZXNoVmFsdWUoKSx0aGlzLm9uQ2hhbmdlKCkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5kaXNwbGF5X2FyZWEmJnRoaXMuZGlzcGxheV9hcmVhLnBhcmVudE5vZGUmJnRoaXMuZGlzcGxheV9hcmVhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kaXNwbGF5X2FyZWEpLHRoaXMudGl0bGUmJnRoaXMudGl0bGUucGFyZW50Tm9kZSYmdGhpcy50aXRsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGl0bGUpLHRoaXMuc3dpdGNoZXImJnRoaXMuc3dpdGNoZXIucGFyZW50Tm9kZSYmdGhpcy5zd2l0Y2hlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuc3dpdGNoZXIpLHRoaXMuX3N1cGVyKCl9fSksbi5kZWZhdWx0cy5lZGl0b3JzLnNlbGVjdD1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7c2V0VmFsdWU6ZnVuY3Rpb24odCxlKXt0PXRoaXMudHlwZWNhc3QodHx8IiIpO3ZhciBpPXQ7dGhpcy5lbnVtX3ZhbHVlcy5pbmRleE9mKGkpPDAmJihpPXRoaXMuZW51bV92YWx1ZXNbMF0pLHRoaXMudmFsdWUhPT1pJiYodGhpcy5pbnB1dC52YWx1ZT10aGlzLmVudW1fb3B0aW9uc1t0aGlzLmVudW1fdmFsdWVzLmluZGV4T2YoaSldLHRoaXMuc2VsZWN0MiYmdGhpcy5zZWxlY3QyLnNlbGVjdDIoInZhbCIsdGhpcy5pbnB1dC52YWx1ZSksdGhpcy52YWx1ZT1pLHRoaXMub25DaGFuZ2UoKSl9LHJlZ2lzdGVyOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsdGhpcy5mb3JtbmFtZSl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuaW5wdXQmJnRoaXMuaW5wdXQucmVtb3ZlQXR0cmlidXRlKCJuYW1lIil9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXtpZighdGhpcy5lbnVtX29wdGlvbnMpcmV0dXJuIDM7Zm9yKHZhciB0PXRoaXMuZ2V0VGl0bGUoKS5sZW5ndGgsZT0wO2U8dGhpcy5lbnVtX29wdGlvbnMubGVuZ3RoO2UrKyl0PU1hdGgubWF4KHQsdGhpcy5lbnVtX29wdGlvbnNbZV0ubGVuZ3RoKzQpO3JldHVybiBNYXRoLm1pbigxMixNYXRoLm1heCh0LzcsMikpfSx0eXBlY2FzdDpmdW5jdGlvbih0KXtyZXR1cm4iYm9vbGVhbiI9PT10aGlzLnNjaGVtYS50eXBlPyEhdDoibnVtYmVyIj09PXRoaXMuc2NoZW1hLnR5cGU/MSp0OiJpbnRlZ2VyIj09PXRoaXMuc2NoZW1hLnR5cGU/TWF0aC5mbG9vcigxKnQpOiIiK3R9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHByZUJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLmlucHV0X3R5cGU9InNlbGVjdCIsdGhpcy5lbnVtX29wdGlvbnM9W10sdGhpcy5lbnVtX3ZhbHVlcz1bXSx0aGlzLmVudW1fZGlzcGxheT1bXSx0aGlzLnNjaGVtYVsiZW51bSJdKXt2YXIgZT10aGlzLnNjaGVtYS5vcHRpb25zJiZ0aGlzLnNjaGVtYS5vcHRpb25zLmVudW1fdGl0bGVzfHxbXTtzKHRoaXMuc2NoZW1hWyJlbnVtIl0sZnVuY3Rpb24oaSxzKXt0LmVudW1fb3B0aW9uc1tpXT0iIitzLHQuZW51bV9kaXNwbGF5W2ldPSIiKyhlW2ldfHxzKSx0LmVudW1fdmFsdWVzW2ldPXQudHlwZWNhc3Qocyl9KSx0aGlzLmlzUmVxdWlyZWQoKXx8KHQuZW51bV9kaXNwbGF5LnVuc2hpZnQoIiAiKSx0LmVudW1fb3B0aW9ucy51bnNoaWZ0KCJ1bmRlZmluZWQiKSx0LmVudW1fdmFsdWVzLnVuc2hpZnQodm9pZCAwKSl9ZWxzZSBpZigiYm9vbGVhbiI9PT10aGlzLnNjaGVtYS50eXBlKXQuZW51bV9kaXNwbGF5PXRoaXMuc2NoZW1hLm9wdGlvbnMmJnRoaXMuc2NoZW1hLm9wdGlvbnMuZW51bV90aXRsZXN8fFsidHJ1ZSIsImZhbHNlIl0sdC5lbnVtX29wdGlvbnM9WyIxIiwiIl0sdC5lbnVtX3ZhbHVlcz1bITAsITFdLHRoaXMuaXNSZXF1aXJlZCgpfHwodC5lbnVtX2Rpc3BsYXkudW5zaGlmdCgiICIpLHQuZW51bV9vcHRpb25zLnVuc2hpZnQoInVuZGVmaW5lZCIpLHQuZW51bV92YWx1ZXMudW5zaGlmdCh2b2lkIDApKTtlbHNle2lmKCF0aGlzLnNjaGVtYS5lbnVtU291cmNlKXRocm93IidzZWxlY3QnIGVkaXRvciByZXF1aXJlcyB0aGUgZW51bSBwcm9wZXJ0eSB0byBiZSBzZXQuIjtpZih0aGlzLmVudW1Tb3VyY2U9W10sdGhpcy5lbnVtX2Rpc3BsYXk9W10sdGhpcy5lbnVtX29wdGlvbnM9W10sdGhpcy5lbnVtX3ZhbHVlcz1bXSxBcnJheS5pc0FycmF5KHRoaXMuc2NoZW1hLmVudW1Tb3VyY2UpKWZvcihhPTA7YTx0aGlzLnNjaGVtYS5lbnVtU291cmNlLmxlbmd0aDthKyspInN0cmluZyI9PXR5cGVvZiB0aGlzLnNjaGVtYS5lbnVtU291cmNlW2FdP3RoaXMuZW51bVNvdXJjZVthXT17c291cmNlOnRoaXMuc2NoZW1hLmVudW1Tb3VyY2VbYV19OkFycmF5LmlzQXJyYXkodGhpcy5zY2hlbWEuZW51bVNvdXJjZVthXSk/dGhpcy5lbnVtU291cmNlW2FdPXRoaXMuc2NoZW1hLmVudW1Tb3VyY2VbYV06dGhpcy5lbnVtU291cmNlW2FdPWkoe30sdGhpcy5zY2hlbWEuZW51bVNvdXJjZVthXSk7ZWxzZSB0aGlzLnNjaGVtYS5lbnVtVmFsdWU/dGhpcy5lbnVtU291cmNlPVt7c291cmNlOnRoaXMuc2NoZW1hLmVudW1Tb3VyY2UsdmFsdWU6dGhpcy5zY2hlbWEuZW51bVZhbHVlfV06dGhpcy5lbnVtU291cmNlPVt7c291cmNlOnRoaXMuc2NoZW1hLmVudW1Tb3VyY2V9XTtmb3IoYT0wO2E8dGhpcy5lbnVtU291cmNlLmxlbmd0aDthKyspdGhpcy5lbnVtU291cmNlW2FdLnZhbHVlJiYodGhpcy5lbnVtU291cmNlW2FdLnZhbHVlPXRoaXMuanNvbmVkaXRvci5jb21waWxlVGVtcGxhdGUodGhpcy5lbnVtU291cmNlW2FdLnZhbHVlLHRoaXMudGVtcGxhdGVfZW5naW5lKSksdGhpcy5lbnVtU291cmNlW2FdLnRpdGxlJiYodGhpcy5lbnVtU291cmNlW2FdLnRpdGxlPXRoaXMuanNvbmVkaXRvci5jb21waWxlVGVtcGxhdGUodGhpcy5lbnVtU291cmNlW2FdLnRpdGxlLHRoaXMudGVtcGxhdGVfZW5naW5lKSksdGhpcy5lbnVtU291cmNlW2FdLmZpbHRlciYmKHRoaXMuZW51bVNvdXJjZVthXS5maWx0ZXI9dGhpcy5qc29uZWRpdG9yLmNvbXBpbGVUZW1wbGF0ZSh0aGlzLmVudW1Tb3VyY2VbYV0uZmlsdGVyLHRoaXMudGVtcGxhdGVfZW5naW5lKSl9fSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5vcHRpb25zLmNvbXBhY3R8fCh0aGlzLmhlYWRlcj10aGlzLmxhYmVsPXRoaXMudGhlbWUuZ2V0Rm9ybUlucHV0TGFiZWwodGhpcy5nZXRUaXRsZSgpLHRoaXMuaXNSZXF1aXJlZCgpKSksdGhpcy5zY2hlbWEuZGVzY3JpcHRpb24mJih0aGlzLmRlc2NyaXB0aW9uPXRoaXMudGhlbWUuZ2V0Rm9ybUlucHV0RGVzY3JpcHRpb24odGhpcy5zY2hlbWEuZGVzY3JpcHRpb24pKSx0aGlzLm9wdGlvbnMuY29tcGFjdCYmKHRoaXMuY29udGFpbmVyLmNsYXNzTmFtZSs9IiBjb21wYWN0IiksdGhpcy5pbnB1dD10aGlzLnRoZW1lLmdldFNlbGVjdElucHV0KHRoaXMuZW51bV9vcHRpb25zKSx0aGlzLnRoZW1lLnNldFNlbGVjdE9wdGlvbnModGhpcy5pbnB1dCx0aGlzLmVudW1fb3B0aW9ucyx0aGlzLmVudW1fZGlzcGxheSksKHRoaXMuc2NoZW1hLnJlYWRPbmx5fHx0aGlzLnNjaGVtYS5yZWFkb25seSkmJih0aGlzLmFsd2F5c19kaXNhYmxlZD0hMCx0aGlzLmlucHV0LmRpc2FibGVkPSEwKSx0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdC5vbklucHV0Q2hhbmdlKCl9KSx0aGlzLmNvbnRyb2w9dGhpcy50aGVtZS5nZXRGb3JtQ29udHJvbCh0aGlzLmxhYmVsLHRoaXMuaW5wdXQsdGhpcy5kZXNjcmlwdGlvbiksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9sKSx0aGlzLnZhbHVlPXRoaXMuZW51bV92YWx1ZXNbMF19LG9uSW5wdXRDaGFuZ2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlucHV0LnZhbHVlLGU9dDstMT09PXRoaXMuZW51bV9vcHRpb25zLmluZGV4T2YodCkmJihlPXRoaXMuZW51bV9vcHRpb25zWzBdKSx0aGlzLnZhbHVlPXRoaXMuZW51bV92YWx1ZXNbdGhpcy5lbnVtX29wdGlvbnMuaW5kZXhPZih0KV0sdGhpcy5vbkNoYW5nZSghMCl9LHNldHVwU2VsZWN0MjpmdW5jdGlvbigpe2lmKHdpbmRvdy5qUXVlcnkmJndpbmRvdy5qUXVlcnkuZm4mJndpbmRvdy5qUXVlcnkuZm4uc2VsZWN0MiYmKHRoaXMuZW51bV9vcHRpb25zLmxlbmd0aD4yfHx0aGlzLmVudW1fb3B0aW9ucy5sZW5ndGgmJnRoaXMuZW51bVNvdXJjZSkpe3ZhciB0PWkoe30sbi5wbHVnaW5zLnNlbGVjdDIpO3RoaXMuc2NoZW1hLm9wdGlvbnMmJnRoaXMuc2NoZW1hLm9wdGlvbnMuc2VsZWN0Ml9vcHRpb25zJiYodD1pKHQsdGhpcy5zY2hlbWEub3B0aW9ucy5zZWxlY3QyX29wdGlvbnMpKSx0aGlzLnNlbGVjdDI9d2luZG93LmpRdWVyeSh0aGlzLmlucHV0KS5zZWxlY3QyKHQpO3ZhciBlPXRoaXM7dGhpcy5zZWxlY3QyLm9uKCJzZWxlY3QyLWJsdXIiLGZ1bmN0aW9uKCl7ZS5pbnB1dC52YWx1ZT1lLnNlbGVjdDIuc2VsZWN0MigidmFsIiksZS5vbklucHV0Q2hhbmdlKCl9KX1lbHNlIHRoaXMuc2VsZWN0Mj1udWxsfSxwb3N0QnVpbGQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMudGhlbWUuYWZ0ZXJJbnB1dFJlYWR5KHRoaXMuaW5wdXQpLHRoaXMuc2V0dXBTZWxlY3QyKCl9LG9uV2F0Y2hlZEZpZWxkQ2hhbmdlOmZ1bmN0aW9uKCl7dmFyIHQsZTtpZih0aGlzLmVudW1Tb3VyY2Upe3Q9dGhpcy5nZXRXYXRjaGVkRmllbGRWYWx1ZXMoKTtmb3IodmFyIGk9W10scz1bXSxyPTA7cjx0aGlzLmVudW1Tb3VyY2UubGVuZ3RoO3IrKylpZihBcnJheS5pc0FycmF5KHRoaXMuZW51bVNvdXJjZVtyXSkpaT1pLmNvbmNhdCh0aGlzLmVudW1Tb3VyY2Vbcl0pLHM9cy5jb25jYXQodGhpcy5lbnVtU291cmNlW3JdKTtlbHNle3ZhciBuPVtdO2lmKG49QXJyYXkuaXNBcnJheSh0aGlzLmVudW1Tb3VyY2Vbcl0uc291cmNlKT90aGlzLmVudW1Tb3VyY2Vbcl0uc291cmNlOnRbdGhpcy5lbnVtU291cmNlW3JdLnNvdXJjZV0pe2lmKHRoaXMuZW51bVNvdXJjZVtyXS5zbGljZSYmKG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG4sdGhpcy5lbnVtU291cmNlW3JdLnNsaWNlKSksdGhpcy5lbnVtU291cmNlW3JdLmZpbHRlcil7dmFyIG89W107Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyl0aGlzLmVudW1Tb3VyY2Vbcl0uZmlsdGVyKHtpOmUsaXRlbTpuW2VdLHdhdGNoZWQ6dH0pJiZvLnB1c2gobltlXSk7bj1vfXZhciBhPVtdLGg9W107Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyl7dmFyIGw9bltlXTt0aGlzLmVudW1Tb3VyY2Vbcl0udmFsdWU/aFtlXT10aGlzLmVudW1Tb3VyY2Vbcl0udmFsdWUoe2k6ZSxpdGVtOmx9KTpoW2VdPW5bZV0sdGhpcy5lbnVtU291cmNlW3JdLnRpdGxlP2FbZV09dGhpcy5lbnVtU291cmNlW3JdLnRpdGxlKHtpOmUsaXRlbTpsfSk6YVtlXT1oW2VdfWk9aS5jb25jYXQoaCkscz1zLmNvbmNhdChhKX19dmFyIGQ9dGhpcy52YWx1ZTt0aGlzLnRoZW1lLnNldFNlbGVjdE9wdGlvbnModGhpcy5pbnB1dCxpLHMpLHRoaXMuZW51bV9vcHRpb25zPWksdGhpcy5lbnVtX2Rpc3BsYXk9cyx0aGlzLmVudW1fdmFsdWVzPWksdGhpcy5zZWxlY3QyJiZ0aGlzLnNlbGVjdDIuc2VsZWN0MigiZGVzdHJveSIpLC0xIT09aS5pbmRleE9mKGQpPyh0aGlzLmlucHV0LnZhbHVlPWQsdGhpcy52YWx1ZT1kKToodGhpcy5pbnB1dC52YWx1ZT1pWzBdLHRoaXMudmFsdWU9aVswXXx8IiIsdGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQub25DaGlsZEVkaXRvckNoYW5nZSh0aGlzKTp0aGlzLmpzb25lZGl0b3Iub25DaGFuZ2UoKSx0aGlzLmpzb25lZGl0b3Iubm90aWZ5V2F0Y2hlcnModGhpcy5wYXRoKSksdGhpcy5zZXR1cFNlbGVjdDIoKX10aGlzLl9zdXBlcigpfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmFsd2F5c19kaXNhYmxlZHx8KHRoaXMuaW5wdXQuZGlzYWJsZWQ9ITEsdGhpcy5zZWxlY3QyJiZ0aGlzLnNlbGVjdDIuc2VsZWN0MigiZW5hYmxlIiwhMCkpLHRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLmlucHV0LmRpc2FibGVkPSEwLHRoaXMuc2VsZWN0MiYmdGhpcy5zZWxlY3QyLnNlbGVjdDIoImVuYWJsZSIsITEpLHRoaXMuX3N1cGVyKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLnBhcmVudE5vZGUmJnRoaXMubGFiZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmxhYmVsKSx0aGlzLmRlc2NyaXB0aW9uJiZ0aGlzLmRlc2NyaXB0aW9uLnBhcmVudE5vZGUmJnRoaXMuZGVzY3JpcHRpb24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRlc2NyaXB0aW9uKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnBhcmVudE5vZGUmJnRoaXMuaW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmlucHV0KSx0aGlzLnNlbGVjdDImJih0aGlzLnNlbGVjdDIuc2VsZWN0MigiZGVzdHJveSIpLHRoaXMuc2VsZWN0Mj1udWxsKSx0aGlzLl9zdXBlcigpfX0pLG4uZGVmYXVsdHMuZWRpdG9ycy5tdWx0aXNlbGVjdD1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7cHJlQnVpbGQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuc2VsZWN0X29wdGlvbnM9e30sdGhpcy5zZWxlY3RfdmFsdWVzPXt9O3ZhciB0PXRoaXMuanNvbmVkaXRvci5leHBhbmRSZWZzKHRoaXMuc2NoZW1hLml0ZW1zfHx7fSksZT10WyJlbnVtIl18fFtdO2Zvcih0aGlzLm9wdGlvbl9rZXlzPVtdLGE9MDthPGUubGVuZ3RoO2ErKyl0aGlzLnNhbml0aXplKGVbYV0pPT09ZVthXSYmKHRoaXMub3B0aW9uX2tleXMucHVzaChlW2FdKyIiKSx0aGlzLnNlbGVjdF92YWx1ZXNbZVthXSsiIl09ZVthXSl9LGJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzO2lmKHRoaXMub3B0aW9ucy5jb21wYWN0fHwodGhpcy5oZWFkZXI9dGhpcy5sYWJlbD10aGlzLnRoZW1lLmdldEZvcm1JbnB1dExhYmVsKHRoaXMuZ2V0VGl0bGUoKSx0aGlzLmlzUmVxdWlyZWQoKSkpLHRoaXMuc2NoZW1hLmRlc2NyaXB0aW9uJiYodGhpcy5kZXNjcmlwdGlvbj10aGlzLnRoZW1lLmdldEZvcm1JbnB1dERlc2NyaXB0aW9uKHRoaXMuc2NoZW1hLmRlc2NyaXB0aW9uKSksIXRoaXMuc2NoZW1hLmZvcm1hdCYmdGhpcy5vcHRpb25fa2V5cy5sZW5ndGg8OHx8ImNoZWNrYm94Ij09PXRoaXMuc2NoZW1hLmZvcm1hdCl7Zm9yKHRoaXMuaW5wdXRfdHlwZT0iY2hlY2tib3hlcyIsdGhpcy5pbnB1dHM9e30sdGhpcy5jb250cm9scz17fSx0PTA7dDx0aGlzLm9wdGlvbl9rZXlzLmxlbmd0aDt0Kyspe3RoaXMuaW5wdXRzW3RoaXMub3B0aW9uX2tleXNbdF1dPXRoaXMudGhlbWUuZ2V0Q2hlY2tib3goKSx0aGlzLnNlbGVjdF9vcHRpb25zW3RoaXMub3B0aW9uX2tleXNbdF1dPXRoaXMuaW5wdXRzW3RoaXMub3B0aW9uX2tleXNbdF1dO3ZhciBpPXRoaXMudGhlbWUuZ2V0Q2hlY2tib3hMYWJlbCh0aGlzLm9wdGlvbl9rZXlzW3RdKTt0aGlzLmNvbnRyb2xzW3RoaXMub3B0aW9uX2tleXNbdF1dPXRoaXMudGhlbWUuZ2V0Rm9ybUNvbnRyb2woaSx0aGlzLmlucHV0c1t0aGlzLm9wdGlvbl9rZXlzW3RdXSl9dGhpcy5jb250cm9sPXRoaXMudGhlbWUuZ2V0TXVsdGlDaGVja2JveEhvbGRlcih0aGlzLmNvbnRyb2xzLHRoaXMubGFiZWwsdGhpcy5kZXNjcmlwdGlvbil9ZWxzZXtmb3IodGhpcy5pbnB1dF90eXBlPSJzZWxlY3QiLHRoaXMuaW5wdXQ9dGhpcy50aGVtZS5nZXRTZWxlY3RJbnB1dCh0aGlzLm9wdGlvbl9rZXlzKSx0aGlzLmlucHV0Lm11bHRpcGxlPSEwLHRoaXMuaW5wdXQuc2l6ZT1NYXRoLm1pbigxMCx0aGlzLm9wdGlvbl9rZXlzLmxlbmd0aCksdD0wO3Q8dGhpcy5vcHRpb25fa2V5cy5sZW5ndGg7dCsrKXRoaXMuc2VsZWN0X29wdGlvbnNbdGhpcy5vcHRpb25fa2V5c1t0XV09dGhpcy5pbnB1dC5jaGlsZHJlblt0XTsodGhpcy5zY2hlbWEucmVhZE9ubHl8fHRoaXMuc2NoZW1hLnJlYWRvbmx5KSYmKHRoaXMuYWx3YXlzX2Rpc2FibGVkPSEwLHRoaXMuaW5wdXQuZGlzYWJsZWQ9ITApLHRoaXMuY29udHJvbD10aGlzLnRoZW1lLmdldEZvcm1Db250cm9sKHRoaXMubGFiZWwsdGhpcy5pbnB1dCx0aGlzLmRlc2NyaXB0aW9uKX10aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2wpLHRoaXMuY29udHJvbC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe2kucHJldmVudERlZmF1bHQoKSxpLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBzPVtdO2Zvcih0PTA7dDxlLm9wdGlvbl9rZXlzLmxlbmd0aDt0KyspKGUuc2VsZWN0X29wdGlvbnNbZS5vcHRpb25fa2V5c1t0XV0uc2VsZWN0ZWR8fGUuc2VsZWN0X29wdGlvbnNbZS5vcHRpb25fa2V5c1t0XV0uY2hlY2tlZCkmJnMucHVzaChlLnNlbGVjdF92YWx1ZXNbZS5vcHRpb25fa2V5c1t0XV0pO2UudXBkYXRlVmFsdWUocyksZS5vbkNoYW5nZSghMCl9KX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaTtmb3IodD10fHxbXSwib2JqZWN0IiE9dHlwZW9mIHQ/dD1bdF06QXJyYXkuaXNBcnJheSh0KXx8KHQ9W10pLGk9MDtpPHQubGVuZ3RoO2krKykic3RyaW5nIiE9dHlwZW9mIHRbaV0mJih0W2ldKz0iIik7Zm9yKGkgaW4gdGhpcy5zZWxlY3Rfb3B0aW9ucyl0aGlzLnNlbGVjdF9vcHRpb25zLmhhc093blByb3BlcnR5KGkpJiYodGhpcy5zZWxlY3Rfb3B0aW9uc1tpXVsic2VsZWN0Ij09PXRoaXMuaW5wdXRfdHlwZT8ic2VsZWN0ZWQiOiJjaGVja2VkIl09LTEhPT10LmluZGV4T2YoaSkpO3RoaXMudXBkYXRlVmFsdWUodCksdGhpcy5vbkNoYW5nZSgpfSxzZXR1cFNlbGVjdDI6ZnVuY3Rpb24oKXtpZih3aW5kb3cualF1ZXJ5JiZ3aW5kb3cualF1ZXJ5LmZuJiZ3aW5kb3cualF1ZXJ5LmZuLnNlbGVjdDIpe3ZhciB0PXdpbmRvdy5qUXVlcnkuZXh0ZW5kKHt9LG4ucGx1Z2lucy5zZWxlY3QyKTt0aGlzLnNjaGVtYS5vcHRpb25zJiZ0aGlzLnNjaGVtYS5vcHRpb25zLnNlbGVjdDJfb3B0aW9ucyYmKHQ9aSh0LHRoaXMuc2NoZW1hLm9wdGlvbnMuc2VsZWN0Ml9vcHRpb25zKSksdGhpcy5zZWxlY3QyPXdpbmRvdy5qUXVlcnkodGhpcy5pbnB1dCkuc2VsZWN0Mih0KTt2YXIgZT10aGlzO3RoaXMuc2VsZWN0Mi5vbigic2VsZWN0Mi1ibHVyIixmdW5jdGlvbigpe3ZhciB0PWUuc2VsZWN0Mi5zZWxlY3QyKCJ2YWwiKTtlLnZhbHVlPXQsZS5vbkNoYW5nZSghMCl9KX1lbHNlIHRoaXMuc2VsZWN0Mj1udWxsfSxvbklucHV0Q2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLmlucHV0LnZhbHVlLHRoaXMub25DaGFuZ2UoITApfSxwb3N0QnVpbGQ6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuc2V0dXBTZWxlY3QyKCl9LHJlZ2lzdGVyOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsdGhpcy5mb3JtbmFtZSl9LHVucmVnaXN0ZXI6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuaW5wdXQmJnRoaXMuaW5wdXQucmVtb3ZlQXR0cmlidXRlKCJuYW1lIil9LGdldE51bUNvbHVtbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFRpdGxlKCkubGVuZ3RoO2Zvcih2YXIgZSBpbiB0aGlzLnNlbGVjdF92YWx1ZXMpdGhpcy5zZWxlY3RfdmFsdWVzLmhhc093blByb3BlcnR5KGUpJiYodD1NYXRoLm1heCh0LCh0aGlzLnNlbGVjdF92YWx1ZXNbZV0rIiIpLmxlbmd0aCs0KSk7cmV0dXJuIE1hdGgubWluKDEyLE1hdGgubWF4KHQvNywyKSl9LHVwZGF0ZVZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMSxpPVtdLHM9MDtzPHQubGVuZ3RoO3MrKylpZih0aGlzLnNlbGVjdF9vcHRpb25zW3Rbc10rIiJdKXt2YXIgcj10aGlzLnNhbml0aXplKHRoaXMuc2VsZWN0X3ZhbHVlc1t0W3NdXSk7aS5wdXNoKHIpLHIhPT10W3NdJiYoZT0hMCl9ZWxzZSBlPSEwO3JldHVybiB0aGlzLnZhbHVlPWksdGhpcy5zZWxlY3QyJiZ0aGlzLnNlbGVjdDIuc2VsZWN0MigidmFsIix0aGlzLnZhbHVlKSxlfSxzYW5pdGl6ZTpmdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09PXRoaXMuc2NoZW1hLml0ZW1zLnR5cGU/MSp0OiJpbnRlZ2VyIj09PXRoaXMuc2NoZW1hLml0ZW1zLnR5cGU/TWF0aC5mbG9vcigxKnQpOiIiK3R9LGVuYWJsZTpmdW5jdGlvbigpe2lmKCF0aGlzLmFsd2F5c19kaXNhYmxlZCl7aWYodGhpcy5pbnB1dCl0aGlzLmlucHV0LmRpc2FibGVkPSExO2Vsc2UgaWYodGhpcy5pbnB1dHMpZm9yKHZhciB0IGluIHRoaXMuaW5wdXRzKXRoaXMuaW5wdXRzLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5pbnB1dHNbdF0uZGlzYWJsZWQ9ITEpO3RoaXMuc2VsZWN0MiYmdGhpcy5zZWxlY3QyLnNlbGVjdDIoImVuYWJsZSIsITApfXRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXtpZih0aGlzLmlucHV0KXRoaXMuaW5wdXQuZGlzYWJsZWQ9ITA7ZWxzZSBpZih0aGlzLmlucHV0cylmb3IodmFyIHQgaW4gdGhpcy5pbnB1dHMpdGhpcy5pbnB1dHMuaGFzT3duUHJvcGVydHkodCkmJih0aGlzLmlucHV0c1t0XS5kaXNhYmxlZD0hMCk7dGhpcy5zZWxlY3QyJiZ0aGlzLnNlbGVjdDIuc2VsZWN0MigiZW5hYmxlIiwhMSksdGhpcy5fc3VwZXIoKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0MiYmKHRoaXMuc2VsZWN0Mi5zZWxlY3QyKCJkZXN0cm95IiksdGhpcy5zZWxlY3QyPW51bGwpLHRoaXMuX3N1cGVyKCl9fSksbi5kZWZhdWx0cy5lZGl0b3JzLmJhc2U2ND1uLkFic3RyYWN0RWRpdG9yLmV4dGVuZCh7Z2V0TnVtQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiA0fSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy50aXRsZT10aGlzLmhlYWRlcj10aGlzLmxhYmVsPXRoaXMudGhlbWUuZ2V0Rm9ybUlucHV0TGFiZWwodGhpcy5nZXRUaXRsZSgpLHRoaXMuaXNSZXF1aXJlZCgpKSx0aGlzLmlucHV0PXRoaXMudGhlbWUuZ2V0Rm9ybUlucHV0RmllbGQoImhpZGRlbiIpLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuaW5wdXQpLCF0aGlzLnNjaGVtYS5yZWFkT25seSYmIXRoaXMuc2NoZW1hLnJlYWRvbmx5KXtpZighd2luZG93LkZpbGVSZWFkZXIpdGhyb3ciRmlsZVJlYWRlciByZXF1aXJlZCBmb3IgYmFzZTY0IGVkaXRvciI7dGhpcy51cGxvYWRlcj10aGlzLnRoZW1lLmdldEZvcm1JbnB1dEZpZWxkKCJmaWxlIiksdGhpcy51cGxvYWRlci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe2lmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuZmlsZXMmJnRoaXMuZmlsZXMubGVuZ3RoKXt2YXIgaT1uZXcgRmlsZVJlYWRlcjtpLm9ubG9hZD1mdW5jdGlvbihlKXt0LnZhbHVlPWUudGFyZ2V0LnJlc3VsdCx0LnJlZnJlc2hQcmV2aWV3KCksdC5vbkNoYW5nZSghMCksaT1udWxsfSxpLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlc1swXSl9fSl9dGhpcy5wcmV2aWV3PXRoaXMudGhlbWUuZ2V0Rm9ybUlucHV0RGVzY3JpcHRpb24odGhpcy5zY2hlbWEuZGVzY3JpcHRpb24pLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucHJldmlldyksdGhpcy5jb250cm9sPXRoaXMudGhlbWUuZ2V0Rm9ybUNvbnRyb2wodGhpcy5sYWJlbCx0aGlzLnVwbG9hZGVyfHx0aGlzLmlucHV0LHRoaXMucHJldmlldyksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9sKX0scmVmcmVzaFByZXZpZXc6ZnVuY3Rpb24oKXtpZih0aGlzLmxhc3RfcHJldmlldyE9PXRoaXMudmFsdWUmJih0aGlzLmxhc3RfcHJldmlldz10aGlzLnZhbHVlLHRoaXMucHJldmlldy5pbm5lckhUTUw9IiIsdGhpcy52YWx1ZSkpe3ZhciB0PXRoaXMudmFsdWUubWF0Y2goL15kYXRhOihbXjssXSspWzssXS8pO2lmKHQmJih0PXRbMV0pLHQpe2lmKHRoaXMucHJldmlldy5pbm5lckhUTUw9IjxzdHJvbmc+VHlwZTo8L3N0cm9uZz4gIit0KyIsIDxzdHJvbmc+U2l6ZTo8L3N0cm9uZz4gIitNYXRoLmZsb29yKCh0aGlzLnZhbHVlLmxlbmd0aC10aGlzLnZhbHVlLnNwbGl0KCIsIilbMF0ubGVuZ3RoLTEpLzEuMzMzMzMpKyIgYnl0ZXMiLCJpbWFnZSI9PT10LnN1YnN0cigwLDUpKXt0aGlzLnByZXZpZXcuaW5uZXJIVE1MKz0iPGJyPiI7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7ZS5zdHlsZS5tYXhXaWR0aD0iMTAwJSIsZS5zdHlsZS5tYXhIZWlnaHQ9IjEwMHB4IixlLnNyYz10aGlzLnZhbHVlLHRoaXMucHJldmlldy5hcHBlbmRDaGlsZChlKX19ZWxzZSB0aGlzLnByZXZpZXcuaW5uZXJIVE1MPSI8ZW0+SW52YWxpZCBkYXRhIFVSSTwvZW0+In19LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMudXBsb2FkZXImJih0aGlzLnVwbG9hZGVyLmRpc2FibGVkPSExKSx0aGlzLl9zdXBlcigpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy51cGxvYWRlciYmKHRoaXMudXBsb2FkZXIuZGlzYWJsZWQ9ITApLHRoaXMuX3N1cGVyKCl9LHNldFZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy52YWx1ZT10LHRoaXMuaW5wdXQudmFsdWU9dGhpcy52YWx1ZSx0aGlzLnJlZnJlc2hQcmV2aWV3KCksdGhpcy5vbkNoYW5nZSgpKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMucHJldmlldyYmdGhpcy5wcmV2aWV3LnBhcmVudE5vZGUmJnRoaXMucHJldmlldy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucHJldmlldyksdGhpcy50aXRsZSYmdGhpcy50aXRsZS5wYXJlbnROb2RlJiZ0aGlzLnRpdGxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy50aXRsZSksdGhpcy5pbnB1dCYmdGhpcy5pbnB1dC5wYXJlbnROb2RlJiZ0aGlzLmlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5pbnB1dCksdGhpcy51cGxvYWRlciYmdGhpcy51cGxvYWRlci5wYXJlbnROb2RlJiZ0aGlzLnVwbG9hZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy51cGxvYWRlciksdGhpcy5fc3VwZXIoKX19KSxuLmRlZmF1bHRzLmVkaXRvcnMudXBsb2FkPW4uQWJzdHJhY3RFZGl0b3IuZXh0ZW5kKHtnZXROdW1Db2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIDR9LGJ1aWxkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0aGlzLnRpdGxlPXRoaXMuaGVhZGVyPXRoaXMubGFiZWw9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRMYWJlbCh0aGlzLmdldFRpdGxlKCksdGhpcy5pc1JlcXVpcmVkKCkpLHRoaXMuaW5wdXQ9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRGaWVsZCgiaGlkZGVuIiksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5pbnB1dCksIXRoaXMuc2NoZW1hLnJlYWRPbmx5JiYhdGhpcy5zY2hlbWEucmVhZG9ubHkpe2lmKCF0aGlzLmpzb25lZGl0b3Iub3B0aW9ucy51cGxvYWQpdGhyb3ciVXBsb2FkIGhhbmRsZXIgcmVxdWlyZWQgZm9yIHVwbG9hZCBlZGl0b3IiO3RoaXMudXBsb2FkZXI9dGhpcy50aGVtZS5nZXRGb3JtSW5wdXRGaWVsZCgiZmlsZSIpLHRoaXMudXBsb2FkZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixmdW5jdGlvbihlKXtpZihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmZpbGVzJiZ0aGlzLmZpbGVzLmxlbmd0aCl7dmFyIGk9bmV3IEZpbGVSZWFkZXI7aS5vbmxvYWQ9ZnVuY3Rpb24oZSl7dC5wcmV2aWV3X3ZhbHVlPWUudGFyZ2V0LnJlc3VsdCx0LnJlZnJlc2hQcmV2aWV3KCksdC5vbkNoYW5nZSghMCksaT1udWxsfSxpLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlc1swXSl9fSl9dmFyIGU9dGhpcy5zY2hlbWEuZGVzY3JpcHRpb247ZXx8KGU9IiIpLHRoaXMucHJldmlldz10aGlzLnRoZW1lLmdldEZvcm1JbnB1dERlc2NyaXB0aW9uKGUpLHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucHJldmlldyksdGhpcy5jb250cm9sPXRoaXMudGhlbWUuZ2V0Rm9ybUNvbnRyb2wodGhpcy5sYWJlbCx0aGlzLnVwbG9hZGVyfHx0aGlzLmlucHV0LHRoaXMucHJldmlldyksdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9sKX0scmVmcmVzaFByZXZpZXc6ZnVuY3Rpb24oKXtpZih0aGlzLmxhc3RfcHJldmlldyE9PXRoaXMucHJldmlld192YWx1ZSYmKHRoaXMubGFzdF9wcmV2aWV3PXRoaXMucHJldmlld192YWx1ZSx0aGlzLnByZXZpZXcuaW5uZXJIVE1MPSIiLHRoaXMucHJldmlld192YWx1ZSkpe3ZhciB0PXRoaXMsZT10aGlzLnByZXZpZXdfdmFsdWUubWF0Y2goL15kYXRhOihbXjssXSspWzssXS8pO2UmJihlPWVbMV0pLGV8fChlPSJ1bmtub3duIik7dmFyIGk9dGhpcy51cGxvYWRlci5maWxlc1swXTtpZih0aGlzLnByZXZpZXcuaW5uZXJIVE1MPSI8c3Ryb25nPlR5cGU6PC9zdHJvbmc+ICIrZSsiLCA8c3Ryb25nPlNpemU6PC9zdHJvbmc+ICIraS5zaXplKyIgYnl0ZXMiLCJpbWFnZSI9PT1lLnN1YnN0cigwLDUpKXt0aGlzLnByZXZpZXcuaW5uZXJIVE1MKz0iPGJyPiI7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7cy5zdHlsZS5tYXhXaWR0aD0iMTAwJSIscy5zdHlsZS5tYXhIZWlnaHQ9IjEwMHB4IixzLnNyYz10aGlzLnByZXZpZXdfdmFsdWUsCit0aGlzLnByZXZpZXcuYXBwZW5kQ2hpbGQocyl9dGhpcy5wcmV2aWV3LmlubmVySFRNTCs9Ijxicj4iO3ZhciByPXRoaXMuZ2V0QnV0dG9uKCJVcGxvYWQiLCJ1cGxvYWQiLCJVcGxvYWQiKTt0aGlzLnByZXZpZXcuYXBwZW5kQ2hpbGQociksci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHIuc2V0QXR0cmlidXRlKCJkaXNhYmxlZCIsImRpc2FibGVkIiksdC50aGVtZS5yZW1vdmVJbnB1dEVycm9yKHQudXBsb2FkZXIpLHQudGhlbWUuZ2V0UHJvZ3Jlc3NCYXImJih0LnByb2dyZXNzQmFyPXQudGhlbWUuZ2V0UHJvZ3Jlc3NCYXIoKSx0LnByZXZpZXcuYXBwZW5kQ2hpbGQodC5wcm9ncmVzc0JhcikpLHQuanNvbmVkaXRvci5vcHRpb25zLnVwbG9hZCh0LnBhdGgsaSx7c3VjY2VzczpmdW5jdGlvbihlKXt0LnNldFZhbHVlKGUpLHQucGFyZW50P3QucGFyZW50Lm9uQ2hpbGRFZGl0b3JDaGFuZ2UodCk6dC5qc29uZWRpdG9yLm9uQ2hhbmdlKCksdC5wcm9ncmVzc0JhciYmdC5wcmV2aWV3LnJlbW92ZUNoaWxkKHQucHJvZ3Jlc3NCYXIpLHIucmVtb3ZlQXR0cmlidXRlKCJkaXNhYmxlZCIpfSxmYWlsdXJlOmZ1bmN0aW9uKGUpe3QudGhlbWUuYWRkSW5wdXRFcnJvcih0LnVwbG9hZGVyLGUpLHQucHJvZ3Jlc3NCYXImJnQucHJldmlldy5yZW1vdmVDaGlsZCh0LnByb2dyZXNzQmFyKSxyLnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24oZSl7dC5wcm9ncmVzc0JhciYmKGU/dC50aGVtZS51cGRhdGVQcm9ncmVzc0Jhcih0LnByb2dyZXNzQmFyLGUpOnQudGhlbWUudXBkYXRlUHJvZ3Jlc3NCYXJVbmtub3duKHQucHJvZ3Jlc3NCYXIpKX19KX0pfX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy51cGxvYWRlciYmKHRoaXMudXBsb2FkZXIuZGlzYWJsZWQ9ITEpLHRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLnVwbG9hZGVyJiYodGhpcy51cGxvYWRlci5kaXNhYmxlZD0hMCksdGhpcy5fc3VwZXIoKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZSE9PXQmJih0aGlzLnZhbHVlPXQsdGhpcy5pbnB1dC52YWx1ZT10aGlzLnZhbHVlLHRoaXMub25DaGFuZ2UoKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnByZXZpZXcmJnRoaXMucHJldmlldy5wYXJlbnROb2RlJiZ0aGlzLnByZXZpZXcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnByZXZpZXcpLHRoaXMudGl0bGUmJnRoaXMudGl0bGUucGFyZW50Tm9kZSYmdGhpcy50aXRsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudGl0bGUpLHRoaXMuaW5wdXQmJnRoaXMuaW5wdXQucGFyZW50Tm9kZSYmdGhpcy5pbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuaW5wdXQpLHRoaXMudXBsb2FkZXImJnRoaXMudXBsb2FkZXIucGFyZW50Tm9kZSYmdGhpcy51cGxvYWRlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMudXBsb2FkZXIpLHRoaXMuX3N1cGVyKCl9fSksbi5kZWZhdWx0cy5lZGl0b3JzLmNoZWNrYm94PW4uQWJzdHJhY3RFZGl0b3IuZXh0ZW5kKHtzZXRWYWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMudmFsdWU9ISF0LHRoaXMuaW5wdXQuY2hlY2tlZD10aGlzLnZhbHVlLHRoaXMub25DaGFuZ2UoKX0scmVnaXN0ZXI6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMuaW5wdXQmJnRoaXMuaW5wdXQuc2V0QXR0cmlidXRlKCJuYW1lIix0aGlzLmZvcm1uYW1lKX0sdW5yZWdpc3RlcjpmdW5jdGlvbigpe3RoaXMuX3N1cGVyKCksdGhpcy5pbnB1dCYmdGhpcy5pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoIm5hbWUiKX0sZ2V0TnVtQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbigxMixNYXRoLm1heCh0aGlzLmdldFRpdGxlKCkubGVuZ3RoLzcsMikpfSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5vcHRpb25zLmNvbXBhY3R8fCh0aGlzLmxhYmVsPXRoaXMuaGVhZGVyPXRoaXMudGhlbWUuZ2V0Q2hlY2tib3hMYWJlbCh0aGlzLmdldFRpdGxlKCkpKSx0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbiYmKHRoaXMuZGVzY3JpcHRpb249dGhpcy50aGVtZS5nZXRGb3JtSW5wdXREZXNjcmlwdGlvbih0aGlzLnNjaGVtYS5kZXNjcmlwdGlvbikpLHRoaXMub3B0aW9ucy5jb21wYWN0JiYodGhpcy5jb250YWluZXIuY2xhc3NOYW1lKz0iIGNvbXBhY3QiKSx0aGlzLmlucHV0PXRoaXMudGhlbWUuZ2V0Q2hlY2tib3goKSx0aGlzLmNvbnRyb2w9dGhpcy50aGVtZS5nZXRGb3JtQ29udHJvbCh0aGlzLmxhYmVsLHRoaXMuaW5wdXQsdGhpcy5kZXNjcmlwdGlvbiksKHRoaXMuc2NoZW1hLnJlYWRPbmx5fHx0aGlzLnNjaGVtYS5yZWFkb25seSkmJih0aGlzLmFsd2F5c19kaXNhYmxlZD0hMCx0aGlzLmlucHV0LmRpc2FibGVkPSEwKSx0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdC52YWx1ZT10aGlzLmNoZWNrZWQsdC5vbkNoYW5nZSghMCl9KSx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRyb2wpfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmFsd2F5c19kaXNhYmxlZHx8KHRoaXMuaW5wdXQuZGlzYWJsZWQ9ITEpLHRoaXMuX3N1cGVyKCl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLmlucHV0LmRpc2FibGVkPSEwLHRoaXMuX3N1cGVyKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLnBhcmVudE5vZGUmJnRoaXMubGFiZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmxhYmVsKSx0aGlzLmRlc2NyaXB0aW9uJiZ0aGlzLmRlc2NyaXB0aW9uLnBhcmVudE5vZGUmJnRoaXMuZGVzY3JpcHRpb24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRlc2NyaXB0aW9uKSx0aGlzLmlucHV0JiZ0aGlzLmlucHV0LnBhcmVudE5vZGUmJnRoaXMuaW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmlucHV0KSx0aGlzLl9zdXBlcigpfX0pO3ZhciBvPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiB0Lm1hdGNoZXM/Im1hdGNoZXMiOnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yPyJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiOnQubW96TWF0Y2hlc1NlbGVjdG9yPyJtb3pNYXRjaGVzU2VsZWN0b3IiOnQubXNNYXRjaGVzU2VsZWN0b3I/Im1zTWF0Y2hlc1NlbGVjdG9yIjp0Lm9NYXRjaGVzU2VsZWN0b3I/Im9NYXRjaGVzU2VsZWN0b3IiOnZvaWQgMH0oKTtuLkFic3RyYWN0VGhlbWU9dC5leHRlbmQoe2dldENvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX0sZ2V0RmxvYXRSaWdodExpbmtIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5zdHlsZT10LnN0eWxlfHx7fSx0LnN0eWxlLmNzc0Zsb2F0PSJyaWdodCIsdC5zdHlsZS5tYXJnaW5MZWZ0PSIxMHB4Iix0fSxnZXRNb2RhbDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0id2hpdGUiLHQuc3R5bGUuYm9yZGVyPSIxcHggc29saWQgYmxhY2siLHQuc3R5bGUuYm94U2hhZG93PSIzcHggM3B4IGJsYWNrIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS56SW5kZXg9IjEwIix0LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHR9LGdldEdyaWRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdH0sZ2V0R3JpZFJvdzpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0icm93Iix0fSxnZXRHcmlkQ29sdW1uOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHR9LHNldEdyaWRDb2x1bW5TaXplOmZ1bmN0aW9uKHQsZSl7fSxnZXRMaW5rOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoImhyZWYiLCIjIiksZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSksZX0sZGlzYWJsZUhlYWRlcjpmdW5jdGlvbih0KXt0LnN0eWxlLmNvbG9yPSIjY2NjIn0sZGlzYWJsZUxhYmVsOmZ1bmN0aW9uKHQpe3Quc3R5bGUuY29sb3I9IiNjY2MifSxlbmFibGVIZWFkZXI6ZnVuY3Rpb24odCl7dC5zdHlsZS5jb2xvcj0iIn0sZW5hYmxlTGFiZWw6ZnVuY3Rpb24odCl7dC5zdHlsZS5jb2xvcj0iIn0sZ2V0Rm9ybUlucHV0TGFiZWw6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTtyZXR1cm4gZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KSksZX0sZ2V0Q2hlY2tib3hMYWJlbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEZvcm1JbnB1dExhYmVsKHQpO3JldHVybiBlLnN0eWxlLmZvbnRXZWlnaHQ9Im5vcm1hbCIsZX0sZ2V0SGVhZGVyOmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/aS50ZXh0Q29udGVudD10OmkuYXBwZW5kQ2hpbGQodCksZSYmKGkuY2xhc3NOYW1lKz0iIHJlcXVpcmVkIiksaX0sZ2V0Q2hlY2tib3g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEZvcm1JbnB1dEZpZWxkKCJjaGVja2JveCIpO3JldHVybiB0LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsdC5zdHlsZS53aWR0aD0iYXV0byIsdH0sZ2V0TXVsdGlDaGVja2JveEhvbGRlcjpmdW5jdGlvbih0LGUsaSl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZSYmKGUuc3R5bGUuZGlzcGxheT0iYmxvY2siLHMuYXBwZW5kQ2hpbGQoZSkpO2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJih0W3JdLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsdFtyXS5zdHlsZS5tYXJnaW5SaWdodD0iMjBweCIscy5hcHBlbmRDaGlsZCh0W3JdKSk7cmV0dXJuIGkmJnMuYXBwZW5kQ2hpbGQoaSksc30sZ2V0U2VsZWN0SW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7cmV0dXJuIHQmJnRoaXMuc2V0U2VsZWN0T3B0aW9ucyhlLHQpLGV9LGdldFN3aXRjaGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0U2VsZWN0SW5wdXQodCk7cmV0dXJuIGUuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJ0cmFuc3BhcmVudCIsZS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLGUuc3R5bGUuZm9udFN0eWxlPSJpdGFsaWMiLGUuc3R5bGUuZm9udFdlaWdodD0ibm9ybWFsIixlLnN0eWxlLmhlaWdodD0iYXV0byIsZS5zdHlsZS5tYXJnaW5Cb3R0b209MCxlLnN0eWxlLm1hcmdpbkxlZnQ9IjVweCIsZS5zdHlsZS5wYWRkaW5nPSIwIDAgMCAzcHgiLGUuc3R5bGUud2lkdGg9ImF1dG8iLGV9LGdldFN3aXRjaGVyT3B0aW9uczpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgib3B0aW9uIil9LHNldFN3aXRjaGVyT3B0aW9uczpmdW5jdGlvbih0LGUsaSl7dGhpcy5zZXRTZWxlY3RPcHRpb25zKHQsZSxpKX0sc2V0U2VsZWN0T3B0aW9uczpmdW5jdGlvbih0LGUsaSl7aT1pfHxbXSx0LmlubmVySFRNTD0iIjtmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKyl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7ci5zZXRBdHRyaWJ1dGUoInZhbHVlIixlW3NdKSxyLnRleHRDb250ZW50PWlbc118fGVbc10sdC5hcHBlbmRDaGlsZChyKX19LGdldFRleHRhcmVhSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3JldHVybiB0LnN0eWxlPXQuc3R5bGV8fHt9LHQuc3R5bGUud2lkdGg9IjEwMCUiLHQuc3R5bGUuaGVpZ2h0PSIzMDBweCIsdC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giLHR9LGdldFJhbmdlSW5wdXQ6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMuZ2V0Rm9ybUlucHV0RmllbGQoInJhbmdlIik7cmV0dXJuIHMuc2V0QXR0cmlidXRlKCJtaW4iLHQpLHMuc2V0QXR0cmlidXRlKCJtYXgiLGUpLHMuc2V0QXR0cmlidXRlKCJzdGVwIixpKSxzfSxnZXRGb3JtSW5wdXRGaWVsZDpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksZX0sYWZ0ZXJJbnB1dFJlYWR5OmZ1bmN0aW9uKHQpe30sZ2V0Rm9ybUNvbnRyb2w6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBzLmNsYXNzTmFtZT0iZm9ybS1jb250cm9sIix0JiZzLmFwcGVuZENoaWxkKHQpLCJjaGVja2JveCI9PT1lLnR5cGU/dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpOnMuYXBwZW5kQ2hpbGQoZSksaSYmcy5hcHBlbmRDaGlsZChpKSxzfSxnZXRJbmRlbnRlZFBhbmVsOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuc3R5bGU9dC5zdHlsZXx8e30sdC5zdHlsZS5wYWRkaW5nTGVmdD0iMTBweCIsdC5zdHlsZS5tYXJnaW5MZWZ0PSIxMHB4Iix0LnN0eWxlLmJvcmRlckxlZnQ9IjFweCBzb2xpZCAjY2NjIix0fSxnZXRDaGlsZEVkaXRvckhvbGRlcjpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX0sZ2V0RGVzY3JpcHRpb246ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpO3JldHVybiBlLmlubmVySFRNTD10LGV9LGdldENoZWNrYm94RGVzY3JpcHRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RGVzY3JpcHRpb24odCl9LGdldEZvcm1JbnB1dERlc2NyaXB0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldERlc2NyaXB0aW9uKHQpfSxnZXRIZWFkZXJCdXR0b25Ib2xkZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdXR0b25Ib2xkZXIoKX0sZ2V0QnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfSxnZXRCdXR0b246ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO3JldHVybiBzLnR5cGU9ImJ1dHRvbiIsdGhpcy5zZXRCdXR0b25UZXh0KHMsdCxlLGkpLHN9LHNldEJ1dHRvblRleHQ6ZnVuY3Rpb24odCxlLGkscyl7dC5pbm5lckhUTUw9IiIsaSYmKHQuYXBwZW5kQ2hpbGQoaSksdC5pbm5lckhUTUwrPSIgIiksdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSkscyYmdC5zZXRBdHRyaWJ1dGUoInRpdGxlIixzKX0sZ2V0VGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKX0sZ2V0VGFibGVSb3c6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKX0sZ2V0VGFibGVIZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoZWFkIil9LGdldFRhYmxlQm9keTpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpfSxnZXRUYWJsZUhlYWRlckNlbGw6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTtyZXR1cm4gZS50ZXh0Q29udGVudD10LGV9LGdldFRhYmxlQ2VsbDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7cmV0dXJuIHR9LGdldEVycm9yTWVzc2FnZTpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cmV0dXJuIGUuc3R5bGU9ZS5zdHlsZXx8e30sZS5zdHlsZS5jb2xvcj0icmVkIixlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKSxlfSxhZGRJbnB1dEVycm9yOmZ1bmN0aW9uKHQsZSl7fSxyZW1vdmVJbnB1dEVycm9yOmZ1bmN0aW9uKHQpe30sYWRkVGFibGVSb3dFcnJvcjpmdW5jdGlvbih0KXt9LHJlbW92ZVRhYmxlUm93RXJyb3I6ZnVuY3Rpb24odCl7fSxnZXRUYWJIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5pbm5lckhUTUw9IjxkaXYgc3R5bGU9J2Zsb2F0OiBsZWZ0OyB3aWR0aDogMTMwcHg7JyBjbGFzcz0ndGFicyc+PC9kaXY+PGRpdiBjbGFzcz0nY29udGVudCcgc3R5bGU9J21hcmdpbi1sZWZ0OiAxMzBweDsnPjwvZGl2PjxkaXYgc3R5bGU9J2NsZWFyOmJvdGg7Jz48L2Rpdj4iLHR9LGFwcGx5U3R5bGVzOmZ1bmN0aW9uKHQsZSl7dC5zdHlsZT10LnN0eWxlfHx7fTtmb3IodmFyIGkgaW4gZSllLmhhc093blByb3BlcnR5KGkpJiYodC5zdHlsZVtpXT1lW2ldKX0sY2xvc2VzdDpmdW5jdGlvbih0LGUpe2Zvcig7dCYmdCE9PWRvY3VtZW50Oyl7aWYoIW8pcmV0dXJuITE7aWYodFtvXShlKSlyZXR1cm4gdDt0PXQucGFyZW50Tm9kZX1yZXR1cm4hMX0sZ2V0VGFiOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUuc3R5bGU9ZS5zdHlsZXx8e30sdGhpcy5hcHBseVN0eWxlcyhlLHtib3JkZXI6IjFweCBzb2xpZCAjY2NjIixib3JkZXJXaWR0aDoiMXB4IDAgMXB4IDFweCIsdGV4dEFsaWduOiJjZW50ZXIiLGxpbmVIZWlnaHQ6IjMwcHgiLGJvcmRlclJhZGl1czoiNXB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czowLGJvcmRlclRvcFJpZ2h0UmFkaXVzOjAsZm9udFdlaWdodDoiYm9sZCIsY3Vyc29yOiJwb2ludGVyIn0pLGV9LGdldFRhYkNvbnRlbnRIb2xkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGRyZW5bMV19LGdldFRhYkNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbmRlbnRlZFBhbmVsKCl9LG1hcmtUYWJBY3RpdmU6ZnVuY3Rpb24odCl7dGhpcy5hcHBseVN0eWxlcyh0LHtvcGFjaXR5OjEsYmFja2dyb3VuZDoid2hpdGUifSl9LG1hcmtUYWJJbmFjdGl2ZTpmdW5jdGlvbih0KXt0aGlzLmFwcGx5U3R5bGVzKHQse29wYWNpdHk6LjUsYmFja2dyb3VuZDoiIn0pfSxhZGRUYWI6ZnVuY3Rpb24odCxlKXt0LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKGUpfSxnZXRCbG9ja0xpbms6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT0iYmxvY2siLHR9LGdldEJsb2NrTGlua0hvbGRlcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0fSxnZXRMaW5rc0hvbGRlcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0fSxjcmVhdGVNZWRpYUxpbms6ZnVuY3Rpb24odCxlLGkpe3QuYXBwZW5kQ2hpbGQoZSksaS5zdHlsZS53aWR0aD0iMTAwJSIsdC5hcHBlbmRDaGlsZChpKX0sY3JlYXRlSW1hZ2VMaW5rOmZ1bmN0aW9uKHQsZSxpKXt0LmFwcGVuZENoaWxkKGUpLGUuYXBwZW5kQ2hpbGQoaSl9fSksbi5kZWZhdWx0cy50aGVtZXMuYm9vdHN0cmFwMj1uLkFic3RyYWN0VGhlbWUuZXh0ZW5kKHtnZXRSYW5nZUlucHV0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5fc3VwZXIodCxlLGkpfSxnZXRHcmlkQ29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJjb250YWluZXItZmx1aWQiLHR9LGdldEdyaWRSb3c6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9InJvdy1mbHVpZCIsdH0sZ2V0Rm9ybUlucHV0TGFiZWw6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9zdXBlcih0KTtyZXR1cm4gaS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLGkuc3R5bGUuZm9udFdlaWdodD0iYm9sZCIsZSYmKGkuY2xhc3NOYW1lKz0iIHJlcXVpcmVkIiksaX0sc2V0R3JpZENvbHVtblNpemU6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTmFtZT0ic3BhbiIrZX0sZ2V0U2VsZWN0SW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuIGUuc3R5bGUud2lkdGg9ImF1dG8iLGUuc3R5bGUubWF4V2lkdGg9Ijk4JSIsZX0sZ2V0Rm9ybUlucHV0RmllbGQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuIGUuc3R5bGUud2lkdGg9Ijk4JSIsZX0sYWZ0ZXJJbnB1dFJlYWR5OmZ1bmN0aW9uKHQpe3QuY29udHJvbGdyb3VwfHwodC5jb250cm9sZ3JvdXA9dGhpcy5jbG9zZXN0KHQsIi5jb250cm9sLWdyb3VwIiksdC5jb250cm9scz10aGlzLmNsb3Nlc3QodCwiLmNvbnRyb2xzIiksdGhpcy5jbG9zZXN0KHQsIi5jb21wYWN0IikmJih0LmNvbnRyb2xncm91cC5jbGFzc05hbWU9dC5jb250cm9sZ3JvdXAuY2xhc3NOYW1lLnJlcGxhY2UoL2NvbnRyb2wtZ3JvdXAvZywiIikucmVwbGFjZSgvWyBdezIsfS9nLCIgIiksdC5jb250cm9scy5jbGFzc05hbWU9dC5jb250cm9sZ3JvdXAuY2xhc3NOYW1lLnJlcGxhY2UoL2NvbnRyb2xzL2csIiIpLnJlcGxhY2UoL1sgXXsyLH0vZywiICIpLHQuc3R5bGUubWFyZ2luQm90dG9tPTApKX0sZ2V0SW5kZW50ZWRQYW5lbDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0id2VsbCB3ZWxsLXNtYWxsIix0fSxnZXRGb3JtSW5wdXREZXNjcmlwdGlvbjpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cmV0dXJuIGUuY2xhc3NOYW1lPSJoZWxwLWlubGluZSIsZS50ZXh0Q29udGVudD10LGV9LGdldEZvcm1Db250cm9sOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtzLmNsYXNzTmFtZT0iY29udHJvbC1ncm91cCI7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHIuY2xhc3NOYW1lPSJjb250cm9scyIsdCYmImNoZWNrYm94Ij09PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIik/KHMuYXBwZW5kQ2hpbGQociksdC5jbGFzc05hbWUrPSIgY2hlY2tib3giLHQuYXBwZW5kQ2hpbGQoZSksci5hcHBlbmRDaGlsZCh0KSxyLnN0eWxlLmhlaWdodD0iMzBweCIpOih0JiYodC5jbGFzc05hbWUrPSIgY29udHJvbC1sYWJlbCIscy5hcHBlbmRDaGlsZCh0KSksci5hcHBlbmRDaGlsZChlKSxzLmFwcGVuZENoaWxkKHIpKSxpJiZyLmFwcGVuZENoaWxkKGkpLHN9LGdldEhlYWRlckJ1dHRvbkhvbGRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0QnV0dG9uSG9sZGVyKCk7cmV0dXJuIHQuc3R5bGUubWFyZ2luTGVmdD0iMTBweCIsdH0sZ2V0QnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJidG4tZ3JvdXAiLHR9LGdldEJ1dHRvbjpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy5fc3VwZXIodCxlLGkpO3JldHVybiBzLmNsYXNzTmFtZSs9IiBidG4gYnRuLWRlZmF1bHQiLHN9LGdldFRhYmxlOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTtyZXR1cm4gdC5jbGFzc05hbWU9InRhYmxlIHRhYmxlLWJvcmRlcmVkIix0LnN0eWxlLndpZHRoPSJhdXRvIix0LnN0eWxlLm1heFdpZHRoPSJub25lIix0fSxhZGRJbnB1dEVycm9yOmZ1bmN0aW9uKHQsZSl7dC5jb250cm9sZ3JvdXAmJnQuY29udHJvbHMmJih0LmNvbnRyb2xncm91cC5jbGFzc05hbWUrPSIgZXJyb3IiLHQuZXJybXNnP3QuZXJybXNnLnN0eWxlLmRpc3BsYXk9IiI6KHQuZXJybXNnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKSx0LmVycm1zZy5jbGFzc05hbWU9ImhlbHAtYmxvY2sgZXJyb3Jtc2ciLHQuY29udHJvbHMuYXBwZW5kQ2hpbGQodC5lcnJtc2cpKSx0LmVycm1zZy50ZXh0Q29udGVudD1lKX0scmVtb3ZlSW5wdXRFcnJvcjpmdW5jdGlvbih0KXt0LmVycm1zZyYmKHQuZXJybXNnLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHQuY29udHJvbGdyb3VwLmNsYXNzTmFtZT10LmNvbnRyb2xncm91cC5jbGFzc05hbWUucmVwbGFjZSgvXHM/ZXJyb3IvZywiIikpfSxnZXRUYWJIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9InRhYmJhYmxlIHRhYnMtbGVmdCIsdC5pbm5lckhUTUw9Ijx1bCBjbGFzcz0nbmF2IG5hdi10YWJzIHNwYW4yJyBzdHlsZT0nbWFyZ2luLXJpZ2h0OiAwOyc+PC91bD48ZGl2IGNsYXNzPSd0YWItY29udGVudCBzcGFuMTAnIHN0eWxlPSdvdmVyZmxvdzp2aXNpYmxlOyc+PC9kaXY+Iix0fSxnZXRUYWI6ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtyZXR1cm4gaS5zZXRBdHRyaWJ1dGUoImhyZWYiLCIjIiksaS5hcHBlbmRDaGlsZCh0KSxlLmFwcGVuZENoaWxkKGkpLGV9LGdldFRhYkNvbnRlbnRIb2xkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGRyZW5bMV19LGdldFRhYkNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9InRhYi1wYW5lIGFjdGl2ZSIsdH0sbWFya1RhYkFjdGl2ZTpmdW5jdGlvbih0KXt0LmNsYXNzTmFtZSs9IiBhY3RpdmUifSxtYXJrVGFiSW5hY3RpdmU6ZnVuY3Rpb24odCl7dC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZSgvXHM/YWN0aXZlL2csIiIpfSxhZGRUYWI6ZnVuY3Rpb24odCxlKXt0LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKGUpfSxnZXRQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJwcm9ncmVzcyI7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuY2xhc3NOYW1lPSJiYXIiLGUuc3R5bGUud2lkdGg9IjAlIix0LmFwcGVuZENoaWxkKGUpLHR9LHVwZGF0ZVByb2dyZXNzQmFyOmZ1bmN0aW9uKHQsZSl7dCYmKHQuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD1lKyIlIil9LHVwZGF0ZVByb2dyZXNzQmFyVW5rbm93bjpmdW5jdGlvbih0KXt0JiYodC5jbGFzc05hbWU9InByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIix0LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGg9IjEwMCUiKX19KSxuLmRlZmF1bHRzLnRoZW1lcy5ib290c3RyYXAzPW4uQWJzdHJhY3RUaGVtZS5leHRlbmQoe2dldFNlbGVjdElucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1cGVyKHQpO3JldHVybiBlLmNsYXNzTmFtZSs9ImZvcm0tY29udHJvbCIsZX0sc2V0R3JpZENvbHVtblNpemU6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTmFtZT0iY29sLW1kLSIrZX0sYWZ0ZXJJbnB1dFJlYWR5OmZ1bmN0aW9uKHQpe3QuY29udHJvbGdyb3VwfHwodC5jb250cm9sZ3JvdXA9dGhpcy5jbG9zZXN0KHQsIi5mb3JtLWdyb3VwIiksdGhpcy5jbG9zZXN0KHQsIi5jb21wYWN0IikmJih0LmNvbnRyb2xncm91cC5zdHlsZS5tYXJnaW5Cb3R0b209MCkpfSxnZXRUZXh0YXJlYUlucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtyZXR1cm4gdC5jbGFzc05hbWU9ImZvcm0tY29udHJvbCIsdH0sZ2V0UmFuZ2VJbnB1dDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMuX3N1cGVyKHQsZSxpKX0sZ2V0Rm9ybUlucHV0RmllbGQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuImNoZWNrYm94IiE9PXQmJihlLmNsYXNzTmFtZSs9ImZvcm0tY29udHJvbCIpLGV9LGdldEZvcm1Db250cm9sOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdCYmImNoZWNrYm94Ij09PWUudHlwZT8ocy5jbGFzc05hbWUrPSIgY2hlY2tib3giLHQuYXBwZW5kQ2hpbGQoZSksdC5zdHlsZS5mb250U2l6ZT0iMTRweCIscy5zdHlsZS5tYXJnaW5Ub3A9IjAiLHMuYXBwZW5kQ2hpbGQodCksZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGUuc3R5bGUuY3NzRmxvYXQ9ImxlZnQiKToocy5jbGFzc05hbWUrPSIgZm9ybS1ncm91cCIsdCYmKHQuY2xhc3NOYW1lKz0iIGNvbnRyb2wtbGFiZWwiLHMuYXBwZW5kQ2hpbGQodCkpLHMuYXBwZW5kQ2hpbGQoZSkpLGkmJnMuYXBwZW5kQ2hpbGQoaSksc30sZ2V0SW5kZW50ZWRQYW5lbDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0id2VsbCB3ZWxsLXNtIix0fSxnZXRGb3JtSW5wdXREZXNjcmlwdGlvbjpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cmV0dXJuIGUuY2xhc3NOYW1lPSJoZWxwLWJsb2NrIixlLmlubmVySFRNTD10LGV9LGdldEhlYWRlckJ1dHRvbkhvbGRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0QnV0dG9uSG9sZGVyKCk7cmV0dXJuIHQuc3R5bGUubWFyZ2luTGVmdD0iMTBweCIsdH0sZ2V0QnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJidG4tZ3JvdXAiLHR9LGdldEJ1dHRvbjpmdW5jdGlvbih0LGUsaSl7dmFyIHM9dGhpcy5fc3VwZXIodCxlLGkpO3JldHVybiBzLmNsYXNzTmFtZSs9ImJ0biBidG4tZGVmYXVsdCIsc30sZ2V0VGFibGU6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpO3JldHVybiB0LmNsYXNzTmFtZT0idGFibGUgdGFibGUtYm9yZGVyZWQiLHQuc3R5bGUud2lkdGg9ImF1dG8iLHQuc3R5bGUubWF4V2lkdGg9Im5vbmUiLHR9LGFkZElucHV0RXJyb3I6ZnVuY3Rpb24odCxlKXt0LmNvbnRyb2xncm91cCYmKHQuY29udHJvbGdyb3VwLmNsYXNzTmFtZSs9IiBoYXMtZXJyb3IiLHQuZXJybXNnP3QuZXJybXNnLnN0eWxlLmRpc3BsYXk9IiI6KHQuZXJybXNnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKSx0LmVycm1zZy5jbGFzc05hbWU9ImhlbHAtYmxvY2sgZXJyb3Jtc2ciLHQuY29udHJvbGdyb3VwLmFwcGVuZENoaWxkKHQuZXJybXNnKSksdC5lcnJtc2cudGV4dENvbnRlbnQ9ZSl9LHJlbW92ZUlucHV0RXJyb3I6ZnVuY3Rpb24odCl7dC5lcnJtc2cmJih0LmVycm1zZy5zdHlsZS5kaXNwbGF5PSJub25lIix0LmNvbnRyb2xncm91cC5jbGFzc05hbWU9dC5jb250cm9sZ3JvdXAuY2xhc3NOYW1lLnJlcGxhY2UoL1xzP2hhcy1lcnJvci9nLCIiKSl9LGdldFRhYkhvbGRlcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGFicyBsaXN0LWdyb3VwIGNvbC1tZC0yJz48L2Rpdj48ZGl2IGNsYXNzPSdjb2wtbWQtMTAnPjwvZGl2PiIsdC5jbGFzc05hbWU9InJvd3MiLHR9LGdldFRhYjpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIGUuY2xhc3NOYW1lPSJsaXN0LWdyb3VwLWl0ZW0iLGUuc2V0QXR0cmlidXRlKCJocmVmIiwiIyIpLGUuYXBwZW5kQ2hpbGQodCksZX0sbWFya1RhYkFjdGl2ZTpmdW5jdGlvbih0KXt0LmNsYXNzTmFtZSs9IiBhY3RpdmUifSxtYXJrVGFiSW5hY3RpdmU6ZnVuY3Rpb24odCl7dC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZSgvXHM/YWN0aXZlL2csIiIpfSxnZXRQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciB0PTAsZT0xMDAsaT0wLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5jbGFzc05hbWU9InByb2dyZXNzIjt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gci5jbGFzc05hbWU9InByb2dyZXNzLWJhciIsci5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcm9ncmVzc2JhciIpLHIuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93IixpKSxyLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsdCksci5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVuYXgiLGUpLHIuaW5uZXJIVE1MPWkrIiUiLHMuYXBwZW5kQ2hpbGQociksc30sdXBkYXRlUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24odCxlKXtpZih0KXt2YXIgaT10LmZpcnN0Q2hpbGQscz1lKyIlIjtpLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsZSksaS5zdHlsZS53aWR0aD1zLGkuaW5uZXJIVE1MPXN9fSx1cGRhdGVQcm9ncmVzc0JhclVua25vd246ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9dC5maXJzdENoaWxkO3QuY2xhc3NOYW1lPSJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSIsZS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciKSxlLnN0eWxlLndpZHRoPSIxMDAlIixlLmlubmVySFRNTD0iIn19fSksbi5kZWZhdWx0cy50aGVtZXMuZm91bmRhdGlvbj1uLkFic3RyYWN0VGhlbWUuZXh0ZW5kKHtnZXRDaGlsZEVkaXRvckhvbGRlcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LnN0eWxlLm1hcmdpbkJvdHRvbT0iMTVweCIsdH0sZ2V0U2VsZWN0SW5wdXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuIGUuc3R5bGUubWluV2lkdGg9Im5vbmUiLGUuc3R5bGUucGFkZGluZz0iNXB4IixlLnN0eWxlLm1hcmdpblRvcD0iM3B4IixlfSxnZXRTd2l0Y2hlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdXBlcih0KTtyZXR1cm4gZS5zdHlsZS5wYWRkaW5nUmlnaHQ9IjhweCIsZX0sYWZ0ZXJJbnB1dFJlYWR5OmZ1bmN0aW9uKHQpe3RoaXMuY2xvc2VzdCh0LCIuY29tcGFjdCIpJiYodC5zdHlsZS5tYXJnaW5Cb3R0b209MCksdC5ncm91cD10aGlzLmNsb3Nlc3QodCwiLmZvcm0tY29udHJvbCIpfSxnZXRGb3JtSW5wdXRMYWJlbDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3N1cGVyKHQpO3JldHVybiBpLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsZSYmKGkuY2xhc3NOYW1lKz0iIHJlcXVpcmVkIiksaX0sZ2V0Rm9ybUlucHV0RmllbGQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuIGUuc3R5bGUud2lkdGg9IjEwMCUiLGUuc3R5bGUubWFyZ2luQm90dG9tPSJjaGVja2JveCI9PT10PyIwIjoiMTJweCIsZX0sZ2V0Rm9ybUlucHV0RGVzY3JpcHRpb246ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpO3JldHVybiBlLnRleHRDb250ZW50PXQsZS5zdHlsZS5tYXJnaW5Ub3A9Ii0xMHB4IixlLnN0eWxlLmZvbnRTdHlsZT0iaXRhbGljIixlfSxnZXRJbmRlbnRlZFBhbmVsOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJwYW5lbCIsdH0sZ2V0SGVhZGVyQnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRCdXR0b25Ib2xkZXIoKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siLHQuc3R5bGUubWFyZ2luTGVmdD0iMTBweCIsdC5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiLHR9LGdldEJ1dHRvbkhvbGRlcjpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0iYnV0dG9uLWdyb3VwIix0fSxnZXRCdXR0b246ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMuX3N1cGVyKHQsZSxpKTtyZXR1cm4gcy5jbGFzc05hbWUrPSIgc21hbGwgYnV0dG9uIixzfSxhZGRJbnB1dEVycm9yOmZ1bmN0aW9uKHQsZSl7dC5ncm91cCYmKHQuZ3JvdXAuY2xhc3NOYW1lKz0iIGVycm9yIix0LmVycm1zZz90LmVycm1zZy5zdHlsZS5kaXNwbGF5PSIiOih0Lmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLCc8c21hbGwgY2xhc3M9ImVycm9yIj48L3NtYWxsPicpLHQuZXJybXNnPXQucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlcnJvciIpWzBdKSx0LmVycm1zZy50ZXh0Q29udGVudD1lKX0scmVtb3ZlSW5wdXRFcnJvcjpmdW5jdGlvbih0KXt0LmVycm1zZyYmKHQuZ3JvdXAuY2xhc3NOYW1lPXQuZ3JvdXAuY2xhc3NOYW1lLnJlcGxhY2UoLyBlcnJvci9nLCIiKSx0LmVycm1zZy5zdHlsZS5kaXNwbGF5PSJub25lIil9LGdldFByb2dyZXNzQmFyOmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InByb2dyZXNzIjt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIGUuY2xhc3NOYW1lPSJtZXRlciIsZS5zdHlsZS53aWR0aD0iMCUiLHQuYXBwZW5kQ2hpbGQoZSksdH0sdXBkYXRlUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24odCxlKXt0JiYodC5maXJzdENoaWxkLnN0eWxlLndpZHRoPWUrIiUiKX0sdXBkYXRlUHJvZ3Jlc3NCYXJVbmtub3duOmZ1bmN0aW9uKHQpe3QmJih0LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGg9IjEwMCUiKX19KSxuLmRlZmF1bHRzLnRoZW1lcy5mb3VuZGF0aW9uMz1uLmRlZmF1bHRzLnRoZW1lcy5mb3VuZGF0aW9uLmV4dGVuZCh7Z2V0SGVhZGVyQnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3VwZXIoKTtyZXR1cm4gdC5zdHlsZS5mb250U2l6ZT0iLjZlbSIsdH0sZ2V0Rm9ybUlucHV0TGFiZWw6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9zdXBlcih0KTtyZXR1cm4gaS5zdHlsZS5mb250V2VpZ2h0PSJib2xkIixlJiYoaS5jbGFzc05hbWUrPSIgcmVxdWlyZWQiKSxpfSxnZXRUYWJIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9InJvdyIsdC5pbm5lckhUTUw9IjxkbCBjbGFzcz0ndGFicyB2ZXJ0aWNhbCB0d28gY29sdW1ucyc+PC9kbD48ZGl2IGNsYXNzPSd0YWJzLWNvbnRlbnQgdGVuIGNvbHVtbnMnPjwvZGl2PiIsdH0sc2V0R3JpZENvbHVtblNpemU6ZnVuY3Rpb24odCxlKXt2YXIgaT1bInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJ0ZW4iLCJlbGV2ZW4iLCJ0d2VsdmUiXTt0LmNsYXNzTmFtZT0iY29sdW1ucyAiK2lbZV19LGdldFRhYjpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkZCIpLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO3JldHVybiBpLnNldEF0dHJpYnV0ZSgiaHJlZiIsIiMiKSxpLmFwcGVuZENoaWxkKHQpLGUuYXBwZW5kQ2hpbGQoaSksZX0sZ2V0VGFiQ29udGVudEhvbGRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZHJlblsxXX0sZ2V0VGFiQ29udGVudDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0iY29udGVudCBhY3RpdmUiLHQuc3R5bGUucGFkZGluZ0xlZnQ9IjVweCIsdH0sbWFya1RhYkFjdGl2ZTpmdW5jdGlvbih0KXt0LmNsYXNzTmFtZSs9IiBhY3RpdmUifSxtYXJrVGFiSW5hY3RpdmU6ZnVuY3Rpb24odCl7dC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZSgvXHMqYWN0aXZlL2csIiIpfSxhZGRUYWI6ZnVuY3Rpb24odCxlKXt0LmNoaWxkcmVuWzBdLmFwcGVuZENoaWxkKGUpfX0pLG4uZGVmYXVsdHMudGhlbWVzLmZvdW5kYXRpb240PW4uZGVmYXVsdHMudGhlbWVzLmZvdW5kYXRpb24uZXh0ZW5kKHtnZXRIZWFkZXJCdXR0b25Ib2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlcigpO3JldHVybiB0LnN0eWxlLmZvbnRTaXplPSIuNmVtIix0fSxzZXRHcmlkQ29sdW1uU2l6ZTpmdW5jdGlvbih0LGUpe3QuY2xhc3NOYW1lPSJjb2x1bW5zIGxhcmdlLSIrZX0sZ2V0Rm9ybUlucHV0RGVzY3JpcHRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3VwZXIodCk7cmV0dXJuIGUuc3R5bGUuZm9udFNpemU9Ii44cmVtIixlfSxnZXRGb3JtSW5wdXRMYWJlbDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3N1cGVyKHQpO3JldHVybiBpLnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLGUmJihpLmNsYXNzTmFtZSs9IiByZXF1aXJlZCIpLGl9fSksbi5kZWZhdWx0cy50aGVtZXMuZm91bmRhdGlvbjU9bi5kZWZhdWx0cy50aGVtZXMuZm91bmRhdGlvbi5leHRlbmQoe2dldEZvcm1JbnB1dERlc2NyaXB0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1cGVyKHQpO3JldHVybiBlLnN0eWxlLmZvbnRTaXplPSIuOHJlbSIsZX0sc2V0R3JpZENvbHVtblNpemU6ZnVuY3Rpb24odCxlKXt0LmNsYXNzTmFtZT0iY29sdW1ucyBtZWRpdW0tIitlfSxnZXRCdXR0b246ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMuX3N1cGVyKHQsZSxpKTtyZXR1cm4gcy5jbGFzc05hbWU9cy5jbGFzc05hbWUucmVwbGFjZSgvXHMqc21hbGwvZywiIikrIiB0aW55IixzfSxnZXRUYWJIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5pbm5lckhUTUw9IjxkbCBjbGFzcz0ndGFicyB2ZXJ0aWNhbCc+PC9kbD48ZGl2IGNsYXNzPSd0YWJzLWNvbnRlbnQgdmVydGljYWwnPjwvZGl2PiIsdH0sZ2V0VGFiOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRkIiksaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cmV0dXJuIGkuc2V0QXR0cmlidXRlKCJocmVmIiwiIyIpLGkuYXBwZW5kQ2hpbGQodCksZS5hcHBlbmRDaGlsZChpKSxlfSxnZXRUYWJDb250ZW50SG9sZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNoaWxkcmVuWzFdfSxnZXRUYWJDb250ZW50OmZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHQuY2xhc3NOYW1lPSJjb250ZW50IGFjdGl2ZSIsdC5zdHlsZS5wYWRkaW5nTGVmdD0iNXB4Iix0fSxtYXJrVGFiQWN0aXZlOmZ1bmN0aW9uKHQpe3QuY2xhc3NOYW1lKz0iIGFjdGl2ZSJ9LG1hcmtUYWJJbmFjdGl2ZTpmdW5jdGlvbih0KXt0LmNsYXNzTmFtZT10LmNsYXNzTmFtZS5yZXBsYWNlKC9ccyphY3RpdmUvZywiIil9LGFkZFRhYjpmdW5jdGlvbih0LGUpe3QuY2hpbGRyZW5bMF0uYXBwZW5kQ2hpbGQoZSl9fSksbi5kZWZhdWx0cy50aGVtZXMuaHRtbD1uLkFic3RyYWN0VGhlbWUuZXh0ZW5kKHtnZXRGb3JtSW5wdXRMYWJlbDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3N1cGVyKHQpO3JldHVybiBpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixpLnN0eWxlLm1hcmdpbkJvdHRvbT0iM3B4IixpLnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLGUmJihpLmNsYXNzTmFtZSs9IiByZXF1aXJlZCIpLGl9LGdldEZvcm1JbnB1dERlc2NyaXB0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1cGVyKHQpO3JldHVybiBlLnN0eWxlLmZvbnRTaXplPSIuOGVtIixlLnN0eWxlLm1hcmdpbj0wLGUuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIixlLnN0eWxlLmZvbnRTdHlsZT0iaXRhbGljIixlfSxnZXRJbmRlbnRlZFBhbmVsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3VwZXIoKTtyZXR1cm4gdC5zdHlsZS5ib3JkZXI9IjFweCBzb2xpZCAjZGRkIix0LnN0eWxlLnBhZGRpbmc9IjVweCIsdC5zdHlsZS5tYXJnaW49IjVweCIsdC5zdHlsZS5ib3JkZXJSYWRpdXM9IjNweCIsdH0sZ2V0Q2hpbGRFZGl0b3JIb2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlcigpO3JldHVybiB0LnN0eWxlLm1hcmdpbkJvdHRvbT0iOHB4Iix0fSxnZXRIZWFkZXJCdXR0b25Ib2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEJ1dHRvbkhvbGRlcigpO3JldHVybiB0LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsdC5zdHlsZS5tYXJnaW5MZWZ0PSIxMHB4Iix0LnN0eWxlLmZvbnRTaXplPSIuOGVtIix0LnN0eWxlLnZlcnRpY2FsQWxpZ249Im1pZGRsZSIsdH0sZ2V0VGFibGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlcigpO3JldHVybiB0LnN0eWxlLmJvcmRlckJvdHRvbT0iMXB4IHNvbGlkICNjY2MiLHQuc3R5bGUubWFyZ2luQm90dG9tPSI1cHgiLHR9LGFkZElucHV0RXJyb3I6ZnVuY3Rpb24odCxlKXtpZih0LnN0eWxlLmJvcmRlckNvbG9yPSJyZWQiLHQuZXJybXNnKXQuZXJybXNnLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjtlbHNle3ZhciBpPXRoaXMuY2xvc2VzdCh0LCIuZm9ybS1jb250cm9sIik7dC5lcnJtc2c9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5lcnJtc2cuc2V0QXR0cmlidXRlKCJjbGFzcyIsImVycm1zZyIpLHQuZXJybXNnLnN0eWxlPXQuZXJybXNnLnN0eWxlfHx7fSx0LmVycm1zZy5zdHlsZS5jb2xvcj0icmVkIixpLmFwcGVuZENoaWxkKHQuZXJybXNnKX10LmVycm1zZy5pbm5lckhUTUw9IiIsdC5lcnJtc2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpfSxyZW1vdmVJbnB1dEVycm9yOmZ1bmN0aW9uKHQpe3Quc3R5bGUuYm9yZGVyQ29sb3I9IiIsdC5lcnJtc2cmJih0LmVycm1zZy5zdHlsZS5kaXNwbGF5PSJub25lIil9LGdldFByb2dyZXNzQmFyOmZ1bmN0aW9uKCl7dmFyIHQ9MTAwLGU9MCxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByb2dyZXNzIik7cmV0dXJuIGkuc2V0QXR0cmlidXRlKCJtYXgiLHQpLGkuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsZSksaX0sdXBkYXRlUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24odCxlKXt0JiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLGUpfSx1cGRhdGVQcm9ncmVzc0JhclVua25vd246ZnVuY3Rpb24odCl7dCYmdC5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIil9fSksbi5kZWZhdWx0cy50aGVtZXMuanF1ZXJ5dWk9bi5BYnN0cmFjdFRoZW1lLmV4dGVuZCh7Z2V0VGFibGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdXBlcigpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiY2VsbHBhZGRpbmciLDUpLHQuc2V0QXR0cmlidXRlKCJjZWxsc3BhY2luZyIsMCksdH0sZ2V0VGFibGVIZWFkZXJDZWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3N1cGVyKHQpO3JldHVybiBlLmNsYXNzTmFtZT0idWktc3RhdGUtYWN0aXZlIixlLnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLGV9LGdldFRhYmxlQ2VsbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3N1cGVyKCk7cmV0dXJuIHQuY2xhc3NOYW1lPSJ1aS13aWRnZXQtY29udGVudCIsdH0sZ2V0SGVhZGVyQnV0dG9uSG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRCdXR0b25Ib2xkZXIoKTtyZXR1cm4gdC5zdHlsZS5tYXJnaW5MZWZ0PSIxMHB4Iix0LnN0eWxlLmZvbnRTaXplPSIuNmVtIix0LnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsdH0sZ2V0Rm9ybUlucHV0RGVzY3JpcHRpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREZXNjcmlwdGlvbih0KTtyZXR1cm4gZS5zdHlsZS5tYXJnaW5MZWZ0PSIxMHB4IixlLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsZX0sZ2V0Rm9ybUNvbnRyb2w6ZnVuY3Rpb24odCxlLGkpe3ZhciBzPXRoaXMuX3N1cGVyKHQsZSxpKTtyZXR1cm4iY2hlY2tib3giPT09ZS50eXBlPyhzLnN0eWxlLmxpbmVIZWlnaHQ9IjI1cHgiLHMuc3R5bGUucGFkZGluZz0iM3B4IDAiKTpzLnN0eWxlLnBhZGRpbmc9IjRweCAwIDhweCAwIixzfSxnZXREZXNjcmlwdGlvbjpmdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIGUuc3R5bGUuZm9udFNpemU9Ii44ZW0iLGUuc3R5bGUuZm9udFN0eWxlPSJpdGFsaWMiLGUudGV4dENvbnRlbnQ9dCxlfSxnZXRCdXR0b25Ib2xkZXI6ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5jbGFzc05hbWU9InVpLWJ1dHRvbnNldCIsdC5zdHlsZS5mb250U2l6ZT0iLjdlbSIsdH0sZ2V0Rm9ybUlucHV0TGFiZWw6ZnVuY3Rpb24odCxlKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO3JldHVybiBpLnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLGkuc3R5bGUuZGlzcGxheT0iYmxvY2siLGUmJihpLmNsYXNzTmFtZSs9IiByZXF1aXJlZCIpLGkudGV4dENvbnRlbnQ9dCxpfSxnZXRCdXR0b246ZnVuY3Rpb24odCxlLGkpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO3MuY2xhc3NOYW1lPSJ1aS1idXR0b24gdWktd2lkZ2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIsZSYmIXQ/KHMuY2xhc3NOYW1lKz0iIHVpLWJ1dHRvbi1pY29uLW9ubHkiLGUuY2xhc3NOYW1lKz0iIHVpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbi1wcmltYXJ5IixzLmFwcGVuZENoaWxkKGUpKTplPyhzLmNsYXNzTmFtZSs9IiB1aS1idXR0b24tdGV4dC1pY29uLXByaW1hcnkiLGUuY2xhc3NOYW1lKz0iIHVpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbi1wcmltYXJ5IixzLmFwcGVuZENoaWxkKGUpKTpzLmNsYXNzTmFtZSs9IiB1aS1idXR0b24tdGV4dC1vbmx5Ijt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7cmV0dXJuIHIuY2xhc3NOYW1lPSJ1aS1idXR0b24tdGV4dCIsci50ZXh0Q29udGVudD10fHxpfHwiLiIscy5hcHBlbmRDaGlsZChyKSxzLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkpLHN9LHNldEJ1dHRvblRleHQ6ZnVuY3Rpb24odCxlLGkscyl7dC5pbm5lckhUTUw9IiIsdC5jbGFzc05hbWU9InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIixpJiYhZT8odC5jbGFzc05hbWUrPSIgdWktYnV0dG9uLWljb24tb25seSIsaS5jbGFzc05hbWUrPSIgdWktYnV0dG9uLWljb24tcHJpbWFyeSB1aS1pY29uLXByaW1hcnkiLHQuYXBwZW5kQ2hpbGQoaSkpOmk/KHQuY2xhc3NOYW1lKz0iIHVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSIsaS5jbGFzc05hbWUrPSIgdWktYnV0dG9uLWljb24tcHJpbWFyeSB1aS1pY29uLXByaW1hcnkiLHQuYXBwZW5kQ2hpbGQoaSkpOnQuY2xhc3NOYW1lKz0iIHVpLWJ1dHRvbi10ZXh0LW9ubHkiO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtyLmNsYXNzTmFtZT0idWktYnV0dG9uLXRleHQiLHIudGV4dENvbnRlbnQ9ZXx8c3x8Ii4iLHQuYXBwZW5kQ2hpbGQociksdC5zZXRBdHRyaWJ1dGUoInRpdGxlIixzKX0sZ2V0SW5kZW50ZWRQYW5lbDpmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmNsYXNzTmFtZT0idWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIsdC5zdHlsZS5wYWRkaW5nPSIxZW0gMS40ZW0iLHQuc3R5bGUubWFyZ2luQm90dG9tPSIyMHB4Iix0fSxhZnRlcklucHV0UmVhZHk6ZnVuY3Rpb24odCl7dC5jb250cm9sc3x8KHQuY29udHJvbHM9dGhpcy5jbG9zZXN0KHQsIi5mb3JtLWNvbnRyb2wiKSl9LGFkZElucHV0RXJyb3I6ZnVuY3Rpb24odCxlKXt0LmNvbnRyb2xzJiYodC5lcnJtc2c/dC5lcnJtc2cuc3R5bGUuZGlzcGxheT0iIjoodC5lcnJtc2c9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5lcnJtc2cuY2xhc3NOYW1lPSJ1aS1zdGF0ZS1lcnJvciIsdC5jb250cm9scy5hcHBlbmRDaGlsZCh0LmVycm1zZykpLHQuZXJybXNnLnRleHRDb250ZW50PWUpfSxyZW1vdmVJbnB1dEVycm9yOmZ1bmN0aW9uKHQpe3QuZXJybXNnJiYodC5lcnJtc2cuc3R5bGUuZGlzcGxheT0ibm9uZSIpfSxtYXJrVGFiQWN0aXZlOmZ1bmN0aW9uKHQpe3QuY2xhc3NOYW1lPXQuY2xhc3NOYW1lLnJlcGxhY2UoL1xzKnVpLXdpZGdldC1oZWFkZXIvZywiIikrIiB1aS1zdGF0ZS1hY3RpdmUifSxtYXJrVGFiSW5hY3RpdmU6ZnVuY3Rpb24odCl7dC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZSgvXHMqdWktc3RhdGUtYWN0aXZlL2csIiIpKyIgdWktd2lkZ2V0LWhlYWRlciJ9fSksbi5BYnN0cmFjdEljb25MaWI9dC5leHRlbmQoe21hcHBpbmc6e2NvbGxhcHNlOiIiLGV4cGFuZDoiIiwiZGVsZXRlIjoiIixlZGl0OiIiLGFkZDoiIixjYW5jZWw6IiIsc2F2ZToiIixtb3ZldXA6IiIsbW92ZWRvd246IiJ9LGljb25fcHJlZml4OiIiLGdldEljb25DbGFzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXBwaW5nW3RdP3RoaXMuaWNvbl9wcmVmaXgrdGhpcy5tYXBwaW5nW3RdOm51bGx9LGdldEljb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRJY29uQ2xhc3ModCk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaSIpO3JldHVybiBpLmNsYXNzTmFtZT1lLGl9fSksbi5kZWZhdWx0cy5pY29ubGlicy5ib290c3RyYXAyPW4uQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7bWFwcGluZzp7Y29sbGFwc2U6ImNoZXZyb24tZG93biIsZXhwYW5kOiJjaGV2cm9uLXVwIiwiZGVsZXRlIjoidHJhc2giLGVkaXQ6InBlbmNpbCIsYWRkOiJwbHVzIixjYW5jZWw6ImJhbi1jaXJjbGUiLHNhdmU6Im9rIixtb3ZldXA6ImFycm93LXVwIixtb3ZlZG93bjoiYXJyb3ctZG93biJ9LGljb25fcHJlZml4OiJpY29uLSJ9KSxuLmRlZmF1bHRzLmljb25saWJzLmJvb3RzdHJhcDM9bi5BYnN0cmFjdEljb25MaWIuZXh0ZW5kKHttYXBwaW5nOntjb2xsYXBzZToiY2hldnJvbi1kb3duIixleHBhbmQ6ImNoZXZyb24tcmlnaHQiLCJkZWxldGUiOiJyZW1vdmUiLGVkaXQ6InBlbmNpbCIsYWRkOiJwbHVzIixjYW5jZWw6ImZsb3BweS1yZW1vdmUiLHNhdmU6ImZsb3BweS1zYXZlZCIsbW92ZXVwOiJhcnJvdy11cCIsbW92ZWRvd246ImFycm93LWRvd24ifSxpY29uX3ByZWZpeDoiZ2x5cGhpY29uIGdseXBoaWNvbi0ifSksbi5kZWZhdWx0cy5pY29ubGlicy5mb250YXdlc29tZTM9bi5BYnN0cmFjdEljb25MaWIuZXh0ZW5kKHttYXBwaW5nOntjb2xsYXBzZToiY2hldnJvbi1kb3duIixleHBhbmQ6ImNoZXZyb24tcmlnaHQiLCJkZWxldGUiOiJyZW1vdmUiLGVkaXQ6InBlbmNpbCIsYWRkOiJwbHVzIixjYW5jZWw6ImJhbi1jaXJjbGUiLHNhdmU6InNhdmUiLG1vdmV1cDoiYXJyb3ctdXAiLG1vdmVkb3duOiJhcnJvdy1kb3duIn0saWNvbl9wcmVmaXg6Imljb24tIn0pLG4uZGVmYXVsdHMuaWNvbmxpYnMuZm9udGF3ZXNvbWU0PW4uQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7bWFwcGluZzp7Y29sbGFwc2U6ImNhcmV0LXNxdWFyZS1vLWRvd24iLGV4cGFuZDoiY2FyZXQtc3F1YXJlLW8tcmlnaHQiLCJkZWxldGUiOiJ0aW1lcyIsZWRpdDoicGVuY2lsIixhZGQ6InBsdXMiLGNhbmNlbDoiYmFuIixzYXZlOiJzYXZlIixtb3ZldXA6ImFycm93LXVwIixtb3ZlZG93bjoiYXJyb3ctZG93biJ9LGljb25fcHJlZml4OiJmYSBmYS0ifSksbi5kZWZhdWx0cy5pY29ubGlicy5mb3VuZGF0aW9uMj1uLkFic3RyYWN0SWNvbkxpYi5leHRlbmQoe21hcHBpbmc6e2NvbGxhcHNlOiJtaW51cyIsZXhwYW5kOiJwbHVzIiwiZGVsZXRlIjoicmVtb3ZlIixlZGl0OiJlZGl0IixhZGQ6ImFkZC1kb2MiLGNhbmNlbDoiZXJyb3IiLHNhdmU6ImNoZWNrbWFyayIsbW92ZXVwOiJ1cC1hcnJvdyIsbW92ZWRvd246ImRvd24tYXJyb3cifSxpY29uX3ByZWZpeDoiZm91bmRpY29uLSJ9KSxuLmRlZmF1bHRzLmljb25saWJzLmZvdW5kYXRpb24zPW4uQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7bWFwcGluZzp7Y29sbGFwc2U6Im1pbnVzIixleHBhbmQ6InBsdXMiLCJkZWxldGUiOiJ4IixlZGl0OiJwZW5jaWwiLGFkZDoicGFnZS1hZGQiLGNhbmNlbDoieC1jaXJjbGUiLHNhdmU6InNhdmUiLG1vdmV1cDoiYXJyb3ctdXAiLG1vdmVkb3duOiJhcnJvdy1kb3duIn0saWNvbl9wcmVmaXg6ImZpLSJ9KSxuLmRlZmF1bHRzLmljb25saWJzLmpxdWVyeXVpPW4uQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7bWFwcGluZzp7Y29sbGFwc2U6InRyaWFuZ2xlLTEtcyIsZXhwYW5kOiJ0cmlhbmdsZS0xLWUiLCJkZWxldGUiOiJ0cmFzaCIsZWRpdDoicGVuY2lsIixhZGQ6InBsdXN0aGljayIsY2FuY2VsOiJjbG9zZXRoaWNrIixzYXZlOiJkaXNrIixtb3ZldXA6ImFycm93dGhpY2stMS1uIixtb3ZlZG93bjoiYXJyb3d0aGljay0xLXMifSxpY29uX3ByZWZpeDoidWktaWNvbiB1aS1pY29uLSJ9KSxuLmRlZmF1bHRzLnRlbXBsYXRlc1siZGVmYXVsdCJdPWZ1bmN0aW9uKCl7cmV0dXJue2NvbXBpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgve3tccyooW2EtekEtWjAtOVwtXyBcLl0rKVxzKn19L2cpLGk9ZSYmZS5sZW5ndGg7aWYoIWkpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9O2Zvcih2YXIgcz1bXSxyPWZ1bmN0aW9uKHQpe3ZhciBpLHI9ZVt0XS5yZXBsYWNlKC9be31dKy9nLCIiKS50cmltKCkuc3BsaXQoIi4iKSxuPXIubGVuZ3RoO2lmKG4+MSl7dmFyIG87aT1mdW5jdGlvbihlKXtmb3Iobz1lLHQ9MDtuPnQmJihvPW9bclt0XV0pO3QrKyk7cmV0dXJuIG99fWVsc2Ugcj1yWzBdLGk9ZnVuY3Rpb24odCl7cmV0dXJuIHRbcl19O3MucHVzaCh7czplW3RdLHI6aX0pfSxuPTA7aT5uO24rKylyKG4pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcixvPXQrIiI7Zm9yKG49MDtpPm47bisrKXI9c1tuXSxvPW8ucmVwbGFjZShyLnMsci5yKGUpKTtyZXR1cm4gb319fX0sbi5kZWZhdWx0cy50ZW1wbGF0ZXMuZWpzPWZ1bmN0aW9uKCl7cmV0dXJuISF3aW5kb3cuRUpTJiZ7Y29tcGlsZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgd2luZG93LkVKUyh7dGV4dDp0fSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnJlbmRlcih0KX19fX0sbi5kZWZhdWx0cy50ZW1wbGF0ZXMuaGFuZGxlYmFycz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuSGFuZGxlYmFyc30sbi5kZWZhdWx0cy50ZW1wbGF0ZXMuaG9nYW49ZnVuY3Rpb24oKXtyZXR1cm4hIXdpbmRvdy5Ib2dhbiYme2NvbXBpbGU6ZnVuY3Rpb24odCl7dmFyIGU9d2luZG93LkhvZ2FuLmNvbXBpbGUodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnJlbmRlcih0KX19fX0sbi5kZWZhdWx0cy50ZW1wbGF0ZXMubWFya3VwPWZ1bmN0aW9uKCl7cmV0dXJuISghd2luZG93Lk1hcmt8fCF3aW5kb3cuTWFyay51cCkmJntjb21waWxlOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gd2luZG93Lk1hcmsudXAodCxlKX19fX0sbi5kZWZhdWx0cy50ZW1wbGF0ZXMubXVzdGFjaGU9ZnVuY3Rpb24oKXtyZXR1cm4hIXdpbmRvdy5NdXN0YWNoZSYme2NvbXBpbGU6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cuTXVzdGFjaGUucmVuZGVyKHQsZSl9fX19LG4uZGVmYXVsdHMudGVtcGxhdGVzLnN3aWc9ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnN3aWd9LG4uZGVmYXVsdHMudGVtcGxhdGVzLnVuZGVyc2NvcmU9ZnVuY3Rpb24oKXtyZXR1cm4hIXdpbmRvdy5fJiZ7Y29tcGlsZTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5fLnRlbXBsYXRlKHQsZSl9fX19LG4uZGVmYXVsdHMudGhlbWU9Imh0bWwiLG4uZGVmYXVsdHMudGVtcGxhdGU9ImRlZmF1bHQiLG4uZGVmYXVsdHMub3B0aW9ucz17fSxuLmRlZmF1bHRzLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBpPW4uZGVmYXVsdHMubGFuZ3VhZ2VzW24uZGVmYXVsdHMubGFuZ3VhZ2VdO2lmKCFpKXRocm93IlVua25vd24gbGFuZ3VhZ2UgIituLmRlZmF1bHRzLmxhbmd1YWdlO3ZhciBzPWlbdF18fG4uZGVmYXVsdHMubGFuZ3VhZ2VzW24uZGVmYXVsdHMuZGVmYXVsdF9sYW5ndWFnZV1bdF07aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBzKXRocm93IlVua25vd24gdHJhbnNsYXRlIHN0cmluZyAiK3Q7aWYoZSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKylzPXMucmVwbGFjZShuZXcgUmVnRXhwKCJcXHtcXHsiK3IrIn19IiwiZyIpLGVbcl0pO3JldHVybiBzfSxuLmRlZmF1bHRzLmRlZmF1bHRfbGFuZ3VhZ2U9ImVuIixuLmRlZmF1bHRzLmxhbmd1YWdlPW4uZGVmYXVsdHMuZGVmYXVsdF9sYW5ndWFnZSxuLmRlZmF1bHRzLmxhbmd1YWdlcy5lbj17ZXJyb3Jfbm90c2V0OiJQcm9wZXJ0eSBtdXN0IGJlIHNldCIsZXJyb3Jfbm90ZW1wdHk6IlZhbHVlIHJlcXVpcmVkIixlcnJvcl9lbnVtOiJWYWx1ZSBtdXN0IGJlIG9uZSBvZiB0aGUgZW51bWVyYXRlZCB2YWx1ZXMiLGVycm9yX2FueU9mOiJWYWx1ZSBtdXN0IHZhbGlkYXRlIGFnYWluc3QgYXQgbGVhc3Qgb25lIG9mIHRoZSBwcm92aWRlZCBzY2hlbWFzIixlcnJvcl9vbmVPZjoiVmFsdWUgbXVzdCB2YWxpZGF0ZSBhZ2FpbnN0IGV4YWN0bHkgb25lIG9mIHRoZSBwcm92aWRlZCBzY2hlbWFzLiBJdCBjdXJyZW50bHkgdmFsaWRhdGVzIGFnYWluc3Qge3swfX0gb2YgdGhlIHNjaGVtYXMuIixlcnJvcl9ub3Q6IlZhbHVlIG11c3Qgbm90IHZhbGlkYXRlIGFnYWluc3QgdGhlIHByb3ZpZGVkIHNjaGVtYSIsZXJyb3JfdHlwZV91bmlvbjoiVmFsdWUgbXVzdCBiZSBvbmUgb2YgdGhlIHByb3ZpZGVkIHR5cGVzIixlcnJvcl90eXBlOiJWYWx1ZSBtdXN0IGJlIG9mIHR5cGUge3swfX0iLGVycm9yX2Rpc2FsbG93X3VuaW9uOiJWYWx1ZSBtdXN0IG5vdCBiZSBvbmUgb2YgdGhlIHByb3ZpZGVkIGRpc2FsbG93ZWQgdHlwZXMiLGVycm9yX2Rpc2FsbG93OiJWYWx1ZSBtdXN0IG5vdCBiZSBvZiB0eXBlIHt7MH19IixlcnJvcl9tdWx0aXBsZU9mOiJWYWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2Yge3swfX0iLGVycm9yX21heGltdW1fZXhjbDoiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4ge3swfX0iLGVycm9yX21heGltdW1faW5jbDoiVmFsdWUgbXVzdCBhdCBtb3N0IHt7MH19IixlcnJvcl9taW5pbXVtX2V4Y2w6IlZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHt7MH19IixlcnJvcl9taW5pbXVtX2luY2w6IlZhbHVlIG11c3QgYmUgYXQgbGVhc3Qge3swfX0iLGVycm9yX21heExlbmd0aDoiVmFsdWUgbXVzdCBiZSBhdCBtb3N0IHt7MH19IGNoYXJhY3RlcnMgbG9uZyIsZXJyb3JfbWluTGVuZ3RoOiJWYWx1ZSBtdXN0IGJlIGF0IGxlYXN0IHt7MH19IGNoYXJhY3RlcnMgbG9uZyIsZXJyb3JfcGF0dGVybjoiVmFsdWUgbXVzdCBtYXRjaCB0aGUgcHJvdmlkZWQgcGF0dGVybiIsZXJyb3JfYWRkaXRpb25hbEl0ZW1zOiJObyBhZGRpdGlvbmFsIGl0ZW1zIGFsbG93ZWQgaW4gdGhpcyBhcnJheSIsZXJyb3JfbWF4SXRlbXM6IlZhbHVlIG11c3QgaGF2ZSBhdCBtb3N0IHt7MH19IGl0ZW1zIixlcnJvcl9taW5JdGVtczoiVmFsdWUgbXVzdCBoYXZlIGF0IGxlYXN0IHt7MH19IGl0ZW1zIixlcnJvcl91bmlxdWVJdGVtczoiQXJyYXkgbXVzdCBoYXZlIHVuaXF1ZSBpdGVtcyIsZXJyb3JfbWF4UHJvcGVydGllczoiT2JqZWN0IG11c3QgaGF2ZSBhdCBtb3N0IHt7MH19IHByb3BlcnRpZXMiLGVycm9yX21pblByb3BlcnRpZXM6Ik9iamVjdCBtdXN0IGhhdmUgYXQgbGVhc3Qge3swfX0gcHJvcGVydGllcyIsZXJyb3JfcmVxdWlyZWQ6Ik9iamVjdCBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCBwcm9wZXJ0eSAne3swfX0nIixlcnJvcl9hZGRpdGlvbmFsX3Byb3BlcnRpZXM6Ik5vIGFkZGl0aW9uYWwgcHJvcGVydGllcyBhbGxvd2VkLCBidXQgcHJvcGVydHkge3swfX0gaXMgc2V0IixlcnJvcl9kZXBlbmRlbmN5OiJNdXN0IGhhdmUgcHJvcGVydHkge3swfX0ifSxuLnBsdWdpbnM9e2FjZTp7dGhlbWU6IiJ9LGVwaWNlZGl0b3I6e30sc2NlZGl0b3I6e30sc2VsZWN0Mjp7fX07Zm9yKHZhciBhIGluIG4uZGVmYXVsdHMuZWRpdG9ycyluLmRlZmF1bHRzLmVkaXRvcnMuaGFzT3duUHJvcGVydHkoYSkmJihuLmRlZmF1bHRzLmVkaXRvcnNbYV0ub3B0aW9ucz1uLmRlZmF1bHRzLmVkaXRvcnMub3B0aW9uc3x8e30pO24uZGVmYXVsdHMucmVzb2x2ZXJzLnVuc2hpZnQoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0LnR5cGU/Im11bHRpcGxlIjp2b2lkIDB9KSxuLmRlZmF1bHRzLnJlc29sdmVycy51bnNoaWZ0KGZ1bmN0aW9uKHQpe3JldHVybiF0LnR5cGUmJnQucHJvcGVydGllcz8ib2JqZWN0Ijp2b2lkIDB9KSxuLmRlZmF1bHRzLnJlc29sdmVycy51bnNoaWZ0KGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdC50eXBlP3QudHlwZTp2b2lkIDB9KSxuLmRlZmF1bHRzLnJlc29sdmVycy51bnNoaWZ0KGZ1bmN0aW9uKHQpe3JldHVybiJib29sZWFuIj09PXQudHlwZT8iY2hlY2tib3giPT09dC5mb3JtYXR8fHQub3B0aW9ucyYmdC5vcHRpb25zLmNoZWNrYm94PyJjaGVja2JveCI6InNlbGVjdCI6dm9pZCAwOworfSksbi5kZWZhdWx0cy5yZXNvbHZlcnMudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4iYW55Ij09PXQudHlwZT8ibXVsdGlwbGUiOnZvaWQgMH0pLG4uZGVmYXVsdHMucmVzb2x2ZXJzLnVuc2hpZnQoZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PT10LnR5cGUmJnQubWVkaWEmJiJiYXNlNjQiPT09dC5tZWRpYS5iaW5hcnlFbmNvZGluZz8iYmFzZTY0Ijp2b2lkIDB9KSxuLmRlZmF1bHRzLnJlc29sdmVycy51bnNoaWZ0KGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT09dC50eXBlJiYidXJsIj09PXQuZm9ybWF0JiZ0Lm9wdGlvbnMmJnQub3B0aW9ucy51cGxvYWQ9PT0hMCYmd2luZG93LkZpbGVSZWFkZXI/InVwbG9hZCI6dm9pZCAwfSksbi5kZWZhdWx0cy5yZXNvbHZlcnMudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4iYXJyYXkiPT10LnR5cGUmJiJ0YWJsZSI9PXQuZm9ybWF0PyJ0YWJsZSI6dm9pZCAwfSksbi5kZWZhdWx0cy5yZXNvbHZlcnMudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbnVtU291cmNlPyJzZWxlY3QiOnZvaWQgMH0pLG4uZGVmYXVsdHMucmVzb2x2ZXJzLnVuc2hpZnQoZnVuY3Rpb24odCl7aWYodFsiZW51bSJdKXtpZigiYXJyYXkiPT09dC50eXBlfHwib2JqZWN0Ij09PXQudHlwZSlyZXR1cm4iZW51bSI7aWYoIm51bWJlciI9PT10LnR5cGV8fCJpbnRlZ2VyIj09PXQudHlwZXx8InN0cmluZyI9PT10LnR5cGUpcmV0dXJuInNlbGVjdCJ9fSksbi5kZWZhdWx0cy5yZXNvbHZlcnMudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4iYXJyYXkiPT09dC50eXBlJiZ0Lml0ZW1zJiYhQXJyYXkuaXNBcnJheSh0Lml0ZW1zKSYmdC51bmlxdWVJdGVtcyYmdC5pdGVtc1siZW51bSJdJiZbInN0cmluZyIsIm51bWJlciIsImludGVnZXIiXS5pbmRleE9mKHQuaXRlbXMudHlwZSk+PTA/Im11bHRpc2VsZWN0Ijp2b2lkIDB9KSxuLmRlZmF1bHRzLnJlc29sdmVycy51bnNoaWZ0KGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9uZU9mPyJtdWx0aXBsZSI6dm9pZCAwfSksZnVuY3Rpb24oKXtpZih3aW5kb3cualF1ZXJ5fHx3aW5kb3cuWmVwdG8pe3ZhciB0PXdpbmRvdy5qUXVlcnl8fHdpbmRvdy5aZXB0bzt0Lmpzb25lZGl0b3I9bi5kZWZhdWx0cyx0LmZuLmpzb25lZGl0b3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuZGF0YSgianNvbmVkaXRvciIpO2lmKCJ2YWx1ZSI9PT10KXtpZighaSl0aHJvdyJNdXN0IGluaXRpYWxpemUganNvbmVkaXRvciBiZWZvcmUgZ2V0dGluZy9zZXR0aW5nIHRoZSB2YWx1ZSI7aWYoIShhcmd1bWVudHMubGVuZ3RoPjEpKXJldHVybiBpLmdldFZhbHVlKCk7aS5zZXRWYWx1ZShhcmd1bWVudHNbMV0pfWVsc2V7aWYoInZhbGlkYXRlIj09PXQpe2lmKCFpKXRocm93Ik11c3QgaW5pdGlhbGl6ZSBqc29uZWRpdG9yIGJlZm9yZSB2YWxpZGF0aW5nIjtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP2kudmFsaWRhdGUoYXJndW1lbnRzWzFdKTppLnZhbGlkYXRlKCl9ImRlc3Ryb3kiPT09dD9pJiYoaS5kZXN0cm95KCksdGhpcy5kYXRhKCJqc29uZWRpdG9yIixudWxsKSk6KGkmJmkuZGVzdHJveSgpLGk9bmV3IG4odGhpcy5nZXQoMCksdCksdGhpcy5kYXRhKCJqc29uZWRpdG9yIixpKSxpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZS50cmlnZ2VyKCJjaGFuZ2UiKX0pLGkub24oInJlYWR5IixmdW5jdGlvbigpe2UudHJpZ2dlcigicmVhZHkiKX0pKX1yZXR1cm4gdGhpc319fSgpLHdpbmRvdy5KU09ORWRpdG9yPW59KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvbG9kYXNoLm1pbi5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2xvZGFzaC5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYyNWRhOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL2xvZGFzaC5taW4uanMKQEAgLTAsMCArMSwyIEBACisoZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCl7aWYobiE9PXQpe3ZhciByPW51bGw9PT1uLGU9bj09PXgsdT1uPT09bixvPW51bGw9PT10LGk9dD09PXgsZj10PT09dDtpZihuPnQmJiFvfHwhdXx8ciYmIWkmJmZ8fGUmJmYpcmV0dXJuIDE7aWYobjx0JiYhcnx8IWZ8fG8mJiFlJiZ1fHxpJiZ1KXJldHVybi0xfXJldHVybiAwfWZ1bmN0aW9uIHQobix0LHIpe2Zvcih2YXIgZT1uLmxlbmd0aCx1PXI/ZTotMTtyP3UtLTorK3U8ZTspaWYodChuW3VdLHUsbikpcmV0dXJuIHU7cmV0dXJuLTF9ZnVuY3Rpb24gcihuLHQscil7aWYodCE9PXQpcmV0dXJuIHAobixyKTtyLT0xO2Zvcih2YXIgZT1uLmxlbmd0aDsrK3I8ZTspaWYobltyXT09PXQpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gZShuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbnx8ITF9ZnVuY3Rpb24gdShuKXtyZXR1cm4gbnVsbD09bj8iIjpuKyIifWZ1bmN0aW9uIG8obix0KXtmb3IodmFyIHI9LTEsZT1uLmxlbmd0aDsrK3I8ZSYmLTE8dC5pbmRleE9mKG4uY2hhckF0KHIpKTspO3JldHVybiByfWZ1bmN0aW9uIGkobix0KXtmb3IodmFyIHI9bi5sZW5ndGg7ci0tJiYtMTx0LmluZGV4T2Yobi5jaGFyQXQocikpOyk7cmV0dXJuIHJ9ZnVuY3Rpb24gZih0LHIpe3JldHVybiBuKHQuYSxyLmEpfHx0LmItci5ifWZ1bmN0aW9uIGMobil7cmV0dXJuIE5uW25dfWZ1bmN0aW9uIGEobil7cmV0dXJuIFRuW25dfWZ1bmN0aW9uIGwobix0LHIpe3JldHVybiB0P249Qm5bbl06ciYmKG49RG5bbl0pLCJcXCIrbn1mdW5jdGlvbiBzKG4pe3JldHVybiJcXCIrRG5bbl19ZnVuY3Rpb24gcChuLHQscil7dmFyIGU9bi5sZW5ndGg7Zm9yKHQrPXI/MDotMTtyP3QtLTorK3Q8ZTspe3ZhciB1PW5bdF07aWYodSE9PXUpcmV0dXJuIHR9cmV0dXJuLTF9ZnVuY3Rpb24gaChuKXtyZXR1cm4hIW4mJiJvYmplY3QiPT10eXBlb2Ygbn1mdW5jdGlvbiBfKG4pe3JldHVybiAxNjA+PW4mJjk8PW4mJjEzPj1ufHwzMj09bnx8MTYwPT1ufHw1NzYwPT1ufHw2MTU4PT1ufHw4MTkyPD1uJiYoODIwMj49bnx8ODIzMj09bnx8ODIzMz09bnx8ODIzOT09bnx8ODI4Nz09bnx8MTIyODg9PW58fDY1Mjc5PT1uKX1mdW5jdGlvbiB2KG4sdCl7Zm9yKHZhciByPS0xLGU9bi5sZW5ndGgsdT0tMSxvPVtdOysrcjxlOyluW3JdPT09dCYmKG5bcl09UCxvWysrdV09cik7cmV0dXJuIG99ZnVuY3Rpb24gZyhuKXtmb3IodmFyIHQ9LTEscj1uLmxlbmd0aDsrK3Q8ciYmXyhuLmNoYXJDb2RlQXQodCkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24geShuKXtmb3IodmFyIHQ9bi5sZW5ndGg7dC0tJiZfKG4uY2hhckNvZGVBdCh0KSk7KTtyZXR1cm4gdH1mdW5jdGlvbiBkKG4pe3JldHVybiBQbltuXX1mdW5jdGlvbiB3KF8pe2Z1bmN0aW9uIE5uKG4pe2lmKGgobikmJiEoV28obil8fG4gaW5zdGFuY2VvZiB6bikpe2lmKG4gaW5zdGFuY2VvZiBQbilyZXR1cm4gbjtpZihldS5jYWxsKG4sIl9fY2hhaW5fXyIpJiZldS5jYWxsKG4sIl9fd3JhcHBlZF9fIikpcmV0dXJuIHFyKG4pfXJldHVybiBuZXcgUG4obil9ZnVuY3Rpb24gVG4oKXt9ZnVuY3Rpb24gUG4obix0LHIpe3RoaXMuX193cmFwcGVkX189bix0aGlzLl9fYWN0aW9uc19fPXJ8fFtdLHRoaXMuX19jaGFpbl9fPSEhdH1mdW5jdGlvbiB6bihuKXt0aGlzLl9fd3JhcHBlZF9fPW4sdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fZGlyX189MSx0aGlzLl9fZmlsdGVyZWRfXz0hMSx0aGlzLl9faXRlcmF0ZWVzX189W10sdGhpcy5fX3Rha2VDb3VudF9fPUN1LHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIEJuKCl7dGhpcy5fX2RhdGFfXz17fX1mdW5jdGlvbiBEbihuKXt2YXIgdD1uP24ubGVuZ3RoOjA7Zm9yKHRoaXMuZGF0YT17aGFzaDp3dShudWxsKSxzZXQ6bmV3IGh1fTt0LS07KXRoaXMucHVzaChuW3RdKX1mdW5jdGlvbiBNbihuLHQpe3ZhciByPW4uZGF0YTtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiB0fHxkZSh0KT9yLnNldC5oYXModCk6ci5oYXNoW3RdKT8wOi0xfWZ1bmN0aW9uIHFuKG4sdCl7dmFyIHI9LTEsZT1uLmxlbmd0aDtmb3IodHx8KHQ9RGUoZSkpOysrcjxlOyl0W3JdPW5bcl07cmV0dXJuIHR9ZnVuY3Rpb24gS24obix0KXtmb3IodmFyIHI9LTEsZT1uLmxlbmd0aDsrK3I8ZSYmITEhPT10KG5bcl0scixuKTspO3JldHVybiBufWZ1bmN0aW9uIFZuKG4sdCl7Zm9yKHZhciByPS0xLGU9bi5sZW5ndGg7KytyPGU7KWlmKCF0KG5bcl0scixuKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBabihuLHQpe2Zvcih2YXIgcj0tMSxlPW4ubGVuZ3RoLHU9LTEsbz1bXTsrK3I8ZTspe3ZhciBpPW5bcl07dChpLHIsbikmJihvWysrdV09aSl9cmV0dXJuIG99ZnVuY3Rpb24gWG4obix0KXtmb3IodmFyIHI9LTEsZT1uLmxlbmd0aCx1PURlKGUpOysrcjxlOyl1W3JdPXQobltyXSxyLG4pO3JldHVybiB1fWZ1bmN0aW9uIEhuKG4sdCl7Zm9yKHZhciByPS0xLGU9dC5sZW5ndGgsdT1uLmxlbmd0aDsrK3I8ZTspblt1K3JdPXRbcl07cmV0dXJuIG59ZnVuY3Rpb24gUW4obix0LHIsZSl7dmFyIHU9LTEsbz1uLmxlbmd0aDtmb3IoZSYmbyYmKHI9blsrK3VdKTsrK3U8bzspcj10KHIsblt1XSx1LG4pO3JldHVybiByfWZ1bmN0aW9uIG50KG4sdCl7Zm9yKHZhciByPS0xLGU9bi5sZW5ndGg7KytyPGU7KWlmKHQobltyXSxyLG4pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHR0KG4sdCxyLGUpe3JldHVybiBuIT09eCYmZXUuY2FsbChlLHIpP246dH1mdW5jdGlvbiBydChuLHQscil7Zm9yKHZhciBlPS0xLHU9S28odCksbz11Lmxlbmd0aDsrK2U8bzspe3ZhciBpPXVbZV0sZj1uW2ldLGM9cihmLHRbaV0saSxuLHQpOyhjPT09Yz9jPT09ZjpmIT09ZikmJihmIT09eHx8aSBpbiBuKXx8KG5baV09Yyl9cmV0dXJuIG59ZnVuY3Rpb24gZXQobix0KXtyZXR1cm4gbnVsbD09dD9uOm90KHQsS28odCksbil9ZnVuY3Rpb24gdXQobix0KXtmb3IodmFyIHI9LTEsZT1udWxsPT1uLHU9IWUmJlNyKG4pLG89dT9uLmxlbmd0aDowLGk9dC5sZW5ndGgsZj1EZShpKTsrK3I8aTspe3ZhciBjPXRbcl07ZltyXT11P1VyKGMsbyk/bltjXTp4OmU/eDpuW2NdfXJldHVybiBmfWZ1bmN0aW9uIG90KG4sdCxyKXtyfHwocj17fSk7Zm9yKHZhciBlPS0xLHU9dC5sZW5ndGg7KytlPHU7KXt2YXIgbz10W2VdO3Jbb109bltvXX1yZXR1cm4gcn1mdW5jdGlvbiBpdChuLHQscil7dmFyIGU9dHlwZW9mIG47cmV0dXJuImZ1bmN0aW9uIj09ZT90PT09eD9uOkR0KG4sdCxyKTpudWxsPT1uP05lOiJvYmplY3QiPT1lP0F0KG4pOnQ9PT14P0JlKG4pOmp0KG4sdCl9ZnVuY3Rpb24gZnQobix0LHIsZSx1LG8saSl7dmFyIGY7aWYociYmKGY9dT9yKG4sZSx1KTpyKG4pKSxmIT09eClyZXR1cm4gZjtpZighZGUobikpcmV0dXJuIG47aWYoZT1XbyhuKSl7aWYoZj1JcihuKSwhdClyZXR1cm4gcW4obixmKX1lbHNle3ZhciBjPW91LmNhbGwobiksYT1jPT1LO2lmKGMhPVomJmMhPXomJighYXx8dSkpcmV0dXJuIExuW2NdP0VyKG4sYyx0KTp1P246e307aWYoR24obikpcmV0dXJuIHU/bjp7fTtpZihmPVJyKGE/e306biksIXQpcmV0dXJuIGV0KGYsbil9Zm9yKG98fChvPVtdKSxpfHwoaT1bXSksdT1vLmxlbmd0aDt1LS07KWlmKG9bdV09PW4pcmV0dXJuIGlbdV07cmV0dXJuIG8ucHVzaChuKSxpLnB1c2goZiksKGU/S246Z3QpKG4sZnVuY3Rpb24oZSx1KXtmW3VdPWZ0KGUsdCxyLHUsbixvLGkpfSksZn1mdW5jdGlvbiBjdChuLHQscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFhlKFQpO3JldHVybiBfdShmdW5jdGlvbigpe24uYXBwbHkoeCxyKX0sdCl9ZnVuY3Rpb24gYXQobix0KXt2YXIgZT1uP24ubGVuZ3RoOjAsdT1bXTtpZighZSlyZXR1cm4gdTt2YXIgbz0tMSxpPWpyKCksZj1pPT09cixjPWYmJnQubGVuZ3RoPj1GJiZ3dSYmaHU/bmV3IERuKHQpOm51bGwsYT10Lmxlbmd0aDtjJiYoaT1NbixmPSExLHQ9Yyk7bjpmb3IoOysrbzxlOylpZihjPW5bb10sZiYmYz09PWMpe2Zvcih2YXIgbD1hO2wtLTspaWYodFtsXT09PWMpY29udGludWUgbjt1LnB1c2goYyl9ZWxzZSAwPmkodCxjLDApJiZ1LnB1c2goYyk7cmV0dXJuIHV9ZnVuY3Rpb24gbHQobix0KXt2YXIgcj0hMDtyZXR1cm4genUobixmdW5jdGlvbihuLGUsdSl7cmV0dXJuIHI9ISF0KG4sZSx1KX0pLHJ9ZnVuY3Rpb24gc3Qobix0LHIsZSl7dmFyIHU9ZSxvPXU7cmV0dXJuIHp1KG4sZnVuY3Rpb24obixpLGYpe2k9K3QobixpLGYpLChyKGksdSl8fGk9PT1lJiZpPT09bykmJih1PWksbz1uKX0pLG99ZnVuY3Rpb24gcHQobix0KXt2YXIgcj1bXTtyZXR1cm4genUobixmdW5jdGlvbihuLGUsdSl7dChuLGUsdSkmJnIucHVzaChuKX0pLHJ9ZnVuY3Rpb24gaHQobix0LHIsZSl7dmFyIHU7cmV0dXJuIHIobixmdW5jdGlvbihuLHIsbyl7cmV0dXJuIHQobixyLG8pPyh1PWU/cjpuLCExKTp2b2lkIDB9KSx1fWZ1bmN0aW9uIF90KG4sdCxyLGUpe2V8fChlPVtdKTtmb3IodmFyIHU9LTEsbz1uLmxlbmd0aDsrK3U8bzspe3ZhciBpPW5bdV07aChpKSYmU3IoaSkmJihyfHxXbyhpKXx8X2UoaSkpP3Q/X3QoaSx0LHIsZSk6SG4oZSxpKTpyfHwoZVtlLmxlbmd0aF09aSl9cmV0dXJuIGV9ZnVuY3Rpb24gdnQobix0KXtyZXR1cm4gRHUobix0LEVlKX1mdW5jdGlvbiBndChuLHQpe3JldHVybiBEdShuLHQsS28pfWZ1bmN0aW9uIHl0KG4sdCl7cmV0dXJuIE11KG4sdCxLbyl9ZnVuY3Rpb24gZHQobix0KXtmb3IodmFyIHI9LTEsZT10Lmxlbmd0aCx1PS0xLG89W107KytyPGU7KXt2YXIgaT10W3JdO3llKG5baV0pJiYob1srK3VdPWkpfXJldHVybiBvfWZ1bmN0aW9uIHd0KG4sdCxyKXtpZihudWxsIT1uKXtuPURyKG4pLHIhPT14JiZyIGluIG4mJih0PVtyXSkscj0wO2Zvcih2YXIgZT10Lmxlbmd0aDtudWxsIT1uJiZyPGU7KW49RHIobilbdFtyKytdXTtyZXR1cm4gciYmcj09ZT9uOnh9fWZ1bmN0aW9uIHh0KG4sdCxyLGUsdSxvKXtpZihuPT09dClyZXR1cm4hMDtpZihudWxsPT1ufHxudWxsPT10fHwhZGUobikmJiFoKHQpKXJldHVybiBuIT09biYmdCE9PXQ7bjp7dmFyIGk9eHQsZj1XbyhuKSxjPVdvKHQpLGE9QixsPUI7Znx8KGE9b3UuY2FsbChuKSxhPT16P2E9WjphIT1aJiYoZj1qZShuKSkpLGN8fChsPW91LmNhbGwodCksbD09ej9sPVo6bCE9WiYmamUodCkpO3ZhciBzPWE9PVomJiFHbihuKSxjPWw9PVomJiFHbih0KSxsPWE9PWw7aWYoIWx8fGZ8fHMpe2lmKCFlJiYoYT1zJiZldS5jYWxsKG4sIl9fd3JhcHBlZF9fIiksYz1jJiZldS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksYXx8Yykpe249aShhP24udmFsdWUoKTpuLGM/dC52YWx1ZSgpOnQscixlLHUsbyk7YnJlYWsgbn1pZihsKXtmb3IodXx8KHU9W10pLG98fChvPVtdKSxhPXUubGVuZ3RoO2EtLTspaWYodVthXT09bil7bj1vW2FdPT10O2JyZWFrIG59dS5wdXNoKG4pLG8ucHVzaCh0KSxuPShmP3dyOmJyKShuLHQsaSxyLGUsdSxvKSx1LnBvcCgpLG8ucG9wKCl9ZWxzZSBuPSExfWVsc2Ugbj14cihuLHQsYSl9cmV0dXJuIG59ZnVuY3Rpb24gYnQobix0LHIpe3ZhciBlPXQubGVuZ3RoLHU9ZSxvPSFyO2lmKG51bGw9PW4pcmV0dXJuIXU7Zm9yKG49RHIobik7ZS0tOyl7dmFyIGk9dFtlXTtpZihvJiZpWzJdP2lbMV0hPT1uW2lbMF1dOiEoaVswXWluIG4pKXJldHVybiExfWZvcig7KytlPHU7KXt2YXIgaT10W2VdLGY9aVswXSxjPW5bZl0sYT1pWzFdO2lmKG8mJmlbMl0pe2lmKGM9PT14JiYhKGYgaW4gbikpcmV0dXJuITF9ZWxzZSBpZihpPXI/cihjLGEsZik6eCxpPT09eD8heHQoYSxjLHIsITApOiFpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIG10KG4sdCl7dmFyIHI9LTEsZT1TcihuKT9EZShuLmxlbmd0aCk6W107cmV0dXJuIHp1KG4sZnVuY3Rpb24obix1LG8pe2VbKytyXT10KG4sdSxvKX0pLGV9ZnVuY3Rpb24gQXQobil7dmFyIHQ9a3Iobik7aWYoMT09dC5sZW5ndGgmJnRbMF1bMl0pe3ZhciByPXRbMF1bMF0sZT10WzBdWzFdO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmKG49RHIobiksbltyXT09PWUmJihlIT09eHx8ciBpbiBuKSl9fXJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gYnQobix0KX19ZnVuY3Rpb24ganQobix0KXt2YXIgcj1XbyhuKSxlPVdyKG4pJiZ0PT09dCYmIWRlKHQpLHU9bisiIjtyZXR1cm4gbj1NcihuKSxmdW5jdGlvbihvKXtpZihudWxsPT1vKXJldHVybiExO3ZhciBpPXU7aWYobz1EcihvKSwhKCFyJiZlfHxpIGluIG8pKXtpZihvPTE9PW4ubGVuZ3RoP286d3QobyxTdChuLDAsLTEpKSxudWxsPT1vKXJldHVybiExO2k9R3Iobiksbz1EcihvKX1yZXR1cm4gb1tpXT09PXQ/dCE9PXh8fGkgaW4gbzp4dCh0LG9baV0seCwhMCl9fWZ1bmN0aW9uIGt0KG4sdCxyLGUsdSl7aWYoIWRlKG4pKXJldHVybiBuO3ZhciBvPVNyKHQpJiYoV28odCl8fGplKHQpKSxpPW8/eDpLbyh0KTtyZXR1cm4gS24oaXx8dCxmdW5jdGlvbihmLGMpe2lmKGkmJihjPWYsZj10W2NdKSxoKGYpKXtlfHwoZT1bXSksdXx8KHU9W10pO246e2Zvcih2YXIgYT1jLGw9ZSxzPXUscD1sLmxlbmd0aCxfPXRbYV07cC0tOylpZihsW3BdPT1fKXtuW2FdPXNbcF07YnJlYWsgbn12YXIgcD1uW2FdLHY9cj9yKHAsXyxhLG4sdCk6eCxnPXY9PT14O2cmJih2PV8sU3IoXykmJihXbyhfKXx8amUoXykpP3Y9V28ocCk/cDpTcihwKT9xbihwKTpbXTpiZShfKXx8X2UoXyk/dj1fZShwKT9JZShwKTpiZShwKT9wOnt9Omc9ITEpLGwucHVzaChfKSxzLnB1c2godiksZz9uW2FdPWt0KHYsXyxyLGwscyk6KHY9PT12P3YhPT1wOnA9PT1wKSYmKG5bYV09dil9fWVsc2UgYT1uW2NdLGw9cj9yKGEsZixjLG4sdCk6eCwocz1sPT09eCkmJihsPWYpLGw9PT14JiYoIW98fGMgaW4gbil8fCFzJiYobD09PWw/bD09PWE6YSE9PWEpfHwobltjXT1sKX0pLG59ZnVuY3Rpb24gT3Qobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3g6RHIodClbbl19fWZ1bmN0aW9uIEl0KG4pe3ZhciB0PW4rIiI7cmV0dXJuIG49TXIobiksZnVuY3Rpb24ocil7cmV0dXJuIHd0KHIsbix0KX19ZnVuY3Rpb24gUnQobix0KXtmb3IodmFyIHI9bj90Lmxlbmd0aDowO3ItLTspe3ZhciBlPXRbcl07aWYoZSE9dSYmVXIoZSkpe3ZhciB1PWU7dnUuY2FsbChuLGUsMSl9fXJldHVybiBufWZ1bmN0aW9uIEV0KG4sdCl7cmV0dXJuIG4reHUoUnUoKSoodC1uKzEpKX1mdW5jdGlvbiBDdChuLHQscixlLHUpe3JldHVybiB1KG4sZnVuY3Rpb24obix1LG8pe3I9ZT8oZT0hMSxuKTp0KHIsbix1LG8pfSkscn1mdW5jdGlvbiBTdChuLHQscil7dmFyIGU9LTEsdT1uLmxlbmd0aDtmb3IodD1udWxsPT10PzA6K3R8fDAsMD50JiYodD0tdD51PzA6dSt0KSxyPXI9PT14fHxyPnU/dTorcnx8MCwwPnImJihyKz11KSx1PXQ+cj8wOnItdD4+PjAsdD4+Pj0wLHI9RGUodSk7KytlPHU7KXJbZV09bltlK3RdO3JldHVybiByfWZ1bmN0aW9uIFV0KG4sdCl7dmFyIHI7cmV0dXJuIHp1KG4sZnVuY3Rpb24obixlLHUpe3JldHVybiByPXQobixlLHUpLCFyfSksISFyfWZ1bmN0aW9uICR0KG4sdCl7dmFyIHI9bi5sZW5ndGg7Zm9yKG4uc29ydCh0KTtyLS07KW5bcl09bltyXS5jO3JldHVybiBufWZ1bmN0aW9uIFd0KHQscixlKXt2YXIgdT1tcigpLG89LTE7cmV0dXJuIHI9WG4ocixmdW5jdGlvbihuKXtyZXR1cm4gdShuKX0pLHQ9bXQodCxmdW5jdGlvbihuKXtyZXR1cm57YTpYbihyLGZ1bmN0aW9uKHQpe3JldHVybiB0KG4pfSksYjorK28sYzpufX0pLCR0KHQsZnVuY3Rpb24odCxyKXt2YXIgdTtuOntmb3IodmFyIG89LTEsaT10LmEsZj1yLmEsYz1pLmxlbmd0aCxhPWUubGVuZ3RoOysrbzxjOylpZih1PW4oaVtvXSxmW29dKSl7aWYobz49YSlicmVhayBuO289ZVtvXSx1Kj0iYXNjIj09PW98fCEwPT09bz8xOi0xO2JyZWFrIG59dT10LmItci5ifXJldHVybiB1fSl9ZnVuY3Rpb24gRnQobix0KXt2YXIgcj0wO3JldHVybiB6dShuLGZ1bmN0aW9uKG4sZSx1KXtyKz0rdChuLGUsdSl8fDB9KSxyfWZ1bmN0aW9uIEx0KG4sdCl7dmFyIGU9LTEsdT1qcigpLG89bi5sZW5ndGgsaT11PT09cixmPWkmJm8+PUYsYz1mJiZ3dSYmaHU/bmV3IERuKCh2b2lkIDApKTpudWxsLGE9W107Yz8odT1NbixpPSExKTooZj0hMSxjPXQ/W106YSk7bjpmb3IoOysrZTxvOyl7dmFyIGw9bltlXSxzPXQ/dChsLGUsbik6bDtpZihpJiZsPT09bCl7Zm9yKHZhciBwPWMubGVuZ3RoO3AtLTspaWYoY1twXT09PXMpY29udGludWUgbjt0JiZjLnB1c2gocyksYS5wdXNoKGwpfWVsc2UgMD51KGMscywwKSYmKCh0fHxmKSYmYy5wdXNoKHMpLGEucHVzaChsKSl9cmV0dXJuIGF9ZnVuY3Rpb24gTnQobix0KXtmb3IodmFyIHI9LTEsZT10Lmxlbmd0aCx1PURlKGUpOysrcjxlOyl1W3JdPW5bdFtyXV07cmV0dXJuIHV9ZnVuY3Rpb24gVHQobix0LHIsZSl7Zm9yKHZhciB1PW4ubGVuZ3RoLG89ZT91Oi0xOyhlP28tLTorK288dSkmJnQobltvXSxvLG4pOyk7cmV0dXJuIHI/U3QobixlPzA6byxlP28rMTp1KTpTdChuLGU/bysxOjAsZT91Om8pfWZ1bmN0aW9uIFB0KG4sdCl7dmFyIHI9bjtyIGluc3RhbmNlb2Ygem4mJihyPXIudmFsdWUoKSk7Zm9yKHZhciBlPS0xLHU9dC5sZW5ndGg7KytlPHU7KXZhciBvPXRbZV0scj1vLmZ1bmMuYXBwbHkoby50aGlzQXJnLEhuKFtyXSxvLmFyZ3MpKTtyZXR1cm4gcn1mdW5jdGlvbiB6dChuLHQscil7dmFyIGU9MCx1PW4/bi5sZW5ndGg6ZTtpZigibnVtYmVyIj09dHlwZW9mIHQmJnQ9PT10JiZ1PD1VdSl7Zm9yKDtlPHU7KXt2YXIgbz1lK3U+Pj4xLGk9bltvXTsocj9pPD10Omk8dCkmJm51bGwhPT1pP2U9bysxOnU9b31yZXR1cm4gdX1yZXR1cm4gQnQobix0LE5lLHIpfWZ1bmN0aW9uIEJ0KG4sdCxyLGUpe3Q9cih0KTtmb3IodmFyIHU9MCxvPW4/bi5sZW5ndGg6MCxpPXQhPT10LGY9bnVsbD09PXQsYz10PT09eDt1PG87KXt2YXIgYT14dSgodStvKS8yKSxsPXIoblthXSkscz1sIT09eCxwPWw9PT1sOyhpP3B8fGU6Zj9wJiZzJiYoZXx8bnVsbCE9bCk6Yz9wJiYoZXx8cyk6bnVsbD09bD8wOmU/bDw9dDpsPHQpP3U9YSsxOm89YX1yZXR1cm4ga3UobyxTdSl9ZnVuY3Rpb24gRHQobix0LHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXJldHVybiBOZTtpZih0PT09eClyZXR1cm4gbjtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbi5jYWxsKHQscil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixlLHUpe3JldHVybiBuLmNhbGwodCxyLGUsdSl9O2Nhc2UgNDpyZXR1cm4gZnVuY3Rpb24ocixlLHUsbyl7cmV0dXJuIG4uY2FsbCh0LHIsZSx1LG8pfTtjYXNlIDU6cmV0dXJuIGZ1bmN0aW9uKHIsZSx1LG8saSl7cmV0dXJuIG4uY2FsbCh0LHIsZSx1LG8saSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KHQsYXJndW1lbnRzKX19ZnVuY3Rpb24gTXQobil7dmFyIHQ9bmV3IGN1KG4uYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBndSh0KS5zZXQobmV3IGd1KG4pKSx0fWZ1bmN0aW9uIHF0KG4sdCxyKXtmb3IodmFyIGU9ci5sZW5ndGgsdT0tMSxvPWp1KG4ubGVuZ3RoLWUsMCksaT0tMSxmPXQubGVuZ3RoLGM9RGUoZitvKTsrK2k8ZjspY1tpXT10W2ldO2Zvcig7Kyt1PGU7KWNbclt1XV09blt1XTtmb3IoO28tLTspY1tpKytdPW5bdSsrXTtyZXR1cm4gY31mdW5jdGlvbiBLdChuLHQscil7Zm9yKHZhciBlPS0xLHU9ci5sZW5ndGgsbz0tMSxpPWp1KG4ubGVuZ3RoLXUsMCksZj0tMSxjPXQubGVuZ3RoLGE9RGUoaStjKTsrK288aTspYVtvXT1uW29dO2ZvcihpPW87KytmPGM7KWFbaStmXT10W2ZdO2Zvcig7KytlPHU7KWFbaStyW2VdXT1uW28rK107cmV0dXJuIGF9ZnVuY3Rpb24gVnQobix0KXtyZXR1cm4gZnVuY3Rpb24ocixlLHUpe3ZhciBvPXQ/dCgpOnt9O2lmKGU9bXIoZSx1LDMpLFdvKHIpKXt1PS0xO2Zvcih2YXIgaT1yLmxlbmd0aDsrK3U8aTspe3ZhciBmPXJbdV07bihvLGYsZShmLHUscikscil9fWVsc2UgenUocixmdW5jdGlvbih0LHIsdSl7bihvLHQsZSh0LHIsdSksdSl9KTtyZXR1cm4gb319ZnVuY3Rpb24gWnQobil7cmV0dXJuIHBlKGZ1bmN0aW9uKHQscil7dmFyIGU9LTEsdT1udWxsPT10PzA6ci5sZW5ndGgsbz0yPHU/clt1LTJdOngsaT0yPHU/clsyXTp4LGY9MTx1P3JbdS0xXTp4O2ZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbz8obz1EdChvLGYsNSksdS09Mik6KG89ImZ1bmN0aW9uIj09dHlwZW9mIGY/Zjp4LHUtPW8/MTowKSxpJiYkcihyWzBdLHJbMV0saSkmJihvPTM+dT94Om8sdT0xKTsrK2U8dTspKGk9cltlXSkmJm4odCxpLG8pO3JldHVybiB0fSl9ZnVuY3Rpb24gWXQobix0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXt2YXIgdT1yP1Z1KHIpOjA7aWYoIUxyKHUpKXJldHVybiBuKHIsZSk7Zm9yKHZhciBvPXQ/dTotMSxpPURyKHIpOyh0P28tLTorK288dSkmJiExIT09ZShpW29dLG8saSk7KTtyZXR1cm4gcn19ZnVuY3Rpb24gR3Qobil7cmV0dXJuIGZ1bmN0aW9uKHQscixlKXt2YXIgdT1Ecih0KTtlPWUodCk7Zm9yKHZhciBvPWUubGVuZ3RoLGk9bj9vOi0xO24/aS0tOisraTxvOyl7dmFyIGY9ZVtpXTtpZighMT09PXIodVtmXSxmLHUpKWJyZWFrfXJldHVybiB0fX1mdW5jdGlvbiBKdChuLHQpe2Z1bmN0aW9uIHIoKXtyZXR1cm4odGhpcyYmdGhpcyE9PVluJiZ0aGlzIGluc3RhbmNlb2Ygcj9lOm4pLmFwcGx5KHQsYXJndW1lbnRzKX12YXIgZT1IdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBYdChuKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9LTE7dD1GZShVZSh0KSk7Zm9yKHZhciBlPXQubGVuZ3RoLHU9IiI7KytyPGU7KXU9bih1LHRbcl0scik7cmV0dXJuIHV9fWZ1bmN0aW9uIEh0KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cztzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IG47Y2FzZSAxOnJldHVybiBuZXcgbih0WzBdKTtjYXNlIDI6cmV0dXJuIG5ldyBuKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBuZXcgbih0WzBdLHRbMV0sdFsyXSk7Y2FzZSA0OnJldHVybiBuZXcgbih0WzBdLHRbMV0sdFsyXSx0WzNdKTtjYXNlIDU6cmV0dXJuIG5ldyBuKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSk7Y2FzZSA2OnJldHVybiBuZXcgbih0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7Y2FzZSA3OnJldHVybiBuZXcgbih0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdKX12YXIgcj1QdShuLnByb3RvdHlwZSksdD1uLmFwcGx5KHIsdCk7cmV0dXJuIGRlKHQpP3Q6cn19ZnVuY3Rpb24gUXQobil7ZnVuY3Rpb24gdChyLGUsdSl7cmV0dXJuIHUmJiRyKHIsZSx1KSYmKGU9eCkscj1kcihyLG4seCx4LHgseCx4LGUpLHIucGxhY2Vob2xkZXI9dC5wbGFjZWhvbGRlcixyfXJldHVybiB0fWZ1bmN0aW9uIG5yKG4sdCl7cmV0dXJuIHBlKGZ1bmN0aW9uKHIpe3ZhciBlPXJbMF07cmV0dXJuIG51bGw9PWU/ZTooci5wdXNoKHQpLG4uYXBwbHkoeCxyKSl9KX1mdW5jdGlvbiB0cihuLHQpe3JldHVybiBmdW5jdGlvbihyLGUsdSl7aWYodSYmJHIocixlLHUpJiYoZT14KSxlPW1yKGUsdSwzKSwxPT1lLmxlbmd0aCl7dT1yPVdvKHIpP3I6QnIocik7Zm9yKHZhciBvPWUsaT0tMSxmPXUubGVuZ3RoLGM9dCxhPWM7KytpPGY7KXt2YXIgbD11W2ldLHM9K28obCk7bihzLGMpJiYoYz1zLGE9bCl9aWYodT1hLCFyLmxlbmd0aHx8dSE9PXQpcmV0dXJuIHV9cmV0dXJuIHN0KHIsZSxuLHQpfX1mdW5jdGlvbiBycihuLHIpe3JldHVybiBmdW5jdGlvbihlLHUsbyl7cmV0dXJuIHU9bXIodSxvLDMpLFdvKGUpPyh1PXQoZSx1LHIpLC0xPHU/ZVt1XTp4KTpodChlLHUsbil9fWZ1bmN0aW9uIGVyKG4pe3JldHVybiBmdW5jdGlvbihyLGUsdSl7cmV0dXJuIHImJnIubGVuZ3RoPyhlPW1yKGUsdSwzKSx0KHIsZSxuKSk6LTF9fWZ1bmN0aW9uIHVyKG4pe3JldHVybiBmdW5jdGlvbih0LHIsZSl7cmV0dXJuIHI9bXIocixlLDMpLGh0KHQscixuLCEwKX19ZnVuY3Rpb24gb3Iobil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0LHI9YXJndW1lbnRzLmxlbmd0aCxlPW4/cjotMSx1PTAsbz1EZShyKTtuP2UtLTorK2U8cjspe3ZhciBpPW9bdSsrXT1hcmd1bWVudHNbZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IFhlKFQpOyF0JiZQbi5wcm90b3R5cGUudGhydSYmIndyYXBwZXIiPT1BcihpKSYmKHQ9bmV3IFBuKFtdLCghMCkpKX1mb3IoZT10Py0xOnI7KytlPHI7KXt2YXIgaT1vW2VdLHU9QXIoaSksZj0id3JhcHBlciI9PXU/S3UoaSk6eDt0PWYmJkZyKGZbMF0pJiZmWzFdPT0oRXxrfEl8QykmJiFmWzRdLmxlbmd0aCYmMT09Zls5XT90W0FyKGZbMF0pXS5hcHBseSh0LGZbM10pOjE9PWkubGVuZ3RoJiZGcihpKT90W3VdKCk6dC50aHJ1KGkpfXJldHVybiBmdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxlPW5bMF07aWYodCYmMT09bi5sZW5ndGgmJldvKGUpJiZlLmxlbmd0aD49RilyZXR1cm4gdC5wbGFudChlKS52YWx1ZSgpO2Zvcih2YXIgdT0wLG49cj9vW3VdLmFwcGx5KHRoaXMsbik6ZTsrK3U8cjspbj1vW3VdLmNhbGwodGhpcyxuKTtyZXR1cm4gbn19fWZ1bmN0aW9uIGlyKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSx1KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmdT09PXgmJldvKHIpP24ocixlKTp0KHIsRHQoZSx1LDMpKX19ZnVuY3Rpb24gZnIobil7cmV0dXJuIGZ1bmN0aW9uKHQscixlKXtyZXR1cm4oImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fGUhPT14KSYmKHI9RHQocixlLDMpKSxuKHQscixFZSl9fWZ1bmN0aW9uIGNyKG4pe3JldHVybiBmdW5jdGlvbih0LHIsZSl7cmV0dXJuKCJmdW5jdGlvbiIhPXR5cGVvZiByfHxlIT09eCkmJihyPUR0KHIsZSwzKSksbih0LHIpfX1mdW5jdGlvbiBhcihuKXtyZXR1cm4gZnVuY3Rpb24odCxyLGUpe3ZhciB1PXt9O3JldHVybiByPW1yKHIsZSwzKSxndCh0LGZ1bmN0aW9uKHQsZSxvKXtvPXIodCxlLG8pLGU9bj9vOmUsdD1uP3Q6byx1W2VdPXR9KSx1fX1mdW5jdGlvbiBscihuKXtyZXR1cm4gZnVuY3Rpb24odCxyLGUpe3JldHVybiB0PXUodCksKG4/dDoiIikrX3IodCxyLGUpKyhuPyIiOnQpfX1mdW5jdGlvbiBzcihuKXt2YXIgdD1wZShmdW5jdGlvbihyLGUpe3ZhciB1PXYoZSx0LnBsYWNlaG9sZGVyKTtyZXR1cm4gZHIocixuLHgsZSx1KX0pO3JldHVybiB0fWZ1bmN0aW9uIHByKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSx1LG8pe3ZhciBpPTM+YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmbz09PXgmJldvKHIpP24ocixlLHUsaSk6Q3QocixtcihlLG8sNCksdSxpLHQpfX1mdW5jdGlvbiBocihuLHQscixlLHUsbyxpLGYsYyxhKXtmdW5jdGlvbiBsKCl7Zm9yKHZhciB3PWFyZ3VtZW50cy5sZW5ndGgsYj13LGo9RGUodyk7Yi0tOylqW2JdPWFyZ3VtZW50c1tiXTtpZihlJiYoaj1xdChqLGUsdSkpLG8mJihqPUt0KGosbyxpKSksX3x8eSl7dmFyIGI9bC5wbGFjZWhvbGRlcixrPXYoaixiKSx3PXctay5sZW5ndGg7aWYodzxhKXt2YXIgTz1mP3FuKGYpOngsdz1qdShhLXcsMCksRT1fP2s6eCxrPV8/eDprLEM9Xz9qOngsaj1fP3g6ajtyZXR1cm4gdHw9Xz9JOlIsdCY9fihfP1I6SSksZ3x8KHQmPX4obXxBKSksaj1bbix0LHIsQyxFLGosayxPLGMsd10sTz1oci5hcHBseSh4LGopLEZyKG4pJiZadShPLGopLE8ucGxhY2Vob2xkZXI9YixPfX1pZihiPXA/cjp0aGlzLE89aD9iW25dOm4sZilmb3Iodz1qLmxlbmd0aCxFPWt1KGYubGVuZ3RoLHcpLGs9cW4oaik7RS0tOylDPWZbRV0saltFXT1VcihDLHcpP2tbQ106eDtyZXR1cm4gcyYmYzxqLmxlbmd0aCYmKGoubGVuZ3RoPWMpLHRoaXMmJnRoaXMhPT1ZbiYmdGhpcyBpbnN0YW5jZW9mIGwmJihPPWR8fEh0KG4pKSxPLmFwcGx5KGIsail9dmFyIHM9dCZFLHA9dCZtLGg9dCZBLF89dCZrLGc9dCZqLHk9dCZPLGQ9aD94Okh0KG4pO3JldHVybiBsfWZ1bmN0aW9uIF9yKG4sdCxyKXtyZXR1cm4gbj1uLmxlbmd0aCx0PSt0LG48dCYmbXUodCk/KHQtPW4scj1udWxsPT1yPyIgIjpyKyIiLCRlKHIsZHUodC9yLmxlbmd0aCkpLnNsaWNlKDAsdCkpOiIifWZ1bmN0aW9uIHZyKG4sdCxyLGUpe2Z1bmN0aW9uIHUoKXtmb3IodmFyIHQ9LTEsZj1hcmd1bWVudHMubGVuZ3RoLGM9LTEsYT1lLmxlbmd0aCxsPURlKGErZik7KytjPGE7KWxbY109ZVtjXTtmb3IoO2YtLTspbFtjKytdPWFyZ3VtZW50c1srK3RdO3JldHVybih0aGlzJiZ0aGlzIT09WW4mJnRoaXMgaW5zdGFuY2VvZiB1P2k6bikuYXBwbHkobz9yOnRoaXMsbCl9dmFyIG89dCZtLGk9SHQobik7cmV0dXJuIHV9ZnVuY3Rpb24gZ3Iobil7dmFyIHQ9VmVbbl07cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuKHI9cj09PXg/MDorcnx8MCk/KHI9c3UoMTAsciksdChuKnIpL3IpOnQobil9fWZ1bmN0aW9uIHlyKG4pe3JldHVybiBmdW5jdGlvbih0LHIsZSx1KXt2YXIgbz1tcihlKTtyZXR1cm4gbnVsbD09ZSYmbz09PWl0P3p0KHQscixuKTpCdCh0LHIsbyhlLHUsMSksbil9fWZ1bmN0aW9uIGRyKG4sdCxyLGUsdSxvLGksZil7dmFyIGM9dCZBO2lmKCFjJiYiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgWGUoVCk7dmFyIGE9ZT9lLmxlbmd0aDowO2lmKGF8fCh0Jj1+KEl8UiksZT11PXgpLGEtPXU/dS5sZW5ndGg6MCx0JlIpe3ZhciBsPWUscz11O2U9dT14fXZhciBwPWM/eDpLdShuKTtyZXR1cm4gcj1bbix0LHIsZSx1LGwscyxvLGksZl0scCYmKGU9clsxXSx0PXBbMV0sZj1lfHQsdT10PT1FJiZlPT1rfHx0PT1FJiZlPT1DJiZyWzddLmxlbmd0aDw9cFs4XXx8dD09KEV8QykmJmU9PWssKGY8RXx8dSkmJih0Jm0mJihyWzJdPXBbMl0sZnw9ZSZtPzA6aiksKGU9cFszXSkmJih1PXJbM10sclszXT11P3F0KHUsZSxwWzRdKTpxbihlKSxyWzRdPXU/dihyWzNdLFApOnFuKHBbNF0pKSwoZT1wWzVdKSYmKHU9cls1XSxyWzVdPXU/S3QodSxlLHBbNl0pOnFuKGUpLHJbNl09dT92KHJbNV0sUCk6cW4ocFs2XSkpLChlPXBbN10pJiYocls3XT1xbihlKSksdCZFJiYocls4XT1udWxsPT1yWzhdP3BbOF06a3Uocls4XSxwWzhdKSksbnVsbD09cls5XSYmKHJbOV09cFs5XSksclswXT1wWzBdLHJbMV09ZiksdD1yWzFdLGY9cls5XSkscls5XT1udWxsPT1mP2M/MDpuLmxlbmd0aDpqdShmLWEsMCl8fDAsbj10PT1tP0p0KHJbMF0sclsyXSk6dCE9SSYmdCE9KG18SSl8fHJbNF0ubGVuZ3RoP2hyLmFwcGx5KHgscik6dnIuYXBwbHkoeCxyKSwocD9xdTpadSkobixyKX1mdW5jdGlvbiB3cihuLHQscixlLHUsbyxpKXt2YXIgZj0tMSxjPW4ubGVuZ3RoLGE9dC5sZW5ndGg7aWYoYyE9YSYmKCF1fHxhPD1jKSlyZXR1cm4hMTtmb3IoOysrZjxjOyl7dmFyIGw9bltmXSxhPXRbZl0scz1lP2UodT9hOmwsdT9sOmEsZik6eDtpZihzIT09eCl7aWYocyljb250aW51ZTtyZXR1cm4hMX1pZih1KXtpZighbnQodCxmdW5jdGlvbihuKXtyZXR1cm4gbD09PW58fHIobCxuLGUsdSxvLGkpfSkpcmV0dXJuITF9ZWxzZSBpZihsIT09YSYmIXIobCxhLGUsdSxvLGkpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHhyKG4sdCxyKXtzd2l0Y2gocil7Y2FzZSBEOmNhc2UgTTpyZXR1cm4rbj09K3Q7Y2FzZSBxOnJldHVybiBuLm5hbWU9PXQubmFtZSYmbi5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBWOnJldHVybiBuIT0rbj90IT0rdDpuPT0rdDtjYXNlIFk6Y2FzZSBHOnJldHVybiBuPT10KyIifXJldHVybiExfWZ1bmN0aW9uIGJyKG4sdCxyLGUsdSxvLGkpe3ZhciBmPUtvKG4pLGM9Zi5sZW5ndGgsYT1Lbyh0KS5sZW5ndGg7aWYoYyE9YSYmIXUpcmV0dXJuITE7Zm9yKGE9YzthLS07KXt2YXIgbD1mW2FdO2lmKCEodT9sIGluIHQ6ZXUuY2FsbCh0LGwpKSlyZXR1cm4hMX1mb3IodmFyIHM9dTsrK2E8Yzspe3ZhciBsPWZbYV0scD1uW2xdLGg9dFtsXSxfPWU/ZSh1P2g6cCx1P3A6aCxsKTp4O2lmKF89PT14PyFyKHAsaCxlLHUsbyxpKTohXylyZXR1cm4hMTtzfHwocz0iY29uc3RydWN0b3IiPT1sKX1yZXR1cm4hKCFzJiYocj1uLmNvbnN0cnVjdG9yLGU9dC5jb25zdHJ1Y3RvcixyIT1lJiYiY29uc3RydWN0b3IiaW4gbiYmImNvbnN0cnVjdG9yImluIHQmJiEoImZ1bmN0aW9uIj09dHlwZW9mIHImJnIgaW5zdGFuY2VvZiByJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmZSBpbnN0YW5jZW9mIGUpKSl9ZnVuY3Rpb24gbXIobix0LHIpe3ZhciBlPU5uLmNhbGxiYWNrfHxMZSxlPWU9PT1MZT9pdDplO3JldHVybiByP2Uobix0LHIpOmV9ZnVuY3Rpb24gQXIobil7Zm9yKHZhciB0PW4ubmFtZSsiIixyPUZ1W3RdLGU9cj9yLmxlbmd0aDowO2UtLTspe3ZhciB1PXJbZV0sbz11LmZ1bmM7aWYobnVsbD09b3x8bz09bilyZXR1cm4gdS5uYW1lfXJldHVybiB0fWZ1bmN0aW9uIGpyKG4sdCxlKXt2YXIgdT1Obi5pbmRleE9mfHxZcix1PXU9PT1Zcj9yOnU7cmV0dXJuIG4/dShuLHQsZSk6dX1mdW5jdGlvbiBrcihuKXtuPUNlKG4pO2Zvcih2YXIgdD1uLmxlbmd0aDt0LS07KXt2YXIgcixlPW5bdF07cj1uW3RdWzFdLHI9cj09PXImJiFkZShyKSxlWzJdPXJ9cmV0dXJuIG59ZnVuY3Rpb24gT3Iobix0KXt2YXIgcj1udWxsPT1uP3g6blt0XTtyZXR1cm4gd2Uocik/cjp4fWZ1bmN0aW9uIElyKG4pe3ZhciB0PW4ubGVuZ3RoLHI9bmV3IG4uY29uc3RydWN0b3IodCk7cmV0dXJuIHQmJiJzdHJpbmciPT10eXBlb2YgblswXSYmZXUuY2FsbChuLCJpbmRleCIpJiYoci5pbmRleD1uLmluZGV4LHIuaW5wdXQ9bi5pbnB1dCkscn1mdW5jdGlvbiBScihuKXtyZXR1cm4gbj1uLmNvbnN0cnVjdG9yLCJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2Ygbnx8KG49WWUpLG5ldyBufWZ1bmN0aW9uIEVyKG4sdCxyKXt2YXIgZT1uLmNvbnN0cnVjdG9yO3N3aXRjaCh0KXtjYXNlIEo6cmV0dXJuIE10KG4pO2Nhc2UgRDpjYXNlIE06cmV0dXJuIG5ldyBlKCgrbikpO2Nhc2UgWDpjYXNlIEg6Y2FzZSBROmNhc2Ugbm46Y2FzZSB0bjpjYXNlIHJuOmNhc2UgZW46Y2FzZSB1bjpjYXNlIG9uOnJldHVybiBlIGluc3RhbmNlb2YgZSYmKGU9THVbdF0pLHQ9bi5idWZmZXIsbmV3IGUocj9NdCh0KTp0LG4uYnl0ZU9mZnNldCxuLmxlbmd0aCk7Y2FzZSBWOmNhc2UgRzpyZXR1cm4gbmV3IGUobik7Y2FzZSBZOnZhciB1PW5ldyBlKG4uc291cmNlLGtuLmV4ZWMobikpO3UubGFzdEluZGV4PW4ubGFzdEluZGV4fXJldHVybiB1fWZ1bmN0aW9uIENyKG4sdCxyKXtyZXR1cm4gbnVsbD09bnx8V3IodCxuKXx8KHQ9TXIodCksbj0xPT10Lmxlbmd0aD9uOnd0KG4sU3QodCwwLC0xKSksdD1Hcih0KSksdD1udWxsPT1uP246blt0XSxudWxsPT10P3g6dC5hcHBseShuLHIpfWZ1bmN0aW9uIFNyKG4pe3JldHVybiBudWxsIT1uJiZMcihWdShuKSl9ZnVuY3Rpb24gVXIobix0KXtyZXR1cm4gbj0ibnVtYmVyIj09dHlwZW9mIG58fFJuLnRlc3Qobik/K246LTEsdD1udWxsPT10PyR1OnQsLTE8biYmMD09biUxJiZuPHR9ZnVuY3Rpb24gJHIobix0LHIpe2lmKCFkZShyKSlyZXR1cm4hMTt2YXIgZT10eXBlb2YgdDtyZXR1cm4hISgibnVtYmVyIj09ZT9TcihyKSYmVXIodCxyLmxlbmd0aCk6InN0cmluZyI9PWUmJnQgaW4gcikmJih0PXJbdF0sbj09PW4/bj09PXQ6dCE9PXQpfWZ1bmN0aW9uIFdyKG4sdCl7dmFyIHI9dHlwZW9mIG47cmV0dXJuISEoInN0cmluZyI9PXImJmRuLnRlc3Qobil8fCJudW1iZXIiPT1yKXx8IVdvKG4pJiYoIXluLnRlc3Qobil8fG51bGwhPXQmJm4gaW4gRHIodCkpfWZ1bmN0aW9uIEZyKG4pe3ZhciB0PUFyKG4pLHI9Tm5bdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJnQgaW4gem4ucHJvdG90eXBlJiYobj09PXJ8fCh0PUt1KHIpLCEhdCYmbj09PXRbMF0pKX1mdW5jdGlvbiBMcihuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4mJi0xPG4mJjA9PW4lMSYmbjw9JHV9ZnVuY3Rpb24gTnIobix0KXtyZXR1cm4gbj09PXg/dDpGbyhuLHQsTnIpfWZ1bmN0aW9uIFRyKG4sdCl7bj1EcihuKTtmb3IodmFyIHI9LTEsZT10Lmxlbmd0aCx1PXt9OysrcjxlOyl7dmFyIG89dFtyXTtvIGluIG4mJih1W29dPW5bb10pfXJldHVybiB1fWZ1bmN0aW9uIFByKG4sdCl7dmFyIHI9e307cmV0dXJuIHZ0KG4sZnVuY3Rpb24obixlLHUpe3QobixlLHUpJiYocltlXT1uKX0pLHJ9ZnVuY3Rpb24genIobil7Zm9yKHZhciB0PUVlKG4pLHI9dC5sZW5ndGgsZT1yJiZuLmxlbmd0aCx1PSEhZSYmTHIoZSkmJihXbyhuKXx8X2Uobil8fEFlKG4pKSxvPS0xLGk9W107KytvPHI7KXt2YXIgZj10W29dOyh1JiZVcihmLGUpfHxldS5jYWxsKG4sZikpJiZpLnB1c2goZil9cmV0dXJuIGl9ZnVuY3Rpb24gQnIobil7cmV0dXJuIG51bGw9PW4/W106U3Iobik/Tm4uc3VwcG9ydC51bmluZGV4ZWRDaGFycyYmQWUobik/bi5zcGxpdCgiIik6ZGUobik/bjpZZShuKTpTZShuKX1mdW5jdGlvbiBEcihuKXtpZihObi5zdXBwb3J0LnVuaW5kZXhlZENoYXJzJiZBZShuKSl7Zm9yKHZhciB0PS0xLHI9bi5sZW5ndGgsZT1ZZShuKTsrK3Q8cjspZVt0XT1uLmNoYXJBdCh0KTtyZXR1cm4gZX1yZXR1cm4gZGUobik/bjpZZShuKX1mdW5jdGlvbiBNcihuKXtpZihXbyhuKSlyZXR1cm4gbjt2YXIgdD1bXTtyZXR1cm4gdShuKS5yZXBsYWNlKHduLGZ1bmN0aW9uKG4scixlLHUpe3QucHVzaChlP3UucmVwbGFjZShBbiwiJDEiKTpyfHxuKX0pLHR9ZnVuY3Rpb24gcXIobil7cmV0dXJuIG4gaW5zdGFuY2VvZiB6bj9uLmNsb25lKCk6bmV3IFBuKG4uX193cmFwcGVkX18sbi5fX2NoYWluX18scW4obi5fX2FjdGlvbnNfXykpfWZ1bmN0aW9uIEtyKG4sdCxyKXtyZXR1cm4gbiYmbi5sZW5ndGg/KChyPyRyKG4sdCxyKTpudWxsPT10KSYmKHQ9MSksU3QobiwwPnQ/MDp0KSk6W119ZnVuY3Rpb24gVnIobix0LHIpe3ZhciBlPW4/bi5sZW5ndGg6MDtyZXR1cm4gZT8oKHI/JHIobix0LHIpOm51bGw9PXQpJiYodD0xKSx0PWUtKCt0fHwwKSxTdChuLDAsMD50PzA6dCkpOltdfWZ1bmN0aW9uIFpyKG4pe3JldHVybiBuP25bMF06eH1mdW5jdGlvbiBZcihuLHQsZSl7dmFyIHU9bj9uLmxlbmd0aDowO2lmKCF1KXJldHVybi0xO2lmKCJudW1iZXIiPT10eXBlb2YgZSllPTA+ZT9qdSh1K2UsMCk6ZTtlbHNlIGlmKGUpcmV0dXJuIGU9enQobix0KSxlPHUmJih0PT09dD90PT09bltlXTpuW2VdIT09bltlXSk/ZTotMTtyZXR1cm4gcihuLHQsZXx8MCl9ZnVuY3Rpb24gR3Iobil7dmFyIHQ9bj9uLmxlbmd0aDowO3JldHVybiB0P25bdC0xXTp4fWZ1bmN0aW9uIEpyKG4pe3JldHVybiBLcihuLDEpfWZ1bmN0aW9uIFhyKG4sdCxlLHUpe2lmKCFufHwhbi5sZW5ndGgpcmV0dXJuW107bnVsbCE9dCYmImJvb2xlYW4iIT10eXBlb2YgdCYmKHU9ZSxlPSRyKG4sdCx1KT94OnQsdD0hMSk7dmFyIG89bXIoKTtpZigobnVsbCE9ZXx8byE9PWl0KSYmKGU9byhlLHUsMykpLHQmJmpyKCk9PT1yKXt0PWU7dmFyIGk7ZT0tMSx1PW4ubGVuZ3RoO2Zvcih2YXIgbz0tMSxmPVtdOysrZTx1Oyl7dmFyIGM9bltlXSxhPXQ/dChjLGUsbik6YztlJiZpPT09YXx8KGk9YSxmWysrb109Yyl9bj1mfWVsc2Ugbj1MdChuLGUpO3JldHVybiBufWZ1bmN0aW9uIEhyKG4pe2lmKCFufHwhbi5sZW5ndGgpcmV0dXJuW107dmFyIHQ9LTEscj0wO249Wm4obixmdW5jdGlvbihuKXtyZXR1cm4gU3Iobik/KHI9anUobi5sZW5ndGgsciksITApOnZvaWQgMH0pO2Zvcih2YXIgZT1EZShyKTsrK3Q8cjspZVt0XT1YbihuLE90KHQpKTtyZXR1cm4gZX1mdW5jdGlvbiBRcihuLHQscil7cmV0dXJuIG4mJm4ubGVuZ3RoPyhuPUhyKG4pLG51bGw9PXQ/bjoodD1EdCh0LHIsNCksWG4obixmdW5jdGlvbihuKXtyZXR1cm4gUW4obix0LHgsITApfSkpKTpbXX1mdW5jdGlvbiBuZShuLHQpe3ZhciByPS0xLGU9bj9uLmxlbmd0aDowLHU9e307Zm9yKCFlfHx0fHxXbyhuWzBdKXx8KHQ9W10pOysrcjxlOyl7dmFyIG89bltyXTt0P3Vbb109dFtyXTpvJiYodVtvWzBdXT1vWzFdKX1yZXR1cm4gdX1mdW5jdGlvbiB0ZShuKXtyZXR1cm4gbj1ObihuKSxuLl9fY2hhaW5fXz0hMCxufWZ1bmN0aW9uIHJlKG4sdCxyKXtyZXR1cm4gdC5jYWxsKHIsbil9ZnVuY3Rpb24gZWUobix0LHIpe3ZhciBlPVdvKG4pP1ZuOmx0O3JldHVybiByJiYkcihuLHQscikmJih0PXgpLCgiZnVuY3Rpb24iIT10eXBlb2YgdHx8ciE9PXgpJiYodD1tcih0LHIsMykpLGUobix0KX1mdW5jdGlvbiB1ZShuLHQscil7dmFyIGU9V28obik/Wm46cHQ7cmV0dXJuIHQ9bXIodCxyLDMpLGUobix0KX1mdW5jdGlvbiBvZShuLHQscixlKXt2YXIgdT1uP1Z1KG4pOjA7cmV0dXJuIExyKHUpfHwobj1TZShuKSx1PW4ubGVuZ3RoKSxyPSJudW1iZXIiIT10eXBlb2Ygcnx8ZSYmJHIodCxyLGUpPzA6MD5yP2p1KHUrciwwKTpyfHwwLCJzdHJpbmciPT10eXBlb2Ygbnx8IVdvKG4pJiZBZShuKT9yPD11JiYtMTxuLmluZGV4T2YodCxyKTohIXUmJi0xPGpyKG4sdCxyKX1mdW5jdGlvbiBpZShuLHQscil7dmFyIGU9V28obik/WG46bXQ7cmV0dXJuIHQ9bXIodCxyLDMpLGUobix0KX1mdW5jdGlvbiBmZShuLHQscil7aWYocj8kcihuLHQscik6bnVsbD09dCl7bj1CcihuKTt2YXIgZT1uLmxlbmd0aDtyZXR1cm4gMDxlP25bRXQoMCxlLTEpXTp4fXI9LTEsbj1PZShuKTt2YXIgZT1uLmxlbmd0aCx1PWUtMTtmb3IodD1rdSgwPnQ/MDordHx8MCxlKTsrK3I8dDspe3ZhciBlPUV0KHIsdSksbz1uW2VdO25bZV09bltyXSxuW3JdPW99cmV0dXJuIG4ubGVuZ3RoPXQsbn1mdW5jdGlvbiBjZShuLHQscil7dmFyIGU9V28obik/bnQ6VXQ7cmV0dXJuIHImJiRyKG4sdCxyKSYmKHQ9eCksKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxyIT09eCkmJih0PW1yKHQsciwzKSksZShuLHQpfWZ1bmN0aW9uIGFlKG4sdCl7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBYZShUKTt2YXIgZT1uO249dCx0PWV9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIDA8LS1uJiYocj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksMT49biYmKHQ9eCkscn19ZnVuY3Rpb24gbGUobix0LHIpe2Z1bmN0aW9uIGUodCxyKXtyJiZhdShyKSxjPXA9aD14LHQmJihfPXhvKCksYT1uLmFwcGx5KHMsZikscHx8Y3x8KGY9cz14KSl9ZnVuY3Rpb24gdSgpe3ZhciBuPXQtKHhvKCktbCk7MD49bnx8bj50P2UoaCxjKTpwPV91KHUsbil9ZnVuY3Rpb24gbygpe2UoZyxwKX1mdW5jdGlvbiBpKCl7aWYoZj1hcmd1bWVudHMsbD14bygpLHM9dGhpcyxoPWcmJihwfHwheSksITE9PT12KXZhciByPXkmJiFwO2Vsc2V7Y3x8eXx8KF89bCk7dmFyIGU9di0obC1fKSxpPTA+PWV8fGU+djtpPyhjJiYoYz1hdShjKSksXz1sLGE9bi5hcHBseShzLGYpKTpjfHwoYz1fdShvLGUpKX1yZXR1cm4gaSYmcD9wPWF1KHApOnB8fHQ9PT12fHwocD1fdSh1LHQpKSxyJiYoaT0hMCxhPW4uYXBwbHkocyxmKSksIWl8fHB8fGN8fChmPXM9eCksYX12YXIgZixjLGEsbCxzLHAsaCxfPTAsdj0hMSxnPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBYZShUKTtpZih0PTA+dD8wOit0fHwwLCEwPT09cil2YXIgeT0hMCxnPSExO2Vsc2UgZGUocikmJih5PSEhci5sZWFkaW5nLHY9Im1heFdhaXQiaW4gciYmanUoK3IubWF4V2FpdHx8MCx0KSxnPSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzpnKTtyZXR1cm4gaS5jYW5jZWw9ZnVuY3Rpb24oKXtwJiZhdShwKSxjJiZhdShjKSxfPTAsYz1wPWg9eH0saX1mdW5jdGlvbiBzZShuLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBufHx0JiYiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgWGUoVCk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMsdT10P3QuYXBwbHkodGhpcyxlKTplWzBdLG89ci5jYWNoZTtyZXR1cm4gby5oYXModSk/by5nZXQodSk6KGU9bi5hcHBseSh0aGlzLGUpLHIuY2FjaGU9by5zZXQodSxlKSxlKX07cmV0dXJuIHIuY2FjaGU9bmV3IHNlLkNhY2hlLHJ9ZnVuY3Rpb24gcGUobix0KXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgWGUoVCk7cmV0dXJuIHQ9anUodD09PXg/bi5sZW5ndGgtMTordHx8MCwwKSxmdW5jdGlvbigpe2Zvcih2YXIgcj1hcmd1bWVudHMsZT0tMSx1PWp1KHIubGVuZ3RoLXQsMCksbz1EZSh1KTsrK2U8dTspb1tlXT1yW3QrZV07c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gbi5jYWxsKHRoaXMsbyk7Y2FzZSAxOnJldHVybiBuLmNhbGwodGhpcyxyWzBdLG8pO2Nhc2UgMjpyZXR1cm4gbi5jYWxsKHRoaXMsclswXSxyWzFdLG8pfWZvcih1PURlKHQrMSksZT0tMTsrK2U8dDspdVtlXT1yW2VdO3JldHVybiB1W3RdPW8sbi5hcHBseSh0aGlzLHUpfX1mdW5jdGlvbiBoZShuLHQpe3JldHVybiBuPnR9ZnVuY3Rpb24gX2Uobil7cmV0dXJuIGgobikmJlNyKG4pJiZldS5jYWxsKG4sImNhbGxlZSIpJiYhcHUuY2FsbChuLCJjYWxsZWUiKX1mdW5jdGlvbiB2ZShuLHQscixlKXtyZXR1cm4gZT0ocj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9EdChyLGUsMyk6eCk/cihuLHQpOngsZT09PXg/eHQobix0LHIpOiEhZX1mdW5jdGlvbiBnZShuKXtyZXR1cm4gaChuKSYmInN0cmluZyI9PXR5cGVvZiBuLm1lc3NhZ2UmJm91LmNhbGwobik9PXF9ZnVuY3Rpb24geWUobil7cmV0dXJuIGRlKG4pJiZvdS5jYWxsKG4pPT1LfWZ1bmN0aW9uIGRlKG4pe3ZhciB0PXR5cGVvZiBuO3JldHVybiEhbiYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX1mdW5jdGlvbiB3ZShuKXtyZXR1cm4gbnVsbCE9biYmKHllKG4pP2Z1LnRlc3QocnUuY2FsbChuKSk6aChuKSYmKEduKG4pP2Z1OkluKS50ZXN0KG4pKX1mdW5jdGlvbiB4ZShuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG58fGgobikmJm91LmNhbGwobik9PVZ9ZnVuY3Rpb24gYmUobil7dmFyIHQ7aWYoIWgobil8fG91LmNhbGwobikhPVp8fEduKG4pfHxfZShuKXx8IShldS5jYWxsKG4sImNvbnN0cnVjdG9yIil8fCh0PW4uY29uc3RydWN0b3IsImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiB0KSkpcmV0dXJuITE7dmFyIHI7cmV0dXJuIE5uLnN1cHBvcnQub3duTGFzdD8odnQobixmdW5jdGlvbihuLHQsZSl7cmV0dXJuIHI9ZXUuY2FsbChlLHQpLCExfSksITEhPT1yKToodnQobixmdW5jdGlvbihuLHQpe3I9dH0pLHI9PT14fHxldS5jYWxsKG4scikpfWZ1bmN0aW9uIG1lKG4pe3JldHVybiBkZShuKSYmb3UuY2FsbChuKT09WX1mdW5jdGlvbiBBZShuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG58fGgobikmJm91LmNhbGwobik9PUd9ZnVuY3Rpb24gamUobil7cmV0dXJuIGgobikmJkxyKG4ubGVuZ3RoKSYmISFGbltvdS5jYWxsKG4pXX1mdW5jdGlvbiBrZShuLHQpe3JldHVybiBuPHR9ZnVuY3Rpb24gT2Uobil7dmFyIHQ9bj9WdShuKTowO3JldHVybiBMcih0KT90P05uLnN1cHBvcnQudW5pbmRleGVkQ2hhcnMmJkFlKG4pP24uc3BsaXQoIiIpOnFuKG4pOltdOlNlKG4pfWZ1bmN0aW9uIEllKG4pe3JldHVybiBvdChuLEVlKG4pKX1mdW5jdGlvbiBSZShuKXtyZXR1cm4gZHQobixFZShuKSl9ZnVuY3Rpb24gRWUobil7aWYobnVsbD09bilyZXR1cm5bXTtkZShuKXx8KG49WWUobikpO2Zvcih2YXIgdD1uLmxlbmd0aCxyPU5uLnN1cHBvcnQsdD10JiZMcih0KSYmKFdvKG4pfHxfZShuKXx8QWUobikpJiZ0fHwwLGU9bi5jb25zdHJ1Y3Rvcix1PS0xLGU9eWUoZSkmJmUucHJvdG90eXBlfHxudSxvPWU9PT1uLGk9RGUodCksZj0wPHQsYz1yLmVudW1FcnJvclByb3BzJiYobj09PVFlfHxuIGluc3RhbmNlb2YgcWUpLGE9ci5lbnVtUHJvdG90eXBlcyYmeWUobik7Kyt1PHQ7KWlbdV09dSsiIjtmb3IodmFyIGwgaW4gbilhJiYicHJvdG90eXBlIj09bHx8YyYmKCJtZXNzYWdlIj09bHx8Im5hbWUiPT1sKXx8ZiYmVXIobCx0KXx8ImNvbnN0cnVjdG9yIj09bCYmKG98fCFldS5jYWxsKG4sbCkpfHxpLnB1c2gobCk7aWYoci5ub25FbnVtU2hhZG93cyYmbiE9PW51KWZvcih0PW49PT10dT9HOm49PT1RZT9xOm91LmNhbGwobikscj1OdVt0XXx8TnVbWl0sdD09WiYmKGU9bnUpLHQ9V24ubGVuZ3RoO3QtLTspbD1Xblt0XSx1PXJbbF0sbyYmdXx8KHU/IWV1LmNhbGwobixsKTpuW2xdPT09ZVtsXSl8fGkucHVzaChsKTtyZXR1cm4gaX1mdW5jdGlvbiBDZShuKXtuPURyKG4pO2Zvcih2YXIgdD0tMSxyPUtvKG4pLGU9ci5sZW5ndGgsdT1EZShlKTsrK3Q8ZTspe3ZhciBvPXJbdF07dVt0XT1bbyxuW29dXX1yZXR1cm4gdX1mdW5jdGlvbiBTZShuKXtyZXR1cm4gTnQobixLbyhuKSl9ZnVuY3Rpb24gVWUobil7cmV0dXJuKG49dShuKSkmJm4ucmVwbGFjZShFbixjKS5yZXBsYWNlKG1uLCIiKX1mdW5jdGlvbiAkZShuLHQpe3ZhciByPSIiO2lmKG49dShuKSx0PSt0LDE+dHx8IW58fCFtdSh0KSlyZXR1cm4gcjtkbyB0JTImJihyKz1uKSx0PXh1KHQvMiksbis9bjt3aGlsZSh0KTtyZXR1cm4gcn1mdW5jdGlvbiBXZShuLHQscil7dmFyIGU9bjtyZXR1cm4obj11KG4pKT8ocj8kcihlLHQscik6bnVsbD09dCk/bi5zbGljZShnKG4pLHkobikrMSk6KHQrPSIiLG4uc2xpY2UobyhuLHQpLGkobix0KSsxKSk6bn1mdW5jdGlvbiBGZShuLHQscil7cmV0dXJuIHImJiRyKG4sdCxyKSYmKHQ9eCksbj11KG4pLG4ubWF0Y2godHx8VW4pfHxbXX1mdW5jdGlvbiBMZShuLHQscil7cmV0dXJuIHImJiRyKG4sdCxyKSYmKHQ9eCksaChuKT9UZShuKTppdChuLHQpfWZ1bmN0aW9uIE5lKG4pe3JldHVybiBufWZ1bmN0aW9uIFRlKG4pe3JldHVybiBBdChmdChuLCEwKSl9ZnVuY3Rpb24gUGUobix0LHIpe2lmKG51bGw9PXIpe3ZhciBlPWRlKHQpLHU9ZT9Lbyh0KTp4OygodT11JiZ1Lmxlbmd0aD9kdCh0LHUpOngpP3UubGVuZ3RoOmUpfHwodT0hMSxyPXQsdD1uLG49dGhpcyl9dXx8KHU9ZHQodCxLbyh0KSkpO3ZhciBvPSEwLGU9LTEsaT15ZShuKSxmPXUubGVuZ3RoOyExPT09cj9vPSExOmRlKHIpJiYiY2hhaW4iaW4gciYmKG89ci5jaGFpbik7Zm9yKDsrK2U8Zjspe3I9dVtlXTt2YXIgYz10W3JdO25bcl09YyxpJiYobi5wcm90b3R5cGVbcl09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fX2NoYWluX187aWYob3x8cil7dmFyIGU9bih0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4oZS5fX2FjdGlvbnNfXz1xbih0aGlzLl9fYWN0aW9uc19fKSkucHVzaCh7ZnVuYzp0LGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6bn0pLGUuX19jaGFpbl9fPXIsZX1yZXR1cm4gdC5hcHBseShuLEhuKFt0aGlzLnZhbHVlKCldLGFyZ3VtZW50cykpfX0oYykpfXJldHVybiBufWZ1bmN0aW9uIHplKCl7fWZ1bmN0aW9uIEJlKG4pe3JldHVybiBXcihuKT9PdChuKTpJdChuKX1fPV8/Sm4uZGVmYXVsdHMoWW4uT2JqZWN0KCksXyxKbi5waWNrKFluLCRuKSk6WW47dmFyIERlPV8uQXJyYXksTWU9Xy5EYXRlLHFlPV8uRXJyb3IsS2U9Xy5GdW5jdGlvbixWZT1fLk1hdGgsWmU9Xy5OdW1iZXIsWWU9Xy5PYmplY3QsR2U9Xy5SZWdFeHAsSmU9Xy5TdHJpbmcsWGU9Xy5UeXBlRXJyb3IsSGU9RGUucHJvdG90eXBlLFFlPXFlLnByb3RvdHlwZSxudT1ZZS5wcm90b3R5cGUsdHU9SmUucHJvdG90eXBlLHJ1PUtlLnByb3RvdHlwZS50b1N0cmluZyxldT1udS5oYXNPd25Qcm9wZXJ0eSx1dT0wLG91PW51LnRvU3RyaW5nLGl1PVluLl8sZnU9R2UoIl4iK3J1LmNhbGwoZXUpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLGN1PV8uQXJyYXlCdWZmZXIsYXU9Xy5jbGVhclRpbWVvdXQsbHU9Xy5wYXJzZUZsb2F0LHN1PVZlLnBvdyxwdT1udS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxodT1PcihfLCJTZXQiKSxfdT1fLnNldFRpbWVvdXQsdnU9SGUuc3BsaWNlLGd1PV8uVWludDhBcnJheSx5dT1PcihfLCJXZWFrTWFwIiksZHU9VmUuY2VpbCx3dT1PcihZZSwiY3JlYXRlIikseHU9VmUuZmxvb3IsYnU9T3IoRGUsImlzQXJyYXkiKSxtdT1fLmlzRmluaXRlLEF1PU9yKFllLCJrZXlzIiksanU9VmUubWF4LGt1PVZlLm1pbixPdT1PcihNZSwibm93IiksSXU9Xy5wYXJzZUludCxSdT1WZS5yYW5kb20sRXU9WmUuTkVHQVRJVkVfSU5GSU5JVFksQ3U9WmUuUE9TSVRJVkVfSU5GSU5JVFksU3U9NDI5NDk2NzI5NCxVdT0yMTQ3NDgzNjQ3LCR1PTkwMDcxOTkyNTQ3NDA5OTEsV3U9eXUmJm5ldyB5dSxGdT17fSxMdT17fTtMdVtYXT1fLkZsb2F0MzJBcnJheSxMdVtIXT1fLkZsb2F0NjRBcnJheSxMdVtRXT1fLkludDhBcnJheSxMdVtubl09Xy5JbnQxNkFycmF5LEx1W3RuXT1fLkludDMyQXJyYXksTHVbcm5dPWd1LEx1W2VuXT1fLlVpbnQ4Q2xhbXBlZEFycmF5LEx1W3VuXT1fLlVpbnQxNkFycmF5LEx1W29uXT1fLlVpbnQzMkFycmF5O3ZhciBOdT17fTtOdVtCXT1OdVtNXT1OdVtWXT17Y29uc3RydWN0b3I6ITAsdG9Mb2NhbGVTdHJpbmc6ITAsdG9TdHJpbmc6ITAsdmFsdWVPZjohMH0sTnVbRF09TnVbR109e2NvbnN0cnVjdG9yOiEwLHRvU3RyaW5nOiEwLHZhbHVlT2Y6ITB9LE51W3FdPU51W0tdPU51W1ldPXtjb25zdHJ1Y3RvcjohMCx0b1N0cmluZzohMH0sTnVbWl09e2NvbnN0cnVjdG9yOiEwfSxLbihXbixmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gTnUpaWYoZXUuY2FsbChOdSx0KSl7dmFyIHI9TnVbdF07cltuXT1ldS5jYWxsKHIsbil9fSk7dmFyIFR1PU5uLnN1cHBvcnQ9e307IWZ1bmN0aW9uKG4pe3ZhciB0PWZ1bmN0aW9uKCl7dGhpcy54PW59LHI9ezA6bixsZW5ndGg6bn0sZT1bXTt0LnByb3RvdHlwZT17dmFsdWVPZjpuLHk6bn07Zm9yKHZhciB1IGluIG5ldyB0KWUucHVzaCh1KTtUdS5lbnVtRXJyb3JQcm9wcz1wdS5jYWxsKFFlLCJtZXNzYWdlIil8fHB1LmNhbGwoUWUsIm5hbWUiKSxUdS5lbnVtUHJvdG90eXBlcz1wdS5jYWxsKHQsInByb3RvdHlwZSIpLFR1Lm5vbkVudW1TaGFkb3dzPSEvdmFsdWVPZi8udGVzdChlKSxUdS5vd25MYXN0PSJ4IiE9ZVswXSxUdS5zcGxpY2VPYmplY3RzPSh2dS5jYWxsKHIsMCwxKSwhclswXSksVHUudW5pbmRleGVkQ2hhcnM9Inh4IiE9IngiWzBdK1llKCJ4IilbMF19KDEsMCksTm4udGVtcGxhdGVTZXR0aW5ncz17ZXNjYXBlOl9uLGV2YWx1YXRlOnZuLGludGVycG9sYXRlOmduLHZhcmlhYmxlOiIiLGltcG9ydHM6e186Tm59fTt2YXIgUHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fXJldHVybiBmdW5jdGlvbih0KXtpZihkZSh0KSl7bi5wcm90b3R5cGU9dDt2YXIgcj1uZXcgbjtuLnByb3RvdHlwZT14fXJldHVybiByfHx7fX19KCksenU9WXQoZ3QpLEJ1PVl0KHl0LCEwKSxEdT1HdCgpLE11PUd0KCEwKSxxdT1XdT9mdW5jdGlvbihuLHQpe3JldHVybiBXdS5zZXQobix0KSxufTpOZSxLdT1XdT9mdW5jdGlvbihuKXtyZXR1cm4gV3UuZ2V0KG4pfTp6ZSxWdT1PdCgibGVuZ3RoIiksWnU9ZnVuY3Rpb24oKXt2YXIgbj0wLHQ9MDtyZXR1cm4gZnVuY3Rpb24ocixlKXt2YXIgdT14bygpLG89Vy0odS10KTtpZih0PXUsMDxvKXtpZigrK24+PSQpcmV0dXJuIHJ9ZWxzZSBuPTA7cmV0dXJuIHF1KHIsZSl9fSgpLFl1PXBlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGgobikmJlNyKG4pP2F0KG4sX3QodCwhMSwhMCkpOltdfSksR3U9ZXIoKSxKdT1lcighMCksWHU9cGUoZnVuY3Rpb24obil7Zm9yKHZhciB0PW4ubGVuZ3RoLGU9dCx1PURlKGwpLG89anIoKSxpPW89PT1yLGY9W107ZS0tOyl7dmFyIGM9bltlXT1TcihjPW5bZV0pP2M6W107dVtlXT1pJiYxMjA8PWMubGVuZ3RoJiZ3dSYmaHU/bmV3IERuKGUmJmMpOm51bGx9dmFyIGk9blswXSxhPS0xLGw9aT9pLmxlbmd0aDowLHM9dVswXTtuOmZvcig7KythPGw7KWlmKGM9aVthXSwwPihzP01uKHMsYyk6byhmLGMsMCkpKXtmb3IoZT10Oy0tZTspe3ZhciBwPXVbZV07aWYoMD4ocD9NbihwLGMpOm8obltlXSxjLDApKSljb250aW51ZSBufXMmJnMucHVzaChjKSxmLnB1c2goYyl9cmV0dXJuIGZ9KSxIdT1wZShmdW5jdGlvbih0LHIpe3I9X3Qocik7dmFyIGU9dXQodCxyKTtyZXR1cm4gUnQodCxyLnNvcnQobikpLGV9KSxRdT15cigpLG5vPXlyKCEwKSx0bz1wZShmdW5jdGlvbihuKXtyZXR1cm4gTHQoX3QobiwhMSwhMCkpfSkscm89cGUoZnVuY3Rpb24obix0KXtyZXR1cm4gU3Iobik/YXQobix0KTpbXX0pLGVvPXBlKEhyKSx1bz1wZShmdW5jdGlvbihuKXt2YXIgdD1uLmxlbmd0aCxyPTI8dD9uW3QtMl06eCxlPTE8dD9uW3QtMV06eDtyZXR1cm4gMjx0JiYiZnVuY3Rpb24iPT10eXBlb2Ygcj90LT0yOihyPTE8dCYmImZ1bmN0aW9uIj09dHlwZW9mIGU/KC0tdCxlKTp4LGU9eCksbi5sZW5ndGg9dCxRcihuLHIsZSl9KSxvbz1wZShmdW5jdGlvbihuKXtyZXR1cm4gbj1fdChuKSx0aGlzLnRocnUoZnVuY3Rpb24odCl7dD1Xbyh0KT90OltEcih0KV07Zm9yKHZhciByPW4sZT0tMSx1PXQubGVuZ3RoLG89LTEsaT1yLmxlbmd0aCxmPURlKHUraSk7KytlPHU7KWZbZV09dFtlXTtmb3IoOysrbzxpOylmW2UrK109cltvXTtyZXR1cm4gZn0pfSksaW89cGUoZnVuY3Rpb24obix0KXtyZXR1cm4gU3IobikmJihuPUJyKG4pKSx1dChuLF90KHQpKX0pLGZvPVZ0KGZ1bmN0aW9uKG4sdCxyKXtldS5jYWxsKG4scik/KytuW3JdOm5bcl09MX0pLGNvPXJyKHp1KSxhbz1ycihCdSwhMCksbG89aXIoS24senUpLHNvPWlyKGZ1bmN0aW9uKG4sdCl7Zm9yKHZhciByPW4ubGVuZ3RoO3ItLSYmITEhPT10KG5bcl0scixuKTspO3JldHVybiBufSxCdSkscG89VnQoZnVuY3Rpb24obix0LHIpe2V1LmNhbGwobixyKT9uW3JdLnB1c2godCk6bltyXT1bdF19KSxobz1WdChmdW5jdGlvbihuLHQscil7bltyXT10fSksX289cGUoZnVuY3Rpb24obix0LHIpe3ZhciBlPS0xLHU9ImZ1bmN0aW9uIj09dHlwZW9mIHQsbz1Xcih0KSxpPVNyKG4pP0RlKG4ubGVuZ3RoKTpbXTtyZXR1cm4genUobixmdW5jdGlvbihuKXt2YXIgZj11P3Q6byYmbnVsbCE9bj9uW3RdOng7aVsrK2VdPWY/Zi5hcHBseShuLHIpOkNyKG4sdCxyKX0pLGl9KSx2bz1WdChmdW5jdGlvbihuLHQscil7bltyPzA6MV0ucHVzaCh0KX0sZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSksZ289cHIoUW4senUpLHlvPXByKGZ1bmN0aW9uKG4sdCxyLGUpe3ZhciB1PW4ubGVuZ3RoO2ZvcihlJiZ1JiYocj1uWy0tdV0pO3UtLTspcj10KHIsblt1XSx1LG4pO3JldHVybiByfSxCdSksd289cGUoZnVuY3Rpb24obix0KXtpZihudWxsPT1uKXJldHVybltdO3ZhciByPXRbMl07cmV0dXJuIHImJiRyKHRbMF0sdFsxXSxyKSYmKHQubGVuZ3RoPTEpLFd0KG4sX3QodCksW10pfSkseG89T3V8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBNZSkuZ2V0VGltZSgpfSxibz1wZShmdW5jdGlvbihuLHQscil7dmFyIGU9bTtpZihyLmxlbmd0aCl2YXIgdT12KHIsYm8ucGxhY2Vob2xkZXIpLGU9ZXxJO3JldHVybiBkcihuLGUsdCxyLHUpfSksbW89cGUoZnVuY3Rpb24obix0KXt0PXQubGVuZ3RoP190KHQpOlJlKG4pO2Zvcih2YXIgcj0tMSxlPXQubGVuZ3RoOysrcjxlOyl7dmFyIHU9dFtyXTtuW3VdPWRyKG5bdV0sbSxuKX1yZXR1cm4gbn0pLEFvPXBlKGZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1tfEE7aWYoci5sZW5ndGgpdmFyIHU9dihyLEFvLnBsYWNlaG9sZGVyKSxlPWV8STtyZXR1cm4gZHIodCxlLG4scix1KX0pLGpvPVF0KGspLGtvPVF0KE8pLE9vPXBlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGN0KG4sMSx0KX0pLElvPXBlKGZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gY3Qobix0LHIpfSksUm89b3IoKSxFbz1vcighMCksQ289cGUoZnVuY3Rpb24obix0KXtpZih0PV90KHQpLCJmdW5jdGlvbiIhPXR5cGVvZiBufHwhVm4odCxlKSl0aHJvdyBuZXcgWGUoVCk7dmFyIHI9dC5sZW5ndGg7cmV0dXJuIHBlKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdT1rdShlLmxlbmd0aCxyKTt1LS07KWVbdV09dFt1XShlW3VdKTtyZXR1cm4gbi5hcHBseSh0aGlzLGUpfSl9KSxTbz1zcihJKSxVbz1zcihSKSwkbz1wZShmdW5jdGlvbihuLHQpe3JldHVybiBkcihuLEMseCx4LHgsX3QodCkpfSksV289YnV8fGZ1bmN0aW9uKG4pe3JldHVybiBoKG4pJiZMcihuLmxlbmd0aCkmJm91LmNhbGwobik9PUJ9LEZvPVp0KGt0KSxMbz1adChmdW5jdGlvbihuLHQscil7cmV0dXJuIHI/cnQobix0LHIpOmV0KG4sdCl9KSxObz1ucihMbyxmdW5jdGlvbihuLHQpe3JldHVybiBuPT09eD90Om59KSxUbz1ucihGbyxOciksUG89dXIoZ3QpLHpvPXVyKHl0KSxCbz1mcihEdSksRG89ZnIoTXUpLE1vPWNyKGd0KSxxbz1jcih5dCksS289QXU/ZnVuY3Rpb24obil7dmFyIHQ9bnVsbD09bj94Om4uY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlPT09bnx8KCJmdW5jdGlvbiI9PXR5cGVvZiBuP05uLnN1cHBvcnQuZW51bVByb3RvdHlwZXM6U3IobikpP3pyKG4pOmRlKG4pP0F1KG4pOltdfTp6cixWbz1hcighMCksWm89YXIoKSxZbz1wZShmdW5jdGlvbihuLHQpe2lmKG51bGw9PW4pcmV0dXJue307aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRbMF0pcmV0dXJuIHQ9WG4oX3QodCksSmUpLFRyKG4sYXQoRWUobiksdCkpO3ZhciByPUR0KHRbMF0sdFsxXSwzKTtyZXR1cm4gUHIobixmdW5jdGlvbihuLHQsZSl7cmV0dXJuIXIobix0LGUpfSl9KSxHbz1wZShmdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1uP3t9OiJmdW5jdGlvbiI9PXR5cGVvZiB0WzBdP1ByKG4sRHQodFswXSx0WzFdLDMpKTpUcihuLF90KHQpKX0pLEpvPVh0KGZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdD10LnRvTG93ZXJDYXNlKCksbisocj90LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk6dCl9KSxYbz1YdChmdW5jdGlvbihuLHQscil7cmV0dXJuIG4rKHI/Ii0iOiIiKSt0LnRvTG93ZXJDYXNlKCl9KSxIbz1scigpLFFvPWxyKCEwKSxuaT1YdChmdW5jdGlvbihuLHQscil7cmV0dXJuIG4rKHI/Il8iOiIiKSt0LnRvTG93ZXJDYXNlKCl9KSx0aT1YdChmdW5jdGlvbihuLHQscil7cmV0dXJuIG4rKHI/IiAiOiIiKSsodC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpKX0pLHJpPXBlKGZ1bmN0aW9uKG4sdCl7dHJ5e3JldHVybiBuLmFwcGx5KHgsdCl9Y2F0Y2gocil7cmV0dXJuIGdlKHIpP3I6bmV3IHFlKHIpfX0pLGVpPXBlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBDcihyLG4sdCl9fSksdWk9cGUoZnVuY3Rpb24obix0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIENyKG4scix0KX19KSxvaT1ncigiY2VpbCIpLGlpPWdyKCJmbG9vciIpLGZpPXRyKGhlLEV1KSxjaT10cihrZSxDdSksYWk9Z3IoInJvdW5kIik7cmV0dXJuIE5uLnByb3RvdHlwZT1Ubi5wcm90b3R5cGUsUG4ucHJvdG90eXBlPVB1KFRuLnByb3RvdHlwZSksUG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBuLHpuLnByb3RvdHlwZT1QdShUbi5wcm90b3R5cGUpLHpuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj16bixCbi5wcm90b3R5cGVbImRlbGV0ZSJdPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmhhcyhuKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bbl19LEJuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24obil7cmV0dXJuIl9fcHJvdG9fXyI9PW4/eDp0aGlzLl9fZGF0YV9fW25dfSxCbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKG4pe3JldHVybiJfX3Byb3RvX18iIT1uJiZldS5jYWxsKHRoaXMuX19kYXRhX18sbil9LEJuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4iX19wcm90b19fIiE9biYmKHRoaXMuX19kYXRhX19bbl09dCksdGhpc30sRG4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5kYXRhOyJzdHJpbmciPT10eXBlb2Ygbnx8ZGUobik/dC5zZXQuYWRkKG4pOnQuaGFzaFtuXT0hMH0sc2UuQ2FjaGU9Qm4sTm4uYWZ0ZXI9ZnVuY3Rpb24obix0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFhlKFQpO3ZhciByPW47bj10LHQ9cn1yZXR1cm4gbj1tdShuPStuKT9uOjAsZnVuY3Rpb24oKXtyZXR1cm4gMT4tLW4/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0sTm4uYXJ5PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gciYmJHIobix0LHIpJiYodD14KSx0PW4mJm51bGw9PXQ/bi5sZW5ndGg6anUoK3R8fDAsMCksZHIobixFLHgseCx4LHgsdCl9LE5uLmFzc2lnbj1MbyxObi5hdD1pbyxObi5iZWZvcmU9YWUsTm4uYmluZD1ibyxObi5iaW5kQWxsPW1vLAorTm4uYmluZEtleT1BbyxObi5jYWxsYmFjaz1MZSxObi5jaGFpbj10ZSxObi5jaHVuaz1mdW5jdGlvbihuLHQscil7dD0ocj8kcihuLHQscik6bnVsbD09dCk/MTpqdSh4dSh0KXx8MSwxKSxyPTA7Zm9yKHZhciBlPW4/bi5sZW5ndGg6MCx1PS0xLG89RGUoZHUoZS90KSk7cjxlOylvWysrdV09U3QobixyLHIrPXQpO3JldHVybiBvfSxObi5jb21wYWN0PWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD0tMSxyPW4/bi5sZW5ndGg6MCxlPS0xLHU9W107Kyt0PHI7KXt2YXIgbz1uW3RdO28mJih1WysrZV09byl9cmV0dXJuIHV9LE5uLmNvbnN0YW50PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX0sTm4uY291bnRCeT1mbyxObi5jcmVhdGU9ZnVuY3Rpb24obix0LHIpe3ZhciBlPVB1KG4pO3JldHVybiByJiYkcihuLHQscikmJih0PXgpLHQ/ZXQoZSx0KTplfSxObi5jdXJyeT1qbyxObi5jdXJyeVJpZ2h0PWtvLE5uLmRlYm91bmNlPWxlLE5uLmRlZmF1bHRzPU5vLE5uLmRlZmF1bHRzRGVlcD1UbyxObi5kZWZlcj1PbyxObi5kZWxheT1JbyxObi5kaWZmZXJlbmNlPVl1LE5uLmRyb3A9S3IsTm4uZHJvcFJpZ2h0PVZyLE5uLmRyb3BSaWdodFdoaWxlPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbiYmbi5sZW5ndGg/VHQobixtcih0LHIsMyksITAsITApOltdfSxObi5kcm9wV2hpbGU9ZnVuY3Rpb24obix0LHIpe3JldHVybiBuJiZuLmxlbmd0aD9UdChuLG1yKHQsciwzKSwhMCk6W119LE5uLmZpbGw9ZnVuY3Rpb24obix0LHIsZSl7dmFyIHU9bj9uLmxlbmd0aDowO2lmKCF1KXJldHVybltdO2ZvcihyJiYibnVtYmVyIiE9dHlwZW9mIHImJiRyKG4sdCxyKSYmKHI9MCxlPXUpLHU9bi5sZW5ndGgscj1udWxsPT1yPzA6K3J8fDAsMD5yJiYocj0tcj51PzA6dStyKSxlPWU9PT14fHxlPnU/dTorZXx8MCwwPmUmJihlKz11KSx1PXI+ZT8wOmU+Pj4wLHI+Pj49MDtyPHU7KW5bcisrXT10O3JldHVybiBufSxObi5maWx0ZXI9dWUsTm4uZmxhdHRlbj1mdW5jdGlvbihuLHQscil7dmFyIGU9bj9uLmxlbmd0aDowO3JldHVybiByJiYkcihuLHQscikmJih0PSExKSxlP190KG4sdCk6W119LE5uLmZsYXR0ZW5EZWVwPWZ1bmN0aW9uKG4pe3JldHVybiBuJiZuLmxlbmd0aD9fdChuLCEwKTpbXX0sTm4uZmxvdz1SbyxObi5mbG93UmlnaHQ9RW8sTm4uZm9yRWFjaD1sbyxObi5mb3JFYWNoUmlnaHQ9c28sTm4uZm9ySW49Qm8sTm4uZm9ySW5SaWdodD1EbyxObi5mb3JPd249TW8sTm4uZm9yT3duUmlnaHQ9cW8sTm4uZnVuY3Rpb25zPVJlLE5uLmdyb3VwQnk9cG8sTm4uaW5kZXhCeT1obyxObi5pbml0aWFsPWZ1bmN0aW9uKG4pe3JldHVybiBWcihuLDEpfSxObi5pbnRlcnNlY3Rpb249WHUsTm4uaW52ZXJ0PWZ1bmN0aW9uKG4sdCxyKXtyJiYkcihuLHQscikmJih0PXgpLHI9LTE7Zm9yKHZhciBlPUtvKG4pLHU9ZS5sZW5ndGgsbz17fTsrK3I8dTspe3ZhciBpPWVbcl0sZj1uW2ldO3Q/ZXUuY2FsbChvLGYpP29bZl0ucHVzaChpKTpvW2ZdPVtpXTpvW2ZdPWl9cmV0dXJuIG99LE5uLmludm9rZT1fbyxObi5rZXlzPUtvLE5uLmtleXNJbj1FZSxObi5tYXA9aWUsTm4ubWFwS2V5cz1WbyxObi5tYXBWYWx1ZXM9Wm8sTm4ubWF0Y2hlcz1UZSxObi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24obix0KXtyZXR1cm4ganQobixmdCh0LCEwKSl9LE5uLm1lbW9pemU9c2UsTm4ubWVyZ2U9Rm8sTm4ubWV0aG9kPWVpLE5uLm1ldGhvZE9mPXVpLE5uLm1peGluPVBlLE5uLm1vZEFyZ3M9Q28sTm4ubmVnYXRlPWZ1bmN0aW9uKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBYZShUKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxObi5vbWl0PVlvLE5uLm9uY2U9ZnVuY3Rpb24obil7cmV0dXJuIGFlKDIsbil9LE5uLnBhaXJzPUNlLE5uLnBhcnRpYWw9U28sTm4ucGFydGlhbFJpZ2h0PVVvLE5uLnBhcnRpdGlvbj12byxObi5waWNrPUdvLE5uLnBsdWNrPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGllKG4sQmUodCkpfSxObi5wcm9wZXJ0eT1CZSxObi5wcm9wZXJ0eU9mPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gd3QobixNcih0KSx0KyIiKX19LE5uLnB1bGw9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsdD1uWzBdO2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuIHQ7Zm9yKHZhciByPTAsZT1qcigpLHU9bi5sZW5ndGg7KytyPHU7KWZvcih2YXIgbz0wLGk9bltyXTstMTwobz1lKHQsaSxvKSk7KXZ1LmNhbGwodCxvLDEpO3JldHVybiB0fSxObi5wdWxsQXQ9SHUsTm4ucmFuZ2U9ZnVuY3Rpb24obix0LHIpe3ImJiRyKG4sdCxyKSYmKHQ9cj14KSxuPStufHwwLHI9bnVsbD09cj8xOityfHwwLG51bGw9PXQ/KHQ9bixuPTApOnQ9K3R8fDA7dmFyIGU9LTE7dD1qdShkdSgodC1uKS8ocnx8MSkpLDApO2Zvcih2YXIgdT1EZSh0KTsrK2U8dDspdVtlXT1uLG4rPXI7cmV0dXJuIHV9LE5uLnJlYXJnPSRvLE5uLnJlamVjdD1mdW5jdGlvbihuLHQscil7dmFyIGU9V28obik/Wm46cHQ7cmV0dXJuIHQ9bXIodCxyLDMpLGUobixmdW5jdGlvbihuLHIsZSl7cmV0dXJuIXQobixyLGUpfSl9LE5uLnJlbW92ZT1mdW5jdGlvbihuLHQscil7dmFyIGU9W107aWYoIW58fCFuLmxlbmd0aClyZXR1cm4gZTt2YXIgdT0tMSxvPVtdLGk9bi5sZW5ndGg7Zm9yKHQ9bXIodCxyLDMpOysrdTxpOylyPW5bdV0sdChyLHUsbikmJihlLnB1c2gociksby5wdXNoKHUpKTtyZXR1cm4gUnQobixvKSxlfSxObi5yZXN0PUpyLE5uLnJlc3RQYXJhbT1wZSxObi5zZXQ9ZnVuY3Rpb24obix0LHIpe2lmKG51bGw9PW4pcmV0dXJuIG47dmFyIGU9dCsiIjt0PW51bGwhPW5bZV18fFdyKHQsbik/W2VdOk1yKHQpO2Zvcih2YXIgZT0tMSx1PXQubGVuZ3RoLG89dS0xLGk9bjtudWxsIT1pJiYrK2U8dTspe3ZhciBmPXRbZV07ZGUoaSkmJihlPT1vP2lbZl09cjpudWxsPT1pW2ZdJiYoaVtmXT1Vcih0W2UrMV0pP1tdOnt9KSksaT1pW2ZdfXJldHVybiBufSxObi5zaHVmZmxlPWZ1bmN0aW9uKG4pe3JldHVybiBmZShuLEN1KX0sTm4uc2xpY2U9ZnVuY3Rpb24obix0LHIpe3ZhciBlPW4/bi5sZW5ndGg6MDtyZXR1cm4gZT8ociYmIm51bWJlciIhPXR5cGVvZiByJiYkcihuLHQscikmJih0PTAscj1lKSxTdChuLHQscikpOltdfSxObi5zb3J0Qnk9ZnVuY3Rpb24obix0LHIpe2lmKG51bGw9PW4pcmV0dXJuW107ciYmJHIobix0LHIpJiYodD14KTt2YXIgZT0tMTtyZXR1cm4gdD1tcih0LHIsMyksbj1tdChuLGZ1bmN0aW9uKG4scix1KXtyZXR1cm57YTp0KG4scix1KSxiOisrZSxjOm59fSksJHQobixmKX0sTm4uc29ydEJ5QWxsPXdvLE5uLnNvcnRCeU9yZGVyPWZ1bmN0aW9uKG4sdCxyLGUpe3JldHVybiBudWxsPT1uP1tdOihlJiYkcih0LHIsZSkmJihyPXgpLFdvKHQpfHwodD1udWxsPT10P1tdOlt0XSksV28ocil8fChyPW51bGw9PXI/W106W3JdKSxXdChuLHQscikpfSxObi5zcHJlYWQ9ZnVuY3Rpb24obil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFhlKFQpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5hcHBseSh0aGlzLHQpfX0sTm4udGFrZT1mdW5jdGlvbihuLHQscil7cmV0dXJuIG4mJm4ubGVuZ3RoPygocj8kcihuLHQscik6bnVsbD09dCkmJih0PTEpLFN0KG4sMCwwPnQ/MDp0KSk6W119LE5uLnRha2VSaWdodD1mdW5jdGlvbihuLHQscil7dmFyIGU9bj9uLmxlbmd0aDowO3JldHVybiBlPygocj8kcihuLHQscik6bnVsbD09dCkmJih0PTEpLHQ9ZS0oK3R8fDApLFN0KG4sMD50PzA6dCkpOltdfSxObi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihuLHQscil7cmV0dXJuIG4mJm4ubGVuZ3RoP1R0KG4sbXIodCxyLDMpLCExLCEwKTpbXX0sTm4udGFrZVdoaWxlPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbiYmbi5sZW5ndGg/VHQobixtcih0LHIsMykpOltdfSxObi50YXA9ZnVuY3Rpb24obix0LHIpe3JldHVybiB0LmNhbGwocixuKSxufSxObi50aHJvdHRsZT1mdW5jdGlvbihuLHQscil7dmFyIGU9ITAsdT0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgWGUoVCk7cmV0dXJuITE9PT1yP2U9ITE6ZGUocikmJihlPSJsZWFkaW5nImluIHI/ISFyLmxlYWRpbmc6ZSx1PSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzp1KSxsZShuLHQse2xlYWRpbmc6ZSxtYXhXYWl0Oit0LHRyYWlsaW5nOnV9KX0sTm4udGhydT1yZSxObi50aW1lcz1mdW5jdGlvbihuLHQscil7aWYobj14dShuKSwxPm58fCFtdShuKSlyZXR1cm5bXTt2YXIgZT0tMSx1PURlKGt1KG4sNDI5NDk2NzI5NSkpO2Zvcih0PUR0KHQsciwxKTsrK2U8bjspNDI5NDk2NzI5NT5lP3VbZV09dChlKTp0KGUpO3JldHVybiB1fSxObi50b0FycmF5PU9lLE5uLnRvUGxhaW5PYmplY3Q9SWUsTm4udHJhbnNmb3JtPWZ1bmN0aW9uKG4sdCxyLGUpe3ZhciB1PVdvKG4pfHxqZShuKTtyZXR1cm4gdD1tcih0LGUsNCksbnVsbD09ciYmKHV8fGRlKG4pPyhlPW4uY29uc3RydWN0b3Iscj11P1dvKG4pP25ldyBlOltdOlB1KHllKGUpP2UucHJvdG90eXBlOngpKTpyPXt9KSwodT9LbjpndCkobixmdW5jdGlvbihuLGUsdSl7cmV0dXJuIHQocixuLGUsdSl9KSxyfSxObi51bmlvbj10byxObi51bmlxPVhyLE5uLnVuemlwPUhyLE5uLnVuemlwV2l0aD1RcixObi52YWx1ZXM9U2UsTm4udmFsdWVzSW49ZnVuY3Rpb24obil7cmV0dXJuIE50KG4sRWUobikpfSxObi53aGVyZT1mdW5jdGlvbihuLHQpe3JldHVybiB1ZShuLEF0KHQpKX0sTm4ud2l0aG91dD1ybyxObi53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ9bnVsbD09dD9OZTp0LGRyKHQsSSx4LFtuXSxbXSl9LE5uLnhvcj1mdW5jdGlvbigpe2Zvcih2YXIgbj0tMSx0PWFyZ3VtZW50cy5sZW5ndGg7KytuPHQ7KXt2YXIgcj1hcmd1bWVudHNbbl07aWYoU3IocikpdmFyIGU9ZT9IbihhdChlLHIpLGF0KHIsZSkpOnJ9cmV0dXJuIGU/THQoZSk6W119LE5uLnppcD1lbyxObi56aXBPYmplY3Q9bmUsTm4uemlwV2l0aD11byxObi5iYWNrZmxvdz1FbyxObi5jb2xsZWN0PWllLE5uLmNvbXBvc2U9RW8sTm4uZWFjaD1sbyxObi5lYWNoUmlnaHQ9c28sTm4uZXh0ZW5kPUxvLE5uLml0ZXJhdGVlPUxlLE5uLm1ldGhvZHM9UmUsTm4ub2JqZWN0PW5lLE5uLnNlbGVjdD11ZSxObi50YWlsPUpyLE5uLnVuaXF1ZT1YcixQZShObixObiksTm4uYWRkPWZ1bmN0aW9uKG4sdCl7cmV0dXJuKCtufHwwKSsoK3R8fDApfSxObi5hdHRlbXB0PXJpLE5uLmNhbWVsQ2FzZT1KbyxObi5jYXBpdGFsaXplPWZ1bmN0aW9uKG4pe3JldHVybihuPXUobikpJiZuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK24uc2xpY2UoMSl9LE5uLmNlaWw9b2ksTm4uY2xvbmU9ZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIHQmJiJib29sZWFuIiE9dHlwZW9mIHQmJiRyKG4sdCxyKT90PSExOiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYoZT1yLHI9dCx0PSExKSwiZnVuY3Rpb24iPT10eXBlb2Ygcj9mdChuLHQsRHQocixlLDMpKTpmdChuLHQpfSxObi5jbG9uZURlZXA9ZnVuY3Rpb24obix0LHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z0KG4sITAsRHQodCxyLDMpKTpmdChuLCEwKX0sTm4uZGVidXJyPVVlLE5uLmVuZHNXaXRoPWZ1bmN0aW9uKG4sdCxyKXtuPXUobiksdCs9IiI7dmFyIGU9bi5sZW5ndGg7cmV0dXJuIHI9cj09PXg/ZTprdSgwPnI/MDorcnx8MCxlKSxyLT10Lmxlbmd0aCwwPD1yJiZuLmluZGV4T2YodCxyKT09cn0sTm4uZXNjYXBlPWZ1bmN0aW9uKG4pe3JldHVybihuPXUobikpJiZobi50ZXN0KG4pP24ucmVwbGFjZShzbixhKTpufSxObi5lc2NhcGVSZWdFeHA9ZnVuY3Rpb24obil7cmV0dXJuKG49dShuKSkmJmJuLnRlc3Qobik/bi5yZXBsYWNlKHhuLGwpOm58fCIoPzopIn0sTm4uZXZlcnk9ZWUsTm4uZmluZD1jbyxObi5maW5kSW5kZXg9R3UsTm4uZmluZEtleT1QbyxObi5maW5kTGFzdD1hbyxObi5maW5kTGFzdEluZGV4PUp1LE5uLmZpbmRMYXN0S2V5PXpvLE5uLmZpbmRXaGVyZT1mdW5jdGlvbihuLHQpe3JldHVybiBjbyhuLEF0KHQpKX0sTm4uZmlyc3Q9WnIsTm4uZmxvb3I9aWksTm4uZ2V0PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbj1udWxsPT1uP3g6d3QobixNcih0KSx0KyIiKSxuPT09eD9yOm59LE5uLmd0PWhlLE5uLmd0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBuPj10fSxObi5oYXM9ZnVuY3Rpb24obix0KXtpZihudWxsPT1uKXJldHVybiExO3ZhciByPWV1LmNhbGwobix0KTtpZighciYmIVdyKHQpKXtpZih0PU1yKHQpLG49MT09dC5sZW5ndGg/bjp3dChuLFN0KHQsMCwtMSkpLG51bGw9PW4pcmV0dXJuITE7dD1Hcih0KSxyPWV1LmNhbGwobix0KX1yZXR1cm4gcnx8THIobi5sZW5ndGgpJiZVcih0LG4ubGVuZ3RoKSYmKFdvKG4pfHxfZShuKXx8QWUobikpfSxObi5pZGVudGl0eT1OZSxObi5pbmNsdWRlcz1vZSxObi5pbmRleE9mPVlyLE5uLmluUmFuZ2U9ZnVuY3Rpb24obix0LHIpe3JldHVybiB0PSt0fHwwLHI9PT14PyhyPXQsdD0wKTpyPStyfHwwLG4+PWt1KHQscikmJm48anUodCxyKX0sTm4uaXNBcmd1bWVudHM9X2UsTm4uaXNBcnJheT1XbyxObi5pc0Jvb2xlYW49ZnVuY3Rpb24obil7cmV0dXJuITA9PT1ufHwhMT09PW58fGgobikmJm91LmNhbGwobik9PUR9LE5uLmlzRGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gaChuKSYmb3UuY2FsbChuKT09TX0sTm4uaXNFbGVtZW50PWZ1bmN0aW9uKG4pe3JldHVybiEhbiYmMT09PW4ubm9kZVR5cGUmJmgobikmJiFiZShuKX0sTm4uaXNFbXB0eT1mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bnx8KFNyKG4pJiYoV28obil8fEFlKG4pfHxfZShuKXx8aChuKSYmeWUobi5zcGxpY2UpKT8hbi5sZW5ndGg6IUtvKG4pLmxlbmd0aCl9LE5uLmlzRXF1YWw9dmUsTm4uaXNFcnJvcj1nZSxObi5pc0Zpbml0ZT1mdW5jdGlvbihuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4mJm11KG4pfSxObi5pc0Z1bmN0aW9uPXllLE5uLmlzTWF0Y2g9ZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHI/RHQocixlLDMpOngsYnQobixrcih0KSxyKX0sTm4uaXNOYU49ZnVuY3Rpb24obil7cmV0dXJuIHhlKG4pJiZuIT0rbn0sTm4uaXNOYXRpdmU9d2UsTm4uaXNOdWxsPWZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT09bn0sTm4uaXNOdW1iZXI9eGUsTm4uaXNPYmplY3Q9ZGUsTm4uaXNQbGFpbk9iamVjdD1iZSxObi5pc1JlZ0V4cD1tZSxObi5pc1N0cmluZz1BZSxObi5pc1R5cGVkQXJyYXk9amUsTm4uaXNVbmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIG49PT14fSxObi5rZWJhYkNhc2U9WG8sTm4ubGFzdD1HcixObi5sYXN0SW5kZXhPZj1mdW5jdGlvbihuLHQscil7dmFyIGU9bj9uLmxlbmd0aDowO2lmKCFlKXJldHVybi0xO3ZhciB1PWU7aWYoIm51bWJlciI9PXR5cGVvZiByKXU9KDA+cj9qdShlK3IsMCk6a3Uocnx8MCxlLTEpKSsxO2Vsc2UgaWYocilyZXR1cm4gdT16dChuLHQsITApLTEsbj1uW3VdLCh0PT09dD90PT09bjpuIT09bik/dTotMTtpZih0IT09dClyZXR1cm4gcChuLHUsITApO2Zvcig7dS0tOylpZihuW3VdPT09dClyZXR1cm4gdTtyZXR1cm4tMX0sTm4ubHQ9a2UsTm4ubHRlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG48PXR9LE5uLm1heD1maSxObi5taW49Y2ksTm4ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBZbi5fPWl1LHRoaXN9LE5uLm5vb3A9emUsTm4ubm93PXhvLE5uLnBhZD1mdW5jdGlvbihuLHQscil7bj11KG4pLHQ9K3Q7dmFyIGU9bi5sZW5ndGg7cmV0dXJuIGU8dCYmbXUodCk/KGU9KHQtZSkvMix0PXh1KGUpLGU9ZHUoZSkscj1fcigiIixlLHIpLHIuc2xpY2UoMCx0KStuK3IpOm59LE5uLnBhZExlZnQ9SG8sTm4ucGFkUmlnaHQ9UW8sTm4ucGFyc2VJbnQ9ZnVuY3Rpb24obix0LHIpe3JldHVybihyPyRyKG4sdCxyKTpudWxsPT10KT90PTA6dCYmKHQ9K3QpLG49V2UobiksSXUobix0fHwoT24udGVzdChuKT8xNjoxMCkpfSxObi5yYW5kb209ZnVuY3Rpb24obix0LHIpe3ImJiRyKG4sdCxyKSYmKHQ9cj14KTt2YXIgZT1udWxsPT1uLHU9bnVsbD09dDtyZXR1cm4gbnVsbD09ciYmKHUmJiJib29sZWFuIj09dHlwZW9mIG4/KHI9bixuPTEpOiJib29sZWFuIj09dHlwZW9mIHQmJihyPXQsdT0hMCkpLGUmJnUmJih0PTEsdT0hMSksbj0rbnx8MCx1Pyh0PW4sbj0wKTp0PSt0fHwwLHJ8fG4lMXx8dCUxPyhyPVJ1KCksa3UobityKih0LW4rbHUoIjFlLSIrKChyKyIiKS5sZW5ndGgtMSkpKSx0KSk6RXQobix0KX0sTm4ucmVkdWNlPWdvLE5uLnJlZHVjZVJpZ2h0PXlvLE5uLnJlcGVhdD0kZSxObi5yZXN1bHQ9ZnVuY3Rpb24obix0LHIpe3ZhciBlPW51bGw9PW4/eDpEcihuKVt0XTtyZXR1cm4gZT09PXgmJihudWxsPT1ufHxXcih0LG4pfHwodD1Ncih0KSxuPTE9PXQubGVuZ3RoP246d3QobixTdCh0LDAsLTEpKSxlPW51bGw9PW4/eDpEcihuKVtHcih0KV0pLGU9ZT09PXg/cjplKSx5ZShlKT9lLmNhbGwobik6ZX0sTm4ucm91bmQ9YWksTm4ucnVuSW5Db250ZXh0PXcsTm4uc2l6ZT1mdW5jdGlvbihuKXt2YXIgdD1uP1Z1KG4pOjA7cmV0dXJuIExyKHQpP3Q6S28obikubGVuZ3RofSxObi5zbmFrZUNhc2U9bmksTm4uc29tZT1jZSxObi5zb3J0ZWRJbmRleD1RdSxObi5zb3J0ZWRMYXN0SW5kZXg9bm8sTm4uc3RhcnRDYXNlPXRpLE5uLnN0YXJ0c1dpdGg9ZnVuY3Rpb24obix0LHIpe3JldHVybiBuPXUobikscj1udWxsPT1yPzA6a3UoMD5yPzA6K3J8fDAsbi5sZW5ndGgpLG4ubGFzdEluZGV4T2YodCxyKT09cn0sTm4uc3VtPWZ1bmN0aW9uKG4sdCxyKXtpZihyJiYkcihuLHQscikmJih0PXgpLHQ9bXIodCxyLDMpLDE9PXQubGVuZ3RoKXtuPVdvKG4pP246QnIobikscj1uLmxlbmd0aDtmb3IodmFyIGU9MDtyLS07KWUrPSt0KG5bcl0pfHwwO249ZX1lbHNlIG49RnQobix0KTtyZXR1cm4gbn0sTm4udGVtcGxhdGU9ZnVuY3Rpb24obix0LHIpe3ZhciBlPU5uLnRlbXBsYXRlU2V0dGluZ3M7ciYmJHIobix0LHIpJiYodD1yPXgpLG49dShuKSx0PXJ0KGV0KHt9LHJ8fHQpLGUsdHQpLHI9cnQoZXQoe30sdC5pbXBvcnRzKSxlLmltcG9ydHMsdHQpO3ZhciBvLGksZj1LbyhyKSxjPU50KHIsZiksYT0wO3I9dC5pbnRlcnBvbGF0ZXx8Q247dmFyIGw9Il9fcCs9JyI7cj1HZSgodC5lc2NhcGV8fENuKS5zb3VyY2UrInwiK3Iuc291cmNlKyJ8Iisocj09PWduP2puOkNuKS5zb3VyY2UrInwiKyh0LmV2YWx1YXRlfHxDbikuc291cmNlKyJ8JCIsImciKTt2YXIgcD0ic291cmNlVVJMImluIHQ/Ii8vIyBzb3VyY2VVUkw9Iit0LnNvdXJjZVVSTCsiXG4iOiIiO2lmKG4ucmVwbGFjZShyLGZ1bmN0aW9uKHQscixlLHUsZixjKXtyZXR1cm4gZXx8KGU9dSksbCs9bi5zbGljZShhLGMpLnJlcGxhY2UoU24scyksciYmKG89ITAsbCs9IicrX19lKCIrcisiKSsnIiksZiYmKGk9ITAsbCs9Iic7IitmKyI7XG5fX3ArPSciKSxlJiYobCs9IicrKChfX3Q9KCIrZSsiKSk9PW51bGw/Jyc6X190KSsnIiksYT1jK3QubGVuZ3RoLHR9KSxsKz0iJzsiLCh0PXQudmFyaWFibGUpfHwobD0id2l0aChvYmopeyIrbCsifSIpLGw9KGk/bC5yZXBsYWNlKGZuLCIiKTpsKS5yZXBsYWNlKGNuLCIkMSIpLnJlcGxhY2UoYW4sIiQxOyIpLGw9ImZ1bmN0aW9uKCIrKHR8fCJvYmoiKSsiKXsiKyh0PyIiOiJvYmp8fChvYmo9e30pOyIpKyJ2YXIgX190LF9fcD0nJyIrKG8/IixfX2U9Xy5lc2NhcGUiOiIiKSsoaT8iLF9faj1BcnJheS5wcm90b3R5cGUuam9pbjtmdW5jdGlvbiBwcmludCgpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKX0iOiI7IikrbCsicmV0dXJuIF9fcH0iLHQ9cmkoZnVuY3Rpb24oKXtyZXR1cm4gS2UoZixwKyJyZXR1cm4gIitsKS5hcHBseSh4LGMpfSksdC5zb3VyY2U9bCxnZSh0KSl0aHJvdyB0O3JldHVybiB0fSxObi50cmltPVdlLE5uLnRyaW1MZWZ0PWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1uO3JldHVybihuPXUobikpP24uc2xpY2UoKHI/JHIoZSx0LHIpOm51bGw9PXQpP2cobik6byhuLHQrIiIpKTpufSxObi50cmltUmlnaHQ9ZnVuY3Rpb24obix0LHIpe3ZhciBlPW47cmV0dXJuKG49dShuKSk/KHI/JHIoZSx0LHIpOm51bGw9PXQpP24uc2xpY2UoMCx5KG4pKzEpOm4uc2xpY2UoMCxpKG4sdCsiIikrMSk6bn0sTm4udHJ1bmM9ZnVuY3Rpb24obix0LHIpe3ImJiRyKG4sdCxyKSYmKHQ9eCk7dmFyIGU9UztpZihyPVUsbnVsbCE9dClpZihkZSh0KSl7dmFyIG89InNlcGFyYXRvciJpbiB0P3Quc2VwYXJhdG9yOm8sZT0ibGVuZ3RoImluIHQ/K3QubGVuZ3RofHwwOmU7cj0ib21pc3Npb24iaW4gdD91KHQub21pc3Npb24pOnJ9ZWxzZSBlPSt0fHwwO2lmKG49dShuKSxlPj1uLmxlbmd0aClyZXR1cm4gbjtpZihlLT1yLmxlbmd0aCwxPmUpcmV0dXJuIHI7aWYodD1uLnNsaWNlKDAsZSksbnVsbD09bylyZXR1cm4gdCtyO2lmKG1lKG8pKXtpZihuLnNsaWNlKGUpLnNlYXJjaChvKSl7dmFyIGksZj1uLnNsaWNlKDAsZSk7Zm9yKG8uZ2xvYmFsfHwobz1HZShvLnNvdXJjZSwoa24uZXhlYyhvKXx8IiIpKyJnIikpLG8ubGFzdEluZGV4PTA7bj1vLmV4ZWMoZik7KWk9bi5pbmRleDt0PXQuc2xpY2UoMCxudWxsPT1pP2U6aSl9fWVsc2Ugbi5pbmRleE9mKG8sZSkhPWUmJihvPXQubGFzdEluZGV4T2YobyksLTE8byYmKHQ9dC5zbGljZSgwLG8pKSk7cmV0dXJuIHQrcn0sTm4udW5lc2NhcGU9ZnVuY3Rpb24obil7cmV0dXJuKG49dShuKSkmJnBuLnRlc3Qobik/bi5yZXBsYWNlKGxuLGQpOm59LE5uLnVuaXF1ZUlkPWZ1bmN0aW9uKG4pe3ZhciB0PSsrdXU7cmV0dXJuIHUobikrdH0sTm4ud29yZHM9RmUsTm4uYWxsPWVlLE5uLmFueT1jZSxObi5jb250YWlucz1vZSxObi5lcT12ZSxObi5kZXRlY3Q9Y28sTm4uZm9sZGw9Z28sTm4uZm9sZHI9eW8sTm4uaGVhZD1acixObi5pbmNsdWRlPW9lLE5uLmluamVjdD1nbyxQZShObixmdW5jdGlvbigpe3ZhciBuPXt9O3JldHVybiBndChObixmdW5jdGlvbih0LHIpe05uLnByb3RvdHlwZVtyXXx8KG5bcl09dCl9KSxufSgpLCExKSxObi5zYW1wbGU9ZmUsTm4ucHJvdG90eXBlLnNhbXBsZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fX2NoYWluX198fG51bGwhPW4/dGhpcy50aHJ1KGZ1bmN0aW9uKHQpe3JldHVybiBmZSh0LG4pfSk6ZmUodGhpcy52YWx1ZSgpKX0sTm4uVkVSU0lPTj1iLEtuKCJiaW5kIGJpbmRLZXkgY3VycnkgY3VycnlSaWdodCBwYXJ0aWFsIHBhcnRpYWxSaWdodCIuc3BsaXQoIiAiKSxmdW5jdGlvbihuKXtObltuXS5wbGFjZWhvbGRlcj1Obn0pLEtuKFsiZHJvcCIsInRha2UiXSxmdW5jdGlvbihuLHQpe3puLnByb3RvdHlwZVtuXT1mdW5jdGlvbihyKXt2YXIgZT10aGlzLl9fZmlsdGVyZWRfXztpZihlJiYhdClyZXR1cm4gbmV3IHpuKHRoaXMpO3I9bnVsbD09cj8xOmp1KHh1KHIpfHwwLDApO3ZhciB1PXRoaXMuY2xvbmUoKTtyZXR1cm4gZT91Ll9fdGFrZUNvdW50X189a3UodS5fX3Rha2VDb3VudF9fLHIpOnUuX192aWV3c19fLnB1c2goe3NpemU6cix0eXBlOm4rKDA+dS5fX2Rpcl9fPyJSaWdodCI6IiIpfSksdX0sem4ucHJvdG90eXBlW24rIlJpZ2h0Il09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW25dKHQpLnJldmVyc2UoKX19KSxLbihbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLGZ1bmN0aW9uKG4sdCl7dmFyIHI9dCsxLGU9ciE9Tjt6bi5wcm90b3R5cGVbbl09ZnVuY3Rpb24obix0KXt2YXIgdT10aGlzLmNsb25lKCk7cmV0dXJuIHUuX19pdGVyYXRlZXNfXy5wdXNoKHtpdGVyYXRlZTptcihuLHQsMSksdHlwZTpyfSksdS5fX2ZpbHRlcmVkX189dS5fX2ZpbHRlcmVkX198fGUsdX19KSxLbihbImZpcnN0IiwibGFzdCJdLGZ1bmN0aW9uKG4sdCl7dmFyIHI9InRha2UiKyh0PyJSaWdodCI6IiIpO3puLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3JdKDEpLnZhbHVlKClbMF19fSksS24oWyJpbml0aWFsIiwicmVzdCJdLGZ1bmN0aW9uKG4sdCl7dmFyIHI9ImRyb3AiKyh0PyIiOiJSaWdodCIpO3puLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgem4odGhpcyk6dGhpc1tyXSgxKX19KSxLbihbInBsdWNrIiwid2hlcmUiXSxmdW5jdGlvbihuLHQpe3ZhciByPXQ/ImZpbHRlciI6Im1hcCIsZT10P0F0OkJlO3puLnByb3RvdHlwZVtuXT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpc1tyXShlKG4pKX19KSx6bi5wcm90b3R5cGUuY29tcGFjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihOZSl9LHpuLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj1tcihuLHQsMSksdGhpcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIW4odCl9KX0sem4ucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKG4sdCl7bj1udWxsPT1uPzA6K258fDA7dmFyIHI9dGhpcztyZXR1cm4gci5fX2ZpbHRlcmVkX18mJigwPG58fDA+dCk/bmV3IHpuKHIpOigwPm4/cj1yLnRha2VSaWdodCgtbik6biYmKHI9ci5kcm9wKG4pKSx0IT09eCYmKHQ9K3R8fDAscj0wPnQ/ci5kcm9wUmlnaHQoLXQpOnIudGFrZSh0LW4pKSxyKX0sem4ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShuLHQpLnJldmVyc2UoKX0sem4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKEN1KX0sZ3Qoem4ucHJvdG90eXBlLGZ1bmN0aW9uKG4sdCl7dmFyIHI9L14oPzpmaWx0ZXJ8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KHQpLGU9L14oPzpmaXJzdHxsYXN0KSQvLnRlc3QodCksdT1ObltlPyJ0YWtlIisoImxhc3QiPT10PyJSaWdodCI6IiIpOnRdO3UmJihObi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD1lP1sxXTphcmd1bWVudHMsbz10aGlzLl9fY2hhaW5fXyxpPXRoaXMuX193cmFwcGVkX18sZj0hIXRoaXMuX19hY3Rpb25zX18ubGVuZ3RoLGM9aSBpbnN0YW5jZW9mIHpuLGE9dFswXSxsPWN8fFdvKGkpO2wmJnImJiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYxIT1hLmxlbmd0aCYmKGM9bD0hMSk7dmFyIHM9ZnVuY3Rpb24obil7cmV0dXJuIGUmJm8/dShuLDEpWzBdOnUuYXBwbHkoeCxIbihbbl0sdCkpfSxhPXtmdW5jOnJlLGFyZ3M6W3NdLHRoaXNBcmc6eH0sZj1jJiYhZjtyZXR1cm4gZSYmIW8/Zj8oaT1pLmNsb25lKCksaS5fX2FjdGlvbnNfXy5wdXNoKGEpLG4uY2FsbChpKSk6dS5jYWxsKHgsdGhpcy52YWx1ZSgpKVswXTohZSYmbD8oaT1mP2k6bmV3IHpuKHRoaXMpLGk9bi5hcHBseShpLHQpLGkuX19hY3Rpb25zX18ucHVzaChhKSxuZXcgUG4oaSxvKSk6dGhpcy50aHJ1KHMpfSl9KSxLbigiam9pbiBwb3AgcHVzaCByZXBsYWNlIHNoaWZ0IHNvcnQgc3BsaWNlIHNwbGl0IHVuc2hpZnQiLnNwbGl0KCIgIiksZnVuY3Rpb24obil7dmFyIHQ9KC9eKD86cmVwbGFjZXxzcGxpdCkkLy50ZXN0KG4pP3R1OkhlKVtuXSxyPS9eKD86cHVzaHxzb3J0fHVuc2hpZnQpJC8udGVzdChuKT8idGFwIjoidGhydSIsZT0hVHUuc3BsaWNlT2JqZWN0cyYmL14oPzpwb3B8c2hpZnR8c3BsaWNlKSQvLnRlc3QobiksdT0vXig/OmpvaW58cG9wfHJlcGxhY2V8c2hpZnQpJC8udGVzdChuKSxvPWU/ZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gMD09PXRoaXMubGVuZ3RoJiZkZWxldGUgdGhpc1swXSxufTp0O05uLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cztyZXR1cm4gdSYmIXRoaXMuX19jaGFpbl9fP28uYXBwbHkodGhpcy52YWx1ZSgpLG4pOnRoaXNbcl0oZnVuY3Rpb24odCl7cmV0dXJuIG8uYXBwbHkodCxuKX0pfX0pLGd0KHpuLnByb3RvdHlwZSxmdW5jdGlvbihuLHQpe3ZhciByPU5uW3RdO2lmKHIpe3ZhciBlPXIubmFtZSsiIjsoRnVbZV18fChGdVtlXT1bXSkpLnB1c2goe25hbWU6dCxmdW5jOnJ9KX19KSxGdVtocih4LEEpLm5hbWVdPVt7bmFtZToid3JhcHBlciIsZnVuYzp4fV0sem4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIG49bmV3IHpuKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBuLl9fYWN0aW9uc19fPXFuKHRoaXMuX19hY3Rpb25zX18pLG4uX19kaXJfXz10aGlzLl9fZGlyX18sbi5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sbi5fX2l0ZXJhdGVlc19fPXFuKHRoaXMuX19pdGVyYXRlZXNfXyksbi5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxuLl9fdmlld3NfXz1xbih0aGlzLl9fdmlld3NfXyksbn0sem4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIG49bmV3IHpuKHRoaXMpO24uX19kaXJfXz0tMSxuLl9fZmlsdGVyZWRfXz0hMH1lbHNlIG49dGhpcy5jbG9uZSgpLG4uX19kaXJfXyo9LTE7cmV0dXJuIG59LHpuLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbigpe3ZhciBuLHQ9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLHI9dGhpcy5fX2Rpcl9fLGU9V28odCksdT0wPnIsbz1lP3QubGVuZ3RoOjA7bj0wO2Zvcih2YXIgaT1vLGY9dGhpcy5fX3ZpZXdzX18sYz0tMSxhPWYubGVuZ3RoOysrYzxhOyl7dmFyIGw9ZltjXSxzPWwuc2l6ZTtzd2l0Y2gobC50eXBlKXtjYXNlImRyb3AiOm4rPXM7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmktPXM7YnJlYWs7Y2FzZSJ0YWtlIjppPWt1KGksbitzKTticmVhaztjYXNlInRha2VSaWdodCI6bj1qdShuLGktcyl9fWlmKG49e3N0YXJ0Om4sZW5kOml9LGk9bi5zdGFydCxmPW4uZW5kLG49Zi1pLHU9dT9mOmktMSxpPXRoaXMuX19pdGVyYXRlZXNfXyxmPWkubGVuZ3RoLGM9MCxhPWt1KG4sdGhpcy5fX3Rha2VDb3VudF9fKSwhZXx8bzxGfHxvPT1uJiZhPT1uKXJldHVybiBQdCh0LHRoaXMuX19hY3Rpb25zX18pO2U9W107bjpmb3IoO24tLSYmYzxhOyl7Zm9yKHUrPXIsbz0tMSxsPXRbdV07KytvPGY7KXt2YXIgcD1pW29dLHM9cC50eXBlLHA9cC5pdGVyYXRlZShsKTtpZihzPT1OKWw9cDtlbHNlIGlmKCFwKXtpZihzPT1MKWNvbnRpbnVlIG47YnJlYWsgbn19ZVtjKytdPWx9cmV0dXJuIGV9LE5uLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbigpe3JldHVybiB0ZSh0aGlzKX0sTm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbigpe3JldHVybiBuZXcgUG4odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sTm4ucHJvdG90eXBlLmNvbmNhdD1vbyxObi5wcm90b3R5cGUucGxhbnQ9ZnVuY3Rpb24obil7Zm9yKHZhciB0LHI9dGhpcztyIGluc3RhbmNlb2YgVG47KXt2YXIgZT1xcihyKTt0P3UuX193cmFwcGVkX189ZTp0PWU7dmFyIHU9ZSxyPXIuX193cmFwcGVkX199cmV0dXJuIHUuX193cmFwcGVkX189bix0fSxObi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3ZhciBuPXRoaXMuX193cmFwcGVkX18sdD1mdW5jdGlvbihuKXtyZXR1cm4gbi5yZXZlcnNlKCl9O3JldHVybiBuIGluc3RhbmNlb2Ygem4/KHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoJiYobj1uZXcgem4odGhpcykpLG49bi5yZXZlcnNlKCksbi5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOnJlLGFyZ3M6W3RdLHRoaXNBcmc6eH0pLG5ldyBQbihuLHRoaXMuX19jaGFpbl9fKSk6dGhpcy50aHJ1KHQpfSxObi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZSgpKyIifSxObi5wcm90b3R5cGUucnVuPU5uLnByb3RvdHlwZS50b0pTT049Tm4ucHJvdG90eXBlLnZhbHVlT2Y9Tm4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIFB0KHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9LE5uLnByb3RvdHlwZS5jb2xsZWN0PU5uLnByb3RvdHlwZS5tYXAsTm4ucHJvdG90eXBlLmhlYWQ9Tm4ucHJvdG90eXBlLmZpcnN0LE5uLnByb3RvdHlwZS5zZWxlY3Q9Tm4ucHJvdG90eXBlLmZpbHRlcixObi5wcm90b3R5cGUudGFpbD1Obi5wcm90b3R5cGUucmVzdCxObn12YXIgeCxiPSIzLjEwLjEiLG09MSxBPTIsaj00LGs9OCxPPTE2LEk9MzIsUj02NCxFPTEyOCxDPTI1NixTPTMwLFU9Ii4uLiIsJD0xNTAsVz0xNixGPTIwMCxMPTEsTj0yLFQ9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLFA9Il9fbG9kYXNoX3BsYWNlaG9sZGVyX18iLHo9IltvYmplY3QgQXJndW1lbnRzXSIsQj0iW29iamVjdCBBcnJheV0iLEQ9IltvYmplY3QgQm9vbGVhbl0iLE09IltvYmplY3QgRGF0ZV0iLHE9IltvYmplY3QgRXJyb3JdIixLPSJbb2JqZWN0IEZ1bmN0aW9uXSIsVj0iW29iamVjdCBOdW1iZXJdIixaPSJbb2JqZWN0IE9iamVjdF0iLFk9IltvYmplY3QgUmVnRXhwXSIsRz0iW29iamVjdCBTdHJpbmddIixKPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsWD0iW29iamVjdCBGbG9hdDMyQXJyYXldIixIPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLFE9IltvYmplY3QgSW50OEFycmF5XSIsbm49IltvYmplY3QgSW50MTZBcnJheV0iLHRuPSJbb2JqZWN0IEludDMyQXJyYXldIixybj0iW29iamVjdCBVaW50OEFycmF5XSIsZW49IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIix1bj0iW29iamVjdCBVaW50MTZBcnJheV0iLG9uPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsZm49L1xiX19wXCs9Jyc7L2csY249L1xiKF9fcFwrPSknJ1wrL2csYW49LyhfX2VcKC4qP1wpfFxiX190XCkpXCsnJzsvZyxsbj0vJig/OmFtcHxsdHxndHxxdW90fCMzOXwjOTYpOy9nLHNuPS9bJjw+IidgXS9nLHBuPVJlZ0V4cChsbi5zb3VyY2UpLGhuPVJlZ0V4cChzbi5zb3VyY2UpLF9uPS88JS0oW1xzXFNdKz8pJT4vZyx2bj0vPCUoW1xzXFNdKz8pJT4vZyxnbj0vPCU9KFtcc1xTXSs/KSU+L2cseW49L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxuXFxdfFxcLikqP1wxKVxdLyxkbj0vXlx3KiQvLHduPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxuXFxdfFxcLikqPylcMilcXS9nLHhuPS9eWzohLF18W1xcXiQuKis/KClbXF17fXxcL118KF5bMC05YS1mQS1GbnJ0dXZ4XSl8KFtcblxyXHUyMDI4XHUyMDI5XSkvZyxibj1SZWdFeHAoeG4uc291cmNlKSxtbj0vW1x1MDMwMC1cdTAzNmZcdWZlMjAtXHVmZTIzXS9nLEFuPS9cXChcXCk/L2csam49L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLGtuPS9cdyokLyxPbj0vXjBbeFhdLyxJbj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxSbj0vXlxkKyQvLEVuPS9bXHhjMC1ceGQ2XHhkOC1ceGRlXHhkZi1ceGY2XHhmOC1ceGZmXS9nLENuPS8oJF4pLyxTbj0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csVW49UmVnRXhwKCJbQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZV0rKD89W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdW2EtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmZdKyl8W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdP1thLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmXSt8W0EtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGVdK3xbMC05XSsiLCJnIiksJG49IkFycmF5IEFycmF5QnVmZmVyIERhdGUgRXJyb3IgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBGdW5jdGlvbiBJbnQ4QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IE1hdGggTnVtYmVyIE9iamVjdCBSZWdFeHAgU2V0IFN0cmluZyBfIGNsZWFyVGltZW91dCBpc0Zpbml0ZSBwYXJzZUZsb2F0IHBhcnNlSW50IHNldFRpbWVvdXQgVHlwZUVycm9yIFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgVWludDE2QXJyYXkgVWludDMyQXJyYXkgV2Vha01hcCIuc3BsaXQoIiAiKSxXbj0iY29uc3RydWN0b3IgaGFzT3duUHJvcGVydHkgaXNQcm90b3R5cGVPZiBwcm9wZXJ0eUlzRW51bWVyYWJsZSB0b0xvY2FsZVN0cmluZyB0b1N0cmluZyB2YWx1ZU9mIi5zcGxpdCgiICIpLEZuPXt9O0ZuW1hdPUZuW0hdPUZuW1FdPUZuW25uXT1Gblt0bl09Rm5bcm5dPUZuW2VuXT1Gblt1bl09Rm5bb25dPSEwLEZuW3pdPUZuW0JdPUZuW0pdPUZuW0RdPUZuW01dPUZuW3FdPUZuW0tdPUZuWyJbb2JqZWN0IE1hcF0iXT1GbltWXT1GbltaXT1GbltZXT1GblsiW29iamVjdCBTZXRdIl09Rm5bR109Rm5bIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTG49e307TG5bel09TG5bQl09TG5bSl09TG5bRF09TG5bTV09TG5bWF09TG5bSF09TG5bUV09TG5bbm5dPUxuW3RuXT1MbltWXT1MbltaXT1MbltZXT1MbltHXT1Mbltybl09TG5bZW5dPUxuW3VuXT1Mbltvbl09ITAsTG5bcV09TG5bS109TG5bIltvYmplY3QgTWFwXSJdPUxuWyJbb2JqZWN0IFNldF0iXT1MblsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBObj17IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIn0sVG49eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyIsImAiOiImIzk2OyJ9LFBuPXsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImIzM5OyI6IiciLCImIzk2OyI6ImAifSx6bj17ImZ1bmN0aW9uIjohMCxvYmplY3Q6ITB9LEJuPXswOiJ4MzAiLDE6IngzMSIsMjoieDMyIiwzOiJ4MzMiLDQ6IngzNCIsNToieDM1Iiw2OiJ4MzYiLDc6IngzNyIsODoieDM4Iiw5OiJ4MzkiLEE6Ing0MSIsQjoieDQyIixDOiJ4NDMiLEQ6Ing0NCIsRToieDQ1IixGOiJ4NDYiLGE6Ing2MSIsYjoieDYyIixjOiJ4NjMiLGQ6Ing2NCIsZToieDY1IixmOiJ4NjYiLG46Ing2ZSIscjoieDcyIix0OiJ4NzQiLHU6Ing3NSIsdjoieDc2Iix4OiJ4NzgifSxEbj17IlxcIjoiXFwiLCInIjoiJyIsIlxuIjoibiIsIlxyIjoiciIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxNbj16blt0eXBlb2YgZXhwb3J0c10mJmV4cG9ydHMmJiFleHBvcnRzLm5vZGVUeXBlJiZleHBvcnRzLHFuPXpuW3R5cGVvZiBtb2R1bGVdJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxLbj16blt0eXBlb2Ygc2VsZl0mJnNlbGYmJnNlbGYuT2JqZWN0JiZzZWxmLFZuPXpuW3R5cGVvZiB3aW5kb3ddJiZ3aW5kb3cmJndpbmRvdy5PYmplY3QmJndpbmRvdyxabj1xbiYmcW4uZXhwb3J0cz09PU1uJiZNbixZbj1NbiYmcW4mJiJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3QmJmdsb2JhbHx8Vm4hPT0odGhpcyYmdGhpcy53aW5kb3cpJiZWbnx8S258fHRoaXMsR249ZnVuY3Rpb24oKXt0cnl7T2JqZWN0KHt0b1N0cmluZzowfSsiIil9Y2F0Y2gobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITF9fXJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2Ygbi50b1N0cmluZyYmInN0cmluZyI9PXR5cGVvZihuKyIiKX19KCksSm49dygpOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJiJvYmplY3QiPT10eXBlb2YgZGVmaW5lLmFtZCYmZGVmaW5lLmFtZD8oWW4uXz1KbixkZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gSm59KSk6TW4mJnFuP1puPyhxbi5leHBvcnRzPUpuKS5fPUpuOk1uLl89Sm46WW4uXz1Kbn0pLmNhbGwodGhpcyk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvbWFya2VkLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvbWFya2VkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMzRiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9tYXJrZWQuanMKQEAgLTAsMCArMSBAQAorKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2Vucy5saW5rcz17fSx0aGlzLm9wdGlvbnM9ZXx8YS5kZWZhdWx0cyx0aGlzLnJ1bGVzPXAubm9ybWFsLHRoaXMub3B0aW9ucy5nZm0mJih0aGlzLm9wdGlvbnMudGFibGVzP3RoaXMucnVsZXM9cC50YWJsZXM6dGhpcy5ydWxlcz1wLmdmbSl9ZnVuY3Rpb24gdChlLHQpe2lmKHRoaXMub3B0aW9ucz10fHxhLmRlZmF1bHRzLHRoaXMubGlua3M9ZSx0aGlzLnJ1bGVzPXUubm9ybWFsLHRoaXMucmVuZGVyZXI9dGhpcy5vcHRpb25zLnJlbmRlcmVyfHxuZXcgbix0aGlzLnJlbmRlcmVyLm9wdGlvbnM9dGhpcy5vcHRpb25zLCF0aGlzLmxpbmtzKXRocm93IG5ldyBFcnJvcigiVG9rZW5zIGFycmF5IHJlcXVpcmVzIGEgYGxpbmtzYCBwcm9wZXJ0eS4iKTt0aGlzLm9wdGlvbnMuZ2ZtP3RoaXMub3B0aW9ucy5icmVha3M/dGhpcy5ydWxlcz11LmJyZWFrczp0aGlzLnJ1bGVzPXUuZ2ZtOnRoaXMub3B0aW9ucy5wZWRhbnRpYyYmKHRoaXMucnVsZXM9dS5wZWRhbnRpYyl9ZnVuY3Rpb24gbihlKXt0aGlzLm9wdGlvbnM9ZXx8e319ZnVuY3Rpb24gcihlKXt0aGlzLnRva2Vucz1bXSx0aGlzLnRva2VuPW51bGwsdGhpcy5vcHRpb25zPWV8fGEuZGVmYXVsdHMsdGhpcy5vcHRpb25zLnJlbmRlcmVyPXRoaXMub3B0aW9ucy5yZW5kZXJlcnx8bmV3IG4sdGhpcy5yZW5kZXJlcj10aGlzLm9wdGlvbnMucmVuZGVyZXIsdGhpcy5yZW5kZXJlci5vcHRpb25zPXRoaXMub3B0aW9uc31mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIGUucmVwbGFjZSh0Py8mL2c6LyYoPyEjP1x3KzspL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMzk7Iil9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5yZXBsYWNlKC8mKFsjXHddKyk7L2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD10LnRvTG93ZXJDYXNlKCksImNvbG9uIj09PXQ/IjoiOiIjIj09PXQuY2hhckF0KDApPyJ4Ij09PXQuY2hhckF0KDEpP1N0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTpTdHJpbmcuZnJvbUNoYXJDb2RlKCt0LnN1YnN0cmluZygxKSk6IiJ9KX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGU9ZS5zb3VyY2UsdD10fHwiIixmdW5jdGlvbiBuKHIscyl7cmV0dXJuIHI/KHM9cy5zb3VyY2V8fHMscz1zLnJlcGxhY2UoLyhefFteXFtdKVxeL2csIiQxIiksZT1lLnJlcGxhY2UocixzKSxuKTpuZXcgUmVnRXhwKGUsdCl9fWZ1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gaChlKXtmb3IodmFyIHQsbixyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl7dD1hcmd1bWVudHNbcl07Zm9yKG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9cmV0dXJuIGV9ZnVuY3Rpb24gYSh0LG4saSl7aWYoaXx8ImZ1bmN0aW9uIj09dHlwZW9mIG4pe2l8fChpPW4sbj1udWxsKSxuPWgoe30sYS5kZWZhdWx0cyxufHx7fSk7dmFyIGwsbyxwPW4uaGlnaGxpZ2h0LHU9MDt0cnl7bD1lLmxleCh0LG4pfWNhdGNoKGMpe3JldHVybiBpKGMpfW89bC5sZW5ndGg7dmFyIGc9ZnVuY3Rpb24oZSl7aWYoZSlyZXR1cm4gbi5oaWdobGlnaHQ9cCxpKGUpO3ZhciB0O3RyeXt0PXIucGFyc2UobCxuKX1jYXRjaChzKXtlPXN9cmV0dXJuIG4uaGlnaGxpZ2h0PXAsZT9pKGUpOmkobnVsbCx0KX07aWYoIXB8fHAubGVuZ3RoPDMpcmV0dXJuIGcoKTtpZihkZWxldGUgbi5oaWdobGlnaHQsIW8pcmV0dXJuIGcoKTtmb3IoO3U8bC5sZW5ndGg7dSsrKSFmdW5jdGlvbihlKXtyZXR1cm4iY29kZSIhPT1lLnR5cGU/LS1vfHxnKCk6cChlLnRleHQsZS5sYW5nLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ/Zyh0KTpudWxsPT1ufHxuPT09ZS50ZXh0Py0tb3x8ZygpOihlLnRleHQ9bixlLmVzY2FwZWQ9ITAsdm9pZCgtLW98fGcoKSkpfSl9KGxbdV0pfWVsc2UgdHJ5e3JldHVybiBuJiYobj1oKHt9LGEuZGVmYXVsdHMsbikpLHIucGFyc2UoZS5sZXgodCxuKSxuKX1jYXRjaChjKXtpZihjLm1lc3NhZ2UrPSJcblBsZWFzZSByZXBvcnQgdGhpcyB0byBodHRwczovL2dpdGh1Yi5jb20vY2hqai9tYXJrZWQuIiwobnx8YS5kZWZhdWx0cykuc2lsZW50KXJldHVybiI8cD5BbiBlcnJvciBvY2N1cmVkOjwvcD48cHJlPiIrcyhjLm1lc3NhZ2UrIiIsITApKyI8L3ByZT4iO3Rocm93IGN9fXZhciBwPXtuZXdsaW5lOi9eXG4rLyxjb2RlOi9eKCB7NH1bXlxuXStcbiopKy8sZmVuY2VzOm8saHI6L14oICpbLSpfXSl7Myx9ICooPzpcbit8JCkvLGhlYWRpbmc6L14gKigjezEsNn0pICooW15cbl0rPykgKiMqICooPzpcbit8JCkvLG5wdGFibGU6byxsaGVhZGluZzovXihbXlxuXSspXG4gKig9fC0pezIsfSAqKD86XG4rfCQpLyxibG9ja3F1b3RlOi9eKCAqPlteXG5dKyhcbig/IWRlZilbXlxuXSspKlxuKikrLyxsaXN0Oi9eKCAqKShidWxsKSBbXHNcU10rPyg/OmhyfGRlZnxcbnsyLH0oPyEgKSg/IVwxYnVsbCApXG4qfFxzKiQpLyxodG1sOi9eICooPzpjb21tZW50ICooPzpcbnxccyokKXxjbG9zZWQgKig/OlxuezIsfXxccyokKXxjbG9zaW5nICooPzpcbnsyLH18XHMqJCkpLyxkZWY6L14gKlxbKFteXF1dKylcXTogKjw/KFteXHM+XSspPj8oPzogK1siKF0oW15cbl0rKVsiKV0pPyAqKD86XG4rfCQpLyx0YWJsZTpvLHBhcmFncmFwaDovXigoPzpbXlxuXStcbj8oPyFocnxoZWFkaW5nfGxoZWFkaW5nfGJsb2NrcXVvdGV8dGFnfGRlZikpKylcbiovLHRleHQ6L15bXlxuXSsvfTtwLmJ1bGxldD0vKD86WyorLV18XGQrXC4pLyxwLml0ZW09L14oICopKGJ1bGwpIFteXG5dKig/OlxuKD8hXDFidWxsIClbXlxuXSopKi8scC5pdGVtPWwocC5pdGVtLCJnbSIpKC9idWxsL2cscC5idWxsZXQpKCkscC5saXN0PWwocC5saXN0KSgvYnVsbC9nLHAuYnVsbGV0KSgiaHIiLCJcXG4rKD89XFwxPyg/OlstKl9dICopezMsfSg/Olxcbit8JCkpIikoImRlZiIsIlxcbisoPz0iK3AuZGVmLnNvdXJjZSsiKSIpKCkscC5ibG9ja3F1b3RlPWwocC5ibG9ja3F1b3RlKSgiZGVmIixwLmRlZikoKSxwLl90YWc9Iig/ISg/OmF8ZW18c3Ryb25nfHNtYWxsfHN8Y2l0ZXxxfGRmbnxhYmJyfGRhdGF8dGltZXxjb2RlfHZhcnxzYW1wfGtiZHxzdWJ8c3VwfGl8Ynx1fG1hcmt8cnVieXxydHxycHxiZGl8YmRvfHNwYW58YnJ8d2JyfGluc3xkZWx8aW1nKVxcYilcXHcrKD8hOi98W15cXHdcXHNAXSpAKVxcYiIscC5odG1sPWwocC5odG1sKSgiY29tbWVudCIsLzwhLS1bXHNcU10qPy0tPi8pKCJjbG9zZWQiLC88KHRhZylbXHNcU10rPzxcL1wxPi8pKCJjbG9zaW5nIiwvPHRhZyg/OiJbXiJdKiJ8J1teJ10qJ3xbXiciPl0pKj8+LykoL3RhZy9nLHAuX3RhZykoKSxwLnBhcmFncmFwaD1sKHAucGFyYWdyYXBoKSgiaHIiLHAuaHIpKCJoZWFkaW5nIixwLmhlYWRpbmcpKCJsaGVhZGluZyIscC5saGVhZGluZykoImJsb2NrcXVvdGUiLHAuYmxvY2txdW90ZSkoInRhZyIsIjwiK3AuX3RhZykoImRlZiIscC5kZWYpKCkscC5ub3JtYWw9aCh7fSxwKSxwLmdmbT1oKHt9LHAubm9ybWFsLHtmZW5jZXM6L14gKihgezMsfXx+ezMsfSkgKihcUyspPyAqXG4oW1xzXFNdKz8pXHMqXDEgKig/OlxuK3wkKS8scGFyYWdyYXBoOi9eL30pLHAuZ2ZtLnBhcmFncmFwaD1sKHAucGFyYWdyYXBoKSgiKD8hIiwiKD8hIitwLmdmbS5mZW5jZXMuc291cmNlLnJlcGxhY2UoIlxcMSIsIlxcMiIpKyJ8IitwLmxpc3Quc291cmNlLnJlcGxhY2UoIlxcMSIsIlxcMyIpKyJ8IikoKSxwLnRhYmxlcz1oKHt9LHAuZ2ZtLHtucHRhYmxlOi9eICooXFMuKlx8LiopXG4gKihbLTpdKyAqXHxbLXwgOl0qKVxuKCg/Oi4qXHwuKig/OlxufCQpKSopXG4qLyx0YWJsZTovXiAqXHwoLispXG4gKlx8KCAqWy06XStbLXwgOl0qKVxuKCg/OiAqXHwuKig/OlxufCQpKSopXG4qL30pLGUucnVsZXM9cCxlLmxleD1mdW5jdGlvbih0LG4pe3ZhciByPW5ldyBlKG4pO3JldHVybiByLmxleCh0KX0sZS5wcm90b3R5cGUubGV4PWZ1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZSgvXHJcbnxcci9nLCJcbiIpLnJlcGxhY2UoL1x0L2csIiAgICAiKS5yZXBsYWNlKC9cdTAwYTAvZywiICIpLnJlcGxhY2UoL1x1MjQyNC9nLCJcbiIpLHRoaXMudG9rZW4oZSwhMCl9LGUucHJvdG90eXBlLnRva2VuPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIscyxpLGwsbyxoLGEsdSxjLGU9ZS5yZXBsYWNlKC9eICskL2dtLCIiKTtlOylpZigoaT10aGlzLnJ1bGVzLm5ld2xpbmUuZXhlYyhlKSkmJihlPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxpWzBdLmxlbmd0aD4xJiZ0aGlzLnRva2Vucy5wdXNoKHt0eXBlOiJzcGFjZSJ9KSksaT10aGlzLnJ1bGVzLmNvZGUuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxpPWlbMF0ucmVwbGFjZSgvXiB7NH0vZ20sIiIpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6ImNvZGUiLHRleHQ6dGhpcy5vcHRpb25zLnBlZGFudGljP2k6aS5yZXBsYWNlKC9cbiskLywiIil9KTtlbHNlIGlmKGk9dGhpcy5ydWxlcy5mZW5jZXMuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSx0aGlzLnRva2Vucy5wdXNoKHt0eXBlOiJjb2RlIixsYW5nOmlbMl0sdGV4dDppWzNdfSk7ZWxzZSBpZihpPXRoaXMucnVsZXMuaGVhZGluZy5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6ImhlYWRpbmciLGRlcHRoOmlbMV0ubGVuZ3RoLHRleHQ6aVsyXX0pO2Vsc2UgaWYodCYmKGk9dGhpcy5ydWxlcy5ucHRhYmxlLmV4ZWMoZSkpKXtmb3IoZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksaD17dHlwZToidGFibGUiLGhlYWRlcjppWzFdLnJlcGxhY2UoL14gKnwgKlx8ICokL2csIiIpLnNwbGl0KC8gKlx8ICovKSxhbGlnbjppWzJdLnJlcGxhY2UoL14gKnxcfCAqJC9nLCIiKS5zcGxpdCgvICpcfCAqLyksY2VsbHM6aVszXS5yZXBsYWNlKC9cbiQvLCIiKS5zcGxpdCgiXG4iKX0sdT0wO3U8aC5hbGlnbi5sZW5ndGg7dSsrKS9eICotKzogKiQvLnRlc3QoaC5hbGlnblt1XSk/aC5hbGlnblt1XT0icmlnaHQiOi9eICo6LSs6ICokLy50ZXN0KGguYWxpZ25bdV0pP2guYWxpZ25bdV09ImNlbnRlciI6L14gKjotKyAqJC8udGVzdChoLmFsaWduW3VdKT9oLmFsaWduW3VdPSJsZWZ0IjpoLmFsaWduW3VdPW51bGw7Zm9yKHU9MDt1PGguY2VsbHMubGVuZ3RoO3UrKyloLmNlbGxzW3VdPWguY2VsbHNbdV0uc3BsaXQoLyAqXHwgKi8pO3RoaXMudG9rZW5zLnB1c2goaCl9ZWxzZSBpZihpPXRoaXMucnVsZXMubGhlYWRpbmcuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSx0aGlzLnRva2Vucy5wdXNoKHt0eXBlOiJoZWFkaW5nIixkZXB0aDoiPSI9PT1pWzJdPzE6Mix0ZXh0OmlbMV19KTtlbHNlIGlmKGk9dGhpcy5ydWxlcy5oci5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6ImhyIn0pO2Vsc2UgaWYoaT10aGlzLnJ1bGVzLmJsb2NrcXVvdGUuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSx0aGlzLnRva2Vucy5wdXNoKHt0eXBlOiJibG9ja3F1b3RlX3N0YXJ0In0pLGk9aVswXS5yZXBsYWNlKC9eICo+ID8vZ20sIiIpLHRoaXMudG9rZW4oaSx0LCEwKSx0aGlzLnRva2Vucy5wdXNoKHt0eXBlOiJibG9ja3F1b3RlX2VuZCJ9KTtlbHNlIGlmKGk9dGhpcy5ydWxlcy5saXN0LmV4ZWMoZSkpe2ZvcihlPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxsPWlbMl0sdGhpcy50b2tlbnMucHVzaCh7dHlwZToibGlzdF9zdGFydCIsb3JkZXJlZDpsLmxlbmd0aD4xfSksaT1pWzBdLm1hdGNoKHRoaXMucnVsZXMuaXRlbSkscj0hMSxjPWkubGVuZ3RoLHU9MDt1PGM7dSsrKWg9aVt1XSxhPWgubGVuZ3RoLGg9aC5yZXBsYWNlKC9eICooWyorLV18XGQrXC4pICsvLCIiKSx+aC5pbmRleE9mKCJcbiAiKSYmKGEtPWgubGVuZ3RoLGg9dGhpcy5vcHRpb25zLnBlZGFudGljP2gucmVwbGFjZSgvXiB7MSw0fS9nbSwiIik6aC5yZXBsYWNlKG5ldyBSZWdFeHAoIl4gezEsIithKyJ9IiwiZ20iKSwiIikpLHRoaXMub3B0aW9ucy5zbWFydExpc3RzJiZ1IT09Yy0xJiYobz1wLmJ1bGxldC5leGVjKGlbdSsxXSlbMF0sbD09PW98fGwubGVuZ3RoPjEmJm8ubGVuZ3RoPjF8fChlPWkuc2xpY2UodSsxKS5qb2luKCJcbiIpK2UsdT1jLTEpKSxzPXJ8fC9cblxuKD8hXHMqJCkvLnRlc3QoaCksdSE9PWMtMSYmKHI9IlxuIj09PWguY2hhckF0KGgubGVuZ3RoLTEpLHN8fChzPXIpKSx0aGlzLnRva2Vucy5wdXNoKHt0eXBlOnM/Imxvb3NlX2l0ZW1fc3RhcnQiOiJsaXN0X2l0ZW1fc3RhcnQifSksdGhpcy50b2tlbihoLCExLG4pLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6Imxpc3RfaXRlbV9lbmQifSk7dGhpcy50b2tlbnMucHVzaCh7dHlwZToibGlzdF9lbmQifSl9ZWxzZSBpZihpPXRoaXMucnVsZXMuaHRtbC5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6dGhpcy5vcHRpb25zLnNhbml0aXplPyJwYXJhZ3JhcGgiOiJodG1sIixwcmU6InByZSI9PT1pWzFdfHwic2NyaXB0Ij09PWlbMV18fCJzdHlsZSI9PT1pWzFdLHRleHQ6aVswXX0pO2Vsc2UgaWYoIW4mJnQmJihpPXRoaXMucnVsZXMuZGVmLmV4ZWMoZSkpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLmxpbmtzW2lbMV0udG9Mb3dlckNhc2UoKV09e2hyZWY6aVsyXSx0aXRsZTppWzNdfTtlbHNlIGlmKHQmJihpPXRoaXMucnVsZXMudGFibGUuZXhlYyhlKSkpe2ZvcihlPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxoPXt0eXBlOiJ0YWJsZSIsaGVhZGVyOmlbMV0ucmVwbGFjZSgvXiAqfCAqXHwgKiQvZywiIikuc3BsaXQoLyAqXHwgKi8pLGFsaWduOmlbMl0ucmVwbGFjZSgvXiAqfFx8ICokL2csIiIpLnNwbGl0KC8gKlx8ICovKSxjZWxsczppWzNdLnJlcGxhY2UoLyg/OiAqXHwgKik/XG4kLywiIikuc3BsaXQoIlxuIil9LHU9MDt1PGguYWxpZ24ubGVuZ3RoO3UrKykvXiAqLSs6ICokLy50ZXN0KGguYWxpZ25bdV0pP2guYWxpZ25bdV09InJpZ2h0IjovXiAqOi0rOiAqJC8udGVzdChoLmFsaWduW3VdKT9oLmFsaWduW3VdPSJjZW50ZXIiOi9eICo6LSsgKiQvLnRlc3QoaC5hbGlnblt1XSk/aC5hbGlnblt1XT0ibGVmdCI6aC5hbGlnblt1XT1udWxsO2Zvcih1PTA7dTxoLmNlbGxzLmxlbmd0aDt1KyspaC5jZWxsc1t1XT1oLmNlbGxzW3VdLnJlcGxhY2UoL14gKlx8ICp8ICpcfCAqJC9nLCIiKS5zcGxpdCgvICpcfCAqLyk7dGhpcy50b2tlbnMucHVzaChoKX1lbHNlIGlmKHQmJihpPXRoaXMucnVsZXMucGFyYWdyYXBoLmV4ZWMoZSkpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6InBhcmFncmFwaCIsdGV4dDoiXG4iPT09aVsxXS5jaGFyQXQoaVsxXS5sZW5ndGgtMSk/aVsxXS5zbGljZSgwLC0xKTppWzFdfSk7ZWxzZSBpZihpPXRoaXMucnVsZXMudGV4dC5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLHRoaXMudG9rZW5zLnB1c2goe3R5cGU6InRleHQiLHRleHQ6aVswXX0pO2Vsc2UgaWYoZSl0aHJvdyBuZXcgRXJyb3IoIkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitlLmNoYXJDb2RlQXQoMCkpO3JldHVybiB0aGlzLnRva2Vuc307dmFyIHU9e2VzY2FwZTovXlxcKFtcXGAqe31cW1xdKCkjK1wtLiFfPl0pLyxhdXRvbGluazovXjwoW14gPl0rKEB8OlwvKVteID5dKyk+Lyx1cmw6byx0YWc6L148IS0tW1xzXFNdKj8tLT58XjxcLz9cdysoPzoiW14iXSoifCdbXiddKid8W14nIj5dKSo/Pi8sbGluazovXiE/XFsoaW5zaWRlKVxdXChocmVmXCkvLHJlZmxpbms6L14hP1xbKGluc2lkZSlcXVxzKlxbKFteXF1dKilcXS8sbm9saW5rOi9eIT9cWygoPzpcW1teXF1dKlxdfFteXFtcXV0pKilcXS8sc3Ryb25nOi9eX18oW1xzXFNdKz8pX18oPyFfKXxeXCpcKihbXHNcU10rPylcKlwqKD8hXCopLyxlbTovXlxiXygoPzpfX3xbXHNcU10pKz8pX1xifF5cKigoPzpcKlwqfFtcc1xTXSkrPylcKig/IVwqKS8sY29kZTovXihgKylccyooW1xzXFNdKj9bXmBdKVxzKlwxKD8hYCkvLGJyOi9eIHsyLH1cbig/IVxzKiQpLyxkZWw6byx0ZXh0Oi9eW1xzXFNdKz8oPz1bXFw8IVxbXypgXXwgezIsfVxufCQpL307dS5faW5zaWRlPS8oPzpcW1teXF1dKlxdfFteXFtcXV18XF0oPz1bXlxbXSpcXSkpKi8sdS5faHJlZj0vXHMqPD8oW1xzXFNdKj8pPj8oPzpccytbJyJdKFtcc1xTXSo/KVsnIl0pP1xzKi8sdS5saW5rPWwodS5saW5rKSgiaW5zaWRlIix1Ll9pbnNpZGUpKCJocmVmIix1Ll9ocmVmKSgpLHUucmVmbGluaz1sKHUucmVmbGluaykoImluc2lkZSIsdS5faW5zaWRlKSgpLHUubm9ybWFsPWgoe30sdSksdS5wZWRhbnRpYz1oKHt9LHUubm9ybWFsLHtzdHJvbmc6L15fXyg/PVxTKShbXHNcU10qP1xTKV9fKD8hXyl8XlwqXCooPz1cUykoW1xzXFNdKj9cUylcKlwqKD8hXCopLyxlbTovXl8oPz1cUykoW1xzXFNdKj9cUylfKD8hXyl8XlwqKD89XFMpKFtcc1xTXSo/XFMpXCooPyFcKikvfSksdS5nZm09aCh7fSx1Lm5vcm1hbCx7ZXNjYXBlOmwodS5lc2NhcGUpKCJdKSIsIn58XSkiKSgpLHVybDovXihodHRwcz86XC9cL1teXHM8XStbXjwuLDo7IicpXF1cc10pLyxkZWw6L15+fig/PVxTKShbXHNcU10qP1xTKX5+Lyx0ZXh0OmwodS50ZXh0KSgiXXwiLCJ+XXwiKSgifCIsInxodHRwcz86Ly98IikoKX0pLHUuYnJlYWtzPWgoe30sdS5nZm0se2JyOmwodS5icikoInsyLH0iLCIqIikoKSx0ZXh0OmwodS5nZm0udGV4dCkoInsyLH0iLCIqIikoKX0pLHQucnVsZXM9dSx0Lm91dHB1dD1mdW5jdGlvbihlLG4scil7dmFyIHM9bmV3IHQobixyKTtyZXR1cm4gcy5vdXRwdXQoZSl9LHQucHJvdG90eXBlLm91dHB1dD1mdW5jdGlvbihlKXtmb3IodmFyIHQsbixyLGksbD0iIjtlOylpZihpPXRoaXMucnVsZXMuZXNjYXBlLmV4ZWMoZSkpZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbCs9aVsxXTtlbHNlIGlmKGk9dGhpcy5ydWxlcy5hdXRvbGluay5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLCJAIj09PWlbMl0/KG49IjoiPT09aVsxXS5jaGFyQXQoNik/dGhpcy5tYW5nbGUoaVsxXS5zdWJzdHJpbmcoNykpOnRoaXMubWFuZ2xlKGlbMV0pLHI9dGhpcy5tYW5nbGUoIm1haWx0bzoiKStuKToobj1zKGlbMV0pLHI9biksbCs9dGhpcy5yZW5kZXJlci5saW5rKHIsbnVsbCxuKTtlbHNlIGlmKHRoaXMuaW5MaW5rfHwhKGk9dGhpcy5ydWxlcy51cmwuZXhlYyhlKSkpe2lmKGk9dGhpcy5ydWxlcy50YWcuZXhlYyhlKSkhdGhpcy5pbkxpbmsmJi9ePGEgL2kudGVzdChpWzBdKT90aGlzLmluTGluaz0hMDp0aGlzLmluTGluayYmL148XC9hPi9pLnRlc3QoaVswXSkmJih0aGlzLmluTGluaz0hMSksZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbCs9dGhpcy5vcHRpb25zLnNhbml0aXplP3MoaVswXSk6aVswXTtlbHNlIGlmKGk9dGhpcy5ydWxlcy5saW5rLmV4ZWMoZSkpZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksdGhpcy5pbkxpbms9ITAsbCs9dGhpcy5vdXRwdXRMaW5rKGkse2hyZWY6aVsyXSx0aXRsZTppWzNdfSksdGhpcy5pbkxpbms9ITE7ZWxzZSBpZigoaT10aGlzLnJ1bGVzLnJlZmxpbmsuZXhlYyhlKSl8fChpPXRoaXMucnVsZXMubm9saW5rLmV4ZWMoZSkpKXtpZihlPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSx0PShpWzJdfHxpWzFdKS5yZXBsYWNlKC9ccysvZywiICIpLHQ9dGhpcy5saW5rc1t0LnRvTG93ZXJDYXNlKCldLCF0fHwhdC5ocmVmKXtsKz1pWzBdLmNoYXJBdCgwKSxlPWlbMF0uc3Vic3RyaW5nKDEpK2U7Y29udGludWV9dGhpcy5pbkxpbms9ITAsbCs9dGhpcy5vdXRwdXRMaW5rKGksdCksdGhpcy5pbkxpbms9ITF9ZWxzZSBpZihpPXRoaXMucnVsZXMuc3Ryb25nLmV4ZWMoZSkpZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbCs9dGhpcy5yZW5kZXJlci5zdHJvbmcodGhpcy5vdXRwdXQoaVsyXXx8aVsxXSkpO2Vsc2UgaWYoaT10aGlzLnJ1bGVzLmVtLmV4ZWMoZSkpZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbCs9dGhpcy5yZW5kZXJlci5lbSh0aGlzLm91dHB1dChpWzJdfHxpWzFdKSk7ZWxzZSBpZihpPXRoaXMucnVsZXMuY29kZS5leGVjKGUpKWU9ZS5zdWJzdHJpbmcoaVswXS5sZW5ndGgpLGwrPXRoaXMucmVuZGVyZXIuY29kZXNwYW4ocyhpWzJdLCEwKSk7ZWxzZSBpZihpPXRoaXMucnVsZXMuYnIuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxsKz10aGlzLnJlbmRlcmVyLmJyKCk7ZWxzZSBpZihpPXRoaXMucnVsZXMuZGVsLmV4ZWMoZSkpZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbCs9dGhpcy5yZW5kZXJlci5kZWwodGhpcy5vdXRwdXQoaVsxXSkpO2Vsc2UgaWYoaT10aGlzLnJ1bGVzLnRleHQuZXhlYyhlKSllPWUuc3Vic3RyaW5nKGlbMF0ubGVuZ3RoKSxsKz1zKHRoaXMuc21hcnR5cGFudHMoaVswXSkpO2Vsc2UgaWYoZSl0aHJvdyBuZXcgRXJyb3IoIkluZmluaXRlIGxvb3Agb24gYnl0ZTogIitlLmNoYXJDb2RlQXQoMCkpfWVsc2UgZT1lLnN1YnN0cmluZyhpWzBdLmxlbmd0aCksbj1zKGlbMV0pLHI9bixsKz10aGlzLnJlbmRlcmVyLmxpbmsocixudWxsLG4pO3JldHVybiBsfSx0LnByb3RvdHlwZS5vdXRwdXRMaW5rPWZ1bmN0aW9uKGUsdCl7dmFyIG49cyh0LmhyZWYpLHI9dC50aXRsZT9zKHQudGl0bGUpOm51bGw7cmV0dXJuIiEiIT09ZVswXS5jaGFyQXQoMCk/dGhpcy5yZW5kZXJlci5saW5rKG4scix0aGlzLm91dHB1dChlWzFdKSk6dGhpcy5yZW5kZXJlci5pbWFnZShuLHIscyhlWzFdKSl9LHQucHJvdG90eXBlLnNtYXJ0eXBhbnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnMuc21hcnR5cGFudHM/ZS5yZXBsYWNlKC8tLS9nLCLigJQiKS5yZXBsYWNlKC8oXnxbLVx1MjAxNFwvKFxbeyJcc10pJy9nLCIkMeKAmCIpLnJlcGxhY2UoLycvZywi4oCZIikucmVwbGFjZSgvKF58Wy1cdTIwMTRcLyhcW3tcdTIwMThcc10pIi9nLCIkMeKAnCIpLnJlcGxhY2UoLyIvZywi4oCdIikucmVwbGFjZSgvXC57M30vZywi4oCmIik6ZX0sdC5wcm90b3R5cGUubWFuZ2xlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPSIiLHI9ZS5sZW5ndGgscz0wO3M8cjtzKyspdD1lLmNoYXJDb2RlQXQocyksTWF0aC5yYW5kb20oKT4uNSYmKHQ9IngiK3QudG9TdHJpbmcoMTYpKSxuKz0iJiMiK3QrIjsiO3JldHVybiBufSxuLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KXt2YXIgcj10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KGUsdCk7bnVsbCE9ciYmciE9PWUmJihuPSEwLGU9cil9cmV0dXJuIHQ/JzxwcmU+PGNvZGUgY2xhc3M9IicrdGhpcy5vcHRpb25zLmxhbmdQcmVmaXgrcyh0LCEwKSsnIj4nKyhuP2U6cyhlLCEwKSkrIlxuPC9jb2RlPjwvcHJlPlxuIjoiPHByZT48Y29kZT4iKyhuP2U6cyhlLCEwKSkrIlxuPC9jb2RlPjwvcHJlPiJ9LG4ucHJvdG90eXBlLmJsb2NrcXVvdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIjxibG9ja3F1b3RlPlxuIitlKyI8L2Jsb2NrcXVvdGU+XG4ifSxuLnByb3RvdHlwZS5odG1sPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxuLnByb3RvdHlwZS5oZWFkaW5nPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPGgiK3QrJyBpZD0iJyt0aGlzLm9wdGlvbnMuaGVhZGVyUHJlZml4K24udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlx3XSsvZywiLSIpKyciPicrZSsiPC9oIit0KyI+XG4ifSxuLnByb3RvdHlwZS5ocj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMueGh0bWw/Ijxoci8+XG4iOiI8aHI+XG4ifSxuLnByb3RvdHlwZS5saXN0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dD8ib2wiOiJ1bCI7cmV0dXJuIjwiK24rIj5cbiIrZSsiPC8iK24rIj5cbiJ9LG4ucHJvdG90eXBlLmxpc3RpdGVtPWZ1bmN0aW9uKGUpe3JldHVybiI8bGk+IitlKyI8L2xpPlxuIn0sbi5wcm90b3R5cGUucGFyYWdyYXBoPWZ1bmN0aW9uKGUpe3JldHVybiI8cD4iK2UrIjwvcD5cbiJ9LG4ucHJvdG90eXBlLnRhYmxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIjx0YWJsZT5cbjx0aGVhZD5cbiIrZSsiPC90aGVhZD5cbjx0Ym9keT5cbiIrdCsiPC90Ym9keT5cbjwvdGFibGU+XG4ifSxuLnByb3RvdHlwZS50YWJsZXJvdz1mdW5jdGlvbihlKXtyZXR1cm4iPHRyPlxuIitlKyI8L3RyPlxuIn0sbi5wcm90b3R5cGUudGFibGVjZWxsPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5oZWFkZXI/InRoIjoidGQiLHI9dC5hbGlnbj8iPCIrbisnIHN0eWxlPSJ0ZXh0LWFsaWduOicrdC5hbGlnbisnIj4nOiI8IituKyI+IjtyZXR1cm4gcitlKyI8LyIrbisiPlxuIn0sbi5wcm90b3R5cGUuc3Ryb25nPWZ1bmN0aW9uKGUpe3JldHVybiI8c3Ryb25nPiIrZSsiPC9zdHJvbmc+In0sbi5wcm90b3R5cGUuZW09ZnVuY3Rpb24oZSl7cmV0dXJuIjxlbT4iK2UrIjwvZW0+In0sbi5wcm90b3R5cGUuY29kZXNwYW49ZnVuY3Rpb24oZSl7cmV0dXJuIjxjb2RlPiIrZSsiPC9jb2RlPiJ9LG4ucHJvdG90eXBlLmJyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy54aHRtbD8iPGJyLz4iOiI8YnI+In0sbi5wcm90b3R5cGUuZGVsPWZ1bmN0aW9uKGUpe3JldHVybiI8ZGVsPiIrZSsiPC9kZWw+In0sbi5wcm90b3R5cGUubGluaz1mdW5jdGlvbihlLHQsbil7aWYodGhpcy5vcHRpb25zLnNhbml0aXplKXt0cnl7dmFyIHI9ZGVjb2RlVVJJQ29tcG9uZW50KGkoZSkpLnJlcGxhY2UoL1teXHc6XS9nLCIiKS50b0xvd2VyQ2FzZSgpfWNhdGNoKHMpe3JldHVybiIifWlmKDA9PT1yLmluZGV4T2YoImphdmFzY3JpcHQ6IikpcmV0dXJuIiJ9dmFyIGw9JzxhIGhyZWY9IicrZSsnIic7cmV0dXJuIHQmJihsKz0nIHRpdGxlPSInK3QrJyInKSxsKz0iPiIrbisiPC9hPiJ9LG4ucHJvdG90eXBlLmltYWdlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0nPGltZyBzcmM9IicrZSsnIiBhbHQ9IicrbisnIic7cmV0dXJuIHQmJihyKz0nIHRpdGxlPSInK3QrJyInKSxyKz10aGlzLm9wdGlvbnMueGh0bWw/Ii8+IjoiPiJ9LHIucGFyc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciBzPW5ldyByKHQsbik7cmV0dXJuIHMucGFyc2UoZSl9LHIucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKGUpe3RoaXMuaW5saW5lPW5ldyB0KGUubGlua3MsdGhpcy5vcHRpb25zLHRoaXMucmVuZGVyZXIpLHRoaXMudG9rZW5zPWUucmV2ZXJzZSgpO2Zvcih2YXIgbj0iIjt0aGlzLm5leHQoKTspbis9dGhpcy50b2soKTtyZXR1cm4gbn0sci5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuPXRoaXMudG9rZW5zLnBvcCgpfSxyLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMudG9rZW5zLmxlbmd0aC0xXXx8MH0sci5wcm90b3R5cGUucGFyc2VUZXh0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMudG9rZW4udGV4dDsidGV4dCI9PT10aGlzLnBlZWsoKS50eXBlOyllKz0iXG4iK3RoaXMubmV4dCgpLnRleHQ7cmV0dXJuIHRoaXMuaW5saW5lLm91dHB1dChlKX0sci5wcm90b3R5cGUudG9rPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMudG9rZW4udHlwZSl7Y2FzZSJzcGFjZSI6cmV0dXJuIiI7Y2FzZSJociI6cmV0dXJuIHRoaXMucmVuZGVyZXIuaHIoKTtjYXNlImhlYWRpbmciOnJldHVybiB0aGlzLnJlbmRlcmVyLmhlYWRpbmcodGhpcy5pbmxpbmUub3V0cHV0KHRoaXMudG9rZW4udGV4dCksdGhpcy50b2tlbi5kZXB0aCx0aGlzLnRva2VuLnRleHQpO2Nhc2UiY29kZSI6cmV0dXJuIHRoaXMucmVuZGVyZXIuY29kZSh0aGlzLnRva2VuLnRleHQsdGhpcy50b2tlbi5sYW5nLHRoaXMudG9rZW4uZXNjYXBlZCk7Y2FzZSJ0YWJsZSI6dmFyIGUsdCxuLHIscyxpPSIiLGw9IiI7Zm9yKG49IiIsZT0wO2U8dGhpcy50b2tlbi5oZWFkZXIubGVuZ3RoO2UrKylyPXtoZWFkZXI6ITAsYWxpZ246dGhpcy50b2tlbi5hbGlnbltlXX0sbis9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5pbmxpbmUub3V0cHV0KHRoaXMudG9rZW4uaGVhZGVyW2VdKSx7aGVhZGVyOiEwLGFsaWduOnRoaXMudG9rZW4uYWxpZ25bZV19KTtmb3IoaSs9dGhpcy5yZW5kZXJlci50YWJsZXJvdyhuKSxlPTA7ZTx0aGlzLnRva2VuLmNlbGxzLmxlbmd0aDtlKyspe2Zvcih0PXRoaXMudG9rZW4uY2VsbHNbZV0sbj0iIixzPTA7czx0Lmxlbmd0aDtzKyspbis9dGhpcy5yZW5kZXJlci50YWJsZWNlbGwodGhpcy5pbmxpbmUub3V0cHV0KHRbc10pLHtoZWFkZXI6ITEsYWxpZ246dGhpcy50b2tlbi5hbGlnbltzXX0pO2wrPXRoaXMucmVuZGVyZXIudGFibGVyb3cobil9cmV0dXJuIHRoaXMucmVuZGVyZXIudGFibGUoaSxsKTtjYXNlImJsb2NrcXVvdGVfc3RhcnQiOmZvcih2YXIgbD0iIjsiYmxvY2txdW90ZV9lbmQiIT09dGhpcy5uZXh0KCkudHlwZTspbCs9dGhpcy50b2soKTtyZXR1cm4gdGhpcy5yZW5kZXJlci5ibG9ja3F1b3RlKGwpO2Nhc2UibGlzdF9zdGFydCI6Zm9yKHZhciBsPSIiLG89dGhpcy50b2tlbi5vcmRlcmVkOyJsaXN0X2VuZCIhPT10aGlzLm5leHQoKS50eXBlOylsKz10aGlzLnRvaygpO3JldHVybiB0aGlzLnJlbmRlcmVyLmxpc3QobCxvKTtjYXNlImxpc3RfaXRlbV9zdGFydCI6Zm9yKHZhciBsPSIiOyJsaXN0X2l0ZW1fZW5kIiE9PXRoaXMubmV4dCgpLnR5cGU7KWwrPSJ0ZXh0Ij09PXRoaXMudG9rZW4udHlwZT90aGlzLnBhcnNlVGV4dCgpOnRoaXMudG9rKCk7cmV0dXJuIHRoaXMucmVuZGVyZXIubGlzdGl0ZW0obCk7Y2FzZSJsb29zZV9pdGVtX3N0YXJ0Ijpmb3IodmFyIGw9IiI7Imxpc3RfaXRlbV9lbmQiIT09dGhpcy5uZXh0KCkudHlwZTspbCs9dGhpcy50b2soKTtyZXR1cm4gdGhpcy5yZW5kZXJlci5saXN0aXRlbShsKTtjYXNlImh0bWwiOnZhciBoPXRoaXMudG9rZW4ucHJlfHx0aGlzLm9wdGlvbnMucGVkYW50aWM/dGhpcy50b2tlbi50ZXh0OnRoaXMuaW5saW5lLm91dHB1dCh0aGlzLnRva2VuLnRleHQpO3JldHVybiB0aGlzLnJlbmRlcmVyLmh0bWwoaCk7Y2FzZSJwYXJhZ3JhcGgiOnJldHVybiB0aGlzLnJlbmRlcmVyLnBhcmFncmFwaCh0aGlzLmlubGluZS5vdXRwdXQodGhpcy50b2tlbi50ZXh0KSk7Y2FzZSJ0ZXh0IjpyZXR1cm4gdGhpcy5yZW5kZXJlci5wYXJhZ3JhcGgodGhpcy5wYXJzZVRleHQoKSl9fSxvLmV4ZWM9byxhLm9wdGlvbnM9YS5zZXRPcHRpb25zPWZ1bmN0aW9uKGUpe3JldHVybiBoKGEuZGVmYXVsdHMsZSksYX0sYS5kZWZhdWx0cz17Z2ZtOiEwLHRhYmxlczohMCxicmVha3M6ITEscGVkYW50aWM6ITEsc2FuaXRpemU6ITEsc21hcnRMaXN0czohMSxzaWxlbnQ6ITEsaGlnaGxpZ2h0Om51bGwsbGFuZ1ByZWZpeDoibGFuZy0iLHNtYXJ0eXBhbnRzOiExLGhlYWRlclByZWZpeDoiIixyZW5kZXJlcjpuZXcgbix4aHRtbDohMX0sYS5QYXJzZXI9cixhLnBhcnNlcj1yLnBhcnNlLGEuUmVuZGVyZXI9bixhLkxleGVyPWUsYS5sZXhlcj1lLmxleCxhLklubGluZUxleGVyPXQsYS5pbmxpbmVMZXhlcj10Lm91dHB1dCxhLnBhcnNlPWEsInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KTp0aGlzLm1hcmtlZD1hfSkuY2FsbChmdW5jdGlvbigpe3JldHVybiB0aGlzfHwoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Omdsb2JhbCl9KCkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL29iamVjdC1hc3NpZ24tcG9sbHlmaWxsLmpzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvb2JqZWN0LWFzc2lnbi1wb2xseWZpbGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM0ZDYzYwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL29iamVjdC1hc3NpZ24tcG9sbHlmaWxsLmpzCkBAIC0wLDAgKzEgQEAKKyJmdW5jdGlvbiIhPXR5cGVvZiBPYmplY3QuYXNzaWduJiYhZnVuY3Rpb24oKXtPYmplY3QuYXNzaWduPWZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtpZih2b2lkIDA9PT1ufHxudWxsPT09bil0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTtmb3IodmFyIHQ9T2JqZWN0KG4pLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYodm9pZCAwIT09ciYmbnVsbCE9PXIpZm9yKHZhciBlIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsZSkmJih0W2VdPXJbZV0pfXJldHVybiB0fX0oKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9zYW5pdGl6ZS1odG1sLm1pbi5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL3Nhbml0aXplLWh0bWwubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTI1MDgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L2xpYi9zYW5pdGl6ZS1odG1sLm1pbi5qcwpAQCAtMCwwICsxLDQgQEAKKyFmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPXQoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIGU7ZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsZS5zYW5pdGl6ZUh0bWw9dCgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gdChlLHIsbil7ZnVuY3Rpb24gaShvLGEpe2lmKCFyW29dKXtpZighZVtvXSl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWEmJmMpcmV0dXJuIGMobywhMCk7aWYocylyZXR1cm4gcyhvLCEwKTt2YXIgdT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cgdS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIix1fXZhciBoPXJbb109e2V4cG9ydHM6e319O2Vbb11bMF0uY2FsbChoLmV4cG9ydHMsZnVuY3Rpb24odCl7dmFyIHI9ZVtvXVsxXVt0XTtyZXR1cm4gaShyP3I6dCl9LGgsaC5leHBvcnRzLHQsZSxyLG4pfXJldHVybiByW29dLmV4cG9ydHN9Zm9yKHZhciBzPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLG89MDtvPG4ubGVuZ3RoO28rKylpKG5bb10pO3JldHVybiBpfSh7MTpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXt0JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2UodFtyXSxyKX0pfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm57fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9ZnVuY3Rpb24gcyh0LGUscil7ZnVuY3Rpb24gaCh0LGUpe3ZhciByPXRoaXM7dGhpcy50YWc9dCx0aGlzLmF0dHJpYnM9ZXx8e30sdGhpcy50YWdQb3NpdGlvbj1kLmxlbmd0aCx0aGlzLnRleHQ9IiIsdGhpcy51cGRhdGVQYXJlbnROb2RlVGV4dD1mdW5jdGlvbigpe2lmKHgubGVuZ3RoKXt2YXIgdD14W3gubGVuZ3RoLTFdO3QudGV4dCs9ci50ZXh0fX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJih0Kz0iIiksdC5yZXBsYWNlKC9cJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoL1w+L2csIiZndDsiKS5yZXBsYWNlKC9cIi9nLCImcXVvdDsiKX1mdW5jdGlvbiBmKHQscil7cj1yLnJlcGxhY2UoL1tceDAwLVx4MjBdKy9nLCIiKSxyPXIucmVwbGFjZSgvPFwhXC1cLS4qP1wtXC1cPi9nLCIiKTt2YXIgbj1yLm1hdGNoKC9eKFthLXpBLVpdKylcOi8pO2lmKCFuKXJldHVybiExO3ZhciBzPW5bMV0udG9Mb3dlckNhc2UoKTtyZXR1cm4gaShlLmFsbG93ZWRTY2hlbWVzQnlUYWcsdCk/ZS5hbGxvd2VkU2NoZW1lc0J5VGFnW3RdLmluZGV4T2Yocyk9PT0tMTohZS5hbGxvd2VkU2NoZW1lc3x8ZS5hbGxvd2VkU2NoZW1lcy5pbmRleE9mKHMpPT09LTF9ZnVuY3Rpb24gcCh0LGUpe3JldHVybiBlPyh0PXQuc3BsaXQoL1xzKy8pLHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluZGV4T2YodCkhPT0tMX0pLmpvaW4oIiAiKSk6dH12YXIgZD0iIjtlPyhlPWEocy5kZWZhdWx0cyxlKSxlLnBhcnNlcj9lLnBhcnNlcj1hKHUsZS5wYXJzZXIpOmUucGFyc2VyPXUpOihlPXMuZGVmYXVsdHMsZS5wYXJzZXI9dSk7dmFyIGcsXyxtPWUubm9uVGV4dFRhZ3N8fFsic2NyaXB0Iiwic3R5bGUiLCJ0ZXh0YXJlYSJdO2UuYWxsb3dlZEF0dHJpYnV0ZXMmJihnPXt9LF89e30sbihlLmFsbG93ZWRBdHRyaWJ1dGVzLGZ1bmN0aW9uKHQsZSl7Z1tlXT1bXTt2YXIgcj1bXTt0LmZvckVhY2goZnVuY3Rpb24odCl7dC5pbmRleE9mKCIqIik+PTA/ci5wdXNoKGModCkucmVwbGFjZSgvXFxcKi9nLCIuKiIpKTpnW2VdLnB1c2godCl9KSxfW2VdPW5ldyBSZWdFeHAoIl4oIityLmpvaW4oInwiKSsiKSQiKX0pKTt2YXIgYj17fTtuKGUuYWxsb3dlZENsYXNzZXMsZnVuY3Rpb24odCxlKXtnJiYoaShnLGUpfHwoZ1tlXT1bXSksZ1tlXS5wdXNoKCJjbGFzcyIpKSxiW2VdPXR9KTt2YXIgeSx2PXt9O24oZS50cmFuc2Zvcm1UYWdzLGZ1bmN0aW9uKHQsZSl7dmFyIHI7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/cj10OiJzdHJpbmciPT10eXBlb2YgdCYmKHI9cy5zaW1wbGVUcmFuc2Zvcm0odCkpLCIqIj09PWU/eT1yOnZbZV09cn0pO3ZhciB3PTAseD1bXSxTPXt9LEU9e30sVD0hMSxBPTAsaz1uZXcgby5QYXJzZXIoe29ub3BlbnRhZzpmdW5jdGlvbih0LHIpe2lmKFQpcmV0dXJuIHZvaWQgQSsrO3ZhciBzPW5ldyBoKHQscik7eC5wdXNoKHMpO3ZhciBvLGE9ITEsYz0hIXMudGV4dDtpKHYsdCkmJihvPXZbdF0odCxyKSxzLmF0dHJpYnM9cj1vLmF0dHJpYnMsdm9pZCAwIT09by50ZXh0JiYocy5pbm5lclRleHQ9by50ZXh0KSx0IT09by50YWdOYW1lJiYocy5uYW1lPXQ9by50YWdOYW1lLEVbd109by50YWdOYW1lKSkseSYmKG89eSh0LHIpLHMuYXR0cmlicz1yPW8uYXR0cmlicyx0IT09by50YWdOYW1lJiYocy5uYW1lPXQ9by50YWdOYW1lLEVbd109by50YWdOYW1lKSksZS5hbGxvd2VkVGFncyYmZS5hbGxvd2VkVGFncy5pbmRleE9mKHQpPT09LTEmJihhPSEwLG0uaW5kZXhPZih0KSE9PS0xJiYoVD0hMCxBPTEpLFNbd109ITApLHcrKyxhfHwoZCs9IjwiK3QsKCFnfHxpKGcsdCl8fGdbIioiXSkmJm4ocixmdW5jdGlvbihlLHIpe2lmKCFnfHxpKGcsdCkmJmdbdF0uaW5kZXhPZihyKSE9PS0xfHxnWyIqIl0mJmdbIioiXS5pbmRleE9mKHIpIT09LTF8fGkoXyx0KSYmX1t0XS50ZXN0KHIpfHxfWyIqIl0mJl9bIioiXS50ZXN0KHIpKXtpZigoImhyZWYiPT09cnx8InNyYyI9PT1yKSYmZih0LGUpKXJldHVybiB2b2lkIGRlbGV0ZSBzLmF0dHJpYnNbcl07aWYoImNsYXNzIj09PXImJihlPXAoZSxiW3RdKSwhZS5sZW5ndGgpKXJldHVybiB2b2lkIGRlbGV0ZSBzLmF0dHJpYnNbcl07ZCs9IiAiK3IsZS5sZW5ndGgmJihkKz0nPSInK2woZSkrJyInKX1lbHNlIGRlbGV0ZSBzLmF0dHJpYnNbcl19KSxlLnNlbGZDbG9zaW5nLmluZGV4T2YodCkhPT0tMT9kKz0iIC8+IjooZCs9Ij4iLCFzLmlubmVyVGV4dHx8Y3x8ZS50ZXh0RmlsdGVyfHwoZCs9cy5pbm5lclRleHQpKSl9LG9udGV4dDpmdW5jdGlvbih0KXtpZighVCl7dmFyIHIsbj14W3gubGVuZ3RoLTFdO2lmKG4mJihyPW4udGFnLHQ9dm9pZCAwIT09bi5pbm5lclRleHQ/bi5pbm5lclRleHQ6dCksInNjcmlwdCI9PT1yfHwic3R5bGUiPT09cilkKz10O2Vsc2V7dmFyIGk9bCh0KTtkKz1lLnRleHRGaWx0ZXI/ZS50ZXh0RmlsdGVyKGkpOml9aWYoeC5sZW5ndGgpe3ZhciBzPXhbeC5sZW5ndGgtMV07cy50ZXh0Kz10fX19LG9uY2xvc2V0YWc6ZnVuY3Rpb24odCl7aWYoVCl7aWYoQS0tLEEpcmV0dXJuO1Q9ITF9dmFyIHI9eC5wb3AoKTtpZihyKXtpZihUPSExLHctLSxTW3ddKXJldHVybiBkZWxldGUgU1t3XSx2b2lkIHIudXBkYXRlUGFyZW50Tm9kZVRleHQoKTtpZihFW3ddJiYodD1FW3ddLGRlbGV0ZSBFW3ddKSxlLmV4Y2x1c2l2ZUZpbHRlciYmZS5leGNsdXNpdmVGaWx0ZXIocikpcmV0dXJuIHZvaWQoZD1kLnN1YnN0cigwLHIudGFnUG9zaXRpb24pKTtyLnVwZGF0ZVBhcmVudE5vZGVUZXh0KCksZS5zZWxmQ2xvc2luZy5pbmRleE9mKHQpPT09LTEmJihkKz0iPC8iK3QrIj4iKX19fSxlLnBhcnNlcik7cmV0dXJuIGsud3JpdGUodCksay5lbmQoKSxkfXZhciBvPXQoImh0bWxwYXJzZXIyIiksYT10KCJ4dGVuZCIpLGM9dCgicmVnZXhwLXF1b3RlIik7ZS5leHBvcnRzPXM7dmFyIHU9e2RlY29kZUVudGl0aWVzOiEwfTtzLmRlZmF1bHRzPXthbGxvd2VkVGFnczpbImgzIiwiaDQiLCJoNSIsImg2IiwiYmxvY2txdW90ZSIsInAiLCJhIiwidWwiLCJvbCIsIm5sIiwibGkiLCJiIiwiaSIsInN0cm9uZyIsImVtIiwic3RyaWtlIiwiY29kZSIsImhyIiwiYnIiLCJkaXYiLCJ0YWJsZSIsInRoZWFkIiwiY2FwdGlvbiIsInRib2R5IiwidHIiLCJ0aCIsInRkIiwicHJlIl0sYWxsb3dlZEF0dHJpYnV0ZXM6e2E6WyJocmVmIiwibmFtZSIsInRhcmdldCJdLGltZzpbInNyYyJdfSxzZWxmQ2xvc2luZzpbImltZyIsImJyIiwiaHIiLCJhcmVhIiwiYmFzZSIsImJhc2Vmb250IiwiaW5wdXQiLCJsaW5rIiwibWV0YSJdLGFsbG93ZWRTY2hlbWVzOlsiaHR0cCIsImh0dHBzIiwiZnRwIiwibWFpbHRvIl0sYWxsb3dlZFNjaGVtZXNCeVRhZzp7fX0scy5zaW1wbGVUcmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3JldHVybiByPXZvaWQgMD09PXJ8fHIsZT1lfHx7fSxmdW5jdGlvbihuLGkpe3ZhciBzO2lmKHIpZm9yKHMgaW4gZSlpW3NdPWVbc107ZWxzZSBpPWU7cmV0dXJue3RhZ05hbWU6dCxhdHRyaWJzOml9fX19LHtodG1scGFyc2VyMjozNiwicmVnZXhwLXF1b3RlIjo1NCx4dGVuZDo1OH1dLDI6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe2Zvcih2YXIgdD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsZT0wLHI9dC5sZW5ndGg7ZTxyOysrZSljW2VdPXRbZV0sdVt0LmNoYXJDb2RlQXQoZSldPWU7dVsiLSIuY2hhckNvZGVBdCgwKV09NjIsdVsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gaSh0KXt2YXIgZSxyLG4saSxzLG8sYT10Lmxlbmd0aDtpZihhJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTtzPSI9Ij09PXRbYS0yXT8yOiI9Ij09PXRbYS0xXT8xOjAsbz1uZXcgaCgzKmEvNC1zKSxuPXM+MD9hLTQ6YTt2YXIgYz0wO2ZvcihlPTAscj0wO2U8bjtlKz00LHIrPTMpaT11W3QuY2hhckNvZGVBdChlKV08PDE4fHVbdC5jaGFyQ29kZUF0KGUrMSldPDwxMnx1W3QuY2hhckNvZGVBdChlKzIpXTw8Nnx1W3QuY2hhckNvZGVBdChlKzMpXSxvW2MrK109aT4+MTYmMjU1LG9bYysrXT1pPj44JjI1NSxvW2MrK109MjU1Jmk7cmV0dXJuIDI9PT1zPyhpPXVbdC5jaGFyQ29kZUF0KGUpXTw8Mnx1W3QuY2hhckNvZGVBdChlKzEpXT4+NCxvW2MrK109MjU1JmkpOjE9PT1zJiYoaT11W3QuY2hhckNvZGVBdChlKV08PDEwfHVbdC5jaGFyQ29kZUF0KGUrMSldPDw0fHVbdC5jaGFyQ29kZUF0KGUrMildPj4yLG9bYysrXT1pPj44JjI1NSxvW2MrK109MjU1JmkpLG99ZnVuY3Rpb24gcyh0KXtyZXR1cm4gY1t0Pj4xOCY2M10rY1t0Pj4xMiY2M10rY1t0Pj42JjYzXStjWzYzJnRdfWZ1bmN0aW9uIG8odCxlLHIpe2Zvcih2YXIgbixpPVtdLG89ZTtvPHI7bys9MyluPSh0W29dPDwxNikrKHRbbysxXTw8OCkrdFtvKzJdLGkucHVzaChzKG4pKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBhKHQpe2Zvcih2YXIgZSxyPXQubGVuZ3RoLG49ciUzLGk9IiIscz1bXSxhPTE2MzgzLHU9MCxoPXItbjt1PGg7dSs9YSlzLnB1c2gobyh0LHUsdSthPmg/aDp1K2EpKTtyZXR1cm4gMT09PW4/KGU9dFtyLTFdLGkrPWNbZT4+Ml0saSs9Y1tlPDw0JjYzXSxpKz0iPT0iKToyPT09biYmKGU9KHRbci0yXTw8OCkrdFtyLTFdLGkrPWNbZT4+MTBdLGkrPWNbZT4+NCY2M10saSs9Y1tlPDwyJjYzXSxpKz0iPSIpLHMucHVzaChpKSxzLmpvaW4oIiIpfXIudG9CeXRlQXJyYXk9aSxyLmZyb21CeXRlQXJyYXk9YTt2YXIgYz1bXSx1PVtdLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXk7bigpfSx7fV0sMzpbZnVuY3Rpb24odCxlLHIpe30se31dLDQ6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciBuPXQoImJ1ZmZlciIpLGk9bi5CdWZmZXIscz1uLlNsb3dCdWZmZXIsbz1uLmtNYXhMZW5ndGh8fDIxNDc0ODM2NDc7ci5hbGxvYz1mdW5jdGlvbih0LGUscil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGkuYWxsb2MpcmV0dXJuIGkuYWxsb2ModCxlLHIpO2lmKCJudW1iZXIiPT10eXBlb2Ygcil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IG5vdCBiZSBudW1iZXIiKTtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYodD5vKXRocm93IG5ldyBSYW5nZUVycm9yKCJzaXplIGlzIHRvbyBsYXJnZSIpO3ZhciBuPXIscz1lO3ZvaWQgMD09PXMmJihuPXZvaWQgMCxzPTApO3ZhciBhPW5ldyBpKHQpO2lmKCJzdHJpbmciPT10eXBlb2Ygcylmb3IodmFyIGM9bmV3IGkocyxuKSx1PWMubGVuZ3RoLGg9LTE7KytoPHQ7KWFbaF09Y1toJXVdO2Vsc2UgYS5maWxsKHMpO3JldHVybiBhfSxyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmFsbG9jVW5zYWZlKXJldHVybiBpLmFsbG9jVW5zYWZlKHQpO2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZih0Pm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIik7cmV0dXJuIG5ldyBpKHQpfSxyLmZyb209ZnVuY3Rpb24odCxyLG4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmZyb20mJighZS5VaW50OEFycmF5fHxVaW50OEFycmF5LmZyb20hPT1pLmZyb20pKXJldHVybiBpLmZyb20odCxyLG4pO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBuZXcgaSh0LHIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dmFyIHM9cjtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbmV3IGkodCk7InVuZGVmaW5lZCI9PXR5cGVvZiBzJiYocz0wKTt2YXIgbz1uO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbyYmKG89dC5ieXRlTGVuZ3RoLXMpLHM+PXQuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKG8+dC5ieXRlTGVuZ3RoLXMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gbmV3IGkodC5zbGljZShzLHMrbykpfWlmKGkuaXNCdWZmZXIodCkpe3ZhciBhPW5ldyBpKHQubGVuZ3RoKTtyZXR1cm4gdC5jb3B5KGEsMCwwLHQubGVuZ3RoKSxhfWlmKHQpe2lmKEFycmF5LmlzQXJyYXkodCl8fCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdClyZXR1cm4gbmV3IGkodCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJkFycmF5LmlzQXJyYXkodC5kYXRhKSlyZXR1cm4gbmV3IGkodC5kYXRhKX10aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9LHIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmFsbG9jVW5zYWZlU2xvdylyZXR1cm4gaS5hbGxvY1Vuc2FmZVNsb3codCk7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpO2lmKHQ+PW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIik7cmV0dXJuIG5ldyBzKHQpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se2J1ZmZlcjo1fV0sNTpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3RyeXt2YXIgdD1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gdC5fX3Byb3RvX189e19fcHJvdG9fXzpVaW50OEFycmF5LnByb3RvdHlwZSxmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fSw0Mj09PXQuZm9vKCkmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YmFycmF5JiYwPT09dC5zdWJhcnJheSgxLDEpLmJ5dGVMZW5ndGh9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGkoKXtyZXR1cm4gby5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBzKHQsZSl7aWYoaSgpPGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odD1uZXcgVWludDhBcnJheShlKSx0Ll9fcHJvdG9fXz1vLnByb3RvdHlwZSk6KG51bGw9PT10JiYodD1uZXcgbyhlKSksdC5sZW5ndGg9ZSksdH1mdW5jdGlvbiBvKHQsZSxyKXtpZighKG8uVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbyh0LGUscik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBoKHRoaXMsdCl9cmV0dXJuIGEodGhpcyx0LGUscil9ZnVuY3Rpb24gYSh0LGUscixuKXtpZigibnVtYmVyIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJmUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9wKHQsZSxyLG4pOiJzdHJpbmciPT10eXBlb2YgZT9sKHQsZSxyKTpkKHQsZSl9ZnVuY3Rpb24gYyh0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIHUodCxlLHIsbil7cmV0dXJuIGMoZSksZTw9MD9zKHQsZSk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/cyh0LGUpLmZpbGwocixuKTpzKHQsZSkuZmlsbChyKTpzKHQsZSl9ZnVuY3Rpb24gaCh0LGUpe2lmKGMoZSksdD1zKHQsZTwwPzA6MHxnKGUpKSwhby5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8ZTsrK3IpdFtyXT0wO3JldHVybiB0fWZ1bmN0aW9uIGwodCxlLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpLCFvLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHxtKGUscik7dD1zKHQsbik7dmFyIGk9dC53cml0ZShlLHIpO3JldHVybiBpIT09biYmKHQ9dC5zbGljZSgwLGkpKSx0fWZ1bmN0aW9uIGYodCxlKXt2YXIgcj1lLmxlbmd0aDwwPzA6MHxnKGUubGVuZ3RoKTt0PXModCxyKTtmb3IodmFyIG49MDtuPHI7bis9MSl0W25dPTI1NSZlW25dO3JldHVybiB0fWZ1bmN0aW9uIHAodCxlLHIsbil7aWYoZS5ieXRlTGVuZ3RoLHI8MHx8ZS5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZihlLmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gZT12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KGUpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkoZSxyKTpuZXcgVWludDhBcnJheShlLHIsbiksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0PWUsdC5fX3Byb3RvX189by5wcm90b3R5cGUpOnQ9Zih0LGUpLHR9ZnVuY3Rpb24gZCh0LGUpe2lmKG8uaXNCdWZmZXIoZSkpe3ZhciByPTB8ZyhlLmxlbmd0aCk7cmV0dXJuIHQ9cyh0LHIpLDA9PT10Lmxlbmd0aD90OihlLmNvcHkodCwwLDAsciksdCl9aWYoZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiBlKXJldHVybiJudW1iZXIiIT10eXBlb2YgZS5sZW5ndGh8fEooZS5sZW5ndGgpP3ModCwwKTpmKHQsZSk7aWYoIkJ1ZmZlciI9PT1lLnR5cGUmJiQoZS5kYXRhKSlyZXR1cm4gZih0LGUuZGF0YSl9dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfWZ1bmN0aW9uIGcodCl7aWYodD49aSgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitpKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHx0fWZ1bmN0aW9uIF8odCl7cmV0dXJuK3QhPXQmJih0PTApLG8uYWxsb2MoK3QpfWZ1bmN0aW9uIG0odCxlKXtpZihvLmlzQnVmZmVyKHQpKXJldHVybiB0Lmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KHQpfHx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiB0LmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiB0JiYodD0iIit0KTt2YXIgcj10Lmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2goZSl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBGKHQpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0dXJuIHI+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gWCh0KS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBGKHQpLmxlbmd0aDtlPSgiIitlKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGIodCxlLHIpe3ZhciBuPSExO2lmKCh2b2lkIDA9PT1lfHxlPDApJiYoZT0wKSxlPnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuIiI7aWYocj4+Pj0wLGU+Pj49MCxyPD1lKXJldHVybiIiO2Zvcih0fHwodD0idXRmOCIpOzspc3dpdGNoKHQpe2Nhc2UiaGV4IjpyZXR1cm4gRCh0aGlzLGUscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gcSh0aGlzLGUscik7Y2FzZSJhc2NpaSI6cmV0dXJuIEModGhpcyxlLHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIEIodGhpcyxlLHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gTCh0aGlzLGUscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBqKHRoaXMsZSxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIit0KTt0PSh0KyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIHkodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiB2KHQsZSxyLG4saSl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9aT8wOnQubGVuZ3RoLTEpLHI8MCYmKHI9dC5sZW5ndGgrcikscj49dC5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7cj10Lmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighaSlyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiBlJiYoZT1vLmZyb20oZSxuKSksby5pc0J1ZmZlcihlKSlyZXR1cm4gMD09PWUubGVuZ3RoPy0xOncodCxlLHIsbixpKTtpZigibnVtYmVyIj09dHlwZW9mIGUpcmV0dXJuIGU9MjU1JmUsby5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LGUscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh0LGUscik6dyh0LFtlXSxyLG4saSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gdyh0LGUscixuLGkpe2Z1bmN0aW9uIHModCxlKXtyZXR1cm4gMT09PW8/dFtlXTp0LnJlYWRVSW50MTZCRShlKm8pfXZhciBvPTEsYT10Lmxlbmd0aCxjPWUubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJihuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpLCJ1Y3MyIj09PW58fCJ1Y3MtMiI9PT1ufHwidXRmMTZsZSI9PT1ufHwidXRmLTE2bGUiPT09bikpe2lmKHQubGVuZ3RoPDJ8fGUubGVuZ3RoPDIpcmV0dXJuLTE7bz0yLGEvPTIsYy89MixyLz0yfXZhciB1O2lmKGkpe3ZhciBoPS0xO2Zvcih1PXI7dTxhO3UrKylpZihzKHQsdSk9PT1zKGUsaD09PS0xPzA6dS1oKSl7aWYoaD09PS0xJiYoaD11KSx1LWgrMT09PWMpcmV0dXJuIGgqb31lbHNlIGghPT0tMSYmKHUtPXUtaCksaD0tMX1lbHNlIGZvcihyK2M+YSYmKHI9YS1jKSx1PXI7dT49MDt1LS0pe2Zvcih2YXIgbD0hMCxmPTA7ZjxjO2YrKylpZihzKHQsdStmKSE9PXMoZSxmKSl7bD0hMTticmVha31pZihsKXJldHVybiB1fXJldHVybi0xfWZ1bmN0aW9uIHgodCxlLHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGk9dC5sZW5ndGgtcjtuPyhuPU51bWJlcihuKSxuPmkmJihuPWkpKTpuPWk7dmFyIHM9ZS5sZW5ndGg7aWYocyUyIT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtuPnMvMiYmKG49cy8yKTtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgYT1wYXJzZUludChlLnN1YnN0cigyKm8sMiksMTYpO2lmKGlzTmFOKGEpKXJldHVybiBvO3RbcitvXT1hfXJldHVybiBvfWZ1bmN0aW9uIFModCxlLHIsbil7cmV0dXJuIFEoRihlLHQubGVuZ3RoLXIpLHQscixuKX1mdW5jdGlvbiBFKHQsZSxyLG4pe3JldHVybiBRKEcoZSksdCxyLG4pfWZ1bmN0aW9uIFQodCxlLHIsbil7cmV0dXJuIEUodCxlLHIsbil9ZnVuY3Rpb24gQSh0LGUscixuKXtyZXR1cm4gUShYKGUpLHQscixuKX1mdW5jdGlvbiBrKHQsZSxyLG4pe3JldHVybiBRKFcoZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gTCh0LGUscil7cmV0dXJuIDA9PT1lJiZyPT09dC5sZW5ndGg/Wi5mcm9tQnl0ZUFycmF5KHQpOlouZnJvbUJ5dGVBcnJheSh0LnNsaWNlKGUscikpfWZ1bmN0aW9uIHEodCxlLHIpe3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGk9ZTtpPHI7KXt2YXIgcz10W2ldLG89bnVsbCxhPXM+MjM5PzQ6cz4yMjM/MzpzPjE5MT8yOjE7aWYoaSthPD1yKXt2YXIgYyx1LGgsbDtzd2l0Y2goYSl7Y2FzZSAxOnM8MTI4JiYobz1zKTticmVhaztjYXNlIDI6Yz10W2krMV0sMTI4PT09KDE5MiZjKSYmKGw9KDMxJnMpPDw2fDYzJmMsbD4xMjcmJihvPWwpKTticmVhaztjYXNlIDM6Yz10W2krMV0sdT10W2krMl0sMTI4PT09KDE5MiZjKSYmMTI4PT09KDE5MiZ1KSYmKGw9KDE1JnMpPDwxMnwoNjMmYyk8PDZ8NjMmdSxsPjIwNDcmJihsPDU1Mjk2fHxsPjU3MzQzKSYmKG89bCkpO2JyZWFrO2Nhc2UgNDpjPXRbaSsxXSx1PXRbaSsyXSxoPXRbaSszXSwxMjg9PT0oMTkyJmMpJiYxMjg9PT0oMTkyJnUpJiYxMjg9PT0oMTkyJmgpJiYobD0oMTUmcyk8PDE4fCg2MyZjKTw8MTJ8KDYzJnUpPDw2fDYzJmgsbD42NTUzNSYmbDwxMTE0MTEyJiYobz1sKSl9fW51bGw9PT1vPyhvPTY1NTMzLGE9MSk6bz42NTUzNSYmKG8tPTY1NTM2LG4ucHVzaChvPj4+MTAmMTAyM3w1NTI5Niksbz01NjMyMHwxMDIzJm8pLG4ucHVzaChvKSxpKz1hfXJldHVybiBSKG4pfWZ1bmN0aW9uIFIodCl7dmFyIGU9dC5sZW5ndGg7aWYoZTw9dHQpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQpO2Zvcih2YXIgcj0iIixuPTA7bjxlOylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0LnNsaWNlKG4sbis9dHQpKTtyZXR1cm4gcn1mdW5jdGlvbiBDKHQsZSxyKXt2YXIgbj0iIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2Zvcih2YXIgaT1lO2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmdFtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gQih0LGUscil7dmFyIG49IiI7cj1NYXRoLm1pbih0Lmxlbmd0aCxyKTtmb3IodmFyIGk9ZTtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodFtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gRCh0LGUscil7dmFyIG49dC5sZW5ndGg7KCFlfHxlPDApJiYoZT0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBpPSIiLHM9ZTtzPHI7KytzKWkrPVkodFtzXSk7cmV0dXJuIGl9ZnVuY3Rpb24gaih0LGUscil7Zm9yKHZhciBuPXQuc2xpY2UoZSxyKSxpPSIiLHM9MDtzPG4ubGVuZ3RoO3MrPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW3NdKzI1NipuW3MrMV0pO3JldHVybiBpfWZ1bmN0aW9uIE4odCxlLHIpe2lmKHQlMSE9PTB8fHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYodCtlPnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBPKHQsZSxyLG4saSxzKXtpZighby5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYoZT5pfHxlPHMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTSh0LGUscixuKXtlPDAmJihlPTY1NTM1K2UrMSk7Zm9yKHZhciBpPTAscz1NYXRoLm1pbih0Lmxlbmd0aC1yLDIpO2k8czsrK2kpdFtyK2ldPShlJjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gSSh0LGUscixuKXtlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKTtmb3IodmFyIGk9MCxzPU1hdGgubWluKHQubGVuZ3RoLXIsNCk7aTxzOysraSl0W3IraV09ZT4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBQKHQsZSxyLG4saSxzKXtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gVSh0LGUscixuLGkpe3JldHVybiBpfHxQKHQsZSxyLDQsMy40MDI4MjM0NjYzODUyODg2ZTM4LC0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgpLEsud3JpdGUodCxlLHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gSCh0LGUscixuLGkpe3JldHVybiBpfHxQKHQsZSxyLDgsMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCwtMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCksSy53cml0ZSh0LGUscixuLDUyLDgpLHIrOH1mdW5jdGlvbiBWKHQpe2lmKHQ9eih0KS5yZXBsYWNlKGV0LCIiKSx0Lmxlbmd0aDwyKXJldHVybiIiO2Zvcig7dC5sZW5ndGglNCE9PTA7KXQrPSI9IjtyZXR1cm4gdH1mdW5jdGlvbiB6KHQpe3JldHVybiB0LnRyaW0/dC50cmltKCk6dC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gWSh0KXtyZXR1cm4gdDwxNj8iMCIrdC50b1N0cmluZygxNik6dC50b1N0cmluZygxNil9ZnVuY3Rpb24gRih0LGUpe2U9ZXx8MS8wO2Zvcih2YXIgcixuPXQubGVuZ3RoLGk9bnVsbCxzPVtdLG89MDtvPG47KytvKXtpZihyPXQuY2hhckNvZGVBdChvKSxyPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KGUtPTMpPi0xJiZzLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PW4peyhlLT0zKT4tMSYmcy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KGUtPTMpPi0xJiZzLnB1c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPShpLTU1Mjk2PDwxMHxyLTU2MzIwKSs2NTUzNn1lbHNlIGkmJihlLT0zKT4tMSYmcy5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKChlLT0xKTwwKWJyZWFrO3MucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKGUtPTIpPDApYnJlYWs7cy5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKChlLT0zKTwwKWJyZWFrO3MucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKGUtPTQpPDApYnJlYWs7cy5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gc31mdW5jdGlvbiBHKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKDI1NSZ0LmNoYXJDb2RlQXQocikpO3JldHVybiBlfWZ1bmN0aW9uIFcodCxlKXtmb3IodmFyIHIsbixpLHM9W10sbz0wO288dC5sZW5ndGgmJiEoKGUtPTIpPDApOysrbylyPXQuY2hhckNvZGVBdChvKSxuPXI+PjgsaT1yJTI1NixzLnB1c2goaSkscy5wdXNoKG4pO3JldHVybiBzfWZ1bmN0aW9uIFgodCl7cmV0dXJuIFoudG9CeXRlQXJyYXkoVih0KSl9ZnVuY3Rpb24gUSh0LGUscixuKXtmb3IodmFyIGk9MDtpPG4mJiEoaStyPj1lLmxlbmd0aHx8aT49dC5sZW5ndGgpOysraSllW2krcl09dFtpXTtyZXR1cm4gaX1mdW5jdGlvbiBKKHQpe3JldHVybiB0IT09dH12YXIgWj10KCJiYXNlNjQtanMiKSxLPXQoImllZWU3NTQiKSwkPXQoImlzYXJyYXkiKTtyLkJ1ZmZlcj1vLHIuU2xvd0J1ZmZlcj1fLHIuSU5TUEVDVF9NQVhfQllURVM9NTAsby5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMCE9PWUuVFlQRURfQVJSQVlfU1VQUE9SVD9lLlRZUEVEX0FSUkFZX1NVUFBPUlQ6bigpLHIua01heExlbmd0aD1pKCksby5wb29sU2l6ZT04MTkyLG8uX2F1Z21lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19fPW8ucHJvdG90eXBlLHR9LG8uZnJvbT1mdW5jdGlvbih0LGUscil7cmV0dXJuIGEobnVsbCx0LGUscil9LG8uVFlQRURfQVJSQVlfU1VQUE9SVCYmKG8ucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxvLl9fcHJvdG9fXz1VaW50OEFycmF5LCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuc3BlY2llcyYmb1tTeW1ib2wuc3BlY2llc109PT1vJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobyxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25maWd1cmFibGU6ITB9KSksby5hbGxvYz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHUobnVsbCx0LGUscil9LG8uYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7cmV0dXJuIGgobnVsbCx0KX0sby5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIGgobnVsbCx0KX0sby5pc0J1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXR8fCF0Ll9pc0J1ZmZlcil9LG8uY29tcGFyZT1mdW5jdGlvbih0LGUpe2lmKCFvLmlzQnVmZmVyKHQpfHwhby5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYodD09PWUpcmV0dXJuIDA7Zm9yKHZhciByPXQubGVuZ3RoLG49ZS5sZW5ndGgsaT0wLHM9TWF0aC5taW4ocixuKTtpPHM7KytpKWlmKHRbaV0hPT1lW2ldKXtyPXRbaV0sbj1lW2ldO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sby5pc0VuY29kaW5nPWZ1bmN0aW9uKHQpe3N3aXRjaChTdHJpbmcodCkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxvLmNvbmNhdD1mdW5jdGlvbih0LGUpe2lmKCEkKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIG8uYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09ZSlmb3IoZT0wLHI9MDtyPHQubGVuZ3RoOysrcillKz10W3JdLmxlbmd0aDt2YXIgbj1vLmFsbG9jVW5zYWZlKGUpLGk9MDtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKXt2YXIgcz10W3JdO2lmKCFvLmlzQnVmZmVyKHMpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtzLmNvcHkobixpKSxpKz1zLmxlbmd0aH1yZXR1cm4gbn0sby5ieXRlTGVuZ3RoPW0sby5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLG8ucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciB0PXRoaXMubGVuZ3RoO2lmKHQlMiE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciBlPTA7ZTx0O2UrPTIpeSh0aGlzLGUsZSsxKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU0IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIGU9MDtlPHQ7ZSs9NCl5KHRoaXMsZSxlKzMpLHkodGhpcyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU4IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIGU9MDtlPHQ7ZSs9OCl5KHRoaXMsZSxlKzcpLHkodGhpcyxlKzEsZSs2KSx5KHRoaXMsZSsyLGUrNSkseSh0aGlzLGUrMyxlKzQpO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciB0PTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10PyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP3EodGhpcywwLHQpOmIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7aWYoIW8uaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09dHx8MD09PW8uY29tcGFyZSh0aGlzLHQpfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9IiIsZT1yLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0aGlzLmxlbmd0aD4wJiYodD10aGlzLnRvU3RyaW5nKCJoZXgiLDAsZSkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPmUmJih0Kz0iIC4uLiAiKSksIjxCdWZmZXIgIit0KyI+In0sby5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LGUscixuLGkpe2lmKCFvLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1yJiYocj10P3QubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSxlPDB8fHI+dC5sZW5ndGh8fG48MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49aSYmZT49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKGU+PXIpcmV0dXJuIDE7aWYoZT4+Pj0wLHI+Pj49MCxuPj4+PTAsaT4+Pj0wLHRoaXM9PT10KXJldHVybiAwO2Zvcih2YXIgcz1pLW4sYT1yLWUsYz1NYXRoLm1pbihzLGEpLHU9dGhpcy5zbGljZShuLGkpLGg9dC5zbGljZShlLHIpLGw9MDtsPGM7KytsKWlmKHVbbF0hPT1oW2xdKXtzPXVbbF0sYT1oW2xdO2JyZWFrfXJldHVybiBzPGE/LTE6YTxzPzE6MH0sby5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmluZGV4T2YodCxlLHIpIT09LTF9LG8ucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2KHRoaXMsdCxlLHIsITApfSxvLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHYodGhpcyx0LGUsciwhMSl9LG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PWUpbj0idXRmOCIscj10aGlzLmxlbmd0aCxlPTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIGUpbj1lLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2V7aWYoIWlzRmluaXRlKGUpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtlPTB8ZSxpc0Zpbml0ZShyKT8ocj0wfHIsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGk9dGhpcy5sZW5ndGgtZTtpZigodm9pZCAwPT09cnx8cj5pKSYmKHI9aSksdC5sZW5ndGg+MCYmKHI8MHx8ZTwwKXx8ZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgcz0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIHgodGhpcyx0LGUscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gUyh0aGlzLHQsZSxyKTtjYXNlImFzY2lpIjpyZXR1cm4gRSh0aGlzLHQsZSxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBUKHRoaXMsdCxlLHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gQSh0aGlzLHQsZSxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIGsodGhpcyx0LGUscik7ZGVmYXVsdDppZihzKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxzPSEwfX0sby5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgdHQ9NDA5NjtvLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoO3Q9fn50LGU9dm9pZCAwPT09ZT9yOn5+ZSx0PDA/KHQrPXIsdDwwJiYodD0wKSk6dD5yJiYodD1yKSxlPDA/KGUrPXIsZTwwJiYoZT0wKSk6ZT5yJiYoZT1yKSxlPHQmJihlPXQpO3ZhciBuO2lmKG8uVFlQRURfQVJSQVlfU1VQUE9SVCluPXRoaXMuc3ViYXJyYXkodCxlKSxuLl9fcHJvdG9fXz1vLnByb3RvdHlwZTtlbHNle3ZhciBpPWUtdDtuPW5ldyBvKGksKHZvaWQgMCkpO2Zvcih2YXIgcz0wO3M8aTsrK3MpbltzXT10aGlzW3MrdF19cmV0dXJuIG59LG8ucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q9MHx0LGU9MHxlLHJ8fE4odCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1t0XSxpPTEscz0wOysrczxlJiYoaSo9MjU2KTspbis9dGhpc1t0K3NdKmk7cmV0dXJuIG59LG8ucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24odCxlLHIpe3Q9MHx0LGU9MHxlLHJ8fE4odCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1t0Ky0tZV0saT0xO2U+MCYmKGkqPTI1Nik7KW4rPXRoaXNbdCstLWVdKmk7cmV0dXJuIG59LG8ucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxOKHQsMSx0aGlzLmxlbmd0aCksdGhpc1t0XX0sby5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fE4odCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OH0sby5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fE4odCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdPDw4fHRoaXNbdCsxXX0sby5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fE4odCw0LHRoaXMubGVuZ3RoKSwodGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJdPDwxNikrMTY3NzcyMTYqdGhpc1t0KzNdfSxvLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Tih0LDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbdF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXSl9LG8ucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbih0LGUscil7dD0wfHQsZT0wfGUscnx8Tih0LGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW3RdLGk9MSxzPTA7KytzPGUmJihpKj0yNTYpOyluKz10aGlzW3Qrc10qaTtyZXR1cm4gaSo9MTI4LG4+PWkmJihuLT1NYXRoLnBvdygyLDgqZSkpLG59LG8ucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbih0LGUscil7dD0wfHQsZT0wfGUscnx8Tih0LGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj1lLGk9MSxzPXRoaXNbdCstLW5dO24+MCYmKGkqPTI1Nik7KXMrPXRoaXNbdCstLW5dKmk7cmV0dXJuIGkqPTEyOCxzPj1pJiYocy09TWF0aC5wb3coMiw4KmUpKSxzfSxvLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxOKHQsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbdF0/KDI1NS10aGlzW3RdKzEpKi0xOnRoaXNbdF19LG8ucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKHQsZSl7ZXx8Tih0LDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbdF18dGhpc1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxvLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe2V8fE4odCwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW3QrMV18dGhpc1t0XTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sby5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Tih0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTZ8dGhpc1t0KzNdPDwyNH0sby5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Tih0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDI0fHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXX0sby5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Tih0LDQsdGhpcy5sZW5ndGgpLEsucmVhZCh0aGlzLHQsITAsMjMsNCl9LG8ucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fE4odCw0LHRoaXMubGVuZ3RoKSxLLnJlYWQodGhpcyx0LCExLDIzLDQpfSxvLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Tih0LDgsdGhpcy5sZW5ndGgpLEsucmVhZCh0aGlzLHQsITAsNTIsOCl9LG8ucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxOKHQsOCx0aGlzLmxlbmd0aCksSy5yZWFkKHRoaXMsdCwhMSw1Miw4KX0sby5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24odCxlLHIsbil7aWYodD0rdCxlPTB8ZSxyPTB8ciwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnIpLTE7Tyh0aGlzLHQsZSxyLGksMCl9dmFyIHM9MSxvPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KytvPHImJihzKj0yNTYpOyl0aGlzW2Urb109dC9zJjI1NTtyZXR1cm4gZStyfSxvLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU9MHxlLHI9MHxyLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqciktMTtPKHRoaXMsdCxlLHIsaSwwKX12YXIgcz1yLTEsbz0xO2Zvcih0aGlzW2Urc109MjU1JnQ7LS1zPj0wJiYobyo9MjU2KTspdGhpc1tlK3NdPXQvbyYyNTU7cmV0dXJuIGUrcn0sby5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSwxLDI1NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlR8fCh0PU1hdGguZmxvb3IodCkpLHRoaXNbZV09MjU1JnQsZSsxfSxvLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDIsNjU1MzUsMCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCk6TSh0aGlzLHQsZSwhMCksZSsyfSxvLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDIsNjU1MzUsMCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCk6TSh0aGlzLHQsZSwhMSksZSsyfSxvLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCk6SSh0aGlzLHQsZSwhMCksZSs0fSxvLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDQsNDI5NDk2NzI5NSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbZV09dD4+PjI0LHRoaXNbZSsxXT10Pj4+MTYsdGhpc1tlKzJdPXQ+Pj44LHRoaXNbZSszXT0yNTUmdCk6SSh0aGlzLHQsZSwhMSksZSs0fSxvLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT0wfGUsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyLTEpO08odGhpcyx0LGUscixpLTEsLWkpfXZhciBzPTAsbz0xLGE9MDtmb3IodGhpc1tlXT0yNTUmdDsrK3M8ciYmKG8qPTI1Nik7KXQ8MCYmMD09PWEmJjAhPT10aGlzW2Urcy0xXSYmKGE9MSksdGhpc1tlK3NdPSh0L28+PjApLWEmMjU1O3JldHVybiBlK3J9LG8ucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24odCxlLHIsbil7aWYodD0rdCxlPTB8ZSwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7Tyh0aGlzLHQsZSxyLGktMSwtaSl9dmFyIHM9ci0xLG89MSxhPTA7Zm9yKHRoaXNbZStzXT0yNTUmdDstLXM+PTAmJihvKj0yNTYpOyl0PDAmJjA9PT1hJiYwIT09dGhpc1tlK3MrMV0mJihhPTEpLHRoaXNbZStzXT0odC9vPj4wKS1hJjI1NTtyZXR1cm4gZStyfSxvLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU9MHxlLHJ8fE8odGhpcyx0LGUsMSwxMjcsLTEyOCksby5UWVBFRF9BUlJBWV9TVVBQT1JUfHwodD1NYXRoLmZsb29yKHQpKSx0PDAmJih0PTI1NSt0KzEpLHRoaXNbZV09MjU1JnQsZSsxfSxvLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU9MHxlLHJ8fE8odGhpcyx0LGUsMiwzMjc2NywtMzI3NjgpLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgpOk0odGhpcyx0LGUsITApLGUrMn0sby5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPTB8ZSxyfHxPKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0KTpNKHRoaXMsdCxlLCExKSxlKzJ9LG8ucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrM109dD4+PjI0KTpJKHRoaXMsdCxlLCEwKSxlKzR9LG8ucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT0wfGUscnx8Tyh0aGlzLHQsZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHQ8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0KTpJKHRoaXMsdCxlLCExKSxlKzR9LG8ucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIFUodGhpcyx0LGUsITAscil9LG8ucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIFUodGhpcyx0LGUsITEscil9LG8ucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBIKHRoaXMsdCxlLCEwLHIpfSxvLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gSCh0aGlzLHQsZSwhMSxyKX0sby5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0LGUscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLGU+PXQubGVuZ3RoJiYoZT10Lmxlbmd0aCksZXx8KGU9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT10Lmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLHQubGVuZ3RoLWU8bi1yJiYobj10Lmxlbmd0aC1lK3IpO3ZhciBpLHM9bi1yO2lmKHRoaXM9PT10JiZyPGUmJmU8bilmb3IoaT1zLTE7aT49MDstLWkpdFtpK2VdPXRoaXNbaStyXTtlbHNlIGlmKHM8MWUzfHwhby5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihpPTA7aTxzOysraSl0W2krZV09dGhpc1tpK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodCx0aGlzLnN1YmFycmF5KHIscitzKSxlKTtyZXR1cm4gc30sby5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbih0LGUscixuKXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZT8obj1lLGU9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PXQubGVuZ3RoKXt2YXIgaT10LmNoYXJDb2RlQXQoMCk7aTwyNTYmJih0PWkpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhby5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT10eXBlb2YgdCYmKHQ9MjU1JnQpO2lmKGU8MHx8dGhpcy5sZW5ndGg8ZXx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9ZSlyZXR1cm4gdGhpcztlPj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLHR8fCh0PTApO3ZhciBzO2lmKCJudW1iZXIiPT10eXBlb2YgdClmb3Iocz1lO3M8cjsrK3MpdGhpc1tzXT10O2Vsc2V7dmFyIGE9by5pc0J1ZmZlcih0KT90OkYobmV3IG8odCxuKS50b1N0cmluZygpKSxjPWEubGVuZ3RoO2ZvcihzPTA7czxyLWU7KytzKXRoaXNbcytlXT1hW3MlY119cmV0dXJuIHRoaXN9O3ZhciBldD0vW14rXC8wLTlBLVphLXotX10vZ30pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyJiYXNlNjQtanMiOjIsaWVlZTc1NDozNyxpc2FycmF5OjQwfV0sNjpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3JldHVybiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXkodCk6IltvYmplY3QgQXJyYXldIj09PV8odCl9ZnVuY3Rpb24gbih0KXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIHModCl7cmV0dXJuIG51bGw9PXR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9ZnVuY3Rpb24gYSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR9ZnVuY3Rpb24gYyh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdm9pZCAwPT09dH1mdW5jdGlvbiBoKHQpe3JldHVybiJbb2JqZWN0IFJlZ0V4cF0iPT09Xyh0KX1mdW5jdGlvbiBsKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gZih0KXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1fKHQpfWZ1bmN0aW9uIHAodCl7cmV0dXJuIltvYmplY3QgRXJyb3JdIj09PV8odCl8fHQgaW5zdGFuY2VvZiBFcnJvcn1mdW5jdGlvbiBkKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGw9PT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHR8fCJzdHJpbmciPT10eXBlb2YgdHx8InN5bWJvbCI9PXR5cGVvZiB0fHwidW5kZWZpbmVkIj09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfXIuaXNBcnJheT1lLHIuaXNCb29sZWFuPW4sci5pc051bGw9aSxyLmlzTnVsbE9yVW5kZWZpbmVkPXMsci5pc051bWJlcj1vLHIuaXNTdHJpbmc9YSxyLmlzU3ltYm9sPWMsci5pc1VuZGVmaW5lZD11LHIuaXNSZWdFeHA9aCxyLmlzT2JqZWN0PWwsci5pc0RhdGU9ZixyLmlzRXJyb3I9cCxyLmlzRnVuY3Rpb249ZCxyLmlzUHJpbWl0aXZlPWcsci5pc0J1ZmZlcj10LmlzQnVmZmVyfSkuY2FsbCh0aGlzLHtpc0J1ZmZlcjp0KCIuLi8uLi9pcy1idWZmZXIvaW5kZXguanMiKX0pfSx7Ii4uLy4uL2lzLWJ1ZmZlci9pbmRleC5qcyI6Mzl9XSw3OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe2lmKHQpe3ZhciByLG49IiI7Zm9yKHZhciBpIGluIHQpcj10W2ldLG4mJihuKz0iICIpLG4rPSFyJiZsW2ldP2k6aSsnPSInKyhlLmRlY29kZUVudGl0aWVzP2guZW5jb2RlWE1MKHIpOnIpKyciJztyZXR1cm4gbn19ZnVuY3Rpb24gaSh0LGUpeyJzdmciPT09dC5uYW1lJiYoZT17ZGVjb2RlRW50aXRpZXM6ZS5kZWNvZGVFbnRpdGllcyx4bWxNb2RlOiEwfSk7dmFyIHI9IjwiK3QubmFtZSxpPW4odC5hdHRyaWJzLGUpO3JldHVybiBpJiYocis9IiAiK2kpLCFlLnhtbE1vZGV8fHQuY2hpbGRyZW4mJjAhPT10LmNoaWxkcmVuLmxlbmd0aD8ocis9Ij4iLHQuY2hpbGRyZW4mJihyKz1kKHQuY2hpbGRyZW4sZSkpLHBbdC5uYW1lXSYmIWUueG1sTW9kZXx8KHIrPSI8LyIrdC5uYW1lKyI+IikpOnIrPSIvPiIscn1mdW5jdGlvbiBzKHQpe3JldHVybiI8Iit0LmRhdGErIj4ifWZ1bmN0aW9uIG8odCxlKXt2YXIgcj10LmRhdGF8fCIiO3JldHVybiFlLmRlY29kZUVudGl0aWVzfHx0LnBhcmVudCYmdC5wYXJlbnQubmFtZSBpbiBmfHwocj1oLmVuY29kZVhNTChyKSkscn1mdW5jdGlvbiBhKHQpe3JldHVybiI8IVtDREFUQVsiK3QuY2hpbGRyZW5bMF0uZGF0YSsiXV0+In1mdW5jdGlvbiBjKHQpe3JldHVybiI8IS0tIit0LmRhdGErIi0tPiJ9dmFyIHU9dCgiZG9tZWxlbWVudHR5cGUiKSxoPXQoImVudGl0aWVzIiksbD17X19wcm90b19fOm51bGwsYWxsb3dmdWxsc2NyZWVuOiEwLGFzeW5jOiEwLGF1dG9mb2N1czohMCxhdXRvcGxheTohMCxjaGVja2VkOiEwLGNvbnRyb2xzOiEwLCJkZWZhdWx0IjohMCxkZWZlcjohMCxkaXNhYmxlZDohMCxoaWRkZW46ITAsaXNtYXA6ITAsbG9vcDohMCxtdWx0aXBsZTohMCxtdXRlZDohMCxvcGVuOiEwLHJlYWRvbmx5OiEwLHJlcXVpcmVkOiEwLHJldmVyc2VkOiEwLHNjb3BlZDohMCxzZWFtbGVzczohMCxzZWxlY3RlZDohMCx0eXBlbXVzdG1hdGNoOiEwfSxmPXtfX3Byb3RvX186bnVsbCxzdHlsZTohMCxzY3JpcHQ6ITAseG1wOiEwLGlmcmFtZTohMCxub2VtYmVkOiEwLG5vZnJhbWVzOiEwLHBsYWludGV4dDohMCxub3NjcmlwdDohMH0scD17X19wcm90b19fOm51bGwsYXJlYTohMCxiYXNlOiEwLGJhc2Vmb250OiEwLGJyOiEwLGNvbDohMCxjb21tYW5kOiEwLGVtYmVkOiEwLGZyYW1lOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxpc2luZGV4OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sZD1lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtBcnJheS5pc0FycmF5KHQpfHx0LmNoZWVyaW98fCh0PVt0XSksZT1lfHx7fTtmb3IodmFyIHI9IiIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaD10W25dO3IrPSJyb290Ij09PWgudHlwZT9kKGguY2hpbGRyZW4sZSk6dS5pc1RhZyhoKT9pKGgsZSk6aC50eXBlPT09dS5EaXJlY3RpdmU/cyhoKTpoLnR5cGU9PT11LkNvbW1lbnQ/YyhoKTpoLnR5cGU9PT11LkNEQVRBP2EoaCk6byhoLGUpfXJldHVybiByfX0se2RvbWVsZW1lbnR0eXBlOjgsZW50aXRpZXM6MjB9XSw4OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtUZXh0OiJ0ZXh0IixEaXJlY3RpdmU6ImRpcmVjdGl2ZSIsQ29tbWVudDoiY29tbWVudCIsU2NyaXB0OiJzY3JpcHQiLFN0eWxlOiJzdHlsZSIsVGFnOiJ0YWciLENEQVRBOiJjZGF0YSIsaXNUYWc6ZnVuY3Rpb24odCl7cmV0dXJuInRhZyI9PT10LnR5cGV8fCJzY3JpcHQiPT09dC50eXBlfHwic3R5bGUiPT09dC50eXBlfX19LHt9XSw5OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtUZXh0OiJ0ZXh0IixEaXJlY3RpdmU6ImRpcmVjdGl2ZSIsQ29tbWVudDoiY29tbWVudCIsU2NyaXB0OiJzY3JpcHQiLFN0eWxlOiJzdHlsZSIsVGFnOiJ0YWciLENEQVRBOiJjZGF0YSIsRG9jdHlwZToiZG9jdHlwZSIsaXNUYWc6ZnVuY3Rpb24odCl7cmV0dXJuInRhZyI9PT10LnR5cGV8fCJzY3JpcHQiPT09dC50eXBlfHwic3R5bGUiPT09dC50eXBlfX19LHt9XSwxMDpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpeyJvYmplY3QiPT10eXBlb2YgdD8ocj1lLGU9dCx0PW51bGwpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9YyksdGhpcy5fY2FsbGJhY2s9dCx0aGlzLl9vcHRpb25zPWV8fGMsdGhpcy5fZWxlbWVudENCPXIsdGhpcy5kb209W10sdGhpcy5fZG9uZT0hMSx0aGlzLl90YWdTdGFjaz1bXSx0aGlzLl9wYXJzZXI9dGhpcy5fcGFyc2VyfHxudWxsfXZhciBpPXQoImRvbWVsZW1lbnR0eXBlIikscz0vXHMrL2csbz10KCIuL2xpYi9ub2RlIiksYT10KCIuL2xpYi9lbGVtZW50IiksYz17bm9ybWFsaXplV2hpdGVzcGFjZTohMSx3aXRoU3RhcnRJbmRpY2VzOiExfTtuLnByb3RvdHlwZS5vbnBhcnNlcmluaXQ9ZnVuY3Rpb24odCl7dGhpcy5fcGFyc2VyPXR9LG4ucHJvdG90eXBlLm9ucmVzZXQ9ZnVuY3Rpb24oKXtuLmNhbGwodGhpcyx0aGlzLl9jYWxsYmFjayx0aGlzLl9vcHRpb25zLHRoaXMuX2VsZW1lbnRDQil9LG4ucHJvdG90eXBlLm9uZW5kPWZ1bmN0aW9uKCl7dGhpcy5fZG9uZXx8KHRoaXMuX2RvbmU9ITAsdGhpcy5fcGFyc2VyPW51bGwsdGhpcy5faGFuZGxlQ2FsbGJhY2sobnVsbCkpfSxuLnByb3RvdHlwZS5faGFuZGxlQ2FsbGJhY2s9bi5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fY2FsbGJhY2spdGhpcy5fY2FsbGJhY2sodCx0aGlzLmRvbSk7ZWxzZSBpZih0KXRocm93IHR9LG4ucHJvdG90eXBlLm9uY2xvc2V0YWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90YWdTdGFjay5wb3AoKTt0aGlzLl9lbGVtZW50Q0ImJnRoaXMuX2VsZW1lbnRDQih0KX0sbi5wcm90b3R5cGUuX2FkZERvbUVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGFnU3RhY2tbdGhpcy5fdGFnU3RhY2subGVuZ3RoLTFdLHI9ZT9lLmNoaWxkcmVuOnRoaXMuZG9tLG49cltyLmxlbmd0aC0xXTsKK3QubmV4dD1udWxsLHRoaXMuX29wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcyYmKHQuc3RhcnRJbmRleD10aGlzLl9wYXJzZXIuc3RhcnRJbmRleCksdGhpcy5fb3B0aW9ucy53aXRoRG9tTHZsMSYmKHQuX19wcm90b19fPSJ0YWciPT09dC50eXBlP2E6byksbj8odC5wcmV2PW4sbi5uZXh0PXQpOnQucHJldj1udWxsLHIucHVzaCh0KSx0LnBhcmVudD1lfHxudWxsfSxuLnByb3RvdHlwZS5vbm9wZW50YWc9ZnVuY3Rpb24odCxlKXt2YXIgcj17dHlwZToic2NyaXB0Ij09PXQ/aS5TY3JpcHQ6InN0eWxlIj09PXQ/aS5TdHlsZTppLlRhZyxuYW1lOnQsYXR0cmliczplLGNoaWxkcmVuOltdfTt0aGlzLl9hZGREb21FbGVtZW50KHIpLHRoaXMuX3RhZ1N0YWNrLnB1c2gocil9LG4ucHJvdG90eXBlLm9udGV4dD1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMuX29wdGlvbnMubm9ybWFsaXplV2hpdGVzcGFjZXx8dGhpcy5fb3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlOyF0aGlzLl90YWdTdGFjay5sZW5ndGgmJnRoaXMuZG9tLmxlbmd0aCYmKGU9dGhpcy5kb21bdGhpcy5kb20ubGVuZ3RoLTFdKS50eXBlPT09aS5UZXh0P3I/ZS5kYXRhPShlLmRhdGErdCkucmVwbGFjZShzLCIgIik6ZS5kYXRhKz10OnRoaXMuX3RhZ1N0YWNrLmxlbmd0aCYmKGU9dGhpcy5fdGFnU3RhY2tbdGhpcy5fdGFnU3RhY2subGVuZ3RoLTFdKSYmKGU9ZS5jaGlsZHJlbltlLmNoaWxkcmVuLmxlbmd0aC0xXSkmJmUudHlwZT09PWkuVGV4dD9yP2UuZGF0YT0oZS5kYXRhK3QpLnJlcGxhY2UocywiICIpOmUuZGF0YSs9dDoociYmKHQ9dC5yZXBsYWNlKHMsIiAiKSksdGhpcy5fYWRkRG9tRWxlbWVudCh7ZGF0YTp0LHR5cGU6aS5UZXh0fSkpfSxuLnByb3RvdHlwZS5vbmNvbW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGFnU3RhY2tbdGhpcy5fdGFnU3RhY2subGVuZ3RoLTFdO2lmKGUmJmUudHlwZT09PWkuQ29tbWVudClyZXR1cm4gdm9pZChlLmRhdGErPXQpO3ZhciByPXtkYXRhOnQsdHlwZTppLkNvbW1lbnR9O3RoaXMuX2FkZERvbUVsZW1lbnQociksdGhpcy5fdGFnU3RhY2sucHVzaChyKX0sbi5wcm90b3R5cGUub25jZGF0YXN0YXJ0PWZ1bmN0aW9uKCl7dmFyIHQ9e2NoaWxkcmVuOlt7ZGF0YToiIix0eXBlOmkuVGV4dH1dLHR5cGU6aS5DREFUQX07dGhpcy5fYWRkRG9tRWxlbWVudCh0KSx0aGlzLl90YWdTdGFjay5wdXNoKHQpfSxuLnByb3RvdHlwZS5vbmNvbW1lbnRlbmQ9bi5wcm90b3R5cGUub25jZGF0YWVuZD1mdW5jdGlvbigpe3RoaXMuX3RhZ1N0YWNrLnBvcCgpfSxuLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMuX2FkZERvbUVsZW1lbnQoe25hbWU6dCxkYXRhOmUsdHlwZTppLkRpcmVjdGl2ZX0pfSxlLmV4cG9ydHM9bn0seyIuL2xpYi9lbGVtZW50IjoxMSwiLi9saWIvbm9kZSI6MTIsZG9tZWxlbWVudHR5cGU6OX1dLDExOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9ub2RlIiksaT1lLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZShuKSxzPXt0YWdOYW1lOiJuYW1lIn07T2JqZWN0LmtleXMocykuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgZT1zW3RdO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHQse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW2VdfHxudWxsfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbZV09dCx0fX0pfSl9LHsiLi9ub2RlIjoxMn1dLDEyOltmdW5jdGlvbih0LGUscil7dmFyIG49ZS5leHBvcnRzPXtnZXQgZmlyc3RDaGlsZCgpe3ZhciB0PXRoaXMuY2hpbGRyZW47cmV0dXJuIHQmJnRbMF18fG51bGx9LGdldCBsYXN0Q2hpbGQoKXt2YXIgdD10aGlzLmNoaWxkcmVuO3JldHVybiB0JiZ0W3QubGVuZ3RoLTFdfHxudWxsfSxnZXQgbm9kZVR5cGUoKXtyZXR1cm4gc1t0aGlzLnR5cGVdfHxzLmVsZW1lbnR9fSxpPXt0YWdOYW1lOiJuYW1lIixjaGlsZE5vZGVzOiJjaGlsZHJlbiIscGFyZW50Tm9kZToicGFyZW50IixwcmV2aW91c1NpYmxpbmc6InByZXYiLG5leHRTaWJsaW5nOiJuZXh0Iixub2RlVmFsdWU6ImRhdGEifSxzPXtlbGVtZW50OjEsdGV4dDozLGNkYXRhOjQsY29tbWVudDo4fTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWlbdF07T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbZV18fG51bGx9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tlXT10LHR9fSl9KX0se31dLDEzOltmdW5jdGlvbih0LGUscil7dmFyIG49ZS5leHBvcnRzO1t0KCIuL2xpYi9zdHJpbmdpZnkiKSx0KCIuL2xpYi90cmF2ZXJzYWwiKSx0KCIuL2xpYi9tYW5pcHVsYXRpb24iKSx0KCIuL2xpYi9xdWVyeWluZyIpLHQoIi4vbGliL2xlZ2FjeSIpLHQoIi4vbGliL2hlbHBlcnMiKV0uZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZV09dFtlXS5iaW5kKG4pfSl9KX0seyIuL2xpYi9oZWxwZXJzIjoxNCwiLi9saWIvbGVnYWN5IjoxNSwiLi9saWIvbWFuaXB1bGF0aW9uIjoxNiwiLi9saWIvcXVlcnlpbmciOjE3LCIuL2xpYi9zdHJpbmdpZnkiOjE4LCIuL2xpYi90cmF2ZXJzYWwiOjE5fV0sMTQ6W2Z1bmN0aW9uKHQsZSxyKXtyLnJlbW92ZVN1YnNldHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixpPXQubGVuZ3RoOy0taT4tMTspe2ZvcihlPXI9dFtpXSx0W2ldPW51bGwsbj0hMDtyOyl7aWYodC5pbmRleE9mKHIpPi0xKXtuPSExLHQuc3BsaWNlKGksMSk7YnJlYWt9cj1yLnBhcmVudH1uJiYodFtpXT1lKX1yZXR1cm4gdH07dmFyIG49e0RJU0NPTk5FQ1RFRDoxLFBSRUNFRElORzoyLEZPTExPV0lORzo0LENPTlRBSU5TOjgsQ09OVEFJTkVEX0JZOjE2fSxpPXIuY29tcGFyZURvY3VtZW50UG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgcixpLHMsbyxhLGMsdT1bXSxoPVtdO2lmKHQ9PT1lKXJldHVybiAwO2ZvcihyPXQ7cjspdS51bnNoaWZ0KHIpLHI9ci5wYXJlbnQ7Zm9yKHI9ZTtyOyloLnVuc2hpZnQocikscj1yLnBhcmVudDtmb3IoYz0wO3VbY109PT1oW2NdOyljKys7cmV0dXJuIDA9PT1jP24uRElTQ09OTkVDVEVEOihpPXVbYy0xXSxzPWkuY2hpbGRyZW4sbz11W2NdLGE9aFtjXSxzLmluZGV4T2Yobyk+cy5pbmRleE9mKGEpP2k9PT1lP24uRk9MTE9XSU5HfG4uQ09OVEFJTkVEX0JZOm4uRk9MTE9XSU5HOmk9PT10P24uUFJFQ0VESU5HfG4uQ09OVEFJTlM6bi5QUkVDRURJTkcpfTtyLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24odCl7dmFyIGUscixzPXQubGVuZ3RoO2Zvcih0PXQuc2xpY2UoKTstLXM+LTE7KWU9dFtzXSxyPXQuaW5kZXhPZihlKSxyPi0xJiZyPHMmJnQuc3BsaWNlKHMsMSk7cmV0dXJuIHQuc29ydChmdW5jdGlvbih0LGUpe3ZhciByPWkodCxlKTtyZXR1cm4gciZuLlBSRUNFRElORz8tMTpyJm4uRk9MTE9XSU5HPzE6MH0pLHR9fSx7fV0sMTU6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24ocil7cmV0dXJuIHIuYXR0cmlicyYmZShyLmF0dHJpYnNbdF0pfTpmdW5jdGlvbihyKXtyZXR1cm4gci5hdHRyaWJzJiZyLmF0dHJpYnNbdF09PT1lfX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0KHIpfHxlKHIpfX12YXIgcz10KCJkb21lbGVtZW50dHlwZSIpLG89ci5pc1RhZz1zLmlzVGFnO3IudGVzdEVsZW1lbnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXtpZigidGFnX25hbWUiPT09cil7aWYoIW8oZSl8fCF0LnRhZ19uYW1lKGUubmFtZSkpcmV0dXJuITF9ZWxzZSBpZigidGFnX3R5cGUiPT09cil7aWYoIXQudGFnX3R5cGUoZS50eXBlKSlyZXR1cm4hMX1lbHNlIGlmKCJ0YWdfY29udGFpbnMiPT09cil7aWYobyhlKXx8IXQudGFnX2NvbnRhaW5zKGUuZGF0YSkpcmV0dXJuITF9ZWxzZSBpZighZS5hdHRyaWJzfHwhdFtyXShlLmF0dHJpYnNbcl0pKXJldHVybiExfWVsc2U7cmV0dXJuITB9O3ZhciBhPXt0YWdfbmFtZTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKSYmdChlLm5hbWUpfToiKiI9PT10P286ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmUubmFtZT09PXR9fSx0YWdfdHlwZTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlKXtyZXR1cm4gdChlLnR5cGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09dH19LHRhZ19jb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9mdW5jdGlvbihlKXtyZXR1cm4hbyhlKSYmdChlLmRhdGEpfTpmdW5jdGlvbihlKXtyZXR1cm4hbyhlKSYmZS5kYXRhPT09dH19fTtyLmdldEVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxyLHMpe3ZhciBvPU9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXt2YXIgcj10W2VdO3JldHVybiBlIGluIGE/YVtlXShyKTpuKGUscil9KTtyZXR1cm4gMD09PW8ubGVuZ3RoP1tdOnRoaXMuZmlsdGVyKG8ucmVkdWNlKGkpLGUscixzKX0sci5nZXRFbGVtZW50QnlJZD1mdW5jdGlvbih0LGUscil7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSksdGhpcy5maW5kT25lKG4oImlkIix0KSxlLHIhPT0hMSl9LHIuZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRoaXMuZmlsdGVyKGEudGFnX25hbWUodCksZSxyLG4pfSxyLmdldEVsZW1lbnRzQnlUYWdUeXBlPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB0aGlzLmZpbHRlcihhLnRhZ190eXBlKHQpLGUscixuKX19LHtkb21lbGVtZW50dHlwZTo5fV0sMTY6W2Z1bmN0aW9uKHQsZSxyKXtyLnJlbW92ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7aWYodC5wcmV2JiYodC5wcmV2Lm5leHQ9dC5uZXh0KSx0Lm5leHQmJih0Lm5leHQucHJldj10LnByZXYpLHQucGFyZW50KXt2YXIgZT10LnBhcmVudC5jaGlsZHJlbjtlLnNwbGljZShlLmxhc3RJbmRleE9mKHQpLDEpfX0sci5yZXBsYWNlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciByPWUucHJldj10LnByZXY7ciYmKHIubmV4dD1lKTt2YXIgbj1lLm5leHQ9dC5uZXh0O24mJihuLnByZXY9ZSk7dmFyIGk9ZS5wYXJlbnQ9dC5wYXJlbnQ7aWYoaSl7dmFyIHM9aS5jaGlsZHJlbjtzW3MubGFzdEluZGV4T2YodCldPWV9fSxyLmFwcGVuZENoaWxkPWZ1bmN0aW9uKHQsZSl7aWYoZS5wYXJlbnQ9dCwxIT09dC5jaGlsZHJlbi5wdXNoKGUpKXt2YXIgcj10LmNoaWxkcmVuW3QuY2hpbGRyZW4ubGVuZ3RoLTJdO3IubmV4dD1lLGUucHJldj1yLGUubmV4dD1udWxsfX0sci5hcHBlbmQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnBhcmVudCxuPXQubmV4dDtpZihlLm5leHQ9bixlLnByZXY9dCx0Lm5leHQ9ZSxlLnBhcmVudD1yLG4pe2lmKG4ucHJldj1lLHIpe3ZhciBpPXIuY2hpbGRyZW47aS5zcGxpY2UoaS5sYXN0SW5kZXhPZihuKSwwLGUpfX1lbHNlIHImJnIuY2hpbGRyZW4ucHVzaChlKX0sci5wcmVwZW5kPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5wYXJlbnQ7aWYocil7dmFyIG49ci5jaGlsZHJlbjtuLnNwbGljZShuLmxhc3RJbmRleE9mKHQpLDAsZSl9dC5wcmV2JiYodC5wcmV2Lm5leHQ9ZSksZS5wYXJlbnQ9cixlLnByZXY9dC5wcmV2LGUubmV4dD10LHQucHJldj1lfX0se31dLDE3OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscixuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8KGU9W2VdKSwibnVtYmVyIj09dHlwZW9mIG4mJmlzRmluaXRlKG4pfHwobj0xLzApLGkodCxlLHIhPT0hMSxuKX1mdW5jdGlvbiBpKHQsZSxyLG4pe2Zvcih2YXIgcyxvPVtdLGE9MCxjPWUubGVuZ3RoO2E8YyYmISh0KGVbYV0pJiYoby5wdXNoKGVbYV0pLC0tbjw9MCkpJiYocz1lW2FdLmNoaWxkcmVuLCEociYmcyYmcy5sZW5ndGg+MCYmKHM9aSh0LHMscixuKSxvPW8uY29uY2F0KHMpLG4tPXMubGVuZ3RoLG48PTApKSk7YSsrKTtyZXR1cm4gb31mdW5jdGlvbiBzKHQsZSl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlmKHQoZVtyXSkpcmV0dXJuIGVbcl07cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj1udWxsLG49MCxpPWUubGVuZ3RoO248aSYmIXI7bisrKXUoZVtuXSkmJih0KGVbbl0pP3I9ZVtuXTplW25dLmNoaWxkcmVuLmxlbmd0aD4wJiYocj1vKHQsZVtuXS5jaGlsZHJlbikpKTtyZXR1cm4gcn1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlmKHUoZVtyXSkmJih0KGVbcl0pfHxlW3JdLmNoaWxkcmVuLmxlbmd0aD4wJiZhKHQsZVtyXS5jaGlsZHJlbikpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGModCxlKXtmb3IodmFyIHI9W10sbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl1KGVbbl0pJiYodChlW25dKSYmci5wdXNoKGVbbl0pLGVbbl0uY2hpbGRyZW4ubGVuZ3RoPjAmJihyPXIuY29uY2F0KGModCxlW25dLmNoaWxkcmVuKSkpKTtyZXR1cm4gcn12YXIgdT10KCJkb21lbGVtZW50dHlwZSIpLmlzVGFnO2UuZXhwb3J0cz17ZmlsdGVyOm4sZmluZDppLGZpbmRPbmVDaGlsZDpzLGZpbmRPbmU6byxleGlzdHNPbmU6YSxmaW5kQWxsOmN9fSx7ZG9tZWxlbWVudHR5cGU6OX1dLDE4OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3JldHVybiB0LmNoaWxkcmVuP3QuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsZSl9KS5qb2luKCIiKToiIn1mdW5jdGlvbiBpKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGkpLmpvaW4oIiIpOmEodCl8fHQudHlwZT09PXMuQ0RBVEE/aSh0LmNoaWxkcmVuKTp0LnR5cGU9PT1zLlRleHQ/dC5kYXRhOiIifXZhciBzPXQoImRvbWVsZW1lbnR0eXBlIiksbz10KCJkb20tc2VyaWFsaXplciIpLGE9cy5pc1RhZztlLmV4cG9ydHM9e2dldElubmVySFRNTDpuLGdldE91dGVySFRNTDpvLGdldFRleHQ6aX19LHsiZG9tLXNlcmlhbGl6ZXIiOjcsZG9tZWxlbWVudHR5cGU6OX1dLDE5OltmdW5jdGlvbih0LGUscil7dmFyIG49ci5nZXRDaGlsZHJlbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZHJlbn0saT1yLmdldFBhcmVudD1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnR9O3IuZ2V0U2libGluZ3M9ZnVuY3Rpb24odCl7dmFyIGU9aSh0KTtyZXR1cm4gZT9uKGUpOlt0XX0sci5nZXRBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmF0dHJpYnMmJnQuYXR0cmlic1tlXX0sci5oYXNBdHRyaWI9ZnVuY3Rpb24odCxlKXtyZXR1cm4hIXQuYXR0cmlicyYmaGFzT3duUHJvcGVydHkuY2FsbCh0LmF0dHJpYnMsZSl9LHIuZ2V0TmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lfX0se31dLDIwOltmdW5jdGlvbih0LGUscil7dmFyIG49dCgiLi9saWIvZW5jb2RlLmpzIiksaT10KCIuL2xpYi9kZWNvZGUuanMiKTtyLmRlY29kZT1mdW5jdGlvbih0LGUpe3JldHVybighZXx8ZTw9MD9pLlhNTDppLkhUTUwpKHQpfSxyLmRlY29kZVN0cmljdD1mdW5jdGlvbih0LGUpe3JldHVybighZXx8ZTw9MD9pLlhNTDppLkhUTUxTdHJpY3QpKHQpfSxyLmVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVybighZXx8ZTw9MD9uLlhNTDpuLkhUTUwpKHQpfSxyLmVuY29kZVhNTD1uLlhNTCxyLmVuY29kZUhUTUw0PXIuZW5jb2RlSFRNTDU9ci5lbmNvZGVIVE1MPW4uSFRNTCxyLmRlY29kZVhNTD1yLmRlY29kZVhNTFN0cmljdD1pLlhNTCxyLmRlY29kZUhUTUw0PXIuZGVjb2RlSFRNTDU9ci5kZWNvZGVIVE1MPWkuSFRNTCxyLmRlY29kZUhUTUw0U3RyaWN0PXIuZGVjb2RlSFRNTDVTdHJpY3Q9ci5kZWNvZGVIVE1MU3RyaWN0PWkuSFRNTFN0cmljdCxyLmVzY2FwZT1uLmVzY2FwZX0seyIuL2xpYi9kZWNvZGUuanMiOjIxLCIuL2xpYi9lbmNvZGUuanMiOjIzfV0sMjE6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe3ZhciBlPU9iamVjdC5rZXlzKHQpLmpvaW4oInwiKSxyPXModCk7ZSs9InwjW3hYXVtcXGRhLWZBLUZdK3wjXFxkKyI7dmFyIG49bmV3IFJlZ0V4cCgiJig/OiIrZSsiKTsiLCJnIik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShuLHIpfX1mdW5jdGlvbiBpKHQsZSl7cmV0dXJuIHQ8ZT8xOi0xfWZ1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiIjIj09PWUuY2hhckF0KDEpP3UoIlgiPT09ZS5jaGFyQXQoMil8fCJ4Ij09PWUuY2hhckF0KDIpP3BhcnNlSW50KGUuc3Vic3RyKDMpLDE2KTpwYXJzZUludChlLnN1YnN0cigyKSwxMCkpOnRbZS5zbGljZSgxLC0xKV19fXZhciBvPXQoIi4uL21hcHMvZW50aXRpZXMuanNvbiIpLGE9dCgiLi4vbWFwcy9sZWdhY3kuanNvbiIpLGM9dCgiLi4vbWFwcy94bWwuanNvbiIpLHU9dCgiLi9kZWNvZGVfY29kZXBvaW50LmpzIiksaD1uKGMpLGw9bihvKSxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm4iOyIhPT10LnN1YnN0cigtMSkmJih0Kz0iOyIpLGgodCl9Zm9yKHZhciBlPU9iamVjdC5rZXlzKGEpLnNvcnQoaSkscj1PYmplY3Qua2V5cyhvKS5zb3J0KGkpLG49MCxjPTA7bjxyLmxlbmd0aDtuKyspZVtjXT09PXJbbl0/KHJbbl0rPSI7PyIsYysrKTpyW25dKz0iOyI7dmFyIHU9bmV3IFJlZ0V4cCgiJig/OiIrci5qb2luKCJ8IikrInwjW3hYXVtcXGRhLWZBLUZdKzs/fCNcXGQrOz8pIiwiZyIpLGg9cyhvKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHUsdCl9fSgpO2UuZXhwb3J0cz17WE1MOmgsSFRNTDpmLEhUTUxTdHJpY3Q6bH19LHsiLi4vbWFwcy9lbnRpdGllcy5qc29uIjoyNSwiLi4vbWFwcy9sZWdhY3kuanNvbiI6MjYsIi4uL21hcHMveG1sLmpzb24iOjI3LCIuL2RlY29kZV9jb2RlcG9pbnQuanMiOjIyfV0sMjI6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2lmKHQ+PTU1Mjk2JiZ0PD01NzM0M3x8dD4xMTE0MTExKXJldHVybiLvv70iO3QgaW4gaSYmKHQ9aVt0XSk7dmFyIGU9IiI7cmV0dXJuIHQ+NjU1MzUmJih0LT02NTUzNixlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQ+Pj4xMCYxMDIzfDU1Mjk2KSx0PTU2MzIwfDEwMjMmdCksZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KX12YXIgaT10KCIuLi9tYXBzL2RlY29kZS5qc29uIik7ZS5leHBvcnRzPW59LHsiLi4vbWFwcy9kZWNvZGUuanNvbiI6MjR9XSwyMzpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLnNvcnQoKS5yZWR1Y2UoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZVt0W3JdXT0iJiIrcisiOyIsZX0se30pfWZ1bmN0aW9uIGkodCl7dmFyIGU9W10scj1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbih0KXsxPT09dC5sZW5ndGg/ZS5wdXNoKCJcXCIrdCk6ci5wdXNoKHQpfSksci51bnNoaWZ0KCJbIitlLmpvaW4oIiIpKyJdIiksbmV3IFJlZ0V4cChyLmpvaW4oInwiKSwiZyIpfWZ1bmN0aW9uIHModCl7cmV0dXJuIiYjeCIrdC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyI7In1mdW5jdGlvbiBvKHQpe3ZhciBlPXQuY2hhckNvZGVBdCgwKSxyPXQuY2hhckNvZGVBdCgxKSxuPTEwMjQqKGUtNTUyOTYpK3ItNTYzMjArNjU1MzY7cmV0dXJuIiYjeCIrbi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiOyJ9ZnVuY3Rpb24gYSh0LGUpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHRbZV19cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoZSxyKS5yZXBsYWNlKGQsbykucmVwbGFjZShwLHMpfX1mdW5jdGlvbiBjKHQpe3JldHVybiB0LnJlcGxhY2UoZyxzKS5yZXBsYWNlKGQsbykucmVwbGFjZShwLHMpfXZhciB1PW4odCgiLi4vbWFwcy94bWwuanNvbiIpKSxoPWkodSk7ci5YTUw9YSh1LGgpO3ZhciBsPW4odCgiLi4vbWFwcy9lbnRpdGllcy5qc29uIikpLGY9aShsKTtyLkhUTUw9YShsLGYpO3ZhciBwPS9bXlwwLVx4N0ZdL2csZD0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csZz1pKHUpO3IuZXNjYXBlPWN9LHsiLi4vbWFwcy9lbnRpdGllcy5qc29uIjoyNSwiLi4vbWFwcy94bWwuanNvbiI6Mjd9XSwyNDpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz17MDo2NTUzMywxMjg6ODM2NCwxMzA6ODIxOCwxMzE6NDAyLDEzMjo4MjIyLDEzMzo4MjMwLDEzNDo4MjI0LDEzNTo4MjI1LDEzNjo3MTAsMTM3OjgyNDAsMTM4OjM1MiwxMzk6ODI0OSwxNDA6MzM4LDE0MjozODEsMTQ1OjgyMTYsMTQ2OjgyMTcsMTQ3OjgyMjAsMTQ4OjgyMjEsMTQ5OjgyMjYsMTUwOjgyMTEsMTUxOjgyMTIsMTUyOjczMiwxNTM6ODQ4MiwxNTQ6MzUzLDE1NTo4MjUwLDE1NjozMzksMTU4OjM4MiwxNTk6Mzc2fX0se31dLDI1OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXtBYWN1dGU6IsOBIixhYWN1dGU6IsOhIixBYnJldmU6IsSCIixhYnJldmU6IsSDIixhYzoi4oi+IixhY2Q6IuKIvyIsYWNFOiLiiL7MsyIsQWNpcmM6IsOCIixhY2lyYzoiw6IiLGFjdXRlOiLCtCIsQWN5OiLQkCIsYWN5OiLQsCIsQUVsaWc6IsOGIixhZWxpZzoiw6YiLGFmOiLigaEiLEFmcjoi8J2UhCIsYWZyOiLwnZSeIixBZ3JhdmU6IsOAIixhZ3JhdmU6IsOgIixhbGVmc3ltOiLihLUiLGFsZXBoOiLihLUiLEFscGhhOiLOkSIsYWxwaGE6Is6xIixBbWFjcjoixIAiLGFtYWNyOiLEgSIsYW1hbGc6IuKovyIsYW1wOiImIixBTVA6IiYiLGFuZGFuZDoi4qmVIixBbmQ6IuKpkyIsYW5kOiLiiKciLGFuZGQ6IuKpnCIsYW5kc2xvcGU6IuKpmCIsYW5kdjoi4qmaIixhbmc6IuKIoCIsYW5nZToi4qakIixhbmdsZToi4oigIixhbmdtc2RhYToi4qaoIixhbmdtc2RhYjoi4qapIixhbmdtc2RhYzoi4qaqIixhbmdtc2RhZDoi4qarIixhbmdtc2RhZToi4qasIixhbmdtc2RhZjoi4qatIixhbmdtc2RhZzoi4qauIixhbmdtc2RhaDoi4qavIixhbmdtc2Q6IuKIoSIsYW5ncnQ6IuKInyIsYW5ncnR2Yjoi4oq+IixhbmdydHZiZDoi4qadIixhbmdzcGg6IuKIoiIsYW5nc3Q6IsOFIixhbmd6YXJyOiLijbwiLEFvZ29uOiLEhCIsYW9nb246IsSFIixBb3BmOiLwnZS4Iixhb3BmOiLwnZWSIixhcGFjaXI6IuKpryIsYXA6IuKJiCIsYXBFOiLiqbAiLGFwZToi4omKIixhcGlkOiLiiYsiLGFwb3M6IiciLEFwcGx5RnVuY3Rpb246IuKBoSIsYXBwcm94OiLiiYgiLGFwcHJveGVxOiLiiYoiLEFyaW5nOiLDhSIsYXJpbmc6IsOlIixBc2NyOiLwnZKcIixhc2NyOiLwnZK2IixBc3NpZ246IuKJlCIsYXN0OiIqIixhc3ltcDoi4omIIixhc3ltcGVxOiLiiY0iLEF0aWxkZToiw4MiLGF0aWxkZToiw6MiLEF1bWw6IsOEIixhdW1sOiLDpCIsYXdjb25pbnQ6IuKIsyIsYXdpbnQ6IuKokSIsYmFja2Nvbmc6IuKJjCIsYmFja2Vwc2lsb246Is+2IixiYWNrcHJpbWU6IuKAtSIsYmFja3NpbToi4oi9IixiYWNrc2ltZXE6IuKLjSIsQmFja3NsYXNoOiLiiJYiLEJhcnY6IuKrpyIsYmFydmVlOiLiir0iLGJhcndlZDoi4oyFIixCYXJ3ZWQ6IuKMhiIsYmFyd2VkZ2U6IuKMhSIsYmJyazoi4o61IixiYnJrdGJyazoi4o62IixiY29uZzoi4omMIixCY3k6ItCRIixiY3k6ItCxIixiZHF1bzoi4oCeIixiZWNhdXM6IuKItSIsYmVjYXVzZToi4oi1IixCZWNhdXNlOiLiiLUiLGJlbXB0eXY6IuKmsCIsYmVwc2k6Is+2IixiZXJub3U6IuKErCIsQmVybm91bGxpczoi4oSsIixCZXRhOiLOkiIsYmV0YToizrIiLGJldGg6IuKEtiIsYmV0d2Vlbjoi4omsIixCZnI6IvCdlIUiLGJmcjoi8J2UnyIsYmlnY2FwOiLii4IiLGJpZ2NpcmM6IuKXryIsYmlnY3VwOiLii4MiLGJpZ29kb3Q6IuKogCIsYmlnb3BsdXM6IuKogSIsYmlnb3RpbWVzOiLiqIIiLGJpZ3NxY3VwOiLiqIYiLGJpZ3N0YXI6IuKYhSIsYmlndHJpYW5nbGVkb3duOiLilr0iLGJpZ3RyaWFuZ2xldXA6IuKWsyIsYmlndXBsdXM6IuKohCIsYmlndmVlOiLii4EiLGJpZ3dlZGdlOiLii4AiLGJrYXJvdzoi4qSNIixibGFja2xvemVuZ2U6IuKnqyIsYmxhY2tzcXVhcmU6IuKWqiIsYmxhY2t0cmlhbmdsZToi4pa0IixibGFja3RyaWFuZ2xlZG93bjoi4pa+IixibGFja3RyaWFuZ2xlbGVmdDoi4peCIixibGFja3RyaWFuZ2xlcmlnaHQ6IuKWuCIsYmxhbms6IuKQoyIsYmxrMTI6IuKWkiIsYmxrMTQ6IuKWkSIsYmxrMzQ6IuKWkyIsYmxvY2s6IuKWiCIsYm5lOiI94oOlIixibmVxdWl2OiLiiaHig6UiLGJOb3Q6IuKrrSIsYm5vdDoi4oyQIixCb3BmOiLwnZS5Iixib3BmOiLwnZWTIixib3Q6IuKKpSIsYm90dG9tOiLiiqUiLGJvd3RpZToi4ouIIixib3hib3g6IuKniSIsYm94ZGw6IuKUkCIsYm94ZEw6IuKVlSIsYm94RGw6IuKVliIsYm94REw6IuKVlyIsYm94ZHI6IuKUjCIsYm94ZFI6IuKVkiIsYm94RHI6IuKVkyIsYm94RFI6IuKVlCIsYm94aDoi4pSAIixib3hIOiLilZAiLGJveGhkOiLilKwiLGJveEhkOiLilaQiLGJveGhEOiLilaUiLGJveEhEOiLilaYiLGJveGh1OiLilLQiLGJveEh1OiLilaciLGJveGhVOiLilagiLGJveEhVOiLilakiLGJveG1pbnVzOiLiip8iLGJveHBsdXM6IuKKniIsYm94dGltZXM6IuKKoCIsYm94dWw6IuKUmCIsYm94dUw6IuKVmyIsYm94VWw6IuKVnCIsYm94VUw6IuKVnSIsYm94dXI6IuKUlCIsYm94dVI6IuKVmCIsYm94VXI6IuKVmSIsYm94VVI6IuKVmiIsYm94djoi4pSCIixib3hWOiLilZEiLGJveHZoOiLilLwiLGJveHZIOiLilaoiLGJveFZoOiLilasiLGJveFZIOiLilawiLGJveHZsOiLilKQiLGJveHZMOiLilaEiLGJveFZsOiLilaIiLGJveFZMOiLilaMiLGJveHZyOiLilJwiLGJveHZSOiLilZ4iLGJveFZyOiLilZ8iLGJveFZSOiLilaAiLGJwcmltZToi4oC1IixicmV2ZToiy5giLEJyZXZlOiLLmCIsYnJ2YmFyOiLCpiIsYnNjcjoi8J2StyIsQnNjcjoi4oSsIixic2VtaToi4oGPIixic2ltOiLiiL0iLGJzaW1lOiLii40iLGJzb2xiOiLip4UiLGJzb2w6IlxcIixic29saHN1Yjoi4p+IIixidWxsOiLigKIiLGJ1bGxldDoi4oCiIixidW1wOiLiiY4iLGJ1bXBFOiLiqq4iLGJ1bXBlOiLiiY8iLEJ1bXBlcToi4omOIixidW1wZXE6IuKJjyIsQ2FjdXRlOiLEhiIsY2FjdXRlOiLEhyIsY2FwYW5kOiLiqYQiLGNhcGJyY3VwOiLiqYkiLGNhcGNhcDoi4qmLIixjYXA6IuKIqSIsQ2FwOiLii5IiLGNhcGN1cDoi4qmHIixjYXBkb3Q6IuKpgCIsQ2FwaXRhbERpZmZlcmVudGlhbEQ6IuKFhSIsY2Fwczoi4oip77iAIixjYXJldDoi4oGBIixjYXJvbjoiy4ciLENheWxleXM6IuKErSIsY2NhcHM6IuKpjSIsQ2Nhcm9uOiLEjCIsY2Nhcm9uOiLEjSIsQ2NlZGlsOiLDhyIsY2NlZGlsOiLDpyIsQ2NpcmM6IsSIIixjY2lyYzoixIkiLENjb25pbnQ6IuKIsCIsY2N1cHM6IuKpjCIsY2N1cHNzbToi4qmQIixDZG90OiLEiiIsY2RvdDoixIsiLGNlZGlsOiLCuCIsQ2VkaWxsYToiwrgiLGNlbXB0eXY6IuKmsiIsY2VudDoiwqIiLGNlbnRlcmRvdDoiwrciLENlbnRlckRvdDoiwrciLGNmcjoi8J2UoCIsQ2ZyOiLihK0iLENIY3k6ItCnIixjaGN5OiLRhyIsY2hlY2s6IuKckyIsY2hlY2ttYXJrOiLinJMiLENoaToizqciLGNoaToiz4ciLGNpcmM6IsuGIixjaXJjZXE6IuKJlyIsY2lyY2xlYXJyb3dsZWZ0OiLihroiLGNpcmNsZWFycm93cmlnaHQ6IuKGuyIsY2lyY2xlZGFzdDoi4oqbIixjaXJjbGVkY2lyYzoi4oqaIixjaXJjbGVkZGFzaDoi4oqdIixDaXJjbGVEb3Q6IuKKmSIsY2lyY2xlZFI6IsKuIixjaXJjbGVkUzoi4pOIIixDaXJjbGVNaW51czoi4oqWIixDaXJjbGVQbHVzOiLiipUiLENpcmNsZVRpbWVzOiLiipciLGNpcjoi4peLIixjaXJFOiLip4MiLGNpcmU6IuKJlyIsY2lyZm5pbnQ6IuKokCIsY2lybWlkOiLiq68iLGNpcnNjaXI6IuKngiIsQ2xvY2t3aXNlQ29udG91ckludGVncmFsOiLiiLIiLENsb3NlQ3VybHlEb3VibGVRdW90ZToi4oCdIixDbG9zZUN1cmx5UXVvdGU6IuKAmSIsY2x1YnM6IuKZoyIsY2x1YnN1aXQ6IuKZoyIsY29sb246IjoiLENvbG9uOiLiiLciLENvbG9uZToi4qm0Iixjb2xvbmU6IuKJlCIsY29sb25lcToi4omUIixjb21tYToiLCIsY29tbWF0OiJAIixjb21wOiLiiIEiLGNvbXBmbjoi4oiYIixjb21wbGVtZW50OiLiiIEiLGNvbXBsZXhlczoi4oSCIixjb25nOiLiiYUiLGNvbmdkb3Q6IuKprSIsQ29uZ3J1ZW50OiLiiaEiLGNvbmludDoi4oiuIixDb25pbnQ6IuKIryIsQ29udG91ckludGVncmFsOiLiiK4iLGNvcGY6IvCdlZQiLENvcGY6IuKEgiIsY29wcm9kOiLiiJAiLENvcHJvZHVjdDoi4oiQIixjb3B5OiLCqSIsQ09QWToiwqkiLGNvcHlzcjoi4oSXIixDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsOiLiiLMiLGNyYXJyOiLihrUiLGNyb3NzOiLinJciLENyb3NzOiLiqK8iLENzY3I6IvCdkp4iLGNzY3I6IvCdkrgiLGNzdWI6IuKrjyIsY3N1YmU6IuKrkSIsY3N1cDoi4quQIixjc3VwZToi4quSIixjdGRvdDoi4ouvIixjdWRhcnJsOiLipLgiLGN1ZGFycnI6IuKktSIsY3VlcHI6IuKLniIsY3Vlc2M6IuKLnyIsY3VsYXJyOiLihrYiLGN1bGFycnA6IuKkvSIsY3VwYnJjYXA6IuKpiCIsY3VwY2FwOiLiqYYiLEN1cENhcDoi4omNIixjdXA6IuKIqiIsQ3VwOiLii5MiLGN1cGN1cDoi4qmKIixjdXBkb3Q6IuKKjSIsY3Vwb3I6IuKphSIsY3Vwczoi4oiq77iAIixjdXJhcnI6IuKGtyIsY3VyYXJybToi4qS8IixjdXJseWVxcHJlYzoi4oueIixjdXJseWVxc3VjYzoi4oufIixjdXJseXZlZToi4ouOIixjdXJseXdlZGdlOiLii48iLGN1cnJlbjoiwqQiLGN1cnZlYXJyb3dsZWZ0OiLihrYiLGN1cnZlYXJyb3dyaWdodDoi4oa3IixjdXZlZToi4ouOIixjdXdlZDoi4ouPIixjd2NvbmludDoi4oiyIixjd2ludDoi4oixIixjeWxjdHk6IuKMrSIsZGFnZ2VyOiLigKAiLERhZ2dlcjoi4oChIixkYWxldGg6IuKEuCIsZGFycjoi4oaTIixEYXJyOiLihqEiLGRBcnI6IuKHkyIsZGFzaDoi4oCQIixEYXNodjoi4qukIixkYXNodjoi4oqjIixkYmthcm93OiLipI8iLGRibGFjOiLLnSIsRGNhcm9uOiLEjiIsZGNhcm9uOiLEjyIsRGN5OiLQlCIsZGN5OiLQtCIsZGRhZ2dlcjoi4oChIixkZGFycjoi4oeKIixERDoi4oWFIixkZDoi4oWGIixERG90cmFoZDoi4qSRIixkZG90c2VxOiLiqbciLGRlZzoiwrAiLERlbDoi4oiHIixEZWx0YToizpQiLGRlbHRhOiLOtCIsZGVtcHR5djoi4qaxIixkZmlzaHQ6IuKlvyIsRGZyOiLwnZSHIixkZnI6IvCdlKEiLGRIYXI6IuKlpSIsZGhhcmw6IuKHgyIsZGhhcnI6IuKHgiIsRGlhY3JpdGljYWxBY3V0ZToiwrQiLERpYWNyaXRpY2FsRG90OiLLmSIsRGlhY3JpdGljYWxEb3VibGVBY3V0ZToiy50iLERpYWNyaXRpY2FsR3JhdmU6ImAiLERpYWNyaXRpY2FsVGlsZGU6IsucIixkaWFtOiLii4QiLGRpYW1vbmQ6IuKLhCIsRGlhbW9uZDoi4ouEIixkaWFtb25kc3VpdDoi4pmmIixkaWFtczoi4pmmIixkaWU6IsKoIixEaWZmZXJlbnRpYWxEOiLihYYiLGRpZ2FtbWE6Is+dIixkaXNpbjoi4ouyIixkaXY6IsO3IixkaXZpZGU6IsO3IixkaXZpZGVvbnRpbWVzOiLii4ciLGRpdm9ueDoi4ouHIixESmN5OiLQgiIsZGpjeToi0ZIiLGRsY29ybjoi4oyeIixkbGNyb3A6IuKMjSIsZG9sbGFyOiIkIixEb3BmOiLwnZS7Iixkb3BmOiLwnZWVIixEb3Q6IsKoIixkb3Q6IsuZIixEb3REb3Q6IuKDnCIsZG90ZXE6IuKJkCIsZG90ZXFkb3Q6IuKJkSIsRG90RXF1YWw6IuKJkCIsZG90bWludXM6IuKIuCIsZG90cGx1czoi4oiUIixkb3RzcXVhcmU6IuKKoSIsZG91YmxlYmFyd2VkZ2U6IuKMhiIsRG91YmxlQ29udG91ckludGVncmFsOiLiiK8iLERvdWJsZURvdDoiwqgiLERvdWJsZURvd25BcnJvdzoi4oeTIixEb3VibGVMZWZ0QXJyb3c6IuKHkCIsRG91YmxlTGVmdFJpZ2h0QXJyb3c6IuKHlCIsRG91YmxlTGVmdFRlZToi4qukIixEb3VibGVMb25nTGVmdEFycm93OiLin7giLERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzoi4p+6IixEb3VibGVMb25nUmlnaHRBcnJvdzoi4p+5IixEb3VibGVSaWdodEFycm93OiLih5IiLERvdWJsZVJpZ2h0VGVlOiLiiqgiLERvdWJsZVVwQXJyb3c6IuKHkSIsRG91YmxlVXBEb3duQXJyb3c6IuKHlSIsRG91YmxlVmVydGljYWxCYXI6IuKIpSIsRG93bkFycm93QmFyOiLipJMiLGRvd25hcnJvdzoi4oaTIixEb3duQXJyb3c6IuKGkyIsRG93bmFycm93OiLih5MiLERvd25BcnJvd1VwQXJyb3c6IuKHtSIsRG93bkJyZXZlOiLMkSIsZG93bmRvd25hcnJvd3M6IuKHiiIsZG93bmhhcnBvb25sZWZ0OiLih4MiLGRvd25oYXJwb29ucmlnaHQ6IuKHgiIsRG93bkxlZnRSaWdodFZlY3Rvcjoi4qWQIixEb3duTGVmdFRlZVZlY3Rvcjoi4qWeIixEb3duTGVmdFZlY3RvckJhcjoi4qWWIixEb3duTGVmdFZlY3Rvcjoi4oa9IixEb3duUmlnaHRUZWVWZWN0b3I6IuKlnyIsRG93blJpZ2h0VmVjdG9yQmFyOiLipZciLERvd25SaWdodFZlY3Rvcjoi4oeBIixEb3duVGVlQXJyb3c6IuKGpyIsRG93blRlZToi4oqkIixkcmJrYXJvdzoi4qSQIixkcmNvcm46IuKMnyIsZHJjcm9wOiLijIwiLERzY3I6IvCdkp8iLGRzY3I6IvCdkrkiLERTY3k6ItCFIixkc2N5OiLRlSIsZHNvbDoi4qe2IixEc3Ryb2s6IsSQIixkc3Ryb2s6IsSRIixkdGRvdDoi4ouxIixkdHJpOiLilr8iLGR0cmlmOiLilr4iLGR1YXJyOiLih7UiLGR1aGFyOiLipa8iLGR3YW5nbGU6IuKmpiIsRFpjeToi0I8iLGR6Y3k6ItGfIixkemlncmFycjoi4p+/IixFYWN1dGU6IsOJIixlYWN1dGU6IsOpIixlYXN0ZXI6IuKpriIsRWNhcm9uOiLEmiIsZWNhcm9uOiLEmyIsRWNpcmM6IsOKIixlY2lyYzoiw6oiLGVjaXI6IuKJliIsZWNvbG9uOiLiiZUiLEVjeToi0K0iLGVjeToi0Y0iLGVERG90OiLiqbciLEVkb3Q6IsSWIixlZG90OiLElyIsZURvdDoi4omRIixlZToi4oWHIixlZkRvdDoi4omSIixFZnI6IvCdlIgiLGVmcjoi8J2UoiIsZWc6IuKqmiIsRWdyYXZlOiLDiCIsZWdyYXZlOiLDqCIsZWdzOiLiqpYiLGVnc2RvdDoi4qqYIixlbDoi4qqZIixFbGVtZW50OiLiiIgiLGVsaW50ZXJzOiLij6ciLGVsbDoi4oSTIixlbHM6IuKqlSIsZWxzZG90OiLiqpciLEVtYWNyOiLEkiIsZW1hY3I6IsSTIixlbXB0eToi4oiFIixlbXB0eXNldDoi4oiFIixFbXB0eVNtYWxsU3F1YXJlOiLil7siLGVtcHR5djoi4oiFIixFbXB0eVZlcnlTbWFsbFNxdWFyZToi4parIixlbXNwMTM6IuKAhCIsZW1zcDE0OiLigIUiLGVtc3A6IuKAgyIsRU5HOiLFiiIsZW5nOiLFiyIsZW5zcDoi4oCCIixFb2dvbjoixJgiLGVvZ29uOiLEmSIsRW9wZjoi8J2UvCIsZW9wZjoi8J2VliIsZXBhcjoi4ouVIixlcGFyc2w6IuKnoyIsZXBsdXM6IuKpsSIsZXBzaToizrUiLEVwc2lsb246Is6VIixlcHNpbG9uOiLOtSIsZXBzaXY6Is+1IixlcWNpcmM6IuKJliIsZXFjb2xvbjoi4omVIixlcXNpbToi4omCIixlcXNsYW50Z3RyOiLiqpYiLGVxc2xhbnRsZXNzOiLiqpUiLEVxdWFsOiLiqbUiLGVxdWFsczoiPSIsRXF1YWxUaWxkZToi4omCIixlcXVlc3Q6IuKJnyIsRXF1aWxpYnJpdW06IuKHjCIsZXF1aXY6IuKJoSIsZXF1aXZERDoi4qm4IixlcXZwYXJzbDoi4qelIixlcmFycjoi4qWxIixlckRvdDoi4omTIixlc2NyOiLihK8iLEVzY3I6IuKEsCIsZXNkb3Q6IuKJkCIsRXNpbToi4qmzIixlc2ltOiLiiYIiLEV0YToizpciLGV0YToizrciLEVUSDoiw5AiLGV0aDoiw7AiLEV1bWw6IsOLIixldW1sOiLDqyIsZXVybzoi4oKsIixleGNsOiIhIixleGlzdDoi4oiDIixFeGlzdHM6IuKIgyIsZXhwZWN0YXRpb246IuKEsCIsZXhwb25lbnRpYWxlOiLihYciLEV4cG9uZW50aWFsRToi4oWHIixmYWxsaW5nZG90c2VxOiLiiZIiLEZjeToi0KQiLGZjeToi0YQiLGZlbWFsZToi4pmAIixmZmlsaWc6Iu+sgyIsZmZsaWc6Iu+sgCIsZmZsbGlnOiLvrIQiLEZmcjoi8J2UiSIsZmZyOiLwnZSjIixmaWxpZzoi76yBIixGaWxsZWRTbWFsbFNxdWFyZToi4pe8IixGaWxsZWRWZXJ5U21hbGxTcXVhcmU6IuKWqiIsZmpsaWc6ImZqIixmbGF0OiLima0iLGZsbGlnOiLvrIIiLGZsdG5zOiLilrEiLGZub2Y6IsaSIixGb3BmOiLwnZS9Iixmb3BmOiLwnZWXIixmb3JhbGw6IuKIgCIsRm9yQWxsOiLiiIAiLGZvcms6IuKLlCIsZm9ya3Y6IuKrmSIsRm91cmllcnRyZjoi4oSxIixmcGFydGludDoi4qiNIixmcmFjMTI6IsK9IixmcmFjMTM6IuKFkyIsZnJhYzE0OiLCvCIsZnJhYzE1OiLihZUiLGZyYWMxNjoi4oWZIixmcmFjMTg6IuKFmyIsZnJhYzIzOiLihZQiLGZyYWMyNToi4oWWIixmcmFjMzQ6IsK+IixmcmFjMzU6IuKFlyIsZnJhYzM4OiLihZwiLGZyYWM0NToi4oWYIixmcmFjNTY6IuKFmiIsZnJhYzU4OiLihZ0iLGZyYWM3ODoi4oWeIixmcmFzbDoi4oGEIixmcm93bjoi4oyiIixmc2NyOiLwnZK7IixGc2NyOiLihLEiLGdhY3V0ZToix7UiLEdhbW1hOiLOkyIsZ2FtbWE6Is6zIixHYW1tYWQ6Is+cIixnYW1tYWQ6Is+dIixnYXA6IuKqhiIsR2JyZXZlOiLEniIsZ2JyZXZlOiLEnyIsR2NlZGlsOiLEoiIsR2NpcmM6IsScIixnY2lyYzoixJ0iLEdjeToi0JMiLGdjeToi0LMiLEdkb3Q6IsSgIixnZG90OiLEoSIsZ2U6IuKJpSIsZ0U6IuKJpyIsZ0VsOiLiqowiLGdlbDoi4oubIixnZXE6IuKJpSIsZ2VxcToi4omnIixnZXFzbGFudDoi4qm+IixnZXNjYzoi4qqpIixnZXM6IuKpviIsZ2VzZG90OiLiqoAiLGdlc2RvdG86IuKqgiIsZ2VzZG90b2w6IuKqhCIsZ2VzbDoi4oub77iAIixnZXNsZXM6IuKqlCIsR2ZyOiLwnZSKIixnZnI6IvCdlKQiLGdnOiLiiasiLEdnOiLii5kiLGdnZzoi4ouZIixnaW1lbDoi4oS3IixHSmN5OiLQgyIsZ2pjeToi0ZMiLGdsYToi4qqlIixnbDoi4om3IixnbEU6IuKqkiIsZ2xqOiLiqqQiLGduYXA6IuKqiiIsZ25hcHByb3g6IuKqiiIsZ25lOiLiqogiLGduRToi4ompIixnbmVxOiLiqogiLGduZXFxOiLiiakiLGduc2ltOiLii6ciLEdvcGY6IvCdlL4iLGdvcGY6IvCdlZgiLGdyYXZlOiJgIixHcmVhdGVyRXF1YWw6IuKJpSIsR3JlYXRlckVxdWFsTGVzczoi4oubIixHcmVhdGVyRnVsbEVxdWFsOiLiiaciLEdyZWF0ZXJHcmVhdGVyOiLiqqIiLEdyZWF0ZXJMZXNzOiLiibciLEdyZWF0ZXJTbGFudEVxdWFsOiLiqb4iLEdyZWF0ZXJUaWxkZToi4omzIixHc2NyOiLwnZKiIixnc2NyOiLihIoiLGdzaW06IuKJsyIsZ3NpbWU6IuKqjiIsZ3NpbWw6IuKqkCIsZ3RjYzoi4qqnIixndGNpcjoi4qm6IixndDoiPiIsR1Q6Ij4iLEd0OiLiiasiLGd0ZG90OiLii5ciLGd0bFBhcjoi4qaVIixndHF1ZXN0OiLiqbwiLGd0cmFwcHJveDoi4qqGIixndHJhcnI6IuKluCIsZ3RyZG90OiLii5ciLGd0cmVxbGVzczoi4oubIixndHJlcXFsZXNzOiLiqowiLGd0cmxlc3M6IuKJtyIsZ3Ryc2ltOiLiibMiLGd2ZXJ0bmVxcToi4omp77iAIixndm5FOiLiianvuIAiLEhhY2VrOiLLhyIsaGFpcnNwOiLigIoiLGhhbGY6IsK9IixoYW1pbHQ6IuKEiyIsSEFSRGN5OiLQqiIsaGFyZGN5OiLRiiIsaGFycmNpcjoi4qWIIixoYXJyOiLihpQiLGhBcnI6IuKHlCIsaGFycnc6IuKGrSIsSGF0OiJeIixoYmFyOiLihI8iLEhjaXJjOiLEpCIsaGNpcmM6IsSlIixoZWFydHM6IuKZpSIsaGVhcnRzdWl0OiLimaUiLGhlbGxpcDoi4oCmIixoZXJjb246IuKKuSIsaGZyOiLwnZSlIixIZnI6IuKEjCIsSGlsYmVydFNwYWNlOiLihIsiLGhrc2Vhcm93OiLipKUiLGhrc3dhcm93OiLipKYiLGhvYXJyOiLih78iLGhvbXRodDoi4oi7Iixob29rbGVmdGFycm93OiLihqkiLGhvb2tyaWdodGFycm93OiLihqoiLGhvcGY6IvCdlZkiLEhvcGY6IuKEjSIsaG9yYmFyOiLigJUiLEhvcml6b250YWxMaW5lOiLilIAiLGhzY3I6IvCdkr0iLEhzY3I6IuKEiyIsaHNsYXNoOiLihI8iLEhzdHJvazoixKYiLGhzdHJvazoixKciLEh1bXBEb3duSHVtcDoi4omOIixIdW1wRXF1YWw6IuKJjyIsaHlidWxsOiLigYMiLGh5cGhlbjoi4oCQIixJYWN1dGU6IsONIixpYWN1dGU6IsOtIixpYzoi4oGjIixJY2lyYzoiw44iLGljaXJjOiLDriIsSWN5OiLQmCIsaWN5OiLQuCIsSWRvdDoixLAiLElFY3k6ItCVIixpZWN5OiLQtSIsaWV4Y2w6IsKhIixpZmY6IuKHlCIsaWZyOiLwnZSmIixJZnI6IuKEkSIsSWdyYXZlOiLDjCIsaWdyYXZlOiLDrCIsaWk6IuKFiCIsaWlpaW50OiLiqIwiLGlpaW50OiLiiK0iLGlpbmZpbjoi4qecIixpaW90YToi4oSpIixJSmxpZzoixLIiLGlqbGlnOiLEsyIsSW1hY3I6IsSqIixpbWFjcjoixKsiLGltYWdlOiLihJEiLEltYWdpbmFyeUk6IuKFiCIsaW1hZ2xpbmU6IuKEkCIsaW1hZ3BhcnQ6IuKEkSIsaW1hdGg6IsSxIixJbToi4oSRIixpbW9mOiLiirciLGltcGVkOiLGtSIsSW1wbGllczoi4oeSIixpbmNhcmU6IuKEhSIsImluIjoi4oiIIixpbmZpbjoi4oieIixpbmZpbnRpZToi4qedIixpbm9kb3Q6IsSxIixpbnRjYWw6IuKKuiIsImludCI6IuKIqyIsSW50OiLiiKwiLGludGVnZXJzOiLihKQiLEludGVncmFsOiLiiKsiLGludGVyY2FsOiLiiroiLEludGVyc2VjdGlvbjoi4ouCIixpbnRsYXJoazoi4qiXIixpbnRwcm9kOiLiqLwiLEludmlzaWJsZUNvbW1hOiLigaMiLEludmlzaWJsZVRpbWVzOiLigaIiLElPY3k6ItCBIixpb2N5OiLRkSIsSW9nb246IsSuIixpb2dvbjoixK8iLElvcGY6IvCdlYAiLGlvcGY6IvCdlZoiLElvdGE6Is6ZIixpb3RhOiLOuSIsaXByb2Q6IuKovCIsaXF1ZXN0OiLCvyIsaXNjcjoi8J2SviIsSXNjcjoi4oSQIixpc2luOiLiiIgiLGlzaW5kb3Q6IuKLtSIsaXNpbkU6IuKLuSIsaXNpbnM6IuKLtCIsaXNpbnN2OiLii7MiLGlzaW52OiLiiIgiLGl0OiLigaIiLEl0aWxkZToixKgiLGl0aWxkZToixKkiLEl1a2N5OiLQhiIsaXVrY3k6ItGWIixJdW1sOiLDjyIsaXVtbDoiw68iLEpjaXJjOiLEtCIsamNpcmM6IsS1IixKY3k6ItCZIixqY3k6ItC5IixKZnI6IvCdlI0iLGpmcjoi8J2UpyIsam1hdGg6Isi3IixKb3BmOiLwnZWBIixqb3BmOiLwnZWbIixKc2NyOiLwnZKlIixqc2NyOiLwnZK/IixKc2VyY3k6ItCIIixqc2VyY3k6ItGYIixKdWtjeToi0IQiLGp1a2N5OiLRlCIsS2FwcGE6Is6aIixrYXBwYToizroiLGthcHBhdjoiz7AiLEtjZWRpbDoixLYiLGtjZWRpbDoixLciLEtjeToi0JoiLGtjeToi0LoiLEtmcjoi8J2UjiIsa2ZyOiLwnZSoIixrZ3JlZW46IsS4IixLSGN5OiLQpSIsa2hjeToi0YUiLEtKY3k6ItCMIixramN5OiLRnCIsS29wZjoi8J2VgiIsa29wZjoi8J2VnCIsS3Njcjoi8J2SpiIsa3Njcjoi8J2TgCIsbEFhcnI6IuKHmiIsTGFjdXRlOiLEuSIsbGFjdXRlOiLEuiIsbGFlbXB0eXY6IuKmtCIsbGFncmFuOiLihJIiLExhbWJkYToizpsiLGxhbWJkYToizrsiLGxhbmc6IuKfqCIsTGFuZzoi4p+qIixsYW5nZDoi4qaRIixsYW5nbGU6IuKfqCIsbGFwOiLiqoUiLExhcGxhY2V0cmY6IuKEkiIsbGFxdW86IsKrIixsYXJyYjoi4oekIixsYXJyYmZzOiLipJ8iLGxhcnI6IuKGkCIsTGFycjoi4oaeIixsQXJyOiLih5AiLGxhcnJmczoi4qSdIixsYXJyaGs6IuKGqSIsbGFycmxwOiLihqsiLGxhcnJwbDoi4qS5IixsYXJyc2ltOiLipbMiLGxhcnJ0bDoi4oaiIixsYXRhaWw6IuKkmSIsbEF0YWlsOiLipJsiLGxhdDoi4qqrIixsYXRlOiLiqq0iLGxhdGVzOiLiqq3vuIAiLGxiYXJyOiLipIwiLGxCYXJyOiLipI4iLGxiYnJrOiLinbIiLGxicmFjZToieyIsbGJyYWNrOiJbIixsYnJrZToi4qaLIixsYnJrc2xkOiLipo8iLGxicmtzbHU6IuKmjSIsTGNhcm9uOiLEvSIsbGNhcm9uOiLEviIsTGNlZGlsOiLEuyIsbGNlZGlsOiLEvCIsbGNlaWw6IuKMiCIsbGN1YjoieyIsTGN5OiLQmyIsbGN5OiLQuyIsbGRjYToi4qS2IixsZHF1bzoi4oCcIixsZHF1b3I6IuKAniIsbGRyZGhhcjoi4qWnIixsZHJ1c2hhcjoi4qWLIixsZHNoOiLihrIiLGxlOiLiiaQiLGxFOiLiiaYiLExlZnRBbmdsZUJyYWNrZXQ6IuKfqCIsTGVmdEFycm93QmFyOiLih6QiLGxlZnRhcnJvdzoi4oaQIixMZWZ0QXJyb3c6IuKGkCIsTGVmdGFycm93OiLih5AiLExlZnRBcnJvd1JpZ2h0QXJyb3c6IuKHhiIsbGVmdGFycm93dGFpbDoi4oaiIixMZWZ0Q2VpbGluZzoi4oyIIixMZWZ0RG91YmxlQnJhY2tldDoi4p+mIixMZWZ0RG93blRlZVZlY3Rvcjoi4qWhIixMZWZ0RG93blZlY3RvckJhcjoi4qWZIixMZWZ0RG93blZlY3Rvcjoi4oeDIixMZWZ0Rmxvb3I6IuKMiiIsbGVmdGhhcnBvb25kb3duOiLihr0iLGxlZnRoYXJwb29udXA6IuKGvCIsbGVmdGxlZnRhcnJvd3M6IuKHhyIsbGVmdHJpZ2h0YXJyb3c6IuKGlCIsTGVmdFJpZ2h0QXJyb3c6IuKGlCIsTGVmdHJpZ2h0YXJyb3c6IuKHlCIsbGVmdHJpZ2h0YXJyb3dzOiLih4YiLGxlZnRyaWdodGhhcnBvb25zOiLih4siLGxlZnRyaWdodHNxdWlnYXJyb3c6IuKGrSIsTGVmdFJpZ2h0VmVjdG9yOiLipY4iLExlZnRUZWVBcnJvdzoi4oakIixMZWZ0VGVlOiLiiqMiLExlZnRUZWVWZWN0b3I6IuKlmiIsbGVmdHRocmVldGltZXM6IuKLiyIsTGVmdFRyaWFuZ2xlQmFyOiLip48iLExlZnRUcmlhbmdsZToi4oqyIixMZWZ0VHJpYW5nbGVFcXVhbDoi4oq0IixMZWZ0VXBEb3duVmVjdG9yOiLipZEiLExlZnRVcFRlZVZlY3Rvcjoi4qWgIixMZWZ0VXBWZWN0b3JCYXI6IuKlmCIsTGVmdFVwVmVjdG9yOiLihr8iLExlZnRWZWN0b3JCYXI6IuKlkiIsTGVmdFZlY3Rvcjoi4oa8IixsRWc6IuKqiyIsbGVnOiLii5oiLGxlcToi4omkIixsZXFxOiLiiaYiLGxlcXNsYW50OiLiqb0iLGxlc2NjOiLiqqgiLGxlczoi4qm9IixsZXNkb3Q6IuKpvyIsbGVzZG90bzoi4qqBIixsZXNkb3Rvcjoi4qqDIixsZXNnOiLii5rvuIAiLGxlc2dlczoi4qqTIixsZXNzYXBwcm94OiLiqoUiLGxlc3Nkb3Q6IuKLliIsbGVzc2VxZ3RyOiLii5oiLGxlc3NlcXFndHI6IuKqiyIsTGVzc0VxdWFsR3JlYXRlcjoi4ouaIixMZXNzRnVsbEVxdWFsOiLiiaYiLExlc3NHcmVhdGVyOiLiibYiLGxlc3NndHI6IuKJtiIsTGVzc0xlc3M6IuKqoSIsbGVzc3NpbToi4omyIixMZXNzU2xhbnRFcXVhbDoi4qm9IixMZXNzVGlsZGU6IuKJsiIsbGZpc2h0OiLipbwiLGxmbG9vcjoi4oyKIixMZnI6IvCdlI8iLGxmcjoi8J2UqSIsbGc6IuKJtiIsbGdFOiLiqpEiLGxIYXI6IuKloiIsbGhhcmQ6IuKGvSIsbGhhcnU6IuKGvCIsbGhhcnVsOiLipaoiLGxoYmxrOiLiloQiLExKY3k6ItCJIixsamN5OiLRmSIsbGxhcnI6IuKHhyIsbGw6IuKJqiIsTGw6IuKLmCIsbGxjb3JuZXI6IuKMniIsTGxlZnRhcnJvdzoi4oeaIixsbGhhcmQ6IuKlqyIsbGx0cmk6IuKXuiIsTG1pZG90OiLEvyIsbG1pZG90OiLFgCIsbG1vdXN0YWNoZToi4o6wIixsbW91c3Q6IuKOsCIsbG5hcDoi4qqJIixsbmFwcHJveDoi4qqJIixsbmU6IuKqhyIsbG5FOiLiiagiLGxuZXE6IuKqhyIsbG5lcXE6IuKJqCIsbG5zaW06IuKLpiIsbG9hbmc6IuKfrCIsbG9hcnI6IuKHvSIsbG9icms6IuKfpiIsbG9uZ2xlZnRhcnJvdzoi4p+1IixMb25nTGVmdEFycm93OiLin7UiLExvbmdsZWZ0YXJyb3c6IuKfuCIsbG9uZ2xlZnRyaWdodGFycm93OiLin7ciLExvbmdMZWZ0UmlnaHRBcnJvdzoi4p+3IixMb25nbGVmdHJpZ2h0YXJyb3c6IuKfuiIsbG9uZ21hcHN0bzoi4p+8Iixsb25ncmlnaHRhcnJvdzoi4p+2IixMb25nUmlnaHRBcnJvdzoi4p+2IixMb25ncmlnaHRhcnJvdzoi4p+5Iixsb29wYXJyb3dsZWZ0OiLihqsiLGxvb3BhcnJvd3JpZ2h0OiLihqwiLGxvcGFyOiLipoUiLExvcGY6IvCdlYMiLGxvcGY6IvCdlZ0iLGxvcGx1czoi4qitIixsb3RpbWVzOiLiqLQiLGxvd2FzdDoi4oiXIixsb3diYXI6Il8iLExvd2VyTGVmdEFycm93OiLihpkiLExvd2VyUmlnaHRBcnJvdzoi4oaYIixsb3o6IuKXiiIsbG96ZW5nZToi4peKIixsb3pmOiLip6siLGxwYXI6IigiLGxwYXJsdDoi4qaTIixscmFycjoi4oeGIixscmNvcm5lcjoi4oyfIixscmhhcjoi4oeLIixscmhhcmQ6IuKlrSIsbHJtOiLigI4iLGxydHJpOiLiir8iLGxzYXF1bzoi4oC5Iixsc2NyOiLwnZOBIixMc2NyOiLihJIiLGxzaDoi4oawIixMc2g6IuKGsCIsbHNpbToi4omyIixsc2ltZToi4qqNIixsc2ltZzoi4qqPIixsc3FiOiJbIixsc3F1bzoi4oCYIixsc3F1b3I6IuKAmiIsTHN0cm9rOiLFgSIsbHN0cm9rOiLFgiIsbHRjYzoi4qqmIixsdGNpcjoi4qm5IixsdDoiPCIsTFQ6IjwiLEx0OiLiiaoiLGx0ZG90OiLii5YiLGx0aHJlZToi4ouLIixsdGltZXM6IuKLiSIsbHRsYXJyOiLipbYiLGx0cXVlc3Q6IuKpuyIsbHRyaToi4peDIixsdHJpZToi4oq0IixsdHJpZjoi4peCIixsdHJQYXI6IuKmliIsbHVyZHNoYXI6IuKliiIsbHVydWhhcjoi4qWmIixsdmVydG5lcXE6IuKJqO+4gCIsbHZuRToi4omo77iAIixtYWNyOiLCryIsbWFsZToi4pmCIixtYWx0OiLinKAiLG1hbHRlc2U6IuKcoCIsTWFwOiLipIUiLG1hcDoi4oamIixtYXBzdG86IuKGpiIsbWFwc3RvZG93bjoi4oanIixtYXBzdG9sZWZ0OiLihqQiLG1hcHN0b3VwOiLihqUiLG1hcmtlcjoi4pauIixtY29tbWE6IuKoqSIsTWN5OiLQnCIsbWN5OiLQvCIsbWRhc2g6IuKAlCIsbUREb3Q6IuKIuiIsbWVhc3VyZWRhbmdsZToi4oihIixNZWRpdW1TcGFjZToi4oGfIixNZWxsaW50cmY6IuKEsyIsTWZyOiLwnZSQIixtZnI6IvCdlKoiLG1obzoi4oSnIixtaWNybzoiwrUiLG1pZGFzdDoiKiIsbWlkY2lyOiLiq7AiLG1pZDoi4oijIixtaWRkb3Q6IsK3IixtaW51c2I6IuKKnyIsbWludXM6IuKIkiIsbWludXNkOiLiiLgiLG1pbnVzZHU6IuKoqiIsTWludXNQbHVzOiLiiJMiLG1sY3A6IuKrmyIsbWxkcjoi4oCmIixtbnBsdXM6IuKIkyIsbW9kZWxzOiLiiqciLE1vcGY6IvCdlYQiLG1vcGY6IvCdlZ4iLG1wOiLiiJMiLG1zY3I6IvCdk4IiLE1zY3I6IuKEsyIsbXN0cG9zOiLiiL4iLE11OiLOnCIsbXU6Is68IixtdWx0aW1hcDoi4oq4IixtdW1hcDoi4oq4IixuYWJsYToi4oiHIixOYWN1dGU6IsWDIixuYWN1dGU6IsWEIixuYW5nOiLiiKDig5IiLG5hcDoi4omJIixuYXBFOiLiqbDMuCIsbmFwaWQ6IuKJi8y4IixuYXBvczoixYkiLG5hcHByb3g6IuKJiSIsbmF0dXJhbDoi4pmuIixuYXR1cmFsczoi4oSVIixuYXR1cjoi4pmuIixuYnNwOiLCoCIsbmJ1bXA6IuKJjsy4IixuYnVtcGU6IuKJj8y4IixuY2FwOiLiqYMiLE5jYXJvbjoixYciLG5jYXJvbjoixYgiLE5jZWRpbDoixYUiLG5jZWRpbDoixYYiLG5jb25nOiLiiYciLG5jb25nZG90OiLiqa3MuCIsbmN1cDoi4qmCIixOY3k6ItCdIixuY3k6ItC9IixuZGFzaDoi4oCTIixuZWFyaGs6IuKkpCIsbmVhcnI6IuKGlyIsbmVBcnI6IuKHlyIsbmVhcnJvdzoi4oaXIixuZToi4omgIixuZWRvdDoi4omQzLgiLE5lZ2F0aXZlTWVkaXVtU3BhY2U6IuKAiyIsTmVnYXRpdmVUaGlja1NwYWNlOiLigIsiLE5lZ2F0aXZlVGhpblNwYWNlOiLigIsiLE5lZ2F0aXZlVmVyeVRoaW5TcGFjZToi4oCLIixuZXF1aXY6IuKJoiIsbmVzZWFyOiLipKgiLG5lc2ltOiLiiYLMuCIsTmVzdGVkR3JlYXRlckdyZWF0ZXI6IuKJqyIsTmVzdGVkTGVzc0xlc3M6IuKJqiIsTmV3TGluZToiXG4iLG5leGlzdDoi4oiEIixuZXhpc3RzOiLiiIQiLE5mcjoi8J2UkSIsbmZyOiLwnZSrIixuZ0U6IuKJp8y4IixuZ2U6IuKJsSIsbmdlcToi4omxIixuZ2VxcToi4omnzLgiLG5nZXFzbGFudDoi4qm+zLgiLG5nZXM6IuKpvsy4IixuR2c6IuKLmcy4IixuZ3NpbToi4om1IixuR3Q6IuKJq+KDkiIsbmd0OiLiia8iLG5ndHI6IuKJryIsbkd0djoi4omrzLgiLG5oYXJyOiLihq4iLG5oQXJyOiLih44iLG5ocGFyOiLiq7IiLG5pOiLiiIsiLG5pczoi4ou8IixuaXNkOiLii7oiLG5pdjoi4oiLIixOSmN5OiLQiiIsbmpjeToi0ZoiLG5sYXJyOiLihpoiLG5sQXJyOiLih40iLG5sZHI6IuKApSIsbmxFOiLiiabMuCIsbmxlOiLiibAiLG5sZWZ0YXJyb3c6IuKGmiIsbkxlZnRhcnJvdzoi4oeNIixubGVmdHJpZ2h0YXJyb3c6IuKGriIsbkxlZnRyaWdodGFycm93OiLih44iLG5sZXE6IuKJsCIsbmxlcXE6IuKJpsy4IixubGVxc2xhbnQ6IuKpvcy4IixubGVzOiLiqb3MuCIsbmxlc3M6IuKJriIsbkxsOiLii5jMuCIsbmxzaW06IuKJtCIsbkx0OiLiiarig5IiLG5sdDoi4omuIixubHRyaToi4ouqIixubHRyaWU6IuKLrCIsbkx0djoi4omqzLgiLG5taWQ6IuKIpCIsTm9CcmVhazoi4oGgIixOb25CcmVha2luZ1NwYWNlOiLCoCIsbm9wZjoi8J2VnyIsTm9wZjoi4oSVIixOb3Q6IuKrrCIsbm90OiLCrCIsTm90Q29uZ3J1ZW50OiLiiaIiLE5vdEN1cENhcDoi4omtIixOb3REb3VibGVWZXJ0aWNhbEJhcjoi4oimIixOb3RFbGVtZW50OiLiiIkiLE5vdEVxdWFsOiLiiaAiLE5vdEVxdWFsVGlsZGU6IuKJgsy4IixOb3RFeGlzdHM6IuKIhCIsTm90R3JlYXRlcjoi4omvIixOb3RHcmVhdGVyRXF1YWw6IuKJsSIsTm90R3JlYXRlckZ1bGxFcXVhbDoi4omnzLgiLE5vdEdyZWF0ZXJHcmVhdGVyOiLiiavMuCIsTm90R3JlYXRlckxlc3M6IuKJuSIsTm90R3JlYXRlclNsYW50RXF1YWw6IuKpvsy4IixOb3RHcmVhdGVyVGlsZGU6IuKJtSIsTm90SHVtcERvd25IdW1wOiLiiY7MuCIsTm90SHVtcEVxdWFsOiLiiY/MuCIsbm90aW46IuKIiSIsbm90aW5kb3Q6IuKLtcy4Iixub3RpbkU6IuKLucy4Iixub3RpbnZhOiLiiIkiLG5vdGludmI6IuKLtyIsbm90aW52Yzoi4ou2IixOb3RMZWZ0VHJpYW5nbGVCYXI6IuKnj8y4IixOb3RMZWZ0VHJpYW5nbGU6IuKLqiIsTm90TGVmdFRyaWFuZ2xlRXF1YWw6IuKLrCIsTm90TGVzczoi4omuIixOb3RMZXNzRXF1YWw6IuKJsCIsTm90TGVzc0dyZWF0ZXI6IuKJuCIsTm90TGVzc0xlc3M6IuKJqsy4IixOb3RMZXNzU2xhbnRFcXVhbDoi4qm9zLgiLE5vdExlc3NUaWxkZToi4om0IixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjoi4qqizLgiLE5vdE5lc3RlZExlc3NMZXNzOiLiqqHMuCIsbm90bmk6IuKIjCIsbm90bml2YToi4oiMIixub3RuaXZiOiLii74iLG5vdG5pdmM6IuKLvSIsTm90UHJlY2VkZXM6IuKKgCIsTm90UHJlY2VkZXNFcXVhbDoi4qqvzLgiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDoi4ougIixOb3RSZXZlcnNlRWxlbWVudDoi4oiMIixOb3RSaWdodFRyaWFuZ2xlQmFyOiLip5DMuCIsTm90UmlnaHRUcmlhbmdsZToi4ourIixOb3RSaWdodFRyaWFuZ2xlRXF1YWw6IuKLrSIsTm90U3F1YXJlU3Vic2V0OiLiio/MuCIsTm90U3F1YXJlU3Vic2V0RXF1YWw6IuKLoiIsTm90U3F1YXJlU3VwZXJzZXQ6IuKKkMy4IixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOiLii6MiLE5vdFN1YnNldDoi4oqC4oOSIixOb3RTdWJzZXRFcXVhbDoi4oqIIixOb3RTdWNjZWVkczoi4oqBIixOb3RTdWNjZWVkc0VxdWFsOiLiqrDMuCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOiLii6EiLE5vdFN1Y2NlZWRzVGlsZGU6IuKJv8y4IixOb3RTdXBlcnNldDoi4oqD4oOSIixOb3RTdXBlcnNldEVxdWFsOiLiiokiLE5vdFRpbGRlOiLiiYEiLE5vdFRpbGRlRXF1YWw6IuKJhCIsTm90VGlsZGVGdWxsRXF1YWw6IuKJhyIsTm90VGlsZGVUaWxkZToi4omJIixOb3RWZXJ0aWNhbEJhcjoi4oikIixucGFyYWxsZWw6IuKIpiIsbnBhcjoi4oimIixucGFyc2w6IuKrveKDpSIsbnBhcnQ6IuKIgsy4IixucG9saW50OiLiqJQiLG5wcjoi4oqAIixucHJjdWU6IuKLoCIsbnByZWM6IuKKgCIsbnByZWNlcToi4qqvzLgiLG5wcmU6IuKqr8y4IixucmFycmM6IuKks8y4IixucmFycjoi4oabIixuckFycjoi4oePIixucmFycnc6IuKGncy4IixucmlnaHRhcnJvdzoi4oabIixuUmlnaHRhcnJvdzoi4oePIixucnRyaToi4ourIixucnRyaWU6IuKLrSIsbnNjOiLiioEiLG5zY2N1ZToi4ouhIixuc2NlOiLiqrDMuCIsTnNjcjoi8J2SqSIsbnNjcjoi8J2TgyIsbnNob3J0bWlkOiLiiKQiLG5zaG9ydHBhcmFsbGVsOiLiiKYiLG5zaW06IuKJgSIsbnNpbWU6IuKJhCIsbnNpbWVxOiLiiYQiLG5zbWlkOiLiiKQiLG5zcGFyOiLiiKYiLG5zcXN1YmU6IuKLoiIsbnNxc3VwZToi4oujIixuc3ViOiLiioQiLG5zdWJFOiLiq4XMuCIsbnN1YmU6IuKKiCIsbnN1YnNldDoi4oqC4oOSIixuc3Vic2V0ZXE6IuKKiCIsbnN1YnNldGVxcToi4quFzLgiLG5zdWNjOiLiioEiLG5zdWNjZXE6IuKqsMy4Iixuc3VwOiLiioUiLG5zdXBFOiLiq4bMuCIsbnN1cGU6IuKKiSIsbnN1cHNldDoi4oqD4oOSIixuc3Vwc2V0ZXE6IuKKiSIsbnN1cHNldGVxcToi4quGzLgiLG50Z2w6IuKJuSIsTnRpbGRlOiLDkSIsbnRpbGRlOiLDsSIsbnRsZzoi4om4IixudHJpYW5nbGVsZWZ0OiLii6oiLG50cmlhbmdsZWxlZnRlcToi4ousIixudHJpYW5nbGVyaWdodDoi4ourIixudHJpYW5nbGVyaWdodGVxOiLii60iLE51OiLOnSIsbnU6Is69IixudW06IiMiLG51bWVybzoi4oSWIixudW1zcDoi4oCHIixudmFwOiLiiY3ig5IiLG52ZGFzaDoi4oqsIixudkRhc2g6IuKKrSIsblZkYXNoOiLiiq4iLG5WRGFzaDoi4oqvIixudmdlOiLiiaXig5IiLG52Z3Q6Ij7ig5IiLG52SGFycjoi4qSEIixudmluZmluOiLip54iLG52bEFycjoi4qSCIixudmxlOiLiiaTig5IiLG52bHQ6Ijzig5IiLG52bHRyaWU6IuKKtOKDkiIsbnZyQXJyOiLipIMiLG52cnRyaWU6IuKKteKDkiIsbnZzaW06IuKIvOKDkiIsbndhcmhrOiLipKMiLG53YXJyOiLihpYiLG53QXJyOiLih5YiLG53YXJyb3c6IuKGliIsbnduZWFyOiLipKciLE9hY3V0ZToiw5MiLG9hY3V0ZToiw7MiLG9hc3Q6IuKKmyIsT2NpcmM6IsOUIixvY2lyYzoiw7QiLG9jaXI6IuKKmiIsT2N5OiLQniIsb2N5OiLQviIsb2Rhc2g6IuKKnSIsT2RibGFjOiLFkCIsb2RibGFjOiLFkSIsb2Rpdjoi4qi4IixvZG90OiLiipkiLG9kc29sZDoi4qa8IixPRWxpZzoixZIiLG9lbGlnOiLFkyIsb2ZjaXI6IuKmvyIsT2ZyOiLwnZSSIixvZnI6IvCdlKwiLG9nb246IsubIixPZ3JhdmU6IsOSIixvZ3JhdmU6IsOyIixvZ3Q6IuKngSIsb2hiYXI6IuKmtSIsb2htOiLOqSIsb2ludDoi4oiuIixvbGFycjoi4oa6IixvbGNpcjoi4qa+IixvbGNyb3NzOiLiprsiLG9saW5lOiLigL4iLG9sdDoi4qeAIixPbWFjcjoixYwiLG9tYWNyOiLFjSIsT21lZ2E6Is6pIixvbWVnYToiz4kiLE9taWNyb246Is6fIixvbWljcm9uOiLOvyIsb21pZDoi4qa2IixvbWludXM6IuKKliIsT29wZjoi8J2VhiIsb29wZjoi8J2VoCIsb3Bhcjoi4qa3IixPcGVuQ3VybHlEb3VibGVRdW90ZToi4oCcIixPcGVuQ3VybHlRdW90ZToi4oCYIixvcGVycDoi4qa5IixvcGx1czoi4oqVIixvcmFycjoi4oa7IixPcjoi4qmUIixvcjoi4oioIixvcmQ6IuKpnSIsb3JkZXI6IuKEtCIsb3JkZXJvZjoi4oS0IixvcmRmOiLCqiIsb3JkbToiwroiLG9yaWdvZjoi4oq2Iixvcm9yOiLiqZYiLG9yc2xvcGU6IuKplyIsb3J2OiLiqZsiLG9TOiLik4giLE9zY3I6IvCdkqoiLG9zY3I6IuKEtCIsT3NsYXNoOiLDmCIsb3NsYXNoOiLDuCIsb3NvbDoi4oqYIixPdGlsZGU6IsOVIixvdGlsZGU6IsO1IixvdGltZXNhczoi4qi2IixPdGltZXM6IuKotyIsb3RpbWVzOiLiipciLE91bWw6IsOWIixvdW1sOiLDtiIsb3ZiYXI6IuKMvSIsT3ZlckJhcjoi4oC+IixPdmVyQnJhY2U6IuKPniIsT3ZlckJyYWNrZXQ6IuKOtCIsT3ZlclBhcmVudGhlc2lzOiLij5wiLHBhcmE6IsK2IixwYXJhbGxlbDoi4oilIixwYXI6IuKIpSIscGFyc2ltOiLiq7MiLHBhcnNsOiLiq70iLHBhcnQ6IuKIgiIsUGFydGlhbEQ6IuKIgiIsUGN5OiLQnyIscGN5OiLQvyIscGVyY250OiIlIixwZXJpb2Q6Ii4iLHBlcm1pbDoi4oCwIixwZXJwOiLiiqUiLHBlcnRlbms6IuKAsSIsUGZyOiLwnZSTIixwZnI6IvCdlK0iLFBoaToizqYiLHBoaToiz4YiLHBoaXY6Is+VIixwaG1tYXQ6IuKEsyIscGhvbmU6IuKYjiIsUGk6Is6gIixwaToiz4AiLHBpdGNoZm9yazoi4ouUIixwaXY6Is+WIixwbGFuY2s6IuKEjyIscGxhbmNraDoi4oSOIixwbGFua3Y6IuKEjyIscGx1c2FjaXI6IuKooyIscGx1c2I6IuKKniIscGx1c2Npcjoi4qiiIixwbHVzOiIrIixwbHVzZG86IuKIlCIscGx1c2R1OiLiqKUiLHBsdXNlOiLiqbIiLFBsdXNNaW51czoiwrEiLHBsdXNtbjoiwrEiLHBsdXNzaW06IuKopiIscGx1c3R3bzoi4qinIixwbToiwrEiLFBvaW5jYXJlcGxhbmU6IuKEjCIscG9pbnRpbnQ6IuKolSIscG9wZjoi8J2VoSIsUG9wZjoi4oSZIixwb3VuZDoiwqMiLHByYXA6IuKqtyIsUHI6IuKquyIscHI6IuKJuiIscHJjdWU6IuKJvCIscHJlY2FwcHJveDoi4qq3IixwcmVjOiLiiboiLHByZWNjdXJseWVxOiLiibwiLFByZWNlZGVzOiLiiboiLFByZWNlZGVzRXF1YWw6IuKqryIsUHJlY2VkZXNTbGFudEVxdWFsOiLiibwiLFByZWNlZGVzVGlsZGU6IuKJviIscHJlY2VxOiLiqq8iLHByZWNuYXBwcm94OiLiqrkiLHByZWNuZXFxOiLiqrUiLHByZWNuc2ltOiLii6giLHByZToi4qqvIixwckU6IuKqsyIscHJlY3NpbToi4om+IixwcmltZToi4oCyIixQcmltZToi4oCzIixwcmltZXM6IuKEmSIscHJuYXA6IuKquSIscHJuRToi4qq1Iixwcm5zaW06IuKLqCIscHJvZDoi4oiPIixQcm9kdWN0OiLiiI8iLHByb2ZhbGFyOiLijK4iLHByb2ZsaW5lOiLijJIiLHByb2ZzdXJmOiLijJMiLHByb3A6IuKInSIsUHJvcG9ydGlvbmFsOiLiiJ0iLFByb3BvcnRpb246IuKItyIscHJvcHRvOiLiiJ0iLHByc2ltOiLiib4iLHBydXJlbDoi4oqwIixQc2NyOiLwnZKrIixwc2NyOiLwnZOFIixQc2k6Is6oIixwc2k6Is+IIixwdW5jc3A6IuKAiCIsUWZyOiLwnZSUIixxZnI6IvCdlK4iLHFpbnQ6IuKojCIscW9wZjoi8J2VoiIsUW9wZjoi4oSaIixxcHJpbWU6IuKBlyIsUXNjcjoi8J2SrCIscXNjcjoi8J2ThiIscXVhdGVybmlvbnM6IuKEjSIscXVhdGludDoi4qiWIixxdWVzdDoiPyIscXVlc3RlcToi4omfIixxdW90OiciJyxRVU9UOiciJyxyQWFycjoi4oebIixyYWNlOiLiiL3MsSIsUmFjdXRlOiLFlCIscmFjdXRlOiLFlSIscmFkaWM6IuKImiIscmFlbXB0eXY6IuKmsyIscmFuZzoi4p+pIixSYW5nOiLin6siLHJhbmdkOiLippIiLHJhbmdlOiLipqUiLHJhbmdsZToi4p+pIixyYXF1bzoiwrsiLHJhcnJhcDoi4qW1IixyYXJyYjoi4oelIixyYXJyYmZzOiLipKAiLHJhcnJjOiLipLMiLHJhcnI6IuKGkiIsUmFycjoi4oagIixyQXJyOiLih5IiLHJhcnJmczoi4qSeIixyYXJyaGs6IuKGqiIscmFycmxwOiLihqwiLHJhcnJwbDoi4qWFIixyYXJyc2ltOiLipbQiLFJhcnJ0bDoi4qSWIixyYXJydGw6IuKGoyIscmFycnc6IuKGnSIscmF0YWlsOiLipJoiLHJBdGFpbDoi4qScIixyYXRpbzoi4oi2IixyYXRpb25hbHM6IuKEmiIscmJhcnI6IuKkjSIsckJhcnI6IuKkjyIsUkJhcnI6IuKkkCIscmJicms6IuKdsyIscmJyYWNlOiJ9IixyYnJhY2s6Il0iLHJicmtlOiLipowiLHJicmtzbGQ6IuKmjiIscmJya3NsdToi4qaQIixSY2Fyb246IsWYIixyY2Fyb246IsWZIixSY2VkaWw6IsWWIixyY2VkaWw6IsWXIixyY2VpbDoi4oyJIixyY3ViOiJ9IixSY3k6ItCgIixyY3k6ItGAIixyZGNhOiLipLciLHJkbGRoYXI6IuKlqSIscmRxdW86IuKAnSIscmRxdW9yOiLigJ0iLHJkc2g6IuKGsyIscmVhbDoi4oScIixyZWFsaW5lOiLihJsiLHJlYWxwYXJ0OiLihJwiLHJlYWxzOiLihJ0iLFJlOiLihJwiLHJlY3Q6IuKWrSIscmVnOiLCriIsUkVHOiLCriIsUmV2ZXJzZUVsZW1lbnQ6IuKIiyIsUmV2ZXJzZUVxdWlsaWJyaXVtOiLih4siLFJldmVyc2VVcEVxdWlsaWJyaXVtOiLipa8iLHJmaXNodDoi4qW9IixyZmxvb3I6IuKMiyIscmZyOiLwnZSvIixSZnI6IuKEnCIsckhhcjoi4qWkIixyaGFyZDoi4oeBIixyaGFydToi4oeAIixyaGFydWw6IuKlrCIsUmhvOiLOoSIscmhvOiLPgSIscmhvdjoiz7EiLFJpZ2h0QW5nbGVCcmFja2V0OiLin6kiLFJpZ2h0QXJyb3dCYXI6IuKHpSIscmlnaHRhcnJvdzoi4oaSIixSaWdodEFycm93OiLihpIiLFJpZ2h0YXJyb3c6IuKHkiIsUmlnaHRBcnJvd0xlZnRBcnJvdzoi4oeEIixyaWdodGFycm93dGFpbDoi4oajIixSaWdodENlaWxpbmc6IuKMiSIsUmlnaHREb3VibGVCcmFja2V0OiLin6ciLFJpZ2h0RG93blRlZVZlY3Rvcjoi4qWdIixSaWdodERvd25WZWN0b3JCYXI6IuKllSIsUmlnaHREb3duVmVjdG9yOiLih4IiLFJpZ2h0Rmxvb3I6IuKMiyIscmlnaHRoYXJwb29uZG93bjoi4oeBIixyaWdodGhhcnBvb251cDoi4oeAIixyaWdodGxlZnRhcnJvd3M6IuKHhCIscmlnaHRsZWZ0aGFycG9vbnM6IuKHjCIscmlnaHRyaWdodGFycm93czoi4oeJIixyaWdodHNxdWlnYXJyb3c6IuKGnSIsUmlnaHRUZWVBcnJvdzoi4oamIixSaWdodFRlZToi4oqiIixSaWdodFRlZVZlY3Rvcjoi4qWbIixyaWdodHRocmVldGltZXM6IuKLjCIsUmlnaHRUcmlhbmdsZUJhcjoi4qeQIixSaWdodFRyaWFuZ2xlOiLiirMiLFJpZ2h0VHJpYW5nbGVFcXVhbDoi4oq1IixSaWdodFVwRG93blZlY3Rvcjoi4qWPIixSaWdodFVwVGVlVmVjdG9yOiLipZwiLFJpZ2h0VXBWZWN0b3JCYXI6IuKllCIsUmlnaHRVcFZlY3Rvcjoi4oa+IixSaWdodFZlY3RvckJhcjoi4qWTIixSaWdodFZlY3Rvcjoi4oeAIixyaW5nOiLLmiIscmlzaW5nZG90c2VxOiLiiZMiLHJsYXJyOiLih4QiLHJsaGFyOiLih4wiLHJsbToi4oCPIixybW91c3RhY2hlOiLijrEiLHJtb3VzdDoi4o6xIixybm1pZDoi4quuIixyb2FuZzoi4p+tIixyb2Fycjoi4oe+Iixyb2Jyazoi4p+nIixyb3Bhcjoi4qaGIixyb3BmOiLwnZWjIixSb3BmOiLihJ0iLHJvcGx1czoi4qiuIixyb3RpbWVzOiLiqLUiLFJvdW5kSW1wbGllczoi4qWwIixycGFyOiIpIixycGFyZ3Q6IuKmlCIscnBwb2xpbnQ6IuKokiIscnJhcnI6IuKHiSIsUnJpZ2h0YXJyb3c6IuKHmyIscnNhcXVvOiLigLoiLHJzY3I6IvCdk4ciLFJzY3I6IuKEmyIscnNoOiLihrEiLFJzaDoi4oaxIixyc3FiOiJdIixyc3F1bzoi4oCZIixyc3F1b3I6IuKAmSIscnRocmVlOiLii4wiLHJ0aW1lczoi4ouKIixydHJpOiLilrkiLHJ0cmllOiLiirUiLHJ0cmlmOiLilrgiLHJ0cmlsdHJpOiLip44iLFJ1bGVEZWxheWVkOiLip7QiLHJ1bHVoYXI6IuKlqCIscng6IuKEniIsU2FjdXRlOiLFmiIsc2FjdXRlOiLFmyIsc2JxdW86IuKAmiIsc2NhcDoi4qq4IixTY2Fyb246IsWgIixzY2Fyb246IsWhIixTYzoi4qq8IixzYzoi4om7IixzY2N1ZToi4om9IixzY2U6IuKqsCIsc2NFOiLiqrQiLFNjZWRpbDoixZ4iLHNjZWRpbDoixZ8iLFNjaXJjOiLFnCIsc2NpcmM6IsWdIixzY25hcDoi4qq6IixzY25FOiLiqrYiLHNjbnNpbToi4oupIixzY3BvbGludDoi4qiTIixzY3NpbToi4om/IixTY3k6ItChIixzY3k6ItGBIixzZG90Yjoi4oqhIixzZG90OiLii4UiLHNkb3RlOiLiqaYiLHNlYXJoazoi4qSlIixzZWFycjoi4oaYIixzZUFycjoi4oeYIixzZWFycm93OiLihpgiLHNlY3Q6IsKnIixzZW1pOiI7IixzZXN3YXI6IuKkqSIsc2V0bWludXM6IuKIliIsc2V0bW46IuKIliIsc2V4dDoi4py2IixTZnI6IvCdlJYiLHNmcjoi8J2UsCIsc2Zyb3duOiLijKIiLHNoYXJwOiLima8iLFNIQ0hjeToi0KkiLHNoY2hjeToi0YkiLFNIY3k6ItCoIixzaGN5OiLRiCIsU2hvcnREb3duQXJyb3c6IuKGkyIsU2hvcnRMZWZ0QXJyb3c6IuKGkCIsc2hvcnRtaWQ6IuKIoyIsc2hvcnRwYXJhbGxlbDoi4oilIixTaG9ydFJpZ2h0QXJyb3c6IuKGkiIsU2hvcnRVcEFycm93OiLihpEiLHNoeToiwq0iLFNpZ21hOiLOoyIsc2lnbWE6Is+DIixzaWdtYWY6Is+CIixzaWdtYXY6Is+CIixzaW06IuKIvCIsc2ltZG90OiLiqaoiLHNpbWU6IuKJgyIsc2ltZXE6IuKJgyIsc2ltZzoi4qqeIixzaW1nRToi4qqgIixzaW1sOiLiqp0iLHNpbWxFOiLiqp8iLHNpbW5lOiLiiYYiLHNpbXBsdXM6IuKopCIsc2ltcmFycjoi4qWyIixzbGFycjoi4oaQIixTbWFsbENpcmNsZToi4oiYIixzbWFsbHNldG1pbnVzOiLiiJYiLHNtYXNocDoi4qizIixzbWVwYXJzbDoi4qekIixzbWlkOiLiiKMiLHNtaWxlOiLijKMiLHNtdDoi4qqqIixzbXRlOiLiqqwiLHNtdGVzOiLiqqzvuIAiLFNPRlRjeToi0KwiLHNvZnRjeToi0YwiLHNvbGJhcjoi4oy/Iixzb2xiOiLip4QiLHNvbDoiLyIsU29wZjoi8J2ViiIsc29wZjoi8J2VpCIsc3BhZGVzOiLimaAiLHNwYWRlc3VpdDoi4pmgIixzcGFyOiLiiKUiLHNxY2FwOiLiipMiLHNxY2Fwczoi4oqT77iAIixzcWN1cDoi4oqUIixzcWN1cHM6IuKKlO+4gCIsU3FydDoi4oiaIixzcXN1Yjoi4oqPIixzcXN1YmU6IuKKkSIsc3FzdWJzZXQ6IuKKjyIsc3FzdWJzZXRlcToi4oqRIixzcXN1cDoi4oqQIixzcXN1cGU6IuKKkiIsc3FzdXBzZXQ6IuKKkCIsc3FzdXBzZXRlcToi4oqSIixzcXVhcmU6IuKWoSIsU3F1YXJlOiLilqEiLFNxdWFyZUludGVyc2VjdGlvbjoi4oqTIixTcXVhcmVTdWJzZXQ6IuKKjyIsU3F1YXJlU3Vic2V0RXF1YWw6IuKKkSIsU3F1YXJlU3VwZXJzZXQ6IuKKkCIsU3F1YXJlU3VwZXJzZXRFcXVhbDoi4oqSIixTcXVhcmVVbmlvbjoi4oqUIixzcXVhcmY6IuKWqiIsc3F1OiLilqEiLHNxdWY6IuKWqiIsc3JhcnI6IuKGkiIsU3Njcjoi8J2SriIsc3Njcjoi8J2TiCIsc3NldG1uOiLiiJYiLHNzbWlsZToi4oyjIixzc3RhcmY6IuKLhiIsU3Rhcjoi4ouGIixzdGFyOiLimIYiLHN0YXJmOiLimIUiLHN0cmFpZ2h0ZXBzaWxvbjoiz7UiLHN0cmFpZ2h0cGhpOiLPlSIsc3RybnM6IsKvIixzdWI6IuKKgiIsU3ViOiLii5AiLHN1YmRvdDoi4qq9IixzdWJFOiLiq4UiLHN1YmU6IuKKhiIsc3ViZWRvdDoi4quDIixzdWJtdWx0OiLiq4EiLHN1Ym5FOiLiq4siLHN1Ym5lOiLiiooiLHN1YnBsdXM6IuKqvyIsc3VicmFycjoi4qW5IixzdWJzZXQ6IuKKgiIsU3Vic2V0OiLii5AiLHN1YnNldGVxOiLiioYiLHN1YnNldGVxcToi4quFIixTdWJzZXRFcXVhbDoi4oqGIixzdWJzZXRuZXE6IuKKiiIsc3Vic2V0bmVxcToi4quLIixzdWJzaW06IuKrhyIsc3Vic3ViOiLiq5UiLHN1YnN1cDoi4quTIixzdWNjYXBwcm94OiLiqrgiLHN1Y2M6IuKJuyIsc3VjY2N1cmx5ZXE6IuKJvSIsU3VjY2VlZHM6IuKJuyIsU3VjY2VlZHNFcXVhbDoi4qqwIixTdWNjZWVkc1NsYW50RXF1YWw6IuKJvSIsU3VjY2VlZHNUaWxkZToi4om/IixzdWNjZXE6IuKqsCIsc3VjY25hcHByb3g6IuKquiIsc3VjY25lcXE6IuKqtiIsc3VjY25zaW06IuKLqSIsc3VjY3NpbToi4om/IixTdWNoVGhhdDoi4oiLIixzdW06IuKIkSIsU3VtOiLiiJEiLHN1bmc6IuKZqiIsc3VwMToiwrkiLHN1cDI6IsKyIixzdXAzOiLCsyIsc3VwOiLiioMiLFN1cDoi4ouRIixzdXBkb3Q6IuKqviIsc3VwZHN1Yjoi4quYIixzdXBFOiLiq4YiLHN1cGU6IuKKhyIsc3VwZWRvdDoi4quEIixTdXBlcnNldDoi4oqDIixTdXBlcnNldEVxdWFsOiLiiociLHN1cGhzb2w6IuKfiSIsc3VwaHN1Yjoi4quXIixzdXBsYXJyOiLipbsiLHN1cG11bHQ6IuKrgiIsc3VwbkU6IuKrjCIsc3VwbmU6IuKKiyIsc3VwcGx1czoi4quAIixzdXBzZXQ6IuKKgyIsU3Vwc2V0OiLii5EiLHN1cHNldGVxOiLiiociLHN1cHNldGVxcToi4quGIixzdXBzZXRuZXE6IuKKiyIsc3Vwc2V0bmVxcToi4quMIixzdXBzaW06IuKriCIsc3Vwc3ViOiLiq5QiLHN1cHN1cDoi4quWIixzd2FyaGs6IuKkpiIsc3dhcnI6IuKGmSIsc3dBcnI6IuKHmSIsc3dhcnJvdzoi4oaZIixzd253YXI6IuKkqiIsc3psaWc6IsOfIixUYWI6Ilx0Iix0YXJnZXQ6IuKMliIsVGF1OiLOpCIsdGF1OiLPhCIsdGJyazoi4o60IixUY2Fyb246IsWkIix0Y2Fyb246IsWlIixUY2VkaWw6IsWiIix0Y2VkaWw6IsWjIixUY3k6ItCiIix0Y3k6ItGCIix0ZG90OiLig5siLHRlbHJlYzoi4oyVIixUZnI6IvCdlJciLHRmcjoi8J2UsSIsdGhlcmU0OiLiiLQiLHRoZXJlZm9yZToi4oi0IixUaGVyZWZvcmU6IuKItCIsVGhldGE6Is6YIix0aGV0YToizrgiLHRoZXRhc3ltOiLPkSIsdGhldGF2OiLPkSIsdGhpY2thcHByb3g6IuKJiCIsdGhpY2tzaW06IuKIvCIsCitUaGlja1NwYWNlOiLigZ/igIoiLFRoaW5TcGFjZToi4oCJIix0aGluc3A6IuKAiSIsdGhrYXA6IuKJiCIsdGhrc2ltOiLiiLwiLFRIT1JOOiLDniIsdGhvcm46IsO+Iix0aWxkZToiy5wiLFRpbGRlOiLiiLwiLFRpbGRlRXF1YWw6IuKJgyIsVGlsZGVGdWxsRXF1YWw6IuKJhSIsVGlsZGVUaWxkZToi4omIIix0aW1lc2Jhcjoi4qixIix0aW1lc2I6IuKKoCIsdGltZXM6IsOXIix0aW1lc2Q6IuKosCIsdGludDoi4oitIix0b2VhOiLipKgiLHRvcGJvdDoi4oy2Iix0b3BjaXI6IuKrsSIsdG9wOiLiiqQiLFRvcGY6IvCdlYsiLHRvcGY6IvCdlaUiLHRvcGZvcms6IuKrmiIsdG9zYToi4qSpIix0cHJpbWU6IuKAtCIsdHJhZGU6IuKEoiIsVFJBREU6IuKEoiIsdHJpYW5nbGU6IuKWtSIsdHJpYW5nbGVkb3duOiLilr8iLHRyaWFuZ2xlbGVmdDoi4peDIix0cmlhbmdsZWxlZnRlcToi4oq0Iix0cmlhbmdsZXE6IuKJnCIsdHJpYW5nbGVyaWdodDoi4pa5Iix0cmlhbmdsZXJpZ2h0ZXE6IuKKtSIsdHJpZG90OiLil6wiLHRyaWU6IuKJnCIsdHJpbWludXM6IuKouiIsVHJpcGxlRG90OiLig5siLHRyaXBsdXM6IuKouSIsdHJpc2I6IuKnjSIsdHJpdGltZToi4qi7Iix0cnBleml1bToi4o+iIixUc2NyOiLwnZKvIix0c2NyOiLwnZOJIixUU2N5OiLQpiIsdHNjeToi0YYiLFRTSGN5OiLQiyIsdHNoY3k6ItGbIixUc3Ryb2s6IsWmIix0c3Ryb2s6IsWnIix0d2l4dDoi4omsIix0d29oZWFkbGVmdGFycm93OiLihp4iLHR3b2hlYWRyaWdodGFycm93OiLihqAiLFVhY3V0ZToiw5oiLHVhY3V0ZToiw7oiLHVhcnI6IuKGkSIsVWFycjoi4oafIix1QXJyOiLih5EiLFVhcnJvY2lyOiLipYkiLFVicmN5OiLQjiIsdWJyY3k6ItGeIixVYnJldmU6IsWsIix1YnJldmU6IsWtIixVY2lyYzoiw5siLHVjaXJjOiLDuyIsVWN5OiLQoyIsdWN5OiLRgyIsdWRhcnI6IuKHhSIsVWRibGFjOiLFsCIsdWRibGFjOiLFsSIsdWRoYXI6IuKlriIsdWZpc2h0OiLipb4iLFVmcjoi8J2UmCIsdWZyOiLwnZSyIixVZ3JhdmU6IsOZIix1Z3JhdmU6IsO5Iix1SGFyOiLipaMiLHVoYXJsOiLihr8iLHVoYXJyOiLihr4iLHVoYmxrOiLiloAiLHVsY29ybjoi4oycIix1bGNvcm5lcjoi4oycIix1bGNyb3A6IuKMjyIsdWx0cmk6IuKXuCIsVW1hY3I6IsWqIix1bWFjcjoixasiLHVtbDoiwqgiLFVuZGVyQmFyOiJfIixVbmRlckJyYWNlOiLij58iLFVuZGVyQnJhY2tldDoi4o61IixVbmRlclBhcmVudGhlc2lzOiLij50iLFVuaW9uOiLii4MiLFVuaW9uUGx1czoi4oqOIixVb2dvbjoixbIiLHVvZ29uOiLFsyIsVW9wZjoi8J2VjCIsdW9wZjoi8J2VpiIsVXBBcnJvd0Jhcjoi4qSSIix1cGFycm93OiLihpEiLFVwQXJyb3c6IuKGkSIsVXBhcnJvdzoi4oeRIixVcEFycm93RG93bkFycm93OiLih4UiLHVwZG93bmFycm93OiLihpUiLFVwRG93bkFycm93OiLihpUiLFVwZG93bmFycm93OiLih5UiLFVwRXF1aWxpYnJpdW06IuKlriIsdXBoYXJwb29ubGVmdDoi4oa/Iix1cGhhcnBvb25yaWdodDoi4oa+Iix1cGx1czoi4oqOIixVcHBlckxlZnRBcnJvdzoi4oaWIixVcHBlclJpZ2h0QXJyb3c6IuKGlyIsdXBzaToiz4UiLFVwc2k6Is+SIix1cHNpaDoiz5IiLFVwc2lsb246Is6lIix1cHNpbG9uOiLPhSIsVXBUZWVBcnJvdzoi4oalIixVcFRlZToi4oqlIix1cHVwYXJyb3dzOiLih4giLHVyY29ybjoi4oydIix1cmNvcm5lcjoi4oydIix1cmNyb3A6IuKMjiIsVXJpbmc6IsWuIix1cmluZzoixa8iLHVydHJpOiLil7kiLFVzY3I6IvCdkrAiLHVzY3I6IvCdk4oiLHV0ZG90OiLii7AiLFV0aWxkZToixagiLHV0aWxkZToixakiLHV0cmk6IuKWtSIsdXRyaWY6IuKWtCIsdXVhcnI6IuKHiCIsVXVtbDoiw5wiLHV1bWw6IsO8Iix1d2FuZ2xlOiLipqciLHZhbmdydDoi4qacIix2YXJlcHNpbG9uOiLPtSIsdmFya2FwcGE6Is+wIix2YXJub3RoaW5nOiLiiIUiLHZhcnBoaToiz5UiLHZhcnBpOiLPliIsdmFycHJvcHRvOiLiiJ0iLHZhcnI6IuKGlSIsdkFycjoi4oeVIix2YXJyaG86Is+xIix2YXJzaWdtYToiz4IiLHZhcnN1YnNldG5lcToi4oqK77iAIix2YXJzdWJzZXRuZXFxOiLiq4vvuIAiLHZhcnN1cHNldG5lcToi4oqL77iAIix2YXJzdXBzZXRuZXFxOiLiq4zvuIAiLHZhcnRoZXRhOiLPkSIsdmFydHJpYW5nbGVsZWZ0OiLiirIiLHZhcnRyaWFuZ2xlcmlnaHQ6IuKKsyIsdkJhcjoi4quoIixWYmFyOiLiq6siLHZCYXJ2OiLiq6kiLFZjeToi0JIiLHZjeToi0LIiLHZkYXNoOiLiiqIiLHZEYXNoOiLiiqgiLFZkYXNoOiLiiqkiLFZEYXNoOiLiiqsiLFZkYXNobDoi4qumIix2ZWViYXI6IuKKuyIsdmVlOiLiiKgiLFZlZToi4ouBIix2ZWVlcToi4omaIix2ZWxsaXA6IuKLriIsdmVyYmFyOiJ8IixWZXJiYXI6IuKAliIsdmVydDoifCIsVmVydDoi4oCWIixWZXJ0aWNhbEJhcjoi4oijIixWZXJ0aWNhbExpbmU6InwiLFZlcnRpY2FsU2VwYXJhdG9yOiLinZgiLFZlcnRpY2FsVGlsZGU6IuKJgCIsVmVyeVRoaW5TcGFjZToi4oCKIixWZnI6IvCdlJkiLHZmcjoi8J2UsyIsdmx0cmk6IuKKsiIsdm5zdWI6IuKKguKDkiIsdm5zdXA6IuKKg+KDkiIsVm9wZjoi8J2VjSIsdm9wZjoi8J2VpyIsdnByb3A6IuKInSIsdnJ0cmk6IuKKsyIsVnNjcjoi8J2SsSIsdnNjcjoi8J2TiyIsdnN1Ym5FOiLiq4vvuIAiLHZzdWJuZToi4oqK77iAIix2c3VwbkU6IuKrjO+4gCIsdnN1cG5lOiLiiovvuIAiLFZ2ZGFzaDoi4oqqIix2emlnemFnOiLippoiLFdjaXJjOiLFtCIsd2NpcmM6IsW1Iix3ZWRiYXI6IuKpnyIsd2VkZ2U6IuKIpyIsV2VkZ2U6IuKLgCIsd2VkZ2VxOiLiiZkiLHdlaWVycDoi4oSYIixXZnI6IvCdlJoiLHdmcjoi8J2UtCIsV29wZjoi8J2VjiIsd29wZjoi8J2VqCIsd3A6IuKEmCIsd3I6IuKJgCIsd3JlYXRoOiLiiYAiLFdzY3I6IvCdkrIiLHdzY3I6IvCdk4wiLHhjYXA6IuKLgiIseGNpcmM6IuKXryIseGN1cDoi4ouDIix4ZHRyaToi4pa9IixYZnI6IvCdlJsiLHhmcjoi8J2UtSIseGhhcnI6IuKftyIseGhBcnI6IuKfuiIsWGk6Is6eIix4aToizr4iLHhsYXJyOiLin7UiLHhsQXJyOiLin7giLHhtYXA6IuKfvCIseG5pczoi4ou7Iix4b2RvdDoi4qiAIixYb3BmOiLwnZWPIix4b3BmOiLwnZWpIix4b3BsdXM6IuKogSIseG90aW1lOiLiqIIiLHhyYXJyOiLin7YiLHhyQXJyOiLin7kiLFhzY3I6IvCdkrMiLHhzY3I6IvCdk40iLHhzcWN1cDoi4qiGIix4dXBsdXM6IuKohCIseHV0cmk6IuKWsyIseHZlZToi4ouBIix4d2VkZ2U6IuKLgCIsWWFjdXRlOiLDnSIseWFjdXRlOiLDvSIsWUFjeToi0K8iLHlhY3k6ItGPIixZY2lyYzoixbYiLHljaXJjOiLFtyIsWWN5OiLQqyIseWN5OiLRiyIseWVuOiLCpSIsWWZyOiLwnZScIix5ZnI6IvCdlLYiLFlJY3k6ItCHIix5aWN5OiLRlyIsWW9wZjoi8J2VkCIseW9wZjoi8J2VqiIsWXNjcjoi8J2StCIseXNjcjoi8J2TjiIsWVVjeToi0K4iLHl1Y3k6ItGOIix5dW1sOiLDvyIsWXVtbDoixbgiLFphY3V0ZToixbkiLHphY3V0ZToixboiLFpjYXJvbjoixb0iLHpjYXJvbjoixb4iLFpjeToi0JciLHpjeToi0LciLFpkb3Q6IsW7Iix6ZG90OiLFvCIsemVldHJmOiLihKgiLFplcm9XaWR0aFNwYWNlOiLigIsiLFpldGE6Is6WIix6ZXRhOiLOtiIsemZyOiLwnZS3IixaZnI6IuKEqCIsWkhjeToi0JYiLHpoY3k6ItC2Iix6aWdyYXJyOiLih50iLHpvcGY6IvCdlasiLFpvcGY6IuKEpCIsWnNjcjoi8J2StSIsenNjcjoi8J2TjyIsendqOiLigI0iLHp3bmo6IuKAjCJ9fSx7fV0sMjY6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9e0FhY3V0ZToiw4EiLGFhY3V0ZToiw6EiLEFjaXJjOiLDgiIsYWNpcmM6IsOiIixhY3V0ZToiwrQiLEFFbGlnOiLDhiIsYWVsaWc6IsOmIixBZ3JhdmU6IsOAIixhZ3JhdmU6IsOgIixhbXA6IiYiLEFNUDoiJiIsQXJpbmc6IsOFIixhcmluZzoiw6UiLEF0aWxkZToiw4MiLGF0aWxkZToiw6MiLEF1bWw6IsOEIixhdW1sOiLDpCIsYnJ2YmFyOiLCpiIsQ2NlZGlsOiLDhyIsY2NlZGlsOiLDpyIsY2VkaWw6IsK4IixjZW50OiLCoiIsY29weToiwqkiLENPUFk6IsKpIixjdXJyZW46IsKkIixkZWc6IsKwIixkaXZpZGU6IsO3IixFYWN1dGU6IsOJIixlYWN1dGU6IsOpIixFY2lyYzoiw4oiLGVjaXJjOiLDqiIsRWdyYXZlOiLDiCIsZWdyYXZlOiLDqCIsRVRIOiLDkCIsZXRoOiLDsCIsRXVtbDoiw4siLGV1bWw6IsOrIixmcmFjMTI6IsK9IixmcmFjMTQ6IsK8IixmcmFjMzQ6IsK+IixndDoiPiIsR1Q6Ij4iLElhY3V0ZToiw40iLGlhY3V0ZToiw60iLEljaXJjOiLDjiIsaWNpcmM6IsOuIixpZXhjbDoiwqEiLElncmF2ZToiw4wiLGlncmF2ZToiw6wiLGlxdWVzdDoiwr8iLEl1bWw6IsOPIixpdW1sOiLDryIsbGFxdW86IsKrIixsdDoiPCIsTFQ6IjwiLG1hY3I6IsKvIixtaWNybzoiwrUiLG1pZGRvdDoiwrciLG5ic3A6IsKgIixub3Q6IsKsIixOdGlsZGU6IsORIixudGlsZGU6IsOxIixPYWN1dGU6IsOTIixvYWN1dGU6IsOzIixPY2lyYzoiw5QiLG9jaXJjOiLDtCIsT2dyYXZlOiLDkiIsb2dyYXZlOiLDsiIsb3JkZjoiwqoiLG9yZG06IsK6IixPc2xhc2g6IsOYIixvc2xhc2g6IsO4IixPdGlsZGU6IsOVIixvdGlsZGU6IsO1IixPdW1sOiLDliIsb3VtbDoiw7YiLHBhcmE6IsK2IixwbHVzbW46IsKxIixwb3VuZDoiwqMiLHF1b3Q6JyInLFFVT1Q6JyInLHJhcXVvOiLCuyIscmVnOiLCriIsUkVHOiLCriIsc2VjdDoiwqciLHNoeToiwq0iLHN1cDE6IsK5IixzdXAyOiLCsiIsc3VwMzoiwrMiLHN6bGlnOiLDnyIsVEhPUk46IsOeIix0aG9ybjoiw74iLHRpbWVzOiLDlyIsVWFjdXRlOiLDmiIsdWFjdXRlOiLDuiIsVWNpcmM6IsObIix1Y2lyYzoiw7siLFVncmF2ZToiw5kiLHVncmF2ZToiw7kiLHVtbDoiwqgiLFV1bWw6IsOcIix1dW1sOiLDvCIsWWFjdXRlOiLDnSIseWFjdXRlOiLDvSIseWVuOiLCpSIseXVtbDoiw78ifX0se31dLDI3OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXthbXA6IiYiLGFwb3M6IiciLGd0OiI+IixsdDoiPCIscXVvdDonIid9fSx7fV0sMjg6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50c3x8e30sdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfWZ1bmN0aW9uIGkodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10fWZ1bmN0aW9uIGEodCl7cmV0dXJuIHZvaWQgMD09PXR9ZS5leHBvcnRzPW4sbi5FdmVudEVtaXR0ZXI9bixuLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxuLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMCxuLmRlZmF1bHRNYXhMaXN0ZW5lcnM9MTAsbi5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKCFzKHQpfHx0PDB8fGlzTmFOKHQpKXRocm93IFR5cGVFcnJvcigibiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz10LHRoaXN9LG4ucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLHMsYyx1O2lmKHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksImVycm9yIj09PXQmJighdGhpcy5fZXZlbnRzLmVycm9yfHxvKHRoaXMuX2V2ZW50cy5lcnJvcikmJiF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSl7aWYoZT1hcmd1bWVudHNbMV0sZSBpbnN0YW5jZW9mIEVycm9yKXRocm93IGU7dmFyIGg9bmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgImVycm9yIiBldmVudC4gKCcrZSsiKSIpO3Rocm93IGguY29udGV4dD1lLGh9aWYocj10aGlzLl9ldmVudHNbdF0sYShyKSlyZXR1cm4hMTtpZihpKHIpKXN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6ci5jYWxsKHRoaXMpO2JyZWFrO2Nhc2UgMjpyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2UgMzpyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTticmVhaztkZWZhdWx0OnM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHIuYXBwbHkodGhpcyxzKX1lbHNlIGlmKG8ocikpZm9yKHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHU9ci5zbGljZSgpLG49dS5sZW5ndGgsYz0wO2M8bjtjKyspdVtjXS5hcHBseSh0aGlzLHMpO3JldHVybiEwfSxuLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3ZhciByO2lmKCFpKGUpKXRocm93IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7cmV0dXJuIHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksdGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyJiZ0aGlzLmVtaXQoIm5ld0xpc3RlbmVyIix0LGkoZS5saXN0ZW5lcik/ZS5saXN0ZW5lcjplKSx0aGlzLl9ldmVudHNbdF0/byh0aGlzLl9ldmVudHNbdF0pP3RoaXMuX2V2ZW50c1t0XS5wdXNoKGUpOnRoaXMuX2V2ZW50c1t0XT1bdGhpcy5fZXZlbnRzW3RdLGVdOnRoaXMuX2V2ZW50c1t0XT1lLG8odGhpcy5fZXZlbnRzW3RdKSYmIXRoaXMuX2V2ZW50c1t0XS53YXJuZWQmJihyPWEodGhpcy5fbWF4TGlzdGVuZXJzKT9uLmRlZmF1bHRNYXhMaXN0ZW5lcnM6dGhpcy5fbWF4TGlzdGVuZXJzLHImJnI+MCYmdGhpcy5fZXZlbnRzW3RdLmxlbmd0aD5yJiYodGhpcy5fZXZlbnRzW3RdLndhcm5lZD0hMCxjb25zb2xlLmVycm9yKCIobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LiIsdGhpcy5fZXZlbnRzW3RdLmxlbmd0aCksImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUudHJhY2UmJmNvbnNvbGUudHJhY2UoKSkpLHRoaXN9LG4ucHJvdG90eXBlLm9uPW4ucHJvdG90eXBlLmFkZExpc3RlbmVyLG4ucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcih0LHIpLG58fChuPSEwLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1pZighaShlKSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3ZhciBuPSExO3JldHVybiByLmxpc3RlbmVyPWUsdGhpcy5vbih0LHIpLHRoaXN9LG4ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixzLGE7aWYoIWkoZSkpdGhyb3cgVHlwZUVycm9yKCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZighdGhpcy5fZXZlbnRzfHwhdGhpcy5fZXZlbnRzW3RdKXJldHVybiB0aGlzO2lmKHI9dGhpcy5fZXZlbnRzW3RdLHM9ci5sZW5ndGgsbj0tMSxyPT09ZXx8aShyLmxpc3RlbmVyKSYmci5saXN0ZW5lcj09PWUpZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSx0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLHQsZSk7ZWxzZSBpZihvKHIpKXtmb3IoYT1zO2EtLSA+MDspaWYoclthXT09PWV8fHJbYV0ubGlzdGVuZXImJnJbYV0ubGlzdGVuZXI9PT1lKXtuPWE7YnJlYWt9aWYobjwwKXJldHVybiB0aGlzOzE9PT1yLmxlbmd0aD8oci5sZW5ndGg9MCxkZWxldGUgdGhpcy5fZXZlbnRzW3RdKTpyLnNwbGljZShuLDEpLHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsdCxlKX1yZXR1cm4gdGhpc30sbi5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHI7aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpcztpZighdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9ldmVudHM9e306dGhpcy5fZXZlbnRzW3RdJiZkZWxldGUgdGhpcy5fZXZlbnRzW3RdLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2ZvcihlIGluIHRoaXMuX2V2ZW50cykicmVtb3ZlTGlzdGVuZXIiIT09ZSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoZSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz17fSx0aGlzfWlmKHI9dGhpcy5fZXZlbnRzW3RdLGkocikpdGhpcy5yZW1vdmVMaXN0ZW5lcih0LHIpO2Vsc2UgaWYocilmb3IoO3IubGVuZ3RoOyl0aGlzLnJlbW92ZUxpc3RlbmVyKHQscltyLmxlbmd0aC0xXSk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9ldmVudHNbdF0sdGhpc30sbi5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW3RdP2kodGhpcy5fZXZlbnRzW3RdKT9bdGhpcy5fZXZlbnRzW3RdXTp0aGlzLl9ldmVudHNbdF0uc2xpY2UoKTpbXX0sbi5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0KXtpZih0aGlzLl9ldmVudHMpe3ZhciBlPXRoaXMuX2V2ZW50c1t0XTtpZihpKGUpKXJldHVybiAxO2lmKGUpcmV0dXJuIGUubGVuZ3RofXJldHVybiAwfSxuLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5saXN0ZW5lckNvdW50KGUpfX0se31dLDI5OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt0aGlzLl9jYnM9dHx8e30sdGhpcy5ldmVudHM9W119ZS5leHBvcnRzPW47dmFyIGk9dCgiLi8iKS5FVkVOVFM7T2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbih0KXtpZigwPT09aVt0XSl0PSJvbiIrdCxuLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3RoaXMuZXZlbnRzLnB1c2goW3RdKSx0aGlzLl9jYnNbdF0mJnRoaXMuX2Nic1t0XSgpfTtlbHNlIGlmKDE9PT1pW3RdKXQ9Im9uIit0LG4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3RoaXMuZXZlbnRzLnB1c2goW3QsZV0pLHRoaXMuX2Nic1t0XSYmdGhpcy5fY2JzW3RdKGUpfTtlbHNle2lmKDIhPT1pW3RdKXRocm93IEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIik7dD0ib24iK3Qsbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxyKXt0aGlzLmV2ZW50cy5wdXNoKFt0LGUscl0pLHRoaXMuX2Nic1t0XSYmdGhpcy5fY2JzW3RdKGUscil9fX0pLG4ucHJvdG90eXBlLm9ucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cz1bXSx0aGlzLl9jYnMub25yZXNldCYmdGhpcy5fY2JzLm9ucmVzZXQoKX0sbi5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX2Nicy5vbnJlc2V0JiZ0aGlzLl9jYnMub25yZXNldCgpO2Zvcih2YXIgdD0wLGU9dGhpcy5ldmVudHMubGVuZ3RoO3Q8ZTt0KyspaWYodGhpcy5fY2JzW3RoaXMuZXZlbnRzW3RdWzBdXSl7dmFyIHI9dGhpcy5ldmVudHNbdF0ubGVuZ3RoOzE9PT1yP3RoaXMuX2Nic1t0aGlzLmV2ZW50c1t0XVswXV0oKToyPT09cj90aGlzLl9jYnNbdGhpcy5ldmVudHNbdF1bMF1dKHRoaXMuZXZlbnRzW3RdWzFdKTp0aGlzLl9jYnNbdGhpcy5ldmVudHNbdF1bMF1dKHRoaXMuZXZlbnRzW3RdWzFdLHRoaXMuZXZlbnRzW3RdWzJdKX19fSx7Ii4vIjozNn1dLDMwOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3RoaXMuaW5pdCh0LGUpfWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gaC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0LGUsITApfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gaC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0LGUsITAsMSlbMF19ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIGguZ2V0VGV4dChoLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQsZSxyLDEpKS50cmltKCl9ZnVuY3Rpb24gYSh0LGUscixuLGkpe3ZhciBzPW8ocixuLGkpO3MmJih0W2VdPXMpfXZhciBjPXQoIi4vaW5kZXguanMiKSx1PWMuRG9tSGFuZGxlcixoPWMuRG9tVXRpbHM7dCgiaW5oZXJpdHMiKShuLHUpLG4ucHJvdG90eXBlLmluaXQ9dTt2YXIgbD1mdW5jdGlvbih0KXtyZXR1cm4icnNzIj09PXR8fCJmZWVkIj09PXR8fCJyZGY6UkRGIj09PXR9O24ucHJvdG90eXBlLm9uZW5kPWZ1bmN0aW9uKCl7dmFyIHQsZSxyPXt9LG49cyhsLHRoaXMuZG9tKTtuJiYoImZlZWQiPT09bi5uYW1lPyhlPW4uY2hpbGRyZW4sci50eXBlPSJhdG9tIixhKHIsImlkIiwiaWQiLGUpLGEociwidGl0bGUiLCJ0aXRsZSIsZSksKHQ9cygibGluayIsZSkpJiYodD10LmF0dHJpYnMpJiYodD10LmhyZWYpJiYoci5saW5rPXQpLGEociwiZGVzY3JpcHRpb24iLCJzdWJ0aXRsZSIsZSksKHQ9bygidXBkYXRlZCIsZSkpJiYoci51cGRhdGVkPW5ldyBEYXRlKHQpKSxhKHIsImF1dGhvciIsImVtYWlsIixlLCEwKSxyLml0ZW1zPWkoImVudHJ5IixlKS5tYXAoZnVuY3Rpb24odCl7dmFyIGUscj17fTtyZXR1cm4gdD10LmNoaWxkcmVuLGEociwiaWQiLCJpZCIsdCksYShyLCJ0aXRsZSIsInRpdGxlIix0KSwoZT1zKCJsaW5rIix0KSkmJihlPWUuYXR0cmlicykmJihlPWUuaHJlZikmJihyLmxpbms9ZSksKGU9bygic3VtbWFyeSIsdCl8fG8oImNvbnRlbnQiLHQpKSYmKHIuZGVzY3JpcHRpb249ZSksKGU9bygidXBkYXRlZCIsdCkpJiYoci5wdWJEYXRlPW5ldyBEYXRlKGUpKSxyfSkpOihlPXMoImNoYW5uZWwiLG4uY2hpbGRyZW4pLmNoaWxkcmVuLHIudHlwZT1uLm5hbWUuc3Vic3RyKDAsMyksci5pZD0iIixhKHIsInRpdGxlIiwidGl0bGUiLGUpLGEociwibGluayIsImxpbmsiLGUpLGEociwiZGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsZSksKHQ9bygibGFzdEJ1aWxkRGF0ZSIsZSkpJiYoci51cGRhdGVkPW5ldyBEYXRlKHQpKSxhKHIsImF1dGhvciIsIm1hbmFnaW5nRWRpdG9yIixlLCEwKSxyLml0ZW1zPWkoIml0ZW0iLG4uY2hpbGRyZW4pLm1hcChmdW5jdGlvbih0KXt2YXIgZSxyPXt9O3JldHVybiB0PXQuY2hpbGRyZW4sYShyLCJpZCIsImd1aWQiLHQpLGEociwidGl0bGUiLCJ0aXRsZSIsdCksYShyLCJsaW5rIiwibGluayIsdCksYShyLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIix0KSwoZT1vKCJwdWJEYXRlIix0KSkmJihyLnB1YkRhdGU9bmV3IERhdGUoZSkpLHJ9KSkpLHRoaXMuZG9tPXIsdS5wcm90b3R5cGUuX2hhbmRsZUNhbGxiYWNrLmNhbGwodGhpcyxuP251bGw6RXJyb3IoImNvdWxkbid0IGZpbmQgcm9vdCBvZiBmZWVkIikpfSxlLmV4cG9ydHM9bn0seyIuL2luZGV4LmpzIjozNixpbmhlcml0czozOH1dLDMxOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3RoaXMuX29wdGlvbnM9ZXx8e30sdGhpcy5fY2JzPXR8fHt9LHRoaXMuX3RhZ25hbWU9IiIsdGhpcy5fYXR0cmlibmFtZT0iIix0aGlzLl9hdHRyaWJ2YWx1ZT0iIix0aGlzLl9hdHRyaWJzPW51bGwsdGhpcy5fc3RhY2s9W10sdGhpcy5zdGFydEluZGV4PTAsdGhpcy5lbmRJbmRleD1udWxsLHRoaXMuX2xvd2VyQ2FzZVRhZ05hbWVzPSJsb3dlckNhc2VUYWdzImluIHRoaXMuX29wdGlvbnM/ISF0aGlzLl9vcHRpb25zLmxvd2VyQ2FzZVRhZ3M6IXRoaXMuX29wdGlvbnMueG1sTW9kZSx0aGlzLl9sb3dlckNhc2VBdHRyaWJ1dGVOYW1lcz0ibG93ZXJDYXNlQXR0cmlidXRlTmFtZXMiaW4gdGhpcy5fb3B0aW9ucz8hIXRoaXMuX29wdGlvbnMubG93ZXJDYXNlQXR0cmlidXRlTmFtZXM6IXRoaXMuX29wdGlvbnMueG1sTW9kZSx0aGlzLl9vcHRpb25zLlRva2VuaXplciYmKGk9dGhpcy5fb3B0aW9ucy5Ub2tlbml6ZXIpLHRoaXMuX3Rva2VuaXplcj1uZXcgaSh0aGlzLl9vcHRpb25zLHRoaXMpLHRoaXMuX2Nicy5vbnBhcnNlcmluaXQmJnRoaXMuX2Nicy5vbnBhcnNlcmluaXQodGhpcyl9dmFyIGk9dCgiLi9Ub2tlbml6ZXIuanMiKSxzPXtpbnB1dDohMCxvcHRpb246ITAsb3B0Z3JvdXA6ITAsc2VsZWN0OiEwLGJ1dHRvbjohMCxkYXRhbGlzdDohMCx0ZXh0YXJlYTohMH0sbz17dHI6e3RyOiEwLHRoOiEwLHRkOiEwfSx0aDp7dGg6ITB9LHRkOnt0aGVhZDohMCx0aDohMCx0ZDohMH0sYm9keTp7aGVhZDohMCxsaW5rOiEwLHNjcmlwdDohMH0sbGk6e2xpOiEwfSxwOntwOiEwfSxoMTp7cDohMH0saDI6e3A6ITB9LGgzOntwOiEwfSxoNDp7cDohMH0saDU6e3A6ITB9LGg2OntwOiEwfSxzZWxlY3Q6cyxpbnB1dDpzLG91dHB1dDpzLGJ1dHRvbjpzLGRhdGFsaXN0OnMsdGV4dGFyZWE6cyxvcHRpb246e29wdGlvbjohMH0sb3B0Z3JvdXA6e29wdGdyb3VwOiEwfX0sYT17X19wcm90b19fOm51bGwsYXJlYTohMCxiYXNlOiEwLGJhc2Vmb250OiEwLGJyOiEwLGNvbDohMCxjb21tYW5kOiEwLGVtYmVkOiEwLGZyYW1lOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxpc2luZGV4OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMCxwYXRoOiEwLGNpcmNsZTohMCxlbGxpcHNlOiEwLGxpbmU6ITAscmVjdDohMCx1c2U6ITAsc3RvcDohMCxwb2x5bGluZTohMCxwb2x5Z29uOiEwfSxjPS9cc3xcLy87dCgiaW5oZXJpdHMiKShuLHQoImV2ZW50cyIpLkV2ZW50RW1pdHRlciksbi5wcm90b3R5cGUuX3VwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLmVuZEluZGV4P3RoaXMuX3Rva2VuaXplci5fc2VjdGlvblN0YXJ0PD10P3RoaXMuc3RhcnRJbmRleD0wOnRoaXMuc3RhcnRJbmRleD10aGlzLl90b2tlbml6ZXIuX3NlY3Rpb25TdGFydC10OnRoaXMuc3RhcnRJbmRleD10aGlzLmVuZEluZGV4KzEsdGhpcy5lbmRJbmRleD10aGlzLl90b2tlbml6ZXIuZ2V0QWJzb2x1dGVJbmRleCgpfSxuLnByb3RvdHlwZS5vbnRleHQ9ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5lbmRJbmRleC0tLHRoaXMuX2Nicy5vbnRleHQmJnRoaXMuX2Nicy5vbnRleHQodCl9LG4ucHJvdG90eXBlLm9ub3BlbnRhZ25hbWU9ZnVuY3Rpb24odCl7aWYodGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJih0PXQudG9Mb3dlckNhc2UoKSksdGhpcy5fdGFnbmFtZT10LCF0aGlzLl9vcHRpb25zLnhtbE1vZGUmJnQgaW4gbylmb3IodmFyIGU7KGU9dGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdKWluIG9bdF07dGhpcy5vbmNsb3NldGFnKGUpKTshdGhpcy5fb3B0aW9ucy54bWxNb2RlJiZ0IGluIGF8fHRoaXMuX3N0YWNrLnB1c2godCksdGhpcy5fY2JzLm9ub3BlbnRhZ25hbWUmJnRoaXMuX2Nicy5vbm9wZW50YWduYW1lKHQpLHRoaXMuX2Nicy5vbm9wZW50YWcmJih0aGlzLl9hdHRyaWJzPXt9KX0sbi5wcm90b3R5cGUub25vcGVudGFnZW5kPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5fYXR0cmlicyYmKHRoaXMuX2Nicy5vbm9wZW50YWcmJnRoaXMuX2Nicy5vbm9wZW50YWcodGhpcy5fdGFnbmFtZSx0aGlzLl9hdHRyaWJzKSx0aGlzLl9hdHRyaWJzPW51bGwpLCF0aGlzLl9vcHRpb25zLnhtbE1vZGUmJnRoaXMuX2Nicy5vbmNsb3NldGFnJiZ0aGlzLl90YWduYW1lIGluIGEmJnRoaXMuX2Nicy5vbmNsb3NldGFnKHRoaXMuX3RhZ25hbWUpLHRoaXMuX3RhZ25hbWU9IiJ9LG4ucHJvdG90eXBlLm9uY2xvc2V0YWc9ZnVuY3Rpb24odCl7aWYodGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJih0PXQudG9Mb3dlckNhc2UoKSksIXRoaXMuX3N0YWNrLmxlbmd0aHx8dCBpbiBhJiYhdGhpcy5fb3B0aW9ucy54bWxNb2RlKXRoaXMuX29wdGlvbnMueG1sTW9kZXx8ImJyIiE9PXQmJiJwIiE9PXR8fCh0aGlzLm9ub3BlbnRhZ25hbWUodCksdGhpcy5fY2xvc2VDdXJyZW50VGFnKCkpO2Vsc2V7dmFyIGU9dGhpcy5fc3RhY2subGFzdEluZGV4T2YodCk7aWYoZSE9PS0xKWlmKHRoaXMuX2Nicy5vbmNsb3NldGFnKWZvcihlPXRoaXMuX3N0YWNrLmxlbmd0aC1lO2UtLTspdGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fc3RhY2sucG9wKCkpO2Vsc2UgdGhpcy5fc3RhY2subGVuZ3RoPWU7ZWxzZSJwIiE9PXR8fHRoaXMuX29wdGlvbnMueG1sTW9kZXx8KHRoaXMub25vcGVudGFnbmFtZSh0KSx0aGlzLl9jbG9zZUN1cnJlbnRUYWcoKSl9fSxuLnByb3RvdHlwZS5vbnNlbGZjbG9zaW5ndGFnPWZ1bmN0aW9uKCl7dGhpcy5fb3B0aW9ucy54bWxNb2RlfHx0aGlzLl9vcHRpb25zLnJlY29nbml6ZVNlbGZDbG9zaW5nP3RoaXMuX2Nsb3NlQ3VycmVudFRhZygpOnRoaXMub25vcGVudGFnZW5kKCl9LG4ucHJvdG90eXBlLl9jbG9zZUN1cnJlbnRUYWc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90YWduYW1lO3RoaXMub25vcGVudGFnZW5kKCksdGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdPT09dCYmKHRoaXMuX2Nicy5vbmNsb3NldGFnJiZ0aGlzLl9jYnMub25jbG9zZXRhZyh0KSx0aGlzLl9zdGFjay5wb3AoKSl9LG4ucHJvdG90eXBlLm9uYXR0cmlibmFtZT1mdW5jdGlvbih0KXt0aGlzLl9sb3dlckNhc2VBdHRyaWJ1dGVOYW1lcyYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0aGlzLl9hdHRyaWJuYW1lPXR9LG4ucHJvdG90eXBlLm9uYXR0cmliZGF0YT1mdW5jdGlvbih0KXt0aGlzLl9hdHRyaWJ2YWx1ZSs9dH0sbi5wcm90b3R5cGUub25hdHRyaWJlbmQ9ZnVuY3Rpb24oKXt0aGlzLl9jYnMub25hdHRyaWJ1dGUmJnRoaXMuX2Nicy5vbmF0dHJpYnV0ZSh0aGlzLl9hdHRyaWJuYW1lLHRoaXMuX2F0dHJpYnZhbHVlKSx0aGlzLl9hdHRyaWJzJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX2F0dHJpYnMsdGhpcy5fYXR0cmlibmFtZSkmJih0aGlzLl9hdHRyaWJzW3RoaXMuX2F0dHJpYm5hbWVdPXRoaXMuX2F0dHJpYnZhbHVlKSx0aGlzLl9hdHRyaWJuYW1lPSIiLHRoaXMuX2F0dHJpYnZhbHVlPSIifSxuLnByb3RvdHlwZS5fZ2V0SW5zdHJ1Y3Rpb25OYW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc2VhcmNoKGMpLHI9ZTwwP3Q6dC5zdWJzdHIoMCxlKTtyZXR1cm4gdGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJihyPXIudG9Mb3dlckNhc2UoKSkscn0sbi5wcm90b3R5cGUub25kZWNsYXJhdGlvbj1mdW5jdGlvbih0KXtpZih0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24pe3ZhciBlPXRoaXMuX2dldEluc3RydWN0aW9uTmFtZSh0KTt0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24oIiEiK2UsIiEiK3QpfX0sbi5wcm90b3R5cGUub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb249ZnVuY3Rpb24odCl7aWYodGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKXt2YXIgZT10aGlzLl9nZXRJbnN0cnVjdGlvbk5hbWUodCk7dGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKCI/IitlLCI/Iit0KX19LG4ucHJvdG90eXBlLm9uY29tbWVudD1mdW5jdGlvbih0KXt0aGlzLl91cGRhdGVQb3NpdGlvbig0KSx0aGlzLl9jYnMub25jb21tZW50JiZ0aGlzLl9jYnMub25jb21tZW50KHQpLHRoaXMuX2Nicy5vbmNvbW1lbnRlbmQmJnRoaXMuX2Nicy5vbmNvbW1lbnRlbmQoKX0sbi5wcm90b3R5cGUub25jZGF0YT1mdW5jdGlvbih0KXt0aGlzLl91cGRhdGVQb3NpdGlvbigxKSx0aGlzLl9vcHRpb25zLnhtbE1vZGV8fHRoaXMuX29wdGlvbnMucmVjb2duaXplQ0RBVEE/KHRoaXMuX2Nicy5vbmNkYXRhc3RhcnQmJnRoaXMuX2Nicy5vbmNkYXRhc3RhcnQoKSx0aGlzLl9jYnMub250ZXh0JiZ0aGlzLl9jYnMub250ZXh0KHQpLHRoaXMuX2Nicy5vbmNkYXRhZW5kJiZ0aGlzLl9jYnMub25jZGF0YWVuZCgpKTp0aGlzLm9uY29tbWVudCgiW0NEQVRBWyIrdCsiXV0iKX0sbi5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbih0KXt0aGlzLl9jYnMub25lcnJvciYmdGhpcy5fY2JzLm9uZXJyb3IodCl9LG4ucHJvdG90eXBlLm9uZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy5fY2JzLm9uY2xvc2V0YWcpZm9yKHZhciB0PXRoaXMuX3N0YWNrLmxlbmd0aDt0PjA7dGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fc3RhY2tbLS10XSkpO3RoaXMuX2Nicy5vbmVuZCYmdGhpcy5fY2JzLm9uZW5kKCl9LG4ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fY2JzLm9ucmVzZXQmJnRoaXMuX2Nicy5vbnJlc2V0KCksdGhpcy5fdG9rZW5pemVyLnJlc2V0KCksdGhpcy5fdGFnbmFtZT0iIix0aGlzLl9hdHRyaWJuYW1lPSIiLHRoaXMuX2F0dHJpYnM9bnVsbCx0aGlzLl9zdGFjaz1bXSx0aGlzLl9jYnMub25wYXJzZXJpbml0JiZ0aGlzLl9jYnMub25wYXJzZXJpbml0KHRoaXMpfSxuLnByb3RvdHlwZS5wYXJzZUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMucmVzZXQoKSx0aGlzLmVuZCh0KX0sbi5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dGhpcy5fdG9rZW5pemVyLndyaXRlKHQpfSxuLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dGhpcy5fdG9rZW5pemVyLmVuZCh0KX0sbi5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLl90b2tlbml6ZXIucGF1c2UoKX0sbi5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dGhpcy5fdG9rZW5pemVyLnJlc3VtZSgpfSxuLnByb3RvdHlwZS5wYXJzZUNodW5rPW4ucHJvdG90eXBlLndyaXRlLG4ucHJvdG90eXBlLmRvbmU9bi5wcm90b3R5cGUuZW5kLGUuZXhwb3J0cz1ufSx7Ii4vVG9rZW5pemVyLmpzIjozNCxldmVudHM6MjgsaW5oZXJpdHM6Mzh9XSwzMjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5fY2JzPXR8fHt9fWUuZXhwb3J0cz1uO3ZhciBpPXQoIi4vIikuRVZFTlRTO09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24odCl7aWYoMD09PWlbdF0pdD0ib24iK3Qsbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt0aGlzLl9jYnNbdF0mJnRoaXMuX2Nic1t0XSgpfTtlbHNlIGlmKDE9PT1pW3RdKXQ9Im9uIit0LG4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKGUpe3RoaXMuX2Nic1t0XSYmdGhpcy5fY2JzW3RdKGUpfTtlbHNle2lmKDIhPT1pW3RdKXRocm93IEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIik7dD0ib24iK3Qsbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oZSxyKXt0aGlzLl9jYnNbdF0mJnRoaXMuX2Nic1t0XShlLHIpfX19KX0seyIuLyI6MzZ9XSwzMzpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7cy5jYWxsKHRoaXMsbmV3IGkodGhpcyksdCl9ZnVuY3Rpb24gaSh0KXt0aGlzLnNjb3BlPXR9ZS5leHBvcnRzPW47dmFyIHM9dCgiLi9Xcml0YWJsZVN0cmVhbS5qcyIpO3QoImluaGVyaXRzIikobixzKSxuLnByb3RvdHlwZS5yZWFkYWJsZT0hMDt2YXIgbz10KCIuLi8iKS5FVkVOVFM7T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbih0KXtpZigwPT09b1t0XSlpLnByb3RvdHlwZVsib24iK3RdPWZ1bmN0aW9uKCl7dGhpcy5zY29wZS5lbWl0KHQpfTtlbHNlIGlmKDE9PT1vW3RdKWkucHJvdG90eXBlWyJvbiIrdF09ZnVuY3Rpb24oZSl7dGhpcy5zY29wZS5lbWl0KHQsZSl9O2Vsc2V7aWYoMiE9PW9bdF0pdGhyb3cgRXJyb3IoIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMhIik7aS5wcm90b3R5cGVbIm9uIit0XT1mdW5jdGlvbihlLHIpe3RoaXMuc2NvcGUuZW1pdCh0LGUscil9fX0pfSx7Ii4uLyI6MzYsIi4vV3JpdGFibGVTdHJlYW0uanMiOjM1LGluaGVyaXRzOjM4fV0sMzQ6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe3JldHVybiIgIj09PXR8fCJcbiI9PT10fHwiXHQiPT09dHx8IlxmIj09PXR8fCJcciI9PT10fWZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cj09PXQmJih0aGlzLl9zdGF0ZT1lKX19ZnVuY3Rpb24gcyh0LGUscil7dmFyIG49dC50b0xvd2VyQ2FzZSgpO3JldHVybiB0PT09bj9mdW5jdGlvbih0KXt0PT09bj90aGlzLl9zdGF0ZT1lOih0aGlzLl9zdGF0ZT1yLHRoaXMuX2luZGV4LS0pfTpmdW5jdGlvbihpKXtpPT09bnx8aT09PXQ/dGhpcy5fc3RhdGU9ZToodGhpcy5fc3RhdGU9cix0aGlzLl9pbmRleC0tKX19ZnVuY3Rpb24gbyh0LGUpe3ZhciByPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gZnVuY3Rpb24obil7bj09PXJ8fG49PT10P3RoaXMuX3N0YXRlPWU6KHRoaXMuX3N0YXRlPWcsdGhpcy5faW5kZXgtLSl9fWZ1bmN0aW9uIGEodCxlKXt0aGlzLl9zdGF0ZT1wLHRoaXMuX2J1ZmZlcj0iIix0aGlzLl9zZWN0aW9uU3RhcnQ9MCx0aGlzLl9pbmRleD0wLHRoaXMuX2J1ZmZlck9mZnNldD0wLHRoaXMuX2Jhc2VTdGF0ZT1wLHRoaXMuX3NwZWNpYWw9Z3QsdGhpcy5fY2JzPWUsdGhpcy5fcnVubmluZz0hMCx0aGlzLl9lbmRlZD0hMSx0aGlzLl94bWxNb2RlPSEoIXR8fCF0LnhtbE1vZGUpLHRoaXMuX2RlY29kZUVudGl0aWVzPSEoIXR8fCF0LmRlY29kZUVudGl0aWVzKX1lLmV4cG9ydHM9YTt2YXIgYz10KCJlbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC5qcyIpLHU9dCgiZW50aXRpZXMvbWFwcy9lbnRpdGllcy5qc29uIiksaD10KCJlbnRpdGllcy9tYXBzL2xlZ2FjeS5qc29uIiksbD10KCJlbnRpdGllcy9tYXBzL3htbC5qc29uIiksZj0wLHA9ZisrLGQ9ZisrLGc9ZisrLF89ZisrLG09ZisrLGI9ZisrLHk9ZisrLHY9ZisrLHc9ZisrLHg9ZisrLFM9ZisrLEU9ZisrLFQ9ZisrLEE9ZisrLGs9ZisrLEw9ZisrLHE9ZisrLFI9ZisrLEM9ZisrLEI9ZisrLEQ9ZisrLGo9ZisrLE49ZisrLE89ZisrLE09ZisrLEk9ZisrLFA9ZisrLFU9ZisrLEg9ZisrLFY9ZisrLHo9ZisrLFk9ZisrLEY9ZisrLEc9ZisrLFc9ZisrLFg9ZisrLFE9ZisrLEo9ZisrLFo9ZisrLEs9ZisrLCQ9ZisrLHR0PWYrKyxldD1mKysscnQ9ZisrLG50PWYrKyxpdD1mKyssc3Q9ZisrLG90PWYrKyxhdD1mKyssY3Q9ZisrLHV0PWYrKyxodD1mKyssbHQ9ZisrLGZ0PWYrKyxwdD1mKyssZHQ9MCxndD1kdCsrLF90PWR0KyssbXQ9ZHQrKzthLnByb3RvdHlwZS5fc3RhdGVUZXh0PWZ1bmN0aW9uKHQpeyI8Ij09PXQ/KHRoaXMuX2luZGV4PnRoaXMuX3NlY3Rpb25TdGFydCYmdGhpcy5fY2JzLm9udGV4dCh0aGlzLl9nZXRTZWN0aW9uKCkpLHRoaXMuX3N0YXRlPWQsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmdGhpcy5fc3BlY2lhbD09PWd0JiYiJiI9PT10JiYodGhpcy5faW5kZXg+dGhpcy5fc2VjdGlvblN0YXJ0JiZ0aGlzLl9jYnMub250ZXh0KHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fYmFzZVN0YXRlPXAsdGhpcy5fc3RhdGU9dXQsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KX0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlVGFnTmFtZT1mdW5jdGlvbih0KXsiLyI9PT10P3RoaXMuX3N0YXRlPW06IjwiPT09dD8odGhpcy5fY2JzLm9udGV4dCh0aGlzLl9nZXRTZWN0aW9uKCkpLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCk6Ij4iPT09dHx8dGhpcy5fc3BlY2lhbCE9PWd0fHxuKHQpP3RoaXMuX3N0YXRlPXA6IiEiPT09dD8odGhpcy5fc3RhdGU9ayx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6Ij8iPT09dD8odGhpcy5fc3RhdGU9cSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6KHRoaXMuX3N0YXRlPXRoaXMuX3htbE1vZGV8fCJzIiE9PXQmJiJTIiE9PXQ/Zzp6LHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LGEucHJvdG90eXBlLl9zdGF0ZUluVGFnTmFtZT1mdW5jdGlvbih0KXsoIi8iPT09dHx8Ij4iPT09dHx8bih0KSkmJih0aGlzLl9lbWl0VG9rZW4oIm9ub3BlbnRhZ25hbWUiKSx0aGlzLl9zdGF0ZT12LHRoaXMuX2luZGV4LS0pfSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDbG9zZWluZ1RhZ05hbWU9ZnVuY3Rpb24odCl7bih0KXx8KCI+Ij09PXQ/dGhpcy5fc3RhdGU9cDp0aGlzLl9zcGVjaWFsIT09Z3Q/InMiPT09dHx8IlMiPT09dD90aGlzLl9zdGF0ZT1ZOih0aGlzLl9zdGF0ZT1wLHRoaXMuX2luZGV4LS0pOih0aGlzLl9zdGF0ZT1iLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCkpfSxhLnByb3RvdHlwZS5fc3RhdGVJbkNsb3NlaW5nVGFnTmFtZT1mdW5jdGlvbih0KXsoIj4iPT09dHx8bih0KSkmJih0aGlzLl9lbWl0VG9rZW4oIm9uY2xvc2V0YWciKSx0aGlzLl9zdGF0ZT15LHRoaXMuX2luZGV4LS0pfSxhLnByb3RvdHlwZS5fc3RhdGVBZnRlckNsb3NlaW5nVGFnTmFtZT1mdW5jdGlvbih0KXsiPiI9PT10JiYodGhpcy5fc3RhdGU9cCx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSl9LGEucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZU5hbWU9ZnVuY3Rpb24odCl7Ij4iPT09dD8odGhpcy5fY2JzLm9ub3BlbnRhZ2VuZCgpLHRoaXMuX3N0YXRlPXAsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOiIvIj09PXQ/dGhpcy5fc3RhdGU9XzpuKHQpfHwodGhpcy5fc3RhdGU9dyx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxhLnByb3RvdHlwZS5fc3RhdGVJblNlbGZDbG9zaW5nVGFnPWZ1bmN0aW9uKHQpeyI+Ij09PXQ/KHRoaXMuX2Nicy5vbnNlbGZjbG9zaW5ndGFnKCksdGhpcy5fc3RhdGU9cCx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6bih0KXx8KHRoaXMuX3N0YXRlPXYsdGhpcy5faW5kZXgtLSl9LGEucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlTmFtZT1mdW5jdGlvbih0KXsoIj0iPT09dHx8Ii8iPT09dHx8Ij4iPT09dHx8bih0KSkmJih0aGlzLl9jYnMub25hdHRyaWJuYW1lKHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fc2VjdGlvblN0YXJ0PS0xLHRoaXMuX3N0YXRlPXgsdGhpcy5faW5kZXgtLSl9LGEucHJvdG90eXBlLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZT1mdW5jdGlvbih0KXsiPSI9PT10P3RoaXMuX3N0YXRlPVM6Ii8iPT09dHx8Ij4iPT09dD8odGhpcy5fY2JzLm9uYXR0cmliZW5kKCksdGhpcy5fc3RhdGU9dix0aGlzLl9pbmRleC0tKTpuKHQpfHwodGhpcy5fY2JzLm9uYXR0cmliZW5kKCksdGhpcy5fc3RhdGU9dyx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbih0KXsnIic9PT10Pyh0aGlzLl9zdGF0ZT1FLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKToiJyI9PT10Pyh0aGlzLl9zdGF0ZT1ULHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKTpuKHQpfHwodGhpcy5fc3RhdGU9QSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgsdGhpcy5faW5kZXgtLSl9LGEucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZXM9ZnVuY3Rpb24odCl7JyInPT09dD8odGhpcy5fZW1pdFRva2VuKCJvbmF0dHJpYmRhdGEiKSx0aGlzLl9jYnMub25hdHRyaWJlbmQoKSx0aGlzLl9zdGF0ZT12KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmIiYiPT09dCYmKHRoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIiksdGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlLHRoaXMuX3N0YXRlPXV0LHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LGEucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZXM9ZnVuY3Rpb24odCl7IiciPT09dD8odGhpcy5fZW1pdFRva2VuKCJvbmF0dHJpYmRhdGEiKSx0aGlzLl9jYnMub25hdHRyaWJlbmQoKSx0aGlzLl9zdGF0ZT12KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmIiYiPT09dCYmKHRoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIiksdGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlLHRoaXMuX3N0YXRlPXV0LHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LGEucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVOb1F1b3Rlcz1mdW5jdGlvbih0KXtuKHQpfHwiPiI9PT10Pyh0aGlzLl9lbWl0VG9rZW4oIm9uYXR0cmliZGF0YSIpLHRoaXMuX2Nicy5vbmF0dHJpYmVuZCgpLHRoaXMuX3N0YXRlPXYsdGhpcy5faW5kZXgtLSk6dGhpcy5fZGVjb2RlRW50aXRpZXMmJiImIj09PXQmJih0aGlzLl9lbWl0VG9rZW4oIm9uYXR0cmliZGF0YSIpLHRoaXMuX2Jhc2VTdGF0ZT10aGlzLl9zdGF0ZSx0aGlzLl9zdGF0ZT11dCx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVEZWNsYXJhdGlvbj1mdW5jdGlvbih0KXt0aGlzLl9zdGF0ZT0iWyI9PT10P2o6Ii0iPT09dD9SOkx9LGEucHJvdG90eXBlLl9zdGF0ZUluRGVjbGFyYXRpb249ZnVuY3Rpb24odCl7Ij4iPT09dCYmKHRoaXMuX2Nicy5vbmRlY2xhcmF0aW9uKHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fc3RhdGU9cCx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSl9LGEucHJvdG90eXBlLl9zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uPWZ1bmN0aW9uKHQpeyI+Ij09PXQmJih0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24odGhpcy5fZ2V0U2VjdGlvbigpKSx0aGlzLl9zdGF0ZT1wLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKX0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ29tbWVudD1mdW5jdGlvbih0KXsiLSI9PT10Pyh0aGlzLl9zdGF0ZT1DLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKTp0aGlzLl9zdGF0ZT1MfSxhLnByb3RvdHlwZS5fc3RhdGVJbkNvbW1lbnQ9ZnVuY3Rpb24odCl7Ii0iPT09dCYmKHRoaXMuX3N0YXRlPUIpfSxhLnByb3RvdHlwZS5fc3RhdGVBZnRlckNvbW1lbnQxPWZ1bmN0aW9uKHQpeyItIj09PXQ/dGhpcy5fc3RhdGU9RDp0aGlzLl9zdGF0ZT1DfSxhLnByb3RvdHlwZS5fc3RhdGVBZnRlckNvbW1lbnQyPWZ1bmN0aW9uKHQpeyI+Ij09PXQ/KHRoaXMuX2Nicy5vbmNvbW1lbnQodGhpcy5fYnVmZmVyLnN1YnN0cmluZyh0aGlzLl9zZWN0aW9uU3RhcnQsdGhpcy5faW5kZXgtMikpLHRoaXMuX3N0YXRlPXAsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOiItIiE9PXQmJih0aGlzLl9zdGF0ZT1DKX0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGExPXMoIkMiLE4sTCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGEyPXMoIkQiLE8sTCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGEzPXMoIkEiLE0sTCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGE0PXMoIlQiLEksTCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGE1PXMoIkEiLFAsTCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGE2PWZ1bmN0aW9uKHQpeyJbIj09PXQ/KHRoaXMuX3N0YXRlPVUsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOih0aGlzLl9zdGF0ZT1MLHRoaXMuX2luZGV4LS0pfSxhLnByb3RvdHlwZS5fc3RhdGVJbkNkYXRhPWZ1bmN0aW9uKHQpeyJdIj09PXQmJih0aGlzLl9zdGF0ZT1IKX0sYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJDZGF0YTE9aSgiXSIsViksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJDZGF0YTI9ZnVuY3Rpb24odCl7Ij4iPT09dD8odGhpcy5fY2JzLm9uY2RhdGEodGhpcy5fYnVmZmVyLnN1YnN0cmluZyh0aGlzLl9zZWN0aW9uU3RhcnQsdGhpcy5faW5kZXgtMikpLHRoaXMuX3N0YXRlPXAsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOiJdIiE9PXQmJih0aGlzLl9zdGF0ZT1VKX0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3BlY2lhbD1mdW5jdGlvbih0KXsiYyI9PT10fHwiQyI9PT10P3RoaXMuX3N0YXRlPUY6InQiPT09dHx8IlQiPT09dD90aGlzLl9zdGF0ZT1ldDoodGhpcy5fc3RhdGU9Zyx0aGlzLl9pbmRleC0tKX0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3BlY2lhbEVuZD1mdW5jdGlvbih0KXt0aGlzLl9zcGVjaWFsIT09X3R8fCJjIiE9PXQmJiJDIiE9PXQ/dGhpcy5fc3BlY2lhbCE9PW10fHwidCIhPT10JiYiVCIhPT10P3RoaXMuX3N0YXRlPXA6dGhpcy5fc3RhdGU9c3Q6dGhpcy5fc3RhdGU9Sn0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU2NyaXB0MT1vKCJSIixHKSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTY3JpcHQyPW8oIkkiLFcpLGEucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDM9bygiUCIsWCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU2NyaXB0ND1vKCJUIixRKSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTY3JpcHQ1PWZ1bmN0aW9uKHQpeygiLyI9PT10fHwiPiI9PT10fHxuKHQpKSYmKHRoaXMuX3NwZWNpYWw9X3QpLHRoaXMuX3N0YXRlPWcsdGhpcy5faW5kZXgtLX0sYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQxPXMoIlIiLFoscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQyPXMoIkkiLEsscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQzPXMoIlAiLCQscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQ0PXMoIlQiLHR0LHApLGEucHJvdG90eXBlLl9zdGF0ZUFmdGVyU2NyaXB0NT1mdW5jdGlvbih0KXsiPiI9PT10fHxuKHQpPyh0aGlzLl9zcGVjaWFsPWd0LHRoaXMuX3N0YXRlPWIsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4LTYsdGhpcy5faW5kZXgtLSk6dGhpcy5fc3RhdGU9cH0sYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3R5bGUxPW8oIlkiLHJ0KSxhLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTdHlsZTI9bygiTCIsbnQpLGEucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVN0eWxlMz1vKCJFIixpdCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3R5bGU0PWZ1bmN0aW9uKHQpeygiLyI9PT10fHwiPiI9PT10fHxuKHQpKSYmKHRoaXMuX3NwZWNpYWw9bXQpLHRoaXMuX3N0YXRlPWcsdGhpcy5faW5kZXgtLX0sYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTE9cygiWSIsb3QscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTI9cygiTCIsYXQscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTM9cygiRSIsY3QscCksYS5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTQ9ZnVuY3Rpb24odCl7Ij4iPT09dHx8bih0KT8odGhpcy5fc3BlY2lhbD1ndCx0aGlzLl9zdGF0ZT1iLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleC01LHRoaXMuX2luZGV4LS0pOnRoaXMuX3N0YXRlPXB9LGEucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUVudGl0eT1zKCIjIixodCxsdCksYS5wcm90b3R5cGUuX3N0YXRlQmVmb3JlTnVtZXJpY0VudGl0eT1zKCJYIixwdCxmdCksYS5wcm90b3R5cGUuX3BhcnNlTmFtZWRFbnRpdHlTdHJpY3Q9ZnVuY3Rpb24oKXtpZih0aGlzLl9zZWN0aW9uU3RhcnQrMTx0aGlzLl9pbmRleCl7dmFyIHQ9dGhpcy5fYnVmZmVyLnN1YnN0cmluZyh0aGlzLl9zZWN0aW9uU3RhcnQrMSx0aGlzLl9pbmRleCksZT10aGlzLl94bWxNb2RlP2w6dTtlLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5fZW1pdFBhcnRpYWwoZVt0XSksdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpfX0sYS5wcm90b3R5cGUuX3BhcnNlTGVnYWN5RW50aXR5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VjdGlvblN0YXJ0KzEsZT10aGlzLl9pbmRleC10O2ZvcihlPjYmJihlPTYpO2U+PTI7KXt2YXIgcj10aGlzLl9idWZmZXIuc3Vic3RyKHQsZSk7aWYoaC5oYXNPd25Qcm9wZXJ0eShyKSlyZXR1cm4gdGhpcy5fZW1pdFBhcnRpYWwoaFtyXSksdm9pZCh0aGlzLl9zZWN0aW9uU3RhcnQrPWUrMSk7ZS0tfX0sYS5wcm90b3R5cGUuX3N0YXRlSW5OYW1lZEVudGl0eT1mdW5jdGlvbih0KXsiOyI9PT10Pyh0aGlzLl9wYXJzZU5hbWVkRW50aXR5U3RyaWN0KCksdGhpcy5fc2VjdGlvblN0YXJ0KzE8dGhpcy5faW5kZXgmJiF0aGlzLl94bWxNb2RlJiZ0aGlzLl9wYXJzZUxlZ2FjeUVudGl0eSgpLHRoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZSk6KHQ8ImEifHx0PiJ6IikmJih0PCJBInx8dD4iWiIpJiYodDwiMCJ8fHQ+IjkiKSYmKHRoaXMuX3htbE1vZGV8fHRoaXMuX3NlY3Rpb25TdGFydCsxPT09dGhpcy5faW5kZXh8fCh0aGlzLl9iYXNlU3RhdGUhPT1wPyI9IiE9PXQmJnRoaXMuX3BhcnNlTmFtZWRFbnRpdHlTdHJpY3QoKTp0aGlzLl9wYXJzZUxlZ2FjeUVudGl0eSgpKSx0aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGUsdGhpcy5faW5kZXgtLSl9LGEucHJvdG90eXBlLl9kZWNvZGVOdW1lcmljRW50aXR5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fc2VjdGlvblN0YXJ0K3Q7aWYociE9PXRoaXMuX2luZGV4KXt2YXIgbj10aGlzLl9idWZmZXIuc3Vic3RyaW5nKHIsdGhpcy5faW5kZXgpLGk9cGFyc2VJbnQobixlKTt0aGlzLl9lbWl0UGFydGlhbChjKGkpKSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXh9ZWxzZSB0aGlzLl9zZWN0aW9uU3RhcnQtLTt0aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGV9LGEucHJvdG90eXBlLl9zdGF0ZUluTnVtZXJpY0VudGl0eT1mdW5jdGlvbih0KXsiOyI9PT10Pyh0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDIsMTApLHRoaXMuX3NlY3Rpb25TdGFydCsrKToodDwiMCJ8fHQ+IjkiKSYmKHRoaXMuX3htbE1vZGU/dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlOnRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMiwxMCksdGhpcy5faW5kZXgtLSl9LGEucHJvdG90eXBlLl9zdGF0ZUluSGV4RW50aXR5PWZ1bmN0aW9uKHQpeyI7Ij09PXQ/KHRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMywxNiksdGhpcy5fc2VjdGlvblN0YXJ0KyspOih0PCJhInx8dD4iZiIpJiYodDwiQSJ8fHQ+IkYiKSYmKHQ8IjAifHx0PiI5IikmJih0aGlzLl94bWxNb2RlP3RoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZTp0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDMsMTYpLHRoaXMuX2luZGV4LS0pfSxhLnByb3RvdHlwZS5fY2xlYW51cD1mdW5jdGlvbigpe3RoaXMuX3NlY3Rpb25TdGFydDwwPyh0aGlzLl9idWZmZXI9IiIsdGhpcy5faW5kZXg9MCx0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX2luZGV4KTp0aGlzLl9ydW5uaW5nJiYodGhpcy5fc3RhdGU9PT1wPyh0aGlzLl9zZWN0aW9uU3RhcnQhPT10aGlzLl9pbmRleCYmdGhpcy5fY2JzLm9udGV4dCh0aGlzLl9idWZmZXIuc3Vic3RyKHRoaXMuX3NlY3Rpb25TdGFydCkpLHRoaXMuX2J1ZmZlcj0iIix0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX2luZGV4LHRoaXMuX2luZGV4PTApOnRoaXMuX3NlY3Rpb25TdGFydD09PXRoaXMuX2luZGV4Pyh0aGlzLl9idWZmZXI9IiIsdGhpcy5fYnVmZmVyT2Zmc2V0Kz10aGlzLl9pbmRleCx0aGlzLl9pbmRleD0wKToodGhpcy5fYnVmZmVyPXRoaXMuX2J1ZmZlci5zdWJzdHIodGhpcy5fc2VjdGlvblN0YXJ0KSx0aGlzLl9pbmRleC09dGhpcy5fc2VjdGlvblN0YXJ0LHRoaXMuX2J1ZmZlck9mZnNldCs9dGhpcy5fc2VjdGlvblN0YXJ0KSx0aGlzLl9zZWN0aW9uU3RhcnQ9MCl9LGEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2VuZGVkJiZ0aGlzLl9jYnMub25lcnJvcihFcnJvcigiLndyaXRlKCkgYWZ0ZXIgZG9uZSEiKSksdGhpcy5fYnVmZmVyKz10LHRoaXMuX3BhcnNlKCl9LGEucHJvdG90eXBlLl9wYXJzZT1mdW5jdGlvbigpe2Zvcig7dGhpcy5faW5kZXg8dGhpcy5fYnVmZmVyLmxlbmd0aCYmdGhpcy5fcnVubmluZzspe3ZhciB0PXRoaXMuX2J1ZmZlci5jaGFyQXQodGhpcy5faW5kZXgpO3RoaXMuX3N0YXRlPT09cD90aGlzLl9zdGF0ZVRleHQodCk6dGhpcy5fc3RhdGU9PT1kP3RoaXMuX3N0YXRlQmVmb3JlVGFnTmFtZSh0KTp0aGlzLl9zdGF0ZT09PWc/dGhpcy5fc3RhdGVJblRhZ05hbWUodCk6dGhpcy5fc3RhdGU9PT1tP3RoaXMuX3N0YXRlQmVmb3JlQ2xvc2VpbmdUYWdOYW1lKHQpOnRoaXMuX3N0YXRlPT09Yj90aGlzLl9zdGF0ZUluQ2xvc2VpbmdUYWdOYW1lKHQpOnRoaXMuX3N0YXRlPT09eT90aGlzLl9zdGF0ZUFmdGVyQ2xvc2VpbmdUYWdOYW1lKHQpOnRoaXMuX3N0YXRlPT09Xz90aGlzLl9zdGF0ZUluU2VsZkNsb3NpbmdUYWcodCk6dGhpcy5fc3RhdGU9PT12P3RoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZSh0KTp0aGlzLl9zdGF0ZT09PXc/dGhpcy5fc3RhdGVJbkF0dHJpYnV0ZU5hbWUodCk6dGhpcy5fc3RhdGU9PT14P3RoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKHQpOnRoaXMuX3N0YXRlPT09Uz90aGlzLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZVZhbHVlKHQpOnRoaXMuX3N0YXRlPT09RT90aGlzLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZXModCk6dGhpcy5fc3RhdGU9PT1UP3RoaXMuX3N0YXRlSW5BdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3Rlcyh0KTp0aGlzLl9zdGF0ZT09PUE/dGhpcy5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlTm9RdW90ZXModCk6dGhpcy5fc3RhdGU9PT1rP3RoaXMuX3N0YXRlQmVmb3JlRGVjbGFyYXRpb24odCk6dGhpcy5fc3RhdGU9PT1MP3RoaXMuX3N0YXRlSW5EZWNsYXJhdGlvbih0KTp0aGlzLl9zdGF0ZT09PXE/dGhpcy5fc3RhdGVJblByb2Nlc3NpbmdJbnN0cnVjdGlvbih0KTp0aGlzLl9zdGF0ZT09PVI/dGhpcy5fc3RhdGVCZWZvcmVDb21tZW50KHQpOnRoaXMuX3N0YXRlPT09Qz90aGlzLl9zdGF0ZUluQ29tbWVudCh0KTp0aGlzLl9zdGF0ZT09PUI/dGhpcy5fc3RhdGVBZnRlckNvbW1lbnQxKHQpOnRoaXMuX3N0YXRlPT09RD90aGlzLl9zdGF0ZUFmdGVyQ29tbWVudDIodCk6dGhpcy5fc3RhdGU9PT1qP3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGExKHQpOnRoaXMuX3N0YXRlPT09Tj90aGlzLl9zdGF0ZUJlZm9yZUNkYXRhMih0KTp0aGlzLl9zdGF0ZT09PU8/dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTModCk6dGhpcy5fc3RhdGU9PT1NP3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGE0KHQpOnRoaXMuX3N0YXRlPT09ST90aGlzLl9zdGF0ZUJlZm9yZUNkYXRhNSh0KTp0aGlzLl9zdGF0ZT09PVA/dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTYodCk6dGhpcy5fc3RhdGU9PT1VP3RoaXMuX3N0YXRlSW5DZGF0YSh0KTp0aGlzLl9zdGF0ZT09PUg/dGhpcy5fc3RhdGVBZnRlckNkYXRhMSh0KTp0aGlzLl9zdGF0ZT09PVY/dGhpcy5fc3RhdGVBZnRlckNkYXRhMih0KTp0aGlzLl9zdGF0ZT09PXo/dGhpcy5fc3RhdGVCZWZvcmVTcGVjaWFsKHQpOnRoaXMuX3N0YXRlPT09WT90aGlzLl9zdGF0ZUJlZm9yZVNwZWNpYWxFbmQodCk6dGhpcy5fc3RhdGU9PT1GP3RoaXMuX3N0YXRlQmVmb3JlU2NyaXB0MSh0KTp0aGlzLl9zdGF0ZT09PUc/dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQyKHQpOnRoaXMuX3N0YXRlPT09Vz90aGlzLl9zdGF0ZUJlZm9yZVNjcmlwdDModCk6dGhpcy5fc3RhdGU9PT1YP3RoaXMuX3N0YXRlQmVmb3JlU2NyaXB0NCh0KTp0aGlzLl9zdGF0ZT09PVE/dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQ1KHQpOnRoaXMuX3N0YXRlPT09Sj90aGlzLl9zdGF0ZUFmdGVyU2NyaXB0MSh0KTp0aGlzLl9zdGF0ZT09PVo/dGhpcy5fc3RhdGVBZnRlclNjcmlwdDIodCk6dGhpcy5fc3RhdGU9PT1LP3RoaXMuX3N0YXRlQWZ0ZXJTY3JpcHQzKHQpOnRoaXMuX3N0YXRlPT09JD90aGlzLl9zdGF0ZUFmdGVyU2NyaXB0NCh0KTp0aGlzLl9zdGF0ZT09PXR0P3RoaXMuX3N0YXRlQWZ0ZXJTY3JpcHQ1KHQpOnRoaXMuX3N0YXRlPT09ZXQ/dGhpcy5fc3RhdGVCZWZvcmVTdHlsZTEodCk6dGhpcy5fc3RhdGU9PT1ydD90aGlzLl9zdGF0ZUJlZm9yZVN0eWxlMih0KTp0aGlzLl9zdGF0ZT09PW50P3RoaXMuX3N0YXRlQmVmb3JlU3R5bGUzKHQpOnRoaXMuX3N0YXRlPT09aXQ/dGhpcy5fc3RhdGVCZWZvcmVTdHlsZTQodCk6dGhpcy5fc3RhdGU9PT1zdD90aGlzLl9zdGF0ZUFmdGVyU3R5bGUxKHQpOnRoaXMuX3N0YXRlPT09b3Q/dGhpcy5fc3RhdGVBZnRlclN0eWxlMih0KTp0aGlzLl9zdGF0ZT09PWF0P3RoaXMuX3N0YXRlQWZ0ZXJTdHlsZTModCk6dGhpcy5fc3RhdGU9PT1jdD90aGlzLl9zdGF0ZUFmdGVyU3R5bGU0KHQpOnRoaXMuX3N0YXRlPT09dXQ/dGhpcy5fc3RhdGVCZWZvcmVFbnRpdHkodCk6dGhpcy5fc3RhdGU9PT1odD90aGlzLl9zdGF0ZUJlZm9yZU51bWVyaWNFbnRpdHkodCk6dGhpcy5fc3RhdGU9PT1sdD90aGlzLl9zdGF0ZUluTmFtZWRFbnRpdHkodCk6dGhpcy5fc3RhdGU9PT1mdD90aGlzLl9zdGF0ZUluTnVtZXJpY0VudGl0eSh0KTp0aGlzLl9zdGF0ZT09PXB0P3RoaXMuX3N0YXRlSW5IZXhFbnRpdHkodCk6dGhpcy5fY2JzLm9uZXJyb3IoRXJyb3IoInVua25vd24gX3N0YXRlIiksdGhpcy5fc3RhdGUpLHRoaXMuX2luZGV4Kyt9dGhpcy5fY2xlYW51cCgpfSxhLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3RoaXMuX3J1bm5pbmc9ITF9LGEucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3RoaXMuX3J1bm5pbmc9ITAsdGhpcy5faW5kZXg8dGhpcy5fYnVmZmVyLmxlbmd0aCYmdGhpcy5fcGFyc2UoKSx0aGlzLl9lbmRlZCYmdGhpcy5fZmluaXNoKCl9LGEucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt0aGlzLl9lbmRlZCYmdGhpcy5fY2JzLm9uZXJyb3IoRXJyb3IoIi5lbmQoKSBhZnRlciBkb25lISIpKSx0JiZ0aGlzLndyaXRlKHQpLHRoaXMuX2VuZGVkPSEwLHRoaXMuX3J1bm5pbmcmJnRoaXMuX2ZpbmlzaCgpfSxhLnByb3RvdHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7dGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4JiZ0aGlzLl9oYW5kbGVUcmFpbGluZ0RhdGEoKSx0aGlzLl9jYnMub25lbmQoKX0sYS5wcm90b3R5cGUuX2hhbmRsZVRyYWlsaW5nRGF0YT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2J1ZmZlci5zdWJzdHIodGhpcy5fc2VjdGlvblN0YXJ0KTt0aGlzLl9zdGF0ZT09PVV8fHRoaXMuX3N0YXRlPT09SHx8dGhpcy5fc3RhdGU9PT1WP3RoaXMuX2Nicy5vbmNkYXRhKHQpOnRoaXMuX3N0YXRlPT09Q3x8dGhpcy5fc3RhdGU9PT1CfHx0aGlzLl9zdGF0ZT09PUQ/dGhpcy5fY2JzLm9uY29tbWVudCh0KTp0aGlzLl9zdGF0ZSE9PWx0fHx0aGlzLl94bWxNb2RlP3RoaXMuX3N0YXRlIT09ZnR8fHRoaXMuX3htbE1vZGU/dGhpcy5fc3RhdGUhPT1wdHx8dGhpcy5feG1sTW9kZT90aGlzLl9zdGF0ZSE9PWcmJnRoaXMuX3N0YXRlIT09diYmdGhpcy5fc3RhdGUhPT1TJiZ0aGlzLl9zdGF0ZSE9PXgmJnRoaXMuX3N0YXRlIT09dyYmdGhpcy5fc3RhdGUhPT1UJiZ0aGlzLl9zdGF0ZSE9PUUmJnRoaXMuX3N0YXRlIT09QSYmdGhpcy5fc3RhdGUhPT1iJiZ0aGlzLl9jYnMub250ZXh0KHQpOih0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDMsMTYpLHRoaXMuX3NlY3Rpb25TdGFydDx0aGlzLl9pbmRleCYmKHRoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZSx0aGlzLl9oYW5kbGVUcmFpbGluZ0RhdGEoKSkpOih0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDIsMTApLHRoaXMuX3NlY3Rpb25TdGFydDx0aGlzLl9pbmRleCYmKHRoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZSx0aGlzLl9oYW5kbGVUcmFpbGluZ0RhdGEoKSkpOih0aGlzLl9wYXJzZUxlZ2FjeUVudGl0eSgpLHRoaXMuX3NlY3Rpb25TdGFydDx0aGlzLl9pbmRleCYmKHRoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZSx0aGlzLl9oYW5kbGVUcmFpbGluZ0RhdGEoKSkpfSxhLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe2EuY2FsbCh0aGlzLHt4bWxNb2RlOnRoaXMuX3htbE1vZGUsZGVjb2RlRW50aXRpZXM6dGhpcy5fZGVjb2RlRW50aXRpZXN9LHRoaXMuX2Nicyl9LGEucHJvdG90eXBlLmdldEFic29sdXRlSW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyT2Zmc2V0K3RoaXMuX2luZGV4fSxhLnByb3RvdHlwZS5fZ2V0U2VjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXIuc3Vic3RyaW5nKHRoaXMuX3NlY3Rpb25TdGFydCx0aGlzLl9pbmRleCl9LGEucHJvdG90eXBlLl9lbWl0VG9rZW49ZnVuY3Rpb24odCl7dGhpcy5fY2JzW3RdKHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fc2VjdGlvblN0YXJ0PS0xfSxhLnByb3RvdHlwZS5fZW1pdFBhcnRpYWw9ZnVuY3Rpb24odCl7dGhpcy5fYmFzZVN0YXRlIT09cD90aGlzLl9jYnMub25hdHRyaWJkYXRhKHQpOnRoaXMuX2Nicy5vbnRleHQodCl9fSx7ImVudGl0aWVzL2xpYi9kZWNvZGVfY29kZXBvaW50LmpzIjoyMiwiZW50aXRpZXMvbWFwcy9lbnRpdGllcy5qc29uIjoyNSwiZW50aXRpZXMvbWFwcy9sZWdhY3kuanNvbiI6MjYsImVudGl0aWVzL21hcHMveG1sLmpzb24iOjI3fV0sMzU6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9dGhpcy5fcGFyc2VyPW5ldyBpKHQsZSksbj10aGlzLl9kZWNvZGVyPW5ldyBvO3MuY2FsbCh0aGlzLHtkZWNvZGVTdHJpbmdzOiExfSksdGhpcy5vbmNlKCJmaW5pc2giLGZ1bmN0aW9uKCl7ci5lbmQobi5lbmQoKSl9KX1lLmV4cG9ydHM9bjt2YXIgaT10KCIuL1BhcnNlci5qcyIpLHM9dCgic3RyZWFtIikuV3JpdGFibGV8fHQoInJlYWRhYmxlLXN0cmVhbSIpLldyaXRhYmxlLG89dCgic3RyaW5nX2RlY29kZXIiKS5TdHJpbmdEZWNvZGVyLGE9dCgiYnVmZmVyIikuQnVmZmVyO3QoImluaGVyaXRzIikobixzKSxzLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3QgaW5zdGFuY2VvZiBhJiYodD10aGlzLl9kZWNvZGVyLndyaXRlKHQpKSx0aGlzLl9wYXJzZXIud3JpdGUodCkscigpfX0seyIuL1BhcnNlci5qcyI6MzEsYnVmZmVyOjUsaW5oZXJpdHM6MzgsInJlYWRhYmxlLXN0cmVhbSI6MyxzdHJlYW06NTUsc3RyaW5nX2RlY29kZXI6NTZ9XSwzNjpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxyKXtyZXR1cm4gZGVsZXRlIGUuZXhwb3J0c1t0XSxlLmV4cG9ydHNbdF09cixyfXZhciBpPXQoIi4vUGFyc2VyLmpzIikscz10KCJkb21oYW5kbGVyIik7ZS5leHBvcnRzPXtQYXJzZXI6aSxUb2tlbml6ZXI6dCgiLi9Ub2tlbml6ZXIuanMiKSxFbGVtZW50VHlwZTp0KCJkb21lbGVtZW50dHlwZSIpLERvbUhhbmRsZXI6cyxnZXQgRmVlZEhhbmRsZXIoKXtyZXR1cm4gbigiRmVlZEhhbmRsZXIiLHQoIi4vRmVlZEhhbmRsZXIuanMiKSl9LGdldCBTdHJlYW0oKXtyZXR1cm4gbigiU3RyZWFtIix0KCIuL1N0cmVhbS5qcyIpKX0sZ2V0IFdyaXRhYmxlU3RyZWFtKCl7cmV0dXJuIG4oIldyaXRhYmxlU3RyZWFtIix0KCIuL1dyaXRhYmxlU3RyZWFtLmpzIikpOworfSxnZXQgUHJveHlIYW5kbGVyKCl7cmV0dXJuIG4oIlByb3h5SGFuZGxlciIsdCgiLi9Qcm94eUhhbmRsZXIuanMiKSl9LGdldCBEb21VdGlscygpe3JldHVybiBuKCJEb21VdGlscyIsdCgiZG9tdXRpbHMiKSl9LGdldCBDb2xsZWN0aW5nSGFuZGxlcigpe3JldHVybiBuKCJDb2xsZWN0aW5nSGFuZGxlciIsdCgiLi9Db2xsZWN0aW5nSGFuZGxlci5qcyIpKX0sRGVmYXVsdEhhbmRsZXI6cyxnZXQgUnNzSGFuZGxlcigpe3JldHVybiBuKCJSc3NIYW5kbGVyIix0aGlzLkZlZWRIYW5kbGVyKX0scGFyc2VET006ZnVuY3Rpb24odCxlKXt2YXIgcj1uZXcgcyhlKTtyZXR1cm4gbmV3IGkocixlKS5lbmQodCksci5kb219LHBhcnNlRmVlZDpmdW5jdGlvbih0LHIpe3ZhciBuPW5ldyBlLmV4cG9ydHMuRmVlZEhhbmRsZXIocik7cmV0dXJuIG5ldyBpKG4scikuZW5kKHQpLG4uZG9tfSxjcmVhdGVEb21TdHJlYW06ZnVuY3Rpb24odCxlLHIpe3ZhciBuPW5ldyBzKHQsZSxyKTtyZXR1cm4gbmV3IGkobixlKX0sRVZFTlRTOnthdHRyaWJ1dGU6MixjZGF0YXN0YXJ0OjAsY2RhdGFlbmQ6MCx0ZXh0OjEscHJvY2Vzc2luZ2luc3RydWN0aW9uOjIsY29tbWVudDoxLGNvbW1lbnRlbmQ6MCxjbG9zZXRhZzoxLG9wZW50YWc6MixvcGVudGFnbmFtZToxLGVycm9yOjEsZW5kOjB9fX0seyIuL0NvbGxlY3RpbmdIYW5kbGVyLmpzIjoyOSwiLi9GZWVkSGFuZGxlci5qcyI6MzAsIi4vUGFyc2VyLmpzIjozMSwiLi9Qcm94eUhhbmRsZXIuanMiOjMyLCIuL1N0cmVhbS5qcyI6MzMsIi4vVG9rZW5pemVyLmpzIjozNCwiLi9Xcml0YWJsZVN0cmVhbS5qcyI6MzUsZG9tZWxlbWVudHR5cGU6OSxkb21oYW5kbGVyOjEwLGRvbXV0aWxzOjEzfV0sMzc6W2Z1bmN0aW9uKHQsZSxyKXtyLnJlYWQ9ZnVuY3Rpb24odCxlLHIsbixpKXt2YXIgcyxvLGE9OCppLW4tMSxjPSgxPDxhKS0xLHU9Yz4+MSxoPS03LGw9cj9pLTE6MCxmPXI/LTE6MSxwPXRbZStsXTtmb3IobCs9ZixzPXAmKDE8PC1oKS0xLHA+Pj0taCxoKz1hO2g+MDtzPTI1NipzK3RbZStsXSxsKz1mLGgtPTgpO2ZvcihvPXMmKDE8PC1oKS0xLHM+Pj0taCxoKz1uO2g+MDtvPTI1NipvK3RbZStsXSxsKz1mLGgtPTgpO2lmKDA9PT1zKXM9MS11O2Vsc2V7aWYocz09PWMpcmV0dXJuIG8/TmFOOihwPy0xOjEpKigxLzApO28rPU1hdGgucG93KDIsbikscy09dX1yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIscy1uKX0sci53cml0ZT1mdW5jdGlvbih0LGUscixuLGkscyl7dmFyIG8sYSxjLHU9OCpzLWktMSxoPSgxPDx1KS0xLGw9aD4+MSxmPTIzPT09aT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6cy0xLGQ9bj8xOi0xLGc9ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJzKGUpLGlzTmFOKGUpfHxlPT09MS8wPyhhPWlzTmFOKGUpPzE6MCxvPWgpOihvPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpLGUqKGM9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sYyo9MiksZSs9bytsPj0xP2YvYzpmKk1hdGgucG93KDIsMS1sKSxlKmM+PTImJihvKyssYy89MiksbytsPj1oPyhhPTAsbz1oKTpvK2w+PTE/KGE9KGUqYy0xKSpNYXRoLnBvdygyLGkpLG8rPWwpOihhPWUqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsaSksbz0wKSk7aT49ODt0W3IrcF09MjU1JmEscCs9ZCxhLz0yNTYsaS09OCk7Zm9yKG89bzw8aXxhLHUrPWk7dT4wO3RbcitwXT0yNTUmbyxwKz1kLG8vPTI1Nix1LT04KTt0W3IrcC1kXXw9MTI4Kmd9fSx7fV0sMzg6W2Z1bmN0aW9uKHQsZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9lLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTplLmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX0se31dLDM5OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtyZXR1cm4hIXQuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZ0LmNvbnN0cnVjdG9yLmlzQnVmZmVyKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnNsaWNlJiZuKHQuc2xpY2UoMCwwKSl9ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYobih0KXx8aSh0KXx8ISF0Ll9pc0J1ZmZlcil9fSx7fV0sNDA6W2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj17fS50b1N0cmluZztlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09bi5jYWxsKHQpfX0se31dLDQxOltmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUscixuLGkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJjYWxsYmFjayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7dmFyIHMsbyxhPWFyZ3VtZW50cy5sZW5ndGg7c3dpdGNoKGEpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHQubmV4dFRpY2soZSk7Y2FzZSAyOnJldHVybiB0Lm5leHRUaWNrKGZ1bmN0aW9uKCl7ZS5jYWxsKG51bGwscil9KTtjYXNlIDM6cmV0dXJuIHQubmV4dFRpY2soZnVuY3Rpb24oKXtlLmNhbGwobnVsbCxyLG4pfSk7Y2FzZSA0OnJldHVybiB0Lm5leHRUaWNrKGZ1bmN0aW9uKCl7ZS5jYWxsKG51bGwscixuLGkpfSk7ZGVmYXVsdDpmb3Iocz1uZXcgQXJyYXkoYS0xKSxvPTA7bzxzLmxlbmd0aDspc1tvKytdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdC5uZXh0VGljayhmdW5jdGlvbigpe2UuYXBwbHkobnVsbCxzKX0pfX0hdC52ZXJzaW9ufHwwPT09dC52ZXJzaW9uLmluZGV4T2YoInYwLiIpfHwwPT09dC52ZXJzaW9uLmluZGV4T2YoInYxLiIpJiYwIT09dC52ZXJzaW9uLmluZGV4T2YoInYxLjguIik/ZS5leHBvcnRzPXI6ZS5leHBvcnRzPXQubmV4dFRpY2t9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo0Mn1dLDQyOltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGkoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHModCl7aWYobD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigobD09PW58fCFsKSYmc2V0VGltZW91dClyZXR1cm4gbD1zZXRUaW1lb3V0LHNldFRpbWVvdXQodCwwKTt0cnl7cmV0dXJuIGwodCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIGwuY2FsbChudWxsLHQsMCl9Y2F0Y2goZSl7cmV0dXJuIGwuY2FsbCh0aGlzLHQsMCl9fX1mdW5jdGlvbiBvKHQpe2lmKGY9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigoZj09PWl8fCFmKSYmY2xlYXJUaW1lb3V0KXJldHVybiBmPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3JldHVybiBmKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gZi5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIGYuY2FsbCh0aGlzLHQpfX19ZnVuY3Rpb24gYSgpe18mJmQmJihfPSExLGQubGVuZ3RoP2c9ZC5jb25jYXQoZyk6bT0tMSxnLmxlbmd0aCYmYygpKX1mdW5jdGlvbiBjKCl7aWYoIV8pe3ZhciB0PXMoYSk7Xz0hMDtmb3IodmFyIGU9Zy5sZW5ndGg7ZTspe2ZvcihkPWcsZz1bXTsrK208ZTspZCYmZFttXS5ydW4oKTttPS0xLGU9Zy5sZW5ndGh9ZD1udWxsLF89ITEsbyh0KX19ZnVuY3Rpb24gdSh0LGUpe3RoaXMuZnVuPXQsdGhpcy5hcnJheT1lfWZ1bmN0aW9uIGgoKXt9dmFyIGwsZixwPWUuZXhwb3J0cz17fTshZnVuY3Rpb24oKXt0cnl7bD0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59Y2F0Y2godCl7bD1ufXRyeXtmPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Oml9Y2F0Y2godCl7Zj1pfX0oKTt2YXIgZCxnPVtdLF89ITEsbT0tMTtwLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWVbci0xXT1hcmd1bWVudHNbcl07Zy5wdXNoKG5ldyB1KHQsZSkpLDEhPT1nLmxlbmd0aHx8X3x8cyhjKX0sdS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0scC50aXRsZT0iYnJvd3NlciIscC5icm93c2VyPSEwLHAuZW52PXt9LHAuYXJndj1bXSxwLnZlcnNpb249IiIscC52ZXJzaW9ucz17fSxwLm9uPWgscC5hZGRMaXN0ZW5lcj1oLHAub25jZT1oLHAub2ZmPWgscC5yZW1vdmVMaXN0ZW5lcj1oLHAucmVtb3ZlQWxsTGlzdGVuZXJzPWgscC5lbWl0PWgscC5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0scC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LHAuY2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0scC51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0se31dLDQzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4vbGliL19zdHJlYW1fZHVwbGV4LmpzIil9LHsiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiOjQ0fV0sNDQ6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KHUuY2FsbCh0aGlzLHQpLGguY2FsbCh0aGlzLHQpLHQmJnQucmVhZGFibGU9PT0hMSYmKHRoaXMucmVhZGFibGU9ITEpLHQmJnQud3JpdGFibGU9PT0hMSYmKHRoaXMud3JpdGFibGU9ITEpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCx0JiZ0LmFsbG93SGFsZk9wZW49PT0hMSYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSksdm9pZCB0aGlzLm9uY2UoImVuZCIsaSkpOm5ldyBuKHQpfWZ1bmN0aW9uIGkoKXt0aGlzLmFsbG93SGFsZk9wZW58fHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fGEocyx0aGlzKX1mdW5jdGlvbiBzKHQpe3QuZW5kKCl9dmFyIG89T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4gZX07ZS5leHBvcnRzPW47dmFyIGE9dCgicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiKSxjPXQoImNvcmUtdXRpbC1pcyIpO2MuaW5oZXJpdHM9dCgiaW5oZXJpdHMiKTt2YXIgdT10KCIuL19zdHJlYW1fcmVhZGFibGUiKSxoPXQoIi4vX3N0cmVhbV93cml0YWJsZSIpO2MuaW5oZXJpdHMobix1KTtmb3IodmFyIGw9byhoLnByb3RvdHlwZSksZj0wO2Y8bC5sZW5ndGg7ZisrKXt2YXIgcD1sW2ZdO24ucHJvdG90eXBlW3BdfHwobi5wcm90b3R5cGVbcF09aC5wcm90b3R5cGVbcF0pfX0seyIuL19zdHJlYW1fcmVhZGFibGUiOjQ2LCIuL19zdHJlYW1fd3JpdGFibGUiOjQ4LCJjb3JlLXV0aWwtaXMiOjYsaW5oZXJpdHM6MzgsInByb2Nlc3MtbmV4dGljay1hcmdzIjo0MX1dLDQ1OltmdW5jdGlvbih0LGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuP3ZvaWQgaS5jYWxsKHRoaXMsdCk6bmV3IG4odCl9ZS5leHBvcnRzPW47dmFyIGk9dCgiLi9fc3RyZWFtX3RyYW5zZm9ybSIpLHM9dCgiY29yZS11dGlsLWlzIik7cy5pbmhlcml0cz10KCJpbmhlcml0cyIpLHMuaW5oZXJpdHMobixpKSxuLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtyKG51bGwsdCl9fSx7Ii4vX3N0cmVhbV90cmFuc2Zvcm0iOjQ3LCJjb3JlLXV0aWwtaXMiOjYsaW5oZXJpdHM6Mzh9XSw0NjpbZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlcGVuZExpc3RlbmVyP3QucHJlcGVuZExpc3RlbmVyKGUscik6dm9pZCh0Ll9ldmVudHMmJnQuX2V2ZW50c1tlXT9SKHQuX2V2ZW50c1tlXSk/dC5fZXZlbnRzW2VdLnVuc2hpZnQocik6dC5fZXZlbnRzW2VdPVtyLHQuX2V2ZW50c1tlXV06dC5vbihlLHIpKX1mdW5jdGlvbiBpKGUscil7VT1VfHx0KCIuL19zdHJlYW1fZHVwbGV4IiksZT1lfHx7fSx0aGlzLm9iamVjdE1vZGU9ISFlLm9iamVjdE1vZGUsciBpbnN0YW5jZW9mIFUmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWUucmVhZGFibGVPYmplY3RNb2RlKTt2YXIgbj1lLmhpZ2hXYXRlck1hcmssaT10aGlzLm9iamVjdE1vZGU/MTY6MTYzODQ7dGhpcy5oaWdoV2F0ZXJNYXJrPW58fDA9PT1uP246aSx0aGlzLmhpZ2hXYXRlck1hcms9fn50aGlzLmhpZ2hXYXRlck1hcmssdGhpcy5idWZmZXI9bmV3IFAsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPWUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5yYW5PdXQ9ITEsdGhpcy5hd2FpdERyYWluPTAsdGhpcy5yZWFkaW5nTW9yZT0hMSx0aGlzLmRlY29kZXI9bnVsbCx0aGlzLmVuY29kaW5nPW51bGwsZS5lbmNvZGluZyYmKEl8fChJPXQoInN0cmluZ19kZWNvZGVyLyIpLlN0cmluZ0RlY29kZXIpLHRoaXMuZGVjb2Rlcj1uZXcgSShlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPWUuZW5jb2RpbmcpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIFU9VXx8dCgiLi9fc3RyZWFtX2R1cGxleCIpLHRoaXMgaW5zdGFuY2VvZiBzPyh0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBpKGUsdGhpcyksdGhpcy5yZWFkYWJsZT0hMCxlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkJiYodGhpcy5fcmVhZD1lLnJlYWQpLHZvaWQgQy5jYWxsKHRoaXMpKTpuZXcgcyhlKX1mdW5jdGlvbiBvKHQsZSxyLG4saSl7dmFyIHM9aChlLHIpO2lmKHMpdC5lbWl0KCJlcnJvciIscyk7ZWxzZSBpZihudWxsPT09cillLnJlYWRpbmc9ITEsbCh0LGUpO2Vsc2UgaWYoZS5vYmplY3RNb2RlfHxyJiZyLmxlbmd0aD4wKWlmKGUuZW5kZWQmJiFpKXt2YXIgbz1uZXcgRXJyb3IoInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GIik7dC5lbWl0KCJlcnJvciIsbyl9ZWxzZSBpZihlLmVuZEVtaXR0ZWQmJmkpe3ZhciBjPW5ldyBFcnJvcigic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQiKTt0LmVtaXQoImVycm9yIixjKX1lbHNle3ZhciB1OyFlLmRlY29kZXJ8fGl8fG58fChyPWUuZGVjb2Rlci53cml0ZShyKSx1PSFlLm9iamVjdE1vZGUmJjA9PT1yLmxlbmd0aCksaXx8KGUucmVhZGluZz0hMSksdXx8KGUuZmxvd2luZyYmMD09PWUubGVuZ3RoJiYhZS5zeW5jPyh0LmVtaXQoImRhdGEiLHIpLHQucmVhZCgwKSk6KGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCxpP2UuYnVmZmVyLnVuc2hpZnQocik6ZS5idWZmZXIucHVzaChyKSxlLm5lZWRSZWFkYWJsZSYmZih0KSkpLGQodCxlKX1lbHNlIGl8fChlLnJlYWRpbmc9ITEpO3JldHVybiBhKGUpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIXQuZW5kZWQmJih0Lm5lZWRSZWFkYWJsZXx8dC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrfHwwPT09dC5sZW5ndGgpfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQ+PUg/dD1IOih0LS0sdHw9dD4+PjEsdHw9dD4+PjIsdHw9dD4+PjQsdHw9dD4+PjgsdHw9dD4+PjE2LHQrKyksdH1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIHQ8PTB8fDA9PT1lLmxlbmd0aCYmZS5lbmRlZD8wOmUub2JqZWN0TW9kZT8xOnQhPT10P2UuZmxvd2luZyYmZS5sZW5ndGg/ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDplLmxlbmd0aDoodD5lLmhpZ2hXYXRlck1hcmsmJihlLmhpZ2hXYXRlck1hcms9Yyh0KSksdDw9ZS5sZW5ndGg/dDplLmVuZGVkP2UubGVuZ3RoOihlLm5lZWRSZWFkYWJsZT0hMCwwKSl9ZnVuY3Rpb24gaCh0LGUpe3ZhciByPW51bGw7cmV0dXJuIEQuaXNCdWZmZXIoZSl8fCJzdHJpbmciPT10eXBlb2YgZXx8bnVsbD09PWV8fHZvaWQgMD09PWV8fHQub2JqZWN0TW9kZXx8KHI9bmV3IFR5cGVFcnJvcigiSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuayIpKSxyfWZ1bmN0aW9uIGwodCxlKXtpZighZS5lbmRlZCl7aWYoZS5kZWNvZGVyKXt2YXIgcj1lLmRlY29kZXIuZW5kKCk7ciYmci5sZW5ndGgmJihlLmJ1ZmZlci5wdXNoKHIpLGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCl9ZS5lbmRlZD0hMCxmKHQpfX1mdW5jdGlvbiBmKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7ZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChNKCJlbWl0UmVhZGFibGUiLGUuZmxvd2luZyksZS5lbWl0dGVkUmVhZGFibGU9ITAsZS5zeW5jP3EocCx0KTpwKHQpKX1mdW5jdGlvbiBwKHQpe00oImVtaXQgcmVhZGFibGUiKSx0LmVtaXQoInJlYWRhYmxlIiksdih0KX1mdW5jdGlvbiBkKHQsZSl7ZS5yZWFkaW5nTW9yZXx8KGUucmVhZGluZ01vcmU9ITAscShnLHQsZSkpfWZ1bmN0aW9uIGcodCxlKXtmb3IodmFyIHI9ZS5sZW5ndGg7IWUucmVhZGluZyYmIWUuZmxvd2luZyYmIWUuZW5kZWQmJmUubGVuZ3RoPGUuaGlnaFdhdGVyTWFyayYmKE0oIm1heWJlUmVhZE1vcmUgcmVhZCAwIiksdC5yZWFkKDApLHIhPT1lLmxlbmd0aCk7KXI9ZS5sZW5ndGg7ZS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiBfKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7TSgicGlwZU9uRHJhaW4iLGUuYXdhaXREcmFpbiksZS5hd2FpdERyYWluJiZlLmF3YWl0RHJhaW4tLSwwPT09ZS5hd2FpdERyYWluJiZCKHQsImRhdGEiKSYmKGUuZmxvd2luZz0hMCx2KHQpKX19ZnVuY3Rpb24gbSh0KXtNKCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDAiKSx0LnJlYWQoMCl9ZnVuY3Rpb24gYih0LGUpe2UucmVzdW1lU2NoZWR1bGVkfHwoZS5yZXN1bWVTY2hlZHVsZWQ9ITAscSh5LHQsZSkpfWZ1bmN0aW9uIHkodCxlKXtlLnJlYWRpbmd8fChNKCJyZXN1bWUgcmVhZCAwIiksdC5yZWFkKDApKSxlLnJlc3VtZVNjaGVkdWxlZD0hMSxlLmF3YWl0RHJhaW49MCx0LmVtaXQoInJlc3VtZSIpLHYodCksZS5mbG93aW5nJiYhZS5yZWFkaW5nJiZ0LnJlYWQoMCl9ZnVuY3Rpb24gdih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO2ZvcihNKCJmbG93IixlLmZsb3dpbmcpO2UuZmxvd2luZyYmbnVsbCE9PXQucmVhZCgpOyk7fWZ1bmN0aW9uIHcodCxlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIHI7cmV0dXJuIGUub2JqZWN0TW9kZT9yPWUuYnVmZmVyLnNoaWZ0KCk6IXR8fHQ+PWUubGVuZ3RoPyhyPWUuZGVjb2Rlcj9lLmJ1ZmZlci5qb2luKCIiKToxPT09ZS5idWZmZXIubGVuZ3RoP2UuYnVmZmVyLmhlYWQuZGF0YTplLmJ1ZmZlci5jb25jYXQoZS5sZW5ndGgpLGUuYnVmZmVyLmNsZWFyKCkpOnI9eCh0LGUuYnVmZmVyLGUuZGVjb2Rlcikscn1mdW5jdGlvbiB4KHQsZSxyKXt2YXIgbjtyZXR1cm4gdDxlLmhlYWQuZGF0YS5sZW5ndGg/KG49ZS5oZWFkLmRhdGEuc2xpY2UoMCx0KSxlLmhlYWQuZGF0YT1lLmhlYWQuZGF0YS5zbGljZSh0KSk6bj10PT09ZS5oZWFkLmRhdGEubGVuZ3RoP2Uuc2hpZnQoKTpyP1ModCxlKTpFKHQsZSksbn1mdW5jdGlvbiBTKHQsZSl7dmFyIHI9ZS5oZWFkLG49MSxpPXIuZGF0YTtmb3IodC09aS5sZW5ndGg7cj1yLm5leHQ7KXt2YXIgcz1yLmRhdGEsbz10PnMubGVuZ3RoP3MubGVuZ3RoOnQ7aWYoaSs9bz09PXMubGVuZ3RoP3M6cy5zbGljZSgwLHQpLHQtPW8sMD09PXQpe289PT1zLmxlbmd0aD8oKytuLHIubmV4dD9lLmhlYWQ9ci5uZXh0OmUuaGVhZD1lLnRhaWw9bnVsbCk6KGUuaGVhZD1yLHIuZGF0YT1zLnNsaWNlKG8pKTticmVha30rK259cmV0dXJuIGUubGVuZ3RoLT1uLGl9ZnVuY3Rpb24gRSh0LGUpe3ZhciByPWouYWxsb2NVbnNhZmUodCksbj1lLmhlYWQsaT0xO2ZvcihuLmRhdGEuY29weShyKSx0LT1uLmRhdGEubGVuZ3RoO249bi5uZXh0Oyl7dmFyIHM9bi5kYXRhLG89dD5zLmxlbmd0aD9zLmxlbmd0aDp0O2lmKHMuY29weShyLHIubGVuZ3RoLXQsMCxvKSx0LT1vLDA9PT10KXtvPT09cy5sZW5ndGg/KCsraSxuLm5leHQ/ZS5oZWFkPW4ubmV4dDplLmhlYWQ9ZS50YWlsPW51bGwpOihlLmhlYWQ9bixuLmRhdGE9cy5zbGljZShvKSk7YnJlYWt9KytpfXJldHVybiBlLmxlbmd0aC09aSxyfWZ1bmN0aW9uIFQodCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtpZihlLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcignImVuZFJlYWRhYmxlKCkiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7ZS5lbmRFbWl0dGVkfHwoZS5lbmRlZD0hMCxxKEEsZSx0KSl9ZnVuY3Rpb24gQSh0LGUpe3QuZW5kRW1pdHRlZHx8MCE9PXQubGVuZ3RofHwodC5lbmRFbWl0dGVkPSEwLGUucmVhZGFibGU9ITEsZS5lbWl0KCJlbmQiKSl9ZnVuY3Rpb24gayh0LGUpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuO3IrKyllKHRbcl0scil9ZnVuY3Rpb24gTCh0LGUpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuO3IrKylpZih0W3JdPT09ZSlyZXR1cm4gcjtyZXR1cm4tMX1lLmV4cG9ydHM9czt2YXIgcT10KCJwcm9jZXNzLW5leHRpY2stYXJncyIpLFI9dCgiaXNhcnJheSIpO3MuUmVhZGFibGVTdGF0ZT1pO3ZhciBDLEI9KHQoImV2ZW50cyIpLkV2ZW50RW1pdHRlcixmdW5jdGlvbih0LGUpe3JldHVybiB0Lmxpc3RlbmVycyhlKS5sZW5ndGh9KTshZnVuY3Rpb24oKXt0cnl7Qz10KCJzdHJlYW0iKX1jYXRjaChlKXt9ZmluYWxseXtDfHwoQz10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIpfX0oKTt2YXIgRD10KCJidWZmZXIiKS5CdWZmZXIsaj10KCJidWZmZXItc2hpbXMiKSxOPXQoImNvcmUtdXRpbC1pcyIpO04uaW5oZXJpdHM9dCgiaW5oZXJpdHMiKTt2YXIgTz10KCJ1dGlsIiksTT12b2lkIDA7TT1PJiZPLmRlYnVnbG9nP08uZGVidWdsb2coInN0cmVhbSIpOmZ1bmN0aW9uKCl7fTt2YXIgSSxQPXQoIi4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Iik7Ti5pbmhlcml0cyhzLEMpO3ZhciBVLFU7cy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIHIub2JqZWN0TW9kZXx8InN0cmluZyIhPXR5cGVvZiB0fHwoZT1lfHxyLmRlZmF1bHRFbmNvZGluZyxlIT09ci5lbmNvZGluZyYmKHQ9ai5mcm9tKHQsZSksZT0iIikpLG8odGhpcyxyLHQsZSwhMSl9LHMucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gbyh0aGlzLGUsdCwiIiwhMCl9LHMucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz09PSExfSxzLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gSXx8KEk9dCgic3RyaW5nX2RlY29kZXIvIikuU3RyaW5nRGVjb2RlciksdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPW5ldyBJKGUpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9ZSx0aGlzfTt2YXIgSD04Mzg4NjA4O3MucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCl7TSgicmVhZCIsdCksdD1wYXJzZUludCh0LDEwKTt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlLHI9dDtpZigwIT09dCYmKGUuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09dCYmZS5uZWVkUmVhZGFibGUmJihlLmxlbmd0aD49ZS5oaWdoV2F0ZXJNYXJrfHxlLmVuZGVkKSlyZXR1cm4gTSgicmVhZDogZW1pdFJlYWRhYmxlIixlLmxlbmd0aCxlLmVuZGVkKSwwPT09ZS5sZW5ndGgmJmUuZW5kZWQ/VCh0aGlzKTpmKHRoaXMpLG51bGw7aWYodD11KHQsZSksMD09PXQmJmUuZW5kZWQpcmV0dXJuIDA9PT1lLmxlbmd0aCYmVCh0aGlzKSxudWxsO3ZhciBuPWUubmVlZFJlYWRhYmxlO00oIm5lZWQgcmVhZGFibGUiLG4pLCgwPT09ZS5sZW5ndGh8fGUubGVuZ3RoLXQ8ZS5oaWdoV2F0ZXJNYXJrKSYmKG49ITAsTSgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLG4pKSxlLmVuZGVkfHxlLnJlYWRpbmc/KG49ITEsTSgicmVhZGluZyBvciBlbmRlZCIsbikpOm4mJihNKCJkbyByZWFkIiksZS5yZWFkaW5nPSEwLGUuc3luYz0hMCwwPT09ZS5sZW5ndGgmJihlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChlLmhpZ2hXYXRlck1hcmspLGUuc3luYz0hMSxlLnJlYWRpbmd8fCh0PXUocixlKSkpO3ZhciBpO3JldHVybiBpPXQ+MD93KHQsZSk6bnVsbCxudWxsPT09aT8oZS5uZWVkUmVhZGFibGU9ITAsdD0wKTplLmxlbmd0aC09dCwwPT09ZS5sZW5ndGgmJihlLmVuZGVkfHwoZS5uZWVkUmVhZGFibGU9ITApLHIhPT10JiZlLmVuZGVkJiZUKHRoaXMpKSxudWxsIT09aSYmdGhpcy5lbWl0KCJkYXRhIixpKSxpfSxzLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIm5vdCBpbXBsZW1lbnRlZCIpKX0scy5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7TSgib251bnBpcGUiKSx0PT09ZiYmbygpfWZ1bmN0aW9uIHMoKXtNKCJvbmVuZCIpLHQuZW5kKCl9ZnVuY3Rpb24gbygpe00oImNsZWFudXAiKSx0LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsdSksdC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixoKSx0LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsbSksdC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGMpLHQucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsaSksZi5yZW1vdmVMaXN0ZW5lcigiZW5kIixzKSxmLnJlbW92ZUxpc3RlbmVyKCJlbmQiLG8pLGYucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGEpLGI9ITAsIXAuYXdhaXREcmFpbnx8dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUubmVlZERyYWlufHxtKCl9ZnVuY3Rpb24gYShlKXtNKCJvbmRhdGEiKSx5PSExO3ZhciByPXQud3JpdGUoZSk7ITEhPT1yfHx5fHwoKDE9PT1wLnBpcGVzQ291bnQmJnAucGlwZXM9PT10fHxwLnBpcGVzQ291bnQ+MSYmTChwLnBpcGVzLHQpIT09LTEpJiYhYiYmKE0oImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZSIsZi5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKSxmLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKyx5PSEwKSxmLnBhdXNlKCkpfWZ1bmN0aW9uIGMoZSl7TSgib25lcnJvciIsZSksbCgpLHQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixjKSwwPT09Qih0LCJlcnJvciIpJiZ0LmVtaXQoImVycm9yIixlKX1mdW5jdGlvbiB1KCl7dC5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixoKSxsKCl9ZnVuY3Rpb24gaCgpe00oIm9uZmluaXNoIiksdC5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLHUpLGwoKX1mdW5jdGlvbiBsKCl7TSgidW5waXBlIiksZi51bnBpcGUodCl9dmFyIGY9dGhpcyxwPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKHAucGlwZXNDb3VudCl7Y2FzZSAwOnAucGlwZXM9dDticmVhaztjYXNlIDE6cC5waXBlcz1bcC5waXBlcyx0XTticmVhaztkZWZhdWx0OnAucGlwZXMucHVzaCh0KX1wLnBpcGVzQ291bnQrPTEsTSgicGlwZSBjb3VudD0lZCBvcHRzPSVqIixwLnBpcGVzQ291bnQsZSk7dmFyIGQ9KCFlfHxlLmVuZCE9PSExKSYmdCE9PXIuc3Rkb3V0JiZ0IT09ci5zdGRlcnIsZz1kP3M6bztwLmVuZEVtaXR0ZWQ/cShnKTpmLm9uY2UoImVuZCIsZyksdC5vbigidW5waXBlIixpKTt2YXIgbT1fKGYpO3Qub24oImRyYWluIixtKTt2YXIgYj0hMSx5PSExO3JldHVybiBmLm9uKCJkYXRhIixhKSxuKHQsImVycm9yIixjKSx0Lm9uY2UoImNsb3NlIix1KSx0Lm9uY2UoImZpbmlzaCIsaCksdC5lbWl0KCJwaXBlIixmKSxwLmZsb3dpbmd8fChNKCJwaXBlIHJlc3VtZSIpLGYucmVzdW1lKCkpLHR9LHMucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlO2lmKDA9PT1lLnBpcGVzQ291bnQpcmV0dXJuIHRoaXM7aWYoMT09PWUucGlwZXNDb3VudClyZXR1cm4gdCYmdCE9PWUucGlwZXM/dGhpczoodHx8KHQ9ZS5waXBlcyksZS5waXBlcz1udWxsLGUucGlwZXNDb3VudD0wLGUuZmxvd2luZz0hMSx0JiZ0LmVtaXQoInVucGlwZSIsdGhpcyksdGhpcyk7aWYoIXQpe3ZhciByPWUucGlwZXMsbj1lLnBpcGVzQ291bnQ7ZS5waXBlcz1udWxsLGUucGlwZXNDb3VudD0wLGUuZmxvd2luZz0hMTtmb3IodmFyIGk9MDtpPG47aSsrKXJbaV0uZW1pdCgidW5waXBlIix0aGlzKTtyZXR1cm4gdGhpc312YXIgcz1MKGUucGlwZXMsdCk7cmV0dXJuIHM9PT0tMT90aGlzOihlLnBpcGVzLnNwbGljZShzLDEpLGUucGlwZXNDb3VudC09MSwxPT09ZS5waXBlc0NvdW50JiYoZS5waXBlcz1lLnBpcGVzWzBdKSx0LmVtaXQoInVucGlwZSIsdGhpcyksdGhpcyl9LHMucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9Qy5wcm90b3R5cGUub24uY2FsbCh0aGlzLHQsZSk7aWYoImRhdGEiPT09dCl0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmchPT0hMSYmdGhpcy5yZXN1bWUoKTtlbHNlIGlmKCJyZWFkYWJsZSI9PT10KXt2YXIgbj10aGlzLl9yZWFkYWJsZVN0YXRlO24uZW5kRW1pdHRlZHx8bi5yZWFkYWJsZUxpc3RlbmluZ3x8KG4ucmVhZGFibGVMaXN0ZW5pbmc9bi5uZWVkUmVhZGFibGU9ITAsbi5lbWl0dGVkUmVhZGFibGU9ITEsbi5yZWFkaW5nP24ubGVuZ3RoJiZmKHRoaXMsbik6cShtLHRoaXMpKX1yZXR1cm4gcn0scy5wcm90b3R5cGUuYWRkTGlzdGVuZXI9cy5wcm90b3R5cGUub24scy5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gdC5mbG93aW5nfHwoTSgicmVzdW1lIiksdC5mbG93aW5nPSEwLGIodGhpcyx0KSksdGhpc30scy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXtyZXR1cm4gTSgiY2FsbCBwYXVzZSBmbG93aW5nPSVqIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoTSgicGF1c2UiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KCJwYXVzZSIpKSx0aGlzfSxzLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlYWRhYmxlU3RhdGUscj0hMSxuPXRoaXM7dC5vbigiZW5kIixmdW5jdGlvbigpe2lmKE0oIndyYXBwZWQgZW5kIiksZS5kZWNvZGVyJiYhZS5lbmRlZCl7dmFyIHQ9ZS5kZWNvZGVyLmVuZCgpO3QmJnQubGVuZ3RoJiZuLnB1c2godCl9bi5wdXNoKG51bGwpfSksdC5vbigiZGF0YSIsZnVuY3Rpb24oaSl7aWYoTSgid3JhcHBlZCBkYXRhIiksZS5kZWNvZGVyJiYoaT1lLmRlY29kZXIud3JpdGUoaSkpLCghZS5vYmplY3RNb2RlfHxudWxsIT09aSYmdm9pZCAwIT09aSkmJihlLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSl7dmFyIHM9bi5wdXNoKGkpO3N8fChyPSEwLHQucGF1c2UoKSl9fSk7Zm9yKHZhciBpIGluIHQpdm9pZCAwPT09dGhpc1tpXSYmImZ1bmN0aW9uIj09dHlwZW9mIHRbaV0mJih0aGlzW2ldPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0W2VdLmFwcGx5KHQsYXJndW1lbnRzKX19KGkpKTt2YXIgcz1bImVycm9yIiwiY2xvc2UiLCJkZXN0cm95IiwicGF1c2UiLCJyZXN1bWUiXTtyZXR1cm4gayhzLGZ1bmN0aW9uKGUpe3Qub24oZSxuLmVtaXQuYmluZChuLGUpKX0pLG4uX3JlYWQ9ZnVuY3Rpb24oZSl7TSgid3JhcHBlZCBfcmVhZCIsZSksciYmKHI9ITEsdC5yZXN1bWUoKSl9LG59LHMuX2Zyb21MaXN0PXd9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHsiLi9fc3RyZWFtX2R1cGxleCI6NDQsIi4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Ijo0OSxfcHJvY2Vzczo0MixidWZmZXI6NSwiYnVmZmVyLXNoaW1zIjo0LCJjb3JlLXV0aWwtaXMiOjYsZXZlbnRzOjI4LGluaGVyaXRzOjM4LGlzYXJyYXk6NDAsInByb2Nlc3MtbmV4dGljay1hcmdzIjo0MSwic3RyaW5nX2RlY29kZXIvIjo1Nix1dGlsOjN9XSw0NzpbZnVuY3Rpb24odCxlLHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3RoaXMuYWZ0ZXJUcmFuc2Zvcm09ZnVuY3Rpb24oZSxyKXtyZXR1cm4gaSh0LGUscil9LHRoaXMubmVlZFRyYW5zZm9ybT0hMSx0aGlzLnRyYW5zZm9ybWluZz0hMSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlY2h1bms9bnVsbCx0aGlzLndyaXRlZW5jb2Rpbmc9bnVsbH1mdW5jdGlvbiBpKHQsZSxyKXt2YXIgbj10Ll90cmFuc2Zvcm1TdGF0ZTtuLnRyYW5zZm9ybWluZz0hMTt2YXIgaT1uLndyaXRlY2I7aWYoIWkpcmV0dXJuIHQuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigibm8gd3JpdGVjYiBpbiBUcmFuc2Zvcm0gY2xhc3MiKSk7bi53cml0ZWNodW5rPW51bGwsbi53cml0ZWNiPW51bGwsbnVsbCE9PXImJnZvaWQgMCE9PXImJnQucHVzaChyKSxpKGUpO3ZhciBzPXQuX3JlYWRhYmxlU3RhdGU7cy5yZWFkaW5nPSExLChzLm5lZWRSZWFkYWJsZXx8cy5sZW5ndGg8cy5oaWdoV2F0ZXJNYXJrKSYmdC5fcmVhZChzLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIHModCl7aWYoISh0aGlzIGluc3RhbmNlb2YgcykpcmV0dXJuIG5ldyBzKHQpO2EuY2FsbCh0aGlzLHQpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPW5ldyBuKHRoaXMpO3ZhciBlPXRoaXM7dGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGU9ITAsdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jPSExLHQmJigiZnVuY3Rpb24iPT10eXBlb2YgdC50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09dC50cmFuc2Zvcm0pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LmZsdXNoJiYodGhpcy5fZmx1c2g9dC5mbHVzaCkpLHRoaXMub25jZSgicHJlZmluaXNoIixmdW5jdGlvbigpeyJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9mbHVzaD90aGlzLl9mbHVzaChmdW5jdGlvbih0KXtvKGUsdCl9KTpvKGUpfSl9ZnVuY3Rpb24gbyh0LGUpe2lmKGUpcmV0dXJuIHQuZW1pdCgiZXJyb3IiLGUpO3ZhciByPXQuX3dyaXRhYmxlU3RhdGUsbj10Ll90cmFuc2Zvcm1TdGF0ZTtpZihyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCIpO2lmKG4udHJhbnNmb3JtaW5nKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZyIpO3JldHVybiB0LnB1c2gobnVsbCl9ZS5leHBvcnRzPXM7dmFyIGE9dCgiLi9fc3RyZWFtX2R1cGxleCIpLGM9dCgiY29yZS11dGlsLWlzIik7Yy5pbmhlcml0cz10KCJpbmhlcml0cyIpLGMuaW5oZXJpdHMocyxhKSxzLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsYS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxlKX0scy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0scy5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZihuLndyaXRlY2I9cixuLndyaXRlY2h1bms9dCxuLndyaXRlZW5jb2Rpbmc9ZSwhbi50cmFuc2Zvcm1pbmcpe3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7KG4ubmVlZFRyYW5zZm9ybXx8aS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX19LHMucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1lLndyaXRlY2h1bmsmJmUud3JpdGVjYiYmIWUudHJhbnNmb3JtaW5nPyhlLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oZS53cml0ZWNodW5rLGUud3JpdGVlbmNvZGluZyxlLmFmdGVyVHJhbnNmb3JtKSk6ZS5uZWVkVHJhbnNmb3JtPSEwfX0seyIuL19zdHJlYW1fZHVwbGV4Ijo0NCwiY29yZS11dGlsLWlzIjo2LGluaGVyaXRzOjM4fV0sNDg6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXt9ZnVuY3Rpb24gaSh0LGUscil7dGhpcy5jaHVuaz10LHRoaXMuZW5jb2Rpbmc9ZSx0aGlzLmNhbGxiYWNrPXIsdGhpcy5uZXh0PW51bGx9ZnVuY3Rpb24gcyhlLHIpe1I9Unx8dCgiLi9fc3RyZWFtX2R1cGxleCIpLGU9ZXx8e30sdGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLHIgaW5zdGFuY2VvZiBSJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFlLndyaXRhYmxlT2JqZWN0TW9kZSk7dmFyIG49ZS5oaWdoV2F0ZXJNYXJrLGk9dGhpcy5vYmplY3RNb2RlPzE2OjE2Mzg0O3RoaXMuaGlnaFdhdGVyTWFyaz1ufHwwPT09bj9uOmksdGhpcy5oaWdoV2F0ZXJNYXJrPX5+dGhpcy5oaWdoV2F0ZXJNYXJrLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMTt2YXIgcz1lLmRlY29kZVN0cmluZ3M9PT0hMTt0aGlzLmRlY29kZVN0cmluZ3M9IXMsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKHQpe2Qocix0KX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgeCh0aGlzKX1mdW5jdGlvbiBvKGUpe3JldHVybiBSPVJ8fHQoIi4vX3N0cmVhbV9kdXBsZXgiKSx0aGlzIGluc3RhbmNlb2Ygb3x8dGhpcyBpbnN0YW5jZW9mIFI/KHRoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IHMoZSx0aGlzKSx0aGlzLndyaXRhYmxlPSEwLGUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS53cml0ZSYmKHRoaXMuX3dyaXRlPWUud3JpdGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLndyaXRldiYmKHRoaXMuX3dyaXRldj1lLndyaXRldikpLHZvaWQgQS5jYWxsKHRoaXMpKTpuZXcgbyhlKX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9bmV3IEVycm9yKCJ3cml0ZSBhZnRlciBlbmQiKTt0LmVtaXQoImVycm9yIixyKSxTKGUscil9ZnVuY3Rpb24gYyh0LGUscixuKXt2YXIgaT0hMCxzPSExO3JldHVybiBudWxsPT09cj9zPW5ldyBUeXBlRXJyb3IoIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtIik6TC5pc0J1ZmZlcihyKXx8InN0cmluZyI9PXR5cGVvZiByfHx2b2lkIDA9PT1yfHxlLm9iamVjdE1vZGV8fChzPW5ldyBUeXBlRXJyb3IoIkludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsiKSkscyYmKHQuZW1pdCgiZXJyb3IiLHMpLFMobixzKSxpPSExKSxpfWZ1bmN0aW9uIHUodCxlLHIpe3JldHVybiB0Lm9iamVjdE1vZGV8fHQuZGVjb2RlU3RyaW5ncz09PSExfHwic3RyaW5nIiE9dHlwZW9mIGV8fChlPXEuZnJvbShlLHIpKSxlfWZ1bmN0aW9uIGgodCxlLHIsbixzKXtyPXUoZSxyLG4pLEwuaXNCdWZmZXIocikmJihuPSJidWZmZXIiKTt2YXIgbz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aDtlLmxlbmd0aCs9bzt2YXIgYT1lLmxlbmd0aDxlLmhpZ2hXYXRlck1hcms7aWYoYXx8KGUubmVlZERyYWluPSEwKSxlLndyaXRpbmd8fGUuY29ya2VkKXt2YXIgYz1lLmxhc3RCdWZmZXJlZFJlcXVlc3Q7ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW5ldyBpKHIsbixzKSxjP2MubmV4dD1lLmxhc3RCdWZmZXJlZFJlcXVlc3Q6ZS5idWZmZXJlZFJlcXVlc3Q9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0LGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZSBsKHQsZSwhMSxvLHIsbixzKTtyZXR1cm4gYX1mdW5jdGlvbiBsKHQsZSxyLG4saSxzLG8pe2Uud3JpdGVsZW49bixlLndyaXRlY2I9byxlLndyaXRpbmc9ITAsZS5zeW5jPSEwLHI/dC5fd3JpdGV2KGksZS5vbndyaXRlKTp0Ll93cml0ZShpLHMsZS5vbndyaXRlKSxlLnN5bmM9ITF9ZnVuY3Rpb24gZih0LGUscixuLGkpey0tZS5wZW5kaW5nY2Iscj9TKGksbik6aShuKSx0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx0LmVtaXQoImVycm9yIixuKX1mdW5jdGlvbiBwKHQpe3Qud3JpdGluZz0hMSx0LndyaXRlY2I9bnVsbCx0Lmxlbmd0aC09dC53cml0ZWxlbix0LndyaXRlbGVuPTB9ZnVuY3Rpb24gZCh0LGUpe3ZhciByPXQuX3dyaXRhYmxlU3RhdGUsbj1yLnN5bmMsaT1yLndyaXRlY2I7aWYocChyKSxlKWYodCxyLG4sZSxpKTtlbHNle3ZhciBzPWIocik7c3x8ci5jb3JrZWR8fHIuYnVmZmVyUHJvY2Vzc2luZ3x8IXIuYnVmZmVyZWRSZXF1ZXN0fHxtKHQsciksbj9FKGcsdCxyLHMsaSk6Zyh0LHIscyxpKX19ZnVuY3Rpb24gZyh0LGUscixuKXtyfHxfKHQsZSksZS5wZW5kaW5nY2ItLSxuKCksdih0LGUpfWZ1bmN0aW9uIF8odCxlKXswPT09ZS5sZW5ndGgmJmUubmVlZERyYWluJiYoZS5uZWVkRHJhaW49ITEsdC5lbWl0KCJkcmFpbiIpKX1mdW5jdGlvbiBtKHQsZSl7ZS5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciByPWUuYnVmZmVyZWRSZXF1ZXN0O2lmKHQuX3dyaXRldiYmciYmci5uZXh0KXt2YXIgbj1lLmJ1ZmZlcmVkUmVxdWVzdENvdW50LGk9bmV3IEFycmF5KG4pLHM9ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7cy5lbnRyeT1yO2Zvcih2YXIgbz0wO3I7KWlbb109cixyPXIubmV4dCxvKz0xO2wodCxlLCEwLGUubGVuZ3RoLGksIiIscy5maW5pc2gpLGUucGVuZGluZ2NiKyssZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwscy5uZXh0PyhlLmNvcmtlZFJlcXVlc3RzRnJlZT1zLm5leHQscy5uZXh0PW51bGwpOmUuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyB4KGUpfWVsc2V7Zm9yKDtyOyl7dmFyIGE9ci5jaHVuayxjPXIuZW5jb2RpbmcsdT1yLmNhbGxiYWNrLGg9ZS5vYmplY3RNb2RlPzE6YS5sZW5ndGg7aWYobCh0LGUsITEsaCxhLGMsdSkscj1yLm5leHQsZS53cml0aW5nKWJyZWFrfW51bGw9PT1yJiYoZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCxlLmJ1ZmZlcmVkUmVxdWVzdD1yLGUuYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiBiKHQpe3JldHVybiB0LmVuZGluZyYmMD09PXQubGVuZ3RoJiZudWxsPT09dC5idWZmZXJlZFJlcXVlc3QmJiF0LmZpbmlzaGVkJiYhdC53cml0aW5nfWZ1bmN0aW9uIHkodCxlKXtlLnByZWZpbmlzaGVkfHwoZS5wcmVmaW5pc2hlZD0hMCx0LmVtaXQoInByZWZpbmlzaCIpKX1mdW5jdGlvbiB2KHQsZSl7dmFyIHI9YihlKTtyZXR1cm4gciYmKDA9PT1lLnBlbmRpbmdjYj8oeSh0LGUpLGUuZmluaXNoZWQ9ITAsdC5lbWl0KCJmaW5pc2giKSk6eSh0LGUpKSxyfWZ1bmN0aW9uIHcodCxlLHIpe2UuZW5kaW5nPSEwLHYodCxlKSxyJiYoZS5maW5pc2hlZD9TKHIpOnQub25jZSgiZmluaXNoIixyKSksZS5lbmRlZD0hMCx0LndyaXRhYmxlPSExfWZ1bmN0aW9uIHgodCl7dmFyIGU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24ocil7dmFyIG49ZS5lbnRyeTtmb3IoZS5lbnRyeT1udWxsO247KXt2YXIgaT1uLmNhbGxiYWNrO3QucGVuZGluZ2NiLS0saShyKSxuPW4ubmV4dH10LmNvcmtlZFJlcXVlc3RzRnJlZT90LmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PWU6dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9ZX19ZS5leHBvcnRzPW87dmFyIFM9dCgicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiKSxFPSFyLmJyb3dzZXImJlsidjAuMTAiLCJ2MC45LiJdLmluZGV4T2Yoci52ZXJzaW9uLnNsaWNlKDAsNSkpPi0xP3NldEltbWVkaWF0ZTpTO28uV3JpdGFibGVTdGF0ZT1zO3ZhciBUPXQoImNvcmUtdXRpbC1pcyIpO1QuaW5oZXJpdHM9dCgiaW5oZXJpdHMiKTt2YXIgQSxrPXtkZXByZWNhdGU6dCgidXRpbC1kZXByZWNhdGUiKX07IWZ1bmN0aW9uKCl7dHJ5e0E9dCgic3RyZWFtIil9Y2F0Y2goZSl7fWZpbmFsbHl7QXx8KEE9dCgiZXZlbnRzIikuRXZlbnRFbWl0dGVyKX19KCk7dmFyIEw9dCgiYnVmZmVyIikuQnVmZmVyLHE9dCgiYnVmZmVyLXNoaW1zIik7VC5pbmhlcml0cyhvLEEpO3ZhciBSO3MucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxlPVtdO3Q7KWUucHVzaCh0KSx0PXQubmV4dDtyZXR1cm4gZX0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6ay5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuIil9KX1jYXRjaCh0KXt9fSgpO3ZhciBSO28ucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt0aGlzLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUiKSl9LG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT10aGlzLl93cml0YWJsZVN0YXRlLHM9ITE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJihyPWUsZT1udWxsKSxMLmlzQnVmZmVyKHQpP2U9ImJ1ZmZlciI6ZXx8KGU9aS5kZWZhdWx0RW5jb2RpbmcpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj1uKSxpLmVuZGVkP2EodGhpcyxyKTpjKHRoaXMsaSx0LHIpJiYoaS5wZW5kaW5nY2IrKyxzPWgodGhpcyxpLHQsZSxyKSksc30sby5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dyaXRhYmxlU3RhdGU7dC5jb3JrZWQrK30sby5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fd3JpdGFibGVTdGF0ZTt0LmNvcmtlZCYmKHQuY29ya2VkLS0sdC53cml0aW5nfHx0LmNvcmtlZHx8dC5maW5pc2hlZHx8dC5idWZmZXJQcm9jZXNzaW5nfHwhdC5idWZmZXJlZFJlcXVlc3R8fG0odGhpcyx0KSl9LG8ucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJih0PXQudG9Mb3dlckNhc2UoKSksIShbImhleCIsInV0ZjgiLCJ1dGYtOCIsImFzY2lpIiwiYmluYXJ5IiwiYmFzZTY0IiwidWNzMiIsInVjcy0yIiwidXRmMTZsZSIsInV0Zi0xNmxlIiwicmF3Il0uaW5kZXhPZigodCsiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrdCk7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPXQsdGhpc30sby5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXtyKG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIikpfSxvLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsby5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlOyJmdW5jdGlvbiI9PXR5cGVvZiB0PyhyPXQsdD1udWxsLGU9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihyPWUsZT1udWxsKSxudWxsIT09dCYmdm9pZCAwIT09dCYmdGhpcy53cml0ZSh0LGUpLG4uY29ya2VkJiYobi5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxuLmVuZGluZ3x8bi5maW5pc2hlZHx8dyh0aGlzLG4scil9fSkuY2FsbCh0aGlzLHQoIl9wcm9jZXNzIikpfSx7Ii4vX3N0cmVhbV9kdXBsZXgiOjQ0LF9wcm9jZXNzOjQyLGJ1ZmZlcjo1LCJidWZmZXItc2hpbXMiOjQsImNvcmUtdXRpbC1pcyI6NixldmVudHM6MjgsaW5oZXJpdHM6MzgsInByb2Nlc3MtbmV4dGljay1hcmdzIjo0MSwidXRpbC1kZXByZWNhdGUiOjU3fV0sNDk6W2Z1bmN0aW9uKHQsZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3RoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIGk9KHQoImJ1ZmZlciIpLkJ1ZmZlcix0KCJidWZmZXItc2hpbXMiKSk7ZS5leHBvcnRzPW4sbi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXt2YXIgZT17ZGF0YTp0LG5leHQ6bnVsbH07dGhpcy5sZW5ndGg+MD90aGlzLnRhaWwubmV4dD1lOnRoaXMuaGVhZD1lLHRoaXMudGFpbD1lLCsrdGhpcy5sZW5ndGh9LG4ucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2RhdGE6dCxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPWUpLHRoaXMuaGVhZD1lLCsrdGhpcy5sZW5ndGh9LG4ucHJvdG90eXBlLnNoaWZ0PWZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmhlYWQuZGF0YTtyZXR1cm4gMT09PXRoaXMubGVuZ3RoP3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCx0fX0sbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH0sbi5wcm90b3R5cGUuam9pbj1mdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciBlPXRoaXMuaGVhZCxyPSIiK2UuZGF0YTtlPWUubmV4dDspcis9dCtlLmRhdGE7cmV0dXJuIHJ9LG4ucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIGkuYWxsb2MoMCk7aWYoMT09PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzLmhlYWQuZGF0YTtmb3IodmFyIGU9aS5hbGxvY1Vuc2FmZSh0Pj4+MCkscj10aGlzLmhlYWQsbj0wO3I7KXIuZGF0YS5jb3B5KGUsbiksbis9ci5kYXRhLmxlbmd0aCxyPXIubmV4dDtyZXR1cm4gZX19LHtidWZmZXI6NSwiYnVmZmVyLXNoaW1zIjo0fV0sNTA6W2Z1bmN0aW9uKHQsZSxyKXtlLmV4cG9ydHM9dCgiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIpfSx7Ii4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiOjQ1fV0sNTE6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24obil7dmFyIGk9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHQoInN0cmVhbSIpfWNhdGNoKGUpe319KCk7cj1lLmV4cG9ydHM9dCgiLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIpLHIuU3RyZWFtPWl8fHIsci5SZWFkYWJsZT1yLHIuV3JpdGFibGU9dCgiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIpLHIuRHVwbGV4PXQoIi4vbGliL19zdHJlYW1fZHVwbGV4LmpzIiksci5UcmFuc2Zvcm09dCgiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiKSxyLlBhc3NUaHJvdWdoPXQoIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiKSwhbi5icm93c2VyJiYiZGlzYWJsZSI9PT1uLmVudi5SRUFEQUJMRV9TVFJFQU0mJmkmJihlLmV4cG9ydHM9aSl9KS5jYWxsKHRoaXMsdCgiX3Byb2Nlc3MiKSl9LHsiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiOjQ0LCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIjo0NSwiLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyI6NDYsIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIjo0NywiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyI6NDgsX3Byb2Nlc3M6NDJ9XSw1MjpbZnVuY3Rpb24odCxlLHIpe2UuZXhwb3J0cz10KCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIpfSx7Ii4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIjo0N31dLDUzOltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPXQoIi4vbGliL19zdHJlYW1fd3JpdGFibGUuanMiKX0seyIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIjo0OH1dLDU0OltmdW5jdGlvbih0LGUscil7ZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1stXFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfX0se31dLDU1OltmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe2kuY2FsbCh0aGlzKX1lLmV4cG9ydHM9bjt2YXIgaT10KCJldmVudHMiKS5FdmVudEVtaXR0ZXIscz10KCJpbmhlcml0cyIpO3MobixpKSxuLlJlYWRhYmxlPXQoInJlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS5qcyIpLG4uV3JpdGFibGU9dCgicmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzIiksbi5EdXBsZXg9dCgicmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcyIpLG4uVHJhbnNmb3JtPXQoInJlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiKSxuLlBhc3NUaHJvdWdoPXQoInJlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaC5qcyIpLG4uU3RyZWFtPW4sbi5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoZSl7dC53cml0YWJsZSYmITE9PT10LndyaXRlKGUpJiZ1LnBhdXNlJiZ1LnBhdXNlKCl9ZnVuY3Rpb24gbigpe3UucmVhZGFibGUmJnUucmVzdW1lJiZ1LnJlc3VtZSgpfWZ1bmN0aW9uIHMoKXtofHwoaD0hMCx0LmVuZCgpKX1mdW5jdGlvbiBvKCl7aHx8KGg9ITAsImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVzdHJveSYmdC5kZXN0cm95KCkpfWZ1bmN0aW9uIGEodCl7aWYoYygpLDA9PT1pLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKSl0aHJvdyB0fWZ1bmN0aW9uIGMoKXt1LnJlbW92ZUxpc3RlbmVyKCJkYXRhIixyKSx0LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsbiksdS5yZW1vdmVMaXN0ZW5lcigiZW5kIixzKSx1LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsbyksdS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGEpLHQucmVtb3ZlTGlzdGVuZXIoImVycm9yIixhKSx1LnJlbW92ZUxpc3RlbmVyKCJlbmQiLGMpLHUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixjKSx0LnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsYyl9dmFyIHU9dGhpczt1Lm9uKCJkYXRhIixyKSx0Lm9uKCJkcmFpbiIsbiksdC5faXNTdGRpb3x8ZSYmZS5lbmQ9PT0hMXx8KHUub24oImVuZCIscyksdS5vbigiY2xvc2UiLG8pKTt2YXIgaD0hMTtyZXR1cm4gdS5vbigiZXJyb3IiLGEpLHQub24oImVycm9yIixhKSx1Lm9uKCJlbmQiLGMpLHUub24oImNsb3NlIixjKSx0Lm9uKCJjbG9zZSIsYyksdC5lbWl0KCJwaXBlIix1KSx0fX0se2V2ZW50czoyOCxpbmhlcml0czozOCwicmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcyI6NDMsInJlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaC5qcyI6NTAsInJlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS5qcyI6NTEsInJlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiOjUyLCJyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMiOjUzfV0sNTY6W2Z1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2lmKHQmJiFjKHQpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIit0KX1mdW5jdGlvbiBpKHQpe3JldHVybiB0LnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpfWZ1bmN0aW9uIHModCl7dGhpcy5jaGFyUmVjZWl2ZWQ9dC5sZW5ndGglMix0aGlzLmNoYXJMZW5ndGg9dGhpcy5jaGFyUmVjZWl2ZWQ/MjowfWZ1bmN0aW9uIG8odCl7dGhpcy5jaGFyUmVjZWl2ZWQ9dC5sZW5ndGglMyx0aGlzLmNoYXJMZW5ndGg9dGhpcy5jaGFyUmVjZWl2ZWQ/MzowfXZhciBhPXQoImJ1ZmZlciIpLkJ1ZmZlcixjPWEuaXNFbmNvZGluZ3x8ZnVuY3Rpb24odCl7c3dpdGNoKHQmJnQudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx1PXIuU3RyaW5nRGVjb2Rlcj1mdW5jdGlvbih0KXtzd2l0Y2godGhpcy5lbmNvZGluZz0odHx8InV0ZjgiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCIiKSxuKHQpLHRoaXMuZW5jb2Rpbmcpe2Nhc2UidXRmOCI6dGhpcy5zdXJyb2dhdGVTaXplPTM7YnJlYWs7Y2FzZSJ1Y3MyIjpjYXNlInV0ZjE2bGUiOnRoaXMuc3Vycm9nYXRlU2l6ZT0yLHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXI9czticmVhaztjYXNlImJhc2U2NCI6dGhpcy5zdXJyb2dhdGVTaXplPTMsdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhcj1vO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHZvaWQodGhpcy53cml0ZT1pKX10aGlzLmNoYXJCdWZmZXI9bmV3IGEoNiksdGhpcy5jaGFyUmVjZWl2ZWQ9MCx0aGlzLmNoYXJMZW5ndGg9MH07dS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiO3RoaXMuY2hhckxlbmd0aDspe3ZhciByPXQubGVuZ3RoPj10aGlzLmNoYXJMZW5ndGgtdGhpcy5jaGFyUmVjZWl2ZWQ/dGhpcy5jaGFyTGVuZ3RoLXRoaXMuY2hhclJlY2VpdmVkOnQubGVuZ3RoO2lmKHQuY29weSh0aGlzLmNoYXJCdWZmZXIsdGhpcy5jaGFyUmVjZWl2ZWQsMCxyKSx0aGlzLmNoYXJSZWNlaXZlZCs9cix0aGlzLmNoYXJSZWNlaXZlZDx0aGlzLmNoYXJMZW5ndGgpcmV0dXJuIiI7dD10LnNsaWNlKHIsdC5sZW5ndGgpLGU9dGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsdGhpcy5jaGFyTGVuZ3RoKS50b1N0cmluZyh0aGlzLmVuY29kaW5nKTt2YXIgbj1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7aWYoIShuPj01NTI5NiYmbjw9NTYzMTkpKXtpZih0aGlzLmNoYXJSZWNlaXZlZD10aGlzLmNoYXJMZW5ndGg9MCwwPT09dC5sZW5ndGgpcmV0dXJuIGU7YnJlYWt9dGhpcy5jaGFyTGVuZ3RoKz10aGlzLnN1cnJvZ2F0ZVNpemUsZT0iIn10aGlzLmRldGVjdEluY29tcGxldGVDaGFyKHQpO3ZhciBpPXQubGVuZ3RoO3RoaXMuY2hhckxlbmd0aCYmKHQuY29weSh0aGlzLmNoYXJCdWZmZXIsMCx0Lmxlbmd0aC10aGlzLmNoYXJSZWNlaXZlZCxpKSxpLT10aGlzLmNoYXJSZWNlaXZlZCksZSs9dC50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsaSk7dmFyIGk9ZS5sZW5ndGgtMSxuPWUuY2hhckNvZGVBdChpKTtpZihuPj01NTI5NiYmbjw9NTYzMTkpe3ZhciBzPXRoaXMuc3Vycm9nYXRlU2l6ZTtyZXR1cm4gdGhpcy5jaGFyTGVuZ3RoKz1zLHRoaXMuY2hhclJlY2VpdmVkKz1zLHRoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlcixzLDAscyksdC5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLDAscyksZS5zdWJzdHJpbmcoMCxpKX1yZXR1cm4gZX0sdS5wcm90b3R5cGUuZGV0ZWN0SW5jb21wbGV0ZUNoYXI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoPj0zPzM6dC5sZW5ndGg7ZT4wO2UtLSl7dmFyIHI9dFt0Lmxlbmd0aC1lXTtpZigxPT1lJiZyPj41PT02KXt0aGlzLmNoYXJMZW5ndGg9MjticmVha31pZihlPD0yJiZyPj40PT0xNCl7dGhpcy5jaGFyTGVuZ3RoPTM7YnJlYWt9aWYoZTw9MyYmcj4+Mz09MzApe3RoaXMuY2hhckxlbmd0aD00O2JyZWFrfX10aGlzLmNoYXJSZWNlaXZlZD1lfSx1LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9IiI7aWYodCYmdC5sZW5ndGgmJihlPXRoaXMud3JpdGUodCkpLHRoaXMuY2hhclJlY2VpdmVkKXt2YXIgcj10aGlzLmNoYXJSZWNlaXZlZCxuPXRoaXMuY2hhckJ1ZmZlcixpPXRoaXMuZW5jb2Rpbmc7ZSs9bi5zbGljZSgwLHIpLnRvU3RyaW5nKGkpfXJldHVybiBlfX0se2J1ZmZlcjo1fV0sNTc6W2Z1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0LGUpe2Z1bmN0aW9uIHIoKXtpZighaSl7aWYobigidGhyb3dEZXByZWNhdGlvbiIpKXRocm93IG5ldyBFcnJvcihlKTtuKCJ0cmFjZURlcHJlY2F0aW9uIik/Y29uc29sZS50cmFjZShlKTpjb25zb2xlLndhcm4oZSksaT0hMH1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9aWYobigibm9EZXByZWNhdGlvbiIpKXJldHVybiB0O3ZhciBpPSExO3JldHVybiByfWZ1bmN0aW9uIG4oZSl7dHJ5e2lmKCF0LmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaChyKXtyZXR1cm4hMX12YXIgbj10LmxvY2FsU3RvcmFnZVtlXTtyZXR1cm4gbnVsbCE9biYmInRydWUiPT09U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCl9ZS5leHBvcnRzPXJ9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSw1ODpbZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtmb3IodmFyIHQ9e30sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPWFyZ3VtZW50c1tlXTtmb3IodmFyIG4gaW4gcilpLmNhbGwocixuKSYmKHRbbl09cltuXSl9cmV0dXJuIHR9ZS5leHBvcnRzPW47dmFyIGk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eX0se31dfSx7fSxbMV0pKDEpfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9saWIvc3dhZ2dlci1vYXV0aC5qcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL3N3YWdnZXItb2F1dGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE4NzY0YwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbGliL3N3YWdnZXItb2F1dGguanMKQEAgLTAsMCArMSBAQAorZnVuY3Rpb24gaGFuZGxlTG9naW4oKXt2YXIgZT1bXSxvPXdpbmRvdy5zd2FnZ2VyVWlBdXRoLmF1dGhTY2hlbWVzfHx3aW5kb3cuc3dhZ2dlclVpQXV0aC5zZWN1cml0eURlZmluaXRpb25zO2lmKG8pe3ZhciBpLG49bztmb3IoaSBpbiBuKXt2YXIgYT1uW2ldO2lmKCJvYXV0aDIiPT09YS50eXBlJiZhLnNjb3Blcyl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShhLnNjb3Blcykpe3ZhciBwO2ZvcihwPTA7cDxhLnNjb3Blcy5sZW5ndGg7cCsrKWUucHVzaChhLnNjb3Blc1twXSl9ZWxzZSBmb3IodCBpbiBhLnNjb3BlcyllLnB1c2goe3Njb3BlOnQsZGVzY3JpcHRpb246YS5zY29wZXNbdF0sT0F1dGhTY2hlbWVLZXk6aX0pfX19Zm9yKHdpbmRvdy5zd2FnZ2VyVWkuYXBpJiZ3aW5kb3cuc3dhZ2dlclVpLmFwaS5pbmZvJiYoYXBwTmFtZT13aW5kb3cuc3dhZ2dlclVpLmFwaS5pbmZvLnRpdGxlKSwkKCIuYXBpLXBvcHVwLWRpYWxvZyIpLnJlbW92ZSgpLHBvcHVwRGlhbG9nPSQoWyc8ZGl2IGNsYXNzPSJhcGktcG9wdXAtZGlhbG9nIj4nLCc8ZGl2IGNsYXNzPSJhcGktcG9wdXAtdGl0bGUiPlNlbGVjdCBPQXV0aDIuMCBTY29wZXM8L2Rpdj4nLCc8ZGl2IGNsYXNzPSJhcGktcG9wdXAtY29udGVudCI+JywiPHA+U2NvcGVzIGFyZSB1c2VkIHRvIGdyYW50IGFuIGFwcGxpY2F0aW9uIGRpZmZlcmVudCBsZXZlbHMgb2YgYWNjZXNzIHRvIGRhdGEgb24gYmVoYWxmIG9mIHRoZSBlbmQgdXNlci4gRWFjaCBBUEkgbWF5IGRlY2xhcmUgb25lIG9yIG1vcmUgc2NvcGVzLiIsJzxhIGhyZWY9IiMiPkxlYXJuIGhvdyB0byB1c2U8L2E+JywiPC9wPiIsIjxwPjxzdHJvbmc+IithcHBOYW1lKyI8L3N0cm9uZz4gQVBJIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgc2NvcGVzLiBTZWxlY3Qgd2hpY2ggb25lcyB5b3Ugd2FudCB0byBncmFudCB0byBTd2FnZ2VyIFVJLjwvcD4iLCc8dWwgY2xhc3M9ImFwaS1wb3B1cC1zY29wZXMiPicsIjwvdWw+IiwnPHAgY2xhc3M9ImVycm9yLW1zZyI+PC9wPicsJzxkaXYgY2xhc3M9ImFwaS1wb3B1cC1hY3Rpb25zIj48YnV0dG9uIGNsYXNzPSJhcGktcG9wdXAtYXV0aGJ0biBhcGktYnV0dG9uIGdyZWVuIiB0eXBlPSJidXR0b24iIGRhdGEtc3ctdHJhbnNsYXRlPkF1dGhvcml6ZTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImFwaS1wb3B1cC1jYW5jZWwgYXBpLWJ1dHRvbiBncmF5IiB0eXBlPSJidXR0b24iPkNhbmNlbDwvYnV0dG9uPjwvZGl2PicsIjwvZGl2PiIsIjwvZGl2PiJdLmpvaW4oIiIpKSwkKGRvY3VtZW50LmJvZHkpLmFwcGVuZChwb3B1cERpYWxvZykscG9wdXA9cG9wdXBEaWFsb2cuZmluZCgidWwuYXBpLXBvcHVwLXNjb3BlcyIpLmVtcHR5KCkscD0wO3A8ZS5sZW5ndGg7cCsrKXQ9ZVtwXSxzdHI9JzxsaT48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzY29wZV8nK3ArJyIgc2NvcGU9IicrdC5zY29wZSsnIiIgb2F1dGh0eXBlPSInK3QuT0F1dGhTY2hlbWVLZXkrJyIvPjxsYWJlbCBmb3I9InNjb3BlXycrcCsnIj4nK3Quc2NvcGUsdC5kZXNjcmlwdGlvbiYmKCQubWFwKG8sZnVuY3Rpb24oZSxvKXtyZXR1cm4gb30pLmxlbmd0aD4xP3N0cis9Jzxici8+PHNwYW4gY2xhc3M9ImFwaS1zY29wZS1kZXNjIj4nK3QuZGVzY3JpcHRpb24rIiAoIit0Lk9BdXRoU2NoZW1lS2V5KyIpPC9zcGFuPiI6c3RyKz0nPGJyLz48c3BhbiBjbGFzcz0iYXBpLXNjb3BlLWRlc2MiPicrdC5kZXNjcmlwdGlvbisiPC9zcGFuPiIpLHN0cis9IjwvbGFiZWw+PC9saT4iLHBvcHVwLmFwcGVuZChzdHIpO3ZhciByPSQod2luZG93KSxzPXIud2lkdGgoKSxjPXIuaGVpZ2h0KCksbD1yLnNjcm9sbFRvcCgpLGQ9cG9wdXBEaWFsb2cub3V0ZXJXaWR0aCgpLHU9cG9wdXBEaWFsb2cub3V0ZXJIZWlnaHQoKSxoPShjLXUpLzIrbCxnPShzLWQpLzI7cG9wdXBEaWFsb2cuY3NzKHt0b3A6KGg8MD8wOmgpKyJweCIsbGVmdDooZzwwPzA6ZykrInB4In0pLHBvcHVwRGlhbG9nLmZpbmQoImJ1dHRvbi5hcGktcG9wdXAtY2FuY2VsIikuY2xpY2soZnVuY3Rpb24oKXtwb3B1cE1hc2suaGlkZSgpLHBvcHVwRGlhbG9nLmhpZGUoKSxwb3B1cERpYWxvZy5lbXB0eSgpLHBvcHVwRGlhbG9nPVtdfSksJCgiYnV0dG9uLmFwaS1wb3B1cC1hdXRoYnRuIikudW5iaW5kKCkscG9wdXBEaWFsb2cuZmluZCgiYnV0dG9uLmFwaS1wb3B1cC1hdXRoYnRuIikuY2xpY2soZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBlLnZlbmRvckV4dGVuc2lvbnNbIngtdG9rZW5OYW1lIl18fGUudG9rZW5OYW1lfXBvcHVwTWFzay5oaWRlKCkscG9wdXBEaWFsb2cuaGlkZSgpO3ZhciBvLGk9d2luZG93LnN3YWdnZXJVaS5hcGkuYXV0aFNjaGVtZXMsbj13aW5kb3cubG9jYXRpb24sYT1sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCxsb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKSx0PW4ucHJvdG9jb2wrIi8vIituLmhvc3QrYSsiL28yYy5odG1sIixwPXdpbmRvdy5vQXV0aFJlZGlyZWN0VXJsfHx0LHI9bnVsbCxzPVtdLGM9cG9wdXAuZmluZCgiaW5wdXQ6Y2hlY2tlZCIpLGw9W107Zm9yKGs9MDtrPGMubGVuZ3RoO2srKyl7dmFyIGQ9JChjW2tdKS5hdHRyKCJzY29wZSIpO3MuaW5kZXhPZihkKT09PS0xJiZzLnB1c2goZCk7dmFyIHU9JChjW2tdKS5hdHRyKCJvYXV0aHR5cGUiKTtsLmluZGV4T2YodSk9PT0tMSYmbC5wdXNoKHUpfXdpbmRvdy5lbmFibGVkU2NvcGVzPXM7Zm9yKHZhciBoIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShoKSYmbC5pbmRleE9mKGgpIT0tMSl7dmFyIGc9aVtoXS5mbG93O2lmKCJvYXV0aDIiIT09aVtoXS50eXBlfHwhZ3x8ImltcGxpY2l0IiE9PWcmJiJhY2Nlc3NDb2RlIiE9PWcpe2lmKCJvYXV0aDIiPT09aVtoXS50eXBlJiZnJiYiYXBwbGljYXRpb24iPT09Zyl7dmFyIHc9aVtoXTtyZXR1cm4gd2luZG93LnN3YWdnZXJVaS50b2tlbk5hbWU9ZSh3KXx8ImFjY2Vzc190b2tlbiIsdm9pZCBjbGllbnRDcmVkZW50aWFsc0Zsb3cocyx3LnRva2VuVXJsLGgpfWlmKGlbaF0uZ3JhbnRUeXBlcyl7dmFyIGM9aVtoXS5ncmFudFR5cGVzO2Zvcih2YXIgZiBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZikmJiJpbXBsaWNpdCI9PT1mKXt2YXIgdz1jW2ZdO3cubG9naW5FbmRwb2ludC51cmw7cj13LmxvZ2luRW5kcG9pbnQudXJsKyI/cmVzcG9uc2VfdHlwZT10b2tlbiIsd2luZG93LnN3YWdnZXJVaS50b2tlbk5hbWU9ZSh3KX1lbHNlIGlmKGMuaGFzT3duUHJvcGVydHkoZikmJiJhY2Nlc3NDb2RlIj09PWYpe3ZhciB3PWNbZl07dy50b2tlblJlcXVlc3RFbmRwb2ludC51cmw7cj13LnRva2VuUmVxdWVzdEVuZHBvaW50LnVybCsiP3Jlc3BvbnNlX3R5cGU9Y29kZSIsd2luZG93LnN3YWdnZXJVaS50b2tlbk5hbWU9ZSh3KX19fWVsc2V7dmFyIHc9aVtoXTtyPXcuYXV0aG9yaXphdGlvblVybCsiP3Jlc3BvbnNlX3R5cGU9IisoImltcGxpY2l0Ij09PWc/InRva2VuIjoiY29kZSIpLHdpbmRvdy5zd2FnZ2VyVWkudG9rZW5OYW1lPWUodyl8fCJhY2Nlc3NfdG9rZW4iLHdpbmRvdy5zd2FnZ2VyVWkudG9rZW5Vcmw9ImFjY2Vzc0NvZGUiPT09Zz93LnRva2VuVXJsOm51bGwsbz1ofX1yZWRpcmVjdF91cmk9cCxyKz0iJnJlZGlyZWN0X3VyaT0iK2VuY29kZVVSSUNvbXBvbmVudChwKSxyKz0iJnJlYWxtPSIrZW5jb2RlVVJJQ29tcG9uZW50KHJlYWxtKSxyKz0iJmNsaWVudF9pZD0iK2VuY29kZVVSSUNvbXBvbmVudChjbGllbnRJZCkscis9IiZzY29wZT0iK2VuY29kZVVSSUNvbXBvbmVudChzLmpvaW4oc2NvcGVTZXBhcmF0b3IpKSxyKz0iJnN0YXRlPSIrZW5jb2RlVVJJQ29tcG9uZW50KG8pO2Zvcih2YXIgaCBpbiBhZGRpdGlvbmFsUXVlcnlTdHJpbmdQYXJhbXMpcis9IiYiK2grIj0iK2VuY29kZVVSSUNvbXBvbmVudChhZGRpdGlvbmFsUXVlcnlTdHJpbmdQYXJhbXNbaF0pO3dpbmRvdy5vcGVuKHIpfSkscG9wdXBNYXNrLnNob3coKSxwb3B1cERpYWxvZy5zaG93KCl9ZnVuY3Rpb24gaGFuZGxlTG9nb3V0KCl7Zm9yKGtleSBpbiB3aW5kb3cuc3dhZ2dlclVpLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5hdXRoeil3aW5kb3cuc3dhZ2dlclVpLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5yZW1vdmUoa2V5KTt3aW5kb3cuZW5hYmxlZFNjb3Blcz1udWxsLCQoIi5hcGktaWMuaWMtb24iKS5hZGRDbGFzcygiaWMtb2ZmIiksJCgiLmFwaS1pYy5pYy1vbiIpLnJlbW92ZUNsYXNzKCJpYy1vbiIpLCQoIi5hcGktaWMuaWMtd2FybmluZyIpLmFkZENsYXNzKCJpYy1lcnJvciIpLCQoIi5hcGktaWMuaWMtd2FybmluZyIpLnJlbW92ZUNsYXNzKCJpYy13YXJuaW5nIil9ZnVuY3Rpb24gaW5pdE9BdXRoKGUpe3ZhciBvPWV8fHt9LGk9W107cmV0dXJuIGFwcE5hbWU9by5hcHBOYW1lfHxpLnB1c2goIm1pc3NpbmcgYXBwTmFtZSIpLHBvcHVwTWFzaz1vLnBvcHVwTWFza3x8JCgiI2FwaS1jb21tb24tbWFzayIpLHBvcHVwRGlhbG9nPW8ucG9wdXBEaWFsb2d8fCQoIi5hcGktcG9wdXAtZGlhbG9nIiksY2xpZW50SWQ9by5jbGllbnRJZHx8aS5wdXNoKCJtaXNzaW5nIGNsaWVudCBpZCIpLGNsaWVudFNlY3JldD1vLmNsaWVudFNlY3JldHx8bnVsbCxyZWFsbT1vLnJlYWxtfHxpLnB1c2goIm1pc3NpbmcgcmVhbG0iKSxzY29wZVNlcGFyYXRvcj1vLnNjb3BlU2VwYXJhdG9yfHwiICIsYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zPW8uYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zfHx7fSxpLmxlbmd0aD4wP3ZvaWQgbG9nKCJhdXRoIHVuYWJsZSBpbml0aWFsaXplIG9hdXRoOiAiK2kpOigkKCJwcmUgY29kZSIpLmVhY2goZnVuY3Rpb24oZSxvKXtobGpzLmhpZ2hsaWdodEJsb2NrKG8pfSksJCgiLmFwaS1pYyIpLnVuYmluZCgpLHZvaWQgJCgiLmFwaS1pYyIpLmNsaWNrKGZ1bmN0aW9uKGUpeyQoZS50YXJnZXQpLmhhc0NsYXNzKCJpYy1vZmYiKT9oYW5kbGVMb2dpbigpOmhhbmRsZUxvZ291dCgpfSkpfWZ1bmN0aW9uIGNsaWVudENyZWRlbnRpYWxzRmxvdyhlLG8saSl7dmFyIG49e2NsaWVudF9pZDpjbGllbnRJZCxjbGllbnRfc2VjcmV0OmNsaWVudFNlY3JldCxzY29wZTplLmpvaW4oIiAiKSxncmFudF90eXBlOiJjbGllbnRfY3JlZGVudGlhbHMifTskLmFqYXgoe3VybDpvLHR5cGU6IlBPU1QiLGRhdGE6bixzdWNjZXNzOmZ1bmN0aW9uKGUsbyxuKXtvbk9BdXRoQ29tcGxldGUoZSxpKX0sZXJyb3I6ZnVuY3Rpb24oZSxvLGkpe29uT0F1dGhDb21wbGV0ZSgiIil9fSl9dmFyIGFwcE5hbWUscG9wdXBNYXNrLHBvcHVwRGlhbG9nLGNsaWVudElkLHJlYWxtLHJlZGlyZWN0X3VyaSxjbGllbnRTZWNyZXQsc2NvcGVTZXBhcmF0b3IsYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zO3dpbmRvdy5wcm9jZXNzT0F1dGhDb2RlPWZ1bmN0aW9uKGUpe3ZhciBvPWUuc3RhdGUsaT13aW5kb3cubG9jYXRpb24sbj1sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCxsb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZigiLyIpKSxhPWkucHJvdG9jb2wrIi8vIitpLmhvc3QrbisiL28yYy5odG1sIix0PXdpbmRvdy5vQXV0aFJlZGlyZWN0VXJsfHxhLHA9e2NsaWVudF9pZDpjbGllbnRJZCxjb2RlOmUuY29kZSxncmFudF90eXBlOiJhdXRob3JpemF0aW9uX2NvZGUiLHJlZGlyZWN0X3VyaTp0fTtjbGllbnRTZWNyZXQmJihwLmNsaWVudF9zZWNyZXQ9Y2xpZW50U2VjcmV0KSwkLmFqYXgoe3VybDp3aW5kb3cuc3dhZ2dlclVpQXV0aC50b2tlblVybCx0eXBlOiJQT1NUIixkYXRhOnAsc3VjY2VzczpmdW5jdGlvbihlLGksbil7b25PQXV0aENvbXBsZXRlKGUsbyl9LGVycm9yOmZ1bmN0aW9uKGUsbyxpKXtvbk9BdXRoQ29tcGxldGUoIiIpfX0pfSx3aW5kb3cub25PQXV0aENvbXBsZXRlPWZ1bmN0aW9uKGUsbyl7aWYoZSlpZihlLmVycm9yKXt2YXIgaT0kKCJpbnB1dFt0eXBlPWNoZWNrYm94XSwuc2VjdXJlZCIpO2kuZWFjaChmdW5jdGlvbihlKXtpW2VdLmNoZWNrZWQ9ITF9KSxhbGVydChlLmVycm9yKX1lbHNle3ZhciBuPWVbd2luZG93LnN3YWdnZXJVaUF1dGgudG9rZW5OYW1lXTtpZihvfHwobz1lLnN0YXRlKSxuKXt2YXIgYT1udWxsOyQuZWFjaCgkKCIuYXV0aCAuYXBpLWljIC5hcGlfaW5mb3JtYXRpb25fcGFuZWwiKSxmdW5jdGlvbihlLG8pe3ZhciBpPW87aWYoaSYmaS5jaGlsZE5vZGVzKXt2YXIgbj1bXTskLmVhY2goaS5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUsbyl7dmFyIGk9by5pbm5lckhUTUw7aSYmbi5wdXNoKGkpfSk7Zm9yKHZhciB0PVtdLHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIHI9bltwXTt3aW5kb3cuZW5hYmxlZFNjb3BlcyYmd2luZG93LmVuYWJsZWRTY29wZXMuaW5kZXhPZihyKT09LTEmJnQucHVzaChyKX10Lmxlbmd0aD4wPyhhPW8ucGFyZW50Tm9kZS5wYXJlbnROb2RlLCQoYS5wYXJlbnROb2RlKS5maW5kKCIuYXBpLWljLmljLW9uIikuYWRkQ2xhc3MoImljLW9mZiIpLCQoYS5wYXJlbnROb2RlKS5maW5kKCIuYXBpLWljLmljLW9uIikucmVtb3ZlQ2xhc3MoImljLW9uIiksJChhKS5maW5kKCIuYXBpLWljIikuYWRkQ2xhc3MoImljLXdhcm5pbmciKSwkKGEpLmZpbmQoIi5hcGktaWMiKS5yZW1vdmVDbGFzcygiaWMtZXJyb3IiKSk6KGE9by5wYXJlbnROb2RlLnBhcmVudE5vZGUsJChhLnBhcmVudE5vZGUpLmZpbmQoIi5hcGktaWMuaWMtb2ZmIikuYWRkQ2xhc3MoImljLW9uIiksJChhLnBhcmVudE5vZGUpLmZpbmQoIi5hcGktaWMuaWMtb2ZmIikucmVtb3ZlQ2xhc3MoImljLW9mZiIpLCQoYSkuZmluZCgiLmFwaS1pYyIpLmFkZENsYXNzKCJpYy1pbmZvIiksJChhKS5maW5kKCIuYXBpLWljIikucmVtb3ZlQ2xhc3MoImljLXdhcm5pbmciKSwkKGEpLmZpbmQoIi5hcGktaWMiKS5yZW1vdmVDbGFzcygiaWMtZXJyb3IiKSl9fSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuc3dhZ2dlclVpJiYod2luZG93LnN3YWdnZXJVaS5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkKHdpbmRvdy5zd2FnZ2VyVWlBdXRoLk9BdXRoU2NoZW1lS2V5LG5ldyBTd2FnZ2VyQ2xpZW50LkFwaUtleUF1dGhvcml6YXRpb24oIkF1dGhvcml6YXRpb24iLCJCZWFyZXIgIituLCJoZWFkZXIiKSksd2luZG93LnN3YWdnZXJVaS5sb2FkKCkpfX19OwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9vMmMuaHRtbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbzJjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRmZTdhMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3QvbzJjLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCEtLQorICB+IE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKyAgfgorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgfgorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgfgorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxzY3JpcHQ+Cit2YXIgcXAgPSBudWxsOworaWYoL2NvZGV8dG9rZW58ZXJyb3IvLnRlc3Qod2luZG93LmxvY2F0aW9uLmhhc2gpKSB7CisgIHFwID0gbG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7Cit9CitlbHNlIHsKKyAgcXAgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpOworfQorcXAgPSBxcCA/IEpTT04ucGFyc2UoJ3siJyArIHFwLnJlcGxhY2UoLyYvZywgJyIsIicpLnJlcGxhY2UoLz0vZywnIjoiJykgKyAnIn0nLAorICBmdW5jdGlvbihrZXksIHZhbHVlKSB7CisgICAgcmV0dXJuIGtleT09PSIiP3ZhbHVlOmRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgfQorICApOnt9CisKK2lmICh3aW5kb3cub3BlbmVyLnN3YWdnZXJVaUF1dGgudG9rZW5VcmwpCisgICAgd2luZG93Lm9wZW5lci5wcm9jZXNzT0F1dGhDb2RlKHFwKTsKK2Vsc2UKKyAgICB3aW5kb3cub3BlbmVyLm9uT0F1dGhDb21wbGV0ZShxcCk7CisKK3dpbmRvdy5jbG9zZSgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWkuanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2ZmZiNwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3Qvc3dhZ2dlci11aS5qcwpAQCAtMCwwICsxLDI1Mzc4IEBACisvKioKKyAqIHN3YWdnZXItdWkgLSBTd2FnZ2VyIFVJIGlzIGEgZGVwZW5kZW5jeS1mcmVlIGNvbGxlY3Rpb24gb2YgSFRNTCwgSmF2YVNjcmlwdCwgYW5kIENTUyBhc3NldHMgdGhhdCBkeW5hbWljYWxseSBnZW5lcmF0ZSBiZWF1dGlmdWwgZG9jdW1lbnRhdGlvbiBmcm9tIGEgU3dhZ2dlci1jb21wbGlhbnQgQVBJCisgKiBAdmVyc2lvbiB2Mi4yLjEwCisgKiBAbGluayBodHRwOi8vc3dhZ2dlci5pbworICogQGxpY2Vuc2UgQXBhY2hlLTIuMAorICovCisoZnVuY3Rpb24oKXsvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisgeyhmdW5jdGlvbigpIHsKKyAgdmFyIHRlbXBsYXRlID0gSGFuZGxlYmFycy50ZW1wbGF0ZSwgdGVtcGxhdGVzID0gSGFuZGxlYmFycy50ZW1wbGF0ZXMgPSBIYW5kbGViYXJzLnRlbXBsYXRlcyB8fCB7fTsKK3RlbXBsYXRlc1snYXBpa2V5X2F1dGgnXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAiICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwia2V5X2F1dGhfX3ZhbHVlXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3NwYW4+XG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgICAgICA8aW5wdXQgcGxhY2Vob2xkZXI9XCJhcGlfa2V5XCIgY2xhc3M9XCJhdXRoX2lucHV0IGlucHV0X2FwaUtleV9lbnRyeVwiIG5hbWU9XCJhcGlLZXlcIiB0eXBlPVwidGV4dFwiLz5cbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8ZGl2IGNsYXNzPVwia2V5X2lucHV0X2NvbnRhaW5lclwiPlxuICAgIDxoMyBjbGFzcz1cImF1dGhfX3RpdGxlXCI+QXBpIGtleSBhdXRob3JpemF0aW9uPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwiYXV0aF9fZGVzY3JpcHRpb25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImtleV9hdXRoX19maWVsZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrZXlfYXV0aF9fbGFiZWxcIj5uYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwia2V5X2F1dGhfX3ZhbHVlXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImtleV9hdXRoX19maWVsZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJrZXlfYXV0aF9fbGFiZWxcIj5pbjo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImtleV9hdXRoX192YWx1ZVwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDBbImluIl0gOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwia2V5X2F1dGhfX2ZpZWxkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImtleV9hdXRoX19sYWJlbFwiPnZhbHVlOjwvc3Bhbj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaXNMb2dvdXQgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ2F1dGhfYnV0dG9uJ10gPSB0ZW1wbGF0ZSh7ImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIjxhIGNsYXNzPSdhdXRob3JpemVfX2J0bicgaHJlZj1cIiNcIiBkYXRhLXN3LXRyYW5zbGF0ZT5BdXRob3JpemU8L2E+XG4iOworfSwidXNlRGF0YSI6dHJ1ZX0pOwordGVtcGxhdGVzWydhdXRoX2J1dHRvbl9vcGVyYXRpb24nXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ2luXG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ291dFxuIjsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgPHVsIGNsYXNzPVwiYXV0aG9yaXplLXNjb3Blc1wiPlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzLmVhY2guY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zY29wZXMgOiBkZXB0aDApLHsibmFtZSI6ImVhY2giLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDYsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgICAgICA8L3VsPlxuIjsKK30sIjYiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiYXV0aG9yaXplX19zY29wZVwiIHRpdGxlPVwiIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2NvcGUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2xpPlxuIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fTsKKworICByZXR1cm4gIjxkaXYgY2xhc3M9XCJhdXRob3JpemVfX2J0biBhdXRob3JpemVfX2J0bl9vcGVyYXRpb25cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaXNMb2dvdXQgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlwiPlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zY29wZXMgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSg1LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvZGl2PlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1snYXV0aF92aWV3J10gPSB0ZW1wbGF0ZSh7IjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF1dGhfX2J1dHRvbiBhdXRoX3N1Ym1pdF9fYnV0dG9uXCIgZGF0YS1zdy10cmFuc2xhdGU+QXV0aG9yaXplPC9idXR0b24+XG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYXV0aF9fYnV0dG9uIGF1dGhfbG9nb3V0X19idXR0b25cIiBkYXRhLXN3LXRyYW5zbGF0ZT5Mb2dvdXQ8L2J1dHRvbj5cbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge307CisKKyAgcmV0dXJuICI8ZGl2IGNsYXNzPVwiYXV0aF9jb250YWluZXJcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJhdXRoX2lubmVyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImF1dGhfc3VibWl0XCI+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnMudW5sZXNzLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0xvZ291dCA6IGRlcHRoMCkseyJuYW1lIjoidW5sZXNzIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0F1dGhvcml6ZWQgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgICA8L2Rpdj5cblxuPC9kaXY+XG4iOworfSwidXNlRGF0YSI6dHJ1ZX0pOwordGVtcGxhdGVzWydiYXNpY19hdXRoJ10gPSB0ZW1wbGF0ZSh7IjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgLSBhdXRob3JpemVkIjsKK30sIjMiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhc2ljX2F1dGhfX3ZhbHVlXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudXNlcm5hbWUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3NwYW4+XG4iOworfSwiNSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgICAgICA8aW5wdXQgcmVxdWlyZWQgcGxhY2Vob2xkZXI9XCJ1c2VybmFtZVwiIGNsYXNzPVwiYmFzaWNfYXV0aF9fdXNlcm5hbWUgYXV0aF9pbnB1dFwiIG5hbWU9XCJ1c2VybmFtZVwiIHR5cGU9XCJ0ZXh0XCIvPlxuIjsKK30sIjciOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aF9sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFzaWNfYXV0aF9fbGFiZWxcIiBkYXRhLXN3LXRyYW5zbGF0ZT5wYXNzd29yZDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IHJlcXVpcmVkIHBsYWNlaG9sZGVyPVwicGFzc3dvcmRcIiBjbGFzcz1cImJhc2ljX2F1dGhfX3Bhc3N3b3JkIGF1dGhfaW5wdXRcIiBuYW1lPVwicGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIi8+PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fTsKKworICByZXR1cm4gIjxkaXYgY2xhc3M9J2Jhc2ljX2F1dGhfY29udGFpbmVyJz5cbiAgICA8aDMgY2xhc3M9XCJhdXRoX190aXRsZVwiPkJhc2ljIGF1dGhlbnRpY2F0aW9uIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0xvZ291dCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9oMz5cbiAgICA8Zm9ybSBjbGFzcz1cImJhc2ljX2lucHV0X2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aF9fZGVzY3JpcHRpb25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdXRoX2xhYmVsXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhc2ljX2F1dGhfX2xhYmVsXCIgZGF0YS1zdy10cmFuc2xhdGU+dXNlcm5hbWU6PC9zcGFuPlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0xvZ291dCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDMsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIucHJvZ3JhbSg1LCBkYXRhLCAwKSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgICAgICA8L2Rpdj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVycy51bmxlc3MuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzTG9nb3V0IDogZGVwdGgwKSx7Im5hbWUiOiJ1bmxlc3MiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDcsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgIDwvZm9ybT5cbjwvZGl2PlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1snY29udGVudF90eXBlJ10gPSB0ZW1wbGF0ZSh7IjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gKChzdGFjazEgPSBoZWxwZXJzLmVhY2guY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5wcm9kdWNlcyA6IGRlcHRoMCkseyJuYW1lIjoiZWFjaCIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMiwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIik7Cit9LCIyIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiCTxvcHRpb24gdmFsdWU9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLGRlcHRoMCx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLGRlcHRoMCx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L29wdGlvbj5cbiI7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiICA8b3B0aW9uIHZhbHVlPVwiYXBwbGljYXRpb24vanNvblwiPmFwcGxpY2F0aW9uL2pzb248L29wdGlvbj5cbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8bGFiZWwgZGF0YS1zdy10cmFuc2xhdGUgZm9yPVwiIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5jb250ZW50VHlwZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCI+UmVzcG9uc2UgQ29udGVudCBUeXBlPC9sYWJlbD5cbjxzZWxlY3QgbmFtZT1cImNvbnRlbnRUeXBlXCIgaWQ9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmNvbnRlbnRUeXBlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucHJvZHVjZXMgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvc2VsZWN0PlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1snbWFpbiddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiICA8ZGl2IGNsYXNzPVwiaW5mb190aXRsZVwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEudGl0bGUgOiBzdGFjazEpLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5mb19kZXNjcmlwdGlvbiBtYXJrZG93blwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEuZGVzY3JpcHRpb24gOiBzdGFjazEpLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvZGl2PlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5leHRlcm5hbERvY3MgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgyLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLCgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmluZm8gOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLnRlcm1zT2ZTZXJ2aWNlVXJsIDogc3RhY2sxKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiAgIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLCgoc3RhY2sxID0gKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEuY29udGFjdCA6IHN0YWNrMSkpICE9IG51bGwgPyBzdGFjazEubmFtZSA6IHN0YWNrMSkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDYsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4gICIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoKHN0YWNrMSA9ICgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmluZm8gOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLmNvbnRhY3QgOiBzdGFjazEpKSAhPSBudWxsID8gc3RhY2sxLnVybCA6IHN0YWNrMSkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDgsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4gICIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoKHN0YWNrMSA9ICgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmluZm8gOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLmNvbnRhY3QgOiBzdGFjazEpKSAhPSBudWxsID8gc3RhY2sxLmVtYWlsIDogc3RhY2sxKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTAsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4gICIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pbmZvIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS5saWNlbnNlIDogc3RhY2sxKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTIsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iOworfSwiMiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIiAgPHA+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5leHRlcm5hbERvY3MgOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLmRlc2NyaXB0aW9uIDogc3RhY2sxKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3A+XG4gIDxhIGhyZWY9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZXh0ZXJuYWxEb2NzIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS51cmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIiB0YXJnZXQ9XCJfYmxhbmtcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZXh0ZXJuYWxEb2NzIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS51cmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2E+XG4iOworfSwiNCI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAiPGRpdiBjbGFzcz1cImluZm9fdG9zXCI+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEudGVybXNPZlNlcnZpY2VVcmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIiBkYXRhLXN3LXRyYW5zbGF0ZT5UZXJtcyBvZiBzZXJ2aWNlPC9hPjwvZGl2PiI7Cit9LCI2IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICI8ZGl2PjxkaXYgY2xhc3M9J2luZm9fbmFtZScgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmVcIiBkYXRhLXN3LXRyYW5zbGF0ZT5DcmVhdGVkIGJ5IDwvZGl2PiAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCgoc3RhY2sxID0gKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEuY29udGFjdCA6IHN0YWNrMSkpICE9IG51bGwgPyBzdGFjazEubmFtZSA6IHN0YWNrMSkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvZGl2PiI7Cit9LCI4IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiPGRpdiBjbGFzcz0naW5mb191cmwnIGRhdGEtc3ctdHJhbnNsYXRlPlNlZSBtb3JlIGF0IDxhIGhyZWY9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pbmZvIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS5jb250YWN0IDogc3RhY2sxKSkgIT0gbnVsbCA/IHN0YWNrMS51cmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pbmZvIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS5jb250YWN0IDogc3RhY2sxKSkgIT0gbnVsbCA/IHN0YWNrMS51cmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2E+PC9kaXY+IjsKK30sIjEwIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiPGRpdiBjbGFzcz0naW5mb19lbWFpbCc+PGEgdGFyZ2V0PVwiX3BhcmVudFwiIGhyZWY9XCJtYWlsdG86IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLCgoc3RhY2sxID0gKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEuY29udGFjdCA6IHN0YWNrMSkpICE9IG51bGwgPyBzdGFjazEuZW1haWwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI/c3ViamVjdD0iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEudGl0bGUgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIiBkYXRhLXN3LXRyYW5zbGF0ZT5Db250YWN0IHRoZSBkZXZlbG9wZXI8L2E+PC9kaXY+IjsKK30sIjEyIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiPGRpdiBjbGFzcz0naW5mb19saWNlbnNlJz48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKChzdGFjazEgPSAoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pbmZvIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS5saWNlbnNlIDogc3RhY2sxKSkgIT0gbnVsbCA/IHN0YWNrMS51cmwgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoKHN0YWNrMSA9ICgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmluZm8gOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLmxpY2Vuc2UgOiBzdGFjazEpKSAhPSBudWxsID8gc3RhY2sxLm5hbWUgOiBzdGFjazEpLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2E+PC9kaXY+IjsKK30sIjE0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICIgICwgPHNwYW4gc3R5bGU9XCJmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHNcIiBkYXRhLXN3LXRyYW5zbGF0ZT5hcGkgdmVyc2lvbjwvc3Bhbj46ICIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEudmVyc2lvbiA6IHN0YWNrMSkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICAgICI7Cit9LCIxNiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIiAgICA8c3BhbiBzdHlsZT1cImZsb2F0OnJpZ2h0XCI+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsaWRhdG9yVXJsIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiL2RlYnVnP3VybD0iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnVybCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlwiPjxpbWcgaWQ9XCJ2YWxpZGF0b3JcIiBzcmM9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbGlkYXRvclVybCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIj91cmw9IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC51cmwgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj48L2E+XG4gICAgPC9zcGFuPlxuIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fTsKKworICByZXR1cm4gIjxkaXYgY2xhc3M9J2luZm8nIGlkPSdhcGlfaW5mbyc+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmluZm8gOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvZGl2PlxuPGRpdiBjbGFzcz0nY29udGFpbmVyJyBpZD0ncmVzb3VyY2VzX2NvbnRhaW5lcic+XG4gIDxkaXYgY2xhc3M9J2F1dGhvcml6ZS13cmFwcGVyJz48L2Rpdj5cblxuICA8dWwgaWQ9J3Jlc291cmNlcyc+PC91bD5cblxuICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XG4gICAgPGg0IHN0eWxlPVwiY29sb3I6ICM5OTlcIj5bIDxzcGFuIHN0eWxlPVwiZm9udC12YXJpYW50OiBzbWFsbC1jYXBzXCI+YmFzZSB1cmw8L3NwYW4+OiAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmJhc2VQYXRoIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKChzdGFjazEgPSAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaW5mbyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEudmVyc2lvbiA6IHN0YWNrMSkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDE0LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIl1cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsaWRhdG9yVXJsIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTYsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgIDwvaDQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ29hdXRoMiddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICI8cD5BdXRob3JpemF0aW9uIFVSTDogIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmF1dGhvcml6YXRpb25VcmwgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvcD4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAiPHA+VG9rZW4gVVJMOiAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudG9rZW5VcmwgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvcD4iOworfSwiNSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgPHA+UGxlYXNlIGlucHV0IHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3IgcGFzc3dvcmQgZmxvdyBhdXRob3JpemF0aW9uPC9wPlxuICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgICA8ZGl2PjxsYWJlbD5Vc2VybmFtZTogPGlucHV0IGNsYXNzPVwib2F1dGgtdXNlcm5hbWVcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJ1c2VybmFtZVwiPjwvbGFiZWw+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PjxsYWJlbD5QYXNzd29yZDogPGlucHV0IGNsYXNzPVwib2F1dGgtcGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIj48L2xhYmVsPjwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuIjsKK30sIjciOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgPHA+U2V0dXAgY2xpZW50IGF1dGhlbnRpY2F0aW9uLiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnJlcXVpcmVDbGllbnRBdXRoZW50aWNhaXRvbiA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDgsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9wPlxuICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgICA8ZGl2PjxsYWJlbD5UeXBlOlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJvYXV0aC1jbGllbnQtYXV0aGVudGljYXRpb24tdHlwZVwiIG5hbWU9XCJjbGllbnQtYXV0aGVudGljYXRpb24tdHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm9uZVwiIHNlbGVjdGVkPk5vbmUgb3Igb3RoZXI8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJhc2ljXCI+QmFzaWMgYXV0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicmVxdWVzdC1ib2R5XCI+UmVxdWVzdCBib2R5PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9hdXRoLWNsaWVudC1hdXRoZW50aWNhdGlvblwiIGhpZGRlbj5cbiAgICAgICAgICAgICAgICA8ZGl2PjxsYWJlbD5DbGllbnRJZDogPGlucHV0IGNsYXNzPVwib2F1dGgtY2xpZW50LWlkXCIgdHlwZT1cInRleHRcIiBuYW1lPVwiY2xpZW50LWlkXCI+PC9sYWJlbD48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PjxsYWJlbD5TZWNyZXQ6IDxpbnB1dCBjbGFzcz1cIm9hdXRoLWNsaWVudC1zZWNyZXRcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJjbGllbnQtc2VjcmV0XCI+PC9sYWJlbD48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuIjsKK30sIjgiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIoUmVxdWlyZWQpIjsKK30sIjEwIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm9hdXRoLXNjb3BlXCIgdHlwZT1cImNoZWNrYm94XCIgZGF0YS1zY29wZT1cIiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2NvcGUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIiBvYXV0aHR5cGU9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLk9BdXRoU2NoZW1lS2V5IDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCIvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnNjb3BlIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9sYWJlbD48YnIvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpLXNjb3BlLWRlc2NcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLk9BdXRoU2NoZW1lS2V5IDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4iOworfSwiMTEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgICAgICAgICAgICAgICAgICgiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5PQXV0aFNjaGVtZUtleSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIilcbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8ZGl2PlxuICAgIDxoMyBjbGFzcz1cImF1dGhfX3RpdGxlXCI+T0F1dGgyLjA8L2gzPlxuICAgIDxwPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3A+XG4gICAgIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5hdXRob3JpemF0aW9uVXJsIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiAgICAiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnRva2VuVXJsIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiAgICA8cD5mbG93OiAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmZsb3cgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3A+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzUGFzc3dvcmRGbG93IDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuY2xpZW50QXV0aGVudGljYXRpb24gOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSg3LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgICA8cD48c3Ryb25nPiAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmFwcE5hbWUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICIgPC9zdHJvbmc+IEFQSSByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHNjb3Blcy4gU2VsZWN0IHdoaWNoIG9uZXMgeW91IHdhbnQgdG8gZ3JhbnQgdG8gU3dhZ2dlciBVSS48L3A+XG4gICAgPHA+U2NvcGVzIGFyZSB1c2VkIHRvIGdyYW50IGFuIGFwcGxpY2F0aW9uIGRpZmZlcmVudCBsZXZlbHMgb2YgYWNjZXNzIHRvIGRhdGEgb24gYmVoYWxmIG9mIHRoZSBlbmQgdXNlci4gRWFjaCBBUEkgbWF5IGRlY2xhcmUgb25lIG9yIG1vcmUgc2NvcGVzLlxuICAgICAgICA8YSBocmVmPVwiI1wiPkxlYXJuIGhvdyB0byB1c2U8L2E+XG4gICAgPC9wPlxuICAgIDx1bCBjbGFzcz1cImFwaS1wb3B1cC1zY29wZXNcIj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVycy5lYWNoLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zY29wZXMgOiBkZXB0aDApLHsibmFtZSI6ImVhY2giLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEwLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgICA8L3VsPlxuPC9kaXY+IjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1snb3BlcmF0aW9uJ10gPSB0ZW1wbGF0ZSh7IjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICJkZXByZWNhdGVkIjsKK30sIjMiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgICAgICAgICAgICA8aDQ+PHNwYW4gZGF0YS1zdy10cmFuc2xhdGU+V2FybmluZzogRGVwcmVjYXRlZDwvc3Bhbj48L2g0PlxuIjsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgPGg0PjxzcGFuIGRhdGEtc3ctdHJhbnNsYXRlPkltcGxlbWVudGF0aW9uIE5vdGVzPC9zcGFuPjwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZG93blwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9kaXY+XG4iOworfSwiNyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2F1dGhvcml6ZS13cmFwcGVyIGF1dGhvcml6ZS13cmFwcGVyX29wZXJhdGlvbic+PC9kaXY+XG4iOworfSwiOSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fTsKKworICByZXR1cm4gIiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzcG9uc2UtY2xhc3NcIj5cbiAgICAgICAgICAgIDxoND48c3BhbiBkYXRhLXN3LXRyYW5zbGF0ZT5SZXNwb25zZSBDbGFzczwvc3Bhbj4gKDxzcGFuIGRhdGEtc3ctdHJhbnNsYXRlPlN0YXR1czwvc3Bhbj4gIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zdWNjZXNzQ29kZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIik8L2g0PlxuICAgICAgICAgICAgICAiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnN1Y2Nlc3NEZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEwLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICAgICAgICAgICAgPHA+PHNwYW4gY2xhc3M9XCJtb2RlbC1zaWduYXR1cmVcIiAvPjwvcD5cbiAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzcG9uc2UtY29udGVudC10eXBlXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuIjsKK30sIjEwIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICI8ZGl2IGNsYXNzPVwibWFya2Rvd25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc3VjY2Vzc0Rlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2Rpdj4iOworfSwiMTIiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+SGVhZGVyczwvaDQ+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwiaGVhZGVyc1wiPlxuICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwMHB4OyBtYXgtd2lkdGg6IDEwMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+SGVhZGVyPC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMzEwcHg7IG1heC13aWR0aDogMzEwcHhcIiBkYXRhLXN3LXRyYW5zbGF0ZT5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDIwMHB4OyBtYXgtd2lkdGg6IDIwMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+VHlwZTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDMyMHB4OyBtYXgtd2lkdGg6IDMyMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+T3RoZXI8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVycy5lYWNoLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaGVhZGVycyA6IGRlcHRoMCkseyJuYW1lIjoiZWFjaCIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTMsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuIjsKK30sIjEzIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGhlbHBlciwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+IgorICAgICsgY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24oKChoZWxwZXIgPSAoaGVscGVyID0gaGVscGVycy5rZXkgfHwgKGRhdGEgJiYgZGF0YS5rZXkpKSAhPSBudWxsID8gaGVscGVyIDogYWxpYXMyKSwodHlwZW9mIGhlbHBlciA9PT0gImZ1bmN0aW9uIiA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJrZXkiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pIDogaGVscGVyKSkpCisgICAgKyAiPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZGVzY3JpcHRpb24gOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudHlwZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAub3RoZXIgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuIjsKK30sIjE1IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiICAgICAgICAgIDxoNCBkYXRhLXN3LXRyYW5zbGF0ZT5QYXJhbWV0ZXJzPC9oND5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9J2Z1bGx3aWR0aCBwYXJhbWV0ZXJzJz5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTAwcHg7IG1heC13aWR0aDogMTAwcHhcIiBkYXRhLXN3LXRyYW5zbGF0ZT5QYXJhbWV0ZXI8L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDMxMHB4OyBtYXgtd2lkdGg6IDMxMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+VmFsdWU8L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDIwMHB4OyBtYXgtd2lkdGg6IDIwMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+RGVzY3JpcHRpb248L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDEwMHB4OyBtYXgtd2lkdGg6IDEwMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+UGFyYW1ldGVyIFR5cGU8L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDIyMHB4OyBtYXgtd2lkdGg6IDIzMHB4XCIgZGF0YS1zdy10cmFuc2xhdGU+RGF0YSBUeXBlPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJvcGVyYXRpb24tcGFyYW1zXCI+XG5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4iOworfSwiMTciOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgICAgICAgICAgPGRpdiBzdHlsZT0nbWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lJz48L2Rpdj5cbiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVzcG9uc2UgTWVzc2FnZXM8L2g0PlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz0nZnVsbHdpZHRoIHJlc3BvbnNlLW1lc3NhZ2VzJz5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPkhUVFAgU3RhdHVzIENvZGU8L3RoPlxuICAgICAgICAgICAgICA8dGggZGF0YS1zdy10cmFuc2xhdGU+UmVhc29uPC90aD5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPlJlc3BvbnNlIE1vZGVsPC90aD5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPkhlYWRlcnM8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJvcGVyYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4iOworfSwiMTkiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIiOworfSwiMjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgICAgICAgICAgPGRpdiBjbGFzcz0nc2FuZGJveF9oZWFkZXInPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdzdWJtaXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1RyeSBpdCBvdXQhJyBkYXRhLXN3LXRyYW5zbGF0ZS8+XG4gICAgICAgICAgICA8YSBocmVmPScjJyBjbGFzcz0ncmVzcG9uc2VfaGlkZXInIHN0eWxlPSdkaXNwbGF5Om5vbmUnIGRhdGEtc3ctdHJhbnNsYXRlPkhpZGUgUmVzcG9uc2U8L2E+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz0ncmVzcG9uc2VfdGhyb2JiZXInIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiI7Cit9LCIyMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVxdWVzdCBIZWFkZXJzPC9oND5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSdibG9jayByZXF1ZXN0X2hlYWRlcnMnPjwvZGl2PlxuIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZywgYWxpYXMzPWNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uOworCisgIHJldHVybiAiICA8dWwgY2xhc3M9J29wZXJhdGlvbnMnID5cbiAgICA8bGkgY2xhc3M9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubWV0aG9kIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiIG9wZXJhdGlvbicgaWQ9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucGFyZW50SWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJfIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uaWNrbmFtZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+XG4gICAgICA8ZGl2IGNsYXNzPSdoZWFkaW5nJz5cbiAgICAgICAgPGgzPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPSdodHRwX21ldGhvZCc+XG4gICAgICAgICAgPGEgaHJlZj0nIyEvIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5lbmNvZGVkUGFyZW50SWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkKKyAgICArICIvIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uaWNrbmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKQorICAgICsgIicgY2xhc3M9XCJ0b2dnbGVPcGVyYXRpb25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm1ldGhvZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvYT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9J3BhdGgnPlxuICAgICAgICAgIDxhIGhyZWY9JyMhLyIKKyAgICArIGFsaWFzMygoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZW5jb2RlZFBhcmVudElkIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpCisgICAgKyAiLyIKKyAgICArIGFsaWFzMygoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmlja25hbWUgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkKKyAgICArICInIGNsYXNzPVwidG9nZ2xlT3BlcmF0aW9uICIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZGVwcmVjYXRlZCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5wYXRoIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9hPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHVsIGNsYXNzPSdvcHRpb25zJz5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgPGEgaHJlZj0nIyEvIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5lbmNvZGVkUGFyZW50SWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkKKyAgICArICIvIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uaWNrbmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKQorICAgICsgIicgY2xhc3M9XCJ0b2dnbGVPcGVyYXRpb25cIj48c3BhbiBjbGFzcz1cIm1hcmtkb3duXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zdW1tYXJ5IDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9zcGFuPjwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSdjb250ZW50JyBpZD0nIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5lbmNvZGVkUGFyZW50SWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkKKyAgICArICJfIgorICAgICsgYWxpYXMzKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uaWNrbmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKQorICAgICsgIl9jb250ZW50JyBzdHlsZT0nZGlzcGxheTpub25lJz5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZGVwcmVjYXRlZCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDMsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2VjdXJpdHkgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSg3LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC50eXBlIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oOSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaGVhZGVycyA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEyLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICAgICAgICA8Zm9ybSBhY2NlcHQtY2hhcnNldD0nVVRGLTgnIGNsYXNzPSdzYW5kYm94Jz5cbiAgICAgICAgICA8ZGl2IHN0eWxlPSdtYXJnaW46MDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUnPjwvZGl2PlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5wYXJhbWV0ZXJzIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMTUsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnJlc3BvbnNlTWVzc2FnZXMgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxNywgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaXNSZWFkT25seSA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDE5LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMjEsIGRhdGEsIDApLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICIgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPGRpdiBjbGFzcz0ncmVzcG9uc2UnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPlxuICAgICAgICAgIDxoNCBjbGFzcz0nY3VybCc+Q3VybDwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz0nYmxvY2sgY3VybCc+PC9kaXY+XG4gICAgICAgICAgPGg0IGRhdGEtc3ctdHJhbnNsYXRlPlJlcXVlc3QgVVJMPC9oND5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSdibG9jayByZXF1ZXN0X3VybCc+PC9kaXY+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnNob3dSZXF1ZXN0SGVhZGVycyA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDIzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVzcG9uc2UgQm9keTwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz0nYmxvY2sgcmVzcG9uc2VfYm9keSc+PC9kaXY+XG4gICAgICAgICAgPGg0IGRhdGEtc3ctdHJhbnNsYXRlPlJlc3BvbnNlIENvZGU8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9J2Jsb2NrIHJlc3BvbnNlX2NvZGUnPjwvZGl2PlxuICAgICAgICAgIDxoNCBkYXRhLXN3LXRyYW5zbGF0ZT5SZXNwb25zZSBIZWFkZXJzPC9oND5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSdibG9jayByZXNwb25zZV9oZWFkZXJzJz48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1sncGFyYW0nXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0ZpbGUgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgyLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjIiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIJCQk8aW5wdXQgdHlwZT1cImZpbGVcIiBuYW1lPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm5hbWUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInLz5cbgkJCTxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItY29udGVudC10eXBlXCIgLz5cbiI7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwWyJkZWZhdWx0Il0gOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSg1LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIJCQkJPGRpdiBjbGFzcz1cImVkaXRvcl9ob2xkZXJcIj48L2Rpdj5cbgkJCQk8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEnIG5hbWU9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIicgaWQ9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMFsiZGVmYXVsdCJdIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZXh0YXJlYT5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItY29udGVudC10eXBlXCIgLz5cbiI7Cit9LCI3IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiCQkJCTx0ZXh0YXJlYSBjbGFzcz0nYm9keS10ZXh0YXJlYScgbmFtZT0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJyBpZD0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC52YWx1ZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJz48L3RleHRhcmVhPlxuCQkJCTxkaXYgY2xhc3M9XCJlZGl0b3JfaG9sZGVyXCI+PC9kaXY+XG4JCQkJPGJyIC8+XG4JCQkJPGRpdiBjbGFzcz1cInBhcmFtZXRlci1jb250ZW50LXR5cGVcIiAvPlxuIjsKK30sIjkiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaXNGaWxlIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMiwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5wcm9ncmFtKDEwLCBkYXRhLCAwKSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpOworfSwiMTAiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gKChzdGFjazEgPSAoaGVscGVycy5yZW5kZXJUZXh0UGFyYW0gfHwgKGRlcHRoMCAmJiBkZXB0aDAucmVuZGVyVGV4dFBhcmFtKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSxkZXB0aDAseyJuYW1lIjoicmVuZGVyVGV4dFBhcmFtIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxMSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIik7Cit9LCIxMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8dGQgY2xhc3M9J2NvZGUnPjxsYWJlbCBmb3I9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9sYWJlbD48L3RkPlxuPHRkPlxuXG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzQm9keSA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIucHJvZ3JhbSg5LCBkYXRhLCAwKSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG48L3RkPlxuPHRkIGNsYXNzPVwibWFya2Rvd25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZD5cbjx0ZD4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnBhcmFtVHlwZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG48dGQ+XG4JPHNwYW4gY2xhc3M9XCJtb2RlbC1zaWduYXR1cmVcIj48L3NwYW4+XG48L3RkPlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1sncGFyYW1fbGlzdCddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiIHJlcXVpcmVkIjsKK30sIjMiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgbXVsdGlwbGU9XCJtdWx0aXBsZVwiIjsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgcmVxdWlyZWQgIjsKK30sIjciOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMTsKKworICByZXR1cm4gIiAgICAgIDxvcHRpb24gIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzLnVubGVzcy5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmhhc0RlZmF1bHQgOiBkZXB0aDApLHsibmFtZSI6InVubGVzcyIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oOCwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICIgdmFsdWU9Jyc+PC9vcHRpb24+XG4iOworfSwiOCI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgc2VsZWN0ZWQ9XCJcIiAiOworfSwiMTAiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICJcbiAgICAgIDxvcHRpb24gIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0RlZmF1bHQgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxMSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICIgIHZhbHVlPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC52YWx1ZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJz4gIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWUgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiAiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzRGVmYXVsdCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiA8L29wdGlvbj5cblxuIjsKK30sIjExIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiIHNlbGVjdGVkPVwiXCIgICI7Cit9LCIxMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAoZGVmYXVsdCkgIjsKK30sIjE1IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiPHN0cm9uZz4iOworfSwiMTciOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICI8L3N0cm9uZz4iOworfSwiY29tcGlsZXIiOls3LCI+PSA0LjAuMCJdLCJtYWluIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGhlbHBlciwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8dGQgY2xhc3M9J2NvZGUiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnJlcXVpcmVkIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInPjxsYWJlbCBmb3I9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9sYWJlbD48L3RkPlxuPHRkPlxuICA8c2VsZWN0ICIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuaXNBcnJheSB8fCAoZGVwdGgwICYmIGRlcHRoMC5pc0FycmF5KSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLGRlcHRoMCx7Im5hbWUiOiJpc0FycmF5IiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIiBjbGFzcz1cInBhcmFtZXRlciAiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnJlcXVpcmVkIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIiBuYW1lPVwiIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCIgaWQ9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj5cblxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzLnVubGVzcy5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucmVxdWlyZWQgOiBkZXB0aDApLHsibmFtZSI6InVubGVzcyIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNywgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVycy5lYWNoLmNhbGwoYWxpYXMxLCgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmFsbG93YWJsZVZhbHVlcyA6IGRlcHRoMCkpICE9IG51bGwgPyBzdGFjazEuZGVzY3JpcHRpdmVWYWx1ZXMgOiBzdGFjazEpLHsibmFtZSI6ImVhY2giLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEwLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICA8L3NlbGVjdD5cbjwvdGQ+XG48dGQgY2xhc3M9XCJtYXJrZG93blwiPiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucmVxdWlyZWQgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxNSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICgoc3RhY2sxID0gKChoZWxwZXIgPSAoaGVscGVyID0gaGVscGVycy5kZXNjcmlwdGlvbiB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuZGVzY3JpcHRpb24gOiBkZXB0aDApKSAhPSBudWxsID8gaGVscGVyIDogYWxpYXMyKSwodHlwZW9mIGhlbHBlciA9PT0gImZ1bmN0aW9uIiA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJkZXNjcmlwdGlvbiIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkgOiBoZWxwZXIpKSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5yZXF1aXJlZCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDE3LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG48dGQ+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5wYXJhbVR5cGUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuPHRkPjxzcGFuIGNsYXNzPVwibW9kZWwtc2lnbmF0dXJlXCI+PC9zcGFuPjwvdGQ+XG4iOworfSwidXNlRGF0YSI6dHJ1ZX0pOwordGVtcGxhdGVzWydwYXJhbV9yZWFkb25seSddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiICAgICAgICA8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEnIHJlYWRvbmx5PSdyZWFkb25seScgbmFtZT0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJyBpZD0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC52YWx1ZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJz4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMFsiZGVmYXVsdCJdIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RleHRhcmVhPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFyYW1ldGVyLWNvbnRlbnQtdHlwZVwiIC8+XG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMFsiZGVmYXVsdCJdIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5wcm9ncmFtKDYsIGRhdGEsIDApLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIik7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICIgICAgICAgICAgICAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDBbImRlZmF1bHQiXSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iOworfSwiNiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgIChlbXB0eSlcbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8dGQgY2xhc3M9J2NvZGUnPjxsYWJlbCBmb3I9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9sYWJlbD48L3RkPlxuPHRkPlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0JvZHkgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG48dGQgY2xhc3M9XCJtYXJrZG93blwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuPHRkPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucGFyYW1UeXBlIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZD5cbjx0ZD48c3BhbiBjbGFzcz1cIm1vZGVsLXNpZ25hdHVyZVwiPjwvc3Bhbj48L3RkPlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1sncGFyYW1fcmVhZG9ubHlfcmVxdWlyZWQnXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIiAgICAgICAgPHRleHRhcmVhIGNsYXNzPSdib2R5LXRleHRhcmVhJyByZWFkb25seT0ncmVhZG9ubHknIHBsYWNlaG9sZGVyPScocmVxdWlyZWQpJyBuYW1lPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwWyJkZWZhdWx0Il0gOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGV4dGFyZWE+XG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMFsiZGVmYXVsdCJdIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5wcm9ncmFtKDYsIGRhdGEsIDApLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIik7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICIgICAgICAgICAgICAiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDBbImRlZmF1bHQiXSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iOworfSwiNiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIiAgICAgICAgICAgIChlbXB0eSlcbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICI8dGQgY2xhc3M9J2NvZGUgcmVxdWlyZWQnPjxsYWJlbCBmb3I9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9sYWJlbD48L3RkPlxuPHRkPlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0JvZHkgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG48dGQgY2xhc3M9XCJtYXJrZG93blwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuPHRkPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucGFyYW1UeXBlIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZD5cbjx0ZD48c3BhbiBjbGFzcz1cIm1vZGVsLXNpZ25hdHVyZVwiPjwvc3Bhbj48L3RkPlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1sncGFyYW1fcmVxdWlyZWQnXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc0ZpbGUgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgyLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjIiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIJCQk8aW5wdXQgdHlwZT1cImZpbGVcIiBuYW1lPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm5hbWUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInLz5cbiI7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwWyJkZWZhdWx0Il0gOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSg1LCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIJCQkJPGRpdiBjbGFzcz1cImVkaXRvcl9ob2xkZXJcIj48L2Rpdj5cbgkJCQk8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEgcmVxdWlyZWQnIHBsYWNlaG9sZGVyPScocmVxdWlyZWQpJyBuYW1lPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPVwiIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC52YWx1ZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCI+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDBbImRlZmF1bHQiXSA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZXh0YXJlYT5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItY29udGVudC10eXBlXCIgLz5cbiI7Cit9LCI3IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiCQkJCTx0ZXh0YXJlYSBjbGFzcz0nYm9keS10ZXh0YXJlYSByZXF1aXJlZCcgcGxhY2Vob2xkZXI9JyhyZXF1aXJlZCknIG5hbWU9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm5hbWUgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIicgaWQ9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudmFsdWVJZCA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIic+PC90ZXh0YXJlYT5cbgkJCQk8ZGl2IGNsYXNzPVwiZWRpdG9yX2hvbGRlclwiPjwvZGl2PlxuCQkJCTxiciAvPlxuCQkJCTxkaXYgY2xhc3M9XCJwYXJhbWV0ZXItY29udGVudC10eXBlXCIgLz5cbiI7Cit9LCI5IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzRmlsZSA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEwLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oMTIsIGRhdGEsIDApLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIik7Cit9LCIxMCI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIgkJCTxpbnB1dCBjbGFzcz0ncGFyYW1ldGVyIHJlcXVpcmVkJyB0eXBlPSdmaWxlJyBuYW1lPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPSciCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnZhbHVlSWQgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInLz5cbiI7Cit9LCIxMiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IChoZWxwZXJzLnJlbmRlclRleHRQYXJhbSB8fCAoZGVwdGgwICYmIGRlcHRoMC5yZW5kZXJUZXh0UGFyYW0pIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LGRlcHRoMCx7Im5hbWUiOiJyZW5kZXJUZXh0UGFyYW0iLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjEzIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIjx0ZCBjbGFzcz0nY29kZSByZXF1aXJlZCc+PGxhYmVsIGZvcj0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC52YWx1ZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiJz4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm5hbWUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2xhYmVsPjwvdGQ+XG48dGQ+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzQm9keSA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIucHJvZ3JhbSg5LCBkYXRhLCAwKSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZD5cbjx0ZD5cbgk8c3Ryb25nPjxzcGFuIGNsYXNzPVwibWFya2Rvd25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5kZXNjcmlwdGlvbiA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9zcGFuPjwvc3Ryb25nPlxuPC90ZD5cbjx0ZD4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnBhcmFtVHlwZSA6IGRlcHRoMCkseyJuYW1lIjoiZXNjYXBlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvdGQ+XG48dGQ+PHNwYW4gY2xhc3M9XCJtb2RlbC1zaWduYXR1cmVcIj48L3NwYW4+PC90ZD5cbiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ3BhcmFtZXRlcl9jb250ZW50X3R5cGUnXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAoKHN0YWNrMSA9IGhlbHBlcnMuZWFjaC5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmNvbnN1bWVzIDogZGVwdGgwKSx7Im5hbWUiOiJlYWNoIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgyLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sIjIiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3Npbmc7CisKKyAgcmV0dXJuICIgIDxvcHRpb24gdmFsdWU9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLGRlcHRoMCx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLGRlcHRoMCx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L29wdGlvbj5cbiI7Cit9LCI0IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHJldHVybiAiICA8b3B0aW9uIHZhbHVlPVwiYXBwbGljYXRpb24vanNvblwiPmFwcGxpY2F0aW9uL2pzb248L29wdGlvbj5cbiI7Cit9LCJjb21waWxlciI6WzcsIj49IDQuMC4wIl0sIm1haW4iOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgaGVscGVyLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIjxsYWJlbCBmb3I9XCIiCisgICAgKyBjb250YWluZXIuZXNjYXBlRXhwcmVzc2lvbigoKGhlbHBlciA9IChoZWxwZXIgPSBoZWxwZXJzLnBhcmFtZXRlckNvbnRlbnRUeXBlSWQgfHwgKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnBhcmFtZXRlckNvbnRlbnRUeXBlSWQgOiBkZXB0aDApKSAhPSBudWxsID8gaGVscGVyIDogYWxpYXMyKSwodHlwZW9mIGhlbHBlciA9PT0gImZ1bmN0aW9uIiA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJwYXJhbWV0ZXJDb250ZW50VHlwZUlkIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSA6IGhlbHBlcikpKQorICAgICsgIlwiIGRhdGEtc3ctdHJhbnNsYXRlPlBhcmFtZXRlciBjb250ZW50IHR5cGU6PC9sYWJlbD5cbjxzZWxlY3QgbmFtZT1cInBhcmFtZXRlckNvbnRlbnRUeXBlXCIgaWQ9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5wYXJhbWV0ZXJDb250ZW50VHlwZUlkIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuY29uc3VtZXMgOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNCwgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvc2VsZWN0PlxuIjsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1sncG9wdXAnXSA9IHRlbXBsYXRlKHsiY29tcGlsZXIiOls3LCI+PSA0LjAuMCJdLCJtYWluIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBoZWxwZXI7CisKKyAgcmV0dXJuICI8ZGl2IGNsYXNzPVwiYXBpLXBvcHVwLWRpYWxvZy13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFwaS1wb3B1cC10aXRsZVwiPiIKKyAgICArIGNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uKCgoaGVscGVyID0gKGhlbHBlciA9IGhlbHBlcnMudGl0bGUgfHwgKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnRpdGxlIDogZGVwdGgwKSkgIT0gbnVsbCA/IGhlbHBlciA6IGhlbHBlcnMuaGVscGVyTWlzc2luZyksKHR5cGVvZiBoZWxwZXIgPT09ICJmdW5jdGlvbiIgPyBoZWxwZXIuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LHsibmFtZSI6InRpdGxlIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSA6IGhlbHBlcikpKQorICAgICsgIjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcGktcG9wdXAtY29udGVudFwiPjwvZGl2PlxuICAgIDxwIGNsYXNzPVwiZXJyb3ItbXNnXCI+PC9wPlxuICAgIDxkaXYgY2xhc3M9XCJhcGktcG9wdXAtYWN0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXBpLXBvcHVwLWNhbmNlbCBhcGktYnV0dG9uIGdyYXlcIiB0eXBlPVwiYnV0dG9uXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhcGktcG9wdXAtZGlhbG9nLXNoYWRvd1wiPjwvZGl2PiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ3Jlc291cmNlJ10gPSB0ZW1wbGF0ZSh7IjEiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgOiAiOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxOworCisgIHJldHVybiAiICAgIDxsaT5cbiAgICAgIDxhIGhyZWY9JyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGhlbHBlcnMuaGVscGVyTWlzc2luZykuY2FsbChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC51cmwgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIicgZGF0YS1zdy10cmFuc2xhdGU+UmF3PC9hPlxuICAgIDwvbGk+XG4iOworfSwiY29tcGlsZXIiOls3LCI+PSA0LjAuMCJdLCJtYWluIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGhlbHBlciwgb3B0aW9ucywgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sIGFsaWFzMj1oZWxwZXJzLmhlbHBlck1pc3NpbmcsIGJ1ZmZlciA9CisgICI8ZGl2IGNsYXNzPSdoZWFkaW5nJz5cbiAgPGgyPlxuICAgIDxhIGhyZWY9JyMhLyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlkIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGNsYXNzPVwidG9nZ2xlRW5kcG9pbnRMaXN0XCIgZGF0YS1pZD1cIiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlkIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5uYW1lIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L2E+ICI7CisgIHN0YWNrMSA9ICgoaGVscGVyID0gKGhlbHBlciA9IGhlbHBlcnMuc3VtbWFyeSB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc3VtbWFyeSA6IGRlcHRoMCkpICE9IG51bGwgPyBoZWxwZXIgOiBhbGlhczIpLChvcHRpb25zPXsibmFtZSI6InN1bW1hcnkiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pLCh0eXBlb2YgaGVscGVyID09PSAiZnVuY3Rpb24iID8gaGVscGVyLmNhbGwoYWxpYXMxLG9wdGlvbnMpIDogaGVscGVyKSk7CisgIGlmICghaGVscGVycy5zdW1tYXJ5KSB7IHN0YWNrMSA9IGhlbHBlcnMuYmxvY2tIZWxwZXJNaXNzaW5nLmNhbGwoZGVwdGgwLHN0YWNrMSxvcHRpb25zKX0KKyAgaWYgKHN0YWNrMSAhPSBudWxsKSB7IGJ1ZmZlciArPSBzdGFjazE7IH0KKyAgcmV0dXJuIGJ1ZmZlciArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnN1bW1hcnkgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICA8L2gyPlxuICA8dWwgY2xhc3M9J29wdGlvbnMnPlxuICAgIDxsaT5cbiAgICAgIDxhIGhyZWY9JyMhLyIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlkIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICInIGlkPSdlbmRwb2ludExpc3RUb2dnZXJfIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIicgY2xhc3M9XCJ0b2dnbGVFbmRwb2ludExpc3RcIiBkYXRhLWlkPVwiIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlwiIGRhdGEtc3ctdHJhbnNsYXRlPlNob3cvSGlkZTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaT5cbiAgICAgIDxhIGhyZWY9JyMnIGNsYXNzPVwiY29sbGFwc2VSZXNvdXJjZVwiIGRhdGEtaWQ9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pZCA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCIgZGF0YS1zdy10cmFuc2xhdGU+XG4gICAgICAgIExpc3QgT3BlcmF0aW9uc1xuICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpPlxuICAgICAgPGEgaHJlZj0nIycgY2xhc3M9XCJleHBhbmRSZXNvdXJjZVwiIGRhdGEtaWQ9XCIiCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pZCA6IGRlcHRoMCkseyJuYW1lIjoic2FuaXRpemUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXCIgZGF0YS1zdy10cmFuc2xhdGU+XG4gICAgICAgIEV4cGFuZCBPcGVyYXRpb25zXG4gICAgICA8L2E+XG4gICAgPC9saT5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAudXJsIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICIgIDwvdWw+XG48L2Rpdj5cbjx1bCBjbGFzcz0nZW5kcG9pbnRzJyBpZD0nIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5zYW5pdGl6ZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5zYW5pdGl6ZSkgfHwgYWxpYXMyKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuaWQgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIl9lbmRwb2ludF9saXN0JyBzdHlsZT0nZGlzcGxheTpub25lJz5cblxuPC91bD5cbiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ3Jlc3BvbnNlX2NvbnRlbnRfdHlwZSddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICgoc3RhY2sxID0gaGVscGVycy5lYWNoLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucHJvZHVjZXMgOiBkZXB0aDApLHsibmFtZSI6ImVhY2giLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDIsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpOworfSwiMiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBhbGlhczE9ZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwgYWxpYXMyPWhlbHBlcnMuaGVscGVyTWlzc2luZzsKKworICByZXR1cm4gIiAgPG9wdGlvbiB2YWx1ZT1cIiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsZGVwdGgwLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlwiPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsZGVwdGgwLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIjwvb3B0aW9uPlxuIjsKK30sIjQiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgcmV0dXJuICIgIDxvcHRpb24gdmFsdWU9XCJhcHBsaWNhdGlvbi9qc29uXCI+YXBwbGljYXRpb24vanNvbjwvb3B0aW9uPlxuIjsKK30sImNvbXBpbGVyIjpbNywiPj0gNC4wLjAiXSwibWFpbiI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBoZWxwZXIsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nLCBhbGlhczM9ImZ1bmN0aW9uIiwgYWxpYXM0PWNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uOworCisgIHJldHVybiAiPGxhYmVsIGRhdGEtc3ctdHJhbnNsYXRlIGZvcj1cIiIKKyAgICArIGFsaWFzNCgoKGhlbHBlciA9IChoZWxwZXIgPSBoZWxwZXJzLnJlc3BvbnNlQ29udGVudFR5cGVJZCB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucmVzcG9uc2VDb250ZW50VHlwZUlkIDogZGVwdGgwKSkgIT0gbnVsbCA/IGhlbHBlciA6IGFsaWFzMiksKHR5cGVvZiBoZWxwZXIgPT09IGFsaWFzMyA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJyZXNwb25zZUNvbnRlbnRUeXBlSWQiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pIDogaGVscGVyKSkpCisgICAgKyAiXCI+UmVzcG9uc2UgQ29udGVudCBUeXBlPC9sYWJlbD5cbjxzZWxlY3QgbmFtZT1cInJlc3BvbnNlQ29udGVudFR5cGVcIiBpZD1cIiIKKyAgICArIGFsaWFzNCgoKGhlbHBlciA9IChoZWxwZXIgPSBoZWxwZXJzLnJlc3BvbnNlQ29udGVudFR5cGVJZCB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAucmVzcG9uc2VDb250ZW50VHlwZUlkIDogZGVwdGgwKSkgIT0gbnVsbCA/IGhlbHBlciA6IGFsaWFzMiksKHR5cGVvZiBoZWxwZXIgPT09IGFsaWFzMyA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJyZXNwb25zZUNvbnRlbnRUeXBlSWQiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pIDogaGVscGVyKSkpCisgICAgKyAiXCI+XG4iCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnByb2R1Y2VzIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMSwgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5wcm9ncmFtKDQsIGRhdGEsIDApLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3NlbGVjdD5cbiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit0ZW1wbGF0ZXNbJ3NpZ25hdHVyZSddID0gdGVtcGxhdGUoeyIxIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9OworCisgIHJldHVybiAiXG48ZGl2PlxuPHVsIGNsYXNzPVwic2lnbmF0dXJlLW5hdlwiPlxuICA8bGk+PGEgY2xhc3M9XCJkZXNjcmlwdGlvbi1saW5rXCIgaHJlZj1cIiNcIiBkYXRhLXN3LXRyYW5zbGF0ZT5Nb2RlbDwvYT48L2xpPlxuICA8bGk+PGEgY2xhc3M9XCJzbmlwcGV0LWxpbmtcIiBocmVmPVwiI1wiIGRhdGEtc3ctdHJhbnNsYXRlPkV4YW1wbGUgVmFsdWU8L2E+PC9saT5cbjwvdWw+XG48ZGl2PlxuXG48ZGl2IGNsYXNzPVwic2lnbmF0dXJlLWNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICIKKyAgICArIGNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uKChoZWxwZXJzLnNhbml0aXplIHx8IChkZXB0aDAgJiYgZGVwdGgwLnNhbml0aXplKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zaWduYXR1cmUgOiBkZXB0aDApLHsibmFtZSI6InNhbml0aXplIiwiaGFzaCI6e30sImRhdGEiOmRhdGF9KSkKKyAgICArICJcbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNuaXBwZXRcIj5cbiIKKyAgICArICgoc3RhY2sxID0gaGVscGVyc1siaWYiXS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2FtcGxlSlNPTiA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDIsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnNhbXBsZVhNTCA6IGRlcHRoMCkseyJuYW1lIjoiaWYiLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDUsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICA8L2Rpdj5cbjwvZGl2PlxuIjsKK30sIjIiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge307CisKKyAgcmV0dXJuICIgICAgICA8ZGl2IGNsYXNzPVwic25pcHBldF9qc29uXCI+XG4gICAgICAgIDxwcmU+PGNvZGU+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5zYW1wbGVKU09OIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9jb2RlPjwvcHJlPlxuICAgICAgICAiCisgICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbImlmIl0uY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmlzUGFyYW0gOiBkZXB0aDApLHsibmFtZSI6ImlmIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgzLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLm5vb3AsImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKQorICAgICsgIlxuICAgICAgPC9kaXY+XG4iOworfSwiMyI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICByZXR1cm4gIjxzbWFsbCBjbGFzcz1cIm5vdGljZVwiIGRhdGEtc3ctdHJhbnNsYXRlPjwvc21hbGw+IjsKK30sIjUiOmZ1bmN0aW9uKGNvbnRhaW5lcixkZXB0aDAsaGVscGVycyxwYXJ0aWFscyxkYXRhKSB7CisgICAgdmFyIHN0YWNrMSwgYWxpYXMxPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge307CisKKyAgcmV0dXJuICIgICAgPGRpdiBjbGFzcz1cInNuaXBwZXRfeG1sXCI+XG4gICAgICA8cHJlPjxjb2RlPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuZXNjYXBlIHx8IChkZXB0aDAgJiYgZGVwdGgwLmVzY2FwZSkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGFsaWFzMSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2FtcGxlWE1MIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC9jb2RlPjwvcHJlPlxuICAgICAgIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzWyJpZiJdLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5pc1BhcmFtIDogZGVwdGgwKSx7Im5hbWUiOiJpZiIsImhhc2giOnt9LCJmbiI6Y29udGFpbmVyLnByb2dyYW0oMywgZGF0YSwgMCksImludmVyc2UiOmNvbnRhaW5lci5ub29wLCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICJcbiAgICA8L2Rpdj5cbiI7Cit9LCI3IjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICIgICAgIgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBoZWxwZXJzLmhlbHBlck1pc3NpbmcpLmNhbGwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAgOiB7fSwoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAuc2lnbmF0dXJlIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiXG4iOworfSwiY29tcGlsZXIiOls3LCI+PSA0LjAuMCJdLCJtYWluIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazE7CisKKyAgcmV0dXJuICgoc3RhY2sxID0gKGhlbHBlcnMuaWZDb25kIHx8IChkZXB0aDAgJiYgZGVwdGgwLmlmQ29uZCkgfHwgaGVscGVycy5oZWxwZXJNaXNzaW5nKS5jYWxsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDoge30sKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnNhbXBsZUpTT04gOiBkZXB0aDApLCJ8fCIsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLnNhbXBsZVhNTCA6IGRlcHRoMCkseyJuYW1lIjoiaWZDb25kIiwiaGFzaCI6e30sImZuIjpjb250YWluZXIucHJvZ3JhbSgxLCBkYXRhLCAwKSwiaW52ZXJzZSI6Y29udGFpbmVyLnByb2dyYW0oNywgZGF0YSwgMCksImRhdGEiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6ICIiKTsKK30sInVzZURhdGEiOnRydWV9KTsKK3RlbXBsYXRlc1snc3RhdHVzX2NvZGUnXSA9IHRlbXBsYXRlKHsiMSI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHsKKyAgICB2YXIgc3RhY2sxLCBoZWxwZXIsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiICAgICAgPHRyPlxuICAgICAgICA8dGQ+IgorICAgICsgY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24oKChoZWxwZXIgPSAoaGVscGVyID0gaGVscGVycy5rZXkgfHwgKGRhdGEgJiYgZGF0YS5rZXkpKSAhPSBudWxsID8gaGVscGVyIDogYWxpYXMyKSwodHlwZW9mIGhlbHBlciA9PT0gImZ1bmN0aW9uIiA/IGhlbHBlci5jYWxsKGFsaWFzMSx7Im5hbWUiOiJrZXkiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pIDogaGVscGVyKSkpCisgICAgKyAiPC90ZD5cbiAgICAgICAgPHRkPiIKKyAgICArICgoc3RhY2sxID0gKGhlbHBlcnMuc2FuaXRpemUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuc2FuaXRpemUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmRlc2NyaXB0aW9uIDogZGVwdGgwKSx7Im5hbWUiOiJzYW5pdGl6ZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuICAgICAgICA8dGQ+IgorICAgICsgKChzdGFjazEgPSAoaGVscGVycy5lc2NhcGUgfHwgKGRlcHRoMCAmJiBkZXB0aDAuZXNjYXBlKSB8fCBhbGlhczIpLmNhbGwoYWxpYXMxLChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC50eXBlIDogZGVwdGgwKSx7Im5hbWUiOiJlc2NhcGUiLCJoYXNoIjp7fSwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiPC90ZD5cbiAgICAgIDwvdHI+XG4iOworfSwiY29tcGlsZXIiOls3LCI+PSA0LjAuMCJdLCJtYWluIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkgeworICAgIHZhciBzdGFjazEsIGFsaWFzMT1kZXB0aDAgIT0gbnVsbCA/IGRlcHRoMCA6IHt9LCBhbGlhczI9aGVscGVycy5oZWxwZXJNaXNzaW5nOworCisgIHJldHVybiAiPHRkIHdpZHRoPScxNSUnIGNsYXNzPSdjb2RlJz4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmNvZGUgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuPHRkIGNsYXNzPVwibWFya2Rvd25cIj4iCisgICAgKyAoKHN0YWNrMSA9IChoZWxwZXJzLmVzY2FwZSB8fCAoZGVwdGgwICYmIGRlcHRoMC5lc2NhcGUpIHx8IGFsaWFzMikuY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm1lc3NhZ2UgOiBkZXB0aDApLHsibmFtZSI6ImVzY2FwZSIsImhhc2giOnt9LCJkYXRhIjpkYXRhfSkpICE9IG51bGwgPyBzdGFjazEgOiAiIikKKyAgICArICI8L3RkPlxuPHRkIHdpZHRoPSc1MCUnPjxzcGFuIGNsYXNzPVwibW9kZWwtc2lnbmF0dXJlXCIgLz48L3RkPlxuPHRkIGNsYXNzPVwiaGVhZGVyc1wiPlxuICA8dGFibGU+XG4gICAgPHRib2R5PlxuIgorICAgICsgKChzdGFjazEgPSBoZWxwZXJzLmVhY2guY2FsbChhbGlhczEsKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLmhlYWRlcnMgOiBkZXB0aDApLHsibmFtZSI6ImVhY2giLCJoYXNoIjp7fSwiZm4iOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLCJpbnZlcnNlIjpjb250YWluZXIubm9vcCwiZGF0YSI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogIiIpCisgICAgKyAiICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L3RkPiI7Cit9LCJ1c2VEYXRhIjp0cnVlfSk7Cit9KSgpO30KKyAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLworJ3VzZSBzdHJpY3QnOworCisKKyQoZnVuY3Rpb24oKSB7CisKKwkvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHZlcnRpY2FsbHkgYWxpZ25pbmcgRE9NIGVsZW1lbnRzCisJLy8gaHR0cDovL3d3dy5zZW9kZW52ZXIuY29tL3NpbXBsZS12ZXJ0aWNhbC1hbGlnbi1wbHVnaW4tZm9yLWpxdWVyeS8KKwkkLmZuLnZBbGlnbiA9IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7CisJCQl2YXIgYWggPSAkKHRoaXMpLmhlaWdodCgpOworCQkJdmFyIHBoID0gJCh0aGlzKS5wYXJlbnQoKS5oZWlnaHQoKTsKKwkJCXZhciBtaCA9IChwaCAtIGFoKSAvIDI7CisJCQkkKHRoaXMpLmNzcygnbWFyZ2luLXRvcCcsIG1oKTsKKwkJfSk7CisJfTsKKworCSQuZm4uc3RyZXRjaEZvcm10YXN0aWNJbnB1dFdpZHRoVG9QYXJlbnQgPSBmdW5jdGlvbigpIHsKKwkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeworCQkJdmFyIHBfd2lkdGggPSAkKHRoaXMpLmNsb3Nlc3QoImZvcm0iKS5pbm5lcldpZHRoKCk7CisJCQl2YXIgcF9wYWRkaW5nID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCJmb3JtIikuY3NzKCdwYWRkaW5nLWxlZnQnKSAsMTApICsgcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdmb3JtJykuY3NzKCdwYWRkaW5nLXJpZ2h0JyksIDEwKTsKKwkJCXZhciB0aGlzX3BhZGRpbmcgPSBwYXJzZUludCgkKHRoaXMpLmNzcygncGFkZGluZy1sZWZ0JyksIDEwKSArIHBhcnNlSW50KCQodGhpcykuY3NzKCdwYWRkaW5nLXJpZ2h0JyksIDEwKTsKKwkJCSQodGhpcykuY3NzKCd3aWR0aCcsIHBfd2lkdGggLSBwX3BhZGRpbmcgLSB0aGlzX3BhZGRpbmcpOworCQl9KTsKKwl9OworCisJJCgnZm9ybS5mb3JtdGFzdGljIGxpLnN0cmluZyBpbnB1dCwgZm9ybS5mb3JtdGFzdGljIHRleHRhcmVhJykuc3RyZXRjaEZvcm10YXN0aWNJbnB1dFdpZHRoVG9QYXJlbnQoKTsKKworCS8vIFZlcnRpY2FsbHkgY2VudGVyIHRoZXNlIHBhcmFncmFwaHMKKwkvLyBQYXJlbnQgbWF5IG5lZWQgYSBtaW4taGVpZ2h0IGZvciB0aGlzIHRvIHdvcmsuLgorCSQoJ3VsLmRvd25wbGF5ZWQgbGkgZGl2LmNvbnRlbnQgcCcpLnZBbGlnbigpOworCisJLy8gV2hlbiBhIHNhbmRib3ggZm9ybSBpcyBzdWJtaXR0ZWQuLgorCSQoImZvcm0uc2FuZGJveCIpLnN1Ym1pdChmdW5jdGlvbigpeworCisJCXZhciBlcnJvcl9mcmVlID0gdHJ1ZTsKKworCQkvLyBDeWNsZSB0aHJvdWdoIHRoZSBmb3JtcyByZXF1aXJlZCBpbnB1dHMKKyAJCSQodGhpcykuZmluZCgiaW5wdXQucmVxdWlyZWQiKS5lYWNoKGZ1bmN0aW9uKCkgeworCisJCQkvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGVycm9yIHN0eWxlcyBmcm9tIHRoZSBpbnB1dAorCQkJJCh0aGlzKS5yZW1vdmVDbGFzcygnZXJyb3InKTsKKworCQkJLy8gVGFjayB0aGUgZXJyb3Igc3R5bGUgb24gaWYgdGhlIGlucHV0IGlzIGVtcHR5Li4KKwkJCWlmICgkKHRoaXMpLnZhbCgpID09PSAnJykgeworCQkJCSQodGhpcykuYWRkQ2xhc3MoJ2Vycm9yJyk7CisJCQkJJCh0aGlzKS53aWdnbGUoKTsKKwkJCQllcnJvcl9mcmVlID0gZmFsc2U7CisJCQl9CisKKwkJfSk7CisKKwkJcmV0dXJuIGVycm9yX2ZyZWU7CisJfSk7CisKK30pOworCitmdW5jdGlvbiBjbGlwcHlDb3BpZWRDYWxsYmFjaygpIHsKKyAgJCgnI2FwaV9rZXlfY29waWVkJykuZmFkZUluKCkuZGVsYXkoMTAwMCkuZmFkZU91dCgpOworCisgIC8vIHZhciBiID0gJCgiI2NsaXBweV90b29sdGlwXyIgKyBhKTsKKyAgLy8gYi5sZW5ndGggIT0gMCAmJiAoYi5hdHRyKCJ0aXRsZSIsICJjb3BpZWQhIikudHJpZ2dlcigidGlwc3kucmVsb2FkIiksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgIC8vICAgYi5hdHRyKCJ0aXRsZSIsICJjb3B5IHRvIGNsaXBib2FyZCIpCisgIC8vIH0sCisgIC8vIDUwMCkpCit9CisKKy8vIExvZ2dpbmcgZnVuY3Rpb24gdGhhdCBhY2NvdW50cyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBoYXZlIHdpbmRvdy5jb25zb2xlCitmdW5jdGlvbiBsb2coKXsKKyAgbG9nLmhpc3RvcnkgPSBsb2cuaGlzdG9yeSB8fCBbXTsKKyAgbG9nLmhpc3RvcnkucHVzaChhcmd1bWVudHMpOworICBpZih0aGlzLmNvbnNvbGUpeworICAgIGNvbnNvbGUubG9nKCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpWzBdICk7CisgIH0KK30KKworLy8gSGFuZGxlIGJyb3dzZXJzIHRoYXQgZG8gY29uc29sZSBpbmNvcnJlY3RseSAoSUU5IGFuZCBiZWxvdywgc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzU1MzkzNzgvNzkxMykKK2lmIChGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAmJiBjb25zb2xlICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gIm9iamVjdCIpIHsKKyAgICBbCisgICAgICAibG9nIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsImFzc2VydCIsImRpciIsImNsZWFyIiwicHJvZmlsZSIsInByb2ZpbGVFbmQiCisgICAgXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHsKKyAgICAgICAgY29uc29sZVttZXRob2RdID0gdGhpcy5iaW5kKGNvbnNvbGVbbWV0aG9kXSwgY29uc29sZSk7CisgICAgfSwgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwpOworfQorCit3aW5kb3cuRG9jcyA9IHsKKworCXNoZWJhbmc6IGZ1bmN0aW9uKCkgeworCisJCS8vIElmIHNoZWJhbmcgaGFzIGFuIG9wZXJhdGlvbiBuaWNrbmFtZSBpbiBpdC4uCisJCS8vIGUuZy4gL2RvY3MvIyEvd29yZHMvZ2V0X3NlYXJjaAorCQl2YXIgZnJhZ21lbnRzID0gJC5wYXJhbS5mcmFnbWVudCgpLnNwbGl0KCcvJyk7CisJCWZyYWdtZW50cy5zaGlmdCgpOyAvLyBnZXQgcmlkIG9mIHRoZSBiYW5nCisKKwkJc3dpdGNoIChmcmFnbWVudHMubGVuZ3RoKSB7CisJCQljYXNlIDE6CisgICAgICAgIGlmIChmcmFnbWVudHNbMF0ubGVuZ3RoID4gMCkgeyAvLyBwcmV2ZW50IG1hdGNoaW5nICIjLyIKKyAgICAgICAgICAvLyBFeHBhbmQgYWxsIG9wZXJhdGlvbnMgZm9yIHRoZSByZXNvdXJjZSBhbmQgc2Nyb2xsIHRvIGl0CisgICAgICAgICAgdmFyIGRvbV9pZCA9ICdyZXNvdXJjZV8nICsgZnJhZ21lbnRzWzBdOworCisgICAgICAgICAgRG9jcy5leHBhbmRFbmRwb2ludExpc3RGb3JSZXNvdXJjZShmcmFnbWVudHNbMF0pOworICAgICAgICAgICQoIiMiK2RvbV9pZCkuc2xpZGV0byh7aGlnaGxpZ2h0OiBmYWxzZX0pOworICAgICAgICB9CisJCQkJYnJlYWs7CisJCQljYXNlIDI6CisJCQkJLy8gUmVmZXIgdG8gdGhlIGVuZHBvaW50IERPTSBlbGVtZW50LCBlLmcuICN3b3Jkc19nZXRfc2VhcmNoCisKKyAgICAgICAgLy8gRXhwYW5kIFJlc291cmNlCisgICAgICAgIERvY3MuZXhwYW5kRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2UoZnJhZ21lbnRzWzBdKTsKKyAgICAgICAgJCgiIyIrZG9tX2lkKS5zbGlkZXRvKHtoaWdobGlnaHQ6IGZhbHNlfSk7CisKKyAgICAgICAgICAgIC8vIEV4cGFuZCBvcGVyYXRpb24KKyAgICAgICAgICAgIHZhciBsaV9kb21faWQgPSBmcmFnbWVudHMuam9pbignXycpOworICAgICAgICAgICAgdmFyIGxpX2NvbnRlbnRfZG9tX2lkID0gbGlfZG9tX2lkICsgIl9jb250ZW50IjsKKworCisgICAgICAgICAgICBEb2NzLmV4cGFuZE9wZXJhdGlvbigkKCcjJytsaV9jb250ZW50X2RvbV9pZCkpOworICAgICAgICAgICAgJCgnIycrbGlfZG9tX2lkKS5zbGlkZXRvKHtoaWdobGlnaHQ6IGZhbHNlfSk7CisgICAgICAgICAgICBicmVhazsKKwkJfQorCX0sCisKKwl0b2dnbGVFbmRwb2ludExpc3RGb3JSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpIHsKKwkJdmFyIGVsZW0gPSAkKCdsaSNyZXNvdXJjZV8nICsgRG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUocmVzb3VyY2UpICsgJyB1bC5lbmRwb2ludHMnKTsKKwkJaWYgKGVsZW0uaXMoJzp2aXNpYmxlJykpIHsKKwkJCSQuYmJxLnB1c2hTdGF0ZSgnIy8nLCAyKTsKKwkJCURvY3MuY29sbGFwc2VFbmRwb2ludExpc3RGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisJCX0gZWxzZSB7CisgICAgICAgICAgICAkLmJicS5wdXNoU3RhdGUoJyMvJyArIHJlc291cmNlLCAyKTsKKwkJCURvY3MuZXhwYW5kRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2UocmVzb3VyY2UpOworCQl9CisJfSwKKworCS8vIEV4cGFuZCByZXNvdXJjZQorCWV4cGFuZEVuZHBvaW50TGlzdEZvclJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkgeworCQl2YXIgcmVzb3VyY2UgPSBEb2NzLmVzY2FwZVJlc291cmNlTmFtZShyZXNvdXJjZSk7CisJCWlmIChyZXNvdXJjZSA9PSAnJykgeworCQkJJCgnLnJlc291cmNlIHVsLmVuZHBvaW50cycpLnNsaWRlRG93bigpOworCQkJcmV0dXJuOworCQl9CisKKwkJJCgnbGkjcmVzb3VyY2VfJyArIHJlc291cmNlKS5hZGRDbGFzcygnYWN0aXZlJyk7CisKKwkJdmFyIGVsZW0gPSAkKCdsaSNyZXNvdXJjZV8nICsgcmVzb3VyY2UgKyAnIHVsLmVuZHBvaW50cycpOworCQllbGVtLnNsaWRlRG93bigpOworCX0sCisKKwkvLyBDb2xsYXBzZSByZXNvdXJjZSBhbmQgbWFyayBhcyBleHBsaWNpdGx5IGNsb3NlZAorCWNvbGxhcHNlRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKSB7CisJCXZhciByZXNvdXJjZSA9IERvY3MuZXNjYXBlUmVzb3VyY2VOYW1lKHJlc291cmNlKTsKKwkJaWYgKHJlc291cmNlID09ICcnKSB7CisJCQkkKCcucmVzb3VyY2UgdWwuZW5kcG9pbnRzJykuc2xpZGVVcCgpOworCQkJcmV0dXJuOworCQl9CisKKwkJJCgnbGkjcmVzb3VyY2VfJyArIHJlc291cmNlKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CisKKwkJdmFyIGVsZW0gPSAkKCdsaSNyZXNvdXJjZV8nICsgcmVzb3VyY2UgKyAnIHVsLmVuZHBvaW50cycpOworCQllbGVtLnNsaWRlVXAoKTsKKwl9LAorCisJZXhwYW5kT3BlcmF0aW9uc0ZvclJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkgeworCQkvLyBNYWtlIHN1cmUgdGhlIHJlc291cmNlIGNvbnRhaW5lciBpcyBvcGVuLi4KKwkJRG9jcy5leHBhbmRFbmRwb2ludExpc3RGb3JSZXNvdXJjZShyZXNvdXJjZSk7CisKKwkJaWYgKHJlc291cmNlID09ICcnKSB7CisJCQkkKCcucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCcpLnNsaWRlRG93bigpOworCQkJcmV0dXJuOworCQl9CisKKwkJJCgnbGkjcmVzb3VyY2VfJyArIERvY3MuZXNjYXBlUmVzb3VyY2VOYW1lKHJlc291cmNlKSArICcgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50JykuZWFjaChmdW5jdGlvbigpIHsKKwkJCURvY3MuZXhwYW5kT3BlcmF0aW9uKCQodGhpcykpOworCQl9KTsKKwl9LAorCisJY29sbGFwc2VPcGVyYXRpb25zRm9yUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKSB7CisJCS8vIE1ha2Ugc3VyZSB0aGUgcmVzb3VyY2UgY29udGFpbmVyIGlzIG9wZW4uLgorCQlEb2NzLmV4cGFuZEVuZHBvaW50TGlzdEZvclJlc291cmNlKHJlc291cmNlKTsKKworCQlpZiAocmVzb3VyY2UgPT0gJycpIHsKKwkJCSQoJy5yZXNvdXJjZSB1bC5lbmRwb2ludHMgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50Jykuc2xpZGVVcCgpOworCQkJcmV0dXJuOworCQl9CisKKwkJJCgnbGkjcmVzb3VyY2VfJyArIERvY3MuZXNjYXBlUmVzb3VyY2VOYW1lKHJlc291cmNlKSArICcgbGkub3BlcmF0aW9uIGRpdi5jb250ZW50JykuZWFjaChmdW5jdGlvbigpIHsKKwkJCURvY3MuY29sbGFwc2VPcGVyYXRpb24oJCh0aGlzKSk7CisJCX0pOworCX0sCisKKwllc2NhcGVSZXNvdXJjZU5hbWU6IGZ1bmN0aW9uKHJlc291cmNlKSB7CisJCXJldHVybiByZXNvdXJjZS5yZXBsYWNlKC9bISIjJCUmJygpKissLlwvOjs8PT4/QFxbXFxcXVxeYHt8fX5dL2csICJcXCQmIik7CisJfSwKKworCWV4cGFuZE9wZXJhdGlvbjogZnVuY3Rpb24oZWxlbSkgeworCQllbGVtLnNsaWRlRG93bigpOworCX0sCisKKwljb2xsYXBzZU9wZXJhdGlvbjogZnVuY3Rpb24oZWxlbSkgeworCQllbGVtLnNsaWRlVXAoKTsKKwl9Cit9OworCisvKiEKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbQorICogQGxpY2Vuc2UgZXM1LXNoaW0gQ29weXJpZ2h0IDIwMDktMjAxNSBieSBjb250cmlidXRvcnMsIE1JVCBMaWNlbnNlCisgKiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKKyAqLworCisvLyB2aW06IHRzPTQgc3RzPTQgc3c9NCBleHBhbmR0YWIKKworLy8gQWRkIHNlbWljb2xvbiB0byBwcmV2ZW50IElJRkUgZnJvbSBiZWluZyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gY29uY2F0ZW5hdGVkIGNvZGUuCis7CisKKy8vIFVNRCAoVW5pdmVyc2FsIE1vZHVsZSBEZWZpbml0aW9uKQorLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91bWRqcy91bWQvYmxvYi9tYXN0ZXIvdGVtcGxhdGVzL3JldHVybkV4cG9ydHMuanMKKyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkgeworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIC8qIGdsb2JhbCBkZWZpbmUsIGV4cG9ydHMsIG1vZHVsZSAqLworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgorICAgICAgICBkZWZpbmUoZmFjdG9yeSk7CisgICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgLy8gTm9kZS4gRG9lcyBub3Qgd29yayB3aXRoIHN0cmljdCBDb21tb25KUywgYnV0CisgICAgICAgIC8vIG9ubHkgQ29tbW9uSlMtbGlrZSBlbnZpcm9tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMsCisgICAgICAgIC8vIGxpa2UgTm9kZS4KKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzIChyb290IGlzIHdpbmRvdykKKyAgICAgICAgcm9vdC5yZXR1cm5FeHBvcnRzID0gZmFjdG9yeSgpOworICAgIH0KK30odGhpcywgZnVuY3Rpb24gKCkgeworICAgIC8qKgorICAgICAqIEJyaW5ncyBhbiBlbnZpcm9ubWVudCBhcyBjbG9zZSB0byBFQ01BU2NyaXB0IDUgY29tcGxpYW5jZQorICAgICAqIGFzIGlzIHBvc3NpYmxlIHdpdGggdGhlIGZhY2lsaXRpZXMgb2YgZXJzdHdoaWxlIGVuZ2luZXMuCisgICAgICoKKyAgICAgKiBBbm5vdGF0ZWQgRVM1OiBodHRwOi8vZXM1LmdpdGh1Yi5jb20vIChzcGVjaWZpYyBsaW5rcyBiZWxvdykKKyAgICAgKiBFUzUgU3BlYzogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL3B1YmxpY2F0aW9ucy9maWxlcy9FQ01BLVNUL0VjbWEtMjYyLnBkZgorICAgICAqIFJlcXVpcmVkIHJlYWRpbmc6IGh0dHA6Ly9qYXZhc2NyaXB0d2VibG9nLndvcmRwcmVzcy5jb20vMjAxMS8xMi8wNS9leHRlbmRpbmctamF2YXNjcmlwdC1uYXRpdmVzLworICAgICAqLworCisgICAgLy8gU2hvcnRjdXQgdG8gYW4gb2Z0ZW4gYWNjZXNzZWQgcHJvcGVydGllcywgaW4gb3JkZXIgdG8gYXZvaWQgbXVsdGlwbGUKKyAgICAvLyBkZXJlZmVyZW5jZSB0aGF0IGNvc3RzIHVuaXZlcnNhbGx5LiBUaGlzIGFsc28gaG9sZHMgYSByZWZlcmVuY2UgdG8ga25vd24tZ29vZAorICAgIC8vIGZ1bmN0aW9ucy4KKyAgICB2YXIgJEFycmF5ID0gQXJyYXk7CisgICAgdmFyIEFycmF5UHJvdG90eXBlID0gJEFycmF5LnByb3RvdHlwZTsKKyAgICB2YXIgJE9iamVjdCA9IE9iamVjdDsKKyAgICB2YXIgT2JqZWN0UHJvdG90eXBlID0gJE9iamVjdC5wcm90b3R5cGU7CisgICAgdmFyICRGdW5jdGlvbiA9IEZ1bmN0aW9uOworICAgIHZhciBGdW5jdGlvblByb3RvdHlwZSA9ICRGdW5jdGlvbi5wcm90b3R5cGU7CisgICAgdmFyICRTdHJpbmcgPSBTdHJpbmc7CisgICAgdmFyIFN0cmluZ1Byb3RvdHlwZSA9ICRTdHJpbmcucHJvdG90eXBlOworICAgIHZhciAkTnVtYmVyID0gTnVtYmVyOworICAgIHZhciBOdW1iZXJQcm90b3R5cGUgPSAkTnVtYmVyLnByb3RvdHlwZTsKKyAgICB2YXIgYXJyYXlfc2xpY2UgPSBBcnJheVByb3RvdHlwZS5zbGljZTsKKyAgICB2YXIgYXJyYXlfc3BsaWNlID0gQXJyYXlQcm90b3R5cGUuc3BsaWNlOworICAgIHZhciBhcnJheV9wdXNoID0gQXJyYXlQcm90b3R5cGUucHVzaDsKKyAgICB2YXIgYXJyYXlfdW5zaGlmdCA9IEFycmF5UHJvdG90eXBlLnVuc2hpZnQ7CisgICAgdmFyIGFycmF5X2NvbmNhdCA9IEFycmF5UHJvdG90eXBlLmNvbmNhdDsKKyAgICB2YXIgYXJyYXlfam9pbiA9IEFycmF5UHJvdG90eXBlLmpvaW47CisgICAgdmFyIGNhbGwgPSBGdW5jdGlvblByb3RvdHlwZS5jYWxsOworICAgIHZhciBhcHBseSA9IEZ1bmN0aW9uUHJvdG90eXBlLmFwcGx5OworICAgIHZhciBtYXggPSBNYXRoLm1heDsKKyAgICB2YXIgbWluID0gTWF0aC5taW47CisKKyAgICAvLyBIYXZpbmcgYSB0b1N0cmluZyBsb2NhbCB2YXJpYWJsZSBuYW1lIGJyZWFrcyBpbiBPcGVyYSBzbyB1c2UgdG9fc3RyaW5nLgorICAgIHZhciB0b19zdHJpbmcgPSBPYmplY3RQcm90b3R5cGUudG9TdHJpbmc7CisKKyAgICAvKiBnbG9iYWwgU3ltYm9sICovCisgICAgLyogZXNsaW50LWRpc2FibGUgb25lLXZhci1kZWNsYXJhdGlvbi1wZXItbGluZSwgbm8tcmVkZWNsYXJlLCBtYXgtc3RhdGVtZW50cy1wZXItbGluZSAqLworICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7CisgICAgdmFyIGlzQ2FsbGFibGU7IC8qIGlubGluZWQgZnJvbSBodHRwczovL25wbWpzLmNvbS9pcy1jYWxsYWJsZSAqLyB2YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywgY29uc3RydWN0b3JSZWdleCA9IC9eXHMqY2xhc3MgLywgaXNFUzZDbGFzc0ZuID0gZnVuY3Rpb24gaXNFUzZDbGFzc0ZuKHZhbHVlKSB7IHRyeSB7IHZhciBmblN0ciA9IGZuVG9TdHIuY2FsbCh2YWx1ZSk7IHZhciBzaW5nbGVTdHJpcHBlZCA9IGZuU3RyLnJlcGxhY2UoL1wvXC8uKlxuL2csICcnKTsgdmFyIG11bHRpU3RyaXBwZWQgPSBzaW5nbGVTdHJpcHBlZC5yZXBsYWNlKC9cL1wqWy5cc1xTXSpcKlwvL2csICcnKTsgdmFyIHNwYWNlU3RyaXBwZWQgPSBtdWx0aVN0cmlwcGVkLnJlcGxhY2UoL1xuL21nLCAnICcpLnJlcGxhY2UoLyB7Mn0vZywgJyAnKTsgcmV0dXJuIGNvbnN0cnVjdG9yUmVnZXgudGVzdChzcGFjZVN0cmlwcGVkKTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IC8qIG5vdCBhIGZ1bmN0aW9uICovIH0gfSwgdHJ5RnVuY3Rpb25PYmplY3QgPSBmdW5jdGlvbiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSkgeyB0cnkgeyBpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH0gZm5Ub1N0ci5jYWxsKHZhbHVlKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH0sIGZuQ2xhc3MgPSAnW29iamVjdCBGdW5jdGlvbl0nLCBnZW5DbGFzcyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsIGlzQ2FsbGFibGUgPSBmdW5jdGlvbiBpc0NhbGxhYmxlKHZhbHVlKSB7IGlmICghdmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9IGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH0gaWYgKGhhc1RvU3RyaW5nVGFnKSB7IHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7IH0gaWYgKGlzRVM2Q2xhc3NGbih2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9IHZhciBzdHJDbGFzcyA9IHRvX3N0cmluZy5jYWxsKHZhbHVlKTsgcmV0dXJuIHN0ckNsYXNzID09PSBmbkNsYXNzIHx8IHN0ckNsYXNzID09PSBnZW5DbGFzczsgfTsKKworICAgIHZhciBpc1JlZ2V4OyAvKiBpbmxpbmVkIGZyb20gaHR0cHM6Ly9ucG1qcy5jb20vaXMtcmVnZXggKi8gdmFyIHJlZ2V4RXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYywgdHJ5UmVnZXhFeGVjID0gZnVuY3Rpb24gdHJ5UmVnZXhFeGVjKHZhbHVlKSB7IHRyeSB7IHJlZ2V4RXhlYy5jYWxsKHZhbHVlKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH0sIHJlZ2V4Q2xhc3MgPSAnW29iamVjdCBSZWdFeHBdJzsgaXNSZWdleCA9IGZ1bmN0aW9uIGlzUmVnZXgodmFsdWUpIHsgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9IHJldHVybiBoYXNUb1N0cmluZ1RhZyA/IHRyeVJlZ2V4RXhlYyh2YWx1ZSkgOiB0b19zdHJpbmcuY2FsbCh2YWx1ZSkgPT09IHJlZ2V4Q2xhc3M7IH07CisgICAgdmFyIGlzU3RyaW5nOyAvKiBpbmxpbmVkIGZyb20gaHR0cHM6Ly9ucG1qcy5jb20vaXMtc3RyaW5nICovIHZhciBzdHJWYWx1ZSA9IFN0cmluZy5wcm90b3R5cGUudmFsdWVPZiwgdHJ5U3RyaW5nT2JqZWN0ID0gZnVuY3Rpb24gdHJ5U3RyaW5nT2JqZWN0KHZhbHVlKSB7IHRyeSB7IHN0clZhbHVlLmNhbGwodmFsdWUpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfSwgc3RyaW5nQ2xhc3MgPSAnW29iamVjdCBTdHJpbmddJzsgaXNTdHJpbmcgPSBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkgeyBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgeyByZXR1cm4gdHJ1ZTsgfSBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH0gcmV0dXJuIGhhc1RvU3RyaW5nVGFnID8gdHJ5U3RyaW5nT2JqZWN0KHZhbHVlKSA6IHRvX3N0cmluZy5jYWxsKHZhbHVlKSA9PT0gc3RyaW5nQ2xhc3M7IH07CisgICAgLyogZXNsaW50LWVuYWJsZSBvbmUtdmFyLWRlY2xhcmF0aW9uLXBlci1saW5lLCBuby1yZWRlY2xhcmUsIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovCisKKyAgICAvKiBpbmxpbmVkIGZyb20gaHR0cDovL25wbWpzLmNvbS9kZWZpbmUtcHJvcGVydGllcyAqLworICAgIHZhciBzdXBwb3J0c0Rlc2NyaXB0b3JzID0gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiAoZnVuY3Rpb24gKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICAgICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IG9iaiB9KTsKKyAgICAgICAgICAgIGZvciAodmFyIF8gaW4gb2JqKSB7IC8vIGpzY3M6aWdub3JlIGRpc2FsbG93VW51c2VkVmFyaWFibGVzCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9iai54ID09PSBvYmo7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogdGhpcyBpcyBFUzMgKi8KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0oKSk7CisgICAgdmFyIGRlZmluZVByb3BlcnRpZXMgPSAoZnVuY3Rpb24gKGhhcykgeworICAgICAgICAvLyBEZWZpbmUgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgYW5kIG5vbi1lbnVtZXJhYmxlIHByb3BzCisgICAgICAgIC8vIGlmIHRoZXkgZG9uJ3QgZXhpc3QuCisgICAgICAgIHZhciBkZWZpbmVQcm9wZXJ0eTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRGVzY3JpcHRvcnMpIHsKKyAgICAgICAgICAgIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZSwgbWV0aG9kLCBmb3JjZUFzc2lnbikgeworICAgICAgICAgICAgICAgIGlmICghZm9yY2VBc3NpZ24gJiYgKG5hbWUgaW4gb2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCB7CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWV0aG9kCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCBtZXRob2QsIGZvcmNlQXNzaWduKSB7CisgICAgICAgICAgICAgICAgaWYgKCFmb3JjZUFzc2lnbiAmJiAobmFtZSBpbiBvYmplY3QpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2JqZWN0W25hbWVdID0gbWV0aG9kOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhvYmplY3QsIG1hcCwgZm9yY2VBc3NpZ24pIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gbWFwKSB7CisgICAgICAgICAgICAgICAgaWYgKGhhcy5jYWxsKG1hcCwgbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCBtYXBbbmFtZV0sIGZvcmNlQXNzaWduKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfShPYmplY3RQcm90b3R5cGUuaGFzT3duUHJvcGVydHkpKTsKKworICAgIC8vCisgICAgLy8gVXRpbAorICAgIC8vID09PT09PQorICAgIC8vCisKKyAgICAvKiByZXBsYWNlYWJsZSB3aXRoIGh0dHBzOi8vbnBtanMuY29tL3BhY2thZ2UvZXMtYWJzdHJhY3QgL2hlbHBlcnMvaXNQcmltaXRpdmUgKi8KKyAgICB2YXIgaXNQcmltaXRpdmUgPSBmdW5jdGlvbiBpc1ByaW1pdGl2ZShpbnB1dCkgeworICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbnB1dDsKKyAgICAgICAgcmV0dXJuIGlucHV0ID09PSBudWxsIHx8ICh0eXBlICE9PSAnb2JqZWN0JyAmJiB0eXBlICE9PSAnZnVuY3Rpb24nKTsKKyAgICB9OworCisgICAgdmFyIGlzQWN0dWFsTmFOID0gJE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBpc0FjdHVhbE5hTih4KSB7CisgICAgICAgIHJldHVybiB4ICE9PSB4OworICAgIH07CisKKyAgICB2YXIgRVMgPSB7CisgICAgICAgIC8vIEVTNSA5LjQKKyAgICAgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4OS40CisgICAgICAgIC8vIGh0dHA6Ly9qc3BlcmYuY29tL3RvLWludGVnZXIKKyAgICAgICAgLyogcmVwbGFjZWFibGUgd2l0aCBodHRwczovL25wbWpzLmNvbS9wYWNrYWdlL2VzLWFic3RyYWN0IEVTNS5Ub0ludGVnZXIgKi8KKyAgICAgICAgVG9JbnRlZ2VyOiBmdW5jdGlvbiBUb0ludGVnZXIobnVtKSB7CisgICAgICAgICAgICB2YXIgbiA9ICtudW07CisgICAgICAgICAgICBpZiAoaXNBY3R1YWxOYU4obikpIHsKKyAgICAgICAgICAgICAgICBuID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobiAhPT0gMCAmJiBuICE9PSAoMSAvIDApICYmIG4gIT09IC0oMSAvIDApKSB7CisgICAgICAgICAgICAgICAgbiA9IChuID4gMCB8fCAtMSkgKiBNYXRoLmZsb29yKE1hdGguYWJzKG4pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICB9LAorCisgICAgICAgIC8qIHJlcGxhY2VhYmxlIHdpdGggaHR0cHM6Ly9ucG1qcy5jb20vcGFja2FnZS9lcy1hYnN0cmFjdCBFUzUuVG9QcmltaXRpdmUgKi8KKyAgICAgICAgVG9QcmltaXRpdmU6IGZ1bmN0aW9uIFRvUHJpbWl0aXZlKGlucHV0KSB7CisgICAgICAgICAgICB2YXIgdmFsLCB2YWx1ZU9mLCB0b1N0cjsKKyAgICAgICAgICAgIGlmIChpc1ByaW1pdGl2ZShpbnB1dCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZU9mID0gaW5wdXQudmFsdWVPZjsKKyAgICAgICAgICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlT2YpKSB7CisgICAgICAgICAgICAgICAgdmFsID0gdmFsdWVPZi5jYWxsKGlucHV0KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNQcmltaXRpdmUodmFsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRvU3RyID0gaW5wdXQudG9TdHJpbmc7CisgICAgICAgICAgICBpZiAoaXNDYWxsYWJsZSh0b1N0cikpIHsKKyAgICAgICAgICAgICAgICB2YWwgPSB0b1N0ci5jYWxsKGlucHV0KTsKKyAgICAgICAgICAgICAgICBpZiAoaXNQcmltaXRpdmUodmFsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsKKyAgICAgICAgfSwKKworICAgICAgICAvLyBFUzUgOS45CisgICAgICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDkuOQorICAgICAgICAvKiByZXBsYWNlYWJsZSB3aXRoIGh0dHBzOi8vbnBtanMuY29tL3BhY2thZ2UvZXMtYWJzdHJhY3QgRVM1LlRvT2JqZWN0ICovCisgICAgICAgIFRvT2JqZWN0OiBmdW5jdGlvbiAobykgeworICAgICAgICAgICAgaWYgKG8gPT0gbnVsbCkgeyAvLyB0aGlzIG1hdGNoZXMgYm90aCBudWxsIGFuZCB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW4ndCBjb252ZXJ0ICIgKyBvICsgJyB0byBvYmplY3QnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAkT2JqZWN0KG8pOworICAgICAgICB9LAorCisgICAgICAgIC8qIHJlcGxhY2VhYmxlIHdpdGggaHR0cHM6Ly9ucG1qcy5jb20vcGFja2FnZS9lcy1hYnN0cmFjdCBFUzUuVG9VaW50MzIgKi8KKyAgICAgICAgVG9VaW50MzI6IGZ1bmN0aW9uIFRvVWludDMyKHgpIHsKKyAgICAgICAgICAgIHJldHVybiB4ID4+PiAwOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vCisgICAgLy8gRnVuY3Rpb24KKyAgICAvLyA9PT09PT09PQorICAgIC8vCisKKyAgICAvLyBFUy01IDE1LjMuNC41CisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuMy40LjUKKworICAgIHZhciBFbXB0eSA9IGZ1bmN0aW9uIEVtcHR5KCkge307CisKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKEZ1bmN0aW9uUHJvdG90eXBlLCB7CisgICAgICAgIGJpbmQ6IGZ1bmN0aW9uIGJpbmQodGhhdCkgeyAvLyAubGVuZ3RoIGlzIDEKKyAgICAgICAgICAgIC8vIDEuIExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpczsKKyAgICAgICAgICAgIC8vIDIuIElmIElzQ2FsbGFibGUoVGFyZ2V0KSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKHRhcmdldCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICcgKyB0YXJnZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gMy4gTGV0IEEgYmUgYSBuZXcgKHBvc3NpYmx5IGVtcHR5KSBpbnRlcm5hbCBsaXN0IG9mIGFsbCBvZiB0aGUKKyAgICAgICAgICAgIC8vICAgYXJndW1lbnQgdmFsdWVzIHByb3ZpZGVkIGFmdGVyIHRoaXNBcmcgKGFyZzEsIGFyZzIgZXRjKSwgaW4gb3JkZXIuCisgICAgICAgICAgICAvLyBYWFggc2xpY2VkQXJncyB3aWxsIHN0YW5kIGluIGZvciAiQSIgaWYgdXNlZAorICAgICAgICAgICAgdmFyIGFyZ3MgPSBhcnJheV9zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGZvciBub3JtYWwgY2FsbAorICAgICAgICAgICAgLy8gNC4gTGV0IEYgYmUgYSBuZXcgbmF0aXZlIEVDTUFTY3JpcHQgb2JqZWN0LgorICAgICAgICAgICAgLy8gMTEuIFNldCB0aGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBGIHRvIHRoZSBzdGFuZGFyZAorICAgICAgICAgICAgLy8gICBidWlsdC1pbiBGdW5jdGlvbiBwcm90b3R5cGUgb2JqZWN0IGFzIHNwZWNpZmllZCBpbiAxNS4zLjMuMS4KKyAgICAgICAgICAgIC8vIDEyLiBTZXQgdGhlIFtbQ2FsbF1dIGludGVybmFsIHByb3BlcnR5IG9mIEYgYXMgZGVzY3JpYmVkIGluCisgICAgICAgICAgICAvLyAgIDE1LjMuNC41LjEuCisgICAgICAgICAgICAvLyAxMy4gU2V0IHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHByb3BlcnR5IG9mIEYgYXMgZGVzY3JpYmVkIGluCisgICAgICAgICAgICAvLyAgIDE1LjMuNC41LjIuCisgICAgICAgICAgICAvLyAxNC4gU2V0IHRoZSBbW0hhc0luc3RhbmNlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgRiBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAgICAgIC8vICAgMTUuMy40LjUuMy4KKyAgICAgICAgICAgIHZhciBib3VuZDsKKyAgICAgICAgICAgIHZhciBiaW5kZXIgPSBmdW5jdGlvbiAoKSB7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIDE1LjMuNC41LjIgW1tDb25zdHJ1Y3RdXQorICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsIG1ldGhvZCBvZiBhIGZ1bmN0aW9uIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgLy8gRiB0aGF0IHdhcyBjcmVhdGVkIHVzaW5nIHRoZSBiaW5kIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCBvZiBhcmd1bWVudHMgRXh0cmFBcmdzLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGFyZSB0YWtlbjoKKyAgICAgICAgICAgICAgICAgICAgLy8gMS4gTGV0IHRhcmdldCBiZSB0aGUgdmFsdWUgb2YgRidzIFtbVGFyZ2V0RnVuY3Rpb25dXQorICAgICAgICAgICAgICAgICAgICAvLyAgIGludGVybmFsIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICAvLyAyLiBJZiB0YXJnZXQgaGFzIG5vIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgbWV0aG9kLCBhCisgICAgICAgICAgICAgICAgICAgIC8vICAgVHlwZUVycm9yIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgICAgICAgICAgICAgICAgIC8vIDMuIExldCBib3VuZEFyZ3MgYmUgdGhlIHZhbHVlIG9mIEYncyBbW0JvdW5kQXJnc11dIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgIC8vICAgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgIC8vIDQuIExldCBhcmdzIGJlIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vICAgbGlzdCBib3VuZEFyZ3MgaW4gdGhlIHNhbWUgb3JkZXIgZm9sbG93ZWQgYnkgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgLy8gICB2YWx1ZXMgYXMgdGhlIGxpc3QgRXh0cmFBcmdzIGluIHRoZSBzYW1lIG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAvLyA1LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgIC8vICAgbWV0aG9kIG9mIHRhcmdldCBwcm92aWRpbmcgYXJncyBhcyB0aGUgYXJndW1lbnRzLgorCisgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBhcHBseS5jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2NvbmNhdC5jYWxsKGFyZ3MsIGFycmF5X3NsaWNlLmNhbGwoYXJndW1lbnRzKSkKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRPYmplY3QocmVzdWx0KSA9PT0gcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gMTUuMy40LjUuMSBbW0NhbGxdXQorICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YgYSBmdW5jdGlvbiBvYmplY3QsIEYsCisgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIHdhcyBjcmVhdGVkIHVzaW5nIHRoZSBiaW5kIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyB2YWx1ZSBhbmQgYSBsaXN0IG9mIGFyZ3VtZW50cyBFeHRyYUFyZ3MsIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RlcHMgYXJlIHRha2VuOgorICAgICAgICAgICAgICAgICAgICAvLyAxLiBMZXQgYm91bmRBcmdzIGJlIHRoZSB2YWx1ZSBvZiBGJ3MgW1tCb3VuZEFyZ3NdXSBpbnRlcm5hbAorICAgICAgICAgICAgICAgICAgICAvLyAgIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICAvLyAyLiBMZXQgYm91bmRUaGlzIGJlIHRoZSB2YWx1ZSBvZiBGJ3MgW1tCb3VuZFRoaXNdXSBpbnRlcm5hbAorICAgICAgICAgICAgICAgICAgICAvLyAgIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICAvLyAzLiBMZXQgdGFyZ2V0IGJlIHRoZSB2YWx1ZSBvZiBGJ3MgW1tUYXJnZXRGdW5jdGlvbl1dIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgIC8vICAgcHJvcGVydHkuCisgICAgICAgICAgICAgICAgICAgIC8vIDQuIExldCBhcmdzIGJlIGEgbmV3IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vICAgbGlzdCBib3VuZEFyZ3MgaW4gdGhlIHNhbWUgb3JkZXIgZm9sbG93ZWQgYnkgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgLy8gICB2YWx1ZXMgYXMgdGhlIGxpc3QgRXh0cmFBcmdzIGluIHRoZSBzYW1lIG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAvLyA1LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgLy8gICBvZiB0YXJnZXQgcHJvdmlkaW5nIGJvdW5kVGhpcyBhcyB0aGUgdGhpcyB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gICBwcm92aWRpbmcgYXJncyBhcyB0aGUgYXJndW1lbnRzLgorCisgICAgICAgICAgICAgICAgICAgIC8vIGVxdWl2OiB0YXJnZXQuY2FsbCh0aGlzLCAuLi5ib3VuZEFyZ3MsIC4uLmFyZ3MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHBseS5jYWxsKAorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2NvbmNhdC5jYWxsKGFyZ3MsIGFycmF5X3NsaWNlLmNhbGwoYXJndW1lbnRzKSkKKyAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8gMTUuIElmIHRoZSBbW0NsYXNzXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgVGFyZ2V0IGlzICJGdW5jdGlvbiIsIHRoZW4KKyAgICAgICAgICAgIC8vICAgICBhLiBMZXQgTCBiZSB0aGUgbGVuZ3RoIHByb3BlcnR5IG9mIFRhcmdldCBtaW51cyB0aGUgbGVuZ3RoIG9mIEEuCisgICAgICAgICAgICAvLyAgICAgYi4gU2V0IHRoZSBsZW5ndGggb3duIHByb3BlcnR5IG9mIEYgdG8gZWl0aGVyIDAgb3IgTCwgd2hpY2hldmVyIGlzCisgICAgICAgICAgICAvLyAgICAgICBsYXJnZXIuCisgICAgICAgICAgICAvLyAxNi4gRWxzZSBzZXQgdGhlIGxlbmd0aCBvd24gcHJvcGVydHkgb2YgRiB0byAwLgorCisgICAgICAgICAgICB2YXIgYm91bmRMZW5ndGggPSBtYXgoMCwgdGFyZ2V0Lmxlbmd0aCAtIGFyZ3MubGVuZ3RoKTsKKworICAgICAgICAgICAgLy8gMTcuIFNldCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgbGVuZ3RoIG93biBwcm9wZXJ0eSBvZiBGIHRvIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgIC8vICAgc3BlY2lmaWVkIGluIDE1LjMuNS4xLgorICAgICAgICAgICAgdmFyIGJvdW5kQXJncyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXJyYXlfcHVzaC5jYWxsKGJvdW5kQXJncywgJyQnICsgaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFhYWCBCdWlsZCBhIGR5bmFtaWMgZnVuY3Rpb24gd2l0aCBkZXNpcmVkIGFtb3VudCBvZiBhcmd1bWVudHMgaXMgdGhlIG9ubHkKKyAgICAgICAgICAgIC8vIHdheSB0byBzZXQgdGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uLgorICAgICAgICAgICAgLy8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIENvbnRlbnQgU2VjdXJpdHkgUG9saWNpZXMgZW5hYmxlZCAoQ2hyb21lIGV4dGVuc2lvbnMsCisgICAgICAgICAgICAvLyBmb3IgZXguKSBhbGwgdXNlIG9mIGV2YWwgb3IgRnVuY3Rpb24gY29zdHJ1Y3RvciB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICAgICAgICAgICAgLy8gSG93ZXZlciBpbiBhbGwgb2YgdGhlc2UgZW52aXJvbm1lbnRzIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGV4aXN0cworICAgICAgICAgICAgLy8gYW5kIHNvIHRoaXMgY29kZSB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkLgorICAgICAgICAgICAgYm91bmQgPSAkRnVuY3Rpb24oJ2JpbmRlcicsICdyZXR1cm4gZnVuY3Rpb24gKCcgKyBhcnJheV9qb2luLmNhbGwoYm91bmRBcmdzLCAnLCcpICsgJyl7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfScpKGJpbmRlcik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXQucHJvdG90eXBlKSB7CisgICAgICAgICAgICAgICAgRW1wdHkucHJvdG90eXBlID0gdGFyZ2V0LnByb3RvdHlwZTsKKyAgICAgICAgICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTsKKyAgICAgICAgICAgICAgICAvLyBDbGVhbiB1cCBkYW5nbGluZyByZWZlcmVuY2VzLgorICAgICAgICAgICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRPRE8KKyAgICAgICAgICAgIC8vIDE4LiBTZXQgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHByb3BlcnR5IG9mIEYgdG8gdHJ1ZS4KKworICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgLy8gMTkuIExldCB0aHJvd2VyIGJlIHRoZSBbW1Rocm93VHlwZUVycm9yXV0gZnVuY3Rpb24gT2JqZWN0ICgxMy4yLjMpLgorICAgICAgICAgICAgLy8gMjAuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgRiB3aXRoCisgICAgICAgICAgICAvLyAgIGFyZ3VtZW50cyAiY2FsbGVyIiwgUHJvcGVydHlEZXNjcmlwdG9yIHtbW0dldF1dOiB0aHJvd2VyLCBbW1NldF1dOgorICAgICAgICAgICAgLy8gICB0aHJvd2VyLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlfSwgYW5kCisgICAgICAgICAgICAvLyAgIGZhbHNlLgorICAgICAgICAgICAgLy8gMjEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgRiB3aXRoCisgICAgICAgICAgICAvLyAgIGFyZ3VtZW50cyAiYXJndW1lbnRzIiwgUHJvcGVydHlEZXNjcmlwdG9yIHtbW0dldF1dOiB0aHJvd2VyLAorICAgICAgICAgICAgLy8gICBbW1NldF1dOiB0aHJvd2VyLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlfSwKKyAgICAgICAgICAgIC8vICAgYW5kIGZhbHNlLgorCisgICAgICAgICAgICAvLyBUT0RPCisgICAgICAgICAgICAvLyBOT1RFIEZ1bmN0aW9uIG9iamVjdHMgY3JlYXRlZCB1c2luZyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBkbyBub3QKKyAgICAgICAgICAgIC8vIGhhdmUgYSBwcm90b3R5cGUgcHJvcGVydHkgb3IgdGhlIFtbQ29kZV1dLCBbW0Zvcm1hbFBhcmFtZXRlcnNdXSwgYW5kCisgICAgICAgICAgICAvLyBbW1Njb3BlXV0gaW50ZXJuYWwgcHJvcGVydGllcy4KKyAgICAgICAgICAgIC8vIFhYWCBjYW4ndCBkZWxldGUgcHJvdG90eXBlIGluIHB1cmUtanMuCisKKyAgICAgICAgICAgIC8vIDIyLiBSZXR1cm4gRi4KKyAgICAgICAgICAgIHJldHVybiBib3VuZDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gX1BsZWFzZSBub3RlOiBTaG9ydGN1dHMgYXJlIGRlZmluZWQgYWZ0ZXIgYEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kYCBhcyB3ZQorICAgIC8vIHVzZSBpdCBpbiBkZWZpbmluZyBzaG9ydGN1dHMuCisgICAgdmFyIG93bnMgPSBjYWxsLmJpbmQoT2JqZWN0UHJvdG90eXBlLmhhc093blByb3BlcnR5KTsKKyAgICB2YXIgdG9TdHIgPSBjYWxsLmJpbmQoT2JqZWN0UHJvdG90eXBlLnRvU3RyaW5nKTsKKyAgICB2YXIgYXJyYXlTbGljZSA9IGNhbGwuYmluZChhcnJheV9zbGljZSk7CisgICAgdmFyIGFycmF5U2xpY2VBcHBseSA9IGFwcGx5LmJpbmQoYXJyYXlfc2xpY2UpOworICAgIHZhciBzdHJTbGljZSA9IGNhbGwuYmluZChTdHJpbmdQcm90b3R5cGUuc2xpY2UpOworICAgIHZhciBzdHJTcGxpdCA9IGNhbGwuYmluZChTdHJpbmdQcm90b3R5cGUuc3BsaXQpOworICAgIHZhciBzdHJJbmRleE9mID0gY2FsbC5iaW5kKFN0cmluZ1Byb3RvdHlwZS5pbmRleE9mKTsKKyAgICB2YXIgcHVzaENhbGwgPSBjYWxsLmJpbmQoYXJyYXlfcHVzaCk7CisgICAgdmFyIGlzRW51bSA9IGNhbGwuYmluZChPYmplY3RQcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpOworICAgIHZhciBhcnJheVNvcnQgPSBjYWxsLmJpbmQoQXJyYXlQcm90b3R5cGUuc29ydCk7CisKKyAgICAvLworICAgIC8vIEFycmF5CisgICAgLy8gPT09PT0KKyAgICAvLworCisgICAgdmFyIGlzQXJyYXkgPSAkQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KG9iaikgeworICAgICAgICByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKKyAgICB9OworCisgICAgLy8gRVM1IDE1LjQuNC4xMgorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4xMworICAgIC8vIFJldHVybiBsZW4rYXJnQ291bnQuCisgICAgLy8gW2J1Z2ZpeCwgaWVsdDhdCisgICAgLy8gSUUgPCA4IGJ1ZzogW10udW5zaGlmdCgwKSA9PT0gdW5kZWZpbmVkIGJ1dCBzaG91bGQgYmUgIjEiCisgICAgdmFyIGhhc1Vuc2hpZnRSZXR1cm5WYWx1ZUJ1ZyA9IFtdLnVuc2hpZnQoMCkgIT09IDE7CisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICB1bnNoaWZ0OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhcnJheV91bnNoaWZ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGg7CisgICAgICAgIH0KKyAgICB9LCBoYXNVbnNoaWZ0UmV0dXJuVmFsdWVCdWcpOworCisgICAgLy8gRVM1IDE1LjQuMy4yCisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuNC4zLjIKKyAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9pc0FycmF5CisgICAgZGVmaW5lUHJvcGVydGllcygkQXJyYXksIHsgaXNBcnJheTogaXNBcnJheSB9KTsKKworICAgIC8vIFRoZSBJc0NhbGxhYmxlKCkgY2hlY2sgaW4gdGhlIEFycmF5IGZ1bmN0aW9ucworICAgIC8vIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggYSBzdHJpY3QgY2hlY2sgb24gdGhlCisgICAgLy8gaW50ZXJuYWwgY2xhc3Mgb2YgdGhlIG9iamVjdCB0byB0cmFwIGNhc2VzIHdoZXJlCisgICAgLy8gdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHdhcyBhY3R1YWxseSBhIHJlZ3VsYXIKKyAgICAvLyBleHByZXNzaW9uIGxpdGVyYWwsIHdoaWNoIGluIFY4IGFuZAorICAgIC8vIEphdmFTY3JpcHRDb3JlIGlzIGEgdHlwZW9mICJmdW5jdGlvbiIuICBPbmx5IGluCisgICAgLy8gVjggYXJlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFscyBwZXJtaXR0ZWQgYXMKKyAgICAvLyByZWR1Y2UgcGFyYW1ldGVycywgc28gaXQgaXMgZGVzaXJhYmxlIGluIHRoZQorICAgIC8vIGdlbmVyYWwgY2FzZSBmb3IgdGhlIHNoaW0gdG8gbWF0Y2ggdGhlIG1vcmUKKyAgICAvLyBzdHJpY3QgYW5kIGNvbW1vbiBiZWhhdmlvciBvZiByZWplY3RpbmcgcmVndWxhcgorICAgIC8vIGV4cHJlc3Npb25zLgorCisgICAgLy8gRVM1IDE1LjQuNC4xOAorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4xOAorICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2FycmF5L2ZvckVhY2gKKworICAgIC8vIENoZWNrIGZhaWx1cmUgb2YgYnktaW5kZXggYWNjZXNzIG9mIHN0cmluZyBjaGFyYWN0ZXJzIChJRSA8IDkpCisgICAgLy8gYW5kIGZhaWx1cmUgb2YgYDAgaW4gYm94ZWRTdHJpbmdgIChSaGlubykKKyAgICB2YXIgYm94ZWRTdHJpbmcgPSAkT2JqZWN0KCdhJyk7CisgICAgdmFyIHNwbGl0U3RyaW5nID0gYm94ZWRTdHJpbmdbMF0gIT09ICdhJyB8fCAhKDAgaW4gYm94ZWRTdHJpbmcpOworCisgICAgdmFyIHByb3Blcmx5Qm94ZXNDb250ZXh0ID0gZnVuY3Rpb24gcHJvcGVybHlCb3hlZChtZXRob2QpIHsKKyAgICAgICAgLy8gQ2hlY2sgbm9kZSAwLjYuMjEgYnVnIHdoZXJlIHRoaXJkIHBhcmFtZXRlciBpcyBub3QgYm94ZWQKKyAgICAgICAgdmFyIHByb3Blcmx5Qm94ZXNOb25TdHJpY3QgPSB0cnVlOworICAgICAgICB2YXIgcHJvcGVybHlCb3hlc1N0cmljdCA9IHRydWU7CisgICAgICAgIHZhciB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICBpZiAobWV0aG9kKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1ldGhvZC5jYWxsKCdmb28nLCBmdW5jdGlvbiAoXywgX18sIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ICE9PSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVybHlCb3hlc05vblN0cmljdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBtZXRob2QuY2FsbChbMV0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgJ3VzZSBzdHJpY3QnOworCisgICAgICAgICAgICAgICAgICAgIHByb3Blcmx5Qm94ZXNTdHJpY3QgPSB0eXBlb2YgdGhpcyA9PT0gJ3N0cmluZyc7CisgICAgICAgICAgICAgICAgfSwgJ3gnKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICEhbWV0aG9kICYmICF0aHJld0V4Y2VwdGlvbiAmJiBwcm9wZXJseUJveGVzTm9uU3RyaWN0ICYmIHByb3Blcmx5Qm94ZXNTdHJpY3Q7CisgICAgfTsKKworICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuLyosIHRoaXNBcmcqLykgeworICAgICAgICAgICAgdmFyIG9iamVjdCA9IEVTLlRvT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgdmFyIHNlbGYgPSBzcGxpdFN0cmluZyAmJiBpc1N0cmluZyh0aGlzKSA/IHN0clNwbGl0KHRoaXMsICcnKSA6IG9iamVjdDsKKyAgICAgICAgICAgIHZhciBpID0gLTE7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gRVMuVG9VaW50MzIoc2VsZi5sZW5ndGgpOworICAgICAgICAgICAgdmFyIFQ7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICBUID0gYXJndW1lbnRzWzFdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBubyBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5jdGlvbgorICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKGNhbGxiYWNrZm4pKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEludm9rZSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aCBjYWxsLCBwYXNzaW5nIGFyZ3VtZW50czoKKyAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgcHJvcGVydHkgdmFsdWUsIHByb3BlcnR5IGtleSwgdGhpc0FyZyBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBUID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tmbihzZWxmW2ldLCBpLCBvYmplY3QpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tmbi5jYWxsKFQsIHNlbGZbaV0sIGksIG9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LCAhcHJvcGVybHlCb3hlc0NvbnRleHQoQXJyYXlQcm90b3R5cGUuZm9yRWFjaCkpOworCisgICAgLy8gRVM1IDE1LjQuNC4xOQorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4xOQorICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NvcmVfSmF2YVNjcmlwdF8xLjVfUmVmZXJlbmNlL09iamVjdHMvQXJyYXkvbWFwCisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuLyosIHRoaXNBcmcqLykgeworICAgICAgICAgICAgdmFyIG9iamVjdCA9IEVTLlRvT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgdmFyIHNlbGYgPSBzcGxpdFN0cmluZyAmJiBpc1N0cmluZyh0aGlzKSA/IHN0clNwbGl0KHRoaXMsICcnKSA6IG9iamVjdDsKKyAgICAgICAgICAgIHZhciBsZW5ndGggPSBFUy5Ub1VpbnQzMihzZWxmLmxlbmd0aCk7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gJEFycmF5KGxlbmd0aCk7CisgICAgICAgICAgICB2YXIgVDsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgICAgIFQgPSBhcmd1bWVudHNbMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIG5vIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIGlmIGNhbGxiYWNrIGlzIG5vdCBhIGNhbGxhYmxlIGZ1bmN0aW9uCisgICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUoY2FsbGJhY2tmbikpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgaW4gc2VsZikgeworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFQgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBjYWxsYmFja2ZuKHNlbGZbaV0sIGksIG9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBjYWxsYmFja2ZuLmNhbGwoVCwgc2VsZltpXSwgaSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9LCAhcHJvcGVybHlCb3hlc0NvbnRleHQoQXJyYXlQcm90b3R5cGUubWFwKSk7CisKKyAgICAvLyBFUzUgMTUuNC40LjIwCisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuNC40LjIwCisgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2UvT2JqZWN0cy9BcnJheS9maWx0ZXIKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKEFycmF5UHJvdG90eXBlLCB7CisgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4vKiwgdGhpc0FyZyovKSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gRVMuVG9PYmplY3QodGhpcyk7CisgICAgICAgICAgICB2YXIgc2VsZiA9IHNwbGl0U3RyaW5nICYmIGlzU3RyaW5nKHRoaXMpID8gc3RyU3BsaXQodGhpcywgJycpIDogb2JqZWN0OworICAgICAgICAgICAgdmFyIGxlbmd0aCA9IEVTLlRvVWludDMyKHNlbGYubGVuZ3RoKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgICAgIHZhciB2YWx1ZTsKKyAgICAgICAgICAgIHZhciBUOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgVCA9IGFyZ3VtZW50c1sxXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgbm8gY2FsbGJhY2sgZnVuY3Rpb24gb3IgaWYgY2FsbGJhY2sgaXMgbm90IGEgY2FsbGFibGUgZnVuY3Rpb24KKyAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZShjYWxsYmFja2ZuKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5LnByb3RvdHlwZS5maWx0ZXIgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZltpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBUID09PSAndW5kZWZpbmVkJyA/IGNhbGxiYWNrZm4odmFsdWUsIGksIG9iamVjdCkgOiBjYWxsYmFja2ZuLmNhbGwoVCwgdmFsdWUsIGksIG9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDYWxsKHJlc3VsdCwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0sICFwcm9wZXJseUJveGVzQ29udGV4dChBcnJheVByb3RvdHlwZS5maWx0ZXIpKTsKKworICAgIC8vIEVTNSAxNS40LjQuMTYKKyAgICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS40LjQuMTYKKyAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9ldmVyeQorICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgZXZlcnk6IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrZm4vKiwgdGhpc0FyZyovKSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gRVMuVG9PYmplY3QodGhpcyk7CisgICAgICAgICAgICB2YXIgc2VsZiA9IHNwbGl0U3RyaW5nICYmIGlzU3RyaW5nKHRoaXMpID8gc3RyU3BsaXQodGhpcywgJycpIDogb2JqZWN0OworICAgICAgICAgICAgdmFyIGxlbmd0aCA9IEVTLlRvVWludDMyKHNlbGYubGVuZ3RoKTsKKyAgICAgICAgICAgIHZhciBUOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgVCA9IGFyZ3VtZW50c1sxXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgbm8gY2FsbGJhY2sgZnVuY3Rpb24gb3IgaWYgY2FsbGJhY2sgaXMgbm90IGEgY2FsbGFibGUgZnVuY3Rpb24KKyAgICAgICAgICAgIGlmICghaXNDYWxsYWJsZShjYWxsYmFja2ZuKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChpIGluIHNlbGYgJiYgISh0eXBlb2YgVCA9PT0gJ3VuZGVmaW5lZCcgPyBjYWxsYmFja2ZuKHNlbGZbaV0sIGksIG9iamVjdCkgOiBjYWxsYmFja2ZuLmNhbGwoVCwgc2VsZltpXSwgaSwgb2JqZWN0KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSwgIXByb3Blcmx5Qm94ZXNDb250ZXh0KEFycmF5UHJvdG90eXBlLmV2ZXJ5KSk7CisKKyAgICAvLyBFUzUgMTUuNC40LjE3CisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuNC40LjE3CisgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQXJyYXkvc29tZQorICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuLyosIHRoaXNBcmcgKi8pIHsKKyAgICAgICAgICAgIHZhciBvYmplY3QgPSBFUy5Ub09iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIHZhciBzZWxmID0gc3BsaXRTdHJpbmcgJiYgaXNTdHJpbmcodGhpcykgPyBzdHJTcGxpdCh0aGlzLCAnJykgOiBvYmplY3Q7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gRVMuVG9VaW50MzIoc2VsZi5sZW5ndGgpOworICAgICAgICAgICAgdmFyIFQ7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICBUID0gYXJndW1lbnRzWzFdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBubyBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5jdGlvbgorICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKGNhbGxiYWNrZm4pKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkucHJvdG90eXBlLnNvbWUgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmICYmICh0eXBlb2YgVCA9PT0gJ3VuZGVmaW5lZCcgPyBjYWxsYmFja2ZuKHNlbGZbaV0sIGksIG9iamVjdCkgOiBjYWxsYmFja2ZuLmNhbGwoVCwgc2VsZltpXSwgaSwgb2JqZWN0KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfSwgIXByb3Blcmx5Qm94ZXNDb250ZXh0KEFycmF5UHJvdG90eXBlLnNvbWUpKTsKKworICAgIC8vIEVTNSAxNS40LjQuMjEKKyAgICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS40LjQuMjEKKyAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9Db3JlX0phdmFTY3JpcHRfMS41X1JlZmVyZW5jZS9PYmplY3RzL0FycmF5L3JlZHVjZQorICAgIHZhciByZWR1Y2VDb2VyY2VzVG9PYmplY3QgPSBmYWxzZTsKKyAgICBpZiAoQXJyYXlQcm90b3R5cGUucmVkdWNlKSB7CisgICAgICAgIHJlZHVjZUNvZXJjZXNUb09iamVjdCA9IHR5cGVvZiBBcnJheVByb3RvdHlwZS5yZWR1Y2UuY2FsbCgnZXM1JywgZnVuY3Rpb24gKF8sIF9fLCBfX18sIGxpc3QpIHsKKyAgICAgICAgICAgIHJldHVybiBsaXN0OworICAgICAgICB9KSA9PT0gJ29iamVjdCc7CisgICAgfQorICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgcmVkdWNlOiBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2tmbi8qLCBpbml0aWFsVmFsdWUqLykgeworICAgICAgICAgICAgdmFyIG9iamVjdCA9IEVTLlRvT2JqZWN0KHRoaXMpOworICAgICAgICAgICAgdmFyIHNlbGYgPSBzcGxpdFN0cmluZyAmJiBpc1N0cmluZyh0aGlzKSA/IHN0clNwbGl0KHRoaXMsICcnKSA6IG9iamVjdDsKKyAgICAgICAgICAgIHZhciBsZW5ndGggPSBFUy5Ub1VpbnQzMihzZWxmLmxlbmd0aCk7CisKKyAgICAgICAgICAgIC8vIElmIG5vIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIGlmIGNhbGxiYWNrIGlzIG5vdCBhIGNhbGxhYmxlIGZ1bmN0aW9uCisgICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUoY2FsbGJhY2tmbikpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBubyB2YWx1ZSB0byByZXR1cm4gaWYgbm8gaW5pdGlhbCB2YWx1ZSBhbmQgYW4gZW1wdHkgYXJyYXkKKyAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDAgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDIpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhcmd1bWVudHNbMV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgaW4gc2VsZikgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZltpKytdOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBpZiBhcnJheSBjb250YWlucyBubyB2YWx1ZXMsIG5vIGluaXRpYWwgdmFsdWUgdG8gcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPj0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICg7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChpIGluIHNlbGYpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2tmbihyZXN1bHQsIHNlbGZbaV0sIGksIG9iamVjdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfSwgIXJlZHVjZUNvZXJjZXNUb09iamVjdCk7CisKKyAgICAvLyBFUzUgMTUuNC40LjIyCisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuNC40LjIyCisgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ29yZV9KYXZhU2NyaXB0XzEuNV9SZWZlcmVuY2UvT2JqZWN0cy9BcnJheS9yZWR1Y2VSaWdodAorICAgIHZhciByZWR1Y2VSaWdodENvZXJjZXNUb09iamVjdCA9IGZhbHNlOworICAgIGlmIChBcnJheVByb3RvdHlwZS5yZWR1Y2VSaWdodCkgeworICAgICAgICByZWR1Y2VSaWdodENvZXJjZXNUb09iamVjdCA9IHR5cGVvZiBBcnJheVByb3RvdHlwZS5yZWR1Y2VSaWdodC5jYWxsKCdlczUnLCBmdW5jdGlvbiAoXywgX18sIF9fXywgbGlzdCkgeworICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CisgICAgICAgIH0pID09PSAnb2JqZWN0JzsKKyAgICB9CisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbi8qLCBpbml0aWFsKi8pIHsKKyAgICAgICAgICAgIHZhciBvYmplY3QgPSBFUy5Ub09iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIHZhciBzZWxmID0gc3BsaXRTdHJpbmcgJiYgaXNTdHJpbmcodGhpcykgPyBzdHJTcGxpdCh0aGlzLCAnJykgOiBvYmplY3Q7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gRVMuVG9VaW50MzIoc2VsZi5sZW5ndGgpOworCisgICAgICAgICAgICAvLyBJZiBubyBjYWxsYmFjayBmdW5jdGlvbiBvciBpZiBjYWxsYmFjayBpcyBub3QgYSBjYWxsYWJsZSBmdW5jdGlvbgorICAgICAgICAgICAgaWYgKCFpc0NhbGxhYmxlKGNhbGxiYWNrZm4pKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBubyB2YWx1ZSB0byByZXR1cm4gaWYgbm8gaW5pdGlhbCB2YWx1ZSwgZW1wdHkgYXJyYXkKKyAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDAgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZHVjZVJpZ2h0IG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgcmVzdWx0OworICAgICAgICAgICAgdmFyIGkgPSBsZW5ndGggLSAxOworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFyZ3VtZW50c1sxXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmW2ktLV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIGFycmF5IGNvbnRhaW5zIG5vIHZhbHVlcywgbm8gaW5pdGlhbCB2YWx1ZSB0byByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgaWYgKC0taSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlZHVjZVJpZ2h0IG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrZm4ocmVzdWx0LCBzZWxmW2ldLCBpLCBvYmplY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGktLSk7CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9LCAhcmVkdWNlUmlnaHRDb2VyY2VzVG9PYmplY3QpOworCisgICAgLy8gRVM1IDE1LjQuNC4xNAorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4xNAorICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L2luZGV4T2YKKyAgICB2YXIgaGFzRmlyZWZveDJJbmRleE9mQnVnID0gQXJyYXlQcm90b3R5cGUuaW5kZXhPZiAmJiBbMCwgMV0uaW5kZXhPZigxLCAyKSAhPT0gLTE7CisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICBpbmRleE9mOiBmdW5jdGlvbiBpbmRleE9mKHNlYXJjaEVsZW1lbnQvKiwgZnJvbUluZGV4ICovKSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9IHNwbGl0U3RyaW5nICYmIGlzU3RyaW5nKHRoaXMpID8gc3RyU3BsaXQodGhpcywgJycpIDogRVMuVG9PYmplY3QodGhpcyk7CisgICAgICAgICAgICB2YXIgbGVuZ3RoID0gRVMuVG9VaW50MzIoc2VsZi5sZW5ndGgpOworCisgICAgICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICBpID0gRVMuVG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGhhbmRsZSBuZWdhdGl2ZSBpbmRpY2VzCisgICAgICAgICAgICBpID0gaSA+PSAwID8gaSA6IG1heCgwLCBsZW5ndGggKyBpKTsKKyAgICAgICAgICAgIGZvciAoOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSBpbiBzZWxmICYmIHNlbGZbaV0gPT09IHNlYXJjaEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfSwgaGFzRmlyZWZveDJJbmRleE9mQnVnKTsKKworICAgIC8vIEVTNSAxNS40LjQuMTUKKyAgICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS40LjQuMTUKKyAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9sYXN0SW5kZXhPZgorICAgIHZhciBoYXNGaXJlZm94Mkxhc3RJbmRleE9mQnVnID0gQXJyYXlQcm90b3R5cGUubGFzdEluZGV4T2YgJiYgWzAsIDFdLmxhc3RJbmRleE9mKDAsIC0zKSAhPT0gLTE7CisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICBsYXN0SW5kZXhPZjogZnVuY3Rpb24gbGFzdEluZGV4T2Yoc2VhcmNoRWxlbWVudC8qLCBmcm9tSW5kZXggKi8pIHsKKyAgICAgICAgICAgIHZhciBzZWxmID0gc3BsaXRTdHJpbmcgJiYgaXNTdHJpbmcodGhpcykgPyBzdHJTcGxpdCh0aGlzLCAnJykgOiBFUy5Ub09iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIHZhciBsZW5ndGggPSBFUy5Ub1VpbnQzMihzZWxmLmxlbmd0aCk7CisKKyAgICAgICAgICAgIGlmIChsZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgaSA9IGxlbmd0aCAtIDE7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICBpID0gbWluKGksIEVTLlRvSW50ZWdlcihhcmd1bWVudHNbMV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGhhbmRsZSBuZWdhdGl2ZSBpbmRpY2VzCisgICAgICAgICAgICBpID0gaSA+PSAwID8gaSA6IGxlbmd0aCAtIE1hdGguYWJzKGkpOworICAgICAgICAgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgaW4gc2VsZiAmJiBzZWFyY2hFbGVtZW50ID09PSBzZWxmW2ldKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0sIGhhc0ZpcmVmb3gyTGFzdEluZGV4T2ZCdWcpOworCisgICAgLy8gRVM1IDE1LjQuNC4xMgorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjQuNC4xMgorICAgIHZhciBzcGxpY2VOb29wUmV0dXJuc0VtcHR5QXJyYXkgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgYSA9IFsxLCAyXTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGEuc3BsaWNlKCk7CisgICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gMiAmJiBpc0FycmF5KHJlc3VsdCkgJiYgcmVzdWx0Lmxlbmd0aCA9PT0gMDsKKyAgICB9KCkpOworICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgLy8gU2FmYXJpIDUuMCBidWcgd2hlcmUgLnNwbGljZSgpIHJldHVybnMgdW5kZWZpbmVkCisgICAgICAgIHNwbGljZTogZnVuY3Rpb24gc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkgeworICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gW107CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9zcGxpY2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sICFzcGxpY2VOb29wUmV0dXJuc0VtcHR5QXJyYXkpOworCisgICAgdmFyIHNwbGljZVdvcmtzV2l0aEVtcHR5T2JqZWN0ID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIG9iaiA9IHt9OworICAgICAgICBBcnJheVByb3RvdHlwZS5zcGxpY2UuY2FsbChvYmosIDAsIDAsIDEpOworICAgICAgICByZXR1cm4gb2JqLmxlbmd0aCA9PT0gMTsKKyAgICB9KCkpOworICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgc3BsaWNlOiBmdW5jdGlvbiBzcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSB7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzOworICAgICAgICAgICAgdGhpcy5sZW5ndGggPSBtYXgoRVMuVG9JbnRlZ2VyKHRoaXMubGVuZ3RoKSwgMCk7CisgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIGRlbGV0ZUNvdW50ICE9PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgIGFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgICAgICBwdXNoQ2FsbChhcmdzLCB0aGlzLmxlbmd0aCAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhcmdzWzFdID0gRVMuVG9JbnRlZ2VyKGRlbGV0ZUNvdW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYXJyYXlfc3BsaWNlLmFwcGx5KHRoaXMsIGFyZ3MpOworICAgICAgICB9CisgICAgfSwgIXNwbGljZVdvcmtzV2l0aEVtcHR5T2JqZWN0KTsKKyAgICB2YXIgc3BsaWNlV29ya3NXaXRoTGFyZ2VTcGFyc2VBcnJheXMgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICAvLyBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8yOTUKKyAgICAgICAgLy8gU2FmYXJpIDcvOCBicmVha3Mgd2l0aCBzcGFyc2UgYXJyYXlzIG9mIHNpemUgMWU1IG9yIGdyZWF0ZXIKKyAgICAgICAgdmFyIGFyciA9IG5ldyAkQXJyYXkoMWU1KTsKKyAgICAgICAgLy8gbm90ZTogdGhlIGluZGV4IE1VU1QgYmUgOCBvciBsYXJnZXIgb3IgdGhlIHRlc3Qgd2lsbCBmYWxzZSBwYXNzCisgICAgICAgIGFycls4XSA9ICd4JzsKKyAgICAgICAgYXJyLnNwbGljZSgxLCAxKTsKKyAgICAgICAgLy8gbm90ZTogdGhpcyB0ZXN0IG11c3QgYmUgZGVmaW5lZCAqYWZ0ZXIqIHRoZSBpbmRleE9mIHNoaW0KKyAgICAgICAgLy8gcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9pc3N1ZXMvMzEzCisgICAgICAgIHJldHVybiBhcnIuaW5kZXhPZigneCcpID09PSA3OworICAgIH0oKSk7CisgICAgdmFyIHNwbGljZVdvcmtzV2l0aFNtYWxsU3BhcnNlQXJyYXlzID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gUGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9pc3N1ZXMvMjk1CisgICAgICAgIC8vIE9wZXJhIDEyLjE1IGJyZWFrcyBvbiB0aGlzLCBubyBpZGVhIHdoeS4KKyAgICAgICAgdmFyIG4gPSAyNTY7CisgICAgICAgIHZhciBhcnIgPSBbXTsKKyAgICAgICAgYXJyW25dID0gJ2EnOworICAgICAgICBhcnIuc3BsaWNlKG4gKyAxLCAwLCAnYicpOworICAgICAgICByZXR1cm4gYXJyW25dID09PSAnYSc7CisgICAgfSgpKTsKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKEFycmF5UHJvdG90eXBlLCB7CisgICAgICAgIHNwbGljZTogZnVuY3Rpb24gc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCkgeworICAgICAgICAgICAgdmFyIE8gPSBFUy5Ub09iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIHZhciBBID0gW107CisgICAgICAgICAgICB2YXIgbGVuID0gRVMuVG9VaW50MzIoTy5sZW5ndGgpOworICAgICAgICAgICAgdmFyIHJlbGF0aXZlU3RhcnQgPSBFUy5Ub0ludGVnZXIoc3RhcnQpOworICAgICAgICAgICAgdmFyIGFjdHVhbFN0YXJ0ID0gcmVsYXRpdmVTdGFydCA8IDAgPyBtYXgoKGxlbiArIHJlbGF0aXZlU3RhcnQpLCAwKSA6IG1pbihyZWxhdGl2ZVN0YXJ0LCBsZW4pOworICAgICAgICAgICAgdmFyIGFjdHVhbERlbGV0ZUNvdW50ID0gbWluKG1heChFUy5Ub0ludGVnZXIoZGVsZXRlQ291bnQpLCAwKSwgbGVuIC0gYWN0dWFsU3RhcnQpOworCisgICAgICAgICAgICB2YXIgayA9IDA7CisgICAgICAgICAgICB2YXIgZnJvbTsKKyAgICAgICAgICAgIHdoaWxlIChrIDwgYWN0dWFsRGVsZXRlQ291bnQpIHsKKyAgICAgICAgICAgICAgICBmcm9tID0gJFN0cmluZyhhY3R1YWxTdGFydCArIGspOworICAgICAgICAgICAgICAgIGlmIChvd25zKE8sIGZyb20pKSB7CisgICAgICAgICAgICAgICAgICAgIEFba10gPSBPW2Zyb21dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrICs9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IGFycmF5U2xpY2UoYXJndW1lbnRzLCAyKTsKKyAgICAgICAgICAgIHZhciBpdGVtQ291bnQgPSBpdGVtcy5sZW5ndGg7CisgICAgICAgICAgICB2YXIgdG87CisgICAgICAgICAgICBpZiAoaXRlbUNvdW50IDwgYWN0dWFsRGVsZXRlQ291bnQpIHsKKyAgICAgICAgICAgICAgICBrID0gYWN0dWFsU3RhcnQ7CisgICAgICAgICAgICAgICAgdmFyIG1heEsgPSBsZW4gLSBhY3R1YWxEZWxldGVDb3VudDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoayA8IG1heEspIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9ICRTdHJpbmcoayArIGFjdHVhbERlbGV0ZUNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgdG8gPSAkU3RyaW5nKGsgKyBpdGVtQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAob3ducyhPLCBmcm9tKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgT1t0b10gPSBPW2Zyb21dOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIE9bdG9dOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGsgKz0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgayA9IGxlbjsKKyAgICAgICAgICAgICAgICB2YXIgbWluSyA9IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50ICsgaXRlbUNvdW50OworICAgICAgICAgICAgICAgIHdoaWxlIChrID4gbWluSykgeworICAgICAgICAgICAgICAgICAgICBkZWxldGUgT1trIC0gMV07CisgICAgICAgICAgICAgICAgICAgIGsgLT0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1Db3VudCA+IGFjdHVhbERlbGV0ZUNvdW50KSB7CisgICAgICAgICAgICAgICAgayA9IGxlbiAtIGFjdHVhbERlbGV0ZUNvdW50OworICAgICAgICAgICAgICAgIHdoaWxlIChrID4gYWN0dWFsU3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA9ICRTdHJpbmcoayArIGFjdHVhbERlbGV0ZUNvdW50IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHRvID0gJFN0cmluZyhrICsgaXRlbUNvdW50IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvd25zKE8sIGZyb20pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBPW3RvXSA9IE9bZnJvbV07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgT1t0b107CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgayAtPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGsgPSBhY3R1YWxTdGFydDsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBPW2tdID0gaXRlbXNbaV07CisgICAgICAgICAgICAgICAgayArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTy5sZW5ndGggPSBsZW4gLSBhY3R1YWxEZWxldGVDb3VudCArIGl0ZW1Db3VudDsKKworICAgICAgICAgICAgcmV0dXJuIEE7CisgICAgICAgIH0KKyAgICB9LCAhc3BsaWNlV29ya3NXaXRoTGFyZ2VTcGFyc2VBcnJheXMgfHwgIXNwbGljZVdvcmtzV2l0aFNtYWxsU3BhcnNlQXJyYXlzKTsKKworICAgIHZhciBvcmlnaW5hbEpvaW4gPSBBcnJheVByb3RvdHlwZS5qb2luOworICAgIHZhciBoYXNTdHJpbmdKb2luQnVnOworICAgIHRyeSB7CisgICAgICAgIGhhc1N0cmluZ0pvaW5CdWcgPSBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKCcxMjMnLCAnLCcpICE9PSAnMSwyLDMnOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaGFzU3RyaW5nSm9pbkJ1ZyA9IHRydWU7CisgICAgfQorICAgIGlmIChoYXNTdHJpbmdKb2luQnVnKSB7CisgICAgICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgICAgIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlcCA9IHR5cGVvZiBzZXBhcmF0b3IgPT09ICd1bmRlZmluZWQnID8gJywnIDogc2VwYXJhdG9yOworICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEpvaW4uY2FsbChpc1N0cmluZyh0aGlzKSA/IHN0clNwbGl0KHRoaXMsICcnKSA6IHRoaXMsIHNlcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIGhhc1N0cmluZ0pvaW5CdWcpOworICAgIH0KKworICAgIHZhciBoYXNKb2luVW5kZWZpbmVkQnVnID0gWzEsIDJdLmpvaW4odW5kZWZpbmVkKSAhPT0gJzEsMic7CisgICAgaWYgKGhhc0pvaW5VbmRlZmluZWRCdWcpIHsKKyAgICAgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICAgICAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2VwID0gdHlwZW9mIHNlcGFyYXRvciA9PT0gJ3VuZGVmaW5lZCcgPyAnLCcgOiBzZXBhcmF0b3I7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsSm9pbi5jYWxsKHRoaXMsIHNlcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIGhhc0pvaW5VbmRlZmluZWRCdWcpOworICAgIH0KKworICAgIHZhciBwdXNoU2hpbSA9IGZ1bmN0aW9uIHB1c2goaXRlbSkgeworICAgICAgICB2YXIgTyA9IEVTLlRvT2JqZWN0KHRoaXMpOworICAgICAgICB2YXIgbiA9IEVTLlRvVWludDMyKE8ubGVuZ3RoKTsKKyAgICAgICAgdmFyIGkgPSAwOworICAgICAgICB3aGlsZSAoaSA8IGFyZ3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIE9bbiArIGldID0gYXJndW1lbnRzW2ldOworICAgICAgICAgICAgaSArPSAxOworICAgICAgICB9CisgICAgICAgIE8ubGVuZ3RoID0gbiArIGk7CisgICAgICAgIHJldHVybiBuICsgaTsKKyAgICB9OworCisgICAgdmFyIHB1c2hJc05vdEdlbmVyaWMgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgb2JqID0ge307CisgICAgICAgIHZhciByZXN1bHQgPSBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKG9iaiwgdW5kZWZpbmVkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCAhPT0gMSB8fCBvYmoubGVuZ3RoICE9PSAxIHx8IHR5cGVvZiBvYmpbMF0gIT09ICd1bmRlZmluZWQnIHx8ICFvd25zKG9iaiwgMCk7CisgICAgfSgpKTsKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKEFycmF5UHJvdG90eXBlLCB7CisgICAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2goaXRlbSkgeworICAgICAgICAgICAgaWYgKGlzQXJyYXkodGhpcykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlfcHVzaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHB1c2hTaGltLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0KKyAgICB9LCBwdXNoSXNOb3RHZW5lcmljKTsKKworICAgIC8vIFRoaXMgZml4ZXMgYSB2ZXJ5IHdlaXJkIGJ1ZyBpbiBPcGVyYSAxMC42IHdoZW4gcHVzaGluZyBgdW5kZWZpbmVkCisgICAgdmFyIHB1c2hVbmRlZmluZWRJc1dlaXJkID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGFyciA9IFtdOworICAgICAgICB2YXIgcmVzdWx0ID0gYXJyLnB1c2godW5kZWZpbmVkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdCAhPT0gMSB8fCBhcnIubGVuZ3RoICE9PSAxIHx8IHR5cGVvZiBhcnJbMF0gIT09ICd1bmRlZmluZWQnIHx8ICFvd25zKGFyciwgMCk7CisgICAgfSgpKTsKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKEFycmF5UHJvdG90eXBlLCB7IHB1c2g6IHB1c2hTaGltIH0sIHB1c2hVbmRlZmluZWRJc1dlaXJkKTsKKworICAgIC8vIEVTNSAxNS4yLjMuMTQKKyAgICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjQuNC4xMAorICAgIC8vIEZpeCBib3hlZCBzdHJpbmcgYnVnCisgICAgZGVmaW5lUHJvcGVydGllcyhBcnJheVByb3RvdHlwZSwgeworICAgICAgICBzbGljZTogZnVuY3Rpb24gKHN0YXJ0LCBlbmQpIHsKKyAgICAgICAgICAgIHZhciBhcnIgPSBpc1N0cmluZyh0aGlzKSA/IHN0clNwbGl0KHRoaXMsICcnKSA6IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlTbGljZUFwcGx5KGFyciwgYXJndW1lbnRzKTsKKyAgICAgICAgfQorICAgIH0sIHNwbGl0U3RyaW5nKTsKKworICAgIHZhciBzb3J0SWdub3Jlc05vbkZ1bmN0aW9ucyA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBbMSwgMl0uc29ydChudWxsKTsKKyAgICAgICAgICAgIFsxLCAyXS5zb3J0KHt9KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSgpKTsKKyAgICB2YXIgc29ydFRocm93c09uUmVnZXggPSAoZnVuY3Rpb24gKCkgeworICAgICAgICAvLyB0aGlzIGlzIGEgcHJvYmxlbSBpbiBGaXJlZm94IDQsIGluIHdoaWNoIGB0eXBlb2YgL2EvID09PSAnZnVuY3Rpb24nYAorICAgICAgICB0cnkgeworICAgICAgICAgICAgWzEsIDJdLnNvcnQoL2EvKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSgpKTsKKyAgICB2YXIgc29ydElnbm9yZXNVbmRlZmluZWQgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICAvLyBhcHBsaWVzIGluIElFIDgsIGZvciBvbmUuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBbMSwgMl0uc29ydCh1bmRlZmluZWQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KCkpOworICAgIGRlZmluZVByb3BlcnRpZXMoQXJyYXlQcm90b3R5cGUsIHsKKyAgICAgICAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlRm4pIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgY29tcGFyZUZuID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgIHJldHVybiBhcnJheVNvcnQodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUoY29tcGFyZUZuKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5LnByb3RvdHlwZS5zb3J0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGFycmF5U29ydCh0aGlzLCBjb21wYXJlRm4pOworICAgICAgICB9CisgICAgfSwgc29ydElnbm9yZXNOb25GdW5jdGlvbnMgfHwgIXNvcnRJZ25vcmVzVW5kZWZpbmVkIHx8ICFzb3J0VGhyb3dzT25SZWdleCk7CisKKyAgICAvLworICAgIC8vIE9iamVjdAorICAgIC8vID09PT09PQorICAgIC8vCisKKyAgICAvLyBFUzUgMTUuMi4zLjE0CisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuMi4zLjE0CisKKyAgICAvLyBodHRwOi8vd2hhdHRoZWhlYWRzYWlkLmNvbS8yMDEwLzEwL2Etc2FmZXItb2JqZWN0LWtleXMtY29tcGF0aWJpbGl0eS1pbXBsZW1lbnRhdGlvbgorICAgIHZhciBoYXNEb250RW51bUJ1ZyA9ICFpc0VudW0oeyAndG9TdHJpbmcnOiBudWxsIH0sICd0b1N0cmluZycpOworICAgIHZhciBoYXNQcm90b0VudW1CdWcgPSBpc0VudW0oZnVuY3Rpb24gKCkge30sICdwcm90b3R5cGUnKTsKKyAgICB2YXIgaGFzU3RyaW5nRW51bUJ1ZyA9ICFvd25zKCd4JywgJzAnKTsKKyAgICB2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUgPSBmdW5jdGlvbiAobykgeworICAgICAgICB2YXIgY3RvciA9IG8uY29uc3RydWN0b3I7CisgICAgICAgIHJldHVybiBjdG9yICYmIGN0b3IucHJvdG90eXBlID09PSBvOworICAgIH07CisgICAgdmFyIGJsYWNrbGlzdGVkS2V5cyA9IHsKKyAgICAgICAgJHdpbmRvdzogdHJ1ZSwKKyAgICAgICAgJGNvbnNvbGU6IHRydWUsCisgICAgICAgICRwYXJlbnQ6IHRydWUsCisgICAgICAgICRzZWxmOiB0cnVlLAorICAgICAgICAkZnJhbWU6IHRydWUsCisgICAgICAgICRmcmFtZXM6IHRydWUsCisgICAgICAgICRmcmFtZUVsZW1lbnQ6IHRydWUsCisgICAgICAgICR3ZWJraXRJbmRleGVkREI6IHRydWUsCisgICAgICAgICR3ZWJraXRTdG9yYWdlSW5mbzogdHJ1ZSwKKyAgICAgICAgJGV4dGVybmFsOiB0cnVlCisgICAgfTsKKyAgICB2YXIgaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnID0gKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLyogZ2xvYmFscyB3aW5kb3cgKi8KKyAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh2YXIgayBpbiB3aW5kb3cpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKCFibGFja2xpc3RlZEtleXNbJyQnICsga10gJiYgb3ducyh3aW5kb3csIGspICYmIHdpbmRvd1trXSAhPT0gbnVsbCAmJiB0eXBlb2Ygd2luZG93W2tdID09PSAnb2JqZWN0JykgeworICAgICAgICAgICAgICAgICAgICBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSh3aW5kb3dba10pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSgpKTsKKyAgICB2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5ID0gZnVuY3Rpb24gKG9iamVjdCkgeworICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZykgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlKG9iamVjdCk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvYmplY3QpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9OworICAgIHZhciBkb250RW51bXMgPSBbCisgICAgICAgICd0b1N0cmluZycsCisgICAgICAgICd0b0xvY2FsZVN0cmluZycsCisgICAgICAgICd2YWx1ZU9mJywKKyAgICAgICAgJ2hhc093blByb3BlcnR5JywKKyAgICAgICAgJ2lzUHJvdG90eXBlT2YnLAorICAgICAgICAncHJvcGVydHlJc0VudW1lcmFibGUnLAorICAgICAgICAnY29uc3RydWN0b3InCisgICAgXTsKKyAgICB2YXIgZG9udEVudW1zTGVuZ3RoID0gZG9udEVudW1zLmxlbmd0aDsKKworICAgIC8vIHRha2VuIGRpcmVjdGx5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9pcy1hcmd1bWVudHMvYmxvYi9tYXN0ZXIvaW5kZXguanMKKyAgICAvLyBjYW4gYmUgcmVwbGFjZWQgd2l0aCByZXF1aXJlKCdpcy1hcmd1bWVudHMnKSBpZiB3ZSBldmVyIHVzZSBhIGJ1aWxkIHByb2Nlc3MgaW5zdGVhZAorICAgIHZhciBpc1N0YW5kYXJkQXJndW1lbnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7CisgICAgfTsKKyAgICB2YXIgaXNMZWdhY3lBcmd1bWVudHMgPSBmdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYKKyAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYKKyAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmCisgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPj0gMCAmJgorICAgICAgICAgICAgIWlzQXJyYXkodmFsdWUpICYmCisgICAgICAgICAgICBpc0NhbGxhYmxlKHZhbHVlLmNhbGxlZSk7CisgICAgfTsKKyAgICB2YXIgaXNBcmd1bWVudHMgPSBpc1N0YW5kYXJkQXJndW1lbnRzKGFyZ3VtZW50cykgPyBpc1N0YW5kYXJkQXJndW1lbnRzIDogaXNMZWdhY3lBcmd1bWVudHM7CisKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKCRPYmplY3QsIHsKKyAgICAgICAga2V5czogZnVuY3Rpb24ga2V5cyhvYmplY3QpIHsKKyAgICAgICAgICAgIHZhciBpc0ZuID0gaXNDYWxsYWJsZShvYmplY3QpOworICAgICAgICAgICAgdmFyIGlzQXJncyA9IGlzQXJndW1lbnRzKG9iamVjdCk7CisgICAgICAgICAgICB2YXIgaXNPYmplY3QgPSBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7CisgICAgICAgICAgICB2YXIgaXNTdHIgPSBpc09iamVjdCAmJiBpc1N0cmluZyhvYmplY3QpOworCisgICAgICAgICAgICBpZiAoIWlzT2JqZWN0ICYmICFpc0ZuICYmICFpc0FyZ3MpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Jyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB0aGVLZXlzID0gW107CisgICAgICAgICAgICB2YXIgc2tpcFByb3RvID0gaGFzUHJvdG9FbnVtQnVnICYmIGlzRm47CisgICAgICAgICAgICBpZiAoKGlzU3RyICYmIGhhc1N0cmluZ0VudW1CdWcpIHx8IGlzQXJncykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2hDYWxsKHRoZUtleXMsICRTdHJpbmcoaSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFpc0FyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIShza2lwUHJvdG8gJiYgbmFtZSA9PT0gJ3Byb3RvdHlwZScpICYmIG93bnMob2JqZWN0LCBuYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaENhbGwodGhlS2V5cywgJFN0cmluZyhuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChoYXNEb250RW51bUJ1ZykgeworICAgICAgICAgICAgICAgIHZhciBza2lwQ29uc3RydWN0b3IgPSBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbnRFbnVtc0xlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkb250RW51bSA9IGRvbnRFbnVtc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoc2tpcENvbnN0cnVjdG9yICYmIGRvbnRFbnVtID09PSAnY29uc3RydWN0b3InKSAmJiBvd25zKG9iamVjdCwgZG9udEVudW0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoQ2FsbCh0aGVLZXlzLCBkb250RW51bSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGhlS2V5czsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGtleXNXb3Jrc1dpdGhBcmd1bWVudHMgPSAkT2JqZWN0LmtleXMgJiYgKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gU2FmYXJpIDUuMCBidWcKKyAgICAgICAgcmV0dXJuICRPYmplY3Qua2V5cyhhcmd1bWVudHMpLmxlbmd0aCA9PT0gMjsKKyAgICB9KDEsIDIpKTsKKyAgICB2YXIga2V5c0hhc0FyZ3VtZW50c0xlbmd0aEJ1ZyA9ICRPYmplY3Qua2V5cyAmJiAoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgYXJnS2V5cyA9ICRPYmplY3Qua2V5cyhhcmd1bWVudHMpOworICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCAhPT0gMSB8fCBhcmdLZXlzLmxlbmd0aCAhPT0gMSB8fCBhcmdLZXlzWzBdICE9PSAxOworICAgIH0oMSkpOworICAgIHZhciBvcmlnaW5hbEtleXMgPSAkT2JqZWN0LmtleXM7CisgICAgZGVmaW5lUHJvcGVydGllcygkT2JqZWN0LCB7CisgICAgICAgIGtleXM6IGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7CisgICAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqZWN0KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEtleXMoYXJyYXlTbGljZShvYmplY3QpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsS2V5cyhvYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwgIWtleXNXb3Jrc1dpdGhBcmd1bWVudHMgfHwga2V5c0hhc0FyZ3VtZW50c0xlbmd0aEJ1Zyk7CisKKyAgICAvLworICAgIC8vIERhdGUKKyAgICAvLyA9PT09CisgICAgLy8KKworICAgIHZhciBoYXNOZWdhdGl2ZU1vbnRoWWVhckJ1ZyA9IG5ldyBEYXRlKC0zNTA5ODI3MzI5NjAwMjkyKS5nZXRVVENNb250aCgpICE9PSAwOworICAgIHZhciBhTmVnYXRpdmVUZXN0RGF0ZSA9IG5ldyBEYXRlKC0xNTA5ODQyMjg5NjAwMjkyKTsKKyAgICB2YXIgYVBvc2l0aXZlVGVzdERhdGUgPSBuZXcgRGF0ZSgxNDQ5NjYyNDAwMDAwKTsKKyAgICB2YXIgaGFzVG9VVENTdHJpbmdGb3JtYXRCdWcgPSBhTmVnYXRpdmVUZXN0RGF0ZS50b1VUQ1N0cmluZygpICE9PSAnTW9uLCAwMSBKYW4gLTQ1ODc1IDExOjU5OjU5IEdNVCc7CisgICAgdmFyIGhhc1RvRGF0ZVN0cmluZ0Zvcm1hdEJ1ZzsKKyAgICB2YXIgaGFzVG9TdHJpbmdGb3JtYXRCdWc7CisgICAgdmFyIHRpbWVab25lT2Zmc2V0ID0gYU5lZ2F0aXZlVGVzdERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTsKKyAgICBpZiAodGltZVpvbmVPZmZzZXQgPCAtNzIwKSB7CisgICAgICAgIGhhc1RvRGF0ZVN0cmluZ0Zvcm1hdEJ1ZyA9IGFOZWdhdGl2ZVRlc3REYXRlLnRvRGF0ZVN0cmluZygpICE9PSAnVHVlIEphbiAwMiAtNDU4NzUnOworICAgICAgICBoYXNUb1N0cmluZ0Zvcm1hdEJ1ZyA9ICEoL15UaHUgRGVjIDEwIDIwMTUgXGRcZDpcZFxkOlxkXGQgR01UWy1cK11cZFxkXGRcZCg/OiB8JCkvKS50ZXN0KGFQb3NpdGl2ZVRlc3REYXRlLnRvU3RyaW5nKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGhhc1RvRGF0ZVN0cmluZ0Zvcm1hdEJ1ZyA9IGFOZWdhdGl2ZVRlc3REYXRlLnRvRGF0ZVN0cmluZygpICE9PSAnTW9uIEphbiAwMSAtNDU4NzUnOworICAgICAgICBoYXNUb1N0cmluZ0Zvcm1hdEJ1ZyA9ICEoL15XZWQgRGVjIDA5IDIwMTUgXGRcZDpcZFxkOlxkXGQgR01UWy1cK11cZFxkXGRcZCg/OiB8JCkvKS50ZXN0KGFQb3NpdGl2ZVRlc3REYXRlLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHZhciBvcmlnaW5hbEdldEZ1bGxZZWFyID0gY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLmdldEZ1bGxZZWFyKTsKKyAgICB2YXIgb3JpZ2luYWxHZXRNb250aCA9IGNhbGwuYmluZChEYXRlLnByb3RvdHlwZS5nZXRNb250aCk7CisgICAgdmFyIG9yaWdpbmFsR2V0RGF0ZSA9IGNhbGwuYmluZChEYXRlLnByb3RvdHlwZS5nZXREYXRlKTsKKyAgICB2YXIgb3JpZ2luYWxHZXRVVENGdWxsWWVhciA9IGNhbGwuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENGdWxsWWVhcik7CisgICAgdmFyIG9yaWdpbmFsR2V0VVRDTW9udGggPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDTW9udGgpOworICAgIHZhciBvcmlnaW5hbEdldFVUQ0RhdGUgPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDRGF0ZSk7CisgICAgdmFyIG9yaWdpbmFsR2V0VVRDRGF5ID0gY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLmdldFVUQ0RheSk7CisgICAgdmFyIG9yaWdpbmFsR2V0VVRDSG91cnMgPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDSG91cnMpOworICAgIHZhciBvcmlnaW5hbEdldFVUQ01pbnV0ZXMgPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDTWludXRlcyk7CisgICAgdmFyIG9yaWdpbmFsR2V0VVRDU2Vjb25kcyA9IGNhbGwuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENTZWNvbmRzKTsKKyAgICB2YXIgb3JpZ2luYWxHZXRVVENNaWxsaXNlY29uZHMgPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDTWlsbGlzZWNvbmRzKTsKKyAgICB2YXIgZGF5TmFtZSA9IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J107CisgICAgdmFyIG1vbnRoTmFtZSA9IFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLCAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXTsKKyAgICB2YXIgZGF5c0luTW9udGggPSBmdW5jdGlvbiBkYXlzSW5Nb250aChtb250aCwgeWVhcikgeworICAgICAgICByZXR1cm4gb3JpZ2luYWxHZXREYXRlKG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKSk7CisgICAgfTsKKworICAgIGRlZmluZVByb3BlcnRpZXMoRGF0ZS5wcm90b3R5cGUsIHsKKyAgICAgICAgZ2V0RnVsbFllYXI6IGZ1bmN0aW9uIGdldEZ1bGxZZWFyKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciB5ZWFyID0gb3JpZ2luYWxHZXRGdWxsWWVhcih0aGlzKTsKKyAgICAgICAgICAgIGlmICh5ZWFyIDwgMCAmJiBvcmlnaW5hbEdldE1vbnRoKHRoaXMpID4gMTEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geWVhciArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geWVhcjsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0TW9udGg6IGZ1bmN0aW9uIGdldE1vbnRoKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciB5ZWFyID0gb3JpZ2luYWxHZXRGdWxsWWVhcih0aGlzKTsKKyAgICAgICAgICAgIHZhciBtb250aCA9IG9yaWdpbmFsR2V0TW9udGgodGhpcyk7CisgICAgICAgICAgICBpZiAoeWVhciA8IDAgJiYgbW9udGggPiAxMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1vbnRoOworICAgICAgICB9LAorICAgICAgICBnZXREYXRlOiBmdW5jdGlvbiBnZXREYXRlKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciB5ZWFyID0gb3JpZ2luYWxHZXRGdWxsWWVhcih0aGlzKTsKKyAgICAgICAgICAgIHZhciBtb250aCA9IG9yaWdpbmFsR2V0TW9udGgodGhpcyk7CisgICAgICAgICAgICB2YXIgZGF0ZSA9IG9yaWdpbmFsR2V0RGF0ZSh0aGlzKTsKKyAgICAgICAgICAgIGlmICh5ZWFyIDwgMCAmJiBtb250aCA+IDExKSB7CisgICAgICAgICAgICAgICAgaWYgKG1vbnRoID09PSAxMikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGRheXMgPSBkYXlzSW5Nb250aCgwLCB5ZWFyICsgMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChkYXlzIC0gZGF0ZSkgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRhdGU7CisgICAgICAgIH0sCisgICAgICAgIGdldFVUQ0Z1bGxZZWFyOiBmdW5jdGlvbiBnZXRVVENGdWxsWWVhcigpIHsKKyAgICAgICAgICAgIGlmICghdGhpcyB8fCAhKHRoaXMgaW5zdGFuY2VvZiBEYXRlKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgeWVhciA9IG9yaWdpbmFsR2V0VVRDRnVsbFllYXIodGhpcyk7CisgICAgICAgICAgICBpZiAoeWVhciA8IDAgJiYgb3JpZ2luYWxHZXRVVENNb250aCh0aGlzKSA+IDExKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHllYXIgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHllYXI7CisgICAgICAgIH0sCisgICAgICAgIGdldFVUQ01vbnRoOiBmdW5jdGlvbiBnZXRVVENNb250aCgpIHsKKyAgICAgICAgICAgIGlmICghdGhpcyB8fCAhKHRoaXMgaW5zdGFuY2VvZiBEYXRlKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgeWVhciA9IG9yaWdpbmFsR2V0VVRDRnVsbFllYXIodGhpcyk7CisgICAgICAgICAgICB2YXIgbW9udGggPSBvcmlnaW5hbEdldFVUQ01vbnRoKHRoaXMpOworICAgICAgICAgICAgaWYgKHllYXIgPCAwICYmIG1vbnRoID4gMTEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtb250aDsKKyAgICAgICAgfSwKKyAgICAgICAgZ2V0VVRDRGF0ZTogZnVuY3Rpb24gZ2V0VVRDRGF0ZSgpIHsKKyAgICAgICAgICAgIGlmICghdGhpcyB8fCAhKHRoaXMgaW5zdGFuY2VvZiBEYXRlKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgeWVhciA9IG9yaWdpbmFsR2V0VVRDRnVsbFllYXIodGhpcyk7CisgICAgICAgICAgICB2YXIgbW9udGggPSBvcmlnaW5hbEdldFVUQ01vbnRoKHRoaXMpOworICAgICAgICAgICAgdmFyIGRhdGUgPSBvcmlnaW5hbEdldFVUQ0RhdGUodGhpcyk7CisgICAgICAgICAgICBpZiAoeWVhciA8IDAgJiYgbW9udGggPiAxMSkgeworICAgICAgICAgICAgICAgIGlmIChtb250aCA9PT0gMTIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBkYXlzID0gZGF5c0luTW9udGgoMCwgeWVhciArIDEpOworICAgICAgICAgICAgICAgIHJldHVybiAoZGF5cyAtIGRhdGUpICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkYXRlOworICAgICAgICB9CisgICAgfSwgaGFzTmVnYXRpdmVNb250aFllYXJCdWcpOworCisgICAgZGVmaW5lUHJvcGVydGllcyhEYXRlLnByb3RvdHlwZSwgeworICAgICAgICB0b1VUQ1N0cmluZzogZnVuY3Rpb24gdG9VVENTdHJpbmcoKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMgfHwgISh0aGlzIGluc3RhbmNlb2YgRGF0ZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGRheSA9IG9yaWdpbmFsR2V0VVRDRGF5KHRoaXMpOworICAgICAgICAgICAgdmFyIGRhdGUgPSBvcmlnaW5hbEdldFVUQ0RhdGUodGhpcyk7CisgICAgICAgICAgICB2YXIgbW9udGggPSBvcmlnaW5hbEdldFVUQ01vbnRoKHRoaXMpOworICAgICAgICAgICAgdmFyIHllYXIgPSBvcmlnaW5hbEdldFVUQ0Z1bGxZZWFyKHRoaXMpOworICAgICAgICAgICAgdmFyIGhvdXIgPSBvcmlnaW5hbEdldFVUQ0hvdXJzKHRoaXMpOworICAgICAgICAgICAgdmFyIG1pbnV0ZSA9IG9yaWdpbmFsR2V0VVRDTWludXRlcyh0aGlzKTsKKyAgICAgICAgICAgIHZhciBzZWNvbmQgPSBvcmlnaW5hbEdldFVUQ1NlY29uZHModGhpcyk7CisgICAgICAgICAgICByZXR1cm4gZGF5TmFtZVtkYXldICsgJywgJyArCisgICAgICAgICAgICAgICAgKGRhdGUgPCAxMCA/ICcwJyArIGRhdGUgOiBkYXRlKSArICcgJyArCisgICAgICAgICAgICAgICAgbW9udGhOYW1lW21vbnRoXSArICcgJyArCisgICAgICAgICAgICAgICAgeWVhciArICcgJyArCisgICAgICAgICAgICAgICAgKGhvdXIgPCAxMCA/ICcwJyArIGhvdXIgOiBob3VyKSArICc6JyArCisgICAgICAgICAgICAgICAgKG1pbnV0ZSA8IDEwID8gJzAnICsgbWludXRlIDogbWludXRlKSArICc6JyArCisgICAgICAgICAgICAgICAgKHNlY29uZCA8IDEwID8gJzAnICsgc2Vjb25kIDogc2Vjb25kKSArICcgR01UJzsKKyAgICAgICAgfQorICAgIH0sIGhhc05lZ2F0aXZlTW9udGhZZWFyQnVnIHx8IGhhc1RvVVRDU3RyaW5nRm9ybWF0QnVnKTsKKworICAgIC8vIE9wZXJhIDEyIGhhcyBgLGAKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKERhdGUucHJvdG90eXBlLCB7CisgICAgICAgIHRvRGF0ZVN0cmluZzogZnVuY3Rpb24gdG9EYXRlU3RyaW5nKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBkYXkgPSB0aGlzLmdldERheSgpOworICAgICAgICAgICAgdmFyIGRhdGUgPSB0aGlzLmdldERhdGUoKTsKKyAgICAgICAgICAgIHZhciBtb250aCA9IHRoaXMuZ2V0TW9udGgoKTsKKyAgICAgICAgICAgIHZhciB5ZWFyID0gdGhpcy5nZXRGdWxsWWVhcigpOworICAgICAgICAgICAgcmV0dXJuIGRheU5hbWVbZGF5XSArICcgJyArCisgICAgICAgICAgICAgICAgbW9udGhOYW1lW21vbnRoXSArICcgJyArCisgICAgICAgICAgICAgICAgKGRhdGUgPCAxMCA/ICcwJyArIGRhdGUgOiBkYXRlKSArICcgJyArCisgICAgICAgICAgICAgICAgeWVhcjsKKyAgICAgICAgfQorICAgIH0sIGhhc05lZ2F0aXZlTW9udGhZZWFyQnVnIHx8IGhhc1RvRGF0ZVN0cmluZ0Zvcm1hdEJ1Zyk7CisKKyAgICAvLyBjYW4ndCB1c2UgZGVmaW5lUHJvcGVydGllcyBoZXJlIGJlY2F1c2Ugb2YgdG9TdHJpbmcgZW51bWVyYXRpb24gaXNzdWUgaW4gSUUgPD0gOAorICAgIGlmIChoYXNOZWdhdGl2ZU1vbnRoWWVhckJ1ZyB8fCBoYXNUb1N0cmluZ0Zvcm1hdEJ1ZykgeworICAgICAgICBEYXRlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzIHx8ICEodGhpcyBpbnN0YW5jZW9mIERhdGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBkYXkgPSB0aGlzLmdldERheSgpOworICAgICAgICAgICAgdmFyIGRhdGUgPSB0aGlzLmdldERhdGUoKTsKKyAgICAgICAgICAgIHZhciBtb250aCA9IHRoaXMuZ2V0TW9udGgoKTsKKyAgICAgICAgICAgIHZhciB5ZWFyID0gdGhpcy5nZXRGdWxsWWVhcigpOworICAgICAgICAgICAgdmFyIGhvdXIgPSB0aGlzLmdldEhvdXJzKCk7CisgICAgICAgICAgICB2YXIgbWludXRlID0gdGhpcy5nZXRNaW51dGVzKCk7CisgICAgICAgICAgICB2YXIgc2Vjb25kID0gdGhpcy5nZXRTZWNvbmRzKCk7CisgICAgICAgICAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSB0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCk7CisgICAgICAgICAgICB2YXIgaG91cnNPZmZzZXQgPSBNYXRoLmZsb29yKE1hdGguYWJzKHRpbWV6b25lT2Zmc2V0KSAvIDYwKTsKKyAgICAgICAgICAgIHZhciBtaW51dGVzT2Zmc2V0ID0gTWF0aC5mbG9vcihNYXRoLmFicyh0aW1lem9uZU9mZnNldCkgJSA2MCk7CisgICAgICAgICAgICByZXR1cm4gZGF5TmFtZVtkYXldICsgJyAnICsKKyAgICAgICAgICAgICAgICBtb250aE5hbWVbbW9udGhdICsgJyAnICsKKyAgICAgICAgICAgICAgICAoZGF0ZSA8IDEwID8gJzAnICsgZGF0ZSA6IGRhdGUpICsgJyAnICsKKyAgICAgICAgICAgICAgICB5ZWFyICsgJyAnICsKKyAgICAgICAgICAgICAgICAoaG91ciA8IDEwID8gJzAnICsgaG91ciA6IGhvdXIpICsgJzonICsKKyAgICAgICAgICAgICAgICAobWludXRlIDwgMTAgPyAnMCcgKyBtaW51dGUgOiBtaW51dGUpICsgJzonICsKKyAgICAgICAgICAgICAgICAoc2Vjb25kIDwgMTAgPyAnMCcgKyBzZWNvbmQgOiBzZWNvbmQpICsgJyBHTVQnICsKKyAgICAgICAgICAgICAgICAodGltZXpvbmVPZmZzZXQgPiAwID8gJy0nIDogJysnKSArCisgICAgICAgICAgICAgICAgKGhvdXJzT2Zmc2V0IDwgMTAgPyAnMCcgKyBob3Vyc09mZnNldCA6IGhvdXJzT2Zmc2V0KSArCisgICAgICAgICAgICAgICAgKG1pbnV0ZXNPZmZzZXQgPCAxMCA/ICcwJyArIG1pbnV0ZXNPZmZzZXQgOiBtaW51dGVzT2Zmc2V0KTsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRGVzY3JpcHRvcnMpIHsKKyAgICAgICAgICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsICd0b1N0cmluZycsIHsKKyAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRVM1IDE1LjkuNS40MworICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjkuNS40MworICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIFN0cmluZyB2YWx1ZSByZXByZXNlbnQgdGhlIGluc3RhbmNlIGluIHRpbWUKKyAgICAvLyByZXByZXNlbnRlZCBieSB0aGlzIERhdGUgb2JqZWN0LiBUaGUgZm9ybWF0IG9mIHRoZSBTdHJpbmcgaXMgdGhlIERhdGUgVGltZQorICAgIC8vIHN0cmluZyBmb3JtYXQgZGVmaW5lZCBpbiAxNS45LjEuMTUuIEFsbCBmaWVsZHMgYXJlIHByZXNlbnQgaW4gdGhlIFN0cmluZy4KKyAgICAvLyBUaGUgdGltZSB6b25lIGlzIGFsd2F5cyBVVEMsIGRlbm90ZWQgYnkgdGhlIHN1ZmZpeCBaLiBJZiB0aGUgdGltZSB2YWx1ZSBvZgorICAgIC8vIHRoaXMgb2JqZWN0IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgdmFyIG5lZ2F0aXZlRGF0ZSA9IC02MjE5ODc1NTIwMDAwMDsKKyAgICB2YXIgbmVnYXRpdmVZZWFyU3RyaW5nID0gJy0wMDAwMDEnOworICAgIHZhciBoYXNOZWdhdGl2ZURhdGVCdWcgPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyAmJiBuZXcgRGF0ZShuZWdhdGl2ZURhdGUpLnRvSVNPU3RyaW5nKCkuaW5kZXhPZihuZWdhdGl2ZVllYXJTdHJpbmcpID09PSAtMTsKKyAgICB2YXIgaGFzU2FmYXJpNTFEYXRlQnVnID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcgJiYgbmV3IERhdGUoLTEpLnRvSVNPU3RyaW5nKCkgIT09ICcxOTY5LTEyLTMxVDIzOjU5OjU5Ljk5OVonOworCisgICAgdmFyIGdldFRpbWUgPSBjYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSk7CisKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKERhdGUucHJvdG90eXBlLCB7CisgICAgICAgIHRvSVNPU3RyaW5nOiBmdW5jdGlvbiB0b0lTT1N0cmluZygpIHsKKyAgICAgICAgICAgIGlmICghaXNGaW5pdGUodGhpcykgfHwgIWlzRmluaXRlKGdldFRpbWUodGhpcykpKSB7CisgICAgICAgICAgICAgICAgLy8gQWRvcGUgUGhvdG9zaG9wIHJlcXVpcmVzIHRoZSBzZWNvbmQgY2hlY2suCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0RhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nIGNhbGxlZCBvbiBub24tZmluaXRlIHZhbHVlLicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgeWVhciA9IG9yaWdpbmFsR2V0VVRDRnVsbFllYXIodGhpcyk7CisKKyAgICAgICAgICAgIHZhciBtb250aCA9IG9yaWdpbmFsR2V0VVRDTW9udGgodGhpcyk7CisgICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8xMTEKKyAgICAgICAgICAgIHllYXIgKz0gTWF0aC5mbG9vcihtb250aCAvIDEyKTsKKyAgICAgICAgICAgIG1vbnRoID0gKG1vbnRoICUgMTIgKyAxMikgJSAxMjsKKworICAgICAgICAgICAgLy8gdGhlIGRhdGUgdGltZSBzdHJpbmcgZm9ybWF0IGlzIHNwZWNpZmllZCBpbiAxNS45LjEuMTUuCisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW21vbnRoICsgMSwgb3JpZ2luYWxHZXRVVENEYXRlKHRoaXMpLCBvcmlnaW5hbEdldFVUQ0hvdXJzKHRoaXMpLCBvcmlnaW5hbEdldFVUQ01pbnV0ZXModGhpcyksIG9yaWdpbmFsR2V0VVRDU2Vjb25kcyh0aGlzKV07CisgICAgICAgICAgICB5ZWFyID0gKAorICAgICAgICAgICAgICAgICh5ZWFyIDwgMCA/ICctJyA6ICh5ZWFyID4gOTk5OSA/ICcrJyA6ICcnKSkgKworICAgICAgICAgICAgICAgIHN0clNsaWNlKCcwMDAwMCcgKyBNYXRoLmFicyh5ZWFyKSwgKDAgPD0geWVhciAmJiB5ZWFyIDw9IDk5OTkpID8gLTQgOiAtNikKKyAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgLy8gcGFkIG1vbnRocywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzIHRvIGhhdmUgdHdvIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBzdHJTbGljZSgnMDAnICsgcmVzdWx0W2ldLCAtMik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBwYWQgbWlsbGlzZWNvbmRzIHRvIGhhdmUgdGhyZWUgZGlnaXRzLgorICAgICAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgICAgICB5ZWFyICsgJy0nICsgYXJyYXlTbGljZShyZXN1bHQsIDAsIDIpLmpvaW4oJy0nKSArCisgICAgICAgICAgICAgICAgJ1QnICsgYXJyYXlTbGljZShyZXN1bHQsIDIpLmpvaW4oJzonKSArICcuJyArCisgICAgICAgICAgICAgICAgc3RyU2xpY2UoJzAwMCcgKyBvcmlnaW5hbEdldFVUQ01pbGxpc2Vjb25kcyh0aGlzKSwgLTMpICsgJ1onCisgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfSwgaGFzTmVnYXRpdmVEYXRlQnVnIHx8IGhhc1NhZmFyaTUxRGF0ZUJ1Zyk7CisKKyAgICAvLyBFUzUgMTUuOS41LjQ0CisgICAgLy8gaHR0cDovL2VzNS5naXRodWIuY29tLyN4MTUuOS41LjQ0CisgICAgLy8gVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIERhdGUgb2JqZWN0IGZvciB1c2UgYnkKKyAgICAvLyBKU09OLnN0cmluZ2lmeSAoMTUuMTIuMykuCisgICAgdmFyIGRhdGVUb0pTT05Jc1N1cHBvcnRlZCA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9KU09OICYmCisgICAgICAgICAgICAgICAgbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbCAmJgorICAgICAgICAgICAgICAgIG5ldyBEYXRlKG5lZ2F0aXZlRGF0ZSkudG9KU09OKCkuaW5kZXhPZihuZWdhdGl2ZVllYXJTdHJpbmcpICE9PSAtMSAmJgorICAgICAgICAgICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHsgLy8gZ2VuZXJpYworICAgICAgICAgICAgICAgICAgICB0b0lTT1N0cmluZzogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9KCkpOworICAgIGlmICghZGF0ZVRvSlNPTklzU3VwcG9ydGVkKSB7CisgICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTihrZXkpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gdGhlIHRvSlNPTiBtZXRob2QgaXMgY2FsbGVkIHdpdGggYXJndW1lbnQga2V5LCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAvLyBzdGVwcyBhcmUgdGFrZW46CisKKyAgICAgICAgICAgIC8vIDEuICBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3QsIGdpdmluZyBpdCB0aGUgdGhpcworICAgICAgICAgICAgLy8gdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgorICAgICAgICAgICAgLy8gMi4gTGV0IHR2IGJlIEVTLlRvUHJpbWl0aXZlKE8sIGhpbnQgTnVtYmVyKS4KKyAgICAgICAgICAgIHZhciBPID0gJE9iamVjdCh0aGlzKTsKKyAgICAgICAgICAgIHZhciB0diA9IEVTLlRvUHJpbWl0aXZlKE8pOworICAgICAgICAgICAgLy8gMy4gSWYgdHYgaXMgYSBOdW1iZXIgYW5kIGlzIG5vdCBmaW5pdGUsIHJldHVybiBudWxsLgorICAgICAgICAgICAgaWYgKHR5cGVvZiB0diA9PT0gJ251bWJlcicgJiYgIWlzRmluaXRlKHR2KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gNC4gTGV0IHRvSVNPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRdXSBpbnRlcm5hbCBtZXRob2Qgb2YKKyAgICAgICAgICAgIC8vIE8gd2l0aCBhcmd1bWVudCAidG9JU09TdHJpbmciLgorICAgICAgICAgICAgdmFyIHRvSVNPID0gTy50b0lTT1N0cmluZzsKKyAgICAgICAgICAgIC8vIDUuIElmIElzQ2FsbGFibGUodG9JU08pIGlzIGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgICAgICBpZiAoIWlzQ2FsbGFibGUodG9JU08pKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9JU09TdHJpbmcgcHJvcGVydHkgaXMgbm90IGNhbGxhYmxlJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyA2LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2Qgb2YKKyAgICAgICAgICAgIC8vICB0b0lTTyB3aXRoIE8gYXMgdGhlIHRoaXMgdmFsdWUgYW5kIGFuIGVtcHR5IGFyZ3VtZW50IGxpc3QuCisgICAgICAgICAgICByZXR1cm4gdG9JU08uY2FsbChPKTsKKworICAgICAgICAgICAgLy8gTk9URSAxIFRoZSBhcmd1bWVudCBpcyBpZ25vcmVkLgorCisgICAgICAgICAgICAvLyBOT1RFIDIgVGhlIHRvSlNPTiBmdW5jdGlvbiBpcyBpbnRlbnRpb25hbGx5IGdlbmVyaWM7IGl0IGRvZXMgbm90CisgICAgICAgICAgICAvLyByZXF1aXJlIHRoYXQgaXRzIHRoaXMgdmFsdWUgYmUgYSBEYXRlIG9iamVjdC4gVGhlcmVmb3JlLCBpdCBjYW4gYmUKKyAgICAgICAgICAgIC8vIHRyYW5zZmVycmVkIHRvIG90aGVyIGtpbmRzIG9mIG9iamVjdHMgZm9yIHVzZSBhcyBhIG1ldGhvZC4gSG93ZXZlciwKKyAgICAgICAgICAgIC8vIGl0IGRvZXMgcmVxdWlyZSB0aGF0IGFueSBzdWNoIG9iamVjdCBoYXZlIGEgdG9JU09TdHJpbmcgbWV0aG9kLiBBbgorICAgICAgICAgICAgLy8gb2JqZWN0IGlzIGZyZWUgdG8gdXNlIHRoZSBhcmd1bWVudCBrZXkgdG8gZmlsdGVyIGl0cworICAgICAgICAgICAgLy8gc3RyaW5naWZpY2F0aW9uLgorICAgICAgICB9OworICAgIH0KKworICAgIC8vIEVTNSAxNS45LjQuMgorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjkuNC4yCisgICAgLy8gYmFzZWQgb24gd29yayBzaGFyZWQgYnkgRGFuaWVsIEZyaWVzZW4gKGRhbnRtYW4pCisgICAgLy8gaHR0cDovL2dpc3QuZ2l0aHViLmNvbS8zMDMyNDkKKyAgICB2YXIgc3VwcG9ydHNFeHRlbmRlZFllYXJzID0gRGF0ZS5wYXJzZSgnKzAzMzY1OC0wOS0yN1QwMTo0Njo0MC4wMDBaJykgPT09IDFlMTU7CisgICAgdmFyIGFjY2VwdHNJbnZhbGlkRGF0ZXMgPSAhaXNOYU4oRGF0ZS5wYXJzZSgnMjAxMi0wNC0wNFQyNDowMDowMC41MDBaJykpIHx8ICFpc05hTihEYXRlLnBhcnNlKCcyMDEyLTExLTMxVDIzOjU5OjU5LjAwMFonKSkgfHwgIWlzTmFOKERhdGUucGFyc2UoJzIwMTItMTItMzFUMjM6NTk6NjAuMDAwWicpKTsKKyAgICB2YXIgZG9lc05vdFBhcnNlWTJLTmV3WWVhciA9IGlzTmFOKERhdGUucGFyc2UoJzIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWicpKTsKKyAgICBpZiAoZG9lc05vdFBhcnNlWTJLTmV3WWVhciB8fCBhY2NlcHRzSW52YWxpZERhdGVzIHx8ICFzdXBwb3J0c0V4dGVuZGVkWWVhcnMpIHsKKyAgICAgICAgLy8gWFhYIGdsb2JhbCBhc3NpZ25tZW50IHdvbid0IHdvcmsgaW4gZW1iZWRkaW5ncyB0aGF0IHVzZQorICAgICAgICAvLyBhbiBhbHRlcm5hdGUgb2JqZWN0IGZvciB0aGUgY29udGV4dC4KKyAgICAgICAgLyogZ2xvYmFsIERhdGU6IHRydWUgKi8KKyAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi8KKyAgICAgICAgdmFyIG1heFNhZmVVbnNpZ25lZDMyQml0ID0gTWF0aC5wb3coMiwgMzEpIC0gMTsKKyAgICAgICAgdmFyIGhhc1NhZmFyaVNpZ25lZEludEJ1ZyA9IGlzQWN0dWFsTmFOKG5ldyBEYXRlKDE5NzAsIDAsIDEsIDAsIDAsIDAsIG1heFNhZmVVbnNpZ25lZDMyQml0ICsgMSkuZ2V0VGltZSgpKTsKKyAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8taW1wbGljaXQtZ2xvYmFscyAqLworICAgICAgICBEYXRlID0gKGZ1bmN0aW9uIChOYXRpdmVEYXRlKSB7CisgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8taW1wbGljaXQtZ2xvYmFscyAqLworICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVmICovCisgICAgICAgICAgICAvLyBEYXRlLmxlbmd0aCA9PT0gNworICAgICAgICAgICAgdmFyIERhdGVTaGltID0gZnVuY3Rpb24gRGF0ZShZLCBNLCBELCBoLCBtLCBzLCBtcykgeworICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOworICAgICAgICAgICAgICAgIHZhciBkYXRlOworICAgICAgICAgICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgTmF0aXZlRGF0ZSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc2Vjb25kcyA9IHM7CisgICAgICAgICAgICAgICAgICAgIHZhciBtaWxsaXMgPSBtczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1NhZmFyaVNpZ25lZEludEJ1ZyAmJiBsZW5ndGggPj0gNyAmJiBtcyA+IG1heFNhZmVVbnNpZ25lZDMyQml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3b3JrIGFyb3VuZCBhIFNhZmFyaSA4LzkgYnVnIHdoZXJlIGl0IHRyZWF0cyB0aGUgc2Vjb25kcyBhcyBzaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtc1RvU2hpZnQgPSBNYXRoLmZsb29yKG1zIC8gbWF4U2FmZVVuc2lnbmVkMzJCaXQpICogbWF4U2FmZVVuc2lnbmVkMzJCaXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc1RvU2hpZnQgPSBNYXRoLmZsb29yKG1zVG9TaGlmdCAvIDFlMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzICs9IHNUb1NoaWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzIC09IHNUb1NoaWZ0ICogMWUzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRhdGUgPSBsZW5ndGggPT09IDEgJiYgJFN0cmluZyhZKSA9PT0gWSA/IC8vIGlzU3RyaW5nKFkpCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBleHBsaWNpdGx5IHBhc3MgaXQgdGhyb3VnaCBwYXJzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBOYXRpdmVEYXRlKERhdGVTaGltLnBhcnNlKFkpKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIG1hbnVhbGx5IG1ha2UgY2FsbHMgZGVwZW5kaW5nIG9uIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZW5ndGggaGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID49IDcgPyBuZXcgTmF0aXZlRGF0ZShZLCBNLCBELCBoLCBtLCBzZWNvbmRzLCBtaWxsaXMpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA+PSA2ID8gbmV3IE5hdGl2ZURhdGUoWSwgTSwgRCwgaCwgbSwgc2Vjb25kcykgOgorICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID49IDUgPyBuZXcgTmF0aXZlRGF0ZShZLCBNLCBELCBoLCBtKSA6CisgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPj0gNCA/IG5ldyBOYXRpdmVEYXRlKFksIE0sIEQsIGgpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA+PSAzID8gbmV3IE5hdGl2ZURhdGUoWSwgTSwgRCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID49IDIgPyBuZXcgTmF0aXZlRGF0ZShZLCBNKSA6CisgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPj0gMSA/IG5ldyBOYXRpdmVEYXRlKFkgaW5zdGFuY2VvZiBOYXRpdmVEYXRlID8gK1kgOiBZKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBOYXRpdmVEYXRlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IE5hdGl2ZURhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFpc1ByaW1pdGl2ZShkYXRlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG1peHVwcyB3aXRoIHVuZml4ZWQgRGF0ZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydGllcyhkYXRlLCB7IGNvbnN0cnVjdG9yOiBEYXRlU2hpbSB9LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvLyAxNS45LjEuMTUgRGF0ZSBUaW1lIFN0cmluZyBGb3JtYXQuCisgICAgICAgICAgICB2YXIgaXNvRGF0ZUV4cHJlc3Npb24gPSBuZXcgUmVnRXhwKCdeJyArCisgICAgICAgICAgICAgICAgJyhcXGR7NH18WystXVxcZHs2fSknICsgLy8gZm91ci1kaWdpdCB5ZWFyIGNhcHR1cmUgb3Igc2lnbiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA2LWRpZ2l0IGV4dGVuZGVkIHllYXIKKyAgICAgICAgICAgICAgICAnKD86LShcXGR7Mn0pJyArIC8vIG9wdGlvbmFsIG1vbnRoIGNhcHR1cmUKKyAgICAgICAgICAgICAgICAnKD86LShcXGR7Mn0pJyArIC8vIG9wdGlvbmFsIGRheSBjYXB0dXJlCisgICAgICAgICAgICAgICAgJyg/OicgKyAvLyBjYXB0dXJlIGhvdXJzOm1pbnV0ZXM6c2Vjb25kcy5taWxsaXNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgJ1QoXFxkezJ9KScgKyAvLyBob3VycyBjYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICc6KFxcZHsyfSknICsgLy8gbWludXRlcyBjYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICcoPzonICsgLy8gb3B0aW9uYWwgOnNlY29uZHMubWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAgICAgICAgICAnOihcXGR7Mn0pJyArIC8vIHNlY29uZHMgY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgJyg/OihcXC5cXGR7MSx9KSk/JyArIC8vIG1pbGxpc2Vjb25kcyBjYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICcpPycgKworICAgICAgICAgICAgICAgICcoJyArIC8vIGNhcHR1cmUgVVRDIG9mZnNldCBjb21wb25lbnQKKyAgICAgICAgICAgICAgICAgICAgJ1p8JyArIC8vIFVUQyBjYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICcoPzonICsgLy8gb2Zmc2V0IHNwZWNpZmllciArLy1ob3VyczptaW51dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAnKFstK10pJyArIC8vIHNpZ24gY2FwdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgJyhcXGR7Mn0pJyArIC8vIGhvdXJzIG9mZnNldCBjYXB0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAnOihcXGR7Mn0pJyArIC8vIG1pbnV0ZXMgb2Zmc2V0IGNhcHR1cmUKKyAgICAgICAgICAgICAgICAgICAgJyknICsKKyAgICAgICAgICAgICAgICAnKT8pPyk/KT8nICsKKyAgICAgICAgICAgICckJyk7CisKKyAgICAgICAgICAgIHZhciBtb250aHMgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzQsIDM2NV07CisKKyAgICAgICAgICAgIHZhciBkYXlGcm9tTW9udGggPSBmdW5jdGlvbiBkYXlGcm9tTW9udGgoeWVhciwgbW9udGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgdCA9IG1vbnRoID4gMSA/IDEgOiAwOworICAgICAgICAgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICAgICAgICAgIG1vbnRoc1ttb250aF0gKworICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMTk2OSArIHQpIC8gNCkgLQorICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMTkwMSArIHQpIC8gMTAwKSArCisgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoKHllYXIgLSAxNjAxICsgdCkgLyA0MDApICsKKyAgICAgICAgICAgICAgICAgICAgMzY1ICogKHllYXIgLSAxOTcwKQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB2YXIgdG9VVEMgPSBmdW5jdGlvbiB0b1VUQyh0KSB7CisgICAgICAgICAgICAgICAgdmFyIHMgPSAwOworICAgICAgICAgICAgICAgIHZhciBtcyA9IHQ7CisgICAgICAgICAgICAgICAgaWYgKGhhc1NhZmFyaVNpZ25lZEludEJ1ZyAmJiBtcyA+IG1heFNhZmVVbnNpZ25lZDMyQml0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHdvcmsgYXJvdW5kIGEgU2FmYXJpIDgvOSBidWcgd2hlcmUgaXQgdHJlYXRzIHRoZSBzZWNvbmRzIGFzIHNpZ25lZAorICAgICAgICAgICAgICAgICAgICB2YXIgbXNUb1NoaWZ0ID0gTWF0aC5mbG9vcihtcyAvIG1heFNhZmVVbnNpZ25lZDMyQml0KSAqIG1heFNhZmVVbnNpZ25lZDMyQml0OworICAgICAgICAgICAgICAgICAgICB2YXIgc1RvU2hpZnQgPSBNYXRoLmZsb29yKG1zVG9TaGlmdCAvIDFlMyk7CisgICAgICAgICAgICAgICAgICAgIHMgKz0gc1RvU2hpZnQ7CisgICAgICAgICAgICAgICAgICAgIG1zIC09IHNUb1NoaWZ0ICogMWUzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gJE51bWJlcihuZXcgTmF0aXZlRGF0ZSgxOTcwLCAwLCAxLCAwLCAwLCBzLCBtcykpOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8gQ29weSBhbnkgY3VzdG9tIG1ldGhvZHMgYSAzcmQgcGFydHkgbGlicmFyeSBtYXkgaGF2ZSBhZGRlZAorICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIE5hdGl2ZURhdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAob3ducyhOYXRpdmVEYXRlLCBrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIERhdGVTaGltW2tleV0gPSBOYXRpdmVEYXRlW2tleV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDb3B5ICJuYXRpdmUiIG1ldGhvZHMgZXhwbGljaXRseTsgdGhleSBtYXkgYmUgbm9uLWVudW1lcmFibGUKKyAgICAgICAgICAgIGRlZmluZVByb3BlcnRpZXMoRGF0ZVNoaW0sIHsKKyAgICAgICAgICAgICAgICBub3c6IE5hdGl2ZURhdGUubm93LAorICAgICAgICAgICAgICAgIFVUQzogTmF0aXZlRGF0ZS5VVEMKKyAgICAgICAgICAgIH0sIHRydWUpOworICAgICAgICAgICAgRGF0ZVNoaW0ucHJvdG90eXBlID0gTmF0aXZlRGF0ZS5wcm90b3R5cGU7CisgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKERhdGVTaGltLnByb3RvdHlwZSwgeworICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOiBEYXRlU2hpbQorICAgICAgICAgICAgfSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIFVwZ3JhZGUgRGF0ZS5wYXJzZSB0byBoYW5kbGUgc2ltcGxpZmllZCBJU08gODYwMSBzdHJpbmdzCisgICAgICAgICAgICB2YXIgcGFyc2VTaGltID0gZnVuY3Rpb24gcGFyc2Uoc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gaXNvRGF0ZUV4cHJlc3Npb24uZXhlYyhzdHJpbmcpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZSBtb250aHMsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBhbmQgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAgICAgIC8vIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlIHRoZSBVVEMgb2Zmc2V0IGNvbXBvbmVudAorICAgICAgICAgICAgICAgICAgICB2YXIgeWVhciA9ICROdW1iZXIobWF0Y2hbMV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9udGggPSAkTnVtYmVyKG1hdGNoWzJdIHx8IDEpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRheSA9ICROdW1iZXIobWF0Y2hbM10gfHwgMSkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgaG91ciA9ICROdW1iZXIobWF0Y2hbNF0gfHwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGUgPSAkTnVtYmVyKG1hdGNoWzVdIHx8IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kID0gJE51bWJlcihtYXRjaFs2XSB8fCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kID0gTWF0aC5mbG9vcigkTnVtYmVyKG1hdGNoWzddIHx8IDApICogMTAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRpbWUgem9uZSBpcyBtaXNzZWQsIGxvY2FsIG9mZnNldCBzaG91bGQgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gKEVTIDUuMSBidWcpCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9idWdzLmVjbWFzY3JpcHQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9jYWxUaW1lID0gQm9vbGVhbihtYXRjaFs0XSAmJiAhbWF0Y2hbOF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgc2lnbk9mZnNldCA9IG1hdGNoWzldID09PSAnLScgPyAxIDogLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBob3VyT2Zmc2V0ID0gJE51bWJlcihtYXRjaFsxMF0gfHwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVPZmZzZXQgPSAkTnVtYmVyKG1hdGNoWzExXSB8fCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhc01pbnV0ZXNPclNlY29uZHNPck1pbGxpc2Vjb25kcyA9IG1pbnV0ZSA+IDAgfHwgc2Vjb25kID4gMCB8fCBtaWxsaXNlY29uZCA+IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIgPCAoaGFzTWludXRlc09yU2Vjb25kc09yTWlsbGlzZWNvbmRzID8gMjQgOiAyNSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZSA8IDYwICYmIHNlY29uZCA8IDYwICYmIG1pbGxpc2Vjb25kIDwgMTAwMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbW9udGggPiAtMSAmJiBtb250aCA8IDEyICYmIGhvdXJPZmZzZXQgPCAyNCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlT2Zmc2V0IDwgNjAgJiYgLy8gZGV0ZWN0IGludmFsaWQgb2Zmc2V0cworICAgICAgICAgICAgICAgICAgICAgICAgZGF5ID4gLTEgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGRheSA8IChkYXlGcm9tTW9udGgoeWVhciwgbW9udGggKyAxKSAtIGRheUZyb21Nb250aCh5ZWFyLCBtb250aCkpCisgICAgICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXlGcm9tTW9udGgoeWVhciwgbW9udGgpICsgZGF5KSAqIDI0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyT2Zmc2V0ICogc2lnbk9mZnNldAorICAgICAgICAgICAgICAgICAgICAgICAgKSAqIDYwOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQgKyBtaW51dGUgKyBtaW51dGVPZmZzZXQgKiBzaWduT2Zmc2V0KSAqIDYwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxMDAwICsgbWlsbGlzZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMb2NhbFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0b1VUQyhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC04LjY0ZTE1IDw9IHJlc3VsdCAmJiByZXN1bHQgPD0gOC42NGUxNSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5hdGl2ZURhdGUucGFyc2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKERhdGVTaGltLCB7IHBhcnNlOiBwYXJzZVNoaW0gfSk7CisKKyAgICAgICAgICAgIHJldHVybiBEYXRlU2hpbTsKKyAgICAgICAgfShEYXRlKSk7CisgICAgICAgIC8qIGdsb2JhbCBEYXRlOiBmYWxzZSAqLworICAgIH0KKworICAgIC8vIEVTNSAxNS45LjQuNAorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjkuNC40CisgICAgaWYgKCFEYXRlLm5vdykgeworICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uIG5vdygpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE51bWJlcgorICAgIC8vID09PT09PQorICAgIC8vCisKKyAgICAvLyBFUzUuMSAxNS43LjQuNQorICAgIC8vIGh0dHA6Ly9lczUuZ2l0aHViLmNvbS8jeDE1LjcuNC41CisgICAgdmFyIGhhc1RvRml4ZWRCdWdzID0gTnVtYmVyUHJvdG90eXBlLnRvRml4ZWQgJiYgKAorICAgICAgKDAuMDAwMDgpLnRvRml4ZWQoMykgIT09ICcwLjAwMCcgfHwKKyAgICAgICgwLjkpLnRvRml4ZWQoMCkgIT09ICcxJyB8fAorICAgICAgKDEuMjU1KS50b0ZpeGVkKDIpICE9PSAnMS4yNScgfHwKKyAgICAgICgxMDAwMDAwMDAwMDAwMDAwMTI4KS50b0ZpeGVkKDApICE9PSAnMTAwMDAwMDAwMDAwMDAwMDEyOCcKKyAgICApOworCisgICAgdmFyIHRvRml4ZWRIZWxwZXJzID0geworICAgICAgICBiYXNlOiAxZTcsCisgICAgICAgIHNpemU6IDYsCisgICAgICAgIGRhdGE6IFswLCAwLCAwLCAwLCAwLCAwXSwKKyAgICAgICAgbXVsdGlwbHk6IGZ1bmN0aW9uIG11bHRpcGx5KG4sIGMpIHsKKyAgICAgICAgICAgIHZhciBpID0gLTE7CisgICAgICAgICAgICB2YXIgYzIgPSBjOworICAgICAgICAgICAgd2hpbGUgKCsraSA8IHRvRml4ZWRIZWxwZXJzLnNpemUpIHsKKyAgICAgICAgICAgICAgICBjMiArPSBuICogdG9GaXhlZEhlbHBlcnMuZGF0YVtpXTsKKyAgICAgICAgICAgICAgICB0b0ZpeGVkSGVscGVycy5kYXRhW2ldID0gYzIgJSB0b0ZpeGVkSGVscGVycy5iYXNlOworICAgICAgICAgICAgICAgIGMyID0gTWF0aC5mbG9vcihjMiAvIHRvRml4ZWRIZWxwZXJzLmJhc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBkaXZpZGU6IGZ1bmN0aW9uIGRpdmlkZShuKSB7CisgICAgICAgICAgICB2YXIgaSA9IHRvRml4ZWRIZWxwZXJzLnNpemU7CisgICAgICAgICAgICB2YXIgYyA9IDA7CisgICAgICAgICAgICB3aGlsZSAoLS1pID49IDApIHsKKyAgICAgICAgICAgICAgICBjICs9IHRvRml4ZWRIZWxwZXJzLmRhdGFbaV07CisgICAgICAgICAgICAgICAgdG9GaXhlZEhlbHBlcnMuZGF0YVtpXSA9IE1hdGguZmxvb3IoYyAvIG4pOworICAgICAgICAgICAgICAgIGMgPSAoYyAlIG4pICogdG9GaXhlZEhlbHBlcnMuYmFzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbnVtVG9TdHJpbmc6IGZ1bmN0aW9uIG51bVRvU3RyaW5nKCkgeworICAgICAgICAgICAgdmFyIGkgPSB0b0ZpeGVkSGVscGVycy5zaXplOworICAgICAgICAgICAgdmFyIHMgPSAnJzsKKyAgICAgICAgICAgIHdoaWxlICgtLWkgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChzICE9PSAnJyB8fCBpID09PSAwIHx8IHRvRml4ZWRIZWxwZXJzLmRhdGFbaV0gIT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSAkU3RyaW5nKHRvRml4ZWRIZWxwZXJzLmRhdGFbaV0pOworICAgICAgICAgICAgICAgICAgICBpZiAocyA9PT0gJycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcyArPSBzdHJTbGljZSgnMDAwMDAwMCcsIDAsIDcgLSB0Lmxlbmd0aCkgKyB0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0sCisgICAgICAgIHBvdzogZnVuY3Rpb24gcG93KHgsIG4sIGFjYykgeworICAgICAgICAgICAgcmV0dXJuIChuID09PSAwID8gYWNjIDogKG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYykpKTsKKyAgICAgICAgfSwKKyAgICAgICAgbG9nOiBmdW5jdGlvbiBsb2coeCkgeworICAgICAgICAgICAgdmFyIG4gPSAwOworICAgICAgICAgICAgdmFyIHgyID0geDsKKyAgICAgICAgICAgIHdoaWxlICh4MiA+PSA0MDk2KSB7CisgICAgICAgICAgICAgICAgbiArPSAxMjsKKyAgICAgICAgICAgICAgICB4MiAvPSA0MDk2OworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHgyID49IDIpIHsKKyAgICAgICAgICAgICAgICBuICs9IDE7CisgICAgICAgICAgICAgICAgeDIgLz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICB9CisgICAgfTsKKworICAgIHZhciB0b0ZpeGVkU2hpbSA9IGZ1bmN0aW9uIHRvRml4ZWQoZnJhY3Rpb25EaWdpdHMpIHsKKyAgICAgICAgdmFyIGYsIHgsIHMsIG0sIGUsIHosIGosIGs7CisKKyAgICAgICAgLy8gVGVzdCBmb3IgTmFOIGFuZCByb3VuZCBmcmFjdGlvbkRpZ2l0cyBkb3duCisgICAgICAgIGYgPSAkTnVtYmVyKGZyYWN0aW9uRGlnaXRzKTsKKyAgICAgICAgZiA9IGlzQWN0dWFsTmFOKGYpID8gMCA6IE1hdGguZmxvb3IoZik7CisKKyAgICAgICAgaWYgKGYgPCAwIHx8IGYgPiAyMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ051bWJlci50b0ZpeGVkIGNhbGxlZCB3aXRoIGludmFsaWQgbnVtYmVyIG9mIGRlY2ltYWxzJyk7CisgICAgICAgIH0KKworICAgICAgICB4ID0gJE51bWJlcih0aGlzKTsKKworICAgICAgICBpZiAoaXNBY3R1YWxOYU4oeCkpIHsKKyAgICAgICAgICAgIHJldHVybiAnTmFOJzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIGl0IGlzIHRvbyBiaWcgb3Igc21hbGwsIHJldHVybiB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBudW1iZXIKKyAgICAgICAgaWYgKHggPD0gLTFlMjEgfHwgeCA+PSAxZTIxKSB7CisgICAgICAgICAgICByZXR1cm4gJFN0cmluZyh4KTsKKyAgICAgICAgfQorCisgICAgICAgIHMgPSAnJzsKKworICAgICAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgICAgIHMgPSAnLSc7CisgICAgICAgICAgICB4ID0gLXg7CisgICAgICAgIH0KKworICAgICAgICBtID0gJzAnOworCisgICAgICAgIGlmICh4ID4gMWUtMjEpIHsKKyAgICAgICAgICAgIC8vIDFlLTIxIDwgeCA8IDFlMjEKKyAgICAgICAgICAgIC8vIC03MCA8IGxvZzIoeCkgPCA3MAorICAgICAgICAgICAgZSA9IHRvRml4ZWRIZWxwZXJzLmxvZyh4ICogdG9GaXhlZEhlbHBlcnMucG93KDIsIDY5LCAxKSkgLSA2OTsKKyAgICAgICAgICAgIHogPSAoZSA8IDAgPyB4ICogdG9GaXhlZEhlbHBlcnMucG93KDIsIC1lLCAxKSA6IHggLyB0b0ZpeGVkSGVscGVycy5wb3coMiwgZSwgMSkpOworICAgICAgICAgICAgeiAqPSAweDEwMDAwMDAwMDAwMDAwOyAvLyBNYXRoLnBvdygyLCA1Mik7CisgICAgICAgICAgICBlID0gNTIgLSBlOworCisgICAgICAgICAgICAvLyAtMTggPCBlIDwgMTIyCisgICAgICAgICAgICAvLyB4ID0geiAvIDIgXiBlCisgICAgICAgICAgICBpZiAoZSA+IDApIHsKKyAgICAgICAgICAgICAgICB0b0ZpeGVkSGVscGVycy5tdWx0aXBseSgwLCB6KTsKKyAgICAgICAgICAgICAgICBqID0gZjsKKworICAgICAgICAgICAgICAgIHdoaWxlIChqID49IDcpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9GaXhlZEhlbHBlcnMubXVsdGlwbHkoMWU3LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaiAtPSA3OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRvRml4ZWRIZWxwZXJzLm11bHRpcGx5KHRvRml4ZWRIZWxwZXJzLnBvdygxMCwgaiwgMSksIDApOworICAgICAgICAgICAgICAgIGogPSBlIC0gMTsKKworICAgICAgICAgICAgICAgIHdoaWxlIChqID49IDIzKSB7CisgICAgICAgICAgICAgICAgICAgIHRvRml4ZWRIZWxwZXJzLmRpdmlkZSgxIDw8IDIzKTsKKyAgICAgICAgICAgICAgICAgICAgaiAtPSAyMzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0b0ZpeGVkSGVscGVycy5kaXZpZGUoMSA8PCBqKTsKKyAgICAgICAgICAgICAgICB0b0ZpeGVkSGVscGVycy5tdWx0aXBseSgxLCAxKTsKKyAgICAgICAgICAgICAgICB0b0ZpeGVkSGVscGVycy5kaXZpZGUoMik7CisgICAgICAgICAgICAgICAgbSA9IHRvRml4ZWRIZWxwZXJzLm51bVRvU3RyaW5nKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRvRml4ZWRIZWxwZXJzLm11bHRpcGx5KDAsIHopOworICAgICAgICAgICAgICAgIHRvRml4ZWRIZWxwZXJzLm11bHRpcGx5KDEgPDwgKC1lKSwgMCk7CisgICAgICAgICAgICAgICAgbSA9IHRvRml4ZWRIZWxwZXJzLm51bVRvU3RyaW5nKCkgKyBzdHJTbGljZSgnMC4wMDAwMDAwMDAwMDAwMDAwMDAwMCcsIDIsIDIgKyBmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmID4gMCkgeworICAgICAgICAgICAgayA9IG0ubGVuZ3RoOworCisgICAgICAgICAgICBpZiAoayA8PSBmKSB7CisgICAgICAgICAgICAgICAgbSA9IHMgKyBzdHJTbGljZSgnMC4wMDAwMDAwMDAwMDAwMDAwMDAwJywgMCwgZiAtIGsgKyAyKSArIG07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG0gPSBzICsgc3RyU2xpY2UobSwgMCwgayAtIGYpICsgJy4nICsgc3RyU2xpY2UobSwgayAtIGYpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbSA9IHMgKyBtOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG07CisgICAgfTsKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKE51bWJlclByb3RvdHlwZSwgeyB0b0ZpeGVkOiB0b0ZpeGVkU2hpbSB9LCBoYXNUb0ZpeGVkQnVncyk7CisKKyAgICB2YXIgaGFzVG9QcmVjaXNpb25VbmRlZmluZWRCdWcgPSAoZnVuY3Rpb24gKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIDEuMC50b1ByZWNpc2lvbih1bmRlZmluZWQpID09PSAnMSc7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSgpKTsKKyAgICB2YXIgb3JpZ2luYWxUb1ByZWNpc2lvbiA9IE51bWJlclByb3RvdHlwZS50b1ByZWNpc2lvbjsKKyAgICBkZWZpbmVQcm9wZXJ0aWVzKE51bWJlclByb3RvdHlwZSwgeworICAgICAgICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24ocHJlY2lzaW9uKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHByZWNpc2lvbiA9PT0gJ3VuZGVmaW5lZCcgPyBvcmlnaW5hbFRvUHJlY2lzaW9uLmNhbGwodGhpcykgOiBvcmlnaW5hbFRvUHJlY2lzaW9uLmNhbGwodGhpcywgcHJlY2lzaW9uKTsKKyAgICAgICAgfQorICAgIH0sIGhhc1RvUHJlY2lzaW9uVW5kZWZpbmVkQnVnKTsKKworICAgIC8vCisgICAgLy8gU3RyaW5nCisgICAgLy8gPT09PT09CisgICAgLy8KKworICAgIC8vIEVTNSAxNS41LjQuMTQKKyAgICAvLyBodHRwOi8vZXM1LmdpdGh1Yi5jb20vI3gxNS41LjQuMTQKKworICAgIC8vIFtidWdmaXgsIElFIGx0IDksIGZpcmVmb3ggNCwgS29ucXVlcm9yLCBPcGVyYSwgb2JzY3VyZSBicm93c2Vyc10KKyAgICAvLyBNYW55IGJyb3dzZXJzIGRvIG5vdCBzcGxpdCBwcm9wZXJseSB3aXRoIHJlZ3VsYXIgZXhwcmVzc2lvbnMgb3IgdGhleQorICAgIC8vIGRvIG5vdCBwZXJmb3JtIHRoZSBzcGxpdCBjb3JyZWN0bHkgdW5kZXIgb2JzY3VyZSBjb25kaXRpb25zLgorICAgIC8vIFNlZSBodHRwOi8vYmxvZy5zdGV2ZW5sZXZpdGhhbi5jb20vYXJjaGl2ZXMvY3Jvc3MtYnJvd3Nlci1zcGxpdAorICAgIC8vIEkndmUgdGVzdGVkIGluIG1hbnkgYnJvd3NlcnMgYW5kIHRoaXMgc2VlbXMgdG8gY292ZXIgdGhlIGRldmlhbnQgb25lczoKKyAgICAvLyAgICAnYWInLnNwbGl0KC8oPzphYikqLykgc2hvdWxkIGJlIFsiIiwgIiJdLCBub3QgWyIiXQorICAgIC8vICAgICcuJy5zcGxpdCgvKC4/KSguPykvKSBzaG91bGQgYmUgWyIiLCAiLiIsICIiLCAiIl0sIG5vdCBbIiIsICIiXQorICAgIC8vICAgICd0ZXNzdCcuc3BsaXQoLyhzKSovKSBzaG91bGQgYmUgWyJ0IiwgdW5kZWZpbmVkLCAiZSIsICJzIiwgInQiXSwgbm90CisgICAgLy8gICAgICAgW3VuZGVmaW5lZCwgInQiLCB1bmRlZmluZWQsICJlIiwgLi4uXQorICAgIC8vICAgICcnLnNwbGl0KC8uPy8pIHNob3VsZCBiZSBbXSwgbm90IFsiIl0KKyAgICAvLyAgICAnLicuc3BsaXQoLygpKCkvKSBzaG91bGQgYmUgWyIuIl0sIG5vdCBbIiIsICIiLCAiLiJdCisKKyAgICBpZiAoCisgICAgICAgICdhYicuc3BsaXQoLyg/OmFiKSovKS5sZW5ndGggIT09IDIgfHwKKyAgICAgICAgJy4nLnNwbGl0KC8oLj8pKC4/KS8pLmxlbmd0aCAhPT0gNCB8fAorICAgICAgICAndGVzc3QnLnNwbGl0KC8ocykqLylbMV0gPT09ICd0JyB8fAorICAgICAgICAndGVzdCcuc3BsaXQoLyg/OikvLCAtMSkubGVuZ3RoICE9PSA0IHx8CisgICAgICAgICcnLnNwbGl0KC8uPy8pLmxlbmd0aCB8fAorICAgICAgICAnLicuc3BsaXQoLygpKCkvKS5sZW5ndGggPiAxCisgICAgKSB7CisgICAgICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgY29tcGxpYW50RXhlY05wY2cgPSB0eXBlb2YgKC8oKT8/LykuZXhlYygnJylbMV0gPT09ICd1bmRlZmluZWQnOyAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cAorICAgICAgICAgICAgdmFyIG1heFNhZmUzMkJpdEludCA9IE1hdGgucG93KDIsIDMyKSAtIDE7CisKKyAgICAgICAgICAgIFN0cmluZ1Byb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7CisgICAgICAgICAgICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNlcGFyYXRvciA9PT0gJ3VuZGVmaW5lZCcgJiYgbGltaXQgPT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0CisgICAgICAgICAgICAgICAgaWYgKCFpc1JlZ2V4KHNlcGFyYXRvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0clNwbGl0KHRoaXMsIHNlcGFyYXRvciwgbGltaXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBbXTsKKyAgICAgICAgICAgICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3IubXVsdGlsaW5lID8gJ20nIDogJycpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnVuaWNvZGUgPyAndScgOiAnJykgKyAvLyBpbiBFUzYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnN0aWNreSA/ICd5JyA6ICcnKSwgLy8gRmlyZWZveCAzKyBhbmQgRVM2CisgICAgICAgICAgICAgICAgICAgIGxhc3RMYXN0SW5kZXggPSAwLAorICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weQorICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3IyLCBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoOworICAgICAgICAgICAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7CisgICAgICAgICAgICAgICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykgeworICAgICAgICAgICAgICAgICAgICAvLyBEb2Vzbid0IG5lZWQgZmxhZ3MgZ3ksIGJ1dCB0aGV5IGRvbid0IGh1cnQKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yMiA9IG5ldyBSZWdFeHAoJ14nICsgc2VwYXJhdG9yQ29weS5zb3VyY2UgKyAnJCg/IVxccyknLCBmbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIFZhbHVlcyBmb3IgYGxpbWl0YCwgcGVyIHRoZSBzcGVjOgorICAgICAgICAgICAgICAgICAqIElmIHVuZGVmaW5lZDogNDI5NDk2NzI5NSAvLyBtYXhTYWZlMzJCaXRJbnQKKyAgICAgICAgICAgICAgICAgKiBJZiAwLCBJbmZpbml0eSwgb3IgTmFOOiAwCisgICAgICAgICAgICAgICAgICogSWYgcG9zaXRpdmUgbnVtYmVyOiBsaW1pdCA9IE1hdGguZmxvb3IobGltaXQpOyBpZiAobGltaXQgPiA0Mjk0OTY3Mjk1KSBsaW1pdCAtPSA0Mjk0OTY3Mjk2OworICAgICAgICAgICAgICAgICAqIElmIG5lZ2F0aXZlIG51bWJlcjogNDI5NDk2NzI5NiAtIE1hdGguZmxvb3IoTWF0aC5hYnMobGltaXQpKQorICAgICAgICAgICAgICAgICAqIElmIG90aGVyOiBUeXBlLWNvbnZlcnQsIHRoZW4gdXNlIHRoZSBhYm92ZSBydWxlcworICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHZhciBzcGxpdExpbWl0ID0gdHlwZW9mIGxpbWl0ID09PSAndW5kZWZpbmVkJyA/IG1heFNhZmUzMkJpdEludCA6IEVTLlRvVWludDMyKGxpbWl0KTsKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHNlcGFyYXRvckNvcHkuZXhlYyhzdHJpbmcpOworICAgICAgICAgICAgICAgIHdoaWxlIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAvLyBgc2VwYXJhdG9yQ29weS5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyCisgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaENhbGwob3V0cHV0LCBzdHJTbGljZShzdHJpbmcsIGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZyAmJiBtYXRjaC5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMF0ucmVwbGFjZShzZXBhcmF0b3IyLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbaV0gPSB2b2lkIDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHJpbmcubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaC5hcHBseShvdXRwdXQsIGFycmF5U2xpY2UobWF0Y2gsIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gc3BsaXRMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHNlcGFyYXRvckNvcHkuZXhlYyhzdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyaW5nLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yQ29weS50ZXN0KCcnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaENhbGwob3V0cHV0LCAnJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoQ2FsbChvdXRwdXQsIHN0clNsaWNlKHN0cmluZywgbGFzdExhc3RJbmRleCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IHNwbGl0TGltaXQgPyBhcnJheVNsaWNlKG91dHB1dCwgMCwgc3BsaXRMaW1pdCkgOiBvdXRwdXQ7CisgICAgICAgICAgICB9OworICAgICAgICB9KCkpOworCisgICAgLy8gW2J1Z2ZpeCwgY2hyb21lXQorICAgIC8vIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIHJlc3VsdCBhcnJheSBjb250YWlucyBqdXN0IG9uZSBTdHJpbmcsCisgICAgLy8gd2hpY2ggaXMgdGhlIHRoaXMgdmFsdWUgKGNvbnZlcnRlZCB0byBhIFN0cmluZykuIElmIGxpbWl0IGlzIG5vdCB1bmRlZmluZWQsCisgICAgLy8gdGhlbiB0aGUgb3V0cHV0IGFycmF5IGlzIHRydW5jYXRlZCBzbyB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgdGhhbiBsaW1pdAorICAgIC8vIGVsZW1lbnRzLgorICAgIC8vICIwIi5zcGxpdCh1bmRlZmluZWQsIDApIC0+IFtdCisgICAgfSBlbHNlIGlmICgnMCcuc3BsaXQodm9pZCAwLCAwKS5sZW5ndGgpIHsKKyAgICAgICAgU3RyaW5nUHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBzZXBhcmF0b3IgPT09ICd1bmRlZmluZWQnICYmIGxpbWl0ID09PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN0clNwbGl0KHRoaXMsIHNlcGFyYXRvciwgbGltaXQpOworICAgICAgICB9OworICAgIH0KKworICAgIHZhciBzdHJfcmVwbGFjZSA9IFN0cmluZ1Byb3RvdHlwZS5yZXBsYWNlOworICAgIHZhciByZXBsYWNlUmVwb3J0c0dyb3Vwc0NvcnJlY3RseSA9IChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBncm91cHMgPSBbXTsKKyAgICAgICAgJ3gnLnJlcGxhY2UoL3goLik/L2csIGZ1bmN0aW9uIChtYXRjaCwgZ3JvdXApIHsKKyAgICAgICAgICAgIHB1c2hDYWxsKGdyb3VwcywgZ3JvdXApOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGdyb3Vwcy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGdyb3Vwc1swXSA9PT0gJ3VuZGVmaW5lZCc7CisgICAgfSgpKTsKKworICAgIGlmICghcmVwbGFjZVJlcG9ydHNHcm91cHNDb3JyZWN0bHkpIHsKKyAgICAgICAgU3RyaW5nUHJvdG90eXBlLnJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHsKKyAgICAgICAgICAgIHZhciBpc0ZuID0gaXNDYWxsYWJsZShyZXBsYWNlVmFsdWUpOworICAgICAgICAgICAgdmFyIGhhc0NhcHR1cmluZ0dyb3VwcyA9IGlzUmVnZXgoc2VhcmNoVmFsdWUpICYmICgvXClbKj9dLykudGVzdChzZWFyY2hWYWx1ZS5zb3VyY2UpOworICAgICAgICAgICAgaWYgKCFpc0ZuIHx8ICFoYXNDYXB0dXJpbmdHcm91cHMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2UuY2FsbCh0aGlzLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHdyYXBwZWRSZXBsYWNlVmFsdWUgPSBmdW5jdGlvbiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbExhc3RJbmRleCA9IHNlYXJjaFZhbHVlLmxhc3RJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWUubGFzdEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBzZWFyY2hWYWx1ZS5leGVjKG1hdGNoKSB8fCBbXTsKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWUubGFzdEluZGV4ID0gb3JpZ2luYWxMYXN0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHB1c2hDYWxsKGFyZ3MsIGFyZ3VtZW50c1tsZW5ndGggLSAyXSwgYXJndW1lbnRzW2xlbmd0aCAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VWYWx1ZS5hcHBseSh0aGlzLCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHJldHVybiBzdHJfcmVwbGFjZS5jYWxsKHRoaXMsIHNlYXJjaFZhbHVlLCB3cmFwcGVkUmVwbGFjZVZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvLyBFQ01BLTI2MiwgM3JkIEIuMi4zCisgICAgLy8gTm90IGFuIEVDTUFTY3JpcHQgc3RhbmRhcmQsIGFsdGhvdWdoIEVDTUFTY3JpcHQgM3JkIEVkaXRpb24gaGFzIGEKKyAgICAvLyBub24tbm9ybWF0aXZlIHNlY3Rpb24gc3VnZ2VzdGluZyB1bmlmb3JtIHNlbWFudGljcyBhbmQgaXQgc2hvdWxkIGJlCisgICAgLy8gbm9ybWFsaXplZCBhY3Jvc3MgYWxsIGJyb3dzZXJzCisgICAgLy8gW2J1Z2ZpeCwgSUUgbHQgOV0gSUUgPCA5IHN1YnN0cigpIHdpdGggbmVnYXRpdmUgdmFsdWUgbm90IHdvcmtpbmcgaW4gSUUKKyAgICB2YXIgc3RyaW5nX3N1YnN0ciA9IFN0cmluZ1Byb3RvdHlwZS5zdWJzdHI7CisgICAgdmFyIGhhc05lZ2F0aXZlU3Vic3RyQnVnID0gJycuc3Vic3RyICYmICcwYicuc3Vic3RyKC0xKSAhPT0gJ2InOworICAgIGRlZmluZVByb3BlcnRpZXMoU3RyaW5nUHJvdG90eXBlLCB7CisgICAgICAgIHN1YnN0cjogZnVuY3Rpb24gc3Vic3RyKHN0YXJ0LCBsZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub3JtYWxpemVkU3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgICAgICBub3JtYWxpemVkU3RhcnQgPSBtYXgodGhpcy5sZW5ndGggKyBzdGFydCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nX3N1YnN0ci5jYWxsKHRoaXMsIG5vcm1hbGl6ZWRTdGFydCwgbGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0sIGhhc05lZ2F0aXZlU3Vic3RyQnVnKTsKKworICAgIC8vIEVTNSAxNS41LjQuMjAKKyAgICAvLyB3aGl0ZXNwYWNlIGZyb206IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuNS40LjIwCisgICAgdmFyIHdzID0gJ1x4MDlceDBBXHgwQlx4MENceDBEXHgyMFx4QTBcdTE2ODBcdTE4MEVcdTIwMDBcdTIwMDFcdTIwMDJcdTIwMDMnICsKKyAgICAgICAgJ1x1MjAwNFx1MjAwNVx1MjAwNlx1MjAwN1x1MjAwOFx1MjAwOVx1MjAwQVx1MjAyRlx1MjA1Rlx1MzAwMFx1MjAyOCcgKworICAgICAgICAnXHUyMDI5XHVGRUZGJzsKKyAgICB2YXIgemVyb1dpZHRoID0gJ1x1MjAwYic7CisgICAgdmFyIHdzUmVnZXhDaGFycyA9ICdbJyArIHdzICsgJ10nOworICAgIHZhciB0cmltQmVnaW5SZWdleHAgPSBuZXcgUmVnRXhwKCdeJyArIHdzUmVnZXhDaGFycyArIHdzUmVnZXhDaGFycyArICcqJyk7CisgICAgdmFyIHRyaW1FbmRSZWdleHAgPSBuZXcgUmVnRXhwKHdzUmVnZXhDaGFycyArIHdzUmVnZXhDaGFycyArICcqJCcpOworICAgIHZhciBoYXNUcmltV2hpdGVzcGFjZUJ1ZyA9IFN0cmluZ1Byb3RvdHlwZS50cmltICYmICh3cy50cmltKCkgfHwgIXplcm9XaWR0aC50cmltKCkpOworICAgIGRlZmluZVByb3BlcnRpZXMoU3RyaW5nUHJvdG90eXBlLCB7CisgICAgICAgIC8vIGh0dHA6Ly9ibG9nLnN0ZXZlbmxldml0aGFuLmNvbS9hcmNoaXZlcy9mYXN0ZXItdHJpbS1qYXZhc2NyaXB0CisgICAgICAgIC8vIGh0dHA6Ly9wZXJmZWN0aW9ua2lsbHMuY29tL3doaXRlc3BhY2UtZGV2aWF0aW9ucy8KKyAgICAgICAgdHJpbTogZnVuY3Rpb24gdHJpbSgpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcyA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcyA9PT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIiArIHRoaXMgKyAnIHRvIG9iamVjdCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuICRTdHJpbmcodGhpcykucmVwbGFjZSh0cmltQmVnaW5SZWdleHAsICcnKS5yZXBsYWNlKHRyaW1FbmRSZWdleHAsICcnKTsKKyAgICAgICAgfQorICAgIH0sIGhhc1RyaW1XaGl0ZXNwYWNlQnVnKTsKKyAgICB2YXIgdHJpbSA9IGNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnRyaW0pOworCisgICAgdmFyIGhhc0xhc3RJbmRleEJ1ZyA9IFN0cmluZ1Byb3RvdHlwZS5sYXN0SW5kZXhPZiAmJiAnYWJj44GC44GEJy5sYXN0SW5kZXhPZign44GC44GEJywgMikgIT09IC0xOworICAgIGRlZmluZVByb3BlcnRpZXMoU3RyaW5nUHJvdG90eXBlLCB7CisgICAgICAgIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hTdHJpbmcpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcyA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcyA9PT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIiArIHRoaXMgKyAnIHRvIG9iamVjdCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIFMgPSAkU3RyaW5nKHRoaXMpOworICAgICAgICAgICAgdmFyIHNlYXJjaFN0ciA9ICRTdHJpbmcoc2VhcmNoU3RyaW5nKTsKKyAgICAgICAgICAgIHZhciBudW1Qb3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/ICROdW1iZXIoYXJndW1lbnRzWzFdKSA6IE5hTjsKKyAgICAgICAgICAgIHZhciBwb3MgPSBpc0FjdHVhbE5hTihudW1Qb3MpID8gSW5maW5pdHkgOiBFUy5Ub0ludGVnZXIobnVtUG9zKTsKKyAgICAgICAgICAgIHZhciBzdGFydCA9IG1pbihtYXgocG9zLCAwKSwgUy5sZW5ndGgpOworICAgICAgICAgICAgdmFyIHNlYXJjaExlbiA9IHNlYXJjaFN0ci5sZW5ndGg7CisgICAgICAgICAgICB2YXIgayA9IHN0YXJ0ICsgc2VhcmNoTGVuOworICAgICAgICAgICAgd2hpbGUgKGsgPiAwKSB7CisgICAgICAgICAgICAgICAgayA9IG1heCgwLCBrIC0gc2VhcmNoTGVuKTsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzdHJJbmRleE9mKHN0clNsaWNlKFMsIGssIHN0YXJ0ICsgc2VhcmNoTGVuKSwgc2VhcmNoU3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBrICsgaW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfSwgaGFzTGFzdEluZGV4QnVnKTsKKworICAgIHZhciBvcmlnaW5hbExhc3RJbmRleE9mID0gU3RyaW5nUHJvdG90eXBlLmxhc3RJbmRleE9mOworICAgIGRlZmluZVByb3BlcnRpZXMoU3RyaW5nUHJvdG90eXBlLCB7CisgICAgICAgIGxhc3RJbmRleE9mOiBmdW5jdGlvbiBsYXN0SW5kZXhPZihzZWFyY2hTdHJpbmcpIHsKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbExhc3RJbmRleE9mLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0KKyAgICB9LCBTdHJpbmdQcm90b3R5cGUubGFzdEluZGV4T2YubGVuZ3RoICE9PSAxKTsKKworICAgIC8vIEVTLTUgMTUuMS4yLjIKKyAgICAvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqLworICAgIGlmIChwYXJzZUludCh3cyArICcwOCcpICE9PSA4IHx8IHBhcnNlSW50KHdzICsgJzB4MTYnKSAhPT0gMjIpIHsKKyAgICAvKiBlc2xpbnQtZW5hYmxlIHJhZGl4ICovCisgICAgICAgIC8qIGdsb2JhbCBwYXJzZUludDogdHJ1ZSAqLworICAgICAgICBwYXJzZUludCA9IChmdW5jdGlvbiAob3JpZ1BhcnNlSW50KSB7CisgICAgICAgICAgICB2YXIgaGV4UmVnZXggPSAvXltcLStdPzBbeFhdLzsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUludChzdHIsIHJhZGl4KSB7CisgICAgICAgICAgICAgICAgdmFyIHN0cmluZyA9IHRyaW0oU3RyaW5nKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0ZWRSYWRpeCA9ICROdW1iZXIocmFkaXgpIHx8IChoZXhSZWdleC50ZXN0KHN0cmluZykgPyAxNiA6IDEwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ1BhcnNlSW50KHN0cmluZywgZGVmYXVsdGVkUmFkaXgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfShwYXJzZUludCkpOworICAgIH0KKworICAgIC8vIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4zCisgICAgaWYgKDEgLyBwYXJzZUZsb2F0KCctMCcpICE9PSAtSW5maW5pdHkpIHsKKyAgICAgICAgLyogZ2xvYmFsIHBhcnNlRmxvYXQ6IHRydWUgKi8KKyAgICAgICAgcGFyc2VGbG9hdCA9IChmdW5jdGlvbiAob3JpZ1BhcnNlRmxvYXQpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0KHN0cmluZykgeworICAgICAgICAgICAgICAgIHZhciBpbnB1dFN0cmluZyA9IHRyaW0oU3RyaW5nKHN0cmluZykpOworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvcmlnUGFyc2VGbG9hdChpbnB1dFN0cmluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gMCAmJiBzdHJTbGljZShpbnB1dFN0cmluZywgMCwgMSkgPT09ICctJyA/IC0wIDogcmVzdWx0OworICAgICAgICAgICAgfTsKKyAgICAgICAgfShwYXJzZUZsb2F0KSk7CisgICAgfQorCisgICAgaWYgKFN0cmluZyhuZXcgUmFuZ2VFcnJvcigndGVzdCcpKSAhPT0gJ1JhbmdlRXJyb3I6IHRlc3QnKSB7CisgICAgICAgIHZhciBlcnJvclRvU3RyaW5nU2hpbSA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzID09PSAndW5kZWZpbmVkJyB8fCB0aGlzID09PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiICsgdGhpcyArICcgdG8gb2JqZWN0Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgICAgICBuYW1lID0gJ0Vycm9yJzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgbmFtZSA9ICRTdHJpbmcobmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbXNnID0gdGhpcy5tZXNzYWdlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtc2cgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gJyc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtc2cgIT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gJFN0cmluZyhtc2cpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFuYW1lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbXNnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmFtZSArICc6ICcgKyBtc2c7CisgICAgICAgIH07CisgICAgICAgIC8vIGNhbid0IHVzZSBkZWZpbmVQcm9wZXJ0aWVzIGhlcmUgYmVjYXVzZSBvZiB0b1N0cmluZyBlbnVtZXJhdGlvbiBpc3N1ZSBpbiBJRSA8PSA4CisgICAgICAgIEVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGVycm9yVG9TdHJpbmdTaGltOworICAgIH0KKworICAgIGlmIChzdXBwb3J0c0Rlc2NyaXB0b3JzKSB7CisgICAgICAgIHZhciBlbnN1cmVOb25FbnVtZXJhYmxlID0gZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgaWYgKGlzRW51bShvYmosIHByb3ApKSB7CisgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJvcCk7CisgICAgICAgICAgICAgICAgaWYgKGRlc2MuY29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc2MuZW51bWVyYWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCBkZXNjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGVuc3VyZU5vbkVudW1lcmFibGUoRXJyb3IucHJvdG90eXBlLCAnbWVzc2FnZScpOworICAgICAgICBpZiAoRXJyb3IucHJvdG90eXBlLm1lc3NhZ2UgIT09ICcnKSB7CisgICAgICAgICAgICBFcnJvci5wcm90b3R5cGUubWVzc2FnZSA9ICcnOworICAgICAgICB9CisgICAgICAgIGVuc3VyZU5vbkVudW1lcmFibGUoRXJyb3IucHJvdG90eXBlLCAnbmFtZScpOworICAgIH0KKworICAgIGlmIChTdHJpbmcoL2EvbWlnKSAhPT0gJy9hL2dpbScpIHsKKyAgICAgICAgdmFyIHJlZ2V4VG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHZhciBzdHIgPSAnLycgKyB0aGlzLnNvdXJjZSArICcvJzsKKyAgICAgICAgICAgIGlmICh0aGlzLmdsb2JhbCkgeworICAgICAgICAgICAgICAgIHN0ciArPSAnZyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGhpcy5pZ25vcmVDYXNlKSB7CisgICAgICAgICAgICAgICAgc3RyICs9ICdpJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLm11bHRpbGluZSkgeworICAgICAgICAgICAgICAgIHN0ciArPSAnbSc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICB9OworICAgICAgICAvLyBjYW4ndCB1c2UgZGVmaW5lUHJvcGVydGllcyBoZXJlIGJlY2F1c2Ugb2YgdG9TdHJpbmcgZW51bWVyYXRpb24gaXNzdWUgaW4gSUUgPD0gOAorICAgICAgICBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nID0gcmVnZXhUb1N0cmluZzsKKyAgICB9Cit9KSk7CisKKyd1c2Ugc3RyaWN0JzsKKy8qanNsaW50IGVxZXE6IHRydWUqLworCitIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdzYW5pdGl6ZScsIGZ1bmN0aW9uICh0ZXh0KSB7CisgICAgdmFyIHJlc3VsdDsKKworICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQpIHsgcmV0dXJuICcnOyB9CisKKyAgICByZXN1bHQgPSBzYW5pdGl6ZUh0bWwodGV4dCwgeworICAgICAgICBhbGxvd2VkVGFnczogWyAnZGl2JywgJ3NwYW4nLCAnYicsICdpJywgJ2VtJywgJ3N0cm9uZycsICdhJywgJ2JyJywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RyJywgJ3RoJywgJ3RkJyBdLAorICAgICAgICBhbGxvd2VkQXR0cmlidXRlczogeworICAgICAgICAgICAgJ2Rpdic6IFsgJ2NsYXNzJyBdLAorICAgICAgICAgICAgJ3NwYW4nOiBbICdjbGFzcycgXSwKKyAgICAgICAgICAgICd0YWJsZSc6IFsgJ2NsYXNzJyBdLAorICAgICAgICAgICAgJ3RkJzogWyAnY2xhc3MnIF0sCisgICAgICAgICAgICAndGgnOiBbICdjb2xzcGFuJyBdLAorICAgICAgICAgICAgJ2EnOiBbICdocmVmJyBdCisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHJldHVybiBuZXcgSGFuZGxlYmFycy5TYWZlU3RyaW5nKHJlc3VsdCk7Cit9KTsKKworSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigncmVuZGVyVGV4dFBhcmFtJywgZnVuY3Rpb24ocGFyYW0pIHsKKyAgICB2YXIgcmVzdWx0LCB0eXBlID0gJ3RleHQnLCBpZEF0dCA9ICcnOworCXZhciBwYXJhbVR5cGUgPSAocGFyYW0uc2NoZW1hKSA/IHBhcmFtLnR5cGUgfHwgcGFyYW0uc2NoZW1hLnR5cGUgfHwgJycgOiBwYXJhbS50eXBlIHx8ICcnOworICAgIHZhciBpc0FycmF5ID0gcGFyYW1UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdhcnJheScgfHwgcGFyYW0uYWxsb3dNdWx0aXBsZTsKKyAgICB2YXIgZGVmYXVsdFZhbHVlID0gaXNBcnJheSAmJiBBcnJheS5pc0FycmF5KHBhcmFtLmRlZmF1bHQpID8gcGFyYW0uZGVmYXVsdC5qb2luKCdcbicpIDogcGFyYW0uZGVmYXVsdDsKKyAgICB2YXIgbmFtZSA9IEhhbmRsZWJhcnMuVXRpbHMuZXNjYXBlRXhwcmVzc2lvbihwYXJhbS5uYW1lKTsKKyAgICB2YXIgdmFsdWVJZCA9IEhhbmRsZWJhcnMuVXRpbHMuZXNjYXBlRXhwcmVzc2lvbihwYXJhbS52YWx1ZUlkKTsKKyAgICBwYXJhbVR5cGUgPSBIYW5kbGViYXJzLlV0aWxzLmVzY2FwZUV4cHJlc3Npb24ocGFyYW1UeXBlKTsKKworICAgIHZhciBkYXRhVmVuZG9yRXh0ZW5zaW9ucyA9IE9iamVjdC5rZXlzKHBhcmFtKS5maWx0ZXIoZnVuY3Rpb24ocHJvcGVydHkpIHsKKyAgICAgICAgLy8gZmlsdGVyIFgtZGF0YS0gcHJvcGVydGllcworICAgICAgICByZXR1cm4gcHJvcGVydHkubWF0Y2goL15YLWRhdGEtL2kpICE9PSBudWxsOworICAgIH0pLnJlZHVjZShmdW5jdGlvbihyZXN1bHQsIHByb3BlcnR5KSB7CisgICAgICAgIC8vIHJlbW92ZSBYLSBmcm9tIHByb3BlcnR5IG5hbWUsIHNvIGl0IHJlc3VsdHMgaW4gaHRtbCBhdHRyaWJ1dGVzIGxpa2UgZGF0YS1mb289J2JhcicKKyAgICAgICAgcmV0dXJuIHJlc3VsdCArPSAnICcgKyBwcm9wZXJ0eS5zdWJzdHJpbmcoMiwgcHJvcGVydHkubGVuZ3RoKSArICc9XCcnICsgcGFyYW1bcHJvcGVydHldICsgJ1wnJzsKKyAgICB9LCAnJyk7CisKKyAgICBpZihwYXJhbS5mb3JtYXQgJiYgcGFyYW0uZm9ybWF0ID09PSAncGFzc3dvcmQnKSB7CisgICAgICAgIHR5cGUgPSAncGFzc3dvcmQnOworICAgIH0KKworICAgIGlmKHZhbHVlSWQpIHsKKyAgICAgICAgaWRBdHQgPSAnIGlkPVwnJyArIHZhbHVlSWQgKyAnXCcnOworICAgIH0KKworICAgIGlmIChkZWZhdWx0VmFsdWUpIHsKKyAgICAgIGRlZmF1bHRWYWx1ZSA9IHNhbml0aXplSHRtbChkZWZhdWx0VmFsdWUpOworICAgIH0gZWxzZSB7CisgICAgICBkZWZhdWx0VmFsdWUgPSAnJzsKKyAgICB9CisKKyAgICBpZihpc0FycmF5KSB7CisgICAgICAgIHJlc3VsdCA9ICc8dGV4dGFyZWEgY2xhc3M9XCdib2R5LXRleHRhcmVhJyArIChwYXJhbS5yZXF1aXJlZCA/ICcgcmVxdWlyZWQnIDogJycpICsgJ1wnIG5hbWU9XCcnICsgbmFtZSArICdcJycgKyBpZEF0dCArIGRhdGFWZW5kb3JFeHRlbnNpb25zOworICAgICAgICByZXN1bHQgKz0gJyBwbGFjZWhvbGRlcj1cJ1Byb3ZpZGUgbXVsdGlwbGUgdmFsdWVzIGluIG5ldyBsaW5lcycgKyAocGFyYW0ucmVxdWlyZWQgPyAnIChhdCBsZWFzdCBvbmUgcmVxdWlyZWQpLicgOiAnLicpICsgJ1wnPic7CisgICAgICAgIHJlc3VsdCArPSBkZWZhdWx0VmFsdWUgKyAnPC90ZXh0YXJlYT4nOworICAgIH0gZWxzZSB7CisgICAgICAgIHZhciBwYXJhbWV0ZXJDbGFzcyA9ICdwYXJhbWV0ZXInOworICAgICAgICBpZihwYXJhbS5yZXF1aXJlZCkgeworICAgICAgICAgIHBhcmFtZXRlckNsYXNzICs9ICcgcmVxdWlyZWQnOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9ICc8aW5wdXQgY2xhc3M9XCcnICsgcGFyYW1ldGVyQ2xhc3MgKyAnXCcgbWlubGVuZ3RoPVwnJyArIChwYXJhbS5yZXF1aXJlZCA/IDEgOiAwKSArICdcJyc7CisgICAgICAgIHJlc3VsdCArPSAnIG5hbWU9XCcnICsgbmFtZSArJ1wnIHBsYWNlaG9sZGVyPVwnJyArIChwYXJhbS5yZXF1aXJlZCA/ICcocmVxdWlyZWQpJyA6ICcnKSArICdcJycgKyBpZEF0dCArIGRhdGFWZW5kb3JFeHRlbnNpb25zOworICAgICAgICByZXN1bHQgKz0gJyB0eXBlPVwnJyArIHR5cGUgKyAnXCcgdmFsdWU9XCcnICsgZGVmYXVsdFZhbHVlICsgJ1wnLz4nOworICAgIH0KKyAgICByZXR1cm4gbmV3IEhhbmRsZWJhcnMuU2FmZVN0cmluZyhyZXN1bHQpOworfSk7CisKK0hhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lmQ29uZCcsIGZ1bmN0aW9uICh2MSwgb3BlcmF0b3IsIHYyLCBvcHRpb25zKSB7CisKKyAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7CisgICAgICAgIGNhc2UgJz09JzoKKyAgICAgICAgICAgIHJldHVybiAodjEgPT0gdjIpID8gb3B0aW9ucy5mbih0aGlzKSA6IG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgY2FzZSAnPT09JzoKKyAgICAgICAgICAgIHJldHVybiAodjEgPT09IHYyKSA/IG9wdGlvbnMuZm4odGhpcykgOiBvcHRpb25zLmludmVyc2UodGhpcyk7CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgcmV0dXJuICh2MSA8IHYyKSA/IG9wdGlvbnMuZm4odGhpcykgOiBvcHRpb25zLmludmVyc2UodGhpcyk7CisgICAgICAgIGNhc2UgJzw9JzoKKyAgICAgICAgICAgIHJldHVybiAodjEgPD0gdjIpID8gb3B0aW9ucy5mbih0aGlzKSA6IG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAgICByZXR1cm4gKHYxID4gdjIpID8gb3B0aW9ucy5mbih0aGlzKSA6IG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgY2FzZSAnPj0nOgorICAgICAgICAgICAgcmV0dXJuICh2MSA+PSB2MikgPyBvcHRpb25zLmZuKHRoaXMpIDogb3B0aW9ucy5pbnZlcnNlKHRoaXMpOworICAgICAgICBjYXNlICcmJic6CisgICAgICAgICAgICByZXR1cm4gKHYxICYmIHYyKSA/IG9wdGlvbnMuZm4odGhpcykgOiBvcHRpb25zLmludmVyc2UodGhpcyk7CisgICAgICAgIGNhc2UgJ3x8JzoKKyAgICAgICAgICAgIHJldHVybiAodjEgfHwgdjIpID8gb3B0aW9ucy5mbih0aGlzKSA6IG9wdGlvbnMuaW52ZXJzZSh0aGlzKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7CisgICAgfQorfSk7CisKK0hhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2VzY2FwZScsIGZ1bmN0aW9uICh2YWx1ZSkgeworICAgIHZhciB0ZXh0ID0gSGFuZGxlYmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uKHZhbHVlKTsKKworICAgIHJldHVybiBuZXcgSGFuZGxlYmFycy5TYWZlU3RyaW5nKHRleHQpOworfSk7CisKKyhmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLnNhbml0aXplSHRtbD1mKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK28rIiciKTt0aHJvdyBmLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIGh0bWxwYXJzZXI9cmVxdWlyZSgiaHRtbHBhcnNlcjIiKTt2YXIgZXh0ZW5kPXJlcXVpcmUoInh0ZW5kIik7dmFyIHF1b3RlUmVnZXhwPXJlcXVpcmUoInJlZ2V4cC1xdW90ZSIpO2Z1bmN0aW9uIGVhY2gob2JqLGNiKXtpZihvYmopT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7Y2Iob2JqW2tleV0sa2V5KX0pfWZ1bmN0aW9uIGhhcyhvYmosa2V5KXtyZXR1cm57fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaixrZXkpfW1vZHVsZS5leHBvcnRzPXNhbml0aXplSHRtbDtmdW5jdGlvbiBzYW5pdGl6ZUh0bWwoaHRtbCxvcHRpb25zLF9yZWN1cnNpbmcpe3ZhciByZXN1bHQ9IiI7ZnVuY3Rpb24gRnJhbWUodGFnLGF0dHJpYnMpe3ZhciB0aGF0PXRoaXM7dGhpcy50YWc9dGFnO3RoaXMuYXR0cmlicz1hdHRyaWJzfHx7fTt0aGlzLnRhZ1Bvc2l0aW9uPXJlc3VsdC5sZW5ndGg7dGhpcy50ZXh0PSIiO3RoaXMudXBkYXRlUGFyZW50Tm9kZVRleHQ9ZnVuY3Rpb24oKXtpZihzdGFjay5sZW5ndGgpe3ZhciBwYXJlbnRGcmFtZT1zdGFja1tzdGFjay5sZW5ndGgtMV07cGFyZW50RnJhbWUudGV4dCs9dGhhdC50ZXh0fX19aWYoIW9wdGlvbnMpe29wdGlvbnM9c2FuaXRpemVIdG1sLmRlZmF1bHRzO29wdGlvbnMucGFyc2VyPWh0bWxQYXJzZXJEZWZhdWx0c31lbHNle29wdGlvbnM9ZXh0ZW5kKHNhbml0aXplSHRtbC5kZWZhdWx0cyxvcHRpb25zKTtpZihvcHRpb25zLnBhcnNlcil7b3B0aW9ucy5wYXJzZXI9ZXh0ZW5kKGh0bWxQYXJzZXJEZWZhdWx0cyxvcHRpb25zLnBhcnNlcil9ZWxzZXtvcHRpb25zLnBhcnNlcj1odG1sUGFyc2VyRGVmYXVsdHN9fXZhciBub25UZXh0VGFnc0FycmF5PW9wdGlvbnMubm9uVGV4dFRhZ3N8fFsic2NyaXB0Iiwic3R5bGUiLCJ0ZXh0YXJlYSJdO3ZhciBhbGxvd2VkQXR0cmlidXRlc01hcDt2YXIgYWxsb3dlZEF0dHJpYnV0ZXNHbG9iTWFwO2lmKG9wdGlvbnMuYWxsb3dlZEF0dHJpYnV0ZXMpe2FsbG93ZWRBdHRyaWJ1dGVzTWFwPXt9O2FsbG93ZWRBdHRyaWJ1dGVzR2xvYk1hcD17fTtlYWNoKG9wdGlvbnMuYWxsb3dlZEF0dHJpYnV0ZXMsZnVuY3Rpb24oYXR0cmlidXRlcyx0YWcpe2FsbG93ZWRBdHRyaWJ1dGVzTWFwW3RhZ109W107dmFyIGdsb2JSZWdleD1bXTthdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24obmFtZSl7aWYobmFtZS5pbmRleE9mKCIqIik+PTApe2dsb2JSZWdleC5wdXNoKHF1b3RlUmVnZXhwKG5hbWUpLnJlcGxhY2UoL1xcXCovZywiLioiKSl9ZWxzZXthbGxvd2VkQXR0cmlidXRlc01hcFt0YWddLnB1c2gobmFtZSl9fSk7YWxsb3dlZEF0dHJpYnV0ZXNHbG9iTWFwW3RhZ109bmV3IFJlZ0V4cCgiXigiK2dsb2JSZWdleC5qb2luKCJ8IikrIikkIil9KX12YXIgYWxsb3dlZENsYXNzZXNNYXA9e307ZWFjaChvcHRpb25zLmFsbG93ZWRDbGFzc2VzLGZ1bmN0aW9uKGNsYXNzZXMsdGFnKXtpZihhbGxvd2VkQXR0cmlidXRlc01hcCl7aWYoIWhhcyhhbGxvd2VkQXR0cmlidXRlc01hcCx0YWcpKXthbGxvd2VkQXR0cmlidXRlc01hcFt0YWddPVtdfWFsbG93ZWRBdHRyaWJ1dGVzTWFwW3RhZ10ucHVzaCgiY2xhc3MiKX1hbGxvd2VkQ2xhc3Nlc01hcFt0YWddPWNsYXNzZXN9KTt2YXIgdHJhbnNmb3JtVGFnc01hcD17fTt2YXIgdHJhbnNmb3JtVGFnc0FsbDtlYWNoKG9wdGlvbnMudHJhbnNmb3JtVGFncyxmdW5jdGlvbih0cmFuc2Zvcm0sdGFnKXt2YXIgdHJhbnNGdW47aWYodHlwZW9mIHRyYW5zZm9ybT09PSJmdW5jdGlvbiIpe3RyYW5zRnVuPXRyYW5zZm9ybX1lbHNlIGlmKHR5cGVvZiB0cmFuc2Zvcm09PT0ic3RyaW5nIil7dHJhbnNGdW49c2FuaXRpemVIdG1sLnNpbXBsZVRyYW5zZm9ybSh0cmFuc2Zvcm0pfWlmKHRhZz09PSIqIil7dHJhbnNmb3JtVGFnc0FsbD10cmFuc0Z1bn1lbHNle3RyYW5zZm9ybVRhZ3NNYXBbdGFnXT10cmFuc0Z1bn19KTt2YXIgZGVwdGg9MDt2YXIgc3RhY2s9W107dmFyIHNraXBNYXA9e307dmFyIHRyYW5zZm9ybU1hcD17fTt2YXIgc2tpcFRleHQ9ZmFsc2U7dmFyIHNraXBUZXh0RGVwdGg9MDt2YXIgcGFyc2VyPW5ldyBodG1scGFyc2VyLlBhcnNlcih7b25vcGVudGFnOmZ1bmN0aW9uKG5hbWUsYXR0cmlicyl7aWYoc2tpcFRleHQpe3NraXBUZXh0RGVwdGgrKztyZXR1cm59dmFyIGZyYW1lPW5ldyBGcmFtZShuYW1lLGF0dHJpYnMpO3N0YWNrLnB1c2goZnJhbWUpO3ZhciBza2lwPWZhbHNlO3ZhciBoYXNUZXh0PWZyYW1lLnRleHQ/dHJ1ZTpmYWxzZTt2YXIgdHJhbnNmb3JtZWRUYWc7aWYoaGFzKHRyYW5zZm9ybVRhZ3NNYXAsbmFtZSkpe3RyYW5zZm9ybWVkVGFnPXRyYW5zZm9ybVRhZ3NNYXBbbmFtZV0obmFtZSxhdHRyaWJzKTtmcmFtZS5hdHRyaWJzPWF0dHJpYnM9dHJhbnNmb3JtZWRUYWcuYXR0cmlicztpZih0cmFuc2Zvcm1lZFRhZy50ZXh0IT09dW5kZWZpbmVkKXtmcmFtZS5pbm5lclRleHQ9dHJhbnNmb3JtZWRUYWcudGV4dH1pZihuYW1lIT09dHJhbnNmb3JtZWRUYWcudGFnTmFtZSl7ZnJhbWUubmFtZT1uYW1lPXRyYW5zZm9ybWVkVGFnLnRhZ05hbWU7dHJhbnNmb3JtTWFwW2RlcHRoXT10cmFuc2Zvcm1lZFRhZy50YWdOYW1lfX1pZih0cmFuc2Zvcm1UYWdzQWxsKXt0cmFuc2Zvcm1lZFRhZz10cmFuc2Zvcm1UYWdzQWxsKG5hbWUsYXR0cmlicyk7ZnJhbWUuYXR0cmlicz1hdHRyaWJzPXRyYW5zZm9ybWVkVGFnLmF0dHJpYnM7aWYobmFtZSE9PXRyYW5zZm9ybWVkVGFnLnRhZ05hbWUpe2ZyYW1lLm5hbWU9bmFtZT10cmFuc2Zvcm1lZFRhZy50YWdOYW1lO3RyYW5zZm9ybU1hcFtkZXB0aF09dHJhbnNmb3JtZWRUYWcudGFnTmFtZX19aWYob3B0aW9ucy5hbGxvd2VkVGFncyYmb3B0aW9ucy5hbGxvd2VkVGFncy5pbmRleE9mKG5hbWUpPT09LTEpe3NraXA9dHJ1ZTtpZihub25UZXh0VGFnc0FycmF5LmluZGV4T2YobmFtZSkhPT0tMSl7c2tpcFRleHQ9dHJ1ZTtza2lwVGV4dERlcHRoPTF9c2tpcE1hcFtkZXB0aF09dHJ1ZX1kZXB0aCsrO2lmKHNraXApe3JldHVybn1yZXN1bHQrPSI8IituYW1lO2lmKCFhbGxvd2VkQXR0cmlidXRlc01hcHx8aGFzKGFsbG93ZWRBdHRyaWJ1dGVzTWFwLG5hbWUpfHxhbGxvd2VkQXR0cmlidXRlc01hcFsiKiJdKXtlYWNoKGF0dHJpYnMsZnVuY3Rpb24odmFsdWUsYSl7aWYoIWFsbG93ZWRBdHRyaWJ1dGVzTWFwfHxoYXMoYWxsb3dlZEF0dHJpYnV0ZXNNYXAsbmFtZSkmJmFsbG93ZWRBdHRyaWJ1dGVzTWFwW25hbWVdLmluZGV4T2YoYSkhPT0tMXx8YWxsb3dlZEF0dHJpYnV0ZXNNYXBbIioiXSYmYWxsb3dlZEF0dHJpYnV0ZXNNYXBbIioiXS5pbmRleE9mKGEpIT09LTF8fGhhcyhhbGxvd2VkQXR0cmlidXRlc0dsb2JNYXAsbmFtZSkmJmFsbG93ZWRBdHRyaWJ1dGVzR2xvYk1hcFtuYW1lXS50ZXN0KGEpfHxhbGxvd2VkQXR0cmlidXRlc0dsb2JNYXBbIioiXSYmYWxsb3dlZEF0dHJpYnV0ZXNHbG9iTWFwWyIqIl0udGVzdChhKSl7aWYoYT09PSJocmVmInx8YT09PSJzcmMiKXtpZihuYXVnaHR5SHJlZihuYW1lLHZhbHVlKSl7ZGVsZXRlIGZyYW1lLmF0dHJpYnNbYV07cmV0dXJufX1pZihhPT09ImNsYXNzIil7dmFsdWU9ZmlsdGVyQ2xhc3Nlcyh2YWx1ZSxhbGxvd2VkQ2xhc3Nlc01hcFtuYW1lXSk7aWYoIXZhbHVlLmxlbmd0aCl7ZGVsZXRlIGZyYW1lLmF0dHJpYnNbYV07cmV0dXJufX1yZXN1bHQrPSIgIithO2lmKHZhbHVlLmxlbmd0aCl7cmVzdWx0Kz0nPSInK2VzY2FwZUh0bWwodmFsdWUpKyciJ319ZWxzZXtkZWxldGUgZnJhbWUuYXR0cmlic1thXX19KX1pZihvcHRpb25zLnNlbGZDbG9zaW5nLmluZGV4T2YobmFtZSkhPT0tMSl7cmVzdWx0Kz0iIC8+In1lbHNle3Jlc3VsdCs9Ij4iO2lmKGZyYW1lLmlubmVyVGV4dCYmIWhhc1RleHQmJiFvcHRpb25zLnRleHRGaWx0ZXIpe3Jlc3VsdCs9ZnJhbWUuaW5uZXJUZXh0fX19LG9udGV4dDpmdW5jdGlvbih0ZXh0KXtpZihza2lwVGV4dCl7cmV0dXJufXZhciBsYXN0RnJhbWU9c3RhY2tbc3RhY2subGVuZ3RoLTFdO3ZhciB0YWc7aWYobGFzdEZyYW1lKXt0YWc9bGFzdEZyYW1lLnRhZzt0ZXh0PWxhc3RGcmFtZS5pbm5lclRleHQhPT11bmRlZmluZWQ/bGFzdEZyYW1lLmlubmVyVGV4dDp0ZXh0fWlmKHRhZz09PSJzY3JpcHQifHx0YWc9PT0ic3R5bGUiKXtyZXN1bHQrPXRleHR9ZWxzZXt2YXIgZXNjYXBlZD1lc2NhcGVIdG1sKHRleHQpO2lmKG9wdGlvbnMudGV4dEZpbHRlcil7cmVzdWx0Kz1vcHRpb25zLnRleHRGaWx0ZXIoZXNjYXBlZCl9ZWxzZXtyZXN1bHQrPWVzY2FwZWR9fWlmKHN0YWNrLmxlbmd0aCl7dmFyIGZyYW1lPXN0YWNrW3N0YWNrLmxlbmd0aC0xXTtmcmFtZS50ZXh0Kz10ZXh0fX0sb25jbG9zZXRhZzpmdW5jdGlvbihuYW1lKXtpZihza2lwVGV4dCl7c2tpcFRleHREZXB0aC0tO2lmKCFza2lwVGV4dERlcHRoKXtza2lwVGV4dD1mYWxzZX1lbHNle3JldHVybn19dmFyIGZyYW1lPXN0YWNrLnBvcCgpO2lmKCFmcmFtZSl7cmV0dXJufXNraXBUZXh0PWZhbHNlO2RlcHRoLS07aWYoc2tpcE1hcFtkZXB0aF0pe2RlbGV0ZSBza2lwTWFwW2RlcHRoXTtmcmFtZS51cGRhdGVQYXJlbnROb2RlVGV4dCgpO3JldHVybn1pZih0cmFuc2Zvcm1NYXBbZGVwdGhdKXtuYW1lPXRyYW5zZm9ybU1hcFtkZXB0aF07ZGVsZXRlIHRyYW5zZm9ybU1hcFtkZXB0aF19aWYob3B0aW9ucy5leGNsdXNpdmVGaWx0ZXImJm9wdGlvbnMuZXhjbHVzaXZlRmlsdGVyKGZyYW1lKSl7cmVzdWx0PXJlc3VsdC5zdWJzdHIoMCxmcmFtZS50YWdQb3NpdGlvbik7cmV0dXJufWZyYW1lLnVwZGF0ZVBhcmVudE5vZGVUZXh0KCk7aWYob3B0aW9ucy5zZWxmQ2xvc2luZy5pbmRleE9mKG5hbWUpIT09LTEpe3JldHVybn1yZXN1bHQrPSI8LyIrbmFtZSsiPiJ9fSxvcHRpb25zLnBhcnNlcik7cGFyc2VyLndyaXRlKGh0bWwpO3BhcnNlci5lbmQoKTtyZXR1cm4gcmVzdWx0O2Z1bmN0aW9uIGVzY2FwZUh0bWwocyl7aWYodHlwZW9mIHMhPT0ic3RyaW5nIil7cz1zKyIifXJldHVybiBzLnJlcGxhY2UoL1wmL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvXD4vZywiJmd0OyIpLnJlcGxhY2UoL1wiL2csIiZxdW90OyIpfWZ1bmN0aW9uIG5hdWdodHlIcmVmKG5hbWUsaHJlZil7aHJlZj1ocmVmLnJlcGxhY2UoL1tceDAwLVx4MjBdKy9nLCIiKTtocmVmPWhyZWYucmVwbGFjZSgvPFwhXC1cLS4qP1wtXC1cPi9nLCIiKTt2YXIgbWF0Y2hlcz1ocmVmLm1hdGNoKC9eKFthLXpBLVpdKylcOi8pO2lmKCFtYXRjaGVzKXtyZXR1cm4gZmFsc2V9dmFyIHNjaGVtZT1tYXRjaGVzWzFdLnRvTG93ZXJDYXNlKCk7aWYoaGFzKG9wdGlvbnMuYWxsb3dlZFNjaGVtZXNCeVRhZyxuYW1lKSl7cmV0dXJuIG9wdGlvbnMuYWxsb3dlZFNjaGVtZXNCeVRhZ1tuYW1lXS5pbmRleE9mKHNjaGVtZSk9PT0tMX1yZXR1cm4hb3B0aW9ucy5hbGxvd2VkU2NoZW1lc3x8b3B0aW9ucy5hbGxvd2VkU2NoZW1lcy5pbmRleE9mKHNjaGVtZSk9PT0tMX1mdW5jdGlvbiBmaWx0ZXJDbGFzc2VzKGNsYXNzZXMsYWxsb3dlZCl7aWYoIWFsbG93ZWQpe3JldHVybiBjbGFzc2VzfWNsYXNzZXM9Y2xhc3Nlcy5zcGxpdCgvXHMrLyk7cmV0dXJuIGNsYXNzZXMuZmlsdGVyKGZ1bmN0aW9uKGNsc3Mpe3JldHVybiBhbGxvd2VkLmluZGV4T2YoY2xzcykhPT0tMX0pLmpvaW4oIiAiKX19dmFyIGh0bWxQYXJzZXJEZWZhdWx0cz17ZGVjb2RlRW50aXRpZXM6dHJ1ZX07c2FuaXRpemVIdG1sLmRlZmF1bHRzPXthbGxvd2VkVGFnczpbImgzIiwiaDQiLCJoNSIsImg2IiwiYmxvY2txdW90ZSIsInAiLCJhIiwidWwiLCJvbCIsIm5sIiwibGkiLCJiIiwiaSIsInN0cm9uZyIsImVtIiwic3RyaWtlIiwiY29kZSIsImhyIiwiYnIiLCJkaXYiLCJ0YWJsZSIsInRoZWFkIiwiY2FwdGlvbiIsInRib2R5IiwidHIiLCJ0aCIsInRkIiwicHJlIl0sYWxsb3dlZEF0dHJpYnV0ZXM6e2E6WyJocmVmIiwibmFtZSIsInRhcmdldCJdLGltZzpbInNyYyJdfSxzZWxmQ2xvc2luZzpbImltZyIsImJyIiwiaHIiLCJhcmVhIiwiYmFzZSIsImJhc2Vmb250IiwiaW5wdXQiLCJsaW5rIiwibWV0YSJdLGFsbG93ZWRTY2hlbWVzOlsiaHR0cCIsImh0dHBzIiwiZnRwIiwibWFpbHRvIl0sYWxsb3dlZFNjaGVtZXNCeVRhZzp7fX07c2FuaXRpemVIdG1sLnNpbXBsZVRyYW5zZm9ybT1mdW5jdGlvbihuZXdUYWdOYW1lLG5ld0F0dHJpYnMsbWVyZ2Upe21lcmdlPW1lcmdlPT09dW5kZWZpbmVkP3RydWU6bWVyZ2U7bmV3QXR0cmlicz1uZXdBdHRyaWJzfHx7fTtyZXR1cm4gZnVuY3Rpb24odGFnTmFtZSxhdHRyaWJzKXt2YXIgYXR0cmliO2lmKG1lcmdlKXtmb3IoYXR0cmliIGluIG5ld0F0dHJpYnMpe2F0dHJpYnNbYXR0cmliXT1uZXdBdHRyaWJzW2F0dHJpYl19fWVsc2V7YXR0cmlicz1uZXdBdHRyaWJzfXJldHVybnt0YWdOYW1lOm5ld1RhZ05hbWUsYXR0cmliczphdHRyaWJzfX19fSx7aHRtbHBhcnNlcjI6MzYsInJlZ2V4cC1xdW90ZSI6NTQseHRlbmQ6NTh9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7ZXhwb3J0cy50b0J5dGVBcnJheT10b0J5dGVBcnJheTtleHBvcnRzLmZyb21CeXRlQXJyYXk9ZnJvbUJ5dGVBcnJheTt2YXIgbG9va3VwPVtdO3ZhciByZXZMb29rdXA9W107dmFyIEFycj10eXBlb2YgVWludDhBcnJheSE9PSJ1bmRlZmluZWQiP1VpbnQ4QXJyYXk6QXJyYXk7ZnVuY3Rpb24gaW5pdCgpe3ZhciBjb2RlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjtmb3IodmFyIGk9MCxsZW49Y29kZS5sZW5ndGg7aTxsZW47KytpKXtsb29rdXBbaV09Y29kZVtpXTtyZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXT1pfXJldkxvb2t1cFsiLSIuY2hhckNvZGVBdCgwKV09NjI7cmV2TG9va3VwWyJfIi5jaGFyQ29kZUF0KDApXT02M31pbml0KCk7ZnVuY3Rpb24gdG9CeXRlQXJyYXkoYjY0KXt2YXIgaSxqLGwsdG1wLHBsYWNlSG9sZGVycyxhcnI7dmFyIGxlbj1iNjQubGVuZ3RoO2lmKGxlbiU0PjApe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpfXBsYWNlSG9sZGVycz1iNjRbbGVuLTJdPT09Ij0iPzI6YjY0W2xlbi0xXT09PSI9Ij8xOjA7YXJyPW5ldyBBcnIobGVuKjMvNC1wbGFjZUhvbGRlcnMpO2w9cGxhY2VIb2xkZXJzPjA/bGVuLTQ6bGVuO3ZhciBMPTA7Zm9yKGk9MCxqPTA7aTxsO2krPTQsais9Myl7dG1wPXJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV08PDE4fHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKzEpXTw8MTJ8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMildPDw2fHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKzMpXTthcnJbTCsrXT10bXA+PjE2JjI1NTthcnJbTCsrXT10bXA+PjgmMjU1O2FycltMKytdPXRtcCYyNTV9aWYocGxhY2VIb2xkZXJzPT09Mil7dG1wPXJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV08PDJ8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldPj40O2FycltMKytdPXRtcCYyNTV9ZWxzZSBpZihwbGFjZUhvbGRlcnM9PT0xKXt0bXA9cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXTw8MTB8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldPDw0fHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKzIpXT4+MjthcnJbTCsrXT10bXA+PjgmMjU1O2FycltMKytdPXRtcCYyNTV9cmV0dXJuIGFycn1mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQobnVtKXtyZXR1cm4gbG9va3VwW251bT4+MTgmNjNdK2xvb2t1cFtudW0+PjEyJjYzXStsb29rdXBbbnVtPj42JjYzXStsb29rdXBbbnVtJjYzXX1mdW5jdGlvbiBlbmNvZGVDaHVuayh1aW50OCxzdGFydCxlbmQpe3ZhciB0bXA7dmFyIG91dHB1dD1bXTtmb3IodmFyIGk9c3RhcnQ7aTxlbmQ7aSs9Myl7dG1wPSh1aW50OFtpXTw8MTYpKyh1aW50OFtpKzFdPDw4KSt1aW50OFtpKzJdO291dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKX1yZXR1cm4gb3V0cHV0LmpvaW4oIiIpfWZ1bmN0aW9uIGZyb21CeXRlQXJyYXkodWludDgpe3ZhciB0bXA7dmFyIGxlbj11aW50OC5sZW5ndGg7dmFyIGV4dHJhQnl0ZXM9bGVuJTM7dmFyIG91dHB1dD0iIjt2YXIgcGFydHM9W107dmFyIG1heENodW5rTGVuZ3RoPTE2MzgzO2Zvcih2YXIgaT0wLGxlbjI9bGVuLWV4dHJhQnl0ZXM7aTxsZW4yO2krPW1heENodW5rTGVuZ3RoKXtwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LGksaSttYXhDaHVua0xlbmd0aD5sZW4yP2xlbjI6aSttYXhDaHVua0xlbmd0aCkpfWlmKGV4dHJhQnl0ZXM9PT0xKXt0bXA9dWludDhbbGVuLTFdO291dHB1dCs9bG9va3VwW3RtcD4+Ml07b3V0cHV0Kz1sb29rdXBbdG1wPDw0JjYzXTtvdXRwdXQrPSI9PSJ9ZWxzZSBpZihleHRyYUJ5dGVzPT09Mil7dG1wPSh1aW50OFtsZW4tMl08PDgpK3VpbnQ4W2xlbi0xXTtvdXRwdXQrPWxvb2t1cFt0bXA+PjEwXTtvdXRwdXQrPWxvb2t1cFt0bXA+PjQmNjNdO291dHB1dCs9bG9va3VwW3RtcDw8MiY2M107b3V0cHV0Kz0iPSJ9cGFydHMucHVzaChvdXRwdXQpO3JldHVybiBwYXJ0cy5qb2luKCIiKX19LHt9XSwzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt9LHt9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsoZnVuY3Rpb24oZ2xvYmFsKXsidXNlIHN0cmljdCI7dmFyIGJ1ZmZlcj1yZXF1aXJlKCJidWZmZXIiKTt2YXIgQnVmZmVyPWJ1ZmZlci5CdWZmZXI7dmFyIFNsb3dCdWZmZXI9YnVmZmVyLlNsb3dCdWZmZXI7dmFyIE1BWF9MRU49YnVmZmVyLmtNYXhMZW5ndGh8fDIxNDc0ODM2NDc7ZXhwb3J0cy5hbGxvYz1mdW5jdGlvbiBhbGxvYyhzaXplLGZpbGwsZW5jb2Rpbmcpe2lmKHR5cGVvZiBCdWZmZXIuYWxsb2M9PT0iZnVuY3Rpb24iKXtyZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsZmlsbCxlbmNvZGluZyl9aWYodHlwZW9mIGVuY29kaW5nPT09Im51bWJlciIpe3Rocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlciIpfWlmKHR5cGVvZiBzaXplIT09Im51bWJlciIpe3Rocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpfWlmKHNpemU+TUFYX0xFTil7dGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIil9dmFyIGVuYz1lbmNvZGluZzt2YXIgX2ZpbGw9ZmlsbDtpZihfZmlsbD09PXVuZGVmaW5lZCl7ZW5jPXVuZGVmaW5lZDtfZmlsbD0wfXZhciBidWY9bmV3IEJ1ZmZlcihzaXplKTtpZih0eXBlb2YgX2ZpbGw9PT0ic3RyaW5nIil7dmFyIGZpbGxCdWY9bmV3IEJ1ZmZlcihfZmlsbCxlbmMpO3ZhciBmbGVuPWZpbGxCdWYubGVuZ3RoO3ZhciBpPS0xO3doaWxlKCsraTxzaXplKXtidWZbaV09ZmlsbEJ1ZltpJWZsZW5dfX1lbHNle2J1Zi5maWxsKF9maWxsKX1yZXR1cm4gYnVmfTtleHBvcnRzLmFsbG9jVW5zYWZlPWZ1bmN0aW9uIGFsbG9jVW5zYWZlKHNpemUpe2lmKHR5cGVvZiBCdWZmZXIuYWxsb2NVbnNhZmU9PT0iZnVuY3Rpb24iKXtyZXR1cm4gQnVmZmVyLmFsbG9jVW5zYWZlKHNpemUpfWlmKHR5cGVvZiBzaXplIT09Im51bWJlciIpe3Rocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpfWlmKHNpemU+TUFYX0xFTil7dGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIil9cmV0dXJuIG5ldyBCdWZmZXIoc2l6ZSl9O2V4cG9ydHMuZnJvbT1mdW5jdGlvbiBmcm9tKHZhbHVlLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKXtpZih0eXBlb2YgQnVmZmVyLmZyb209PT0iZnVuY3Rpb24iJiYoIWdsb2JhbC5VaW50OEFycmF5fHxVaW50OEFycmF5LmZyb20hPT1CdWZmZXIuZnJvbSkpe3JldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSxlbmNvZGluZ09yT2Zmc2V0LGxlbmd0aCl9aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKX1pZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsZW5jb2RpbmdPck9mZnNldCl9aWYodHlwZW9mIEFycmF5QnVmZmVyIT09InVuZGVmaW5lZCImJnZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhciBvZmZzZXQ9ZW5jb2RpbmdPck9mZnNldDtpZihhcmd1bWVudHMubGVuZ3RoPT09MSl7cmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpfWlmKHR5cGVvZiBvZmZzZXQ9PT0idW5kZWZpbmVkIil7b2Zmc2V0PTB9dmFyIGxlbj1sZW5ndGg7aWYodHlwZW9mIGxlbj09PSJ1bmRlZmluZWQiKXtsZW49dmFsdWUuYnl0ZUxlbmd0aC1vZmZzZXR9aWYob2Zmc2V0Pj12YWx1ZS5ieXRlTGVuZ3RoKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpfWlmKGxlbj52YWx1ZS5ieXRlTGVuZ3RoLW9mZnNldCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKX1yZXR1cm4gbmV3IEJ1ZmZlcih2YWx1ZS5zbGljZShvZmZzZXQsb2Zmc2V0K2xlbikpfWlmKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpe3ZhciBvdXQ9bmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO3ZhbHVlLmNvcHkob3V0LDAsMCx2YWx1ZS5sZW5ndGgpO3JldHVybiBvdXR9aWYodmFsdWUpe2lmKEFycmF5LmlzQXJyYXkodmFsdWUpfHx0eXBlb2YgQXJyYXlCdWZmZXIhPT0idW5kZWZpbmVkIiYmdmFsdWUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdmFsdWUpe3JldHVybiBuZXcgQnVmZmVyKHZhbHVlKX1pZih2YWx1ZS50eXBlPT09IkJ1ZmZlciImJkFycmF5LmlzQXJyYXkodmFsdWUuZGF0YSkpe3JldHVybiBuZXcgQnVmZmVyKHZhbHVlLmRhdGEpfX10aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsICIrIkFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9O2V4cG9ydHMuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKXtpZih0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdz09PSJmdW5jdGlvbiIpe3JldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpfWlmKHR5cGVvZiBzaXplIT09Im51bWJlciIpe3Rocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpfWlmKHNpemU+PU1BWF9MRU4pe3Rocm93IG5ldyBSYW5nZUVycm9yKCJzaXplIGlzIHRvbyBsYXJnZSIpfXJldHVybiBuZXcgU2xvd0J1ZmZlcihzaXplKX19KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiP3dpbmRvdzp7fSl9LHtidWZmZXI6NX1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyhmdW5jdGlvbihnbG9iYWwpeyJ1c2Ugc3RyaWN0Ijt2YXIgYmFzZTY0PXJlcXVpcmUoImJhc2U2NC1qcyIpO3ZhciBpZWVlNzU0PXJlcXVpcmUoImllZWU3NTQiKTt2YXIgaXNBcnJheT1yZXF1aXJlKCJpc2FycmF5Iik7ZXhwb3J0cy5CdWZmZXI9QnVmZmVyO2V4cG9ydHMuU2xvd0J1ZmZlcj1TbG93QnVmZmVyO2V4cG9ydHMuSU5TUEVDVF9NQVhfQllURVM9NTA7QnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9Z2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQhPT11bmRlZmluZWQ/Z2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQ6dHlwZWRBcnJheVN1cHBvcnQoKTtleHBvcnRzLmtNYXhMZW5ndGg9a01heExlbmd0aCgpO2Z1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0KCl7dHJ5e3ZhciBhcnI9bmV3IFVpbnQ4QXJyYXkoMSk7YXJyLl9fcHJvdG9fXz17X19wcm90b19fOlVpbnQ4QXJyYXkucHJvdG90eXBlLGZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBhcnIuZm9vKCk9PT00MiYmdHlwZW9mIGFyci5zdWJhcnJheT09PSJmdW5jdGlvbiImJmFyci5zdWJhcnJheSgxLDEpLmJ5dGVMZW5ndGg9PT0wfWNhdGNoKGUpe3JldHVybiBmYWxzZX19ZnVuY3Rpb24ga01heExlbmd0aCgpe3JldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gY3JlYXRlQnVmZmVyKHRoYXQsbGVuZ3RoKXtpZihrTWF4TGVuZ3RoKCk8bGVuZ3RoKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKX1pZihCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7dGhhdD1uZXcgVWludDhBcnJheShsZW5ndGgpO3RoYXQuX19wcm90b19fPUJ1ZmZlci5wcm90b3R5cGV9ZWxzZXtpZih0aGF0PT09bnVsbCl7dGhhdD1uZXcgQnVmZmVyKGxlbmd0aCl9dGhhdC5sZW5ndGg9bGVuZ3RofXJldHVybiB0aGF0fWZ1bmN0aW9uIEJ1ZmZlcihhcmcsZW5jb2RpbmdPck9mZnNldCxsZW5ndGgpe2lmKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCYmISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSl7cmV0dXJuIG5ldyBCdWZmZXIoYXJnLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKX1pZih0eXBlb2YgYXJnPT09Im51bWJlciIpe2lmKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0PT09InN0cmluZyIpe3Rocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKX1yZXR1cm4gYWxsb2NVbnNhZmUodGhpcyxhcmcpfXJldHVybiBmcm9tKHRoaXMsYXJnLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKX1CdWZmZXIucG9vbFNpemU9ODE5MjtCdWZmZXIuX2F1Z21lbnQ9ZnVuY3Rpb24oYXJyKXthcnIuX19wcm90b19fPUJ1ZmZlci5wcm90b3R5cGU7cmV0dXJuIGFycn07ZnVuY3Rpb24gZnJvbSh0aGF0LHZhbHVlLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKXtpZih0eXBlb2YgdmFsdWU9PT0ibnVtYmVyIil7dGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpfWlmKHR5cGVvZiBBcnJheUJ1ZmZlciE9PSJ1bmRlZmluZWQiJiZ2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXtyZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsdmFsdWUsZW5jb2RpbmdPck9mZnNldCxsZW5ndGgpfWlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gZnJvbVN0cmluZyh0aGF0LHZhbHVlLGVuY29kaW5nT3JPZmZzZXQpfXJldHVybiBmcm9tT2JqZWN0KHRoYXQsdmFsdWUpfUJ1ZmZlci5mcm9tPWZ1bmN0aW9uKHZhbHVlLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKXtyZXR1cm4gZnJvbShudWxsLHZhbHVlLGVuY29kaW5nT3JPZmZzZXQsbGVuZ3RoKX07aWYoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpe0J1ZmZlci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlO0J1ZmZlci5fX3Byb3RvX189VWludDhBcnJheTtpZih0eXBlb2YgU3ltYm9sIT09InVuZGVmaW5lZCImJlN5bWJvbC5zcGVjaWVzJiZCdWZmZXJbU3ltYm9sLnNwZWNpZXNdPT09QnVmZmVyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTp0cnVlfSl9fWZ1bmN0aW9uIGFzc2VydFNpemUoc2l6ZSl7aWYodHlwZW9mIHNpemUhPT0ibnVtYmVyIil7dGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKX1lbHNlIGlmKHNpemU8MCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfX1mdW5jdGlvbiBhbGxvYyh0aGF0LHNpemUsZmlsbCxlbmNvZGluZyl7YXNzZXJ0U2l6ZShzaXplKTtpZihzaXplPD0wKXtyZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsc2l6ZSl9aWYoZmlsbCE9PXVuZGVmaW5lZCl7cmV0dXJuIHR5cGVvZiBlbmNvZGluZz09PSJzdHJpbmciP2NyZWF0ZUJ1ZmZlcih0aGF0LHNpemUpLmZpbGwoZmlsbCxlbmNvZGluZyk6Y3JlYXRlQnVmZmVyKHRoYXQsc2l6ZSkuZmlsbChmaWxsKX1yZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsc2l6ZSl9QnVmZmVyLmFsbG9jPWZ1bmN0aW9uKHNpemUsZmlsbCxlbmNvZGluZyl7cmV0dXJuIGFsbG9jKG51bGwsc2l6ZSxmaWxsLGVuY29kaW5nKX07ZnVuY3Rpb24gYWxsb2NVbnNhZmUodGhhdCxzaXplKXthc3NlcnRTaXplKHNpemUpO3RoYXQ9Y3JlYXRlQnVmZmVyKHRoYXQsc2l6ZTwwPzA6Y2hlY2tlZChzaXplKXwwKTtpZighQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpe2Zvcih2YXIgaT0wO2k8c2l6ZTsrK2kpe3RoYXRbaV09MH19cmV0dXJuIHRoYXR9QnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHNpemUpe3JldHVybiBhbGxvY1Vuc2FmZShudWxsLHNpemUpfTtCdWZmZXIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHNpemUpe3JldHVybiBhbGxvY1Vuc2FmZShudWxsLHNpemUpfTtmdW5jdGlvbiBmcm9tU3RyaW5nKHRoYXQsc3RyaW5nLGVuY29kaW5nKXtpZih0eXBlb2YgZW5jb2RpbmchPT0ic3RyaW5nInx8ZW5jb2Rpbmc9PT0iIil7ZW5jb2Rpbmc9InV0ZjgifWlmKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpe3Rocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpfXZhciBsZW5ndGg9Ynl0ZUxlbmd0aChzdHJpbmcsZW5jb2RpbmcpfDA7dGhhdD1jcmVhdGVCdWZmZXIodGhhdCxsZW5ndGgpO3ZhciBhY3R1YWw9dGhhdC53cml0ZShzdHJpbmcsZW5jb2RpbmcpO2lmKGFjdHVhbCE9PWxlbmd0aCl7dGhhdD10aGF0LnNsaWNlKDAsYWN0dWFsKX1yZXR1cm4gdGhhdH1mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKHRoYXQsYXJyYXkpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoPDA/MDpjaGVja2VkKGFycmF5Lmxlbmd0aCl8MDt0aGF0PWNyZWF0ZUJ1ZmZlcih0aGF0LGxlbmd0aCk7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSs9MSl7dGhhdFtpXT1hcnJheVtpXSYyNTV9cmV0dXJuIHRoYXR9ZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyKHRoYXQsYXJyYXksYnl0ZU9mZnNldCxsZW5ndGgpe2FycmF5LmJ5dGVMZW5ndGg7aWYoYnl0ZU9mZnNldDwwfHxhcnJheS5ieXRlTGVuZ3RoPGJ5dGVPZmZzZXQpe3Rocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIil9aWYoYXJyYXkuYnl0ZUxlbmd0aDxieXRlT2Zmc2V0KyhsZW5ndGh8fDApKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpfWlmKGJ5dGVPZmZzZXQ9PT11bmRlZmluZWQmJmxlbmd0aD09PXVuZGVmaW5lZCl7YXJyYXk9bmV3IFVpbnQ4QXJyYXkoYXJyYXkpfWVsc2UgaWYobGVuZ3RoPT09dW5kZWZpbmVkKXthcnJheT1uZXcgVWludDhBcnJheShhcnJheSxieXRlT2Zmc2V0KX1lbHNle2FycmF5PW5ldyBVaW50OEFycmF5KGFycmF5LGJ5dGVPZmZzZXQsbGVuZ3RoKX1pZihCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7dGhhdD1hcnJheTt0aGF0Ll9fcHJvdG9fXz1CdWZmZXIucHJvdG90eXBlfWVsc2V7dGhhdD1mcm9tQXJyYXlMaWtlKHRoYXQsYXJyYXkpfXJldHVybiB0aGF0fWZ1bmN0aW9uIGZyb21PYmplY3QodGhhdCxvYmope2lmKEJ1ZmZlci5pc0J1ZmZlcihvYmopKXt2YXIgbGVuPWNoZWNrZWQob2JqLmxlbmd0aCl8MDt0aGF0PWNyZWF0ZUJ1ZmZlcih0aGF0LGxlbik7aWYodGhhdC5sZW5ndGg9PT0wKXtyZXR1cm4gdGhhdH1vYmouY29weSh0aGF0LDAsMCxsZW4pO3JldHVybiB0aGF0fWlmKG9iail7aWYodHlwZW9mIEFycmF5QnVmZmVyIT09InVuZGVmaW5lZCImJm9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiBvYmope2lmKHR5cGVvZiBvYmoubGVuZ3RoIT09Im51bWJlciJ8fGlzbmFuKG9iai5sZW5ndGgpKXtyZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsMCl9cmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCxvYmopfWlmKG9iai50eXBlPT09IkJ1ZmZlciImJmlzQXJyYXkob2JqLmRhdGEpKXtyZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LG9iai5kYXRhKX19dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfWZ1bmN0aW9uIGNoZWNrZWQobGVuZ3RoKXtpZihsZW5ndGg+PWtNYXhMZW5ndGgoKSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gIisic2l6ZTogMHgiK2tNYXhMZW5ndGgoKS50b1N0cmluZygxNikrIiBieXRlcyIpfXJldHVybiBsZW5ndGh8MH1mdW5jdGlvbiBTbG93QnVmZmVyKGxlbmd0aCl7aWYoK2xlbmd0aCE9bGVuZ3RoKXtsZW5ndGg9MH1yZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpfUJ1ZmZlci5pc0J1ZmZlcj1mdW5jdGlvbiBpc0J1ZmZlcihiKXtyZXR1cm4hIShiIT1udWxsJiZiLl9pc0J1ZmZlcil9O0J1ZmZlci5jb21wYXJlPWZ1bmN0aW9uIGNvbXBhcmUoYSxiKXtpZighQnVmZmVyLmlzQnVmZmVyKGEpfHwhQnVmZmVyLmlzQnVmZmVyKGIpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIil9aWYoYT09PWIpcmV0dXJuIDA7dmFyIHg9YS5sZW5ndGg7dmFyIHk9Yi5sZW5ndGg7Zm9yKHZhciBpPTAsbGVuPU1hdGgubWluKHgseSk7aTxsZW47KytpKXtpZihhW2ldIT09YltpXSl7eD1hW2ldO3k9YltpXTticmVha319aWYoeDx5KXJldHVybi0xO2lmKHk8eClyZXR1cm4gMTtyZXR1cm4gMH07QnVmZmVyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24gaXNFbmNvZGluZyhlbmNvZGluZyl7c3dpdGNoKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB0cnVlO2RlZmF1bHQ6cmV0dXJuIGZhbHNlfX07QnVmZmVyLmNvbmNhdD1mdW5jdGlvbiBjb25jYXQobGlzdCxsZW5ndGgpe2lmKCFpc0FycmF5KGxpc3QpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyl9aWYobGlzdC5sZW5ndGg9PT0wKXtyZXR1cm4gQnVmZmVyLmFsbG9jKDApfXZhciBpO2lmKGxlbmd0aD09PXVuZGVmaW5lZCl7bGVuZ3RoPTA7Zm9yKGk9MDtpPGxpc3QubGVuZ3RoOysraSl7bGVuZ3RoKz1saXN0W2ldLmxlbmd0aH19dmFyIGJ1ZmZlcj1CdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKTt2YXIgcG9zPTA7Zm9yKGk9MDtpPGxpc3QubGVuZ3RoOysraSl7dmFyIGJ1Zj1saXN0W2ldO2lmKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSl7dGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpfWJ1Zi5jb3B5KGJ1ZmZlcixwb3MpO3Bvcys9YnVmLmxlbmd0aH1yZXR1cm4gYnVmZmVyfTtmdW5jdGlvbiBieXRlTGVuZ3RoKHN0cmluZyxlbmNvZGluZyl7aWYoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpe3JldHVybiBzdHJpbmcubGVuZ3RofWlmKHR5cGVvZiBBcnJheUJ1ZmZlciE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3PT09ImZ1bmN0aW9uIiYmKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpfHxzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpe3JldHVybiBzdHJpbmcuYnl0ZUxlbmd0aH1pZih0eXBlb2Ygc3RyaW5nIT09InN0cmluZyIpe3N0cmluZz0iIitzdHJpbmd9dmFyIGxlbj1zdHJpbmcubGVuZ3RoO2lmKGxlbj09PTApcmV0dXJuIDA7dmFyIGxvd2VyZWRDYXNlPWZhbHNlO2Zvcig7Oyl7c3dpdGNoKGVuY29kaW5nKXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBsZW47Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHVuZGVmaW5lZDpyZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBsZW4qMjtjYXNlImhleCI6cmV0dXJuIGxlbj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoO2RlZmF1bHQ6aWYobG93ZXJlZENhc2UpcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoO2VuY29kaW5nPSgiIitlbmNvZGluZykudG9Mb3dlckNhc2UoKTtsb3dlcmVkQ2FzZT10cnVlfX19QnVmZmVyLmJ5dGVMZW5ndGg9Ynl0ZUxlbmd0aDtmdW5jdGlvbiBzbG93VG9TdHJpbmcoZW5jb2Rpbmcsc3RhcnQsZW5kKXt2YXIgbG93ZXJlZENhc2U9ZmFsc2U7aWYoc3RhcnQ9PT11bmRlZmluZWR8fHN0YXJ0PDApe3N0YXJ0PTB9aWYoc3RhcnQ+dGhpcy5sZW5ndGgpe3JldHVybiIifWlmKGVuZD09PXVuZGVmaW5lZHx8ZW5kPnRoaXMubGVuZ3RoKXtlbmQ9dGhpcy5sZW5ndGh9aWYoZW5kPD0wKXtyZXR1cm4iIn1lbmQ+Pj49MDtzdGFydD4+Pj0wO2lmKGVuZDw9c3RhcnQpe3JldHVybiIifWlmKCFlbmNvZGluZyllbmNvZGluZz0idXRmOCI7d2hpbGUodHJ1ZSl7c3dpdGNoKGVuY29kaW5nKXtjYXNlImhleCI6cmV0dXJuIGhleFNsaWNlKHRoaXMsc3RhcnQsZW5kKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiB1dGY4U2xpY2UodGhpcyxzdGFydCxlbmQpO2Nhc2UiYXNjaWkiOnJldHVybiBhc2NpaVNsaWNlKHRoaXMsc3RhcnQsZW5kKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBsYXRpbjFTbGljZSh0aGlzLHN0YXJ0LGVuZCk7Y2FzZSJiYXNlNjQiOnJldHVybiBiYXNlNjRTbGljZSh0aGlzLHN0YXJ0LGVuZCk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB1dGYxNmxlU2xpY2UodGhpcyxzdGFydCxlbmQpO2RlZmF1bHQ6aWYobG93ZXJlZENhc2UpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlbmNvZGluZyk7ZW5jb2Rpbmc9KGVuY29kaW5nKyIiKS50b0xvd2VyQ2FzZSgpO2xvd2VyZWRDYXNlPXRydWV9fX1CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlcj10cnVlO2Z1bmN0aW9uIHN3YXAoYixuLG0pe3ZhciBpPWJbbl07YltuXT1iW21dO2JbbV09aX1CdWZmZXIucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbiBzd2FwMTYoKXt2YXIgbGVuPXRoaXMubGVuZ3RoO2lmKGxlbiUyIT09MCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIil9Zm9yKHZhciBpPTA7aTxsZW47aSs9Mil7c3dhcCh0aGlzLGksaSsxKX1yZXR1cm4gdGhpc307QnVmZmVyLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24gc3dhcDMyKCl7dmFyIGxlbj10aGlzLmxlbmd0aDtpZihsZW4lNCE9PTApe3Rocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpfWZvcih2YXIgaT0wO2k8bGVuO2krPTQpe3N3YXAodGhpcyxpLGkrMyk7c3dhcCh0aGlzLGkrMSxpKzIpfXJldHVybiB0aGlzfTtCdWZmZXIucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbiBzd2FwNjQoKXt2YXIgbGVuPXRoaXMubGVuZ3RoO2lmKGxlbiU4IT09MCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIil9Zm9yKHZhciBpPTA7aTxsZW47aSs9OCl7c3dhcCh0aGlzLGksaSs3KTtzd2FwKHRoaXMsaSsxLGkrNik7c3dhcCh0aGlzLGkrMixpKzUpO3N3YXAodGhpcyxpKzMsaSs0KX1yZXR1cm4gdGhpc307QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbiB0b1N0cmluZygpe3ZhciBsZW5ndGg9dGhpcy5sZW5ndGh8MDtpZihsZW5ndGg9PT0wKXJldHVybiIiO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiB1dGY4U2xpY2UodGhpcywwLGxlbmd0aCk7cmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O0J1ZmZlci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uIGVxdWFscyhiKXtpZighQnVmZmVyLmlzQnVmZmVyKGIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih0aGlzPT09YilyZXR1cm4gdHJ1ZTtyZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcyxiKT09PTB9O0J1ZmZlci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbiBpbnNwZWN0KCl7dmFyIHN0cj0iIjt2YXIgbWF4PWV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVM7aWYodGhpcy5sZW5ndGg+MCl7c3RyPXRoaXMudG9TdHJpbmcoImhleCIsMCxtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKTtpZih0aGlzLmxlbmd0aD5tYXgpc3RyKz0iIC4uLiAifXJldHVybiI8QnVmZmVyICIrc3RyKyI+In07QnVmZmVyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uIGNvbXBhcmUodGFyZ2V0LHN0YXJ0LGVuZCx0aGlzU3RhcnQsdGhpc0VuZCl7aWYoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIil9aWYoc3RhcnQ9PT11bmRlZmluZWQpe3N0YXJ0PTB9aWYoZW5kPT09dW5kZWZpbmVkKXtlbmQ9dGFyZ2V0P3RhcmdldC5sZW5ndGg6MH1pZih0aGlzU3RhcnQ9PT11bmRlZmluZWQpe3RoaXNTdGFydD0wfWlmKHRoaXNFbmQ9PT11bmRlZmluZWQpe3RoaXNFbmQ9dGhpcy5sZW5ndGh9aWYoc3RhcnQ8MHx8ZW5kPnRhcmdldC5sZW5ndGh8fHRoaXNTdGFydDwwfHx0aGlzRW5kPnRoaXMubGVuZ3RoKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iil9aWYodGhpc1N0YXJ0Pj10aGlzRW5kJiZzdGFydD49ZW5kKXtyZXR1cm4gMH1pZih0aGlzU3RhcnQ+PXRoaXNFbmQpe3JldHVybi0xfWlmKHN0YXJ0Pj1lbmQpe3JldHVybiAxfXN0YXJ0Pj4+PTA7ZW5kPj4+PTA7dGhpc1N0YXJ0Pj4+PTA7dGhpc0VuZD4+Pj0wO2lmKHRoaXM9PT10YXJnZXQpcmV0dXJuIDA7dmFyIHg9dGhpc0VuZC10aGlzU3RhcnQ7dmFyIHk9ZW5kLXN0YXJ0O3ZhciBsZW49TWF0aC5taW4oeCx5KTt2YXIgdGhpc0NvcHk9dGhpcy5zbGljZSh0aGlzU3RhcnQsdGhpc0VuZCk7dmFyIHRhcmdldENvcHk9dGFyZ2V0LnNsaWNlKHN0YXJ0LGVuZCk7Zm9yKHZhciBpPTA7aTxsZW47KytpKXtpZih0aGlzQ29weVtpXSE9PXRhcmdldENvcHlbaV0pe3g9dGhpc0NvcHlbaV07eT10YXJnZXRDb3B5W2ldO2JyZWFrfX1pZih4PHkpcmV0dXJuLTE7aWYoeTx4KXJldHVybiAxO3JldHVybiAwfTtmdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZihidWZmZXIsdmFsLGJ5dGVPZmZzZXQsZW5jb2RpbmcsZGlyKXtpZihidWZmZXIubGVuZ3RoPT09MClyZXR1cm4tMTtpZih0eXBlb2YgYnl0ZU9mZnNldD09PSJzdHJpbmciKXtlbmNvZGluZz1ieXRlT2Zmc2V0O2J5dGVPZmZzZXQ9MH1lbHNlIGlmKGJ5dGVPZmZzZXQ+MjE0NzQ4MzY0Nyl7Ynl0ZU9mZnNldD0yMTQ3NDgzNjQ3fWVsc2UgaWYoYnl0ZU9mZnNldDwtMjE0NzQ4MzY0OCl7Ynl0ZU9mZnNldD0tMjE0NzQ4MzY0OH1ieXRlT2Zmc2V0PStieXRlT2Zmc2V0O2lmKGlzTmFOKGJ5dGVPZmZzZXQpKXtieXRlT2Zmc2V0PWRpcj8wOmJ1ZmZlci5sZW5ndGgtMX1pZihieXRlT2Zmc2V0PDApYnl0ZU9mZnNldD1idWZmZXIubGVuZ3RoK2J5dGVPZmZzZXQ7aWYoYnl0ZU9mZnNldD49YnVmZmVyLmxlbmd0aCl7aWYoZGlyKXJldHVybi0xO2Vsc2UgYnl0ZU9mZnNldD1idWZmZXIubGVuZ3RoLTF9ZWxzZSBpZihieXRlT2Zmc2V0PDApe2lmKGRpcilieXRlT2Zmc2V0PTA7ZWxzZSByZXR1cm4tMX1pZih0eXBlb2YgdmFsPT09InN0cmluZyIpe3ZhbD1CdWZmZXIuZnJvbSh2YWwsZW5jb2RpbmcpfWlmKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKXtpZih2YWwubGVuZ3RoPT09MCl7cmV0dXJuLTF9cmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsdmFsLGJ5dGVPZmZzZXQsZW5jb2RpbmcsZGlyKX1lbHNlIGlmKHR5cGVvZiB2YWw9PT0ibnVtYmVyIil7dmFsPXZhbCYyNTU7aWYoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJnR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mPT09ImZ1bmN0aW9uIil7aWYoZGlyKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlcix2YWwsYnl0ZU9mZnNldCl9ZWxzZXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsdmFsLGJ5dGVPZmZzZXQpfX1yZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlcixbdmFsXSxieXRlT2Zmc2V0LGVuY29kaW5nLGRpcil9dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gYXJyYXlJbmRleE9mKGFycix2YWwsYnl0ZU9mZnNldCxlbmNvZGluZyxkaXIpe3ZhciBpbmRleFNpemU9MTt2YXIgYXJyTGVuZ3RoPWFyci5sZW5ndGg7dmFyIHZhbExlbmd0aD12YWwubGVuZ3RoO2lmKGVuY29kaW5nIT09dW5kZWZpbmVkKXtlbmNvZGluZz1TdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCk7aWYoZW5jb2Rpbmc9PT0idWNzMiJ8fGVuY29kaW5nPT09InVjcy0yInx8ZW5jb2Rpbmc9PT0idXRmMTZsZSJ8fGVuY29kaW5nPT09InV0Zi0xNmxlIil7aWYoYXJyLmxlbmd0aDwyfHx2YWwubGVuZ3RoPDIpe3JldHVybi0xfWluZGV4U2l6ZT0yO2Fyckxlbmd0aC89Mjt2YWxMZW5ndGgvPTI7Ynl0ZU9mZnNldC89Mn19ZnVuY3Rpb24gcmVhZChidWYsaSl7aWYoaW5kZXhTaXplPT09MSl7cmV0dXJuIGJ1ZltpXX1lbHNle3JldHVybiBidWYucmVhZFVJbnQxNkJFKGkqaW5kZXhTaXplKX19dmFyIGk7aWYoZGlyKXt2YXIgZm91bmRJbmRleD0tMTtmb3IoaT1ieXRlT2Zmc2V0O2k8YXJyTGVuZ3RoO2krKyl7aWYocmVhZChhcnIsaSk9PT1yZWFkKHZhbCxmb3VuZEluZGV4PT09LTE/MDppLWZvdW5kSW5kZXgpKXtpZihmb3VuZEluZGV4PT09LTEpZm91bmRJbmRleD1pO2lmKGktZm91bmRJbmRleCsxPT09dmFsTGVuZ3RoKXJldHVybiBmb3VuZEluZGV4KmluZGV4U2l6ZX1lbHNle2lmKGZvdW5kSW5kZXghPT0tMSlpLT1pLWZvdW5kSW5kZXg7Zm91bmRJbmRleD0tMX19fWVsc2V7aWYoYnl0ZU9mZnNldCt2YWxMZW5ndGg+YXJyTGVuZ3RoKWJ5dGVPZmZzZXQ9YXJyTGVuZ3RoLXZhbExlbmd0aDtmb3IoaT1ieXRlT2Zmc2V0O2k+PTA7aS0tKXt2YXIgZm91bmQ9dHJ1ZTtmb3IodmFyIGo9MDtqPHZhbExlbmd0aDtqKyspe2lmKHJlYWQoYXJyLGkraikhPT1yZWFkKHZhbCxqKSl7Zm91bmQ9ZmFsc2U7YnJlYWt9fWlmKGZvdW5kKXJldHVybiBpfX1yZXR1cm4tMX1CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uIGluY2x1ZGVzKHZhbCxieXRlT2Zmc2V0LGVuY29kaW5nKXtyZXR1cm4gdGhpcy5pbmRleE9mKHZhbCxieXRlT2Zmc2V0LGVuY29kaW5nKSE9PS0xfTtCdWZmZXIucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24gaW5kZXhPZih2YWwsYnl0ZU9mZnNldCxlbmNvZGluZyl7cmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsdmFsLGJ5dGVPZmZzZXQsZW5jb2RpbmcsdHJ1ZSl9O0J1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24gbGFzdEluZGV4T2YodmFsLGJ5dGVPZmZzZXQsZW5jb2Rpbmcpe3JldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLHZhbCxieXRlT2Zmc2V0LGVuY29kaW5nLGZhbHNlKX07ZnVuY3Rpb24gaGV4V3JpdGUoYnVmLHN0cmluZyxvZmZzZXQsbGVuZ3RoKXtvZmZzZXQ9TnVtYmVyKG9mZnNldCl8fDA7dmFyIHJlbWFpbmluZz1idWYubGVuZ3RoLW9mZnNldDtpZighbGVuZ3RoKXtsZW5ndGg9cmVtYWluaW5nfWVsc2V7bGVuZ3RoPU51bWJlcihsZW5ndGgpO2lmKGxlbmd0aD5yZW1haW5pbmcpe2xlbmd0aD1yZW1haW5pbmd9fXZhciBzdHJMZW49c3RyaW5nLmxlbmd0aDtpZihzdHJMZW4lMiE9PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7aWYobGVuZ3RoPnN0ckxlbi8yKXtsZW5ndGg9c3RyTGVuLzJ9Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXt2YXIgcGFyc2VkPXBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSoyLDIpLDE2KTtpZihpc05hTihwYXJzZWQpKXJldHVybiBpO2J1ZltvZmZzZXQraV09cGFyc2VkfXJldHVybiBpfWZ1bmN0aW9uIHV0ZjhXcml0ZShidWYsc3RyaW5nLG9mZnNldCxsZW5ndGgpe3JldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZyxidWYubGVuZ3RoLW9mZnNldCksYnVmLG9mZnNldCxsZW5ndGgpfWZ1bmN0aW9uIGFzY2lpV3JpdGUoYnVmLHN0cmluZyxvZmZzZXQsbGVuZ3RoKXtyZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSxidWYsb2Zmc2V0LGxlbmd0aCl9ZnVuY3Rpb24gbGF0aW4xV3JpdGUoYnVmLHN0cmluZyxvZmZzZXQsbGVuZ3RoKXtyZXR1cm4gYXNjaWlXcml0ZShidWYsc3RyaW5nLG9mZnNldCxsZW5ndGgpfWZ1bmN0aW9uIGJhc2U2NFdyaXRlKGJ1ZixzdHJpbmcsb2Zmc2V0LGxlbmd0aCl7cmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLGJ1ZixvZmZzZXQsbGVuZ3RoKX1mdW5jdGlvbiB1Y3MyV3JpdGUoYnVmLHN0cmluZyxvZmZzZXQsbGVuZ3RoKXtyZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsYnVmLmxlbmd0aC1vZmZzZXQpLGJ1ZixvZmZzZXQsbGVuZ3RoKX1CdWZmZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uIHdyaXRlKHN0cmluZyxvZmZzZXQsbGVuZ3RoLGVuY29kaW5nKXtpZihvZmZzZXQ9PT11bmRlZmluZWQpe2VuY29kaW5nPSJ1dGY4IjtsZW5ndGg9dGhpcy5sZW5ndGg7b2Zmc2V0PTB9ZWxzZSBpZihsZW5ndGg9PT11bmRlZmluZWQmJnR5cGVvZiBvZmZzZXQ9PT0ic3RyaW5nIil7ZW5jb2Rpbmc9b2Zmc2V0O2xlbmd0aD10aGlzLmxlbmd0aDtvZmZzZXQ9MH1lbHNlIGlmKGlzRmluaXRlKG9mZnNldCkpe29mZnNldD1vZmZzZXR8MDtpZihpc0Zpbml0ZShsZW5ndGgpKXtsZW5ndGg9bGVuZ3RofDA7aWYoZW5jb2Rpbmc9PT11bmRlZmluZWQpZW5jb2Rpbmc9InV0ZjgifWVsc2V7ZW5jb2Rpbmc9bGVuZ3RoO2xlbmd0aD11bmRlZmluZWR9fWVsc2V7dGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpfXZhciByZW1haW5pbmc9dGhpcy5sZW5ndGgtb2Zmc2V0O2lmKGxlbmd0aD09PXVuZGVmaW5lZHx8bGVuZ3RoPnJlbWFpbmluZylsZW5ndGg9cmVtYWluaW5nO2lmKHN0cmluZy5sZW5ndGg+MCYmKGxlbmd0aDwwfHxvZmZzZXQ8MCl8fG9mZnNldD50aGlzLmxlbmd0aCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIil9aWYoIWVuY29kaW5nKWVuY29kaW5nPSJ1dGY4Ijt2YXIgbG93ZXJlZENhc2U9ZmFsc2U7Zm9yKDs7KXtzd2l0Y2goZW5jb2Rpbmcpe2Nhc2UiaGV4IjpyZXR1cm4gaGV4V3JpdGUodGhpcyxzdHJpbmcsb2Zmc2V0LGxlbmd0aCk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gdXRmOFdyaXRlKHRoaXMsc3RyaW5nLG9mZnNldCxsZW5ndGgpO2Nhc2UiYXNjaWkiOnJldHVybiBhc2NpaVdyaXRlKHRoaXMsc3RyaW5nLG9mZnNldCxsZW5ndGgpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsc3RyaW5nLG9mZnNldCxsZW5ndGgpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gYmFzZTY0V3JpdGUodGhpcyxzdHJpbmcsb2Zmc2V0LGxlbmd0aCk7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB1Y3MyV3JpdGUodGhpcyxzdHJpbmcsb2Zmc2V0LGxlbmd0aCk7ZGVmYXVsdDppZihsb3dlcmVkQ2FzZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2VuY29kaW5nKTtlbmNvZGluZz0oIiIrZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCk7bG93ZXJlZENhc2U9dHJ1ZX19fTtCdWZmZXIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2Z1bmN0aW9uIGJhc2U2NFNsaWNlKGJ1ZixzdGFydCxlbmQpe2lmKHN0YXJ0PT09MCYmZW5kPT09YnVmLmxlbmd0aCl7cmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zil9ZWxzZXtyZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LGVuZCkpfX1mdW5jdGlvbiB1dGY4U2xpY2UoYnVmLHN0YXJ0LGVuZCl7ZW5kPU1hdGgubWluKGJ1Zi5sZW5ndGgsZW5kKTt2YXIgcmVzPVtdO3ZhciBpPXN0YXJ0O3doaWxlKGk8ZW5kKXt2YXIgZmlyc3RCeXRlPWJ1ZltpXTt2YXIgY29kZVBvaW50PW51bGw7dmFyIGJ5dGVzUGVyU2VxdWVuY2U9Zmlyc3RCeXRlPjIzOT80OmZpcnN0Qnl0ZT4yMjM/MzpmaXJzdEJ5dGU+MTkxPzI6MTtpZihpK2J5dGVzUGVyU2VxdWVuY2U8PWVuZCl7dmFyIHNlY29uZEJ5dGUsdGhpcmRCeXRlLGZvdXJ0aEJ5dGUsdGVtcENvZGVQb2ludDtzd2l0Y2goYnl0ZXNQZXJTZXF1ZW5jZSl7Y2FzZSAxOmlmKGZpcnN0Qnl0ZTwxMjgpe2NvZGVQb2ludD1maXJzdEJ5dGV9YnJlYWs7Y2FzZSAyOnNlY29uZEJ5dGU9YnVmW2krMV07aWYoKHNlY29uZEJ5dGUmMTkyKT09PTEyOCl7dGVtcENvZGVQb2ludD0oZmlyc3RCeXRlJjMxKTw8NnxzZWNvbmRCeXRlJjYzO2lmKHRlbXBDb2RlUG9pbnQ+MTI3KXtjb2RlUG9pbnQ9dGVtcENvZGVQb2ludH19YnJlYWs7Y2FzZSAzOnNlY29uZEJ5dGU9YnVmW2krMV07dGhpcmRCeXRlPWJ1ZltpKzJdO2lmKChzZWNvbmRCeXRlJjE5Mik9PT0xMjgmJih0aGlyZEJ5dGUmMTkyKT09PTEyOCl7dGVtcENvZGVQb2ludD0oZmlyc3RCeXRlJjE1KTw8MTJ8KHNlY29uZEJ5dGUmNjMpPDw2fHRoaXJkQnl0ZSY2MztpZih0ZW1wQ29kZVBvaW50PjIwNDcmJih0ZW1wQ29kZVBvaW50PDU1Mjk2fHx0ZW1wQ29kZVBvaW50PjU3MzQzKSl7Y29kZVBvaW50PXRlbXBDb2RlUG9pbnR9fWJyZWFrO2Nhc2UgNDpzZWNvbmRCeXRlPWJ1ZltpKzFdO3RoaXJkQnl0ZT1idWZbaSsyXTtmb3VydGhCeXRlPWJ1ZltpKzNdO2lmKChzZWNvbmRCeXRlJjE5Mik9PT0xMjgmJih0aGlyZEJ5dGUmMTkyKT09PTEyOCYmKGZvdXJ0aEJ5dGUmMTkyKT09PTEyOCl7dGVtcENvZGVQb2ludD0oZmlyc3RCeXRlJjE1KTw8MTh8KHNlY29uZEJ5dGUmNjMpPDwxMnwodGhpcmRCeXRlJjYzKTw8Nnxmb3VydGhCeXRlJjYzO2lmKHRlbXBDb2RlUG9pbnQ+NjU1MzUmJnRlbXBDb2RlUG9pbnQ8MTExNDExMil7Y29kZVBvaW50PXRlbXBDb2RlUG9pbnR9fX19aWYoY29kZVBvaW50PT09bnVsbCl7Y29kZVBvaW50PTY1NTMzO2J5dGVzUGVyU2VxdWVuY2U9MX1lbHNlIGlmKGNvZGVQb2ludD42NTUzNSl7Y29kZVBvaW50LT02NTUzNjtyZXMucHVzaChjb2RlUG9pbnQ+Pj4xMCYxMDIzfDU1Mjk2KTtjb2RlUG9pbnQ9NTYzMjB8Y29kZVBvaW50JjEwMjN9cmVzLnB1c2goY29kZVBvaW50KTtpKz1ieXRlc1BlclNlcXVlbmNlfXJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKX12YXIgTUFYX0FSR1VNRU5UU19MRU5HVEg9NDA5NjtmdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkoY29kZVBvaW50cyl7dmFyIGxlbj1jb2RlUG9pbnRzLmxlbmd0aDtpZihsZW48PU1BWF9BUkdVTUVOVFNfTEVOR1RIKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsY29kZVBvaW50cyl9dmFyIHJlcz0iIjt2YXIgaT0wO3doaWxlKGk8bGVuKXtyZXMrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGNvZGVQb2ludHMuc2xpY2UoaSxpKz1NQVhfQVJHVU1FTlRTX0xFTkdUSCkpfXJldHVybiByZXN9ZnVuY3Rpb24gYXNjaWlTbGljZShidWYsc3RhcnQsZW5kKXt2YXIgcmV0PSIiO2VuZD1NYXRoLm1pbihidWYubGVuZ3RoLGVuZCk7Zm9yKHZhciBpPXN0YXJ0O2k8ZW5kOysraSl7cmV0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSYxMjcpfXJldHVybiByZXR9ZnVuY3Rpb24gbGF0aW4xU2xpY2UoYnVmLHN0YXJ0LGVuZCl7dmFyIHJldD0iIjtlbmQ9TWF0aC5taW4oYnVmLmxlbmd0aCxlbmQpO2Zvcih2YXIgaT1zdGFydDtpPGVuZDsrK2kpe3JldCs9U3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pfXJldHVybiByZXR9ZnVuY3Rpb24gaGV4U2xpY2UoYnVmLHN0YXJ0LGVuZCl7dmFyIGxlbj1idWYubGVuZ3RoO2lmKCFzdGFydHx8c3RhcnQ8MClzdGFydD0wO2lmKCFlbmR8fGVuZDwwfHxlbmQ+bGVuKWVuZD1sZW47dmFyIG91dD0iIjtmb3IodmFyIGk9c3RhcnQ7aTxlbmQ7KytpKXtvdXQrPXRvSGV4KGJ1ZltpXSl9cmV0dXJuIG91dH1mdW5jdGlvbiB1dGYxNmxlU2xpY2UoYnVmLHN0YXJ0LGVuZCl7dmFyIGJ5dGVzPWJ1Zi5zbGljZShzdGFydCxlbmQpO3ZhciByZXM9IiI7Zm9yKHZhciBpPTA7aTxieXRlcy5sZW5ndGg7aSs9Mil7cmVzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldK2J5dGVzW2krMV0qMjU2KX1yZXR1cm4gcmVzfUJ1ZmZlci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24gc2xpY2Uoc3RhcnQsZW5kKXt2YXIgbGVuPXRoaXMubGVuZ3RoO3N0YXJ0PX5+c3RhcnQ7ZW5kPWVuZD09PXVuZGVmaW5lZD9sZW46fn5lbmQ7aWYoc3RhcnQ8MCl7c3RhcnQrPWxlbjtpZihzdGFydDwwKXN0YXJ0PTB9ZWxzZSBpZihzdGFydD5sZW4pe3N0YXJ0PWxlbn1pZihlbmQ8MCl7ZW5kKz1sZW47aWYoZW5kPDApZW5kPTB9ZWxzZSBpZihlbmQ+bGVuKXtlbmQ9bGVufWlmKGVuZDxzdGFydCllbmQ9c3RhcnQ7dmFyIG5ld0J1ZjtpZihCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7bmV3QnVmPXRoaXMuc3ViYXJyYXkoc3RhcnQsZW5kKTtuZXdCdWYuX19wcm90b19fPUJ1ZmZlci5wcm90b3R5cGV9ZWxzZXt2YXIgc2xpY2VMZW49ZW5kLXN0YXJ0O25ld0J1Zj1uZXcgQnVmZmVyKHNsaWNlTGVuLHVuZGVmaW5lZCk7Zm9yKHZhciBpPTA7aTxzbGljZUxlbjsrK2kpe25ld0J1ZltpXT10aGlzW2krc3RhcnRdfX1yZXR1cm4gbmV3QnVmfTtmdW5jdGlvbiBjaGVja09mZnNldChvZmZzZXQsZXh0LGxlbmd0aCl7aWYob2Zmc2V0JTEhPT0wfHxvZmZzZXQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYob2Zmc2V0K2V4dD5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24gcmVhZFVJbnRMRShvZmZzZXQsYnl0ZUxlbmd0aCxub0Fzc2VydCl7b2Zmc2V0PW9mZnNldHwwO2J5dGVMZW5ndGg9Ynl0ZUxlbmd0aHwwO2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsYnl0ZUxlbmd0aCx0aGlzLmxlbmd0aCk7dmFyIHZhbD10aGlzW29mZnNldF07dmFyIG11bD0xO3ZhciBpPTA7d2hpbGUoKytpPGJ5dGVMZW5ndGgmJihtdWwqPTI1Nikpe3ZhbCs9dGhpc1tvZmZzZXQraV0qbXVsfXJldHVybiB2YWx9O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbiByZWFkVUludEJFKG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXtvZmZzZXQ9b2Zmc2V0fDA7Ynl0ZUxlbmd0aD1ieXRlTGVuZ3RofDA7aWYoIW5vQXNzZXJ0KXtjaGVja09mZnNldChvZmZzZXQsYnl0ZUxlbmd0aCx0aGlzLmxlbmd0aCl9dmFyIHZhbD10aGlzW29mZnNldCstLWJ5dGVMZW5ndGhdO3ZhciBtdWw9MTt3aGlsZShieXRlTGVuZ3RoPjAmJihtdWwqPTI1Nikpe3ZhbCs9dGhpc1tvZmZzZXQrLS1ieXRlTGVuZ3RoXSptdWx9cmV0dXJuIHZhbH07QnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24gcmVhZFVJbnQ4KG9mZnNldCxub0Fzc2VydCl7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCwxLHRoaXMubGVuZ3RoKTtyZXR1cm4gdGhpc1tvZmZzZXRdfTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbiByZWFkVUludDE2TEUob2Zmc2V0LG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpY2hlY2tPZmZzZXQob2Zmc2V0LDIsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW29mZnNldF18dGhpc1tvZmZzZXQrMV08PDh9O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uIHJlYWRVSW50MTZCRShvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsMix0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbb2Zmc2V0XTw8OHx0aGlzW29mZnNldCsxXX07QnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24gcmVhZFVJbnQzMkxFKG9mZnNldCxub0Fzc2VydCl7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCw0LHRoaXMubGVuZ3RoKTtyZXR1cm4odGhpc1tvZmZzZXRdfHRoaXNbb2Zmc2V0KzFdPDw4fHRoaXNbb2Zmc2V0KzJdPDwxNikrdGhpc1tvZmZzZXQrM10qMTY3NzcyMTZ9O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uIHJlYWRVSW50MzJCRShvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbb2Zmc2V0XSoxNjc3NzIxNisodGhpc1tvZmZzZXQrMV08PDE2fHRoaXNbb2Zmc2V0KzJdPDw4fHRoaXNbb2Zmc2V0KzNdKX07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24gcmVhZEludExFKG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXtvZmZzZXQ9b2Zmc2V0fDA7Ynl0ZUxlbmd0aD1ieXRlTGVuZ3RofDA7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCxieXRlTGVuZ3RoLHRoaXMubGVuZ3RoKTt2YXIgdmFsPXRoaXNbb2Zmc2V0XTt2YXIgbXVsPTE7dmFyIGk9MDt3aGlsZSgrK2k8Ynl0ZUxlbmd0aCYmKG11bCo9MjU2KSl7dmFsKz10aGlzW29mZnNldCtpXSptdWx9bXVsKj0xMjg7aWYodmFsPj1tdWwpdmFsLT1NYXRoLnBvdygyLDgqYnl0ZUxlbmd0aCk7cmV0dXJuIHZhbH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24gcmVhZEludEJFKG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXtvZmZzZXQ9b2Zmc2V0fDA7Ynl0ZUxlbmd0aD1ieXRlTGVuZ3RofDA7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCxieXRlTGVuZ3RoLHRoaXMubGVuZ3RoKTsKK3ZhciBpPWJ5dGVMZW5ndGg7dmFyIG11bD0xO3ZhciB2YWw9dGhpc1tvZmZzZXQrLS1pXTt3aGlsZShpPjAmJihtdWwqPTI1Nikpe3ZhbCs9dGhpc1tvZmZzZXQrLS1pXSptdWx9bXVsKj0xMjg7aWYodmFsPj1tdWwpdmFsLT1NYXRoLnBvdygyLDgqYnl0ZUxlbmd0aCk7cmV0dXJuIHZhbH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsMSx0aGlzLmxlbmd0aCk7aWYoISh0aGlzW29mZnNldF0mMTI4KSlyZXR1cm4gdGhpc1tvZmZzZXRdO3JldHVybigyNTUtdGhpc1tvZmZzZXRdKzEpKi0xfTtCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uIHJlYWRJbnQxNkxFKG9mZnNldCxub0Fzc2VydCl7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCwyLHRoaXMubGVuZ3RoKTt2YXIgdmFsPXRoaXNbb2Zmc2V0XXx0aGlzW29mZnNldCsxXTw8ODtyZXR1cm4gdmFsJjMyNzY4P3ZhbHw0Mjk0OTAxNzYwOnZhbH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbiByZWFkSW50MTZCRShvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsMix0aGlzLmxlbmd0aCk7dmFyIHZhbD10aGlzW29mZnNldCsxXXx0aGlzW29mZnNldF08PDg7cmV0dXJuIHZhbCYzMjc2OD92YWx8NDI5NDkwMTc2MDp2YWx9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24gcmVhZEludDMyTEUob2Zmc2V0LG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpY2hlY2tPZmZzZXQob2Zmc2V0LDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW29mZnNldF18dGhpc1tvZmZzZXQrMV08PDh8dGhpc1tvZmZzZXQrMl08PDE2fHRoaXNbb2Zmc2V0KzNdPDwyNH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbiByZWFkSW50MzJCRShvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbb2Zmc2V0XTw8MjR8dGhpc1tvZmZzZXQrMV08PDE2fHRoaXNbb2Zmc2V0KzJdPDw4fHRoaXNbb2Zmc2V0KzNdfTtCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uIHJlYWRGbG9hdExFKG9mZnNldCxub0Fzc2VydCl7aWYoIW5vQXNzZXJ0KWNoZWNrT2Zmc2V0KG9mZnNldCw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsb2Zmc2V0LHRydWUsMjMsNCl9O0J1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24gcmVhZEZsb2F0QkUob2Zmc2V0LG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpY2hlY2tPZmZzZXQob2Zmc2V0LDQsdGhpcy5sZW5ndGgpO3JldHVybiBpZWVlNzU0LnJlYWQodGhpcyxvZmZzZXQsZmFsc2UsMjMsNCl9O0J1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uIHJlYWREb3VibGVMRShvZmZzZXQsbm9Bc3NlcnQpe2lmKCFub0Fzc2VydCljaGVja09mZnNldChvZmZzZXQsOCx0aGlzLmxlbmd0aCk7cmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLG9mZnNldCx0cnVlLDUyLDgpfTtCdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbiByZWFkRG91YmxlQkUob2Zmc2V0LG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpY2hlY2tPZmZzZXQob2Zmc2V0LDgsdGhpcy5sZW5ndGgpO3JldHVybiBpZWVlNzU0LnJlYWQodGhpcyxvZmZzZXQsZmFsc2UsNTIsOCl9O2Z1bmN0aW9uIGNoZWNrSW50KGJ1Zix2YWx1ZSxvZmZzZXQsZXh0LG1heCxtaW4pe2lmKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodmFsdWU+bWF4fHx2YWx1ZTxtaW4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKG9mZnNldCtleHQ+YnVmLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbiB3cml0ZVVJbnRMRSh2YWx1ZSxvZmZzZXQsYnl0ZUxlbmd0aCxub0Fzc2VydCl7dmFsdWU9K3ZhbHVlO29mZnNldD1vZmZzZXR8MDtieXRlTGVuZ3RoPWJ5dGVMZW5ndGh8MDtpZighbm9Bc3NlcnQpe3ZhciBtYXhCeXRlcz1NYXRoLnBvdygyLDgqYnl0ZUxlbmd0aCktMTtjaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCxieXRlTGVuZ3RoLG1heEJ5dGVzLDApfXZhciBtdWw9MTt2YXIgaT0wO3RoaXNbb2Zmc2V0XT12YWx1ZSYyNTU7d2hpbGUoKytpPGJ5dGVMZW5ndGgmJihtdWwqPTI1Nikpe3RoaXNbb2Zmc2V0K2ldPXZhbHVlL211bCYyNTV9cmV0dXJuIG9mZnNldCtieXRlTGVuZ3RofTtCdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uIHdyaXRlVUludEJFKHZhbHVlLG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2J5dGVMZW5ndGg9Ynl0ZUxlbmd0aHwwO2lmKCFub0Fzc2VydCl7dmFyIG1heEJ5dGVzPU1hdGgucG93KDIsOCpieXRlTGVuZ3RoKS0xO2NoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LGJ5dGVMZW5ndGgsbWF4Qnl0ZXMsMCl9dmFyIGk9Ynl0ZUxlbmd0aC0xO3ZhciBtdWw9MTt0aGlzW29mZnNldCtpXT12YWx1ZSYyNTU7d2hpbGUoLS1pPj0wJiYobXVsKj0yNTYpKXt0aGlzW29mZnNldCtpXT12YWx1ZS9tdWwmMjU1fXJldHVybiBvZmZzZXQrYnl0ZUxlbmd0aH07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uIHdyaXRlVUludDgodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCwxLDI1NSwwKTtpZighQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpdmFsdWU9TWF0aC5mbG9vcih2YWx1ZSk7dGhpc1tvZmZzZXRdPXZhbHVlJjI1NTtyZXR1cm4gb2Zmc2V0KzF9O2Z1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2KGJ1Zix2YWx1ZSxvZmZzZXQsbGl0dGxlRW5kaWFuKXtpZih2YWx1ZTwwKXZhbHVlPTY1NTM1K3ZhbHVlKzE7Zm9yKHZhciBpPTAsaj1NYXRoLm1pbihidWYubGVuZ3RoLW9mZnNldCwyKTtpPGo7KytpKXtidWZbb2Zmc2V0K2ldPSh2YWx1ZSYyNTU8PDgqKGxpdHRsZUVuZGlhbj9pOjEtaSkpPj4+KGxpdHRsZUVuZGlhbj9pOjEtaSkqOH19QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uIHdyaXRlVUludDE2TEUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCwyLDY1NTM1LDApO2lmKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKXt0aGlzW29mZnNldF09dmFsdWUmMjU1O3RoaXNbb2Zmc2V0KzFdPXZhbHVlPj4+OH1lbHNle29iamVjdFdyaXRlVUludDE2KHRoaXMsdmFsdWUsb2Zmc2V0LHRydWUpfXJldHVybiBvZmZzZXQrMn07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uIHdyaXRlVUludDE2QkUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCwyLDY1NTM1LDApO2lmKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKXt0aGlzW29mZnNldF09dmFsdWU+Pj44O3RoaXNbb2Zmc2V0KzFdPXZhbHVlJjI1NX1lbHNle29iamVjdFdyaXRlVUludDE2KHRoaXMsdmFsdWUsb2Zmc2V0LGZhbHNlKX1yZXR1cm4gb2Zmc2V0KzJ9O2Z1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyKGJ1Zix2YWx1ZSxvZmZzZXQsbGl0dGxlRW5kaWFuKXtpZih2YWx1ZTwwKXZhbHVlPTQyOTQ5NjcyOTUrdmFsdWUrMTtmb3IodmFyIGk9MCxqPU1hdGgubWluKGJ1Zi5sZW5ndGgtb2Zmc2V0LDQpO2k8ajsrK2kpe2J1ZltvZmZzZXQraV09dmFsdWU+Pj4obGl0dGxlRW5kaWFuP2k6My1pKSo4JjI1NX19QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uIHdyaXRlVUludDMyTEUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCw0LDQyOTQ5NjcyOTUsMCk7aWYoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpe3RoaXNbb2Zmc2V0KzNdPXZhbHVlPj4+MjQ7dGhpc1tvZmZzZXQrMl09dmFsdWU+Pj4xNjt0aGlzW29mZnNldCsxXT12YWx1ZT4+Pjg7dGhpc1tvZmZzZXRdPXZhbHVlJjI1NX1lbHNle29iamVjdFdyaXRlVUludDMyKHRoaXMsdmFsdWUsb2Zmc2V0LHRydWUpfXJldHVybiBvZmZzZXQrNH07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uIHdyaXRlVUludDMyQkUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCw0LDQyOTQ5NjcyOTUsMCk7aWYoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpe3RoaXNbb2Zmc2V0XT12YWx1ZT4+PjI0O3RoaXNbb2Zmc2V0KzFdPXZhbHVlPj4+MTY7dGhpc1tvZmZzZXQrMl09dmFsdWU+Pj44O3RoaXNbb2Zmc2V0KzNdPXZhbHVlJjI1NX1lbHNle29iamVjdFdyaXRlVUludDMyKHRoaXMsdmFsdWUsb2Zmc2V0LGZhbHNlKX1yZXR1cm4gb2Zmc2V0KzR9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbiB3cml0ZUludExFKHZhbHVlLG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCl7dmFyIGxpbWl0PU1hdGgucG93KDIsOCpieXRlTGVuZ3RoLTEpO2NoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LGJ5dGVMZW5ndGgsbGltaXQtMSwtbGltaXQpfXZhciBpPTA7dmFyIG11bD0xO3ZhciBzdWI9MDt0aGlzW29mZnNldF09dmFsdWUmMjU1O3doaWxlKCsraTxieXRlTGVuZ3RoJiYobXVsKj0yNTYpKXtpZih2YWx1ZTwwJiZzdWI9PT0wJiZ0aGlzW29mZnNldCtpLTFdIT09MCl7c3ViPTF9dGhpc1tvZmZzZXQraV09KHZhbHVlL211bD4+MCktc3ViJjI1NX1yZXR1cm4gb2Zmc2V0K2J5dGVMZW5ndGh9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbiB3cml0ZUludEJFKHZhbHVlLG9mZnNldCxieXRlTGVuZ3RoLG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCl7dmFyIGxpbWl0PU1hdGgucG93KDIsOCpieXRlTGVuZ3RoLTEpO2NoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LGJ5dGVMZW5ndGgsbGltaXQtMSwtbGltaXQpfXZhciBpPWJ5dGVMZW5ndGgtMTt2YXIgbXVsPTE7dmFyIHN1Yj0wO3RoaXNbb2Zmc2V0K2ldPXZhbHVlJjI1NTt3aGlsZSgtLWk+PTAmJihtdWwqPTI1Nikpe2lmKHZhbHVlPDAmJnN1Yj09PTAmJnRoaXNbb2Zmc2V0K2krMV0hPT0wKXtzdWI9MX10aGlzW29mZnNldCtpXT0odmFsdWUvbXVsPj4wKS1zdWImMjU1fXJldHVybiBvZmZzZXQrYnl0ZUxlbmd0aH07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24gd3JpdGVJbnQ4KHZhbHVlLG9mZnNldCxub0Fzc2VydCl7dmFsdWU9K3ZhbHVlO29mZnNldD1vZmZzZXR8MDtpZighbm9Bc3NlcnQpY2hlY2tJbnQodGhpcyx2YWx1ZSxvZmZzZXQsMSwxMjcsLTEyOCk7aWYoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKXZhbHVlPU1hdGguZmxvb3IodmFsdWUpO2lmKHZhbHVlPDApdmFsdWU9MjU1K3ZhbHVlKzE7dGhpc1tvZmZzZXRdPXZhbHVlJjI1NTtyZXR1cm4gb2Zmc2V0KzF9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uIHdyaXRlSW50MTZMRSh2YWx1ZSxvZmZzZXQsbm9Bc3NlcnQpe3ZhbHVlPSt2YWx1ZTtvZmZzZXQ9b2Zmc2V0fDA7aWYoIW5vQXNzZXJ0KWNoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LDIsMzI3NjcsLTMyNzY4KTtpZihCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7dGhpc1tvZmZzZXRdPXZhbHVlJjI1NTt0aGlzW29mZnNldCsxXT12YWx1ZT4+Pjh9ZWxzZXtvYmplY3RXcml0ZVVJbnQxNih0aGlzLHZhbHVlLG9mZnNldCx0cnVlKX1yZXR1cm4gb2Zmc2V0KzJ9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uIHdyaXRlSW50MTZCRSh2YWx1ZSxvZmZzZXQsbm9Bc3NlcnQpe3ZhbHVlPSt2YWx1ZTtvZmZzZXQ9b2Zmc2V0fDA7aWYoIW5vQXNzZXJ0KWNoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LDIsMzI3NjcsLTMyNzY4KTtpZihCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7dGhpc1tvZmZzZXRdPXZhbHVlPj4+ODt0aGlzW29mZnNldCsxXT12YWx1ZSYyNTV9ZWxzZXtvYmplY3RXcml0ZVVJbnQxNih0aGlzLHZhbHVlLG9mZnNldCxmYWxzZSl9cmV0dXJuIG9mZnNldCsyfTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbiB3cml0ZUludDMyTEUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXt2YWx1ZT0rdmFsdWU7b2Zmc2V0PW9mZnNldHwwO2lmKCFub0Fzc2VydCljaGVja0ludCh0aGlzLHZhbHVlLG9mZnNldCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpO2lmKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKXt0aGlzW29mZnNldF09dmFsdWUmMjU1O3RoaXNbb2Zmc2V0KzFdPXZhbHVlPj4+ODt0aGlzW29mZnNldCsyXT12YWx1ZT4+PjE2O3RoaXNbb2Zmc2V0KzNdPXZhbHVlPj4+MjR9ZWxzZXtvYmplY3RXcml0ZVVJbnQzMih0aGlzLHZhbHVlLG9mZnNldCx0cnVlKX1yZXR1cm4gb2Zmc2V0KzR9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uIHdyaXRlSW50MzJCRSh2YWx1ZSxvZmZzZXQsbm9Bc3NlcnQpe3ZhbHVlPSt2YWx1ZTtvZmZzZXQ9b2Zmc2V0fDA7aWYoIW5vQXNzZXJ0KWNoZWNrSW50KHRoaXMsdmFsdWUsb2Zmc2V0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCk7aWYodmFsdWU8MCl2YWx1ZT00Mjk0OTY3Mjk1K3ZhbHVlKzE7aWYoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpe3RoaXNbb2Zmc2V0XT12YWx1ZT4+PjI0O3RoaXNbb2Zmc2V0KzFdPXZhbHVlPj4+MTY7dGhpc1tvZmZzZXQrMl09dmFsdWU+Pj44O3RoaXNbb2Zmc2V0KzNdPXZhbHVlJjI1NX1lbHNle29iamVjdFdyaXRlVUludDMyKHRoaXMsdmFsdWUsb2Zmc2V0LGZhbHNlKX1yZXR1cm4gb2Zmc2V0KzR9O2Z1bmN0aW9uIGNoZWNrSUVFRTc1NChidWYsdmFsdWUsb2Zmc2V0LGV4dCxtYXgsbWluKXtpZihvZmZzZXQrZXh0PmJ1Zi5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKG9mZnNldDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB3cml0ZUZsb2F0KGJ1Zix2YWx1ZSxvZmZzZXQsbGl0dGxlRW5kaWFuLG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpe2NoZWNrSUVFRTc1NChidWYsdmFsdWUsb2Zmc2V0LDQsMy40MDI4MjM0NjYzODUyODg2ZTM4LC0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgpfWllZWU3NTQud3JpdGUoYnVmLHZhbHVlLG9mZnNldCxsaXR0bGVFbmRpYW4sMjMsNCk7cmV0dXJuIG9mZnNldCs0fUJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uIHdyaXRlRmxvYXRMRSh2YWx1ZSxvZmZzZXQsbm9Bc3NlcnQpe3JldHVybiB3cml0ZUZsb2F0KHRoaXMsdmFsdWUsb2Zmc2V0LHRydWUsbm9Bc3NlcnQpfTtCdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbiB3cml0ZUZsb2F0QkUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXtyZXR1cm4gd3JpdGVGbG9hdCh0aGlzLHZhbHVlLG9mZnNldCxmYWxzZSxub0Fzc2VydCl9O2Z1bmN0aW9uIHdyaXRlRG91YmxlKGJ1Zix2YWx1ZSxvZmZzZXQsbGl0dGxlRW5kaWFuLG5vQXNzZXJ0KXtpZighbm9Bc3NlcnQpe2NoZWNrSUVFRTc1NChidWYsdmFsdWUsb2Zmc2V0LDgsMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCwtMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCl9aWVlZTc1NC53cml0ZShidWYsdmFsdWUsb2Zmc2V0LGxpdHRsZUVuZGlhbiw1Miw4KTtyZXR1cm4gb2Zmc2V0Kzh9QnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uIHdyaXRlRG91YmxlTEUodmFsdWUsb2Zmc2V0LG5vQXNzZXJ0KXtyZXR1cm4gd3JpdGVEb3VibGUodGhpcyx2YWx1ZSxvZmZzZXQsdHJ1ZSxub0Fzc2VydCl9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbiB3cml0ZURvdWJsZUJFKHZhbHVlLG9mZnNldCxub0Fzc2VydCl7cmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsdmFsdWUsb2Zmc2V0LGZhbHNlLG5vQXNzZXJ0KX07QnVmZmVyLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uIGNvcHkodGFyZ2V0LHRhcmdldFN0YXJ0LHN0YXJ0LGVuZCl7aWYoIXN0YXJ0KXN0YXJ0PTA7aWYoIWVuZCYmZW5kIT09MCllbmQ9dGhpcy5sZW5ndGg7aWYodGFyZ2V0U3RhcnQ+PXRhcmdldC5sZW5ndGgpdGFyZ2V0U3RhcnQ9dGFyZ2V0Lmxlbmd0aDtpZighdGFyZ2V0U3RhcnQpdGFyZ2V0U3RhcnQ9MDtpZihlbmQ+MCYmZW5kPHN0YXJ0KWVuZD1zdGFydDtpZihlbmQ9PT1zdGFydClyZXR1cm4gMDtpZih0YXJnZXQubGVuZ3RoPT09MHx8dGhpcy5sZW5ndGg9PT0wKXJldHVybiAwO2lmKHRhcmdldFN0YXJ0PDApe3Rocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIil9aWYoc3RhcnQ8MHx8c3RhcnQ+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYoZW5kPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7aWYoZW5kPnRoaXMubGVuZ3RoKWVuZD10aGlzLmxlbmd0aDtpZih0YXJnZXQubGVuZ3RoLXRhcmdldFN0YXJ0PGVuZC1zdGFydCl7ZW5kPXRhcmdldC5sZW5ndGgtdGFyZ2V0U3RhcnQrc3RhcnR9dmFyIGxlbj1lbmQtc3RhcnQ7dmFyIGk7aWYodGhpcz09PXRhcmdldCYmc3RhcnQ8dGFyZ2V0U3RhcnQmJnRhcmdldFN0YXJ0PGVuZCl7Zm9yKGk9bGVuLTE7aT49MDstLWkpe3RhcmdldFtpK3RhcmdldFN0YXJ0XT10aGlzW2krc3RhcnRdfX1lbHNlIGlmKGxlbjwxZTN8fCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCl7Zm9yKGk9MDtpPGxlbjsrK2kpe3RhcmdldFtpK3RhcmdldFN0YXJ0XT10aGlzW2krc3RhcnRdfX1lbHNle1VpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHRhcmdldCx0aGlzLnN1YmFycmF5KHN0YXJ0LHN0YXJ0K2xlbiksdGFyZ2V0U3RhcnQpfXJldHVybiBsZW59O0J1ZmZlci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbiBmaWxsKHZhbCxzdGFydCxlbmQsZW5jb2Rpbmcpe2lmKHR5cGVvZiB2YWw9PT0ic3RyaW5nIil7aWYodHlwZW9mIHN0YXJ0PT09InN0cmluZyIpe2VuY29kaW5nPXN0YXJ0O3N0YXJ0PTA7ZW5kPXRoaXMubGVuZ3RofWVsc2UgaWYodHlwZW9mIGVuZD09PSJzdHJpbmciKXtlbmNvZGluZz1lbmQ7ZW5kPXRoaXMubGVuZ3RofWlmKHZhbC5sZW5ndGg9PT0xKXt2YXIgY29kZT12YWwuY2hhckNvZGVBdCgwKTtpZihjb2RlPDI1Nil7dmFsPWNvZGV9fWlmKGVuY29kaW5nIT09dW5kZWZpbmVkJiZ0eXBlb2YgZW5jb2RpbmchPT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpfWlmKHR5cGVvZiBlbmNvZGluZz09PSJzdHJpbmciJiYhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2VuY29kaW5nKX19ZWxzZSBpZih0eXBlb2YgdmFsPT09Im51bWJlciIpe3ZhbD12YWwmMjU1fWlmKHN0YXJ0PDB8fHRoaXMubGVuZ3RoPHN0YXJ0fHx0aGlzLmxlbmd0aDxlbmQpe3Rocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKX1pZihlbmQ8PXN0YXJ0KXtyZXR1cm4gdGhpc31zdGFydD1zdGFydD4+PjA7ZW5kPWVuZD09PXVuZGVmaW5lZD90aGlzLmxlbmd0aDplbmQ+Pj4wO2lmKCF2YWwpdmFsPTA7dmFyIGk7aWYodHlwZW9mIHZhbD09PSJudW1iZXIiKXtmb3IoaT1zdGFydDtpPGVuZDsrK2kpe3RoaXNbaV09dmFsfX1lbHNle3ZhciBieXRlcz1CdWZmZXIuaXNCdWZmZXIodmFsKT92YWw6dXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsZW5jb2RpbmcpLnRvU3RyaW5nKCkpO3ZhciBsZW49Ynl0ZXMubGVuZ3RoO2ZvcihpPTA7aTxlbmQtc3RhcnQ7KytpKXt0aGlzW2krc3RhcnRdPWJ5dGVzW2klbGVuXX19cmV0dXJuIHRoaXN9O3ZhciBJTlZBTElEX0JBU0U2NF9SRT0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBiYXNlNjRjbGVhbihzdHIpe3N0cj1zdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwiIik7aWYoc3RyLmxlbmd0aDwyKXJldHVybiIiO3doaWxlKHN0ci5sZW5ndGglNCE9PTApe3N0cj1zdHIrIj0ifXJldHVybiBzdHJ9ZnVuY3Rpb24gc3RyaW5ndHJpbShzdHIpe2lmKHN0ci50cmltKXJldHVybiBzdHIudHJpbSgpO3JldHVybiBzdHIucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfWZ1bmN0aW9uIHRvSGV4KG4pe2lmKG48MTYpcmV0dXJuIjAiK24udG9TdHJpbmcoMTYpO3JldHVybiBuLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiB1dGY4VG9CeXRlcyhzdHJpbmcsdW5pdHMpe3VuaXRzPXVuaXRzfHxJbmZpbml0eTt2YXIgY29kZVBvaW50O3ZhciBsZW5ndGg9c3RyaW5nLmxlbmd0aDt2YXIgbGVhZFN1cnJvZ2F0ZT1udWxsO3ZhciBieXRlcz1bXTtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe2NvZGVQb2ludD1zdHJpbmcuY2hhckNvZGVBdChpKTtpZihjb2RlUG9pbnQ+NTUyOTUmJmNvZGVQb2ludDw1NzM0NCl7aWYoIWxlYWRTdXJyb2dhdGUpe2lmKGNvZGVQb2ludD41NjMxOSl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1lbHNlIGlmKGkrMT09PWxlbmd0aCl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1sZWFkU3Vycm9nYXRlPWNvZGVQb2ludDtjb250aW51ZX1pZihjb2RlUG9pbnQ8NTYzMjApe2lmKCh1bml0cy09Myk+LTEpYnl0ZXMucHVzaCgyMzksMTkxLDE4OSk7bGVhZFN1cnJvZ2F0ZT1jb2RlUG9pbnQ7Y29udGludWV9Y29kZVBvaW50PShsZWFkU3Vycm9nYXRlLTU1Mjk2PDwxMHxjb2RlUG9pbnQtNTYzMjApKzY1NTM2fWVsc2UgaWYobGVhZFN1cnJvZ2F0ZSl7aWYoKHVuaXRzLT0zKT4tMSlieXRlcy5wdXNoKDIzOSwxOTEsMTg5KX1sZWFkU3Vycm9nYXRlPW51bGw7aWYoY29kZVBvaW50PDEyOCl7aWYoKHVuaXRzLT0xKTwwKWJyZWFrO2J5dGVzLnB1c2goY29kZVBvaW50KX1lbHNlIGlmKGNvZGVQb2ludDwyMDQ4KXtpZigodW5pdHMtPTIpPDApYnJlYWs7Ynl0ZXMucHVzaChjb2RlUG9pbnQ+PjZ8MTkyLGNvZGVQb2ludCY2M3wxMjgpfWVsc2UgaWYoY29kZVBvaW50PDY1NTM2KXtpZigodW5pdHMtPTMpPDApYnJlYWs7Ynl0ZXMucHVzaChjb2RlUG9pbnQ+PjEyfDIyNCxjb2RlUG9pbnQ+PjYmNjN8MTI4LGNvZGVQb2ludCY2M3wxMjgpfWVsc2UgaWYoY29kZVBvaW50PDExMTQxMTIpe2lmKCh1bml0cy09NCk8MClicmVhaztieXRlcy5wdXNoKGNvZGVQb2ludD4+MTh8MjQwLGNvZGVQb2ludD4+MTImNjN8MTI4LGNvZGVQb2ludD4+NiY2M3wxMjgsY29kZVBvaW50JjYzfDEyOCl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpfX1yZXR1cm4gYnl0ZXN9ZnVuY3Rpb24gYXNjaWlUb0J5dGVzKHN0cil7dmFyIGJ5dGVBcnJheT1bXTtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXtieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSYyNTUpfXJldHVybiBieXRlQXJyYXl9ZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMoc3RyLHVuaXRzKXt2YXIgYyxoaSxsbzt2YXIgYnl0ZUFycmF5PVtdO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe2lmKCh1bml0cy09Mik8MClicmVhaztjPXN0ci5jaGFyQ29kZUF0KGkpO2hpPWM+Pjg7bG89YyUyNTY7Ynl0ZUFycmF5LnB1c2gobG8pO2J5dGVBcnJheS5wdXNoKGhpKX1yZXR1cm4gYnl0ZUFycmF5fWZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMoc3RyKXtyZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpfWZ1bmN0aW9uIGJsaXRCdWZmZXIoc3JjLGRzdCxvZmZzZXQsbGVuZ3RoKXtmb3IodmFyIGk9MDtpPGxlbmd0aDsrK2kpe2lmKGkrb2Zmc2V0Pj1kc3QubGVuZ3RofHxpPj1zcmMubGVuZ3RoKWJyZWFrO2RzdFtpK29mZnNldF09c3JjW2ldfXJldHVybiBpfWZ1bmN0aW9uIGlzbmFuKHZhbCl7cmV0dXJuIHZhbCE9PXZhbH19KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiP3dpbmRvdzp7fSl9LHsiYmFzZTY0LWpzIjoyLGllZWU3NTQ6MzcsaXNhcnJheTo0MH1dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyhmdW5jdGlvbihCdWZmZXIpe2Z1bmN0aW9uIGlzQXJyYXkoYXJnKXtpZihBcnJheS5pc0FycmF5KXtyZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpfXJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpPT09IltvYmplY3QgQXJyYXldIn1leHBvcnRzLmlzQXJyYXk9aXNBcnJheTtmdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKXtyZXR1cm4gdHlwZW9mIGFyZz09PSJib29sZWFuIn1leHBvcnRzLmlzQm9vbGVhbj1pc0Jvb2xlYW47ZnVuY3Rpb24gaXNOdWxsKGFyZyl7cmV0dXJuIGFyZz09PW51bGx9ZXhwb3J0cy5pc051bGw9aXNOdWxsO2Z1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZyl7cmV0dXJuIGFyZz09bnVsbH1leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkPWlzTnVsbE9yVW5kZWZpbmVkO2Z1bmN0aW9uIGlzTnVtYmVyKGFyZyl7cmV0dXJuIHR5cGVvZiBhcmc9PT0ibnVtYmVyIn1leHBvcnRzLmlzTnVtYmVyPWlzTnVtYmVyO2Z1bmN0aW9uIGlzU3RyaW5nKGFyZyl7cmV0dXJuIHR5cGVvZiBhcmc9PT0ic3RyaW5nIn1leHBvcnRzLmlzU3RyaW5nPWlzU3RyaW5nO2Z1bmN0aW9uIGlzU3ltYm9sKGFyZyl7cmV0dXJuIHR5cGVvZiBhcmc9PT0ic3ltYm9sIn1leHBvcnRzLmlzU3ltYm9sPWlzU3ltYm9sO2Z1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZyl7cmV0dXJuIGFyZz09PXZvaWQgMH1leHBvcnRzLmlzVW5kZWZpbmVkPWlzVW5kZWZpbmVkO2Z1bmN0aW9uIGlzUmVnRXhwKHJlKXtyZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpPT09IltvYmplY3QgUmVnRXhwXSJ9ZXhwb3J0cy5pc1JlZ0V4cD1pc1JlZ0V4cDtmdW5jdGlvbiBpc09iamVjdChhcmcpe3JldHVybiB0eXBlb2YgYXJnPT09Im9iamVjdCImJmFyZyE9PW51bGx9ZXhwb3J0cy5pc09iamVjdD1pc09iamVjdDtmdW5jdGlvbiBpc0RhdGUoZCl7cmV0dXJuIG9iamVjdFRvU3RyaW5nKGQpPT09IltvYmplY3QgRGF0ZV0ifWV4cG9ydHMuaXNEYXRlPWlzRGF0ZTtmdW5jdGlvbiBpc0Vycm9yKGUpe3JldHVybiBvYmplY3RUb1N0cmluZyhlKT09PSJbb2JqZWN0IEVycm9yXSJ8fGUgaW5zdGFuY2VvZiBFcnJvcn1leHBvcnRzLmlzRXJyb3I9aXNFcnJvcjtmdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZyl7cmV0dXJuIHR5cGVvZiBhcmc9PT0iZnVuY3Rpb24ifWV4cG9ydHMuaXNGdW5jdGlvbj1pc0Z1bmN0aW9uO2Z1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZyl7cmV0dXJuIGFyZz09PW51bGx8fHR5cGVvZiBhcmc9PT0iYm9vbGVhbiJ8fHR5cGVvZiBhcmc9PT0ibnVtYmVyInx8dHlwZW9mIGFyZz09PSJzdHJpbmcifHx0eXBlb2YgYXJnPT09InN5bWJvbCJ8fHR5cGVvZiBhcmc9PT0idW5kZWZpbmVkIn1leHBvcnRzLmlzUHJpbWl0aXZlPWlzUHJpbWl0aXZlO2V4cG9ydHMuaXNCdWZmZXI9QnVmZmVyLmlzQnVmZmVyO2Z1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyl9fSkuY2FsbCh0aGlzLHtpc0J1ZmZlcjpyZXF1aXJlKCIuLi8uLi9pcy1idWZmZXIvaW5kZXguanMiKX0pfSx7Ii4uLy4uL2lzLWJ1ZmZlci9pbmRleC5qcyI6Mzl9XSw3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgRWxlbWVudFR5cGU9cmVxdWlyZSgiZG9tZWxlbWVudHR5cGUiKTt2YXIgZW50aXRpZXM9cmVxdWlyZSgiZW50aXRpZXMiKTt2YXIgYm9vbGVhbkF0dHJpYnV0ZXM9e19fcHJvdG9fXzpudWxsLGFsbG93ZnVsbHNjcmVlbjp0cnVlLGFzeW5jOnRydWUsYXV0b2ZvY3VzOnRydWUsYXV0b3BsYXk6dHJ1ZSxjaGVja2VkOnRydWUsY29udHJvbHM6dHJ1ZSxkZWZhdWx0OnRydWUsZGVmZXI6dHJ1ZSxkaXNhYmxlZDp0cnVlLGhpZGRlbjp0cnVlLGlzbWFwOnRydWUsbG9vcDp0cnVlLG11bHRpcGxlOnRydWUsbXV0ZWQ6dHJ1ZSxvcGVuOnRydWUscmVhZG9ubHk6dHJ1ZSxyZXF1aXJlZDp0cnVlLHJldmVyc2VkOnRydWUsc2NvcGVkOnRydWUsc2VhbWxlc3M6dHJ1ZSxzZWxlY3RlZDp0cnVlLHR5cGVtdXN0bWF0Y2g6dHJ1ZX07dmFyIHVuZW5jb2RlZEVsZW1lbnRzPXtfX3Byb3RvX186bnVsbCxzdHlsZTp0cnVlLHNjcmlwdDp0cnVlLHhtcDp0cnVlLGlmcmFtZTp0cnVlLG5vZW1iZWQ6dHJ1ZSxub2ZyYW1lczp0cnVlLHBsYWludGV4dDp0cnVlLG5vc2NyaXB0OnRydWV9O2Z1bmN0aW9uIGZvcm1hdEF0dHJzKGF0dHJpYnV0ZXMsb3B0cyl7aWYoIWF0dHJpYnV0ZXMpcmV0dXJuO3ZhciBvdXRwdXQ9IiIsdmFsdWU7Zm9yKHZhciBrZXkgaW4gYXR0cmlidXRlcyl7dmFsdWU9YXR0cmlidXRlc1trZXldO2lmKG91dHB1dCl7b3V0cHV0Kz0iICJ9aWYoIXZhbHVlJiZib29sZWFuQXR0cmlidXRlc1trZXldKXtvdXRwdXQrPWtleX1lbHNle291dHB1dCs9a2V5Kyc9IicrKG9wdHMuZGVjb2RlRW50aXRpZXM/ZW50aXRpZXMuZW5jb2RlWE1MKHZhbHVlKTp2YWx1ZSkrJyInfX1yZXR1cm4gb3V0cHV0fXZhciBzaW5nbGVUYWc9e19fcHJvdG9fXzpudWxsLGFyZWE6dHJ1ZSxiYXNlOnRydWUsYmFzZWZvbnQ6dHJ1ZSxicjp0cnVlLGNvbDp0cnVlLGNvbW1hbmQ6dHJ1ZSxlbWJlZDp0cnVlLGZyYW1lOnRydWUsaHI6dHJ1ZSxpbWc6dHJ1ZSxpbnB1dDp0cnVlLGlzaW5kZXg6dHJ1ZSxrZXlnZW46dHJ1ZSxsaW5rOnRydWUsbWV0YTp0cnVlLHBhcmFtOnRydWUsc291cmNlOnRydWUsdHJhY2s6dHJ1ZSx3YnI6dHJ1ZX07dmFyIHJlbmRlcj1tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihkb20sb3B0cyl7aWYoIUFycmF5LmlzQXJyYXkoZG9tKSYmIWRvbS5jaGVlcmlvKWRvbT1bZG9tXTtvcHRzPW9wdHN8fHt9O3ZhciBvdXRwdXQ9IiI7Zm9yKHZhciBpPTA7aTxkb20ubGVuZ3RoO2krKyl7dmFyIGVsZW09ZG9tW2ldO2lmKGVsZW0udHlwZT09PSJyb290IilvdXRwdXQrPXJlbmRlcihlbGVtLmNoaWxkcmVuLG9wdHMpO2Vsc2UgaWYoRWxlbWVudFR5cGUuaXNUYWcoZWxlbSkpb3V0cHV0Kz1yZW5kZXJUYWcoZWxlbSxvcHRzKTtlbHNlIGlmKGVsZW0udHlwZT09PUVsZW1lbnRUeXBlLkRpcmVjdGl2ZSlvdXRwdXQrPXJlbmRlckRpcmVjdGl2ZShlbGVtKTtlbHNlIGlmKGVsZW0udHlwZT09PUVsZW1lbnRUeXBlLkNvbW1lbnQpb3V0cHV0Kz1yZW5kZXJDb21tZW50KGVsZW0pO2Vsc2UgaWYoZWxlbS50eXBlPT09RWxlbWVudFR5cGUuQ0RBVEEpb3V0cHV0Kz1yZW5kZXJDZGF0YShlbGVtKTtlbHNlIG91dHB1dCs9cmVuZGVyVGV4dChlbGVtLG9wdHMpfXJldHVybiBvdXRwdXR9O2Z1bmN0aW9uIHJlbmRlclRhZyhlbGVtLG9wdHMpe2lmKGVsZW0ubmFtZT09PSJzdmciKW9wdHM9e2RlY29kZUVudGl0aWVzOm9wdHMuZGVjb2RlRW50aXRpZXMseG1sTW9kZTp0cnVlfTt2YXIgdGFnPSI8IitlbGVtLm5hbWUsYXR0cmlicz1mb3JtYXRBdHRycyhlbGVtLmF0dHJpYnMsb3B0cyk7aWYoYXR0cmlicyl7dGFnKz0iICIrYXR0cmlic31pZihvcHRzLnhtbE1vZGUmJighZWxlbS5jaGlsZHJlbnx8ZWxlbS5jaGlsZHJlbi5sZW5ndGg9PT0wKSl7dGFnKz0iLz4ifWVsc2V7dGFnKz0iPiI7aWYoZWxlbS5jaGlsZHJlbil7dGFnKz1yZW5kZXIoZWxlbS5jaGlsZHJlbixvcHRzKX1pZighc2luZ2xlVGFnW2VsZW0ubmFtZV18fG9wdHMueG1sTW9kZSl7dGFnKz0iPC8iK2VsZW0ubmFtZSsiPiJ9fXJldHVybiB0YWd9ZnVuY3Rpb24gcmVuZGVyRGlyZWN0aXZlKGVsZW0pe3JldHVybiI8IitlbGVtLmRhdGErIj4ifWZ1bmN0aW9uIHJlbmRlclRleHQoZWxlbSxvcHRzKXt2YXIgZGF0YT1lbGVtLmRhdGF8fCIiO2lmKG9wdHMuZGVjb2RlRW50aXRpZXMmJiEoZWxlbS5wYXJlbnQmJmVsZW0ucGFyZW50Lm5hbWUgaW4gdW5lbmNvZGVkRWxlbWVudHMpKXtkYXRhPWVudGl0aWVzLmVuY29kZVhNTChkYXRhKX1yZXR1cm4gZGF0YX1mdW5jdGlvbiByZW5kZXJDZGF0YShlbGVtKXtyZXR1cm4iPCFbQ0RBVEFbIitlbGVtLmNoaWxkcmVuWzBdLmRhdGErIl1dPiJ9ZnVuY3Rpb24gcmVuZGVyQ29tbWVudChlbGVtKXtyZXR1cm4iPCEtLSIrZWxlbS5kYXRhKyItLT4ifX0se2RvbWVsZW1lbnR0eXBlOjgsZW50aXRpZXM6MjB9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17VGV4dDoidGV4dCIsRGlyZWN0aXZlOiJkaXJlY3RpdmUiLENvbW1lbnQ6ImNvbW1lbnQiLFNjcmlwdDoic2NyaXB0IixTdHlsZToic3R5bGUiLFRhZzoidGFnIixDREFUQToiY2RhdGEiLGlzVGFnOmZ1bmN0aW9uKGVsZW0pe3JldHVybiBlbGVtLnR5cGU9PT0idGFnInx8ZWxlbS50eXBlPT09InNjcmlwdCJ8fGVsZW0udHlwZT09PSJzdHlsZSJ9fX0se31dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPXtUZXh0OiJ0ZXh0IixEaXJlY3RpdmU6ImRpcmVjdGl2ZSIsQ29tbWVudDoiY29tbWVudCIsU2NyaXB0OiJzY3JpcHQiLFN0eWxlOiJzdHlsZSIsVGFnOiJ0YWciLENEQVRBOiJjZGF0YSIsRG9jdHlwZToiZG9jdHlwZSIsaXNUYWc6ZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0udHlwZT09PSJ0YWcifHxlbGVtLnR5cGU9PT0ic2NyaXB0Inx8ZWxlbS50eXBlPT09InN0eWxlIn19fSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBFbGVtZW50VHlwZT1yZXF1aXJlKCJkb21lbGVtZW50dHlwZSIpO3ZhciByZV93aGl0ZXNwYWNlPS9ccysvZzt2YXIgTm9kZVByb3RvdHlwZT1yZXF1aXJlKCIuL2xpYi9ub2RlIik7dmFyIEVsZW1lbnRQcm90b3R5cGU9cmVxdWlyZSgiLi9saWIvZWxlbWVudCIpO2Z1bmN0aW9uIERvbUhhbmRsZXIoY2FsbGJhY2ssb3B0aW9ucyxlbGVtZW50Q0Ipe2lmKHR5cGVvZiBjYWxsYmFjaz09PSJvYmplY3QiKXtlbGVtZW50Q0I9b3B0aW9ucztvcHRpb25zPWNhbGxiYWNrO2NhbGxiYWNrPW51bGx9ZWxzZSBpZih0eXBlb2Ygb3B0aW9ucz09PSJmdW5jdGlvbiIpe2VsZW1lbnRDQj1vcHRpb25zO29wdGlvbnM9ZGVmYXVsdE9wdHN9dGhpcy5fY2FsbGJhY2s9Y2FsbGJhY2s7dGhpcy5fb3B0aW9ucz1vcHRpb25zfHxkZWZhdWx0T3B0czt0aGlzLl9lbGVtZW50Q0I9ZWxlbWVudENCO3RoaXMuZG9tPVtdO3RoaXMuX2RvbmU9ZmFsc2U7dGhpcy5fdGFnU3RhY2s9W107dGhpcy5fcGFyc2VyPXRoaXMuX3BhcnNlcnx8bnVsbH12YXIgZGVmYXVsdE9wdHM9e25vcm1hbGl6ZVdoaXRlc3BhY2U6ZmFsc2Usd2l0aFN0YXJ0SW5kaWNlczpmYWxzZX07RG9tSGFuZGxlci5wcm90b3R5cGUub25wYXJzZXJpbml0PWZ1bmN0aW9uKHBhcnNlcil7dGhpcy5fcGFyc2VyPXBhcnNlcn07RG9tSGFuZGxlci5wcm90b3R5cGUub25yZXNldD1mdW5jdGlvbigpe0RvbUhhbmRsZXIuY2FsbCh0aGlzLHRoaXMuX2NhbGxiYWNrLHRoaXMuX29wdGlvbnMsdGhpcy5fZWxlbWVudENCKX07RG9tSGFuZGxlci5wcm90b3R5cGUub25lbmQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9kb25lKXJldHVybjt0aGlzLl9kb25lPXRydWU7dGhpcy5fcGFyc2VyPW51bGw7dGhpcy5faGFuZGxlQ2FsbGJhY2sobnVsbCl9O0RvbUhhbmRsZXIucHJvdG90eXBlLl9oYW5kbGVDYWxsYmFjaz1Eb21IYW5kbGVyLnByb3RvdHlwZS5vbmVycm9yPWZ1bmN0aW9uKGVycm9yKXtpZih0eXBlb2YgdGhpcy5fY2FsbGJhY2s9PT0iZnVuY3Rpb24iKXt0aGlzLl9jYWxsYmFjayhlcnJvcix0aGlzLmRvbSl9ZWxzZXtpZihlcnJvcil0aHJvdyBlcnJvcn19O0RvbUhhbmRsZXIucHJvdG90eXBlLm9uY2xvc2V0YWc9ZnVuY3Rpb24oKXt2YXIgZWxlbT10aGlzLl90YWdTdGFjay5wb3AoKTtpZih0aGlzLl9lbGVtZW50Q0IpdGhpcy5fZWxlbWVudENCKGVsZW0pfTtEb21IYW5kbGVyLnByb3RvdHlwZS5fYWRkRG9tRWxlbWVudD1mdW5jdGlvbihlbGVtZW50KXt2YXIgcGFyZW50PXRoaXMuX3RhZ1N0YWNrW3RoaXMuX3RhZ1N0YWNrLmxlbmd0aC0xXTt2YXIgc2libGluZ3M9cGFyZW50P3BhcmVudC5jaGlsZHJlbjp0aGlzLmRvbTt2YXIgcHJldmlvdXNTaWJsaW5nPXNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aC0xXTtlbGVtZW50Lm5leHQ9bnVsbDtpZih0aGlzLl9vcHRpb25zLndpdGhTdGFydEluZGljZXMpe2VsZW1lbnQuc3RhcnRJbmRleD10aGlzLl9wYXJzZXIuc3RhcnRJbmRleH1pZih0aGlzLl9vcHRpb25zLndpdGhEb21MdmwxKXtlbGVtZW50Ll9fcHJvdG9fXz1lbGVtZW50LnR5cGU9PT0idGFnIj9FbGVtZW50UHJvdG90eXBlOk5vZGVQcm90b3R5cGV9aWYocHJldmlvdXNTaWJsaW5nKXtlbGVtZW50LnByZXY9cHJldmlvdXNTaWJsaW5nO3ByZXZpb3VzU2libGluZy5uZXh0PWVsZW1lbnR9ZWxzZXtlbGVtZW50LnByZXY9bnVsbH1zaWJsaW5ncy5wdXNoKGVsZW1lbnQpO2VsZW1lbnQucGFyZW50PXBhcmVudHx8bnVsbH07RG9tSGFuZGxlci5wcm90b3R5cGUub25vcGVudGFnPWZ1bmN0aW9uKG5hbWUsYXR0cmlicyl7dmFyIGVsZW1lbnQ9e3R5cGU6bmFtZT09PSJzY3JpcHQiP0VsZW1lbnRUeXBlLlNjcmlwdDpuYW1lPT09InN0eWxlIj9FbGVtZW50VHlwZS5TdHlsZTpFbGVtZW50VHlwZS5UYWcsbmFtZTpuYW1lLGF0dHJpYnM6YXR0cmlicyxjaGlsZHJlbjpbXX07dGhpcy5fYWRkRG9tRWxlbWVudChlbGVtZW50KTt0aGlzLl90YWdTdGFjay5wdXNoKGVsZW1lbnQpfTtEb21IYW5kbGVyLnByb3RvdHlwZS5vbnRleHQ9ZnVuY3Rpb24oZGF0YSl7dmFyIG5vcm1hbGl6ZT10aGlzLl9vcHRpb25zLm5vcm1hbGl6ZVdoaXRlc3BhY2V8fHRoaXMuX29wdGlvbnMuaWdub3JlV2hpdGVzcGFjZTt2YXIgbGFzdFRhZztpZighdGhpcy5fdGFnU3RhY2subGVuZ3RoJiZ0aGlzLmRvbS5sZW5ndGgmJihsYXN0VGFnPXRoaXMuZG9tW3RoaXMuZG9tLmxlbmd0aC0xXSkudHlwZT09PUVsZW1lbnRUeXBlLlRleHQpe2lmKG5vcm1hbGl6ZSl7bGFzdFRhZy5kYXRhPShsYXN0VGFnLmRhdGErZGF0YSkucmVwbGFjZShyZV93aGl0ZXNwYWNlLCIgIil9ZWxzZXtsYXN0VGFnLmRhdGErPWRhdGF9fWVsc2V7aWYodGhpcy5fdGFnU3RhY2subGVuZ3RoJiYobGFzdFRhZz10aGlzLl90YWdTdGFja1t0aGlzLl90YWdTdGFjay5sZW5ndGgtMV0pJiYobGFzdFRhZz1sYXN0VGFnLmNoaWxkcmVuW2xhc3RUYWcuY2hpbGRyZW4ubGVuZ3RoLTFdKSYmbGFzdFRhZy50eXBlPT09RWxlbWVudFR5cGUuVGV4dCl7aWYobm9ybWFsaXplKXtsYXN0VGFnLmRhdGE9KGxhc3RUYWcuZGF0YStkYXRhKS5yZXBsYWNlKHJlX3doaXRlc3BhY2UsIiAiKX1lbHNle2xhc3RUYWcuZGF0YSs9ZGF0YX19ZWxzZXtpZihub3JtYWxpemUpe2RhdGE9ZGF0YS5yZXBsYWNlKHJlX3doaXRlc3BhY2UsIiAiKX10aGlzLl9hZGREb21FbGVtZW50KHtkYXRhOmRhdGEsdHlwZTpFbGVtZW50VHlwZS5UZXh0fSl9fX07RG9tSGFuZGxlci5wcm90b3R5cGUub25jb21tZW50PWZ1bmN0aW9uKGRhdGEpe3ZhciBsYXN0VGFnPXRoaXMuX3RhZ1N0YWNrW3RoaXMuX3RhZ1N0YWNrLmxlbmd0aC0xXTtpZihsYXN0VGFnJiZsYXN0VGFnLnR5cGU9PT1FbGVtZW50VHlwZS5Db21tZW50KXtsYXN0VGFnLmRhdGErPWRhdGE7cmV0dXJufXZhciBlbGVtZW50PXtkYXRhOmRhdGEsdHlwZTpFbGVtZW50VHlwZS5Db21tZW50fTt0aGlzLl9hZGREb21FbGVtZW50KGVsZW1lbnQpO3RoaXMuX3RhZ1N0YWNrLnB1c2goZWxlbWVudCl9O0RvbUhhbmRsZXIucHJvdG90eXBlLm9uY2RhdGFzdGFydD1mdW5jdGlvbigpe3ZhciBlbGVtZW50PXtjaGlsZHJlbjpbe2RhdGE6IiIsdHlwZTpFbGVtZW50VHlwZS5UZXh0fV0sdHlwZTpFbGVtZW50VHlwZS5DREFUQX07dGhpcy5fYWRkRG9tRWxlbWVudChlbGVtZW50KTt0aGlzLl90YWdTdGFjay5wdXNoKGVsZW1lbnQpfTtEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNvbW1lbnRlbmQ9RG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YWVuZD1mdW5jdGlvbigpe3RoaXMuX3RhZ1N0YWNrLnBvcCgpfTtEb21IYW5kbGVyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbj1mdW5jdGlvbihuYW1lLGRhdGEpe3RoaXMuX2FkZERvbUVsZW1lbnQoe25hbWU6bmFtZSxkYXRhOmRhdGEsdHlwZTpFbGVtZW50VHlwZS5EaXJlY3RpdmV9KX07bW9kdWxlLmV4cG9ydHM9RG9tSGFuZGxlcn0seyIuL2xpYi9lbGVtZW50IjoxMSwiLi9saWIvbm9kZSI6MTIsZG9tZWxlbWVudHR5cGU6OX1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgTm9kZVByb3RvdHlwZT1yZXF1aXJlKCIuL25vZGUiKTt2YXIgRWxlbWVudFByb3RvdHlwZT1tb2R1bGUuZXhwb3J0cz1PYmplY3QuY3JlYXRlKE5vZGVQcm90b3R5cGUpO3ZhciBkb21MdmwxPXt0YWdOYW1lOiJuYW1lIn07T2JqZWN0LmtleXMoZG9tTHZsMSkuZm9yRWFjaChmdW5jdGlvbihrZXkpe3ZhciBzaG9ydGhhbmQ9ZG9tTHZsMVtrZXldO09iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50UHJvdG90eXBlLGtleSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbc2hvcnRoYW5kXXx8bnVsbH0sc2V0OmZ1bmN0aW9uKHZhbCl7dGhpc1tzaG9ydGhhbmRdPXZhbDtyZXR1cm4gdmFsfX0pfSl9LHsiLi9ub2RlIjoxMn1dLDEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgTm9kZVByb3RvdHlwZT1tb2R1bGUuZXhwb3J0cz17Z2V0IGZpcnN0Q2hpbGQoKXt2YXIgY2hpbGRyZW49dGhpcy5jaGlsZHJlbjtyZXR1cm4gY2hpbGRyZW4mJmNoaWxkcmVuWzBdfHxudWxsfSxnZXQgbGFzdENoaWxkKCl7dmFyIGNoaWxkcmVuPXRoaXMuY2hpbGRyZW47cmV0dXJuIGNoaWxkcmVuJiZjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGgtMV18fG51bGx9LGdldCBub2RlVHlwZSgpe3JldHVybiBub2RlVHlwZXNbdGhpcy50eXBlXXx8bm9kZVR5cGVzLmVsZW1lbnR9fTt2YXIgZG9tTHZsMT17dGFnTmFtZToibmFtZSIsY2hpbGROb2RlczoiY2hpbGRyZW4iLHBhcmVudE5vZGU6InBhcmVudCIscHJldmlvdXNTaWJsaW5nOiJwcmV2IixuZXh0U2libGluZzoibmV4dCIsbm9kZVZhbHVlOiJkYXRhIn07dmFyIG5vZGVUeXBlcz17ZWxlbWVudDoxLHRleHQ6MyxjZGF0YTo0LGNvbW1lbnQ6OH07T2JqZWN0LmtleXMoZG9tTHZsMSkuZm9yRWFjaChmdW5jdGlvbihrZXkpe3ZhciBzaG9ydGhhbmQ9ZG9tTHZsMVtrZXldO09iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlUHJvdG90eXBlLGtleSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbc2hvcnRoYW5kXXx8bnVsbH0sc2V0OmZ1bmN0aW9uKHZhbCl7dGhpc1tzaG9ydGhhbmRdPXZhbDtyZXR1cm4gdmFsfX0pfSl9LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIERvbVV0aWxzPW1vZHVsZS5leHBvcnRzO1tyZXF1aXJlKCIuL2xpYi9zdHJpbmdpZnkiKSxyZXF1aXJlKCIuL2xpYi90cmF2ZXJzYWwiKSxyZXF1aXJlKCIuL2xpYi9tYW5pcHVsYXRpb24iKSxyZXF1aXJlKCIuL2xpYi9xdWVyeWluZyIpLHJlcXVpcmUoIi4vbGliL2xlZ2FjeSIpLHJlcXVpcmUoIi4vbGliL2hlbHBlcnMiKV0uZm9yRWFjaChmdW5jdGlvbihleHQpe09iamVjdC5rZXlzKGV4dCkuZm9yRWFjaChmdW5jdGlvbihrZXkpe0RvbVV0aWxzW2tleV09ZXh0W2tleV0uYmluZChEb21VdGlscyl9KX0pfSx7Ii4vbGliL2hlbHBlcnMiOjE0LCIuL2xpYi9sZWdhY3kiOjE1LCIuL2xpYi9tYW5pcHVsYXRpb24iOjE2LCIuL2xpYi9xdWVyeWluZyI6MTcsIi4vbGliL3N0cmluZ2lmeSI6MTgsIi4vbGliL3RyYXZlcnNhbCI6MTl9XSwxNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7ZXhwb3J0cy5yZW1vdmVTdWJzZXRzPWZ1bmN0aW9uKG5vZGVzKXt2YXIgaWR4PW5vZGVzLmxlbmd0aCxub2RlLGFuY2VzdG9yLHJlcGxhY2U7d2hpbGUoLS1pZHg+LTEpe25vZGU9YW5jZXN0b3I9bm9kZXNbaWR4XTtub2Rlc1tpZHhdPW51bGw7cmVwbGFjZT10cnVlO3doaWxlKGFuY2VzdG9yKXtpZihub2Rlcy5pbmRleE9mKGFuY2VzdG9yKT4tMSl7cmVwbGFjZT1mYWxzZTtub2Rlcy5zcGxpY2UoaWR4LDEpO2JyZWFrfWFuY2VzdG9yPWFuY2VzdG9yLnBhcmVudH1pZihyZXBsYWNlKXtub2Rlc1tpZHhdPW5vZGV9fXJldHVybiBub2Rlc307dmFyIFBPU0lUSU9OPXtESVNDT05ORUNURUQ6MSxQUkVDRURJTkc6MixGT0xMT1dJTkc6NCxDT05UQUlOUzo4LENPTlRBSU5FRF9CWToxNn07dmFyIGNvbXBhcmVQb3M9ZXhwb3J0cy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj1mdW5jdGlvbihub2RlQSxub2RlQil7dmFyIGFQYXJlbnRzPVtdO3ZhciBiUGFyZW50cz1bXTt2YXIgY3VycmVudCxzaGFyZWRQYXJlbnQsc2libGluZ3MsYVNpYmxpbmcsYlNpYmxpbmcsaWR4O2lmKG5vZGVBPT09bm9kZUIpe3JldHVybiAwfWN1cnJlbnQ9bm9kZUE7d2hpbGUoY3VycmVudCl7YVBhcmVudHMudW5zaGlmdChjdXJyZW50KTtjdXJyZW50PWN1cnJlbnQucGFyZW50fWN1cnJlbnQ9bm9kZUI7d2hpbGUoY3VycmVudCl7YlBhcmVudHMudW5zaGlmdChjdXJyZW50KTtjdXJyZW50PWN1cnJlbnQucGFyZW50fWlkeD0wO3doaWxlKGFQYXJlbnRzW2lkeF09PT1iUGFyZW50c1tpZHhdKXtpZHgrK31pZihpZHg9PT0wKXtyZXR1cm4gUE9TSVRJT04uRElTQ09OTkVDVEVEfXNoYXJlZFBhcmVudD1hUGFyZW50c1tpZHgtMV07c2libGluZ3M9c2hhcmVkUGFyZW50LmNoaWxkcmVuO2FTaWJsaW5nPWFQYXJlbnRzW2lkeF07YlNpYmxpbmc9YlBhcmVudHNbaWR4XTtpZihzaWJsaW5ncy5pbmRleE9mKGFTaWJsaW5nKT5zaWJsaW5ncy5pbmRleE9mKGJTaWJsaW5nKSl7aWYoc2hhcmVkUGFyZW50PT09bm9kZUIpe3JldHVybiBQT1NJVElPTi5GT0xMT1dJTkd8UE9TSVRJT04uQ09OVEFJTkVEX0JZfXJldHVybiBQT1NJVElPTi5GT0xMT1dJTkd9ZWxzZXtpZihzaGFyZWRQYXJlbnQ9PT1ub2RlQSl7cmV0dXJuIFBPU0lUSU9OLlBSRUNFRElOR3xQT1NJVElPTi5DT05UQUlOU31yZXR1cm4gUE9TSVRJT04uUFJFQ0VESU5HfX07ZXhwb3J0cy51bmlxdWVTb3J0PWZ1bmN0aW9uKG5vZGVzKXt2YXIgaWR4PW5vZGVzLmxlbmd0aCxub2RlLHBvc2l0aW9uO25vZGVzPW5vZGVzLnNsaWNlKCk7d2hpbGUoLS1pZHg+LTEpe25vZGU9bm9kZXNbaWR4XTtwb3NpdGlvbj1ub2Rlcy5pbmRleE9mKG5vZGUpO2lmKHBvc2l0aW9uPi0xJiZwb3NpdGlvbjxpZHgpe25vZGVzLnNwbGljZShpZHgsMSl9fW5vZGVzLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgcmVsYXRpdmU9Y29tcGFyZVBvcyhhLGIpO2lmKHJlbGF0aXZlJlBPU0lUSU9OLlBSRUNFRElORyl7cmV0dXJuLTF9ZWxzZSBpZihyZWxhdGl2ZSZQT1NJVElPTi5GT0xMT1dJTkcpe3JldHVybiAxfXJldHVybiAwfSk7cmV0dXJuIG5vZGVzfX0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgRWxlbWVudFR5cGU9cmVxdWlyZSgiZG9tZWxlbWVudHR5cGUiKTt2YXIgaXNUYWc9ZXhwb3J0cy5pc1RhZz1FbGVtZW50VHlwZS5pc1RhZztleHBvcnRzLnRlc3RFbGVtZW50PWZ1bmN0aW9uKG9wdGlvbnMsZWxlbWVudCl7Zm9yKHZhciBrZXkgaW4gb3B0aW9ucyl7aWYoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSk7ZWxzZSBpZihrZXk9PT0idGFnX25hbWUiKXtpZighaXNUYWcoZWxlbWVudCl8fCFvcHRpb25zLnRhZ19uYW1lKGVsZW1lbnQubmFtZSkpe3JldHVybiBmYWxzZX19ZWxzZSBpZihrZXk9PT0idGFnX3R5cGUiKXtpZighb3B0aW9ucy50YWdfdHlwZShlbGVtZW50LnR5cGUpKXJldHVybiBmYWxzZX1lbHNlIGlmKGtleT09PSJ0YWdfY29udGFpbnMiKXtpZihpc1RhZyhlbGVtZW50KXx8IW9wdGlvbnMudGFnX2NvbnRhaW5zKGVsZW1lbnQuZGF0YSkpe3JldHVybiBmYWxzZX19ZWxzZSBpZighZWxlbWVudC5hdHRyaWJzfHwhb3B0aW9uc1trZXldKGVsZW1lbnQuYXR0cmlic1trZXldKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX07dmFyIENoZWNrcz17dGFnX25hbWU6ZnVuY3Rpb24obmFtZSl7aWYodHlwZW9mIG5hbWU9PT0iZnVuY3Rpb24iKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGlzVGFnKGVsZW0pJiZuYW1lKGVsZW0ubmFtZSl9fWVsc2UgaWYobmFtZT09PSIqIil7cmV0dXJuIGlzVGFnfWVsc2V7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiBpc1RhZyhlbGVtKSYmZWxlbS5uYW1lPT09bmFtZX19fSx0YWdfdHlwZTpmdW5jdGlvbih0eXBlKXtpZih0eXBlb2YgdHlwZT09PSJmdW5jdGlvbiIpe3JldHVybiBmdW5jdGlvbihlbGVtKXtyZXR1cm4gdHlwZShlbGVtLnR5cGUpfX1lbHNle3JldHVybiBmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS50eXBlPT09dHlwZX19fSx0YWdfY29udGFpbnM6ZnVuY3Rpb24oZGF0YSl7aWYodHlwZW9mIGRhdGE9PT0iZnVuY3Rpb24iKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7cmV0dXJuIWlzVGFnKGVsZW0pJiZkYXRhKGVsZW0uZGF0YSl9fWVsc2V7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiFpc1RhZyhlbGVtKSYmZWxlbS5kYXRhPT09ZGF0YX19fX07ZnVuY3Rpb24gZ2V0QXR0cmliQ2hlY2soYXR0cmliLHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0iZnVuY3Rpb24iKXtyZXR1cm4gZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0uYXR0cmlicyYmdmFsdWUoZWxlbS5hdHRyaWJzW2F0dHJpYl0pfX1lbHNle3JldHVybiBmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5hdHRyaWJzJiZlbGVtLmF0dHJpYnNbYXR0cmliXT09PXZhbHVlfX19ZnVuY3Rpb24gY29tYmluZUZ1bmNzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGVsZW0pe3JldHVybiBhKGVsZW0pfHxiKGVsZW0pfX1leHBvcnRzLmdldEVsZW1lbnRzPWZ1bmN0aW9uKG9wdGlvbnMsZWxlbWVudCxyZWN1cnNlLGxpbWl0KXt2YXIgZnVuY3M9T2JqZWN0LmtleXMob3B0aW9ucykubWFwKGZ1bmN0aW9uKGtleSl7dmFyIHZhbHVlPW9wdGlvbnNba2V5XTtyZXR1cm4ga2V5IGluIENoZWNrcz9DaGVja3Nba2V5XSh2YWx1ZSk6Z2V0QXR0cmliQ2hlY2soa2V5LHZhbHVlKX0pO3JldHVybiBmdW5jcy5sZW5ndGg9PT0wP1tdOnRoaXMuZmlsdGVyKGZ1bmNzLnJlZHVjZShjb21iaW5lRnVuY3MpLGVsZW1lbnQscmVjdXJzZSxsaW1pdCl9O2V4cG9ydHMuZ2V0RWxlbWVudEJ5SWQ9ZnVuY3Rpb24oaWQsZWxlbWVudCxyZWN1cnNlKXtpZighQXJyYXkuaXNBcnJheShlbGVtZW50KSllbGVtZW50PVtlbGVtZW50XTtyZXR1cm4gdGhpcy5maW5kT25lKGdldEF0dHJpYkNoZWNrKCJpZCIsaWQpLGVsZW1lbnQscmVjdXJzZSE9PWZhbHNlKX07ZXhwb3J0cy5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlvbihuYW1lLGVsZW1lbnQscmVjdXJzZSxsaW1pdCl7cmV0dXJuIHRoaXMuZmlsdGVyKENoZWNrcy50YWdfbmFtZShuYW1lKSxlbGVtZW50LHJlY3Vyc2UsbGltaXQpfTtleHBvcnRzLmdldEVsZW1lbnRzQnlUYWdUeXBlPWZ1bmN0aW9uKHR5cGUsZWxlbWVudCxyZWN1cnNlLGxpbWl0KXtyZXR1cm4gdGhpcy5maWx0ZXIoQ2hlY2tzLnRhZ190eXBlKHR5cGUpLGVsZW1lbnQscmVjdXJzZSxsaW1pdCl9fSx7ZG9tZWxlbWVudHR5cGU6OX1dLDE2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtleHBvcnRzLnJlbW92ZUVsZW1lbnQ9ZnVuY3Rpb24oZWxlbSl7aWYoZWxlbS5wcmV2KWVsZW0ucHJldi5uZXh0PWVsZW0ubmV4dDtpZihlbGVtLm5leHQpZWxlbS5uZXh0LnByZXY9ZWxlbS5wcmV2O2lmKGVsZW0ucGFyZW50KXt2YXIgY2hpbGRzPWVsZW0ucGFyZW50LmNoaWxkcmVuO2NoaWxkcy5zcGxpY2UoY2hpbGRzLmxhc3RJbmRleE9mKGVsZW0pLDEpfX07ZXhwb3J0cy5yZXBsYWNlRWxlbWVudD1mdW5jdGlvbihlbGVtLHJlcGxhY2VtZW50KXt2YXIgcHJldj1yZXBsYWNlbWVudC5wcmV2PWVsZW0ucHJldjtpZihwcmV2KXtwcmV2Lm5leHQ9cmVwbGFjZW1lbnR9dmFyIG5leHQ9cmVwbGFjZW1lbnQubmV4dD1lbGVtLm5leHQ7aWYobmV4dCl7bmV4dC5wcmV2PXJlcGxhY2VtZW50fXZhciBwYXJlbnQ9cmVwbGFjZW1lbnQucGFyZW50PWVsZW0ucGFyZW50O2lmKHBhcmVudCl7dmFyIGNoaWxkcz1wYXJlbnQuY2hpbGRyZW47Y2hpbGRzW2NoaWxkcy5sYXN0SW5kZXhPZihlbGVtKV09cmVwbGFjZW1lbnR9fTtleHBvcnRzLmFwcGVuZENoaWxkPWZ1bmN0aW9uKGVsZW0sY2hpbGQpe2NoaWxkLnBhcmVudD1lbGVtO2lmKGVsZW0uY2hpbGRyZW4ucHVzaChjaGlsZCkhPT0xKXt2YXIgc2libGluZz1lbGVtLmNoaWxkcmVuW2VsZW0uY2hpbGRyZW4ubGVuZ3RoLTJdO3NpYmxpbmcubmV4dD1jaGlsZDtjaGlsZC5wcmV2PXNpYmxpbmc7Y2hpbGQubmV4dD1udWxsfX07ZXhwb3J0cy5hcHBlbmQ9ZnVuY3Rpb24oZWxlbSxuZXh0KXt2YXIgcGFyZW50PWVsZW0ucGFyZW50LGN1cnJOZXh0PWVsZW0ubmV4dDtuZXh0Lm5leHQ9Y3Vyck5leHQ7bmV4dC5wcmV2PWVsZW07ZWxlbS5uZXh0PW5leHQ7bmV4dC5wYXJlbnQ9cGFyZW50O2lmKGN1cnJOZXh0KXtjdXJyTmV4dC5wcmV2PW5leHQ7aWYocGFyZW50KXt2YXIgY2hpbGRzPXBhcmVudC5jaGlsZHJlbjtjaGlsZHMuc3BsaWNlKGNoaWxkcy5sYXN0SW5kZXhPZihjdXJyTmV4dCksMCxuZXh0KX19ZWxzZSBpZihwYXJlbnQpe3BhcmVudC5jaGlsZHJlbi5wdXNoKG5leHQpfX07ZXhwb3J0cy5wcmVwZW5kPWZ1bmN0aW9uKGVsZW0scHJldil7dmFyIHBhcmVudD1lbGVtLnBhcmVudDtpZihwYXJlbnQpe3ZhciBjaGlsZHM9cGFyZW50LmNoaWxkcmVuO2NoaWxkcy5zcGxpY2UoY2hpbGRzLmxhc3RJbmRleE9mKGVsZW0pLDAscHJldil9aWYoZWxlbS5wcmV2KXtlbGVtLnByZXYubmV4dD1wcmV2fXByZXYucGFyZW50PXBhcmVudDtwcmV2LnByZXY9ZWxlbS5wcmV2O3ByZXYubmV4dD1lbGVtO2VsZW0ucHJldj1wcmV2fX0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgaXNUYWc9cmVxdWlyZSgiZG9tZWxlbWVudHR5cGUiKS5pc1RhZzttb2R1bGUuZXhwb3J0cz17ZmlsdGVyOmZpbHRlcixmaW5kOmZpbmQsZmluZE9uZUNoaWxkOmZpbmRPbmVDaGlsZCxmaW5kT25lOmZpbmRPbmUsZXhpc3RzT25lOmV4aXN0c09uZSxmaW5kQWxsOmZpbmRBbGx9O2Z1bmN0aW9uIGZpbHRlcih0ZXN0LGVsZW1lbnQscmVjdXJzZSxsaW1pdCl7aWYoIUFycmF5LmlzQXJyYXkoZWxlbWVudCkpZWxlbWVudD1bZWxlbWVudF07aWYodHlwZW9mIGxpbWl0IT09Im51bWJlciJ8fCFpc0Zpbml0ZShsaW1pdCkpe2xpbWl0PUluZmluaXR5fXJldHVybiBmaW5kKHRlc3QsZWxlbWVudCxyZWN1cnNlIT09ZmFsc2UsbGltaXQpfWZ1bmN0aW9uIGZpbmQodGVzdCxlbGVtcyxyZWN1cnNlLGxpbWl0KXt2YXIgcmVzdWx0PVtdLGNoaWxkcztmb3IodmFyIGk9MCxqPWVsZW1zLmxlbmd0aDtpPGo7aSsrKXtpZih0ZXN0KGVsZW1zW2ldKSl7cmVzdWx0LnB1c2goZWxlbXNbaV0pO2lmKC0tbGltaXQ8PTApYnJlYWt9Y2hpbGRzPWVsZW1zW2ldLmNoaWxkcmVuO2lmKHJlY3Vyc2UmJmNoaWxkcyYmY2hpbGRzLmxlbmd0aD4wKXtjaGlsZHM9ZmluZCh0ZXN0LGNoaWxkcyxyZWN1cnNlLGxpbWl0KTtyZXN1bHQ9cmVzdWx0LmNvbmNhdChjaGlsZHMpO2xpbWl0LT1jaGlsZHMubGVuZ3RoO2lmKGxpbWl0PD0wKWJyZWFrfX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGZpbmRPbmVDaGlsZCh0ZXN0LGVsZW1zKXtmb3IodmFyIGk9MCxsPWVsZW1zLmxlbmd0aDtpPGw7aSsrKXtpZih0ZXN0KGVsZW1zW2ldKSlyZXR1cm4gZWxlbXNbaV19cmV0dXJuIG51bGx9ZnVuY3Rpb24gZmluZE9uZSh0ZXN0LGVsZW1zKXt2YXIgZWxlbT1udWxsO2Zvcih2YXIgaT0wLGw9ZWxlbXMubGVuZ3RoO2k8bCYmIWVsZW07aSsrKXtpZighaXNUYWcoZWxlbXNbaV0pKXtjb250aW51ZX1lbHNlIGlmKHRlc3QoZWxlbXNbaV0pKXtlbGVtPWVsZW1zW2ldfWVsc2UgaWYoZWxlbXNbaV0uY2hpbGRyZW4ubGVuZ3RoPjApe2VsZW09ZmluZE9uZSh0ZXN0LGVsZW1zW2ldLmNoaWxkcmVuKX19cmV0dXJuIGVsZW19ZnVuY3Rpb24gZXhpc3RzT25lKHRlc3QsZWxlbXMpe2Zvcih2YXIgaT0wLGw9ZWxlbXMubGVuZ3RoO2k8bDtpKyspe2lmKGlzVGFnKGVsZW1zW2ldKSYmKHRlc3QoZWxlbXNbaV0pfHxlbGVtc1tpXS5jaGlsZHJlbi5sZW5ndGg+MCYmZXhpc3RzT25lKHRlc3QsZWxlbXNbaV0uY2hpbGRyZW4pKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1mdW5jdGlvbiBmaW5kQWxsKHRlc3QsZWxlbXMpe3ZhciByZXN1bHQ9W107Zm9yKHZhciBpPTAsaj1lbGVtcy5sZW5ndGg7aTxqO2krKyl7aWYoIWlzVGFnKGVsZW1zW2ldKSljb250aW51ZTtpZih0ZXN0KGVsZW1zW2ldKSlyZXN1bHQucHVzaChlbGVtc1tpXSk7aWYoZWxlbXNbaV0uY2hpbGRyZW4ubGVuZ3RoPjApe3Jlc3VsdD1yZXN1bHQuY29uY2F0KGZpbmRBbGwodGVzdCxlbGVtc1tpXS5jaGlsZHJlbikpfX1yZXR1cm4gcmVzdWx0fX0se2RvbWVsZW1lbnR0eXBlOjl9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIEVsZW1lbnRUeXBlPXJlcXVpcmUoImRvbWVsZW1lbnR0eXBlIiksZ2V0T3V0ZXJIVE1MPXJlcXVpcmUoImRvbS1zZXJpYWxpemVyIiksaXNUYWc9RWxlbWVudFR5cGUuaXNUYWc7bW9kdWxlLmV4cG9ydHM9e2dldElubmVySFRNTDpnZXRJbm5lckhUTUwsZ2V0T3V0ZXJIVE1MOmdldE91dGVySFRNTCxnZXRUZXh0OmdldFRleHR9O2Z1bmN0aW9uIGdldElubmVySFRNTChlbGVtLG9wdHMpe3JldHVybiBlbGVtLmNoaWxkcmVuP2VsZW0uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGVsZW0pe3JldHVybiBnZXRPdXRlckhUTUwoZWxlbSxvcHRzKX0pLmpvaW4oIiIpOiIifWZ1bmN0aW9uIGdldFRleHQoZWxlbSl7aWYoQXJyYXkuaXNBcnJheShlbGVtKSlyZXR1cm4gZWxlbS5tYXAoZ2V0VGV4dCkuam9pbigiIik7aWYoaXNUYWcoZWxlbSl8fGVsZW0udHlwZT09PUVsZW1lbnRUeXBlLkNEQVRBKXJldHVybiBnZXRUZXh0KGVsZW0uY2hpbGRyZW4pO2lmKGVsZW0udHlwZT09PUVsZW1lbnRUeXBlLlRleHQpcmV0dXJuIGVsZW0uZGF0YTtyZXR1cm4iIn19LHsiZG9tLXNlcmlhbGl6ZXIiOjcsZG9tZWxlbWVudHR5cGU6OX1dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgZ2V0Q2hpbGRyZW49ZXhwb3J0cy5nZXRDaGlsZHJlbj1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5jaGlsZHJlbn07dmFyIGdldFBhcmVudD1leHBvcnRzLmdldFBhcmVudD1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5wYXJlbnR9O2V4cG9ydHMuZ2V0U2libGluZ3M9ZnVuY3Rpb24oZWxlbSl7dmFyIHBhcmVudD1nZXRQYXJlbnQoZWxlbSk7cmV0dXJuIHBhcmVudD9nZXRDaGlsZHJlbihwYXJlbnQpOltlbGVtXX07ZXhwb3J0cy5nZXRBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlbGVtLG5hbWUpe3JldHVybiBlbGVtLmF0dHJpYnMmJmVsZW0uYXR0cmlic1tuYW1lXX07ZXhwb3J0cy5oYXNBdHRyaWI9ZnVuY3Rpb24oZWxlbSxuYW1lKXtyZXR1cm4hIWVsZW0uYXR0cmlicyYmaGFzT3duUHJvcGVydHkuY2FsbChlbGVtLmF0dHJpYnMsbmFtZSl9O2V4cG9ydHMuZ2V0TmFtZT1mdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5uYW1lfX0se31dLDIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgZW5jb2RlPXJlcXVpcmUoIi4vbGliL2VuY29kZS5qcyIpLGRlY29kZT1yZXF1aXJlKCIuL2xpYi9kZWNvZGUuanMiKTtleHBvcnRzLmRlY29kZT1mdW5jdGlvbihkYXRhLGxldmVsKXtyZXR1cm4oIWxldmVsfHxsZXZlbDw9MD9kZWNvZGUuWE1MOmRlY29kZS5IVE1MKShkYXRhKX07ZXhwb3J0cy5kZWNvZGVTdHJpY3Q9ZnVuY3Rpb24oZGF0YSxsZXZlbCl7cmV0dXJuKCFsZXZlbHx8bGV2ZWw8PTA/ZGVjb2RlLlhNTDpkZWNvZGUuSFRNTFN0cmljdCkoZGF0YSl9O2V4cG9ydHMuZW5jb2RlPWZ1bmN0aW9uKGRhdGEsbGV2ZWwpe3JldHVybighbGV2ZWx8fGxldmVsPD0wP2VuY29kZS5YTUw6ZW5jb2RlLkhUTUwpKGRhdGEpfTtleHBvcnRzLmVuY29kZVhNTD1lbmNvZGUuWE1MO2V4cG9ydHMuZW5jb2RlSFRNTDQ9ZXhwb3J0cy5lbmNvZGVIVE1MNT1leHBvcnRzLmVuY29kZUhUTUw9ZW5jb2RlLkhUTUw7ZXhwb3J0cy5kZWNvZGVYTUw9ZXhwb3J0cy5kZWNvZGVYTUxTdHJpY3Q9ZGVjb2RlLlhNTDtleHBvcnRzLmRlY29kZUhUTUw0PWV4cG9ydHMuZGVjb2RlSFRNTDU9ZXhwb3J0cy5kZWNvZGVIVE1MPWRlY29kZS5IVE1MO2V4cG9ydHMuZGVjb2RlSFRNTDRTdHJpY3Q9ZXhwb3J0cy5kZWNvZGVIVE1MNVN0cmljdD1leHBvcnRzLmRlY29kZUhUTUxTdHJpY3Q9ZGVjb2RlLkhUTUxTdHJpY3Q7ZXhwb3J0cy5lc2NhcGU9ZW5jb2RlLmVzY2FwZX0seyIuL2xpYi9kZWNvZGUuanMiOjIxLCIuL2xpYi9lbmNvZGUuanMiOjIzfV0sMjE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBlbnRpdHlNYXA9cmVxdWlyZSgiLi4vbWFwcy9lbnRpdGllcy5qc29uIiksbGVnYWN5TWFwPXJlcXVpcmUoIi4uL21hcHMvbGVnYWN5Lmpzb24iKSx4bWxNYXA9cmVxdWlyZSgiLi4vbWFwcy94bWwuanNvbiIpLGRlY29kZUNvZGVQb2ludD1yZXF1aXJlKCIuL2RlY29kZV9jb2RlcG9pbnQuanMiKTt2YXIgZGVjb2RlWE1MU3RyaWN0PWdldFN0cmljdERlY29kZXIoeG1sTWFwKSxkZWNvZGVIVE1MU3RyaWN0PWdldFN0cmljdERlY29kZXIoZW50aXR5TWFwKTtmdW5jdGlvbiBnZXRTdHJpY3REZWNvZGVyKG1hcCl7dmFyIGtleXM9T2JqZWN0LmtleXMobWFwKS5qb2luKCJ8IikscmVwbGFjZT1nZXRSZXBsYWNlcihtYXApO2tleXMrPSJ8I1t4WF1bXFxkYS1mQS1GXSt8I1xcZCsiO3ZhciByZT1uZXcgUmVnRXhwKCImKD86IitrZXlzKyIpOyIsImciKTtyZXR1cm4gZnVuY3Rpb24oc3RyKXtyZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZShyZSxyZXBsYWNlKX19dmFyIGRlY29kZUhUTUw9ZnVuY3Rpb24oKXt2YXIgbGVnYWN5PU9iamVjdC5rZXlzKGxlZ2FjeU1hcCkuc29ydChzb3J0ZXIpO3ZhciBrZXlzPU9iamVjdC5rZXlzKGVudGl0eU1hcCkuc29ydChzb3J0ZXIpO2Zvcih2YXIgaT0wLGo9MDtpPGtleXMubGVuZ3RoO2krKyl7aWYobGVnYWN5W2pdPT09a2V5c1tpXSl7a2V5c1tpXSs9Ijs/IjtqKyt9ZWxzZXtrZXlzW2ldKz0iOyJ9fXZhciByZT1uZXcgUmVnRXhwKCImKD86IitrZXlzLmpvaW4oInwiKSsifCNbeFhdW1xcZGEtZkEtRl0rOz98I1xcZCs7PykiLCJnIikscmVwbGFjZT1nZXRSZXBsYWNlcihlbnRpdHlNYXApO2Z1bmN0aW9uIHJlcGxhY2VyKHN0cil7aWYoc3RyLnN1YnN0cigtMSkhPT0iOyIpc3RyKz0iOyI7cmV0dXJuIHJlcGxhY2Uoc3RyKX1yZXR1cm4gZnVuY3Rpb24oc3RyKXtyZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZShyZSxyZXBsYWNlcil9fSgpO2Z1bmN0aW9uIHNvcnRlcihhLGIpe3JldHVybiBhPGI/MTotMX1mdW5jdGlvbiBnZXRSZXBsYWNlcihtYXApe3JldHVybiBmdW5jdGlvbiByZXBsYWNlKHN0cil7aWYoc3RyLmNoYXJBdCgxKT09PSIjIil7aWYoc3RyLmNoYXJBdCgyKT09PSJYInx8c3RyLmNoYXJBdCgyKT09PSJ4Iil7cmV0dXJuIGRlY29kZUNvZGVQb2ludChwYXJzZUludChzdHIuc3Vic3RyKDMpLDE2KSl9cmV0dXJuIGRlY29kZUNvZGVQb2ludChwYXJzZUludChzdHIuc3Vic3RyKDIpLDEwKSl9cmV0dXJuIG1hcFtzdHIuc2xpY2UoMSwtMSldOworfX1tb2R1bGUuZXhwb3J0cz17WE1MOmRlY29kZVhNTFN0cmljdCxIVE1MOmRlY29kZUhUTUwsSFRNTFN0cmljdDpkZWNvZGVIVE1MU3RyaWN0fX0seyIuLi9tYXBzL2VudGl0aWVzLmpzb24iOjI1LCIuLi9tYXBzL2xlZ2FjeS5qc29uIjoyNiwiLi4vbWFwcy94bWwuanNvbiI6MjcsIi4vZGVjb2RlX2NvZGVwb2ludC5qcyI6MjJ9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIGRlY29kZU1hcD1yZXF1aXJlKCIuLi9tYXBzL2RlY29kZS5qc29uIik7bW9kdWxlLmV4cG9ydHM9ZGVjb2RlQ29kZVBvaW50O2Z1bmN0aW9uIGRlY29kZUNvZGVQb2ludChjb2RlUG9pbnQpe2lmKGNvZGVQb2ludD49NTUyOTYmJmNvZGVQb2ludDw9NTczNDN8fGNvZGVQb2ludD4xMTE0MTExKXtyZXR1cm4i77+9In1pZihjb2RlUG9pbnQgaW4gZGVjb2RlTWFwKXtjb2RlUG9pbnQ9ZGVjb2RlTWFwW2NvZGVQb2ludF19dmFyIG91dHB1dD0iIjtpZihjb2RlUG9pbnQ+NjU1MzUpe2NvZGVQb2ludC09NjU1MzY7b3V0cHV0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGVQb2ludD4+PjEwJjEwMjN8NTUyOTYpO2NvZGVQb2ludD01NjMyMHxjb2RlUG9pbnQmMTAyM31vdXRwdXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KTtyZXR1cm4gb3V0cHV0fX0seyIuLi9tYXBzL2RlY29kZS5qc29uIjoyNH1dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgaW52ZXJzZVhNTD1nZXRJbnZlcnNlT2JqKHJlcXVpcmUoIi4uL21hcHMveG1sLmpzb24iKSkseG1sUmVwbGFjZXI9Z2V0SW52ZXJzZVJlcGxhY2VyKGludmVyc2VYTUwpO2V4cG9ydHMuWE1MPWdldEludmVyc2UoaW52ZXJzZVhNTCx4bWxSZXBsYWNlcik7dmFyIGludmVyc2VIVE1MPWdldEludmVyc2VPYmoocmVxdWlyZSgiLi4vbWFwcy9lbnRpdGllcy5qc29uIikpLGh0bWxSZXBsYWNlcj1nZXRJbnZlcnNlUmVwbGFjZXIoaW52ZXJzZUhUTUwpO2V4cG9ydHMuSFRNTD1nZXRJbnZlcnNlKGludmVyc2VIVE1MLGh0bWxSZXBsYWNlcik7ZnVuY3Rpb24gZ2V0SW52ZXJzZU9iaihvYmope3JldHVybiBPYmplY3Qua2V5cyhvYmopLnNvcnQoKS5yZWR1Y2UoZnVuY3Rpb24oaW52ZXJzZSxuYW1lKXtpbnZlcnNlW29ialtuYW1lXV09IiYiK25hbWUrIjsiO3JldHVybiBpbnZlcnNlfSx7fSl9ZnVuY3Rpb24gZ2V0SW52ZXJzZVJlcGxhY2VyKGludmVyc2Upe3ZhciBzaW5nbGU9W10sbXVsdGlwbGU9W107T2JqZWN0LmtleXMoaW52ZXJzZSkuZm9yRWFjaChmdW5jdGlvbihrKXtpZihrLmxlbmd0aD09PTEpe3NpbmdsZS5wdXNoKCJcXCIrayl9ZWxzZXttdWx0aXBsZS5wdXNoKGspfX0pO211bHRpcGxlLnVuc2hpZnQoIlsiK3NpbmdsZS5qb2luKCIiKSsiXSIpO3JldHVybiBuZXcgUmVnRXhwKG11bHRpcGxlLmpvaW4oInwiKSwiZyIpfXZhciByZV9ub25BU0NJST0vW15cMC1ceDdGXS9nLHJlX2FzdHJhbFN5bWJvbHM9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nO2Z1bmN0aW9uIHNpbmdsZUNoYXJSZXBsYWNlcihjKXtyZXR1cm4iJiN4IitjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkrIjsifWZ1bmN0aW9uIGFzdHJhbFJlcGxhY2VyKGMpe3ZhciBoaWdoPWMuY2hhckNvZGVBdCgwKTt2YXIgbG93PWMuY2hhckNvZGVBdCgxKTt2YXIgY29kZVBvaW50PShoaWdoLTU1Mjk2KSoxMDI0K2xvdy01NjMyMCs2NTUzNjtyZXR1cm4iJiN4Iitjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkrIjsifWZ1bmN0aW9uIGdldEludmVyc2UoaW52ZXJzZSxyZSl7ZnVuY3Rpb24gZnVuYyhuYW1lKXtyZXR1cm4gaW52ZXJzZVtuYW1lXX1yZXR1cm4gZnVuY3Rpb24oZGF0YSl7cmV0dXJuIGRhdGEucmVwbGFjZShyZSxmdW5jKS5yZXBsYWNlKHJlX2FzdHJhbFN5bWJvbHMsYXN0cmFsUmVwbGFjZXIpLnJlcGxhY2UocmVfbm9uQVNDSUksc2luZ2xlQ2hhclJlcGxhY2VyKX19dmFyIHJlX3htbENoYXJzPWdldEludmVyc2VSZXBsYWNlcihpbnZlcnNlWE1MKTtmdW5jdGlvbiBlc2NhcGVYTUwoZGF0YSl7cmV0dXJuIGRhdGEucmVwbGFjZShyZV94bWxDaGFycyxzaW5nbGVDaGFyUmVwbGFjZXIpLnJlcGxhY2UocmVfYXN0cmFsU3ltYm9scyxhc3RyYWxSZXBsYWNlcikucmVwbGFjZShyZV9ub25BU0NJSSxzaW5nbGVDaGFyUmVwbGFjZXIpfWV4cG9ydHMuZXNjYXBlPWVzY2FwZVhNTH0seyIuLi9tYXBzL2VudGl0aWVzLmpzb24iOjI1LCIuLi9tYXBzL3htbC5qc29uIjoyN31dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17MDo2NTUzMywxMjg6ODM2NCwxMzA6ODIxOCwxMzE6NDAyLDEzMjo4MjIyLDEzMzo4MjMwLDEzNDo4MjI0LDEzNTo4MjI1LDEzNjo3MTAsMTM3OjgyNDAsMTM4OjM1MiwxMzk6ODI0OSwxNDA6MzM4LDE0MjozODEsMTQ1OjgyMTYsMTQ2OjgyMTcsMTQ3OjgyMjAsMTQ4OjgyMjEsMTQ5OjgyMjYsMTUwOjgyMTEsMTUxOjgyMTIsMTUyOjczMiwxNTM6ODQ4MiwxNTQ6MzUzLDE1NTo4MjUwLDE1NjozMzksMTU4OjM4MiwxNTk6Mzc2fX0se31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17QWFjdXRlOiLDgSIsYWFjdXRlOiLDoSIsQWJyZXZlOiLEgiIsYWJyZXZlOiLEgyIsYWM6IuKIviIsYWNkOiLiiL8iLGFjRToi4oi+zLMiLEFjaXJjOiLDgiIsYWNpcmM6IsOiIixhY3V0ZToiwrQiLEFjeToi0JAiLGFjeToi0LAiLEFFbGlnOiLDhiIsYWVsaWc6IsOmIixhZjoi4oGhIixBZnI6IvCdlIQiLGFmcjoi8J2UniIsQWdyYXZlOiLDgCIsYWdyYXZlOiLDoCIsYWxlZnN5bToi4oS1IixhbGVwaDoi4oS1IixBbHBoYToizpEiLGFscGhhOiLOsSIsQW1hY3I6IsSAIixhbWFjcjoixIEiLGFtYWxnOiLiqL8iLGFtcDoiJiIsQU1QOiImIixhbmRhbmQ6IuKplSIsQW5kOiLiqZMiLGFuZDoi4oinIixhbmRkOiLiqZwiLGFuZHNsb3BlOiLiqZgiLGFuZHY6IuKpmiIsYW5nOiLiiKAiLGFuZ2U6IuKmpCIsYW5nbGU6IuKIoCIsYW5nbXNkYWE6IuKmqCIsYW5nbXNkYWI6IuKmqSIsYW5nbXNkYWM6IuKmqiIsYW5nbXNkYWQ6IuKmqyIsYW5nbXNkYWU6IuKmrCIsYW5nbXNkYWY6IuKmrSIsYW5nbXNkYWc6IuKmriIsYW5nbXNkYWg6IuKmryIsYW5nbXNkOiLiiKEiLGFuZ3J0OiLiiJ8iLGFuZ3J0dmI6IuKKviIsYW5ncnR2YmQ6IuKmnSIsYW5nc3BoOiLiiKIiLGFuZ3N0OiLDhSIsYW5nemFycjoi4o28IixBb2dvbjoixIQiLGFvZ29uOiLEhSIsQW9wZjoi8J2UuCIsYW9wZjoi8J2VkiIsYXBhY2lyOiLiqa8iLGFwOiLiiYgiLGFwRToi4qmwIixhcGU6IuKJiiIsYXBpZDoi4omLIixhcG9zOiInIixBcHBseUZ1bmN0aW9uOiLigaEiLGFwcHJveDoi4omIIixhcHByb3hlcToi4omKIixBcmluZzoiw4UiLGFyaW5nOiLDpSIsQXNjcjoi8J2SnCIsYXNjcjoi8J2StiIsQXNzaWduOiLiiZQiLGFzdDoiKiIsYXN5bXA6IuKJiCIsYXN5bXBlcToi4omNIixBdGlsZGU6IsODIixhdGlsZGU6IsOjIixBdW1sOiLDhCIsYXVtbDoiw6QiLGF3Y29uaW50OiLiiLMiLGF3aW50OiLiqJEiLGJhY2tjb25nOiLiiYwiLGJhY2tlcHNpbG9uOiLPtiIsYmFja3ByaW1lOiLigLUiLGJhY2tzaW06IuKIvSIsYmFja3NpbWVxOiLii40iLEJhY2tzbGFzaDoi4oiWIixCYXJ2OiLiq6ciLGJhcnZlZToi4oq9IixiYXJ3ZWQ6IuKMhSIsQmFyd2VkOiLijIYiLGJhcndlZGdlOiLijIUiLGJicms6IuKOtSIsYmJya3Ricms6IuKOtiIsYmNvbmc6IuKJjCIsQmN5OiLQkSIsYmN5OiLQsSIsYmRxdW86IuKAniIsYmVjYXVzOiLiiLUiLGJlY2F1c2U6IuKItSIsQmVjYXVzZToi4oi1IixiZW1wdHl2OiLiprAiLGJlcHNpOiLPtiIsYmVybm91OiLihKwiLEJlcm5vdWxsaXM6IuKErCIsQmV0YToizpIiLGJldGE6Is6yIixiZXRoOiLihLYiLGJldHdlZW46IuKJrCIsQmZyOiLwnZSFIixiZnI6IvCdlJ8iLGJpZ2NhcDoi4ouCIixiaWdjaXJjOiLil68iLGJpZ2N1cDoi4ouDIixiaWdvZG90OiLiqIAiLGJpZ29wbHVzOiLiqIEiLGJpZ290aW1lczoi4qiCIixiaWdzcWN1cDoi4qiGIixiaWdzdGFyOiLimIUiLGJpZ3RyaWFuZ2xlZG93bjoi4pa9IixiaWd0cmlhbmdsZXVwOiLilrMiLGJpZ3VwbHVzOiLiqIQiLGJpZ3ZlZToi4ouBIixiaWd3ZWRnZToi4ouAIixia2Fyb3c6IuKkjSIsYmxhY2tsb3plbmdlOiLip6siLGJsYWNrc3F1YXJlOiLilqoiLGJsYWNrdHJpYW5nbGU6IuKWtCIsYmxhY2t0cmlhbmdsZWRvd246IuKWviIsYmxhY2t0cmlhbmdsZWxlZnQ6IuKXgiIsYmxhY2t0cmlhbmdsZXJpZ2h0OiLilrgiLGJsYW5rOiLikKMiLGJsazEyOiLilpIiLGJsazE0OiLilpEiLGJsazM0OiLilpMiLGJsb2NrOiLilogiLGJuZToiPeKDpSIsYm5lcXVpdjoi4omh4oOlIixiTm90OiLiq60iLGJub3Q6IuKMkCIsQm9wZjoi8J2UuSIsYm9wZjoi8J2VkyIsYm90OiLiiqUiLGJvdHRvbToi4oqlIixib3d0aWU6IuKLiCIsYm94Ym94OiLip4kiLGJveGRsOiLilJAiLGJveGRMOiLilZUiLGJveERsOiLilZYiLGJveERMOiLilZciLGJveGRyOiLilIwiLGJveGRSOiLilZIiLGJveERyOiLilZMiLGJveERSOiLilZQiLGJveGg6IuKUgCIsYm94SDoi4pWQIixib3hoZDoi4pSsIixib3hIZDoi4pWkIixib3hoRDoi4pWlIixib3hIRDoi4pWmIixib3hodToi4pS0Iixib3hIdToi4pWnIixib3hoVToi4pWoIixib3hIVToi4pWpIixib3htaW51czoi4oqfIixib3hwbHVzOiLiip4iLGJveHRpbWVzOiLiiqAiLGJveHVsOiLilJgiLGJveHVMOiLilZsiLGJveFVsOiLilZwiLGJveFVMOiLilZ0iLGJveHVyOiLilJQiLGJveHVSOiLilZgiLGJveFVyOiLilZkiLGJveFVSOiLilZoiLGJveHY6IuKUgiIsYm94Vjoi4pWRIixib3h2aDoi4pS8Iixib3h2SDoi4pWqIixib3hWaDoi4pWrIixib3hWSDoi4pWsIixib3h2bDoi4pSkIixib3h2TDoi4pWhIixib3hWbDoi4pWiIixib3hWTDoi4pWjIixib3h2cjoi4pScIixib3h2Ujoi4pWeIixib3hWcjoi4pWfIixib3hWUjoi4pWgIixicHJpbWU6IuKAtSIsYnJldmU6IsuYIixCcmV2ZToiy5giLGJydmJhcjoiwqYiLGJzY3I6IvCdkrciLEJzY3I6IuKErCIsYnNlbWk6IuKBjyIsYnNpbToi4oi9Iixic2ltZToi4ouNIixic29sYjoi4qeFIixic29sOiJcXCIsYnNvbGhzdWI6IuKfiCIsYnVsbDoi4oCiIixidWxsZXQ6IuKAoiIsYnVtcDoi4omOIixidW1wRToi4qquIixidW1wZToi4omPIixCdW1wZXE6IuKJjiIsYnVtcGVxOiLiiY8iLENhY3V0ZToixIYiLGNhY3V0ZToixIciLGNhcGFuZDoi4qmEIixjYXBicmN1cDoi4qmJIixjYXBjYXA6IuKpiyIsY2FwOiLiiKkiLENhcDoi4ouSIixjYXBjdXA6IuKphyIsY2FwZG90OiLiqYAiLENhcGl0YWxEaWZmZXJlbnRpYWxEOiLihYUiLGNhcHM6IuKIqe+4gCIsY2FyZXQ6IuKBgSIsY2Fyb246IsuHIixDYXlsZXlzOiLihK0iLGNjYXBzOiLiqY0iLENjYXJvbjoixIwiLGNjYXJvbjoixI0iLENjZWRpbDoiw4ciLGNjZWRpbDoiw6ciLENjaXJjOiLEiCIsY2NpcmM6IsSJIixDY29uaW50OiLiiLAiLGNjdXBzOiLiqYwiLGNjdXBzc206IuKpkCIsQ2RvdDoixIoiLGNkb3Q6IsSLIixjZWRpbDoiwrgiLENlZGlsbGE6IsK4IixjZW1wdHl2OiLiprIiLGNlbnQ6IsKiIixjZW50ZXJkb3Q6IsK3IixDZW50ZXJEb3Q6IsK3IixjZnI6IvCdlKAiLENmcjoi4oStIixDSGN5OiLQpyIsY2hjeToi0YciLGNoZWNrOiLinJMiLGNoZWNrbWFyazoi4pyTIixDaGk6Is6nIixjaGk6Is+HIixjaXJjOiLLhiIsY2lyY2VxOiLiiZciLGNpcmNsZWFycm93bGVmdDoi4oa6IixjaXJjbGVhcnJvd3JpZ2h0OiLihrsiLGNpcmNsZWRhc3Q6IuKKmyIsY2lyY2xlZGNpcmM6IuKKmiIsY2lyY2xlZGRhc2g6IuKKnSIsQ2lyY2xlRG90OiLiipkiLGNpcmNsZWRSOiLCriIsY2lyY2xlZFM6IuKTiCIsQ2lyY2xlTWludXM6IuKKliIsQ2lyY2xlUGx1czoi4oqVIixDaXJjbGVUaW1lczoi4oqXIixjaXI6IuKXiyIsY2lyRToi4qeDIixjaXJlOiLiiZciLGNpcmZuaW50OiLiqJAiLGNpcm1pZDoi4quvIixjaXJzY2lyOiLip4IiLENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDoi4oiyIixDbG9zZUN1cmx5RG91YmxlUXVvdGU6IuKAnSIsQ2xvc2VDdXJseVF1b3RlOiLigJkiLGNsdWJzOiLimaMiLGNsdWJzdWl0OiLimaMiLGNvbG9uOiI6IixDb2xvbjoi4oi3IixDb2xvbmU6IuKptCIsY29sb25lOiLiiZQiLGNvbG9uZXE6IuKJlCIsY29tbWE6IiwiLGNvbW1hdDoiQCIsY29tcDoi4oiBIixjb21wZm46IuKImCIsY29tcGxlbWVudDoi4oiBIixjb21wbGV4ZXM6IuKEgiIsY29uZzoi4omFIixjb25nZG90OiLiqa0iLENvbmdydWVudDoi4omhIixjb25pbnQ6IuKIriIsQ29uaW50OiLiiK8iLENvbnRvdXJJbnRlZ3JhbDoi4oiuIixjb3BmOiLwnZWUIixDb3BmOiLihIIiLGNvcHJvZDoi4oiQIixDb3Byb2R1Y3Q6IuKIkCIsY29weToiwqkiLENPUFk6IsKpIixjb3B5c3I6IuKElyIsQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDoi4oizIixjcmFycjoi4oa1Iixjcm9zczoi4pyXIixDcm9zczoi4qivIixDc2NyOiLwnZKeIixjc2NyOiLwnZK4Iixjc3ViOiLiq48iLGNzdWJlOiLiq5EiLGNzdXA6IuKrkCIsY3N1cGU6IuKrkiIsY3Rkb3Q6IuKLryIsY3VkYXJybDoi4qS4IixjdWRhcnJyOiLipLUiLGN1ZXByOiLii54iLGN1ZXNjOiLii58iLGN1bGFycjoi4oa2IixjdWxhcnJwOiLipL0iLGN1cGJyY2FwOiLiqYgiLGN1cGNhcDoi4qmGIixDdXBDYXA6IuKJjSIsY3VwOiLiiKoiLEN1cDoi4ouTIixjdXBjdXA6IuKpiiIsY3VwZG90OiLiio0iLGN1cG9yOiLiqYUiLGN1cHM6IuKIqu+4gCIsY3VyYXJyOiLihrciLGN1cmFycm06IuKkvCIsY3VybHllcXByZWM6IuKLniIsY3VybHllcXN1Y2M6IuKLnyIsY3VybHl2ZWU6IuKLjiIsY3VybHl3ZWRnZToi4ouPIixjdXJyZW46IsKkIixjdXJ2ZWFycm93bGVmdDoi4oa2IixjdXJ2ZWFycm93cmlnaHQ6IuKGtyIsY3V2ZWU6IuKLjiIsY3V3ZWQ6IuKLjyIsY3djb25pbnQ6IuKIsiIsY3dpbnQ6IuKIsSIsY3lsY3R5OiLijK0iLGRhZ2dlcjoi4oCgIixEYWdnZXI6IuKAoSIsZGFsZXRoOiLihLgiLGRhcnI6IuKGkyIsRGFycjoi4oahIixkQXJyOiLih5MiLGRhc2g6IuKAkCIsRGFzaHY6IuKrpCIsZGFzaHY6IuKKoyIsZGJrYXJvdzoi4qSPIixkYmxhYzoiy50iLERjYXJvbjoixI4iLGRjYXJvbjoixI8iLERjeToi0JQiLGRjeToi0LQiLGRkYWdnZXI6IuKAoSIsZGRhcnI6IuKHiiIsREQ6IuKFhSIsZGQ6IuKFhiIsRERvdHJhaGQ6IuKkkSIsZGRvdHNlcToi4qm3IixkZWc6IsKwIixEZWw6IuKIhyIsRGVsdGE6Is6UIixkZWx0YToizrQiLGRlbXB0eXY6IuKmsSIsZGZpc2h0OiLipb8iLERmcjoi8J2UhyIsZGZyOiLwnZShIixkSGFyOiLipaUiLGRoYXJsOiLih4MiLGRoYXJyOiLih4IiLERpYWNyaXRpY2FsQWN1dGU6IsK0IixEaWFjcml0aWNhbERvdDoiy5kiLERpYWNyaXRpY2FsRG91YmxlQWN1dGU6IsudIixEaWFjcml0aWNhbEdyYXZlOiJgIixEaWFjcml0aWNhbFRpbGRlOiLLnCIsZGlhbToi4ouEIixkaWFtb25kOiLii4QiLERpYW1vbmQ6IuKLhCIsZGlhbW9uZHN1aXQ6IuKZpiIsZGlhbXM6IuKZpiIsZGllOiLCqCIsRGlmZmVyZW50aWFsRDoi4oWGIixkaWdhbW1hOiLPnSIsZGlzaW46IuKLsiIsZGl2OiLDtyIsZGl2aWRlOiLDtyIsZGl2aWRlb250aW1lczoi4ouHIixkaXZvbng6IuKLhyIsREpjeToi0IIiLGRqY3k6ItGSIixkbGNvcm46IuKMniIsZGxjcm9wOiLijI0iLGRvbGxhcjoiJCIsRG9wZjoi8J2UuyIsZG9wZjoi8J2VlSIsRG90OiLCqCIsZG90OiLLmSIsRG90RG90OiLig5wiLGRvdGVxOiLiiZAiLGRvdGVxZG90OiLiiZEiLERvdEVxdWFsOiLiiZAiLGRvdG1pbnVzOiLiiLgiLGRvdHBsdXM6IuKIlCIsZG90c3F1YXJlOiLiiqEiLGRvdWJsZWJhcndlZGdlOiLijIYiLERvdWJsZUNvbnRvdXJJbnRlZ3JhbDoi4oivIixEb3VibGVEb3Q6IsKoIixEb3VibGVEb3duQXJyb3c6IuKHkyIsRG91YmxlTGVmdEFycm93OiLih5AiLERvdWJsZUxlZnRSaWdodEFycm93OiLih5QiLERvdWJsZUxlZnRUZWU6IuKrpCIsRG91YmxlTG9uZ0xlZnRBcnJvdzoi4p+4IixEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c6IuKfuiIsRG91YmxlTG9uZ1JpZ2h0QXJyb3c6IuKfuSIsRG91YmxlUmlnaHRBcnJvdzoi4oeSIixEb3VibGVSaWdodFRlZToi4oqoIixEb3VibGVVcEFycm93OiLih5EiLERvdWJsZVVwRG93bkFycm93OiLih5UiLERvdWJsZVZlcnRpY2FsQmFyOiLiiKUiLERvd25BcnJvd0Jhcjoi4qSTIixkb3duYXJyb3c6IuKGkyIsRG93bkFycm93OiLihpMiLERvd25hcnJvdzoi4oeTIixEb3duQXJyb3dVcEFycm93OiLih7UiLERvd25CcmV2ZToizJEiLGRvd25kb3duYXJyb3dzOiLih4oiLGRvd25oYXJwb29ubGVmdDoi4oeDIixkb3duaGFycG9vbnJpZ2h0OiLih4IiLERvd25MZWZ0UmlnaHRWZWN0b3I6IuKlkCIsRG93bkxlZnRUZWVWZWN0b3I6IuKlniIsRG93bkxlZnRWZWN0b3JCYXI6IuKlliIsRG93bkxlZnRWZWN0b3I6IuKGvSIsRG93blJpZ2h0VGVlVmVjdG9yOiLipZ8iLERvd25SaWdodFZlY3RvckJhcjoi4qWXIixEb3duUmlnaHRWZWN0b3I6IuKHgSIsRG93blRlZUFycm93OiLihqciLERvd25UZWU6IuKKpCIsZHJia2Fyb3c6IuKkkCIsZHJjb3JuOiLijJ8iLGRyY3JvcDoi4oyMIixEc2NyOiLwnZKfIixkc2NyOiLwnZK5IixEU2N5OiLQhSIsZHNjeToi0ZUiLGRzb2w6IuKntiIsRHN0cm9rOiLEkCIsZHN0cm9rOiLEkSIsZHRkb3Q6IuKLsSIsZHRyaToi4pa/IixkdHJpZjoi4pa+IixkdWFycjoi4oe1IixkdWhhcjoi4qWvIixkd2FuZ2xlOiLipqYiLERaY3k6ItCPIixkemN5OiLRnyIsZHppZ3JhcnI6IuKfvyIsRWFjdXRlOiLDiSIsZWFjdXRlOiLDqSIsZWFzdGVyOiLiqa4iLEVjYXJvbjoixJoiLGVjYXJvbjoixJsiLEVjaXJjOiLDiiIsZWNpcmM6IsOqIixlY2lyOiLiiZYiLGVjb2xvbjoi4omVIixFY3k6ItCtIixlY3k6ItGNIixlRERvdDoi4qm3IixFZG90OiLEliIsZWRvdDoixJciLGVEb3Q6IuKJkSIsZWU6IuKFhyIsZWZEb3Q6IuKJkiIsRWZyOiLwnZSIIixlZnI6IvCdlKIiLGVnOiLiqpoiLEVncmF2ZToiw4giLGVncmF2ZToiw6giLGVnczoi4qqWIixlZ3Nkb3Q6IuKqmCIsZWw6IuKqmSIsRWxlbWVudDoi4oiIIixlbGludGVyczoi4o+nIixlbGw6IuKEkyIsZWxzOiLiqpUiLGVsc2RvdDoi4qqXIixFbWFjcjoixJIiLGVtYWNyOiLEkyIsZW1wdHk6IuKIhSIsZW1wdHlzZXQ6IuKIhSIsRW1wdHlTbWFsbFNxdWFyZToi4pe7IixlbXB0eXY6IuKIhSIsRW1wdHlWZXJ5U21hbGxTcXVhcmU6IuKWqyIsZW1zcDEzOiLigIQiLGVtc3AxNDoi4oCFIixlbXNwOiLigIMiLEVORzoixYoiLGVuZzoixYsiLGVuc3A6IuKAgiIsRW9nb246IsSYIixlb2dvbjoixJkiLEVvcGY6IvCdlLwiLGVvcGY6IvCdlZYiLGVwYXI6IuKLlSIsZXBhcnNsOiLip6MiLGVwbHVzOiLiqbEiLGVwc2k6Is61IixFcHNpbG9uOiLOlSIsZXBzaWxvbjoizrUiLGVwc2l2OiLPtSIsZXFjaXJjOiLiiZYiLGVxY29sb246IuKJlSIsZXFzaW06IuKJgiIsZXFzbGFudGd0cjoi4qqWIixlcXNsYW50bGVzczoi4qqVIixFcXVhbDoi4qm1IixlcXVhbHM6Ij0iLEVxdWFsVGlsZGU6IuKJgiIsZXF1ZXN0OiLiiZ8iLEVxdWlsaWJyaXVtOiLih4wiLGVxdWl2OiLiiaEiLGVxdWl2REQ6IuKpuCIsZXF2cGFyc2w6IuKnpSIsZXJhcnI6IuKlsSIsZXJEb3Q6IuKJkyIsZXNjcjoi4oSvIixFc2NyOiLihLAiLGVzZG90OiLiiZAiLEVzaW06IuKpsyIsZXNpbToi4omCIixFdGE6Is6XIixldGE6Is63IixFVEg6IsOQIixldGg6IsOwIixFdW1sOiLDiyIsZXVtbDoiw6siLGV1cm86IuKCrCIsZXhjbDoiISIsZXhpc3Q6IuKIgyIsRXhpc3RzOiLiiIMiLGV4cGVjdGF0aW9uOiLihLAiLGV4cG9uZW50aWFsZToi4oWHIixFeHBvbmVudGlhbEU6IuKFhyIsZmFsbGluZ2RvdHNlcToi4omSIixGY3k6ItCkIixmY3k6ItGEIixmZW1hbGU6IuKZgCIsZmZpbGlnOiLvrIMiLGZmbGlnOiLvrIAiLGZmbGxpZzoi76yEIixGZnI6IvCdlIkiLGZmcjoi8J2UoyIsZmlsaWc6Iu+sgSIsRmlsbGVkU21hbGxTcXVhcmU6IuKXvCIsRmlsbGVkVmVyeVNtYWxsU3F1YXJlOiLilqoiLGZqbGlnOiJmaiIsZmxhdDoi4pmtIixmbGxpZzoi76yCIixmbHRuczoi4paxIixmbm9mOiLGkiIsRm9wZjoi8J2UvSIsZm9wZjoi8J2VlyIsZm9yYWxsOiLiiIAiLEZvckFsbDoi4oiAIixmb3JrOiLii5QiLGZvcmt2OiLiq5kiLEZvdXJpZXJ0cmY6IuKEsSIsZnBhcnRpbnQ6IuKojSIsZnJhYzEyOiLCvSIsZnJhYzEzOiLihZMiLGZyYWMxNDoiwrwiLGZyYWMxNToi4oWVIixmcmFjMTY6IuKFmSIsZnJhYzE4OiLihZsiLGZyYWMyMzoi4oWUIixmcmFjMjU6IuKFliIsZnJhYzM0OiLCviIsZnJhYzM1OiLihZciLGZyYWMzODoi4oWcIixmcmFjNDU6IuKFmCIsZnJhYzU2OiLihZoiLGZyYWM1ODoi4oWdIixmcmFjNzg6IuKFniIsZnJhc2w6IuKBhCIsZnJvd246IuKMoiIsZnNjcjoi8J2SuyIsRnNjcjoi4oSxIixnYWN1dGU6Ise1IixHYW1tYToizpMiLGdhbW1hOiLOsyIsR2FtbWFkOiLPnCIsZ2FtbWFkOiLPnSIsZ2FwOiLiqoYiLEdicmV2ZToixJ4iLGdicmV2ZToixJ8iLEdjZWRpbDoixKIiLEdjaXJjOiLEnCIsZ2NpcmM6IsSdIixHY3k6ItCTIixnY3k6ItCzIixHZG90OiLEoCIsZ2RvdDoixKEiLGdlOiLiiaUiLGdFOiLiiaciLGdFbDoi4qqMIixnZWw6IuKLmyIsZ2VxOiLiiaUiLGdlcXE6IuKJpyIsZ2Vxc2xhbnQ6IuKpviIsZ2VzY2M6IuKqqSIsZ2VzOiLiqb4iLGdlc2RvdDoi4qqAIixnZXNkb3RvOiLiqoIiLGdlc2RvdG9sOiLiqoQiLGdlc2w6IuKLm++4gCIsZ2VzbGVzOiLiqpQiLEdmcjoi8J2UiiIsZ2ZyOiLwnZSkIixnZzoi4omrIixHZzoi4ouZIixnZ2c6IuKLmSIsZ2ltZWw6IuKEtyIsR0pjeToi0IMiLGdqY3k6ItGTIixnbGE6IuKqpSIsZ2w6IuKJtyIsZ2xFOiLiqpIiLGdsajoi4qqkIixnbmFwOiLiqooiLGduYXBwcm94OiLiqooiLGduZToi4qqIIixnbkU6IuKJqSIsZ25lcToi4qqIIixnbmVxcToi4ompIixnbnNpbToi4ounIixHb3BmOiLwnZS+Iixnb3BmOiLwnZWYIixncmF2ZToiYCIsR3JlYXRlckVxdWFsOiLiiaUiLEdyZWF0ZXJFcXVhbExlc3M6IuKLmyIsR3JlYXRlckZ1bGxFcXVhbDoi4omnIixHcmVhdGVyR3JlYXRlcjoi4qqiIixHcmVhdGVyTGVzczoi4om3IixHcmVhdGVyU2xhbnRFcXVhbDoi4qm+IixHcmVhdGVyVGlsZGU6IuKJsyIsR3Njcjoi8J2SoiIsZ3Njcjoi4oSKIixnc2ltOiLiibMiLGdzaW1lOiLiqo4iLGdzaW1sOiLiqpAiLGd0Y2M6IuKqpyIsZ3RjaXI6IuKpuiIsZ3Q6Ij4iLEdUOiI+IixHdDoi4omrIixndGRvdDoi4ouXIixndGxQYXI6IuKmlSIsZ3RxdWVzdDoi4qm8IixndHJhcHByb3g6IuKqhiIsZ3RyYXJyOiLipbgiLGd0cmRvdDoi4ouXIixndHJlcWxlc3M6IuKLmyIsZ3RyZXFxbGVzczoi4qqMIixndHJsZXNzOiLiibciLGd0cnNpbToi4omzIixndmVydG5lcXE6IuKJqe+4gCIsZ3ZuRToi4omp77iAIixIYWNlazoiy4ciLGhhaXJzcDoi4oCKIixoYWxmOiLCvSIsaGFtaWx0OiLihIsiLEhBUkRjeToi0KoiLGhhcmRjeToi0YoiLGhhcnJjaXI6IuKliCIsaGFycjoi4oaUIixoQXJyOiLih5QiLGhhcnJ3OiLihq0iLEhhdDoiXiIsaGJhcjoi4oSPIixIY2lyYzoixKQiLGhjaXJjOiLEpSIsaGVhcnRzOiLimaUiLGhlYXJ0c3VpdDoi4pmlIixoZWxsaXA6IuKApiIsaGVyY29uOiLiirkiLGhmcjoi8J2UpSIsSGZyOiLihIwiLEhpbGJlcnRTcGFjZToi4oSLIixoa3NlYXJvdzoi4qSlIixoa3N3YXJvdzoi4qSmIixob2Fycjoi4oe/Iixob210aHQ6IuKIuyIsaG9va2xlZnRhcnJvdzoi4oapIixob29rcmlnaHRhcnJvdzoi4oaqIixob3BmOiLwnZWZIixIb3BmOiLihI0iLGhvcmJhcjoi4oCVIixIb3Jpem9udGFsTGluZToi4pSAIixoc2NyOiLwnZK9IixIc2NyOiLihIsiLGhzbGFzaDoi4oSPIixIc3Ryb2s6IsSmIixoc3Ryb2s6IsSnIixIdW1wRG93bkh1bXA6IuKJjiIsSHVtcEVxdWFsOiLiiY8iLGh5YnVsbDoi4oGDIixoeXBoZW46IuKAkCIsSWFjdXRlOiLDjSIsaWFjdXRlOiLDrSIsaWM6IuKBoyIsSWNpcmM6IsOOIixpY2lyYzoiw64iLEljeToi0JgiLGljeToi0LgiLElkb3Q6IsSwIixJRWN5OiLQlSIsaWVjeToi0LUiLGlleGNsOiLCoSIsaWZmOiLih5QiLGlmcjoi8J2UpiIsSWZyOiLihJEiLElncmF2ZToiw4wiLGlncmF2ZToiw6wiLGlpOiLihYgiLGlpaWludDoi4qiMIixpaWludDoi4oitIixpaW5maW46IuKnnCIsaWlvdGE6IuKEqSIsSUpsaWc6IsSyIixpamxpZzoixLMiLEltYWNyOiLEqiIsaW1hY3I6IsSrIixpbWFnZToi4oSRIixJbWFnaW5hcnlJOiLihYgiLGltYWdsaW5lOiLihJAiLGltYWdwYXJ0OiLihJEiLGltYXRoOiLEsSIsSW06IuKEkSIsaW1vZjoi4oq3IixpbXBlZDoixrUiLEltcGxpZXM6IuKHkiIsaW5jYXJlOiLihIUiLGluOiLiiIgiLGluZmluOiLiiJ4iLGluZmludGllOiLip50iLGlub2RvdDoixLEiLGludGNhbDoi4oq6IixpbnQ6IuKIqyIsSW50OiLiiKwiLGludGVnZXJzOiLihKQiLEludGVncmFsOiLiiKsiLGludGVyY2FsOiLiiroiLEludGVyc2VjdGlvbjoi4ouCIixpbnRsYXJoazoi4qiXIixpbnRwcm9kOiLiqLwiLEludmlzaWJsZUNvbW1hOiLigaMiLEludmlzaWJsZVRpbWVzOiLigaIiLElPY3k6ItCBIixpb2N5OiLRkSIsSW9nb246IsSuIixpb2dvbjoixK8iLElvcGY6IvCdlYAiLGlvcGY6IvCdlZoiLElvdGE6Is6ZIixpb3RhOiLOuSIsaXByb2Q6IuKovCIsaXF1ZXN0OiLCvyIsaXNjcjoi8J2SviIsSXNjcjoi4oSQIixpc2luOiLiiIgiLGlzaW5kb3Q6IuKLtSIsaXNpbkU6IuKLuSIsaXNpbnM6IuKLtCIsaXNpbnN2OiLii7MiLGlzaW52OiLiiIgiLGl0OiLigaIiLEl0aWxkZToixKgiLGl0aWxkZToixKkiLEl1a2N5OiLQhiIsaXVrY3k6ItGWIixJdW1sOiLDjyIsaXVtbDoiw68iLEpjaXJjOiLEtCIsamNpcmM6IsS1IixKY3k6ItCZIixqY3k6ItC5IixKZnI6IvCdlI0iLGpmcjoi8J2UpyIsam1hdGg6Isi3IixKb3BmOiLwnZWBIixqb3BmOiLwnZWbIixKc2NyOiLwnZKlIixqc2NyOiLwnZK/IixKc2VyY3k6ItCIIixqc2VyY3k6ItGYIixKdWtjeToi0IQiLGp1a2N5OiLRlCIsS2FwcGE6Is6aIixrYXBwYToizroiLGthcHBhdjoiz7AiLEtjZWRpbDoixLYiLGtjZWRpbDoixLciLEtjeToi0JoiLGtjeToi0LoiLEtmcjoi8J2UjiIsa2ZyOiLwnZSoIixrZ3JlZW46IsS4IixLSGN5OiLQpSIsa2hjeToi0YUiLEtKY3k6ItCMIixramN5OiLRnCIsS29wZjoi8J2VgiIsa29wZjoi8J2VnCIsS3Njcjoi8J2SpiIsa3Njcjoi8J2TgCIsbEFhcnI6IuKHmiIsTGFjdXRlOiLEuSIsbGFjdXRlOiLEuiIsbGFlbXB0eXY6IuKmtCIsbGFncmFuOiLihJIiLExhbWJkYToizpsiLGxhbWJkYToizrsiLGxhbmc6IuKfqCIsTGFuZzoi4p+qIixsYW5nZDoi4qaRIixsYW5nbGU6IuKfqCIsbGFwOiLiqoUiLExhcGxhY2V0cmY6IuKEkiIsbGFxdW86IsKrIixsYXJyYjoi4oekIixsYXJyYmZzOiLipJ8iLGxhcnI6IuKGkCIsTGFycjoi4oaeIixsQXJyOiLih5AiLGxhcnJmczoi4qSdIixsYXJyaGs6IuKGqSIsbGFycmxwOiLihqsiLGxhcnJwbDoi4qS5IixsYXJyc2ltOiLipbMiLGxhcnJ0bDoi4oaiIixsYXRhaWw6IuKkmSIsbEF0YWlsOiLipJsiLGxhdDoi4qqrIixsYXRlOiLiqq0iLGxhdGVzOiLiqq3vuIAiLGxiYXJyOiLipIwiLGxCYXJyOiLipI4iLGxiYnJrOiLinbIiLGxicmFjZToieyIsbGJyYWNrOiJbIixsYnJrZToi4qaLIixsYnJrc2xkOiLipo8iLGxicmtzbHU6IuKmjSIsTGNhcm9uOiLEvSIsbGNhcm9uOiLEviIsTGNlZGlsOiLEuyIsbGNlZGlsOiLEvCIsbGNlaWw6IuKMiCIsbGN1YjoieyIsTGN5OiLQmyIsbGN5OiLQuyIsbGRjYToi4qS2IixsZHF1bzoi4oCcIixsZHF1b3I6IuKAniIsbGRyZGhhcjoi4qWnIixsZHJ1c2hhcjoi4qWLIixsZHNoOiLihrIiLGxlOiLiiaQiLGxFOiLiiaYiLExlZnRBbmdsZUJyYWNrZXQ6IuKfqCIsTGVmdEFycm93QmFyOiLih6QiLGxlZnRhcnJvdzoi4oaQIixMZWZ0QXJyb3c6IuKGkCIsTGVmdGFycm93OiLih5AiLExlZnRBcnJvd1JpZ2h0QXJyb3c6IuKHhiIsbGVmdGFycm93dGFpbDoi4oaiIixMZWZ0Q2VpbGluZzoi4oyIIixMZWZ0RG91YmxlQnJhY2tldDoi4p+mIixMZWZ0RG93blRlZVZlY3Rvcjoi4qWhIixMZWZ0RG93blZlY3RvckJhcjoi4qWZIixMZWZ0RG93blZlY3Rvcjoi4oeDIixMZWZ0Rmxvb3I6IuKMiiIsbGVmdGhhcnBvb25kb3duOiLihr0iLGxlZnRoYXJwb29udXA6IuKGvCIsbGVmdGxlZnRhcnJvd3M6IuKHhyIsbGVmdHJpZ2h0YXJyb3c6IuKGlCIsTGVmdFJpZ2h0QXJyb3c6IuKGlCIsTGVmdHJpZ2h0YXJyb3c6IuKHlCIsbGVmdHJpZ2h0YXJyb3dzOiLih4YiLGxlZnRyaWdodGhhcnBvb25zOiLih4siLGxlZnRyaWdodHNxdWlnYXJyb3c6IuKGrSIsTGVmdFJpZ2h0VmVjdG9yOiLipY4iLExlZnRUZWVBcnJvdzoi4oakIixMZWZ0VGVlOiLiiqMiLExlZnRUZWVWZWN0b3I6IuKlmiIsbGVmdHRocmVldGltZXM6IuKLiyIsTGVmdFRyaWFuZ2xlQmFyOiLip48iLExlZnRUcmlhbmdsZToi4oqyIixMZWZ0VHJpYW5nbGVFcXVhbDoi4oq0IixMZWZ0VXBEb3duVmVjdG9yOiLipZEiLExlZnRVcFRlZVZlY3Rvcjoi4qWgIixMZWZ0VXBWZWN0b3JCYXI6IuKlmCIsTGVmdFVwVmVjdG9yOiLihr8iLExlZnRWZWN0b3JCYXI6IuKlkiIsTGVmdFZlY3Rvcjoi4oa8IixsRWc6IuKqiyIsbGVnOiLii5oiLGxlcToi4omkIixsZXFxOiLiiaYiLGxlcXNsYW50OiLiqb0iLGxlc2NjOiLiqqgiLGxlczoi4qm9IixsZXNkb3Q6IuKpvyIsbGVzZG90bzoi4qqBIixsZXNkb3Rvcjoi4qqDIixsZXNnOiLii5rvuIAiLGxlc2dlczoi4qqTIixsZXNzYXBwcm94OiLiqoUiLGxlc3Nkb3Q6IuKLliIsbGVzc2VxZ3RyOiLii5oiLGxlc3NlcXFndHI6IuKqiyIsTGVzc0VxdWFsR3JlYXRlcjoi4ouaIixMZXNzRnVsbEVxdWFsOiLiiaYiLExlc3NHcmVhdGVyOiLiibYiLGxlc3NndHI6IuKJtiIsTGVzc0xlc3M6IuKqoSIsbGVzc3NpbToi4omyIixMZXNzU2xhbnRFcXVhbDoi4qm9IixMZXNzVGlsZGU6IuKJsiIsbGZpc2h0OiLipbwiLGxmbG9vcjoi4oyKIixMZnI6IvCdlI8iLGxmcjoi8J2UqSIsbGc6IuKJtiIsbGdFOiLiqpEiLGxIYXI6IuKloiIsbGhhcmQ6IuKGvSIsbGhhcnU6IuKGvCIsbGhhcnVsOiLipaoiLGxoYmxrOiLiloQiLExKY3k6ItCJIixsamN5OiLRmSIsbGxhcnI6IuKHhyIsbGw6IuKJqiIsTGw6IuKLmCIsbGxjb3JuZXI6IuKMniIsTGxlZnRhcnJvdzoi4oeaIixsbGhhcmQ6IuKlqyIsbGx0cmk6IuKXuiIsTG1pZG90OiLEvyIsbG1pZG90OiLFgCIsbG1vdXN0YWNoZToi4o6wIixsbW91c3Q6IuKOsCIsbG5hcDoi4qqJIixsbmFwcHJveDoi4qqJIixsbmU6IuKqhyIsbG5FOiLiiagiLGxuZXE6IuKqhyIsbG5lcXE6IuKJqCIsbG5zaW06IuKLpiIsbG9hbmc6IuKfrCIsbG9hcnI6IuKHvSIsbG9icms6IuKfpiIsbG9uZ2xlZnRhcnJvdzoi4p+1IixMb25nTGVmdEFycm93OiLin7UiLExvbmdsZWZ0YXJyb3c6IuKfuCIsbG9uZ2xlZnRyaWdodGFycm93OiLin7ciLExvbmdMZWZ0UmlnaHRBcnJvdzoi4p+3IixMb25nbGVmdHJpZ2h0YXJyb3c6IuKfuiIsbG9uZ21hcHN0bzoi4p+8Iixsb25ncmlnaHRhcnJvdzoi4p+2IixMb25nUmlnaHRBcnJvdzoi4p+2IixMb25ncmlnaHRhcnJvdzoi4p+5Iixsb29wYXJyb3dsZWZ0OiLihqsiLGxvb3BhcnJvd3JpZ2h0OiLihqwiLGxvcGFyOiLipoUiLExvcGY6IvCdlYMiLGxvcGY6IvCdlZ0iLGxvcGx1czoi4qitIixsb3RpbWVzOiLiqLQiLGxvd2FzdDoi4oiXIixsb3diYXI6Il8iLExvd2VyTGVmdEFycm93OiLihpkiLExvd2VyUmlnaHRBcnJvdzoi4oaYIixsb3o6IuKXiiIsbG96ZW5nZToi4peKIixsb3pmOiLip6siLGxwYXI6IigiLGxwYXJsdDoi4qaTIixscmFycjoi4oeGIixscmNvcm5lcjoi4oyfIixscmhhcjoi4oeLIixscmhhcmQ6IuKlrSIsbHJtOiLigI4iLGxydHJpOiLiir8iLGxzYXF1bzoi4oC5Iixsc2NyOiLwnZOBIixMc2NyOiLihJIiLGxzaDoi4oawIixMc2g6IuKGsCIsbHNpbToi4omyIixsc2ltZToi4qqNIixsc2ltZzoi4qqPIixsc3FiOiJbIixsc3F1bzoi4oCYIixsc3F1b3I6IuKAmiIsTHN0cm9rOiLFgSIsbHN0cm9rOiLFgiIsbHRjYzoi4qqmIixsdGNpcjoi4qm5IixsdDoiPCIsTFQ6IjwiLEx0OiLiiaoiLGx0ZG90OiLii5YiLGx0aHJlZToi4ouLIixsdGltZXM6IuKLiSIsbHRsYXJyOiLipbYiLGx0cXVlc3Q6IuKpuyIsbHRyaToi4peDIixsdHJpZToi4oq0IixsdHJpZjoi4peCIixsdHJQYXI6IuKmliIsbHVyZHNoYXI6IuKliiIsbHVydWhhcjoi4qWmIixsdmVydG5lcXE6IuKJqO+4gCIsbHZuRToi4omo77iAIixtYWNyOiLCryIsbWFsZToi4pmCIixtYWx0OiLinKAiLG1hbHRlc2U6IuKcoCIsTWFwOiLipIUiLG1hcDoi4oamIixtYXBzdG86IuKGpiIsbWFwc3RvZG93bjoi4oanIixtYXBzdG9sZWZ0OiLihqQiLG1hcHN0b3VwOiLihqUiLG1hcmtlcjoi4pauIixtY29tbWE6IuKoqSIsTWN5OiLQnCIsbWN5OiLQvCIsbWRhc2g6IuKAlCIsbUREb3Q6IuKIuiIsbWVhc3VyZWRhbmdsZToi4oihIixNZWRpdW1TcGFjZToi4oGfIixNZWxsaW50cmY6IuKEsyIsTWZyOiLwnZSQIixtZnI6IvCdlKoiLG1obzoi4oSnIixtaWNybzoiwrUiLG1pZGFzdDoiKiIsbWlkY2lyOiLiq7AiLG1pZDoi4oijIixtaWRkb3Q6IsK3IixtaW51c2I6IuKKnyIsbWludXM6IuKIkiIsbWludXNkOiLiiLgiLG1pbnVzZHU6IuKoqiIsTWludXNQbHVzOiLiiJMiLG1sY3A6IuKrmyIsbWxkcjoi4oCmIixtbnBsdXM6IuKIkyIsbW9kZWxzOiLiiqciLE1vcGY6IvCdlYQiLG1vcGY6IvCdlZ4iLG1wOiLiiJMiLG1zY3I6IvCdk4IiLE1zY3I6IuKEsyIsbXN0cG9zOiLiiL4iLE11OiLOnCIsbXU6Is68IixtdWx0aW1hcDoi4oq4IixtdW1hcDoi4oq4IixuYWJsYToi4oiHIixOYWN1dGU6IsWDIixuYWN1dGU6IsWEIixuYW5nOiLiiKDig5IiLG5hcDoi4omJIixuYXBFOiLiqbDMuCIsbmFwaWQ6IuKJi8y4IixuYXBvczoixYkiLG5hcHByb3g6IuKJiSIsbmF0dXJhbDoi4pmuIixuYXR1cmFsczoi4oSVIixuYXR1cjoi4pmuIixuYnNwOiLCoCIsbmJ1bXA6IuKJjsy4IixuYnVtcGU6IuKJj8y4IixuY2FwOiLiqYMiLE5jYXJvbjoixYciLG5jYXJvbjoixYgiLE5jZWRpbDoixYUiLG5jZWRpbDoixYYiLG5jb25nOiLiiYciLG5jb25nZG90OiLiqa3MuCIsbmN1cDoi4qmCIixOY3k6ItCdIixuY3k6ItC9IixuZGFzaDoi4oCTIixuZWFyaGs6IuKkpCIsbmVhcnI6IuKGlyIsbmVBcnI6IuKHlyIsbmVhcnJvdzoi4oaXIixuZToi4omgIixuZWRvdDoi4omQzLgiLE5lZ2F0aXZlTWVkaXVtU3BhY2U6IuKAiyIsTmVnYXRpdmVUaGlja1NwYWNlOiLigIsiLE5lZ2F0aXZlVGhpblNwYWNlOiLigIsiLE5lZ2F0aXZlVmVyeVRoaW5TcGFjZToi4oCLIixuZXF1aXY6IuKJoiIsbmVzZWFyOiLipKgiLG5lc2ltOiLiiYLMuCIsTmVzdGVkR3JlYXRlckdyZWF0ZXI6IuKJqyIsTmVzdGVkTGVzc0xlc3M6IuKJqiIsTmV3TGluZToiXG4iLG5leGlzdDoi4oiEIixuZXhpc3RzOiLiiIQiLE5mcjoi8J2UkSIsbmZyOiLwnZSrIixuZ0U6IuKJp8y4IixuZ2U6IuKJsSIsbmdlcToi4omxIixuZ2VxcToi4omnzLgiLG5nZXFzbGFudDoi4qm+zLgiLG5nZXM6IuKpvsy4IixuR2c6IuKLmcy4IixuZ3NpbToi4om1IixuR3Q6IuKJq+KDkiIsbmd0OiLiia8iLG5ndHI6IuKJryIsbkd0djoi4omrzLgiLG5oYXJyOiLihq4iLG5oQXJyOiLih44iLG5ocGFyOiLiq7IiLG5pOiLiiIsiLG5pczoi4ou8IixuaXNkOiLii7oiLG5pdjoi4oiLIixOSmN5OiLQiiIsbmpjeToi0ZoiLG5sYXJyOiLihpoiLG5sQXJyOiLih40iLG5sZHI6IuKApSIsbmxFOiLiiabMuCIsbmxlOiLiibAiLG5sZWZ0YXJyb3c6IuKGmiIsbkxlZnRhcnJvdzoi4oeNIixubGVmdHJpZ2h0YXJyb3c6IuKGriIsbkxlZnRyaWdodGFycm93OiLih44iLG5sZXE6IuKJsCIsbmxlcXE6IuKJpsy4IixubGVxc2xhbnQ6IuKpvcy4IixubGVzOiLiqb3MuCIsbmxlc3M6IuKJriIsbkxsOiLii5jMuCIsbmxzaW06IuKJtCIsbkx0OiLiiarig5IiLG5sdDoi4omuIixubHRyaToi4ouqIixubHRyaWU6IuKLrCIsbkx0djoi4omqzLgiLG5taWQ6IuKIpCIsTm9CcmVhazoi4oGgIixOb25CcmVha2luZ1NwYWNlOiLCoCIsbm9wZjoi8J2VnyIsTm9wZjoi4oSVIixOb3Q6IuKrrCIsbm90OiLCrCIsTm90Q29uZ3J1ZW50OiLiiaIiLE5vdEN1cENhcDoi4omtIixOb3REb3VibGVWZXJ0aWNhbEJhcjoi4oimIixOb3RFbGVtZW50OiLiiIkiLE5vdEVxdWFsOiLiiaAiLE5vdEVxdWFsVGlsZGU6IuKJgsy4IixOb3RFeGlzdHM6IuKIhCIsTm90R3JlYXRlcjoi4omvIixOb3RHcmVhdGVyRXF1YWw6IuKJsSIsTm90R3JlYXRlckZ1bGxFcXVhbDoi4omnzLgiLE5vdEdyZWF0ZXJHcmVhdGVyOiLiiavMuCIsTm90R3JlYXRlckxlc3M6IuKJuSIsTm90R3JlYXRlclNsYW50RXF1YWw6IuKpvsy4IixOb3RHcmVhdGVyVGlsZGU6IuKJtSIsTm90SHVtcERvd25IdW1wOiLiiY7MuCIsTm90SHVtcEVxdWFsOiLiiY/MuCIsbm90aW46IuKIiSIsbm90aW5kb3Q6IuKLtcy4Iixub3RpbkU6IuKLucy4Iixub3RpbnZhOiLiiIkiLG5vdGludmI6IuKLtyIsbm90aW52Yzoi4ou2IixOb3RMZWZ0VHJpYW5nbGVCYXI6IuKnj8y4IixOb3RMZWZ0VHJpYW5nbGU6IuKLqiIsTm90TGVmdFRyaWFuZ2xlRXF1YWw6IuKLrCIsTm90TGVzczoi4omuIixOb3RMZXNzRXF1YWw6IuKJsCIsTm90TGVzc0dyZWF0ZXI6IuKJuCIsTm90TGVzc0xlc3M6IuKJqsy4IixOb3RMZXNzU2xhbnRFcXVhbDoi4qm9zLgiLE5vdExlc3NUaWxkZToi4om0IixOb3ROZXN0ZWRHcmVhdGVyR3JlYXRlcjoi4qqizLgiLE5vdE5lc3RlZExlc3NMZXNzOiLiqqHMuCIsbm90bmk6IuKIjCIsbm90bml2YToi4oiMIixub3RuaXZiOiLii74iLG5vdG5pdmM6IuKLvSIsTm90UHJlY2VkZXM6IuKKgCIsTm90UHJlY2VkZXNFcXVhbDoi4qqvzLgiLE5vdFByZWNlZGVzU2xhbnRFcXVhbDoi4ougIixOb3RSZXZlcnNlRWxlbWVudDoi4oiMIixOb3RSaWdodFRyaWFuZ2xlQmFyOiLip5DMuCIsTm90UmlnaHRUcmlhbmdsZToi4ourIixOb3RSaWdodFRyaWFuZ2xlRXF1YWw6IuKLrSIsTm90U3F1YXJlU3Vic2V0OiLiio/MuCIsTm90U3F1YXJlU3Vic2V0RXF1YWw6IuKLoiIsTm90U3F1YXJlU3VwZXJzZXQ6IuKKkMy4IixOb3RTcXVhcmVTdXBlcnNldEVxdWFsOiLii6MiLE5vdFN1YnNldDoi4oqC4oOSIixOb3RTdWJzZXRFcXVhbDoi4oqIIixOb3RTdWNjZWVkczoi4oqBIixOb3RTdWNjZWVkc0VxdWFsOiLiqrDMuCIsTm90U3VjY2VlZHNTbGFudEVxdWFsOiLii6EiLE5vdFN1Y2NlZWRzVGlsZGU6IuKJv8y4IixOb3RTdXBlcnNldDoi4oqD4oOSIixOb3RTdXBlcnNldEVxdWFsOiLiiokiLE5vdFRpbGRlOiLiiYEiLE5vdFRpbGRlRXF1YWw6IuKJhCIsTm90VGlsZGVGdWxsRXF1YWw6IuKJhyIsTm90VGlsZGVUaWxkZToi4omJIixOb3RWZXJ0aWNhbEJhcjoi4oikIixucGFyYWxsZWw6IuKIpiIsbnBhcjoi4oimIixucGFyc2w6IuKrveKDpSIsbnBhcnQ6IuKIgsy4IixucG9saW50OiLiqJQiLG5wcjoi4oqAIixucHJjdWU6IuKLoCIsbnByZWM6IuKKgCIsbnByZWNlcToi4qqvzLgiLG5wcmU6IuKqr8y4IixucmFycmM6IuKks8y4IixucmFycjoi4oabIixuckFycjoi4oePIixucmFycnc6IuKGncy4IixucmlnaHRhcnJvdzoi4oabIixuUmlnaHRhcnJvdzoi4oePIixucnRyaToi4ourIixucnRyaWU6IuKLrSIsbnNjOiLiioEiLG5zY2N1ZToi4ouhIixuc2NlOiLiqrDMuCIsTnNjcjoi8J2SqSIsbnNjcjoi8J2TgyIsbnNob3J0bWlkOiLiiKQiLG5zaG9ydHBhcmFsbGVsOiLiiKYiLG5zaW06IuKJgSIsbnNpbWU6IuKJhCIsbnNpbWVxOiLiiYQiLG5zbWlkOiLiiKQiLG5zcGFyOiLiiKYiLG5zcXN1YmU6IuKLoiIsbnNxc3VwZToi4oujIixuc3ViOiLiioQiLG5zdWJFOiLiq4XMuCIsbnN1YmU6IuKKiCIsbnN1YnNldDoi4oqC4oOSIixuc3Vic2V0ZXE6IuKKiCIsbnN1YnNldGVxcToi4quFzLgiLG5zdWNjOiLiioEiLG5zdWNjZXE6IuKqsMy4Iixuc3VwOiLiioUiLG5zdXBFOiLiq4bMuCIsbnN1cGU6IuKKiSIsbnN1cHNldDoi4oqD4oOSIixuc3Vwc2V0ZXE6IuKKiSIsbnN1cHNldGVxcToi4quGzLgiLG50Z2w6IuKJuSIsTnRpbGRlOiLDkSIsbnRpbGRlOiLDsSIsbnRsZzoi4om4IixudHJpYW5nbGVsZWZ0OiLii6oiLG50cmlhbmdsZWxlZnRlcToi4ousIixudHJpYW5nbGVyaWdodDoi4ourIixudHJpYW5nbGVyaWdodGVxOiLii60iLE51OiLOnSIsbnU6Is69IixudW06IiMiLG51bWVybzoi4oSWIixudW1zcDoi4oCHIixudmFwOiLiiY3ig5IiLG52ZGFzaDoi4oqsIixudkRhc2g6IuKKrSIsblZkYXNoOiLiiq4iLG5WRGFzaDoi4oqvIixudmdlOiLiiaXig5IiLG52Z3Q6Ij7ig5IiLG52SGFycjoi4qSEIixudmluZmluOiLip54iLG52bEFycjoi4qSCIixudmxlOiLiiaTig5IiLG52bHQ6Ijzig5IiLG52bHRyaWU6IuKKtOKDkiIsbnZyQXJyOiLipIMiLG52cnRyaWU6IuKKteKDkiIsbnZzaW06IuKIvOKDkiIsbndhcmhrOiLipKMiLG53YXJyOiLihpYiLG53QXJyOiLih5YiLG53YXJyb3c6IuKGliIsbnduZWFyOiLipKciLE9hY3V0ZToiw5MiLG9hY3V0ZToiw7MiLG9hc3Q6IuKKmyIsT2NpcmM6IsOUIixvY2lyYzoiw7QiLG9jaXI6IuKKmiIsT2N5OiLQniIsb2N5OiLQviIsb2Rhc2g6IuKKnSIsT2RibGFjOiLFkCIsb2RibGFjOiLFkSIsb2Rpdjoi4qi4IixvZG90OiLiipkiLG9kc29sZDoi4qa8IixPRWxpZzoixZIiLG9lbGlnOiLFkyIsb2ZjaXI6IuKmvyIsT2ZyOiLwnZSSIixvZnI6IvCdlKwiLG9nb246IsubIixPZ3JhdmU6IsOSIixvZ3JhdmU6IsOyIixvZ3Q6IuKngSIsb2hiYXI6IuKmtSIsb2htOiLOqSIsb2ludDoi4oiuIixvbGFycjoi4oa6IixvbGNpcjoi4qa+IixvbGNyb3NzOiLiprsiLG9saW5lOiLigL4iLG9sdDoi4qeAIixPbWFjcjoixYwiLG9tYWNyOiLFjSIsT21lZ2E6Is6pIixvbWVnYToiz4kiLE9taWNyb246Is6fIixvbWljcm9uOiLOvyIsb21pZDoi4qa2IixvbWludXM6IuKKliIsT29wZjoi8J2VhiIsb29wZjoi8J2VoCIsb3Bhcjoi4qa3IixPcGVuQ3VybHlEb3VibGVRdW90ZToi4oCcIixPcGVuQ3VybHlRdW90ZToi4oCYIixvcGVycDoi4qa5IixvcGx1czoi4oqVIixvcmFycjoi4oa7IixPcjoi4qmUIixvcjoi4oioIixvcmQ6IuKpnSIsb3JkZXI6IuKEtCIsb3JkZXJvZjoi4oS0IixvcmRmOiLCqiIsb3JkbToiwroiLG9yaWdvZjoi4oq2Iixvcm9yOiLiqZYiLG9yc2xvcGU6IuKplyIsb3J2OiLiqZsiLG9TOiLik4giLE9zY3I6IvCdkqoiLG9zY3I6IuKEtCIsT3NsYXNoOiLDmCIsb3NsYXNoOiLDuCIsb3NvbDoi4oqYIixPdGlsZGU6IsOVIixvdGlsZGU6IsO1IixvdGltZXNhczoi4qi2IixPdGltZXM6IuKotyIsb3RpbWVzOiLiipciLE91bWw6IsOWIixvdW1sOiLDtiIsb3ZiYXI6IuKMvSIsT3ZlckJhcjoi4oC+IixPdmVyQnJhY2U6IuKPniIsT3ZlckJyYWNrZXQ6IuKOtCIsT3ZlclBhcmVudGhlc2lzOiLij5wiLHBhcmE6IsK2IixwYXJhbGxlbDoi4oilIixwYXI6IuKIpSIscGFyc2ltOiLiq7MiLHBhcnNsOiLiq70iLHBhcnQ6IuKIgiIsUGFydGlhbEQ6IuKIgiIsUGN5OiLQnyIscGN5OiLQvyIscGVyY250OiIlIixwZXJpb2Q6Ii4iLHBlcm1pbDoi4oCwIixwZXJwOiLiiqUiLHBlcnRlbms6IuKAsSIsUGZyOiLwnZSTIixwZnI6IvCdlK0iLFBoaToizqYiLHBoaToiz4YiLHBoaXY6Is+VIixwaG1tYXQ6IuKEsyIscGhvbmU6IuKYjiIsUGk6Is6gIixwaToiz4AiLHBpdGNoZm9yazoi4ouUIixwaXY6Is+WIixwbGFuY2s6IuKEjyIscGxhbmNraDoi4oSOIixwbGFua3Y6IuKEjyIscGx1c2FjaXI6IuKooyIscGx1c2I6IuKKniIscGx1c2Npcjoi4qiiIixwbHVzOiIrIixwbHVzZG86IuKIlCIscGx1c2R1OiLiqKUiLHBsdXNlOiLiqbIiLFBsdXNNaW51czoiwrEiLHBsdXNtbjoiwrEiLHBsdXNzaW06IuKopiIscGx1c3R3bzoi4qinIixwbToiwrEiLFBvaW5jYXJlcGxhbmU6IuKEjCIscG9pbnRpbnQ6IuKolSIscG9wZjoi8J2VoSIsUG9wZjoi4oSZIixwb3VuZDoiwqMiLHByYXA6IuKqtyIsUHI6IuKquyIscHI6IuKJuiIscHJjdWU6IuKJvCIscHJlY2FwcHJveDoi4qq3IixwcmVjOiLiiboiLHByZWNjdXJseWVxOiLiibwiLFByZWNlZGVzOiLiiboiLFByZWNlZGVzRXF1YWw6IuKqryIsUHJlY2VkZXNTbGFudEVxdWFsOiLiibwiLFByZWNlZGVzVGlsZGU6IuKJviIscHJlY2VxOiLiqq8iLHByZWNuYXBwcm94OiLiqrkiLHByZWNuZXFxOiLiqrUiLHByZWNuc2ltOiLii6giLHByZToi4qqvIixwckU6IuKqsyIscHJlY3NpbToi4om+IixwcmltZToi4oCyIixQcmltZToi4oCzIixwcmltZXM6IuKEmSIscHJuYXA6IuKquSIscHJuRToi4qq1Iixwcm5zaW06IuKLqCIscHJvZDoi4oiPIixQcm9kdWN0OiLiiI8iLHByb2ZhbGFyOiLijK4iLHByb2ZsaW5lOiLijJIiLHByb2ZzdXJmOiLijJMiLHByb3A6IuKInSIsUHJvcG9ydGlvbmFsOiLiiJ0iLFByb3BvcnRpb246IuKItyIscHJvcHRvOiLiiJ0iLHByc2ltOiLiib4iLHBydXJlbDoi4oqwIixQc2NyOiLwnZKrIixwc2NyOiLwnZOFIixQc2k6Is6oIixwc2k6Is+IIixwdW5jc3A6IuKAiCIsUWZyOiLwnZSUIixxZnI6IvCdlK4iLHFpbnQ6IuKojCIscW9wZjoi8J2VoiIsUW9wZjoi4oSaIixxcHJpbWU6IuKBlyIsUXNjcjoi8J2SrCIscXNjcjoi8J2ThiIscXVhdGVybmlvbnM6IuKEjSIscXVhdGludDoi4qiWIixxdWVzdDoiPyIscXVlc3RlcToi4omfIixxdW90OiciJyxRVU9UOiciJyxyQWFycjoi4oebIixyYWNlOiLiiL3MsSIsUmFjdXRlOiLFlCIscmFjdXRlOiLFlSIscmFkaWM6IuKImiIscmFlbXB0eXY6IuKmsyIscmFuZzoi4p+pIixSYW5nOiLin6siLHJhbmdkOiLippIiLHJhbmdlOiLipqUiLHJhbmdsZToi4p+pIixyYXF1bzoiwrsiLHJhcnJhcDoi4qW1IixyYXJyYjoi4oelIixyYXJyYmZzOiLipKAiLHJhcnJjOiLipLMiLHJhcnI6IuKGkiIsUmFycjoi4oagIixyQXJyOiLih5IiLHJhcnJmczoi4qSeIixyYXJyaGs6IuKGqiIscmFycmxwOiLihqwiLHJhcnJwbDoi4qWFIixyYXJyc2ltOiLipbQiLFJhcnJ0bDoi4qSWIixyYXJydGw6IuKGoyIscmFycnc6IuKGnSIscmF0YWlsOiLipJoiLHJBdGFpbDoi4qScIixyYXRpbzoi4oi2IixyYXRpb25hbHM6IuKEmiIscmJhcnI6IuKkjSIsckJhcnI6IuKkjyIsUkJhcnI6IuKkkCIscmJicms6IuKdsyIscmJyYWNlOiJ9IixyYnJhY2s6Il0iLHJicmtlOiLipowiLHJicmtzbGQ6IuKmjiIscmJya3NsdToi4qaQIixSY2Fyb246IsWYIixyY2Fyb246IsWZIixSY2VkaWw6IsWWIixyY2VkaWw6IsWXIixyY2VpbDoi4oyJIixyY3ViOiJ9IixSY3k6ItCgIixyY3k6ItGAIixyZGNhOiLipLciLHJkbGRoYXI6IuKlqSIscmRxdW86IuKAnSIscmRxdW9yOiLigJ0iLHJkc2g6IuKGsyIscmVhbDoi4oScIixyZWFsaW5lOiLihJsiLHJlYWxwYXJ0OiLihJwiLHJlYWxzOiLihJ0iLFJlOiLihJwiLHJlY3Q6IuKWrSIscmVnOiLCriIsUkVHOiLCriIsUmV2ZXJzZUVsZW1lbnQ6IuKIiyIsUmV2ZXJzZUVxdWlsaWJyaXVtOiLih4siLFJldmVyc2VVcEVxdWlsaWJyaXVtOiLipa8iLHJmaXNodDoi4qW9IixyZmxvb3I6IuKMiyIscmZyOiLwnZSvIixSZnI6IuKEnCIsckhhcjoi4qWkIixyaGFyZDoi4oeBIixyaGFydToi4oeAIixyaGFydWw6IuKlrCIsUmhvOiLOoSIscmhvOiLPgSIscmhvdjoiz7EiLFJpZ2h0QW5nbGVCcmFja2V0OiLin6kiLFJpZ2h0QXJyb3dCYXI6IuKHpSIscmlnaHRhcnJvdzoi4oaSIixSaWdodEFycm93OiLihpIiLFJpZ2h0YXJyb3c6IuKHkiIsUmlnaHRBcnJvd0xlZnRBcnJvdzoi4oeEIixyaWdodGFycm93dGFpbDoi4oajIixSaWdodENlaWxpbmc6IuKMiSIsUmlnaHREb3VibGVCcmFja2V0OiLin6ciLFJpZ2h0RG93blRlZVZlY3Rvcjoi4qWdIixSaWdodERvd25WZWN0b3JCYXI6IuKllSIsUmlnaHREb3duVmVjdG9yOiLih4IiLFJpZ2h0Rmxvb3I6IuKMiyIscmlnaHRoYXJwb29uZG93bjoi4oeBIixyaWdodGhhcnBvb251cDoi4oeAIixyaWdodGxlZnRhcnJvd3M6IuKHhCIscmlnaHRsZWZ0aGFycG9vbnM6IuKHjCIscmlnaHRyaWdodGFycm93czoi4oeJIixyaWdodHNxdWlnYXJyb3c6IuKGnSIsUmlnaHRUZWVBcnJvdzoi4oamIixSaWdodFRlZToi4oqiIixSaWdodFRlZVZlY3Rvcjoi4qWbIixyaWdodHRocmVldGltZXM6IuKLjCIsUmlnaHRUcmlhbmdsZUJhcjoi4qeQIixSaWdodFRyaWFuZ2xlOiLiirMiLFJpZ2h0VHJpYW5nbGVFcXVhbDoi4oq1IixSaWdodFVwRG93blZlY3Rvcjoi4qWPIixSaWdodFVwVGVlVmVjdG9yOiLipZwiLFJpZ2h0VXBWZWN0b3JCYXI6IuKllCIsUmlnaHRVcFZlY3Rvcjoi4oa+IixSaWdodFZlY3RvckJhcjoi4qWTIixSaWdodFZlY3Rvcjoi4oeAIixyaW5nOiLLmiIscmlzaW5nZG90c2VxOiLiiZMiLHJsYXJyOiLih4QiLHJsaGFyOiLih4wiLHJsbToi4oCPIixybW91c3RhY2hlOiLijrEiLHJtb3VzdDoi4o6xIixybm1pZDoi4quuIixyb2FuZzoi4p+tIixyb2Fycjoi4oe+Iixyb2Jyazoi4p+nIixyb3Bhcjoi4qaGIixyb3BmOiLwnZWjIixSb3BmOiLihJ0iLHJvcGx1czoi4qiuIixyb3RpbWVzOiLiqLUiLFJvdW5kSW1wbGllczoi4qWwIixycGFyOiIpIixycGFyZ3Q6IuKmlCIscnBwb2xpbnQ6IuKokiIscnJhcnI6IuKHiSIsUnJpZ2h0YXJyb3c6IuKHmyIscnNhcXVvOiLigLoiLHJzY3I6IvCdk4ciLFJzY3I6IuKEmyIscnNoOiLihrEiLFJzaDoi4oaxIixyc3FiOiJdIixyc3F1bzoi4oCZIixyc3F1b3I6IuKAmSIscnRocmVlOiLii4wiLHJ0aW1lczoi4ouKIixydHJpOiLilrkiLHJ0cmllOiLiirUiLHJ0cmlmOiLilrgiLHJ0cmlsdHJpOiLip44iLFJ1bGVEZWxheWVkOiLip7QiLHJ1bHVoYXI6IuKlqCIscng6IuKEniIsU2FjdXRlOiLFmiIsc2FjdXRlOiLFmyIsc2JxdW86IuKAmiIsc2NhcDoi4qq4IixTY2Fyb246IsWgIixzY2Fyb246IsWhIixTYzoi4qq8IixzYzoi4om7IixzY2N1ZToi4om9IixzY2U6IuKqsCIsc2NFOiLiqrQiLFNjZWRpbDoixZ4iLHNjZWRpbDoixZ8iLFNjaXJjOiLFnCIsc2NpcmM6IsWdIixzY25hcDoi4qq6IixzY25FOiLiqrYiLHNjbnNpbToi4oupIixzY3BvbGludDoi4qiTIixzY3NpbToi4om/IixTY3k6ItChIixzY3k6ItGBIixzZG90Yjoi4oqhIixzZG90OiLii4UiLHNkb3RlOiLiqaYiLHNlYXJoazoi4qSlIixzZWFycjoi4oaYIixzZUFycjoi4oeYIixzZWFycm93OiLihpgiLHNlY3Q6IsKnIixzZW1pOiI7IixzZXN3YXI6IuKkqSIsc2V0bWludXM6IuKIliIsc2V0bW46IuKIliIsc2V4dDoi4py2IixTZnI6IvCdlJYiLHNmcjoi8J2UsCIsc2Zyb3duOiLijKIiLHNoYXJwOiLima8iLFNIQ0hjeToi0KkiLHNoY2hjeToi0YkiLFNIY3k6ItCoIixzaGN5OiLRiCIsU2hvcnREb3duQXJyb3c6IuKGkyIsU2hvcnRMZWZ0QXJyb3c6IuKGkCIsc2hvcnRtaWQ6IuKIoyIsc2hvcnRwYXJhbGxlbDoi4oilIixTaG9ydFJpZ2h0QXJyb3c6IuKGkiIsU2hvcnRVcEFycm93OiLihpEiLHNoeToiwq0iLFNpZ21hOiLOoyIsc2lnbWE6Is+DIixzaWdtYWY6Is+CIixzaWdtYXY6Is+CIixzaW06IuKIvCIsc2ltZG90OiLiqaoiLHNpbWU6IuKJgyIsc2ltZXE6IuKJgyIsc2ltZzoi4qqeIixzaW1nRToi4qqgIixzaW1sOiLiqp0iLHNpbWxFOiLiqp8iLHNpbW5lOiLiiYYiLHNpbXBsdXM6IuKopCIsc2ltcmFycjoi4qWyIixzbGFycjoi4oaQIixTbWFsbENpcmNsZToi4oiYIixzbWFsbHNldG1pbnVzOiLiiJYiLHNtYXNocDoi4qizIixzbWVwYXJzbDoi4qekIixzbWlkOiLiiKMiLHNtaWxlOiLijKMiLHNtdDoi4qqqIixzbXRlOiLiqqwiLHNtdGVzOiLiqqzvuIAiLFNPRlRjeToi0KwiLHNvZnRjeToi0YwiLHNvbGJhcjoi4oy/Iixzb2xiOiLip4QiLHNvbDoiLyIsU29wZjoi8J2ViiIsc29wZjoi8J2VpCIsc3BhZGVzOiLimaAiLHNwYWRlc3VpdDoi4pmgIixzcGFyOiLiiKUiLHNxY2FwOiLiipMiLHNxY2Fwczoi4oqT77iAIixzcWN1cDoi4oqUIixzcWN1cHM6IuKKlO+4gCIsU3FydDoi4oiaIixzcXN1Yjoi4oqPIixzcXN1YmU6IuKKkSIsc3FzdWJzZXQ6IuKKjyIsc3FzdWJzZXRlcToi4oqRIixzcXN1cDoi4oqQIixzcXN1cGU6IuKKkiIsc3FzdXBzZXQ6IuKKkCIsc3FzdXBzZXRlcToi4oqSIixzcXVhcmU6IuKWoSIsU3F1YXJlOiLilqEiLFNxdWFyZUludGVyc2VjdGlvbjoi4oqTIixTcXVhcmVTdWJzZXQ6IuKKjyIsU3F1YXJlU3Vic2V0RXF1YWw6IuKKkSIsU3F1YXJlU3VwZXJzZXQ6IuKKkCIsU3F1YXJlU3VwZXJzZXRFcXVhbDoi4oqSIixTcXVhcmVVbmlvbjoi4oqUIixzcXVhcmY6IuKWqiIsc3F1OiLilqEiLHNxdWY6IuKWqiIsc3JhcnI6IuKGkiIsU3Njcjoi8J2SriIsc3Njcjoi8J2TiCIsc3NldG1uOiLiiJYiLHNzbWlsZToi4oyjIixzc3RhcmY6IuKLhiIsU3Rhcjoi4ouGIixzdGFyOiLimIYiLHN0YXJmOiLimIUiLHN0cmFpZ2h0ZXBzaWxvbjoiz7UiLHN0cmFpZ2h0cGhpOiLPlSIsc3RybnM6IsKvIixzdWI6IuKKgiIsU3ViOiLii5AiLHN1YmRvdDoi4qq9IixzdWJFOiLiq4UiLHN1YmU6IuKKhiIsc3ViZWRvdDoi4quDIixzdWJtdWx0OiLiq4EiLHN1Ym5FOiLiq4siLHN1Ym5lOiLiiooiLHN1YnBsdXM6IuKqvyIsc3VicmFycjoi4qW5IixzdWJzZXQ6IuKKgiIsU3Vic2V0OiLii5AiLHN1YnNldGVxOiLiioYiLHN1YnNldGVxcToi4quFIixTdWJzZXRFcXVhbDoi4oqGIixzdWJzZXRuZXE6IuKKiiIsc3Vic2V0bmVxcToi4quLIixzdWJzaW06IuKrhyIsc3Vic3ViOiLiq5UiLHN1YnN1cDoi4quTIixzdWNjYXBwcm94OiLiqrgiLHN1Y2M6IuKJuyIsc3VjY2N1cmx5ZXE6IuKJvSIsU3VjY2VlZHM6IuKJuyIsU3VjY2VlZHNFcXVhbDoi4qqwIixTdWNjZWVkc1NsYW50RXF1YWw6IuKJvSIsU3VjY2VlZHNUaWxkZToi4om/IixzdWNjZXE6IuKqsCIsc3VjY25hcHByb3g6IuKquiIsc3VjY25lcXE6IuKqtiIsc3VjY25zaW06IuKLqSIsc3VjY3NpbToi4om/IixTdWNoVGhhdDoi4oiLIixzdW06IuKIkSIsU3VtOiLiiJEiLHN1bmc6IuKZqiIsc3VwMToiwrkiLHN1cDI6IsKyIixzdXAzOiLCsyIsc3VwOiLiioMiLFN1cDoi4ouRIixzdXBkb3Q6IuKqviIsc3VwZHN1Yjoi4quYIixzdXBFOiLiq4YiLHN1cGU6IuKKhyIsc3VwZWRvdDoi4quEIixTdXBlcnNldDoi4oqDIixTdXBlcnNldEVxdWFsOiLiiociLHN1cGhzb2w6IuKfiSIsc3VwaHN1Yjoi4quXIixzdXBsYXJyOiLipbsiLHN1cG11bHQ6IuKrgiIsc3VwbkU6IuKrjCIsc3VwbmU6IuKKiyIsc3VwcGx1czoi4quAIixzdXBzZXQ6IuKKgyIsU3Vwc2V0OiLii5EiLHN1cHNldGVxOiLiiociLHN1cHNldGVxcToi4quGIixzdXBzZXRuZXE6IuKKiyIsc3Vwc2V0bmVxcToi4quMIixzdXBzaW06IuKriCIsc3Vwc3ViOiLiq5QiLHN1cHN1cDoi4quWIixzd2FyaGs6IuKkpiIsc3dhcnI6IuKGmSIsc3dBcnI6IuKHmSIsc3dhcnJvdzoi4oaZIixzd253YXI6IuKkqiIsc3psaWc6IsOfIixUYWI6Ilx0Iix0YXJnZXQ6IuKMliIsVGF1OiLOpCIsdGF1OiLPhCIsdGJyazoi4o60IixUY2Fyb246IsWkIix0Y2Fyb246IsWlIixUY2VkaWw6IsWiIix0Y2VkaWw6IsWjIixUY3k6ItCiIix0Y3k6ItGCIix0ZG90OiLig5siLHRlbHJlYzoi4oyVIixUZnI6IvCdlJciLHRmcjoi8J2UsSIsdGhlcmU0OiLiiLQiLHRoZXJlZm9yZToi4oi0IixUaGVyZWZvcmU6IuKItCIsVGhldGE6Is6YIix0aGV0YToizrgiLHRoZXRhc3ltOiLPkSIsdGhldGF2OiLPkSIsdGhpY2thcHByb3g6IuKJiCIsdGhpY2tzaW06IuKIvCIsVGhpY2tTcGFjZToi4oGf4oCKIixUaGluU3BhY2U6IuKAiSIsdGhpbnNwOiLigIkiLHRoa2FwOiLiiYgiLHRoa3NpbToi4oi8IixUSE9STjoiw54iLHRob3JuOiLDviIsdGlsZGU6IsucIixUaWxkZToi4oi8IixUaWxkZUVxdWFsOiLiiYMiLFRpbGRlRnVsbEVxdWFsOiLiiYUiLFRpbGRlVGlsZGU6IuKJiCIsdGltZXNiYXI6IuKosSIsdGltZXNiOiLiiqAiLHRpbWVzOiLDlyIsdGltZXNkOiLiqLAiLHRpbnQ6IuKIrSIsdG9lYToi4qSoIix0b3Bib3Q6IuKMtiIsdG9wY2lyOiLiq7EiLHRvcDoi4oqkIixUb3BmOiLwnZWLIix0b3BmOiLwnZWlIix0b3Bmb3JrOiLiq5oiLHRvc2E6IuKkqSIsdHByaW1lOiLigLQiLHRyYWRlOiLihKIiLFRSQURFOiLihKIiLHRyaWFuZ2xlOiLilrUiLHRyaWFuZ2xlZG93bjoi4pa/Iix0cmlhbmdsZWxlZnQ6IuKXgyIsdHJpYW5nbGVsZWZ0ZXE6IuKKtCIsdHJpYW5nbGVxOiLiiZwiLHRyaWFuZ2xlcmlnaHQ6IuKWuSIsdHJpYW5nbGVyaWdodGVxOiLiirUiLHRyaWRvdDoi4pesIix0cmllOiLiiZwiLHRyaW1pbnVzOiLiqLoiLFRyaXBsZURvdDoi4oObIix0cmlwbHVzOiLiqLkiLHRyaXNiOiLip40iLHRyaXRpbWU6IuKouyIsdHJwZXppdW06IuKPoiIsVHNjcjoi8J2SryIsdHNjcjoi8J2TiSIsVFNjeToi0KYiLHRzY3k6ItGGIixUU0hjeToi0IsiLHRzaGN5OiLRmyIsVHN0cm9rOiLFpiIsdHN0cm9rOiLFpyIsdHdpeHQ6IuKJrCIsdHdvaGVhZGxlZnRhcnJvdzoi4oaeIix0d29oZWFkcmlnaHRhcnJvdzoi4oagIixVYWN1dGU6IsOaIix1YWN1dGU6IsO6Iix1YXJyOiLihpEiLFVhcnI6IuKGnyIsdUFycjoi4oeRIixVYXJyb2Npcjoi4qWJIixVYnJjeToi0I4iLHVicmN5OiLRniIsVWJyZXZlOiLFrCIsdWJyZXZlOiLFrSIsVWNpcmM6IsObIix1Y2lyYzoiw7siLFVjeToi0KMiLHVjeToi0YMiLHVkYXJyOiLih4UiLFVkYmxhYzoixbAiLHVkYmxhYzoixbEiLHVkaGFyOiLipa4iLHVmaXNodDoi4qW+IixVZnI6IvCdlJgiLHVmcjoi8J2UsiIsVWdyYXZlOiLDmSIsdWdyYXZlOiLDuSIsdUhhcjoi4qWjIix1aGFybDoi4oa/Iix1aGFycjoi4oa+Iix1aGJsazoi4paAIix1bGNvcm46IuKMnCIsdWxjb3JuZXI6IuKMnCIsdWxjcm9wOiLijI8iLHVsdHJpOiLil7giLFVtYWNyOiLFqiIsdW1hY3I6IsWrIix1bWw6IsKoIixVbmRlckJhcjoiXyIsVW5kZXJCcmFjZToi4o+fIixVbmRlckJyYWNrZXQ6IuKOtSIsVW5kZXJQYXJlbnRoZXNpczoi4o+dIixVbmlvbjoi4ouDIixVbmlvblBsdXM6IuKKjiIsVW9nb246IsWyIix1b2dvbjoixbMiLFVvcGY6IvCdlYwiLHVvcGY6IvCdlaYiLFVwQXJyb3dCYXI6IuKkkiIsdXBhcnJvdzoi4oaRIixVcEFycm93OiLihpEiLFVwYXJyb3c6IuKHkSIsVXBBcnJvd0Rvd25BcnJvdzoi4oeFIix1cGRvd25hcnJvdzoi4oaVIixVcERvd25BcnJvdzoi4oaVIixVcGRvd25hcnJvdzoi4oeVIixVcEVxdWlsaWJyaXVtOiLipa4iLHVwaGFycG9vbmxlZnQ6IuKGvyIsdXBoYXJwb29ucmlnaHQ6IuKGviIsdXBsdXM6IuKKjiIsVXBwZXJMZWZ0QXJyb3c6IuKGliIsVXBwZXJSaWdodEFycm93OiLihpciLHVwc2k6Is+FIixVcHNpOiLPkiIsdXBzaWg6Is+SIixVcHNpbG9uOiLOpSIsdXBzaWxvbjoiz4UiLFVwVGVlQXJyb3c6IuKGpSIsVXBUZWU6IuKKpSIsdXB1cGFycm93czoi4oeIIix1cmNvcm46IuKMnSIsdXJjb3JuZXI6IuKMnSIsdXJjcm9wOiLijI4iLFVyaW5nOiLFriIsdXJpbmc6IsWvIix1cnRyaToi4pe5IixVc2NyOiLwnZKwIix1c2NyOiLwnZOKIix1dGRvdDoi4ouwIixVdGlsZGU6IsWoIix1dGlsZGU6IsWpIix1dHJpOiLilrUiLHV0cmlmOiLilrQiLHV1YXJyOiLih4giLFV1bWw6IsOcIix1dW1sOiLDvCIsdXdhbmdsZToi4qanIix2YW5ncnQ6IuKmnCIsdmFyZXBzaWxvbjoiz7UiLHZhcmthcHBhOiLPsCIsdmFybm90aGluZzoi4oiFIix2YXJwaGk6Is+VIix2YXJwaToiz5YiLHZhcnByb3B0bzoi4oidIix2YXJyOiLihpUiLHZBcnI6IuKHlSIsdmFycmhvOiLPsSIsdmFyc2lnbWE6Is+CIix2YXJzdWJzZXRuZXE6IuKKiu+4gCIsdmFyc3Vic2V0bmVxcToi4quL77iAIix2YXJzdXBzZXRuZXE6IuKKi++4gCIsdmFyc3Vwc2V0bmVxcToi4quM77iAIix2YXJ0aGV0YToiz5EiLHZhcnRyaWFuZ2xlbGVmdDoi4oqyIix2YXJ0cmlhbmdsZXJpZ2h0OiLiirMiLHZCYXI6IuKrqCIsVmJhcjoi4qurIix2QmFydjoi4qupIixWY3k6ItCSIix2Y3k6ItCyIix2ZGFzaDoi4oqiIix2RGFzaDoi4oqoIixWZGFzaDoi4oqpIixWRGFzaDoi4oqrIixWZGFzaGw6IuKrpiIsdmVlYmFyOiLiirsiLHZlZToi4oioIixWZWU6IuKLgSIsdmVlZXE6IuKJmiIsdmVsbGlwOiLii64iLHZlcmJhcjoifCIsVmVyYmFyOiLigJYiLHZlcnQ6InwiLFZlcnQ6IuKAliIsVmVydGljYWxCYXI6IuKIoyIsVmVydGljYWxMaW5lOiJ8IixWZXJ0aWNhbFNlcGFyYXRvcjoi4p2YIixWZXJ0aWNhbFRpbGRlOiLiiYAiLFZlcnlUaGluU3BhY2U6IuKAiiIsVmZyOiLwnZSZIix2ZnI6IvCdlLMiLHZsdHJpOiLiirIiLHZuc3ViOiLiioLig5IiLHZuc3VwOiLiioPig5IiLFZvcGY6IvCdlY0iLHZvcGY6IvCdlaciLHZwcm9wOiLiiJ0iLHZydHJpOiLiirMiLFZzY3I6IvCdkrEiLHZzY3I6IvCdk4siLHZzdWJuRToi4quL77iAIix2c3VibmU6IuKKiu+4gCIsdnN1cG5FOiLiq4zvuIAiLHZzdXBuZToi4oqL77iAIixWdmRhc2g6IuKKqiIsdnppZ3phZzoi4qaaIixXY2lyYzoixbQiLHdjaXJjOiLFtSIsd2VkYmFyOiLiqZ8iLHdlZGdlOiLiiKciLFdlZGdlOiLii4AiLHdlZGdlcToi4omZIix3ZWllcnA6IuKEmCIsV2ZyOiLwnZSaIix3ZnI6IvCdlLQiLFdvcGY6IvCdlY4iLHdvcGY6IvCdlagiLHdwOiLihJgiLHdyOiLiiYAiLHdyZWF0aDoi4omAIixXc2NyOiLwnZKyIix3c2NyOiLwnZOMIix4Y2FwOiLii4IiLHhjaXJjOiLil68iLHhjdXA6IuKLgyIseGR0cmk6IuKWvSIsWGZyOiLwnZSbIix4ZnI6IvCdlLUiLHhoYXJyOiLin7ciLHhoQXJyOiLin7oiLFhpOiLOniIseGk6Is6+Iix4bGFycjoi4p+1Iix4bEFycjoi4p+4Iix4bWFwOiLin7wiLHhuaXM6IuKLuyIseG9kb3Q6IuKogCIsWG9wZjoi8J2VjyIseG9wZjoi8J2VqSIseG9wbHVzOiLiqIEiLHhvdGltZToi4qiCIix4cmFycjoi4p+2Iix4ckFycjoi4p+5IixYc2NyOiLwnZKzIix4c2NyOiLwnZONIix4c3FjdXA6IuKohiIseHVwbHVzOiLiqIQiLHh1dHJpOiLilrMiLHh2ZWU6IuKLgSIseHdlZGdlOiLii4AiLFlhY3V0ZToiw50iLHlhY3V0ZToiw70iLFlBY3k6ItCvIix5YWN5OiLRjyIsWWNpcmM6IsW2Iix5Y2lyYzoixbciLFljeToi0KsiLHljeToi0YsiLHllbjoiwqUiLFlmcjoi8J2UnCIseWZyOiLwnZS2IixZSWN5OiLQhyIseWljeToi0ZciLFlvcGY6IvCdlZAiLHlvcGY6IvCdlaoiLFlzY3I6IvCdkrQiLHlzY3I6IvCdk44iLFlVY3k6ItCuIix5dWN5OiLRjiIseXVtbDoiw78iLFl1bWw6IsW4IixaYWN1dGU6IsW5Iix6YWN1dGU6IsW6IixaY2Fyb246IsW9Iix6Y2Fyb246IsW+IixaY3k6ItCXIix6Y3k6ItC3IixaZG90OiLFuyIsemRvdDoixbwiLHplZXRyZjoi4oSoIixaZXJvV2lkdGhTcGFjZToi4oCLIixaZXRhOiLOliIsemV0YToizrYiLHpmcjoi8J2UtyIsWmZyOiLihKgiLFpIY3k6ItCWIix6aGN5OiLQtiIsemlncmFycjoi4oedIix6b3BmOiLwnZWrIixab3BmOiLihKQiLFpzY3I6IvCdkrUiLHpzY3I6IvCdk48iLHp3ajoi4oCNIix6d25qOiLigIwifX0se31dLDI2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17QWFjdXRlOiLDgSIsYWFjdXRlOiLDoSIsQWNpcmM6IsOCIixhY2lyYzoiw6IiLGFjdXRlOiLCtCIsQUVsaWc6IsOGIixhZWxpZzoiw6YiLEFncmF2ZToiw4AiLGFncmF2ZToiw6AiLGFtcDoiJiIsQU1QOiImIixBcmluZzoiw4UiLGFyaW5nOiLDpSIsQXRpbGRlOiLDgyIsYXRpbGRlOiLDoyIsQXVtbDoiw4QiLGF1bWw6IsOkIixicnZiYXI6IsKmIixDY2VkaWw6IsOHIixjY2VkaWw6IsOnIixjZWRpbDoiwrgiLGNlbnQ6IsKiIixjb3B5OiLCqSIsQ09QWToiwqkiLGN1cnJlbjoiwqQiLGRlZzoiwrAiLGRpdmlkZToiw7ciLEVhY3V0ZToiw4kiLGVhY3V0ZToiw6kiLEVjaXJjOiLDiiIsZWNpcmM6IsOqIixFZ3JhdmU6IsOIIixlZ3JhdmU6IsOoIixFVEg6IsOQIixldGg6IsOwIixFdW1sOiLDiyIsZXVtbDoiw6siLGZyYWMxMjoiwr0iLGZyYWMxNDoiwrwiLGZyYWMzNDoiwr4iLGd0OiI+IixHVDoiPiIsSWFjdXRlOiLDjSIsaWFjdXRlOiLDrSIsSWNpcmM6IsOOIixpY2lyYzoiw64iLGlleGNsOiLCoSIsSWdyYXZlOiLDjCIsaWdyYXZlOiLDrCIsaXF1ZXN0OiLCvyIsSXVtbDoiw48iLGl1bWw6IsOvIixsYXF1bzoiwqsiLGx0OiI8IixMVDoiPCIsbWFjcjoiwq8iLG1pY3JvOiLCtSIsbWlkZG90OiLCtyIsbmJzcDoiwqAiLG5vdDoiwqwiLE50aWxkZToiw5EiLG50aWxkZToiw7EiLE9hY3V0ZToiw5MiLG9hY3V0ZToiw7MiLE9jaXJjOiLDlCIsb2NpcmM6IsO0IixPZ3JhdmU6IsOSIixvZ3JhdmU6IsOyIixvcmRmOiLCqiIsb3JkbToiwroiLE9zbGFzaDoiw5giLG9zbGFzaDoiw7giLE90aWxkZToiw5UiLG90aWxkZToiw7UiLE91bWw6IsOWIixvdW1sOiLDtiIscGFyYToiwrYiLHBsdXNtbjoiwrEiLHBvdW5kOiLCoyIscXVvdDonIicsUVVPVDonIicscmFxdW86IsK7IixyZWc6IsKuIixSRUc6IsKuIixzZWN0OiLCpyIsc2h5OiLCrSIsc3VwMToiwrkiLHN1cDI6IsKyIixzdXAzOiLCsyIsc3psaWc6IsOfIixUSE9STjoiw54iLHRob3JuOiLDviIsdGltZXM6IsOXIixVYWN1dGU6IsOaIix1YWN1dGU6IsO6IixVY2lyYzoiw5siLHVjaXJjOiLDuyIsVWdyYXZlOiLDmSIsdWdyYXZlOiLDuSIsdW1sOiLCqCIsVXVtbDoiw5wiLHV1bWw6IsO8IixZYWN1dGU6IsOdIix5YWN1dGU6IsO9Iix5ZW46IsKlIix5dW1sOiLDvyJ9fSx7fV0sMjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPXthbXA6IiYiLGFwb3M6IiciLGd0OiI+IixsdDoiPCIscXVvdDonIid9fSx7fV0sMjg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe2Z1bmN0aW9uIEV2ZW50RW1pdHRlcigpe3RoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9O3RoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHVuZGVmaW5lZH1tb2R1bGUuZXhwb3J0cz1FdmVudEVtaXR0ZXI7RXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlcj1FdmVudEVtaXR0ZXI7RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzPXVuZGVmaW5lZDtFdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dW5kZWZpbmVkO0V2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzPTEwO0V2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKG4pe2lmKCFpc051bWJlcihuKXx8bjwwfHxpc05hTihuKSl0aHJvdyBUeXBlRXJyb3IoIm4gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO3RoaXMuX21heExpc3RlbmVycz1uO3JldHVybiB0aGlzfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odHlwZSl7dmFyIGVyLGhhbmRsZXIsbGVuLGFyZ3MsaSxsaXN0ZW5lcnM7aWYoIXRoaXMuX2V2ZW50cyl0aGlzLl9ldmVudHM9e307aWYodHlwZT09PSJlcnJvciIpe2lmKCF0aGlzLl9ldmVudHMuZXJyb3J8fGlzT2JqZWN0KHRoaXMuX2V2ZW50cy5lcnJvcikmJiF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKXtlcj1hcmd1bWVudHNbMV07aWYoZXIgaW5zdGFuY2VvZiBFcnJvcil7dGhyb3cgZXJ9ZWxzZXt2YXIgZXJyPW5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkICJlcnJvciIgZXZlbnQuICgnK2VyKyIpIik7ZXJyLmNvbnRleHQ9ZXI7dGhyb3cgZXJyfX19aGFuZGxlcj10aGlzLl9ldmVudHNbdHlwZV07aWYoaXNVbmRlZmluZWQoaGFuZGxlcikpcmV0dXJuIGZhbHNlO2lmKGlzRnVuY3Rpb24oaGFuZGxlcikpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6aGFuZGxlci5jYWxsKHRoaXMpO2JyZWFrO2Nhc2UgMjpoYW5kbGVyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2UgMzpoYW5kbGVyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTticmVhaztkZWZhdWx0OmFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2hhbmRsZXIuYXBwbHkodGhpcyxhcmdzKX19ZWxzZSBpZihpc09iamVjdChoYW5kbGVyKSl7YXJncz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7bGlzdGVuZXJzPWhhbmRsZXIuc2xpY2UoKTtsZW49bGlzdGVuZXJzLmxlbmd0aDtmb3IoaT0wO2k8bGVuO2krKylsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcyxhcmdzKX1yZXR1cm4gdHJ1ZX07RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0eXBlLGxpc3RlbmVyKXt2YXIgbTtpZighaXNGdW5jdGlvbihsaXN0ZW5lcikpdGhyb3cgVHlwZUVycm9yKCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZighdGhpcy5fZXZlbnRzKXRoaXMuX2V2ZW50cz17fTtpZih0aGlzLl9ldmVudHMubmV3TGlzdGVuZXIpdGhpcy5lbWl0KCJuZXdMaXN0ZW5lciIsdHlwZSxpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKT9saXN0ZW5lci5saXN0ZW5lcjpsaXN0ZW5lcik7aWYoIXRoaXMuX2V2ZW50c1t0eXBlXSl0aGlzLl9ldmVudHNbdHlwZV09bGlzdGVuZXI7ZWxzZSBpZihpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKXRoaXMuX2V2ZW50c1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtlbHNlIHRoaXMuX2V2ZW50c1t0eXBlXT1bdGhpcy5fZXZlbnRzW3R5cGVdLGxpc3RlbmVyXTtpZihpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pJiYhdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCl7aWYoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpe209dGhpcy5fbWF4TGlzdGVuZXJzfWVsc2V7bT1FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVyc31pZihtJiZtPjAmJnRoaXMuX2V2ZW50c1t0eXBlXS5sZW5ndGg+bSl7dGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZD10cnVlO2NvbnNvbGUuZXJyb3IoIihub2RlKSB3YXJuaW5nOiBwb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5ICIrImxlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gIisiVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuIix0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtpZih0eXBlb2YgY29uc29sZS50cmFjZT09PSJmdW5jdGlvbiIpe2NvbnNvbGUudHJhY2UoKX19fXJldHVybiB0aGlzfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uPUV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHR5cGUsbGlzdGVuZXIpe2lmKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3ZhciBmaXJlZD1mYWxzZTtmdW5jdGlvbiBnKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLGcpO2lmKCFmaXJlZCl7ZmlyZWQ9dHJ1ZTtsaXN0ZW5lci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWcubGlzdGVuZXI9bGlzdGVuZXI7dGhpcy5vbih0eXBlLGcpO3JldHVybiB0aGlzfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHR5cGUsbGlzdGVuZXIpe3ZhciBsaXN0LHBvc2l0aW9uLGxlbmd0aCxpO2lmKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO2lmKCF0aGlzLl9ldmVudHN8fCF0aGlzLl9ldmVudHNbdHlwZV0pcmV0dXJuIHRoaXM7bGlzdD10aGlzLl9ldmVudHNbdHlwZV07bGVuZ3RoPWxpc3QubGVuZ3RoO3Bvc2l0aW9uPS0xO2lmKGxpc3Q9PT1saXN0ZW5lcnx8aXNGdW5jdGlvbihsaXN0Lmxpc3RlbmVyKSYmbGlzdC5saXN0ZW5lcj09PWxpc3RlbmVyKXtkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO2lmKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcil0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIix0eXBlLGxpc3RlbmVyKX1lbHNlIGlmKGlzT2JqZWN0KGxpc3QpKXtmb3IoaT1sZW5ndGg7aS0tID4wOyl7aWYobGlzdFtpXT09PWxpc3RlbmVyfHxsaXN0W2ldLmxpc3RlbmVyJiZsaXN0W2ldLmxpc3RlbmVyPT09bGlzdGVuZXIpe3Bvc2l0aW9uPWk7YnJlYWt9fWlmKHBvc2l0aW9uPDApcmV0dXJuIHRoaXM7aWYobGlzdC5sZW5ndGg9PT0xKXtsaXN0Lmxlbmd0aD0wO2RlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV19ZWxzZXtsaXN0LnNwbGljZShwb3NpdGlvbiwxKTsKK31pZih0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsdHlwZSxsaXN0ZW5lcil9cmV0dXJuIHRoaXN9O0V2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHR5cGUpe3ZhciBrZXksbGlzdGVuZXJzO2lmKCF0aGlzLl9ldmVudHMpcmV0dXJuIHRoaXM7aWYoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcil7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApdGhpcy5fZXZlbnRzPXt9O2Vsc2UgaWYodGhpcy5fZXZlbnRzW3R5cGVdKWRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07cmV0dXJuIHRoaXN9aWYoYXJndW1lbnRzLmxlbmd0aD09PTApe2ZvcihrZXkgaW4gdGhpcy5fZXZlbnRzKXtpZihrZXk9PT0icmVtb3ZlTGlzdGVuZXIiKWNvbnRpbnVlO3RoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSl9dGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIik7dGhpcy5fZXZlbnRzPXt9O3JldHVybiB0aGlzfWxpc3RlbmVycz10aGlzLl9ldmVudHNbdHlwZV07aWYoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKXt0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsbGlzdGVuZXJzKX1lbHNlIGlmKGxpc3RlbmVycyl7d2hpbGUobGlzdGVuZXJzLmxlbmd0aCl0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGgtMV0pfWRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07cmV0dXJuIHRoaXN9O0V2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHR5cGUpe3ZhciByZXQ7aWYoIXRoaXMuX2V2ZW50c3x8IXRoaXMuX2V2ZW50c1t0eXBlXSlyZXQ9W107ZWxzZSBpZihpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpcmV0PVt0aGlzLl9ldmVudHNbdHlwZV1dO2Vsc2UgcmV0PXRoaXMuX2V2ZW50c1t0eXBlXS5zbGljZSgpO3JldHVybiByZXR9O0V2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0eXBlKXtpZih0aGlzLl9ldmVudHMpe3ZhciBldmxpc3RlbmVyPXRoaXMuX2V2ZW50c1t0eXBlXTtpZihpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKXJldHVybiAxO2Vsc2UgaWYoZXZsaXN0ZW5lcilyZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGh9cmV0dXJuIDB9O0V2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKGVtaXR0ZXIsdHlwZSl7cmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKX07ZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpe3JldHVybiB0eXBlb2YgYXJnPT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBpc051bWJlcihhcmcpe3JldHVybiB0eXBlb2YgYXJnPT09Im51bWJlciJ9ZnVuY3Rpb24gaXNPYmplY3QoYXJnKXtyZXR1cm4gdHlwZW9mIGFyZz09PSJvYmplY3QiJiZhcmchPT1udWxsfWZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZyl7cmV0dXJuIGFyZz09PXZvaWQgMH19LHt9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9Q29sbGVjdGluZ0hhbmRsZXI7ZnVuY3Rpb24gQ29sbGVjdGluZ0hhbmRsZXIoY2JzKXt0aGlzLl9jYnM9Y2JzfHx7fTt0aGlzLmV2ZW50cz1bXX12YXIgRVZFTlRTPXJlcXVpcmUoIi4vIikuRVZFTlRTO09iamVjdC5rZXlzKEVWRU5UUykuZm9yRWFjaChmdW5jdGlvbihuYW1lKXtpZihFVkVOVFNbbmFtZV09PT0wKXtuYW1lPSJvbiIrbmFtZTtDb2xsZWN0aW5nSGFuZGxlci5wcm90b3R5cGVbbmFtZV09ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cy5wdXNoKFtuYW1lXSk7aWYodGhpcy5fY2JzW25hbWVdKXRoaXMuX2Nic1tuYW1lXSgpfX1lbHNlIGlmKEVWRU5UU1tuYW1lXT09PTEpe25hbWU9Im9uIituYW1lO0NvbGxlY3RpbmdIYW5kbGVyLnByb3RvdHlwZVtuYW1lXT1mdW5jdGlvbihhKXt0aGlzLmV2ZW50cy5wdXNoKFtuYW1lLGFdKTtpZih0aGlzLl9jYnNbbmFtZV0pdGhpcy5fY2JzW25hbWVdKGEpfX1lbHNlIGlmKEVWRU5UU1tuYW1lXT09PTIpe25hbWU9Im9uIituYW1lO0NvbGxlY3RpbmdIYW5kbGVyLnByb3RvdHlwZVtuYW1lXT1mdW5jdGlvbihhLGIpe3RoaXMuZXZlbnRzLnB1c2goW25hbWUsYSxiXSk7aWYodGhpcy5fY2JzW25hbWVdKXRoaXMuX2Nic1tuYW1lXShhLGIpfX1lbHNle3Rocm93IEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIil9fSk7Q29sbGVjdGluZ0hhbmRsZXIucHJvdG90eXBlLm9ucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cz1bXTtpZih0aGlzLl9jYnMub25yZXNldCl0aGlzLl9jYnMub25yZXNldCgpfTtDb2xsZWN0aW5nSGFuZGxlci5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe2lmKHRoaXMuX2Nicy5vbnJlc2V0KXRoaXMuX2Nicy5vbnJlc2V0KCk7Zm9yKHZhciBpPTAsbGVuPXRoaXMuZXZlbnRzLmxlbmd0aDtpPGxlbjtpKyspe2lmKHRoaXMuX2Nic1t0aGlzLmV2ZW50c1tpXVswXV0pe3ZhciBudW09dGhpcy5ldmVudHNbaV0ubGVuZ3RoO2lmKG51bT09PTEpe3RoaXMuX2Nic1t0aGlzLmV2ZW50c1tpXVswXV0oKX1lbHNlIGlmKG51bT09PTIpe3RoaXMuX2Nic1t0aGlzLmV2ZW50c1tpXVswXV0odGhpcy5ldmVudHNbaV1bMV0pfWVsc2V7dGhpcy5fY2JzW3RoaXMuZXZlbnRzW2ldWzBdXSh0aGlzLmV2ZW50c1tpXVsxXSx0aGlzLmV2ZW50c1tpXVsyXSl9fX19fSx7Ii4vIjozNn1dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgaW5kZXg9cmVxdWlyZSgiLi9pbmRleC5qcyIpLERvbUhhbmRsZXI9aW5kZXguRG9tSGFuZGxlcixEb21VdGlscz1pbmRleC5Eb21VdGlscztmdW5jdGlvbiBGZWVkSGFuZGxlcihjYWxsYmFjayxvcHRpb25zKXt0aGlzLmluaXQoY2FsbGJhY2ssb3B0aW9ucyl9cmVxdWlyZSgiaW5oZXJpdHMiKShGZWVkSGFuZGxlcixEb21IYW5kbGVyKTtGZWVkSGFuZGxlci5wcm90b3R5cGUuaW5pdD1Eb21IYW5kbGVyO2Z1bmN0aW9uIGdldEVsZW1lbnRzKHdoYXQsd2hlcmUpe3JldHVybiBEb21VdGlscy5nZXRFbGVtZW50c0J5VGFnTmFtZSh3aGF0LHdoZXJlLHRydWUpfWZ1bmN0aW9uIGdldE9uZUVsZW1lbnQod2hhdCx3aGVyZSl7cmV0dXJuIERvbVV0aWxzLmdldEVsZW1lbnRzQnlUYWdOYW1lKHdoYXQsd2hlcmUsdHJ1ZSwxKVswXX1mdW5jdGlvbiBmZXRjaCh3aGF0LHdoZXJlLHJlY3Vyc2Upe3JldHVybiBEb21VdGlscy5nZXRUZXh0KERvbVV0aWxzLmdldEVsZW1lbnRzQnlUYWdOYW1lKHdoYXQsd2hlcmUscmVjdXJzZSwxKSkudHJpbSgpfWZ1bmN0aW9uIGFkZENvbmRpdGlvbmFsbHkob2JqLHByb3Asd2hhdCx3aGVyZSxyZWN1cnNlKXt2YXIgdG1wPWZldGNoKHdoYXQsd2hlcmUscmVjdXJzZSk7aWYodG1wKW9ialtwcm9wXT10bXB9dmFyIGlzVmFsaWRGZWVkPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdmFsdWU9PT0icnNzInx8dmFsdWU9PT0iZmVlZCJ8fHZhbHVlPT09InJkZjpSREYifTtGZWVkSGFuZGxlci5wcm90b3R5cGUub25lbmQ9ZnVuY3Rpb24oKXt2YXIgZmVlZD17fSxmZWVkUm9vdD1nZXRPbmVFbGVtZW50KGlzVmFsaWRGZWVkLHRoaXMuZG9tKSx0bXAsY2hpbGRzO2lmKGZlZWRSb290KXtpZihmZWVkUm9vdC5uYW1lPT09ImZlZWQiKXtjaGlsZHM9ZmVlZFJvb3QuY2hpbGRyZW47ZmVlZC50eXBlPSJhdG9tIjthZGRDb25kaXRpb25hbGx5KGZlZWQsImlkIiwiaWQiLGNoaWxkcyk7YWRkQ29uZGl0aW9uYWxseShmZWVkLCJ0aXRsZSIsInRpdGxlIixjaGlsZHMpO2lmKCh0bXA9Z2V0T25lRWxlbWVudCgibGluayIsY2hpbGRzKSkmJih0bXA9dG1wLmF0dHJpYnMpJiYodG1wPXRtcC5ocmVmKSlmZWVkLmxpbms9dG1wO2FkZENvbmRpdGlvbmFsbHkoZmVlZCwiZGVzY3JpcHRpb24iLCJzdWJ0aXRsZSIsY2hpbGRzKTtpZih0bXA9ZmV0Y2goInVwZGF0ZWQiLGNoaWxkcykpZmVlZC51cGRhdGVkPW5ldyBEYXRlKHRtcCk7YWRkQ29uZGl0aW9uYWxseShmZWVkLCJhdXRob3IiLCJlbWFpbCIsY2hpbGRzLHRydWUpO2ZlZWQuaXRlbXM9Z2V0RWxlbWVudHMoImVudHJ5IixjaGlsZHMpLm1hcChmdW5jdGlvbihpdGVtKXt2YXIgZW50cnk9e30sdG1wO2l0ZW09aXRlbS5jaGlsZHJlbjthZGRDb25kaXRpb25hbGx5KGVudHJ5LCJpZCIsImlkIixpdGVtKTthZGRDb25kaXRpb25hbGx5KGVudHJ5LCJ0aXRsZSIsInRpdGxlIixpdGVtKTtpZigodG1wPWdldE9uZUVsZW1lbnQoImxpbmsiLGl0ZW0pKSYmKHRtcD10bXAuYXR0cmlicykmJih0bXA9dG1wLmhyZWYpKWVudHJ5Lmxpbms9dG1wO2lmKHRtcD1mZXRjaCgic3VtbWFyeSIsaXRlbSl8fGZldGNoKCJjb250ZW50IixpdGVtKSllbnRyeS5kZXNjcmlwdGlvbj10bXA7aWYodG1wPWZldGNoKCJ1cGRhdGVkIixpdGVtKSllbnRyeS5wdWJEYXRlPW5ldyBEYXRlKHRtcCk7cmV0dXJuIGVudHJ5fSl9ZWxzZXtjaGlsZHM9Z2V0T25lRWxlbWVudCgiY2hhbm5lbCIsZmVlZFJvb3QuY2hpbGRyZW4pLmNoaWxkcmVuO2ZlZWQudHlwZT1mZWVkUm9vdC5uYW1lLnN1YnN0cigwLDMpO2ZlZWQuaWQ9IiI7YWRkQ29uZGl0aW9uYWxseShmZWVkLCJ0aXRsZSIsInRpdGxlIixjaGlsZHMpO2FkZENvbmRpdGlvbmFsbHkoZmVlZCwibGluayIsImxpbmsiLGNoaWxkcyk7YWRkQ29uZGl0aW9uYWxseShmZWVkLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIixjaGlsZHMpO2lmKHRtcD1mZXRjaCgibGFzdEJ1aWxkRGF0ZSIsY2hpbGRzKSlmZWVkLnVwZGF0ZWQ9bmV3IERhdGUodG1wKTthZGRDb25kaXRpb25hbGx5KGZlZWQsImF1dGhvciIsIm1hbmFnaW5nRWRpdG9yIixjaGlsZHMsdHJ1ZSk7ZmVlZC5pdGVtcz1nZXRFbGVtZW50cygiaXRlbSIsZmVlZFJvb3QuY2hpbGRyZW4pLm1hcChmdW5jdGlvbihpdGVtKXt2YXIgZW50cnk9e30sdG1wO2l0ZW09aXRlbS5jaGlsZHJlbjthZGRDb25kaXRpb25hbGx5KGVudHJ5LCJpZCIsImd1aWQiLGl0ZW0pO2FkZENvbmRpdGlvbmFsbHkoZW50cnksInRpdGxlIiwidGl0bGUiLGl0ZW0pO2FkZENvbmRpdGlvbmFsbHkoZW50cnksImxpbmsiLCJsaW5rIixpdGVtKTthZGRDb25kaXRpb25hbGx5KGVudHJ5LCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIixpdGVtKTtpZih0bXA9ZmV0Y2goInB1YkRhdGUiLGl0ZW0pKWVudHJ5LnB1YkRhdGU9bmV3IERhdGUodG1wKTtyZXR1cm4gZW50cnl9KX19dGhpcy5kb209ZmVlZDtEb21IYW5kbGVyLnByb3RvdHlwZS5faGFuZGxlQ2FsbGJhY2suY2FsbCh0aGlzLGZlZWRSb290P251bGw6RXJyb3IoImNvdWxkbid0IGZpbmQgcm9vdCBvZiBmZWVkIikpfTttb2R1bGUuZXhwb3J0cz1GZWVkSGFuZGxlcn0seyIuL2luZGV4LmpzIjozNixpbmhlcml0czozOH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgVG9rZW5pemVyPXJlcXVpcmUoIi4vVG9rZW5pemVyLmpzIik7dmFyIGZvcm1UYWdzPXtpbnB1dDp0cnVlLG9wdGlvbjp0cnVlLG9wdGdyb3VwOnRydWUsc2VsZWN0OnRydWUsYnV0dG9uOnRydWUsZGF0YWxpc3Q6dHJ1ZSx0ZXh0YXJlYTp0cnVlfTt2YXIgb3BlbkltcGxpZXNDbG9zZT17dHI6e3RyOnRydWUsdGg6dHJ1ZSx0ZDp0cnVlfSx0aDp7dGg6dHJ1ZX0sdGQ6e3RoZWFkOnRydWUsdGg6dHJ1ZSx0ZDp0cnVlfSxib2R5OntoZWFkOnRydWUsbGluazp0cnVlLHNjcmlwdDp0cnVlfSxsaTp7bGk6dHJ1ZX0scDp7cDp0cnVlfSxoMTp7cDp0cnVlfSxoMjp7cDp0cnVlfSxoMzp7cDp0cnVlfSxoNDp7cDp0cnVlfSxoNTp7cDp0cnVlfSxoNjp7cDp0cnVlfSxzZWxlY3Q6Zm9ybVRhZ3MsaW5wdXQ6Zm9ybVRhZ3Msb3V0cHV0OmZvcm1UYWdzLGJ1dHRvbjpmb3JtVGFncyxkYXRhbGlzdDpmb3JtVGFncyx0ZXh0YXJlYTpmb3JtVGFncyxvcHRpb246e29wdGlvbjp0cnVlfSxvcHRncm91cDp7b3B0Z3JvdXA6dHJ1ZX19O3ZhciB2b2lkRWxlbWVudHM9e19fcHJvdG9fXzpudWxsLGFyZWE6dHJ1ZSxiYXNlOnRydWUsYmFzZWZvbnQ6dHJ1ZSxicjp0cnVlLGNvbDp0cnVlLGNvbW1hbmQ6dHJ1ZSxlbWJlZDp0cnVlLGZyYW1lOnRydWUsaHI6dHJ1ZSxpbWc6dHJ1ZSxpbnB1dDp0cnVlLGlzaW5kZXg6dHJ1ZSxrZXlnZW46dHJ1ZSxsaW5rOnRydWUsbWV0YTp0cnVlLHBhcmFtOnRydWUsc291cmNlOnRydWUsdHJhY2s6dHJ1ZSx3YnI6dHJ1ZSxwYXRoOnRydWUsY2lyY2xlOnRydWUsZWxsaXBzZTp0cnVlLGxpbmU6dHJ1ZSxyZWN0OnRydWUsdXNlOnRydWUsc3RvcDp0cnVlLHBvbHlsaW5lOnRydWUscG9seWdvbjp0cnVlfTt2YXIgcmVfbmFtZUVuZD0vXHN8XC8vO2Z1bmN0aW9uIFBhcnNlcihjYnMsb3B0aW9ucyl7dGhpcy5fb3B0aW9ucz1vcHRpb25zfHx7fTt0aGlzLl9jYnM9Y2JzfHx7fTt0aGlzLl90YWduYW1lPSIiO3RoaXMuX2F0dHJpYm5hbWU9IiI7dGhpcy5fYXR0cmlidmFsdWU9IiI7dGhpcy5fYXR0cmlicz1udWxsO3RoaXMuX3N0YWNrPVtdO3RoaXMuc3RhcnRJbmRleD0wO3RoaXMuZW5kSW5kZXg9bnVsbDt0aGlzLl9sb3dlckNhc2VUYWdOYW1lcz0ibG93ZXJDYXNlVGFncyJpbiB0aGlzLl9vcHRpb25zPyEhdGhpcy5fb3B0aW9ucy5sb3dlckNhc2VUYWdzOiF0aGlzLl9vcHRpb25zLnhtbE1vZGU7dGhpcy5fbG93ZXJDYXNlQXR0cmlidXRlTmFtZXM9Imxvd2VyQ2FzZUF0dHJpYnV0ZU5hbWVzImluIHRoaXMuX29wdGlvbnM/ISF0aGlzLl9vcHRpb25zLmxvd2VyQ2FzZUF0dHJpYnV0ZU5hbWVzOiF0aGlzLl9vcHRpb25zLnhtbE1vZGU7aWYodGhpcy5fb3B0aW9ucy5Ub2tlbml6ZXIpe1Rva2VuaXplcj10aGlzLl9vcHRpb25zLlRva2VuaXplcn10aGlzLl90b2tlbml6ZXI9bmV3IFRva2VuaXplcih0aGlzLl9vcHRpb25zLHRoaXMpO2lmKHRoaXMuX2Nicy5vbnBhcnNlcmluaXQpdGhpcy5fY2JzLm9ucGFyc2VyaW5pdCh0aGlzKX1yZXF1aXJlKCJpbmhlcml0cyIpKFBhcnNlcixyZXF1aXJlKCJldmVudHMiKS5FdmVudEVtaXR0ZXIpO1BhcnNlci5wcm90b3R5cGUuX3VwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKGluaXRpYWxPZmZzZXQpe2lmKHRoaXMuZW5kSW5kZXg9PT1udWxsKXtpZih0aGlzLl90b2tlbml6ZXIuX3NlY3Rpb25TdGFydDw9aW5pdGlhbE9mZnNldCl7dGhpcy5zdGFydEluZGV4PTB9ZWxzZXt0aGlzLnN0YXJ0SW5kZXg9dGhpcy5fdG9rZW5pemVyLl9zZWN0aW9uU3RhcnQtaW5pdGlhbE9mZnNldH19ZWxzZSB0aGlzLnN0YXJ0SW5kZXg9dGhpcy5lbmRJbmRleCsxO3RoaXMuZW5kSW5kZXg9dGhpcy5fdG9rZW5pemVyLmdldEFic29sdXRlSW5kZXgoKX07UGFyc2VyLnByb3RvdHlwZS5vbnRleHQ9ZnVuY3Rpb24oZGF0YSl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSk7dGhpcy5lbmRJbmRleC0tO2lmKHRoaXMuX2Nicy5vbnRleHQpdGhpcy5fY2JzLm9udGV4dChkYXRhKX07UGFyc2VyLnByb3RvdHlwZS5vbm9wZW50YWduYW1lPWZ1bmN0aW9uKG5hbWUpe2lmKHRoaXMuX2xvd2VyQ2FzZVRhZ05hbWVzKXtuYW1lPW5hbWUudG9Mb3dlckNhc2UoKX10aGlzLl90YWduYW1lPW5hbWU7aWYoIXRoaXMuX29wdGlvbnMueG1sTW9kZSYmbmFtZSBpbiBvcGVuSW1wbGllc0Nsb3NlKXtmb3IodmFyIGVsOyhlbD10aGlzLl9zdGFja1t0aGlzLl9zdGFjay5sZW5ndGgtMV0paW4gb3BlbkltcGxpZXNDbG9zZVtuYW1lXTt0aGlzLm9uY2xvc2V0YWcoZWwpKTt9aWYodGhpcy5fb3B0aW9ucy54bWxNb2RlfHwhKG5hbWUgaW4gdm9pZEVsZW1lbnRzKSl7dGhpcy5fc3RhY2sucHVzaChuYW1lKX1pZih0aGlzLl9jYnMub25vcGVudGFnbmFtZSl0aGlzLl9jYnMub25vcGVudGFnbmFtZShuYW1lKTtpZih0aGlzLl9jYnMub25vcGVudGFnKXRoaXMuX2F0dHJpYnM9e319O1BhcnNlci5wcm90b3R5cGUub25vcGVudGFnZW5kPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSk7aWYodGhpcy5fYXR0cmlicyl7aWYodGhpcy5fY2JzLm9ub3BlbnRhZyl0aGlzLl9jYnMub25vcGVudGFnKHRoaXMuX3RhZ25hbWUsdGhpcy5fYXR0cmlicyk7dGhpcy5fYXR0cmlicz1udWxsfWlmKCF0aGlzLl9vcHRpb25zLnhtbE1vZGUmJnRoaXMuX2Nicy5vbmNsb3NldGFnJiZ0aGlzLl90YWduYW1lIGluIHZvaWRFbGVtZW50cyl7dGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fdGFnbmFtZSl9dGhpcy5fdGFnbmFtZT0iIn07UGFyc2VyLnByb3RvdHlwZS5vbmNsb3NldGFnPWZ1bmN0aW9uKG5hbWUpe3RoaXMuX3VwZGF0ZVBvc2l0aW9uKDEpO2lmKHRoaXMuX2xvd2VyQ2FzZVRhZ05hbWVzKXtuYW1lPW5hbWUudG9Mb3dlckNhc2UoKX1pZih0aGlzLl9zdGFjay5sZW5ndGgmJighKG5hbWUgaW4gdm9pZEVsZW1lbnRzKXx8dGhpcy5fb3B0aW9ucy54bWxNb2RlKSl7dmFyIHBvcz10aGlzLl9zdGFjay5sYXN0SW5kZXhPZihuYW1lKTtpZihwb3MhPT0tMSl7aWYodGhpcy5fY2JzLm9uY2xvc2V0YWcpe3Bvcz10aGlzLl9zdGFjay5sZW5ndGgtcG9zO3doaWxlKHBvcy0tKXRoaXMuX2Nicy5vbmNsb3NldGFnKHRoaXMuX3N0YWNrLnBvcCgpKX1lbHNlIHRoaXMuX3N0YWNrLmxlbmd0aD1wb3N9ZWxzZSBpZihuYW1lPT09InAiJiYhdGhpcy5fb3B0aW9ucy54bWxNb2RlKXt0aGlzLm9ub3BlbnRhZ25hbWUobmFtZSk7dGhpcy5fY2xvc2VDdXJyZW50VGFnKCl9fWVsc2UgaWYoIXRoaXMuX29wdGlvbnMueG1sTW9kZSYmKG5hbWU9PT0iYnIifHxuYW1lPT09InAiKSl7dGhpcy5vbm9wZW50YWduYW1lKG5hbWUpO3RoaXMuX2Nsb3NlQ3VycmVudFRhZygpfX07UGFyc2VyLnByb3RvdHlwZS5vbnNlbGZjbG9zaW5ndGFnPWZ1bmN0aW9uKCl7aWYodGhpcy5fb3B0aW9ucy54bWxNb2RlfHx0aGlzLl9vcHRpb25zLnJlY29nbml6ZVNlbGZDbG9zaW5nKXt0aGlzLl9jbG9zZUN1cnJlbnRUYWcoKX1lbHNle3RoaXMub25vcGVudGFnZW5kKCl9fTtQYXJzZXIucHJvdG90eXBlLl9jbG9zZUN1cnJlbnRUYWc9ZnVuY3Rpb24oKXt2YXIgbmFtZT10aGlzLl90YWduYW1lO3RoaXMub25vcGVudGFnZW5kKCk7aWYodGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdPT09bmFtZSl7aWYodGhpcy5fY2JzLm9uY2xvc2V0YWcpe3RoaXMuX2Nicy5vbmNsb3NldGFnKG5hbWUpfXRoaXMuX3N0YWNrLnBvcCgpfX07UGFyc2VyLnByb3RvdHlwZS5vbmF0dHJpYm5hbWU9ZnVuY3Rpb24obmFtZSl7aWYodGhpcy5fbG93ZXJDYXNlQXR0cmlidXRlTmFtZXMpe25hbWU9bmFtZS50b0xvd2VyQ2FzZSgpfXRoaXMuX2F0dHJpYm5hbWU9bmFtZX07UGFyc2VyLnByb3RvdHlwZS5vbmF0dHJpYmRhdGE9ZnVuY3Rpb24odmFsdWUpe3RoaXMuX2F0dHJpYnZhbHVlKz12YWx1ZX07UGFyc2VyLnByb3RvdHlwZS5vbmF0dHJpYmVuZD1mdW5jdGlvbigpe2lmKHRoaXMuX2Nicy5vbmF0dHJpYnV0ZSl0aGlzLl9jYnMub25hdHRyaWJ1dGUodGhpcy5fYXR0cmlibmFtZSx0aGlzLl9hdHRyaWJ2YWx1ZSk7aWYodGhpcy5fYXR0cmlicyYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9hdHRyaWJzLHRoaXMuX2F0dHJpYm5hbWUpKXt0aGlzLl9hdHRyaWJzW3RoaXMuX2F0dHJpYm5hbWVdPXRoaXMuX2F0dHJpYnZhbHVlfXRoaXMuX2F0dHJpYm5hbWU9IiI7dGhpcy5fYXR0cmlidmFsdWU9IiJ9O1BhcnNlci5wcm90b3R5cGUuX2dldEluc3RydWN0aW9uTmFtZT1mdW5jdGlvbih2YWx1ZSl7dmFyIGlkeD12YWx1ZS5zZWFyY2gocmVfbmFtZUVuZCksbmFtZT1pZHg8MD92YWx1ZTp2YWx1ZS5zdWJzdHIoMCxpZHgpO2lmKHRoaXMuX2xvd2VyQ2FzZVRhZ05hbWVzKXtuYW1lPW5hbWUudG9Mb3dlckNhc2UoKX1yZXR1cm4gbmFtZX07UGFyc2VyLnByb3RvdHlwZS5vbmRlY2xhcmF0aW9uPWZ1bmN0aW9uKHZhbHVlKXtpZih0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24pe3ZhciBuYW1lPXRoaXMuX2dldEluc3RydWN0aW9uTmFtZSh2YWx1ZSk7dGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKCIhIituYW1lLCIhIit2YWx1ZSl9fTtQYXJzZXIucHJvdG90eXBlLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uPWZ1bmN0aW9uKHZhbHVlKXtpZih0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24pe3ZhciBuYW1lPXRoaXMuX2dldEluc3RydWN0aW9uTmFtZSh2YWx1ZSk7dGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKCI/IituYW1lLCI/Iit2YWx1ZSl9fTtQYXJzZXIucHJvdG90eXBlLm9uY29tbWVudD1mdW5jdGlvbih2YWx1ZSl7dGhpcy5fdXBkYXRlUG9zaXRpb24oNCk7aWYodGhpcy5fY2JzLm9uY29tbWVudCl0aGlzLl9jYnMub25jb21tZW50KHZhbHVlKTtpZih0aGlzLl9jYnMub25jb21tZW50ZW5kKXRoaXMuX2Nicy5vbmNvbW1lbnRlbmQoKX07UGFyc2VyLnByb3RvdHlwZS5vbmNkYXRhPWZ1bmN0aW9uKHZhbHVlKXt0aGlzLl91cGRhdGVQb3NpdGlvbigxKTtpZih0aGlzLl9vcHRpb25zLnhtbE1vZGV8fHRoaXMuX29wdGlvbnMucmVjb2duaXplQ0RBVEEpe2lmKHRoaXMuX2Nicy5vbmNkYXRhc3RhcnQpdGhpcy5fY2JzLm9uY2RhdGFzdGFydCgpO2lmKHRoaXMuX2Nicy5vbnRleHQpdGhpcy5fY2JzLm9udGV4dCh2YWx1ZSk7aWYodGhpcy5fY2JzLm9uY2RhdGFlbmQpdGhpcy5fY2JzLm9uY2RhdGFlbmQoKX1lbHNle3RoaXMub25jb21tZW50KCJbQ0RBVEFbIit2YWx1ZSsiXV0iKX19O1BhcnNlci5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbihlcnIpe2lmKHRoaXMuX2Nicy5vbmVycm9yKXRoaXMuX2Nicy5vbmVycm9yKGVycil9O1BhcnNlci5wcm90b3R5cGUub25lbmQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9jYnMub25jbG9zZXRhZyl7Zm9yKHZhciBpPXRoaXMuX3N0YWNrLmxlbmd0aDtpPjA7dGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fc3RhY2tbLS1pXSkpO31pZih0aGlzLl9jYnMub25lbmQpdGhpcy5fY2JzLm9uZW5kKCl9O1BhcnNlci5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9jYnMub25yZXNldCl0aGlzLl9jYnMub25yZXNldCgpO3RoaXMuX3Rva2VuaXplci5yZXNldCgpO3RoaXMuX3RhZ25hbWU9IiI7dGhpcy5fYXR0cmlibmFtZT0iIjt0aGlzLl9hdHRyaWJzPW51bGw7dGhpcy5fc3RhY2s9W107aWYodGhpcy5fY2JzLm9ucGFyc2VyaW5pdCl0aGlzLl9jYnMub25wYXJzZXJpbml0KHRoaXMpfTtQYXJzZXIucHJvdG90eXBlLnBhcnNlQ29tcGxldGU9ZnVuY3Rpb24oZGF0YSl7dGhpcy5yZXNldCgpO3RoaXMuZW5kKGRhdGEpfTtQYXJzZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGNodW5rKXt0aGlzLl90b2tlbml6ZXIud3JpdGUoY2h1bmspfTtQYXJzZXIucHJvdG90eXBlLmVuZD1mdW5jdGlvbihjaHVuayl7dGhpcy5fdG9rZW5pemVyLmVuZChjaHVuayl9O1BhcnNlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLl90b2tlbml6ZXIucGF1c2UoKX07UGFyc2VyLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt0aGlzLl90b2tlbml6ZXIucmVzdW1lKCl9O1BhcnNlci5wcm90b3R5cGUucGFyc2VDaHVuaz1QYXJzZXIucHJvdG90eXBlLndyaXRlO1BhcnNlci5wcm90b3R5cGUuZG9uZT1QYXJzZXIucHJvdG90eXBlLmVuZDttb2R1bGUuZXhwb3J0cz1QYXJzZXJ9LHsiLi9Ub2tlbml6ZXIuanMiOjM0LGV2ZW50czoyOCxpbmhlcml0czozOH1dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz1Qcm94eUhhbmRsZXI7ZnVuY3Rpb24gUHJveHlIYW5kbGVyKGNicyl7dGhpcy5fY2JzPWNic3x8e319dmFyIEVWRU5UUz1yZXF1aXJlKCIuLyIpLkVWRU5UUztPYmplY3Qua2V5cyhFVkVOVFMpLmZvckVhY2goZnVuY3Rpb24obmFtZSl7aWYoRVZFTlRTW25hbWVdPT09MCl7bmFtZT0ib24iK25hbWU7UHJveHlIYW5kbGVyLnByb3RvdHlwZVtuYW1lXT1mdW5jdGlvbigpe2lmKHRoaXMuX2Nic1tuYW1lXSl0aGlzLl9jYnNbbmFtZV0oKX19ZWxzZSBpZihFVkVOVFNbbmFtZV09PT0xKXtuYW1lPSJvbiIrbmFtZTtQcm94eUhhbmRsZXIucHJvdG90eXBlW25hbWVdPWZ1bmN0aW9uKGEpe2lmKHRoaXMuX2Nic1tuYW1lXSl0aGlzLl9jYnNbbmFtZV0oYSl9fWVsc2UgaWYoRVZFTlRTW25hbWVdPT09Mil7bmFtZT0ib24iK25hbWU7UHJveHlIYW5kbGVyLnByb3RvdHlwZVtuYW1lXT1mdW5jdGlvbihhLGIpe2lmKHRoaXMuX2Nic1tuYW1lXSl0aGlzLl9jYnNbbmFtZV0oYSxiKX19ZWxzZXt0aHJvdyBFcnJvcigid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyIpfX0pfSx7Ii4vIjozNn1dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz1TdHJlYW07dmFyIFBhcnNlcj1yZXF1aXJlKCIuL1dyaXRhYmxlU3RyZWFtLmpzIik7ZnVuY3Rpb24gU3RyZWFtKG9wdGlvbnMpe1BhcnNlci5jYWxsKHRoaXMsbmV3IENicyh0aGlzKSxvcHRpb25zKX1yZXF1aXJlKCJpbmhlcml0cyIpKFN0cmVhbSxQYXJzZXIpO1N0cmVhbS5wcm90b3R5cGUucmVhZGFibGU9dHJ1ZTtmdW5jdGlvbiBDYnMoc2NvcGUpe3RoaXMuc2NvcGU9c2NvcGV9dmFyIEVWRU5UUz1yZXF1aXJlKCIuLi8iKS5FVkVOVFM7T2JqZWN0LmtleXMoRVZFTlRTKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpe2lmKEVWRU5UU1tuYW1lXT09PTApe0Nicy5wcm90b3R5cGVbIm9uIituYW1lXT1mdW5jdGlvbigpe3RoaXMuc2NvcGUuZW1pdChuYW1lKX19ZWxzZSBpZihFVkVOVFNbbmFtZV09PT0xKXtDYnMucHJvdG90eXBlWyJvbiIrbmFtZV09ZnVuY3Rpb24oYSl7dGhpcy5zY29wZS5lbWl0KG5hbWUsYSl9fWVsc2UgaWYoRVZFTlRTW25hbWVdPT09Mil7Q2JzLnByb3RvdHlwZVsib24iK25hbWVdPWZ1bmN0aW9uKGEsYil7dGhpcy5zY29wZS5lbWl0KG5hbWUsYSxiKX19ZWxzZXt0aHJvdyBFcnJvcigid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyEiKX19KX0seyIuLi8iOjM2LCIuL1dyaXRhYmxlU3RyZWFtLmpzIjozNSxpbmhlcml0czozOH1dLDM0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz1Ub2tlbml6ZXI7dmFyIGRlY29kZUNvZGVQb2ludD1yZXF1aXJlKCJlbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC5qcyIpLGVudGl0eU1hcD1yZXF1aXJlKCJlbnRpdGllcy9tYXBzL2VudGl0aWVzLmpzb24iKSxsZWdhY3lNYXA9cmVxdWlyZSgiZW50aXRpZXMvbWFwcy9sZWdhY3kuanNvbiIpLHhtbE1hcD1yZXF1aXJlKCJlbnRpdGllcy9tYXBzL3htbC5qc29uIiksaT0wLFRFWFQ9aSsrLEJFRk9SRV9UQUdfTkFNRT1pKyssSU5fVEFHX05BTUU9aSsrLElOX1NFTEZfQ0xPU0lOR19UQUc9aSsrLEJFRk9SRV9DTE9TSU5HX1RBR19OQU1FPWkrKyxJTl9DTE9TSU5HX1RBR19OQU1FPWkrKyxBRlRFUl9DTE9TSU5HX1RBR19OQU1FPWkrKyxCRUZPUkVfQVRUUklCVVRFX05BTUU9aSsrLElOX0FUVFJJQlVURV9OQU1FPWkrKyxBRlRFUl9BVFRSSUJVVEVfTkFNRT1pKyssQkVGT1JFX0FUVFJJQlVURV9WQUxVRT1pKyssSU5fQVRUUklCVVRFX1ZBTFVFX0RRPWkrKyxJTl9BVFRSSUJVVEVfVkFMVUVfU1E9aSsrLElOX0FUVFJJQlVURV9WQUxVRV9OUT1pKyssQkVGT1JFX0RFQ0xBUkFUSU9OPWkrKyxJTl9ERUNMQVJBVElPTj1pKyssSU5fUFJPQ0VTU0lOR19JTlNUUlVDVElPTj1pKyssQkVGT1JFX0NPTU1FTlQ9aSsrLElOX0NPTU1FTlQ9aSsrLEFGVEVSX0NPTU1FTlRfMT1pKyssQUZURVJfQ09NTUVOVF8yPWkrKyxCRUZPUkVfQ0RBVEFfMT1pKyssQkVGT1JFX0NEQVRBXzI9aSsrLEJFRk9SRV9DREFUQV8zPWkrKyxCRUZPUkVfQ0RBVEFfND1pKyssQkVGT1JFX0NEQVRBXzU9aSsrLEJFRk9SRV9DREFUQV82PWkrKyxJTl9DREFUQT1pKyssQUZURVJfQ0RBVEFfMT1pKyssQUZURVJfQ0RBVEFfMj1pKyssQkVGT1JFX1NQRUNJQUw9aSsrLEJFRk9SRV9TUEVDSUFMX0VORD1pKyssQkVGT1JFX1NDUklQVF8xPWkrKyxCRUZPUkVfU0NSSVBUXzI9aSsrLEJFRk9SRV9TQ1JJUFRfMz1pKyssQkVGT1JFX1NDUklQVF80PWkrKyxCRUZPUkVfU0NSSVBUXzU9aSsrLEFGVEVSX1NDUklQVF8xPWkrKyxBRlRFUl9TQ1JJUFRfMj1pKyssQUZURVJfU0NSSVBUXzM9aSsrLEFGVEVSX1NDUklQVF80PWkrKyxBRlRFUl9TQ1JJUFRfNT1pKyssQkVGT1JFX1NUWUxFXzE9aSsrLEJFRk9SRV9TVFlMRV8yPWkrKyxCRUZPUkVfU1RZTEVfMz1pKyssQkVGT1JFX1NUWUxFXzQ9aSsrLEFGVEVSX1NUWUxFXzE9aSsrLEFGVEVSX1NUWUxFXzI9aSsrLEFGVEVSX1NUWUxFXzM9aSsrLEFGVEVSX1NUWUxFXzQ9aSsrLEJFRk9SRV9FTlRJVFk9aSsrLEJFRk9SRV9OVU1FUklDX0VOVElUWT1pKyssSU5fTkFNRURfRU5USVRZPWkrKyxJTl9OVU1FUklDX0VOVElUWT1pKyssSU5fSEVYX0VOVElUWT1pKyssaj0wLFNQRUNJQUxfTk9ORT1qKyssU1BFQ0lBTF9TQ1JJUFQ9aisrLFNQRUNJQUxfU1RZTEU9aisrO2Z1bmN0aW9uIHdoaXRlc3BhY2UoYyl7cmV0dXJuIGM9PT0iICJ8fGM9PT0iXG4ifHxjPT09Ilx0Inx8Yz09PSJcZiJ8fGM9PT0iXHIifWZ1bmN0aW9uIGNoYXJhY3RlclN0YXRlKGNoYXIsU1VDQ0VTUyl7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKGM9PT1jaGFyKXRoaXMuX3N0YXRlPVNVQ0NFU1N9fWZ1bmN0aW9uIGlmRWxzZVN0YXRlKHVwcGVyLFNVQ0NFU1MsRkFJTFVSRSl7dmFyIGxvd2VyPXVwcGVyLnRvTG93ZXJDYXNlKCk7aWYodXBwZXI9PT1sb3dlcil7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKGM9PT1sb3dlcil7dGhpcy5fc3RhdGU9U1VDQ0VTU31lbHNle3RoaXMuX3N0YXRlPUZBSUxVUkU7dGhpcy5faW5kZXgtLX19fWVsc2V7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKGM9PT1sb3dlcnx8Yz09PXVwcGVyKXt0aGlzLl9zdGF0ZT1TVUNDRVNTfWVsc2V7dGhpcy5fc3RhdGU9RkFJTFVSRTt0aGlzLl9pbmRleC0tfX19fWZ1bmN0aW9uIGNvbnN1bWVTcGVjaWFsTmFtZUNoYXIodXBwZXIsTkVYVF9TVEFURSl7dmFyIGxvd2VyPXVwcGVyLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKGM9PT1sb3dlcnx8Yz09PXVwcGVyKXt0aGlzLl9zdGF0ZT1ORVhUX1NUQVRFfWVsc2V7dGhpcy5fc3RhdGU9SU5fVEFHX05BTUU7dGhpcy5faW5kZXgtLX19fWZ1bmN0aW9uIFRva2VuaXplcihvcHRpb25zLGNicyl7dGhpcy5fc3RhdGU9VEVYVDt0aGlzLl9idWZmZXI9IiI7dGhpcy5fc2VjdGlvblN0YXJ0PTA7dGhpcy5faW5kZXg9MDt0aGlzLl9idWZmZXJPZmZzZXQ9MDt0aGlzLl9iYXNlU3RhdGU9VEVYVDt0aGlzLl9zcGVjaWFsPVNQRUNJQUxfTk9ORTt0aGlzLl9jYnM9Y2JzO3RoaXMuX3J1bm5pbmc9dHJ1ZTt0aGlzLl9lbmRlZD1mYWxzZTt0aGlzLl94bWxNb2RlPSEhKG9wdGlvbnMmJm9wdGlvbnMueG1sTW9kZSk7dGhpcy5fZGVjb2RlRW50aXRpZXM9ISEob3B0aW9ucyYmb3B0aW9ucy5kZWNvZGVFbnRpdGllcyl9VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVUZXh0PWZ1bmN0aW9uKGMpe2lmKGM9PT0iPCIpe2lmKHRoaXMuX2luZGV4PnRoaXMuX3NlY3Rpb25TdGFydCl7dGhpcy5fY2JzLm9udGV4dCh0aGlzLl9nZXRTZWN0aW9uKCkpfXRoaXMuX3N0YXRlPUJFRk9SRV9UQUdfTkFNRTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXh9ZWxzZSBpZih0aGlzLl9kZWNvZGVFbnRpdGllcyYmdGhpcy5fc3BlY2lhbD09PVNQRUNJQUxfTk9ORSYmYz09PSImIil7aWYodGhpcy5faW5kZXg+dGhpcy5fc2VjdGlvblN0YXJ0KXt0aGlzLl9jYnMub250ZXh0KHRoaXMuX2dldFNlY3Rpb24oKSl9dGhpcy5fYmFzZVN0YXRlPVRFWFQ7dGhpcy5fc3RhdGU9QkVGT1JFX0VOVElUWTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXh9fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVRhZ05hbWU9ZnVuY3Rpb24oYyl7aWYoYz09PSIvIil7dGhpcy5fc3RhdGU9QkVGT1JFX0NMT1NJTkdfVEFHX05BTUV9ZWxzZSBpZihjPT09IjwiKXt0aGlzLl9jYnMub250ZXh0KHRoaXMuX2dldFNlY3Rpb24oKSk7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4fWVsc2UgaWYoYz09PSI+Inx8dGhpcy5fc3BlY2lhbCE9PVNQRUNJQUxfTk9ORXx8d2hpdGVzcGFjZShjKSl7dGhpcy5fc3RhdGU9VEVYVH1lbHNlIGlmKGM9PT0iISIpe3RoaXMuX3N0YXRlPUJFRk9SRV9ERUNMQVJBVElPTjt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMX1lbHNlIGlmKGM9PT0iPyIpe3RoaXMuX3N0YXRlPUlOX1BST0NFU1NJTkdfSU5TVFJVQ1RJT047dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZXt0aGlzLl9zdGF0ZT0hdGhpcy5feG1sTW9kZSYmKGM9PT0icyJ8fGM9PT0iUyIpP0JFRk9SRV9TUEVDSUFMOklOX1RBR19OQU1FO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleH19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlSW5UYWdOYW1lPWZ1bmN0aW9uKGMpe2lmKGM9PT0iLyJ8fGM9PT0iPiJ8fHdoaXRlc3BhY2UoYykpe3RoaXMuX2VtaXRUb2tlbigib25vcGVudGFnbmFtZSIpO3RoaXMuX3N0YXRlPUJFRk9SRV9BVFRSSUJVVEVfTkFNRTt0aGlzLl9pbmRleC0tfX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDbG9zZWluZ1RhZ05hbWU9ZnVuY3Rpb24oYyl7aWYod2hpdGVzcGFjZShjKSk7ZWxzZSBpZihjPT09Ij4iKXt0aGlzLl9zdGF0ZT1URVhUfWVsc2UgaWYodGhpcy5fc3BlY2lhbCE9PVNQRUNJQUxfTk9ORSl7aWYoYz09PSJzInx8Yz09PSJTIil7dGhpcy5fc3RhdGU9QkVGT1JFX1NQRUNJQUxfRU5EfWVsc2V7dGhpcy5fc3RhdGU9VEVYVDt0aGlzLl9pbmRleC0tfX1lbHNle3RoaXMuX3N0YXRlPUlOX0NMT1NJTkdfVEFHX05BTUU7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4fX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVJbkNsb3NlaW5nVGFnTmFtZT1mdW5jdGlvbihjKXtpZihjPT09Ij4ifHx3aGl0ZXNwYWNlKGMpKXt0aGlzLl9lbWl0VG9rZW4oIm9uY2xvc2V0YWciKTt0aGlzLl9zdGF0ZT1BRlRFUl9DTE9TSU5HX1RBR19OQU1FO3RoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ2xvc2VpbmdUYWdOYW1lPWZ1bmN0aW9uKGMpe2lmKGM9PT0iPiIpe3RoaXMuX3N0YXRlPVRFWFQ7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZU5hbWU9ZnVuY3Rpb24oYyl7aWYoYz09PSI+Iil7dGhpcy5fY2JzLm9ub3BlbnRhZ2VuZCgpO3RoaXMuX3N0YXRlPVRFWFQ7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZSBpZihjPT09Ii8iKXt0aGlzLl9zdGF0ZT1JTl9TRUxGX0NMT1NJTkdfVEFHfWVsc2UgaWYoIXdoaXRlc3BhY2UoYykpe3RoaXMuX3N0YXRlPUlOX0FUVFJJQlVURV9OQU1FO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleH19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlSW5TZWxmQ2xvc2luZ1RhZz1mdW5jdGlvbihjKXtpZihjPT09Ij4iKXt0aGlzLl9jYnMub25zZWxmY2xvc2luZ3RhZygpO3RoaXMuX3N0YXRlPVRFWFQ7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZSBpZighd2hpdGVzcGFjZShjKSl7dGhpcy5fc3RhdGU9QkVGT1JFX0FUVFJJQlVURV9OQU1FO3RoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlTmFtZT1mdW5jdGlvbihjKXtpZihjPT09Ij0ifHxjPT09Ii8ifHxjPT09Ij4ifHx3aGl0ZXNwYWNlKGMpKXt0aGlzLl9jYnMub25hdHRyaWJuYW1lKHRoaXMuX2dldFNlY3Rpb24oKSk7dGhpcy5fc2VjdGlvblN0YXJ0PS0xO3RoaXMuX3N0YXRlPUFGVEVSX0FUVFJJQlVURV9OQU1FO3RoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZT1mdW5jdGlvbihjKXtpZihjPT09Ij0iKXt0aGlzLl9zdGF0ZT1CRUZPUkVfQVRUUklCVVRFX1ZBTFVFfWVsc2UgaWYoYz09PSIvInx8Yz09PSI+Iil7dGhpcy5fY2JzLm9uYXR0cmliZW5kKCk7dGhpcy5fc3RhdGU9QkVGT1JFX0FUVFJJQlVURV9OQU1FO3RoaXMuX2luZGV4LS19ZWxzZSBpZighd2hpdGVzcGFjZShjKSl7dGhpcy5fY2JzLm9uYXR0cmliZW5kKCk7dGhpcy5fc3RhdGU9SU5fQVRUUklCVVRFX05BTUU7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4fX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihjKXtpZihjPT09JyInKXt0aGlzLl9zdGF0ZT1JTl9BVFRSSUJVVEVfVkFMVUVfRFE7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZSBpZihjPT09IiciKXt0aGlzLl9zdGF0ZT1JTl9BVFRSSUJVVEVfVkFMVUVfU1E7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZSBpZighd2hpdGVzcGFjZShjKSl7dGhpcy5fc3RhdGU9SU5fQVRUUklCVVRFX1ZBTFVFX05RO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleDt0aGlzLl9pbmRleC0tfX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVzPWZ1bmN0aW9uKGMpe2lmKGM9PT0nIicpe3RoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIik7dGhpcy5fY2JzLm9uYXR0cmliZW5kKCk7dGhpcy5fc3RhdGU9QkVGT1JFX0FUVFJJQlVURV9OQU1FfWVsc2UgaWYodGhpcy5fZGVjb2RlRW50aXRpZXMmJmM9PT0iJiIpe3RoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIik7dGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlO3RoaXMuX3N0YXRlPUJFRk9SRV9FTlRJVFk7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4fX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVzPWZ1bmN0aW9uKGMpe2lmKGM9PT0iJyIpe3RoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIik7dGhpcy5fY2JzLm9uYXR0cmliZW5kKCk7dGhpcy5fc3RhdGU9QkVGT1JFX0FUVFJJQlVURV9OQU1FfWVsc2UgaWYodGhpcy5fZGVjb2RlRW50aXRpZXMmJmM9PT0iJiIpe3RoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIik7dGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlO3RoaXMuX3N0YXRlPUJFRk9SRV9FTlRJVFk7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4fX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlTm9RdW90ZXM9ZnVuY3Rpb24oYyl7aWYod2hpdGVzcGFjZShjKXx8Yz09PSI+Iil7dGhpcy5fZW1pdFRva2VuKCJvbmF0dHJpYmRhdGEiKTt0aGlzLl9jYnMub25hdHRyaWJlbmQoKTt0aGlzLl9zdGF0ZT1CRUZPUkVfQVRUUklCVVRFX05BTUU7dGhpcy5faW5kZXgtLX1lbHNlIGlmKHRoaXMuX2RlY29kZUVudGl0aWVzJiZjPT09IiYiKXt0aGlzLl9lbWl0VG9rZW4oIm9uYXR0cmliZGF0YSIpO3RoaXMuX2Jhc2VTdGF0ZT10aGlzLl9zdGF0ZTt0aGlzLl9zdGF0ZT1CRUZPUkVfRU5USVRZO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleH19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQmVmb3JlRGVjbGFyYXRpb249ZnVuY3Rpb24oYyl7dGhpcy5fc3RhdGU9Yz09PSJbIj9CRUZPUkVfQ0RBVEFfMTpjPT09Ii0iP0JFRk9SRV9DT01NRU5UOklOX0RFQ0xBUkFUSU9OfTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUluRGVjbGFyYXRpb249ZnVuY3Rpb24oYyl7aWYoYz09PSI+Iil7dGhpcy5fY2JzLm9uZGVjbGFyYXRpb24odGhpcy5fZ2V0U2VjdGlvbigpKTt0aGlzLl9zdGF0ZT1URVhUO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxfX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVJblByb2Nlc3NpbmdJbnN0cnVjdGlvbj1mdW5jdGlvbihjKXtpZihjPT09Ij4iKXt0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24odGhpcy5fZ2V0U2VjdGlvbigpKTt0aGlzLl9zdGF0ZT1URVhUO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxfX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDb21tZW50PWZ1bmN0aW9uKGMpe2lmKGM9PT0iLSIpe3RoaXMuX3N0YXRlPUlOX0NPTU1FTlQ7dGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzF9ZWxzZXt0aGlzLl9zdGF0ZT1JTl9ERUNMQVJBVElPTn19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlSW5Db21tZW50PWZ1bmN0aW9uKGMpe2lmKGM9PT0iLSIpdGhpcy5fc3RhdGU9QUZURVJfQ09NTUVOVF8xfTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ29tbWVudDE9ZnVuY3Rpb24oYyl7aWYoYz09PSItIil7dGhpcy5fc3RhdGU9QUZURVJfQ09NTUVOVF8yfWVsc2V7dGhpcy5fc3RhdGU9SU5fQ09NTUVOVH19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJDb21tZW50Mj1mdW5jdGlvbihjKXtpZihjPT09Ij4iKXt0aGlzLl9jYnMub25jb21tZW50KHRoaXMuX2J1ZmZlci5zdWJzdHJpbmcodGhpcy5fc2VjdGlvblN0YXJ0LHRoaXMuX2luZGV4LTIpKTt0aGlzLl9zdGF0ZT1URVhUO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxfWVsc2UgaWYoYyE9PSItIil7dGhpcy5fc3RhdGU9SU5fQ09NTUVOVH19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGExPWlmRWxzZVN0YXRlKCJDIixCRUZPUkVfQ0RBVEFfMixJTl9ERUNMQVJBVElPTik7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTI9aWZFbHNlU3RhdGUoIkQiLEJFRk9SRV9DREFUQV8zLElOX0RFQ0xBUkFUSU9OKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUNkYXRhMz1pZkVsc2VTdGF0ZSgiQSIsQkVGT1JFX0NEQVRBXzQsSU5fREVDTEFSQVRJT04pO1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQmVmb3JlQ2RhdGE0PWlmRWxzZVN0YXRlKCJUIixCRUZPUkVfQ0RBVEFfNSxJTl9ERUNMQVJBVElPTik7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTU9aWZFbHNlU3RhdGUoIkEiLEJFRk9SRV9DREFUQV82LElOX0RFQ0xBUkFUSU9OKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUNkYXRhNj1mdW5jdGlvbihjKXtpZihjPT09IlsiKXt0aGlzLl9zdGF0ZT1JTl9DREFUQTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMX1lbHNle3RoaXMuX3N0YXRlPUlOX0RFQ0xBUkFUSU9OO3RoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUluQ2RhdGE9ZnVuY3Rpb24oYyl7aWYoYz09PSJdIil0aGlzLl9zdGF0ZT1BRlRFUl9DREFUQV8xfTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ2RhdGExPWNoYXJhY3RlclN0YXRlKCJdIixBRlRFUl9DREFUQV8yKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ2RhdGEyPWZ1bmN0aW9uKGMpe2lmKGM9PT0iPiIpe3RoaXMuX2Nicy5vbmNkYXRhKHRoaXMuX2J1ZmZlci5zdWJzdHJpbmcodGhpcy5fc2VjdGlvblN0YXJ0LHRoaXMuX2luZGV4LTIpKTt0aGlzLl9zdGF0ZT1URVhUO3RoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxfWVsc2UgaWYoYyE9PSJdIil7dGhpcy5fc3RhdGU9SU5fQ0RBVEF9fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNwZWNpYWw9ZnVuY3Rpb24oYyl7aWYoYz09PSJjInx8Yz09PSJDIil7dGhpcy5fc3RhdGU9QkVGT1JFX1NDUklQVF8xfWVsc2UgaWYoYz09PSJ0Inx8Yz09PSJUIil7dGhpcy5fc3RhdGU9QkVGT1JFX1NUWUxFXzF9ZWxzZXt0aGlzLl9zdGF0ZT1JTl9UQUdfTkFNRTt0aGlzLl9pbmRleC0tfX07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTcGVjaWFsRW5kPWZ1bmN0aW9uKGMpe2lmKHRoaXMuX3NwZWNpYWw9PT1TUEVDSUFMX1NDUklQVCYmKGM9PT0iYyJ8fGM9PT0iQyIpKXt0aGlzLl9zdGF0ZT1BRlRFUl9TQ1JJUFRfMX1lbHNlIGlmKHRoaXMuX3NwZWNpYWw9PT1TUEVDSUFMX1NUWUxFJiYoYz09PSJ0Inx8Yz09PSJUIikpe3RoaXMuX3N0YXRlPUFGVEVSX1NUWUxFXzF9ZWxzZSB0aGlzLl9zdGF0ZT1URVhUfTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDE9Y29uc3VtZVNwZWNpYWxOYW1lQ2hhcigiUiIsQkVGT1JFX1NDUklQVF8yKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDI9Y29uc3VtZVNwZWNpYWxOYW1lQ2hhcigiSSIsQkVGT1JFX1NDUklQVF8zKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDM9Y29uc3VtZVNwZWNpYWxOYW1lQ2hhcigiUCIsQkVGT1JFX1NDUklQVF80KTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDQ9Y29uc3VtZVNwZWNpYWxOYW1lQ2hhcigiVCIsQkVGT1JFX1NDUklQVF81KTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDU9ZnVuY3Rpb24oYyl7aWYoYz09PSIvInx8Yz09PSI+Inx8d2hpdGVzcGFjZShjKSl7dGhpcy5fc3BlY2lhbD1TUEVDSUFMX1NDUklQVH10aGlzLl9zdGF0ZT1JTl9UQUdfTkFNRTt0aGlzLl9pbmRleC0tfTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyU2NyaXB0MT1pZkVsc2VTdGF0ZSgiUiIsQUZURVJfU0NSSVBUXzIsVEVYVCk7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDI9aWZFbHNlU3RhdGUoIkkiLEFGVEVSX1NDUklQVF8zLFRFWFQpO1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQzPWlmRWxzZVN0YXRlKCJQIixBRlRFUl9TQ1JJUFRfNCxURVhUKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyU2NyaXB0ND1pZkVsc2VTdGF0ZSgiVCIsQUZURVJfU0NSSVBUXzUsVEVYVCk7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDU9ZnVuY3Rpb24oYyl7aWYoYz09PSI+Inx8d2hpdGVzcGFjZShjKSl7dGhpcy5fc3BlY2lhbD1TUEVDSUFMX05PTkU7dGhpcy5fc3RhdGU9SU5fQ0xPU0lOR19UQUdfTkFNRTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgtNjt0aGlzLl9pbmRleC0tfWVsc2UgdGhpcy5fc3RhdGU9VEVYVH07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTdHlsZTE9Y29uc3VtZVNwZWNpYWxOYW1lQ2hhcigiWSIsQkVGT1JFX1NUWUxFXzIpO1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3R5bGUyPWNvbnN1bWVTcGVjaWFsTmFtZUNoYXIoIkwiLEJFRk9SRV9TVFlMRV8zKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVN0eWxlMz1jb25zdW1lU3BlY2lhbE5hbWVDaGFyKCJFIixCRUZPUkVfU1RZTEVfNCk7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTdHlsZTQ9ZnVuY3Rpb24oYyl7aWYoYz09PSIvInx8Yz09PSI+Inx8d2hpdGVzcGFjZShjKSl7dGhpcy5fc3BlY2lhbD1TUEVDSUFMX1NUWUxFfXRoaXMuX3N0YXRlPUlOX1RBR19OQU1FO3RoaXMuX2luZGV4LS19O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTE9aWZFbHNlU3RhdGUoIlkiLEFGVEVSX1NUWUxFXzIsVEVYVCk7VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVBZnRlclN0eWxlMj1pZkVsc2VTdGF0ZSgiTCIsQUZURVJfU1RZTEVfMyxURVhUKTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUFmdGVyU3R5bGUzPWlmRWxzZVN0YXRlKCJFIixBRlRFUl9TVFlMRV80LFRFWFQpO1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTdHlsZTQ9ZnVuY3Rpb24oYyl7aWYoYz09PSI+Inx8d2hpdGVzcGFjZShjKSl7dGhpcy5fc3BlY2lhbD1TUEVDSUFMX05PTkU7dGhpcy5fc3RhdGU9SU5fQ0xPU0lOR19UQUdfTkFNRTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgtNTt0aGlzLl9pbmRleC0tfWVsc2UgdGhpcy5fc3RhdGU9VEVYVH07VG9rZW5pemVyLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVFbnRpdHk9aWZFbHNlU3RhdGUoIiMiLEJFRk9SRV9OVU1FUklDX0VOVElUWSxJTl9OQU1FRF9FTlRJVFkpO1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlQmVmb3JlTnVtZXJpY0VudGl0eT1pZkVsc2VTdGF0ZSgiWCIsSU5fSEVYX0VOVElUWSxJTl9OVU1FUklDX0VOVElUWSk7VG9rZW5pemVyLnByb3RvdHlwZS5fcGFyc2VOYW1lZEVudGl0eVN0cmljdD1mdW5jdGlvbigpe2lmKHRoaXMuX3NlY3Rpb25TdGFydCsxPHRoaXMuX2luZGV4KXt2YXIgZW50aXR5PXRoaXMuX2J1ZmZlci5zdWJzdHJpbmcodGhpcy5fc2VjdGlvblN0YXJ0KzEsdGhpcy5faW5kZXgpLG1hcD10aGlzLl94bWxNb2RlP3htbE1hcDplbnRpdHlNYXA7aWYobWFwLmhhc093blByb3BlcnR5KGVudGl0eSkpe3RoaXMuX2VtaXRQYXJ0aWFsKG1hcFtlbnRpdHldKTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMX19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9wYXJzZUxlZ2FjeUVudGl0eT1mdW5jdGlvbigpe3ZhciBzdGFydD10aGlzLl9zZWN0aW9uU3RhcnQrMSxsaW1pdD10aGlzLl9pbmRleC1zdGFydDtpZihsaW1pdD42KWxpbWl0PTY7d2hpbGUobGltaXQ+PTIpe3ZhciBlbnRpdHk9dGhpcy5fYnVmZmVyLnN1YnN0cihzdGFydCxsaW1pdCk7aWYobGVnYWN5TWFwLmhhc093blByb3BlcnR5KGVudGl0eSkpe3RoaXMuX2VtaXRQYXJ0aWFsKGxlZ2FjeU1hcFtlbnRpdHldKTt0aGlzLl9zZWN0aW9uU3RhcnQrPWxpbWl0KzE7cmV0dXJufWVsc2V7bGltaXQtLX19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUluTmFtZWRFbnRpdHk9ZnVuY3Rpb24oYyl7aWYoYz09PSI7Iil7dGhpcy5fcGFyc2VOYW1lZEVudGl0eVN0cmljdCgpO2lmKHRoaXMuX3NlY3Rpb25TdGFydCsxPHRoaXMuX2luZGV4JiYhdGhpcy5feG1sTW9kZSl7dGhpcy5fcGFyc2VMZWdhY3lFbnRpdHkoKX10aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGV9ZWxzZSBpZigoYzwiYSJ8fGM+InoiKSYmKGM8IkEifHxjPiJaIikmJihjPCIwInx8Yz4iOSIpKXtpZih0aGlzLl94bWxNb2RlKTtlbHNlIGlmKHRoaXMuX3NlY3Rpb25TdGFydCsxPT09dGhpcy5faW5kZXgpO2Vsc2UgaWYodGhpcy5fYmFzZVN0YXRlIT09VEVYVCl7aWYoYyE9PSI9Iil7dGhpcy5fcGFyc2VOYW1lZEVudGl0eVN0cmljdCgpfX1lbHNle3RoaXMuX3BhcnNlTGVnYWN5RW50aXR5KCl9dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlO3RoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9kZWNvZGVOdW1lcmljRW50aXR5PWZ1bmN0aW9uKG9mZnNldCxiYXNlKXt2YXIgc2VjdGlvblN0YXJ0PXRoaXMuX3NlY3Rpb25TdGFydCtvZmZzZXQ7aWYoc2VjdGlvblN0YXJ0IT09dGhpcy5faW5kZXgpe3ZhciBlbnRpdHk9dGhpcy5fYnVmZmVyLnN1YnN0cmluZyhzZWN0aW9uU3RhcnQsdGhpcy5faW5kZXgpO3ZhciBwYXJzZWQ9cGFyc2VJbnQoZW50aXR5LGJhc2UpO3RoaXMuX2VtaXRQYXJ0aWFsKGRlY29kZUNvZGVQb2ludChwYXJzZWQpKTt0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXh9ZWxzZXt0aGlzLl9zZWN0aW9uU3RhcnQtLX10aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGV9O1Rva2VuaXplci5wcm90b3R5cGUuX3N0YXRlSW5OdW1lcmljRW50aXR5PWZ1bmN0aW9uKGMpe2lmKGM9PT0iOyIpe3RoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMiwxMCk7dGhpcy5fc2VjdGlvblN0YXJ0Kyt9ZWxzZSBpZihjPCIwInx8Yz4iOSIpe2lmKCF0aGlzLl94bWxNb2RlKXt0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDIsMTApfWVsc2V7dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlfXRoaXMuX2luZGV4LS19fTtUb2tlbml6ZXIucHJvdG90eXBlLl9zdGF0ZUluSGV4RW50aXR5PWZ1bmN0aW9uKGMpe2lmKGM9PT0iOyIpe3RoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMywxNik7dGhpcy5fc2VjdGlvblN0YXJ0Kyt9ZWxzZSBpZigoYzwiYSJ8fGM+ImYiKSYmKGM8IkEifHxjPiJGIikmJihjPCIwInx8Yz4iOSIpKXtpZighdGhpcy5feG1sTW9kZSl7dGhpcy5fZGVjb2RlTnVtZXJpY0VudGl0eSgzLDE2KX1lbHNle3RoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZX10aGlzLl9pbmRleC0tfX07VG9rZW5pemVyLnByb3RvdHlwZS5fY2xlYW51cD1mdW5jdGlvbigpe2lmKHRoaXMuX3NlY3Rpb25TdGFydDwwKXt0aGlzLl9idWZmZXI9IiI7dGhpcy5faW5kZXg9MDt0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX2luZGV4fWVsc2UgaWYodGhpcy5fcnVubmluZyl7aWYodGhpcy5fc3RhdGU9PT1URVhUKXtpZih0aGlzLl9zZWN0aW9uU3RhcnQhPT10aGlzLl9pbmRleCl7dGhpcy5fY2JzLm9udGV4dCh0aGlzLl9idWZmZXIuc3Vic3RyKHRoaXMuX3NlY3Rpb25TdGFydCkpfXRoaXMuX2J1ZmZlcj0iIjt0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX2luZGV4O3RoaXMuX2luZGV4PTB9ZWxzZSBpZih0aGlzLl9zZWN0aW9uU3RhcnQ9PT10aGlzLl9pbmRleCl7dGhpcy5fYnVmZmVyPSIiO3RoaXMuX2J1ZmZlck9mZnNldCs9dGhpcy5faW5kZXg7dGhpcy5faW5kZXg9MH1lbHNle3RoaXMuX2J1ZmZlcj10aGlzLl9idWZmZXIuc3Vic3RyKHRoaXMuX3NlY3Rpb25TdGFydCk7dGhpcy5faW5kZXgtPXRoaXMuX3NlY3Rpb25TdGFydDt0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX3NlY3Rpb25TdGFydH10aGlzLl9zZWN0aW9uU3RhcnQ9MH19O1Rva2VuaXplci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oY2h1bmspe2lmKHRoaXMuX2VuZGVkKXRoaXMuX2Nicy5vbmVycm9yKEVycm9yKCIud3JpdGUoKSBhZnRlciBkb25lISIpKTt0aGlzLl9idWZmZXIrPWNodW5rO3RoaXMuX3BhcnNlKCl9O1Rva2VuaXplci5wcm90b3R5cGUuX3BhcnNlPWZ1bmN0aW9uKCl7d2hpbGUodGhpcy5faW5kZXg8dGhpcy5fYnVmZmVyLmxlbmd0aCYmdGhpcy5fcnVubmluZyl7dmFyIGM9dGhpcy5fYnVmZmVyLmNoYXJBdCh0aGlzLl9pbmRleCk7aWYodGhpcy5fc3RhdGU9PT1URVhUKXt0aGlzLl9zdGF0ZVRleHQoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9UQUdfTkFNRSl7dGhpcy5fc3RhdGVCZWZvcmVUYWdOYW1lKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9UQUdfTkFNRSl7dGhpcy5fc3RhdGVJblRhZ05hbWUoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9DTE9TSU5HX1RBR19OQU1FKXt0aGlzLl9zdGF0ZUJlZm9yZUNsb3NlaW5nVGFnTmFtZShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fQ0xPU0lOR19UQUdfTkFNRSl7dGhpcy5fc3RhdGVJbkNsb3NlaW5nVGFnTmFtZShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QUZURVJfQ0xPU0lOR19UQUdfTkFNRSl7dGhpcy5fc3RhdGVBZnRlckNsb3NlaW5nVGFnTmFtZShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fU0VMRl9DTE9TSU5HX1RBRyl7dGhpcy5fc3RhdGVJblNlbGZDbG9zaW5nVGFnKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfQVRUUklCVVRFX05BTUUpe3RoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fQVRUUklCVVRFX05BTUUpe3RoaXMuX3N0YXRlSW5BdHRyaWJ1dGVOYW1lKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9BVFRSSUJVVEVfTkFNRSl7dGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZU5hbWUoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9BVFRSSUJVVEVfVkFMVUUpe3RoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUlOX0FUVFJJQlVURV9WQUxVRV9EUSl7dGhpcy5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVzKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9BVFRSSUJVVEVfVkFMVUVfU1Epe3RoaXMuX3N0YXRlSW5BdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlcyhjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fQVRUUklCVVRFX1ZBTFVFX05RKXt0aGlzLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVOb1F1b3RlcyhjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX0RFQ0xBUkFUSU9OKXt0aGlzLl9zdGF0ZUJlZm9yZURlY2xhcmF0aW9uKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9ERUNMQVJBVElPTil7dGhpcy5fc3RhdGVJbkRlY2xhcmF0aW9uKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9QUk9DRVNTSU5HX0lOU1RSVUNUSU9OKXt0aGlzLl9zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfQ09NTUVOVCl7dGhpcy5fc3RhdGVCZWZvcmVDb21tZW50KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9DT01NRU5UKXt0aGlzLl9zdGF0ZUluQ29tbWVudChjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QUZURVJfQ09NTUVOVF8xKXt0aGlzLl9zdGF0ZUFmdGVyQ29tbWVudDEoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUFGVEVSX0NPTU1FTlRfMil7dGhpcy5fc3RhdGVBZnRlckNvbW1lbnQyKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfQ0RBVEFfMSl7dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTEoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9DREFUQV8yKXt0aGlzLl9zdGF0ZUJlZm9yZUNkYXRhMihjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX0NEQVRBXzMpe3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGEzKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfQ0RBVEFfNCl7dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTQoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9DREFUQV81KXt0aGlzLl9zdGF0ZUJlZm9yZUNkYXRhNShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX0NEQVRBXzYpe3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGE2KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9DREFUQSl7dGhpcy5fc3RhdGVJbkNkYXRhKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9DREFUQV8xKXt0aGlzLl9zdGF0ZUFmdGVyQ2RhdGExKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9DREFUQV8yKXt0aGlzLl9zdGF0ZUFmdGVyQ2RhdGEyKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfU1BFQ0lBTCl7dGhpcy5fc3RhdGVCZWZvcmVTcGVjaWFsKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfU1BFQ0lBTF9FTkQpe3RoaXMuX3N0YXRlQmVmb3JlU3BlY2lhbEVuZChjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX1NDUklQVF8xKXt0aGlzLl9zdGF0ZUJlZm9yZVNjcmlwdDEoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9TQ1JJUFRfMil7dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQyKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfU0NSSVBUXzMpe3RoaXMuX3N0YXRlQmVmb3JlU2NyaXB0MyhjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX1NDUklQVF80KXt0aGlzLl9zdGF0ZUJlZm9yZVNjcmlwdDQoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9TQ1JJUFRfNSl7dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQ1KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TQ1JJUFRfMSl7dGhpcy5fc3RhdGVBZnRlclNjcmlwdDEoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUFGVEVSX1NDUklQVF8yKXt0aGlzLl9zdGF0ZUFmdGVyU2NyaXB0MihjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QUZURVJfU0NSSVBUXzMpe3RoaXMuX3N0YXRlQWZ0ZXJTY3JpcHQzKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TQ1JJUFRfNCl7dGhpcy5fc3RhdGVBZnRlclNjcmlwdDQoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUFGVEVSX1NDUklQVF81KXt0aGlzLl9zdGF0ZUFmdGVyU2NyaXB0NShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX1NUWUxFXzEpe3RoaXMuX3N0YXRlQmVmb3JlU3R5bGUxKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfU1RZTEVfMil7dGhpcy5fc3RhdGVCZWZvcmVTdHlsZTIoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUJFRk9SRV9TVFlMRV8zKXt0aGlzLl9zdGF0ZUJlZm9yZVN0eWxlMyhjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX1NUWUxFXzQpe3RoaXMuX3N0YXRlQmVmb3JlU3R5bGU0KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TVFlMRV8xKXt0aGlzLl9zdGF0ZUFmdGVyU3R5bGUxKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TVFlMRV8yKXt0aGlzLl9zdGF0ZUFmdGVyU3R5bGUyKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TVFlMRV8zKXt0aGlzLl9zdGF0ZUFmdGVyU3R5bGUzKGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1BRlRFUl9TVFlMRV80KXt0aGlzLl9zdGF0ZUFmdGVyU3R5bGU0KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1CRUZPUkVfRU5USVRZKXt0aGlzLl9zdGF0ZUJlZm9yZUVudGl0eShjKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09QkVGT1JFX05VTUVSSUNfRU5USVRZKXt0aGlzLl9zdGF0ZUJlZm9yZU51bWVyaWNFbnRpdHkoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUlOX05BTUVEX0VOVElUWSl7dGhpcy5fc3RhdGVJbk5hbWVkRW50aXR5KGMpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9OVU1FUklDX0VOVElUWSl7dGhpcy5fc3RhdGVJbk51bWVyaWNFbnRpdHkoYyl9ZWxzZSBpZih0aGlzLl9zdGF0ZT09PUlOX0hFWF9FTlRJVFkpe3RoaXMuX3N0YXRlSW5IZXhFbnRpdHkoYyl9ZWxzZXt0aGlzLl9jYnMub25lcnJvcihFcnJvcigidW5rbm93biBfc3RhdGUiKSx0aGlzLl9zdGF0ZSl9dGhpcy5faW5kZXgrK310aGlzLl9jbGVhbnVwKCl9O1Rva2VuaXplci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLl9ydW5uaW5nPWZhbHNlfTtUb2tlbml6ZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3RoaXMuX3J1bm5pbmc9dHJ1ZTtpZih0aGlzLl9pbmRleDx0aGlzLl9idWZmZXIubGVuZ3RoKXt0aGlzLl9wYXJzZSgpfWlmKHRoaXMuX2VuZGVkKXt0aGlzLl9maW5pc2goKX19O1Rva2VuaXplci5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGNodW5rKXtpZih0aGlzLl9lbmRlZCl0aGlzLl9jYnMub25lcnJvcihFcnJvcigiLmVuZCgpIGFmdGVyIGRvbmUhIikpO2lmKGNodW5rKXRoaXMud3JpdGUoY2h1bmspO3RoaXMuX2VuZGVkPXRydWU7aWYodGhpcy5fcnVubmluZyl0aGlzLl9maW5pc2goKX07VG9rZW5pemVyLnByb3RvdHlwZS5fZmluaXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4KXt0aGlzLl9oYW5kbGVUcmFpbGluZ0RhdGEoKX10aGlzLl9jYnMub25lbmQoKX07VG9rZW5pemVyLnByb3RvdHlwZS5faGFuZGxlVHJhaWxpbmdEYXRhPWZ1bmN0aW9uKCl7dmFyIGRhdGE9dGhpcy5fYnVmZmVyLnN1YnN0cih0aGlzLl9zZWN0aW9uU3RhcnQpO2lmKHRoaXMuX3N0YXRlPT09SU5fQ0RBVEF8fHRoaXMuX3N0YXRlPT09QUZURVJfQ0RBVEFfMXx8dGhpcy5fc3RhdGU9PT1BRlRFUl9DREFUQV8yKXt0aGlzLl9jYnMub25jZGF0YShkYXRhKX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fQ09NTUVOVHx8dGhpcy5fc3RhdGU9PT1BRlRFUl9DT01NRU5UXzF8fHRoaXMuX3N0YXRlPT09QUZURVJfQ09NTUVOVF8yKXt0aGlzLl9jYnMub25jb21tZW50KGRhdGEpfWVsc2UgaWYodGhpcy5fc3RhdGU9PT1JTl9OQU1FRF9FTlRJVFkmJiF0aGlzLl94bWxNb2RlKXt0aGlzLl9wYXJzZUxlZ2FjeUVudGl0eSgpO2lmKHRoaXMuX3NlY3Rpb25TdGFydDx0aGlzLl9pbmRleCl7dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlO3RoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpfX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fTlVNRVJJQ19FTlRJVFkmJiF0aGlzLl94bWxNb2RlKXt0aGlzLl9kZWNvZGVOdW1lcmljRW50aXR5KDIsMTApO2lmKHRoaXMuX3NlY3Rpb25TdGFydDx0aGlzLl9pbmRleCl7dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlO3RoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpfX1lbHNlIGlmKHRoaXMuX3N0YXRlPT09SU5fSEVYX0VOVElUWSYmIXRoaXMuX3htbE1vZGUpe3RoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMywxNik7aWYodGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4KXt0aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGU7dGhpcy5faGFuZGxlVHJhaWxpbmdEYXRhKCl9fWVsc2UgaWYodGhpcy5fc3RhdGUhPT1JTl9UQUdfTkFNRSYmdGhpcy5fc3RhdGUhPT1CRUZPUkVfQVRUUklCVVRFX05BTUUmJnRoaXMuX3N0YXRlIT09QkVGT1JFX0FUVFJJQlVURV9WQUxVRSYmdGhpcy5fc3RhdGUhPT1BRlRFUl9BVFRSSUJVVEVfTkFNRSYmdGhpcy5fc3RhdGUhPT1JTl9BVFRSSUJVVEVfTkFNRSYmdGhpcy5fc3RhdGUhPT1JTl9BVFRSSUJVVEVfVkFMVUVfU1EmJnRoaXMuX3N0YXRlIT09SU5fQVRUUklCVVRFX1ZBTFVFX0RRJiZ0aGlzLl9zdGF0ZSE9PUlOX0FUVFJJQlVURV9WQUxVRV9OUSYmdGhpcy5fc3RhdGUhPT1JTl9DTE9TSU5HX1RBR19OQU1FKXsKK3RoaXMuX2Nicy5vbnRleHQoZGF0YSl9fTtUb2tlbml6ZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7VG9rZW5pemVyLmNhbGwodGhpcyx7eG1sTW9kZTp0aGlzLl94bWxNb2RlLGRlY29kZUVudGl0aWVzOnRoaXMuX2RlY29kZUVudGl0aWVzfSx0aGlzLl9jYnMpfTtUb2tlbml6ZXIucHJvdG90eXBlLmdldEFic29sdXRlSW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnVmZmVyT2Zmc2V0K3RoaXMuX2luZGV4fTtUb2tlbml6ZXIucHJvdG90eXBlLl9nZXRTZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci5zdWJzdHJpbmcodGhpcy5fc2VjdGlvblN0YXJ0LHRoaXMuX2luZGV4KX07VG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdFRva2VuPWZ1bmN0aW9uKG5hbWUpe3RoaXMuX2Nic1tuYW1lXSh0aGlzLl9nZXRTZWN0aW9uKCkpO3RoaXMuX3NlY3Rpb25TdGFydD0tMX07VG9rZW5pemVyLnByb3RvdHlwZS5fZW1pdFBhcnRpYWw9ZnVuY3Rpb24odmFsdWUpe2lmKHRoaXMuX2Jhc2VTdGF0ZSE9PVRFWFQpe3RoaXMuX2Nicy5vbmF0dHJpYmRhdGEodmFsdWUpfWVsc2V7dGhpcy5fY2JzLm9udGV4dCh2YWx1ZSl9fX0seyJlbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC5qcyI6MjIsImVudGl0aWVzL21hcHMvZW50aXRpZXMuanNvbiI6MjUsImVudGl0aWVzL21hcHMvbGVnYWN5Lmpzb24iOjI2LCJlbnRpdGllcy9tYXBzL3htbC5qc29uIjoyN31dLDM1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz1TdHJlYW07dmFyIFBhcnNlcj1yZXF1aXJlKCIuL1BhcnNlci5qcyIpLFdyaXRhYmxlU3RyZWFtPXJlcXVpcmUoInN0cmVhbSIpLldyaXRhYmxlfHxyZXF1aXJlKCJyZWFkYWJsZS1zdHJlYW0iKS5Xcml0YWJsZSxTdHJpbmdEZWNvZGVyPXJlcXVpcmUoInN0cmluZ19kZWNvZGVyIikuU3RyaW5nRGVjb2RlcixCdWZmZXI9cmVxdWlyZSgiYnVmZmVyIikuQnVmZmVyO2Z1bmN0aW9uIFN0cmVhbShjYnMsb3B0aW9ucyl7dmFyIHBhcnNlcj10aGlzLl9wYXJzZXI9bmV3IFBhcnNlcihjYnMsb3B0aW9ucyk7dmFyIGRlY29kZXI9dGhpcy5fZGVjb2Rlcj1uZXcgU3RyaW5nRGVjb2RlcjtXcml0YWJsZVN0cmVhbS5jYWxsKHRoaXMse2RlY29kZVN0cmluZ3M6ZmFsc2V9KTt0aGlzLm9uY2UoImZpbmlzaCIsZnVuY3Rpb24oKXtwYXJzZXIuZW5kKGRlY29kZXIuZW5kKCkpfSl9cmVxdWlyZSgiaW5oZXJpdHMiKShTdHJlYW0sV3JpdGFibGVTdHJlYW0pO1dyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oY2h1bmssZW5jb2RpbmcsY2Ipe2lmKGNodW5rIGluc3RhbmNlb2YgQnVmZmVyKWNodW5rPXRoaXMuX2RlY29kZXIud3JpdGUoY2h1bmspO3RoaXMuX3BhcnNlci53cml0ZShjaHVuayk7Y2IoKX19LHsiLi9QYXJzZXIuanMiOjMxLGJ1ZmZlcjo1LGluaGVyaXRzOjM4LCJyZWFkYWJsZS1zdHJlYW0iOjMsc3RyZWFtOjU1LHN0cmluZ19kZWNvZGVyOjU2fV0sMzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBQYXJzZXI9cmVxdWlyZSgiLi9QYXJzZXIuanMiKSxEb21IYW5kbGVyPXJlcXVpcmUoImRvbWhhbmRsZXIiKTtmdW5jdGlvbiBkZWZpbmVQcm9wKG5hbWUsdmFsdWUpe2RlbGV0ZSBtb2R1bGUuZXhwb3J0c1tuYW1lXTttb2R1bGUuZXhwb3J0c1tuYW1lXT12YWx1ZTtyZXR1cm4gdmFsdWV9bW9kdWxlLmV4cG9ydHM9e1BhcnNlcjpQYXJzZXIsVG9rZW5pemVyOnJlcXVpcmUoIi4vVG9rZW5pemVyLmpzIiksRWxlbWVudFR5cGU6cmVxdWlyZSgiZG9tZWxlbWVudHR5cGUiKSxEb21IYW5kbGVyOkRvbUhhbmRsZXIsZ2V0IEZlZWRIYW5kbGVyKCl7cmV0dXJuIGRlZmluZVByb3AoIkZlZWRIYW5kbGVyIixyZXF1aXJlKCIuL0ZlZWRIYW5kbGVyLmpzIikpfSxnZXQgU3RyZWFtKCl7cmV0dXJuIGRlZmluZVByb3AoIlN0cmVhbSIscmVxdWlyZSgiLi9TdHJlYW0uanMiKSl9LGdldCBXcml0YWJsZVN0cmVhbSgpe3JldHVybiBkZWZpbmVQcm9wKCJXcml0YWJsZVN0cmVhbSIscmVxdWlyZSgiLi9Xcml0YWJsZVN0cmVhbS5qcyIpKX0sZ2V0IFByb3h5SGFuZGxlcigpe3JldHVybiBkZWZpbmVQcm9wKCJQcm94eUhhbmRsZXIiLHJlcXVpcmUoIi4vUHJveHlIYW5kbGVyLmpzIikpfSxnZXQgRG9tVXRpbHMoKXtyZXR1cm4gZGVmaW5lUHJvcCgiRG9tVXRpbHMiLHJlcXVpcmUoImRvbXV0aWxzIikpfSxnZXQgQ29sbGVjdGluZ0hhbmRsZXIoKXtyZXR1cm4gZGVmaW5lUHJvcCgiQ29sbGVjdGluZ0hhbmRsZXIiLHJlcXVpcmUoIi4vQ29sbGVjdGluZ0hhbmRsZXIuanMiKSl9LERlZmF1bHRIYW5kbGVyOkRvbUhhbmRsZXIsZ2V0IFJzc0hhbmRsZXIoKXtyZXR1cm4gZGVmaW5lUHJvcCgiUnNzSGFuZGxlciIsdGhpcy5GZWVkSGFuZGxlcil9LHBhcnNlRE9NOmZ1bmN0aW9uKGRhdGEsb3B0aW9ucyl7dmFyIGhhbmRsZXI9bmV3IERvbUhhbmRsZXIob3B0aW9ucyk7bmV3IFBhcnNlcihoYW5kbGVyLG9wdGlvbnMpLmVuZChkYXRhKTtyZXR1cm4gaGFuZGxlci5kb219LHBhcnNlRmVlZDpmdW5jdGlvbihmZWVkLG9wdGlvbnMpe3ZhciBoYW5kbGVyPW5ldyBtb2R1bGUuZXhwb3J0cy5GZWVkSGFuZGxlcihvcHRpb25zKTtuZXcgUGFyc2VyKGhhbmRsZXIsb3B0aW9ucykuZW5kKGZlZWQpO3JldHVybiBoYW5kbGVyLmRvbX0sY3JlYXRlRG9tU3RyZWFtOmZ1bmN0aW9uKGNiLG9wdGlvbnMsZWxlbWVudENiKXt2YXIgaGFuZGxlcj1uZXcgRG9tSGFuZGxlcihjYixvcHRpb25zLGVsZW1lbnRDYik7cmV0dXJuIG5ldyBQYXJzZXIoaGFuZGxlcixvcHRpb25zKX0sRVZFTlRTOnthdHRyaWJ1dGU6MixjZGF0YXN0YXJ0OjAsY2RhdGFlbmQ6MCx0ZXh0OjEscHJvY2Vzc2luZ2luc3RydWN0aW9uOjIsY29tbWVudDoxLGNvbW1lbnRlbmQ6MCxjbG9zZXRhZzoxLG9wZW50YWc6MixvcGVudGFnbmFtZToxLGVycm9yOjEsZW5kOjB9fX0seyIuL0NvbGxlY3RpbmdIYW5kbGVyLmpzIjoyOSwiLi9GZWVkSGFuZGxlci5qcyI6MzAsIi4vUGFyc2VyLmpzIjozMSwiLi9Qcm94eUhhbmRsZXIuanMiOjMyLCIuL1N0cmVhbS5qcyI6MzMsIi4vVG9rZW5pemVyLmpzIjozNCwiLi9Xcml0YWJsZVN0cmVhbS5qcyI6MzUsZG9tZWxlbWVudHR5cGU6OSxkb21oYW5kbGVyOjEwLGRvbXV0aWxzOjEzfV0sMzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe2V4cG9ydHMucmVhZD1mdW5jdGlvbihidWZmZXIsb2Zmc2V0LGlzTEUsbUxlbixuQnl0ZXMpe3ZhciBlLG07dmFyIGVMZW49bkJ5dGVzKjgtbUxlbi0xO3ZhciBlTWF4PSgxPDxlTGVuKS0xO3ZhciBlQmlhcz1lTWF4Pj4xO3ZhciBuQml0cz0tNzt2YXIgaT1pc0xFP25CeXRlcy0xOjA7dmFyIGQ9aXNMRT8tMToxO3ZhciBzPWJ1ZmZlcltvZmZzZXQraV07aSs9ZDtlPXMmKDE8PC1uQml0cyktMTtzPj49LW5CaXRzO25CaXRzKz1lTGVuO2Zvcig7bkJpdHM+MDtlPWUqMjU2K2J1ZmZlcltvZmZzZXQraV0saSs9ZCxuQml0cy09OCl7fW09ZSYoMTw8LW5CaXRzKS0xO2U+Pj0tbkJpdHM7bkJpdHMrPW1MZW47Zm9yKDtuQml0cz4wO209bSoyNTYrYnVmZmVyW29mZnNldCtpXSxpKz1kLG5CaXRzLT04KXt9aWYoZT09PTApe2U9MS1lQmlhc31lbHNlIGlmKGU9PT1lTWF4KXtyZXR1cm4gbT9OYU46KHM/LTE6MSkqSW5maW5pdHl9ZWxzZXttPW0rTWF0aC5wb3coMixtTGVuKTtlPWUtZUJpYXN9cmV0dXJuKHM/LTE6MSkqbSpNYXRoLnBvdygyLGUtbUxlbil9O2V4cG9ydHMud3JpdGU9ZnVuY3Rpb24oYnVmZmVyLHZhbHVlLG9mZnNldCxpc0xFLG1MZW4sbkJ5dGVzKXt2YXIgZSxtLGM7dmFyIGVMZW49bkJ5dGVzKjgtbUxlbi0xO3ZhciBlTWF4PSgxPDxlTGVuKS0xO3ZhciBlQmlhcz1lTWF4Pj4xO3ZhciBydD1tTGVuPT09MjM/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowO3ZhciBpPWlzTEU/MDpuQnl0ZXMtMTt2YXIgZD1pc0xFPzE6LTE7dmFyIHM9dmFsdWU8MHx8dmFsdWU9PT0wJiYxL3ZhbHVlPDA/MTowO3ZhbHVlPU1hdGguYWJzKHZhbHVlKTtpZihpc05hTih2YWx1ZSl8fHZhbHVlPT09SW5maW5pdHkpe209aXNOYU4odmFsdWUpPzE6MDtlPWVNYXh9ZWxzZXtlPU1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpL01hdGguTE4yKTtpZih2YWx1ZSooYz1NYXRoLnBvdygyLC1lKSk8MSl7ZS0tO2MqPTJ9aWYoZStlQmlhcz49MSl7dmFsdWUrPXJ0L2N9ZWxzZXt2YWx1ZSs9cnQqTWF0aC5wb3coMiwxLWVCaWFzKX1pZih2YWx1ZSpjPj0yKXtlKys7Yy89Mn1pZihlK2VCaWFzPj1lTWF4KXttPTA7ZT1lTWF4fWVsc2UgaWYoZStlQmlhcz49MSl7bT0odmFsdWUqYy0xKSpNYXRoLnBvdygyLG1MZW4pO2U9ZStlQmlhc31lbHNle209dmFsdWUqTWF0aC5wb3coMixlQmlhcy0xKSpNYXRoLnBvdygyLG1MZW4pO2U9MH19Zm9yKDttTGVuPj04O2J1ZmZlcltvZmZzZXQraV09bSYyNTUsaSs9ZCxtLz0yNTYsbUxlbi09OCl7fWU9ZTw8bUxlbnxtO2VMZW4rPW1MZW47Zm9yKDtlTGVuPjA7YnVmZmVyW29mZnNldCtpXT1lJjI1NSxpKz1kLGUvPTI1NixlTGVuLT04KXt9YnVmZmVyW29mZnNldCtpLWRdfD1zKjEyOH19LHt9XSwzODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7aWYodHlwZW9mIE9iamVjdC5jcmVhdGU9PT0iZnVuY3Rpb24iKXttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbiBpbmhlcml0cyhjdG9yLHN1cGVyQ3Rvcil7Y3Rvci5zdXBlcl89c3VwZXJDdG9yO2N0b3IucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmN0b3IsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pfX1lbHNle21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGluaGVyaXRzKGN0b3Isc3VwZXJDdG9yKXtjdG9yLnN1cGVyXz1zdXBlckN0b3I7dmFyIFRlbXBDdG9yPWZ1bmN0aW9uKCl7fTtUZW1wQ3Rvci5wcm90b3R5cGU9c3VwZXJDdG9yLnByb3RvdHlwZTtjdG9yLnByb3RvdHlwZT1uZXcgVGVtcEN0b3I7Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3I9Y3Rvcn19fSx7fV0sMzk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKG9iail7cmV0dXJuIG9iaiE9bnVsbCYmKGlzQnVmZmVyKG9iail8fGlzU2xvd0J1ZmZlcihvYmopfHwhIW9iai5faXNCdWZmZXIpfTtmdW5jdGlvbiBpc0J1ZmZlcihvYmope3JldHVybiEhb2JqLmNvbnN0cnVjdG9yJiZ0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyPT09ImZ1bmN0aW9uIiYmb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iail9ZnVuY3Rpb24gaXNTbG93QnVmZmVyKG9iail7cmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEU9PT0iZnVuY3Rpb24iJiZ0eXBlb2Ygb2JqLnNsaWNlPT09ImZ1bmN0aW9uIiYmaXNCdWZmZXIob2JqLnNsaWNlKDAsMCkpfX0se31dLDQwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgdG9TdHJpbmc9e30udG9TdHJpbmc7bW9kdWxlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYXJyKXtyZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpPT0iW29iamVjdCBBcnJheV0ifX0se31dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsoZnVuY3Rpb24ocHJvY2Vzcyl7InVzZSBzdHJpY3QiO2lmKCFwcm9jZXNzLnZlcnNpb258fHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MC4iKT09PTB8fHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MS4iKT09PTAmJnByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCJ2MS44LiIpIT09MCl7bW9kdWxlLmV4cG9ydHM9bmV4dFRpY2t9ZWxzZXttb2R1bGUuZXhwb3J0cz1wcm9jZXNzLm5leHRUaWNrfWZ1bmN0aW9uIG5leHRUaWNrKGZuLGFyZzEsYXJnMixhcmczKXtpZih0eXBlb2YgZm4hPT0iZnVuY3Rpb24iKXt0aHJvdyBuZXcgVHlwZUVycm9yKCciY2FsbGJhY2siIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpfXZhciBsZW49YXJndW1lbnRzLmxlbmd0aDt2YXIgYXJncyxpO3N3aXRjaChsZW4pe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZm4pO2Nhc2UgMjpyZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKXtmbi5jYWxsKG51bGwsYXJnMSl9KTtjYXNlIDM6cmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCl7Zm4uY2FsbChudWxsLGFyZzEsYXJnMil9KTtjYXNlIDQ6cmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKXtmbi5jYWxsKG51bGwsYXJnMSxhcmcyLGFyZzMpfSk7ZGVmYXVsdDphcmdzPW5ldyBBcnJheShsZW4tMSk7aT0wO3doaWxlKGk8YXJncy5sZW5ndGgpe2FyZ3NbaSsrXT1hcmd1bWVudHNbaV19cmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCl7Zm4uYXBwbHkobnVsbCxhcmdzKX0pfX19KS5jYWxsKHRoaXMscmVxdWlyZSgiX3Byb2Nlc3MiKSl9LHtfcHJvY2Vzczo0Mn1dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgcHJvY2Vzcz1tb2R1bGUuZXhwb3J0cz17fTt2YXIgY2FjaGVkU2V0VGltZW91dDt2YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O2Z1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX0oZnVuY3Rpb24oKXt0cnl7aWYodHlwZW9mIHNldFRpbWVvdXQ9PT0iZnVuY3Rpb24iKXtjYWNoZWRTZXRUaW1lb3V0PXNldFRpbWVvdXR9ZWxzZXtjYWNoZWRTZXRUaW1lb3V0PWRlZmF1bHRTZXRUaW1vdXR9fWNhdGNoKGUpe2NhY2hlZFNldFRpbWVvdXQ9ZGVmYXVsdFNldFRpbW91dH10cnl7aWYodHlwZW9mIGNsZWFyVGltZW91dD09PSJmdW5jdGlvbiIpe2NhY2hlZENsZWFyVGltZW91dD1jbGVhclRpbWVvdXR9ZWxzZXtjYWNoZWRDbGVhclRpbWVvdXQ9ZGVmYXVsdENsZWFyVGltZW91dH19Y2F0Y2goZSl7Y2FjaGVkQ2xlYXJUaW1lb3V0PWRlZmF1bHRDbGVhclRpbWVvdXR9fSkoKTtmdW5jdGlvbiBydW5UaW1lb3V0KGZ1bil7aWYoY2FjaGVkU2V0VGltZW91dD09PXNldFRpbWVvdXQpe3JldHVybiBzZXRUaW1lb3V0KGZ1biwwKX1pZigoY2FjaGVkU2V0VGltZW91dD09PWRlZmF1bHRTZXRUaW1vdXR8fCFjYWNoZWRTZXRUaW1lb3V0KSYmc2V0VGltZW91dCl7Y2FjaGVkU2V0VGltZW91dD1zZXRUaW1lb3V0O3JldHVybiBzZXRUaW1lb3V0KGZ1biwwKX10cnl7cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLDApfWNhdGNoKGUpe3RyeXtyZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsZnVuLDApfWNhdGNoKGUpe3JldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcyxmdW4sMCl9fX1mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKXtpZihjYWNoZWRDbGVhclRpbWVvdXQ9PT1jbGVhclRpbWVvdXQpe3JldHVybiBjbGVhclRpbWVvdXQobWFya2VyKX1pZigoY2FjaGVkQ2xlYXJUaW1lb3V0PT09ZGVmYXVsdENsZWFyVGltZW91dHx8IWNhY2hlZENsZWFyVGltZW91dCkmJmNsZWFyVGltZW91dCl7Y2FjaGVkQ2xlYXJUaW1lb3V0PWNsZWFyVGltZW91dDtyZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcil9dHJ5e3JldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKX1jYXRjaChlKXt0cnl7cmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsbWFya2VyKX1jYXRjaChlKXtyZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcyxtYXJrZXIpfX19dmFyIHF1ZXVlPVtdO3ZhciBkcmFpbmluZz1mYWxzZTt2YXIgY3VycmVudFF1ZXVlO3ZhciBxdWV1ZUluZGV4PS0xO2Z1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpe2lmKCFkcmFpbmluZ3x8IWN1cnJlbnRRdWV1ZSl7cmV0dXJufWRyYWluaW5nPWZhbHNlO2lmKGN1cnJlbnRRdWV1ZS5sZW5ndGgpe3F1ZXVlPWN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpfWVsc2V7cXVldWVJbmRleD0tMX1pZihxdWV1ZS5sZW5ndGgpe2RyYWluUXVldWUoKX19ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpe2lmKGRyYWluaW5nKXtyZXR1cm59dmFyIHRpbWVvdXQ9cnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO2RyYWluaW5nPXRydWU7dmFyIGxlbj1xdWV1ZS5sZW5ndGg7d2hpbGUobGVuKXtjdXJyZW50UXVldWU9cXVldWU7cXVldWU9W107d2hpbGUoKytxdWV1ZUluZGV4PGxlbil7aWYoY3VycmVudFF1ZXVlKXtjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCl9fXF1ZXVlSW5kZXg9LTE7bGVuPXF1ZXVlLmxlbmd0aH1jdXJyZW50UXVldWU9bnVsbDtkcmFpbmluZz1mYWxzZTtydW5DbGVhclRpbWVvdXQodGltZW91dCl9cHJvY2Vzcy5uZXh0VGljaz1mdW5jdGlvbihmdW4pe3ZhciBhcmdzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7YXJnc1tpLTFdPWFyZ3VtZW50c1tpXX19cXVldWUucHVzaChuZXcgSXRlbShmdW4sYXJncykpO2lmKHF1ZXVlLmxlbmd0aD09PTEmJiFkcmFpbmluZyl7cnVuVGltZW91dChkcmFpblF1ZXVlKX19O2Z1bmN0aW9uIEl0ZW0oZnVuLGFycmF5KXt0aGlzLmZ1bj1mdW47dGhpcy5hcnJheT1hcnJheX1JdGVtLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtwcm9jZXNzLnRpdGxlPSJicm93c2VyIjtwcm9jZXNzLmJyb3dzZXI9dHJ1ZTtwcm9jZXNzLmVudj17fTtwcm9jZXNzLmFyZ3Y9W107cHJvY2Vzcy52ZXJzaW9uPSIiO3Byb2Nlc3MudmVyc2lvbnM9e307ZnVuY3Rpb24gbm9vcCgpe31wcm9jZXNzLm9uPW5vb3A7cHJvY2Vzcy5hZGRMaXN0ZW5lcj1ub29wO3Byb2Nlc3Mub25jZT1ub29wO3Byb2Nlc3Mub2ZmPW5vb3A7cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcj1ub29wO3Byb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzPW5vb3A7cHJvY2Vzcy5lbWl0PW5vb3A7cHJvY2Vzcy5iaW5kaW5nPWZ1bmN0aW9uKG5hbWUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX07cHJvY2Vzcy5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9O3Byb2Nlc3MuY2hkaXI9ZnVuY3Rpb24oZGlyKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfTtwcm9jZXNzLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPXJlcXVpcmUoIi4vbGliL19zdHJlYW1fZHVwbGV4LmpzIil9LHsiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiOjQ0fV0sNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgb2JqZWN0S2V5cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ob2JqKXt2YXIga2V5cz1bXTtmb3IodmFyIGtleSBpbiBvYmope2tleXMucHVzaChrZXkpfXJldHVybiBrZXlzfTttb2R1bGUuZXhwb3J0cz1EdXBsZXg7dmFyIHByb2Nlc3NOZXh0VGljaz1yZXF1aXJlKCJwcm9jZXNzLW5leHRpY2stYXJncyIpO3ZhciB1dGlsPXJlcXVpcmUoImNvcmUtdXRpbC1pcyIpO3V0aWwuaW5oZXJpdHM9cmVxdWlyZSgiaW5oZXJpdHMiKTt2YXIgUmVhZGFibGU9cmVxdWlyZSgiLi9fc3RyZWFtX3JlYWRhYmxlIik7dmFyIFdyaXRhYmxlPXJlcXVpcmUoIi4vX3N0cmVhbV93cml0YWJsZSIpO3V0aWwuaW5oZXJpdHMoRHVwbGV4LFJlYWRhYmxlKTt2YXIga2V5cz1vYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7Zm9yKHZhciB2PTA7djxrZXlzLmxlbmd0aDt2Kyspe3ZhciBtZXRob2Q9a2V5c1t2XTtpZighRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKUR1cGxleC5wcm90b3R5cGVbbWV0aG9kXT1Xcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXX1mdW5jdGlvbiBEdXBsZXgob3B0aW9ucyl7aWYoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSlyZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtSZWFkYWJsZS5jYWxsKHRoaXMsb3B0aW9ucyk7V3JpdGFibGUuY2FsbCh0aGlzLG9wdGlvbnMpO2lmKG9wdGlvbnMmJm9wdGlvbnMucmVhZGFibGU9PT1mYWxzZSl0aGlzLnJlYWRhYmxlPWZhbHNlO2lmKG9wdGlvbnMmJm9wdGlvbnMud3JpdGFibGU9PT1mYWxzZSl0aGlzLndyaXRhYmxlPWZhbHNlO3RoaXMuYWxsb3dIYWxmT3Blbj10cnVlO2lmKG9wdGlvbnMmJm9wdGlvbnMuYWxsb3dIYWxmT3Blbj09PWZhbHNlKXRoaXMuYWxsb3dIYWxmT3Blbj1mYWxzZTt0aGlzLm9uY2UoImVuZCIsb25lbmQpfWZ1bmN0aW9uIG9uZW5kKCl7aWYodGhpcy5hbGxvd0hhbGZPcGVufHx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKXJldHVybjtwcm9jZXNzTmV4dFRpY2sob25FbmROVCx0aGlzKX1mdW5jdGlvbiBvbkVuZE5UKHNlbGYpe3NlbGYuZW5kKCl9ZnVuY3Rpb24gZm9yRWFjaCh4cyxmKXtmb3IodmFyIGk9MCxsPXhzLmxlbmd0aDtpPGw7aSsrKXtmKHhzW2ldLGkpfX19LHsiLi9fc3RyZWFtX3JlYWRhYmxlIjo0NiwiLi9fc3RyZWFtX3dyaXRhYmxlIjo0OCwiY29yZS11dGlsLWlzIjo2LGluaGVyaXRzOjM4LCJwcm9jZXNzLW5leHRpY2stYXJncyI6NDF9XSw0NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO21vZHVsZS5leHBvcnRzPVBhc3NUaHJvdWdoO3ZhciBUcmFuc2Zvcm09cmVxdWlyZSgiLi9fc3RyZWFtX3RyYW5zZm9ybSIpO3ZhciB1dGlsPXJlcXVpcmUoImNvcmUtdXRpbC1pcyIpO3V0aWwuaW5oZXJpdHM9cmVxdWlyZSgiaW5oZXJpdHMiKTt1dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLFRyYW5zZm9ybSk7ZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucyl7aWYoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKXJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7VHJhbnNmb3JtLmNhbGwodGhpcyxvcHRpb25zKX1QYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihjaHVuayxlbmNvZGluZyxjYil7Y2IobnVsbCxjaHVuayl9fSx7Ii4vX3N0cmVhbV90cmFuc2Zvcm0iOjQ3LCJjb3JlLXV0aWwtaXMiOjYsaW5oZXJpdHM6Mzh9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7KGZ1bmN0aW9uKHByb2Nlc3MpeyJ1c2Ugc3RyaWN0Ijttb2R1bGUuZXhwb3J0cz1SZWFkYWJsZTt2YXIgcHJvY2Vzc05leHRUaWNrPXJlcXVpcmUoInByb2Nlc3MtbmV4dGljay1hcmdzIik7dmFyIGlzQXJyYXk9cmVxdWlyZSgiaXNhcnJheSIpO1JlYWRhYmxlLlJlYWRhYmxlU3RhdGU9UmVhZGFibGVTdGF0ZTt2YXIgRUU9cmVxdWlyZSgiZXZlbnRzIikuRXZlbnRFbWl0dGVyO3ZhciBFRWxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZW1pdHRlcix0eXBlKXtyZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RofTt2YXIgU3RyZWFtOyhmdW5jdGlvbigpe3RyeXtTdHJlYW09cmVxdWlyZSgic3QiKyJyZWFtIil9Y2F0Y2goXyl7fWZpbmFsbHl7aWYoIVN0cmVhbSlTdHJlYW09cmVxdWlyZSgiZXZlbnRzIikuRXZlbnRFbWl0dGVyfX0pKCk7dmFyIEJ1ZmZlcj1yZXF1aXJlKCJidWZmZXIiKS5CdWZmZXI7dmFyIGJ1ZmZlclNoaW09cmVxdWlyZSgiYnVmZmVyLXNoaW1zIik7dmFyIHV0aWw9cmVxdWlyZSgiY29yZS11dGlsLWlzIik7dXRpbC5pbmhlcml0cz1yZXF1aXJlKCJpbmhlcml0cyIpO3ZhciBkZWJ1Z1V0aWw9cmVxdWlyZSgidXRpbCIpO3ZhciBkZWJ1Zz12b2lkIDA7aWYoZGVidWdVdGlsJiZkZWJ1Z1V0aWwuZGVidWdsb2cpe2RlYnVnPWRlYnVnVXRpbC5kZWJ1Z2xvZygic3RyZWFtIil9ZWxzZXtkZWJ1Zz1mdW5jdGlvbigpe319dmFyIEJ1ZmZlckxpc3Q9cmVxdWlyZSgiLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QiKTt2YXIgU3RyaW5nRGVjb2Rlcjt1dGlsLmluaGVyaXRzKFJlYWRhYmxlLFN0cmVhbSk7ZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsZXZlbnQsZm4pe2lmKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcj09PSJmdW5jdGlvbiIpe3JldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCxmbil9ZWxzZXtpZighZW1pdHRlci5fZXZlbnRzfHwhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSllbWl0dGVyLm9uKGV2ZW50LGZuKTtlbHNlIGlmKGlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF09W2ZuLGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dfX12YXIgRHVwbGV4O2Z1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucyxzdHJlYW0pe0R1cGxleD1EdXBsZXh8fHJlcXVpcmUoIi4vX3N0cmVhbV9kdXBsZXgiKTtvcHRpb25zPW9wdGlvbnN8fHt9O3RoaXMub2JqZWN0TW9kZT0hIW9wdGlvbnMub2JqZWN0TW9kZTtpZihzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpdGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTt2YXIgaHdtPW9wdGlvbnMuaGlnaFdhdGVyTWFyazt2YXIgZGVmYXVsdEh3bT10aGlzLm9iamVjdE1vZGU/MTY6MTYqMTAyNDt0aGlzLmhpZ2hXYXRlck1hcms9aHdtfHxod209PT0wP2h3bTpkZWZhdWx0SHdtO3RoaXMuaGlnaFdhdGVyTWFyaz1+fnRoaXMuaGlnaFdhdGVyTWFyazt0aGlzLmJ1ZmZlcj1uZXcgQnVmZmVyTGlzdDt0aGlzLmxlbmd0aD0wO3RoaXMucGlwZXM9bnVsbDt0aGlzLnBpcGVzQ291bnQ9MDt0aGlzLmZsb3dpbmc9bnVsbDt0aGlzLmVuZGVkPWZhbHNlO3RoaXMuZW5kRW1pdHRlZD1mYWxzZTt0aGlzLnJlYWRpbmc9ZmFsc2U7dGhpcy5zeW5jPXRydWU7dGhpcy5uZWVkUmVhZGFibGU9ZmFsc2U7dGhpcy5lbWl0dGVkUmVhZGFibGU9ZmFsc2U7dGhpcy5yZWFkYWJsZUxpc3RlbmluZz1mYWxzZTt0aGlzLnJlc3VtZVNjaGVkdWxlZD1mYWxzZTt0aGlzLmRlZmF1bHRFbmNvZGluZz1vcHRpb25zLmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiO3RoaXMucmFuT3V0PWZhbHNlO3RoaXMuYXdhaXREcmFpbj0wO3RoaXMucmVhZGluZ01vcmU9ZmFsc2U7dGhpcy5kZWNvZGVyPW51bGw7dGhpcy5lbmNvZGluZz1udWxsO2lmKG9wdGlvbnMuZW5jb2Rpbmcpe2lmKCFTdHJpbmdEZWNvZGVyKVN0cmluZ0RlY29kZXI9cmVxdWlyZSgic3RyaW5nX2RlY29kZXIvIikuU3RyaW5nRGVjb2Rlcjt0aGlzLmRlY29kZXI9bmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7dGhpcy5lbmNvZGluZz1vcHRpb25zLmVuY29kaW5nfX12YXIgRHVwbGV4O2Z1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpe0R1cGxleD1EdXBsZXh8fHJlcXVpcmUoIi4vX3N0cmVhbV9kdXBsZXgiKTtpZighKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKTt0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsdGhpcyk7dGhpcy5yZWFkYWJsZT10cnVlO2lmKG9wdGlvbnMmJnR5cGVvZiBvcHRpb25zLnJlYWQ9PT0iZnVuY3Rpb24iKXRoaXMuX3JlYWQ9b3B0aW9ucy5yZWFkO1N0cmVhbS5jYWxsKHRoaXMpfVJlYWRhYmxlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGNodW5rLGVuY29kaW5nKXt2YXIgc3RhdGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZighc3RhdGUub2JqZWN0TW9kZSYmdHlwZW9mIGNodW5rPT09InN0cmluZyIpe2VuY29kaW5nPWVuY29kaW5nfHxzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7aWYoZW5jb2RpbmchPT1zdGF0ZS5lbmNvZGluZyl7Y2h1bms9YnVmZmVyU2hpbS5mcm9tKGNodW5rLGVuY29kaW5nKTtlbmNvZGluZz0iIn19cmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcyxzdGF0ZSxjaHVuayxlbmNvZGluZyxmYWxzZSl9O1JlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGNodW5rKXt2YXIgc3RhdGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLHN0YXRlLGNodW5rLCIiLHRydWUpfTtSZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPT09ZmFsc2V9O2Z1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLHN0YXRlLGNodW5rLGVuY29kaW5nLGFkZFRvRnJvbnQpe3ZhciBlcj1jaHVua0ludmFsaWQoc3RhdGUsY2h1bmspO2lmKGVyKXtzdHJlYW0uZW1pdCgiZXJyb3IiLGVyKX1lbHNlIGlmKGNodW5rPT09bnVsbCl7c3RhdGUucmVhZGluZz1mYWxzZTtvbkVvZkNodW5rKHN0cmVhbSxzdGF0ZSl9ZWxzZSBpZihzdGF0ZS5vYmplY3RNb2RlfHxjaHVuayYmY2h1bmsubGVuZ3RoPjApe2lmKHN0YXRlLmVuZGVkJiYhYWRkVG9Gcm9udCl7dmFyIGU9bmV3IEVycm9yKCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRiIpO3N0cmVhbS5lbWl0KCJlcnJvciIsZSl9ZWxzZSBpZihzdGF0ZS5lbmRFbWl0dGVkJiZhZGRUb0Zyb250KXt2YXIgX2U9bmV3IEVycm9yKCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpO3N0cmVhbS5lbWl0KCJlcnJvciIsX2UpfWVsc2V7dmFyIHNraXBBZGQ7aWYoc3RhdGUuZGVjb2RlciYmIWFkZFRvRnJvbnQmJiFlbmNvZGluZyl7Y2h1bms9c3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7c2tpcEFkZD0hc3RhdGUub2JqZWN0TW9kZSYmY2h1bmsubGVuZ3RoPT09MH1pZighYWRkVG9Gcm9udClzdGF0ZS5yZWFkaW5nPWZhbHNlO2lmKCFza2lwQWRkKXtpZihzdGF0ZS5mbG93aW5nJiZzdGF0ZS5sZW5ndGg9PT0wJiYhc3RhdGUuc3luYyl7c3RyZWFtLmVtaXQoImRhdGEiLGNodW5rKTtzdHJlYW0ucmVhZCgwKX1lbHNle3N0YXRlLmxlbmd0aCs9c3RhdGUub2JqZWN0TW9kZT8xOmNodW5rLmxlbmd0aDtpZihhZGRUb0Zyb250KXN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtpZihzdGF0ZS5uZWVkUmVhZGFibGUpZW1pdFJlYWRhYmxlKHN0cmVhbSl9fW1heWJlUmVhZE1vcmUoc3RyZWFtLHN0YXRlKX19ZWxzZSBpZighYWRkVG9Gcm9udCl7c3RhdGUucmVhZGluZz1mYWxzZX1yZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKX1mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpe3JldHVybiFzdGF0ZS5lbmRlZCYmKHN0YXRlLm5lZWRSZWFkYWJsZXx8c3RhdGUubGVuZ3RoPHN0YXRlLmhpZ2hXYXRlck1hcmt8fHN0YXRlLmxlbmd0aD09PTApfVJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlbmMpe2lmKCFTdHJpbmdEZWNvZGVyKVN0cmluZ0RlY29kZXI9cmVxdWlyZSgic3RyaW5nX2RlY29kZXIvIikuU3RyaW5nRGVjb2Rlcjt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9bmV3IFN0cmluZ0RlY29kZXIoZW5jKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPWVuYztyZXR1cm4gdGhpc307dmFyIE1BWF9IV009ODM4ODYwODtmdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKXtpZihuPj1NQVhfSFdNKXtuPU1BWF9IV019ZWxzZXtuLS07bnw9bj4+PjE7bnw9bj4+PjI7bnw9bj4+PjQ7bnw9bj4+Pjg7bnw9bj4+PjE2O24rK31yZXR1cm4gbn1mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sc3RhdGUpe2lmKG48PTB8fHN0YXRlLmxlbmd0aD09PTAmJnN0YXRlLmVuZGVkKXJldHVybiAwO2lmKHN0YXRlLm9iamVjdE1vZGUpcmV0dXJuIDE7aWYobiE9PW4pe2lmKHN0YXRlLmZsb3dpbmcmJnN0YXRlLmxlbmd0aClyZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RofWlmKG4+c3RhdGUuaGlnaFdhdGVyTWFyaylzdGF0ZS5oaWdoV2F0ZXJNYXJrPWNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO2lmKG48PXN0YXRlLmxlbmd0aClyZXR1cm4gbjtpZighc3RhdGUuZW5kZWQpe3N0YXRlLm5lZWRSZWFkYWJsZT10cnVlO3JldHVybiAwfXJldHVybiBzdGF0ZS5sZW5ndGh9UmVhZGFibGUucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24obil7ZGVidWcoInJlYWQiLG4pO249cGFyc2VJbnQobiwxMCk7dmFyIHN0YXRlPXRoaXMuX3JlYWRhYmxlU3RhdGU7dmFyIG5PcmlnPW47aWYobiE9PTApc3RhdGUuZW1pdHRlZFJlYWRhYmxlPWZhbHNlO2lmKG49PT0wJiZzdGF0ZS5uZWVkUmVhZGFibGUmJihzdGF0ZS5sZW5ndGg+PXN0YXRlLmhpZ2hXYXRlck1hcmt8fHN0YXRlLmVuZGVkKSl7ZGVidWcoInJlYWQ6IGVtaXRSZWFkYWJsZSIsc3RhdGUubGVuZ3RoLHN0YXRlLmVuZGVkKTtpZihzdGF0ZS5sZW5ndGg9PT0wJiZzdGF0ZS5lbmRlZCllbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtyZXR1cm4gbnVsbH1uPWhvd011Y2hUb1JlYWQobixzdGF0ZSk7aWYobj09PTAmJnN0YXRlLmVuZGVkKXtpZihzdGF0ZS5sZW5ndGg9PT0wKWVuZFJlYWRhYmxlKHRoaXMpO3JldHVybiBudWxsfXZhciBkb1JlYWQ9c3RhdGUubmVlZFJlYWRhYmxlO2RlYnVnKCJuZWVkIHJlYWRhYmxlIixkb1JlYWQpO2lmKHN0YXRlLmxlbmd0aD09PTB8fHN0YXRlLmxlbmd0aC1uPHN0YXRlLmhpZ2hXYXRlck1hcmspe2RvUmVhZD10cnVlO2RlYnVnKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIsZG9SZWFkKX1pZihzdGF0ZS5lbmRlZHx8c3RhdGUucmVhZGluZyl7ZG9SZWFkPWZhbHNlO2RlYnVnKCJyZWFkaW5nIG9yIGVuZGVkIixkb1JlYWQpfWVsc2UgaWYoZG9SZWFkKXtkZWJ1ZygiZG8gcmVhZCIpO3N0YXRlLnJlYWRpbmc9dHJ1ZTtzdGF0ZS5zeW5jPXRydWU7aWYoc3RhdGUubGVuZ3RoPT09MClzdGF0ZS5uZWVkUmVhZGFibGU9dHJ1ZTt0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO3N0YXRlLnN5bmM9ZmFsc2U7aWYoIXN0YXRlLnJlYWRpbmcpbj1ob3dNdWNoVG9SZWFkKG5PcmlnLHN0YXRlKX12YXIgcmV0O2lmKG4+MClyZXQ9ZnJvbUxpc3QobixzdGF0ZSk7ZWxzZSByZXQ9bnVsbDtpZihyZXQ9PT1udWxsKXtzdGF0ZS5uZWVkUmVhZGFibGU9dHJ1ZTtuPTB9ZWxzZXtzdGF0ZS5sZW5ndGgtPW59aWYoc3RhdGUubGVuZ3RoPT09MCl7aWYoIXN0YXRlLmVuZGVkKXN0YXRlLm5lZWRSZWFkYWJsZT10cnVlO2lmKG5PcmlnIT09biYmc3RhdGUuZW5kZWQpZW5kUmVhZGFibGUodGhpcyl9aWYocmV0IT09bnVsbCl0aGlzLmVtaXQoImRhdGEiLHJldCk7cmV0dXJuIHJldH07ZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLGNodW5rKXt2YXIgZXI9bnVsbDtpZighQnVmZmVyLmlzQnVmZmVyKGNodW5rKSYmdHlwZW9mIGNodW5rIT09InN0cmluZyImJmNodW5rIT09bnVsbCYmY2h1bmshPT11bmRlZmluZWQmJiFzdGF0ZS5vYmplY3RNb2RlKXtlcj1uZXcgVHlwZUVycm9yKCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rIil9cmV0dXJuIGVyfWZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLHN0YXRlKXtpZihzdGF0ZS5lbmRlZClyZXR1cm47aWYoc3RhdGUuZGVjb2Rlcil7dmFyIGNodW5rPXN0YXRlLmRlY29kZXIuZW5kKCk7aWYoY2h1bmsmJmNodW5rLmxlbmd0aCl7c3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO3N0YXRlLmxlbmd0aCs9c3RhdGUub2JqZWN0TW9kZT8xOmNodW5rLmxlbmd0aH19c3RhdGUuZW5kZWQ9dHJ1ZTtlbWl0UmVhZGFibGUoc3RyZWFtKX1mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKXt2YXIgc3RhdGU9c3RyZWFtLl9yZWFkYWJsZVN0YXRlO3N0YXRlLm5lZWRSZWFkYWJsZT1mYWxzZTtpZighc3RhdGUuZW1pdHRlZFJlYWRhYmxlKXtkZWJ1ZygiZW1pdFJlYWRhYmxlIixzdGF0ZS5mbG93aW5nKTtzdGF0ZS5lbWl0dGVkUmVhZGFibGU9dHJ1ZTtpZihzdGF0ZS5zeW5jKXByb2Nlc3NOZXh0VGljayhlbWl0UmVhZGFibGVfLHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSl9fWZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKXtkZWJ1ZygiZW1pdCByZWFkYWJsZSIpO3N0cmVhbS5lbWl0KCJyZWFkYWJsZSIpO2Zsb3coc3RyZWFtKX1mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSxzdGF0ZSl7aWYoIXN0YXRlLnJlYWRpbmdNb3JlKXtzdGF0ZS5yZWFkaW5nTW9yZT10cnVlO3Byb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXyxzdHJlYW0sc3RhdGUpfX1mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sc3RhdGUpe3ZhciBsZW49c3RhdGUubGVuZ3RoO3doaWxlKCFzdGF0ZS5yZWFkaW5nJiYhc3RhdGUuZmxvd2luZyYmIXN0YXRlLmVuZGVkJiZzdGF0ZS5sZW5ndGg8c3RhdGUuaGlnaFdhdGVyTWFyayl7ZGVidWcoIm1heWJlUmVhZE1vcmUgcmVhZCAwIik7c3RyZWFtLnJlYWQoMCk7aWYobGVuPT09c3RhdGUubGVuZ3RoKWJyZWFrO2Vsc2UgbGVuPXN0YXRlLmxlbmd0aH1zdGF0ZS5yZWFkaW5nTW9yZT1mYWxzZX1SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24obil7dGhpcy5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKSl9O1JlYWRhYmxlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGRlc3QscGlwZU9wdHMpe3ZhciBzcmM9dGhpczt2YXIgc3RhdGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2goc3RhdGUucGlwZXNDb3VudCl7Y2FzZSAwOnN0YXRlLnBpcGVzPWRlc3Q7YnJlYWs7Y2FzZSAxOnN0YXRlLnBpcGVzPVtzdGF0ZS5waXBlcyxkZXN0XTticmVhaztkZWZhdWx0OnN0YXRlLnBpcGVzLnB1c2goZGVzdCk7YnJlYWt9c3RhdGUucGlwZXNDb3VudCs9MTtkZWJ1ZygicGlwZSBjb3VudD0lZCBvcHRzPSVqIixzdGF0ZS5waXBlc0NvdW50LHBpcGVPcHRzKTt2YXIgZG9FbmQ9KCFwaXBlT3B0c3x8cGlwZU9wdHMuZW5kIT09ZmFsc2UpJiZkZXN0IT09cHJvY2Vzcy5zdGRvdXQmJmRlc3QhPT1wcm9jZXNzLnN0ZGVycjt2YXIgZW5kRm49ZG9FbmQ/b25lbmQ6Y2xlYW51cDtpZihzdGF0ZS5lbmRFbWl0dGVkKXByb2Nlc3NOZXh0VGljayhlbmRGbik7ZWxzZSBzcmMub25jZSgiZW5kIixlbmRGbik7ZGVzdC5vbigidW5waXBlIixvbnVucGlwZSk7ZnVuY3Rpb24gb251bnBpcGUocmVhZGFibGUpe2RlYnVnKCJvbnVucGlwZSIpO2lmKHJlYWRhYmxlPT09c3JjKXtjbGVhbnVwKCl9fWZ1bmN0aW9uIG9uZW5kKCl7ZGVidWcoIm9uZW5kIik7ZGVzdC5lbmQoKX12YXIgb25kcmFpbj1waXBlT25EcmFpbihzcmMpO2Rlc3Qub24oImRyYWluIixvbmRyYWluKTt2YXIgY2xlYW5lZFVwPWZhbHNlO2Z1bmN0aW9uIGNsZWFudXAoKXtkZWJ1ZygiY2xlYW51cCIpO2Rlc3QucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixvbmNsb3NlKTtkZXN0LnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLG9uZmluaXNoKTtkZXN0LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsb25kcmFpbik7ZGVzdC5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLG9uZXJyb3IpO2Rlc3QucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIsb251bnBpcGUpO3NyYy5yZW1vdmVMaXN0ZW5lcigiZW5kIixvbmVuZCk7c3JjLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGNsZWFudXApO3NyYy5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsb25kYXRhKTtjbGVhbmVkVXA9dHJ1ZTtpZihzdGF0ZS5hd2FpdERyYWluJiYoIWRlc3QuX3dyaXRhYmxlU3RhdGV8fGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSlvbmRyYWluKCl9dmFyIGluY3JlYXNlZEF3YWl0RHJhaW49ZmFsc2U7c3JjLm9uKCJkYXRhIixvbmRhdGEpO2Z1bmN0aW9uIG9uZGF0YShjaHVuayl7ZGVidWcoIm9uZGF0YSIpO2luY3JlYXNlZEF3YWl0RHJhaW49ZmFsc2U7dmFyIHJldD1kZXN0LndyaXRlKGNodW5rKTtpZihmYWxzZT09PXJldCYmIWluY3JlYXNlZEF3YWl0RHJhaW4pe2lmKChzdGF0ZS5waXBlc0NvdW50PT09MSYmc3RhdGUucGlwZXM9PT1kZXN0fHxzdGF0ZS5waXBlc0NvdW50PjEmJmluZGV4T2Yoc3RhdGUucGlwZXMsZGVzdCkhPT0tMSkmJiFjbGVhbmVkVXApe2RlYnVnKCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrO2luY3JlYXNlZEF3YWl0RHJhaW49dHJ1ZX1zcmMucGF1c2UoKX19ZnVuY3Rpb24gb25lcnJvcihlcil7ZGVidWcoIm9uZXJyb3IiLGVyKTt1bnBpcGUoKTtkZXN0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsb25lcnJvcik7aWYoRUVsaXN0ZW5lckNvdW50KGRlc3QsImVycm9yIik9PT0wKWRlc3QuZW1pdCgiZXJyb3IiLGVyKX1wcmVwZW5kTGlzdGVuZXIoZGVzdCwiZXJyb3IiLG9uZXJyb3IpO2Z1bmN0aW9uIG9uY2xvc2UoKXtkZXN0LnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLG9uZmluaXNoKTt1bnBpcGUoKX1kZXN0Lm9uY2UoImNsb3NlIixvbmNsb3NlKTtmdW5jdGlvbiBvbmZpbmlzaCgpe2RlYnVnKCJvbmZpbmlzaCIpO2Rlc3QucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixvbmNsb3NlKTt1bnBpcGUoKX1kZXN0Lm9uY2UoImZpbmlzaCIsb25maW5pc2gpO2Z1bmN0aW9uIHVucGlwZSgpe2RlYnVnKCJ1bnBpcGUiKTtzcmMudW5waXBlKGRlc3QpfWRlc3QuZW1pdCgicGlwZSIsc3JjKTtpZighc3RhdGUuZmxvd2luZyl7ZGVidWcoInBpcGUgcmVzdW1lIik7c3JjLnJlc3VtZSgpfXJldHVybiBkZXN0fTtmdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBzdGF0ZT1zcmMuX3JlYWRhYmxlU3RhdGU7ZGVidWcoInBpcGVPbkRyYWluIixzdGF0ZS5hd2FpdERyYWluKTtpZihzdGF0ZS5hd2FpdERyYWluKXN0YXRlLmF3YWl0RHJhaW4tLTtpZihzdGF0ZS5hd2FpdERyYWluPT09MCYmRUVsaXN0ZW5lckNvdW50KHNyYywiZGF0YSIpKXtzdGF0ZS5mbG93aW5nPXRydWU7ZmxvdyhzcmMpfX19UmVhZGFibGUucHJvdG90eXBlLnVucGlwZT1mdW5jdGlvbihkZXN0KXt2YXIgc3RhdGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZihzdGF0ZS5waXBlc0NvdW50PT09MClyZXR1cm4gdGhpcztpZihzdGF0ZS5waXBlc0NvdW50PT09MSl7aWYoZGVzdCYmZGVzdCE9PXN0YXRlLnBpcGVzKXJldHVybiB0aGlzO2lmKCFkZXN0KWRlc3Q9c3RhdGUucGlwZXM7c3RhdGUucGlwZXM9bnVsbDtzdGF0ZS5waXBlc0NvdW50PTA7c3RhdGUuZmxvd2luZz1mYWxzZTtpZihkZXN0KWRlc3QuZW1pdCgidW5waXBlIix0aGlzKTtyZXR1cm4gdGhpc31pZighZGVzdCl7dmFyIGRlc3RzPXN0YXRlLnBpcGVzO3ZhciBsZW49c3RhdGUucGlwZXNDb3VudDtzdGF0ZS5waXBlcz1udWxsO3N0YXRlLnBpcGVzQ291bnQ9MDtzdGF0ZS5mbG93aW5nPWZhbHNlO2Zvcih2YXIgX2k9MDtfaTxsZW47X2krKyl7ZGVzdHNbX2ldLmVtaXQoInVucGlwZSIsdGhpcyl9cmV0dXJuIHRoaXN9dmFyIGk9aW5kZXhPZihzdGF0ZS5waXBlcyxkZXN0KTtpZihpPT09LTEpcmV0dXJuIHRoaXM7c3RhdGUucGlwZXMuc3BsaWNlKGksMSk7c3RhdGUucGlwZXNDb3VudC09MTtpZihzdGF0ZS5waXBlc0NvdW50PT09MSlzdGF0ZS5waXBlcz1zdGF0ZS5waXBlc1swXTtkZXN0LmVtaXQoInVucGlwZSIsdGhpcyk7cmV0dXJuIHRoaXN9O1JlYWRhYmxlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihldixmbil7dmFyIHJlcz1TdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcyxldixmbik7aWYoZXY9PT0iZGF0YSIpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyE9PWZhbHNlKXRoaXMucmVzdW1lKCl9ZWxzZSBpZihldj09PSJyZWFkYWJsZSIpe3ZhciBzdGF0ZT10aGlzLl9yZWFkYWJsZVN0YXRlO2lmKCFzdGF0ZS5lbmRFbWl0dGVkJiYhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpe3N0YXRlLnJlYWRhYmxlTGlzdGVuaW5nPXN0YXRlLm5lZWRSZWFkYWJsZT10cnVlO3N0YXRlLmVtaXR0ZWRSZWFkYWJsZT1mYWxzZTtpZighc3RhdGUucmVhZGluZyl7cHJvY2Vzc05leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssdGhpcyl9ZWxzZSBpZihzdGF0ZS5sZW5ndGgpe2VtaXRSZWFkYWJsZSh0aGlzLHN0YXRlKX19fXJldHVybiByZXN9O1JlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1SZWFkYWJsZS5wcm90b3R5cGUub247ZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKXtkZWJ1ZygicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIik7c2VsZi5yZWFkKDApfVJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgc3RhdGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZighc3RhdGUuZmxvd2luZyl7ZGVidWcoInJlc3VtZSIpO3N0YXRlLmZsb3dpbmc9dHJ1ZTtyZXN1bWUodGhpcyxzdGF0ZSl9cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIHJlc3VtZShzdHJlYW0sc3RhdGUpe2lmKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpe3N0YXRlLnJlc3VtZVNjaGVkdWxlZD10cnVlO3Byb2Nlc3NOZXh0VGljayhyZXN1bWVfLHN0cmVhbSxzdGF0ZSl9fWZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLHN0YXRlKXtpZighc3RhdGUucmVhZGluZyl7ZGVidWcoInJlc3VtZSByZWFkIDAiKTtzdHJlYW0ucmVhZCgwKX1zdGF0ZS5yZXN1bWVTY2hlZHVsZWQ9ZmFsc2U7c3RhdGUuYXdhaXREcmFpbj0wO3N0cmVhbS5lbWl0KCJyZXN1bWUiKTtmbG93KHN0cmVhbSk7aWYoc3RhdGUuZmxvd2luZyYmIXN0YXRlLnJlYWRpbmcpc3RyZWFtLnJlYWQoMCl9UmVhZGFibGUucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7ZGVidWcoImNhbGwgcGF1c2UgZmxvd2luZz0laiIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtpZihmYWxzZSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyl7ZGVidWcoInBhdXNlIik7dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPWZhbHNlO3RoaXMuZW1pdCgicGF1c2UiKX1yZXR1cm4gdGhpc307ZnVuY3Rpb24gZmxvdyhzdHJlYW0pe3ZhciBzdGF0ZT1zdHJlYW0uX3JlYWRhYmxlU3RhdGU7ZGVidWcoImZsb3ciLHN0YXRlLmZsb3dpbmcpO3doaWxlKHN0YXRlLmZsb3dpbmcmJnN0cmVhbS5yZWFkKCkhPT1udWxsKXt9fVJlYWRhYmxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHN0cmVhbSl7dmFyIHN0YXRlPXRoaXMuX3JlYWRhYmxlU3RhdGU7dmFyIHBhdXNlZD1mYWxzZTt2YXIgc2VsZj10aGlzO3N0cmVhbS5vbigiZW5kIixmdW5jdGlvbigpe2RlYnVnKCJ3cmFwcGVkIGVuZCIpO2lmKHN0YXRlLmRlY29kZXImJiFzdGF0ZS5lbmRlZCl7dmFyIGNodW5rPXN0YXRlLmRlY29kZXIuZW5kKCk7aWYoY2h1bmsmJmNodW5rLmxlbmd0aClzZWxmLnB1c2goY2h1bmspfXNlbGYucHVzaChudWxsKX0pO3N0cmVhbS5vbigiZGF0YSIsZnVuY3Rpb24oY2h1bmspe2RlYnVnKCJ3cmFwcGVkIGRhdGEiKTtpZihzdGF0ZS5kZWNvZGVyKWNodW5rPXN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO2lmKHN0YXRlLm9iamVjdE1vZGUmJihjaHVuaz09PW51bGx8fGNodW5rPT09dW5kZWZpbmVkKSlyZXR1cm47ZWxzZSBpZighc3RhdGUub2JqZWN0TW9kZSYmKCFjaHVua3x8IWNodW5rLmxlbmd0aCkpcmV0dXJuO3ZhciByZXQ9c2VsZi5wdXNoKGNodW5rKTtpZighcmV0KXtwYXVzZWQ9dHJ1ZTtzdHJlYW0ucGF1c2UoKX19KTtmb3IodmFyIGkgaW4gc3RyZWFtKXtpZih0aGlzW2ldPT09dW5kZWZpbmVkJiZ0eXBlb2Ygc3RyZWFtW2ldPT09ImZ1bmN0aW9uIil7dGhpc1tpXT1mdW5jdGlvbihtZXRob2Qpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sYXJndW1lbnRzKX19KGkpfX12YXIgZXZlbnRzPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2ZvckVhY2goZXZlbnRzLGZ1bmN0aW9uKGV2KXtzdHJlYW0ub24oZXYsc2VsZi5lbWl0LmJpbmQoc2VsZixldikpfSk7c2VsZi5fcmVhZD1mdW5jdGlvbihuKXtkZWJ1Zygid3JhcHBlZCBfcmVhZCIsbik7aWYocGF1c2VkKXtwYXVzZWQ9ZmFsc2U7c3RyZWFtLnJlc3VtZSgpfX07cmV0dXJuIHNlbGZ9O1JlYWRhYmxlLl9mcm9tTGlzdD1mcm9tTGlzdDtmdW5jdGlvbiBmcm9tTGlzdChuLHN0YXRlKXtpZihzdGF0ZS5sZW5ndGg9PT0wKXJldHVybiBudWxsO3ZhciByZXQ7aWYoc3RhdGUub2JqZWN0TW9kZSlyZXQ9c3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZighbnx8bj49c3RhdGUubGVuZ3RoKXtpZihzdGF0ZS5kZWNvZGVyKXJldD1zdGF0ZS5idWZmZXIuam9pbigiIik7ZWxzZSBpZihzdGF0ZS5idWZmZXIubGVuZ3RoPT09MSlyZXQ9c3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldD1zdGF0ZS5idWZmZXIuY29uY2F0KHN0YXRlLmxlbmd0aCk7c3RhdGUuYnVmZmVyLmNsZWFyKCl9ZWxzZXtyZXQ9ZnJvbUxpc3RQYXJ0aWFsKG4sc3RhdGUuYnVmZmVyLHN0YXRlLmRlY29kZXIpfXJldHVybiByZXR9ZnVuY3Rpb24gZnJvbUxpc3RQYXJ0aWFsKG4sbGlzdCxoYXNTdHJpbmdzKXt2YXIgcmV0O2lmKG48bGlzdC5oZWFkLmRhdGEubGVuZ3RoKXtyZXQ9bGlzdC5oZWFkLmRhdGEuc2xpY2UoMCxuKTtsaXN0LmhlYWQuZGF0YT1saXN0LmhlYWQuZGF0YS5zbGljZShuKX1lbHNlIGlmKG49PT1saXN0LmhlYWQuZGF0YS5sZW5ndGgpe3JldD1saXN0LnNoaWZ0KCl9ZWxzZXtyZXQ9aGFzU3RyaW5ncz9jb3B5RnJvbUJ1ZmZlclN0cmluZyhuLGxpc3QpOmNvcHlGcm9tQnVmZmVyKG4sbGlzdCl9cmV0dXJuIHJldH1mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLGxpc3Qpe3ZhciBwPWxpc3QuaGVhZDt2YXIgYz0xO3ZhciByZXQ9cC5kYXRhO24tPXJldC5sZW5ndGg7d2hpbGUocD1wLm5leHQpe3ZhciBzdHI9cC5kYXRhO3ZhciBuYj1uPnN0ci5sZW5ndGg/c3RyLmxlbmd0aDpuO2lmKG5iPT09c3RyLmxlbmd0aClyZXQrPXN0cjtlbHNlIHJldCs9c3RyLnNsaWNlKDAsbik7bi09bmI7aWYobj09PTApe2lmKG5iPT09c3RyLmxlbmd0aCl7KytjO2lmKHAubmV4dClsaXN0LmhlYWQ9cC5uZXh0O2Vsc2UgbGlzdC5oZWFkPWxpc3QudGFpbD1udWxsfWVsc2V7bGlzdC5oZWFkPXA7cC5kYXRhPXN0ci5zbGljZShuYil9YnJlYWt9KytjfWxpc3QubGVuZ3RoLT1jO3JldHVybiByZXR9ZnVuY3Rpb24gY29weUZyb21CdWZmZXIobixsaXN0KXt2YXIgcmV0PWJ1ZmZlclNoaW0uYWxsb2NVbnNhZmUobik7dmFyIHA9bGlzdC5oZWFkO3ZhciBjPTE7cC5kYXRhLmNvcHkocmV0KTtuLT1wLmRhdGEubGVuZ3RoO3doaWxlKHA9cC5uZXh0KXt2YXIgYnVmPXAuZGF0YTt2YXIgbmI9bj5idWYubGVuZ3RoP2J1Zi5sZW5ndGg6bjtidWYuY29weShyZXQscmV0Lmxlbmd0aC1uLDAsbmIpO24tPW5iO2lmKG49PT0wKXtpZihuYj09PWJ1Zi5sZW5ndGgpeysrYztpZihwLm5leHQpbGlzdC5oZWFkPXAubmV4dDtlbHNlIGxpc3QuaGVhZD1saXN0LnRhaWw9bnVsbH1lbHNle2xpc3QuaGVhZD1wO3AuZGF0YT1idWYuc2xpY2UobmIpfWJyZWFrfSsrY31saXN0Lmxlbmd0aC09YztyZXR1cm4gcmV0fWZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSl7dmFyIHN0YXRlPXN0cmVhbS5fcmVhZGFibGVTdGF0ZTtpZihzdGF0ZS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoJyJlbmRSZWFkYWJsZSgpIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO2lmKCFzdGF0ZS5lbmRFbWl0dGVkKXtzdGF0ZS5lbmRlZD10cnVlO3Byb2Nlc3NOZXh0VGljayhlbmRSZWFkYWJsZU5ULHN0YXRlLHN0cmVhbSl9fWZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsc3RyZWFtKXtpZighc3RhdGUuZW5kRW1pdHRlZCYmc3RhdGUubGVuZ3RoPT09MCl7c3RhdGUuZW5kRW1pdHRlZD10cnVlO3N0cmVhbS5yZWFkYWJsZT1mYWxzZTtzdHJlYW0uZW1pdCgiZW5kIil9fWZ1bmN0aW9uIGZvckVhY2goeHMsZil7Zm9yKHZhciBpPTAsbD14cy5sZW5ndGg7aTxsO2krKyl7Zih4c1tpXSxpKX19ZnVuY3Rpb24gaW5kZXhPZih4cyx4KXtmb3IodmFyIGk9MCxsPXhzLmxlbmd0aDtpPGw7aSsrKXtpZih4c1tpXT09PXgpcmV0dXJuIGl9cmV0dXJuLTF9fSkuY2FsbCh0aGlzLHJlcXVpcmUoIl9wcm9jZXNzIikpfSx7Ii4vX3N0cmVhbV9kdXBsZXgiOjQ0LCIuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCI6NDksX3Byb2Nlc3M6NDIsYnVmZmVyOjUsImJ1ZmZlci1zaGltcyI6NCwiY29yZS11dGlsLWlzIjo2LGV2ZW50czoyOCxpbmhlcml0czozOCxpc2FycmF5OjQwLCJwcm9jZXNzLW5leHRpY2stYXJncyI6NDEsInN0cmluZ19kZWNvZGVyLyI6NTYsdXRpbDozfV0sNDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijttb2R1bGUuZXhwb3J0cz1UcmFuc2Zvcm07dmFyIER1cGxleD1yZXF1aXJlKCIuL19zdHJlYW1fZHVwbGV4Iik7dmFyIHV0aWw9cmVxdWlyZSgiY29yZS11dGlsLWlzIik7dXRpbC5pbmhlcml0cz1yZXF1aXJlKCJpbmhlcml0cyIpO3V0aWwuaW5oZXJpdHMoVHJhbnNmb3JtLER1cGxleCk7ZnVuY3Rpb24gVHJhbnNmb3JtU3RhdGUoc3RyZWFtKXt0aGlzLmFmdGVyVHJhbnNmb3JtPWZ1bmN0aW9uKGVyLGRhdGEpe3JldHVybiBhZnRlclRyYW5zZm9ybShzdHJlYW0sZXIsZGF0YSl9O3RoaXMubmVlZFRyYW5zZm9ybT1mYWxzZTt0aGlzLnRyYW5zZm9ybWluZz1mYWxzZTt0aGlzLndyaXRlY2I9bnVsbDt0aGlzLndyaXRlY2h1bms9bnVsbDt0aGlzLndyaXRlZW5jb2Rpbmc9bnVsbH1mdW5jdGlvbiBhZnRlclRyYW5zZm9ybShzdHJlYW0sZXIsZGF0YSl7dmFyIHRzPXN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7dHMudHJhbnNmb3JtaW5nPWZhbHNlO3ZhciBjYj10cy53cml0ZWNiO2lmKCFjYilyZXR1cm4gc3RyZWFtLmVtaXQoImVycm9yIixuZXcgRXJyb3IoIm5vIHdyaXRlY2IgaW4gVHJhbnNmb3JtIGNsYXNzIikpO3RzLndyaXRlY2h1bms9bnVsbDt0cy53cml0ZWNiPW51bGw7aWYoZGF0YSE9PW51bGwmJmRhdGEhPT11bmRlZmluZWQpc3RyZWFtLnB1c2goZGF0YSk7Y2IoZXIpO3ZhciBycz1zdHJlYW0uX3JlYWRhYmxlU3RhdGU7cnMucmVhZGluZz1mYWxzZTtpZihycy5uZWVkUmVhZGFibGV8fHJzLmxlbmd0aDxycy5oaWdoV2F0ZXJNYXJrKXtzdHJlYW0uX3JlYWQocnMuaGlnaFdhdGVyTWFyayl9fWZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKXtpZighKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKXJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO0R1cGxleC5jYWxsKHRoaXMsb3B0aW9ucyk7dGhpcy5fdHJhbnNmb3JtU3RhdGU9bmV3IFRyYW5zZm9ybVN0YXRlKHRoaXMpO3ZhciBzdHJlYW09dGhpczt0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT10cnVlO3RoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz1mYWxzZTtpZihvcHRpb25zKXtpZih0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm09PT0iZnVuY3Rpb24iKXRoaXMuX3RyYW5zZm9ybT1vcHRpb25zLnRyYW5zZm9ybTtpZih0eXBlb2Ygb3B0aW9ucy5mbHVzaD09PSJmdW5jdGlvbiIpdGhpcy5fZmx1c2g9b3B0aW9ucy5mbHVzaH10aGlzLm9uY2UoInByZWZpbmlzaCIsZnVuY3Rpb24oKXtpZih0eXBlb2YgdGhpcy5fZmx1c2g9PT0iZnVuY3Rpb24iKXRoaXMuX2ZsdXNoKGZ1bmN0aW9uKGVyKXtkb25lKHN0cmVhbSxlcil9KTtlbHNlIGRvbmUoc3RyZWFtKX0pfVRyYW5zZm9ybS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihjaHVuayxlbmNvZGluZyl7dGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT1mYWxzZTtyZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxjaHVuayxlbmNvZGluZyl9O1RyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihjaHVuayxlbmNvZGluZyxjYil7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX07VHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oY2h1bmssZW5jb2RpbmcsY2Ipe3ZhciB0cz10aGlzLl90cmFuc2Zvcm1TdGF0ZTt0cy53cml0ZWNiPWNiO3RzLndyaXRlY2h1bms9Y2h1bms7dHMud3JpdGVlbmNvZGluZz1lbmNvZGluZztpZighdHMudHJhbnNmb3JtaW5nKXt2YXIgcnM9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZih0cy5uZWVkVHJhbnNmb3JtfHxycy5uZWVkUmVhZGFibGV8fHJzLmxlbmd0aDxycy5oaWdoV2F0ZXJNYXJrKXRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayl9fTtUcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKG4pe3ZhciB0cz10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZih0cy53cml0ZWNodW5rIT09bnVsbCYmdHMud3JpdGVjYiYmIXRzLnRyYW5zZm9ybWluZyl7dHMudHJhbnNmb3JtaW5nPXRydWU7dGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssdHMud3JpdGVlbmNvZGluZyx0cy5hZnRlclRyYW5zZm9ybSl9ZWxzZXt0cy5uZWVkVHJhbnNmb3JtPXRydWV9fTtmdW5jdGlvbiBkb25lKHN0cmVhbSxlcil7aWYoZXIpcmV0dXJuIHN0cmVhbS5lbWl0KCJlcnJvciIsZXIpO3ZhciB3cz1zdHJlYW0uX3dyaXRhYmxlU3RhdGU7dmFyIHRzPXN0cmVhbS5fdHJhbnNmb3JtU3RhdGU7aWYod3MubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwIik7aWYodHMudHJhbnNmb3JtaW5nKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZyIpO3JldHVybiBzdHJlYW0ucHVzaChudWxsKX19LHsiLi9fc3RyZWFtX2R1cGxleCI6NDQsImNvcmUtdXRpbC1pcyI6Nixpbmhlcml0czozOH1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsoZnVuY3Rpb24ocHJvY2Vzcyl7InVzZSBzdHJpY3QiO21vZHVsZS5leHBvcnRzPVdyaXRhYmxlO3ZhciBwcm9jZXNzTmV4dFRpY2s9cmVxdWlyZSgicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiKTt2YXIgYXN5bmNXcml0ZT0hcHJvY2Vzcy5icm93c2VyJiZbInYwLjEwIiwidjAuOS4iXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLDUpKT4tMT9zZXRJbW1lZGlhdGU6cHJvY2Vzc05leHRUaWNrO1dyaXRhYmxlLldyaXRhYmxlU3RhdGU9V3JpdGFibGVTdGF0ZTt2YXIgdXRpbD1yZXF1aXJlKCJjb3JlLXV0aWwtaXMiKTt1dGlsLmluaGVyaXRzPXJlcXVpcmUoImluaGVyaXRzIik7dmFyIGludGVybmFsVXRpbD17ZGVwcmVjYXRlOnJlcXVpcmUoInV0aWwtZGVwcmVjYXRlIil9O3ZhciBTdHJlYW07KGZ1bmN0aW9uKCl7dHJ5e1N0cmVhbT1yZXF1aXJlKCJzdCIrInJlYW0iKX1jYXRjaChfKXt9ZmluYWxseXtpZighU3RyZWFtKVN0cmVhbT1yZXF1aXJlKCJldmVudHMiKS5FdmVudEVtaXR0ZXJ9fSkoKTt2YXIgQnVmZmVyPXJlcXVpcmUoImJ1ZmZlciIpLkJ1ZmZlcjt2YXIgYnVmZmVyU2hpbT1yZXF1aXJlKCJidWZmZXItc2hpbXMiKTt1dGlsLmluaGVyaXRzKFdyaXRhYmxlLFN0cmVhbSk7ZnVuY3Rpb24gbm9wKCl7fWZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLGVuY29kaW5nLGNiKXt0aGlzLmNodW5rPWNodW5rO3RoaXMuZW5jb2Rpbmc9ZW5jb2Rpbmc7dGhpcy5jYWxsYmFjaz1jYjt0aGlzLm5leHQ9bnVsbH12YXIgRHVwbGV4O2Z1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucyxzdHJlYW0pe0R1cGxleD1EdXBsZXh8fHJlcXVpcmUoIi4vX3N0cmVhbV9kdXBsZXgiKTtvcHRpb25zPW9wdGlvbnN8fHt9O3RoaXMub2JqZWN0TW9kZT0hIW9wdGlvbnMub2JqZWN0TW9kZTtpZihzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpdGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTt2YXIgaHdtPW9wdGlvbnMuaGlnaFdhdGVyTWFyazt2YXIgZGVmYXVsdEh3bT10aGlzLm9iamVjdE1vZGU/MTY6MTYqMTAyNDt0aGlzLmhpZ2hXYXRlck1hcms9aHdtfHxod209PT0wP2h3bTpkZWZhdWx0SHdtO3RoaXMuaGlnaFdhdGVyTWFyaz1+fnRoaXMuaGlnaFdhdGVyTWFyazt0aGlzLm5lZWREcmFpbj1mYWxzZTt0aGlzLmVuZGluZz1mYWxzZTt0aGlzLmVuZGVkPWZhbHNlO3RoaXMuZmluaXNoZWQ9ZmFsc2U7dmFyIG5vRGVjb2RlPW9wdGlvbnMuZGVjb2RlU3RyaW5ncz09PWZhbHNlO3RoaXMuZGVjb2RlU3RyaW5ncz0hbm9EZWNvZGU7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9b3B0aW9ucy5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Ijt0aGlzLmxlbmd0aD0wO3RoaXMud3JpdGluZz1mYWxzZTt0aGlzLmNvcmtlZD0wO3RoaXMuc3luYz10cnVlO3RoaXMuYnVmZmVyUHJvY2Vzc2luZz1mYWxzZTt0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oZXIpe29ud3JpdGUoc3RyZWFtLGVyKX07dGhpcy53cml0ZWNiPW51bGw7dGhpcy53cml0ZWxlbj0wO3RoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGw7dGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGw7dGhpcy5wZW5kaW5nY2I9MDt0aGlzLnByZWZpbmlzaGVkPWZhbHNlO3RoaXMuZXJyb3JFbWl0dGVkPWZhbHNlO3RoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MDt0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgQ29ya2VkUmVxdWVzdCh0aGlzKX1Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24gd3JpdGFibGVTdGF0ZUdldEJ1ZmZlcigpe3ZhciBjdXJyZW50PXRoaXMuYnVmZmVyZWRSZXF1ZXN0O3ZhciBvdXQ9W107d2hpbGUoY3VycmVudCl7b3V0LnB1c2goY3VycmVudCk7Y3VycmVudD1jdXJyZW50Lm5leHR9cmV0dXJuIG91dH07KGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwiYnVmZmVyIix7Z2V0OmludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICIrImluc3RlYWQuIil9KX1jYXRjaChfKXt9fSkoKTt2YXIgRHVwbGV4O2Z1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpe0R1cGxleD1EdXBsZXh8fHJlcXVpcmUoIi4vX3N0cmVhbV9kdXBsZXgiKTtpZighKHRoaXMgaW5zdGFuY2VvZiBXcml0YWJsZSkmJiEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsdGhpcyk7dGhpcy53cml0YWJsZT10cnVlO2lmKG9wdGlvbnMpe2lmKHR5cGVvZiBvcHRpb25zLndyaXRlPT09ImZ1bmN0aW9uIil0aGlzLl93cml0ZT1vcHRpb25zLndyaXRlO2lmKHR5cGVvZiBvcHRpb25zLndyaXRldj09PSJmdW5jdGlvbiIpdGhpcy5fd3JpdGV2PW9wdGlvbnMud3JpdGV2fVN0cmVhbS5jYWxsKHRoaXMpfVdyaXRhYmxlLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dGhpcy5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlIikpfTtmdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSxjYil7dmFyIGVyPW5ldyBFcnJvcigid3JpdGUgYWZ0ZXIgZW5kIik7c3RyZWFtLmVtaXQoImVycm9yIixlcik7cHJvY2Vzc05leHRUaWNrKGNiLGVyKX1mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSxzdGF0ZSxjaHVuayxjYil7dmFyIHZhbGlkPXRydWU7dmFyIGVyPWZhbHNlO2lmKGNodW5rPT09bnVsbCl7ZXI9bmV3IFR5cGVFcnJvcigiTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iKX1lbHNlIGlmKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspJiZ0eXBlb2YgY2h1bmshPT0ic3RyaW5nIiYmY2h1bmshPT11bmRlZmluZWQmJiFzdGF0ZS5vYmplY3RNb2RlKXtlcj1uZXcgVHlwZUVycm9yKCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rIil9aWYoZXIpe3N0cmVhbS5lbWl0KCJlcnJvciIsZXIpO3Byb2Nlc3NOZXh0VGljayhjYixlcik7dmFsaWQ9ZmFsc2V9cmV0dXJuIHZhbGlkfVdyaXRhYmxlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihjaHVuayxlbmNvZGluZyxjYil7dmFyIHN0YXRlPXRoaXMuX3dyaXRhYmxlU3RhdGU7dmFyIHJldD1mYWxzZTtpZih0eXBlb2YgZW5jb2Rpbmc9PT0iZnVuY3Rpb24iKXtjYj1lbmNvZGluZztlbmNvZGluZz1udWxsfWlmKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpZW5jb2Rpbmc9ImJ1ZmZlciI7ZWxzZSBpZighZW5jb2RpbmcpZW5jb2Rpbmc9c3RhdGUuZGVmYXVsdEVuY29kaW5nO2lmKHR5cGVvZiBjYiE9PSJmdW5jdGlvbiIpY2I9bm9wO2lmKHN0YXRlLmVuZGVkKXdyaXRlQWZ0ZXJFbmQodGhpcyxjYik7ZWxzZSBpZih2YWxpZENodW5rKHRoaXMsc3RhdGUsY2h1bmssY2IpKXsKK3N0YXRlLnBlbmRpbmdjYisrO3JldD13cml0ZU9yQnVmZmVyKHRoaXMsc3RhdGUsY2h1bmssZW5jb2RpbmcsY2IpfXJldHVybiByZXR9O1dyaXRhYmxlLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dmFyIHN0YXRlPXRoaXMuX3dyaXRhYmxlU3RhdGU7c3RhdGUuY29ya2VkKyt9O1dyaXRhYmxlLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgc3RhdGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtpZihzdGF0ZS5jb3JrZWQpe3N0YXRlLmNvcmtlZC0tO2lmKCFzdGF0ZS53cml0aW5nJiYhc3RhdGUuY29ya2VkJiYhc3RhdGUuZmluaXNoZWQmJiFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nJiZzdGF0ZS5idWZmZXJlZFJlcXVlc3QpY2xlYXJCdWZmZXIodGhpcyxzdGF0ZSl9fTtXcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZyl7aWYodHlwZW9mIGVuY29kaW5nPT09InN0cmluZyIpZW5jb2Rpbmc9ZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtpZighKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKChlbmNvZGluZysiIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZW5jb2RpbmcpO3RoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPWVuY29kaW5nO3JldHVybiB0aGlzfTtmdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSxjaHVuayxlbmNvZGluZyl7aWYoIXN0YXRlLm9iamVjdE1vZGUmJnN0YXRlLmRlY29kZVN0cmluZ3MhPT1mYWxzZSYmdHlwZW9mIGNodW5rPT09InN0cmluZyIpe2NodW5rPWJ1ZmZlclNoaW0uZnJvbShjaHVuayxlbmNvZGluZyl9cmV0dXJuIGNodW5rfWZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLHN0YXRlLGNodW5rLGVuY29kaW5nLGNiKXtjaHVuaz1kZWNvZGVDaHVuayhzdGF0ZSxjaHVuayxlbmNvZGluZyk7aWYoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSllbmNvZGluZz0iYnVmZmVyIjt2YXIgbGVuPXN0YXRlLm9iamVjdE1vZGU/MTpjaHVuay5sZW5ndGg7c3RhdGUubGVuZ3RoKz1sZW47dmFyIHJldD1zdGF0ZS5sZW5ndGg8c3RhdGUuaGlnaFdhdGVyTWFyaztpZighcmV0KXN0YXRlLm5lZWREcmFpbj10cnVlO2lmKHN0YXRlLndyaXRpbmd8fHN0YXRlLmNvcmtlZCl7dmFyIGxhc3Q9c3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW5ldyBXcml0ZVJlcShjaHVuayxlbmNvZGluZyxjYik7aWYobGFzdCl7bGFzdC5uZXh0PXN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3R9ZWxzZXtzdGF0ZS5idWZmZXJlZFJlcXVlc3Q9c3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdH1zdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNle2RvV3JpdGUoc3RyZWFtLHN0YXRlLGZhbHNlLGxlbixjaHVuayxlbmNvZGluZyxjYil9cmV0dXJuIHJldH1mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSxzdGF0ZSx3cml0ZXYsbGVuLGNodW5rLGVuY29kaW5nLGNiKXtzdGF0ZS53cml0ZWxlbj1sZW47c3RhdGUud3JpdGVjYj1jYjtzdGF0ZS53cml0aW5nPXRydWU7c3RhdGUuc3luYz10cnVlO2lmKHdyaXRldilzdHJlYW0uX3dyaXRldihjaHVuayxzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssZW5jb2Rpbmcsc3RhdGUub253cml0ZSk7c3RhdGUuc3luYz1mYWxzZX1mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLHN0YXRlLHN5bmMsZXIsY2Ipey0tc3RhdGUucGVuZGluZ2NiO2lmKHN5bmMpcHJvY2Vzc05leHRUaWNrKGNiLGVyKTtlbHNlIGNiKGVyKTtzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPXRydWU7c3RyZWFtLmVtaXQoImVycm9yIixlcil9ZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKXtzdGF0ZS53cml0aW5nPWZhbHNlO3N0YXRlLndyaXRlY2I9bnVsbDtzdGF0ZS5sZW5ndGgtPXN0YXRlLndyaXRlbGVuO3N0YXRlLndyaXRlbGVuPTB9ZnVuY3Rpb24gb253cml0ZShzdHJlYW0sZXIpe3ZhciBzdGF0ZT1zdHJlYW0uX3dyaXRhYmxlU3RhdGU7dmFyIHN5bmM9c3RhdGUuc3luYzt2YXIgY2I9c3RhdGUud3JpdGVjYjtvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO2lmKGVyKW9ud3JpdGVFcnJvcihzdHJlYW0sc3RhdGUsc3luYyxlcixjYik7ZWxzZXt2YXIgZmluaXNoZWQ9bmVlZEZpbmlzaChzdGF0ZSk7aWYoIWZpbmlzaGVkJiYhc3RhdGUuY29ya2VkJiYhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyYmc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KXtjbGVhckJ1ZmZlcihzdHJlYW0sc3RhdGUpfWlmKHN5bmMpe2FzeW5jV3JpdGUoYWZ0ZXJXcml0ZSxzdHJlYW0sc3RhdGUsZmluaXNoZWQsY2IpfWVsc2V7YWZ0ZXJXcml0ZShzdHJlYW0sc3RhdGUsZmluaXNoZWQsY2IpfX19ZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sc3RhdGUsZmluaXNoZWQsY2Ipe2lmKCFmaW5pc2hlZClvbndyaXRlRHJhaW4oc3RyZWFtLHN0YXRlKTtzdGF0ZS5wZW5kaW5nY2ItLTtjYigpO2ZpbmlzaE1heWJlKHN0cmVhbSxzdGF0ZSl9ZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSxzdGF0ZSl7aWYoc3RhdGUubGVuZ3RoPT09MCYmc3RhdGUubmVlZERyYWluKXtzdGF0ZS5uZWVkRHJhaW49ZmFsc2U7c3RyZWFtLmVtaXQoImRyYWluIil9fWZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSxzdGF0ZSl7c3RhdGUuYnVmZmVyUHJvY2Vzc2luZz10cnVlO3ZhciBlbnRyeT1zdGF0ZS5idWZmZXJlZFJlcXVlc3Q7aWYoc3RyZWFtLl93cml0ZXYmJmVudHJ5JiZlbnRyeS5uZXh0KXt2YXIgbD1zdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDt2YXIgYnVmZmVyPW5ldyBBcnJheShsKTt2YXIgaG9sZGVyPXN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZTtob2xkZXIuZW50cnk9ZW50cnk7dmFyIGNvdW50PTA7d2hpbGUoZW50cnkpe2J1ZmZlcltjb3VudF09ZW50cnk7ZW50cnk9ZW50cnkubmV4dDtjb3VudCs9MX1kb1dyaXRlKHN0cmVhbSxzdGF0ZSx0cnVlLHN0YXRlLmxlbmd0aCxidWZmZXIsIiIsaG9sZGVyLmZpbmlzaCk7c3RhdGUucGVuZGluZ2NiKys7c3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsO2lmKGhvbGRlci5uZXh0KXtzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9aG9sZGVyLm5leHQ7aG9sZGVyLm5leHQ9bnVsbH1lbHNle3N0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSl9fWVsc2V7d2hpbGUoZW50cnkpe3ZhciBjaHVuaz1lbnRyeS5jaHVuazt2YXIgZW5jb2Rpbmc9ZW50cnkuZW5jb2Rpbmc7dmFyIGNiPWVudHJ5LmNhbGxiYWNrO3ZhciBsZW49c3RhdGUub2JqZWN0TW9kZT8xOmNodW5rLmxlbmd0aDtkb1dyaXRlKHN0cmVhbSxzdGF0ZSxmYWxzZSxsZW4sY2h1bmssZW5jb2RpbmcsY2IpO2VudHJ5PWVudHJ5Lm5leHQ7aWYoc3RhdGUud3JpdGluZyl7YnJlYWt9fWlmKGVudHJ5PT09bnVsbClzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGx9c3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MDtzdGF0ZS5idWZmZXJlZFJlcXVlc3Q9ZW50cnk7c3RhdGUuYnVmZmVyUHJvY2Vzc2luZz1mYWxzZX1Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGNodW5rLGVuY29kaW5nLGNiKXtjYihuZXcgRXJyb3IoIm5vdCBpbXBsZW1lbnRlZCIpKX07V3JpdGFibGUucHJvdG90eXBlLl93cml0ZXY9bnVsbDtXcml0YWJsZS5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGNodW5rLGVuY29kaW5nLGNiKXt2YXIgc3RhdGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtpZih0eXBlb2YgY2h1bms9PT0iZnVuY3Rpb24iKXtjYj1jaHVuaztjaHVuaz1udWxsO2VuY29kaW5nPW51bGx9ZWxzZSBpZih0eXBlb2YgZW5jb2Rpbmc9PT0iZnVuY3Rpb24iKXtjYj1lbmNvZGluZztlbmNvZGluZz1udWxsfWlmKGNodW5rIT09bnVsbCYmY2h1bmshPT11bmRlZmluZWQpdGhpcy53cml0ZShjaHVuayxlbmNvZGluZyk7aWYoc3RhdGUuY29ya2VkKXtzdGF0ZS5jb3JrZWQ9MTt0aGlzLnVuY29yaygpfWlmKCFzdGF0ZS5lbmRpbmcmJiFzdGF0ZS5maW5pc2hlZCllbmRXcml0YWJsZSh0aGlzLHN0YXRlLGNiKX07ZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSl7cmV0dXJuIHN0YXRlLmVuZGluZyYmc3RhdGUubGVuZ3RoPT09MCYmc3RhdGUuYnVmZmVyZWRSZXF1ZXN0PT09bnVsbCYmIXN0YXRlLmZpbmlzaGVkJiYhc3RhdGUud3JpdGluZ31mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLHN0YXRlKXtpZighc3RhdGUucHJlZmluaXNoZWQpe3N0YXRlLnByZWZpbmlzaGVkPXRydWU7c3RyZWFtLmVtaXQoInByZWZpbmlzaCIpfX1mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sc3RhdGUpe3ZhciBuZWVkPW5lZWRGaW5pc2goc3RhdGUpO2lmKG5lZWQpe2lmKHN0YXRlLnBlbmRpbmdjYj09PTApe3ByZWZpbmlzaChzdHJlYW0sc3RhdGUpO3N0YXRlLmZpbmlzaGVkPXRydWU7c3RyZWFtLmVtaXQoImZpbmlzaCIpfWVsc2V7cHJlZmluaXNoKHN0cmVhbSxzdGF0ZSl9fXJldHVybiBuZWVkfWZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSxzdGF0ZSxjYil7c3RhdGUuZW5kaW5nPXRydWU7ZmluaXNoTWF5YmUoc3RyZWFtLHN0YXRlKTtpZihjYil7aWYoc3RhdGUuZmluaXNoZWQpcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCJmaW5pc2giLGNiKX1zdGF0ZS5lbmRlZD10cnVlO3N0cmVhbS53cml0YWJsZT1mYWxzZX1mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKXt2YXIgX3RoaXM9dGhpczt0aGlzLm5leHQ9bnVsbDt0aGlzLmVudHJ5PW51bGw7dGhpcy5maW5pc2g9ZnVuY3Rpb24oZXJyKXt2YXIgZW50cnk9X3RoaXMuZW50cnk7X3RoaXMuZW50cnk9bnVsbDt3aGlsZShlbnRyeSl7dmFyIGNiPWVudHJ5LmNhbGxiYWNrO3N0YXRlLnBlbmRpbmdjYi0tO2NiKGVycik7ZW50cnk9ZW50cnkubmV4dH1pZihzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUpe3N0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PV90aGlzfWVsc2V7c3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlPV90aGlzfX19fSkuY2FsbCh0aGlzLHJlcXVpcmUoIl9wcm9jZXNzIikpfSx7Ii4vX3N0cmVhbV9kdXBsZXgiOjQ0LF9wcm9jZXNzOjQyLGJ1ZmZlcjo1LCJidWZmZXItc2hpbXMiOjQsImNvcmUtdXRpbC1pcyI6NixldmVudHM6MjgsaW5oZXJpdHM6MzgsInByb2Nlc3MtbmV4dGljay1hcmdzIjo0MSwidXRpbC1kZXByZWNhdGUiOjU3fV0sNDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgQnVmZmVyPXJlcXVpcmUoImJ1ZmZlciIpLkJ1ZmZlcjt2YXIgYnVmZmVyU2hpbT1yZXF1aXJlKCJidWZmZXItc2hpbXMiKTttb2R1bGUuZXhwb3J0cz1CdWZmZXJMaXN0O2Z1bmN0aW9uIEJ1ZmZlckxpc3QoKXt0aGlzLmhlYWQ9bnVsbDt0aGlzLnRhaWw9bnVsbDt0aGlzLmxlbmd0aD0wfUJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odil7dmFyIGVudHJ5PXtkYXRhOnYsbmV4dDpudWxsfTtpZih0aGlzLmxlbmd0aD4wKXRoaXMudGFpbC5uZXh0PWVudHJ5O2Vsc2UgdGhpcy5oZWFkPWVudHJ5O3RoaXMudGFpbD1lbnRyeTsrK3RoaXMubGVuZ3RofTtCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKHYpe3ZhciBlbnRyeT17ZGF0YTp2LG5leHQ6dGhpcy5oZWFkfTtpZih0aGlzLmxlbmd0aD09PTApdGhpcy50YWlsPWVudHJ5O3RoaXMuaGVhZD1lbnRyeTsrK3RoaXMubGVuZ3RofTtCdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe2lmKHRoaXMubGVuZ3RoPT09MClyZXR1cm47dmFyIHJldD10aGlzLmhlYWQuZGF0YTtpZih0aGlzLmxlbmd0aD09PTEpdGhpcy5oZWFkPXRoaXMudGFpbD1udWxsO2Vsc2UgdGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0Oy0tdGhpcy5sZW5ndGg7cmV0dXJuIHJldH07QnVmZmVyTGlzdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw7dGhpcy5sZW5ndGg9MH07QnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbj1mdW5jdGlvbihzKXtpZih0aGlzLmxlbmd0aD09PTApcmV0dXJuIiI7dmFyIHA9dGhpcy5oZWFkO3ZhciByZXQ9IiIrcC5kYXRhO3doaWxlKHA9cC5uZXh0KXtyZXQrPXMrcC5kYXRhfXJldHVybiByZXR9O0J1ZmZlckxpc3QucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbihuKXtpZih0aGlzLmxlbmd0aD09PTApcmV0dXJuIGJ1ZmZlclNoaW0uYWxsb2MoMCk7aWYodGhpcy5sZW5ndGg9PT0xKXJldHVybiB0aGlzLmhlYWQuZGF0YTt2YXIgcmV0PWJ1ZmZlclNoaW0uYWxsb2NVbnNhZmUobj4+PjApO3ZhciBwPXRoaXMuaGVhZDt2YXIgaT0wO3doaWxlKHApe3AuZGF0YS5jb3B5KHJldCxpKTtpKz1wLmRhdGEubGVuZ3RoO3A9cC5uZXh0fXJldHVybiByZXR9fSx7YnVmZmVyOjUsImJ1ZmZlci1zaGltcyI6NH1dLDUwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz1yZXF1aXJlKCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIil9LHsiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyI6NDV9XSw1MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7KGZ1bmN0aW9uKHByb2Nlc3Mpe3ZhciBTdHJlYW09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoInN0IisicmVhbSIpfWNhdGNoKF8pe319KCk7ZXhwb3J0cz1tb2R1bGUuZXhwb3J0cz1yZXF1aXJlKCIuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIik7ZXhwb3J0cy5TdHJlYW09U3RyZWFtfHxleHBvcnRzO2V4cG9ydHMuUmVhZGFibGU9ZXhwb3J0cztleHBvcnRzLldyaXRhYmxlPXJlcXVpcmUoIi4vbGliL19zdHJlYW1fd3JpdGFibGUuanMiKTtleHBvcnRzLkR1cGxleD1yZXF1aXJlKCIuL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIpO2V4cG9ydHMuVHJhbnNmb3JtPXJlcXVpcmUoIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIik7ZXhwb3J0cy5QYXNzVGhyb3VnaD1yZXF1aXJlKCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIik7aWYoIXByb2Nlc3MuYnJvd3NlciYmcHJvY2Vzcy5lbnYuUkVBREFCTEVfU1RSRUFNPT09ImRpc2FibGUiJiZTdHJlYW0pe21vZHVsZS5leHBvcnRzPVN0cmVhbX19KS5jYWxsKHRoaXMscmVxdWlyZSgiX3Byb2Nlc3MiKSl9LHsiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiOjQ0LCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIjo0NSwiLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyI6NDYsIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIjo0NywiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyI6NDgsX3Byb2Nlc3M6NDJ9XSw1MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9cmVxdWlyZSgiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiKX0seyIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyI6NDd9XSw1MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9cmVxdWlyZSgiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIpfSx7Ii4vbGliL19zdHJlYW1fd3JpdGFibGUuanMiOjQ4fV0sNTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHN0cmluZyl7cmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bLVxcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX19LHt9XSw1NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9U3RyZWFtO3ZhciBFRT1yZXF1aXJlKCJldmVudHMiKS5FdmVudEVtaXR0ZXI7dmFyIGluaGVyaXRzPXJlcXVpcmUoImluaGVyaXRzIik7aW5oZXJpdHMoU3RyZWFtLEVFKTtTdHJlYW0uUmVhZGFibGU9cmVxdWlyZSgicmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIik7U3RyZWFtLldyaXRhYmxlPXJlcXVpcmUoInJlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyIpO1N0cmVhbS5EdXBsZXg9cmVxdWlyZSgicmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcyIpO1N0cmVhbS5UcmFuc2Zvcm09cmVxdWlyZSgicmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcyIpO1N0cmVhbS5QYXNzVGhyb3VnaD1yZXF1aXJlKCJyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiKTtTdHJlYW0uU3RyZWFtPVN0cmVhbTtmdW5jdGlvbiBTdHJlYW0oKXtFRS5jYWxsKHRoaXMpfVN0cmVhbS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihkZXN0LG9wdGlvbnMpe3ZhciBzb3VyY2U9dGhpcztmdW5jdGlvbiBvbmRhdGEoY2h1bmspe2lmKGRlc3Qud3JpdGFibGUpe2lmKGZhbHNlPT09ZGVzdC53cml0ZShjaHVuaykmJnNvdXJjZS5wYXVzZSl7c291cmNlLnBhdXNlKCl9fX1zb3VyY2Uub24oImRhdGEiLG9uZGF0YSk7ZnVuY3Rpb24gb25kcmFpbigpe2lmKHNvdXJjZS5yZWFkYWJsZSYmc291cmNlLnJlc3VtZSl7c291cmNlLnJlc3VtZSgpfX1kZXN0Lm9uKCJkcmFpbiIsb25kcmFpbik7aWYoIWRlc3QuX2lzU3RkaW8mJighb3B0aW9uc3x8b3B0aW9ucy5lbmQhPT1mYWxzZSkpe3NvdXJjZS5vbigiZW5kIixvbmVuZCk7c291cmNlLm9uKCJjbG9zZSIsb25jbG9zZSl9dmFyIGRpZE9uRW5kPWZhbHNlO2Z1bmN0aW9uIG9uZW5kKCl7aWYoZGlkT25FbmQpcmV0dXJuO2RpZE9uRW5kPXRydWU7ZGVzdC5lbmQoKX1mdW5jdGlvbiBvbmNsb3NlKCl7aWYoZGlkT25FbmQpcmV0dXJuO2RpZE9uRW5kPXRydWU7aWYodHlwZW9mIGRlc3QuZGVzdHJveT09PSJmdW5jdGlvbiIpZGVzdC5kZXN0cm95KCl9ZnVuY3Rpb24gb25lcnJvcihlcil7Y2xlYW51cCgpO2lmKEVFLmxpc3RlbmVyQ291bnQodGhpcywiZXJyb3IiKT09PTApe3Rocm93IGVyfX1zb3VyY2Uub24oImVycm9yIixvbmVycm9yKTtkZXN0Lm9uKCJlcnJvciIsb25lcnJvcik7ZnVuY3Rpb24gY2xlYW51cCgpe3NvdXJjZS5yZW1vdmVMaXN0ZW5lcigiZGF0YSIsb25kYXRhKTtkZXN0LnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsb25kcmFpbik7c291cmNlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLG9uZW5kKTtzb3VyY2UucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixvbmNsb3NlKTtzb3VyY2UucmVtb3ZlTGlzdGVuZXIoImVycm9yIixvbmVycm9yKTtkZXN0LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsb25lcnJvcik7c291cmNlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGNsZWFudXApO3NvdXJjZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGNsZWFudXApO2Rlc3QucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixjbGVhbnVwKX1zb3VyY2Uub24oImVuZCIsY2xlYW51cCk7c291cmNlLm9uKCJjbG9zZSIsY2xlYW51cCk7ZGVzdC5vbigiY2xvc2UiLGNsZWFudXApO2Rlc3QuZW1pdCgicGlwZSIsc291cmNlKTtyZXR1cm4gZGVzdH19LHtldmVudHM6MjgsaW5oZXJpdHM6MzgsInJlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMiOjQzLCJyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiOjUwLCJyZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMiOjUxLCJyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzIjo1MiwicmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzIjo1M31dLDU2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgQnVmZmVyPXJlcXVpcmUoImJ1ZmZlciIpLkJ1ZmZlcjt2YXIgaXNCdWZmZXJFbmNvZGluZz1CdWZmZXIuaXNFbmNvZGluZ3x8ZnVuY3Rpb24oZW5jb2Rpbmcpe3N3aXRjaChlbmNvZGluZyYmZW5jb2RpbmcudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiB0cnVlO2RlZmF1bHQ6cmV0dXJuIGZhbHNlfX07ZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmcoZW5jb2Rpbmcpe2lmKGVuY29kaW5nJiYhaXNCdWZmZXJFbmNvZGluZyhlbmNvZGluZykpe3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlbmNvZGluZyl9fXZhciBTdHJpbmdEZWNvZGVyPWV4cG9ydHMuU3RyaW5nRGVjb2Rlcj1mdW5jdGlvbihlbmNvZGluZyl7dGhpcy5lbmNvZGluZz0oZW5jb2Rpbmd8fCJ1dGY4IikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9dLywiIik7YXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpO3N3aXRjaCh0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjgiOnRoaXMuc3Vycm9nYXRlU2l6ZT0zO2JyZWFrO2Nhc2UidWNzMiI6Y2FzZSJ1dGYxNmxlIjp0aGlzLnN1cnJvZ2F0ZVNpemU9Mjt0aGlzLmRldGVjdEluY29tcGxldGVDaGFyPXV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXI7YnJlYWs7Y2FzZSJiYXNlNjQiOnRoaXMuc3Vycm9nYXRlU2l6ZT0zO3RoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXI9YmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXI7YnJlYWs7ZGVmYXVsdDp0aGlzLndyaXRlPXBhc3NUaHJvdWdoV3JpdGU7cmV0dXJufXRoaXMuY2hhckJ1ZmZlcj1uZXcgQnVmZmVyKDYpO3RoaXMuY2hhclJlY2VpdmVkPTA7dGhpcy5jaGFyTGVuZ3RoPTB9O1N0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGJ1ZmZlcil7dmFyIGNoYXJTdHI9IiI7d2hpbGUodGhpcy5jaGFyTGVuZ3RoKXt2YXIgYXZhaWxhYmxlPWJ1ZmZlci5sZW5ndGg+PXRoaXMuY2hhckxlbmd0aC10aGlzLmNoYXJSZWNlaXZlZD90aGlzLmNoYXJMZW5ndGgtdGhpcy5jaGFyUmVjZWl2ZWQ6YnVmZmVyLmxlbmd0aDtidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsdGhpcy5jaGFyUmVjZWl2ZWQsMCxhdmFpbGFibGUpO3RoaXMuY2hhclJlY2VpdmVkKz1hdmFpbGFibGU7aWYodGhpcy5jaGFyUmVjZWl2ZWQ8dGhpcy5jaGFyTGVuZ3RoKXtyZXR1cm4iIn1idWZmZXI9YnVmZmVyLnNsaWNlKGF2YWlsYWJsZSxidWZmZXIubGVuZ3RoKTtjaGFyU3RyPXRoaXMuY2hhckJ1ZmZlci5zbGljZSgwLHRoaXMuY2hhckxlbmd0aCkudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7dmFyIGNoYXJDb2RlPWNoYXJTdHIuY2hhckNvZGVBdChjaGFyU3RyLmxlbmd0aC0xKTtpZihjaGFyQ29kZT49NTUyOTYmJmNoYXJDb2RlPD01NjMxOSl7dGhpcy5jaGFyTGVuZ3RoKz10aGlzLnN1cnJvZ2F0ZVNpemU7Y2hhclN0cj0iIjtjb250aW51ZX10aGlzLmNoYXJSZWNlaXZlZD10aGlzLmNoYXJMZW5ndGg9MDtpZihidWZmZXIubGVuZ3RoPT09MCl7cmV0dXJuIGNoYXJTdHJ9YnJlYWt9dGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpO3ZhciBlbmQ9YnVmZmVyLmxlbmd0aDtpZih0aGlzLmNoYXJMZW5ndGgpe2J1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgtdGhpcy5jaGFyUmVjZWl2ZWQsZW5kKTtlbmQtPXRoaXMuY2hhclJlY2VpdmVkfWNoYXJTdHIrPWJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsZW5kKTt2YXIgZW5kPWNoYXJTdHIubGVuZ3RoLTE7dmFyIGNoYXJDb2RlPWNoYXJTdHIuY2hhckNvZGVBdChlbmQpO2lmKGNoYXJDb2RlPj01NTI5NiYmY2hhckNvZGU8PTU2MzE5KXt2YXIgc2l6ZT10aGlzLnN1cnJvZ2F0ZVNpemU7dGhpcy5jaGFyTGVuZ3RoKz1zaXplO3RoaXMuY2hhclJlY2VpdmVkKz1zaXplO3RoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlcixzaXplLDAsc2l6ZSk7YnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLDAsMCxzaXplKTtyZXR1cm4gY2hhclN0ci5zdWJzdHJpbmcoMCxlbmQpfXJldHVybiBjaGFyU3RyfTtTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhcj1mdW5jdGlvbihidWZmZXIpe3ZhciBpPWJ1ZmZlci5sZW5ndGg+PTM/MzpidWZmZXIubGVuZ3RoO2Zvcig7aT4wO2ktLSl7dmFyIGM9YnVmZmVyW2J1ZmZlci5sZW5ndGgtaV07aWYoaT09MSYmYz4+NT09Nil7dGhpcy5jaGFyTGVuZ3RoPTI7YnJlYWt9aWYoaTw9MiYmYz4+ND09MTQpe3RoaXMuY2hhckxlbmd0aD0zO2JyZWFrfWlmKGk8PTMmJmM+PjM9PTMwKXt0aGlzLmNoYXJMZW5ndGg9NDticmVha319dGhpcy5jaGFyUmVjZWl2ZWQ9aX07U3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGJ1ZmZlcil7dmFyIHJlcz0iIjtpZihidWZmZXImJmJ1ZmZlci5sZW5ndGgpcmVzPXRoaXMud3JpdGUoYnVmZmVyKTtpZih0aGlzLmNoYXJSZWNlaXZlZCl7dmFyIGNyPXRoaXMuY2hhclJlY2VpdmVkO3ZhciBidWY9dGhpcy5jaGFyQnVmZmVyO3ZhciBlbmM9dGhpcy5lbmNvZGluZztyZXMrPWJ1Zi5zbGljZSgwLGNyKS50b1N0cmluZyhlbmMpfXJldHVybiByZXN9O2Z1bmN0aW9uIHBhc3NUaHJvdWdoV3JpdGUoYnVmZmVyKXtyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpfWZ1bmN0aW9uIHV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKXt0aGlzLmNoYXJSZWNlaXZlZD1idWZmZXIubGVuZ3RoJTI7dGhpcy5jaGFyTGVuZ3RoPXRoaXMuY2hhclJlY2VpdmVkPzI6MH1mdW5jdGlvbiBiYXNlNjREZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpe3RoaXMuY2hhclJlY2VpdmVkPWJ1ZmZlci5sZW5ndGglMzt0aGlzLmNoYXJMZW5ndGg9dGhpcy5jaGFyUmVjZWl2ZWQ/MzowfX0se2J1ZmZlcjo1fV0sNTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeyhmdW5jdGlvbihnbG9iYWwpe21vZHVsZS5leHBvcnRzPWRlcHJlY2F0ZTtmdW5jdGlvbiBkZXByZWNhdGUoZm4sbXNnKXtpZihjb25maWcoIm5vRGVwcmVjYXRpb24iKSl7cmV0dXJuIGZufXZhciB3YXJuZWQ9ZmFsc2U7ZnVuY3Rpb24gZGVwcmVjYXRlZCgpe2lmKCF3YXJuZWQpe2lmKGNvbmZpZygidGhyb3dEZXByZWNhdGlvbiIpKXt0aHJvdyBuZXcgRXJyb3IobXNnKX1lbHNlIGlmKGNvbmZpZygidHJhY2VEZXByZWNhdGlvbiIpKXtjb25zb2xlLnRyYWNlKG1zZyl9ZWxzZXtjb25zb2xlLndhcm4obXNnKX13YXJuZWQ9dHJ1ZX1yZXR1cm4gZm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBkZXByZWNhdGVkfWZ1bmN0aW9uIGNvbmZpZyhuYW1lKXt0cnl7aWYoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpcmV0dXJuIGZhbHNlfWNhdGNoKF8pe3JldHVybiBmYWxzZX12YXIgdmFsPWdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07aWYobnVsbD09dmFsKXJldHVybiBmYWxzZTtyZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKT09PSJ0cnVlIn19KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiP3dpbmRvdzp7fSl9LHt9XSw1ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9ZXh0ZW5kO3ZhciBoYXNPd25Qcm9wZXJ0eT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGV4dGVuZCgpe3ZhciB0YXJnZXQ9e307Zm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIHNvdXJjZT1hcmd1bWVudHNbaV07Zm9yKHZhciBrZXkgaW4gc291cmNlKXtpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKXt0YXJnZXRba2V5XT1zb3VyY2Vba2V5XX19fXJldHVybiB0YXJnZXR9fSx7fV19LHt9LFsxXSkoMSl9KTsKKworLyoqCisgKiBzd2FnZ2VyLWNsaWVudCAtIHN3YWdnZXItY2xpZW50IGlzIGEgamF2YXNjcmlwdCBjbGllbnQgZm9yIHVzZSB3aXRoIHN3YWdnZXJpbmcgQVBJcy4KKyAqIEB2ZXJzaW9uIHYyLjEuMzIKKyAqIEBsaW5rIGh0dHA6Ly9zd2FnZ2VyLmlvCisgKiBAbGljZW5zZSBBcGFjaGUtMi4wCisgKi8KKyhmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKXtkZWZpbmUoW10sZil9ZWxzZXt2YXIgZztpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe2c9c2VsZn1lbHNle2c9dGhpc31nLlN3YWdnZXJDbGllbnQgPSBmKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiAoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cgZi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGF1dGggPSByZXF1aXJlKCcuL2xpYi9hdXRoJyk7Cit2YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vbGliL2hlbHBlcnMnKTsKK3ZhciBTd2FnZ2VyQ2xpZW50ID0gcmVxdWlyZSgnLi9saWIvY2xpZW50Jyk7Cit2YXIgZGVwcmVjYXRpb25XcmFwcGVyID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykgeworICBoZWxwZXJzLmxvZygnVGhpcyBpcyBkZXByZWNhdGVkLCB1c2UgIm5ldyBTd2FnZ2VyQ2xpZW50IiBpbnN0ZWFkLicpOworCisgIHJldHVybiBuZXcgU3dhZ2dlckNsaWVudCh1cmwsIG9wdGlvbnMpOworfTsKKworLyogSGVyZSBmb3IgSUU4IFN1cHBvcnQgKi8KK2lmICghQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHsKKyAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbihvYmosIHN0YXJ0KSB7CisgICAgZm9yICh2YXIgaSA9IChzdGFydCB8fCAwKSwgaiA9IHRoaXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CisgICAgICBpZiAodGhpc1tpXSA9PT0gb2JqKSB7IHJldHVybiBpOyB9CisgICAgfQorICAgIHJldHVybiAtMTsKKyAgfTsKK30KKworLyogSGVyZSBmb3IgSUU4IFN1cHBvcnQgKi8KK2lmICghU3RyaW5nLnByb3RvdHlwZS50cmltKSB7CisgIFN0cmluZy5wcm90b3R5cGUudHJpbSA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOworICB9OworfQorCisvKiBIZXJlIGZvciBub2RlIDEwLnggc3VwcG9ydCAqLworaWYgKCFTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKSB7CisgIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbihzdWZmaXgpIHsKKyAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN1ZmZpeCwgdGhpcy5sZW5ndGggLSBzdWZmaXgubGVuZ3RoKSAhPT0gLTE7CisgIH07Cit9CisKK21vZHVsZS5leHBvcnRzID0gU3dhZ2dlckNsaWVudDsKKworU3dhZ2dlckNsaWVudC5BcGlLZXlBdXRob3JpemF0aW9uID0gYXV0aC5BcGlLZXlBdXRob3JpemF0aW9uOworU3dhZ2dlckNsaWVudC5QYXNzd29yZEF1dGhvcml6YXRpb24gPSBhdXRoLlBhc3N3b3JkQXV0aG9yaXphdGlvbjsKK1N3YWdnZXJDbGllbnQuQ29va2llQXV0aG9yaXphdGlvbiA9IGF1dGguQ29va2llQXV0aG9yaXphdGlvbjsKK1N3YWdnZXJDbGllbnQuU3dhZ2dlckFwaSA9IGRlcHJlY2F0aW9uV3JhcHBlcjsKK1N3YWdnZXJDbGllbnQuU3dhZ2dlckNsaWVudCA9IGRlcHJlY2F0aW9uV3JhcHBlcjsKK1N3YWdnZXJDbGllbnQuU2NoZW1hTWFya3VwID0gcmVxdWlyZSgnLi9saWIvc2NoZW1hLW1hcmt1cCcpOworCit9LHsiLi9saWIvYXV0aCI6MiwiLi9saWIvY2xpZW50IjozLCIuL2xpYi9oZWxwZXJzIjo0LCIuL2xpYi9zY2hlbWEtbWFya3VwIjo3fV0sMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBoZWxwZXJzID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7Cit2YXIgYnRvYSA9IHJlcXVpcmUoJ2J0b2EnKTsgLy8ganNoaW50IGlnbm9yZTpsaW5lCit2YXIgQ29va2llSmFyID0gcmVxdWlyZSgnY29va2llamFyJykuQ29va2llSmFyOwordmFyIF8gPSB7CisgIGVhY2g6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9lYWNoJyksCisgIGluY2x1ZGVzOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vaW5jbHVkZXMnKSwKKyAgaXNPYmplY3Q6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCcpLAorICBpc0FycmF5OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheScpCit9OworCisvKioKKyAqIFN3YWdnZXJBdXRob3JpemF0aW9ucyBhcHBsaWVzIHRoZSBjb3JyZWN0IGF1dGhvcml6YXRpb24gdG8gYW4gb3BlcmF0aW9uIGJlaW5nIGV4ZWN1dGVkCisgKi8KK3ZhciBTd2FnZ2VyQXV0aG9yaXphdGlvbnMgPSBtb2R1bGUuZXhwb3J0cy5Td2FnZ2VyQXV0aG9yaXphdGlvbnMgPSBmdW5jdGlvbiAoYXV0aHopIHsKKyAgdGhpcy5hdXRoeiA9IGF1dGh6IHx8IHt9OworfTsKKworLyoqCisgKiBBZGQgYXV0aHMgdG8gdGhlIGhhc2gKKyAqIFdpbGwgb3ZlcndyaXRlIGFueSBleGlzdGluZworICoKKyAqLworU3dhZ2dlckF1dGhvcml6YXRpb25zLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAobmFtZSwgYXV0aCkgeworICBpZihfLmlzT2JqZWN0KG5hbWUpKSB7CisgICAgZm9yICh2YXIga2V5IGluIG5hbWUpIHsKKyAgICAgIHRoaXMuYXV0aHpba2V5XSA9IG5hbWVba2V5XTsKKyAgICB9CisgIH0gZWxzZSBpZih0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgKXsKKyAgICB0aGlzLmF1dGh6W25hbWVdID0gYXV0aDsKKyAgfQorCisgIHJldHVybiBhdXRoOworfTsKKworU3dhZ2dlckF1dGhvcml6YXRpb25zLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAobmFtZSkgeworICByZXR1cm4gZGVsZXRlIHRoaXMuYXV0aHpbbmFtZV07Cit9OworCitTd2FnZ2VyQXV0aG9yaXphdGlvbnMucHJvdG90eXBlLmFwcGx5ID0gZnVuY3Rpb24gKG9iaiwgc2VjdXJpdGllcykgeworICB2YXIgc3RhdHVzID0gdHJ1ZTsKKyAgdmFyIGFwcGx5QWxsID0gIXNlY3VyaXRpZXM7CisgIHZhciBmbGF0dGVuZWRTZWN1cml0aWVzID0gW107CisKKyAgLy8gZmF2b3IgdGhlIG9iamVjdC1sZXZlbCBhdXRob3JpemF0aW9ucyBvdmVyIGdsb2JhbAorICB2YXIgYXV0aHogPSBvYmouY2xpZW50QXV0aG9yaXphdGlvbnMgfHwgdGhpcy5hdXRoejsKKworICAvLyBTZWN1cml0aWVzIGNvdWxkIGJlIFsge30gXQorICBfLmVhY2goc2VjdXJpdGllcywgZnVuY3Rpb24gKG9iaiwga2V5KSB7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgYWNjb3VudCBmb3Igc2VjdXJpdGllcyBiZWluZyBbIHN0ciBdCisgICAgaWYodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHsKKyAgICAgIGZsYXR0ZW5lZFNlY3VyaXRpZXMucHVzaChrZXkpOworICAgIH0KKworICAgIC8vIEZsYXR0ZW4ga2V5cyBpbiB0byBvdXIgYXJyYXkKKyAgICBfLmVhY2gob2JqLCBmdW5jdGlvbiAodmFsLCBrZXkpIHsKKyAgICAgIGZsYXR0ZW5lZFNlY3VyaXRpZXMucHVzaChrZXkpOworICAgIH0pOworICB9KTsKKworICBfLmVhY2goYXV0aHosIGZ1bmN0aW9uIChhdXRoLCBhdXRoTmFtZSkgeworICAgIGlmKGFwcGx5QWxsIHx8IF8uaW5jbHVkZXMoZmxhdHRlbmVkU2VjdXJpdGllcywgYXV0aE5hbWUpKSB7CisgICAgICB2YXIgbmV3U3RhdHVzID0gYXV0aC5hcHBseShvYmopOworICAgICAgc3RhdHVzID0gc3RhdHVzICYmICEhbmV3U3RhdHVzOyAvLyBsb2dpY2FsIE9ScyByZWdhcmRpbmcgc3RhdHVzCisgICAgfQorICB9KTsKKworICByZXR1cm4gc3RhdHVzOworfTsKKworLyoqCisgKiBBcGlLZXlBdXRob3JpemF0aW9uIGFsbG93cyBhIHF1ZXJ5IHBhcmFtIG9yIGhlYWRlciB0byBiZSBpbmplY3RlZAorICovCit2YXIgQXBpS2V5QXV0aG9yaXphdGlvbiA9IG1vZHVsZS5leHBvcnRzLkFwaUtleUF1dGhvcml6YXRpb24gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHR5cGUpIHsKKyAgdGhpcy5uYW1lID0gbmFtZTsKKyAgdGhpcy52YWx1ZSA9IHZhbHVlOworICB0aGlzLnR5cGUgPSB0eXBlOworfTsKKworQXBpS2V5QXV0aG9yaXphdGlvbi5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbiAob2JqKSB7CisgIGlmICh0aGlzLnR5cGUgPT09ICdxdWVyeScpIHsKKyAgICAvLyBzZWUgaWYgYWxyZWFkeSBhcHBsaWVkLiAgSWYgc28sIGRvbid0IGRvIGl0IGFnYWluCisKKyAgICB2YXIgcXA7CisgICAgaWYgKG9iai51cmwuaW5kZXhPZignPycpID4gMCkgeworICAgICAgcXAgPSBvYmoudXJsLnN1YnN0cmluZyhvYmoudXJsLmluZGV4T2YoJz8nKSArIDEpOworICAgICAgdmFyIHBhcnRzID0gcXAuc3BsaXQoJyYnKTsKKyAgICAgIGlmKHBhcnRzICYmIHBhcnRzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgdmFyIGt2ID0gcGFydHNbaV0uc3BsaXQoJz0nKTsKKyAgICAgICAgICBpZihrdiAmJiBrdi5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBpZiAoa3ZbMF0gPT09IHRoaXMubmFtZSkgeworICAgICAgICAgICAgICAvLyBza2lwIGl0CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob2JqLnVybC5pbmRleE9mKCc/JykgPiAwKSB7CisgICAgICBvYmoudXJsID0gb2JqLnVybCArICcmJyArIHRoaXMubmFtZSArICc9JyArIHRoaXMudmFsdWU7CisgICAgfSBlbHNlIHsKKyAgICAgIG9iai51cmwgPSBvYmoudXJsICsgJz8nICsgdGhpcy5uYW1lICsgJz0nICsgdGhpcy52YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdoZWFkZXInKSB7CisgICAgaWYodHlwZW9mIG9iai5oZWFkZXJzW3RoaXMubmFtZV0gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICBvYmouaGVhZGVyc1t0aGlzLm5hbWVdID0gdGhpcy52YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfTsKKwordmFyIENvb2tpZUF1dGhvcml6YXRpb24gPSBtb2R1bGUuZXhwb3J0cy5Db29raWVBdXRob3JpemF0aW9uID0gZnVuY3Rpb24gKGNvb2tpZSkgeworICB0aGlzLmNvb2tpZSA9IGNvb2tpZTsKK307CisKK0Nvb2tpZUF1dGhvcml6YXRpb24ucHJvdG90eXBlLmFwcGx5ID0gZnVuY3Rpb24gKG9iaikgeworICBvYmouY29va2llSmFyID0gb2JqLmNvb2tpZUphciB8fCBuZXcgQ29va2llSmFyKCk7CisgIG9iai5jb29raWVKYXIuc2V0Q29va2llKHRoaXMuY29va2llKTsKKworICByZXR1cm4gdHJ1ZTsKK307CisKKy8qKgorICogUGFzc3dvcmQgQXV0aG9yaXphdGlvbiBpcyBhIGJhc2ljIGF1dGggaW1wbGVtZW50YXRpb24KKyAqLwordmFyIFBhc3N3b3JkQXV0aG9yaXphdGlvbiA9IG1vZHVsZS5leHBvcnRzLlBhc3N3b3JkQXV0aG9yaXphdGlvbiA9IGZ1bmN0aW9uICh1c2VybmFtZSwgcGFzc3dvcmQpIHsKKyAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHsKKyAgICBoZWxwZXJzLmxvZygnUGFzc3dvcmRBdXRob3JpemF0aW9uOiB0aGUgXCduYW1lXCcgYXJndW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCwgcGFzcyBvbmx5IHVzZXJuYW1lIGFuZCBwYXNzd29yZCcpOworICAgIHVzZXJuYW1lID0gYXJndW1lbnRzWzFdOworICAgIHBhc3N3b3JkID0gYXJndW1lbnRzWzJdOworICB9CisgIHRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKKyAgdGhpcy5wYXNzd29yZCA9IHBhc3N3b3JkOworfTsKKworUGFzc3dvcmRBdXRob3JpemF0aW9uLnByb3RvdHlwZS5hcHBseSA9IGZ1bmN0aW9uIChvYmopIHsKKyAgaWYodHlwZW9mIG9iai5oZWFkZXJzLkF1dGhvcml6YXRpb24gPT09ICd1bmRlZmluZWQnKSB7CisgICAgb2JqLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh0aGlzLnVzZXJuYW1lICsgJzonICsgdGhpcy5wYXNzd29yZCk7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK307CisKK30seyIuL2hlbHBlcnMiOjQsImJ0b2EiOjEzLCJjb29raWVqYXIiOjE4LCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZWFjaCI6NTIsImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9pbmNsdWRlcyI6NTUsImxvZGFzaC1jb21wYXQvbGFuZy9pc0FycmF5IjoxNDAsImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCI6MTQ0fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBfID0geworICBiaW5kOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2Z1bmN0aW9uL2JpbmQnKSwKKyAgY2xvbmVEZWVwOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvY2xvbmVEZWVwJyksCisgIGZpbmQ6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9maW5kJyksCisgIGZvckVhY2g6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9mb3JFYWNoJyksCisgIGluZGV4T2Y6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvYXJyYXkvaW5kZXhPZicpLAorICBpc0FycmF5OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheScpLAorICBpc09iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0JyksCisgIGlzRnVuY3Rpb246IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc0Z1bmN0aW9uJyksCisgIGlzUGxhaW5PYmplY3Q6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0JyksCisgIGlzVW5kZWZpbmVkOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNVbmRlZmluZWQnKQorfTsKK3ZhciBhdXRoID0gcmVxdWlyZSgnLi9hdXRoJyk7Cit2YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpOwordmFyIE1vZGVsID0gcmVxdWlyZSgnLi90eXBlcy9tb2RlbCcpOwordmFyIE9wZXJhdGlvbiA9IHJlcXVpcmUoJy4vdHlwZXMvb3BlcmF0aW9uJyk7Cit2YXIgT3BlcmF0aW9uR3JvdXAgPSByZXF1aXJlKCcuL3R5cGVzL29wZXJhdGlvbkdyb3VwJyk7Cit2YXIgUmVzb2x2ZXIgPSByZXF1aXJlKCcuL3Jlc29sdmVyJyk7Cit2YXIgU3dhZ2dlckh0dHAgPSByZXF1aXJlKCcuL2h0dHAnKTsKK3ZhciBTd2FnZ2VyU3BlY0NvbnZlcnRlciA9IHJlcXVpcmUoJy4vc3BlYy1jb252ZXJ0ZXInKTsKK3ZhciBRID0gcmVxdWlyZSgncScpOworCisvLyBXZSBoYXZlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGZ1bmN0aW9uL3Byb3BlcnR5IG5hbWVzIHRvIGF2b2lkIGNvbGxpc2lvbnMgZm9yIHRhZyBuYW1lcyB3aGljaCBhcmUgdXNlZCB0byBhbGxvdyB0aGUKKy8vIGZvbGxvd2luZyB1c2FnZTogJ2NsaWVudC57dGFnTmFtZX0nCit2YXIgcmVzZXJ2ZWRDbGllbnRUYWdzID0gWworICAnYXBpcycsCisgICdhdXRob3JpemF0aW9uU2NoZW1lJywKKyAgJ2F1dGhvcml6YXRpb25zJywKKyAgJ2Jhc2VQYXRoJywKKyAgJ2J1aWxkJywKKyAgJ2J1aWxkRnJvbTFfMVNwZWMnLAorICAnYnVpbGRGcm9tMV8yU3BlYycsCisgICdidWlsZEZyb21TcGVjJywKKyAgJ2NsaWVudEF1dGhvcml6YXRpb25zJywKKyAgJ2NvbnZlcnRJbmZvJywKKyAgJ2RlYnVnJywKKyAgJ2RlZmF1bHRFcnJvckNhbGxiYWNrJywKKyAgJ2RlZmF1bHRTdWNjZXNzQ2FsbGJhY2snLAorICAnZW5hYmxlQ29va2llcycsCisgICdmYWlsJywKKyAgJ2ZhaWx1cmUnLAorICAnZmluaXNoJywKKyAgJ2hlbHAnLAorICAnaG9zdCcsCisgICdpZEZyb21PcCcsCisgICdpbmZvJywKKyAgJ2luaXRpYWxpemUnLAorICAnaXNCdWlsdCcsCisgICdpc1ZhbGlkJywKKyAgJ21vZGVsUHJvcGVydHlNYWNybycsCisgICdtb2RlbHMnLAorICAnbW9kZWxzQXJyYXknLAorICAnb3B0aW9ucycsCisgICdwYXJhbWV0ZXJNYWNybycsCisgICdwYXJzZVVyaScsCisgICdwcm9ncmVzcycsCisgICdyZXNvdXJjZUNvdW50JywKKyAgJ3NhbXBsZU1vZGVscycsCisgICdzZWxmUmVmbGVjdCcsCisgICdzZXRDb25zb2xpZGF0ZWRNb2RlbHMnLAorICAnc3BlYycsCisgICdzdXBwb3J0ZWRTdWJtaXRNZXRob2RzJywKKyAgJ3N3YWdnZXJSZXF1ZXN0SGVhZGVycycsCisgICd0YWdGcm9tTGFiZWwnLAorICAndGl0bGUnLAorICAndXJsJywKKyAgJ3VzZUpRdWVyeScsCisgICdqcXVlcnlBamF4Q2FjaGUnCitdOworLy8gV2UgaGF2ZSB0byBrZWVwIHRyYWNrIG9mIHRoZSBmdW5jdGlvbi9wcm9wZXJ0eSBuYW1lcyB0byBhdm9pZCBjb2xsaXNpb25zIGZvciB0YWcgbmFtZXMgd2hpY2ggYXJlIHVzZWQgdG8gYWxsb3cgdGhlCisvLyBmb2xsb3dpbmcgdXNhZ2U6ICdjbGllbnQuYXBpcy57dGFnTmFtZX0nCit2YXIgcmVzZXJ2ZWRBcGlUYWdzID0gWworICAnYXBpcycsCisgICdhc0N1cmwnLAorICAnZGVzY3JpcHRpb24nLAorICAnZXh0ZXJuYWxEb2NzJywKKyAgJ2hlbHAnLAorICAnbGFiZWwnLAorICAnbmFtZScsCisgICdvcGVyYXRpb24nLAorICAnb3BlcmF0aW9ucycsCisgICdvcGVyYXRpb25zQXJyYXknLAorICAncGF0aCcsCisgICd0YWcnCitdOwordmFyIHN1cHBvcnRlZE9wZXJhdGlvbk1ldGhvZHMgPSBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJywgJ3BhdGNoJywgJ3Bvc3QnLCAncHV0J107Cit2YXIgU3dhZ2dlckNsaWVudCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykgeworICB0aGlzLmF1dGhvcml6YXRpb25zID0gbnVsbDsKKyAgdGhpcy5hdXRob3JpemF0aW9uU2NoZW1lID0gbnVsbDsKKyAgdGhpcy5iYXNlUGF0aCA9IG51bGw7CisgIHRoaXMuZGVidWcgPSBmYWxzZTsKKyAgdGhpcy5lbmFibGVDb29raWVzID0gZmFsc2U7CisgIHRoaXMuaW5mbyA9IG51bGw7CisgIHRoaXMuaXNCdWlsdCA9IGZhbHNlOworICB0aGlzLmlzVmFsaWQgPSBmYWxzZTsKKyAgdGhpcy5tb2RlbHNBcnJheSA9IFtdOworICB0aGlzLnJlc291cmNlQ291bnQgPSAwOworICB0aGlzLnVybCA9IG51bGw7CisgIHRoaXMudXNlSlF1ZXJ5ID0gZmFsc2U7CisgIHRoaXMuanF1ZXJ5QWpheENhY2hlID0gZmFsc2U7CisgIHRoaXMuc3dhZ2dlck9iamVjdCA9IHt9OworICB0aGlzLmRlZmVycmVkQ2xpZW50ID0gdW5kZWZpbmVkOworCisgIHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMgPSBuZXcgYXV0aC5Td2FnZ2VyQXV0aG9yaXphdGlvbnMoKTsKKworICBpZiAodHlwZW9mIHVybCAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplKHVybCwgb3B0aW9ucyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK307CisKK1N3YWdnZXJDbGllbnQucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7CisgIHRoaXMubW9kZWxzID0ge307CisgIHRoaXMuc2FtcGxlTW9kZWxzID0ge307CisKKyAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7CisgICAgdGhpcy51cmwgPSB1cmw7CisgIH0gZWxzZSBpZiAoXy5pc09iamVjdCh1cmwpKSB7CisgICAgb3B0aW9ucyA9IHVybDsKKyAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsOworICB9CisKKyAgaWYodGhpcy51cmwgJiYgdGhpcy51cmwuaW5kZXhPZignaHR0cDonKSA9PT0gLTEgJiYgdGhpcy51cmwuaW5kZXhPZignaHR0cHM6JykgPT09IC0xKSB7CisgICAgLy8gbm8gcHJvdG9jb2wsIHNvIHdlIGNhbiBvbmx5IHVzZSB3aW5kb3cgaWYgaXQgZXhpc3RzCisgICAgaWYodHlwZW9mKHdpbmRvdykgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZih3aW5kb3cubG9jYXRpb24pICE9PSAndW5kZWZpbmVkJykgeworICAgICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgdGhpcy51cmw7CisgICAgfQorICB9CisKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisgIHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkKG9wdGlvbnMuYXV0aG9yaXphdGlvbnMpOworICB0aGlzLnN3YWdnZXJSZXF1ZXN0SGVhZGVycyA9IG9wdGlvbnMuc3dhZ2dlclJlcXVlc3RIZWFkZXJzIHx8ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgsKi8qJzsKKyAgdGhpcy5kZWZhdWx0U3VjY2Vzc0NhbGxiYWNrID0gb3B0aW9ucy5kZWZhdWx0U3VjY2Vzc0NhbGxiYWNrIHx8IG51bGw7CisgIHRoaXMuZGVmYXVsdEVycm9yQ2FsbGJhY2sgPSBvcHRpb25zLmRlZmF1bHRFcnJvckNhbGxiYWNrIHx8IG51bGw7CisgIHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvID0gb3B0aW9ucy5tb2RlbFByb3BlcnR5TWFjcm8gfHwgbnVsbDsKKyAgdGhpcy5jb25uZWN0aW9uQWdlbnQgPSBvcHRpb25zLmNvbm5lY3Rpb25BZ2VudCB8fCBudWxsOworICB0aGlzLnBhcmFtZXRlck1hY3JvID0gb3B0aW9ucy5wYXJhbWV0ZXJNYWNybyB8fCBudWxsOworICB0aGlzLnVzZVByb21pc2UgPSBvcHRpb25zLnVzZVByb21pc2UgfHwgbnVsbDsKKworICAvLyBvcGVyYXRpb24gcmVxdWVzdCB0aW1lb3V0IGRlZmF1bHQKKyAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0IHx8IG51bGw7CisgIC8vIGRlZmF1bHQgdG8gcmVxdWVzdCB0aW1lb3V0IHdoZW4gbm90IHNwZWNpZmllZAorICB0aGlzLmZldGNoU3BlY1RpbWVvdXQgPSB0eXBlb2Ygb3B0aW9ucy5mZXRjaFNwZWNUaW1lb3V0ICE9PSAndW5kZWZpbmVkJyA/CisgICAgICBvcHRpb25zLmZldGNoU3BlY1RpbWVvdXQgOiBvcHRpb25zLnRpbWVvdXQgfHwgbnVsbDsKKworICBpZih0aGlzLnVzZVByb21pc2UpIHsKKyAgICB0aGlzLmRlZmVycmVkQ2xpZW50ID0gUS5kZWZlcigpOworICB9CisKKyAgaWYgKHR5cGVvZiBvcHRpb25zLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHsKKyAgICB0aGlzLnN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3M7CisgIH0KKyAgaWYgKG9wdGlvbnMudXNlSlF1ZXJ5KSB7CisgICAgdGhpcy51c2VKUXVlcnkgPSBvcHRpb25zLnVzZUpRdWVyeTsKKyAgfQorCisgIGlmIChvcHRpb25zLmpxdWVyeUFqYXhDYWNoZSkgeworICAgIHRoaXMuanF1ZXJ5QWpheENhY2hlID0gb3B0aW9ucy5qcXVlcnlBamF4Q2FjaGU7CisgIH0KKworICBpZiAob3B0aW9ucy5lbmFibGVDb29raWVzKSB7CisgICAgdGhpcy5lbmFibGVDb29raWVzID0gb3B0aW9ucy5lbmFibGVDb29raWVzOworICB9CisKKyAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKworICAvLyBtYXliZSBkb24ndCBuZWVkIHRoaXM/CisgIHRoaXMub3B0aW9ucy50aW1lb3V0ID0gdGhpcy50aW1lb3V0OworICB0aGlzLm9wdGlvbnMuZmV0Y2hTcGVjVGltZW91dCA9IHRoaXMuZmV0Y2hTcGVjVGltZW91dDsKKworICB0aGlzLnN1cHBvcnRlZFN1Ym1pdE1ldGhvZHMgPSBvcHRpb25zLnN1cHBvcnRlZFN1Ym1pdE1ldGhvZHMgfHwgW107CisgIHRoaXMuZmFpbHVyZSA9IG9wdGlvbnMuZmFpbHVyZSB8fCBmdW5jdGlvbiAoZXJyKSB7IHRocm93IGVycjsgfTsKKyAgdGhpcy5wcm9ncmVzcyA9IG9wdGlvbnMucHJvZ3Jlc3MgfHwgZnVuY3Rpb24gKCkge307CisgIHRoaXMuc3BlYyA9IF8uY2xvbmVEZWVwKG9wdGlvbnMuc3BlYyk7IC8vIENsb25lIHNvIHdlIGRvIG5vdCBhbHRlciB0aGUgcHJvdmlkZWQgZG9jdW1lbnQKKworICBpZiAob3B0aW9ucy5zY2hlbWUpIHsKKyAgICB0aGlzLnNjaGVtZSA9IG9wdGlvbnMuc2NoZW1lOworICB9CisKKyAgaWYgKHRoaXMudXNlUHJvbWlzZSB8fCB0eXBlb2Ygb3B0aW9ucy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7CisgICAgdGhpcy5yZWFkeSA9IHRydWU7CisgICAgcmV0dXJuIHRoaXMuYnVpbGQoKTsKKyAgfQorfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbiAobW9jaykgeworICBpZiAodGhpcy5pc0J1aWx0KSB7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgaWYgKHRoaXMuc3BlYykgeworICAgIHRoaXMucHJvZ3Jlc3MoJ2ZldGNoaW5nIHJlc291cmNlIGxpc3Q7IFBsZWFzZSB3YWl0LicpOworICB9IGVsc2UgeworICAgIHRoaXMucHJvZ3Jlc3MoJ2ZldGNoaW5nIHJlc291cmNlIGxpc3Q6ICcgKyB0aGlzLnVybCArICc7IFBsZWFzZSB3YWl0LicpOworICB9CisKKyAgdmFyIG9iaiA9IHsKKyAgICB1c2VKUXVlcnk6IHRoaXMudXNlSlF1ZXJ5LAorICAgIGpxdWVyeUFqYXhDYWNoZTogdGhpcy5qcXVlcnlBamF4Q2FjaGUsCisgICAgY29ubmVjdGlvbkFnZW50OiB0aGlzLmNvbm5lY3Rpb25BZ2VudCwKKyAgICBlbmFibGVDb29raWVzOiB0aGlzLmVuYWJsZUNvb2tpZXMsCisgICAgdXJsOiB0aGlzLnVybCwKKyAgICBtZXRob2Q6ICdnZXQnLAorICAgIGhlYWRlcnM6IHsKKyAgICAgIGFjY2VwdDogdGhpcy5zd2FnZ2VyUmVxdWVzdEhlYWRlcnMKKyAgICB9LAorICAgIG9uOiB7CisgICAgICBlcnJvcjogZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIGlmIChzZWxmICYmIHNlbGYudXJsICYmIHNlbGYudXJsLnN1YnN0cmluZygwLCA0KSAhPT0gJ2h0dHAnKSB7CisgICAgICAgICAgcmV0dXJuIHNlbGYuZmFpbCgnUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciAnICsgc2VsZi51cmwpOworICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmVyck9iaiAmJiAocmVzcG9uc2UuZXJyT2JqLmNvZGUgPT09ICdFQ09OTkFCT1JURUQnIHx8IHJlc3BvbnNlLmVyck9iai5tZXNzYWdlLmluZGV4T2YoJ3RpbWVvdXQnKSAhPT0gLTEpKSB7CisgICAgICAgICAgcmV0dXJuIHNlbGYuZmFpbCgnUmVxdWVzdCB0aW1lZCBvdXQgYWZ0ZXIgJyArIHNlbGYuZmV0Y2hTcGVjVGltZW91dCArICdtcycpOworICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMCkgeworICAgICAgICAgIHJldHVybiBzZWxmLmZhaWwoJ0NhblwndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuJyk7CisgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHsKKyAgICAgICAgICByZXR1cm4gc2VsZi5mYWlsKCdDYW5cJ3QgcmVhZCBzd2FnZ2VyIEpTT04gZnJvbSAnICsgc2VsZi51cmwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBzZWxmLmZhaWwocmVzcG9uc2Uuc3RhdHVzICsgJyA6ICcgKyByZXNwb25zZS5zdGF0dXNUZXh0ICsgJyAnICsgc2VsZi51cmwpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgcmVzcG9uc2U6IGZ1bmN0aW9uIChyZXNwKSB7CisKKyAgICAgICAgdmFyIHJlc3BvbnNlT2JqID0gcmVzcC5vYmo7CisgICAgICAgIGlmKCFyZXNwb25zZU9iaikgeworICAgICAgICAgIHJldHVybiBzZWxmLmZhaWwoJ2ZhaWxlZCB0byBwYXJzZSBKU09OL1lBTUwgcmVzcG9uc2UnKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYuc3dhZ2dlclZlcnNpb24gPSByZXNwb25zZU9iai5zd2FnZ2VyVmVyc2lvbjsKKyAgICAgICAgc2VsZi5zd2FnZ2VyT2JqZWN0ID0gcmVzcG9uc2VPYmo7CisKKyAgICAgICAgaWYgKHJlc3BvbnNlT2JqLnN3YWdnZXIgJiYgcGFyc2VJbnQocmVzcG9uc2VPYmouc3dhZ2dlcikgPT09IDIpIHsKKyAgICAgICAgICBzZWxmLnN3YWdnZXJWZXJzaW9uID0gcmVzcG9uc2VPYmouc3dhZ2dlcjsKKworICAgICAgICAgIG5ldyBSZXNvbHZlcigpLnJlc29sdmUocmVzcG9uc2VPYmosIHNlbGYudXJsLCBzZWxmLmJ1aWxkRnJvbVNwZWMsIHNlbGYpOworCisgICAgICAgICAgc2VsZi5pc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YXIgY29udmVydGVyID0gbmV3IFN3YWdnZXJTcGVjQ29udmVydGVyKCk7CisgICAgICAgICAgc2VsZi5vbGRTd2FnZ2VyT2JqZWN0ID0gc2VsZi5zd2FnZ2VyT2JqZWN0OworCisgICAgICAgICAgY29udmVydGVyLnNldERvY3VtZW50YXRpb25Mb2NhdGlvbihzZWxmLnVybCk7CisgICAgICAgICAgY29udmVydGVyLmNvbnZlcnQocmVzcG9uc2VPYmosIHNlbGYuY2xpZW50QXV0aG9yaXphdGlvbnMsIHNlbGYub3B0aW9ucywgZnVuY3Rpb24oc3BlYykgeworICAgICAgICAgICAgc2VsZi5zd2FnZ2VyT2JqZWN0ID0gc3BlYzsKKyAgICAgICAgICAgIG5ldyBSZXNvbHZlcigpLnJlc29sdmUoc3BlYywgc2VsZi51cmwsIHNlbGYuYnVpbGRGcm9tU3BlYywgc2VsZik7CisgICAgICAgICAgICBzZWxmLmlzVmFsaWQgPSB0cnVlOworICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9OworCisgIC8vIG9ubHkgc2V0IHRpbWVvdXQgd2hlbiBzcGVjaWZpZWQKKyAgaWYgKHRoaXMuZmV0Y2hTcGVjVGltZW91dCkgeworICAgIG9iai50aW1lb3V0ID0gdGhpcy5mZXRjaFNwZWNUaW1lb3V0OworICB9CisKKyAgaWYgKHRoaXMuc3BlYyAmJiB0eXBlb2YgdGhpcy5zcGVjID09PSAnb2JqZWN0JykgeworICAgIHNlbGYuc3dhZ2dlck9iamVjdCA9IHRoaXMuc3BlYzsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgIG5ldyBSZXNvbHZlcigpLnJlc29sdmUoc2VsZi5zcGVjLCBzZWxmLnVybCwgc2VsZi5idWlsZEZyb21TcGVjLCBzZWxmKTsKKyAgICB9LCAxMCk7CisgIH0gZWxzZSB7CisgICAgdGhpcy5jbGllbnRBdXRob3JpemF0aW9ucy5hcHBseShvYmopOworCisgICAgaWYgKG1vY2spIHsKKyAgICAgIHJldHVybiBvYmo7CisgICAgfQorCisgICAgbmV3IFN3YWdnZXJIdHRwKCkuZXhlY3V0ZShvYmosIHRoaXMub3B0aW9ucyk7CisgIH0KKworICByZXR1cm4gKHRoaXMudXNlUHJvbWlzZSkgPyB0aGlzLmRlZmVycmVkQ2xpZW50LnByb21pc2UgOiB0aGlzOworfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUuYnVpbGRGcm9tU3BlYyA9IGZ1bmN0aW9uIChyZXNwb25zZSkgeworICBpZiAodGhpcy5pc0J1aWx0KSB7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworICB0aGlzLmFwaXMgPSB7fTsKKyAgdGhpcy5hcGlzQXJyYXkgPSBbXTsKKyAgdGhpcy5iYXNlUGF0aCA9IHJlc3BvbnNlLmJhc2VQYXRoIHx8ICcnOworICB0aGlzLmNvbnN1bWVzID0gcmVzcG9uc2UuY29uc3VtZXM7CisgIHRoaXMuaG9zdCA9IHJlc3BvbnNlLmhvc3QgfHwgJyc7CisgIHRoaXMuaW5mbyA9IHJlc3BvbnNlLmluZm8gfHwge307CisgIHRoaXMucHJvZHVjZXMgPSByZXNwb25zZS5wcm9kdWNlczsKKyAgdGhpcy5zY2hlbWVzID0gcmVzcG9uc2Uuc2NoZW1lcyB8fCBbXTsKKyAgdGhpcy5zZWN1cml0eURlZmluaXRpb25zID0gXy5jbG9uZURlZXAocmVzcG9uc2Uuc2VjdXJpdHlEZWZpbml0aW9ucyk7CisgIHRoaXMuc2VjdXJpdHkgPSByZXNwb25zZS5zZWN1cml0eTsKKyAgdGhpcy50aXRsZSA9IHJlc3BvbnNlLnRpdGxlIHx8ICcnOworCisgIHZhciBrZXksIGRlZmluZWRUYWdzID0ge30sIGssIGxvY2F0aW9uLCBzZWxmID0gdGhpcywgaTsKKworICBpZiAocmVzcG9uc2UuZXh0ZXJuYWxEb2NzKSB7CisgICAgdGhpcy5leHRlcm5hbERvY3MgPSByZXNwb25zZS5leHRlcm5hbERvY3M7CisgIH0KKworICAvLyBsZWdhY3kgc3VwcG9ydAorICB0aGlzLmF1dGhTY2hlbWVzID0gdGhpcy5zZWN1cml0eURlZmluaXRpb25zOworCisgIGlmKHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucykgeworICAgIGZvcihrZXkgaW4gdGhpcy5zZWN1cml0eURlZmluaXRpb25zKSB7CisgICAgICB2YXIgc2VjdXJpdHlEZWZpbml0aW9uID0gdGhpcy5zZWN1cml0eURlZmluaXRpb25zW2tleV07CisgICAgICBzZWN1cml0eURlZmluaXRpb24udmVuZG9yRXh0ZW5zaW9ucyA9IHt9OworICAgICAgZm9yKHZhciBleHQgaW4gc2VjdXJpdHlEZWZpbml0aW9uKSB7CisgICAgICAgIGhlbHBlcnMuZXh0cmFjdEV4dGVuc2lvbnMoZXh0LCBzZWN1cml0eURlZmluaXRpb24pOworICAgICAgICBpZiAoZXh0ID09PSAnc2NvcGVzJykgeworICAgICAgICAgIHZhciBzY29wZXMgPSBzZWN1cml0eURlZmluaXRpb25bZXh0XTsKKyAgICAgICAgICBpZih0eXBlb2Ygc2NvcGVzID09PSAnb2JqZWN0JykgeworICAgICAgICAgICAgc2NvcGVzLnZlbmRvckV4dGVuc2lvbnMgPSB7fTsKKyAgICAgICAgICAgIGZvciAodmFyIHMgaW4gc2NvcGVzKSB7CisgICAgICAgICAgICAgIGhlbHBlcnMuZXh0cmFjdEV4dGVuc2lvbnMocywgc2NvcGVzKTsKKyAgICAgICAgICAgICAgaWYocy5pbmRleE9mKCd4LScpID09PSAwKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIHNjb3Blc1tzXTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlLnRhZ3MpKSB7CisgICAgZGVmaW5lZFRhZ3MgPSB7fTsKKworICAgIGZvciAoayA9IDA7IGsgPCByZXNwb25zZS50YWdzLmxlbmd0aDsgaysrKSB7CisgICAgICB2YXIgdCA9IF8uY2xvbmVEZWVwKHJlc3BvbnNlLnRhZ3Nba10pOworICAgICAgZGVmaW5lZFRhZ3NbdC5uYW1lXSA9IHQ7CisgICAgICBmb3IoaSBpbiB0KSB7CisgICAgICAgIGlmKGkgPT09ICdleHRlcm5hbERvY3MnICYmIHR5cGVvZiB0W2ldID09PSAnb2JqZWN0JykgeworICAgICAgICAgIGZvcih2YXIgaiBpbiB0W2ldKSB7CisgICAgICAgICAgICBoZWxwZXJzLmV4dHJhY3RFeHRlbnNpb25zKGosIHRbaV0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoZWxwZXJzLmV4dHJhY3RFeHRlbnNpb25zKGksIHQpOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgaWYgKHR5cGVvZiB0aGlzLnVybCA9PT0gJ3N0cmluZycpIHsKKyAgICBsb2NhdGlvbiA9IHRoaXMucGFyc2VVcmkodGhpcy51cmwpOworICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlbWUgPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0aGlzLnNjaGVtZXMgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuc2NoZW1lcy5sZW5ndGggPT09IDApIHsKKyAgICAgIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZihsb2NhdGlvbi5zY2hlbWUpICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICB0aGlzLnNjaGVtZSA9IGxvY2F0aW9uLnNjaGVtZTsKKyAgICAgIH0KKyAgICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZih3aW5kb3cubG9jYXRpb24pICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAvLyB1c2UgdGhlIHdpbmRvdyBzY2hlbWUKKyAgICAgICAgdGhpcy5zY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wucmVwbGFjZSgnOicsJycpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHRoaXMuc2NoZW1lID0gbG9jYXRpb24uc2NoZW1lIHx8ICdodHRwJzsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZih3aW5kb3cubG9jYXRpb24pICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignY2hyb21lLWV4dGVuc2lvbicpID09PSAwKSB7CisJCS8vIGlmIGl0IGlzIGNocm9tZSBzd2FnZ2VyIHVpIGV4dGVuc2lvbiBzY2hlbWUgdGhlbiBsZXQgc3dhZ2dlciBkb2MgdXJsIHNjaGVtZSBkZWNpZGUgdGhlIHByb3RvY29sCisJCXRoaXMuc2NoZW1lID0gbG9jYXRpb24uc2NoZW1lOworCX0gZWxzZSBpZiAodHlwZW9mIHRoaXMuc2NoZW1lID09PSAndW5kZWZpbmVkJykgeworICAgICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHdpbmRvdy5sb2NhdGlvbikgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wucmVwbGFjZSgnOicsJycpOworICAgICAgICBpZihzY2hlbWUgPT09ICdodHRwcycgJiYgdGhpcy5zY2hlbWVzLmluZGV4T2Yoc2NoZW1lKSA9PT0gLTEpIHsKKyAgICAgICAgICAvLyBjYW4ndCBjYWxsIGh0dHAgZnJvbSBodHRwcyBzZXJ2ZWQgcGFnZSBpbiBhIGJyb3dzZXIhCisgICAgICAgICAgaGVscGVycy5sb2coJ0Nhbm5vdCBjYWxsIGEgaHR0cCBzZXJ2ZXIgZnJvbSBodHRwcyBpbnNpZGUgYSBicm93c2VyIScpOworICAgICAgICAgIHRoaXMuc2NoZW1lID0gJ2h0dHAnOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYodGhpcy5zY2hlbWVzLmluZGV4T2Yoc2NoZW1lKSAhPT0gLTEpIHsKKyAgICAgICAgICB0aGlzLnNjaGVtZSA9IHNjaGVtZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpZih0aGlzLnNjaGVtZXMuaW5kZXhPZignaHR0cHMnKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHRoaXMuc2NoZW1lID0gJ2h0dHBzJzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLnNjaGVtZSA9ICdodHRwJzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICB0aGlzLnNjaGVtZSA9IHRoaXMuc2NoZW1lc1swXSB8fCBsb2NhdGlvbi5zY2hlbWU7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3QgPT09ICd1bmRlZmluZWQnIHx8IHRoaXMuaG9zdCA9PT0gJycpIHsKKyAgICAgIHRoaXMuaG9zdCA9IGxvY2F0aW9uLmhvc3Q7CisKKyAgICAgIGlmIChsb2NhdGlvbi5wb3J0KSB7CisgICAgICAgIHRoaXMuaG9zdCA9IHRoaXMuaG9zdCArICc6JyArIGxvY2F0aW9uLnBvcnQ7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGlmICh0eXBlb2YgdGhpcy5zY2hlbWVzID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLnNjaGVtZXMubGVuZ3RoID09PSAwKSB7CisgICAgICB0aGlzLnNjaGVtZSA9ICdodHRwJzsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZW9mIHRoaXMuc2NoZW1lID09PSAndW5kZWZpbmVkJykgeworICAgICAgdGhpcy5zY2hlbWUgPSB0aGlzLnNjaGVtZXNbMF07CisgICAgfQorICB9CisKKyAgdGhpcy5kZWZpbml0aW9ucyA9IHJlc3BvbnNlLmRlZmluaXRpb25zOworCisgIGZvciAoa2V5IGluIHRoaXMuZGVmaW5pdGlvbnMpIHsKKyAgICB2YXIgbW9kZWwgPSBuZXcgTW9kZWwoa2V5LCB0aGlzLmRlZmluaXRpb25zW2tleV0sIHRoaXMubW9kZWxzLCB0aGlzLm1vZGVsUHJvcGVydHlNYWNybyk7CisKKyAgICBpZiAobW9kZWwpIHsKKyAgICAgIHRoaXMubW9kZWxzW2tleV0gPSBtb2RlbDsKKyAgICB9CisgIH0KKworICAvLyBnZXQgcGF0aHMsIGNyZWF0ZSBmdW5jdGlvbnMgZm9yIGVhY2ggb3BlcmF0aW9uSWQKKworICAvLyBCaW5kIGhlbHAgdG8gJ2NsaWVudC5hcGlzJworICBzZWxmLmFwaXMuaGVscCA9IF8uYmluZChzZWxmLmhlbHAsIHNlbGYpOworCisgIF8uZm9yRWFjaChyZXNwb25zZS5wYXRocywgZnVuY3Rpb24gKHBhdGhPYmosIHBhdGgpIHsKKyAgICAvLyBPbmx5IHByb2Nlc3MgYSBwYXRoIGlmIGl0J3MgYW4gb2JqZWN0CisgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QocGF0aE9iaikpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfLmZvckVhY2goc3VwcG9ydGVkT3BlcmF0aW9uTWV0aG9kcywgZnVuY3Rpb24gKG1ldGhvZCkgeworICAgICAgdmFyIG9wZXJhdGlvbiA9IHBhdGhPYmpbbWV0aG9kXTsKKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3BlcmF0aW9uKSkgeworICAgICAgICAvLyBPcGVyYXRpb24gZG9lcyBub3QgZXhpc3QKKyAgICAgICAgcmV0dXJuOworICAgICAgfSBlbHNlIGlmICghXy5pc1BsYWluT2JqZWN0KG9wZXJhdGlvbikpIHsKKyAgICAgICAgLy8gT3BlcmF0aW9uIGV4aXN0cyBidXQgaXQgaXMgbm90IGFuIE9wZXJhdGlvbiBPYmplY3QuICBTaW5jZSB0aGlzIGlzIGludmFsaWQsIGxvZyBpdC4KKyAgICAgICAgaGVscGVycy5sb2coJ1RoZSBcJycgKyBtZXRob2QgKyAnXCcgb3BlcmF0aW9uIGZvciBcJycgKyBwYXRoICsgJ1wnIHBhdGggaXMgbm90IGFuIE9wZXJhdGlvbiBPYmplY3QnKTsKKworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgICAgIHZhciB0YWdzID0gb3BlcmF0aW9uLnRhZ3M7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRhZ3MpIHx8ICFfLmlzQXJyYXkodGFncykgfHwgdGFncy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgdGFncyA9IG9wZXJhdGlvbi50YWdzID0gWyAnZGVmYXVsdCcgXTsKKyAgICAgIH0KKworICAgICAgdmFyIG9wZXJhdGlvbklkID0gc2VsZi5pZEZyb21PcChwYXRoLCBtZXRob2QsIG9wZXJhdGlvbik7CisKKyAgICAgIHZhciBvcGVyYXRpb25PYmplY3QgPSBuZXcgT3BlcmF0aW9uKHNlbGYsCisgICAgICAgIG9wZXJhdGlvbi5zY2hlbWUsCisgICAgICAgIG9wZXJhdGlvbklkLAorICAgICAgICBtZXRob2QsCisgICAgICAgIHBhdGgsCisgICAgICAgIG9wZXJhdGlvbiwKKyAgICAgICAgc2VsZi5kZWZpbml0aW9ucywKKyAgICAgICAgc2VsZi5tb2RlbHMsCisgICAgICAgIHNlbGYuY2xpZW50QXV0aG9yaXphdGlvbnMpOworCisgICAgICBvcGVyYXRpb25PYmplY3QuY29ubmVjdGlvbkFnZW50ID0gc2VsZi5jb25uZWN0aW9uQWdlbnQ7CisgICAgICBvcGVyYXRpb25PYmplY3QudmVuZG9yRXh0ZW5zaW9ucyA9IHt9OworICAgICAgZm9yKGkgaW4gb3BlcmF0aW9uKSB7CisgICAgICAgIGhlbHBlcnMuZXh0cmFjdEV4dGVuc2lvbnMoaSwgb3BlcmF0aW9uT2JqZWN0LCBvcGVyYXRpb25baV0pOworICAgICAgfQorICAgICAgb3BlcmF0aW9uT2JqZWN0LmV4dGVybmFsRG9jcyA9IG9wZXJhdGlvbi5leHRlcm5hbERvY3M7CisgICAgICBpZihvcGVyYXRpb25PYmplY3QuZXh0ZXJuYWxEb2NzKSB7CisgICAgICAgIG9wZXJhdGlvbk9iamVjdC5leHRlcm5hbERvY3MgPSBfLmNsb25lRGVlcChvcGVyYXRpb25PYmplY3QuZXh0ZXJuYWxEb2NzKTsKKyAgICAgICAgb3BlcmF0aW9uT2JqZWN0LmV4dGVybmFsRG9jcy52ZW5kb3JFeHRlbnNpb25zID0ge307CisgICAgICAgIGZvcihpIGluIG9wZXJhdGlvbk9iamVjdC5leHRlcm5hbERvY3MpIHsKKyAgICAgICAgICBoZWxwZXJzLmV4dHJhY3RFeHRlbnNpb25zKGksIG9wZXJhdGlvbk9iamVjdC5leHRlcm5hbERvY3MpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIGJpbmQgc2VsZiBvcGVyYXRpb24ncyBleGVjdXRlIGNvbW1hbmQgdG8gdGhlIGFwaQorICAgICAgXy5mb3JFYWNoKHRhZ3MsIGZ1bmN0aW9uICh0YWcpIHsKKyAgICAgICAgdmFyIGNsaWVudFByb3BlcnR5ID0gXy5pbmRleE9mKHJlc2VydmVkQ2xpZW50VGFncywgdGFnKSA+IC0xID8gJ18nICsgdGFnIDogdGFnOworICAgICAgICB2YXIgYXBpUHJvcGVydHkgPSBfLmluZGV4T2YocmVzZXJ2ZWRBcGlUYWdzLCB0YWcpID4gLTEgPyAnXycgKyB0YWcgOiB0YWc7CisgICAgICAgIHZhciBvcGVyYXRpb25Hcm91cCA9IHNlbGZbY2xpZW50UHJvcGVydHldOworCisgICAgICAgIGlmIChjbGllbnRQcm9wZXJ0eSAhPT0gdGFnKSB7CisgICAgICAgICAgaGVscGVycy5sb2coJ1RoZSBcJycgKyB0YWcgKyAnXCcgdGFnIGNvbmZsaWN0cyB3aXRoIGEgU3dhZ2dlckNsaWVudCBmdW5jdGlvbi9wcm9wZXJ0eSBuYW1lLiAgVXNlIFwnY2xpZW50LicgKworICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFByb3BlcnR5ICsgJ1wnIG9yIFwnY2xpZW50LmFwaXMuJyArIHRhZyArICdcJyBpbnN0ZWFkIG9mIFwnY2xpZW50LicgKyB0YWcgKyAnXCcuJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXBpUHJvcGVydHkgIT09IHRhZykgeworICAgICAgICAgIGhlbHBlcnMubG9nKCdUaGUgXCcnICsgdGFnICsgJ1wnIHRhZyBjb25mbGljdHMgd2l0aCBhIFN3YWdnZXJDbGllbnQgb3BlcmF0aW9uIGZ1bmN0aW9uL3Byb3BlcnR5IG5hbWUuICBVc2UgJyArCisgICAgICAgICAgICAgICAgICAgICAgJ1wnY2xpZW50LmFwaXMuJyArIGFwaVByb3BlcnR5ICsgJ1wnIGluc3RlYWQgb2YgXCdjbGllbnQuYXBpcy4nICsgdGFnICsgJ1wnLicpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKF8uaW5kZXhPZihyZXNlcnZlZEFwaVRhZ3MsIG9wZXJhdGlvbklkKSA+IC0xKSB7CisgICAgICAgICAgaGVscGVycy5sb2coJ1RoZSBcJycgKyBvcGVyYXRpb25JZCArICdcJyBvcGVyYXRpb25JZCBjb25mbGljdHMgd2l0aCBhIFN3YWdnZXJDbGllbnQgb3BlcmF0aW9uICcgKworICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi9wcm9wZXJ0eSBuYW1lLiAgVXNlIFwnY2xpZW50LmFwaXMuJyArIGFwaVByb3BlcnR5ICsgJy5fJyArIG9wZXJhdGlvbklkICsKKyAgICAgICAgICAgICAgICAgICAgICAnXCcgaW5zdGVhZCBvZiBcJ2NsaWVudC5hcGlzLicgKyBhcGlQcm9wZXJ0eSArICcuJyArIG9wZXJhdGlvbklkICsgJ1wnLicpOworCisgICAgICAgICAgb3BlcmF0aW9uSWQgPSAnXycgKyBvcGVyYXRpb25JZDsKKyAgICAgICAgICBvcGVyYXRpb25PYmplY3Qubmlja25hbWUgPSBvcGVyYXRpb25JZDsgLy8gU28gJ2NsaWVudC5hcGlzLlt0YWddLm9wZXJhdGlvbklkLmhlbHAoKSB3b3JrcyBwcm9wZXJseQorICAgICAgICB9CisKKyAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQob3BlcmF0aW9uR3JvdXApKSB7CisgICAgICAgICAgb3BlcmF0aW9uR3JvdXAgPSBzZWxmW2NsaWVudFByb3BlcnR5XSA9IHNlbGYuYXBpc1thcGlQcm9wZXJ0eV0gPSB7fTsKKworICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLm9wZXJhdGlvbnMgPSB7fTsKKyAgICAgICAgICBvcGVyYXRpb25Hcm91cC5sYWJlbCA9IGFwaVByb3BlcnR5OworICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLmFwaXMgPSB7fTsKKworICAgICAgICAgIHZhciB0YWdEZWYgPSBkZWZpbmVkVGFnc1t0YWddOworCisgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRhZ0RlZikpIHsKKyAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLmRlc2NyaXB0aW9uID0gdGFnRGVmLmRlc2NyaXB0aW9uOworICAgICAgICAgICAgb3BlcmF0aW9uR3JvdXAuZXh0ZXJuYWxEb2NzID0gdGFnRGVmLmV4dGVybmFsRG9jczsKKyAgICAgICAgICAgIG9wZXJhdGlvbkdyb3VwLnZlbmRvckV4dGVuc2lvbnMgPSB0YWdEZWYudmVuZG9yRXh0ZW5zaW9uczsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBzZWxmW2NsaWVudFByb3BlcnR5XS5oZWxwID0gXy5iaW5kKHNlbGYuaGVscCwgb3BlcmF0aW9uR3JvdXApOworICAgICAgICAgIHNlbGYuYXBpc0FycmF5LnB1c2gobmV3IE9wZXJhdGlvbkdyb3VwKHRhZywgb3BlcmF0aW9uR3JvdXAuZGVzY3JpcHRpb24sIG9wZXJhdGlvbkdyb3VwLmV4dGVybmFsRG9jcywgb3BlcmF0aW9uT2JqZWN0KSk7CisgICAgICAgIH0KKworICAgICAgICBvcGVyYXRpb25JZCA9IHNlbGYubWFrZVVuaXF1ZU9wZXJhdGlvbklkKG9wZXJhdGlvbklkLCBzZWxmLmFwaXNbYXBpUHJvcGVydHldKTsKKworICAgICAgICAvLyBCaW5kIHRhZyBoZWxwCisgICAgICAgIGlmICghXy5pc0Z1bmN0aW9uKG9wZXJhdGlvbkdyb3VwLmhlbHApKSB7CisgICAgICAgICAgb3BlcmF0aW9uR3JvdXAuaGVscCA9IF8uYmluZChzZWxmLmhlbHAsIG9wZXJhdGlvbkdyb3VwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGJpbmQgdG8gdGhlIGFwaXMgb2JqZWN0CisgICAgICAgIHNlbGYuYXBpc1thcGlQcm9wZXJ0eV1bb3BlcmF0aW9uSWRdID0gb3BlcmF0aW9uR3JvdXBbb3BlcmF0aW9uSWRdID0gXy5iaW5kKG9wZXJhdGlvbk9iamVjdC5leGVjdXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk9iamVjdCk7CisgICAgICAgIHNlbGYuYXBpc1thcGlQcm9wZXJ0eV1bb3BlcmF0aW9uSWRdLmhlbHAgPSBvcGVyYXRpb25Hcm91cFtvcGVyYXRpb25JZF0uaGVscCA9IF8uYmluZChvcGVyYXRpb25PYmplY3QuaGVscCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk9iamVjdCk7CisgICAgICAgIHNlbGYuYXBpc1thcGlQcm9wZXJ0eV1bb3BlcmF0aW9uSWRdLmFzQ3VybCA9IG9wZXJhdGlvbkdyb3VwW29wZXJhdGlvbklkXS5hc0N1cmwgPSBfLmJpbmQob3BlcmF0aW9uT2JqZWN0LmFzQ3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25PYmplY3QpOworCisgICAgICAgIG9wZXJhdGlvbkdyb3VwLmFwaXNbb3BlcmF0aW9uSWRdID0gb3BlcmF0aW9uR3JvdXAub3BlcmF0aW9uc1tvcGVyYXRpb25JZF0gPSBvcGVyYXRpb25PYmplY3Q7CisKKyAgICAgICAgLy8gbGVnYWN5IFVJIGZlYXR1cmUKKyAgICAgICAgdmFyIGFwaSA9IF8uZmluZChzZWxmLmFwaXNBcnJheSwgZnVuY3Rpb24gKGFwaSkgeworICAgICAgICAgIHJldHVybiBhcGkudGFnID09PSB0YWc7CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChhcGkpIHsKKyAgICAgICAgICBhcGkub3BlcmF0aW9uc0FycmF5LnB1c2gob3BlcmF0aW9uT2JqZWN0KTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIC8vIHNvcnQgdGhlIGFwaXNBcnJheSBhY2NvcmRpbmcgdG8gdGhlIHRhZ3MKKyAgdmFyIHNvcnRlZEFwaXMgPSBbXTsKKyAgXy5mb3JFYWNoKE9iamVjdC5rZXlzKGRlZmluZWRUYWdzKSwgZnVuY3Rpb24gKHRhZykgeworICAgIHZhciBwb3M7CisgICAgZm9yKHBvcyBpbiBzZWxmLmFwaXNBcnJheSkgeworICAgICAgdmFyIF9hcGkgPSBzZWxmLmFwaXNBcnJheVtwb3NdOworICAgICAgaWYoX2FwaSAmJiB0YWcgPT09IF9hcGkubmFtZSkgeworICAgICAgICBzb3J0ZWRBcGlzLnB1c2goX2FwaSk7CisgICAgICAgIHNlbGYuYXBpc0FycmF5W3Bvc10gPSBudWxsOworICAgICAgfQorICAgIH0KKyAgfSk7CisgIC8vIGFkZCBhbnl0aGluZyBsZWZ0CisgIF8uZm9yRWFjaChzZWxmLmFwaXNBcnJheSwgZnVuY3Rpb24gKGFwaSkgeworICAgIGlmKGFwaSkgeworICAgICAgc29ydGVkQXBpcy5wdXNoKGFwaSk7CisgICAgfQorICB9KTsKKyAgc2VsZi5hcGlzQXJyYXkgPSBzb3J0ZWRBcGlzOworCisgIF8uZm9yRWFjaChyZXNwb25zZS5kZWZpbml0aW9ucywgZnVuY3Rpb24gKGRlZmluaXRpb25PYmosIGRlZmluaXRpb24pIHsKKyAgICBkZWZpbml0aW9uT2JqLmlkID0gZGVmaW5pdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIGRlZmluaXRpb25PYmoubmFtZSA9IGRlZmluaXRpb247CisgICAgc2VsZi5tb2RlbHNBcnJheS5wdXNoKGRlZmluaXRpb25PYmopOworICB9KTsKKworICB0aGlzLmlzQnVpbHQgPSB0cnVlOworCisgIGlmICh0aGlzLnVzZVByb21pc2UpIHsKKyAgICB0aGlzLmlzVmFsaWQgPSB0cnVlOworICAgIHRoaXMuaXNCdWlsdCA9IHRydWU7CisgICAgdGhpcy5kZWZlcnJlZENsaWVudC5yZXNvbHZlKHRoaXMpOworCisgICAgcmV0dXJuIHRoaXMuZGVmZXJyZWRDbGllbnQucHJvbWlzZTsKKyAgfQorCisgIGlmICh0aGlzLnN1Y2Nlc3MpIHsKKyAgICB0aGlzLnN1Y2Nlc3MoKTsKKyAgfQorCisgIHJldHVybiB0aGlzOworfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUubWFrZVVuaXF1ZU9wZXJhdGlvbklkID0gZnVuY3Rpb24ob3BlcmF0aW9uSWQsIGFwaSkgeworICB2YXIgY291bnQgPSAwOworICB2YXIgbmFtZSA9IG9wZXJhdGlvbklkOworCisgIC8vIG1ha2UgdW5pcXVlIGFjcm9zcyB0aGlzIG9wZXJhdGlvbiBncm91cAorICB3aGlsZSh0cnVlKSB7CisgICAgdmFyIG1hdGNoZWQgPSBmYWxzZTsKKyAgICBfLmZvckVhY2goYXBpLm9wZXJhdGlvbnMsIGZ1bmN0aW9uIChvcGVyYXRpb24pIHsKKyAgICAgIGlmKG9wZXJhdGlvbi5uaWNrbmFtZSA9PT0gbmFtZSkgeworICAgICAgICBtYXRjaGVkID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICBpZighbWF0Y2hlZCkgeworICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorICAgIG5hbWUgPSBvcGVyYXRpb25JZCArICdfJyArIGNvdW50OworICAgIGNvdW50ICsrOworICB9CisKKyAgcmV0dXJuIG9wZXJhdGlvbklkOworfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUucGFyc2VVcmkgPSBmdW5jdGlvbiAodXJpKSB7CisgIHZhciB1cmxQYXJzZVJFID0gL14oKCgoW146XC8jXD9dKzopPyg/OihcL1wvKSgoPzooKFteOkBcLyNcP10rKSg/Olw6KFteOkBcLyNcP10rKSk/KUApPygoW146XC8jXD9cXVxbXSt8XFtbXlwvXF1AIz9dK1xdKSg/Olw6KFswLTldKykpPykpPyk/KT8oKFwvPyg/OlteXC9cPyNdK1wvKykqKShbXlw/I10qKSkpPyhcP1teI10rKT8pKCMuKik/LzsKKyAgdmFyIHBhcnRzID0gdXJsUGFyc2VSRS5leGVjKHVyaSk7CisKKyAgcmV0dXJuIHsKKyAgICBzY2hlbWU6IHBhcnRzWzRdID8gcGFydHNbNF0ucmVwbGFjZSgnOicsJycpIDogdW5kZWZpbmVkLAorICAgIGhvc3Q6IHBhcnRzWzExXSwKKyAgICBwb3J0OiBwYXJ0c1sxMl0sCisgICAgcGF0aDogcGFydHNbMTVdCisgIH07Cit9OworCitTd2FnZ2VyQ2xpZW50LnByb3RvdHlwZS5oZWxwID0gZnVuY3Rpb24gKGRvbnRQcmludCkgeworICB2YXIgb3V0cHV0ID0gJyc7CisKKyAgaWYgKHRoaXMgaW5zdGFuY2VvZiBTd2FnZ2VyQ2xpZW50KSB7CisgICAgXy5mb3JFYWNoKHRoaXMuYXBpcywgZnVuY3Rpb24gKGFwaSwgbmFtZSkgeworICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChhcGkpKSB7CisgICAgICAgIG91dHB1dCArPSAnb3BlcmF0aW9ucyBmb3IgdGhlIFwnJyArIG5hbWUgKyAnXCcgdGFnXG4nOworCisgICAgICAgIF8uZm9yRWFjaChhcGkub3BlcmF0aW9ucywgZnVuY3Rpb24gKG9wZXJhdGlvbiwgbmFtZSkgeworICAgICAgICAgIG91dHB1dCArPSAnICAqICcgKyBuYW1lICsgJzogJyArIG9wZXJhdGlvbi5zdW1tYXJ5ICsgJ1xuJzsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSk7CisgIH0gZWxzZSBpZiAodGhpcyBpbnN0YW5jZW9mIE9wZXJhdGlvbkdyb3VwIHx8IF8uaXNQbGFpbk9iamVjdCh0aGlzKSkgeworICAgIG91dHB1dCArPSAnb3BlcmF0aW9ucyBmb3IgdGhlIFwnJyArIHRoaXMubGFiZWwgKyAnXCcgdGFnXG4nOworCisgICAgXy5mb3JFYWNoKHRoaXMuYXBpcywgZnVuY3Rpb24gKG9wZXJhdGlvbiwgbmFtZSkgeworICAgICAgb3V0cHV0ICs9ICcgICogJyArIG5hbWUgKyAnOiAnICsgb3BlcmF0aW9uLnN1bW1hcnkgKyAnXG4nOworICAgIH0pOworICB9CisKKyAgaWYgKGRvbnRQcmludCkgeworICAgIHJldHVybiBvdXRwdXQ7CisgIH0gZWxzZSB7CisgICAgaGVscGVycy5sb2cob3V0cHV0KTsKKworICAgIHJldHVybiBvdXRwdXQ7CisgIH0KK307CisKK1N3YWdnZXJDbGllbnQucHJvdG90eXBlLnRhZ0Zyb21MYWJlbCA9IGZ1bmN0aW9uIChsYWJlbCkgeworICByZXR1cm4gbGFiZWw7Cit9OworCitTd2FnZ2VyQ2xpZW50LnByb3RvdHlwZS5pZEZyb21PcCA9IGZ1bmN0aW9uIChwYXRoLCBodHRwTWV0aG9kLCBvcCkgeworICBpZighb3AgfHwgIW9wLm9wZXJhdGlvbklkKSB7CisgICAgb3AgPSBvcCB8fCB7fTsKKyAgICBvcC5vcGVyYXRpb25JZCA9IGh0dHBNZXRob2QgKyAnXycgKyBwYXRoOworICB9CisgIHZhciBvcElkID0gb3Aub3BlcmF0aW9uSWQucmVwbGFjZSgvW1xzIUAjJCVeJiooKV8rPVxbe1xdfTs6PD58LlwvPyxcXCciIi1dL2csICdfJykgfHwgKHBhdGguc3Vic3RyaW5nKDEpICsgJ18nICsgaHR0cE1ldGhvZCk7CisKKyAgb3BJZCA9IG9wSWQucmVwbGFjZSgvKChfKXsyLH0pL2csICdfJyk7CisgIG9wSWQgPSBvcElkLnJlcGxhY2UoL14oXykqL2csICcnKTsKKyAgb3BJZCA9IG9wSWQucmVwbGFjZSgvKFtfXSkqJC9nLCAnJyk7CisKKyAgcmV0dXJuIG9wSWQ7Cit9OworCitTd2FnZ2VyQ2xpZW50LnByb3RvdHlwZS5zZXRIb3N0ID0gZnVuY3Rpb24gKGhvc3QpIHsKKyAgdGhpcy5ob3N0ID0gaG9zdDsKKworICBpZih0aGlzLmFwaXMpIHsKKyAgICBfLmZvckVhY2godGhpcy5hcGlzLCBmdW5jdGlvbihhcGkpIHsKKyAgICAgIGlmKGFwaS5vcGVyYXRpb25zKSB7CisgICAgICAgIF8uZm9yRWFjaChhcGkub3BlcmF0aW9ucywgZnVuY3Rpb24ob3BlcmF0aW9uKSB7CisgICAgICAgICAgb3BlcmF0aW9uLmhvc3QgPSBob3N0OworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUuc2V0QmFzZVBhdGggPSBmdW5jdGlvbiAoYmFzZVBhdGgpIHsKKyAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoOworCisgIGlmKHRoaXMuYXBpcykgeworICAgIF8uZm9yRWFjaCh0aGlzLmFwaXMsIGZ1bmN0aW9uKGFwaSkgeworICAgICAgaWYoYXBpLm9wZXJhdGlvbnMpIHsKKyAgICAgICAgXy5mb3JFYWNoKGFwaS5vcGVyYXRpb25zLCBmdW5jdGlvbihvcGVyYXRpb24pIHsKKyAgICAgICAgICBvcGVyYXRpb24uYmFzZVBhdGggPSBiYXNlUGF0aDsKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfSk7CisgIH0KK307CisKK1N3YWdnZXJDbGllbnQucHJvdG90eXBlLnNldFNjaGVtZXMgPSBmdW5jdGlvbiAoc2NoZW1lcykgeworICB0aGlzLnNjaGVtZXMgPSBzY2hlbWVzOworCisgIGlmKHNjaGVtZXMgJiYgc2NoZW1lcy5sZW5ndGggPiAwKSB7CisgICAgaWYodGhpcy5hcGlzKSB7CisgICAgICBfLmZvckVhY2godGhpcy5hcGlzLCBmdW5jdGlvbiAoYXBpKSB7CisgICAgICAgIGlmIChhcGkub3BlcmF0aW9ucykgeworICAgICAgICAgIF8uZm9yRWFjaChhcGkub3BlcmF0aW9ucywgZnVuY3Rpb24gKG9wZXJhdGlvbikgeworICAgICAgICAgICAgb3BlcmF0aW9uLnNjaGVtZSA9IHNjaGVtZXNbMF07CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAgfQorfTsKKworU3dhZ2dlckNsaWVudC5wcm90b3R5cGUuZmFpbCA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CisgIGlmICh0aGlzLnVzZVByb21pc2UpIHsKKyAgICB0aGlzLmRlZmVycmVkQ2xpZW50LnJlamVjdChtZXNzYWdlKTsKKyAgICByZXR1cm4gdGhpcy5kZWZlcnJlZENsaWVudC5wcm9taXNlOworICB9IGVsc2UgeworICAgIGlmICh0aGlzLmZhaWx1cmUpIHsKKyAgICAgIHRoaXMuZmFpbHVyZShtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICB0aGlzLmZhaWx1cmUobWVzc2FnZSk7CisgICAgfQorICB9Cit9OworCit9LHsiLi9hdXRoIjoyLCIuL2hlbHBlcnMiOjQsIi4vaHR0cCI6NSwiLi9yZXNvbHZlciI6NiwiLi9zcGVjLWNvbnZlcnRlciI6OCwiLi90eXBlcy9tb2RlbCI6OSwiLi90eXBlcy9vcGVyYXRpb24iOjEwLCIuL3R5cGVzL29wZXJhdGlvbkdyb3VwIjoxMSwibG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mIjo0OSwibG9kYXNoLWNvbXBhdC9jb2xsZWN0aW9uL2ZpbmQiOjUzLCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZm9yRWFjaCI6NTQsImxvZGFzaC1jb21wYXQvZnVuY3Rpb24vYmluZCI6NTgsImxvZGFzaC1jb21wYXQvbGFuZy9jbG9uZURlZXAiOjEzOCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXkiOjE0MCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzRnVuY3Rpb24iOjE0MiwibG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0IjoxNDQsImxvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0IjoxNDUsImxvZGFzaC1jb21wYXQvbGFuZy9pc1VuZGVmaW5lZCI6MTQ4LCJxIjoxNTd9XSw0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAocHJvY2Vzcyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBfID0geworICBpc1BsYWluT2JqZWN0OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCcpLAorICBpbmRleE9mOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2FycmF5L2luZGV4T2YnKQorfTsKKworbW9kdWxlLmV4cG9ydHMuX19iaW5kID0gZnVuY3Rpb24gKGZuLCBtZSkgeworICByZXR1cm4gZnVuY3Rpb24oKXsKKyAgICByZXR1cm4gZm4uYXBwbHkobWUsIGFyZ3VtZW50cyk7CisgIH07Cit9OworCit2YXIgbG9nID0gbW9kdWxlLmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7CisgIC8vIE9ubHkgbG9nIGlmIGF2YWlsYWJsZSBhbmQgd2UncmUgbm90IHRlc3RpbmcKKyAgaWYgKGNvbnNvbGUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0JykgeworICAgIGNvbnNvbGUubG9nKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cylbMF0pOworICB9Cit9OworCittb2R1bGUuZXhwb3J0cy5mYWlsID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKKyAgbG9nKG1lc3NhZ2UpOworfTsKKworbW9kdWxlLmV4cG9ydHMub3B0aW9uSHRtbCA9IGZ1bmN0aW9uIChsYWJlbCwgdmFsdWUpIHsKKyAgcmV0dXJuICc8dHI+PHRkIGNsYXNzPSJvcHRpb25OYW1lIj4nICsgbGFiZWwgKyAnOjwvdGQ+PHRkPicgKyB2YWx1ZSArICc8L3RkPjwvdHI+JzsKK307CisKK3ZhciByZXNvbHZlU2NoZW1hID0gbW9kdWxlLmV4cG9ydHMucmVzb2x2ZVNjaGVtYSA9IGZ1bmN0aW9uIChzY2hlbWEpIHsKKyAgaWYgKF8uaXNQbGFpbk9iamVjdChzY2hlbWEuc2NoZW1hKSkgeworICAgIHNjaGVtYSA9IHJlc29sdmVTY2hlbWEoc2NoZW1hLnNjaGVtYSk7CisgIH0KKworICByZXR1cm4gc2NoZW1hOworfTsKKworbW9kdWxlLmV4cG9ydHMuc2ltcGxlUmVmID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgaWYgKHR5cGVvZiBuYW1lID09PSAndW5kZWZpbmVkJykgeworICAgIHJldHVybiBudWxsOworICB9CisKKyAgaWYgKG5hbWUuaW5kZXhPZignIy9kZWZpbml0aW9ucy8nKSA9PT0gMCkgeworICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygnIy9kZWZpbml0aW9ucy8nLmxlbmd0aCk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIG5hbWU7CisgIH0KK307CisKKy8qKgorICogaGVscGVyIHRvIHJlbW92ZSBleHRlbnNpb25zIGFuZCBhZGQgdGhlbSB0byBhbiBvYmplY3QKKyAqCisgKiBAcGFyYW0ga2V5bmFtZQorICogQHBhcmFtIG9iagorICovCittb2R1bGUuZXhwb3J0cy5leHRyYWN0RXh0ZW5zaW9ucyA9IGZ1bmN0aW9uIChrZXluYW1lLCBvYmosIHZhbHVlKSB7CisgIGlmKCFrZXluYW1lIHx8ICFvYmopIHsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAodHlwZW9mIGtleW5hbWUgPT09ICdzdHJpbmcnICYmIGtleW5hbWUuaW5kZXhPZigneC0nKSA9PT0gMCkgeworICAgIG9iai52ZW5kb3JFeHRlbnNpb25zID0gb2JqLnZlbmRvckV4dGVuc2lvbnMgfHwge307CisgICAgaWYodmFsdWUpIHsKKyAgICAgIG9iai52ZW5kb3JFeHRlbnNpb25zW2tleW5hbWVdID0gdmFsdWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgb2JqLnZlbmRvckV4dGVuc2lvbnNba2V5bmFtZV0gPSBvYmpba2V5bmFtZV07CisgICAgfQorICB9Cit9OworfSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpCisKK30seyJfcHJvY2VzcyI6MTIsImxvZGFzaC1jb21wYXQvYXJyYXkvaW5kZXhPZiI6NDksImxvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0IjoxNDV9XSw1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoQnVmZmVyKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTsKK3ZhciByZXF1ZXN0ID0gcmVxdWlyZSgnc3VwZXJhZ2VudCcpOwordmFyIGpzeWFtbCA9IHJlcXVpcmUoJ2pzLXlhbWwnKTsKK3ZhciBfID0geworICBpc09iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0JyksCisgIGtleXM6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvb2JqZWN0L2tleXMnKQorfTsKKworLyoKKyAqIEpRdWVyeUh0dHBDbGllbnQgaXMgYSBsaWdodC13ZWlnaHQsIG5vZGUgb3IgYnJvd3NlciBIVFRQIGNsaWVudAorICovCit2YXIgSlF1ZXJ5SHR0cENsaWVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy50eXBlID0gJ0pRdWVyeUh0dHBDbGllbnQnOworfTsKKworLyoKKyAqIFN1cGVyYWdlbnRIdHRwQ2xpZW50IGlzIGEgbGlnaHQtd2VpZ2h0LCBub2RlIG9yIGJyb3dzZXIgSFRUUCBjbGllbnQKKyAqLwordmFyIFN1cGVyYWdlbnRIdHRwQ2xpZW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnR5cGUgPSAnU3VwZXJhZ2VudEh0dHBDbGllbnQnOworfTsKKworLyoqCisgKiBTd2FnZ2VySHR0cCBpcyBhIHdyYXBwZXIgZm9yIGV4ZWN1dGluZyByZXF1ZXN0cworICovCit2YXIgU3dhZ2dlckh0dHAgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHt9OworCitTd2FnZ2VySHR0cC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uIChvYmosIG9wdHMpIHsKKyAgdmFyIGNsaWVudDsKKworICBpZihvcHRzICYmIG9wdHMuY2xpZW50KSB7CisgICAgY2xpZW50ID0gb3B0cy5jbGllbnQ7CisgIH0KKyAgZWxzZSB7CisgICAgY2xpZW50ID0gbmV3IFN1cGVyYWdlbnRIdHRwQ2xpZW50KG9wdHMpOworICB9CisgIGNsaWVudC5vcHRzID0gb3B0cyB8fCB7fTsKKworICBpZiAob3B0cyAmJiBvcHRzLnJlcXVlc3RBZ2VudCkgeworICAgIHJlcXVlc3QgPSBvcHRzLnJlcXVlc3RBZ2VudDsKKyAgfQorCisgIC8vIGxlZ2FjeSBzdXBwb3J0CisgIHZhciBoYXNKUXVlcnkgPSBmYWxzZTsKKyAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBpZih0eXBlb2Ygd2luZG93LmpRdWVyeSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIGhhc0pRdWVyeSA9IHRydWU7CisgICAgfQorICB9CisgIC8vIE9QVElPTlMgc3VwcG9ydAorICBpZihvYmoubWV0aG9kLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb25zJyAmJiBjbGllbnQudHlwZSA9PT0gJ1N1cGVyYWdlbnRIdHRwQ2xpZW50JykgeworICAgIGxvZygnZm9yY2luZyBqUXVlcnkgYXMgT1BUSU9OUyBhcmUgbm90IHN1cHBvcnRlZCBieSBTdXBlckFnZW50Jyk7CisgICAgb2JqLnVzZUpRdWVyeSA9IHRydWU7CisgIH0KKyAgaWYodGhpcy5pc0ludGVybmV0RXhwbG9yZXIoKSAmJiAob2JqLnVzZUpRdWVyeSA9PT0gZmFsc2UgfHwgIWhhc0pRdWVyeSApKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uISBKUXVlcnkgaXMgcmVxdWlyZWQgYnV0IG5vdCBhdmFpbGFibGUnKTsKKyAgfQorICBpZiAoKG9iaiAmJiBvYmoudXNlSlF1ZXJ5ID09PSB0cnVlKSB8fCB0aGlzLmlzSW50ZXJuZXRFeHBsb3JlcigpICYmIGhhc0pRdWVyeSkgeworICAgIGNsaWVudCA9IG5ldyBKUXVlcnlIdHRwQ2xpZW50KG9wdHMpOworICB9CisKKyAgdmFyIHN1Y2Nlc3MgPSBvYmoub24ucmVzcG9uc2U7CisgIHZhciBlcnJvciA9IG9iai5vbi5lcnJvcjsKKworICB2YXIgcmVxdWVzdEludGVyY2VwdG9yID0gZnVuY3Rpb24oZGF0YSkgeworICAgIGlmKG9wdHMgJiYgb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3IpIHsKKyAgICAgIGRhdGEgPSBvcHRzLnJlcXVlc3RJbnRlcmNlcHRvci5hcHBseShkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIGRhdGE7CisgIH07CisKKyAgdmFyIHJlc3BvbnNlSW50ZXJjZXB0b3IgPSBmdW5jdGlvbihkYXRhKSB7CisgICAgaWYob3B0cyAmJiBvcHRzLnJlc3BvbnNlSW50ZXJjZXB0b3IpIHsKKyAgICAgIGRhdGEgPSBvcHRzLnJlc3BvbnNlSW50ZXJjZXB0b3IuYXBwbHkoZGF0YSwgW29ial0pOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzcyhkYXRhKTsKKyAgfTsKKworICB2YXIgZXJyb3JJbnRlcmNlcHRvciA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBpZihvcHRzICYmIG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvcikgeworICAgICAgZGF0YSA9IG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvci5hcHBseShkYXRhLCBbb2JqXSk7CisgICAgfQorICAgIGVycm9yKGRhdGEpOworICB9OworCisgIG9iai5vbi5lcnJvciA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBlcnJvckludGVyY2VwdG9yKGRhdGEpOworICB9OworCisgIG9iai5vbi5yZXNwb25zZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBpZihkYXRhICYmIGRhdGEuc3RhdHVzID49IDQwMCkgeworICAgICAgZXJyb3JJbnRlcmNlcHRvcihkYXRhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXNwb25zZUludGVyY2VwdG9yKGRhdGEpOworICAgIH0KKyAgfTsKKworICBpZiAoXy5pc09iamVjdChvYmopICYmIF8uaXNPYmplY3Qob2JqLmJvZHkpKSB7CisgICAgLy8gc3BlY2lhbCBwcm9jZXNzaW5nIGZvciBmaWxlIHVwbG9hZHMgdmlhIGpxdWVyeQorICAgIGlmIChvYmouYm9keS50eXBlICYmIG9iai5ib2R5LnR5cGUgPT09ICdmb3JtRGF0YScpeworICAgICAgaWYob3B0cy51c2VKUXVlcnkpIHsKKyAgICAgICAgb2JqLmNvbnRlbnRUeXBlID0gZmFsc2U7CisgICAgICAgIG9iai5wcm9jZXNzRGF0YSA9IGZhbHNlOworICAgICAgICBkZWxldGUgb2JqLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOworICAgICAgfQorICAgIH0KKyAgfQorCisgIG9iaiA9IHJlcXVlc3RJbnRlcmNlcHRvcihvYmopIHx8IG9iajsKKyAgaWYgKG9iai5iZWZvcmVTZW5kKSB7CisgICAgb2JqLmJlZm9yZVNlbmQoZnVuY3Rpb24oX29iaikgeworICAgICAgY2xpZW50LmV4ZWN1dGUoX29iaiB8fCBvYmopOworICAgIH0pOworICB9IGVsc2UgeworICAgIGNsaWVudC5leGVjdXRlKG9iaik7CisgIH0KKworICByZXR1cm4gKG9iai5kZWZlcnJlZCkgPyBvYmouZGVmZXJyZWQucHJvbWlzZSA6IG9iajsKK307CisKK1N3YWdnZXJIdHRwLnByb3RvdHlwZS5pc0ludGVybmV0RXhwbG9yZXIgPSBmdW5jdGlvbiAoKSB7CisgIHZhciBkZXRlY3RlZElFID0gZmFsc2U7CisKKyAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQpIHsKKyAgICB2YXIgbmF2ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOworCisgICAgaWYgKG5hdi5pbmRleE9mKCdtc2llJykgIT09IC0xKSB7CisgICAgICB2YXIgdmVyc2lvbiA9IHBhcnNlSW50KG5hdi5zcGxpdCgnbXNpZScpWzFdKTsKKworICAgICAgaWYgKHZlcnNpb24gPD0gOCkgeworICAgICAgICBkZXRlY3RlZElFID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gZGV0ZWN0ZWRJRTsKK307CisKK0pRdWVyeUh0dHBDbGllbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAob2JqKSB7CisgIHZhciBqcSA9IHRoaXMualF1ZXJ5IHx8ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cualF1ZXJ5KTsKKyAgdmFyIGNiID0gb2JqLm9uOworICB2YXIgcmVxdWVzdCA9IG9iajsKKworICBpZih0eXBlb2YganEgPT09ICd1bmRlZmluZWQnIHx8IGpxID09PSBmYWxzZSkgeworICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiEgSlF1ZXJ5IGlzIHJlcXVpcmVkIGJ1dCBub3QgYXZhaWxhYmxlJyk7CisgIH0KKworICBvYmoudHlwZSA9IG9iai5tZXRob2Q7CisgIG9iai5jYWNoZSA9IG9iai5qcXVlcnlBamF4Q2FjaGU7CisgIG9iai5kYXRhID0gb2JqLmJvZHk7CisgIGRlbGV0ZSBvYmouanF1ZXJ5QWpheENhY2hlOworICBkZWxldGUgb2JqLnVzZUpRdWVyeTsKKyAgZGVsZXRlIG9iai5ib2R5OworCisgIG9iai5jb21wbGV0ZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgIHZhciBoZWFkZXJzID0ge307CisgICAgdmFyIGhlYWRlckFycmF5ID0gcmVzcG9uc2UuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkuc3BsaXQoJ1xuJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlckFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgdG9TcGxpdCA9IGhlYWRlckFycmF5W2ldLnRyaW0oKTsKKworICAgICAgaWYgKHRvU3BsaXQubGVuZ3RoID09PSAwKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorCisgICAgICB2YXIgc2VwYXJhdG9yID0gdG9TcGxpdC5pbmRleE9mKCc6Jyk7CisKKyAgICAgIGlmIChzZXBhcmF0b3IgPT09IC0xKSB7CisgICAgICAgIC8vIE5hbWUgYnV0IG5vIHZhbHVlIGluIHRoZSBoZWFkZXIKKyAgICAgICAgaGVhZGVyc1t0b1NwbGl0XSA9IG51bGw7CisKKyAgICAgICAgY29udGludWU7CisgICAgICB9CisKKyAgICAgIHZhciBuYW1lID0gdG9TcGxpdC5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKS50cmltKCk7CisgICAgICB2YXIgdmFsdWUgPSB0b1NwbGl0LnN1YnN0cmluZyhzZXBhcmF0b3IgKyAxKS50cmltKCk7CisKKyAgICAgIGhlYWRlcnNbbmFtZV0gPSB2YWx1ZTsKKyAgICB9CisKKyAgICB2YXIgb3V0ID0geworICAgICAgdXJsOiByZXF1ZXN0LnVybCwKKyAgICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsCisgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cywKKyAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCisgICAgICBkYXRhOiByZXNwb25zZS5yZXNwb25zZVRleHQsCisgICAgICBoZWFkZXJzOiBoZWFkZXJzCisgICAgfTsKKworICAgIHRyeSB7CisgICAgICB2YXIgcG9zc2libGVPYmogPSAgcmVzcG9uc2UucmVzcG9uc2VKU09OIHx8IGpzeWFtbC5zYWZlTG9hZChyZXNwb25zZS5yZXNwb25zZVRleHQpOworICAgICAgb3V0Lm9iaiA9ICh0eXBlb2YgcG9zc2libGVPYmogPT09ICdzdHJpbmcnKSA/IHt9IDogcG9zc2libGVPYmo7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgIC8vIGRvIG5vdCBzZXQgb3V0Lm9iagorICAgICAgaGVscGVycy5sb2coJ3VuYWJsZSB0byBwYXJzZSBKU09OL1lBTUwgY29udGVudCcpOworICAgIH0KKworICAgIC8vIEkgY2FuIHRocm93LCBvciBwYXJzZSBudWxsPworICAgIG91dC5vYmogPSBvdXQub2JqIHx8IG51bGw7CisKKyAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDIwMCAmJiByZXNwb25zZS5zdGF0dXMgPCAzMDApIHsKKyAgICAgIGNiLnJlc3BvbnNlKG91dCk7CisgICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDAgfHwgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgNTk5KSkgeworICAgICAgY2IuZXJyb3Iob3V0KTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGNiLnJlc3BvbnNlKG91dCk7CisgICAgfQorICB9OworCisgIGpxLnN1cHBvcnQuY29ycyA9IHRydWU7CisKKyAgcmV0dXJuIGpxLmFqYXgob2JqKTsKK307CisKK1N1cGVyYWdlbnRIdHRwQ2xpZW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKG9iaikgeworICB2YXIgbWV0aG9kID0gb2JqLm1ldGhvZC50b0xvd2VyQ2FzZSgpOworICB2YXIgdGltZW91dCA9IG9iai50aW1lb3V0OworCisgIGlmIChtZXRob2QgPT09ICdkZWxldGUnKSB7CisgICAgbWV0aG9kID0gJ2RlbCc7CisgIH0KKyAgdmFyIGhlYWRlcnMgPSBvYmouaGVhZGVycyB8fCB7fTsKKworICB2YXIgciA9IHJlcXVlc3RbbWV0aG9kXShvYmoudXJsKTsKKworICBpZiAob2JqLmNvbm5lY3Rpb25BZ2VudCkgeworICAgIHIuYWdlbnQob2JqLmNvbm5lY3Rpb25BZ2VudCk7CisgIH0KKworICBpZiAodGltZW91dCkgeworICAgIHIudGltZW91dCh0aW1lb3V0KTsKKyAgfQorCisgIGlmIChvYmouZW5hYmxlQ29va2llcykgeworICAgIHIud2l0aENyZWRlbnRpYWxzKCk7CisgIH0KKworICB2YXIgYWNjZXB0ID0gb2JqLmhlYWRlcnMuQWNjZXB0OworCisgIGlmKHRoaXMuYmluYXJ5UmVxdWVzdChhY2NlcHQpKSB7CisgICAgci5vbigncmVxdWVzdCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGlmKHRoaXMueGhyKSB7CisgICAgICAgIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJzsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIGlmKG9iai5ib2R5KSB7CisgICAgaWYoXy5pc09iamVjdChvYmouYm9keSkpIHsKKyAgICAgIHZhciBjb250ZW50VHlwZSA9IG9iai5oZWFkZXJzWydDb250ZW50LVR5cGUnXSB8fCAnJzsKKyAgICAgIGlmIChjb250ZW50VHlwZS5pbmRleE9mKCdtdWx0aXBhcnQvZm9ybS1kYXRhJykgPT09IDApIHsKKyAgICAgICAgZGVsZXRlIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOworICAgICAgICBpZih7fS50b1N0cmluZy5hcHBseShvYmouYm9keSkgPT09ICdbb2JqZWN0IEZvcm1EYXRhXScpIHsKKyAgICAgICAgICByLnNlbmQob2JqLmJvZHkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHZhciBrZXluYW1lLCB2YWx1ZSwgdjsKKyAgICAgICAgICBmb3IgKGtleW5hbWUgaW4gb2JqLmJvZHkpIHsKKyAgICAgICAgICAgIHZhbHVlID0gb2JqLmJvZHlba2V5bmFtZV07CisgICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgICAgICAgICBmb3IodiBpbiB2YWx1ZSkgeworICAgICAgICAgICAgICAgIHIuZmllbGQoa2V5bmFtZSwgdik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICByLmZpZWxkKGtleW5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYgKF8uaXNPYmplY3Qob2JqLmJvZHkpKSB7CisgICAgICAgIC8vIG5vbiBtdWx0aXBhcnQvZm9ybS1kYXRhCisgICAgICAgIG9iai5ib2R5ID0gSlNPTi5zdHJpbmdpZnkob2JqLmJvZHkpOworICAgICAgICByLnNlbmQob2JqLmJvZHkpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHIuc2VuZChvYmouYm9keSk7CisgICAgfQorICB9CisKKyAgdmFyIG5hbWU7CisgIGZvciAobmFtZSBpbiBoZWFkZXJzKSB7CisgICAgci5zZXQobmFtZSwgaGVhZGVyc1tuYW1lXSk7CisgIH0KKworICBpZih0eXBlb2Ygci5idWZmZXIgPT09ICdmdW5jdGlvbicpIHsKKyAgICByLmJ1ZmZlcigpOyAvLyBmb3JjZSBzdXBlcmFnZW50IHRvIHBvcHVsYXRlIHJlcy50ZXh0IHdpdGggdGhlIHJhdyByZXNwb25zZSBkYXRhCisgIH0KKworICByLmVuZChmdW5jdGlvbiAoZXJyLCByZXMpIHsKKyAgICByZXMgPSByZXMgfHwgeworICAgICAgc3RhdHVzOiAwLAorICAgICAgaGVhZGVyczoge2Vycm9yOiAnbm8gcmVzcG9uc2UgZnJvbSBzZXJ2ZXInfQorICAgIH07CisgICAgdmFyIHJlc3BvbnNlID0geworICAgICAgdXJsOiBvYmoudXJsLAorICAgICAgbWV0aG9kOiBvYmoubWV0aG9kLAorICAgICAgaGVhZGVyczogcmVzLmhlYWRlcnMKKyAgICB9OworICAgIHZhciBjYjsKKworICAgIGlmICghZXJyICYmIHJlcy5lcnJvcikgeworICAgICAgZXJyID0gcmVzLmVycm9yOworICAgIH0KKworICAgIGlmIChlcnIgJiYgb2JqLm9uICYmIG9iai5vbi5lcnJvcikgeworICAgICAgcmVzcG9uc2UuZXJyT2JqID0gZXJyOworICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gcmVzID8gcmVzLnN0YXR1cyA6IDUwMDsKKyAgICAgIHJlc3BvbnNlLnN0YXR1c1RleHQgPSByZXMgPyByZXMudGV4dCA6IGVyci5tZXNzYWdlOworICAgICAgaWYgKHJlcy5oZWFkZXJzICYmIHJlcy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSkgeworICAgICAgICBpZiAocmVzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddLmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA+PSAwKSB7CisgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3BvbnNlLm9iaiA9IEpTT04ucGFyc2UocmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisgICAgICAgICAgfQorICAgICAgICAgIGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXNwb25zZS5vYmogPSBudWxsOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgY2IgPSBvYmoub24uZXJyb3I7CisgICAgfSBlbHNlIGlmIChyZXMgJiYgb2JqLm9uICYmIG9iai5vbi5yZXNwb25zZSkgeworICAgICAgdmFyIHBvc3NpYmxlT2JqOworCisgICAgICAvLyBBbHJlYWR5IHBhcnNlZCBieSBieSBzdXBlcmFnZW50PworICAgICAgaWYgKHJlcy5ib2R5ICYmIF8ua2V5cyhyZXMuYm9keSkubGVuZ3RoID4gMCkgeworICAgICAgICBwb3NzaWJsZU9iaiA9IHJlcy5ib2R5OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBwb3NzaWJsZU9iaiA9IGpzeWFtbC5zYWZlTG9hZChyZXMudGV4dCk7CisgICAgICAgICAgLy8gY2FuIHBhcnNlIGludG8gYSBzdHJpbmcuLi4gd2hpY2ggd2UgZG9uJ3QgbmVlZCBydW5uaW5nIGFyb3VuZCBpbiB0aGUgc3lzdGVtCisgICAgICAgICAgcG9zc2libGVPYmogPSAodHlwZW9mIHBvc3NpYmxlT2JqID09PSAnc3RyaW5nJykgPyBudWxsIDogcG9zc2libGVPYmo7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICBoZWxwZXJzLmxvZygnY2Fubm90IHBhcnNlIEpTT04vWUFNTCBjb250ZW50Jyk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgLy8gbnVsbCBtZWFucyB3ZSBjYW4ndCBwYXJzZSBpbnRvIG9iamVjdAorICAgICAgaWYodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBCdWZmZXIuaXNCdWZmZXIocG9zc2libGVPYmopKSB7CisgICAgICAgIHJlc3BvbnNlLmRhdGEgPSBwb3NzaWJsZU9iajsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICByZXNwb25zZS5vYmogPSAodHlwZW9mIHBvc3NpYmxlT2JqID09PSAnb2JqZWN0JykgPyBwb3NzaWJsZU9iaiA6IG51bGw7CisgICAgICB9CisKKyAgICAgIHJlc3BvbnNlLnN0YXR1cyA9IHJlcy5zdGF0dXM7CisgICAgICByZXNwb25zZS5zdGF0dXNUZXh0ID0gcmVzLnRleHQ7CisgICAgICBjYiA9IG9iai5vbi5yZXNwb25zZTsKKyAgICB9CisgICAgaWYgKHJlcy54aHIgJiYgcmVzLnhoci5yZXNwb25zZSkgeworICAgICAgcmVzcG9uc2UuZGF0YSA9IHJlcy54aHIucmVzcG9uc2U7CisgICAgfQorICAgIGVsc2UgaWYoIXJlc3BvbnNlLmRhdGEpIHsKKyAgICAgIHJlc3BvbnNlLmRhdGEgPSByZXNwb25zZS5zdGF0dXNUZXh0OworICAgIH0KKworICAgIGlmIChjYikgeworICAgICAgY2IocmVzcG9uc2UpOworICAgIH0KKyAgfSk7Cit9OworCitTdXBlcmFnZW50SHR0cENsaWVudC5wcm90b3R5cGUuIGJpbmFyeVJlcXVlc3QgPSBmdW5jdGlvbiAoYWNjZXB0KSB7CisgIGlmKCFhY2NlcHQpIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuICgvXmltYWdlL2kpLnRlc3QoYWNjZXB0KQorICAgIHx8ICgvXmFwcGxpY2F0aW9uXC9wZGYvKS50ZXN0KGFjY2VwdCkKKyAgICB8fCAoL15hcHBsaWNhdGlvblwvb2N0ZXQtc3RyZWFtLykudGVzdChhY2NlcHQpOworfTsKKworfSkuY2FsbCh0aGlzLHJlcXVpcmUoImJ1ZmZlciIpLkJ1ZmZlcikKKworfSx7Ii4vaGVscGVycyI6NCwiYnVmZmVyIjoxNCwianMteWFtbCI6MTksImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCI6MTQ0LCJsb2Rhc2gtY29tcGF0L29iamVjdC9rZXlzIjoxNDksInN1cGVyYWdlbnQiOjE1OH1dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgU3dhZ2dlckh0dHAgPSByZXF1aXJlKCcuL2h0dHAnKTsKK3ZhciBfID0geworICBpc09iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0JyksCisgIGNsb25lRGVlcDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCcpLAorICBpc0FycmF5OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheScpLAorICBpc1N0cmluZzogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzU3RyaW5nJykKK307CisKKworLyoqCisgKiBSZXNvbHZlcyBhIHNwZWMncyByZW1vdGUgcmVmZXJlbmNlcworICovCit2YXIgUmVzb2x2ZXIgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5mYWlsZWRVcmxzID0gW107CisgIHRoaXMucmVzb2x2ZXJDYWNoZSA9IHt9OworICB0aGlzLnBlbmRpbmdVcmxzID0ge307Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUucHJvY2Vzc0FsbE9mID0gZnVuY3Rpb24ocm9vdCwgbmFtZSwgZGVmaW5pdGlvbiwgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgc3BlYykgeworICB2YXIgaSwgbG9jYXRpb24sIHByb3BlcnR5OworCisgIGRlZmluaXRpb25bJ3gtcmVzb2x2ZWQtZnJvbSddID0gWyAnIy9kZWZpbml0aW9ucy8nICsgbmFtZSBdOworICB2YXIgYWxsT2YgPSBkZWZpbml0aW9uLmFsbE9mOworICAvLyB0aGUgcmVmcyBnbyBmaXJzdAorICBhbGxPZi5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICBpZihhLiRyZWYgJiYgYi4kcmVmKSB7IHJldHVybiAwOyB9CisgICAgZWxzZSBpZihhLiRyZWYpIHsgcmV0dXJuIC0xOyB9CisgICAgZWxzZSB7IHJldHVybiAxOyB9CisgIH0pOworICBmb3IgKGkgPSAwOyBpIDwgYWxsT2YubGVuZ3RoOyBpKyspIHsKKyAgICBwcm9wZXJ0eSA9IGFsbE9mW2ldOworICAgIGxvY2F0aW9uID0gJy9kZWZpbml0aW9ucy8nICsgbmFtZSArICcvYWxsT2YnOworICAgIHRoaXMucmVzb2x2ZUlubGluZShyb290LCBzcGVjLCBwcm9wZXJ0eSwgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgbG9jYXRpb24pOworICB9Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uIChzcGVjLCBhcmcxLCBhcmcyLCBhcmczKSB7CisgIHRoaXMuc3BlYyA9IHNwZWM7CisgIHZhciByb290ID0gYXJnMSwgY2FsbGJhY2sgPSBhcmcyLCBzY29wZSA9IGFyZzMsIG9wdHMgPSB7fSwgbG9jYXRpb24sIGk7CisgIGlmKHR5cGVvZiBhcmcxID09PSAnZnVuY3Rpb24nKSB7CisgICAgcm9vdCA9IG51bGw7CisgICAgY2FsbGJhY2sgPSBhcmcxOworICAgIHNjb3BlID0gYXJnMjsKKyAgfQorICB2YXIgX3Jvb3QgPSByb290LCBtb2RlbE5hbWU7CisgIHRoaXMuc2NvcGUgPSAoc2NvcGUgfHwgdGhpcyk7CisgIHRoaXMuaXRlcmF0aW9uID0gdGhpcy5pdGVyYXRpb24gfHwgMDsKKworICBpZih0aGlzLnNjb3BlLm9wdGlvbnMgJiYgdGhpcy5zY29wZS5vcHRpb25zLnJlcXVlc3RJbnRlcmNlcHRvcil7CisgICAgb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3IgPSB0aGlzLnNjb3BlLm9wdGlvbnMucmVxdWVzdEludGVyY2VwdG9yOworICB9CisKKyAgaWYodGhpcy5zY29wZS5vcHRpb25zICYmIHRoaXMuc2NvcGUub3B0aW9ucy5yZXNwb25zZUludGVyY2VwdG9yKXsKKyAgICBvcHRzLnJlc3BvbnNlSW50ZXJjZXB0b3IgPSB0aGlzLnNjb3BlLm9wdGlvbnMucmVzcG9uc2VJbnRlcmNlcHRvcjsKKyAgfQorCisgIHZhciBuYW1lLCBwYXRoLCBwcm9wZXJ0eSwgcHJvcGVydHlOYW1lLCBwYXJhbWV0ZXIsIGRvbmUsIGNvdW50ZXI7CisgIHZhciBwcm9jZXNzZWRDYWxscyA9IDAsIHJlc29sdmVkUmVmcyA9IHt9LCB1bnJlc29sdmVkUmVmcyA9IHt9OworICB2YXIgcmVzb2x1dGlvblRhYmxlID0gW107IC8vIHN0b3JlIG9iamVjdHMgZm9yIGRlcmVmZXJlbmNpbmcKKworICBzcGVjLmRlZmluaXRpb25zID0gc3BlYy5kZWZpbml0aW9ucyB8fCB7fTsKKyAgLy8gZGVmaW5pdGlvbnMKKyAgZm9yIChuYW1lIGluIHNwZWMuZGVmaW5pdGlvbnMpIHsKKyAgICB2YXIgZGVmaW5pdGlvbiA9IHNwZWMuZGVmaW5pdGlvbnNbbmFtZV07CisgICAgaWYoZGVmaW5pdGlvbi4kcmVmKSB7CisgICAgICB0aGlzLnJlc29sdmVJbmxpbmUocm9vdCwgc3BlYywgZGVmaW5pdGlvbiwgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgZGVmaW5pdGlvbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgZm9yIChwcm9wZXJ0eU5hbWUgaW4gZGVmaW5pdGlvbi5wcm9wZXJ0aWVzKSB7CisgICAgICAgIHByb3BlcnR5ID0gZGVmaW5pdGlvbi5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07CisgICAgICAgIGlmIChfLmlzQXJyYXkocHJvcGVydHkuYWxsT2YpKSB7CisgICAgICAgICAgdGhpcy5wcm9jZXNzQWxsT2Yocm9vdCwgbmFtZSwgcHJvcGVydHksIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIHNwZWMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRoaXMucmVzb2x2ZVRvKHJvb3QsIHByb3BlcnR5LCByZXNvbHV0aW9uVGFibGUsICcvZGVmaW5pdGlvbnMnKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoZGVmaW5pdGlvbi5hbGxPZikgeworICAgICAgICB0aGlzLnByb2Nlc3NBbGxPZihyb290LCBuYW1lLCBkZWZpbml0aW9uLCByZXNvbHV0aW9uVGFibGUsIHVucmVzb2x2ZWRSZWZzLCBzcGVjKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvLyBzaGFyZWQgcGFyYW1ldGVycworICBzcGVjLnBhcmFtZXRlcnMgPSBzcGVjLnBhcmFtZXRlcnMgfHwge307CisgIGZvcihuYW1lIGluIHNwZWMucGFyYW1ldGVycykgeworICAgIHBhcmFtZXRlciA9IHNwZWMucGFyYW1ldGVyc1tuYW1lXTsKKyAgICBpZiAocGFyYW1ldGVyLmluID09PSAnYm9keScgJiYgcGFyYW1ldGVyLnNjaGVtYSkgeworICAgICAgaWYoXy5pc0FycmF5KHBhcmFtZXRlci5zY2hlbWEuYWxsT2YpKSB7CisgICAgICAgIC8vIG1vdmUgdG8gYSBkZWZpbml0aW9uCisgICAgICAgIG1vZGVsTmFtZSA9ICdpbmxpbmVfbW9kZWwnOworICAgICAgICB2YXIgX25hbWUgPSBtb2RlbE5hbWU7CisgICAgICAgIGRvbmUgPSBmYWxzZTsgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlKCFkb25lKSB7CisgICAgICAgICAgaWYodHlwZW9mIHNwZWMuZGVmaW5pdGlvbnNbX25hbWVdID09PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgX25hbWUgPSBtb2RlbE5hbWUgKyAnXycgKyBjb3VudGVyOworICAgICAgICAgIGNvdW50ZXIgKys7CisgICAgICAgIH0KKyAgICAgICAgc3BlYy5kZWZpbml0aW9uc1tfbmFtZV0gPSB7IGFsbE9mOiBwYXJhbWV0ZXIuc2NoZW1hLmFsbE9mIH07CisgICAgICAgIGRlbGV0ZSBwYXJhbWV0ZXIuc2NoZW1hLmFsbE9mOworICAgICAgICBwYXJhbWV0ZXIuc2NoZW1hLiRyZWYgPSAnIy9kZWZpbml0aW9ucy8nICsgX25hbWU7CisgICAgICAgIHRoaXMucHJvY2Vzc0FsbE9mKHJvb3QsIF9uYW1lLCBzcGVjLmRlZmluaXRpb25zW19uYW1lXSwgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgc3BlYyk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdGhpcy5yZXNvbHZlVG8ocm9vdCwgcGFyYW1ldGVyLnNjaGVtYSwgcmVzb2x1dGlvblRhYmxlLCBsb2NhdGlvbik7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHBhcmFtZXRlci4kcmVmKSB7CisgICAgICAvLyBwYXJhbWV0ZXIgcmVmZXJlbmNlCisgICAgICB0aGlzLnJlc29sdmVJbmxpbmUocm9vdCwgc3BlYywgcGFyYW1ldGVyLCByZXNvbHV0aW9uVGFibGUsIHVucmVzb2x2ZWRSZWZzLCBwYXJhbWV0ZXIuJHJlZik7CisgICAgfQorICB9CisKKyAgLy8gb3BlcmF0aW9ucworICBmb3IgKG5hbWUgaW4gc3BlYy5wYXRocykgeworICAgIHZhciBtZXRob2QsIG9wZXJhdGlvbiwgcmVzcG9uc2VDb2RlOworICAgIHBhdGggPSBzcGVjLnBhdGhzW25hbWVdOworCisgICAgaWYodHlwZW9mIHBhdGggPT09ICdvYmplY3QnKSB7CisgICAgICBmb3IgKG1ldGhvZCBpbiBwYXRoKSB7CisgICAgICAgIC8vIG9wZXJhdGlvbiByZWZlcmVuY2UKKyAgICAgICAgaWYgKG1ldGhvZCA9PT0gJyRyZWYnKSB7CisgICAgICAgICAgLy8gbG9jYXRpb24gPSBwYXRoW21ldGhvZF07CisgICAgICAgICAgbG9jYXRpb24gPSAnL3BhdGhzJyArIG5hbWU7CisgICAgICAgICAgdGhpcy5yZXNvbHZlSW5saW5lKHJvb3QsIHNwZWMsIHBhdGgsIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIGxvY2F0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBvcGVyYXRpb24gPSBwYXRoW21ldGhvZF07CisgICAgICAgICAgdmFyIHNoYXJlZFBhcmFtZXRlcnMgPSBwYXRoLnBhcmFtZXRlcnMgfHwgW107CisgICAgICAgICAgdmFyIHBhcmFtZXRlcnMgPSBvcGVyYXRpb24ucGFyYW1ldGVycyB8fCBbXTsKKworICAgICAgICAgIHNoYXJlZFBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbihwYXJhbWV0ZXIpIHsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudW5zaGlmdChwYXJhbWV0ZXIpOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ3BhcmFtZXRlcnMnICYmIF8uaXNPYmplY3Qob3BlcmF0aW9uKSkgeworICAgICAgICAgICAgb3BlcmF0aW9uLnBhcmFtZXRlcnMgPSBvcGVyYXRpb24ucGFyYW1ldGVycyB8fCBwYXJhbWV0ZXJzOworICAgICAgICAgIH0KKworICAgICAgICAgIGZvciAoaSBpbiBwYXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldOworICAgICAgICAgICAgbG9jYXRpb24gPSAnL3BhdGhzJyArIG5hbWUgKyAnLycgKyBtZXRob2QgKyAnL3BhcmFtZXRlcnMnOworCisgICAgICAgICAgICBpZiAocGFyYW1ldGVyLmluID09PSAnYm9keScgJiYgcGFyYW1ldGVyLnNjaGVtYSkgeworICAgICAgICAgICAgICBpZiAoXy5pc0FycmF5KHBhcmFtZXRlci5zY2hlbWEuYWxsT2YpKSB7CisgICAgICAgICAgICAgICAgLy8gbW92ZSB0byBhIGRlZmluaXRpb24KKyAgICAgICAgICAgICAgICBtb2RlbE5hbWUgPSAnaW5saW5lX21vZGVsJzsKKyAgICAgICAgICAgICAgICBuYW1lID0gbW9kZWxOYW1lOworICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIWRvbmUpIHsKKyAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3BlYy5kZWZpbml0aW9uc1tuYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgbmFtZSA9IG1vZGVsTmFtZSArICdfJyArIGNvdW50ZXI7CisgICAgICAgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNwZWMuZGVmaW5pdGlvbnNbbmFtZV0gPSB7YWxsT2Y6IHBhcmFtZXRlci5zY2hlbWEuYWxsT2Z9OworICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJhbWV0ZXIuc2NoZW1hLmFsbE9mOworICAgICAgICAgICAgICAgIHBhcmFtZXRlci5zY2hlbWEuJHJlZiA9ICcjL2RlZmluaXRpb25zLycgKyBuYW1lOworICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0FsbE9mKHJvb3QsIG5hbWUsIHNwZWMuZGVmaW5pdGlvbnNbbmFtZV0sIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIHNwZWMpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVRvKHJvb3QsIHBhcmFtZXRlci5zY2hlbWEsIHJlc29sdXRpb25UYWJsZSwgbG9jYXRpb24pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIuJHJlZikgeworICAgICAgICAgICAgICAvLyBwYXJhbWV0ZXIgcmVmZXJlbmNlCisgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUlubGluZShyb290LCBzcGVjLCBwYXJhbWV0ZXIsIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIHBhcmFtZXRlci4kcmVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICBmb3IgKHJlc3BvbnNlQ29kZSBpbiBvcGVyYXRpb24ucmVzcG9uc2VzKSB7CisgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBvcGVyYXRpb24ucmVzcG9uc2VzW3Jlc3BvbnNlQ29kZV07CisgICAgICAgICAgICBsb2NhdGlvbiA9ICcvcGF0aHMnICsgbmFtZSArICcvJyArIG1ldGhvZCArICcvcmVzcG9uc2VzLycgKyByZXNwb25zZUNvZGU7CisKKyAgICAgICAgICAgIGlmIChfLmlzT2JqZWN0KHJlc3BvbnNlKSkgeworICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuJHJlZikgeworICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlIHJlZmVyZW5jZQorICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUlubGluZShyb290LCBzcGVjLCByZXNwb25zZSwgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgbG9jYXRpb24pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zY2hlbWEpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VPYmogPSByZXNwb25zZTsKKyAgICAgICAgICAgICAgICBpZiAoXy5pc0FycmF5KHJlc3BvbnNlT2JqLnNjaGVtYS5hbGxPZikpIHsKKyAgICAgICAgICAgICAgICAgIC8vIG1vdmUgdG8gYSBkZWZpbml0aW9uCisgICAgICAgICAgICAgICAgICBtb2RlbE5hbWUgPSAnaW5saW5lX21vZGVsJzsKKyAgICAgICAgICAgICAgICAgIG5hbWUgPSBtb2RlbE5hbWU7CisgICAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICBjb3VudGVyID0gMDsKKyAgICAgICAgICAgICAgICAgIHdoaWxlICghZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNwZWMuZGVmaW5pdGlvbnNbbmFtZV0gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG1vZGVsTmFtZSArICdfJyArIGNvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIHNwZWMuZGVmaW5pdGlvbnNbbmFtZV0gPSB7YWxsT2Y6IHJlc3BvbnNlT2JqLnNjaGVtYS5hbGxPZn07CisgICAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2VPYmouc2NoZW1hLmFsbE9mOworICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3BvbnNlT2JqLnNjaGVtYS50eXBlOworICAgICAgICAgICAgICAgICAgcmVzcG9uc2VPYmouc2NoZW1hLiRyZWYgPSAnIy9kZWZpbml0aW9ucy8nICsgbmFtZTsKKyAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0FsbE9mKHJvb3QsIG5hbWUsIHNwZWMuZGVmaW5pdGlvbnNbbmFtZV0sIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIHNwZWMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICgnYXJyYXknID09PSByZXNwb25zZU9iai5zY2hlbWEudHlwZSkgeworICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlT2JqLnNjaGVtYS5pdGVtcyAmJiByZXNwb25zZU9iai5zY2hlbWEuaXRlbXMuJHJlZikgeworICAgICAgICAgICAgICAgICAgICAvLyByZXNwb25zZSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlSW5saW5lKHJvb3QsIHNwZWMsIHJlc3BvbnNlT2JqLnNjaGVtYS5pdGVtcywgcmVzb2x1dGlvblRhYmxlLCB1bnJlc29sdmVkUmVmcywgbG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVRvKHJvb3QsIHJlc3BvbnNlLnNjaGVtYSwgcmVzb2x1dGlvblRhYmxlLCBsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBjbGVhciB0aGVtIG91dCB0byBhdm9pZCBtdWx0aXBsZSByZXNvbHV0aW9ucworICAgICAgcGF0aC5wYXJhbWV0ZXJzID0gW107CisgICAgfQorICB9CisKKyAgdmFyIGV4cGVjdGVkQ2FsbHMgPSAwLCB0b1Jlc29sdmUgPSBbXTsKKyAgLy8gaWYgdGhlIHJvb3QgaXMgc2FtZSBhcyBvYmpbaV0ucm9vdCB3ZSBjYW4gcmVzb2x2ZSBsb2NhbGx5CisgIHZhciBhbGwgPSByZXNvbHV0aW9uVGFibGU7CisKKyAgdmFyIHBhcnRzOworICBmb3IoaSA9IDA7IGkgPCBhbGwubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgYSA9IGFsbFtpXTsKKyAgICBpZihyb290ID09PSBhLnJvb3QpIHsKKyAgICAgIGlmKGEucmVzb2x2ZUFzID09PSAncmVmJykgeworICAgICAgICAvLyByZXNvbHZlIGFueSBwYXRoIHdhbGtpbmcKKyAgICAgICAgdmFyIGpvaW5lZCA9ICgoYS5yb290IHx8ICcnKSArICcvJyArIGEua2V5KS5zcGxpdCgnLycpOworICAgICAgICB2YXIgbm9ybWFsaXplZCA9IFtdOworICAgICAgICB2YXIgdXJsID0gJyc7CisgICAgICAgIHZhciBrOworCisgICAgICAgIGlmKGEua2V5LmluZGV4T2YoJy4uLycpID49IDApIHsKKyAgICAgICAgICBmb3IodmFyIGogPSAwOyBqIDwgam9pbmVkLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBpZihqb2luZWRbal0gPT09ICcuLicpIHsKKyAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc2xpY2UoMCwgbm9ybWFsaXplZC5sZW5ndGgtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgbm9ybWFsaXplZC5wdXNoKGpvaW5lZFtqXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGZvcihrID0gMDsgayA8IG5vcm1hbGl6ZWQubGVuZ3RoOyBrICsrKSB7CisgICAgICAgICAgICBpZihrID4gMCkgeworICAgICAgICAgICAgICB1cmwgKz0gJy8nOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXJsICs9IG5vcm1hbGl6ZWRba107CisgICAgICAgICAgfQorICAgICAgICAgIC8vIHdlIG5vdyBoYXZlIHRvIHJlbW90ZSByZXNvbHZlIHRoaXMgYmVjYXVzZSB0aGUgcGF0aCBoYXMgY2hhbmdlZAorICAgICAgICAgIGEucm9vdCA9IHVybDsKKyAgICAgICAgICB0b1Jlc29sdmUucHVzaChhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBwYXJ0cyA9IGEua2V5LnNwbGl0KCcjJyk7CisgICAgICAgICAgaWYocGFydHMubGVuZ3RoID09PSAyKSB7CisgICAgICAgICAgICBpZihwYXJ0c1swXS5pbmRleE9mKCdodHRwOicpID09PSAwIHx8IHBhcnRzWzBdLmluZGV4T2YoJ2h0dHBzOicpID09PSAwKSB7CisgICAgICAgICAgICAgIGEucm9vdCA9IHBhcnRzWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9jYXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnLycpOworICAgICAgICAgICAgdmFyIHI7CisgICAgICAgICAgICB2YXIgcyA9IHNwZWM7CisgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBsb2NhdGlvbi5sZW5ndGg7IGsrKykgeworICAgICAgICAgICAgICB2YXIgcGFydCA9IGxvY2F0aW9uW2tdOworICAgICAgICAgICAgICBpZihwYXJ0ICE9PSAnJykgeworICAgICAgICAgICAgICAgIHMgPSBzW3BhcnRdOworICAgICAgICAgICAgICAgIGlmKHR5cGVvZiBzICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgICAgICAgciA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgciA9IG51bGw7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHIgPT09IG51bGwpIHsKKyAgICAgICAgICAgICAgLy8gbXVzdCByZXNvbHZlIHRoaXMgdG9vCisgICAgICAgICAgICAgIHRvUmVzb2x2ZS5wdXNoKGEpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGlmIChhLnJlc29sdmVBcyA9PT0gJ2lubGluZScpIHsKKyAgICAgICAgICBpZihhLmtleSAmJiBhLmtleS5pbmRleE9mKCcjJykgPT09IC0xICYmIGEua2V5LmNoYXJBdCgwKSAhPT0gJy8nKSB7CisgICAgICAgICAgICAvLyBoYW5kbGUgcmVsYXRpdmUgc2NoZW1hCisgICAgICAgICAgICBwYXJ0cyA9IGEucm9vdC5zcGxpdCgnLycpOworICAgICAgICAgICAgbG9jYXRpb24gPSAnJzsKKyAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHBhcnRzLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICAgICAgICBsb2NhdGlvbiArPSBwYXJ0c1tpXSArICcvJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvY2F0aW9uICs9IGEua2V5OworICAgICAgICAgICAgYS5yb290ID0gbG9jYXRpb247CisgICAgICAgICAgICBhLmxvY2F0aW9uID0gJyc7CisgICAgICAgICAgfQorICAgICAgICAgIHRvUmVzb2x2ZS5wdXNoKGEpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgdG9SZXNvbHZlLnB1c2goYSk7CisgICAgfQorICB9CisgIGV4cGVjdGVkQ2FsbHMgPSB0b1Jlc29sdmUubGVuZ3RoOworCisgIC8vIHJlc29sdmUgYW55dGhpbmcgdGhhdCBpcyBsb2NhbAorCisgIHZhciBsb2NrID0ge307CisgIGZvcih2YXIgaWkgPSAwOyBpaSA8IHRvUmVzb2x2ZS5sZW5ndGg7IGlpKyspIHsKKyAgICAoZnVuY3Rpb24oaXRlbSwgc3BlYywgc2VsZiwgbG9jaywgaWkpIHsKKyAgICAgIGlmKCFpdGVtLnJvb3QgfHwgaXRlbS5yb290ID09PSByb290KSB7CisgICAgICAgIC8vIGxvY2FsIHJlc29sdmUKKyAgICAgICAgc2VsZi5yZXNvbHZlSXRlbShzcGVjLCBfcm9vdCwgcmVzb2x1dGlvblRhYmxlLCByZXNvbHZlZFJlZnMsIHVucmVzb2x2ZWRSZWZzLCBpdGVtKTsKKyAgICAgICAgcHJvY2Vzc2VkQ2FsbHMgKz0gMTsKKworICAgICAgICBpZihwcm9jZXNzZWRDYWxscyA9PT0gZXhwZWN0ZWRDYWxscykgeworICAgICAgICAgIHNlbGYuZmluaXNoKHNwZWMsIHJvb3QsIHJlc29sdXRpb25UYWJsZSwgcmVzb2x2ZWRSZWZzLCB1bnJlc29sdmVkUmVmcywgY2FsbGJhY2ssIHRydWUpOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlIGlmKHNlbGYuZmFpbGVkVXJscy5pbmRleE9mKGl0ZW0ucm9vdCkgPT09IC0xKSB7CisgICAgICAgIHZhciBvYmogPSB7CisgICAgICAgICAgdXNlSlF1ZXJ5OiBmYWxzZSwgIC8vIFRPRE8KKyAgICAgICAgICB1cmw6IGl0ZW0ucm9vdCwKKyAgICAgICAgICBtZXRob2Q6ICdnZXQnLAorICAgICAgICAgIGhlYWRlcnM6IHsKKyAgICAgICAgICAgIGFjY2VwdDogc2VsZi5zY29wZS5zd2FnZ2VyUmVxdWVzdEhlYWRlcnMgfHwgJ2FwcGxpY2F0aW9uL2pzb24nCisgICAgICAgICAgfSwKKyAgICAgICAgICBvbjogeworICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICBwcm9jZXNzZWRDYWxscyArPSAxOworICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZmFpbGVkIHVybDogJyArIG9iai51cmwpOworICAgICAgICAgICAgICBzZWxmLmZhaWxlZFVybHMucHVzaChvYmoudXJsKTsKKyAgICAgICAgICAgICAgaWYgKGxvY2spIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgbG9ja1tpdGVtLnJvb3RdOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHVucmVzb2x2ZWRSZWZzW2l0ZW0ua2V5XSA9IHsKKyAgICAgICAgICAgICAgICByb290OiBpdGVtLnJvb3QsCisgICAgICAgICAgICAgICAgbG9jYXRpb246IGl0ZW0ubG9jYXRpb24KKyAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkQ2FsbHMgPT09IGV4cGVjdGVkQ2FsbHMpIHsKKyAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaChzcGVjLCBfcm9vdCwgcmVzb2x1dGlvblRhYmxlLCByZXNvbHZlZFJlZnMsIHVucmVzb2x2ZWRSZWZzLCBjYWxsYmFjayk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sICAvLyBqc2hpbnQgaWdub3JlOmxpbmUKKyAgICAgICAgICAgIHJlc3BvbnNlOiBmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgdmFyIHN3YWdnZXIgPSByZXNwb25zZS5vYmo7CisgICAgICAgICAgICAgIGlmIChsb2NrKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIGxvY2tbaXRlbS5yb290XTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAoc2VsZi5yZXNvbHZlckNhY2hlKSB7CisgICAgICAgICAgICAgICAgc2VsZi5yZXNvbHZlckNhY2hlW2l0ZW0ucm9vdF0gPSBzd2FnZ2VyOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHNlbGYucmVzb2x2ZUl0ZW0oc3dhZ2dlciwgaXRlbS5yb290LCByZXNvbHV0aW9uVGFibGUsIHJlc29sdmVkUmVmcywgdW5yZXNvbHZlZFJlZnMsIGl0ZW0pOworICAgICAgICAgICAgICBwcm9jZXNzZWRDYWxscyArPSAxOworCisgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRDYWxscyA9PT0gZXhwZWN0ZWRDYWxscykgeworICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoKHNwZWMsIF9yb290LCByZXNvbHV0aW9uVGFibGUsIHJlc29sdmVkUmVmcywgdW5yZXNvbHZlZFJlZnMsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0gLy8ganNoaW50IGlnbm9yZTpsaW5lCisgICAgICAgIH07CisKKyAgICAgICAgLy8gYXBwbHkgdGltZW91dCBvbmx5IHdoZW4gc3BlY2lmaWVkCisgICAgICAgIGlmIChzY29wZSAmJiBzY29wZS5mZXRjaFNwZWNUaW1lb3V0KSB7CisgICAgICAgICAgb2JqLnRpbWVvdXQgPSBzY29wZS5mZXRjaFNwZWNUaW1lb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjb3BlICYmIHNjb3BlLmNsaWVudEF1dGhvcml6YXRpb25zKSB7CisgICAgICAgICAgc2NvcGUuY2xpZW50QXV0aG9yaXphdGlvbnMuYXBwbHkob2JqKTsKKyAgICAgICAgfQorCisgICAgICAgIChmdW5jdGlvbiB3YWl0Rm9yVW5sb2NrKCkgeworICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAobG9ja1tvYmoudXJsXSkgeworICAgICAgICAgICAgICB3YWl0Rm9yVW5sb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdmFyIGNhY2hlZCA9IHNlbGYucmVzb2x2ZXJDYWNoZVtvYmoudXJsXTsKKyAgICAgICAgICAgICAgaWYgKF8uaXNPYmplY3QoY2FjaGVkKSkgeworICAgICAgICAgICAgICAgIG9iai5vbi5yZXNwb25zZSh7b2JqOiBjYWNoZWR9KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2NrW29iai51cmxdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBuZXcgU3dhZ2dlckh0dHAoKS5leGVjdXRlKG9iaiwgb3B0cyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSkoKTsKKyAgICAgIH0KKworICAgICAgZWxzZSB7CisgICAgICAgIHByb2Nlc3NlZENhbGxzICs9IDE7CisgICAgICAgIHVucmVzb2x2ZWRSZWZzW2l0ZW0ua2V5XSA9IHsKKyAgICAgICAgICByb290OiBpdGVtLnJvb3QsCisgICAgICAgICAgbG9jYXRpb246IGl0ZW0ubG9jYXRpb24KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHByb2Nlc3NlZENhbGxzID09PSBleHBlY3RlZENhbGxzKSB7CisgICAgICAgICAgc2VsZi5maW5pc2goc3BlYywgX3Jvb3QsIHJlc29sdXRpb25UYWJsZSwgcmVzb2x2ZWRSZWZzLCB1bnJlc29sdmVkUmVmcywgY2FsbGJhY2spOworICAgICAgICB9CisgICAgICB9CisgICAgfSh0b1Jlc29sdmVbaWldLCBzcGVjLCB0aGlzLCBsb2NrLCBpaSkpOworICB9CisKKyAgaWYgKE9iamVjdC5rZXlzKHRvUmVzb2x2ZSkubGVuZ3RoID09PSAwKSB7CisgICAgdGhpcy5maW5pc2goc3BlYywgX3Jvb3QsIHJlc29sdXRpb25UYWJsZSwgcmVzb2x2ZWRSZWZzLCB1bnJlc29sdmVkUmVmcywgY2FsbGJhY2spOworICB9Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUucmVzb2x2ZUl0ZW0gPSBmdW5jdGlvbihzcGVjLCByb290LCByZXNvbHV0aW9uVGFibGUsIHJlc29sdmVkUmVmcywgdW5yZXNvbHZlZFJlZnMsIGl0ZW0pIHsKKyAgdmFyIHBhdGggPSBpdGVtLmxvY2F0aW9uOworICB2YXIgbG9jYXRpb24gPSBzcGVjLCBwYXJ0cyA9IHBhdGguc3BsaXQoJy8nKTsKKyAgaWYocGF0aCAhPT0gJycpIHsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcnRzLmxlbmd0aDsgaisrKSB7CisgICAgICB2YXIgc2VnbWVudCA9IHBhcnRzW2pdOworICAgICAgaWYgKHNlZ21lbnQuaW5kZXhPZignfjEnKSAhPT0gLTEpIHsKKyAgICAgICAgc2VnbWVudCA9IHBhcnRzW2pdLnJlcGxhY2UoL34wL2csICd+JykucmVwbGFjZSgvfjEvZywgJy8nKTsKKyAgICAgICAgaWYgKHNlZ21lbnQuY2hhckF0KDApICE9PSAnLycpIHsKKyAgICAgICAgICBzZWdtZW50ID0gJy8nICsgc2VnbWVudDsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9jYXRpb24gPT09IG51bGwpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoc2VnbWVudCA9PT0gJycgJiYgaiA9PT0gKHBhcnRzLmxlbmd0aCAtIDEpICYmIHBhcnRzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgbG9jYXRpb24gPSBudWxsOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbltzZWdtZW50XTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgdmFyIHJlc29sdmVkID0gaXRlbS5rZXk7CisgIHBhcnRzID0gaXRlbS5rZXkuc3BsaXQoJy8nKTsKKyAgdmFyIHJlc29sdmVkTmFtZSA9IHBhcnRzW3BhcnRzLmxlbmd0aC0xXTsKKworICBpZihyZXNvbHZlZE5hbWUuaW5kZXhPZignIycpID49IDApIHsKKyAgICByZXNvbHZlZE5hbWUgPSByZXNvbHZlZE5hbWUuc3BsaXQoJyMnKVsxXTsKKyAgfQorCisgIGlmIChsb2NhdGlvbiAhPT0gbnVsbCAmJiB0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7CisgICAgcmVzb2x2ZWRSZWZzW3Jlc29sdmVkXSA9IHsKKyAgICAgIG5hbWU6IHJlc29sdmVkTmFtZSwKKyAgICAgIG9iajogbG9jYXRpb24sCisgICAgICBrZXk6IGl0ZW0ua2V5LAorICAgICAgcm9vdDogaXRlbS5yb290CisgICAgfTsKKyAgfSBlbHNlIHsKKyAgICB1bnJlc29sdmVkUmVmc1tyZXNvbHZlZF0gPSB7CisgICAgICByb290OiBpdGVtLnJvb3QsCisgICAgICBsb2NhdGlvbjogaXRlbS5sb2NhdGlvbgorICAgIH07CisgIH0KK307CisKK1Jlc29sdmVyLnByb3RvdHlwZS5maW5pc2ggPSBmdW5jdGlvbiAoc3BlYywgcm9vdCwgcmVzb2x1dGlvblRhYmxlLCByZXNvbHZlZFJlZnMsIHVucmVzb2x2ZWRSZWZzLCBjYWxsYmFjaywgbG9jYWxSZXNvbHZlKSB7CisgIC8vIHdhbGsgcmVzb2x1dGlvbiB0YWJsZSBhbmQgcmVwbGFjZSB3aXRoIHJlc29sdmVkIHJlZnMKKyAgdmFyIHJlZiwgYWJzOworICBmb3IgKHJlZiBpbiByZXNvbHV0aW9uVGFibGUpIHsKKyAgICB2YXIgaXRlbSA9IHJlc29sdXRpb25UYWJsZVtyZWZdOworCisgICAgdmFyIGtleSA9IGl0ZW0ua2V5OworICAgIHZhciByZXNvbHZlZFRvID0gcmVzb2x2ZWRSZWZzW2tleV07CisgICAgaWYgKHJlc29sdmVkVG8pIHsKKyAgICAgIHNwZWMuZGVmaW5pdGlvbnMgPSBzcGVjLmRlZmluaXRpb25zIHx8IHt9OworICAgICAgaWYgKGl0ZW0ucmVzb2x2ZUFzID09PSAncmVmJykgeworICAgICAgICBpZiAobG9jYWxSZXNvbHZlICE9PSB0cnVlKSB7CisgICAgICAgICAgLy8gZG9uJ3QgcmV0YWluIHJvb3QgZm9yIGxvY2FsIGRlZmluaXRpb25zCisgICAgICAgICAgZm9yIChrZXkgaW4gcmVzb2x2ZWRUby5vYmopIHsKKyAgICAgICAgICAgIGFicyA9IHRoaXMucmV0YWluUm9vdChrZXksIHJlc29sdmVkVG8ub2JqW2tleV0sIGl0ZW0ucm9vdCk7CisgICAgICAgICAgICByZXNvbHZlZFRvLm9ialtrZXldID0gYWJzOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzcGVjLmRlZmluaXRpb25zW3Jlc29sdmVkVG8ubmFtZV0gPSByZXNvbHZlZFRvLm9iajsKKyAgICAgICAgaXRlbS5vYmouJHJlZiA9ICcjL2RlZmluaXRpb25zLycgKyByZXNvbHZlZFRvLm5hbWU7CisgICAgICB9IGVsc2UgaWYgKGl0ZW0ucmVzb2x2ZUFzID09PSAnaW5saW5lJykgeworICAgICAgICB2YXIgdGFyZ2V0T2JqID0gaXRlbS5vYmo7CisgICAgICAgIHRhcmdldE9ialsneC1yZXNvbHZlZC1mcm9tJ10gPSBbIGl0ZW0ua2V5IF07CisgICAgICAgIGRlbGV0ZSB0YXJnZXRPYmouJHJlZjsKKworICAgICAgICBmb3IgKGtleSBpbiByZXNvbHZlZFRvLm9iaikgeworICAgICAgICAgIGFicyA9IHJlc29sdmVkVG8ub2JqW2tleV07CisKKyAgICAgICAgICBpZiAobG9jYWxSZXNvbHZlICE9PSB0cnVlKSB7CisgICAgICAgICAgICAvLyBkb24ndCByZXRhaW4gcm9vdCBmb3IgbG9jYWwgZGVmaW5pdGlvbnMKKyAgICAgICAgICAgIGFicyA9IHRoaXMucmV0YWluUm9vdChrZXksIHJlc29sdmVkVG8ub2JqW2tleV0sIGl0ZW0ucm9vdCk7CisgICAgICAgICAgfQorICAgICAgICAgIHRhcmdldE9ialtrZXldID0gYWJzOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIHZhciBleGlzdGluZ1VucmVzb2x2ZWQgPSB0aGlzLmNvdW50VW5yZXNvbHZlZFJlZnMoc3BlYyk7CisKKyAgaWYoZXhpc3RpbmdVbnJlc29sdmVkID09PSAwIHx8IHRoaXMuaXRlcmF0aW9uID4gNSkgeworICAgIHRoaXMucmVzb2x2ZUFsbE9mKHNwZWMuZGVmaW5pdGlvbnMpOworICAgIHRoaXMucmVzb2x2ZXJDYWNoZSA9IG51bGw7CisgICAgY2FsbGJhY2suY2FsbCh0aGlzLnNjb3BlLCBzcGVjLCB1bnJlc29sdmVkUmVmcyk7CisgIH0KKyAgZWxzZSB7CisgICAgdGhpcy5pdGVyYXRpb24gKz0gMTsKKyAgICB0aGlzLnJlc29sdmUoc3BlYywgcm9vdCwgY2FsbGJhY2ssIHRoaXMuc2NvcGUpOworICB9Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUuY291bnRVbnJlc29sdmVkUmVmcyA9IGZ1bmN0aW9uKHNwZWMpIHsKKyAgdmFyIGk7CisgIHZhciByZWZzID0gdGhpcy5nZXRSZWZzKHNwZWMpOworICB2YXIga2V5cyA9IFtdOworICB2YXIgdW5yZXNvbHZlZEtleXMgPSBbXTsKKyAgZm9yKGkgaW4gcmVmcykgeworICAgIGlmKGkuaW5kZXhPZignIycpID09PSAwKSB7CisgICAgICBrZXlzLnB1c2goaS5zdWJzdHJpbmcoMSkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHVucmVzb2x2ZWRLZXlzLnB1c2goaSk7CisgICAgfQorICB9CisKKyAgLy8gdmVyaWZ5IHBvc3NpYmxlIGtleXMKKyAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgcGFydCA9IGtleXNbaV07CisgICAgdmFyIHBhcnRzID0gcGFydC5zcGxpdCgnLycpOworICAgIHZhciBvYmogPSBzcGVjOworCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBwYXJ0cy5sZW5ndGg7IGsrKykgeworICAgICAgdmFyIGtleSA9IHBhcnRzW2tdOworICAgICAgaWYoa2V5ICE9PSAnJykgeworICAgICAgICBvYmogPSBvYmpba2V5XTsKKyAgICAgICAgaWYodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICB1bnJlc29sdmVkS2V5cy5wdXNoKHBhcnQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiB1bnJlc29sdmVkS2V5cy5sZW5ndGg7Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUuZ2V0UmVmcyA9IGZ1bmN0aW9uKHNwZWMsIG9iaikgeworICBvYmogPSBvYmogfHwgc3BlYzsKKyAgdmFyIG91dHB1dCA9IHt9OworICBmb3IodmFyIGtleSBpbiBvYmopIHsKKyAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgdmFyIGl0ZW0gPSBvYmpba2V5XTsKKyAgICBpZihrZXkgPT09ICckcmVmJyAmJiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHsKKyAgICAgIG91dHB1dFtpdGVtXSA9IG51bGw7CisgICAgfQorICAgIGVsc2UgaWYoXy5pc09iamVjdChpdGVtKSkgeworICAgICAgdmFyIG8gPSB0aGlzLmdldFJlZnMoaXRlbSk7CisgICAgICBmb3IodmFyIGsgaW4gbykgeworICAgICAgICBvdXRwdXRba10gPSBudWxsOworICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gb3V0cHV0OworfTsKKworZnVuY3Rpb24gc3BsaXRVcmwodXJsKSB7CisgIHZhciByZXN1bHQgPSB7fTsKKyAgdmFyIHByb3RvID0gL1thLXpdKzpcL1wvL2kuZXhlYyh1cmwpOworICBpZiAocHJvdG8pIHsKKyAgICByZXN1bHQucHJvdG8gPSBwcm90b1swXS5zbGljZSgwLCAtMyk7CisgICAgdXJsID0gdXJsLnNsaWNlKHJlc3VsdC5wcm90by5sZW5ndGggKyAxKTsKKyAgfQorICBpZiAodXJsLnNsaWNlKDAsIDIpID09PSAnLy8nKSB7CisgICAgcmVzdWx0LmRvbWFpbiA9IHVybC5zbGljZSgyKS5zcGxpdCgnLycpWzBdOworICAgIHVybCA9IHVybC5zbGljZSgyICsgcmVzdWx0LmRvbWFpbi5sZW5ndGgpOworICB9CisgIHZhciBwID0gdXJsLnNwbGl0KCcjJyk7CisgIGlmIChwWzBdLmxlbmd0aCkgeworICAgIHJlc3VsdC5wYXRoID0gcFswXTsKKyAgfQorICBpZiAocC5sZW5ndGggPiAxKSB7CisgICAgcmVzdWx0LmZyYWdtZW50ID0gcC5zbGljZSgxKS5qb2luKCcjJyk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gdW5zcGxpdFVybCh1cmwpIHsKKyAgdmFyIHJlc3VsdCA9IHVybC5wYXRoOworICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHsKKyAgICByZXN1bHQgPSAnJzsKKyAgfQorICBpZiAodXJsLmZyYWdtZW50ICE9PSB1bmRlZmluZWQpIHsKKyAgICByZXN1bHQgKz0gJyMnICsgdXJsLmZyYWdtZW50OworICB9CisgIGlmICh1cmwuZG9tYWluICE9PSB1bmRlZmluZWQpIHsKKyAgICBpZiAocmVzdWx0LnNsaWNlKDAsIDEpID09PSAnLycpIHsKKyAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZSgxKTsKKyAgICB9CisgICAgcmVzdWx0ID0gJy8vJyArIHVybC5kb21haW4gKyAnLycgKyByZXN1bHQ7CisgICAgaWYgKHVybC5wcm90byAhPT0gdW5kZWZpbmVkKSB7CisgICAgICByZXN1bHQgPSB1cmwucHJvdG8gKyAnOicgKyByZXN1bHQ7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGpvaW5VcmwoYmFzZSwgcmVsKSB7CisgIHZhciByZWxzcCA9IHNwbGl0VXJsKHJlbCk7CisgIGlmIChyZWxzcC5kb21haW4gIT09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiByZWw7CisgIH0KKyAgdmFyIHJlc3VsdCA9IHNwbGl0VXJsKGJhc2UpOworICBpZiAocmVsc3AucGF0aCA9PT0gdW5kZWZpbmVkKSB7CisgICAgLy8gY2hhbmdlIG9ubHkgZnJhZ21lbnQgcGFydAorICAgIHJlc3VsdC5mcmFnbWVudCA9IHJlbHNwLmZyYWdtZW50OworICB9IGVsc2UgaWYgKHJlbHNwLnBhdGguc2xpY2UoMCwgMSkgPT09ICcvJykgeworICAgIC8vIHJlbGF0aXZlIHRvIGRvbWFpbgorICAgIHJlc3VsdC5wYXRoID0gcmVsc3AucGF0aDsKKyAgICByZXN1bHQuZnJhZ21lbnQgPSByZWxzcC5mcmFnbWVudDsKKyAgfSBlbHNlIHsKKyAgICAvLyByZWxhdGl2ZSB0byBwYXRoCisgICAgdmFyIHBhdGggPSByZXN1bHQucGF0aCA9PT0gdW5kZWZpbmVkID8gW10gOiByZXN1bHQucGF0aC5zcGxpdCgnLycpOworICAgIHZhciByZWxwYXRoID0gcmVsc3AucGF0aC5zcGxpdCgnLycpOworICAgIGlmIChwYXRoLmxlbmd0aCkgeworICAgICAgcGF0aC5wb3AoKTsKKyAgICB9CisgICAgd2hpbGUgKHJlbHBhdGhbMF0gPT09ICcuLicgfHwgcmVscGF0aFswXSA9PT0gJy4nKSB7CisgICAgICBpZiAocmVscGF0aFswXSA9PT0gJy4uJykgeworICAgICAgICBwYXRoLnBvcCgpOworICAgICAgfQorICAgICAgcmVscGF0aC5zaGlmdCgpOworICAgIH0KKyAgICByZXN1bHQucGF0aCA9IHBhdGguY29uY2F0KHJlbHBhdGgpLmpvaW4oJy8nKTsKKyAgICByZXN1bHQuZnJhZ21lbnQgPSByZWxzcC5mcmFnbWVudDsKKyAgfQorICByZXR1cm4gdW5zcGxpdFVybChyZXN1bHQpOworfQorCitSZXNvbHZlci5wcm90b3R5cGUucmV0YWluUm9vdCA9IGZ1bmN0aW9uKG9yaWdLZXksIG9iaiwgcm9vdCkgeworICAvLyB3YWxrIG9iamVjdCBhbmQgbG9vayBmb3IgcmVsYXRpdmUgJHJlZnMKKyAgaWYoXy5pc09iamVjdChvYmopKSB7CisgICAgZm9yKHZhciBrZXkgaW4gb2JqKSB7CisgICAgICB2YXIgaXRlbSA9IG9ialtrZXldOworICAgICAgaWYgKGtleSA9PT0gJyRyZWYnICYmIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykgeworICAgICAgICBvYmpba2V5XSA9IGpvaW5Vcmwocm9vdCwgaXRlbSk7CisgICAgICB9CisgICAgICBlbHNlIGlmIChfLmlzT2JqZWN0KGl0ZW0pKSB7CisgICAgICAgIHRoaXMucmV0YWluUm9vdChrZXksIGl0ZW0sIHJvb3QpOworICAgICAgfQorICAgIH0KKyAgfQorICBlbHNlIGlmKF8uaXNTdHJpbmcob2JqKSAmJiBvcmlnS2V5ID09PSAnJHJlZicpIHsKKyAgICBvYmogPSBqb2luVXJsKHJvb3QsIG9iaik7CisgIH0KKyAgcmV0dXJuIG9iajsKK307CisKKy8qKgorICogaW1tZWRpYXRlbHkgaW4tbGluZXMgbG9jYWwgcmVmcywgcXVldWVzIHJlbW90ZSByZWZzCisgKiBmb3IgaW5saW5lIHJlc29sdXRpb24KKyAqLworUmVzb2x2ZXIucHJvdG90eXBlLnJlc29sdmVJbmxpbmUgPSBmdW5jdGlvbiAocm9vdCwgc3BlYywgcHJvcGVydHksIHJlc29sdXRpb25UYWJsZSwgdW5yZXNvbHZlZFJlZnMsIGxvY2F0aW9uKSB7CisgIHZhciBrZXkgPSBwcm9wZXJ0eS4kcmVmLCByZWYgPSBwcm9wZXJ0eS4kcmVmLCBpLCBwLCBwMiwgcnM7CisgIHZhciByb290VHJpbW1lZCA9IGZhbHNlOworCisgIHJvb3QgPSByb290IHx8ICcnOyAvLyBHdWFyZCBhZ2FpbnN0IC5zcGxpdC4gQGZlaGd1eSwgeW91J2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBsb2dpYyBmaXRzCisgIC8vIE1vcmUgaW1wb3JhbnRseSBpcyBob3cgZG8gd2UgZ3JhY2VmdWxseSBoYW5kbGUgcmVsYXRpdmUgdXJscywgd2hlbiBwcm92aWRlZCBqdXN0IGEgJ3NwZWMnLCBub3QgYSAndXJsJyA/CisKKyAgaWYgKHJlZikgeworICAgIGlmKHJlZi5pbmRleE9mKCcuLi8nKSA9PT0gMCkgeworICAgICAgLy8gcmVzZXQgcm9vdAorICAgICAgcCA9IHJlZi5zcGxpdCgnLi4vJyk7CisgICAgICBwMiA9IHJvb3Quc3BsaXQoJy8nKTsKKyAgICAgIHJlZiA9ICcnOworICAgICAgZm9yKGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykgeworICAgICAgICBpZihwW2ldID09PSAnJykgeworICAgICAgICAgIHAyID0gcDIuc2xpY2UoMCwgcDIubGVuZ3RoLTEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHJlZiArPSBwW2ldOworICAgICAgICB9CisgICAgICB9CisgICAgICByb290ID0gJyc7CisgICAgICBmb3IoaSA9IDA7IGkgPCBwMi5sZW5ndGggLSAxOyBpKyspIHsKKyAgICAgICAgaWYoaSA+IDApIHsgcm9vdCArPSAnLyc7IH0KKyAgICAgICAgcm9vdCArPSBwMltpXTsKKyAgICAgIH0KKyAgICAgIHJvb3RUcmltbWVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYocmVmLmluZGV4T2YoJyMnKSA+PSAwKSB7CisgICAgICBpZihyZWYuaW5kZXhPZignLycpID09PSAwKSB7CisgICAgICAgIHJzID0gcmVmLnNwbGl0KCcjJyk7CisgICAgICAgIHAgID0gcm9vdC5zcGxpdCgnLy8nKTsKKyAgICAgICAgcDIgPSBwWzFdLnNwbGl0KCcvJyk7CisgICAgICAgIHJvb3QgPSBwWzBdICsgJy8vJyArIHAyWzBdICsgcnNbMF07CisgICAgICAgIGxvY2F0aW9uID0gcnNbMV07CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcnMgPSByZWYuc3BsaXQoJyMnKTsKKyAgICAgICAgaWYocnNbMF0gIT09ICcnKSB7CisgICAgICAgICAgcDIgPSByb290LnNwbGl0KCcvJyk7CisgICAgICAgICAgcDIgPSBwMi5zbGljZSgwLCBwMi5sZW5ndGggLSAxKTsKKyAgICAgICAgICBpZighcm9vdFRyaW1tZWQpIHsKKyAgICAgICAgICAgIHJvb3QgPSAnJzsKKyAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcDIubGVuZ3RoOyBrKyspIHsKKyAgICAgICAgICAgICAgaWYoayA+IDApIHsgcm9vdCArPSAnLyc7IH0KKyAgICAgICAgICAgICAgcm9vdCArPSBwMltrXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcm9vdCArPSAnLycgKyByZWYuc3BsaXQoJyMnKVswXTsKKyAgICAgICAgfQorICAgICAgICBsb2NhdGlvbiA9IHJzWzFdOworICAgICAgfQorICAgIH0KKyAgICBpZiAocmVmLmluZGV4T2YoJ2h0dHA6JykgPT09IDAgfHwgcmVmLmluZGV4T2YoJ2h0dHBzOicpID09PSAwKSB7CisgICAgICBpZihyZWYuaW5kZXhPZignIycpID49IDApIHsKKyAgICAgICAgcm9vdCA9IHJlZi5zcGxpdCgnIycpWzBdOworICAgICAgICBsb2NhdGlvbiA9IHJlZi5zcGxpdCgnIycpWzFdOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJvb3QgPSByZWY7CisgICAgICAgIGxvY2F0aW9uID0gJyc7CisgICAgICB9CisgICAgICByZXNvbHV0aW9uVGFibGUucHVzaCh7b2JqOiBwcm9wZXJ0eSwgcmVzb2x2ZUFzOiAnaW5saW5lJywgcm9vdDogcm9vdCwga2V5OiBrZXksIGxvY2F0aW9uOiBsb2NhdGlvbn0pOworICAgIH0gZWxzZSBpZiAocmVmLmluZGV4T2YoJyMnKSA9PT0gMCkgeworICAgICAgbG9jYXRpb24gPSByZWYuc3BsaXQoJyMnKVsxXTsKKyAgICAgIHJlc29sdXRpb25UYWJsZS5wdXNoKHtvYmo6IHByb3BlcnR5LCByZXNvbHZlQXM6ICdpbmxpbmUnLCByb290OiByb290LCBrZXk6IGtleSwgbG9jYXRpb246IGxvY2F0aW9ufSk7CisgICAgfSBlbHNlIGlmIChyZWYuaW5kZXhPZignLycpID09PSAwICYmIHJlZi5pbmRleE9mKCcjJykgPT09IC0xKSB7CisgICAgICBsb2NhdGlvbiA9IHJlZjsKKyAgICAgIHZhciBtYXRjaGVzID0gcm9vdC5tYXRjaCgvXmh0dHBzP1w6XC9cLyhbXlwvPyNdKykoPzpbXC8/I118JCkvaSk7CisgICAgICBpZihtYXRjaGVzKSB7CisgICAgICAgIHJvb3QgPSBtYXRjaGVzWzBdICsgcmVmLnN1YnN0cmluZygxKTsKKyAgICAgICAgbG9jYXRpb24gPSAnJzsKKyAgICAgIH0KKyAgICAgIHJlc29sdXRpb25UYWJsZS5wdXNoKHtvYmo6IHByb3BlcnR5LCByZXNvbHZlQXM6ICdpbmxpbmUnLCByb290OiByb290LCBrZXk6IGtleSwgbG9jYXRpb246IGxvY2F0aW9ufSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgcmVzb2x1dGlvblRhYmxlLnB1c2goe29iajogcHJvcGVydHksIHJlc29sdmVBczogJ2lubGluZScsIHJvb3Q6IHJvb3QsIGtleToga2V5LCBsb2NhdGlvbjogbG9jYXRpb259KTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2FycmF5JykgeworICAgIHRoaXMucmVzb2x2ZVRvKHJvb3QsIHByb3BlcnR5Lml0ZW1zLCByZXNvbHV0aW9uVGFibGUsIGxvY2F0aW9uKTsKKyAgfQorfTsKKworUmVzb2x2ZXIucHJvdG90eXBlLnJlc29sdmVUbyA9IGZ1bmN0aW9uIChyb290LCBwcm9wZXJ0eSwgcmVzb2x1dGlvblRhYmxlLCBsb2NhdGlvbikgeworICB2YXIgc3AsIGk7CisgIHZhciByZWYgPSBwcm9wZXJ0eS4kcmVmOworICB2YXIgbHJvb3QgPSByb290OworICBpZiAoKHR5cGVvZiByZWYgIT09ICd1bmRlZmluZWQnKSAmJiAocmVmICE9PSBudWxsKSkgeworICAgIGlmKHJlZi5pbmRleE9mKCcjJykgPj0gMCkgeworICAgICAgdmFyIHBhcnRzID0gcmVmLnNwbGl0KCcjJyk7CisKKyAgICAgIC8vICMvZGVmaW5pdGlvbnMvZm9vCisgICAgICAvLyBmb28uanNvbiMvYmFyCisgICAgICBpZihwYXJ0c1swXSAmJiByZWYuaW5kZXhPZignLycpID09PSAwKSB7CisKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYocGFydHNbMF0gJiYgKHBhcnRzWzBdLmluZGV4T2YoJ2h0dHA6JykgPT09IDAgfHwgcGFydHNbMF0uaW5kZXhPZignaHR0cHM6JykgPT09IDApKSB7CisgICAgICAgIGxyb290ID0gcGFydHNbMF07CisgICAgICAgIHJlZiA9IHBhcnRzWzFdOworICAgICAgfQorICAgICAgZWxzZSBpZihwYXJ0c1swXSAmJiBwYXJ0c1swXS5sZW5ndGggPiAwKSB7CisgICAgICAgIC8vIHJlbGF0aXZlIGZpbGUKKyAgICAgICAgc3AgPSByb290LnNwbGl0KCcvJyk7CisgICAgICAgIGxyb290ID0gJyc7CisgICAgICAgIGZvcihpID0gMDsgaSA8IHNwLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICAgIGxyb290ICs9IHNwW2ldICsgJy8nOworICAgICAgICB9CisgICAgICAgIGxyb290ICs9IHBhcnRzWzBdOworICAgICAgfQorICAgICAgZWxzZSB7CisKKyAgICAgIH0KKworICAgICAgbG9jYXRpb24gPSBwYXJ0c1sxXTsKKyAgICB9CisgICAgZWxzZSBpZiAocmVmLmluZGV4T2YoJ2h0dHA6JykgPT09IDAgfHwgcmVmLmluZGV4T2YoJ2h0dHBzOicpID09PSAwKSB7CisgICAgICBscm9vdCA9IHJlZjsKKyAgICAgIGxvY2F0aW9uID0gJyc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8gcmVsYXRpdmUgZmlsZQorICAgICAgc3AgPSByb290LnNwbGl0KCcvJyk7CisgICAgICBscm9vdCA9ICcnOworICAgICAgZm9yKGkgPSAwOyBpIDwgc3AubGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgICAgIGxyb290ICs9IHNwW2ldICsgJy8nOworICAgICAgfQorICAgICAgbHJvb3QgKz0gcmVmOworICAgICAgbG9jYXRpb24gPSAnJzsKKyAgICB9CisgICAgcmVzb2x1dGlvblRhYmxlLnB1c2goeworICAgICAgb2JqOiBwcm9wZXJ0eSwgcmVzb2x2ZUFzOiAncmVmJywgcm9vdDogbHJvb3QsIGtleTogcmVmLCBsb2NhdGlvbjogbG9jYXRpb24KKyAgICB9KTsKKyAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7CisgICAgdmFyIGl0ZW1zID0gcHJvcGVydHkuaXRlbXM7CisgICAgdGhpcy5yZXNvbHZlVG8ocm9vdCwgaXRlbXMsIHJlc29sdXRpb25UYWJsZSwgbG9jYXRpb24pOworICB9IGVsc2UgeworICAgIGlmKHByb3BlcnR5ICYmIChwcm9wZXJ0eS5wcm9wZXJ0aWVzIHx8IHByb3BlcnR5LmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSkgeworICAgICAgdmFyIG5hbWUgPSB0aGlzLnVuaXF1ZU5hbWUoJ2lubGluZV9tb2RlbCcpOworICAgICAgaWYgKHByb3BlcnR5LnRpdGxlKSB7CisgICAgICAgIG5hbWUgPSB0aGlzLnVuaXF1ZU5hbWUocHJvcGVydHkudGl0bGUpOworICAgICAgfQorICAgICAgZGVsZXRlIHByb3BlcnR5LnRpdGxlOworICAgICAgdGhpcy5zcGVjLmRlZmluaXRpb25zW25hbWVdID0gXy5jbG9uZURlZXAocHJvcGVydHkpOworICAgICAgcHJvcGVydHkuJHJlZiA9ICcjL2RlZmluaXRpb25zLycgKyBuYW1lOworICAgICAgZGVsZXRlIHByb3BlcnR5LnR5cGU7CisgICAgICBkZWxldGUgcHJvcGVydHkucHJvcGVydGllczsKKyAgICB9CisgIH0KK307CisKK1Jlc29sdmVyLnByb3RvdHlwZS51bmlxdWVOYW1lID0gZnVuY3Rpb24oYmFzZSkgeworICB2YXIgbmFtZSA9IGJhc2U7CisgIHZhciBjb3VudCA9IDA7CisgIHdoaWxlKHRydWUpIHsKKyAgICBpZighXy5pc09iamVjdCh0aGlzLnNwZWMuZGVmaW5pdGlvbnNbbmFtZV0pKSB7CisgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisgICAgbmFtZSA9IGJhc2UgKyAnXycgKyBjb3VudDsKKyAgICBjb3VudCsrOworICB9Cit9OworCitSZXNvbHZlci5wcm90b3R5cGUucmVzb2x2ZUFsbE9mID0gZnVuY3Rpb24oc3BlYywgb2JqLCBkZXB0aCkgeworICBkZXB0aCA9IGRlcHRoIHx8IDA7CisgIG9iaiA9IG9iaiB8fCBzcGVjOworICB2YXIgbmFtZTsKKyAgZm9yKHZhciBrZXkgaW4gb2JqKSB7CisgICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIHZhciBpdGVtID0gb2JqW2tleV07CisgICAgaWYoaXRlbSA9PT0gbnVsbCkgeworICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignU3dhZ2dlciAyLjAgZG9lcyBub3Qgc3VwcG9ydCBudWxsIHR5cGVzICgnICsgb2JqICsgJykuICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItc3BlYy9pc3N1ZXMvMjI5LicpOworICAgIH0KKyAgICBpZih0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHsKKyAgICAgIHRoaXMucmVzb2x2ZUFsbE9mKHNwZWMsIGl0ZW0sIGRlcHRoICsgMSk7CisgICAgfQorICAgIGlmKGl0ZW0gJiYgdHlwZW9mIGl0ZW0uYWxsT2YgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICB2YXIgYWxsT2YgPSBpdGVtLmFsbE9mOworICAgICAgaWYoXy5pc0FycmF5KGFsbE9mKSkgeworICAgICAgICB2YXIgb3V0cHV0ID0gXy5jbG9uZURlZXAoaXRlbSk7CisgICAgICAgIGRlbGV0ZSBvdXRwdXQuYWxsT2Y7CisKKyAgICAgICAgb3V0cHV0Wyd4LWNvbXBvc2VkJ10gPSB0cnVlOworICAgICAgICBpZiAodHlwZW9mIGl0ZW1bJ3gtcmVzb2x2ZWQtZnJvbSddICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgIG91dHB1dFsneC1yZXNvbHZlZC1mcm9tJ10gPSBpdGVtWyd4LXJlc29sdmVkLWZyb20nXTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhbGxPZi5sZW5ndGg7IGkrKykgeworICAgICAgICAgIHZhciBjb21wb25lbnQgPSBhbGxPZltpXTsKKyAgICAgICAgICB2YXIgc291cmNlID0gJ3NlbGYnOworICAgICAgICAgIGlmKHR5cGVvZiBjb21wb25lbnRbJ3gtcmVzb2x2ZWQtZnJvbSddICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgICAgc291cmNlID0gY29tcG9uZW50Wyd4LXJlc29sdmVkLWZyb20nXVswXTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBmb3IodmFyIHBhcnQgaW4gY29tcG9uZW50KSB7CisgICAgICAgICAgICBpZighb3V0cHV0Lmhhc093blByb3BlcnR5KHBhcnQpKSB7CisgICAgICAgICAgICAgIG91dHB1dFtwYXJ0XSA9IF8uY2xvbmVEZWVwKGNvbXBvbmVudFtwYXJ0XSk7CisgICAgICAgICAgICAgIGlmKHBhcnQgPT09ICdwcm9wZXJ0aWVzJykgeworICAgICAgICAgICAgICAgIGZvcihuYW1lIGluIG91dHB1dFtwYXJ0XSkgeworICAgICAgICAgICAgICAgICAgb3V0cHV0W3BhcnRdW25hbWVdWyd4LXJlc29sdmVkLWZyb20nXSA9IHNvdXJjZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBpZihwYXJ0ID09PSAncHJvcGVydGllcycpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IGNvbXBvbmVudFtwYXJ0XTsKKyAgICAgICAgICAgICAgICBmb3IobmFtZSBpbiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgICBvdXRwdXQucHJvcGVydGllc1tuYW1lXSA9IF8uY2xvbmVEZWVwKHByb3BlcnRpZXNbbmFtZV0pOworICAgICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkRnJvbSA9IHByb3BlcnRpZXNbbmFtZV1bJ3gtcmVzb2x2ZWQtZnJvbSddOworICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZEZyb20gPT09ICd1bmRlZmluZWQnIHx8IHJlc29sdmVkRnJvbSA9PT0gJ3NlbGYnKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkRnJvbSA9IHNvdXJjZTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIG91dHB1dC5wcm9wZXJ0aWVzW25hbWVdWyd4LXJlc29sdmVkLWZyb20nXSA9IHJlc29sdmVkRnJvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSBpZihwYXJ0ID09PSAncmVxdWlyZWQnKSB7CisgICAgICAgICAgICAgICAgLy8gbWVyZ2UgJiBkZWR1cCB0aGUgcmVxdWlyZWQgYXJyYXkKKyAgICAgICAgICAgICAgICB2YXIgYSA9IG91dHB1dC5yZXF1aXJlZC5jb25jYXQoY29tcG9uZW50W3BhcnRdKTsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGsgPSAwOyBrIDwgYS5sZW5ndGg7ICsraykgeworICAgICAgICAgICAgICAgICAgZm9yKHZhciBqID0gayArIDE7IGogPCBhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKGFba10gPT09IGFbal0pIHsgYS5zcGxpY2Uoai0tLCAxKTsgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXQucmVxdWlyZWQgPSBhOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYocGFydCA9PT0gJ3gtcmVzb2x2ZWQtZnJvbScpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbJ3gtcmVzb2x2ZWQtZnJvbSddLnB1c2goc291cmNlKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBuZWVkIHRvIG1lcmdlIHRoaXMgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnd2hhdCB0byBkbyB3aXRoICcgKyBwYXJ0KQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG9ialtrZXldID0gb3V0cHV0OworICAgICAgfQorICAgIH0KKyAgfQorfTsKKworfSx7Ii4vaHR0cCI6NSwibG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCI6MTM4LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheSI6MTQwLCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiOjE0NCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzU3RyaW5nIjoxNDZ9XSw3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIEhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTsKKwordmFyIF8gPSB7CisgIGlzUGxhaW5PYmplY3Q6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0JyksCisgIGlzVW5kZWZpbmVkOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNVbmRlZmluZWQnKSwKKyAgaXNBcnJheTogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXknKSwKKyAgaXNPYmplY3Q6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCcpLAorICBpc0VtcHR5OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNFbXB0eScpLAorICBtYXA6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9tYXAnKSwKKyAgaW5kZXhPZjogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mJyksCisgIGNsb25lRGVlcDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCcpLAorICBrZXlzOiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L29iamVjdC9rZXlzJyksCisgIGZvckVhY2g6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9mb3JFYWNoJykKK307CisKK3ZhciBvcHRpb25IdG1sID0gbW9kdWxlLmV4cG9ydHMub3B0aW9uSHRtbCA9IGZ1bmN0aW9uICAobGFiZWwsIHZhbHVlKSB7CisgIHJldHVybiAnPHRyPjx0ZCBjbGFzcz0ib3B0aW9uTmFtZSI+JyArIGxhYmVsICsgJzo8L3RkPjx0ZD4nICsgdmFsdWUgKyAnPC90ZD48L3RyPic7Cit9OworCittb2R1bGUuZXhwb3J0cy50eXBlRnJvbUpzb25TY2hlbWEgPSBmdW5jdGlvbiAodHlwZSwgZm9ybWF0KSB7CisgIHZhciBzdHI7CisKKyAgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJyAmJiBmb3JtYXQgPT09ICdpbnQzMicpIHsKKyAgICBzdHIgPSAnaW50ZWdlcic7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ludGVnZXInICYmIGZvcm1hdCA9PT0gJ2ludDY0JykgeworICAgIHN0ciA9ICdsb25nJzsKKyAgfSBlbHNlIGlmICh0eXBlID09PSAnaW50ZWdlcicgJiYgdHlwZW9mIGZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBzdHIgPSAnbG9uZyc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgZm9ybWF0ID09PSAnZGF0ZS10aW1lJykgeworICAgIHN0ciA9ICdkYXRlLXRpbWUnOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnICYmIGZvcm1hdCA9PT0gJ2RhdGUnKSB7CisgICAgc3RyID0gJ2RhdGUnOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGZvcm1hdCA9PT0gJ2Zsb2F0JykgeworICAgIHN0ciA9ICdmbG9hdCc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgZm9ybWF0ID09PSAnZG91YmxlJykgeworICAgIHN0ciA9ICdkb3VibGUnOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBmb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7CisgICAgc3RyID0gJ2RvdWJsZSc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7CisgICAgc3RyID0gJ2Jvb2xlYW4nOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7CisgICAgc3RyID0gJ3N0cmluZyc7CisgIH0KKworICByZXR1cm4gc3RyOworfTsKKwordmFyIGdldFN0cmluZ1NpZ25hdHVyZSA9IG1vZHVsZS5leHBvcnRzLmdldFN0cmluZ1NpZ25hdHVyZSA9IGZ1bmN0aW9uIChvYmosIGJhc2VDb21wb25lbnQpIHsKKyAgdmFyIHN0ciA9ICcnOworCisgIGlmICh0eXBlb2Ygb2JqLiRyZWYgIT09ICd1bmRlZmluZWQnKSB7CisgICAgc3RyICs9IEhlbHBlcnMuc2ltcGxlUmVmKG9iai4kcmVmKTsKKyAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7CisgICAgc3RyICs9ICdvYmplY3QnOworICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnYXJyYXknKSB7CisgICAgaWYgKGJhc2VDb21wb25lbnQpIHsKKyAgICAgIHN0ciArPSBnZXRTdHJpbmdTaWduYXR1cmUoKG9iai5pdGVtcyB8fCBvYmouJHJlZiB8fCB7fSkpOworICAgIH0gZWxzZSB7CisgICAgICBzdHIgKz0gJ0FycmF5Wyc7CisgICAgICBzdHIgKz0gZ2V0U3RyaW5nU2lnbmF0dXJlKChvYmouaXRlbXMgfHwgb2JqLiRyZWYgfHwge30pKTsKKyAgICAgIHN0ciArPSAnXSc7CisgICAgfQorICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnaW50ZWdlcicgJiYgb2JqLmZvcm1hdCA9PT0gJ2ludDMyJykgeworICAgIHN0ciArPSAnaW50ZWdlcic7CisgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdpbnRlZ2VyJyAmJiBvYmouZm9ybWF0ID09PSAnaW50NjQnKSB7CisgICAgc3RyICs9ICdsb25nJzsKKyAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2ludGVnZXInICYmIHR5cGVvZiBvYmouZm9ybWF0ID09PSAndW5kZWZpbmVkJykgeworICAgIHN0ciArPSAnbG9uZyc7CisgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdzdHJpbmcnICYmIG9iai5mb3JtYXQgPT09ICdkYXRlLXRpbWUnKSB7CisgICAgc3RyICs9ICdkYXRlLXRpbWUnOworICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnc3RyaW5nJyAmJiBvYmouZm9ybWF0ID09PSAnZGF0ZScpIHsKKyAgICBzdHIgKz0gJ2RhdGUnOworICB9IGVsc2UgaWYgKG9iai50eXBlID09PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb2JqLmZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBzdHIgKz0gJ3N0cmluZyc7CisgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdudW1iZXInICYmIG9iai5mb3JtYXQgPT09ICdmbG9hdCcpIHsKKyAgICBzdHIgKz0gJ2Zsb2F0JzsKKyAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ251bWJlcicgJiYgb2JqLmZvcm1hdCA9PT0gJ2RvdWJsZScpIHsKKyAgICBzdHIgKz0gJ2RvdWJsZSc7CisgIH0gZWxzZSBpZiAob2JqLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBvYmouZm9ybWF0ID09PSAndW5kZWZpbmVkJykgeworICAgIHN0ciArPSAnZG91YmxlJzsKKyAgfSBlbHNlIGlmIChvYmoudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7CisgICAgc3RyICs9ICdib29sZWFuJzsKKyAgfSBlbHNlIGlmIChvYmouJHJlZikgeworICAgIHN0ciArPSBIZWxwZXJzLnNpbXBsZVJlZihvYmouJHJlZik7CisgIH0gZWxzZSB7CisgICAgc3RyICs9IG9iai50eXBlOworICB9CisKKyAgcmV0dXJuIHN0cjsKK307CisKK3ZhciBzY2hlbWFUb0pTT04gPSBtb2R1bGUuZXhwb3J0cy5zY2hlbWFUb0pTT04gPSBmdW5jdGlvbiAoc2NoZW1hLCBtb2RlbHMsIG1vZGVsc1RvSWdub3JlLCBtb2RlbFByb3BlcnR5TWFjcm8pIHsKKyAgLy8gUmVzb2x2ZSB0aGUgc2NoZW1hIChIYW5kbGUgbmVzdGVkIHNjaGVtYXMpCisgIHNjaGVtYSA9IEhlbHBlcnMucmVzb2x2ZVNjaGVtYShzY2hlbWEpOworCisgIGlmKHR5cGVvZiBtb2RlbFByb3BlcnR5TWFjcm8gIT09ICdmdW5jdGlvbicpIHsKKyAgICBtb2RlbFByb3BlcnR5TWFjcm8gPSBmdW5jdGlvbihwcm9wKXsKKyAgICAgIHJldHVybiAocHJvcCB8fCB7fSkuZGVmYXVsdDsKKyAgICB9OworICB9CisKKyAgbW9kZWxzVG9JZ25vcmU9IG1vZGVsc1RvSWdub3JlIHx8IHt9OworCisgIHZhciB0eXBlID0gc2NoZW1hLnR5cGUgfHwgJ29iamVjdCc7CisgIHZhciBmb3JtYXQgPSBzY2hlbWEuZm9ybWF0OworICB2YXIgbW9kZWw7CisgIHZhciBvdXRwdXQ7CisKKyAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5leGFtcGxlKSkgeworICAgIG91dHB1dCA9IHNjaGVtYS5leGFtcGxlOworICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSAmJiBfLmlzQXJyYXkoc2NoZW1hLmVudW0pKSB7CisgICAgb3V0cHV0ID0gc2NoZW1hLmVudW1bMF07CisgIH0KKworICBpZiAoXy5pc1VuZGVmaW5lZChvdXRwdXQpKSB7CisgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICBtb2RlbCA9IG1vZGVsc1tIZWxwZXJzLnNpbXBsZVJlZihzY2hlbWEuJHJlZildOworCisgICAgICBpZiAoIV8uaXNVbmRlZmluZWQobW9kZWwpKSB7CisgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG1vZGVsc1RvSWdub3JlW21vZGVsLm5hbWVdKSkgeworICAgICAgICAgIG1vZGVsc1RvSWdub3JlW21vZGVsLm5hbWVdID0gbW9kZWw7CisgICAgICAgICAgb3V0cHV0ID0gc2NoZW1hVG9KU09OKG1vZGVsLmRlZmluaXRpb24sIG1vZGVscywgbW9kZWxzVG9JZ25vcmUsIG1vZGVsUHJvcGVydHlNYWNybyk7CisgICAgICAgICAgZGVsZXRlIG1vZGVsc1RvSWdub3JlW21vZGVsLm5hbWVdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChtb2RlbC50eXBlID09PSAnYXJyYXknKSB7CisgICAgICAgICAgICBvdXRwdXQgPSBbXTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0cHV0ID0ge307CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEuZGVmYXVsdCkpIHsKKyAgICAgIG91dHB1dCA9IHNjaGVtYS5kZWZhdWx0OworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICAgIGlmIChmb3JtYXQgPT09ICdkYXRlLXRpbWUnKSB7CisgICAgICAgIG91dHB1dCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTsKKyAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGF0ZScpIHsKKyAgICAgICAgb3V0cHV0ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07CisgICAgICB9IGVsc2UgeworICAgICAgICBvdXRwdXQgPSAnc3RyaW5nJzsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJykgeworICAgICAgb3V0cHV0ID0gMDsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7CisgICAgICBvdXRwdXQgPSAwLjA7CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHsKKyAgICAgIG91dHB1dCA9IHRydWU7CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgb3V0cHV0ID0ge307CisKKyAgICAgIF8uZm9yRWFjaChzY2hlbWEucHJvcGVydGllcywgZnVuY3Rpb24gKHByb3BlcnR5LCBuYW1lKSB7CisgICAgICAgIHZhciBjUHJvcGVydHkgPSBfLmNsb25lRGVlcChwcm9wZXJ0eSk7CisKKyAgICAgICAgLy8gQWxsb3cgbWFjcm8gdG8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlCisgICAgICAgIGNQcm9wZXJ0eS5kZWZhdWx0ID0gbW9kZWxQcm9wZXJ0eU1hY3JvKHByb3BlcnR5KTsKKworICAgICAgICBvdXRwdXRbbmFtZV0gPSBzY2hlbWFUb0pTT04oY1Byb3BlcnR5LCBtb2RlbHMsIG1vZGVsc1RvSWdub3JlLCBtb2RlbFByb3BlcnR5TWFjcm8pOworICAgICAgfSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXknKSB7CisgICAgICBvdXRwdXQgPSBbXTsKKworICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgIF8uZm9yRWFjaChzY2hlbWEuaXRlbXMsIGZ1bmN0aW9uIChpdGVtKSB7CisgICAgICAgICAgb3V0cHV0LnB1c2goc2NoZW1hVG9KU09OKGl0ZW0sIG1vZGVscywgbW9kZWxzVG9JZ25vcmUsIG1vZGVsUHJvcGVydHlNYWNybykpOworICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHNjaGVtYS5pdGVtcykpIHsKKyAgICAgICAgb3V0cHV0LnB1c2goc2NoZW1hVG9KU09OKHNjaGVtYS5pdGVtcywgbW9kZWxzLCBtb2RlbHNUb0lnbm9yZSwgbW9kZWxQcm9wZXJ0eU1hY3JvKSk7CisgICAgICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSkgeworICAgICAgICBvdXRwdXQucHVzaCh7fSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBIZWxwZXJzLmxvZygnQXJyYXkgdHlwZVwncyBcJ2l0ZW1zXCcgcHJvcGVydHkgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgY2Fubm90IHByb2Nlc3MnKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gb3V0cHV0OworfTsKKworbW9kdWxlLmV4cG9ydHMuc2NoZW1hVG9IVE1MID1mdW5jdGlvbiAobmFtZSwgc2NoZW1hLCBtb2RlbHMsIG1vZGVsUHJvcGVydHlNYWNybykgeworICB2YXIgc3Ryb25nT3BlbiA9ICc8c3BhbiBjbGFzcz0ic3Ryb25nIj4nOworICB2YXIgc3Ryb25nQ2xvc2UgPSAnPC9zcGFuPic7CisKKyAgLy8gQWxsb3cgZm9yIGlnbm9yaW5nIHRoZSAnbmFtZScgYXJndW1lbnQuLi4uIHNoaWZ0aW5nIHRoZSByZXN0CisgIGlmKF8uaXNPYmplY3QoYXJndW1lbnRzWzBdKSkgeworICAgIG5hbWUgPSB2b2lkIDA7CisgICAgc2NoZW1hID0gYXJndW1lbnRzWzBdOworICAgIG1vZGVscyA9IGFyZ3VtZW50c1sxXTsKKyAgICBtb2RlbFByb3BlcnR5TWFjcm8gPSBhcmd1bWVudHNbMl07CisgIH0KKworICBtb2RlbHMgPSBtb2RlbHMgfHwge307CisKKyAgLy8gUmVzb2x2ZSB0aGUgc2NoZW1hIChIYW5kbGUgbmVzdGVkIHNjaGVtYXMpCisgIHNjaGVtYSA9IEhlbHBlcnMucmVzb2x2ZVNjaGVtYShzY2hlbWEpOworCisgIC8vIFJldHVybiBmb3IgZW1wdHkgb2JqZWN0CisgIGlmKF8uaXNFbXB0eShzY2hlbWEpKSB7CisgICAgcmV0dXJuIHN0cm9uZ09wZW4gKyAnRW1wdHknICsgc3Ryb25nQ2xvc2U7CisgIH0KKworICAvLyBEZXJlZmVyZW5jZSAkcmVmIGZyb20gJ21vZGVscycKKyAgaWYodHlwZW9mIHNjaGVtYS4kcmVmID09PSAnc3RyaW5nJykgeworICAgIG5hbWUgPSBIZWxwZXJzLnNpbXBsZVJlZihzY2hlbWEuJHJlZik7CisgICAgc2NoZW1hID0gbW9kZWxzW25hbWVdOworICAgIGlmKHR5cGVvZiBzY2hlbWEgPT09ICd1bmRlZmluZWQnKQorICAgIHsKKyAgICAgIHJldHVybiBzdHJvbmdPcGVuICsgbmFtZSArICcgaXMgbm90IGRlZmluZWQhJyArIHN0cm9uZ0Nsb3NlOworICAgIH0KKyAgfQorCisgIGlmKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykgeworICAgIG5hbWUgPSBzY2hlbWEudGl0bGUgfHwgJ0lubGluZSBNb2RlbCc7CisgIH0KKworICAvLyBJZiB3ZSBhcmUgYSBNb2RlbCBvYmplY3QuLi4gYWRqdXN0IGFjY29yZGluZ2x5CisgIGlmKHNjaGVtYS5kZWZpbml0aW9uKSB7CisgICAgc2NoZW1hID0gc2NoZW1hLmRlZmluaXRpb247CisgIH0KKworICBpZih0eXBlb2YgbW9kZWxQcm9wZXJ0eU1hY3JvICE9PSAnZnVuY3Rpb24nKSB7CisgICAgbW9kZWxQcm9wZXJ0eU1hY3JvID0gZnVuY3Rpb24ocHJvcCl7CisgICAgICByZXR1cm4gKHByb3AgfHwge30pLmRlZmF1bHQ7CisgICAgfTsKKyAgfQorCisgIHZhciByZWZlcmVuY2VzID0ge307CisgIHZhciBzZWVuTW9kZWxzID0gW107CisgIHZhciBpbmxpbmVNb2RlbHMgPSAwOworCisKKworICAvLyBHZW5lcmF0ZSBjdXJyZW50IEhUTUwKKyAgdmFyIGh0bWwgPSBwcm9jZXNzTW9kZWwoc2NoZW1hLCBuYW1lKTsKKworICAvLyBHZW5lcmF0ZSByZWZlcmVuY2VzIEhUTUwKKyAgd2hpbGUgKF8ua2V5cyhyZWZlcmVuY2VzKS5sZW5ndGggPiAwKSB7CisgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqLworICAgIF8uZm9yRWFjaChyZWZlcmVuY2VzLCBmdW5jdGlvbiAoc2NoZW1hLCBuYW1lKSB7CisgICAgICB2YXIgc2Vlbk1vZGVsID0gXy5pbmRleE9mKHNlZW5Nb2RlbHMsIG5hbWUpID4gLTE7CisKKyAgICAgIGRlbGV0ZSByZWZlcmVuY2VzW25hbWVdOworCisgICAgICBpZiAoIXNlZW5Nb2RlbCkgeworICAgICAgICBzZWVuTW9kZWxzLnB1c2gobmFtZSk7CisKKyAgICAgICAgaHRtbCArPSAnPGJyIC8+JyArIHByb2Nlc3NNb2RlbChzY2hlbWEsIG5hbWUpOworICAgICAgfQorICAgIH0pOworICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovCisgIH0KKworICByZXR1cm4gaHRtbDsKKworICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICBmdW5jdGlvbiBhZGRSZWZlcmVuY2Uoc2NoZW1hLCBuYW1lLCBza2lwUmVmKSB7CisgICAgdmFyIG1vZGVsTmFtZSA9IG5hbWU7CisgICAgdmFyIG1vZGVsOworCisgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICBtb2RlbE5hbWUgPSBzY2hlbWEudGl0bGUgfHwgSGVscGVycy5zaW1wbGVSZWYoc2NoZW1hLiRyZWYpOworICAgICAgbW9kZWwgPSBtb2RlbHNbbW9kZWxOYW1lXTsKKyAgICB9IGVsc2UgaWYgKF8uaXNVbmRlZmluZWQobmFtZSkpIHsKKyAgICAgIG1vZGVsTmFtZSA9IHNjaGVtYS50aXRsZSB8fCAnSW5saW5lIE1vZGVsICcgKyAoKytpbmxpbmVNb2RlbHMpOworICAgICAgbW9kZWwgPSB7ZGVmaW5pdGlvbjogc2NoZW1hfTsKKyAgICB9CisKKyAgICBpZiAoc2tpcFJlZiAhPT0gdHJ1ZSkgeworICAgICAgcmVmZXJlbmNlc1ttb2RlbE5hbWVdID0gXy5pc1VuZGVmaW5lZChtb2RlbCkgPyB7fSA6IG1vZGVsLmRlZmluaXRpb247CisgICAgfQorCisgICAgcmV0dXJuIG1vZGVsTmFtZTsKKyAgfQorCisgIGZ1bmN0aW9uIHByaW1pdGl2ZVRvSFRNTChzY2hlbWEpIHsKKyAgICB2YXIgaHRtbCA9ICc8c3BhbiBjbGFzcz0icHJvcFR5cGUiPic7CisgICAgdmFyIHR5cGUgPSBzY2hlbWEudHlwZSB8fCAnb2JqZWN0JzsKKworICAgIGlmIChzY2hlbWEuJHJlZikgeworICAgICAgaHRtbCArPSBhZGRSZWZlcmVuY2Uoc2NoZW1hLCBIZWxwZXJzLnNpbXBsZVJlZihzY2hlbWEuJHJlZikpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHsKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEucHJvcGVydGllcykpIHsKKyAgICAgICAgaHRtbCArPSBhZGRSZWZlcmVuY2Uoc2NoZW1hKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGh0bWwgKz0gJ29iamVjdCc7CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXknKSB7CisgICAgICBodG1sICs9ICdBcnJheVsnOworCisgICAgICBpZiAoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHsKKyAgICAgICAgaHRtbCArPSBfLm1hcChzY2hlbWEuaXRlbXMsIGFkZFJlZmVyZW5jZSkuam9pbignLCcpOworICAgICAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qoc2NoZW1hLml0ZW1zKSkgeworICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMuJHJlZikpIHsKKyAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zLnR5cGUpICYmIF8uaW5kZXhPZihbJ2FycmF5JywgJ29iamVjdCddLCBzY2hlbWEuaXRlbXMudHlwZSkgPT09IC0xKSB7CisgICAgICAgICAgICBodG1sICs9IHNjaGVtYS5pdGVtcy50eXBlOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBodG1sICs9IGFkZFJlZmVyZW5jZShzY2hlbWEuaXRlbXMpOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBodG1sICs9IGFkZFJlZmVyZW5jZShzY2hlbWEuaXRlbXMsIEhlbHBlcnMuc2ltcGxlUmVmKHNjaGVtYS5pdGVtcy4kcmVmKSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEhlbHBlcnMubG9nKCdBcnJheSB0eXBlXCdzIFwnaXRlbXNcJyBzY2hlbWEgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgY2Fubm90IHByb2Nlc3MnKTsKKyAgICAgICAgaHRtbCArPSAnb2JqZWN0JzsKKyAgICAgIH0KKworICAgICAgaHRtbCArPSAnXSc7CisgICAgfSBlbHNlIHsKKyAgICAgIGh0bWwgKz0gc2NoZW1hLnR5cGU7CisgICAgfQorCisgICAgaHRtbCArPSAnPC9zcGFuPic7CisKKyAgICByZXR1cm4gaHRtbDsKKyAgfQorCisgIGZ1bmN0aW9uIHByaW1pdGl2ZVRvT3B0aW9uc0hUTUwoc2NoZW1hLCBodG1sKSB7CisgICAgdmFyIG9wdGlvbnMgPSAnJzsKKyAgICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlIHx8ICdvYmplY3QnOworICAgIHZhciBpc0FycmF5ID0gdHlwZSA9PT0gJ2FycmF5JzsKKworICAgIGlmIChpc0FycmF5KSB7CisgICAgICBpZiAoXy5pc1BsYWluT2JqZWN0KHNjaGVtYS5pdGVtcykgJiYgIV8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zLnR5cGUpKSB7CisgICAgICAgIHR5cGUgPSBzY2hlbWEuaXRlbXMudHlwZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHR5cGUgPSAnb2JqZWN0JzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLmRlZmF1bHQpKSB7CisgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ0RlZmF1bHQnLCBzY2hlbWEuZGVmYXVsdCk7CisgICAgfQorCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSAnc3RyaW5nJzoKKyAgICAgIGlmIChzY2hlbWEubWluTGVuZ3RoKSB7CisgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnTWluLiBMZW5ndGgnLCBzY2hlbWEubWluTGVuZ3RoKTsKKyAgICAgIH0KKworICAgICAgaWYgKHNjaGVtYS5tYXhMZW5ndGgpIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdNYXguIExlbmd0aCcsIHNjaGVtYS5tYXhMZW5ndGgpOworICAgICAgfQorCisgICAgICBpZiAoc2NoZW1hLnBhdHRlcm4pIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdSZWcuIEV4cC4nLCBzY2hlbWEucGF0dGVybik7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdpbnRlZ2VyJzoKKyAgICBjYXNlICdudW1iZXInOgorICAgICAgaWYgKHNjaGVtYS5taW5pbXVtKSB7CisgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnTWluLiBWYWx1ZScsIHNjaGVtYS5taW5pbXVtKTsKKyAgICAgIH0KKworICAgICAgaWYgKHNjaGVtYS5leGNsdXNpdmVNaW5pbXVtKSB7CisgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnRXhjbHVzaXZlIE1pbi4nLCAndHJ1ZScpOworICAgICAgfQorCisgICAgICBpZiAoc2NoZW1hLm1heGltdW0pIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdNYXguIFZhbHVlJywgc2NoZW1hLm1heGltdW0pOworICAgICAgfQorCisgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1heGltdW0pIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdFeGNsdXNpdmUgTWF4LicsICd0cnVlJyk7CisgICAgICB9CisKKyAgICAgIGlmIChzY2hlbWEubXVsdGlwbGVPZikgeworICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ011bHRpcGxlIE9mJywgc2NoZW1hLm11bHRpcGxlT2YpOworICAgICAgfQorCisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXNBcnJheSkgeworICAgICAgaWYgKHNjaGVtYS5taW5JdGVtcykgeworICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ01pbi4gSXRlbXMnLCBzY2hlbWEubWluSXRlbXMpOworICAgICAgfQorCisgICAgICBpZiAoc2NoZW1hLm1heEl0ZW1zKSB7CisgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnTWF4LiBJdGVtcycsIHNjaGVtYS5tYXhJdGVtcyk7CisgICAgICB9CisKKyAgICAgIGlmIChzY2hlbWEudW5pcXVlSXRlbXMpIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdVbmlxdWUgSXRlbXMnLCAndHJ1ZScpOworICAgICAgfQorCisgICAgICBpZiAoc2NoZW1hLmNvbGxlY3Rpb25Gb3JtYXQpIHsKKyAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdDb2xsLiBGb3JtYXQnLCBzY2hlbWEuY29sbGVjdGlvbkZvcm1hdCk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zKSkgeworICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuZW51bSkpIHsKKyAgICAgICAgdmFyIGVudW1TdHJpbmc7CisKKyAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdpbnRlZ2VyJykgeworICAgICAgICAgIGVudW1TdHJpbmcgPSBzY2hlbWEuZW51bS5qb2luKCcsICcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGVudW1TdHJpbmcgPSAnIicgKyBzY2hlbWEuZW51bS5qb2luKCciLCAiJykgKyAnIic7CisgICAgICAgIH0KKworICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ0VudW0nLCBlbnVtU3RyaW5nKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7CisgICAgICBodG1sID0gJzxzcGFuIGNsYXNzPSJwcm9wV3JhcCI+JyArIGh0bWwgKyAnPHRhYmxlIGNsYXNzPSJvcHRpb25zV3JhcHBlciI+PHRyPjx0aCBjb2xzcGFuPSIyIj4nICsgdHlwZSArICc8L3RoPjwvdHI+JyArIG9wdGlvbnMgKyAnPC90YWJsZT48L3NwYW4+JzsKKyAgICB9CisKKyAgICByZXR1cm4gaHRtbDsKKyAgfQorCisgIGZ1bmN0aW9uIHByb2Nlc3NNb2RlbChzY2hlbWEsIG5hbWUpIHsKKyAgICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlIHx8ICdvYmplY3QnOworICAgIHZhciBpc0FycmF5ID0gc2NoZW1hLnR5cGUgPT09ICdhcnJheSc7CisgICAgdmFyIGh0bWwgPSBzdHJvbmdPcGVuICsgbmFtZSArICcgJyArIChpc0FycmF5ID8gJ1snIDogJ3snKSArIHN0cm9uZ0Nsb3NlOworCisgICAgaWYgKG5hbWUpIHsKKyAgICAgIHNlZW5Nb2RlbHMucHVzaChuYW1lKTsKKyAgICB9CisKKyAgICBpZiAoaXNBcnJheSkgeworICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIF8ubWFwKHNjaGVtYS5pdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICB2YXIgdHlwZSA9IGl0ZW0udHlwZSB8fCAnb2JqZWN0JzsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGl0ZW0uJHJlZikpIHsKKyAgICAgICAgICAgIGlmIChfLmluZGV4T2YoWydhcnJheScsICdvYmplY3QnXSwgdHlwZSkgPiAtMSkgeworICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcgJiYgXy5pc1VuZGVmaW5lZChpdGVtLnByb3BlcnRpZXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdvYmplY3QnOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBhZGRSZWZlcmVuY2UoaXRlbSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVUb09wdGlvbnNIVE1MKGl0ZW0sIHR5cGUpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gYWRkUmVmZXJlbmNlKGl0ZW0sIEhlbHBlcnMuc2ltcGxlUmVmKGl0ZW0uJHJlZikpOworICAgICAgICAgIH0KKyAgICAgICAgfSkuam9pbignLDwvZGl2PjxkaXY+Jyk7CisgICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy4kcmVmKSkgeworICAgICAgICAgIGlmIChfLmluZGV4T2YoWydhcnJheScsICdvYmplY3QnXSwgc2NoZW1hLml0ZW1zLnR5cGUgfHwgJ29iamVjdCcpID4gLTEpIHsKKyAgICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMudHlwZSkgfHwgc2NoZW1hLml0ZW1zLnR5cGUgPT09ICdvYmplY3QnKSAmJiBfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy5wcm9wZXJ0aWVzKSkgeworICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2Pm9iamVjdDwvZGl2Pic7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2PicgKyBhZGRSZWZlcmVuY2Uoc2NoZW1hLml0ZW1zKSArICc8L2Rpdj4nOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBodG1sICs9ICc8ZGl2PicgKyBwcmltaXRpdmVUb09wdGlvbnNIVE1MKHNjaGVtYS5pdGVtcywgc2NoZW1hLml0ZW1zLnR5cGUpICsgJzwvZGl2Pic7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIGFkZFJlZmVyZW5jZShzY2hlbWEuaXRlbXMsIEhlbHBlcnMuc2ltcGxlUmVmKHNjaGVtYS5pdGVtcy4kcmVmKSkgKyAnPC9kaXY+JzsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgSGVscGVycy5sb2coJ0FycmF5IHR5cGVcJ3MgXCdpdGVtc1wnIHByb3BlcnR5IGlzIG5vdCBhbiBhcnJheSBvciBhbiBvYmplY3QsIGNhbm5vdCBwcm9jZXNzJyk7CisgICAgICAgIGh0bWwgKz0gJzxkaXY+b2JqZWN0PC9kaXY+JzsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIGFkZFJlZmVyZW5jZShzY2hlbWEsIG5hbWUpICsgJzwvZGl2Pic7CisgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICAgIGlmIChfLmlzUGxhaW5PYmplY3Qoc2NoZW1hLnByb3BlcnRpZXMpKSB7CisgICAgICAgICAgdmFyIGNvbnRlbnRzID0gXy5tYXAoc2NoZW1hLnByb3BlcnRpZXMsIGZ1bmN0aW9uIChwcm9wZXJ0eSwgbmFtZSkgeworICAgICAgICAgICAgdmFyIHByb3BlcnR5SXNSZXF1aXJlZCA9IChfLmluZGV4T2Yoc2NoZW1hLnJlcXVpcmVkLCBuYW1lKSA+PSAwKTsKKyAgICAgICAgICAgIHZhciBjUHJvcGVydHkgPSBfLmNsb25lRGVlcChwcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIHZhciByZXF1aXJlZENsYXNzID0gcHJvcGVydHlJc1JlcXVpcmVkID8gJ3JlcXVpcmVkJyA6ICcnOworICAgICAgICAgICAgdmFyIGh0bWwgPSAnPHNwYW4gY2xhc3M9InByb3BOYW1lICcgKyByZXF1aXJlZENsYXNzICsgJyI+JyArIG5hbWUgKyAnPC9zcGFuPiAoJzsKKyAgICAgICAgICAgIHZhciBtb2RlbDsKKyAgICAgICAgICAgIHZhciBwcm9wRGVzY3JpcHRpb247CisKKyAgICAgICAgICAgIC8vIEFsbG93IG1hY3JvIHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgY1Byb3BlcnR5LmRlZmF1bHQgPSBtb2RlbFByb3BlcnR5TWFjcm8oY1Byb3BlcnR5KTsKKworICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgc2NoZW1hIChIYW5kbGUgbmVzdGVkIHNjaGVtYXMpCisgICAgICAgICAgICBjUHJvcGVydHkgPSBIZWxwZXJzLnJlc29sdmVTY2hlbWEoY1Byb3BlcnR5KTsKKworICAgICAgICAgICAgcHJvcERlc2NyaXB0aW9uID0gcHJvcGVydHkuZGVzY3JpcHRpb24gfHwgY1Byb3BlcnR5LmRlc2NyaXB0aW9uOworCisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSBwcm9wZXJ0eSByZWZlcmVuY2VzIHRvIHByaW1pdGl2ZXMgKElzc3VlIDMzOSkKKyAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChjUHJvcGVydHkuJHJlZikpIHsKKyAgICAgICAgICAgICAgbW9kZWwgPSBtb2RlbHNbSGVscGVycy5zaW1wbGVSZWYoY1Byb3BlcnR5LiRyZWYpXTsKKworICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQobW9kZWwpICYmIF8uaW5kZXhPZihbdW5kZWZpbmVkLCAnYXJyYXknLCAnb2JqZWN0J10sIG1vZGVsLmRlZmluaXRpb24udHlwZSkgPT09IC0xKSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIHJlZmVyZW5jZWQgc2NoZW1hCisgICAgICAgICAgICAgICAgY1Byb3BlcnR5ID0gSGVscGVycy5yZXNvbHZlU2NoZW1hKG1vZGVsLmRlZmluaXRpb24pOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGh0bWwgKz0gcHJpbWl0aXZlVG9IVE1MKGNQcm9wZXJ0eSk7CisKKyAgICAgICAgICAgIGlmKCFwcm9wZXJ0eUlzUmVxdWlyZWQpIHsKKyAgICAgICAgICAgICAgaHRtbCArPSAnLCA8c3BhbiBjbGFzcz0icHJvcE9wdEtleSI+b3B0aW9uYWw8L3NwYW4+JzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYocHJvcGVydHkucmVhZE9ubHkpIHsKKyAgICAgICAgICAgICAgICBodG1sICs9ICcsIDxzcGFuIGNsYXNzPSJwcm9wUmVhZE9ubHkiPnJlYWQgb25seTwvc3Bhbj4nOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBodG1sICs9ICcpJzsKKworICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHByb3BEZXNjcmlwdGlvbikpIHsKKyAgICAgICAgICAgICAgaHRtbCArPSAnOiAnICsgJzxzcGFuIGNsYXNzPSJwcm9wRGVzYyI+JyArIHByb3BEZXNjcmlwdGlvbiArICc8L3NwYW4+JzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNQcm9wZXJ0eS5lbnVtKSB7CisgICAgICAgICAgICAgIGh0bWwgKz0gJyA9IDxzcGFuIGNsYXNzPSJwcm9wVmFscyI+W1wnJyArIGNQcm9wZXJ0eS5lbnVtLmpvaW4oJ1wnLCBcJycpICsgJ1wnXTwvc3Bhbj4nOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gJzxkaXYnICsgKHByb3BlcnR5LnJlYWRPbmx5ID8gJyBjbGFzcz0icmVhZE9ubHkiJyA6ICcnKSArICc+JyArIHByaW1pdGl2ZVRvT3B0aW9uc0hUTUwoY1Byb3BlcnR5LCBodG1sKTsKKyAgICAgICAgICB9KS5qb2luKCcsPC9kaXY+Jyk7CisKKyAgICAgICAgICBpZiAoY29udGVudHMpIHsKKyAgICAgICAgICAgIGh0bWwgKz0gY29udGVudHMgKyAnPC9kaXY+JzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIHByaW1pdGl2ZVRvT3B0aW9uc0hUTUwoc2NoZW1hLCB0eXBlKSArICc8L2Rpdj4nOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBodG1sICsgc3Ryb25nT3BlbiArIChpc0FycmF5ID8gJ10nIDogJ30nKSArIHN0cm9uZ0Nsb3NlOworICB9Cit9OworfSx7Ii4vaGVscGVycyI6NCwibG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mIjo0OSwibG9kYXNoLWNvbXBhdC9jb2xsZWN0aW9uL2ZvckVhY2giOjU0LCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vbWFwIjo1NiwibG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCI6MTM4LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheSI6MTQwLCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNFbXB0eSI6MTQxLCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiOjE0NCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QiOjE0NSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzVW5kZWZpbmVkIjoxNDgsImxvZGFzaC1jb21wYXQvb2JqZWN0L2tleXMiOjE0OX1dLDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgU3dhZ2dlckh0dHAgPSByZXF1aXJlKCcuL2h0dHAnKTsKK3ZhciBfID0geworICBpc09iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0JykKK307CisKK3ZhciBTd2FnZ2VyU3BlY0NvbnZlcnRlciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmVycm9ycyA9IFtdOworICB0aGlzLndhcm5pbmdzID0gW107CisgIHRoaXMubW9kZWxNYXAgPSB7fTsKK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5zZXREb2N1bWVudGF0aW9uTG9jYXRpb24gPSBmdW5jdGlvbiAobG9jYXRpb24pIHsKKyAgdGhpcy5kb2NMb2NhdGlvbiA9IGxvY2F0aW9uOworfTsKKworLyoqCisgKiBjb252ZXJ0cyBhIHJlc291cmNlIGxpc3RpbmcgT1IgYXBpIGRlY2xhcmF0aW9uCisgKiovCitTd2FnZ2VyU3BlY0NvbnZlcnRlci5wcm90b3R5cGUuY29udmVydCA9IGZ1bmN0aW9uIChvYmosIGNsaWVudEF1dGhvcml6YXRpb25zLCBvcHRzLCBjYWxsYmFjaykgeworICAvLyBub3QgYSB2YWxpZCBzcGVjCisgIGlmKCFvYmogfHwgIUFycmF5LmlzQXJyYXkob2JqLmFwaXMpKSB7CisgICAgcmV0dXJuIHRoaXMuZmluaXNoKGNhbGxiYWNrLCBudWxsKTsKKyAgfQorICB0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zID0gY2xpZW50QXV0aG9yaXphdGlvbnM7CisKKyAgLy8gY3JlYXRlIGEgbmV3IHN3YWdnZXIgb2JqZWN0IHRvIHJldHVybgorICB2YXIgc3dhZ2dlciA9IHsgc3dhZ2dlcjogJzIuMCcgfTsKKworICBzd2FnZ2VyLm9yaWdpbmFsVmVyc2lvbiA9IG9iai5zd2FnZ2VyVmVyc2lvbjsKKworICAvLyBhZGQgdGhlIGluZm8KKyAgdGhpcy5hcGlJbmZvKG9iaiwgc3dhZ2dlcik7CisKKyAgLy8gYWRkIHNlY3VyaXR5IGRlZmluaXRpb25zCisgIHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyhvYmosIHN3YWdnZXIpOworCisgIC8vIHRha2UgYmFzZVBhdGggaW50byBhY2NvdW50CisgIGlmIChvYmouYmFzZVBhdGgpIHsKKyAgICB0aGlzLnNldERvY3VtZW50YXRpb25Mb2NhdGlvbihvYmouYmFzZVBhdGgpOworICB9CisKKyAgLy8gc2VlIGlmIHRoaXMgaXMgYSBzaW5nbGUtZmlsZSBzd2FnZ2VyIGRlZmluaXRpb24KKyAgdmFyIGlzU2luZ2xlRmlsZVN3YWdnZXIgPSBmYWxzZTsKKyAgdmFyIGk7CisgIGZvcihpID0gMDsgaSA8IG9iai5hcGlzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGFwaSA9IG9iai5hcGlzW2ldOworICAgIGlmKEFycmF5LmlzQXJyYXkoYXBpLm9wZXJhdGlvbnMpKSB7CisgICAgICBpc1NpbmdsZUZpbGVTd2FnZ2VyID0gdHJ1ZTsKKyAgICB9CisgIH0KKyAgaWYoaXNTaW5nbGVGaWxlU3dhZ2dlcikgeworICAgIHRoaXMuZGVjbGFyYXRpb24ob2JqLCBzd2FnZ2VyKTsKKyAgICB0aGlzLmZpbmlzaChjYWxsYmFjaywgc3dhZ2dlcik7CisgIH0KKyAgZWxzZSB7CisgICAgdGhpcy5yZXNvdXJjZUxpc3Rpbmcob2JqLCBzd2FnZ2VyLCBvcHRzLCBjYWxsYmFjayk7CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5kZWNsYXJhdGlvbiA9IGZ1bmN0aW9uKG9iaiwgc3dhZ2dlcikgeworICB2YXIgbmFtZSwgaSwgcCwgcG9zOworICBpZighb2JqLmFwaXMpIHsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAob2JqLmJhc2VQYXRoLmluZGV4T2YoJ2h0dHA6Ly8nKSA9PT0gMCkgeworICAgIHAgPSBvYmouYmFzZVBhdGguc3Vic3RyaW5nKCdodHRwOi8vJy5sZW5ndGgpOworICAgIHBvcyA9IHAuaW5kZXhPZignLycpOworICAgIGlmIChwb3MgPiAwKSB7CisgICAgICBzd2FnZ2VyLmhvc3QgPSBwLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgc3dhZ2dlci5iYXNlUGF0aCA9IHAuc3Vic3RyaW5nKHBvcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dhZ2dlci5ob3N0ID0gcDsKKyAgICAgIHN3YWdnZXIuYmFzZVBhdGggPSAnLyc7CisgICAgfQorICB9IGVsc2UgaWYgKG9iai5iYXNlUGF0aC5pbmRleE9mKCdodHRwczovLycpID09PSAwKSB7CisgICAgcCA9IG9iai5iYXNlUGF0aC5zdWJzdHJpbmcoJ2h0dHBzOi8vJy5sZW5ndGgpOworICAgIHBvcyA9IHAuaW5kZXhPZignLycpOworICAgIGlmIChwb3MgPiAwKSB7CisgICAgICBzd2FnZ2VyLmhvc3QgPSBwLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgc3dhZ2dlci5iYXNlUGF0aCA9IHAuc3Vic3RyaW5nKHBvcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dhZ2dlci5ob3N0ID0gcDsKKyAgICAgIHN3YWdnZXIuYmFzZVBhdGggPSAnLyc7CisgICAgfQorICB9IGVsc2UgeworICAgIHN3YWdnZXIuYmFzZVBhdGggPSBvYmouYmFzZVBhdGg7CisgIH0KKworICB2YXIgcmVzb3VyY2VMZXZlbEF1dGg7CisgIGlmKG9iai5hdXRob3JpemF0aW9ucykgeworICAgIHJlc291cmNlTGV2ZWxBdXRoID0gb2JqLmF1dGhvcml6YXRpb25zOworICB9CisgIGlmKG9iai5jb25zdW1lcykgeworICAgIHN3YWdnZXIuY29uc3VtZXMgPSBvYmouY29uc3VtZXM7CisgIH0KKyAgaWYob2JqLnByb2R1Y2VzKSB7CisgICAgc3dhZ2dlci5wcm9kdWNlcyA9IG9iai5wcm9kdWNlczsKKyAgfQorCisgIC8vIGJ1aWxkIGEgbWFwcGluZyBvZiBpZCB0byBuYW1lIGZvciAxLjAgbW9kZWwgcmVzb2x1dGlvbnMKKyAgaWYoXy5pc09iamVjdChvYmopKSB7CisgICAgZm9yKG5hbWUgaW4gb2JqLm1vZGVscykgeworICAgICAgdmFyIGV4aXN0aW5nTW9kZWwgPSBvYmoubW9kZWxzW25hbWVdOworICAgICAgdmFyIGtleSA9IChleGlzdGluZ01vZGVsLmlkIHx8IG5hbWUpOworICAgICAgdGhpcy5tb2RlbE1hcFtrZXldID0gbmFtZTsKKyAgICB9CisgIH0KKworICBmb3IoaSA9IDA7IGkgPCBvYmouYXBpcy5sZW5ndGg7IGkrKykgeworICAgIHZhciBhcGkgPSBvYmouYXBpc1tpXTsKKyAgICB2YXIgcGF0aCA9IGFwaS5wYXRoOworICAgIHZhciBvcGVyYXRpb25zID0gYXBpLm9wZXJhdGlvbnM7CisgICAgdGhpcy5vcGVyYXRpb25zKHBhdGgsIG9iai5yZXNvdXJjZVBhdGgsIG9wZXJhdGlvbnMsIHJlc291cmNlTGV2ZWxBdXRoLCBzd2FnZ2VyKTsKKyAgfQorCisgIHZhciBtb2RlbHMgPSBvYmoubW9kZWxzIHx8IHt9OworICB0aGlzLm1vZGVscyhtb2RlbHMsIHN3YWdnZXIpOworfTsKKworU3dhZ2dlclNwZWNDb252ZXJ0ZXIucHJvdG90eXBlLm1vZGVscyA9IGZ1bmN0aW9uKG9iaiwgc3dhZ2dlcikgeworICBpZighXy5pc09iamVjdChvYmopKSB7CisgICAgcmV0dXJuOworICB9CisgIHZhciBuYW1lOworCisgIHN3YWdnZXIuZGVmaW5pdGlvbnMgPSBzd2FnZ2VyLmRlZmluaXRpb25zIHx8IHt9OworICBmb3IobmFtZSBpbiBvYmopIHsKKyAgICB2YXIgZXhpc3RpbmdNb2RlbCA9IG9ialtuYW1lXTsKKyAgICB2YXIgX3JlcXVpcmVkID0gW107CisgICAgdmFyIHNjaGVtYSA9IHsgcHJvcGVydGllczoge319OworICAgIHZhciBwcm9wZXJ0eU5hbWU7CisgICAgZm9yKHByb3BlcnR5TmFtZSBpbiBleGlzdGluZ01vZGVsLnByb3BlcnRpZXMpIHsKKyAgICAgIHZhciBleGlzdGluZ1Byb3BlcnR5ID0gZXhpc3RpbmdNb2RlbC5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07CisgICAgICB2YXIgcHJvcGVydHkgPSB7fTsKKyAgICAgIHRoaXMuZGF0YVR5cGUoZXhpc3RpbmdQcm9wZXJ0eSwgcHJvcGVydHkpOworICAgICAgaWYoZXhpc3RpbmdQcm9wZXJ0eS5kZXNjcmlwdGlvbikgeworICAgICAgICBwcm9wZXJ0eS5kZXNjcmlwdGlvbiA9IGV4aXN0aW5nUHJvcGVydHkuZGVzY3JpcHRpb247CisgICAgICB9CisgICAgICBpZihleGlzdGluZ1Byb3BlcnR5WydlbnVtJ10pIHsKKyAgICAgICAgcHJvcGVydHlbJ2VudW0nXSA9IGV4aXN0aW5nUHJvcGVydHlbJ2VudW0nXTsKKyAgICAgIH0KKyAgICAgIGlmKHR5cGVvZiBleGlzdGluZ1Byb3BlcnR5LnJlcXVpcmVkID09PSAnYm9vbGVhbicgJiYgZXhpc3RpbmdQcm9wZXJ0eS5yZXF1aXJlZCA9PT0gdHJ1ZSkgeworICAgICAgICBfcmVxdWlyZWQucHVzaChwcm9wZXJ0eU5hbWUpOworICAgICAgfQorICAgICAgaWYodHlwZW9mIGV4aXN0aW5nUHJvcGVydHkucmVxdWlyZWQgPT09ICdzdHJpbmcnICYmIGV4aXN0aW5nUHJvcGVydHkucmVxdWlyZWQgPT09ICd0cnVlJykgeworICAgICAgICBfcmVxdWlyZWQucHVzaChwcm9wZXJ0eU5hbWUpOworICAgICAgfQorICAgICAgc2NoZW1hLnByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IHByb3BlcnR5OworICAgIH0KKyAgICBpZihfcmVxdWlyZWQubGVuZ3RoID4gMCkgeworICAgICAgc2NoZW1hLnJlcXVpcmVkID0gX3JlcXVpcmVkOworICAgIH0gZWxzZSB7CisgICAgICBzY2hlbWEucmVxdWlyZWQgPSBleGlzdGluZ01vZGVsLnJlcXVpcmVkOworICAgIH0KKyAgICBzd2FnZ2VyLmRlZmluaXRpb25zW25hbWVdID0gc2NoZW1hOworICB9Cit9OworCitTd2FnZ2VyU3BlY0NvbnZlcnRlci5wcm90b3R5cGUuZXh0cmFjdFRhZyA9IGZ1bmN0aW9uKHJlc291cmNlUGF0aCkgeworICB2YXIgcGF0aFN0cmluZyA9IHJlc291cmNlUGF0aCB8fCAnZGVmYXVsdCc7CisgIGlmKHBhdGhTdHJpbmcuaW5kZXhPZignaHR0cDonKSA9PT0gMCB8fCBwYXRoU3RyaW5nLmluZGV4T2YoJ2h0dHBzOicpID09PSAwKSB7CisgICAgcGF0aFN0cmluZyA9IHBhdGhTdHJpbmcuc3BsaXQoWycvJ10pOworICAgIHBhdGhTdHJpbmcgPSBwYXRoU3RyaW5nW3BhdGhTdHJpbmcubGVuZ3RoIC0xXS5zdWJzdHJpbmcoKTsKKyAgfQorICBpZihwYXRoU3RyaW5nLmVuZHNXaXRoKCcuanNvbicpKSB7CisgICAgcGF0aFN0cmluZyA9IHBhdGhTdHJpbmcuc3Vic3RyaW5nKDAsIHBhdGhTdHJpbmcubGVuZ3RoIC0gJy5qc29uJy5sZW5ndGgpOworICB9CisgIHJldHVybiBwYXRoU3RyaW5nLnJlcGxhY2UoJy8nLCcnKTsKK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5vcGVyYXRpb25zID0gZnVuY3Rpb24ocGF0aCwgcmVzb3VyY2VQYXRoLCBvYmosIHJlc291cmNlTGV2ZWxBdXRoLCBzd2FnZ2VyKSB7CisgIGlmKCFBcnJheS5pc0FycmF5KG9iaikpIHsKKyAgICByZXR1cm47CisgIH0KKyAgdmFyIGk7CisKKyAgaWYoIXN3YWdnZXIucGF0aHMpIHsKKyAgICBzd2FnZ2VyLnBhdGhzID0ge307CisgIH0KKworICB2YXIgcGF0aE9iaiA9IHN3YWdnZXIucGF0aHNbcGF0aF0gfHwge307CisgIHZhciB0YWcgPSB0aGlzLmV4dHJhY3RUYWcocmVzb3VyY2VQYXRoKTsKKyAgc3dhZ2dlci50YWdzID0gc3dhZ2dlci50YWdzIHx8IFtdOworICB2YXIgbWF0Y2hlZCA9IGZhbHNlOworICBmb3IoaSA9IDA7IGkgPCBzd2FnZ2VyLnRhZ3MubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgdGFnT2JqZWN0ID0gc3dhZ2dlci50YWdzW2ldOworICAgIGlmKHRhZ09iamVjdC5uYW1lID09PSB0YWcpIHsKKyAgICAgIG1hdGNoZWQgPSB0cnVlOworICAgIH0KKyAgfQorICBpZighbWF0Y2hlZCkgeworICAgIHN3YWdnZXIudGFncy5wdXNoKHtuYW1lOiB0YWd9KTsKKyAgfQorCisgIGZvcihpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykgeworICAgIHZhciBleGlzdGluZ09wZXJhdGlvbiA9IG9ialtpXTsKKyAgICB2YXIgbWV0aG9kID0gKGV4aXN0aW5nT3BlcmF0aW9uLm1ldGhvZCB8fCBleGlzdGluZ09wZXJhdGlvbi5odHRwTWV0aG9kKS50b0xvd2VyQ2FzZSgpOworICAgIHZhciBvcGVyYXRpb24gPSB7dGFnczogW3RhZ119OworICAgIHZhciBleGlzdGluZ0F1dGhvcml6YXRpb25zID0gZXhpc3RpbmdPcGVyYXRpb24uYXV0aG9yaXphdGlvbnM7CisKKyAgICBpZihleGlzdGluZ0F1dGhvcml6YXRpb25zICYmIE9iamVjdC5rZXlzKGV4aXN0aW5nQXV0aG9yaXphdGlvbnMpLmxlbmd0aCA9PT0gMCkgeworICAgICAgZXhpc3RpbmdBdXRob3JpemF0aW9ucyA9IHJlc291cmNlTGV2ZWxBdXRoOworICAgIH0KKworICAgIGlmKHR5cGVvZiBleGlzdGluZ0F1dGhvcml6YXRpb25zICE9PSAndW5kZWZpbmVkJykgeworICAgICAgdmFyIHNjb3Blc09iamVjdDsKKyAgICAgIGZvcih2YXIga2V5IGluIGV4aXN0aW5nQXV0aG9yaXphdGlvbnMpIHsKKyAgICAgICAgb3BlcmF0aW9uLnNlY3VyaXR5ID0gb3BlcmF0aW9uLnNlY3VyaXR5IHx8IFtdOworICAgICAgICB2YXIgc2NvcGVzID0gZXhpc3RpbmdBdXRob3JpemF0aW9uc1trZXldOworICAgICAgICBpZihzY29wZXMpIHsKKyAgICAgICAgICB2YXIgc2VjdXJpdHlTY29wZXMgPSBbXTsKKyAgICAgICAgICBmb3IodmFyIGogaW4gc2NvcGVzKSB7CisgICAgICAgICAgICBzZWN1cml0eVNjb3Blcy5wdXNoKHNjb3Blc1tqXS5zY29wZSk7CisgICAgICAgICAgfQorICAgICAgICAgIHNjb3Blc09iamVjdCA9IHt9OworICAgICAgICAgIHNjb3Blc09iamVjdFtrZXldID0gc2VjdXJpdHlTY29wZXM7CisgICAgICAgICAgb3BlcmF0aW9uLnNlY3VyaXR5LnB1c2goc2NvcGVzT2JqZWN0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzY29wZXNPYmplY3QgPSB7fTsKKyAgICAgICAgICBzY29wZXNPYmplY3Rba2V5XSA9IFtdOworICAgICAgICAgIG9wZXJhdGlvbi5zZWN1cml0eS5wdXNoKHNjb3Blc09iamVjdCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZihleGlzdGluZ09wZXJhdGlvbi5jb25zdW1lcykgeworICAgICAgb3BlcmF0aW9uLmNvbnN1bWVzID0gZXhpc3RpbmdPcGVyYXRpb24uY29uc3VtZXM7CisgICAgfQorICAgIGVsc2UgaWYoc3dhZ2dlci5jb25zdW1lcykgeworICAgICAgb3BlcmF0aW9uLmNvbnN1bWVzID0gc3dhZ2dlci5jb25zdW1lczsKKyAgICB9CisgICAgaWYoZXhpc3RpbmdPcGVyYXRpb24ucHJvZHVjZXMpIHsKKyAgICAgIG9wZXJhdGlvbi5wcm9kdWNlcyA9IGV4aXN0aW5nT3BlcmF0aW9uLnByb2R1Y2VzOworICAgIH0KKyAgICBlbHNlIGlmKHN3YWdnZXIucHJvZHVjZXMpIHsKKyAgICAgIG9wZXJhdGlvbi5wcm9kdWNlcyA9IHN3YWdnZXIucHJvZHVjZXM7CisgICAgfQorICAgIGlmKGV4aXN0aW5nT3BlcmF0aW9uLnN1bW1hcnkpIHsKKyAgICAgIG9wZXJhdGlvbi5zdW1tYXJ5ID0gZXhpc3RpbmdPcGVyYXRpb24uc3VtbWFyeTsKKyAgICB9CisgICAgaWYoZXhpc3RpbmdPcGVyYXRpb24ubm90ZXMpIHsKKyAgICAgIG9wZXJhdGlvbi5kZXNjcmlwdGlvbiA9IGV4aXN0aW5nT3BlcmF0aW9uLm5vdGVzOworICAgIH0KKyAgICBpZihleGlzdGluZ09wZXJhdGlvbi5uaWNrbmFtZSkgeworICAgICAgb3BlcmF0aW9uLm9wZXJhdGlvbklkID0gZXhpc3RpbmdPcGVyYXRpb24ubmlja25hbWU7CisgICAgfQorICAgIGlmKGV4aXN0aW5nT3BlcmF0aW9uLmRlcHJlY2F0ZWQpIHsKKyAgICAgIG9wZXJhdGlvbi5kZXByZWNhdGVkID0gZXhpc3RpbmdPcGVyYXRpb24uZGVwcmVjYXRlZDsKKyAgICB9CisKKyAgICB0aGlzLmF1dGhvcml6YXRpb25zKGV4aXN0aW5nQXV0aG9yaXphdGlvbnMsIHN3YWdnZXIpOworICAgIHRoaXMucGFyYW1ldGVycyhvcGVyYXRpb24sIGV4aXN0aW5nT3BlcmF0aW9uLnBhcmFtZXRlcnMsIHN3YWdnZXIpOworICAgIHRoaXMucmVzcG9uc2VNZXNzYWdlcyhvcGVyYXRpb24sIGV4aXN0aW5nT3BlcmF0aW9uLCBzd2FnZ2VyKTsKKworICAgIHBhdGhPYmpbbWV0aG9kXSA9IG9wZXJhdGlvbjsKKyAgfQorCisgIHN3YWdnZXIucGF0aHNbcGF0aF0gPSBwYXRoT2JqOworfTsKKworU3dhZ2dlclNwZWNDb252ZXJ0ZXIucHJvdG90eXBlLnJlc3BvbnNlTWVzc2FnZXMgPSBmdW5jdGlvbihvcGVyYXRpb24sIGV4aXN0aW5nT3BlcmF0aW9uKSB7CisgIGlmKCFfLmlzT2JqZWN0KGV4aXN0aW5nT3BlcmF0aW9uKSkgeworICAgIHJldHVybjsKKyAgfQorICAvLyBidWlsZCBkZWZhdWx0IHJlc3BvbnNlIGZyb20gdGhlIG9wZXJhdGlvbiAoMS54KQorICB2YXIgZGVmYXVsdFJlc3BvbnNlID0ge307CisgIHRoaXMuZGF0YVR5cGUoZXhpc3RpbmdPcGVyYXRpb24sIGRlZmF1bHRSZXNwb25zZSk7CisgIC8vIFRPRE86IGxvb2sgaW50byB0aGUgcmVhbCBwcm9ibGVtIG9mIHJlbmRlcmluZyByZXNwb25zZXMgaW4gc3dhZ2dlci11aQorICAvLyAuLi4uc2hvdWxkIHJlcG9uc2VUeXBlIGhhdmUgYW4gaW1wbGljaXQgc2NoZW1hPworICBpZighZGVmYXVsdFJlc3BvbnNlLnNjaGVtYSAmJiBkZWZhdWx0UmVzcG9uc2UudHlwZSkgeworICAgIGRlZmF1bHRSZXNwb25zZSA9IHtzY2hlbWE6IGRlZmF1bHRSZXNwb25zZX07CisgIH0KKworICBvcGVyYXRpb24ucmVzcG9uc2VzID0gb3BlcmF0aW9uLnJlc3BvbnNlcyB8fCB7fTsKKworICAvLyBncmFiIGZyb20gcmVzcG9uc2VNZXNzYWdlcyAoMS4yKQorICB2YXIgaGFzMjAwID0gZmFsc2U7CisgIGlmKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdPcGVyYXRpb24ucmVzcG9uc2VNZXNzYWdlcykpIHsKKyAgICB2YXIgaTsKKyAgICB2YXIgZXhpc3RpbmdSZXNwb25zZXMgPSBleGlzdGluZ09wZXJhdGlvbi5yZXNwb25zZU1lc3NhZ2VzOworICAgIGZvcihpID0gMDsgaSA8IGV4aXN0aW5nUmVzcG9uc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgZXhpc3RpbmdSZXNwb25zZSA9IGV4aXN0aW5nUmVzcG9uc2VzW2ldOworICAgICAgdmFyIHJlc3BvbnNlID0geyBkZXNjcmlwdGlvbjogZXhpc3RpbmdSZXNwb25zZS5tZXNzYWdlIH07CisgICAgICBpZihleGlzdGluZ1Jlc3BvbnNlLmNvZGUgPT09IDIwMCkgeworICAgICAgICBoYXMyMDAgPSB0cnVlOworICAgICAgfQorICAgICAgLy8gQ29udmVydCByZXNwb25zZU1vZGVsIC0+IHNjaGVtYXskcmVmOiByZXNwb25zZU1vZGVsfQorICAgICAgaWYoZXhpc3RpbmdSZXNwb25zZS5yZXNwb25zZU1vZGVsKSB7CisgICAgICAgIHJlc3BvbnNlLnNjaGVtYSA9IHsnJHJlZic6ICcjL2RlZmluaXRpb25zLycgKyBleGlzdGluZ1Jlc3BvbnNlLnJlc3BvbnNlTW9kZWx9OworICAgICAgfQorICAgICAgb3BlcmF0aW9uLnJlc3BvbnNlc1snJyArIGV4aXN0aW5nUmVzcG9uc2UuY29kZV0gPSByZXNwb25zZTsKKyAgICB9CisgIH0KKworICBpZihoYXMyMDApIHsKKyAgICBvcGVyYXRpb24ucmVzcG9uc2VzWydkZWZhdWx0J10gPSBkZWZhdWx0UmVzcG9uc2U7CisgIH0KKyAgZWxzZSB7CisgICAgb3BlcmF0aW9uLnJlc3BvbnNlc1snMjAwJ10gPSBkZWZhdWx0UmVzcG9uc2U7CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5hdXRob3JpemF0aW9ucyA9IGZ1bmN0aW9uKG9iaikgeworICAvLyBUT0RPCisgIGlmKCFfLmlzT2JqZWN0KG9iaikpIHsKKyAgICByZXR1cm47CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5wYXJhbWV0ZXJzID0gZnVuY3Rpb24ob3BlcmF0aW9uLCBvYmopIHsKKyAgaWYoIUFycmF5LmlzQXJyYXkob2JqKSkgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgaTsKKyAgZm9yKGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIGV4aXN0aW5nUGFyYW1ldGVyID0gb2JqW2ldOworICAgIHZhciBwYXJhbWV0ZXIgPSB7fTsKKyAgICBwYXJhbWV0ZXIubmFtZSA9IGV4aXN0aW5nUGFyYW1ldGVyLm5hbWU7CisgICAgcGFyYW1ldGVyLmRlc2NyaXB0aW9uID0gZXhpc3RpbmdQYXJhbWV0ZXIuZGVzY3JpcHRpb247CisgICAgcGFyYW1ldGVyLnJlcXVpcmVkID0gZXhpc3RpbmdQYXJhbWV0ZXIucmVxdWlyZWQ7CisgICAgcGFyYW1ldGVyLmluID0gZXhpc3RpbmdQYXJhbWV0ZXIucGFyYW1UeXBlOworCisgICAgLy8gcGVyICMxNjgKKyAgICBpZihwYXJhbWV0ZXIuaW4gPT09ICdib2R5JykgeworICAgICAgcGFyYW1ldGVyLm5hbWUgPSAnYm9keSc7CisgICAgfQorICAgIGlmKHBhcmFtZXRlci5pbiA9PT0gJ2Zvcm0nKSB7CisgICAgICBwYXJhbWV0ZXIuaW4gPSAnZm9ybURhdGEnOworICAgIH0KKworICAgIGlmKGV4aXN0aW5nUGFyYW1ldGVyLmVudW0pIHsKKyAgICAgIHBhcmFtZXRlci5lbnVtID0gZXhpc3RpbmdQYXJhbWV0ZXIuZW51bTsKKyAgICB9CisKKyAgICBpZihleGlzdGluZ1BhcmFtZXRlci5hbGxvd011bHRpcGxlID09PSB0cnVlIHx8IGV4aXN0aW5nUGFyYW1ldGVyLmFsbG93TXVsdGlwbGUgPT09ICd0cnVlJykgeworICAgICAgdmFyIGlubmVyVHlwZSA9IHt9OworICAgICAgdGhpcy5kYXRhVHlwZShleGlzdGluZ1BhcmFtZXRlciwgaW5uZXJUeXBlKTsKKyAgICAgIHBhcmFtZXRlci50eXBlID0gJ2FycmF5JzsKKyAgICAgIHBhcmFtZXRlci5pdGVtcyA9IGlubmVyVHlwZTsKKworICAgICAgaWYoZXhpc3RpbmdQYXJhbWV0ZXIuYWxsb3dhYmxlVmFsdWVzKSB7CisgICAgICAgIHZhciBhdiA9IGV4aXN0aW5nUGFyYW1ldGVyLmFsbG93YWJsZVZhbHVlczsKKyAgICAgICAgaWYoYXYudmFsdWVUeXBlID09PSAnTElTVCcpIHsKKyAgICAgICAgICBwYXJhbWV0ZXJbJ2VudW0nXSA9IGF2LnZhbHVlczsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRoaXMuZGF0YVR5cGUoZXhpc3RpbmdQYXJhbWV0ZXIsIHBhcmFtZXRlcik7CisgICAgfQorICAgIGlmKHR5cGVvZiBleGlzdGluZ1BhcmFtZXRlci5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICBwYXJhbWV0ZXIuZGVmYXVsdCA9IGV4aXN0aW5nUGFyYW1ldGVyLmRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBvcGVyYXRpb24ucGFyYW1ldGVycyA9IG9wZXJhdGlvbi5wYXJhbWV0ZXJzIHx8IFtdOworICAgIG9wZXJhdGlvbi5wYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTsKKyAgfQorfTsKKworU3dhZ2dlclNwZWNDb252ZXJ0ZXIucHJvdG90eXBlLmRhdGFUeXBlID0gZnVuY3Rpb24oc291cmNlLCB0YXJnZXQpIHsKKyAgaWYoIV8uaXNPYmplY3Qoc291cmNlKSkgeworICAgIHJldHVybjsKKyAgfQorCisgIGlmKHNvdXJjZS5taW5pbXVtKSB7CisgICAgdGFyZ2V0Lm1pbmltdW0gPSBzb3VyY2UubWluaW11bTsKKyAgfQorICBpZihzb3VyY2UubWF4aW11bSkgeworICAgIHRhcmdldC5tYXhpbXVtID0gc291cmNlLm1heGltdW07CisgIH0KKyAgaWYgKHNvdXJjZS5mb3JtYXQpIHsKKyAgICB0YXJnZXQuZm9ybWF0ID0gc291cmNlLmZvcm1hdDsKKyAgfQorCisgIC8vIGRlZmF1bHQgY2FuIGJlICdmYWxzZScKKyAgaWYodHlwZW9mIHNvdXJjZS5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7CisgICAgdGFyZ2V0LmRlZmF1bHQgPSBzb3VyY2UuZGVmYXVsdFZhbHVlOworICB9CisKKyAgdmFyIGpzb25TY2hlbWFUeXBlID0gdGhpcy50b0pzb25TY2hlbWEoc291cmNlKTsKKyAgaWYoanNvblNjaGVtYVR5cGUpIHsKKyAgICB0YXJnZXQgPSB0YXJnZXQgfHwge307CisgICAgaWYoanNvblNjaGVtYVR5cGUudHlwZSkgeworICAgICAgdGFyZ2V0LnR5cGUgPSBqc29uU2NoZW1hVHlwZS50eXBlOworICAgIH0KKyAgICBpZihqc29uU2NoZW1hVHlwZS5mb3JtYXQpIHsKKyAgICAgIHRhcmdldC5mb3JtYXQgPSBqc29uU2NoZW1hVHlwZS5mb3JtYXQ7CisgICAgfQorICAgIGlmKGpzb25TY2hlbWFUeXBlLiRyZWYpIHsKKyAgICAgIHRhcmdldC5zY2hlbWEgPSB7JHJlZjoganNvblNjaGVtYVR5cGUuJHJlZn07CisgICAgfQorICAgIGlmKGpzb25TY2hlbWFUeXBlLml0ZW1zKSB7CisgICAgICB0YXJnZXQuaXRlbXMgPSBqc29uU2NoZW1hVHlwZS5pdGVtczsKKyAgICB9CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS50b0pzb25TY2hlbWEgPSBmdW5jdGlvbihzb3VyY2UpIHsKKyAgaWYoIXNvdXJjZSkgeworICAgIHJldHVybiAnb2JqZWN0JzsKKyAgfQorICB2YXIgZGV0ZWN0ZWRUeXBlID0gKHNvdXJjZS50eXBlIHx8IHNvdXJjZS5kYXRhVHlwZSB8fCBzb3VyY2UucmVzcG9uc2VDbGFzcyB8fCAnJyk7CisgIHZhciBsY1R5cGUgPSBkZXRlY3RlZFR5cGUudG9Mb3dlckNhc2UoKTsKKyAgdmFyIGZvcm1hdCA9IChzb3VyY2UuZm9ybWF0IHx8ICcnKS50b0xvd2VyQ2FzZSgpOworCisgIGlmKGxjVHlwZS5pbmRleE9mKCdsaXN0WycpID09PSAwKSB7CisgICAgdmFyIGlubmVyVHlwZSA9IGRldGVjdGVkVHlwZS5zdWJzdHJpbmcoNSwgZGV0ZWN0ZWRUeXBlLmxlbmd0aCAtIDEpOworICAgIHZhciBqc29uVHlwZSA9IHRoaXMudG9Kc29uU2NoZW1hKHt0eXBlOiBpbm5lclR5cGV9KTsKKyAgICByZXR1cm4ge3R5cGU6ICdhcnJheScsIGl0ZW1zOiBqc29uVHlwZX07CisgIH0gZWxzZSBpZihsY1R5cGUgPT09ICdpbnQnIHx8IChsY1R5cGUgPT09ICdpbnRlZ2VyJyAmJiBmb3JtYXQgPT09ICdpbnQzMicpKSB7CisgICAge3JldHVybiB7dHlwZTogJ2ludGVnZXInLCBmb3JtYXQ6ICdpbnQzMid9O30KKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ2xvbmcnIHx8IChsY1R5cGUgPT09ICdpbnRlZ2VyJyAmJiBmb3JtYXQgPT09ICdpbnQ2NCcpKSB7CisgICAge3JldHVybiB7dHlwZTogJ2ludGVnZXInLCBmb3JtYXQ6ICdpbnQ2NCd9O30KKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ2ludGVnZXInKSB7CisgICAge3JldHVybiB7dHlwZTogJ2ludGVnZXInLCBmb3JtYXQ6ICdpbnQ2NCd9O30KKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ2Zsb2F0JyB8fCAobGNUeXBlID09PSAnbnVtYmVyJyAmJiBmb3JtYXQgPT09ICdmbG9hdCcpKSB7CisgICAge3JldHVybiB7dHlwZTogJ251bWJlcicsIGZvcm1hdDogJ2Zsb2F0J307fQorICB9IGVsc2UgaWYobGNUeXBlID09PSAnZG91YmxlJyB8fCAobGNUeXBlID09PSAnbnVtYmVyJyAmJiBmb3JtYXQgPT09ICdkb3VibGUnKSkgeworICAgIHtyZXR1cm4ge3R5cGU6ICdudW1iZXInLCBmb3JtYXQ6ICdkb3VibGUnfTt9CisgIH0gZWxzZSBpZigobGNUeXBlID09PSAnc3RyaW5nJyAmJiBmb3JtYXQgPT09ICdkYXRlLXRpbWUnKSB8fCAobGNUeXBlID09PSAnZGF0ZScpKSB7CisgICAge3JldHVybiB7dHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2RhdGUtdGltZSd9O30KKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ3N0cmluZycpIHsKKyAgICB7cmV0dXJuIHt0eXBlOiAnc3RyaW5nJ307fQorICB9IGVsc2UgaWYobGNUeXBlID09PSAnZmlsZScpIHsKKyAgICB7cmV0dXJuIHt0eXBlOiAnZmlsZSd9O30KKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7CisgICAge3JldHVybiB7dHlwZTogJ2Jvb2xlYW4nfTt9CisgIH0gZWxzZSBpZihsY1R5cGUgPT09ICdib29sZWFuJykgeworICAgIHtyZXR1cm4ge3R5cGU6ICdib29sZWFuJ307fQorICB9IGVsc2UgaWYobGNUeXBlID09PSAnYXJyYXknIHx8IGxjVHlwZSA9PT0gJ2xpc3QnKSB7CisgICAgaWYoc291cmNlLml0ZW1zKSB7CisgICAgICB2YXIgaXQgPSB0aGlzLnRvSnNvblNjaGVtYShzb3VyY2UuaXRlbXMpOworICAgICAgcmV0dXJuIHt0eXBlOiAnYXJyYXknLCBpdGVtczogaXR9OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHJldHVybiB7dHlwZTogJ2FycmF5JywgaXRlbXM6IHt0eXBlOiAnb2JqZWN0J319OworICAgIH0KKyAgfSBlbHNlIGlmKHNvdXJjZS4kcmVmKSB7CisgICAgcmV0dXJuIHskcmVmOiB0aGlzLm1vZGVsTWFwW3NvdXJjZS4kcmVmXSA/ICcjL2RlZmluaXRpb25zLycgKyB0aGlzLm1vZGVsTWFwW3NvdXJjZS4kcmVmXSA6IHNvdXJjZS4kcmVmfTsKKyAgfSBlbHNlIGlmKGxjVHlwZSA9PT0gJ3ZvaWQnIHx8IGxjVHlwZSA9PT0gJycpIHsKKyAgICB7cmV0dXJuIHt9O30KKyAgfSBlbHNlIGlmICh0aGlzLm1vZGVsTWFwW3NvdXJjZS50eXBlXSkgeworICAgIC8vIElmIHRoaXMgYSBtb2RlbCB1c2luZyBgdHlwZWAgaW5zdGVhZCBvZiBgJHJlZmAsIHRoYXQncyBmaW5lLgorICAgIHJldHVybiB7JHJlZjogJyMvZGVmaW5pdGlvbnMvJyArIHRoaXMubW9kZWxNYXBbc291cmNlLnR5cGVdfTsKKyAgfSBlbHNlIHsKKyAgICAvLyBVbmtub3duIG1vZGVsIHR5cGUgb3IgJ29iamVjdCcsIHBhc3MgaXQgYWxvbmcuCisgICAgcmV0dXJuIHt0eXBlOiBzb3VyY2UudHlwZX07CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5yZXNvdXJjZUxpc3RpbmcgPSBmdW5jdGlvbihvYmosIHN3YWdnZXIsIG9wdHMsIGNhbGxiYWNrKSB7CisgIHZhciBpOworICB2YXIgcHJvY2Vzc2VkQ291bnQgPSAwOyAgIC8vIGpzaGludCBpZ25vcmU6bGluZQorICB2YXIgc2VsZiA9IHRoaXM7ICAgICAgICAgIC8vIGpzaGludCBpZ25vcmU6bGluZQorICB2YXIgZXhwZWN0ZWRDb3VudCA9IG9iai5hcGlzLmxlbmd0aDsKKyAgdmFyIF9zd2FnZ2VyID0gc3dhZ2dlcjsgICAvLyBqc2hpbnQgaWdub3JlOmxpbmUKKyAgdmFyIF9vcHRzID0ge307CisKKyAgaWYob3B0cyAmJiBvcHRzLnJlcXVlc3RJbnRlcmNlcHRvcil7CisgICAgX29wdHMucmVxdWVzdEludGVyY2VwdG9yID0gb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3I7CisgIH0KKworICBpZihvcHRzICYmIG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvcil7CisgICAgX29wdHMucmVzcG9uc2VJbnRlcmNlcHRvciA9IG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvcjsKKyAgfQorCisgIHZhciBzd2FnZ2VyUmVxdWVzdEhlYWRlcnMgPSAnYXBwbGljYXRpb24vanNvbic7CisKKyAgaWYob3B0cyAmJiBvcHRzLnN3YWdnZXJSZXF1ZXN0SGVhZGVycykgeworICAgIHN3YWdnZXJSZXF1ZXN0SGVhZGVycyA9IG9wdHMuc3dhZ2dlclJlcXVlc3RIZWFkZXJzOworICB9CisKKyAgaWYoZXhwZWN0ZWRDb3VudCA9PT0gMCkgeworICAgIHRoaXMuZmluaXNoKGNhbGxiYWNrLCBzd2FnZ2VyKTsKKyAgfQorCisgIGZvcihpID0gMDsgaSA8IGV4cGVjdGVkQ291bnQ7IGkrKykgeworICAgIHZhciBhcGkgPSBvYmouYXBpc1tpXTsKKyAgICB2YXIgcGF0aCA9IGFwaS5wYXRoOworICAgIHZhciBhYnNvbHV0ZVBhdGggPSB0aGlzLmdldEFic29sdXRlUGF0aChvYmouc3dhZ2dlclZlcnNpb24sIHRoaXMuZG9jTG9jYXRpb24sIHBhdGgpOworCisgICAgaWYoYXBpLmRlc2NyaXB0aW9uKSB7CisgICAgICBzd2FnZ2VyLnRhZ3MgPSBzd2FnZ2VyLnRhZ3MgfHwgW107CisgICAgICBzd2FnZ2VyLnRhZ3MucHVzaCh7CisgICAgICAgIG5hbWUgOiB0aGlzLmV4dHJhY3RUYWcoYXBpLnBhdGgpLAorICAgICAgICBkZXNjcmlwdGlvbiA6IGFwaS5kZXNjcmlwdGlvbiB8fCAnJworICAgICAgfSk7CisgICAgfQorICAgIHZhciBodHRwID0geworICAgICAgdXJsOiBhYnNvbHV0ZVBhdGgsCisgICAgICBoZWFkZXJzOiB7IGFjY2VwdDogc3dhZ2dlclJlcXVlc3RIZWFkZXJzIH0sCisgICAgICBvbjoge30sCisgICAgICBtZXRob2Q6ICdnZXQnLAorICAgICAgdGltZW91dDogb3B0cy50aW1lb3V0CisgICAgfTsKKyAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisgICAgaHR0cC5vbi5yZXNwb25zZSA9IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgIHByb2Nlc3NlZENvdW50ICs9IDE7CisgICAgICB2YXIgb2JqID0gZGF0YS5vYmo7CisgICAgICBpZihvYmopIHsKKyAgICAgICAgc2VsZi5kZWNsYXJhdGlvbihvYmosIF9zd2FnZ2VyKTsKKyAgICAgIH0KKyAgICAgIGlmKHByb2Nlc3NlZENvdW50ID09PSBleHBlY3RlZENvdW50KSB7CisgICAgICAgIHNlbGYuZmluaXNoKGNhbGxiYWNrLCBfc3dhZ2dlcik7CisgICAgICB9CisgICAgfTsKKyAgICBodHRwLm9uLmVycm9yID0gZnVuY3Rpb24oZGF0YSkgeworICAgICAgY29uc29sZS5lcnJvcihkYXRhKTsKKyAgICAgIHByb2Nlc3NlZENvdW50ICs9IDE7CisgICAgICBpZihwcm9jZXNzZWRDb3VudCA9PT0gZXhwZWN0ZWRDb3VudCkgeworICAgICAgICBzZWxmLmZpbmlzaChjYWxsYmFjaywgX3N3YWdnZXIpOworICAgICAgfQorICAgIH07CisgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi8KKworICAgIGlmKHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMgJiYgdHlwZW9mIHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMuYXBwbHkgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMuYXBwbHkoaHR0cCk7CisgICAgfQorCisgICAgbmV3IFN3YWdnZXJIdHRwKCkuZXhlY3V0ZShodHRwLCBfb3B0cyk7CisgIH0KK307CisKK1N3YWdnZXJTcGVjQ29udmVydGVyLnByb3RvdHlwZS5nZXRBYnNvbHV0ZVBhdGggPSBmdW5jdGlvbih2ZXJzaW9uLCBkb2NMb2NhdGlvbiwgcGF0aCkgIHsKKyAgaWYodmVyc2lvbiA9PT0gJzEuMCcpIHsKKyAgICBpZihkb2NMb2NhdGlvbi5lbmRzV2l0aCgnLmpzb24nKSkgeworICAgICAgLy8gZ2V0IHJvb3QgcGF0aAorICAgICAgdmFyIHBvcyA9IGRvY0xvY2F0aW9uLmxhc3RJbmRleE9mKCcvJyk7CisgICAgICBpZihwb3MgPiAwKSB7CisgICAgICAgIGRvY0xvY2F0aW9uID0gZG9jTG9jYXRpb24uc3Vic3RyaW5nKDAsIHBvcyk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgdmFyIGxvY2F0aW9uID0gZG9jTG9jYXRpb247CisgIGlmKHBhdGguaW5kZXhPZignaHR0cDonKSA9PT0gMCB8fCBwYXRoLmluZGV4T2YoJ2h0dHBzOicpID09PSAwKSB7CisgICAgbG9jYXRpb24gPSBwYXRoOworICB9CisgIGVsc2UgeworICAgIGlmKGRvY0xvY2F0aW9uLmVuZHNXaXRoKCcvJykpIHsKKyAgICAgIGxvY2F0aW9uID0gZG9jTG9jYXRpb24uc3Vic3RyaW5nKDAsIGRvY0xvY2F0aW9uLmxlbmd0aCAtIDEpOworICAgIH0KKyAgICBsb2NhdGlvbiArPSBwYXRoOworICB9CisgIGxvY2F0aW9uID0gbG9jYXRpb24ucmVwbGFjZSgne2Zvcm1hdH0nLCAnanNvbicpOworICByZXR1cm4gbG9jYXRpb247Cit9OworCitTd2FnZ2VyU3BlY0NvbnZlcnRlci5wcm90b3R5cGUuc2VjdXJpdHlEZWZpbml0aW9ucyA9IGZ1bmN0aW9uKG9iaiwgc3dhZ2dlcikgeworICBpZihvYmouYXV0aG9yaXphdGlvbnMpIHsKKyAgICB2YXIgbmFtZTsKKyAgICBmb3IobmFtZSBpbiBvYmouYXV0aG9yaXphdGlvbnMpIHsKKyAgICAgIHZhciBpc1ZhbGlkID0gZmFsc2U7CisgICAgICB2YXIgc2VjdXJpdHlEZWZpbml0aW9uID0geworICAgICAgICB2ZW5kb3JFeHRlbnNpb25zOiB7fQorICAgICAgfTsKKyAgICAgIHZhciBkZWZpbml0aW9uID0gb2JqLmF1dGhvcml6YXRpb25zW25hbWVdOworICAgICAgaWYoZGVmaW5pdGlvbi50eXBlID09PSAnYXBpS2V5JykgeworICAgICAgICBzZWN1cml0eURlZmluaXRpb24udHlwZSA9ICdhcGlLZXknOworICAgICAgICBzZWN1cml0eURlZmluaXRpb24uaW4gPSBkZWZpbml0aW9uLnBhc3NBczsKKyAgICAgICAgc2VjdXJpdHlEZWZpbml0aW9uLm5hbWUgPSBkZWZpbml0aW9uLmtleW5hbWUgfHwgbmFtZTsKKyAgICAgICAgaXNWYWxpZCA9IHRydWU7CisgICAgICB9CisgICAgICBlbHNlIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ2Jhc2ljQXV0aCcpIHsKKyAgICAgICAgc2VjdXJpdHlEZWZpbml0aW9uLnR5cGUgPSAnYmFzaWNBdXRoJzsKKyAgICAgICAgaXNWYWxpZCA9IHRydWU7CisgICAgICB9CisgICAgICBlbHNlIGlmKGRlZmluaXRpb24udHlwZSA9PT0gJ29hdXRoMicpIHsKKyAgICAgICAgdmFyIGV4aXN0aW5nU2NvcGVzID0gZGVmaW5pdGlvbi5zY29wZXMgfHwgW107CisgICAgICAgIHZhciBzY29wZXMgPSB7fTsKKyAgICAgICAgdmFyIGk7CisgICAgICAgIGZvcihpIGluIGV4aXN0aW5nU2NvcGVzKSB7CisgICAgICAgICAgdmFyIHNjb3BlID0gZXhpc3RpbmdTY29wZXNbaV07CisgICAgICAgICAgc2NvcGVzW3Njb3BlLnNjb3BlXSA9IHNjb3BlLmRlc2NyaXB0aW9uOworICAgICAgICB9CisgICAgICAgIHNlY3VyaXR5RGVmaW5pdGlvbi50eXBlID0gJ29hdXRoMic7CisgICAgICAgIGlmKGkgPiAwKSB7CisgICAgICAgICAgc2VjdXJpdHlEZWZpbml0aW9uLnNjb3BlcyA9IHNjb3BlczsKKyAgICAgICAgfQorICAgICAgICBpZihkZWZpbml0aW9uLmdyYW50VHlwZXMpIHsKKyAgICAgICAgICBpZihkZWZpbml0aW9uLmdyYW50VHlwZXMuaW1wbGljaXQpIHsKKyAgICAgICAgICAgIHZhciBpbXBsaWNpdCA9IGRlZmluaXRpb24uZ3JhbnRUeXBlcy5pbXBsaWNpdDsKKyAgICAgICAgICAgIHNlY3VyaXR5RGVmaW5pdGlvbi5mbG93ID0gJ2ltcGxpY2l0JzsKKyAgICAgICAgICAgIHNlY3VyaXR5RGVmaW5pdGlvbi5hdXRob3JpemF0aW9uVXJsID0gaW1wbGljaXQubG9naW5FbmRwb2ludDsKKyAgICAgICAgICAgIGlzVmFsaWQgPSB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovCisgICAgICAgICAgaWYoZGVmaW5pdGlvbi5ncmFudFR5cGVzWydhdXRob3JpemF0aW9uX2NvZGUnXSkgeworICAgICAgICAgICAgaWYoIXNlY3VyaXR5RGVmaW5pdGlvbi5mbG93KSB7CisgICAgICAgICAgICAgIC8vIGNhbm5vdCBzZXQgaWYgZmxvdyBpcyBhbHJlYWR5IGRlZmluZWQKKyAgICAgICAgICAgICAgdmFyIGF1dGhDb2RlID0gZGVmaW5pdGlvbi5ncmFudFR5cGVzWydhdXRob3JpemF0aW9uX2NvZGUnXTsKKyAgICAgICAgICAgICAgc2VjdXJpdHlEZWZpbml0aW9uLmZsb3cgPSAnYWNjZXNzQ29kZSc7CisgICAgICAgICAgICAgIHNlY3VyaXR5RGVmaW5pdGlvbi5hdXRob3JpemF0aW9uVXJsID0gYXV0aENvZGUudG9rZW5SZXF1ZXN0RW5kcG9pbnQudXJsOworICAgICAgICAgICAgICBzZWN1cml0eURlZmluaXRpb24udG9rZW5VcmwgPSBhdXRoQ29kZS50b2tlbkVuZHBvaW50LnVybDsKKyAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovCisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmKGlzVmFsaWQpIHsKKyAgICAgICAgc3dhZ2dlci5zZWN1cml0eURlZmluaXRpb25zID0gc3dhZ2dlci5zZWN1cml0eURlZmluaXRpb25zIHx8IHt9OworICAgICAgICBzd2FnZ2VyLnNlY3VyaXR5RGVmaW5pdGlvbnNbbmFtZV0gPSBzZWN1cml0eURlZmluaXRpb247CisgICAgICB9CisgICAgfQorICB9Cit9OworCitTd2FnZ2VyU3BlY0NvbnZlcnRlci5wcm90b3R5cGUuYXBpSW5mbyA9IGZ1bmN0aW9uKG9iaiwgc3dhZ2dlcikgeworICAvLyBpbmZvIHNlY3Rpb24KKyAgaWYob2JqLmluZm8pIHsKKyAgICB2YXIgaW5mbyA9IG9iai5pbmZvOworICAgIHN3YWdnZXIuaW5mbyA9IHt9OworCisgICAgaWYoaW5mby5jb250YWN0KSB7CisgICAgICBzd2FnZ2VyLmluZm8uY29udGFjdCA9IHt9OworICAgICAgc3dhZ2dlci5pbmZvLmNvbnRhY3QuZW1haWwgPSBpbmZvLmNvbnRhY3Q7CisgICAgfQorICAgIGlmKGluZm8uZGVzY3JpcHRpb24pIHsKKyAgICAgIHN3YWdnZXIuaW5mby5kZXNjcmlwdGlvbiA9IGluZm8uZGVzY3JpcHRpb247CisgICAgfQorICAgIGlmKGluZm8udGl0bGUpIHsKKyAgICAgIHN3YWdnZXIuaW5mby50aXRsZSA9IGluZm8udGl0bGU7CisgICAgfQorICAgIGlmKGluZm8udGVybXNPZlNlcnZpY2VVcmwpIHsKKyAgICAgIHN3YWdnZXIuaW5mby50ZXJtc09mU2VydmljZSA9IGluZm8udGVybXNPZlNlcnZpY2VVcmw7CisgICAgfQorICAgIGlmKGluZm8ubGljZW5zZSB8fCBpbmZvLmxpY2Vuc2VVcmwpIHsKKyAgICAgIHN3YWdnZXIubGljZW5zZSA9IHt9OworICAgICAgaWYoaW5mby5saWNlbnNlKSB7CisgICAgICAgIHN3YWdnZXIubGljZW5zZS5uYW1lID0gaW5mby5saWNlbnNlOworICAgICAgfQorICAgICAgaWYoaW5mby5saWNlbnNlVXJsKSB7CisgICAgICAgIHN3YWdnZXIubGljZW5zZS51cmwgPSBpbmZvLmxpY2Vuc2VVcmw7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeworICAgIHRoaXMud2FybmluZ3MucHVzaCgnbWlzc2luZyBpbmZvIHNlY3Rpb24nKTsKKyAgfQorfTsKKworU3dhZ2dlclNwZWNDb252ZXJ0ZXIucHJvdG90eXBlLmZpbmlzaCA9IGZ1bmN0aW9uIChjYWxsYmFjaywgb2JqKSB7CisgIGNhbGxiYWNrKG9iaik7Cit9OworCit9LHsiLi9odHRwIjo1LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiOjE0NH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgbG9nID0gcmVxdWlyZSgnLi4vaGVscGVycycpLmxvZzsKK3ZhciBfID0geworICBpc1BsYWluT2JqZWN0OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCcpLAorICBpc1N0cmluZzogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzU3RyaW5nJyksCit9OworCit2YXIgU2NoZW1hTWFya3VwID0gcmVxdWlyZSgnLi4vc2NoZW1hLW1hcmt1cC5qcycpOwordmFyIGpzeWFtbCA9IHJlcXVpcmUoJ2pzLXlhbWwnKTsKKwordmFyIE1vZGVsID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSwgZGVmaW5pdGlvbiwgbW9kZWxzLCBtb2RlbFByb3BlcnR5TWFjcm8pIHsKKyAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbiB8fCB7fTsKKyAgdGhpcy5pc0FycmF5ID0gZGVmaW5pdGlvbi50eXBlID09PSAnYXJyYXknOworICB0aGlzLm1vZGVscyA9IG1vZGVscyB8fCB7fTsKKyAgdGhpcy5uYW1lID0gbmFtZSB8fCBkZWZpbml0aW9uLnRpdGxlIHx8ICdJbmxpbmUgTW9kZWwnOworICB0aGlzLm1vZGVsUHJvcGVydHlNYWNybyA9IG1vZGVsUHJvcGVydHlNYWNybyB8fCBmdW5jdGlvbiAocHJvcGVydHkpIHsKKyAgICByZXR1cm4gcHJvcGVydHkuZGVmYXVsdDsKKyAgfTsKKworICByZXR1cm4gdGhpczsKK307CisKKy8vIE5vdGUhICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiAyLjIueCEKK01vZGVsLnByb3RvdHlwZS5jcmVhdGVKU09OU2FtcGxlID0gTW9kZWwucHJvdG90eXBlLmdldFNhbXBsZVZhbHVlID0gZnVuY3Rpb24gKG1vZGVsc1RvSWdub3JlKSB7CisgIG1vZGVsc1RvSWdub3JlID0gbW9kZWxzVG9JZ25vcmUgfHwge307CisKKyAgbW9kZWxzVG9JZ25vcmVbdGhpcy5uYW1lXSA9IHRoaXM7CisKKyAgLy8gUmVzcG9uc2Ugc3VwcG9ydAorICBpZiAodGhpcy5leGFtcGxlcyAmJiBfLmlzUGxhaW5PYmplY3QodGhpcy5leGFtcGxlcykgJiYgdGhpcy5leGFtcGxlc1snYXBwbGljYXRpb24vanNvbiddKSB7CisgICAgdGhpcy5kZWZpbml0aW9uLmV4YW1wbGUgPSB0aGlzLmV4YW1wbGVzWydhcHBsaWNhdGlvbi9qc29uJ107CisKKyAgICBpZiAoXy5pc1N0cmluZyh0aGlzLmRlZmluaXRpb24uZXhhbXBsZSkpIHsKKyAgICAgIHRoaXMuZGVmaW5pdGlvbi5leGFtcGxlID0ganN5YW1sLnNhZmVMb2FkKHRoaXMuZGVmaW5pdGlvbi5leGFtcGxlKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoIXRoaXMuZGVmaW5pdGlvbi5leGFtcGxlKSB7CisgICAgdGhpcy5kZWZpbml0aW9uLmV4YW1wbGUgPSB0aGlzLmV4YW1wbGVzOworICB9CisKKyAgcmV0dXJuIFNjaGVtYU1hcmt1cC5zY2hlbWFUb0pTT04odGhpcy5kZWZpbml0aW9uLCB0aGlzLm1vZGVscywgbW9kZWxzVG9JZ25vcmUsIHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvKTsKK307CisKK01vZGVsLnByb3RvdHlwZS5nZXRNb2NrU2lnbmF0dXJlID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gU2NoZW1hTWFya3VwLnNjaGVtYVRvSFRNTCh0aGlzLm5hbWUsIHRoaXMuZGVmaW5pdGlvbiwgdGhpcy5tb2RlbHMsIHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvKTsKK307CisKK30seyIuLi9oZWxwZXJzIjo0LCIuLi9zY2hlbWEtbWFya3VwLmpzIjo3LCJqcy15YW1sIjoxOSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QiOjE0NSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzU3RyaW5nIjoxNDZ9XSwxMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBfID0geworICBjbG9uZURlZXA6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9jbG9uZURlZXAnKSwKKyAgaXNVbmRlZmluZWQ6IHJlcXVpcmUoJ2xvZGFzaC1jb21wYXQvbGFuZy9pc1VuZGVmaW5lZCcpLAorICBpc0VtcHR5OiByZXF1aXJlKCdsb2Rhc2gtY29tcGF0L2xhbmcvaXNFbXB0eScpLAorICBpc09iamVjdDogcmVxdWlyZSgnbG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0JykKK307Cit2YXIgaGVscGVycyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMnKTsKK3ZhciBNb2RlbCA9IHJlcXVpcmUoJy4vbW9kZWwnKTsKK3ZhciBTd2FnZ2VySHR0cCA9IHJlcXVpcmUoJy4uL2h0dHAnKTsKK3ZhciBRID0gcmVxdWlyZSgncScpOworCit2YXIgT3BlcmF0aW9uID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFyZW50LCBzY2hlbWUsIG9wZXJhdGlvbklkLCBodHRwTWV0aG9kLCBwYXRoLCBhcmdzLCBkZWZpbml0aW9ucywgbW9kZWxzLCBjbGllbnRBdXRob3JpemF0aW9ucykgeworICB2YXIgZXJyb3JzID0gW107CisKKyAgcGFyZW50ID0gcGFyZW50IHx8IHt9OworICBhcmdzID0gYXJncyB8fCB7fTsKKworICBpZihwYXJlbnQgJiYgcGFyZW50Lm9wdGlvbnMpIHsKKyAgICB0aGlzLmNsaWVudCA9IHBhcmVudC5vcHRpb25zLmNsaWVudCB8fCBudWxsOworICAgIHRoaXMucmVxdWVzdEludGVyY2VwdG9yID0gcGFyZW50Lm9wdGlvbnMucmVxdWVzdEludGVyY2VwdG9yIHx8IG51bGw7CisgICAgdGhpcy5yZXNwb25zZUludGVyY2VwdG9yID0gcGFyZW50Lm9wdGlvbnMucmVzcG9uc2VJbnRlcmNlcHRvciB8fCBudWxsOworICAgIHRoaXMucmVxdWVzdEFnZW50ID0gcGFyZW50Lm9wdGlvbnMucmVxdWVzdEFnZW50OworICB9CisgIHRoaXMuYXV0aG9yaXphdGlvbnMgPSBhcmdzLnNlY3VyaXR5OworICB0aGlzLmJhc2VQYXRoID0gcGFyZW50LmJhc2VQYXRoIHx8ICcvJzsKKyAgdGhpcy5jbGllbnRBdXRob3JpemF0aW9ucyA9IGNsaWVudEF1dGhvcml6YXRpb25zOworICB0aGlzLmNvbnN1bWVzID0gYXJncy5jb25zdW1lcyB8fCBwYXJlbnQuY29uc3VtZXMgfHwgWydhcHBsaWNhdGlvbi9qc29uJ107CisgIHRoaXMucHJvZHVjZXMgPSBhcmdzLnByb2R1Y2VzIHx8IHBhcmVudC5wcm9kdWNlcyB8fCBbJ2FwcGxpY2F0aW9uL2pzb24nXTsKKyAgdGhpcy5kZXByZWNhdGVkID0gYXJncy5kZXByZWNhdGVkOworICB0aGlzLmRlc2NyaXB0aW9uID0gYXJncy5kZXNjcmlwdGlvbjsKKyAgdGhpcy5ob3N0ID0gcGFyZW50Lmhvc3Q7CisgIHRoaXMubWV0aG9kID0gKGh0dHBNZXRob2QgfHwgZXJyb3JzLnB1c2goJ09wZXJhdGlvbiAnICsgb3BlcmF0aW9uSWQgKyAnIGlzIG1pc3NpbmcgbWV0aG9kLicpKTsKKyAgdGhpcy5tb2RlbHMgPSBtb2RlbHMgfHwge307CisgIHRoaXMubmlja25hbWUgPSAob3BlcmF0aW9uSWQgfHwgZXJyb3JzLnB1c2goJ09wZXJhdGlvbnMgbXVzdCBoYXZlIGEgbmlja25hbWUuJykpOworICB0aGlzLm9wZXJhdGlvbiA9IGFyZ3M7CisgIHRoaXMub3BlcmF0aW9ucyA9IHt9OworICB0aGlzLnBhcmFtZXRlcnMgPSBhcmdzICE9PSBudWxsID8gKGFyZ3MucGFyYW1ldGVycyB8fCBbXSkgOiB7fTsKKyAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7CisgIHRoaXMucGF0aCA9IChwYXRoIHx8IGVycm9ycy5wdXNoKCdPcGVyYXRpb24gJyArIHRoaXMubmlja25hbWUgKyAnIGlzIG1pc3NpbmcgcGF0aC4nKSk7CisgIHRoaXMucmVzcG9uc2VzID0gKGFyZ3MucmVzcG9uc2VzIHx8IHt9KTsKKyAgdGhpcy5zY2hlbWUgPSBzY2hlbWUgfHwgcGFyZW50LnNjaGVtZSB8fCAnaHR0cCc7CisgIHRoaXMuc2NoZW1lcyA9IGFyZ3Muc2NoZW1lcyB8fCBwYXJlbnQuc2NoZW1lczsKKyAgdGhpcy5zZWN1cml0eSA9IGFyZ3Muc2VjdXJpdHkgfHwgcGFyZW50LnNlY3VyaXR5OworICB0aGlzLnN1bW1hcnkgPSBhcmdzLnN1bW1hcnkgfHwgJyc7CisgIHRoaXMudGltZW91dCA9IHBhcmVudC50aW1lb3V0OworICB0aGlzLnR5cGUgPSBudWxsOworICB0aGlzLnVzZUpRdWVyeSA9IHBhcmVudC51c2VKUXVlcnk7CisgIHRoaXMuanF1ZXJ5QWpheENhY2hlID0gcGFyZW50LmpxdWVyeUFqYXhDYWNoZTsKKyAgdGhpcy5lbmFibGVDb29raWVzID0gcGFyZW50LmVuYWJsZUNvb2tpZXM7CisKKyAgdmFyIGtleTsKKworICBpZighdGhpcy5ob3N0KSB7CisgICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIHRoaXMuaG9zdCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIHRoaXMuaG9zdCA9ICdsb2NhbGhvc3QnOworICAgIH0KKyAgfQorICB0aGlzLnBhcmFtZXRlck1hY3JvID0gcGFyZW50LnBhcmFtZXRlck1hY3JvIHx8IGZ1bmN0aW9uIChvcGVyYXRpb24sIHBhcmFtZXRlcikgeworICAgIHJldHVybiBwYXJhbWV0ZXIuZGVmYXVsdDsKKyAgfTsKKworICB0aGlzLmlubGluZU1vZGVscyA9IFtdOworCisgIGlmKHRoaXMuYmFzZVBhdGggIT09ICcvJyAmJiB0aGlzLmJhc2VQYXRoLnNsaWNlKC0xKSA9PT0gJy8nKSB7CisgICAgdGhpcy5iYXNlUGF0aCA9IHRoaXMuYmFzZVBhdGguc2xpY2UoMCwgLTEpOworICB9CisKKyAgaWYgKHR5cGVvZiB0aGlzLmRlcHJlY2F0ZWQgPT09ICdzdHJpbmcnKSB7CisgICAgc3dpdGNoKHRoaXMuZGVwcmVjYXRlZC50b0xvd2VyQ2FzZSgpKSB7CisgICAgICBjYXNlICd0cnVlJzogY2FzZSAneWVzJzogY2FzZSAnMSc6IHsKKyAgICAgICAgdGhpcy5kZXByZWNhdGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGNhc2UgJ2ZhbHNlJzogY2FzZSAnbm8nOiBjYXNlICcwJzogY2FzZSBudWxsOiB7CisgICAgICAgIHRoaXMuZGVwcmVjYXRlZCA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgZGVmYXVsdDogdGhpcy5kZXByZWNhdGVkID0gQm9vbGVhbih0aGlzLmRlcHJlY2F0ZWQpOworICAgIH0KKyAgfQorCisgIHZhciBpLCBtb2RlbDsKKworICBpZiAoZGVmaW5pdGlvbnMpIHsKKyAgICAvLyBhZGQgdG8gZ2xvYmFsIG1vZGVscworICAgIGZvciAoa2V5IGluIGRlZmluaXRpb25zKSB7CisgICAgICBtb2RlbCA9IG5ldyBNb2RlbChrZXksIGRlZmluaXRpb25zW2tleV0sIHRoaXMubW9kZWxzLCBwYXJlbnQubW9kZWxQcm9wZXJ0eU1hY3JvKTsKKworICAgICAgaWYgKG1vZGVsKSB7CisgICAgICAgIHRoaXMubW9kZWxzW2tleV0gPSBtb2RlbDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgZGVmaW5pdGlvbnMgPSB7fTsKKyAgfQorCisgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgZCwgcGFyYW0gPSB0aGlzLnBhcmFtZXRlcnNbaV07CisKKyAgICAvLyBBbGxvdyBtYWNybyB0byBzZXQgdGhlIGRlZmF1bHQgdmFsdWUKKyAgICBwYXJhbS5kZWZhdWx0ID0gdGhpcy5wYXJhbWV0ZXJNYWNybyh0aGlzLCBwYXJhbSk7CisKKyAgICBpZiAocGFyYW0udHlwZSA9PT0gJ2FycmF5JykgeworICAgICAgcGFyYW0uaXNMaXN0ID0gdHJ1ZTsKKyAgICAgIHBhcmFtLmFsbG93TXVsdGlwbGUgPSB0cnVlOworICAgIH0KKworICAgIHZhciBpbm5lclR5cGUgPSB0aGlzLmdldFR5cGUocGFyYW0pOworCisgICAgaWYgKGlubmVyVHlwZSAmJiBpbm5lclR5cGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnYm9vbGVhbicpIHsKKyAgICAgIHBhcmFtLmFsbG93YWJsZVZhbHVlcyA9IHt9OworICAgICAgcGFyYW0uaXNMaXN0ID0gdHJ1ZTsKKyAgICAgIHBhcmFtWydlbnVtJ10gPSBbdHJ1ZSwgZmFsc2VdOyAvLyB1c2UgYWN0dWFsIHByaW1pdGl2ZXMKKyAgICB9CisKKyAgICBmb3Ioa2V5IGluIHBhcmFtKSB7CisgICAgICBoZWxwZXJzLmV4dHJhY3RFeHRlbnNpb25zKGtleSwgcGFyYW0pOworICAgIH0KKyAgICBpZih0eXBlb2YgcGFyYW1bJ3gtZXhhbXBsZSddICE9PSAndW5kZWZpbmVkJykgeworICAgICAgZCA9IHBhcmFtWyd4LWV4YW1wbGUnXTsKKyAgICAgIHBhcmFtLmRlZmF1bHQgPSBkOworICAgIH0KKyAgICBpZihwYXJhbVsneC1leGFtcGxlcyddKSB7CisgICAgICBkID0gcGFyYW1bJ3gtZXhhbXBsZXMnXS5kZWZhdWx0OworICAgICAgaWYodHlwZW9mIGQgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIHBhcmFtLmRlZmF1bHQgPSBkOworICAgICAgfQorICAgIH0KKworICAgIHZhciBlbnVtVmFsdWVzID0gcGFyYW1bJ2VudW0nXSB8fCAocGFyYW0uaXRlbXMgJiYgcGFyYW0uaXRlbXNbJ2VudW0nXSk7CisKKyAgICBpZiAodHlwZW9mIGVudW1WYWx1ZXMgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICB2YXIgaWQ7CisKKyAgICAgIHBhcmFtLmFsbG93YWJsZVZhbHVlcyA9IHt9OworICAgICAgcGFyYW0uYWxsb3dhYmxlVmFsdWVzLnZhbHVlcyA9IFtdOworICAgICAgcGFyYW0uYWxsb3dhYmxlVmFsdWVzLmRlc2NyaXB0aXZlVmFsdWVzID0gW107CisKKyAgICAgIGZvciAoaWQgPSAwOyBpZCA8IGVudW1WYWx1ZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGVudW1WYWx1ZXNbaWRdOworICAgICAgICB2YXIgaXNEZWZhdWx0ID0gKHZhbHVlID09PSBwYXJhbS5kZWZhdWx0IHx8IHZhbHVlKycnID09PSBwYXJhbS5kZWZhdWx0KTsKKworICAgICAgICBwYXJhbS5hbGxvd2FibGVWYWx1ZXMudmFsdWVzLnB1c2godmFsdWUpOworICAgICAgICAvLyBBbHdheXMgaGF2ZSBzdHJpbmcgZm9yIGRlc2NyaXB0aXZlIHZhbHVlcy4uLi4KKyAgICAgICAgcGFyYW0uYWxsb3dhYmxlVmFsdWVzLmRlc2NyaXB0aXZlVmFsdWVzLnB1c2goe3ZhbHVlIDogdmFsdWUrJycsIGlzRGVmYXVsdDogaXNEZWZhdWx0fSk7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKHBhcmFtLnR5cGUgPT09ICdhcnJheScpIHsKKyAgICAgIGlubmVyVHlwZSA9IFtpbm5lclR5cGVdOworCisgICAgICBpZiAodHlwZW9mIHBhcmFtLmFsbG93YWJsZVZhbHVlcyA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgLy8gY2FuJ3Qgc2hvdyBhcyBhIGxpc3QgaWYgbm8gdmFsdWVzIHRvIHNlbGVjdCBmcm9tCisgICAgICAgIGRlbGV0ZSBwYXJhbS5pc0xpc3Q7CisgICAgICAgIGRlbGV0ZSBwYXJhbS5hbGxvd011bHRpcGxlOworICAgICAgfQorICAgIH0KKworICAgIHBhcmFtLm1vZGVsU2lnbmF0dXJlID0ge3R5cGU6IGlubmVyVHlwZSwgZGVmaW5pdGlvbnM6IHRoaXMubW9kZWxzfTsKKyAgICBwYXJhbS5zaWduYXR1cmUgPSB0aGlzLmdldE1vZGVsU2lnbmF0dXJlKGlubmVyVHlwZSwgdGhpcy5tb2RlbHMpLnRvU3RyaW5nKCk7CisgICAgcGFyYW0uc2FtcGxlSlNPTiA9IHRoaXMuZ2V0TW9kZWxTYW1wbGVKU09OKGlubmVyVHlwZSwgdGhpcy5tb2RlbHMpOworICAgIHBhcmFtLnJlc3BvbnNlQ2xhc3NTaWduYXR1cmUgPSBwYXJhbS5zaWduYXR1cmU7CisgIH0KKworICB2YXIga2V5bmFtZSwgZGVmYXVsdFJlc3BvbnNlQ29kZSwgcmVzcG9uc2UsIHJlc3BvbnNlcyA9IHRoaXMucmVzcG9uc2VzOworCisgIGlmIChyZXNwb25zZXNbJzIwMCddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwMCddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjAwJzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwMSddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwMSddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjAxJzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwMiddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwMiddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjAyJzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwMyddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwMyddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjAzJzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwNCddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwNCddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjA0JzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwNSddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwNSddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjA1JzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJzIwNiddKSB7CisgICAgcmVzcG9uc2UgPSByZXNwb25zZXNbJzIwNiddOworICAgIGRlZmF1bHRSZXNwb25zZUNvZGUgPSAnMjA2JzsKKyAgfSBlbHNlIGlmIChyZXNwb25zZXNbJ2RlZmF1bHQnXSkgeworICAgIHJlc3BvbnNlID0gcmVzcG9uc2VzWydkZWZhdWx0J107CisgICAgZGVmYXVsdFJlc3BvbnNlQ29kZSA9ICdkZWZhdWx0JzsKKyAgfQorCisgIGZvcihrZXluYW1lIGluIHJlc3BvbnNlcykgeworICAgIGhlbHBlcnMuZXh0cmFjdEV4dGVuc2lvbnMoa2V5bmFtZSwgcmVzcG9uc2VzKTsKKyAgICBpZih0eXBlb2Yga2V5bmFtZSA9PT0gJ3N0cmluZycgJiYga2V5bmFtZS5pbmRleE9mKCd4LScpID09PSAtMSkgeworICAgICAgdmFyIHJlc3BvbnNlT2JqZWN0ID0gcmVzcG9uc2VzW2tleW5hbWVdOworICAgICAgaWYodHlwZW9mIHJlc3BvbnNlT2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcmVzcG9uc2VPYmplY3QuaGVhZGVycyA9PT0gJ29iamVjdCcpIHsKKyAgICAgICAgdmFyIGhlYWRlcnMgPSByZXNwb25zZU9iamVjdC5oZWFkZXJzOworICAgICAgICBmb3IodmFyIGhlYWRlck5hbWUgaW4gaGVhZGVycykgeworICAgICAgICAgIHZhciBoZWFkZXIgPSBoZWFkZXJzW2hlYWRlck5hbWVdOworICAgICAgICAgIGlmKHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgICBmb3IodmFyIGhlYWRlcktleSBpbiBoZWFkZXIpIHsKKyAgICAgICAgICAgICAgaGVscGVycy5leHRyYWN0RXh0ZW5zaW9ucyhoZWFkZXJLZXksIGhlYWRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYgKHJlc3BvbnNlKSB7CisgICAgZm9yKGtleW5hbWUgaW4gcmVzcG9uc2UpIHsKKyAgICAgIGhlbHBlcnMuZXh0cmFjdEV4dGVuc2lvbnMoa2V5bmFtZSwgcmVzcG9uc2UpOworICAgIH0KKyAgfQorCisgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5zY2hlbWEpIHsKKyAgICB2YXIgcmVzb2x2ZWRNb2RlbCA9IHRoaXMucmVzb2x2ZU1vZGVsKHJlc3BvbnNlLnNjaGVtYSwgZGVmaW5pdGlvbnMpOworICAgIHZhciBzdWNjZXNzUmVzcG9uc2U7CisKKyAgICBkZWxldGUgcmVzcG9uc2VzW2RlZmF1bHRSZXNwb25zZUNvZGVdOworCisgICAgaWYgKHJlc29sdmVkTW9kZWwpIHsKKyAgICAgIHRoaXMuc3VjY2Vzc1Jlc3BvbnNlID0ge307CisgICAgICBzdWNjZXNzUmVzcG9uc2UgPSB0aGlzLnN1Y2Nlc3NSZXNwb25zZVtkZWZhdWx0UmVzcG9uc2VDb2RlXSA9IHJlc29sdmVkTW9kZWw7CisgICAgfSBlbHNlIGlmICghcmVzcG9uc2Uuc2NoZW1hLnR5cGUgfHwgcmVzcG9uc2Uuc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnIHx8IHJlc3BvbnNlLnNjaGVtYS50eXBlID09PSAnYXJyYXknKSB7CisgICAgICAvLyBJbmxpbmUgbW9kZWwKKyAgICAgIHRoaXMuc3VjY2Vzc1Jlc3BvbnNlID0ge307CisgICAgICBzdWNjZXNzUmVzcG9uc2UgPSB0aGlzLnN1Y2Nlc3NSZXNwb25zZVtkZWZhdWx0UmVzcG9uc2VDb2RlXSA9IG5ldyBNb2RlbCh1bmRlZmluZWQsIHJlc3BvbnNlLnNjaGVtYSB8fCB7fSwgdGhpcy5tb2RlbHMsIHBhcmVudC5tb2RlbFByb3BlcnR5TWFjcm8pOworICAgIH0gZWxzZSB7CisgICAgICAvLyBQcmltaXRpdmUKKyAgICAgIHRoaXMuc3VjY2Vzc1Jlc3BvbnNlID0ge307CisgICAgICBzdWNjZXNzUmVzcG9uc2UgPSB0aGlzLnN1Y2Nlc3NSZXNwb25zZVtkZWZhdWx0UmVzcG9uc2VDb2RlXSA9IHJlc3BvbnNlLnNjaGVtYTsKKyAgICB9CisKKyAgICBpZiAoc3VjY2Vzc1Jlc3BvbnNlKSB7CisgICAgICBzdWNjZXNzUmVzcG9uc2UudmVuZG9yRXh0ZW5zaW9ucyA9IHJlc3BvbnNlLnZlbmRvckV4dGVuc2lvbnM7CisgICAgICAvLyBBdHRhY2ggcmVzcG9uc2UgcHJvcGVydGllcworICAgICAgaWYgKHJlc3BvbnNlLmRlc2NyaXB0aW9uKSB7CisgICAgICAgIHN1Y2Nlc3NSZXNwb25zZS5kZXNjcmlwdGlvbiA9IHJlc3BvbnNlLmRlc2NyaXB0aW9uOworICAgICAgfQorCisgICAgICBpZiAocmVzcG9uc2UuZXhhbXBsZXMpIHsKKyAgICAgICAgc3VjY2Vzc1Jlc3BvbnNlLmV4YW1wbGVzID0gcmVzcG9uc2UuZXhhbXBsZXM7CisgICAgICB9CisKKyAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzKSB7CisgICAgICAgIHN1Y2Nlc3NSZXNwb25zZS5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0aGlzLnR5cGUgPSByZXNwb25zZTsKKyAgfQorCisgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkgeworICAgIGlmICh0aGlzLnJlc291cmNlICYmIHRoaXMucmVzb3VyY2UuYXBpICYmIHRoaXMucmVzb3VyY2UuYXBpLmZhaWwpIHsKKyAgICAgIHRoaXMucmVzb3VyY2UuYXBpLmZhaWwoZXJyb3JzKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdGhpczsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUuaXNEZWZhdWx0QXJyYXlJdGVtVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSwgcGFyYW0pIHsKKyAgaWYgKHBhcmFtLmRlZmF1bHQgJiYgQXJyYXkuaXNBcnJheShwYXJhbS5kZWZhdWx0KSkgeworICAgIHJldHVybiBwYXJhbS5kZWZhdWx0LmluZGV4T2YodmFsdWUpICE9PSAtMTsKKyAgfQorICByZXR1cm4gdmFsdWUgPT09IHBhcmFtLmRlZmF1bHQ7Cit9OworCitPcGVyYXRpb24ucHJvdG90eXBlLmdldFR5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKKyAgdmFyIHR5cGUgPSBwYXJhbS50eXBlOworICB2YXIgZm9ybWF0ID0gcGFyYW0uZm9ybWF0OworICB2YXIgaXNBcnJheSA9IGZhbHNlOworICB2YXIgc3RyOworCisgIGlmICh0eXBlID09PSAnaW50ZWdlcicgJiYgZm9ybWF0ID09PSAnaW50MzInKSB7CisgICAgc3RyID0gJ2ludGVnZXInOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJyAmJiBmb3JtYXQgPT09ICdpbnQ2NCcpIHsKKyAgICBzdHIgPSAnbG9uZyc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ludGVnZXInKSB7CisgICAgc3RyID0gJ2ludGVnZXInOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7CisgICAgaWYgKGZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHsKKyAgICAgIHN0ciA9ICdkYXRlLXRpbWUnOworICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnZGF0ZScpIHsKKyAgICAgIHN0ciA9ICdkYXRlJzsKKyAgICB9IGVsc2UgeworICAgICAgc3RyID0gJ3N0cmluZyc7CisgICAgfQorICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGZvcm1hdCA9PT0gJ2Zsb2F0JykgeworICAgIHN0ciA9ICdmbG9hdCc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgZm9ybWF0ID09PSAnZG91YmxlJykgeworICAgIHN0ciA9ICdkb3VibGUnOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7CisgICAgc3RyID0gJ2RvdWJsZSc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSB7CisgICAgc3RyID0gJ2Jvb2xlYW4nOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHsKKyAgICBpc0FycmF5ID0gdHJ1ZTsKKworICAgIGlmIChwYXJhbS5pdGVtcykgeworICAgICAgc3RyID0gdGhpcy5nZXRUeXBlKHBhcmFtLml0ZW1zKTsKKyAgICB9CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ZpbGUnKSB7CisgICAgc3RyID0gJ2ZpbGUnOworICB9CisKKyAgaWYgKHBhcmFtLiRyZWYpIHsKKyAgICBzdHIgPSBoZWxwZXJzLnNpbXBsZVJlZihwYXJhbS4kcmVmKTsKKyAgfQorCisgIHZhciBzY2hlbWEgPSBwYXJhbS5zY2hlbWE7CisKKyAgaWYgKHNjaGVtYSkgeworICAgIHZhciByZWYgPSBzY2hlbWEuJHJlZjsKKworICAgIGlmIChyZWYpIHsKKyAgICAgIHJlZiA9IGhlbHBlcnMuc2ltcGxlUmVmKHJlZik7CisKKyAgICAgIGlmIChpc0FycmF5KSB7CisgICAgICAgIHJldHVybiBbIHJlZiBdOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHJlZjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8gSWYgaW5saW5lIHNjaGVtYSwgd2UgYWRkIGl0IG91ciBpbnRlcmFsIGhhc2ggLT4gd2hpY2ggZ2l2ZXMgdXMgaXQncyBJRCAoaW50KQorICAgICAgaWYoc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICAgIHJldHVybiB0aGlzLmFkZElubGluZU1vZGVsKHNjaGVtYSk7CisgICAgICB9CisgICAgICByZXR1cm4gdGhpcy5nZXRUeXBlKHNjaGVtYSk7CisgICAgfQorICB9CisgIGlmIChpc0FycmF5KSB7CisgICAgcmV0dXJuIFsgc3RyIF07CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIHN0cjsKKyAgfQorfTsKKworLyoqCisgKiBhZGRzIGFuIGlubGluZSBzY2hlbWEgKG1vZGVsKSB0byBhIGhhc2gsIHdoZXJlIHdlIGNhbiByZWYgaXQgbGF0ZXIKKyAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWEgYSBzY2hlbWEKKyAqIEByZXR1cm4ge251bWJlcn0gdGhlIElEIG9mIHRoZSBzY2hlbWEgYmVpbmcgYWRkZWQsIG9yIG51bGwKKyAqKi8KK09wZXJhdGlvbi5wcm90b3R5cGUuYWRkSW5saW5lTW9kZWwgPSBmdW5jdGlvbiAoc2NoZW1hKSB7CisgIHZhciBsZW4gPSB0aGlzLmlubGluZU1vZGVscy5sZW5ndGg7CisgIHZhciBtb2RlbCA9IHRoaXMucmVzb2x2ZU1vZGVsKHNjaGVtYSwge30pOworICBpZihtb2RlbCkgeworICAgIHRoaXMuaW5saW5lTW9kZWxzLnB1c2gobW9kZWwpOworICAgIHJldHVybiAnSW5saW5lIE1vZGVsICcrbGVuOyAvLyByZXR1cm4gc3RyaW5nIHJlZiBvZiB0aGUgaW5saW5lIG1vZGVsICh1c2VkIHdpdGggI2dldElubGluZU1vZGVsKQorICB9CisgIHJldHVybiBudWxsOyAvLyByZXBvcnQgZXJyb3JzPworfTsKKworLyoqCisgKiBnZXRzIHRoZSBpbnRlcm5hbCByZWYgdG8gYW4gaW5saW5lIG1vZGVsCisgKiBAcGFyYW0ge3N0cmluZ30gaW5saW5lX3N0ciBhIHN0cmluZyByZWZlcmVuY2UgdG8gYW4gaW5saW5lIG1vZGVsCisgKiBAcmV0dXJuIHtNb2RlbH0gdGhlIG1vZGVsIGJlaW5nIHJlZmVyZW5jZWQuIE9yIG51bGwKKyAqKi8KK09wZXJhdGlvbi5wcm90b3R5cGUuZ2V0SW5saW5lTW9kZWwgPSBmdW5jdGlvbihpbmxpbmVTdHIpIHsKKyAgaWYoL15JbmxpbmUgTW9kZWwgXGQrJC8udGVzdChpbmxpbmVTdHIpKSB7CisgICAgdmFyIGlkID0gcGFyc2VJbnQoaW5saW5lU3RyLnN1YnN0cignSW5saW5lIE1vZGVsJy5sZW5ndGgpLnRyaW0oKSwxMCk7IC8vCisgICAgdmFyIG1vZGVsID0gdGhpcy5pbmxpbmVNb2RlbHNbaWRdOworICAgIHJldHVybiBtb2RlbDsKKyAgfQorICAvLyBJJ20gcmV0dXJuaW5nIG51bGwgaGVyZSwgc2hvdWxkIEkgcmF0aGVyIHRocm93IGFuIGVycm9yPworICByZXR1cm4gbnVsbDsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUucmVzb2x2ZU1vZGVsID0gZnVuY3Rpb24gKHNjaGVtYSwgZGVmaW5pdGlvbnMpIHsKKyAgaWYgKHR5cGVvZiBzY2hlbWEuJHJlZiAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICB2YXIgcmVmID0gc2NoZW1hLiRyZWY7CisKKyAgICBpZiAocmVmLmluZGV4T2YoJyMvZGVmaW5pdGlvbnMvJykgPT09IDApIHsKKyAgICAgIHJlZiA9IHJlZi5zdWJzdHJpbmcoJyMvZGVmaW5pdGlvbnMvJy5sZW5ndGgpOworICAgIH0KKworICAgIGlmIChkZWZpbml0aW9uc1tyZWZdKSB7CisgICAgICByZXR1cm4gbmV3IE1vZGVsKHJlZiwgZGVmaW5pdGlvbnNbcmVmXSwgdGhpcy5tb2RlbHMsIHRoaXMucGFyZW50Lm1vZGVsUHJvcGVydHlNYWNybyk7CisgICAgfQorICAvLyBzY2hlbWEgbXVzdCBhdCBsZWFzdCBiZSBhbiBvYmplY3QgdG8gZ2V0IHJlc29sdmVkIHRvIGFuIGlubGluZSBNb2RlbAorICB9IGVsc2UgaWYgKHNjaGVtYSAmJiB0eXBlb2Ygc2NoZW1hID09PSAnb2JqZWN0JyAmJgorICAgICAgICAgICAgKHNjaGVtYS50eXBlID09PSAnb2JqZWN0JyB8fCBfLmlzVW5kZWZpbmVkKHNjaGVtYS50eXBlKSkpIHsKKyAgICByZXR1cm4gbmV3IE1vZGVsKHVuZGVmaW5lZCwgc2NoZW1hLCB0aGlzLm1vZGVscywgdGhpcy5wYXJlbnQubW9kZWxQcm9wZXJ0eU1hY3JvKTsKKyAgfQorCisgIHJldHVybiBudWxsOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5oZWxwID0gZnVuY3Rpb24gKGRvbnRQcmludCkgeworICB2YXIgb3V0ID0gdGhpcy5uaWNrbmFtZSArICc6ICcgKyB0aGlzLnN1bW1hcnkgKyAnXG4nOworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzW2ldOworICAgIHZhciB0eXBlSW5mbyA9IHBhcmFtLnNpZ25hdHVyZTsKKworICAgIG91dCArPSAnXG4gICogJyArIHBhcmFtLm5hbWUgKyAnICgnICsgdHlwZUluZm8gKyAnKTogJyArIHBhcmFtLmRlc2NyaXB0aW9uOworICB9CisKKyAgaWYgKHR5cGVvZiBkb250UHJpbnQgPT09ICd1bmRlZmluZWQnKSB7CisgICAgaGVscGVycy5sb2cob3V0KTsKKyAgfQorCisgIHJldHVybiBvdXQ7Cit9OworCitPcGVyYXRpb24ucHJvdG90eXBlLmdldE1vZGVsU2lnbmF0dXJlID0gZnVuY3Rpb24gKHR5cGUsIGRlZmluaXRpb25zKSB7CisgIHZhciBpc1ByaW1pdGl2ZSwgbGlzdFR5cGU7CisKKyAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgIGxpc3RUeXBlID0gdHJ1ZTsKKyAgICB0eXBlID0gdHlwZVswXTsKKyAgfQorCisgIC8vIENvbnZlcnQgdW5kZWZpbmVkIHRvIHN0cmluZyBvZiAndW5kZWZpbmVkJworICBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7CisgICAgdHlwZSA9ICd1bmRlZmluZWQnOworICAgIGlzUHJpbWl0aXZlID0gdHJ1ZTsKKworICB9IGVsc2UgaWYgKGRlZmluaXRpb25zW3R5cGVdKXsKKyAgICAvLyBhIG1vZGVsIGRlZiBleGlzdHM/CisgICAgdHlwZSA9IGRlZmluaXRpb25zW3R5cGVdOyAvKiBNb2RlbCAqLworICAgIGlzUHJpbWl0aXZlID0gZmFsc2U7CisKKyAgfSBlbHNlIGlmICh0aGlzLmdldElubGluZU1vZGVsKHR5cGUpKSB7CisgICAgdHlwZSA9IHRoaXMuZ2V0SW5saW5lTW9kZWwodHlwZSk7IC8qIE1vZGVsICovCisgICAgaXNQcmltaXRpdmUgPSBmYWxzZTsKKworICB9IGVsc2UgeworICAgIC8vIFdlIGRlZmF1bHQgdG8gcHJpbWl0aXZlCisgICAgaXNQcmltaXRpdmUgPSB0cnVlOworICB9CisKKyAgaWYgKGlzUHJpbWl0aXZlKSB7CisgICAgaWYgKGxpc3RUeXBlKSB7CisgICAgICByZXR1cm4gJ0FycmF5WycgKyB0eXBlICsgJ10nOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdHlwZS50b1N0cmluZygpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAobGlzdFR5cGUpIHsKKyAgICAgIHJldHVybiAnQXJyYXlbJyArIHR5cGUuZ2V0TW9ja1NpZ25hdHVyZSgpICsgJ10nOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gdHlwZS5nZXRNb2NrU2lnbmF0dXJlKCk7CisgICAgfQorICB9Cit9OworCitPcGVyYXRpb24ucHJvdG90eXBlLnN1cHBvcnRIZWFkZXJQYXJhbXMgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0cnVlOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5wYXJlbnQuc3VwcG9ydGVkU3VibWl0TWV0aG9kczsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUuZ2V0SGVhZGVyUGFyYW1zID0gZnVuY3Rpb24gKGFyZ3MpIHsKKyAgdmFyIGhlYWRlcnMgPSB0aGlzLnNldENvbnRlbnRUeXBlcyhhcmdzLCB7fSk7CisgIHZhciBoZWFkZXJQYXJhbXNCeUxvd2VyQ2FzZSA9IHt9OworCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzW2ldOworCisgICAgaWYgKHBhcmFtLmluID09PSAnaGVhZGVyJykgeworICAgICAgaGVhZGVyUGFyYW1zQnlMb3dlckNhc2VbcGFyYW0ubmFtZS50b0xvd2VyQ2FzZSgpXSA9IHBhcmFtOworICAgIH0KKyAgfQorCisgIGZvciAodmFyIGFyZyBpbiBhcmdzKSB7CisgICAgdmFyIGhlYWRlclBhcmFtID0gaGVhZGVyUGFyYW1zQnlMb3dlckNhc2VbYXJnLnRvTG93ZXJDYXNlKCldOworICAgIGlmICh0eXBlb2YgaGVhZGVyUGFyYW0gIT09ICd1bmRlZmluZWQnKSB7CisgICAgICB2YXIgdmFsdWUgPSBhcmdzW2FyZ107CisKKyAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7CisgICAgICB9CisKKyAgICAgIGhlYWRlcnNbaGVhZGVyUGFyYW0ubmFtZV0gPSB2YWx1ZTsKKyAgICB9CisgIH0KKworICByZXR1cm4gaGVhZGVyczsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUudXJsaWZ5ID0gZnVuY3Rpb24gKGFyZ3MsIG1hc2tQYXNzd29yZHMpIHsKKyAgdmFyIGZvcm1QYXJhbXMgPSB7fTsKKyAgdmFyIHJlcXVlc3RVcmwgPSB0aGlzLnBhdGgucmVwbGFjZSgvIy4qLywgJycpOyAvLyByZW1vdmUgVVJMIGZyYWdtZW50CisgIHZhciBxdWVyeXN0cmluZyA9ICcnOyAvLyBncmFiIHBhcmFtcyBmcm9tIHRoZSBhcmdzLCBidWlsZCB0aGUgcXVlcnlzdHJpbmcgYWxvbmcgdGhlIHdheQorCisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzW2ldOworCisgICAgaWYgKHR5cGVvZiBhcmdzW3BhcmFtLm5hbWVdICE9PSAndW5kZWZpbmVkJykgeworICAgICAgdmFyIGlzUGFzc3dvcmQ7CisgICAgICBpZihwYXJhbS50eXBlID09PSAnc3RyaW5nJyAmJiBwYXJhbS5mb3JtYXQgPT09ICdwYXNzd29yZCcgJiYgbWFza1Bhc3N3b3JkcykgeworICAgICAgICBpc1Bhc3N3b3JkID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgaWYgKHBhcmFtLmluID09PSAncGF0aCcpIHsKKyAgICAgICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoJ1x7JyArIHBhcmFtLm5hbWUgKyAnXH0nLCAnZ2knKTsKKyAgICAgICAgdmFyIHZhbHVlID0gYXJnc1twYXJhbS5uYW1lXTsKKworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgICB2YWx1ZSA9IHRoaXMuZW5jb2RlUGF0aENvbGxlY3Rpb24ocGFyYW0uY29sbGVjdGlvbkZvcm1hdCwgcGFyYW0ubmFtZSwgdmFsdWUsIGlzUGFzc3dvcmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmKCh0eXBlb2YocGFyYW1bJ3gtZXNjYXBlJ10pID09PSAndW5kZWZpbmVkJykgfHwgKHBhcmFtWyd4LWVzY2FwZSddID09PSB0cnVlKSkgeworICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmVuY29kZVBhdGhQYXJhbSh2YWx1ZSwgaXNQYXNzd29yZCk7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVxdWVzdFVybCA9IHJlcXVlc3RVcmwucmVwbGFjZShyZWcsIHZhbHVlKTsKKyAgICAgIH0gZWxzZSBpZiAocGFyYW0uaW4gPT09ICdxdWVyeScgJiYgdHlwZW9mIGFyZ3NbcGFyYW0ubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIGlmIChxdWVyeXN0cmluZyA9PT0gJycgJiYgcmVxdWVzdFVybC5pbmRleE9mKCc/JykgPCAwKSB7CisgICAgICAgICAgcXVlcnlzdHJpbmcgKz0gJz8nOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHF1ZXJ5c3RyaW5nICs9ICcmJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2YgcGFyYW0uY29sbGVjdGlvbkZvcm1hdCAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICB2YXIgcXAgPSBhcmdzW3BhcmFtLm5hbWVdOworCisgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocXApKSB7CisgICAgICAgICAgICBxdWVyeXN0cmluZyArPSB0aGlzLmVuY29kZVF1ZXJ5Q29sbGVjdGlvbihwYXJhbS5jb2xsZWN0aW9uRm9ybWF0LCBwYXJhbS5uYW1lLCBxcCwgaXNQYXNzd29yZCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHF1ZXJ5c3RyaW5nICs9IHRoaXMuZW5jb2RlUXVlcnlLZXkocGFyYW0ubmFtZSkgKyAnPScgKyB0aGlzLmVuY29kZVF1ZXJ5UGFyYW0oYXJnc1twYXJhbS5uYW1lXSwgaXNQYXNzd29yZCk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHF1ZXJ5c3RyaW5nICs9IHRoaXMuZW5jb2RlUXVlcnlLZXkocGFyYW0ubmFtZSkgKyAnPScgKyB0aGlzLmVuY29kZVF1ZXJ5UGFyYW0oYXJnc1twYXJhbS5uYW1lXSwgaXNQYXNzd29yZCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAocGFyYW0uaW4gPT09ICdmb3JtRGF0YScpIHsKKyAgICAgICAgZm9ybVBhcmFtc1twYXJhbS5uYW1lXSA9IGFyZ3NbcGFyYW0ubmFtZV07CisgICAgICB9CisgICAgfSBlbHNlIGlmKHBhcmFtLmluID09PSAncXVlcnknICYmIHR5cGVvZiBhcmdzW3BhcmFtLm5hbWVdID09PSAndW5kZWZpbmVkJyAmJiBwYXJhbS5hbGxvd0VtcHR5VmFsdWUgPT09IHRydWUpIHsKKyAgICAgIGlmIChxdWVyeXN0cmluZyA9PT0gJycgJiYgcmVxdWVzdFVybC5pbmRleE9mKCc/JykgPCAwKSB7CisgICAgICAgIHF1ZXJ5c3RyaW5nICs9ICc/JzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHF1ZXJ5c3RyaW5nICs9ICcmJzsKKyAgICAgIH0KKworICAgICAgaWYgKHR5cGVvZiBwYXJhbS5jb2xsZWN0aW9uRm9ybWF0ICE9PSAndW5kZWZpbmVkJyB8fCBwYXJhbS50eXBlID09PSAnYXJyYXknKSB7CisgICAgICAgIHZhciBxcDsKKyAgICAgICAgdmFyIGNvbGxlY3Rpb25Gb3JtYXQgPSBwYXJhbS5jb2xsZWN0aW9uRm9ybWF0IHx8ICdtdWx0aSc7CisKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocXApKSB7CisgICAgICAgICAgcXVlcnlzdHJpbmcgKz0gdGhpcy5lbmNvZGVRdWVyeUNvbGxlY3Rpb24oY29sbGVjdGlvbkZvcm1hdCwgcGFyYW0ubmFtZSwgcXAsIGlzUGFzc3dvcmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHF1ZXJ5c3RyaW5nICs9IHRoaXMuZW5jb2RlUXVlcnlDb2xsZWN0aW9uKGNvbGxlY3Rpb25Gb3JtYXQsIHBhcmFtLm5hbWUsIFtxcF0sIGlzUGFzc3dvcmQpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBxdWVyeXN0cmluZyArPSB0aGlzLmVuY29kZVF1ZXJ5S2V5KHBhcmFtLm5hbWUpICsgJz0nICsgdGhpcy5lbmNvZGVRdWVyeVBhcmFtKCcnLCBpc1Bhc3N3b3JkKTsKKyAgICAgIH0KKworICAgIH0KKyAgfQorICB2YXIgdXJsID0gdGhpcy5zY2hlbWUgKyAnOi8vJyArIHRoaXMuaG9zdDsKKworICBpZiAodGhpcy5iYXNlUGF0aCAhPT0gJy8nKSB7CisgICAgdXJsICs9IHRoaXMuYmFzZVBhdGg7CisgIH0KKyAgcmV0dXJuIHVybCArIHJlcXVlc3RVcmwgKyBxdWVyeXN0cmluZzsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUuZ2V0TWlzc2luZ1BhcmFtcyA9IGZ1bmN0aW9uIChhcmdzKSB7CisgIHZhciBtaXNzaW5nUGFyYW1zID0gW107IC8vIGNoZWNrIHJlcXVpcmVkIHBhcmFtcywgdHJhY2sgdGhlIG9uZXMgdGhhdCBhcmUgbWlzc2luZworICB2YXIgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHBhcmFtID0gdGhpcy5wYXJhbWV0ZXJzW2ldOworCisgICAgaWYgKHBhcmFtLnJlcXVpcmVkID09PSB0cnVlKSB7CisgICAgICBpZiAodHlwZW9mIGFyZ3NbcGFyYW0ubmFtZV0gPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIG1pc3NpbmdQYXJhbXMgPSBwYXJhbS5uYW1lOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBtaXNzaW5nUGFyYW1zOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRCb2R5ID0gZnVuY3Rpb24gKGhlYWRlcnMsIGFyZ3MsIG9wdHMpIHsKKyAgdmFyIGZvcm1QYXJhbXMgPSB7fSwgaGFzRm9ybVBhcmFtcywgcGFyYW0sIGJvZHksIGtleSwgdmFsdWUsIGhhc0JvZHkgPSBmYWxzZTsKKworICAvLyBsb29rIGF0IGVhY2ggcGFyYW0gYW5kIHB1dCBmb3JtIHBhcmFtcyBpbiBhbiBvYmplY3QKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHsKKyAgICBwYXJhbSA9IHRoaXMucGFyYW1ldGVyc1tpXTsKKyAgICBpZiAodHlwZW9mIGFyZ3NbcGFyYW0ubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7CisgICAgICB2YXIgaXNQYXNzd29yZDsKKyAgICAgIGlmKHBhcmFtLnR5cGUgPT09ICdzdHJpbmcnICYmIHBhcmFtLmZvcm1hdCA9PT0gJ3Bhc3N3b3JkJykgeworICAgICAgICBpc1Bhc3N3b3JkID0gJ3Bhc3N3b3JkJzsKKyAgICAgIH0KKyAgICAgIGlmIChwYXJhbS5pbiA9PT0gJ2JvZHknKSB7CisgICAgICAgIGJvZHkgPSBhcmdzW3BhcmFtLm5hbWVdOworICAgICAgfSBlbHNlIGlmIChwYXJhbS5pbiA9PT0gJ2Zvcm1EYXRhJykgeworICAgICAgICBmb3JtUGFyYW1zW3BhcmFtLm5hbWVdID0geworICAgICAgICAgIHBhcmFtOiBwYXJhbSwKKyAgICAgICAgICB2YWx1ZTogYXJnc1twYXJhbS5uYW1lXSwKKyAgICAgICAgICBwYXNzd29yZDogaXNQYXNzd29yZAorICAgICAgICB9OworICAgICAgICBoYXNGb3JtUGFyYW1zID0gdHJ1ZTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZihwYXJhbS5pbiA9PT0gJ2JvZHknKSB7CisgICAgICAgIGhhc0JvZHkgPSB0cnVlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8vIGlmIGJvZHkgaXMgbnVsbCBhbmQgaGFzQm9keSBpcyB0cnVlLCBBTkQgYSBKU09OIGJvZHkgaXMgcmVxdWVzdGVkLCBzZW5kIGVtcHR5IHt9CisgIGlmKGhhc0JvZHkgJiYgdHlwZW9mIGJvZHkgPT09ICd1bmRlZmluZWQnKSB7CisgICAgdmFyIGNvbnRlbnRUeXBlID0gaGVhZGVyc1snQ29udGVudC1UeXBlJ107CisgICAgaWYoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpID09PSAwKSB7CisgICAgICBib2R5ID0gJ3t9JzsKKyAgICB9CisgIH0KKworICB2YXIgaXNNdWx0aVBhcnQgPSBmYWxzZTsKKyAgaWYoaGVhZGVyc1snQ29udGVudC1UeXBlJ10gJiYgaGVhZGVyc1snQ29udGVudC1UeXBlJ10uaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID49IDApIHsKKyAgICBpc011bHRpUGFydCA9IHRydWU7CisgIH0KKworICAvLyBoYW5kbGUgZm9ybSBwYXJhbXMKKyAgaWYgKGhhc0Zvcm1QYXJhbXMgJiYgIWlzTXVsdGlQYXJ0KSB7CisgICAgdmFyIGVuY29kZWQgPSAnJzsKKworICAgIGZvciAoa2V5IGluIGZvcm1QYXJhbXMpIHsKKyAgICAgIHBhcmFtID0gZm9ybVBhcmFtc1trZXldLnBhcmFtOworICAgICAgdmFsdWUgPSBmb3JtUGFyYW1zW2tleV0udmFsdWU7CisgICAgICB2YXIgcGFzc3dvcmQ7CisKKyAgICAgIGlmKG9wdHMgJiYgb3B0cy5tYXNrUGFzc3dvcmRzKSB7CisgICAgICAgIHBhc3N3b3JkID0gZm9ybVBhcmFtc1trZXldLnBhc3N3b3JkOworICAgICAgfQorCisgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgICBpZiAoZW5jb2RlZCAhPT0gJycpIHsKKyAgICAgICAgICAgIGVuY29kZWQgKz0gJyYnOworICAgICAgICAgIH0KKyAgICAgICAgICBlbmNvZGVkICs9IHRoaXMuZW5jb2RlUXVlcnlDb2xsZWN0aW9uKHBhcmFtLmNvbGxlY3Rpb25Gb3JtYXQsIGtleSwgdmFsdWUsIHBhc3N3b3JkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpZiAoZW5jb2RlZCAhPT0gJycpIHsKKyAgICAgICAgICAgIGVuY29kZWQgKz0gJyYnOworICAgICAgICAgIH0KKworICAgICAgICAgIGVuY29kZWQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScgKyBtYXNrKGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSksIHBhc3N3b3JkKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGJvZHkgPSBlbmNvZGVkOworICB9IGVsc2UgaWYgKGlzTXVsdGlQYXJ0KSB7CisgICAgdmFyIGJvZHlQYXJhbTsKKyAgICBpZiAodHlwZW9mIEZvcm1EYXRhID09PSAnZnVuY3Rpb24nKSB7CisgICAgICBib2R5UGFyYW0gPSBuZXcgRm9ybURhdGEoKTsKKworICAgICAgYm9keVBhcmFtLnR5cGUgPSAnZm9ybURhdGEnOworCisgICAgICBmb3IgKGtleSBpbiBmb3JtUGFyYW1zKSB7CisgICAgICAgIHBhcmFtID0gZm9ybVBhcmFtc1trZXldLnBhcmFtOworICAgICAgICB2YWx1ZSA9IGFyZ3Nba2V5XTsKKworICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgIGlmKHt9LnRvU3RyaW5nLmFwcGx5KHZhbHVlKSA9PT0gJ1tvYmplY3QgRmlsZV0nKSB7CisgICAgICAgICAgICBib2R5UGFyYW0uYXBwZW5kKGtleSwgdmFsdWUpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnZmlsZScgJiYgdmFsdWUudmFsdWUpIHsKKyAgICAgICAgICAgIGJvZHlQYXJhbS5hcHBlbmQoa2V5LCB2YWx1ZS52YWx1ZSk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgICAgICAgICBpZihwYXJhbS5jb2xsZWN0aW9uRm9ybWF0ID09PSAnbXVsdGknKSB7CisgICAgICAgICAgICAgICAgYm9keVBhcmFtLmRlbGV0ZShrZXkpOworICAgICAgICAgICAgICAgIGZvcih2YXIgdiBpbiB2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgYm9keVBhcmFtLmFwcGVuZChrZXksIHZhbHVlW3ZdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYm9keVBhcmFtLmFwcGVuZChrZXksIHRoaXMuZW5jb2RlUXVlcnlDb2xsZWN0aW9uKHBhcmFtLmNvbGxlY3Rpb25Gb3JtYXQsIGtleSwgdmFsdWUpLnNwbGl0KCc9Jykuc2xpY2UoMSkuam9pbignPScpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGJvZHlQYXJhbS5hcHBlbmQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBib2R5ID0gYm9keVBhcmFtOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGJvZHlQYXJhbSA9IHt9OworICAgICAgZm9yIChrZXkgaW4gZm9ybVBhcmFtcykgeworICAgICAgICB2YWx1ZSA9IGFyZ3Nba2V5XTsKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CisgICAgICAgICAgdmFyIGRlbGltZXRlcjsKKyAgICAgICAgICB2YXIgZm9ybWF0ID0gcGFyYW0uY29sbGVjdGlvbkZvcm1hdCB8fCAnbXVsdGknOworICAgICAgICAgIGlmKGZvcm1hdCA9PT0gJ3NzdicpIHsKKyAgICAgICAgICAgIGRlbGltZXRlciA9ICcgJzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZihmb3JtYXQgPT09ICdwaXBlcycpIHsKKyAgICAgICAgICAgIGRlbGltZXRlciA9ICd8JzsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZihmb3JtYXQgPT09ICd0c3YnKSB7CisgICAgICAgICAgICBkZWxpbWV0ZXIgPSAnXHQnOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmKGZvcm1hdCA9PT0gJ211bHRpJykgeworICAgICAgICAgICAgYm9keVBhcmFtW2tleV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlbGltZXRlciA9ICcsJzsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFyIGRhdGE7CisgICAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbih2KSB7CisgICAgICAgICAgICBpZihkYXRhKSB7CisgICAgICAgICAgICAgIGRhdGEgKz0gZGVsaW1ldGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIGRhdGEgPSAnJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRhdGEgKz0gdjsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBib2R5UGFyYW1ba2V5XSA9IGRhdGE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgYm9keVBhcmFtW2tleV0gPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYm9keSA9IGJvZHlQYXJhbTsKKyAgICB9CisgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7CisgIH0KKworICByZXR1cm4gYm9keTsKK307CisKKy8qKgorICogZ2V0cyBzYW1wbGUgcmVzcG9uc2UgZm9yIGEgc2luZ2xlIG9wZXJhdGlvbgorICoqLworT3BlcmF0aW9uLnByb3RvdHlwZS5nZXRNb2RlbFNhbXBsZUpTT04gPSBmdW5jdGlvbiAodHlwZSwgbW9kZWxzKSB7CisgIHZhciBsaXN0VHlwZSwgc2FtcGxlSnNvbiwgaW5uZXJUeXBlOworICBtb2RlbHMgPSBtb2RlbHMgfHwge307CisKKyAgbGlzdFR5cGUgPSAodHlwZSBpbnN0YW5jZW9mIEFycmF5KTsKKyAgaW5uZXJUeXBlID0gbGlzdFR5cGUgPyB0eXBlWzBdIDogdHlwZTsKKworICBpZihtb2RlbHNbaW5uZXJUeXBlXSkgeworICAgIHNhbXBsZUpzb24gPSBtb2RlbHNbaW5uZXJUeXBlXS5jcmVhdGVKU09OU2FtcGxlKCk7CisgIH0gZWxzZSBpZiAodGhpcy5nZXRJbmxpbmVNb2RlbChpbm5lclR5cGUpKXsKKyAgICBzYW1wbGVKc29uID0gdGhpcy5nZXRJbmxpbmVNb2RlbChpbm5lclR5cGUpLmNyZWF0ZUpTT05TYW1wbGUoKTsgLy8gbWF5IHJldHVybiBudWxsLCBpZiB0eXBlIGlzbid0IGNvcnJlY3QKKyAgfQorCisKKyAgaWYgKHNhbXBsZUpzb24pIHsKKyAgICBzYW1wbGVKc29uID0gbGlzdFR5cGUgPyBbc2FtcGxlSnNvbl0gOiBzYW1wbGVKc29uOworCisgICAgaWYgKHR5cGVvZiBzYW1wbGVKc29uID09PSAnc3RyaW5nJykgeworICAgICAgcmV0dXJuIHNhbXBsZUpzb247CisgICAgfSBlbHNlIGlmIChfLmlzT2JqZWN0KHNhbXBsZUpzb24pKSB7CisgICAgICB2YXIgdCA9IHNhbXBsZUpzb247CisKKyAgICAgIGlmIChzYW1wbGVKc29uIGluc3RhbmNlb2YgQXJyYXkgJiYgc2FtcGxlSnNvbi5sZW5ndGggPiAwKSB7CisgICAgICAgIHQgPSBzYW1wbGVKc29uWzBdOworICAgICAgfQorCisgICAgICBpZiAodC5ub2RlTmFtZSAmJiB0eXBlb2YgdCA9PT0gJ05vZGUnKSB7CisgICAgICAgIHZhciB4bWxTdHJpbmcgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHQpOworCisgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFhtbCh4bWxTdHJpbmcpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNhbXBsZUpzb24sIG51bGwsIDIpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gc2FtcGxlSnNvbjsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogbGVnYWN5IGJpbmRpbmcKKyAqKi8KK09wZXJhdGlvbi5wcm90b3R5cGUuZG8gPSBmdW5jdGlvbiAoYXJncywgb3B0cywgY2FsbGJhY2ssIGVycm9yLCBwYXJlbnQpIHsKKyAgcmV0dXJuIHRoaXMuZXhlY3V0ZShhcmdzLCBvcHRzLCBjYWxsYmFjaywgZXJyb3IsIHBhcmVudCk7Cit9OworCisvKioKKyAqIGV4ZWN1dGVzIGFuIG9wZXJhdGlvbgorICoqLworT3BlcmF0aW9uLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIHBhcmVudCkgeworICB2YXIgYXJncyA9IGFyZzEgfHwge307CisgIHZhciBvcHRzID0ge30sIHN1Y2Nlc3MsIGVycm9yLCBkZWZlcnJlZCwgdGltZW91dDsKKworICBpZiAoXy5pc09iamVjdChhcmcyKSkgeworICAgIG9wdHMgPSBhcmcyOworICAgIHN1Y2Nlc3MgPSBhcmczOworICAgIGVycm9yID0gYXJnNDsKKyAgfQorCisgIHRpbWVvdXQgPSB0eXBlb2Ygb3B0cy50aW1lb3V0ICE9PSAndW5kZWZpbmVkJyA/IG9wdHMudGltZW91dCA6IHRoaXMudGltZW91dDsKKworICBpZih0aGlzLmNsaWVudCkgeworICAgIG9wdHMuY2xpZW50ID0gdGhpcy5jbGllbnQ7CisgIH0KKworICBpZih0aGlzLnJlcXVlc3RBZ2VudCkgeworICAgIG9wdHMucmVxdWVzdEFnZW50ID0gdGhpcy5yZXF1ZXN0QWdlbnQ7CisgIH0KKworICAvLyBhZGQgdGhlIHJlcXVlc3QgaW50ZXJjZXB0b3IgZnJvbSBwYXJlbnQsIGlmIG5vbmUgc2VudCBmcm9tIGNsaWVudAorICBpZighb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3IgJiYgdGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3IgKSB7CisgICAgb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3IgPSB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvciA7CisgIH0KKworICBpZighb3B0cy5yZXNwb25zZUludGVyY2VwdG9yICYmIHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvcikgeworICAgIG9wdHMucmVzcG9uc2VJbnRlcmNlcHRvciA9IHRoaXMucmVzcG9uc2VJbnRlcmNlcHRvcjsKKyAgfQorCisgIGlmICh0eXBlb2YgYXJnMiA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHN1Y2Nlc3MgPSBhcmcyOworICAgIGVycm9yID0gYXJnMzsKKyAgfQorCisgIGlmICh0aGlzLnBhcmVudC51c2VQcm9taXNlKSB7CisgICAgZGVmZXJyZWQgPSBRLmRlZmVyKCk7CisgIH0gZWxzZSB7CisgICAgc3VjY2VzcyA9IChzdWNjZXNzIHx8IHRoaXMucGFyZW50LmRlZmF1bHRTdWNjZXNzQ2FsbGJhY2sgfHwgaGVscGVycy5sb2cpOworICAgIGVycm9yID0gKGVycm9yIHx8IHRoaXMucGFyZW50LmRlZmF1bHRFcnJvckNhbGxiYWNrIHx8IGhlbHBlcnMubG9nKTsKKyAgfQorCisgIGlmICh0eXBlb2Ygb3B0cy51c2VKUXVlcnkgPT09ICd1bmRlZmluZWQnKSB7CisgICAgb3B0cy51c2VKUXVlcnkgPSB0aGlzLnVzZUpRdWVyeTsKKyAgfQorCisgIGlmICh0eXBlb2Ygb3B0cy5qcXVlcnlBamF4Q2FjaGUgPT09ICd1bmRlZmluZWQnKSB7CisgICAgb3B0cy5qcXVlcnlBamF4Q2FjaGUgPSB0aGlzLmpxdWVyeUFqYXhDYWNoZTsKKyAgfQorCisgIGlmICh0eXBlb2Ygb3B0cy5lbmFibGVDb29raWVzID09PSAndW5kZWZpbmVkJykgeworICAgIG9wdHMuZW5hYmxlQ29va2llcyA9IHRoaXMuZW5hYmxlQ29va2llczsKKyAgfQorCisgIHZhciBtaXNzaW5nUGFyYW1zID0gdGhpcy5nZXRNaXNzaW5nUGFyYW1zKGFyZ3MpOworCisgIGlmIChtaXNzaW5nUGFyYW1zLmxlbmd0aCA+IDApIHsKKyAgICB2YXIgbWVzc2FnZSA9ICdtaXNzaW5nIHJlcXVpcmVkIHBhcmFtczogJyArIG1pc3NpbmdQYXJhbXM7CisKKyAgICBoZWxwZXJzLmZhaWwobWVzc2FnZSk7CisKKyAgICBpZiAodGhpcy5wYXJlbnQudXNlUHJvbWlzZSkgeworICAgICAgZGVmZXJyZWQucmVqZWN0KG1lc3NhZ2UpOworICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CisgICAgfSBlbHNlIHsKKyAgICAgIGVycm9yKG1lc3NhZ2UsIHBhcmVudCk7CisgICAgICByZXR1cm4ge307CisgICAgfQorICB9CisKKyAgdmFyIGFsbEhlYWRlcnMgPSB0aGlzLmdldEhlYWRlclBhcmFtcyhhcmdzKTsKKyAgdmFyIGNvbnRlbnRUeXBlSGVhZGVycyA9IHRoaXMuc2V0Q29udGVudFR5cGVzKGFyZ3MsIG9wdHMpOworICB2YXIgaGVhZGVycyA9IHt9LCBhdHRybmFtZTsKKworICBmb3IgKGF0dHJuYW1lIGluIGFsbEhlYWRlcnMpIHsgaGVhZGVyc1thdHRybmFtZV0gPSBhbGxIZWFkZXJzW2F0dHJuYW1lXTsgfQorICBmb3IgKGF0dHJuYW1lIGluIGNvbnRlbnRUeXBlSGVhZGVycykgeyBoZWFkZXJzW2F0dHJuYW1lXSA9IGNvbnRlbnRUeXBlSGVhZGVyc1thdHRybmFtZV07IH0KKworICB2YXIgYm9keSA9IHRoaXMuZ2V0Qm9keShjb250ZW50VHlwZUhlYWRlcnMsIGFyZ3MsIG9wdHMpOworICB2YXIgdXJsID0gdGhpcy51cmxpZnkoYXJncywgb3B0cy5tYXNrUGFzc3dvcmRzKTsKKworICBpZih1cmwuaW5kZXhPZignLntmb3JtYXR9JykgPiAwKSB7CisgICAgaWYoaGVhZGVycykgeworICAgICAgdmFyIGZvcm1hdCA9IGhlYWRlcnMuQWNjZXB0IHx8IGhlYWRlcnMuYWNjZXB0OworICAgICAgaWYoZm9ybWF0ICYmIGZvcm1hdC5pbmRleE9mKCdqc29uJykgPiAwKSB7CisgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCcue2Zvcm1hdH0nLCAnLmpzb24nKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoZm9ybWF0ICYmIGZvcm1hdC5pbmRleE9mKCd4bWwnKSA+IDApIHsKKyAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoJy57Zm9ybWF0fScsICcueG1sJyk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgdmFyIG9iaiA9IHsKKyAgICB1cmw6IHVybCwKKyAgICBtZXRob2Q6IHRoaXMubWV0aG9kLnRvVXBwZXJDYXNlKCksCisgICAgYm9keTogYm9keSwKKyAgICBlbmFibGVDb29raWVzOiBvcHRzLmVuYWJsZUNvb2tpZXMsCisgICAgdXNlSlF1ZXJ5OiBvcHRzLnVzZUpRdWVyeSwKKyAgICBqcXVlcnlBamF4Q2FjaGU6IG9wdHMuanF1ZXJ5QWpheENhY2hlLAorICAgIGRlZmVycmVkOiBkZWZlcnJlZCwKKyAgICBoZWFkZXJzOiBoZWFkZXJzLAorICAgIGNsaWVudEF1dGhvcml6YXRpb25zOiBvcHRzLmNsaWVudEF1dGhvcml6YXRpb25zLAorICAgIG9wZXJhdGlvbjogdGhpcywKKyAgICBjb25uZWN0aW9uQWdlbnQ6IHRoaXMuY29ubmVjdGlvbkFnZW50LAorICAgIG9uOiB7CisgICAgICByZXNwb25zZTogZnVuY3Rpb24gKHJlc3BvbnNlKSB7CisgICAgICAgIGlmIChkZWZlcnJlZCkgeworICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocmVzcG9uc2UpOworICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBzdWNjZXNzKHJlc3BvbnNlLCBwYXJlbnQpOworICAgICAgICB9CisgICAgICB9LAorICAgICAgZXJyb3I6IGZ1bmN0aW9uIChyZXNwb25zZSkgeworICAgICAgICBpZiAoZGVmZXJyZWQpIHsKKyAgICAgICAgICBkZWZlcnJlZC5yZWplY3QocmVzcG9uc2UpOworICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBlcnJvcihyZXNwb25zZSwgcGFyZW50KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfTsKKworICBpZiAodGltZW91dCkgeworICAgIG9iai50aW1lb3V0ID0gdGltZW91dDsKKyAgfQorCisgIHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMuYXBwbHkob2JqLCB0aGlzLm9wZXJhdGlvbi5zZWN1cml0eSk7CisgIGlmIChvcHRzLm1vY2sgPT09IHRydWUpIHsKKyAgICBpZihvcHRzLnJlcXVlc3RJbnRlcmNlcHRvcikgeworICAgICAgb3B0cy5yZXF1ZXN0SW50ZXJjZXB0b3IuYXBwbHkob2JqKTsKKyAgICB9CisgICAgcmV0dXJuIG9iajsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gbmV3IFN3YWdnZXJIdHRwKCkuZXhlY3V0ZShvYmosIG9wdHMpOworICB9Cit9OworCitmdW5jdGlvbiBpdGVtQnlQcmlvcml0eShjb2wsIGl0ZW1Qcmlvcml0eSkgeworCisgIC8vIE5vIHByaW9yaXRpZXM/IHJldHVybiBmaXJzdC4uLgorICBpZihfLmlzRW1wdHkoaXRlbVByaW9yaXR5KSkgeworICAgIHJldHVybiBjb2xbMF07CisgIH0KKworICBmb3IgKHZhciBpID0gMCwgbGVuID0gaXRlbVByaW9yaXR5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CisgICAgaWYoY29sLmluZGV4T2YoaXRlbVByaW9yaXR5W2ldKSA+IC0xKSB7CisgICAgICByZXR1cm4gaXRlbVByaW9yaXR5W2ldOworICAgIH0KKyAgfQorCisgIC8vIE90aGVyd2lzZSByZXR1cm4gZmlyc3QKKyAgcmV0dXJuIGNvbFswXTsKK30KKworT3BlcmF0aW9uLnByb3RvdHlwZS5zZXRDb250ZW50VHlwZXMgPSBmdW5jdGlvbiAoYXJncywgb3B0cykgeworICAvLyBkZWZhdWx0IHR5cGUKKyAgdmFyIGFsbERlZmluZWRQYXJhbXMgPSB0aGlzLnBhcmFtZXRlcnM7CisgIHZhciBib2R5OworICB2YXIgY29uc3VtZXMgPSBhcmdzLnBhcmFtZXRlckNvbnRlbnRUeXBlIHx8IGl0ZW1CeVByaW9yaXR5KHRoaXMuY29uc3VtZXMsIFsnYXBwbGljYXRpb24vanNvbicsICdhcHBsaWNhdGlvbi95YW1sJ10pOworICB2YXIgYWNjZXB0cyA9IG9wdHMucmVzcG9uc2VDb250ZW50VHlwZSB8fCBpdGVtQnlQcmlvcml0eSh0aGlzLnByb2R1Y2VzLCBbJ2FwcGxpY2F0aW9uL2pzb24nLCAnYXBwbGljYXRpb24veWFtbCddKTsKKyAgdmFyIGRlZmluZWRGaWxlUGFyYW1zID0gW107CisgIHZhciBkZWZpbmVkRm9ybVBhcmFtcyA9IFtdOworICB2YXIgaGVhZGVycyA9IHt9OworICB2YXIgaTsKKworICAvLyBnZXQgcGFyYW1zIGZyb20gdGhlIG9wZXJhdGlvbiBhbmQgc2V0IHRoZW0gaW4gZGVmaW5lZEZpbGVQYXJhbXMsIGRlZmluZWRGb3JtUGFyYW1zLCBoZWFkZXJzCisgIGZvciAoaSA9IDA7IGkgPCBhbGxEZWZpbmVkUGFyYW1zLmxlbmd0aDsgaSsrKSB7CisgICAgdmFyIHBhcmFtID0gYWxsRGVmaW5lZFBhcmFtc1tpXTsKKworICAgIGlmIChwYXJhbS5pbiA9PT0gJ2Zvcm1EYXRhJykgeworICAgICAgaWYgKHBhcmFtLnR5cGUgPT09ICdmaWxlJykgeworICAgICAgICBkZWZpbmVkRmlsZVBhcmFtcy5wdXNoKHBhcmFtKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRlZmluZWRGb3JtUGFyYW1zLnB1c2gocGFyYW0pOworICAgICAgfQorICAgIH0gZWxzZSBpZiAocGFyYW0uaW4gPT09ICdoZWFkZXInICYmIG9wdHMpIHsKKyAgICAgIHZhciBrZXkgPSBwYXJhbS5uYW1lOworICAgICAgdmFyIGhlYWRlclZhbHVlID0gb3B0c1twYXJhbS5uYW1lXTsKKworICAgICAgaWYgKHR5cGVvZiBvcHRzW3BhcmFtLm5hbWVdICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBoZWFkZXJzW2tleV0gPSBoZWFkZXJWYWx1ZTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHBhcmFtLmluID09PSAnYm9keScgJiYgdHlwZW9mIGFyZ3NbcGFyYW0ubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7CisgICAgICBib2R5ID0gYXJnc1twYXJhbS5uYW1lXTsKKyAgICB9CisgIH0KKworICAvLyBpZiB0aGVyZSdzIGEgYm9keSwgbmVlZCB0byBzZXQgdGhlIGNvbnN1bWVzIGhlYWRlciB2aWEgcmVxdWVzdENvbnRlbnRUeXBlCisgIHZhciBoYXNCb2R5ID0gYm9keSB8fCBkZWZpbmVkRmlsZVBhcmFtcy5sZW5ndGggfHwgZGVmaW5lZEZvcm1QYXJhbXMubGVuZ3RoOworICBpZiAodGhpcy5tZXRob2QgPT09ICdwb3N0JyB8fCB0aGlzLm1ldGhvZCA9PT0gJ3B1dCcgfHwgdGhpcy5tZXRob2QgPT09ICdwYXRjaCcgfHwKKyAgICAgICgodGhpcy5tZXRob2QgPT09ICdkZWxldGUnIHx8IHRoaXMubWV0aG9kID09PSAnZ2V0JykgJiYgaGFzQm9keSkpIHsKKyAgICBpZiAob3B0cy5yZXF1ZXN0Q29udGVudFR5cGUpIHsKKyAgICAgIGNvbnN1bWVzID0gb3B0cy5yZXF1ZXN0Q29udGVudFR5cGU7CisgICAgfQorICAgIC8vIGlmIGFueSBmb3JtIHBhcmFtcywgY29udGVudCB0eXBlIG11c3QgYmUgc2V0CisgICAgaWYgKGRlZmluZWRGb3JtUGFyYW1zLmxlbmd0aCA+IDApIHsKKyAgICAgIGNvbnN1bWVzID0gdW5kZWZpbmVkOworICAgICAgaWYgKG9wdHMucmVxdWVzdENvbnRlbnRUeXBlKSB7ICAgICAgICAgICAgIC8vIG92ZXJyaWRlIGlmIHNldAorICAgICAgICBjb25zdW1lcyA9IG9wdHMucmVxdWVzdENvbnRlbnRUeXBlOworICAgICAgfSBlbHNlIGlmIChkZWZpbmVkRmlsZVBhcmFtcy5sZW5ndGggPiAwKSB7IC8vIGlmIGEgZmlsZSwgbXVzdCBiZSBtdWx0aXBhcnQvZm9ybS1kYXRhCisgICAgICAgIGNvbnN1bWVzID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHRoaXMuY29uc3VtZXMgJiYgdGhpcy5jb25zdW1lcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgLy8gdXNlIHRoZSBjb25zdW1lcyBzZXR0aW5nCisgICAgICAgICAgZm9yKHZhciBjIGluIHRoaXMuY29uc3VtZXMpIHsKKyAgICAgICAgICAgIHZhciBjaGsgPSB0aGlzLmNvbnN1bWVzW2NdOworICAgICAgICAgICAgaWYoY2hrLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID09PSAwIHx8IGNoay5pbmRleE9mKCdtdWx0aXBhcnQvZm9ybS1kYXRhJykgPT09IDApIHsKKyAgICAgICAgICAgICAgY29uc3VtZXMgPSBjaGs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBpZih0eXBlb2YgY29uc3VtZXMgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIC8vIGRlZmF1bHQgdG8geC13d3ctZnJvbS11cmxlbmNvZGVkCisgICAgICAgIGNvbnN1bWVzID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc7CisgICAgICB9CisgICAgfQorICB9CisgIGVsc2UgeworICAgIGNvbnN1bWVzID0gbnVsbDsKKyAgfQorCisgIGlmIChjb25zdW1lcyAmJiB0aGlzLmNvbnN1bWVzKSB7CisgICAgaWYgKHRoaXMuY29uc3VtZXMuaW5kZXhPZihjb25zdW1lcykgPT09IC0xKSB7CisgICAgICBoZWxwZXJzLmxvZygnc2VydmVyIGRvZXNuXCd0IGNvbnN1bWUgJyArIGNvbnN1bWVzICsgJywgdHJ5ICcgKyBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnN1bWVzKSk7CisgICAgfQorICB9CisKKyAgaWYgKCF0aGlzLm1hdGNoZXNBY2NlcHQoYWNjZXB0cykpIHsKKyAgICBoZWxwZXJzLmxvZygnc2VydmVyIGNhblwndCBwcm9kdWNlICcgKyBhY2NlcHRzKTsKKyAgfQorCisgIGlmICgoY29uc3VtZXMgJiYgYm9keSAhPT0gJycpIHx8IChjb25zdW1lcyA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpKSB7CisgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBjb25zdW1lczsKKyAgfQorICBlbHNlIGlmKHRoaXMuY29uc3VtZXMgJiYgdGhpcy5jb25zdW1lcy5sZW5ndGggPiAwICYmIHRoaXMuY29uc3VtZXNbMF0gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7CisgICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB0aGlzLmNvbnN1bWVzWzBdOworICB9CisKKyAgaWYgKGFjY2VwdHMpIHsKKyAgICBoZWFkZXJzLkFjY2VwdCA9IGFjY2VwdHM7CisgIH0KKworICByZXR1cm4gaGVhZGVyczsKK307CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGFjY2VwdHMgaGVhZGVyIG1hdGNoZXMgYW55dGhpbmcgaW4gdGhpcy5wcm9kdWNlcy4KKyAqICBJZiB0aGlzLnByb2R1Y2VzIGNvbnRhaW5zICogLyAqLCBpZ25vcmUgdGhlIGFjY2VwdCBoZWFkZXIuCisgKiBAcGFyYW0ge3N0cmluZz19IGFjY2VwdHMgVGhlIGNsaWVudCByZXF1ZXN0IGFjY2VwdCBoZWFkZXIuCisgKiBAcmV0dXJuIHtib29sZWFufQorICovCitPcGVyYXRpb24ucHJvdG90eXBlLm1hdGNoZXNBY2NlcHQgPSBmdW5jdGlvbihhY2NlcHRzKSB7CisgIC8vIG5vIGFjY2VwdHMgb3IgcHJvZHVjZXMsIG5vIHByb2JsZW0hCisgIGlmICghYWNjZXB0cyB8fCAhdGhpcy5wcm9kdWNlcykgeworICAgIHJldHVybiB0cnVlOworICB9CisgIHJldHVybiB0aGlzLnByb2R1Y2VzLmluZGV4T2YoYWNjZXB0cykgIT09IC0xIHx8IHRoaXMucHJvZHVjZXMuaW5kZXhPZignKi8qJykgIT09IC0xOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5hc0N1cmwgPSBmdW5jdGlvbiAoYXJnczEsIGFyZ3MyKSB7CisgIHZhciBvcHRzID0ge21vY2s6IHRydWUsIG1hc2tQYXNzd29yZHM6IHRydWV9OworICBpZiAodHlwZW9mIGFyZ3MyID09PSAnb2JqZWN0JykgeworICAgIGZvciAodmFyIGFyZ0tleSBpbiBhcmdzMikgeworICAgICAgb3B0c1thcmdLZXldID0gYXJnczJbYXJnS2V5XTsKKyAgICB9CisgIH0KKyAgdmFyIG9iaiA9IHRoaXMuZXhlY3V0ZShhcmdzMSwgb3B0cyk7CisKKyAgdGhpcy5jbGllbnRBdXRob3JpemF0aW9ucy5hcHBseShvYmosIHRoaXMub3BlcmF0aW9uLnNlY3VyaXR5KTsKKworICB2YXIgcmVzdWx0cyA9IFtdOworCisgIHJlc3VsdHMucHVzaCgnLVggJyArIHRoaXMubWV0aG9kLnRvVXBwZXJDYXNlKCkpOworCisgIGlmICh0eXBlb2Ygb2JqLmhlYWRlcnMgIT09ICd1bmRlZmluZWQnKSB7CisgICAgdmFyIGtleTsKKworICAgIGZvciAoa2V5IGluIG9iai5oZWFkZXJzKSB7CisgICAgICB2YXIgdmFsdWUgPSBvYmouaGVhZGVyc1trZXldOworICAgICAgaWYodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7CisgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXCcvZywgJ1xcdTAwMjcnKTsKKyAgICAgIH0KKyAgICAgIHJlc3VsdHMucHVzaCgnLS1oZWFkZXIgXCcnICsga2V5ICsgJzogJyArIHZhbHVlICsgJ1wnJyk7CisgICAgfQorICB9CisgIHZhciBpc0Zvcm1EYXRhID0gZmFsc2U7CisgIHZhciBpc011bHRpcGFydCA9IGZhbHNlOworCisgIHZhciB0eXBlID0gb2JqLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOworICBpZih0eXBlICYmIHR5cGUuaW5kZXhPZignYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykgPT09IDApIHsKKyAgICBpc0Zvcm1EYXRhID0gdHJ1ZTsKKyAgfQorICBlbHNlIGlmICh0eXBlICYmIHR5cGUuaW5kZXhPZignbXVsdGlwYXJ0L2Zvcm0tZGF0YScpID09PSAwKSB7CisgICAgaXNGb3JtRGF0YSA9IHRydWU7CisgICAgaXNNdWx0aXBhcnQgPSB0cnVlOworICB9CisKKyAgaWYgKG9iai5ib2R5KSB7CisgICAgdmFyIGJvZHk7CisgICAgaWYgKF8uaXNPYmplY3Qob2JqLmJvZHkpKSB7CisgICAgICBpZihpc011bHRpcGFydCkgeworICAgICAgICBpc011bHRpcGFydCA9IHRydWU7CisgICAgICAgIC8vIGFkZCB0aGUgZm9ybSBkYXRhCisgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLnBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICB2YXIgcGFyYW1ldGVyID0gdGhpcy5wYXJhbWV0ZXJzW2ldOworICAgICAgICAgIGlmKHBhcmFtZXRlci5pbiA9PT0gJ2Zvcm1EYXRhJykgeworICAgICAgICAgICAgaWYgKCFib2R5KSB7CisgICAgICAgICAgICAgIGJvZHkgPSAnJzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHBhcmFtVmFsdWU7CisgICAgICAgICAgICBpZih0eXBlb2YgRm9ybURhdGEgPT09ICdmdW5jdGlvbicgJiYgb2JqLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkgeworICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gb2JqLmJvZHkuZ2V0QWxsKHBhcmFtZXRlci5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBwYXJhbVZhbHVlID0gb2JqLmJvZHlbcGFyYW1ldGVyLm5hbWVdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBhcmFtVmFsdWUpIHsKKyAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlci50eXBlID09PSAnZmlsZScpIHsKKyAgICAgICAgICAgICAgICBpZihwYXJhbVZhbHVlLm5hbWUpIHsKKyAgICAgICAgICAgICAgICAgIGJvZHkgKz0gJy1GICcgKyBwYXJhbWV0ZXIubmFtZSArICc9QCInICsgcGFyYW1WYWx1ZS5uYW1lICsgJyIgJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1WYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgIGlmKHBhcmFtZXRlci5jb2xsZWN0aW9uRm9ybWF0ID09PSAnbXVsdGknKSB7CisgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgdiBpbiBwYXJhbVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgYm9keSArPSAnLUYgJyArIHRoaXMuZW5jb2RlUXVlcnlLZXkocGFyYW1ldGVyLm5hbWUpICsgJz0nICsgbWFzayhwYXJhbVZhbHVlW3ZdLCBwYXJhbWV0ZXIuZm9ybWF0KSArICcgJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJvZHkgKz0gJy1GICcgKyB0aGlzLmVuY29kZVF1ZXJ5Q29sbGVjdGlvbihwYXJhbWV0ZXIuY29sbGVjdGlvbkZvcm1hdCwgcGFyYW1ldGVyLm5hbWUsIG1hc2socGFyYW1WYWx1ZSwgcGFyYW1ldGVyLmZvcm1hdCkpICsgJyAnOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBib2R5ICs9ICctRiAnICsgdGhpcy5lbmNvZGVRdWVyeUtleShwYXJhbWV0ZXIubmFtZSkgKyAnPScgKyBtYXNrKHBhcmFtVmFsdWUsIHBhcmFtZXRlci5mb3JtYXQpICsgJyAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYoIWJvZHkpIHsKKyAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KG9iai5ib2R5KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgYm9keSA9IG9iai5ib2R5OworICAgIH0KKyAgICAvLyBlc2NhcGUgQCA9PiAlNDAsICcgPT4gJTI3CisgICAgYm9keSA9IGJvZHkucmVwbGFjZSgvXCcvZywgJyUyNycpLnJlcGxhY2UoL1xuL2csICcgXFwgXG4gJyk7CisKKyAgICBpZighaXNGb3JtRGF0YSkgeworICAgICAgLy8gZXNjYXBlICYgPT4gJTI2CisgICAgICBib2R5ID0gYm9keS5yZXBsYWNlKC8mL2csICclMjYnKTsKKyAgICB9CisgICAgaWYoaXNNdWx0aXBhcnQpIHsKKyAgICAgIHJlc3VsdHMucHVzaChib2R5KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICByZXN1bHRzLnB1c2goJy1kIFwnJyArIGJvZHkucmVwbGFjZSgvQC9nLCAnJTQwJykgKyAnXCcnKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gJ2N1cmwgJyArIChyZXN1bHRzLmpvaW4oJyAnKSkgKyAnIFwnJyArIG9iai51cmwgKyAnXCcnOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5lbmNvZGVQYXRoQ29sbGVjdGlvbiA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCB2YWx1ZSwgbWFza1Bhc3N3b3JkcykgeworICB2YXIgZW5jb2RlZCA9ICcnOworICB2YXIgaTsKKyAgdmFyIHNlcGFyYXRvciA9ICcnOworCisgIGlmICh0eXBlID09PSAnc3N2JykgeworICAgIHNlcGFyYXRvciA9ICclMjAnOworICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0c3YnKSB7CisgICAgc2VwYXJhdG9yID0gJyUwOSc7CisgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BpcGVzJykgeworICAgIHNlcGFyYXRvciA9ICd8JzsKKyAgfSBlbHNlIHsKKyAgICBzZXBhcmF0b3IgPSAnLCc7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICBpZiAoaSA9PT0gMCkgeworICAgICAgZW5jb2RlZCA9IHRoaXMuZW5jb2RlUXVlcnlQYXJhbSh2YWx1ZVtpXSwgbWFza1Bhc3N3b3Jkcyk7CisgICAgfSBlbHNlIHsKKyAgICAgIGVuY29kZWQgKz0gc2VwYXJhdG9yICsgdGhpcy5lbmNvZGVRdWVyeVBhcmFtKHZhbHVlW2ldLCBtYXNrUGFzc3dvcmRzKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZW5jb2RlZDsKK307CisKK09wZXJhdGlvbi5wcm90b3R5cGUuZW5jb2RlUXVlcnlDb2xsZWN0aW9uID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHZhbHVlLCBtYXNrUGFzc3dvcmRzKSB7CisgIHZhciBlbmNvZGVkID0gJyc7CisgIHZhciBpOworCisgIHR5cGUgPSB0eXBlIHx8ICdkZWZhdWx0JzsKKyAgaWYgKHR5cGUgPT09ICdkZWZhdWx0JyB8fCB0eXBlID09PSAnbXVsdGknKSB7CisgICAgZm9yIChpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAoaSA+IDApIHtlbmNvZGVkICs9ICcmJzt9CisKKyAgICAgIGVuY29kZWQgKz0gdGhpcy5lbmNvZGVRdWVyeUtleShuYW1lKSArICc9JyArIG1hc2sodGhpcy5lbmNvZGVRdWVyeVBhcmFtKHZhbHVlW2ldKSwgbWFza1Bhc3N3b3Jkcyk7CisgICAgfQorICB9IGVsc2UgeworICAgIHZhciBzZXBhcmF0b3IgPSAnJzsKKworICAgIGlmICh0eXBlID09PSAnY3N2JykgeworICAgICAgc2VwYXJhdG9yID0gJywnOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NzdicpIHsKKyAgICAgIHNlcGFyYXRvciA9ICclMjAnOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RzdicpIHsKKyAgICAgIHNlcGFyYXRvciA9ICclMDknOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BpcGVzJykgeworICAgICAgc2VwYXJhdG9yID0gJ3wnOworICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2JyYWNrZXRzJykgeworICAgICAgZm9yIChpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChpICE9PSAwKSB7CisgICAgICAgICAgZW5jb2RlZCArPSAnJic7CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlZCArPSB0aGlzLmVuY29kZVF1ZXJ5S2V5KG5hbWUpICsgJ1tdPScgKyBtYXNrKHRoaXMuZW5jb2RlUXVlcnlQYXJhbSh2YWx1ZVtpXSksIG1hc2tQYXNzd29yZHMpOworICAgICAgfQorICAgIH0KKworICAgIGlmIChzZXBhcmF0b3IgIT09ICcnKSB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgPT09IDApIHsKKyAgICAgICAgICBlbmNvZGVkID0gdGhpcy5lbmNvZGVRdWVyeUtleShuYW1lKSArICc9JyArIHRoaXMuZW5jb2RlUXVlcnlQYXJhbSh2YWx1ZVtpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZW5jb2RlZCArPSBzZXBhcmF0b3IgKyB0aGlzLmVuY29kZVF1ZXJ5UGFyYW0odmFsdWVbaV0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIGVuY29kZWQ7Cit9OworCitPcGVyYXRpb24ucHJvdG90eXBlLmVuY29kZVF1ZXJ5S2V5ID0gZnVuY3Rpb24gKGFyZykgeworICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGFyZykKKyAgICAgIC5yZXBsYWNlKCclNUInLCdbJykucmVwbGFjZSgnJTVEJywgJ10nKS5yZXBsYWNlKCclMjQnLCAnJCcpOworfTsKKworT3BlcmF0aW9uLnByb3RvdHlwZS5lbmNvZGVRdWVyeVBhcmFtID0gZnVuY3Rpb24gKGFyZywgbWFza1Bhc3N3b3JkcykgeworICBpZihtYXNrUGFzc3dvcmRzKSB7CisgICAgcmV0dXJuICIqKioqKioiOworICB9CisgIGlmKGFyZyAhPT0gdW5kZWZpbmVkICYmIGFyZyAhPT0gbnVsbCkgeworICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoYXJnKTsKKyAgfQorICBlbHNlIHsKKyAgICByZXR1cm4gJyc7CisgIH0KK307CisKKy8qKgorICogVE9ETyByZXZpc2l0LCBtaWdodCBub3Qgd2FudCB0byBsZWF2ZSAnLycKKyAqKi8KK09wZXJhdGlvbi5wcm90b3R5cGUuZW5jb2RlUGF0aFBhcmFtID0gZnVuY3Rpb24gKHBhdGhQYXJhbSwgbWFza1Bhc3N3b3JkcykgeworICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHBhdGhQYXJhbSwgbWFza1Bhc3N3b3Jkcyk7Cit9OworCit2YXIgbWFzayA9IGZ1bmN0aW9uKHZhbHVlLCBmb3JtYXQpIHsKKyAgaWYodHlwZW9mIGZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZm9ybWF0ID09PSAncGFzc3dvcmQnKSB7CisgICAgcmV0dXJuICcqKioqKionOworICB9CisgIHJldHVybiB2YWx1ZTsKK30KKworfSx7Ii4uL2hlbHBlcnMiOjQsIi4uL2h0dHAiOjUsIi4vbW9kZWwiOjksImxvZGFzaC1jb21wYXQvbGFuZy9jbG9uZURlZXAiOjEzOCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzRW1wdHkiOjE0MSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0IjoxNDQsImxvZGFzaC1jb21wYXQvbGFuZy9pc1VuZGVmaW5lZCI6MTQ4LCJxIjoxNTd9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBPcGVyYXRpb25Hcm91cCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhZywgZGVzY3JpcHRpb24sIGV4dGVybmFsRG9jcywgb3BlcmF0aW9uKSB7CisgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKyAgdGhpcy5leHRlcm5hbERvY3MgPSBleHRlcm5hbERvY3M7CisgIHRoaXMubmFtZSA9IHRhZzsKKyAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247CisgIHRoaXMub3BlcmF0aW9uc0FycmF5ID0gW107CisgIHRoaXMucGF0aCA9IHRhZzsKKyAgdGhpcy50YWcgPSB0YWc7Cit9OworCitPcGVyYXRpb25Hcm91cC5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uICgpIHsKKworfTsKKworCit9LHt9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXIKKwordmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9OwordmFyIHF1ZXVlID0gW107Cit2YXIgZHJhaW5pbmcgPSBmYWxzZTsKKworZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHsKKyAgICBpZiAoZHJhaW5pbmcpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkcmFpbmluZyA9IHRydWU7CisgICAgdmFyIGN1cnJlbnRRdWV1ZTsKKyAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoOworICAgIHdoaWxlKGxlbikgeworICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTsKKyAgICAgICAgcXVldWUgPSBbXTsKKyAgICAgICAgdmFyIGkgPSAtMTsKKyAgICAgICAgd2hpbGUgKCsraSA8IGxlbikgeworICAgICAgICAgICAgY3VycmVudFF1ZXVlW2ldKCk7CisgICAgICAgIH0KKyAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoOworICAgIH0KKyAgICBkcmFpbmluZyA9IGZhbHNlOworfQorcHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHsKKyAgICBxdWV1ZS5wdXNoKGZ1bik7CisgICAgaWYgKCFkcmFpbmluZykgeworICAgICAgICBzZXRUaW1lb3V0KGRyYWluUXVldWUsIDApOworICAgIH0KK307CisKK3Byb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7Citwcm9jZXNzLmJyb3dzZXIgPSB0cnVlOworcHJvY2Vzcy5lbnYgPSB7fTsKK3Byb2Nlc3MuYXJndiA9IFtdOworcHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzCitwcm9jZXNzLnZlcnNpb25zID0ge307CisKK2Z1bmN0aW9uIG5vb3AoKSB7fQorCitwcm9jZXNzLm9uID0gbm9vcDsKK3Byb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wOworcHJvY2Vzcy5vbmNlID0gbm9vcDsKK3Byb2Nlc3Mub2ZmID0gbm9vcDsKK3Byb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wOworcHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wOworcHJvY2Vzcy5lbWl0ID0gbm9vcDsKKworcHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7Cit9OworCisvLyBUT0RPKHNodHlsbWFuKQorcHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTsKK3Byb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTsKK307Citwcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9OworCit9LHt9XSwxMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKEJ1ZmZlcil7CisoZnVuY3Rpb24gKCkgeworICAidXNlIHN0cmljdCI7CisKKyAgZnVuY3Rpb24gYnRvYShzdHIpIHsKKyAgICB2YXIgYnVmZmVyCisgICAgICA7CisKKyAgICBpZiAoc3RyIGluc3RhbmNlb2YgQnVmZmVyKSB7CisgICAgICBidWZmZXIgPSBzdHI7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoc3RyLnRvU3RyaW5nKCksICdiaW5hcnknKTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTsKKyAgfQorCisgIG1vZHVsZS5leHBvcnRzID0gYnRvYTsKK30oKSk7CisKK30pLmNhbGwodGhpcyxyZXF1aXJlKCJidWZmZXIiKS5CdWZmZXIpCisKK30seyJidWZmZXIiOjE0fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyohCisgKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci4KKyAqCisgKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz4KKyAqIEBsaWNlbnNlICBNSVQKKyAqLworCit2YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJykKK3ZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpCit2YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzLWFycmF5JykKKworZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXIKK2V4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXIKK2V4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MAorQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uCisKK3ZhciByb290UGFyZW50ID0ge30KKworLyoqCisgKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOgorICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdCkKKyAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNikKKyAqCisgKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssCisgKiBPcGVyYSAxMS42KywgaU9TIDQuMisuCisgKgorICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlbgorICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuCisgKgorICogTm90ZToKKyAqCisgKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLAorICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LgorICoKKyAqICAgLSBTYWZhcmkgNS03IGxhY2tzIHN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSBgT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcmAgcHJvcGVydHkKKyAqICAgICBvbiBvYmplY3RzLgorICoKKyAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLgorICoKKyAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mCisgKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuCisKKyAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5CisgKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS4KKyAqLworQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSAoZnVuY3Rpb24gKCkgeworICBmdW5jdGlvbiBCYXIgKCkge30KKyAgdHJ5IHsKKyAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSkKKyAgICBhcnIuZm9vID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfQorICAgIGFyci5jb25zdHJ1Y3RvciA9IEJhcgorICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyICYmIC8vIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkCisgICAgICAgIGFyci5jb25zdHJ1Y3RvciA9PT0gQmFyICYmIC8vIGNvbnN0cnVjdG9yIGNhbiBiZSBzZXQKKyAgICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWAKKyAgICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWAKKyAgfSBjYXRjaCAoZSkgeworICAgIHJldHVybiBmYWxzZQorICB9Cit9KSgpCisKK2Z1bmN0aW9uIGtNYXhMZW5ndGggKCkgeworICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQKKyAgICA/IDB4N2ZmZmZmZmYKKyAgICA6IDB4M2ZmZmZmZmYKK30KKworLyoqCisgKiBDbGFzczogQnVmZmVyCisgKiA9PT09PT09PT09PT09CisgKgorICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBhcmUgYXVnbWVudGVkCisgKiB3aXRoIGZ1bmN0aW9uIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBBUEkgZnVuY3Rpb25zLiBXZSB1c2UKKyAqIGBVaW50OEFycmF5YCBzbyB0aGF0IHNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0IHJldHVybnMKKyAqIGEgc2luZ2xlIG9jdGV0LgorICoKKyAqIEJ5IGF1Z21lbnRpbmcgdGhlIGluc3RhbmNlcywgd2UgY2FuIGF2b2lkIG1vZGlmeWluZyB0aGUgYFVpbnQ4QXJyYXlgCisgKiBwcm90b3R5cGUuCisgKi8KK2Z1bmN0aW9uIEJ1ZmZlciAoYXJnKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7CisgICAgLy8gQXZvaWQgZ29pbmcgdGhyb3VnaCBhbiBBcmd1bWVudHNBZGFwdG9yVHJhbXBvbGluZSBpbiB0aGUgY29tbW9uIGNhc2UuCisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGFyZ3VtZW50c1sxXSkKKyAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcpCisgIH0KKworICB0aGlzLmxlbmd0aCA9IDAKKyAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQKKworICAvLyBDb21tb24gY2FzZS4KKyAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7CisgICAgcmV0dXJuIGZyb21OdW1iZXIodGhpcywgYXJnKQorICB9CisKKyAgLy8gU2xpZ2h0bHkgbGVzcyBjb21tb24gY2FzZS4KKyAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7CisgICAgcmV0dXJuIGZyb21TdHJpbmcodGhpcywgYXJnLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6ICd1dGY4JykKKyAgfQorCisgIC8vIFVudXN1YWwuCisgIHJldHVybiBmcm9tT2JqZWN0KHRoaXMsIGFyZykKK30KKworZnVuY3Rpb24gZnJvbU51bWJlciAodGhhdCwgbGVuZ3RoKSB7CisgIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGggPCAwID8gMCA6IGNoZWNrZWQobGVuZ3RoKSB8IDApCisgIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICB0aGF0W2ldID0gMAorICAgIH0KKyAgfQorICByZXR1cm4gdGhhdAorfQorCitmdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7CisgIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykgZW5jb2RpbmcgPSAndXRmOCcKKworICAvLyBBc3N1bXB0aW9uOiBieXRlTGVuZ3RoKCkgcmV0dXJuIHZhbHVlIGlzIGFsd2F5cyA8IGtNYXhMZW5ndGguCisgIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMAorICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKQorCisgIHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZykKKyAgcmV0dXJuIHRoYXQKK30KKworZnVuY3Rpb24gZnJvbU9iamVjdCAodGhhdCwgb2JqZWN0KSB7CisgIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqZWN0KSkgcmV0dXJuIGZyb21CdWZmZXIodGhhdCwgb2JqZWN0KQorCisgIGlmIChpc0FycmF5KG9iamVjdCkpIHJldHVybiBmcm9tQXJyYXkodGhhdCwgb2JqZWN0KQorCisgIGlmIChvYmplY3QgPT0gbnVsbCkgeworICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ211c3Qgc3RhcnQgd2l0aCBudW1iZXIsIGJ1ZmZlciwgYXJyYXkgb3Igc3RyaW5nJykKKyAgfQorCisgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7CisgICAgaWYgKG9iamVjdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgeworICAgICAgcmV0dXJuIGZyb21UeXBlZEFycmF5KHRoYXQsIG9iamVjdCkKKyAgICB9CisgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7CisgICAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIG9iamVjdCkKKyAgICB9CisgIH0KKworICBpZiAob2JqZWN0Lmxlbmd0aCkgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqZWN0KQorCisgIHJldHVybiBmcm9tSnNvbk9iamVjdCh0aGF0LCBvYmplY3QpCit9CisKK2Z1bmN0aW9uIGZyb21CdWZmZXIgKHRoYXQsIGJ1ZmZlcikgeworICB2YXIgbGVuZ3RoID0gY2hlY2tlZChidWZmZXIubGVuZ3RoKSB8IDAKKyAgdGhhdCA9IGFsbG9jYXRlKHRoYXQsIGxlbmd0aCkKKyAgYnVmZmVyLmNvcHkodGhhdCwgMCwgMCwgbGVuZ3RoKQorICByZXR1cm4gdGhhdAorfQorCitmdW5jdGlvbiBmcm9tQXJyYXkgKHRoYXQsIGFycmF5KSB7CisgIHZhciBsZW5ndGggPSBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwCisgIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHsKKyAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTUKKyAgfQorICByZXR1cm4gdGhhdAorfQorCisvLyBEdXBsaWNhdGUgb2YgZnJvbUFycmF5KCkgdG8ga2VlcCBmcm9tQXJyYXkoKSBtb25vbW9ycGhpYy4KK2Z1bmN0aW9uIGZyb21UeXBlZEFycmF5ICh0aGF0LCBhcnJheSkgeworICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMAorICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKQorICAvLyBUcnVuY2F0aW5nIHRoZSBlbGVtZW50cyBpcyBwcm9iYWJseSBub3Qgd2hhdCBwZW9wbGUgZXhwZWN0IGZyb20gdHlwZWQKKyAgLy8gYXJyYXlzIHdpdGggQllURVNfUEVSX0VMRU1FTlQgPiAxIGJ1dCBpdCdzIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3IKKyAgLy8gb2YgdGhlIG9sZCBCdWZmZXIgY29uc3RydWN0b3IuCisgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHsKKyAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTUKKyAgfQorICByZXR1cm4gdGhhdAorfQorCitmdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5KSB7CisgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgeworICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZQorICAgIGFycmF5LmJ5dGVMZW5ndGgKKyAgICB0aGF0ID0gQnVmZmVyLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KGFycmF5KSkKKyAgfSBlbHNlIHsKKyAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzCisgICAgdGhhdCA9IGZyb21UeXBlZEFycmF5KHRoYXQsIG5ldyBVaW50OEFycmF5KGFycmF5KSkKKyAgfQorICByZXR1cm4gdGhhdAorfQorCitmdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkgeworICB2YXIgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMAorICB0aGF0ID0gYWxsb2NhdGUodGhhdCwgbGVuZ3RoKQorICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CisgICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1CisgIH0KKyAgcmV0dXJuIHRoYXQKK30KKworLy8gRGVzZXJpYWxpemUgeyB0eXBlOiAnQnVmZmVyJywgZGF0YTogWzEsMiwzLC4uLl0gfSBpbnRvIGEgQnVmZmVyIG9iamVjdC4KKy8vIFJldHVybnMgYSB6ZXJvLWxlbmd0aCBidWZmZXIgZm9yIGlucHV0cyB0aGF0IGRvbid0IGNvbmZvcm0gdG8gdGhlIHNwZWMuCitmdW5jdGlvbiBmcm9tSnNvbk9iamVjdCAodGhhdCwgb2JqZWN0KSB7CisgIHZhciBhcnJheQorICB2YXIgbGVuZ3RoID0gMAorCisgIGlmIChvYmplY3QudHlwZSA9PT0gJ0J1ZmZlcicgJiYgaXNBcnJheShvYmplY3QuZGF0YSkpIHsKKyAgICBhcnJheSA9IG9iamVjdC5kYXRhCisgICAgbGVuZ3RoID0gY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMAorICB9CisgIHRoYXQgPSBhbGxvY2F0ZSh0aGF0LCBsZW5ndGgpCisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkgeworICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NQorICB9CisgIHJldHVybiB0aGF0Cit9CisKK2Z1bmN0aW9uIGFsbG9jYXRlICh0aGF0LCBsZW5ndGgpIHsKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlCisgICAgdGhhdCA9IEJ1ZmZlci5fYXVnbWVudChuZXcgVWludDhBcnJheShsZW5ndGgpKQorICB9IGVsc2UgeworICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3MKKyAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aAorICAgIHRoYXQuX2lzQnVmZmVyID0gdHJ1ZQorICB9CisKKyAgdmFyIGZyb21Qb29sID0gbGVuZ3RoICE9PSAwICYmIGxlbmd0aCA8PSBCdWZmZXIucG9vbFNpemUgPj4+IDEKKyAgaWYgKGZyb21Qb29sKSB0aGF0LnBhcmVudCA9IHJvb3RQYXJlbnQKKworICByZXR1cm4gdGhhdAorfQorCitmdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHsKKyAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwga01heExlbmd0aGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlbgorICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLikKKyAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHsKKyAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKQorICB9CisgIHJldHVybiBsZW5ndGggfCAwCit9CisKK2Z1bmN0aW9uIFNsb3dCdWZmZXIgKHN1YmplY3QsIGVuY29kaW5nKSB7CisgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTbG93QnVmZmVyKSkgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHN1YmplY3QsIGVuY29kaW5nKQorCisgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN1YmplY3QsIGVuY29kaW5nKQorICBkZWxldGUgYnVmLnBhcmVudAorICByZXR1cm4gYnVmCit9CisKK0J1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7CisgIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpCit9CisKK0J1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikgeworICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7CisgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpCisgIH0KKworICBpZiAoYSA9PT0gYikgcmV0dXJuIDAKKworICB2YXIgeCA9IGEubGVuZ3RoCisgIHZhciB5ID0gYi5sZW5ndGgKKworICB2YXIgaSA9IDAKKyAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpCisgIHdoaWxlIChpIDwgbGVuKSB7CisgICAgaWYgKGFbaV0gIT09IGJbaV0pIGJyZWFrCisKKyAgICArK2kKKyAgfQorCisgIGlmIChpICE9PSBsZW4pIHsKKyAgICB4ID0gYVtpXQorICAgIHkgPSBiW2ldCisgIH0KKworICBpZiAoeCA8IHkpIHJldHVybiAtMQorICBpZiAoeSA8IHgpIHJldHVybiAxCisgIHJldHVybiAwCit9CisKK0J1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHsKKyAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHsKKyAgICBjYXNlICdoZXgnOgorICAgIGNhc2UgJ3V0ZjgnOgorICAgIGNhc2UgJ3V0Zi04JzoKKyAgICBjYXNlICdhc2NpaSc6CisgICAgY2FzZSAnYmluYXJ5JzoKKyAgICBjYXNlICdiYXNlNjQnOgorICAgIGNhc2UgJ3Jhdyc6CisgICAgY2FzZSAndWNzMic6CisgICAgY2FzZSAndWNzLTInOgorICAgIGNhc2UgJ3V0ZjE2bGUnOgorICAgIGNhc2UgJ3V0Zi0xNmxlJzoKKyAgICAgIHJldHVybiB0cnVlCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZQorICB9Cit9CisKK0J1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkgeworICBpZiAoIWlzQXJyYXkobGlzdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2xpc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzLicpCisKKyAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7CisgICAgcmV0dXJuIG5ldyBCdWZmZXIoMCkKKyAgfQorCisgIHZhciBpCisgIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkgeworICAgIGxlbmd0aCA9IDAKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoCisgICAgfQorICB9CisKKyAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIobGVuZ3RoKQorICB2YXIgcG9zID0gMAorICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgeworICAgIHZhciBpdGVtID0gbGlzdFtpXQorICAgIGl0ZW0uY29weShidWYsIHBvcykKKyAgICBwb3MgKz0gaXRlbS5sZW5ndGgKKyAgfQorICByZXR1cm4gYnVmCit9CisKK2Z1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHsKKyAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSBzdHJpbmcgPSAnJyArIHN0cmluZworCisgIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoCisgIGlmIChsZW4gPT09IDApIHJldHVybiAwCisKKyAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uCisgIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlCisgIGZvciAoOzspIHsKKyAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CisgICAgICBjYXNlICdhc2NpaSc6CisgICAgICBjYXNlICdiaW5hcnknOgorICAgICAgLy8gRGVwcmVjYXRlZAorICAgICAgY2FzZSAncmF3JzoKKyAgICAgIGNhc2UgJ3Jhd3MnOgorICAgICAgICByZXR1cm4gbGVuCisgICAgICBjYXNlICd1dGY4JzoKKyAgICAgIGNhc2UgJ3V0Zi04JzoKKyAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoCisgICAgICBjYXNlICd1Y3MyJzoKKyAgICAgIGNhc2UgJ3Vjcy0yJzoKKyAgICAgIGNhc2UgJ3V0ZjE2bGUnOgorICAgICAgY2FzZSAndXRmLTE2bGUnOgorICAgICAgICByZXR1cm4gbGVuICogMgorICAgICAgY2FzZSAnaGV4JzoKKyAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMQorICAgICAgY2FzZSAnYmFzZTY0JzoKKyAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGgKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4CisgICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkKKyAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlCisgICAgfQorICB9Cit9CitCdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKKworLy8gcHJlLXNldCBmb3IgdmFsdWVzIHRoYXQgbWF5IGV4aXN0IGluIHRoZSBmdXR1cmUKK0J1ZmZlci5wcm90b3R5cGUubGVuZ3RoID0gdW5kZWZpbmVkCitCdWZmZXIucHJvdG90eXBlLnBhcmVudCA9IHVuZGVmaW5lZAorCitmdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7CisgIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlCisKKyAgc3RhcnQgPSBzdGFydCB8IDAKKyAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID09PSBJbmZpbml0eSA/IHRoaXMubGVuZ3RoIDogZW5kIHwgMAorCisgIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnCisgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMAorICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoCisgIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJworCisgIHdoaWxlICh0cnVlKSB7CisgICAgc3dpdGNoIChlbmNvZGluZykgeworICAgICAgY2FzZSAnaGV4JzoKKyAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCisKKyAgICAgIGNhc2UgJ3V0ZjgnOgorICAgICAgY2FzZSAndXRmLTgnOgorICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCisKKyAgICAgIGNhc2UgJ2FzY2lpJzoKKyAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZCkKKworICAgICAgY2FzZSAnYmluYXJ5JzoKKyAgICAgICAgcmV0dXJuIGJpbmFyeVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCisKKyAgICAgIGNhc2UgJ2Jhc2U2NCc6CisgICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKQorCisgICAgICBjYXNlICd1Y3MyJzoKKyAgICAgIGNhc2UgJ3Vjcy0yJzoKKyAgICAgIGNhc2UgJ3V0ZjE2bGUnOgorICAgICAgY2FzZSAndXRmLTE2bGUnOgorICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKQorICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpCisgICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZQorICAgIH0KKyAgfQorfQorCitCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkgeworICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwCisgIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJworICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpCisgIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKQorfQorCitCdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikgeworICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpCisgIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZQorICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDAKK30KKworQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7CisgIHZhciBzdHIgPSAnJworICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUworICBpZiAodGhpcy5sZW5ndGggPiAwKSB7CisgICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJykKKyAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnCisgIH0KKyAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPicKK30KKworQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYikgeworICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpCisgIGlmICh0aGlzID09PSBiKSByZXR1cm4gMAorICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikKK30KKworQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0KSB7CisgIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmYKKyAgZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDAKKyAgYnl0ZU9mZnNldCA+Pj0gMAorCisgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xCisgIGlmIChieXRlT2Zmc2V0ID49IHRoaXMubGVuZ3RoKSByZXR1cm4gLTEKKworICAvLyBOZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCisgIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoICsgYnl0ZU9mZnNldCwgMCkKKworICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKKyAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xIC8vIHNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nIGFsd2F5cyBmYWlscworICAgIHJldHVybiBTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpCisgIH0KKyAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7CisgICAgcmV0dXJuIGFycmF5SW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQpCisgIH0KKyAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7CisgICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHsKKyAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcywgdmFsLCBieXRlT2Zmc2V0KQorICAgIH0KKyAgICByZXR1cm4gYXJyYXlJbmRleE9mKHRoaXMsIFsgdmFsIF0sIGJ5dGVPZmZzZXQpCisgIH0KKworICBmdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0KSB7CisgICAgdmFyIGZvdW5kSW5kZXggPSAtMQorICAgIGZvciAodmFyIGkgPSAwOyBieXRlT2Zmc2V0ICsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgaWYgKGFycltieXRlT2Zmc2V0ICsgaV0gPT09IHZhbFtmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleF0pIHsKKyAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaQorICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWwubGVuZ3RoKSByZXR1cm4gYnl0ZU9mZnNldCArIGZvdW5kSW5kZXgKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZvdW5kSW5kZXggPSAtMQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTEKKyAgfQorCisgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpCit9CisKKy8vIGBnZXRgIGlzIGRlcHJlY2F0ZWQKK0J1ZmZlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0IChvZmZzZXQpIHsKKyAgY29uc29sZS5sb2coJy5nZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpCisgIHJldHVybiB0aGlzLnJlYWRVSW50OChvZmZzZXQpCit9CisKKy8vIGBzZXRgIGlzIGRlcHJlY2F0ZWQKK0J1ZmZlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gc2V0ICh2LCBvZmZzZXQpIHsKKyAgY29uc29sZS5sb2coJy5zZXQoKSBpcyBkZXByZWNhdGVkLiBBY2Nlc3MgdXNpbmcgYXJyYXkgaW5kZXhlcyBpbnN0ZWFkLicpCisgIHJldHVybiB0aGlzLndyaXRlVUludDgodiwgb2Zmc2V0KQorfQorCitmdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CisgIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDAKKyAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXQKKyAgaWYgKCFsZW5ndGgpIHsKKyAgICBsZW5ndGggPSByZW1haW5pbmcKKyAgfSBlbHNlIHsKKyAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKQorICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHsKKyAgICAgIGxlbmd0aCA9IHJlbWFpbmluZworICAgIH0KKyAgfQorCisgIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzCisgIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoCisgIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpCisKKyAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHsKKyAgICBsZW5ndGggPSBzdHJMZW4gLyAyCisgIH0KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpCisgICAgaWYgKGlzTmFOKHBhcnNlZCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJykKKyAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWQKKyAgfQorICByZXR1cm4gaQorfQorCitmdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgeworICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKQorfQorCitmdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHsKKyAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpCit9CisKK2Z1bmN0aW9uIGJpbmFyeVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHsKKyAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQorfQorCitmdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CisgIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aCkKK30KKworZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHsKKyAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aCkKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykgeworICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKQorICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHsKKyAgICBlbmNvZGluZyA9ICd1dGY4JworICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoCisgICAgb2Zmc2V0ID0gMAorICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZykKKyAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykgeworICAgIGVuY29kaW5nID0gb2Zmc2V0CisgICAgbGVuZ3RoID0gdGhpcy5sZW5ndGgKKyAgICBvZmZzZXQgPSAwCisgIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pCisgIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkgeworICAgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkgeworICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMAorICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnCisgICAgfSBlbHNlIHsKKyAgICAgIGVuY29kaW5nID0gbGVuZ3RoCisgICAgICBsZW5ndGggPSB1bmRlZmluZWQKKyAgICB9CisgIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTMKKyAgfSBlbHNlIHsKKyAgICB2YXIgc3dhcCA9IGVuY29kaW5nCisgICAgZW5jb2RpbmcgPSBvZmZzZXQKKyAgICBvZmZzZXQgPSBsZW5ndGggfCAwCisgICAgbGVuZ3RoID0gc3dhcAorICB9CisKKyAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0CisgIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZworCisgIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7CisgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJykKKyAgfQorCisgIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnCisKKyAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2UKKyAgZm9yICg7OykgeworICAgIHN3aXRjaCAoZW5jb2RpbmcpIHsKKyAgICAgIGNhc2UgJ2hleCc6CisgICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQorCisgICAgICBjYXNlICd1dGY4JzoKKyAgICAgIGNhc2UgJ3V0Zi04JzoKKyAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQorCisgICAgICBjYXNlICdhc2NpaSc6CisgICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpCisKKyAgICAgIGNhc2UgJ2JpbmFyeSc6CisgICAgICAgIHJldHVybiBiaW5hcnlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQorCisgICAgICBjYXNlICdiYXNlNjQnOgorICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZQorICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKKworICAgICAgY2FzZSAndWNzMic6CisgICAgICBjYXNlICd1Y3MtMic6CisgICAgICBjYXNlICd1dGYxNmxlJzoKKyAgICAgIGNhc2UgJ3V0Zi0xNmxlJzoKKyAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQorCisgICAgICBkZWZhdWx0OgorICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZykKKyAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKQorICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWUKKyAgICB9CisgIH0KK30KKworQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkgeworICByZXR1cm4geworICAgIHR5cGU6ICdCdWZmZXInLAorICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKQorICB9Cit9CisKK2Z1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHsKKyAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkgeworICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpCisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSkKKyAgfQorfQorCitmdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkgeworICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpCisgIHZhciByZXMgPSBbXQorCisgIHZhciBpID0gc3RhcnQKKyAgd2hpbGUgKGkgPCBlbmQpIHsKKyAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldCisgICAgdmFyIGNvZGVQb2ludCA9IG51bGwKKyAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDQKKyAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gMworICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyCisgICAgICA6IDEKKworICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHsKKyAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnQKKworICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkgeworICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlCisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQorICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7CisgICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRikKKyAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RikgeworICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQorICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl0KKyAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKKyAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKQorICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkgeworICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQorICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl0KKyAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXQorICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7CisgICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRikKKyAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkgeworICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHsKKyAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGEKKyAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGUKKyAgICAgIGNvZGVQb2ludCA9IDB4RkZGRAorICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDEKKyAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikgeworICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSkKKyAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwCisgICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApCisgICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRgorICAgIH0KKworICAgIHJlcy5wdXNoKGNvZGVQb2ludCkKKyAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2UKKyAgfQorCisgIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKQorfQorCisvLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGgKKy8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy4KKy8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHkKK3ZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMAorCitmdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHsKKyAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoCisgIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHsKKyAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKCkKKyAgfQorCisgIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZCIuCisgIHZhciByZXMgPSAnJworICB2YXIgaSA9IDAKKyAgd2hpbGUgKGkgPCBsZW4pIHsKKyAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgKKyAgICAgIFN0cmluZywKKyAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkKKyAgICApCisgIH0KKyAgcmV0dXJuIHJlcworfQorCitmdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHsKKyAgdmFyIHJldCA9ICcnCisgIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCkKKworICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpCisgIH0KKyAgcmV0dXJuIHJldAorfQorCitmdW5jdGlvbiBiaW5hcnlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CisgIHZhciByZXQgPSAnJworICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpCisKKyAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pCisgIH0KKyAgcmV0dXJuIHJldAorfQorCitmdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CisgIHZhciBsZW4gPSBidWYubGVuZ3RoCisKKyAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMAorICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuCisKKyAgdmFyIG91dCA9ICcnCisgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSkKKyAgfQorICByZXR1cm4gb3V0Cit9CisKK2Z1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CisgIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKQorICB2YXIgcmVzID0gJycKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikgeworICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KQorICB9CisgIHJldHVybiByZXMKK30KKworQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7CisgIHZhciBsZW4gPSB0aGlzLmxlbmd0aAorICBzdGFydCA9IH5+c3RhcnQKKyAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZAorCisgIGlmIChzdGFydCA8IDApIHsKKyAgICBzdGFydCArPSBsZW4KKyAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDAKKyAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikgeworICAgIHN0YXJ0ID0gbGVuCisgIH0KKworICBpZiAoZW5kIDwgMCkgeworICAgIGVuZCArPSBsZW4KKyAgICBpZiAoZW5kIDwgMCkgZW5kID0gMAorICB9IGVsc2UgaWYgKGVuZCA+IGxlbikgeworICAgIGVuZCA9IGxlbgorICB9CisKKyAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydAorCisgIHZhciBuZXdCdWYKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgbmV3QnVmID0gQnVmZmVyLl9hdWdtZW50KHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZCkpCisgIH0gZWxzZSB7CisgICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnQKKyAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgaSsrKSB7CisgICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF0KKyAgICB9CisgIH0KKworICBpZiAobmV3QnVmLmxlbmd0aCkgbmV3QnVmLnBhcmVudCA9IHRoaXMucGFyZW50IHx8IHRoaXMKKworICByZXR1cm4gbmV3QnVmCit9CisKKy8qCisgKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy4KKyAqLworZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHsKKyAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JykKKyAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwCisgIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCisKKyAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XQorICB2YXIgbXVsID0gMQorICB2YXIgaSA9IDAKKyAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHsKKyAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bAorICB9CisKKyAgcmV0dXJuIHZhbAorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwCisgIGlmICghbm9Bc3NlcnQpIHsKKyAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKQorICB9CisKKyAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXQorICB2YXIgbXVsID0gMQorICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHsKKyAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsCisgIH0KKworICByZXR1cm4gdmFsCit9CisKK0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpCisgIHJldHVybiB0aGlzW29mZnNldF0KK30KKworQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aCkKKyAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpCit9CisKK0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpCisgIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkgeworICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKQorCisgIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfAorICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfAorICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArCisgICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMCkKK30KKworQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKKworICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgKworICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfAorICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHwKKyAgICB0aGlzW29mZnNldCArIDNdKQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgeworICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAorICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKQorCisgIHZhciB2YWwgPSB0aGlzW29mZnNldF0KKyAgdmFyIG11bCA9IDEKKyAgdmFyIGkgPSAwCisgIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CisgICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWwKKyAgfQorICBtdWwgKj0gMHg4MAorCisgIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpCisKKyAgcmV0dXJuIHZhbAorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgeworICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAorICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKQorCisgIHZhciBpID0gYnl0ZUxlbmd0aAorICB2YXIgbXVsID0gMQorICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldCisgIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkgeworICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWwKKyAgfQorICBtdWwgKj0gMHg4MAorCisgIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpCisKKyAgcmV0dXJuIHZhbAorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aCkKKyAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKQorICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSkKK30KKworQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpCisgIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KQorICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsCit9CisKK0J1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkgeworICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKQorICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOCkKKyAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbAorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKKworICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfAorICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHwKKyAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfAorICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKKworICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfAorICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8CisgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfAorICAgICh0aGlzW29mZnNldCArIDNdKQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKKyAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKKyAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNCkKK30KKworQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aCkKKyAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KQorfQorCitCdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkgeworICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKQorICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KQorfQorCitmdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7CisgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2J1ZmZlciBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJykKKyAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmFsdWUgaXMgb3V0IG9mIGJvdW5kcycpCisgIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJykKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAorICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCksIDApCisKKyAgdmFyIG11bCA9IDEKKyAgdmFyIGkgPSAwCisgIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRgorICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkgeworICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRgorICB9CisKKyAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAorICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCksIDApCisKKyAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMQorICB2YXIgbXVsID0gMQorICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGCisgIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkgeworICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRgorICB9CisKKyAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgdmFsdWUgPSArdmFsdWUKKyAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAorICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKQorICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpCisgIHRoaXNbb2Zmc2V0XSA9IHZhbHVlCisgIHJldHVybiBvZmZzZXQgKyAxCit9CisKK2Z1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikgeworICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMQorICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgaSsrKSB7CisgICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj4KKyAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOAorICB9Cit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKQorICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKKyAgICB0aGlzW29mZnNldF0gPSB2YWx1ZQorICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCisgIH0gZWxzZSB7CisgICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSkKKyAgfQorICByZXR1cm4gb2Zmc2V0ICsgMgorfQorCitCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMCkKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KQorICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSB2YWx1ZQorICB9IGVsc2UgeworICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKQorICB9CisgIHJldHVybiBvZmZzZXQgKyAyCit9CisKK2Z1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikgeworICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDEKKyAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7IGkrKykgeworICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmYKKyAgfQorfQorCitCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApCisgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgeworICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KQorICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KQorICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCisgICAgdGhpc1tvZmZzZXRdID0gdmFsdWUKKyAgfSBlbHNlIHsKKyAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKQorICB9CisgIHJldHVybiBvZmZzZXQgKyA0Cit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMCkKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNCkKKyAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNikKKyAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KQorICAgIHRoaXNbb2Zmc2V0ICsgM10gPSB2YWx1ZQorICB9IGVsc2UgeworICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKQorICB9CisgIHJldHVybiBvZmZzZXQgKyA0Cit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgeworICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSkKKworICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KQorICB9CisKKyAgdmFyIGkgPSAwCisgIHZhciBtdWwgPSAxCisgIHZhciBzdWIgPSB2YWx1ZSA8IDAgPyAxIDogMAorICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkYKKyAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHsKKyAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGCisgIH0KKworICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aAorfQorCitCdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGlmICghbm9Bc3NlcnQpIHsKKyAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpCisKKyAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdCkKKyAgfQorCisgIHZhciBpID0gYnl0ZUxlbmd0aCAtIDEKKyAgdmFyIG11bCA9IDEKKyAgdmFyIHN1YiA9IHZhbHVlIDwgMCA/IDEgOiAwCisgIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkYKKyAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7CisgICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRgorICB9CisKKyAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApCisgIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSkKKyAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxCisgIHRoaXNbb2Zmc2V0XSA9IHZhbHVlCisgIHJldHVybiBvZmZzZXQgKyAxCit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMCkKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgdGhpc1tvZmZzZXRdID0gdmFsdWUKKyAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KQorICB9IGVsc2UgeworICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCisgIH0KKyAgcmV0dXJuIG9mZnNldCArIDIKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKQorICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKKyAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpCisgICAgdGhpc1tvZmZzZXQgKyAxXSA9IHZhbHVlCisgIH0gZWxzZSB7CisgICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpCisgIH0KKyAgcmV0dXJuIG9mZnNldCArIDIKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHZhbHVlID0gK3ZhbHVlCisgIG9mZnNldCA9IG9mZnNldCB8IDAKKyAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApCisgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgeworICAgIHRoaXNbb2Zmc2V0XSA9IHZhbHVlCisgICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkKKyAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNikKKyAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCkKKyAgfSBlbHNlIHsKKyAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKQorICB9CisgIHJldHVybiBvZmZzZXQgKyA0Cit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgeworICB2YWx1ZSA9ICt2YWx1ZQorICBvZmZzZXQgPSBvZmZzZXQgfCAwCisgIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKQorICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDEKKyAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CisgICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNCkKKyAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNikKKyAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KQorICAgIHRoaXNbb2Zmc2V0ICsgM10gPSB2YWx1ZQorICB9IGVsc2UgeworICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKQorICB9CisgIHJldHVybiBvZmZzZXQgKyA0Cit9CisKK2Z1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7CisgIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZhbHVlIGlzIG91dCBvZiBib3VuZHMnKQorICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2luZGV4IG91dCBvZiByYW5nZScpCisgIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignaW5kZXggb3V0IG9mIHJhbmdlJykKK30KKworZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7CisgIGlmICghbm9Bc3NlcnQpIHsKKyAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOCkKKyAgfQorICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNCkKKyAgcmV0dXJuIG9mZnNldCArIDQKK30KKworQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KQorfQorCitCdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHsKKyAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KQorfQorCitmdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7CisgIGlmICghbm9Bc3NlcnQpIHsKKyAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KQorICB9CisgIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KQorICByZXR1cm4gb2Zmc2V0ICsgOAorfQorCitCdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgeworICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpCit9CisKK0J1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CisgIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpCit9CisKKy8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aCkKK0J1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHsKKyAgaWYgKCFzdGFydCkgc3RhcnQgPSAwCisgIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGgKKyAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aAorICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDAKKyAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0CisKKyAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lCisgIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMAorICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDAKKworICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zCisgIGlmICh0YXJnZXRTdGFydCA8IDApIHsKKyAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpCisgIH0KKyAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKQorICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJykKKworICAvLyBBcmUgd2Ugb29iPworICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoCisgIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkgeworICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0CisgIH0KKworICB2YXIgbGVuID0gZW5kIC0gc3RhcnQKKyAgdmFyIGkKKworICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHsKKyAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmQKKyAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgeworICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF0KKyAgICB9CisgIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKKyAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XQorICAgIH0KKyAgfSBlbHNlIHsKKyAgICB0YXJnZXQuX3NldCh0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksIHRhcmdldFN0YXJ0KQorICB9CisKKyAgcmV0dXJuIGxlbgorfQorCisvLyBmaWxsKHZhbHVlLCBzdGFydD0wLCBlbmQ9YnVmZmVyLmxlbmd0aCkKK0J1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbHVlLCBzdGFydCwgZW5kKSB7CisgIGlmICghdmFsdWUpIHZhbHVlID0gMAorICBpZiAoIXN0YXJ0KSBzdGFydCA9IDAKKyAgaWYgKCFlbmQpIGVuZCA9IHRoaXMubGVuZ3RoCisKKyAgaWYgKGVuZCA8IHN0YXJ0KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZW5kIDwgc3RhcnQnKQorCisgIC8vIEZpbGwgMCBieXRlczsgd2UncmUgZG9uZQorICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuCisgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuCisKKyAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3N0YXJ0IG91dCBvZiBib3VuZHMnKQorICBpZiAoZW5kIDwgMCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2VuZCBvdXQgb2YgYm91bmRzJykKKworICB2YXIgaQorICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgeworICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgIHRoaXNbaV0gPSB2YWx1ZQorICAgIH0KKyAgfSBlbHNlIHsKKyAgICB2YXIgYnl0ZXMgPSB1dGY4VG9CeXRlcyh2YWx1ZS50b1N0cmluZygpKQorICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGgKKyAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICB0aGlzW2ldID0gYnl0ZXNbaSAlIGxlbl0KKyAgICB9CisgIH0KKworICByZXR1cm4gdGhpcworfQorCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgYEFycmF5QnVmZmVyYCB3aXRoIHRoZSAqY29waWVkKiBtZW1vcnkgb2YgdGhlIGJ1ZmZlciBpbnN0YW5jZS4KKyAqIEFkZGVkIGluIE5vZGUgMC4xMi4gT25seSBhdmFpbGFibGUgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IEFycmF5QnVmZmVyLgorICovCitCdWZmZXIucHJvdG90eXBlLnRvQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiB0b0FycmF5QnVmZmVyICgpIHsKKyAgaWYgKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJykgeworICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgeworICAgICAgcmV0dXJuIChuZXcgQnVmZmVyKHRoaXMpKS5idWZmZXIKKyAgICB9IGVsc2UgeworICAgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKQorICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGJ1Zi5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkgeworICAgICAgICBidWZbaV0gPSB0aGlzW2ldCisgICAgICB9CisgICAgICByZXR1cm4gYnVmLmJ1ZmZlcgorICAgIH0KKyAgfSBlbHNlIHsKKyAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCdWZmZXIudG9BcnJheUJ1ZmZlciBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlcicpCisgIH0KK30KKworLy8gSEVMUEVSIEZVTkNUSU9OUworLy8gPT09PT09PT09PT09PT09PQorCit2YXIgQlAgPSBCdWZmZXIucHJvdG90eXBlCisKKy8qKgorICogQXVnbWVudCBhIFVpbnQ4QXJyYXkgKmluc3RhbmNlKiAobm90IHRoZSBVaW50OEFycmF5IGNsYXNzISkgd2l0aCBCdWZmZXIgbWV0aG9kcworICovCitCdWZmZXIuX2F1Z21lbnQgPSBmdW5jdGlvbiBfYXVnbWVudCAoYXJyKSB7CisgIGFyci5jb25zdHJ1Y3RvciA9IEJ1ZmZlcgorICBhcnIuX2lzQnVmZmVyID0gdHJ1ZQorCisgIC8vIHNhdmUgcmVmZXJlbmNlIHRvIG9yaWdpbmFsIFVpbnQ4QXJyYXkgc2V0IG1ldGhvZCBiZWZvcmUgb3ZlcndyaXRpbmcKKyAgYXJyLl9zZXQgPSBhcnIuc2V0CisKKyAgLy8gZGVwcmVjYXRlZAorICBhcnIuZ2V0ID0gQlAuZ2V0CisgIGFyci5zZXQgPSBCUC5zZXQKKworICBhcnIud3JpdGUgPSBCUC53cml0ZQorICBhcnIudG9TdHJpbmcgPSBCUC50b1N0cmluZworICBhcnIudG9Mb2NhbGVTdHJpbmcgPSBCUC50b1N0cmluZworICBhcnIudG9KU09OID0gQlAudG9KU09OCisgIGFyci5lcXVhbHMgPSBCUC5lcXVhbHMKKyAgYXJyLmNvbXBhcmUgPSBCUC5jb21wYXJlCisgIGFyci5pbmRleE9mID0gQlAuaW5kZXhPZgorICBhcnIuY29weSA9IEJQLmNvcHkKKyAgYXJyLnNsaWNlID0gQlAuc2xpY2UKKyAgYXJyLnJlYWRVSW50TEUgPSBCUC5yZWFkVUludExFCisgIGFyci5yZWFkVUludEJFID0gQlAucmVhZFVJbnRCRQorICBhcnIucmVhZFVJbnQ4ID0gQlAucmVhZFVJbnQ4CisgIGFyci5yZWFkVUludDE2TEUgPSBCUC5yZWFkVUludDE2TEUKKyAgYXJyLnJlYWRVSW50MTZCRSA9IEJQLnJlYWRVSW50MTZCRQorICBhcnIucmVhZFVJbnQzMkxFID0gQlAucmVhZFVJbnQzMkxFCisgIGFyci5yZWFkVUludDMyQkUgPSBCUC5yZWFkVUludDMyQkUKKyAgYXJyLnJlYWRJbnRMRSA9IEJQLnJlYWRJbnRMRQorICBhcnIucmVhZEludEJFID0gQlAucmVhZEludEJFCisgIGFyci5yZWFkSW50OCA9IEJQLnJlYWRJbnQ4CisgIGFyci5yZWFkSW50MTZMRSA9IEJQLnJlYWRJbnQxNkxFCisgIGFyci5yZWFkSW50MTZCRSA9IEJQLnJlYWRJbnQxNkJFCisgIGFyci5yZWFkSW50MzJMRSA9IEJQLnJlYWRJbnQzMkxFCisgIGFyci5yZWFkSW50MzJCRSA9IEJQLnJlYWRJbnQzMkJFCisgIGFyci5yZWFkRmxvYXRMRSA9IEJQLnJlYWRGbG9hdExFCisgIGFyci5yZWFkRmxvYXRCRSA9IEJQLnJlYWRGbG9hdEJFCisgIGFyci5yZWFkRG91YmxlTEUgPSBCUC5yZWFkRG91YmxlTEUKKyAgYXJyLnJlYWREb3VibGVCRSA9IEJQLnJlYWREb3VibGVCRQorICBhcnIud3JpdGVVSW50OCA9IEJQLndyaXRlVUludDgKKyAgYXJyLndyaXRlVUludExFID0gQlAud3JpdGVVSW50TEUKKyAgYXJyLndyaXRlVUludEJFID0gQlAud3JpdGVVSW50QkUKKyAgYXJyLndyaXRlVUludDE2TEUgPSBCUC53cml0ZVVJbnQxNkxFCisgIGFyci53cml0ZVVJbnQxNkJFID0gQlAud3JpdGVVSW50MTZCRQorICBhcnIud3JpdGVVSW50MzJMRSA9IEJQLndyaXRlVUludDMyTEUKKyAgYXJyLndyaXRlVUludDMyQkUgPSBCUC53cml0ZVVJbnQzMkJFCisgIGFyci53cml0ZUludExFID0gQlAud3JpdGVJbnRMRQorICBhcnIud3JpdGVJbnRCRSA9IEJQLndyaXRlSW50QkUKKyAgYXJyLndyaXRlSW50OCA9IEJQLndyaXRlSW50OAorICBhcnIud3JpdGVJbnQxNkxFID0gQlAud3JpdGVJbnQxNkxFCisgIGFyci53cml0ZUludDE2QkUgPSBCUC53cml0ZUludDE2QkUKKyAgYXJyLndyaXRlSW50MzJMRSA9IEJQLndyaXRlSW50MzJMRQorICBhcnIud3JpdGVJbnQzMkJFID0gQlAud3JpdGVJbnQzMkJFCisgIGFyci53cml0ZUZsb2F0TEUgPSBCUC53cml0ZUZsb2F0TEUKKyAgYXJyLndyaXRlRmxvYXRCRSA9IEJQLndyaXRlRmxvYXRCRQorICBhcnIud3JpdGVEb3VibGVMRSA9IEJQLndyaXRlRG91YmxlTEUKKyAgYXJyLndyaXRlRG91YmxlQkUgPSBCUC53cml0ZURvdWJsZUJFCisgIGFyci5maWxsID0gQlAuZmlsbAorICBhcnIuaW5zcGVjdCA9IEJQLmluc3BlY3QKKyAgYXJyLnRvQXJyYXlCdWZmZXIgPSBCUC50b0FycmF5QnVmZmVyCisKKyAgcmV0dXJuIGFycgorfQorCit2YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXC8wLTlBLVphLXotX10vZworCitmdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7CisgIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcbiBhbmQgXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3QKKyAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKQorICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnCisgIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnCisgIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdAorICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHsKKyAgICBzdHIgPSBzdHIgKyAnPScKKyAgfQorICByZXR1cm4gc3RyCit9CisKK2Z1bmN0aW9uIHN0cmluZ3RyaW0gKHN0cikgeworICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpCisgIHJldHVybiBzdHIucmVwbGFjZSgvXlxzK3xccyskL2csICcnKQorfQorCitmdW5jdGlvbiB0b0hleCAobikgeworICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNikKKyAgcmV0dXJuIG4udG9TdHJpbmcoMTYpCit9CisKK2Z1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7CisgIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHkKKyAgdmFyIGNvZGVQb2ludAorICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aAorICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGwKKyAgdmFyIGJ5dGVzID0gW10KKworICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSkKKworICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnQKKyAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkgeworICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWQKKyAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkgeworICAgICAgICAvLyBubyBsZWFkIHlldAorICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7CisgICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbAorICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKQorICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkgeworICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWQKKyAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKKyAgICAgICAgICBjb250aW51ZQorICAgICAgICB9CisKKyAgICAgICAgLy8gdmFsaWQgbGVhZAorICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50CisKKyAgICAgICAgY29udGludWUKKyAgICAgIH0KKworICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvdworICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkgeworICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKKyAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludAorICAgICAgICBjb250aW51ZQorICAgICAgfQorCisgICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpcgorICAgICAgY29kZVBvaW50ID0gbGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCB8IDB4MTAwMDAKKyAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHsKKyAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWQKKyAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKQorICAgIH0KKworICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsCisKKyAgICAvLyBlbmNvZGUgdXRmOAorICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7CisgICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWsKKyAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KQorICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHsKKyAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVhaworICAgICAgYnl0ZXMucHVzaCgKKyAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsCisgICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwCisgICAgICApCisgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7CisgICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWsKKyAgICAgIGJ5dGVzLnB1c2goCisgICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLAorICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsCisgICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwCisgICAgICApCisgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkgeworICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrCisgICAgICBieXRlcy5wdXNoKAorICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsCisgICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCwKKyAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLAorICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MAorICAgICAgKQorICAgIH0gZWxzZSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpCisgICAgfQorICB9CisKKyAgcmV0dXJuIGJ5dGVzCit9CisKK2Z1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7CisgIHZhciBieXRlQXJyYXkgPSBbXQorICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykgeworICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLgorICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRikKKyAgfQorICByZXR1cm4gYnl0ZUFycmF5Cit9CisKK2Z1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7CisgIHZhciBjLCBoaSwgbG8KKyAgdmFyIGJ5dGVBcnJheSA9IFtdCisgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CisgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrCisKKyAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSkKKyAgICBoaSA9IGMgPj4gOAorICAgIGxvID0gYyAlIDI1NgorICAgIGJ5dGVBcnJheS5wdXNoKGxvKQorICAgIGJ5dGVBcnJheS5wdXNoKGhpKQorICB9CisKKyAgcmV0dXJuIGJ5dGVBcnJheQorfQorCitmdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHsKKyAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKQorfQorCitmdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWsKKyAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV0KKyAgfQorICByZXR1cm4gaQorfQorCit9LHsiYmFzZTY0LWpzIjoxNSwiaWVlZTc1NCI6MTYsImlzLWFycmF5IjoxN31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBsb29rdXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CisKKzsoZnVuY3Rpb24gKGV4cG9ydHMpIHsKKwkndXNlIHN0cmljdCc7CisKKyAgdmFyIEFyciA9ICh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcpCisgICAgPyBVaW50OEFycmF5CisgICAgOiBBcnJheQorCisJdmFyIFBMVVMgICA9ICcrJy5jaGFyQ29kZUF0KDApCisJdmFyIFNMQVNIICA9ICcvJy5jaGFyQ29kZUF0KDApCisJdmFyIE5VTUJFUiA9ICcwJy5jaGFyQ29kZUF0KDApCisJdmFyIExPV0VSICA9ICdhJy5jaGFyQ29kZUF0KDApCisJdmFyIFVQUEVSICA9ICdBJy5jaGFyQ29kZUF0KDApCisJdmFyIFBMVVNfVVJMX1NBRkUgPSAnLScuY2hhckNvZGVBdCgwKQorCXZhciBTTEFTSF9VUkxfU0FGRSA9ICdfJy5jaGFyQ29kZUF0KDApCisKKwlmdW5jdGlvbiBkZWNvZGUgKGVsdCkgeworCQl2YXIgY29kZSA9IGVsdC5jaGFyQ29kZUF0KDApCisJCWlmIChjb2RlID09PSBQTFVTIHx8CisJCSAgICBjb2RlID09PSBQTFVTX1VSTF9TQUZFKQorCQkJcmV0dXJuIDYyIC8vICcrJworCQlpZiAoY29kZSA9PT0gU0xBU0ggfHwKKwkJICAgIGNvZGUgPT09IFNMQVNIX1VSTF9TQUZFKQorCQkJcmV0dXJuIDYzIC8vICcvJworCQlpZiAoY29kZSA8IE5VTUJFUikKKwkJCXJldHVybiAtMSAvL25vIG1hdGNoCisJCWlmIChjb2RlIDwgTlVNQkVSICsgMTApCisJCQlyZXR1cm4gY29kZSAtIE5VTUJFUiArIDI2ICsgMjYKKwkJaWYgKGNvZGUgPCBVUFBFUiArIDI2KQorCQkJcmV0dXJuIGNvZGUgLSBVUFBFUgorCQlpZiAoY29kZSA8IExPV0VSICsgMjYpCisJCQlyZXR1cm4gY29kZSAtIExPV0VSICsgMjYKKwl9CisKKwlmdW5jdGlvbiBiNjRUb0J5dGVBcnJheSAoYjY0KSB7CisJCXZhciBpLCBqLCBsLCB0bXAsIHBsYWNlSG9sZGVycywgYXJyCisKKwkJaWYgKGI2NC5sZW5ndGggJSA0ID4gMCkgeworCQkJdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JykKKwkJfQorCisJCS8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpCisJCS8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXQKKwkJLy8gcmVwcmVzZW50IG9uZSBieXRlCisJCS8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlcworCQkvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlCisJCXZhciBsZW4gPSBiNjQubGVuZ3RoCisJCXBsYWNlSG9sZGVycyA9ICc9JyA9PT0gYjY0LmNoYXJBdChsZW4gLSAyKSA/IDIgOiAnPScgPT09IGI2NC5jaGFyQXQobGVuIC0gMSkgPyAxIDogMAorCisJCS8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YQorCQlhcnIgPSBuZXcgQXJyKGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVycykKKworCQkvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzCisJCWwgPSBwbGFjZUhvbGRlcnMgPiAwID8gYjY0Lmxlbmd0aCAtIDQgOiBiNjQubGVuZ3RoCisKKwkJdmFyIEwgPSAwCisKKwkJZnVuY3Rpb24gcHVzaCAodikgeworCQkJYXJyW0wrK10gPSB2CisJCX0KKworCQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz0gNCwgaiArPSAzKSB7CisJCQl0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDE4KSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDEyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMikpIDw8IDYpIHwgZGVjb2RlKGI2NC5jaGFyQXQoaSArIDMpKQorCQkJcHVzaCgodG1wICYgMHhGRjAwMDApID4+IDE2KQorCQkJcHVzaCgodG1wICYgMHhGRjAwKSA+PiA4KQorCQkJcHVzaCh0bXAgJiAweEZGKQorCQl9CisKKwkJaWYgKHBsYWNlSG9sZGVycyA9PT0gMikgeworCQkJdG1wID0gKGRlY29kZShiNjQuY2hhckF0KGkpKSA8PCAyKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpID4+IDQpCisJCQlwdXNoKHRtcCAmIDB4RkYpCisJCX0gZWxzZSBpZiAocGxhY2VIb2xkZXJzID09PSAxKSB7CisJCQl0bXAgPSAoZGVjb2RlKGI2NC5jaGFyQXQoaSkpIDw8IDEwKSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMSkpIDw8IDQpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPj4gMikKKwkJCXB1c2goKHRtcCA+PiA4KSAmIDB4RkYpCisJCQlwdXNoKHRtcCAmIDB4RkYpCisJCX0KKworCQlyZXR1cm4gYXJyCisJfQorCisJZnVuY3Rpb24gdWludDhUb0Jhc2U2NCAodWludDgpIHsKKwkJdmFyIGksCisJCQlleHRyYUJ5dGVzID0gdWludDgubGVuZ3RoICUgMywgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXMKKwkJCW91dHB1dCA9ICIiLAorCQkJdGVtcCwgbGVuZ3RoCisKKwkJZnVuY3Rpb24gZW5jb2RlIChudW0pIHsKKwkJCXJldHVybiBsb29rdXAuY2hhckF0KG51bSkKKwkJfQorCisJCWZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7CisJCQlyZXR1cm4gZW5jb2RlKG51bSA+PiAxOCAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiAxMiAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiA2ICYgMHgzRikgKyBlbmNvZGUobnVtICYgMHgzRikKKwkJfQorCisJCS8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKKwkJZm9yIChpID0gMCwgbGVuZ3RoID0gdWludDgubGVuZ3RoIC0gZXh0cmFCeXRlczsgaSA8IGxlbmd0aDsgaSArPSAzKSB7CisJCQl0ZW1wID0gKHVpbnQ4W2ldIDw8IDE2KSArICh1aW50OFtpICsgMV0gPDwgOCkgKyAodWludDhbaSArIDJdKQorCQkJb3V0cHV0ICs9IHRyaXBsZXRUb0Jhc2U2NCh0ZW1wKQorCQl9CisKKwkJLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlcworCQlzd2l0Y2ggKGV4dHJhQnl0ZXMpIHsKKwkJCWNhc2UgMToKKwkJCQl0ZW1wID0gdWludDhbdWludDgubGVuZ3RoIC0gMV0KKwkJCQlvdXRwdXQgKz0gZW5jb2RlKHRlbXAgPj4gMikKKwkJCQlvdXRwdXQgKz0gZW5jb2RlKCh0ZW1wIDw8IDQpICYgMHgzRikKKwkJCQlvdXRwdXQgKz0gJz09JworCQkJCWJyZWFrCisJCQljYXNlIDI6CisJCQkJdGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSkKKwkJCQlvdXRwdXQgKz0gZW5jb2RlKHRlbXAgPj4gMTApCisJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA+PiA0KSAmIDB4M0YpCisJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCAyKSAmIDB4M0YpCisJCQkJb3V0cHV0ICs9ICc9JworCQkJCWJyZWFrCisJCX0KKworCQlyZXR1cm4gb3V0cHV0CisJfQorCisJZXhwb3J0cy50b0J5dGVBcnJheSA9IGI2NFRvQnl0ZUFycmF5CisJZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gdWludDhUb0Jhc2U2NAorfSh0eXBlb2YgZXhwb3J0cyA9PT0gJ3VuZGVmaW5lZCcgPyAodGhpcy5iYXNlNjRqcyA9IHt9KSA6IGV4cG9ydHMpKQorCit9LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CitleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykgeworICB2YXIgZSwgbQorICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMQorICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMQorICB2YXIgZUJpYXMgPSBlTWF4ID4+IDEKKyAgdmFyIG5CaXRzID0gLTcKKyAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMAorICB2YXIgZCA9IGlzTEUgPyAtMSA6IDEKKyAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV0KKworICBpICs9IGQKKworICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKQorICBzID4+PSAoLW5CaXRzKQorICBuQml0cyArPSBlTGVuCisgIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9CisKKyAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSkKKyAgZSA+Pj0gKC1uQml0cykKKyAgbkJpdHMgKz0gbUxlbgorICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fQorCisgIGlmIChlID09PSAwKSB7CisgICAgZSA9IDEgLSBlQmlhcworICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHsKKyAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSkKKyAgfSBlbHNlIHsKKyAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pCisgICAgZSA9IGUgLSBlQmlhcworICB9CisgIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pCit9CisKK2V4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHsKKyAgdmFyIGUsIG0sIGMKKyAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDEKKyAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDEKKyAgdmFyIGVCaWFzID0gZU1heCA+PiAxCisgIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMCkKKyAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKQorICB2YXIgZCA9IGlzTEUgPyAxIDogLTEKKyAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDAKKworICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKQorCisgIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7CisgICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwCisgICAgZSA9IGVNYXgKKyAgfSBlbHNlIHsKKyAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMikKKyAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7CisgICAgICBlLS0KKyAgICAgIGMgKj0gMgorICAgIH0KKyAgICBpZiAoZSArIGVCaWFzID49IDEpIHsKKyAgICAgIHZhbHVlICs9IHJ0IC8gYworICAgIH0gZWxzZSB7CisgICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcykKKyAgICB9CisgICAgaWYgKHZhbHVlICogYyA+PSAyKSB7CisgICAgICBlKysKKyAgICAgIGMgLz0gMgorICAgIH0KKworICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkgeworICAgICAgbSA9IDAKKyAgICAgIGUgPSBlTWF4CisgICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkgeworICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pCisgICAgICBlID0gZSArIGVCaWFzCisgICAgfSBlbHNlIHsKKyAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKQorICAgICAgZSA9IDAKKyAgICB9CisgIH0KKworICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fQorCisgIGUgPSAoZSA8PCBtTGVuKSB8IG0KKyAgZUxlbiArPSBtTGVuCisgIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge30KKworICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjgKK30KKworfSx7fV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworCisvKioKKyAqIGlzQXJyYXkKKyAqLworCit2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7CisKKy8qKgorICogdG9TdHJpbmcKKyAqLworCit2YXIgc3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKworLyoqCisgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gYHZhbGAKKyAqIGlzIGFuIGFycmF5LgorICoKKyAqIGV4YW1wbGU6CisgKgorICogICAgICAgIGlzQXJyYXkoW10pOworICogICAgICAgIC8vID4gdHJ1ZQorICogICAgICAgIGlzQXJyYXkoYXJndW1lbnRzKTsKKyAqICAgICAgICAvLyA+IGZhbHNlCisgKiAgICAgICAgaXNBcnJheSgnJyk7CisgKiAgICAgICAgLy8gPiBmYWxzZQorICoKKyAqIEBwYXJhbSB7bWl4ZWR9IHZhbAorICogQHJldHVybiB7Ym9vbH0KKyAqLworCittb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXkgfHwgZnVuY3Rpb24gKHZhbCkgeworICByZXR1cm4gISEgdmFsICYmICdbb2JqZWN0IEFycmF5XScgPT0gc3RyLmNhbGwodmFsKTsKK307CisKK30se31dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qIGpzaGludCBub2RlOiB0cnVlICovCisoZnVuY3Rpb24gKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGZ1bmN0aW9uIENvb2tpZUFjY2Vzc0luZm8oZG9tYWluLCBwYXRoLCBzZWN1cmUsIHNjcmlwdCkgeworICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIENvb2tpZUFjY2Vzc0luZm8pIHsKKyAgICAgICAgICAgIHRoaXMuZG9tYWluID0gZG9tYWluIHx8IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRoaXMucGF0aCA9IHBhdGggfHwgIi8iOworICAgICAgICAgICAgdGhpcy5zZWN1cmUgPSAhIXNlY3VyZTsKKyAgICAgICAgICAgIHRoaXMuc2NyaXB0ID0gISFzY3JpcHQ7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IENvb2tpZUFjY2Vzc0luZm8oZG9tYWluLCBwYXRoLCBzZWN1cmUsIHNjcmlwdCk7CisgICAgfQorICAgIGV4cG9ydHMuQ29va2llQWNjZXNzSW5mbyA9IENvb2tpZUFjY2Vzc0luZm87CisKKyAgICBmdW5jdGlvbiBDb29raWUoY29va2llc3RyLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKSB7CisgICAgICAgIGlmIChjb29raWVzdHIgaW5zdGFuY2VvZiBDb29raWUpIHsKKyAgICAgICAgICAgIHJldHVybiBjb29raWVzdHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDb29raWUpIHsKKyAgICAgICAgICAgIHRoaXMubmFtZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZXhwaXJhdGlvbl9kYXRlID0gSW5maW5pdHk7CisgICAgICAgICAgICB0aGlzLnBhdGggPSBTdHJpbmcocmVxdWVzdF9wYXRoIHx8ICIvIik7CisgICAgICAgICAgICB0aGlzLmV4cGxpY2l0X3BhdGggPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuZG9tYWluID0gcmVxdWVzdF9kb21haW4gfHwgbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZXhwbGljaXRfZG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLnNlY3VyZSA9IGZhbHNlOyAvL2hvdyB0byBkZWZpbmUgZGVmYXVsdD8KKyAgICAgICAgICAgIHRoaXMubm9zY3JpcHQgPSBmYWxzZTsgLy9odHRwb25seQorICAgICAgICAgICAgaWYgKGNvb2tpZXN0cikgeworICAgICAgICAgICAgICAgIHRoaXMucGFyc2UoY29va2llc3RyLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgQ29va2llKGNvb2tpZXN0ciwgcmVxdWVzdF9kb21haW4sIHJlcXVlc3RfcGF0aCk7CisgICAgfQorICAgIGV4cG9ydHMuQ29va2llID0gQ29va2llOworCisgICAgQ29va2llLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkgeworICAgICAgICB2YXIgc3RyID0gW3RoaXMubmFtZSArICI9IiArIHRoaXMudmFsdWVdOworICAgICAgICBpZiAodGhpcy5leHBpcmF0aW9uX2RhdGUgIT09IEluZmluaXR5KSB7CisgICAgICAgICAgICBzdHIucHVzaCgiZXhwaXJlcz0iICsgKG5ldyBEYXRlKHRoaXMuZXhwaXJhdGlvbl9kYXRlKSkudG9HTVRTdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuZG9tYWluKSB7CisgICAgICAgICAgICBzdHIucHVzaCgiZG9tYWluPSIgKyB0aGlzLmRvbWFpbik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMucGF0aCkgeworICAgICAgICAgICAgc3RyLnB1c2goInBhdGg9IiArIHRoaXMucGF0aCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuc2VjdXJlKSB7CisgICAgICAgICAgICBzdHIucHVzaCgic2VjdXJlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMubm9zY3JpcHQpIHsKKyAgICAgICAgICAgIHN0ci5wdXNoKCJodHRwb25seSIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdHIuam9pbigiOyAiKTsKKyAgICB9OworCisgICAgQ29va2llLnByb3RvdHlwZS50b1ZhbHVlU3RyaW5nID0gZnVuY3Rpb24gdG9WYWx1ZVN0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMubmFtZSArICI9IiArIHRoaXMudmFsdWU7CisgICAgfTsKKworICAgIHZhciBjb29raWVfc3RyX3NwbGl0dGVyID0gL1s6XSg/PVxzKlthLXpBLVowLTlfXC1dK1xzKls9XSkvZzsKKyAgICBDb29raWUucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gcGFyc2Uoc3RyLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKSB7CisgICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQ29va2llKSB7CisgICAgICAgICAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoIjsiKS5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIXZhbHVlOworICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICAgIHBhaXIgPSBwYXJ0c1swXS5tYXRjaCgvKFtePV0rKT0oW1xzXFNdKikvKSwKKyAgICAgICAgICAgICAgICBrZXkgPSBwYWlyWzFdLAorICAgICAgICAgICAgICAgIHZhbHVlID0gcGFpclsyXSwKKyAgICAgICAgICAgICAgICBpOworICAgICAgICAgICAgdGhpcy5uYW1lID0ga2V5OworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworCisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgcGFydHMubGVuZ3RoOyBpICs9IDEpIHsKKyAgICAgICAgICAgICAgICBwYWlyID0gcGFydHNbaV0ubWF0Y2goLyhbXj1dKykoPzo9KFtcc1xTXSopKT8vKTsKKyAgICAgICAgICAgICAgICBrZXkgPSBwYWlyWzFdLnRyaW0oKS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgICAgIHZhbHVlID0gcGFpclsyXTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICAgICAgICAgIGNhc2UgImh0dHBvbmx5IjoKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3NjcmlwdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgImV4cGlyZXMiOgorICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGlyYXRpb25fZGF0ZSA9IHZhbHVlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoRGF0ZS5wYXJzZSh2YWx1ZSkpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZpbml0eTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAicGF0aCI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGF0aCA9IHZhbHVlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50cmltKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOworICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGxpY2l0X3BhdGggPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJkb21haW4iOgorICAgICAgICAgICAgICAgICAgICB0aGlzLmRvbWFpbiA9IHZhbHVlID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50cmltKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOworICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGxpY2l0X2RvbWFpbiA9ICEhdGhpcy5kb21haW47CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInNlY3VyZSI6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXRoaXMuZXhwbGljaXRfcGF0aCkgeworICAgICAgICAgICAgICAgdGhpcy5wYXRoID0gcmVxdWVzdF9wYXRoIHx8ICIvIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGhpcy5leHBsaWNpdF9kb21haW4pIHsKKyAgICAgICAgICAgICAgIHRoaXMuZG9tYWluID0gcmVxdWVzdF9kb21haW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgQ29va2llKCkucGFyc2Uoc3RyLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKTsKKyAgICB9OworCisgICAgQ29va2llLnByb3RvdHlwZS5tYXRjaGVzID0gZnVuY3Rpb24gbWF0Y2hlcyhhY2Nlc3NfaW5mbykgeworICAgICAgICBpZiAodGhpcy5ub3NjcmlwdCAmJiBhY2Nlc3NfaW5mby5zY3JpcHQgfHwKKyAgICAgICAgICAgICAgICB0aGlzLnNlY3VyZSAmJiAhYWNjZXNzX2luZm8uc2VjdXJlIHx8CisgICAgICAgICAgICAgICAgIXRoaXMuY29sbGlkZXNXaXRoKGFjY2Vzc19pbmZvKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICBDb29raWUucHJvdG90eXBlLmNvbGxpZGVzV2l0aCA9IGZ1bmN0aW9uIGNvbGxpZGVzV2l0aChhY2Nlc3NfaW5mbykgeworICAgICAgICBpZiAoKHRoaXMucGF0aCAmJiAhYWNjZXNzX2luZm8ucGF0aCkgfHwgKHRoaXMuZG9tYWluICYmICFhY2Nlc3NfaW5mby5kb21haW4pKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMucGF0aCAmJiBhY2Nlc3NfaW5mby5wYXRoLmluZGV4T2YodGhpcy5wYXRoKSAhPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmV4cGxpY2l0X3BhdGggJiYgYWNjZXNzX2luZm8ucGF0aC5pbmRleE9mKCB0aGlzLnBhdGggKSAhPT0gMCkgeworICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGFjY2Vzc19kb21haW4gPSBhY2Nlc3NfaW5mby5kb21haW4gJiYgYWNjZXNzX2luZm8uZG9tYWluLnJlcGxhY2UoL15bXC5dLywnJyk7CisgICAgICAgIHZhciBjb29raWVfZG9tYWluID0gdGhpcy5kb21haW4gJiYgdGhpcy5kb21haW4ucmVwbGFjZSgvXltcLl0vLCcnKTsKKyAgICAgICAgaWYgKGNvb2tpZV9kb21haW4gPT09IGFjY2Vzc19kb21haW4pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjb29raWVfZG9tYWluKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuZXhwbGljaXRfZG9tYWluKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB3ZSBhbHJlYWR5IGNoZWNrZWQgaWYgdGhlIGRvbWFpbnMgd2VyZSBleGFjdGx5IHRoZSBzYW1lCisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgd2lsZGNhcmQgPSBhY2Nlc3NfZG9tYWluLmluZGV4T2YoY29va2llX2RvbWFpbik7CisgICAgICAgICAgICBpZiAod2lsZGNhcmQgPT09IC0xIHx8IHdpbGRjYXJkICE9PSBhY2Nlc3NfZG9tYWluLmxlbmd0aCAtIGNvb2tpZV9kb21haW4ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIENvb2tpZUphcigpIHsKKyAgICAgICAgdmFyIGNvb2tpZXMsIGNvb2tpZXNfbGlzdCwgY29sbGlkYWJsZV9jb29raWU7CisgICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQ29va2llSmFyKSB7CisgICAgICAgICAgICBjb29raWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsgLy9uYW1lOiBbQ29va2llXQorCisgICAgICAgICAgICB0aGlzLnNldENvb2tpZSA9IGZ1bmN0aW9uIHNldENvb2tpZShjb29raWUsIHJlcXVlc3RfZG9tYWluLCByZXF1ZXN0X3BhdGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlLCBpOworICAgICAgICAgICAgICAgIGNvb2tpZSA9IG5ldyBDb29raWUoY29va2llLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKTsKKyAgICAgICAgICAgICAgICAvL0RlbGV0ZSB0aGUgY29va2llIGlmIHRoZSBzZXQgaXMgcGFzdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgICAgICAgICAgcmVtb3ZlID0gY29va2llLmV4cGlyYXRpb25fZGF0ZSA8PSBEYXRlLm5vdygpOworICAgICAgICAgICAgICAgIGlmIChjb29raWVzW2Nvb2tpZS5uYW1lXSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgICAgIGNvb2tpZXNfbGlzdCA9IGNvb2tpZXNbY29va2llLm5hbWVdOworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29va2llc19saXN0Lmxlbmd0aDsgaSArPSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsaWRhYmxlX2Nvb2tpZSA9IGNvb2tpZXNfbGlzdFtpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xsaWRhYmxlX2Nvb2tpZS5jb2xsaWRlc1dpdGgoY29va2llKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llc19saXN0LnNwbGljZShpLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNfbGlzdC5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjb29raWVzW2Nvb2tpZS5uYW1lXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZXNfbGlzdFtpXSA9IGNvb2tpZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29va2llOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb29raWVzX2xpc3QucHVzaChjb29raWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29va2llOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVtb3ZlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29va2llc1tjb29raWUubmFtZV0gPSBbY29va2llXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29va2llc1tjb29raWUubmFtZV07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgLy9yZXR1cm5zIGEgY29va2llCisgICAgICAgICAgICB0aGlzLmdldENvb2tpZSA9IGZ1bmN0aW9uIGdldENvb2tpZShjb29raWVfbmFtZSwgYWNjZXNzX2luZm8pIHsKKyAgICAgICAgICAgICAgICB2YXIgY29va2llLCBpOworICAgICAgICAgICAgICAgIGNvb2tpZXNfbGlzdCA9IGNvb2tpZXNbY29va2llX25hbWVdOworICAgICAgICAgICAgICAgIGlmICghY29va2llc19saXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvb2tpZXNfbGlzdC5sZW5ndGg7IGkgKz0gMSkgeworICAgICAgICAgICAgICAgICAgICBjb29raWUgPSBjb29raWVzX2xpc3RbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUuZXhwaXJhdGlvbl9kYXRlIDw9IERhdGUubm93KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVzX2xpc3QubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNvb2tpZXNbY29va2llLm5hbWVdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoY29va2llLm1hdGNoZXMoYWNjZXNzX2luZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29va2llOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIC8vcmV0dXJucyBhIGxpc3Qgb2YgY29va2llcworICAgICAgICAgICAgdGhpcy5nZXRDb29raWVzID0gZnVuY3Rpb24gZ2V0Q29va2llcyhhY2Nlc3NfaW5mbykgeworICAgICAgICAgICAgICAgIHZhciBtYXRjaGVzID0gW10sIGNvb2tpZV9uYW1lLCBjb29raWU7CisgICAgICAgICAgICAgICAgZm9yIChjb29raWVfbmFtZSBpbiBjb29raWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGNvb2tpZSA9IHRoaXMuZ2V0Q29va2llKGNvb2tpZV9uYW1lLCBhY2Nlc3NfaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb29raWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChjb29raWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hdGNoZXMudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMuam9pbigiOiIpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgbWF0Y2hlcy50b1ZhbHVlU3RyaW5nID0gZnVuY3Rpb24gdG9WYWx1ZVN0cmluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMubWFwKGZ1bmN0aW9uIChjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy50b1ZhbHVlU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oJzsnKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVzOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBDb29raWVKYXIoKTsKKyAgICB9CisgICAgZXhwb3J0cy5Db29raWVKYXIgPSBDb29raWVKYXI7CisKKyAgICAvL3JldHVybnMgbGlzdCBvZiBjb29raWVzIHRoYXQgd2VyZSBzZXQgY29ycmVjdGx5LiBDb29raWVzIHRoYXQgYXJlIGV4cGlyZWQgYW5kIHJlbW92ZWQgYXJlIG5vdCByZXR1cm5lZC4KKyAgICBDb29raWVKYXIucHJvdG90eXBlLnNldENvb2tpZXMgPSBmdW5jdGlvbiBzZXRDb29raWVzKGNvb2tpZXMsIHJlcXVlc3RfZG9tYWluLCByZXF1ZXN0X3BhdGgpIHsKKyAgICAgICAgY29va2llcyA9IEFycmF5LmlzQXJyYXkoY29va2llcykgPworICAgICAgICAgICAgICAgIGNvb2tpZXMgOgorICAgICAgICAgICAgICAgIGNvb2tpZXMuc3BsaXQoY29va2llX3N0cl9zcGxpdHRlcik7CisgICAgICAgIHZhciBzdWNjZXNzZnVsID0gW10sCisgICAgICAgICAgICBpLAorICAgICAgICAgICAgY29va2llOworICAgICAgICBjb29raWVzID0gY29va2llcy5tYXAoZnVuY3Rpb24oaXRlbSl7CisgICAgICAgICAgICByZXR1cm4gbmV3IENvb2tpZShpdGVtLCByZXF1ZXN0X2RvbWFpbiwgcmVxdWVzdF9wYXRoKTsKKyAgICAgICAgfSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgaSArPSAxKSB7CisgICAgICAgICAgICBjb29raWUgPSBjb29raWVzW2ldOworICAgICAgICAgICAgaWYgKHRoaXMuc2V0Q29va2llKGNvb2tpZSwgcmVxdWVzdF9kb21haW4sIHJlcXVlc3RfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzZnVsLnB1c2goY29va2llKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bDsKKyAgICB9OworfSgpKTsKKworfSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisKK3ZhciB5YW1sID0gcmVxdWlyZSgnLi9saWIvanMteWFtbC5qcycpOworCisKK21vZHVsZS5leHBvcnRzID0geWFtbDsKKworfSx7Ii4vbGliL2pzLXlhbWwuanMiOjIwfV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBsb2FkZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvbG9hZGVyJyk7Cit2YXIgZHVtcGVyID0gcmVxdWlyZSgnLi9qcy15YW1sL2R1bXBlcicpOworCisKK2Z1bmN0aW9uIGRlcHJlY2F0ZWQobmFtZSkgeworICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gJyArIG5hbWUgKyAnIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkLicpOworICB9OworfQorCisKK21vZHVsZS5leHBvcnRzLlR5cGUgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvdHlwZScpOworbW9kdWxlLmV4cG9ydHMuU2NoZW1hICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEnKTsKK21vZHVsZS5leHBvcnRzLkZBSUxTQUZFX1NDSEVNQSAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlJyk7Cittb2R1bGUuZXhwb3J0cy5KU09OX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9qc29uJyk7Cittb2R1bGUuZXhwb3J0cy5DT1JFX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9jb3JlJyk7Cittb2R1bGUuZXhwb3J0cy5ERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTsKK21vZHVsZS5leHBvcnRzLkRFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpOworbW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgICAgICAgICA9IGxvYWRlci5sb2FkOworbW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgICAgICAgICA9IGxvYWRlci5sb2FkQWxsOworbW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZDsKK21vZHVsZS5leHBvcnRzLnNhZmVMb2FkQWxsICAgICAgICAgPSBsb2FkZXIuc2FmZUxvYWRBbGw7Cittb2R1bGUuZXhwb3J0cy5kdW1wICAgICAgICAgICAgICAgID0gZHVtcGVyLmR1bXA7Cittb2R1bGUuZXhwb3J0cy5zYWZlRHVtcCAgICAgICAgICAgID0gZHVtcGVyLnNhZmVEdW1wOworbW9kdWxlLmV4cG9ydHMuWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9leGNlcHRpb24nKTsKKworLy8gRGVwcmVjYXRlZCBzY2hlbWEgbmFtZXMgZnJvbSBKUy1ZQU1MIDIuMC54Cittb2R1bGUuZXhwb3J0cy5NSU5JTUFMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTsKK21vZHVsZS5leHBvcnRzLlNBRkVfU0NIRU1BICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTsKK21vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTsKKworLy8gRGVwcmVjYXRlZCBmdW5jdGlvbnMgZnJvbSBKUy1ZQU1MIDEueC54Cittb2R1bGUuZXhwb3J0cy5zY2FuICAgICAgICAgICA9IGRlcHJlY2F0ZWQoJ3NjYW4nKTsKK21vZHVsZS5leHBvcnRzLnBhcnNlICAgICAgICAgID0gZGVwcmVjYXRlZCgncGFyc2UnKTsKK21vZHVsZS5leHBvcnRzLmNvbXBvc2UgICAgICAgID0gZGVwcmVjYXRlZCgnY29tcG9zZScpOworbW9kdWxlLmV4cG9ydHMuYWRkQ29uc3RydWN0b3IgPSBkZXByZWNhdGVkKCdhZGRDb25zdHJ1Y3RvcicpOworCit9LHsiLi9qcy15YW1sL2R1bXBlciI6MjIsIi4vanMteWFtbC9leGNlcHRpb24iOjIzLCIuL2pzLXlhbWwvbG9hZGVyIjoyNCwiLi9qcy15YW1sL3NjaGVtYSI6MjYsIi4vanMteWFtbC9zY2hlbWEvY29yZSI6MjcsIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsIjoyOCwiLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUiOjI5LCIuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlIjozMCwiLi9qcy15YW1sL3NjaGVtYS9qc29uIjozMSwiLi9qcy15YW1sL3R5cGUiOjMyfV0sMjE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCisKK2Z1bmN0aW9uIGlzTm90aGluZyhzdWJqZWN0KSB7CisgIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICd1bmRlZmluZWQnKSB8fCAoc3ViamVjdCA9PT0gbnVsbCk7Cit9CisKKworZnVuY3Rpb24gaXNPYmplY3Qoc3ViamVjdCkgeworICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAnb2JqZWN0JykgJiYgKHN1YmplY3QgIT09IG51bGwpOworfQorCisKK2Z1bmN0aW9uIHRvQXJyYXkoc2VxdWVuY2UpIHsKKyAgaWYgKEFycmF5LmlzQXJyYXkoc2VxdWVuY2UpKSByZXR1cm4gc2VxdWVuY2U7CisgIGVsc2UgaWYgKGlzTm90aGluZyhzZXF1ZW5jZSkpIHJldHVybiBbXTsKKworICByZXR1cm4gWyBzZXF1ZW5jZSBdOworfQorCisKK2Z1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkgeworICB2YXIgaW5kZXgsIGxlbmd0aCwga2V5LCBzb3VyY2VLZXlzOworCisgIGlmIChzb3VyY2UpIHsKKyAgICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsKKworICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHsKKyAgICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdOworICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdGFyZ2V0OworfQorCisKK2Z1bmN0aW9uIHJlcGVhdChzdHJpbmcsIGNvdW50KSB7CisgIHZhciByZXN1bHQgPSAnJywgY3ljbGU7CisKKyAgZm9yIChjeWNsZSA9IDA7IGN5Y2xlIDwgY291bnQ7IGN5Y2xlICs9IDEpIHsKKyAgICByZXN1bHQgKz0gc3RyaW5nOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworCitmdW5jdGlvbiBpc05lZ2F0aXZlWmVybyhudW1iZXIpIHsKKyAgcmV0dXJuIChudW1iZXIgPT09IDApICYmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IDEgLyBudW1iZXIpOworfQorCisKK21vZHVsZS5leHBvcnRzLmlzTm90aGluZyAgICAgID0gaXNOb3RoaW5nOworbW9kdWxlLmV4cG9ydHMuaXNPYmplY3QgICAgICAgPSBpc09iamVjdDsKK21vZHVsZS5leHBvcnRzLnRvQXJyYXkgICAgICAgID0gdG9BcnJheTsKK21vZHVsZS5leHBvcnRzLnJlcGVhdCAgICAgICAgID0gcmVwZWF0OworbW9kdWxlLmV4cG9ydHMuaXNOZWdhdGl2ZVplcm8gPSBpc05lZ2F0aXZlWmVybzsKK21vZHVsZS5leHBvcnRzLmV4dGVuZCAgICAgICAgID0gZXh0ZW5kOworCit9LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qZXNsaW50LWRpc2FibGUgbm8tdXNlLWJlZm9yZS1kZWZpbmUqLworCit2YXIgY29tbW9uICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uJyk7Cit2YXIgWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7Cit2YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpOwordmFyIERFRkFVTFRfU0FGRV9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTsKKwordmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7Cit2YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKwordmFyIENIQVJfVEFCICAgICAgICAgICAgICAgICAgPSAweDA5OyAvKiBUYWIgKi8KK3ZhciBDSEFSX0xJTkVfRkVFRCAgICAgICAgICAgID0gMHgwQTsgLyogTEYgKi8KK3ZhciBDSEFSX1NQQUNFICAgICAgICAgICAgICAgID0gMHgyMDsgLyogU3BhY2UgKi8KK3ZhciBDSEFSX0VYQ0xBTUFUSU9OICAgICAgICAgID0gMHgyMTsgLyogISAqLwordmFyIENIQVJfRE9VQkxFX1FVT1RFICAgICAgICAgPSAweDIyOyAvKiAiICovCit2YXIgQ0hBUl9TSEFSUCAgICAgICAgICAgICAgICA9IDB4MjM7IC8qICMgKi8KK3ZhciBDSEFSX1BFUkNFTlQgICAgICAgICAgICAgID0gMHgyNTsgLyogJSAqLwordmFyIENIQVJfQU1QRVJTQU5EICAgICAgICAgICAgPSAweDI2OyAvKiAmICovCit2YXIgQ0hBUl9TSU5HTEVfUVVPVEUgICAgICAgICA9IDB4Mjc7IC8qICcgKi8KK3ZhciBDSEFSX0FTVEVSSVNLICAgICAgICAgICAgID0gMHgyQTsgLyogKiAqLwordmFyIENIQVJfQ09NTUEgICAgICAgICAgICAgICAgPSAweDJDOyAvKiAsICovCit2YXIgQ0hBUl9NSU5VUyAgICAgICAgICAgICAgICA9IDB4MkQ7IC8qIC0gKi8KK3ZhciBDSEFSX0NPTE9OICAgICAgICAgICAgICAgID0gMHgzQTsgLyogOiAqLwordmFyIENIQVJfR1JFQVRFUl9USEFOICAgICAgICAgPSAweDNFOyAvKiA+ICovCit2YXIgQ0hBUl9RVUVTVElPTiAgICAgICAgICAgICA9IDB4M0Y7IC8qID8gKi8KK3ZhciBDSEFSX0NPTU1FUkNJQUxfQVQgICAgICAgID0gMHg0MDsgLyogQCAqLwordmFyIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCAgPSAweDVCOyAvKiBbICovCit2YXIgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCA9IDB4NUQ7IC8qIF0gKi8KK3ZhciBDSEFSX0dSQVZFX0FDQ0VOVCAgICAgICAgID0gMHg2MDsgLyogYCAqLwordmFyIENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUICAgPSAweDdCOyAvKiB7ICovCit2YXIgQ0hBUl9WRVJUSUNBTF9MSU5FICAgICAgICA9IDB4N0M7IC8qIHwgKi8KK3ZhciBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVQgID0gMHg3RDsgLyogfSAqLworCit2YXIgRVNDQVBFX1NFUVVFTkNFUyA9IHt9OworCitFU0NBUEVfU0VRVUVOQ0VTWzB4MDBdICAgPSAnXFwwJzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHgwN10gICA9ICdcXGEnOworRVNDQVBFX1NFUVVFTkNFU1sweDA4XSAgID0gJ1xcYic7CitFU0NBUEVfU0VRVUVOQ0VTWzB4MDldICAgPSAnXFx0JzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHgwQV0gICA9ICdcXG4nOworRVNDQVBFX1NFUVVFTkNFU1sweDBCXSAgID0gJ1xcdic7CitFU0NBUEVfU0VRVUVOQ0VTWzB4MENdICAgPSAnXFxmJzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHgwRF0gICA9ICdcXHInOworRVNDQVBFX1NFUVVFTkNFU1sweDFCXSAgID0gJ1xcZSc7CitFU0NBUEVfU0VRVUVOQ0VTWzB4MjJdICAgPSAnXFwiJzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHg1Q10gICA9ICdcXFxcJzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHg4NV0gICA9ICdcXE4nOworRVNDQVBFX1NFUVVFTkNFU1sweEEwXSAgID0gJ1xcXyc7CitFU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOF0gPSAnXFxMJzsKK0VTQ0FQRV9TRVFVRU5DRVNbMHgyMDI5XSA9ICdcXFAnOworCit2YXIgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVggPSBbCisgICd5JywgJ1knLCAneWVzJywgJ1llcycsICdZRVMnLCAnb24nLCAnT24nLCAnT04nLAorICAnbicsICdOJywgJ25vJywgJ05vJywgJ05PJywgJ29mZicsICdPZmYnLCAnT0ZGJworXTsKKworZnVuY3Rpb24gY29tcGlsZVN0eWxlTWFwKHNjaGVtYSwgbWFwKSB7CisgIHZhciByZXN1bHQsIGtleXMsIGluZGV4LCBsZW5ndGgsIHRhZywgc3R5bGUsIHR5cGU7CisKKyAgaWYgKG1hcCA9PT0gbnVsbCkgcmV0dXJuIHt9OworCisgIHJlc3VsdCA9IHt9OworICBrZXlzID0gT2JqZWN0LmtleXMobWFwKTsKKworICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgdGFnID0ga2V5c1tpbmRleF07CisgICAgc3R5bGUgPSBTdHJpbmcobWFwW3RhZ10pOworCisgICAgaWYgKHRhZy5zbGljZSgwLCAyKSA9PT0gJyEhJykgeworICAgICAgdGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOicgKyB0YWcuc2xpY2UoMik7CisgICAgfQorCisgICAgdHlwZSA9IHNjaGVtYS5jb21waWxlZFR5cGVNYXBbdGFnXTsKKworICAgIGlmICh0eXBlICYmIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHR5cGUuc3R5bGVBbGlhc2VzLCBzdHlsZSkpIHsKKyAgICAgIHN0eWxlID0gdHlwZS5zdHlsZUFsaWFzZXNbc3R5bGVdOworICAgIH0KKworICAgIHJlc3VsdFt0YWddID0gc3R5bGU7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBlbmNvZGVIZXgoY2hhcmFjdGVyKSB7CisgIHZhciBzdHJpbmcsIGhhbmRsZSwgbGVuZ3RoOworCisgIHN0cmluZyA9IGNoYXJhY3Rlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKworICBpZiAoY2hhcmFjdGVyIDw9IDB4RkYpIHsKKyAgICBoYW5kbGUgPSAneCc7CisgICAgbGVuZ3RoID0gMjsKKyAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGKSB7CisgICAgaGFuZGxlID0gJ3UnOworICAgIGxlbmd0aCA9IDQ7CisgIH0gZWxzZSBpZiAoY2hhcmFjdGVyIDw9IDB4RkZGRkZGRkYpIHsKKyAgICBoYW5kbGUgPSAnVSc7CisgICAgbGVuZ3RoID0gODsKKyAgfSBlbHNlIHsKKyAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignY29kZSBwb2ludCB3aXRoaW4gYSBzdHJpbmcgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gMHhGRkZGRkZGRicpOworICB9CisKKyAgcmV0dXJuICdcXCcgKyBoYW5kbGUgKyBjb21tb24ucmVwZWF0KCcwJywgbGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7Cit9CisKK2Z1bmN0aW9uIFN0YXRlKG9wdGlvbnMpIHsKKyAgdGhpcy5zY2hlbWEgICAgICAgPSBvcHRpb25zWydzY2hlbWEnXSB8fCBERUZBVUxUX0ZVTExfU0NIRU1BOworICB0aGlzLmluZGVudCAgICAgICA9IE1hdGgubWF4KDEsIChvcHRpb25zWydpbmRlbnQnXSB8fCAyKSk7CisgIHRoaXMuc2tpcEludmFsaWQgID0gb3B0aW9uc1snc2tpcEludmFsaWQnXSB8fCBmYWxzZTsKKyAgdGhpcy5mbG93TGV2ZWwgICAgPSAoY29tbW9uLmlzTm90aGluZyhvcHRpb25zWydmbG93TGV2ZWwnXSkgPyAtMSA6IG9wdGlvbnNbJ2Zsb3dMZXZlbCddKTsKKyAgdGhpcy5zdHlsZU1hcCAgICAgPSBjb21waWxlU3R5bGVNYXAodGhpcy5zY2hlbWEsIG9wdGlvbnNbJ3N0eWxlcyddIHx8IG51bGwpOworICB0aGlzLnNvcnRLZXlzICAgICA9IG9wdGlvbnNbJ3NvcnRLZXlzJ10gfHwgZmFsc2U7CisgIHRoaXMubGluZVdpZHRoICAgID0gb3B0aW9uc1snbGluZVdpZHRoJ10gfHwgODA7CisgIHRoaXMubm9SZWZzICAgICAgID0gb3B0aW9uc1snbm9SZWZzJ10gfHwgZmFsc2U7CisgIHRoaXMubm9Db21wYXRNb2RlID0gb3B0aW9uc1snbm9Db21wYXRNb2RlJ10gfHwgZmFsc2U7CisKKyAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDsKKyAgdGhpcy5leHBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRFeHBsaWNpdDsKKworICB0aGlzLnRhZyA9IG51bGw7CisgIHRoaXMucmVzdWx0ID0gJyc7CisKKyAgdGhpcy5kdXBsaWNhdGVzID0gW107CisgIHRoaXMudXNlZER1cGxpY2F0ZXMgPSBudWxsOworfQorCisvLyBJbmRlbnRzIGV2ZXJ5IGxpbmUgaW4gYSBzdHJpbmcuIEVtcHR5IGxpbmVzIChcbiBvbmx5KSBhcmUgbm90IGluZGVudGVkLgorZnVuY3Rpb24gaW5kZW50U3RyaW5nKHN0cmluZywgc3BhY2VzKSB7CisgIHZhciBpbmQgPSBjb21tb24ucmVwZWF0KCcgJywgc3BhY2VzKSwKKyAgICAgIHBvc2l0aW9uID0gMCwKKyAgICAgIG5leHQgPSAtMSwKKyAgICAgIHJlc3VsdCA9ICcnLAorICAgICAgbGluZSwKKyAgICAgIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CisKKyAgd2hpbGUgKHBvc2l0aW9uIDwgbGVuZ3RoKSB7CisgICAgbmV4dCA9IHN0cmluZy5pbmRleE9mKCdcbicsIHBvc2l0aW9uKTsKKyAgICBpZiAobmV4dCA9PT0gLTEpIHsKKyAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24pOworICAgICAgcG9zaXRpb24gPSBsZW5ndGg7CisgICAgfSBlbHNlIHsKKyAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24sIG5leHQgKyAxKTsKKyAgICAgIHBvc2l0aW9uID0gbmV4dCArIDE7CisgICAgfQorCisgICAgaWYgKGxpbmUubGVuZ3RoICYmIGxpbmUgIT09ICdcbicpIHJlc3VsdCArPSBpbmQ7CisKKyAgICByZXN1bHQgKz0gbGluZTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKSB7CisgIHJldHVybiAnXG4nICsgY29tbW9uLnJlcGVhdCgnICcsIHN0YXRlLmluZGVudCAqIGxldmVsKTsKK30KKworZnVuY3Rpb24gdGVzdEltcGxpY2l0UmVzb2x2aW5nKHN0YXRlLCBzdHIpIHsKKyAgdmFyIGluZGV4LCBsZW5ndGgsIHR5cGU7CisKKyAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkgeworICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW2luZGV4XTsKKworICAgIGlmICh0eXBlLnJlc29sdmUoc3RyKSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCisvLyBbMzNdIHMtd2hpdGUgOjo9IHMtc3BhY2UgfCBzLXRhYgorZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGMpIHsKKyAgcmV0dXJuIGMgPT09IENIQVJfU1BBQ0UgfHwgYyA9PT0gQ0hBUl9UQUI7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGNhbiBiZSBwcmludGVkIHdpdGhvdXQgZXNjYXBpbmcuCisvLyBGcm9tIFlBTUwgMS4yOiAiYW55IGFsbG93ZWQgY2hhcmFjdGVycyBrbm93biB0byBiZSBub24tcHJpbnRhYmxlCisvLyBzaG91bGQgYWxzbyBiZSBlc2NhcGVkLiBbSG93ZXZlcixdIFRoaXMgaXNu4oCZdCBtYW5kYXRvcnkiCisvLyBEZXJpdmVkIGZyb20gbmItY2hhciAtIFx0IC0gI3g4NSAtICN4QTAgLSAjeDIwMjggLSAjeDIwMjkuCitmdW5jdGlvbiBpc1ByaW50YWJsZShjKSB7CisgIHJldHVybiAgKDB4MDAwMjAgPD0gYyAmJiBjIDw9IDB4MDAwMDdFKQorICAgICAgfHwgKCgweDAwMEExIDw9IGMgJiYgYyA8PSAweDAwRDdGRikgJiYgYyAhPT0gMHgyMDI4ICYmIGMgIT09IDB4MjAyOSkKKyAgICAgIHx8ICgoMHgwRTAwMCA8PSBjICYmIGMgPD0gMHgwMEZGRkQpICYmIGMgIT09IDB4RkVGRiAvKiBCT00gKi8pCisgICAgICB8fCAgKDB4MTAwMDAgPD0gYyAmJiBjIDw9IDB4MTBGRkZGKTsKK30KKworLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLgorZnVuY3Rpb24gaXNQbGFpblNhZmUoYykgeworICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5iLWNoYXIgLSBjLWZsb3ctaW5kaWNhdG9yIC0gIjoiIC0gIiMiCisgIC8vIHdoZXJlIG5iLWNoYXIgOjo9IGMtcHJpbnRhYmxlIC0gYi1jaGFyIC0gYy1ieXRlLW9yZGVyLW1hcmsuCisgIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkYKKyAgICAvLyAtIGMtZmxvdy1pbmRpY2F0b3IKKyAgICAmJiBjICE9PSBDSEFSX0NPTU1BCisgICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUCisgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVAorICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUCisgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUCisgICAgLy8gLSAiOiIgLSAiIyIKKyAgICAmJiBjICE9PSBDSEFSX0NPTE9OCisgICAgJiYgYyAhPT0gQ0hBUl9TSEFSUDsKK30KKworLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLgorZnVuY3Rpb24gaXNQbGFpblNhZmVGaXJzdChjKSB7CisgIC8vIFVzZXMgYSBzdWJzZXQgb2YgbnMtY2hhciAtIGMtaW5kaWNhdG9yCisgIC8vIHdoZXJlIG5zLWNoYXIgPSBuYi1jaGFyIC0gcy13aGl0ZS4KKyAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpICYmIGMgIT09IDB4RkVGRgorICAgICYmICFpc1doaXRlc3BhY2UoYykgLy8gLSBzLXdoaXRlCisgICAgLy8gLSAoYy1pbmRpY2F0b3IgOjo9CisgICAgLy8g4oCcLeKAnSB8IOKAnD/igJ0gfCDigJw64oCdIHwg4oCcLOKAnSB8IOKAnFvigJ0gfCDigJxd4oCdIHwg4oCce+KAnSB8IOKAnH3igJ0KKyAgICAmJiBjICE9PSBDSEFSX01JTlVTCisgICAgJiYgYyAhPT0gQ0hBUl9RVUVTVElPTgorICAgICYmIGMgIT09IENIQVJfQ09MT04KKyAgICAmJiBjICE9PSBDSEFSX0NPTU1BCisgICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUCisgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVAorICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUCisgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUCisgICAgLy8gfCDigJwj4oCdIHwg4oCcJuKAnSB8IOKAnCrigJ0gfCDigJwh4oCdIHwg4oCcfOKAnSB8IOKAnD7igJ0gfCDigJwn4oCdIHwg4oCcIuKAnQorICAgICYmIGMgIT09IENIQVJfU0hBUlAKKyAgICAmJiBjICE9PSBDSEFSX0FNUEVSU0FORAorICAgICYmIGMgIT09IENIQVJfQVNURVJJU0sKKyAgICAmJiBjICE9PSBDSEFSX0VYQ0xBTUFUSU9OCisgICAgJiYgYyAhPT0gQ0hBUl9WRVJUSUNBTF9MSU5FCisgICAgJiYgYyAhPT0gQ0hBUl9HUkVBVEVSX1RIQU4KKyAgICAmJiBjICE9PSBDSEFSX1NJTkdMRV9RVU9URQorICAgICYmIGMgIT09IENIQVJfRE9VQkxFX1FVT1RFCisgICAgLy8gfCDigJwl4oCdIHwg4oCcQOKAnSB8IOKAnGDigJ0pCisgICAgJiYgYyAhPT0gQ0hBUl9QRVJDRU5UCisgICAgJiYgYyAhPT0gQ0hBUl9DT01NRVJDSUFMX0FUCisgICAgJiYgYyAhPT0gQ0hBUl9HUkFWRV9BQ0NFTlQ7Cit9CisKK3ZhciBTVFlMRV9QTEFJTiAgID0gMSwKKyAgICBTVFlMRV9TSU5HTEUgID0gMiwKKyAgICBTVFlMRV9MSVRFUkFMID0gMywKKyAgICBTVFlMRV9GT0xERUQgID0gNCwKKyAgICBTVFlMRV9ET1VCTEUgID0gNTsKKworLy8gRGV0ZXJtaW5lcyB3aGljaCBzY2FsYXIgc3R5bGVzIGFyZSBwb3NzaWJsZSBhbmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIHN0eWxlLgorLy8gbGluZVdpZHRoID0gLTEgPT4gbm8gbGltaXQuCisvLyBQcmUtY29uZGl0aW9uczogc3RyLmxlbmd0aCA+IDAuCisvLyBQb3N0LWNvbmRpdGlvbnM6CisvLyAgICBTVFlMRV9QTEFJTiBvciBTVFlMRV9TSU5HTEUgPT4gbm8gXG4gYXJlIGluIHRoZSBzdHJpbmcuCisvLyAgICBTVFlMRV9MSVRFUkFMID0+IG5vIGxpbmVzIGFyZSBzdWl0YWJsZSBmb3IgZm9sZGluZyAob3IgbGluZVdpZHRoIGlzIC0xKS4KKy8vICAgIFNUWUxFX0ZPTERFRCA9PiBhIGxpbmUgPiBsaW5lV2lkdGggYW5kIGNhbiBiZSBmb2xkZWQgKGFuZCBsaW5lV2lkdGggIT0gLTEpLgorZnVuY3Rpb24gY2hvb3NlU2NhbGFyU3R5bGUoc3RyaW5nLCBzaW5nbGVMaW5lT25seSwgaW5kZW50UGVyTGV2ZWwsIGxpbmVXaWR0aCwgdGVzdEFtYmlndW91c1R5cGUpIHsKKyAgdmFyIGk7CisgIHZhciBjaGFyOworICB2YXIgaGFzTGluZUJyZWFrID0gZmFsc2U7CisgIHZhciBoYXNGb2xkYWJsZUxpbmUgPSBmYWxzZTsgLy8gb25seSBjaGVja2VkIGlmIHNob3VsZFRyYWNrV2lkdGgKKyAgdmFyIHNob3VsZFRyYWNrV2lkdGggPSBsaW5lV2lkdGggIT09IC0xOworICB2YXIgcHJldmlvdXNMaW5lQnJlYWsgPSAtMTsgLy8gY291bnQgdGhlIGZpcnN0IGxpbmUgY29ycmVjdGx5CisgIHZhciBwbGFpbiA9IGlzUGxhaW5TYWZlRmlyc3Qoc3RyaW5nLmNoYXJDb2RlQXQoMCkpCisgICAgICAgICAgJiYgIWlzV2hpdGVzcGFjZShzdHJpbmcuY2hhckNvZGVBdChzdHJpbmcubGVuZ3RoIC0gMSkpOworCisgIGlmIChzaW5nbGVMaW5lT25seSkgeworICAgIC8vIENhc2U6IG5vIGJsb2NrIHN0eWxlcy4KKyAgICAvLyBDaGVjayBmb3IgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIHJ1bGUgb3V0IHBsYWluIGFuZCBzaW5nbGUuCisgICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykgeworICAgICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpOworICAgICAgaWYgKCFpc1ByaW50YWJsZShjaGFyKSkgeworICAgICAgICByZXR1cm4gU1RZTEVfRE9VQkxFOworICAgICAgfQorICAgICAgcGxhaW4gPSBwbGFpbiAmJiBpc1BsYWluU2FmZShjaGFyKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gQ2FzZTogYmxvY2sgc3R5bGVzIHBlcm1pdHRlZC4KKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7CisgICAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7CisgICAgICBpZiAoY2hhciA9PT0gQ0hBUl9MSU5FX0ZFRUQpIHsKKyAgICAgICAgaGFzTGluZUJyZWFrID0gdHJ1ZTsKKyAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGxpbmUgY2FuIGJlIGZvbGRlZC4KKyAgICAgICAgaWYgKHNob3VsZFRyYWNrV2lkdGgpIHsKKyAgICAgICAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHwKKyAgICAgICAgICAgIC8vIEZvbGRhYmxlIGxpbmUgPSB0b28gbG9uZywgYW5kIG5vdCBtb3JlLWluZGVudGVkLgorICAgICAgICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiYKKyAgICAgICAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKTsKKyAgICAgICAgICBwcmV2aW91c0xpbmVCcmVhayA9IGk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7CisgICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7CisgICAgICB9CisgICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIpOworICAgIH0KKyAgICAvLyBpbiBjYXNlIHRoZSBlbmQgaXMgbWlzc2luZyBhIFxuCisgICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8IChzaG91bGRUcmFja1dpZHRoICYmCisgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJgorICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpKTsKKyAgfQorICAvLyBBbHRob3VnaCBldmVyeSBzdHlsZSBjYW4gcmVwcmVzZW50IFxuIHdpdGhvdXQgZXNjYXBpbmcsIHByZWZlciBibG9jayBzdHlsZXMKKyAgLy8gZm9yIG11bHRpbGluZSwgc2luY2UgdGhleSdyZSBtb3JlIHJlYWRhYmxlIGFuZCB0aGV5IGRvbid0IGFkZCBlbXB0eSBsaW5lcy4KKyAgLy8gQWxzbyBwcmVmZXIgZm9sZGluZyBhIHN1cGVyLWxvbmcgbGluZS4KKyAgaWYgKCFoYXNMaW5lQnJlYWsgJiYgIWhhc0ZvbGRhYmxlTGluZSkgeworICAgIC8vIFN0cmluZ3MgaW50ZXJwcmV0YWJsZSBhcyBhbm90aGVyIHR5cGUgaGF2ZSB0byBiZSBxdW90ZWQ7CisgICAgLy8gZS5nLiB0aGUgc3RyaW5nICd0cnVlJyB2cy4gdGhlIGJvb2xlYW4gdHJ1ZS4KKyAgICByZXR1cm4gcGxhaW4gJiYgIXRlc3RBbWJpZ3VvdXNUeXBlKHN0cmluZykKKyAgICAgID8gU1RZTEVfUExBSU4gOiBTVFlMRV9TSU5HTEU7CisgIH0KKyAgLy8gRWRnZSBjYXNlOiBibG9jayBpbmRlbnRhdGlvbiBpbmRpY2F0b3IgY2FuIG9ubHkgaGF2ZSBvbmUgZGlnaXQuCisgIGlmIChzdHJpbmdbMF0gPT09ICcgJyAmJiBpbmRlbnRQZXJMZXZlbCA+IDkpIHsKKyAgICByZXR1cm4gU1RZTEVfRE9VQkxFOworICB9CisgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyBibG9jayBzdHlsZXMgYXJlIHZhbGlkLgorICAvLyBQcmVmZXIgbGl0ZXJhbCBzdHlsZSB1bmxlc3Mgd2Ugd2FudCB0byBmb2xkLgorICByZXR1cm4gaGFzRm9sZGFibGVMaW5lID8gU1RZTEVfRk9MREVEIDogU1RZTEVfTElURVJBTDsKK30KKworLy8gTm90ZTogbGluZSBicmVha2luZy9mb2xkaW5nIGlzIGltcGxlbWVudGVkIGZvciBvbmx5IHRoZSBmb2xkZWQgc3R5bGUuCisvLyBOQi4gV2UgZHJvcCB0aGUgbGFzdCB0cmFpbGluZyBuZXdsaW5lIChpZiBhbnkpIG9mIGEgcmV0dXJuZWQgYmxvY2sgc2NhbGFyCisvLyAgc2luY2UgdGhlIGR1bXBlciBhZGRzIGl0cyBvd24gbmV3bGluZS4gVGhpcyBhbHdheXMgd29ya3M6CisvLyAgICDigKIgTm8gZW5kaW5nIG5ld2xpbmUgPT4gdW5hZmZlY3RlZDsgYWxyZWFkeSB1c2luZyBzdHJpcCAiLSIgY2hvbXBpbmcuCisvLyAgICDigKIgRW5kaW5nIG5ld2xpbmUgICAgPT4gcmVtb3ZlZCB0aGVuIHJlc3RvcmVkLgorLy8gIEltcG9ydGFudGx5LCB0aGlzIGtlZXBzIHRoZSAiKyIgY2hvbXAgaW5kaWNhdG9yIGZyb20gZ2FpbmluZyBhbiBleHRyYSBsaW5lLgorZnVuY3Rpb24gd3JpdGVTY2FsYXIoc3RhdGUsIHN0cmluZywgbGV2ZWwsIGlza2V5KSB7CisgIHN0YXRlLmR1bXAgPSAoZnVuY3Rpb24gKCkgeworICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSB7CisgICAgICByZXR1cm4gIicnIjsKKyAgICB9CisgICAgaWYgKCFzdGF0ZS5ub0NvbXBhdE1vZGUgJiYKKyAgICAgICAgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVguaW5kZXhPZihzdHJpbmcpICE9PSAtMSkgeworICAgICAgcmV0dXJuICInIiArIHN0cmluZyArICInIjsKKyAgICB9CisKKyAgICB2YXIgaW5kZW50ID0gc3RhdGUuaW5kZW50ICogTWF0aC5tYXgoMSwgbGV2ZWwpOyAvLyBubyAwLWluZGVudCBzY2FsYXJzCisgICAgLy8gQXMgaW5kZW50YXRpb24gZ2V0cyBkZWVwZXIsIGxldCB0aGUgd2lkdGggZGVjcmVhc2UgbW9ub3RvbmljYWxseQorICAgIC8vIHRvIHRoZSBsb3dlciBib3VuZCBtaW4oc3RhdGUubGluZVdpZHRoLCA0MCkuCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgaW1wbGllcworICAgIC8vICBzdGF0ZS5saW5lV2lkdGgg4omkIDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBpcyBmaXhlZCBhdCB0aGUgbG93ZXIgYm91bmQuCisgICAgLy8gIHN0YXRlLmxpbmVXaWR0aCA+IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyIGJvdW5kLgorICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzIG5hcnJvd2VyIG9wdGlvbnMsCisgICAgLy8gb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoIHRvIHN1ZGRlbmx5IGluY3JlYXNlLgorICAgIHZhciBsaW5lV2lkdGggPSBzdGF0ZS5saW5lV2lkdGggPT09IC0xCisgICAgICA/IC0xIDogTWF0aC5tYXgoTWF0aC5taW4oc3RhdGUubGluZVdpZHRoLCA0MCksIHN0YXRlLmxpbmVXaWR0aCAtIGluZGVudCk7CisKKyAgICAvLyBXaXRob3V0IGtub3dpbmcgaWYga2V5cyBhcmUgaW1wbGljaXQvZXhwbGljaXQsIGFzc3VtZSBpbXBsaWNpdCBmb3Igc2FmZXR5LgorICAgIHZhciBzaW5nbGVMaW5lT25seSA9IGlza2V5CisgICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLgorICAgICAgfHwgKHN0YXRlLmZsb3dMZXZlbCA+IC0xICYmIGxldmVsID49IHN0YXRlLmZsb3dMZXZlbCk7CisgICAgZnVuY3Rpb24gdGVzdEFtYmlndWl0eShzdHJpbmcpIHsKKyAgICAgIHJldHVybiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cmluZyk7CisgICAgfQorCisgICAgc3dpdGNoIChjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBzdGF0ZS5pbmRlbnQsIGxpbmVXaWR0aCwgdGVzdEFtYmlndWl0eSkpIHsKKyAgICAgIGNhc2UgU1RZTEVfUExBSU46CisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgICBjYXNlIFNUWUxFX1NJTkdMRToKKyAgICAgICAgcmV0dXJuICInIiArIHN0cmluZy5yZXBsYWNlKC8nL2csICInJyIpICsgIiciOworICAgICAgY2FzZSBTVFlMRV9MSVRFUkFMOgorICAgICAgICByZXR1cm4gJ3wnICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpCisgICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoc3RyaW5nLCBpbmRlbnQpKTsKKyAgICAgIGNhc2UgU1RZTEVfRk9MREVEOgorICAgICAgICByZXR1cm4gJz4nICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpCisgICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCkpOworICAgICAgY2FzZSBTVFlMRV9ET1VCTEU6CisgICAgICAgIHJldHVybiAnIicgKyBlc2NhcGVTdHJpbmcoc3RyaW5nLCBsaW5lV2lkdGgpICsgJyInOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ2ltcG9zc2libGUgZXJyb3I6IGludmFsaWQgc2NhbGFyIHN0eWxlJyk7CisgICAgfQorICB9KCkpOworfQorCisvLyBQcmUtY29uZGl0aW9uczogc3RyaW5nIGlzIHZhbGlkIGZvciBhIGJsb2NrIHNjYWxhciwgMSA8PSBpbmRlbnRQZXJMZXZlbCA8PSA5LgorZnVuY3Rpb24gYmxvY2tIZWFkZXIoc3RyaW5nLCBpbmRlbnRQZXJMZXZlbCkgeworICB2YXIgaW5kZW50SW5kaWNhdG9yID0gKHN0cmluZ1swXSA9PT0gJyAnKSA/IFN0cmluZyhpbmRlbnRQZXJMZXZlbCkgOiAnJzsKKworICAvLyBub3RlIHRoZSBzcGVjaWFsIGNhc2U6IHRoZSBzdHJpbmcgJ1xuJyBjb3VudHMgYXMgYSAidHJhaWxpbmciIGVtcHR5IGxpbmUuCisgIHZhciBjbGlwID0gICAgICAgICAgc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xuJzsKKyAgdmFyIGtlZXAgPSBjbGlwICYmIChzdHJpbmdbc3RyaW5nLmxlbmd0aCAtIDJdID09PSAnXG4nIHx8IHN0cmluZyA9PT0gJ1xuJyk7CisgIHZhciBjaG9tcCA9IGtlZXAgPyAnKycgOiAoY2xpcCA/ICcnIDogJy0nKTsKKworICByZXR1cm4gaW5kZW50SW5kaWNhdG9yICsgY2hvbXAgKyAnXG4nOworfQorCisvLyAoU2VlIHRoZSBub3RlIGZvciB3cml0ZVNjYWxhci4pCitmdW5jdGlvbiBkcm9wRW5kaW5nTmV3bGluZShzdHJpbmcpIHsKKyAgcmV0dXJuIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcbicgPyBzdHJpbmcuc2xpY2UoMCwgLTEpIDogc3RyaW5nOworfQorCisvLyBOb3RlOiBhIGxvbmcgbGluZSB3aXRob3V0IGEgc3VpdGFibGUgYnJlYWsgcG9pbnQgd2lsbCBleGNlZWQgdGhlIHdpZHRoIGxpbWl0LgorLy8gUHJlLWNvbmRpdGlvbnM6IGV2ZXJ5IGNoYXIgaW4gc3RyIGlzUHJpbnRhYmxlLCBzdHIubGVuZ3RoID4gMCwgd2lkdGggPiAwLgorZnVuY3Rpb24gZm9sZFN0cmluZyhzdHJpbmcsIHdpZHRoKSB7CisgIC8vIEluIGZvbGRlZCBzdHlsZSwgJGskIGNvbnNlY3V0aXZlIG5ld2xpbmVzIG91dHB1dCBhcyAkaysxJCBuZXdsaW5lc+KAlAorICAvLyB1bmxlc3MgdGhleSdyZSBiZWZvcmUgb3IgYWZ0ZXIgYSBtb3JlLWluZGVudGVkIGxpbmUsIG9yIGF0IHRoZSB2ZXJ5CisgIC8vIGJlZ2lubmluZyBvciBlbmQsIGluIHdoaWNoIGNhc2UgJGskIG1hcHMgdG8gJGskLgorICAvLyBUaGVyZWZvcmUsIHBhcnNlIGVhY2ggY2h1bmsgYXMgbmV3bGluZShzKSBmb2xsb3dlZCBieSBhIGNvbnRlbnQgbGluZS4KKyAgdmFyIGxpbmVSZSA9IC8oXG4rKShbXlxuXSopL2c7CisKKyAgLy8gZmlyc3QgbGluZSAocG9zc2libHkgYW4gZW1wdHkgbGluZSkKKyAgdmFyIHJlc3VsdCA9IChmdW5jdGlvbiAoKSB7CisgICAgdmFyIG5leHRMRiA9IHN0cmluZy5pbmRleE9mKCdcbicpOworICAgIG5leHRMRiA9IG5leHRMRiAhPT0gLTEgPyBuZXh0TEYgOiBzdHJpbmcubGVuZ3RoOworICAgIGxpbmVSZS5sYXN0SW5kZXggPSBuZXh0TEY7CisgICAgcmV0dXJuIGZvbGRMaW5lKHN0cmluZy5zbGljZSgwLCBuZXh0TEYpLCB3aWR0aCk7CisgIH0oKSk7CisgIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZmlyc3QgY29udGVudCBsaW5lIHlldCwgZG9uJ3QgYWRkIGFuIGV4dHJhIFxuLgorICB2YXIgcHJldk1vcmVJbmRlbnRlZCA9IHN0cmluZ1swXSA9PT0gJ1xuJyB8fCBzdHJpbmdbMF0gPT09ICcgJzsKKyAgdmFyIG1vcmVJbmRlbnRlZDsKKworICAvLyByZXN0IG9mIHRoZSBsaW5lcworICB2YXIgbWF0Y2g7CisgIHdoaWxlICgobWF0Y2ggPSBsaW5lUmUuZXhlYyhzdHJpbmcpKSkgeworICAgIHZhciBwcmVmaXggPSBtYXRjaFsxXSwgbGluZSA9IG1hdGNoWzJdOworICAgIG1vcmVJbmRlbnRlZCA9IChsaW5lWzBdID09PSAnICcpOworICAgIHJlc3VsdCArPSBwcmVmaXgKKyAgICAgICsgKCFwcmV2TW9yZUluZGVudGVkICYmICFtb3JlSW5kZW50ZWQgJiYgbGluZSAhPT0gJycKKyAgICAgICAgPyAnXG4nIDogJycpCisgICAgICArIGZvbGRMaW5lKGxpbmUsIHdpZHRoKTsKKyAgICBwcmV2TW9yZUluZGVudGVkID0gbW9yZUluZGVudGVkOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gR3JlZWR5IGxpbmUgYnJlYWtpbmcuCisvLyBQaWNrcyB0aGUgbG9uZ2VzdCBsaW5lIHVuZGVyIHRoZSBsaW1pdCBlYWNoIHRpbWUsCisvLyBvdGhlcndpc2Ugc2V0dGxlcyBmb3IgdGhlIHNob3J0ZXN0IGxpbmUgb3ZlciB0aGUgbGltaXQuCisvLyBOQi4gTW9yZS1pbmRlbnRlZCBsaW5lcyAqY2Fubm90KiBiZSBmb2xkZWQsIGFzIHRoYXQgd291bGQgYWRkIGFuIGV4dHJhIFxuLgorZnVuY3Rpb24gZm9sZExpbmUobGluZSwgd2lkdGgpIHsKKyAgaWYgKGxpbmUgPT09ICcnIHx8IGxpbmVbMF0gPT09ICcgJykgcmV0dXJuIGxpbmU7CisKKyAgLy8gU2luY2UgYSBtb3JlLWluZGVudGVkIGxpbmUgYWRkcyBhIFxuLCBicmVha3MgY2FuJ3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZS4KKyAgdmFyIGJyZWFrUmUgPSAvIFteIF0vZzsgLy8gbm90ZTogdGhlIG1hdGNoIGluZGV4IHdpbGwgYWx3YXlzIGJlIDw9IGxlbmd0aC0yLgorICB2YXIgbWF0Y2g7CisgIC8vIHN0YXJ0IGlzIGFuIGluY2x1c2l2ZSBpbmRleC4gZW5kLCBjdXJyLCBhbmQgbmV4dCBhcmUgZXhjbHVzaXZlLgorICB2YXIgc3RhcnQgPSAwLCBlbmQsIGN1cnIgPSAwLCBuZXh0ID0gMDsKKyAgdmFyIHJlc3VsdCA9ICcnOworCisgIC8vIEludmFyaWFudHM6IDAgPD0gc3RhcnQgPD0gbGVuZ3RoLTEuCisgIC8vICAgMCA8PSBjdXJyIDw9IG5leHQgPD0gbWF4KDAsIGxlbmd0aC0yKS4gY3VyciAtIHN0YXJ0IDw9IHdpZHRoLgorICAvLyBJbnNpZGUgdGhlIGxvb3A6CisgIC8vICAgQSBtYXRjaCBpbXBsaWVzIGxlbmd0aCA+PSAyLCBzbyBjdXJyIGFuZCBuZXh0IGFyZSA8PSBsZW5ndGgtMi4KKyAgd2hpbGUgKChtYXRjaCA9IGJyZWFrUmUuZXhlYyhsaW5lKSkpIHsKKyAgICBuZXh0ID0gbWF0Y2guaW5kZXg7CisgICAgLy8gbWFpbnRhaW4gaW52YXJpYW50OiBjdXJyIC0gc3RhcnQgPD0gd2lkdGgKKyAgICBpZiAobmV4dCAtIHN0YXJ0ID4gd2lkdGgpIHsKKyAgICAgIGVuZCA9IChjdXJyID4gc3RhcnQpID8gY3VyciA6IG5leHQ7IC8vIGRlcml2ZSBlbmQgPD0gbGVuZ3RoLTIKKyAgICAgIHJlc3VsdCArPSAnXG4nICsgbGluZS5zbGljZShzdGFydCwgZW5kKTsKKyAgICAgIC8vIHNraXAgdGhlIHNwYWNlIHRoYXQgd2FzIG91dHB1dCBhcyBcbgorICAgICAgc3RhcnQgPSBlbmQgKyAxOyAgICAgICAgICAgICAgICAgICAgLy8gZGVyaXZlIHN0YXJ0IDw9IGxlbmd0aC0xCisgICAgfQorICAgIGN1cnIgPSBuZXh0OworICB9CisKKyAgLy8gQnkgdGhlIGludmFyaWFudHMsIHN0YXJ0IDw9IGxlbmd0aC0xLCBzbyB0aGVyZSBpcyBzb21ldGhpbmcgbGVmdCBvdmVyLgorICAvLyBJdCBpcyBlaXRoZXIgdGhlIHdob2xlIHN0cmluZyBvciBhIHBhcnQgc3RhcnRpbmcgZnJvbSBub24td2hpdGVzcGFjZS4KKyAgcmVzdWx0ICs9ICdcbic7CisgIC8vIEluc2VydCBhIGJyZWFrIGlmIHRoZSByZW1haW5kZXIgaXMgdG9vIGxvbmcgYW5kIHRoZXJlIGlzIGEgYnJlYWsgYXZhaWxhYmxlLgorICBpZiAobGluZS5sZW5ndGggLSBzdGFydCA+IHdpZHRoICYmIGN1cnIgPiBzdGFydCkgeworICAgIHJlc3VsdCArPSBsaW5lLnNsaWNlKHN0YXJ0LCBjdXJyKSArICdcbicgKyBsaW5lLnNsaWNlKGN1cnIgKyAxKTsKKyAgfSBlbHNlIHsKKyAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCk7CisgIH0KKworICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpOyAvLyBkcm9wIGV4dHJhIFxuIGpvaW5lcgorfQorCisvLyBFc2NhcGVzIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcuCitmdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyaW5nKSB7CisgIHZhciByZXN1bHQgPSAnJzsKKyAgdmFyIGNoYXI7CisgIHZhciBlc2NhcGVTZXE7CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHsKKyAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7CisgICAgZXNjYXBlU2VxID0gRVNDQVBFX1NFUVVFTkNFU1tjaGFyXTsKKyAgICByZXN1bHQgKz0gIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKQorICAgICAgPyBzdHJpbmdbaV0KKyAgICAgIDogZXNjYXBlU2VxIHx8IGVuY29kZUhleChjaGFyKTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7CisgIHZhciBfcmVzdWx0ID0gJycsCisgICAgICBfdGFnICAgID0gc3RhdGUudGFnLAorICAgICAgaW5kZXgsCisgICAgICBsZW5ndGg7CisKKyAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cy4KKyAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0W2luZGV4XSwgZmFsc2UsIGZhbHNlKSkgeworICAgICAgaWYgKGluZGV4ICE9PSAwKSBfcmVzdWx0ICs9ICcsICc7CisgICAgICBfcmVzdWx0ICs9IHN0YXRlLmR1bXA7CisgICAgfQorICB9CisKKyAgc3RhdGUudGFnID0gX3RhZzsKKyAgc3RhdGUuZHVtcCA9ICdbJyArIF9yZXN1bHQgKyAnXSc7Cit9CisKK2Z1bmN0aW9uIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCwgY29tcGFjdCkgeworICB2YXIgX3Jlc3VsdCA9ICcnLAorICAgICAgX3RhZyAgICA9IHN0YXRlLnRhZywKKyAgICAgIGluZGV4LAorICAgICAgbGVuZ3RoOworCisgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkgeworICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMuCisgICAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RbaW5kZXhdLCB0cnVlLCB0cnVlKSkgeworICAgICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7CisgICAgICAgIF9yZXN1bHQgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpOworICAgICAgfQorICAgICAgX3Jlc3VsdCArPSAnLSAnICsgc3RhdGUuZHVtcDsKKyAgICB9CisgIH0KKworICBzdGF0ZS50YWcgPSBfdGFnOworICBzdGF0ZS5kdW1wID0gX3Jlc3VsdCB8fCAnW10nOyAvLyBFbXB0eSBzZXF1ZW5jZSBpZiBubyB2YWxpZCB2YWx1ZXMuCit9CisKK2Z1bmN0aW9uIHdyaXRlRmxvd01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QpIHsKKyAgdmFyIF9yZXN1bHQgICAgICAgPSAnJywKKyAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsCisgICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSwKKyAgICAgIGluZGV4LAorICAgICAgbGVuZ3RoLAorICAgICAgb2JqZWN0S2V5LAorICAgICAgb2JqZWN0VmFsdWUsCisgICAgICBwYWlyQnVmZmVyOworCisgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHsKKyAgICBwYWlyQnVmZmVyID0gJyc7CisKKyAgICBpZiAoaW5kZXggIT09IDApIHBhaXJCdWZmZXIgKz0gJywgJzsKKworICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdOworICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07CisKKyAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdEtleSwgZmFsc2UsIGZhbHNlKSkgeworICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXk7CisgICAgfQorCisgICAgaWYgKHN0YXRlLmR1bXAubGVuZ3RoID4gMTAyNCkgcGFpckJ1ZmZlciArPSAnPyAnOworCisgICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wICsgJzogJzsKKworICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0VmFsdWUsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuCisgICAgfQorCisgICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wOworCisgICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC4KKyAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7CisgIH0KKworICBzdGF0ZS50YWcgPSBfdGFnOworICBzdGF0ZS5kdW1wID0gJ3snICsgX3Jlc3VsdCArICd9JzsKK30KKworZnVuY3Rpb24gd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHsKKyAgdmFyIF9yZXN1bHQgICAgICAgPSAnJywKKyAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsCisgICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSwKKyAgICAgIGluZGV4LAorICAgICAgbGVuZ3RoLAorICAgICAgb2JqZWN0S2V5LAorICAgICAgb2JqZWN0VmFsdWUsCisgICAgICBleHBsaWNpdFBhaXIsCisgICAgICBwYWlyQnVmZmVyOworCisgIC8vIEFsbG93IHNvcnRpbmcga2V5cyBzbyB0aGF0IHRoZSBvdXRwdXQgZmlsZSBpcyBkZXRlcm1pbmlzdGljCisgIGlmIChzdGF0ZS5zb3J0S2V5cyA9PT0gdHJ1ZSkgeworICAgIC8vIERlZmF1bHQgc29ydGluZworICAgIG9iamVjdEtleUxpc3Quc29ydCgpOworICB9IGVsc2UgaWYgKHR5cGVvZiBzdGF0ZS5zb3J0S2V5cyA9PT0gJ2Z1bmN0aW9uJykgeworICAgIC8vIEN1c3RvbSBzb3J0IGZ1bmN0aW9uCisgICAgb2JqZWN0S2V5TGlzdC5zb3J0KHN0YXRlLnNvcnRLZXlzKTsKKyAgfSBlbHNlIGlmIChzdGF0ZS5zb3J0S2V5cykgeworICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZworICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uJyk7CisgIH0KKworICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgcGFpckJ1ZmZlciA9ICcnOworCisgICAgaWYgKCFjb21wYWN0IHx8IGluZGV4ICE9PSAwKSB7CisgICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTsKKyAgICB9CisKKyAgICBvYmplY3RLZXkgPSBvYmplY3RLZXlMaXN0W2luZGV4XTsKKyAgICBvYmplY3RWYWx1ZSA9IG9iamVjdFtvYmplY3RLZXldOworCisgICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0S2V5LCB0cnVlLCB0cnVlLCB0cnVlKSkgeworICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCBrZXkuCisgICAgfQorCisgICAgZXhwbGljaXRQYWlyID0gKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHwKKyAgICAgICAgICAgICAgICAgICAoc3RhdGUuZHVtcCAmJiBzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpOworCisgICAgaWYgKGV4cGxpY2l0UGFpcikgeworICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkgeworICAgICAgICBwYWlyQnVmZmVyICs9ICc/JzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBhaXJCdWZmZXIgKz0gJz8gJzsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7CisKKyAgICBpZiAoZXhwbGljaXRQYWlyKSB7CisgICAgICBwYWlyQnVmZmVyICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTsKKyAgICB9CisKKyAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBvYmplY3RWYWx1ZSwgdHJ1ZSwgZXhwbGljaXRQYWlyKSkgeworICAgICAgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS4KKyAgICB9CisKKyAgICBpZiAoc3RhdGUuZHVtcCAmJiBDSEFSX0xJTkVfRkVFRCA9PT0gc3RhdGUuZHVtcC5jaGFyQ29kZUF0KDApKSB7CisgICAgICBwYWlyQnVmZmVyICs9ICc6JzsKKyAgICB9IGVsc2UgeworICAgICAgcGFpckJ1ZmZlciArPSAnOiAnOworICAgIH0KKworICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDsKKworICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuCisgICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyOworICB9CisKKyAgc3RhdGUudGFnID0gX3RhZzsKKyAgc3RhdGUuZHVtcCA9IF9yZXN1bHQgfHwgJ3t9JzsgLy8gRW1wdHkgbWFwcGluZyBpZiBubyB2YWxpZCBwYWlycy4KK30KKworZnVuY3Rpb24gZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBleHBsaWNpdCkgeworICB2YXIgX3Jlc3VsdCwgdHlwZUxpc3QsIGluZGV4LCBsZW5ndGgsIHR5cGUsIHN0eWxlOworCisgIHR5cGVMaXN0ID0gZXhwbGljaXQgPyBzdGF0ZS5leHBsaWNpdFR5cGVzIDogc3RhdGUuaW1wbGljaXRUeXBlczsKKworICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gdHlwZUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkgeworICAgIHR5cGUgPSB0eXBlTGlzdFtpbmRleF07CisKKyAgICBpZiAoKHR5cGUuaW5zdGFuY2VPZiAgfHwgdHlwZS5wcmVkaWNhdGUpICYmCisgICAgICAgICghdHlwZS5pbnN0YW5jZU9mIHx8ICgodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpICYmIChvYmplY3QgaW5zdGFuY2VvZiB0eXBlLmluc3RhbmNlT2YpKSkgJiYKKyAgICAgICAgKCF0eXBlLnByZWRpY2F0ZSAgfHwgdHlwZS5wcmVkaWNhdGUob2JqZWN0KSkpIHsKKworICAgICAgc3RhdGUudGFnID0gZXhwbGljaXQgPyB0eXBlLnRhZyA6ICc/JzsKKworICAgICAgaWYgKHR5cGUucmVwcmVzZW50KSB7CisgICAgICAgIHN0eWxlID0gc3RhdGUuc3R5bGVNYXBbdHlwZS50YWddIHx8IHR5cGUuZGVmYXVsdFN0eWxlOworCisgICAgICAgIGlmIChfdG9TdHJpbmcuY2FsbCh0eXBlLnJlcHJlc2VudCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHsKKyAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnQob2JqZWN0LCBzdHlsZSk7CisgICAgICAgIH0gZWxzZSBpZiAoX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5yZXByZXNlbnQsIHN0eWxlKSkgeworICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudFtzdHlsZV0ob2JqZWN0LCBzdHlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJyE8JyArIHR5cGUudGFnICsgJz4gdGFnIHJlc29sdmVyIGFjY2VwdHMgbm90ICInICsgc3R5bGUgKyAnIiBzdHlsZScpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGUuZHVtcCA9IF9yZXN1bHQ7CisgICAgICB9CisKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworLy8gU2VyaWFsaXplcyBgb2JqZWN0YCBhbmQgd3JpdGVzIGl0IHRvIGdsb2JhbCBgcmVzdWx0YC4KKy8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSBvbiBpbnZhbGlkIG9iamVjdC4KKy8vCitmdW5jdGlvbiB3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3QsIGJsb2NrLCBjb21wYWN0LCBpc2tleSkgeworICBzdGF0ZS50YWcgPSBudWxsOworICBzdGF0ZS5kdW1wID0gb2JqZWN0OworCisgIGlmICghZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBmYWxzZSkpIHsKKyAgICBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIHRydWUpOworICB9CisKKyAgdmFyIHR5cGUgPSBfdG9TdHJpbmcuY2FsbChzdGF0ZS5kdW1wKTsKKworICBpZiAoYmxvY2spIHsKKyAgICBibG9jayA9IChzdGF0ZS5mbG93TGV2ZWwgPCAwIHx8IHN0YXRlLmZsb3dMZXZlbCA+IGxldmVsKTsKKyAgfQorCisgIHZhciBvYmplY3RPckFycmF5ID0gdHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgfHwgdHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJywKKyAgICAgIGR1cGxpY2F0ZUluZGV4LAorICAgICAgZHVwbGljYXRlOworCisgIGlmIChvYmplY3RPckFycmF5KSB7CisgICAgZHVwbGljYXRlSW5kZXggPSBzdGF0ZS5kdXBsaWNhdGVzLmluZGV4T2Yob2JqZWN0KTsKKyAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGVJbmRleCAhPT0gLTE7CisgIH0KKworICBpZiAoKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHwgZHVwbGljYXRlIHx8IChzdGF0ZS5pbmRlbnQgIT09IDIgJiYgbGV2ZWwgPiAwKSkgeworICAgIGNvbXBhY3QgPSBmYWxzZTsKKyAgfQorCisgIGlmIChkdXBsaWNhdGUgJiYgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7CisgICAgc3RhdGUuZHVtcCA9ICcqcmVmXycgKyBkdXBsaWNhdGVJbmRleDsKKyAgfSBlbHNlIHsKKyAgICBpZiAob2JqZWN0T3JBcnJheSAmJiBkdXBsaWNhdGUgJiYgIXN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkgeworICAgICAgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7CisgICAgICBpZiAoYmxvY2sgJiYgKE9iamVjdC5rZXlzKHN0YXRlLmR1bXApLmxlbmd0aCAhPT0gMCkpIHsKKyAgICAgICAgd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTsKKyAgICAgICAgaWYgKGR1cGxpY2F0ZSkgeworICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7CisgICAgICAgIGlmIChkdXBsaWNhdGUpIHsKKyAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykgeworICAgICAgaWYgKGJsb2NrICYmIChzdGF0ZS5kdW1wLmxlbmd0aCAhPT0gMCkpIHsKKyAgICAgICAgd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7CisgICAgICAgIGlmIChkdXBsaWNhdGUpIHsKKyAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wKTsKKyAgICAgICAgaWYgKGR1cGxpY2F0ZSkgeworICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyAnICcgKyBzdGF0ZS5kdW1wOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBTdHJpbmddJykgeworICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gJz8nKSB7CisgICAgICAgIHdyaXRlU2NhbGFyKHN0YXRlLCBzdGF0ZS5kdW1wLCBsZXZlbCwgaXNrZXkpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpZiAoc3RhdGUuc2tpcEludmFsaWQpIHJldHVybiBmYWxzZTsKKyAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCd1bmFjY2VwdGFibGUga2luZCBvZiBhbiBvYmplY3QgdG8gZHVtcCAnICsgdHlwZSk7CisgICAgfQorCisgICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgeworICAgICAgc3RhdGUuZHVtcCA9ICchPCcgKyBzdGF0ZS50YWcgKyAnPiAnICsgc3RhdGUuZHVtcDsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZ2V0RHVwbGljYXRlUmVmZXJlbmNlcyhvYmplY3QsIHN0YXRlKSB7CisgIHZhciBvYmplY3RzID0gW10sCisgICAgICBkdXBsaWNhdGVzSW5kZXhlcyA9IFtdLAorICAgICAgaW5kZXgsCisgICAgICBsZW5ndGg7CisKKyAgaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7CisKKyAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGR1cGxpY2F0ZXNJbmRleGVzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHsKKyAgICBzdGF0ZS5kdXBsaWNhdGVzLnB1c2gob2JqZWN0c1tkdXBsaWNhdGVzSW5kZXhlc1tpbmRleF1dKTsKKyAgfQorICBzdGF0ZS51c2VkRHVwbGljYXRlcyA9IG5ldyBBcnJheShsZW5ndGgpOworfQorCitmdW5jdGlvbiBpbnNwZWN0Tm9kZShvYmplY3QsIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKSB7CisgIHZhciBvYmplY3RLZXlMaXN0LAorICAgICAgaW5kZXgsCisgICAgICBsZW5ndGg7CisKKyAgaWYgKG9iamVjdCAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JykgeworICAgIGluZGV4ID0gb2JqZWN0cy5pbmRleE9mKG9iamVjdCk7CisgICAgaWYgKGluZGV4ICE9PSAtMSkgeworICAgICAgaWYgKGR1cGxpY2F0ZXNJbmRleGVzLmluZGV4T2YoaW5kZXgpID09PSAtMSkgeworICAgICAgICBkdXBsaWNhdGVzSW5kZXhlcy5wdXNoKGluZGV4KTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgb2JqZWN0cy5wdXNoKG9iamVjdCk7CisKKyAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHsKKyAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgICAgICAgaW5zcGVjdE5vZGUob2JqZWN0W2luZGV4XSwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KTsKKworICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0S2V5TGlzdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgICAgICAgaW5zcGVjdE5vZGUob2JqZWN0W29iamVjdEtleUxpc3RbaW5kZXhdXSwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIGR1bXAoaW5wdXQsIG9wdGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisKKyAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKG9wdGlvbnMpOworCisgIGlmICghc3RhdGUubm9SZWZzKSBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKGlucHV0LCBzdGF0ZSk7CisKKyAgaWYgKHdyaXRlTm9kZShzdGF0ZSwgMCwgaW5wdXQsIHRydWUsIHRydWUpKSByZXR1cm4gc3RhdGUuZHVtcCArICdcbic7CisKKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBzYWZlRHVtcChpbnB1dCwgb3B0aW9ucykgeworICByZXR1cm4gZHVtcChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7Cit9CisKK21vZHVsZS5leHBvcnRzLmR1bXAgICAgID0gZHVtcDsKK21vZHVsZS5leHBvcnRzLnNhZmVEdW1wID0gc2FmZUR1bXA7CisKK30seyIuL2NvbW1vbiI6MjEsIi4vZXhjZXB0aW9uIjoyMywiLi9zY2hlbWEvZGVmYXVsdF9mdWxsIjoyOCwiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIjoyOX1dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8vIFlBTUwgZXJyb3IgY2xhc3MuIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODQ1ODk4NAorLy8KKyd1c2Ugc3RyaWN0JzsKKworZnVuY3Rpb24gWUFNTEV4Y2VwdGlvbihyZWFzb24sIG1hcmspIHsKKyAgLy8gU3VwZXIgY29uc3RydWN0b3IKKyAgRXJyb3IuY2FsbCh0aGlzKTsKKworICAvLyBJbmNsdWRlIHN0YWNrIHRyYWNlIGluIGVycm9yIG9iamVjdAorICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKKyAgICAvLyBDaHJvbWUgYW5kIE5vZGVKUworICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpOworICB9IGVsc2UgeworICAgIC8vIEZGLCBJRSAxMCsgYW5kIFNhZmFyaSA2Ky4gRmFsbGJhY2sgZm9yIG90aGVycworICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrIHx8ICcnOworICB9CisKKyAgdGhpcy5uYW1lID0gJ1lBTUxFeGNlcHRpb24nOworICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKKyAgdGhpcy5tYXJrID0gbWFyazsKKyAgdGhpcy5tZXNzYWdlID0gKHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJykgKyAodGhpcy5tYXJrID8gJyAnICsgdGhpcy5tYXJrLnRvU3RyaW5nKCkgOiAnJyk7Cit9CisKKworLy8gSW5oZXJpdCBmcm9tIEVycm9yCitZQU1MRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKK1lBTUxFeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gWUFNTEV4Y2VwdGlvbjsKKworCitZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHsKKyAgdmFyIHJlc3VsdCA9IHRoaXMubmFtZSArICc6ICc7CisKKyAgcmVzdWx0ICs9IHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJzsKKworICBpZiAoIWNvbXBhY3QgJiYgdGhpcy5tYXJrKSB7CisgICAgcmVzdWx0ICs9ICcgJyArIHRoaXMubWFyay50b1N0cmluZygpOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK307CisKKworbW9kdWxlLmV4cG9ydHMgPSBZQU1MRXhjZXB0aW9uOworCit9LHt9XSwyNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKKy8qZXNsaW50LWRpc2FibGUgbWF4LWxlbixuby11c2UtYmVmb3JlLWRlZmluZSovCisKK3ZhciBjb21tb24gICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24nKTsKK3ZhciBZQU1MRXhjZXB0aW9uICAgICAgID0gcmVxdWlyZSgnLi9leGNlcHRpb24nKTsKK3ZhciBNYXJrICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9tYXJrJyk7Cit2YXIgREVGQVVMVF9TQUZFX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfc2FmZScpOwordmFyIERFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTsKKworCit2YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTsKKworCit2YXIgQ09OVEVYVF9GTE9XX0lOICAgPSAxOwordmFyIENPTlRFWFRfRkxPV19PVVQgID0gMjsKK3ZhciBDT05URVhUX0JMT0NLX0lOICA9IDM7Cit2YXIgQ09OVEVYVF9CTE9DS19PVVQgPSA0OworCisKK3ZhciBDSE9NUElOR19DTElQICA9IDE7Cit2YXIgQ0hPTVBJTkdfU1RSSVAgPSAyOwordmFyIENIT01QSU5HX0tFRVAgID0gMzsKKworCit2YXIgUEFUVEVSTl9OT05fUFJJTlRBQkxFICAgICAgICAgPSAvW1x4MDAtXHgwOFx4MEJceDBDXHgwRS1ceDFGXHg3Ri1ceDg0XHg4Ni1ceDlGXHVGRkZFXHVGRkZGXXxbXHVEODAwLVx1REJGRl0oPyFbXHVEQzAwLVx1REZGRl0pfCg/OlteXHVEODAwLVx1REJGRl18XilbXHVEQzAwLVx1REZGRl0vOwordmFyIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTID0gL1tceDg1XHUyMDI4XHUyMDI5XS87Cit2YXIgUEFUVEVSTl9GTE9XX0lORElDQVRPUlMgICAgICAgPSAvWyxcW1xdXHtcfV0vOwordmFyIFBBVFRFUk5fVEFHX0hBTkRMRSAgICAgICAgICAgID0gL14oPzohfCEhfCFbYS16XC1dKyEpJC9pOwordmFyIFBBVFRFUk5fVEFHX1VSSSAgICAgICAgICAgICAgID0gL14oPzohfFteLFxbXF1ce1x9XSkoPzolWzAtOWEtZl17Mn18WzAtOWEtelwtIztcL1w/OkAmPVwrXCQsX1wuIX5cKidcKFwpXFtcXV0pKiQvaTsKKworCitmdW5jdGlvbiBpc19FT0woYykgeworICByZXR1cm4gKGMgPT09IDB4MEEvKiBMRiAqLykgfHwgKGMgPT09IDB4MEQvKiBDUiAqLyk7Cit9CisKK2Z1bmN0aW9uIGlzX1dISVRFX1NQQUNFKGMpIHsKKyAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fCAoYyA9PT0gMHgyMC8qIFNwYWNlICovKTsKK30KKworZnVuY3Rpb24gaXNfV1NfT1JfRU9MKGMpIHsKKyAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fAorICAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgfHwKKyAgICAgICAgIChjID09PSAweDBBLyogTEYgKi8pIHx8CisgICAgICAgICAoYyA9PT0gMHgwRC8qIENSICovKTsKK30KKworZnVuY3Rpb24gaXNfRkxPV19JTkRJQ0FUT1IoYykgeworICByZXR1cm4gYyA9PT0gMHgyQy8qICwgKi8gfHwKKyAgICAgICAgIGMgPT09IDB4NUIvKiBbICovIHx8CisgICAgICAgICBjID09PSAweDVELyogXSAqLyB8fAorICAgICAgICAgYyA9PT0gMHg3Qi8qIHsgKi8gfHwKKyAgICAgICAgIGMgPT09IDB4N0QvKiB9ICovOworfQorCitmdW5jdGlvbiBmcm9tSGV4Q29kZShjKSB7CisgIHZhciBsYzsKKworICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgeworICAgIHJldHVybiBjIC0gMHgzMDsKKyAgfQorCisgIC8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSovCisgIGxjID0gYyB8IDB4MjA7CisKKyAgaWYgKCgweDYxLyogYSAqLyA8PSBsYykgJiYgKGxjIDw9IDB4NjYvKiBmICovKSkgeworICAgIHJldHVybiBsYyAtIDB4NjEgKyAxMDsKKyAgfQorCisgIHJldHVybiAtMTsKK30KKworZnVuY3Rpb24gZXNjYXBlZEhleExlbihjKSB7CisgIGlmIChjID09PSAweDc4LyogeCAqLykgeyByZXR1cm4gMjsgfQorICBpZiAoYyA9PT0gMHg3NS8qIHUgKi8pIHsgcmV0dXJuIDQ7IH0KKyAgaWYgKGMgPT09IDB4NTUvKiBVICovKSB7IHJldHVybiA4OyB9CisgIHJldHVybiAwOworfQorCitmdW5jdGlvbiBmcm9tRGVjaW1hbENvZGUoYykgeworICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgeworICAgIHJldHVybiBjIC0gMHgzMDsKKyAgfQorCisgIHJldHVybiAtMTsKK30KKworZnVuY3Rpb24gc2ltcGxlRXNjYXBlU2VxdWVuY2UoYykgeworICByZXR1cm4gKGMgPT09IDB4MzAvKiAwICovKSA/ICdceDAwJyA6CisgICAgICAgIChjID09PSAweDYxLyogYSAqLykgPyAnXHgwNycgOgorICAgICAgICAoYyA9PT0gMHg2Mi8qIGIgKi8pID8gJ1x4MDgnIDoKKyAgICAgICAgKGMgPT09IDB4NzQvKiB0ICovKSA/ICdceDA5JyA6CisgICAgICAgIChjID09PSAweDA5LyogVGFiICovKSA/ICdceDA5JyA6CisgICAgICAgIChjID09PSAweDZFLyogbiAqLykgPyAnXHgwQScgOgorICAgICAgICAoYyA9PT0gMHg3Ni8qIHYgKi8pID8gJ1x4MEInIDoKKyAgICAgICAgKGMgPT09IDB4NjYvKiBmICovKSA/ICdceDBDJyA6CisgICAgICAgIChjID09PSAweDcyLyogciAqLykgPyAnXHgwRCcgOgorICAgICAgICAoYyA9PT0gMHg2NS8qIGUgKi8pID8gJ1x4MUInIDoKKyAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgPyAnICcgOgorICAgICAgICAoYyA9PT0gMHgyMi8qICIgKi8pID8gJ1x4MjInIDoKKyAgICAgICAgKGMgPT09IDB4MkYvKiAvICovKSA/ICcvJyA6CisgICAgICAgIChjID09PSAweDVDLyogXCAqLykgPyAnXHg1QycgOgorICAgICAgICAoYyA9PT0gMHg0RS8qIE4gKi8pID8gJ1x4ODUnIDoKKyAgICAgICAgKGMgPT09IDB4NUYvKiBfICovKSA/ICdceEEwJyA6CisgICAgICAgIChjID09PSAweDRDLyogTCAqLykgPyAnXHUyMDI4JyA6CisgICAgICAgIChjID09PSAweDUwLyogUCAqLykgPyAnXHUyMDI5JyA6ICcnOworfQorCitmdW5jdGlvbiBjaGFyRnJvbUNvZGVwb2ludChjKSB7CisgIGlmIChjIDw9IDB4RkZGRikgeworICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOworICB9CisgIC8vIEVuY29kZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKKyAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRgorICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgLSAweDAxMDAwMCkgPj4gMTApICsgMHhEODAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgLSAweDAxMDAwMCkgJiAweDAzRkYpICsgMHhEQzAwKTsKK30KKwordmFyIHNpbXBsZUVzY2FwZUNoZWNrID0gbmV3IEFycmF5KDI1Nik7IC8vIGludGVnZXIsIGZvciBmYXN0IGFjY2VzcwordmFyIHNpbXBsZUVzY2FwZU1hcCA9IG5ldyBBcnJheSgyNTYpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICBzaW1wbGVFc2NhcGVDaGVja1tpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpID8gMSA6IDA7CisgIHNpbXBsZUVzY2FwZU1hcFtpXSA9IHNpbXBsZUVzY2FwZVNlcXVlbmNlKGkpOworfQorCisKK2Z1bmN0aW9uIFN0YXRlKGlucHV0LCBvcHRpb25zKSB7CisgIHRoaXMuaW5wdXQgPSBpbnB1dDsKKworICB0aGlzLmZpbGVuYW1lICA9IG9wdGlvbnNbJ2ZpbGVuYW1lJ10gIHx8IG51bGw7CisgIHRoaXMuc2NoZW1hICAgID0gb3B0aW9uc1snc2NoZW1hJ10gICAgfHwgREVGQVVMVF9GVUxMX1NDSEVNQTsKKyAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zWydvbldhcm5pbmcnXSB8fCBudWxsOworICB0aGlzLmxlZ2FjeSAgICA9IG9wdGlvbnNbJ2xlZ2FjeSddICAgIHx8IGZhbHNlOworICB0aGlzLmpzb24gICAgICA9IG9wdGlvbnNbJ2pzb24nXSAgICAgIHx8IGZhbHNlOworICB0aGlzLmxpc3RlbmVyICA9IG9wdGlvbnNbJ2xpc3RlbmVyJ10gIHx8IG51bGw7CisKKyAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDsKKyAgdGhpcy50eXBlTWFwICAgICAgID0gdGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwOworCisgIHRoaXMubGVuZ3RoICAgICA9IGlucHV0Lmxlbmd0aDsKKyAgdGhpcy5wb3NpdGlvbiAgID0gMDsKKyAgdGhpcy5saW5lICAgICAgID0gMDsKKyAgdGhpcy5saW5lU3RhcnQgID0gMDsKKyAgdGhpcy5saW5lSW5kZW50ID0gMDsKKworICB0aGlzLmRvY3VtZW50cyA9IFtdOworCisgIC8qCisgIHRoaXMudmVyc2lvbjsKKyAgdGhpcy5jaGVja0xpbmVCcmVha3M7CisgIHRoaXMudGFnTWFwOworICB0aGlzLmFuY2hvck1hcDsKKyAgdGhpcy50YWc7CisgIHRoaXMuYW5jaG9yOworICB0aGlzLmtpbmQ7CisgIHRoaXMucmVzdWx0OyovCisKK30KKworCitmdW5jdGlvbiBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSB7CisgIHJldHVybiBuZXcgWUFNTEV4Y2VwdGlvbigKKyAgICBtZXNzYWdlLAorICAgIG5ldyBNYXJrKHN0YXRlLmZpbGVuYW1lLCBzdGF0ZS5pbnB1dCwgc3RhdGUucG9zaXRpb24sIHN0YXRlLmxpbmUsIChzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydCkpKTsKK30KKworZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZSwgbWVzc2FnZSkgeworICB0aHJvdyBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlLCBtZXNzYWdlKSB7CisgIGlmIChzdGF0ZS5vbldhcm5pbmcpIHsKKyAgICBzdGF0ZS5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSk7CisgIH0KK30KKworCit2YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7CisKKyAgWUFNTDogZnVuY3Rpb24gaGFuZGxlWWFtbERpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykgeworCisgICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7CisKKyAgICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gbnVsbCkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mICVZQU1MIGRpcmVjdGl2ZScpOworICAgIH0KKworICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1lBTUwgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTsKKyAgICB9CisKKyAgICBtYXRjaCA9IC9eKFswLTldKylcLihbMC05XSspJC8uZXhlYyhhcmdzWzBdKTsKKworICAgIGlmIChtYXRjaCA9PT0gbnVsbCkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgYXJndW1lbnQgb2YgdGhlIFlBTUwgZGlyZWN0aXZlJyk7CisgICAgfQorCisgICAgbWFqb3IgPSBwYXJzZUludChtYXRjaFsxXSwgMTApOworICAgIG1pbm9yID0gcGFyc2VJbnQobWF0Y2hbMl0sIDEwKTsKKworICAgIGlmIChtYWpvciAhPT0gMSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7CisgICAgfQorCisgICAgc3RhdGUudmVyc2lvbiA9IGFyZ3NbMF07CisgICAgc3RhdGUuY2hlY2tMaW5lQnJlYWtzID0gKG1pbm9yIDwgMik7CisKKyAgICBpZiAobWlub3IgIT09IDEgJiYgbWlub3IgIT09IDIpIHsKKyAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQnKTsKKyAgICB9CisgIH0sCisKKyAgVEFHOiBmdW5jdGlvbiBoYW5kbGVUYWdEaXJlY3RpdmUoc3RhdGUsIG5hbWUsIGFyZ3MpIHsKKworICAgIHZhciBoYW5kbGUsIHByZWZpeDsKKworICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMikgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1RBRyBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IHR3byBhcmd1bWVudHMnKTsKKyAgICB9CisKKyAgICBoYW5kbGUgPSBhcmdzWzBdOworICAgIHByZWZpeCA9IGFyZ3NbMV07CisKKyAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KGhhbmRsZSkpIHsKKyAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZScpOworICAgIH0KKworICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS50YWdNYXAsIGhhbmRsZSkpIHsKKyAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciAiJyArIGhhbmRsZSArICciIHRhZyBoYW5kbGUnKTsKKyAgICB9CisKKyAgICBpZiAoIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHByZWZpeCkpIHsKKyAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBwcmVmaXggKHNlY29uZCBhcmd1bWVudCkgb2YgdGhlIFRBRyBkaXJlY3RpdmUnKTsKKyAgICB9CisKKyAgICBzdGF0ZS50YWdNYXBbaGFuZGxlXSA9IHByZWZpeDsKKyAgfQorfTsKKworCitmdW5jdGlvbiBjYXB0dXJlU2VnbWVudChzdGF0ZSwgc3RhcnQsIGVuZCwgY2hlY2tKc29uKSB7CisgIHZhciBfcG9zaXRpb24sIF9sZW5ndGgsIF9jaGFyYWN0ZXIsIF9yZXN1bHQ7CisKKyAgaWYgKHN0YXJ0IDwgZW5kKSB7CisgICAgX3Jlc3VsdCA9IHN0YXRlLmlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpOworCisgICAgaWYgKGNoZWNrSnNvbikgeworICAgICAgZm9yIChfcG9zaXRpb24gPSAwLCBfbGVuZ3RoID0gX3Jlc3VsdC5sZW5ndGg7CisgICAgICAgICAgIF9wb3NpdGlvbiA8IF9sZW5ndGg7CisgICAgICAgICAgIF9wb3NpdGlvbiArPSAxKSB7CisgICAgICAgIF9jaGFyYWN0ZXIgPSBfcmVzdWx0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTsKKyAgICAgICAgaWYgKCEoX2NoYXJhY3RlciA9PT0gMHgwOSB8fAorICAgICAgICAgICAgICAoMHgyMCA8PSBfY2hhcmFjdGVyICYmIF9jaGFyYWN0ZXIgPD0gMHgxMEZGRkYpKSkgeworICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCB2YWxpZCBKU09OIGNoYXJhY3RlcicpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZSBzdHJlYW0gY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzJyk7CisgICAgfQorCisgICAgc3RhdGUucmVzdWx0ICs9IF9yZXN1bHQ7CisgIH0KK30KKworZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3ZlcnJpZGFibGVLZXlzKSB7CisgIHZhciBzb3VyY2VLZXlzLCBrZXksIGluZGV4LCBxdWFudGl0eTsKKworICBpZiAoIWNvbW1vbi5pc09iamVjdChzb3VyY2UpKSB7CisgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlJyk7CisgIH0KKworICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsKKworICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkgeworICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdOworCisgICAgaWYgKCFfaGFzT3duUHJvcGVydHkuY2FsbChkZXN0aW5hdGlvbiwga2V5KSkgeworICAgICAgZGVzdGluYXRpb25ba2V5XSA9IHNvdXJjZVtrZXldOworICAgICAgb3ZlcnJpZGFibGVLZXlzW2tleV0gPSB0cnVlOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlKSB7CisgIHZhciBpbmRleCwgcXVhbnRpdHk7CisKKyAga2V5Tm9kZSA9IFN0cmluZyhrZXlOb2RlKTsKKworICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkgeworICAgIF9yZXN1bHQgPSB7fTsKKyAgfQorCisgIGlmIChrZXlUYWcgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScpIHsKKyAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7CisgICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7CisgICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZVtpbmRleF0sIG92ZXJyaWRhYmxlS2V5cyk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUsIF9yZXN1bHQsIHZhbHVlTm9kZSwgb3ZlcnJpZGFibGVLZXlzKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKCFzdGF0ZS5qc29uICYmCisgICAgICAgICFfaGFzT3duUHJvcGVydHkuY2FsbChvdmVycmlkYWJsZUtleXMsIGtleU5vZGUpICYmCisgICAgICAgIF9oYXNPd25Qcm9wZXJ0eS5jYWxsKF9yZXN1bHQsIGtleU5vZGUpKSB7CisgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRlZCBtYXBwaW5nIGtleScpOworICAgIH0KKyAgICBfcmVzdWx0W2tleU5vZGVdID0gdmFsdWVOb2RlOworICAgIGRlbGV0ZSBvdmVycmlkYWJsZUtleXNba2V5Tm9kZV07CisgIH0KKworICByZXR1cm4gX3Jlc3VsdDsKK30KKworZnVuY3Rpb24gcmVhZExpbmVCcmVhayhzdGF0ZSkgeworICB2YXIgY2g7CisKKyAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICBpZiAoY2ggPT09IDB4MEEvKiBMRiAqLykgeworICAgIHN0YXRlLnBvc2l0aW9uKys7CisgIH0gZWxzZSBpZiAoY2ggPT09IDB4MEQvKiBDUiAqLykgeworICAgIHN0YXRlLnBvc2l0aW9uKys7CisgICAgaWYgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDBBLyogTEYgKi8pIHsKKyAgICAgIHN0YXRlLnBvc2l0aW9uKys7CisgICAgfQorICB9IGVsc2UgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICdhIGxpbmUgYnJlYWsgaXMgZXhwZWN0ZWQnKTsKKyAgfQorCisgIHN0YXRlLmxpbmUgKz0gMTsKKyAgc3RhdGUubGluZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247Cit9CisKK2Z1bmN0aW9uIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGFsbG93Q29tbWVudHMsIGNoZWNrSW5kZW50KSB7CisgIHZhciBsaW5lQnJlYWtzID0gMCwKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgd2hpbGUgKGNoICE9PSAwKSB7CisgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkgeworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworICAgIH0KKworICAgIGlmIChhbGxvd0NvbW1lbnRzICYmIGNoID09PSAweDIzLyogIyAqLykgeworICAgICAgZG8geworICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisgICAgICB9IHdoaWxlIChjaCAhPT0gMHgwQS8qIExGICovICYmIGNoICE9PSAweDBELyogQ1IgKi8gJiYgY2ggIT09IDApOworICAgIH0KKworICAgIGlmIChpc19FT0woY2gpKSB7CisgICAgICByZWFkTGluZUJyZWFrKHN0YXRlKTsKKworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKyAgICAgIGxpbmVCcmVha3MrKzsKKyAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSAwOworCisgICAgICB3aGlsZSAoY2ggPT09IDB4MjAvKiBTcGFjZSAqLykgeworICAgICAgICBzdGF0ZS5saW5lSW5kZW50Kys7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgaWYgKGNoZWNrSW5kZW50ICE9PSAtMSAmJiBsaW5lQnJlYWtzICE9PSAwICYmIHN0YXRlLmxpbmVJbmRlbnQgPCBjaGVja0luZGVudCkgeworICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ2RlZmljaWVudCBpbmRlbnRhdGlvbicpOworICB9CisKKyAgcmV0dXJuIGxpbmVCcmVha3M7Cit9CisKK2Z1bmN0aW9uIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkgeworICB2YXIgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24sCisgICAgICBjaDsKKworICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTsKKworICAvLyBDb25kaXRpb24gc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCBpcyB0ZXN0ZWQKKyAgLy8gaW4gcGFyZW50IG9uIGVhY2ggY2FsbCwgZm9yIGVmZmljaWVuY3kuIE5vIG5lZWRzIHRvIHRlc3QgaGVyZSBhZ2Fpbi4KKyAgaWYgKChjaCA9PT0gMHgyRC8qIC0gKi8gfHwgY2ggPT09IDB4MkUvKiAuICovKSAmJgorICAgICAgY2ggPT09IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMSkgJiYKKyAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDIpKSB7CisKKyAgICBfcG9zaXRpb24gKz0gMzsKKworICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pOworCisgICAgaWYgKGNoID09PSAwIHx8IGlzX1dTX09SX0VPTChjaCkpIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgY291bnQpIHsKKyAgaWYgKGNvdW50ID09PSAxKSB7CisgICAgc3RhdGUucmVzdWx0ICs9ICcgJzsKKyAgfSBlbHNlIGlmIChjb3VudCA+IDEpIHsKKyAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXG4nLCBjb3VudCAtIDEpOworICB9Cit9CisKKworZnVuY3Rpb24gcmVhZFBsYWluU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50LCB3aXRoaW5GbG93Q29sbGVjdGlvbikgeworICB2YXIgcHJlY2VkaW5nLAorICAgICAgZm9sbG93aW5nLAorICAgICAgY2FwdHVyZVN0YXJ0LAorICAgICAgY2FwdHVyZUVuZCwKKyAgICAgIGhhc1BlbmRpbmdDb250ZW50LAorICAgICAgX2xpbmUsCisgICAgICBfbGluZVN0YXJ0LAorICAgICAgX2xpbmVJbmRlbnQsCisgICAgICBfa2luZCA9IHN0YXRlLmtpbmQsCisgICAgICBfcmVzdWx0ID0gc3RhdGUucmVzdWx0LAorICAgICAgY2g7CisKKyAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICBpZiAoaXNfV1NfT1JfRU9MKGNoKSAgICAgIHx8CisgICAgICBpc19GTE9XX0lORElDQVRPUihjaCkgfHwKKyAgICAgIGNoID09PSAweDIzLyogIyAqLyAgICB8fAorICAgICAgY2ggPT09IDB4MjYvKiAmICovICAgIHx8CisgICAgICBjaCA9PT0gMHgyQS8qICogKi8gICAgfHwKKyAgICAgIGNoID09PSAweDIxLyogISAqLyAgICB8fAorICAgICAgY2ggPT09IDB4N0MvKiB8ICovICAgIHx8CisgICAgICBjaCA9PT0gMHgzRS8qID4gKi8gICAgfHwKKyAgICAgIGNoID09PSAweDI3LyogJyAqLyAgICB8fAorICAgICAgY2ggPT09IDB4MjIvKiAiICovICAgIHx8CisgICAgICBjaCA9PT0gMHgyNS8qICUgKi8gICAgfHwKKyAgICAgIGNoID09PSAweDQwLyogQCAqLyAgICB8fAorICAgICAgY2ggPT09IDB4NjAvKiBgICovKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHsKKyAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7CisKKyAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHwKKyAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHN0YXRlLmtpbmQgPSAnc2NhbGFyJzsKKyAgc3RhdGUucmVzdWx0ID0gJyc7CisgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKyAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTsKKworICB3aGlsZSAoY2ggIT09IDApIHsKKyAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7CisgICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7CisKKyAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fAorICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICB9IGVsc2UgaWYgKGNoID09PSAweDIzLyogIyAqLykgeworICAgICAgcHJlY2VkaW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiAtIDEpOworCisgICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICB9IGVsc2UgaWYgKChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHx8CisgICAgICAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihjaCkpIHsKKyAgICAgIGJyZWFrOworCisgICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7CisgICAgICBfbGluZSA9IHN0YXRlLmxpbmU7CisgICAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0OworICAgICAgX2xpbmVJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50OworICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIC0xKTsKKworICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPj0gbm9kZUluZGVudCkgeworICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGUucG9zaXRpb24gPSBjYXB0dXJlRW5kOworICAgICAgICBzdGF0ZS5saW5lID0gX2xpbmU7CisgICAgICAgIHN0YXRlLmxpbmVTdGFydCA9IF9saW5lU3RhcnQ7CisgICAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSBfbGluZUluZGVudDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorCisgICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7CisgICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7CisgICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBzdGF0ZS5saW5lIC0gX2xpbmUpOworICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uOworICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWlzX1dISVRFX1NQQUNFKGNoKSkgeworICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uICsgMTsKKyAgICB9CisKKyAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisgIH0KKworICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7CisKKyAgaWYgKHN0YXRlLnJlc3VsdCkgeworICAgIHJldHVybiB0cnVlOworICB9CisKKyAgc3RhdGUua2luZCA9IF9raW5kOworICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0OworICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHsKKyAgdmFyIGNoLAorICAgICAgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKGNoICE9PSAweDI3LyogJyAqLykgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHN0YXRlLmtpbmQgPSAnc2NhbGFyJzsKKyAgc3RhdGUucmVzdWx0ID0gJyc7CisgIHN0YXRlLnBvc2l0aW9uKys7CisgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKworICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7CisgICAgaWYgKGNoID09PSAweDI3LyogJyAqLykgeworICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpOworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworCisgICAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7CisgICAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKyAgICAgICAgc3RhdGUucG9zaXRpb24rKzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7CisgICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTsKKyAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7CisgICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247CisKKyAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhcicpOworCisgICAgfSBlbHNlIHsKKyAgICAgIHN0YXRlLnBvc2l0aW9uKys7CisgICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247CisgICAgfQorICB9CisKKyAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTsKK30KKworZnVuY3Rpb24gcmVhZERvdWJsZVF1b3RlZFNjYWxhcihzdGF0ZSwgbm9kZUluZGVudCkgeworICB2YXIgY2FwdHVyZVN0YXJ0LAorICAgICAgY2FwdHVyZUVuZCwKKyAgICAgIGhleExlbmd0aCwKKyAgICAgIGhleFJlc3VsdCwKKyAgICAgIHRtcCwKKyAgICAgIGNoOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKGNoICE9PSAweDIyLyogIiAqLykgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHN0YXRlLmtpbmQgPSAnc2NhbGFyJzsKKyAgc3RhdGUucmVzdWx0ID0gJyc7CisgIHN0YXRlLnBvc2l0aW9uKys7CisgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKworICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7CisgICAgaWYgKGNoID09PSAweDIyLyogIiAqLykgeworICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpOworICAgICAgc3RhdGUucG9zaXRpb24rKzsKKyAgICAgIHJldHVybiB0cnVlOworCisgICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1Qy8qIFwgKi8pIHsKKyAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTsKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKworICAgICAgaWYgKGlzX0VPTChjaCkpIHsKKyAgICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpOworCisgICAgICAgIC8vIFRPRE86IHJld29yayB0byBpbmxpbmUgZm4gd2l0aCBubyB0eXBlIGNhc3Q/CisgICAgICB9IGVsc2UgaWYgKGNoIDwgMjU2ICYmIHNpbXBsZUVzY2FwZUNoZWNrW2NoXSkgeworICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gc2ltcGxlRXNjYXBlTWFwW2NoXTsKKyAgICAgICAgc3RhdGUucG9zaXRpb24rKzsKKworICAgICAgfSBlbHNlIGlmICgodG1wID0gZXNjYXBlZEhleExlbihjaCkpID4gMCkgeworICAgICAgICBoZXhMZW5ndGggPSB0bXA7CisgICAgICAgIGhleFJlc3VsdCA9IDA7CisKKyAgICAgICAgZm9yICg7IGhleExlbmd0aCA+IDA7IGhleExlbmd0aC0tKSB7CisgICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworCisgICAgICAgICAgaWYgKCh0bXAgPSBmcm9tSGV4Q29kZShjaCkpID49IDApIHsKKyAgICAgICAgICAgIGhleFJlc3VsdCA9IChoZXhSZXN1bHQgPDwgNCkgKyB0bXA7CisKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2V4cGVjdGVkIGhleGFkZWNpbWFsIGNoYXJhY3RlcicpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0YXRlLnJlc3VsdCArPSBjaGFyRnJvbUNvZGVwb2ludChoZXhSZXN1bHQpOworCisgICAgICAgIHN0YXRlLnBvc2l0aW9uKys7CisKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIGVzY2FwZSBzZXF1ZW5jZScpOworICAgICAgfQorCisgICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247CisKKyAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHsKKyAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpOworICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpKTsKKyAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKworICAgIH0gZWxzZSBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7CisgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyJyk7CisKKyAgICB9IGVsc2UgeworICAgICAgc3RhdGUucG9zaXRpb24rKzsKKyAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjsKKyAgICB9CisgIH0KKworICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpOworfQorCitmdW5jdGlvbiByZWFkRmxvd0NvbGxlY3Rpb24oc3RhdGUsIG5vZGVJbmRlbnQpIHsKKyAgdmFyIHJlYWROZXh0ID0gdHJ1ZSwKKyAgICAgIF9saW5lLAorICAgICAgX3RhZyAgICAgPSBzdGF0ZS50YWcsCisgICAgICBfcmVzdWx0LAorICAgICAgX2FuY2hvciAgPSBzdGF0ZS5hbmNob3IsCisgICAgICBmb2xsb3dpbmcsCisgICAgICB0ZXJtaW5hdG9yLAorICAgICAgaXNQYWlyLAorICAgICAgaXNFeHBsaWNpdFBhaXIsCisgICAgICBpc01hcHBpbmcsCisgICAgICBvdmVycmlkYWJsZUtleXMgPSB7fSwKKyAgICAgIGtleU5vZGUsCisgICAgICBrZXlUYWcsCisgICAgICB2YWx1ZU5vZGUsCisgICAgICBjaDsKKworICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pOworCisgIGlmIChjaCA9PT0gMHg1Qi8qIFsgKi8pIHsKKyAgICB0ZXJtaW5hdG9yID0gMHg1RDsvKiBdICovCisgICAgaXNNYXBwaW5nID0gZmFsc2U7CisgICAgX3Jlc3VsdCA9IFtdOworICB9IGVsc2UgaWYgKGNoID09PSAweDdCLyogeyAqLykgeworICAgIHRlcm1pbmF0b3IgPSAweDdEOy8qIH0gKi8KKyAgICBpc01hcHBpbmcgPSB0cnVlOworICAgIF9yZXN1bHQgPSB7fTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7CisgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0OworICB9CisKKyAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworCisgIHdoaWxlIChjaCAhPT0gMCkgeworICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpOworCisgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICAgIGlmIChjaCA9PT0gdGVybWluYXRvcikgeworICAgICAgc3RhdGUucG9zaXRpb24rKzsKKyAgICAgIHN0YXRlLnRhZyA9IF90YWc7CisgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yOworICAgICAgc3RhdGUua2luZCA9IGlzTWFwcGluZyA/ICdtYXBwaW5nJyA6ICdzZXF1ZW5jZSc7CisgICAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0OworICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmICghcmVhZE5leHQpIHsKKyAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdtaXNzZWQgY29tbWEgYmV0d2VlbiBmbG93IGNvbGxlY3Rpb24gZW50cmllcycpOworICAgIH0KKworICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsOworICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gZmFsc2U7CisKKyAgICBpZiAoY2ggPT09IDB4M0YvKiA/ICovKSB7CisgICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7CisKKyAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSkgeworICAgICAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IHRydWU7CisgICAgICAgIHN0YXRlLnBvc2l0aW9uKys7CisgICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpOworICAgICAgfQorICAgIH0KKworICAgIF9saW5lID0gc3RhdGUubGluZTsKKyAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7CisgICAga2V5VGFnID0gc3RhdGUudGFnOworICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7CisgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7CisKKyAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pOworCisgICAgaWYgKChpc0V4cGxpY2l0UGFpciB8fCBzdGF0ZS5saW5lID09PSBfbGluZSkgJiYgY2ggPT09IDB4M0EvKiA6ICovKSB7CisgICAgICBpc1BhaXIgPSB0cnVlOworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7CisgICAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7CisgICAgICB2YWx1ZU5vZGUgPSBzdGF0ZS5yZXN1bHQ7CisgICAgfQorCisgICAgaWYgKGlzTWFwcGluZykgeworICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSk7CisgICAgfSBlbHNlIGlmIChpc1BhaXIpIHsKKyAgICAgIF9yZXN1bHQucHVzaChzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBudWxsLCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgIF9yZXN1bHQucHVzaChrZXlOb2RlKTsKKyAgICB9CisKKyAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTsKKworICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgICBpZiAoY2ggPT09IDB4MkMvKiAsICovKSB7CisgICAgICByZWFkTmV4dCA9IHRydWU7CisgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgIHJlYWROZXh0ID0gZmFsc2U7CisgICAgfQorICB9CisKKyAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZmxvdyBjb2xsZWN0aW9uJyk7Cit9CisKK2Z1bmN0aW9uIHJlYWRCbG9ja1NjYWxhcihzdGF0ZSwgbm9kZUluZGVudCkgeworICB2YXIgY2FwdHVyZVN0YXJ0LAorICAgICAgZm9sZGluZywKKyAgICAgIGNob21waW5nICAgICAgID0gQ0hPTVBJTkdfQ0xJUCwKKyAgICAgIGRpZFJlYWRDb250ZW50ID0gZmFsc2UsCisgICAgICBkZXRlY3RlZEluZGVudCA9IGZhbHNlLAorICAgICAgdGV4dEluZGVudCAgICAgPSBub2RlSW5kZW50LAorICAgICAgZW1wdHlMaW5lcyAgICAgPSAwLAorICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZSwKKyAgICAgIHRtcCwKKyAgICAgIGNoOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKGNoID09PSAweDdDLyogfCAqLykgeworICAgIGZvbGRpbmcgPSBmYWxzZTsKKyAgfSBlbHNlIGlmIChjaCA9PT0gMHgzRS8qID4gKi8pIHsKKyAgICBmb2xkaW5nID0gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7CisgIHN0YXRlLnJlc3VsdCA9ICcnOworCisgIHdoaWxlIChjaCAhPT0gMCkgeworICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKworICAgIGlmIChjaCA9PT0gMHgyQi8qICsgKi8gfHwgY2ggPT09IDB4MkQvKiAtICovKSB7CisgICAgICBpZiAoQ0hPTVBJTkdfQ0xJUCA9PT0gY2hvbXBpbmcpIHsKKyAgICAgICAgY2hvbXBpbmcgPSAoY2ggPT09IDB4MkIvKiArICovKSA/IENIT01QSU5HX0tFRVAgOiBDSE9NUElOR19TVFJJUDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYSBjaG9tcGluZyBtb2RlIGlkZW50aWZpZXInKTsKKyAgICAgIH0KKworICAgIH0gZWxzZSBpZiAoKHRtcCA9IGZyb21EZWNpbWFsQ29kZShjaCkpID49IDApIHsKKyAgICAgIGlmICh0bXAgPT09IDApIHsKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBleHBsaWNpdCBpbmRlbnRhdGlvbiB3aWR0aCBvZiBhIGJsb2NrIHNjYWxhcjsgaXQgY2Fubm90IGJlIGxlc3MgdGhhbiBvbmUnKTsKKyAgICAgIH0gZWxzZSBpZiAoIWRldGVjdGVkSW5kZW50KSB7CisgICAgICAgIHRleHRJbmRlbnQgPSBub2RlSW5kZW50ICsgdG1wIC0gMTsKKyAgICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3JlcGVhdCBvZiBhbiBpbmRlbnRhdGlvbiB3aWR0aCBpZGVudGlmaWVyJyk7CisgICAgICB9CisKKyAgICB9IGVsc2UgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkgeworICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9CisgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSk7CisKKyAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7CisgICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfQorICAgICAgd2hpbGUgKCFpc19FT0woY2gpICYmIChjaCAhPT0gMCkpOworICAgIH0KKyAgfQorCisgIHdoaWxlIChjaCAhPT0gMCkgeworICAgIHJlYWRMaW5lQnJlYWsoc3RhdGUpOworICAgIHN0YXRlLmxpbmVJbmRlbnQgPSAwOworCisgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICAgIHdoaWxlICgoIWRldGVjdGVkSW5kZW50IHx8IHN0YXRlLmxpbmVJbmRlbnQgPCB0ZXh0SW5kZW50KSAmJgorICAgICAgICAgICAoY2ggPT09IDB4MjAvKiBTcGFjZSAqLykpIHsKKyAgICAgIHN0YXRlLmxpbmVJbmRlbnQrKzsKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoIWRldGVjdGVkSW5kZW50ICYmIHN0YXRlLmxpbmVJbmRlbnQgPiB0ZXh0SW5kZW50KSB7CisgICAgICB0ZXh0SW5kZW50ID0gc3RhdGUubGluZUluZGVudDsKKyAgICB9CisKKyAgICBpZiAoaXNfRU9MKGNoKSkgeworICAgICAgZW1wdHlMaW5lcysrOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLy8gRW5kIG9mIHRoZSBzY2FsYXIuCisgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCB0ZXh0SW5kZW50KSB7CisKKyAgICAgIC8vIFBlcmZvcm0gdGhlIGNob21waW5nLgorICAgICAgaWYgKGNob21waW5nID09PSBDSE9NUElOR19LRUVQKSB7CisgICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTsKKyAgICAgIH0gZWxzZSBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0NMSVApIHsKKyAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB0aGUgc2NhbGFyIGlzIG5vdCBlbXB0eS4KKyAgICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gJ1xuJzsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICAvLyBCcmVhayB0aGlzIGB3aGlsZWAgY3ljbGUgYW5kIGdvIHRvIHRoZSBmdW5jaXRvbidzIGVwaWxvZ3VlLgorICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gRm9sZGVkIHN0eWxlOiB1c2UgZmFuY3kgcnVsZXMgdG8gaGFuZGxlIGxpbmUgYnJlYWtzLgorICAgIGlmIChmb2xkaW5nKSB7CisKKyAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuCisgICAgICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7CisgICAgICAgIGF0TW9yZUluZGVudGVkID0gdHJ1ZTsKKyAgICAgICAgLy8gZXhjZXB0IGZvciB0aGUgZmlyc3QgY29udGVudCBsaW5lIChjZi4gRXhhbXBsZSA4LjEpCisgICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTsKKworICAgICAgLy8gRW5kIG9mIG1vcmUtaW5kZW50ZWQgYmxvY2suCisgICAgICB9IGVsc2UgaWYgKGF0TW9yZUluZGVudGVkKSB7CisgICAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2U7CisgICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcbicsIGVtcHR5TGluZXMgKyAxKTsKKworICAgICAgLy8gSnVzdCBvbmUgbGluZSBicmVhayAtIHBlcmNlaXZlIGFzIHRoZSBzYW1lIGxpbmUuCisgICAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXMgPT09IDApIHsKKyAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB3ZSBoYXZlIGFscmVhZHkgcmVhZCBzb21lIHNjYWxhciBjb250ZW50LgorICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnICc7CisgICAgICAgIH0KKworICAgICAgLy8gU2V2ZXJhbCBsaW5lIGJyZWFrcyAtIHBlcmNlaXZlIGFzIGRpZmZlcmVudCBsaW5lcy4KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcbicsIGVtcHR5TGluZXMpOworICAgICAgfQorCisgICAgLy8gTGl0ZXJhbCBzdHlsZToganVzdCBhZGQgZXhhY3QgbnVtYmVyIG9mIGxpbmUgYnJlYWtzIGJldHdlZW4gY29udGVudCBsaW5lcy4KKyAgICB9IGVsc2UgeworICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay4KKyAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTsKKyAgICB9CisKKyAgICBkaWRSZWFkQ29udGVudCA9IHRydWU7CisgICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlOworICAgIGVtcHR5TGluZXMgPSAwOworICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uOworCisgICAgd2hpbGUgKCFpc19FT0woY2gpICYmIChjaCAhPT0gMCkpIHsKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgZmFsc2UpOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlLCBub2RlSW5kZW50KSB7CisgIHZhciBfbGluZSwKKyAgICAgIF90YWcgICAgICA9IHN0YXRlLnRhZywKKyAgICAgIF9hbmNob3IgICA9IHN0YXRlLmFuY2hvciwKKyAgICAgIF9yZXN1bHQgICA9IFtdLAorICAgICAgZm9sbG93aW5nLAorICAgICAgZGV0ZWN0ZWQgID0gZmFsc2UsCisgICAgICBjaDsKKworICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7CisgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0OworICB9CisKKyAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICB3aGlsZSAoY2ggIT09IDApIHsKKworICAgIGlmIChjaCAhPT0gMHgyRC8qIC0gKi8pIHsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTsKKworICAgIGlmICghaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRldGVjdGVkID0gdHJ1ZTsKKyAgICBzdGF0ZS5wb3NpdGlvbisrOworCisgICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkgeworICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPD0gbm9kZUluZGVudCkgeworICAgICAgICBfcmVzdWx0LnB1c2gobnVsbCk7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgIH0KKworICAgIF9saW5lID0gc3RhdGUubGluZTsKKyAgICBjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19JTiwgZmFsc2UsIHRydWUpOworICAgIF9yZXN1bHQucHVzaChzdGF0ZS5yZXN1bHQpOworICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTsKKworICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgICBpZiAoKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSAmJiAoY2ggIT09IDApKSB7CisgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGluZGVudGF0aW9uIG9mIGEgc2VxdWVuY2UgZW50cnknKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICBpZiAoZGV0ZWN0ZWQpIHsKKyAgICBzdGF0ZS50YWcgPSBfdGFnOworICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7CisgICAgc3RhdGUua2luZCA9ICdzZXF1ZW5jZSc7CisgICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIHJlYWRCbG9ja01hcHBpbmcoc3RhdGUsIG5vZGVJbmRlbnQsIGZsb3dJbmRlbnQpIHsKKyAgdmFyIGZvbGxvd2luZywKKyAgICAgIGFsbG93Q29tcGFjdCwKKyAgICAgIF9saW5lLAorICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZywKKyAgICAgIF9hbmNob3IgICAgICAgPSBzdGF0ZS5hbmNob3IsCisgICAgICBfcmVzdWx0ICAgICAgID0ge30sCisgICAgICBvdmVycmlkYWJsZUtleXMgPSB7fSwKKyAgICAgIGtleVRhZyAgICAgICAgPSBudWxsLAorICAgICAga2V5Tm9kZSAgICAgICA9IG51bGwsCisgICAgICB2YWx1ZU5vZGUgICAgID0gbnVsbCwKKyAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZSwKKyAgICAgIGRldGVjdGVkICAgICAgPSBmYWxzZSwKKyAgICAgIGNoOworCisgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHsKKyAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7CisgIH0KKworICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pOworCisgIHdoaWxlIChjaCAhPT0gMCkgeworICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTsKKyAgICBfbGluZSA9IHN0YXRlLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS4KKworICAgIC8vCisgICAgLy8gRXhwbGljaXQgbm90YXRpb24gY2FzZS4gVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBibG9ja3M6CisgICAgLy8gZmlyc3QgZm9yIHRoZSBrZXkgKGRlbm90ZWQgYnkgIj8iKSBhbmQgc2Vjb25kIGZvciB0aGUgdmFsdWUgKGRlbm90ZWQgYnkgIjoiKQorICAgIC8vCisgICAgaWYgKChjaCA9PT0gMHgzRi8qID8gKi8gfHwgY2ggPT09IDB4M0EvKiA6ICovKSAmJiBpc19XU19PUl9FT0woZm9sbG93aW5nKSkgeworCisgICAgICBpZiAoY2ggPT09IDB4M0YvKiA/ICovKSB7CisgICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7CisgICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpOworICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlOworICAgICAgICBhdEV4cGxpY2l0S2V5ID0gdHJ1ZTsKKyAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTsKKworICAgICAgfSBlbHNlIGlmIChhdEV4cGxpY2l0S2V5KSB7CisgICAgICAgIC8vIGkuZS4gMHgzQS8qIDogKi8gPT09IGNoYXJhY3RlciBhZnRlciB0aGUgZXhwbGljaXQga2V5LgorICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7CisgICAgICAgIGFsbG93Q29tcGFjdCA9IHRydWU7CisKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbmNvbXBsZXRlIGV4cGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBrZXkgbm9kZSBpcyBtaXNzZWQnKTsKKyAgICAgIH0KKworICAgICAgc3RhdGUucG9zaXRpb24gKz0gMTsKKyAgICAgIGNoID0gZm9sbG93aW5nOworCisgICAgLy8KKyAgICAvLyBJbXBsaWNpdCBub3RhdGlvbiBjYXNlLiBGbG93LXN0eWxlIG5vZGUgYXMgdGhlIGtleSBmaXJzdCwgdGhlbiAiOiIsIGFuZCB0aGUgdmFsdWUuCisgICAgLy8KKyAgICB9IGVsc2UgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfT1VULCBmYWxzZSwgdHJ1ZSkpIHsKKworICAgICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lKSB7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgICAgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkgeworICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA9PT0gMHgzQS8qIDogKi8pIHsKKyAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisKKyAgICAgICAgICBpZiAoIWlzX1dTX09SX0VPTChjaCkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzIGV4cGVjdGVkIGFmdGVyIHRoZSBrZXktdmFsdWUgc2VwYXJhdG9yIHdpdGhpbiBhIGJsb2NrIG1hcHBpbmcnKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkgeworICAgICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwpOworICAgICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7CisgICAgICAgICAgfQorCisgICAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlOworICAgICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTsKKyAgICAgICAgICBhbGxvd0NvbXBhY3QgPSBmYWxzZTsKKyAgICAgICAgICBrZXlUYWcgPSBzdGF0ZS50YWc7CisgICAgICAgICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDsKKworICAgICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7CisgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2NhbiBub3QgcmVhZCBhbiBpbXBsaWNpdCBtYXBwaW5nIHBhaXI7IGEgY29sb24gaXMgbWlzc2VkJyk7CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzdGF0ZS50YWcgPSBfdGFnOworICAgICAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7CisgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLgorICAgICAgICB9CisKKyAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHsKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2NhbiBub3QgcmVhZCBhIGJsb2NrIG1hcHBpbmcgZW50cnk7IGEgbXVsdGlsaW5lIGtleSBtYXkgbm90IGJlIGFuIGltcGxpY2l0IGtleScpOworCisgICAgICB9IGVsc2UgeworICAgICAgICBzdGF0ZS50YWcgPSBfdGFnOworICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuCisgICAgICB9CisKKyAgICB9IGVsc2UgeworICAgICAgYnJlYWs7IC8vIFJlYWRpbmcgaXMgZG9uZS4gR28gdG8gdGhlIGVwaWxvZ3VlLgorICAgIH0KKworICAgIC8vCisgICAgLy8gQ29tbW9uIHJlYWRpbmcgY29kZSBmb3IgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQgbm90YXRpb25zLgorICAgIC8vCisgICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSB7CisgICAgICBpZiAoY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfT1VULCB0cnVlLCBhbGxvd0NvbXBhY3QpKSB7CisgICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7CisgICAgICAgICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB2YWx1ZU5vZGUgPSBzdGF0ZS5yZXN1bHQ7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCFhdEV4cGxpY2l0S2V5KSB7CisgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpOworICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDsKKyAgICAgIH0KKworICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpOworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQgJiYgKGNoICE9PSAwKSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIG1hcHBpbmcgZW50cnknKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICAvLworICAvLyBFcGlsb2d1ZS4KKyAgLy8KKworICAvLyBTcGVjaWFsIGNhc2U6IGxhc3QgbWFwcGluZydzIG5vZGUgY29udGFpbnMgb25seSB0aGUga2V5IGluIGV4cGxpY2l0IG5vdGF0aW9uLgorICBpZiAoYXRFeHBsaWNpdEtleSkgeworICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTsKKyAgfQorCisgIC8vIEV4cG9zZSB0aGUgcmVzdWx0aW5nIG1hcHBpbmcuCisgIGlmIChkZXRlY3RlZCkgeworICAgIHN0YXRlLnRhZyA9IF90YWc7CisgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjsKKyAgICBzdGF0ZS5raW5kID0gJ21hcHBpbmcnOworICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7CisgIH0KKworICByZXR1cm4gZGV0ZWN0ZWQ7Cit9CisKK2Z1bmN0aW9uIHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkgeworICB2YXIgX3Bvc2l0aW9uLAorICAgICAgaXNWZXJiYXRpbSA9IGZhbHNlLAorICAgICAgaXNOYW1lZCAgICA9IGZhbHNlLAorICAgICAgdGFnSGFuZGxlLAorICAgICAgdGFnTmFtZSwKKyAgICAgIGNoOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKGNoICE9PSAweDIxLyogISAqLykgcmV0dXJuIGZhbHNlOworCisgIGlmIChzdGF0ZS50YWcgIT09IG51bGwpIHsKKyAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHknKTsKKyAgfQorCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKworICBpZiAoY2ggPT09IDB4M0MvKiA8ICovKSB7CisgICAgaXNWZXJiYXRpbSA9IHRydWU7CisgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworCisgIH0gZWxzZSBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7CisgICAgaXNOYW1lZCA9IHRydWU7CisgICAgdGFnSGFuZGxlID0gJyEhJzsKKyAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisKKyAgfSBlbHNlIHsKKyAgICB0YWdIYW5kbGUgPSAnISc7CisgIH0KKworICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjsKKworICBpZiAoaXNWZXJiYXRpbSkgeworICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9CisgICAgd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSAweDNFLyogPiAqLyk7CisKKyAgICBpZiAoc3RhdGUucG9zaXRpb24gPCBzdGF0ZS5sZW5ndGgpIHsKKyAgICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTsKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnJyk7CisgICAgfQorICB9IGVsc2UgeworICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkgeworCisgICAgICBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7CisgICAgICAgIGlmICghaXNOYW1lZCkgeworICAgICAgICAgIHRhZ0hhbmRsZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiAtIDEsIHN0YXRlLnBvc2l0aW9uICsgMSk7CisKKyAgICAgICAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KHRhZ0hhbmRsZSkpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lZCB0YWcgaGFuZGxlIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVycycpOworICAgICAgICAgIH0KKworICAgICAgICAgIGlzTmFtZWQgPSB0cnVlOworICAgICAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uICsgMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrcycpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICB9CisKKyAgICB0YWdOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7CisKKyAgICBpZiAoUEFUVEVSTl9GTE9XX0lORElDQVRPUlMudGVzdCh0YWdOYW1lKSkgeworICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVycycpOworICAgIH0KKyAgfQorCisgIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgbmFtZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnM6ICcgKyB0YWdOYW1lKTsKKyAgfQorCisgIGlmIChpc1ZlcmJhdGltKSB7CisgICAgc3RhdGUudGFnID0gdGFnTmFtZTsKKworICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnRhZ01hcCwgdGFnSGFuZGxlKSkgeworICAgIHN0YXRlLnRhZyA9IHN0YXRlLnRhZ01hcFt0YWdIYW5kbGVdICsgdGFnTmFtZTsKKworICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEnKSB7CisgICAgc3RhdGUudGFnID0gJyEnICsgdGFnTmFtZTsKKworICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEhJykgeworICAgIHN0YXRlLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnTmFtZTsKKworICB9IGVsc2UgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmRlY2xhcmVkIHRhZyBoYW5kbGUgIicgKyB0YWdIYW5kbGUgKyAnIicpOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkgeworICB2YXIgX3Bvc2l0aW9uLAorICAgICAgY2g7CisKKyAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICBpZiAoY2ggIT09IDB4MjYvKiAmICovKSByZXR1cm4gZmFsc2U7CisKKyAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhbiBhbmNob3IgcHJvcGVydHknKTsKKyAgfQorCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247CisKKyAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHsKKyAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisgIH0KKworICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFuY2hvciBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyJyk7CisgIH0KKworICBzdGF0ZS5hbmNob3IgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHJlYWRBbGlhcyhzdGF0ZSkgeworICB2YXIgX3Bvc2l0aW9uLCBhbGlhcywKKyAgICAgIGNoOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKGNoICE9PSAweDJBLyogKiAqLykgcmV0dXJuIGZhbHNlOworCisgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb247CisKKyAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHsKKyAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7CisgIH0KKworICBpZiAoc3RhdGUucG9zaXRpb24gPT09IF9wb3NpdGlvbikgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lIG9mIGFuIGFsaWFzIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTsKKyAgfQorCisgIGFsaWFzID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7CisKKyAgaWYgKCFzdGF0ZS5hbmNob3JNYXAuaGFzT3duUHJvcGVydHkoYWxpYXMpKSB7CisgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuaWRlbnRpZmllZCBhbGlhcyAiJyArIGFsaWFzICsgJyInKTsKKyAgfQorCisgIHN0YXRlLnJlc3VsdCA9IHN0YXRlLmFuY2hvck1hcFthbGlhc107CisgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGNvbXBvc2VOb2RlKHN0YXRlLCBwYXJlbnRJbmRlbnQsIG5vZGVDb250ZXh0LCBhbGxvd1RvU2VlaywgYWxsb3dDb21wYWN0KSB7CisgIHZhciBhbGxvd0Jsb2NrU3R5bGVzLAorICAgICAgYWxsb3dCbG9ja1NjYWxhcnMsCisgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMsCisgICAgICBpbmRlbnRTdGF0dXMgPSAxLCAvLyAxOiB0aGlzPnBhcmVudCwgMDogdGhpcz1wYXJlbnQsIC0xOiB0aGlzPHBhcmVudAorICAgICAgYXROZXdMaW5lICA9IGZhbHNlLAorICAgICAgaGFzQ29udGVudCA9IGZhbHNlLAorICAgICAgdHlwZUluZGV4LAorICAgICAgdHlwZVF1YW50aXR5LAorICAgICAgdHlwZSwKKyAgICAgIGZsb3dJbmRlbnQsCisgICAgICBibG9ja0luZGVudDsKKworICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHsKKyAgICBzdGF0ZS5saXN0ZW5lcignb3BlbicsIHN0YXRlKTsKKyAgfQorCisgIHN0YXRlLnRhZyAgICA9IG51bGw7CisgIHN0YXRlLmFuY2hvciA9IG51bGw7CisgIHN0YXRlLmtpbmQgICA9IG51bGw7CisgIHN0YXRlLnJlc3VsdCA9IG51bGw7CisKKyAgYWxsb3dCbG9ja1N0eWxlcyA9IGFsbG93QmxvY2tTY2FsYXJzID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0KKyAgICBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQgfHwKKyAgICBDT05URVhUX0JMT0NLX0lOICA9PT0gbm9kZUNvbnRleHQ7CisKKyAgaWYgKGFsbG93VG9TZWVrKSB7CisgICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkgeworICAgICAgYXROZXdMaW5lID0gdHJ1ZTsKKworICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHsKKyAgICAgICAgaW5kZW50U3RhdHVzID0gMTsKKyAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7CisgICAgICAgIGluZGVudFN0YXR1cyA9IDA7CisgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHsKKyAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7CisgICAgICB9CisgICAgfQorICB9CisKKyAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkgeworICAgIHdoaWxlIChyZWFkVGFnUHJvcGVydHkoc3RhdGUpIHx8IHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkpIHsKKyAgICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHsKKyAgICAgICAgYXROZXdMaW5lID0gdHJ1ZTsKKyAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYWxsb3dCbG9ja1N0eWxlczsKKworICAgICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkgeworICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7CisgICAgICAgICAgaW5kZW50U3RhdHVzID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7CisgICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMpIHsKKyAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhdE5ld0xpbmUgfHwgYWxsb3dDb21wYWN0OworICB9CisKKyAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSB8fCBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQpIHsKKyAgICBpZiAoQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCB8fCBDT05URVhUX0ZMT1dfT1VUID09PSBub2RlQ29udGV4dCkgeworICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudDsKKyAgICB9IGVsc2UgeworICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudCArIDE7CisgICAgfQorCisgICAgYmxvY2tJbmRlbnQgPSBzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydDsKKworICAgIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHsKKyAgICAgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYKKyAgICAgICAgICAocmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KSB8fAorICAgICAgICAgICByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBibG9ja0luZGVudCwgZmxvd0luZGVudCkpIHx8CisgICAgICAgICAgcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBmbG93SW5kZW50KSkgeworICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgoYWxsb3dCbG9ja1NjYWxhcnMgJiYgcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkgfHwKKyAgICAgICAgICAgIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpIHx8CisgICAgICAgICAgICByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkgeworICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlOworCisgICAgICAgIH0gZWxzZSBpZiAocmVhZEFsaWFzKHN0YXRlKSkgeworICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlOworCisgICAgICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCB8fCBzdGF0ZS5hbmNob3IgIT09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhbGlhcyBub2RlIHNob3VsZCBub3QgaGF2ZSBhbnkgcHJvcGVydGllcycpOworICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2UgaWYgKHJlYWRQbGFpblNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCkpIHsKKyAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTsKKworICAgICAgICAgIGlmIChzdGF0ZS50YWcgPT09IG51bGwpIHsKKyAgICAgICAgICAgIHN0YXRlLnRhZyA9ICc/JzsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7CisgICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGluZGVudFN0YXR1cyA9PT0gMCkgeworICAgICAgLy8gU3BlY2lhbCBjYXNlOiBibG9jayBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBzYW1lIGluZGVudGF0aW9uIGxldmVsIGFzIHRoZSBwYXJlbnQuCisgICAgICAvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI3OTk3ODQKKyAgICAgIGhhc0NvbnRlbnQgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYgcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KTsKKyAgICB9CisgIH0KKworICBpZiAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJyEnKSB7CisgICAgaWYgKHN0YXRlLnRhZyA9PT0gJz8nKSB7CisgICAgICBmb3IgKHR5cGVJbmRleCA9IDAsIHR5cGVRdWFudGl0eSA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOworICAgICAgICAgICB0eXBlSW5kZXggPCB0eXBlUXVhbnRpdHk7CisgICAgICAgICAgIHR5cGVJbmRleCArPSAxKSB7CisgICAgICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW3R5cGVJbmRleF07CisKKyAgICAgICAgLy8gSW1wbGljaXQgcmVzb2x2aW5nIGlzIG5vdCBhbGxvd2VkIGZvciBub24tc2NhbGFyIHR5cGVzLCBhbmQgJz8nCisgICAgICAgIC8vIG5vbi1zcGVjaWZpYyB0YWcgaXMgb25seSBhc3NpZ25lZCB0byBwbGFpbiBzY2FsYXJzLiBTbywgaXQgaXNuJ3QKKyAgICAgICAgLy8gbmVlZGVkIHRvIGNoZWNrIGZvciAna2luZCcgY29uZm9ybWl0eS4KKworICAgICAgICBpZiAodHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCkpIHsgLy8gYHN0YXRlLnJlc3VsdGAgdXBkYXRlZCBpbiByZXNvbHZlciBpZiBtYXRjaGVkCisgICAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTsKKyAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZzsKKyAgICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7CisgICAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnR5cGVNYXAsIHN0YXRlLnRhZykpIHsKKyAgICAgIHR5cGUgPSBzdGF0ZS50eXBlTWFwW3N0YXRlLnRhZ107CisKKyAgICAgIGlmIChzdGF0ZS5yZXN1bHQgIT09IG51bGwgJiYgdHlwZS5raW5kICE9PSBzdGF0ZS5raW5kKSB7CisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgbm9kZSBraW5kIGZvciAhPCcgKyBzdGF0ZS50YWcgKyAnPiB0YWc7IGl0IHNob3VsZCBiZSAiJyArIHR5cGUua2luZCArICciLCBub3QgIicgKyBzdGF0ZS5raW5kICsgJyInKTsKKyAgICAgIH0KKworICAgICAgaWYgKCF0eXBlLnJlc29sdmUoc3RhdGUucmVzdWx0KSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWQKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCByZXNvbHZlIGEgbm9kZSB3aXRoICE8JyArIHN0YXRlLnRhZyArICc+IGV4cGxpY2l0IHRhZycpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTsKKyAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkgeworICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0OworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIHRhZyAhPCcgKyBzdGF0ZS50YWcgKyAnPicpOworICAgIH0KKyAgfQorCisgIGlmIChzdGF0ZS5saXN0ZW5lciAhPT0gbnVsbCkgeworICAgIHN0YXRlLmxpc3RlbmVyKCdjbG9zZScsIHN0YXRlKTsKKyAgfQorICByZXR1cm4gc3RhdGUudGFnICE9PSBudWxsIHx8ICBzdGF0ZS5hbmNob3IgIT09IG51bGwgfHwgaGFzQ29udGVudDsKK30KKworZnVuY3Rpb24gcmVhZERvY3VtZW50KHN0YXRlKSB7CisgIHZhciBkb2N1bWVudFN0YXJ0ID0gc3RhdGUucG9zaXRpb24sCisgICAgICBfcG9zaXRpb24sCisgICAgICBkaXJlY3RpdmVOYW1lLAorICAgICAgZGlyZWN0aXZlQXJncywKKyAgICAgIGhhc0RpcmVjdGl2ZXMgPSBmYWxzZSwKKyAgICAgIGNoOworCisgIHN0YXRlLnZlcnNpb24gPSBudWxsOworICBzdGF0ZS5jaGVja0xpbmVCcmVha3MgPSBzdGF0ZS5sZWdhY3k7CisgIHN0YXRlLnRhZ01hcCA9IHt9OworICBzdGF0ZS5hbmNob3JNYXAgPSB7fTsKKworICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7CisgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpOworCisgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTsKKworICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gMCB8fCBjaCAhPT0gMHgyNS8qICUgKi8pIHsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlOworICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjsKKworICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkgeworICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOworICAgIH0KKworICAgIGRpcmVjdGl2ZU5hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTsKKyAgICBkaXJlY3RpdmVBcmdzID0gW107CisKKyAgICBpZiAoZGlyZWN0aXZlTmFtZS5sZW5ndGggPCAxKSB7CisgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoJyk7CisgICAgfQorCisgICAgd2hpbGUgKGNoICE9PSAwKSB7CisgICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICAgIH0KKworICAgICAgaWYgKGNoID09PSAweDIzLyogIyAqLykgeworICAgICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfQorICAgICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX0VPTChjaCkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYgKGlzX0VPTChjaCkpIGJyZWFrOworCisgICAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjsKKworICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7CisgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsKKyAgICAgIH0KKworICAgICAgZGlyZWN0aXZlQXJncy5wdXNoKHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pKTsKKyAgICB9CisKKyAgICBpZiAoY2ggIT09IDApIHJlYWRMaW5lQnJlYWsoc3RhdGUpOworCisgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKGRpcmVjdGl2ZUhhbmRsZXJzLCBkaXJlY3RpdmVOYW1lKSkgeworICAgICAgZGlyZWN0aXZlSGFuZGxlcnNbZGlyZWN0aXZlTmFtZV0oc3RhdGUsIGRpcmVjdGl2ZU5hbWUsIGRpcmVjdGl2ZUFyZ3MpOworICAgIH0gZWxzZSB7CisgICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bmtub3duIGRvY3VtZW50IGRpcmVjdGl2ZSAiJyArIGRpcmVjdGl2ZU5hbWUgKyAnIicpOworICAgIH0KKyAgfQorCisgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTsKKworICBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gMCAmJgorICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgICAgID09PSAweDJELyogLSAqLyAmJgorICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpID09PSAweDJELyogLSAqLyAmJgorICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDIpID09PSAweDJELyogLSAqLykgeworICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7CisgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpOworCisgIH0gZWxzZSBpZiAoaGFzRGlyZWN0aXZlcykgeworICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmVzIGVuZCBtYXJrIGlzIGV4cGVjdGVkJyk7CisgIH0KKworICBjb21wb3NlTm9kZShzdGF0ZSwgc3RhdGUubGluZUluZGVudCAtIDEsIENPTlRFWFRfQkxPQ0tfT1VULCBmYWxzZSwgdHJ1ZSk7CisgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTsKKworICBpZiAoc3RhdGUuY2hlY2tMaW5lQnJlYWtzICYmCisgICAgICBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUy50ZXN0KHN0YXRlLmlucHV0LnNsaWNlKGRvY3VtZW50U3RhcnQsIHN0YXRlLnBvc2l0aW9uKSkpIHsKKyAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdub24tQVNDSUkgbGluZSBicmVha3MgYXJlIGludGVycHJldGVkIGFzIGNvbnRlbnQnKTsKKyAgfQorCisgIHN0YXRlLmRvY3VtZW50cy5wdXNoKHN0YXRlLnJlc3VsdCk7CisKKyAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkgeworCisgICAgaWYgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDJFLyogLiAqLykgeworICAgICAgc3RhdGUucG9zaXRpb24gKz0gMzsKKyAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTsKKyAgICB9CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7CisgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2VuZCBvZiB0aGUgc3RyZWFtIG9yIGEgZG9jdW1lbnQgc2VwYXJhdG9yIGlzIGV4cGVjdGVkJyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuOworICB9Cit9CisKKworZnVuY3Rpb24gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucykgeworICBpbnB1dCA9IFN0cmluZyhpbnB1dCk7CisgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworCisgIGlmIChpbnB1dC5sZW5ndGggIT09IDApIHsKKworICAgIC8vIEFkZCB0YWlsaW5nIGBcbmAgaWYgbm90IGV4aXN0cworICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBBLyogTEYgKi8gJiYKKyAgICAgICAgaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMHgwRC8qIENSICovKSB7CisgICAgICBpbnB1dCArPSAnXG4nOworICAgIH0KKworICAgIC8vIFN0cmlwIEJPTQorICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHsKKyAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7CisgICAgfQorICB9CisKKyAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKGlucHV0LCBvcHRpb25zKTsKKworICAvLyBVc2UgMCBhcyBzdHJpbmcgdGVybWluYXRvci4gVGhhdCBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgYm91bmRzIGNoZWNrLgorICBzdGF0ZS5pbnB1dCArPSAnXDAnOworCisgIHdoaWxlIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgyMC8qIFNwYWNlICovKSB7CisgICAgc3RhdGUubGluZUluZGVudCArPSAxOworICAgIHN0YXRlLnBvc2l0aW9uICs9IDE7CisgIH0KKworICB3aGlsZSAoc3RhdGUucG9zaXRpb24gPCAoc3RhdGUubGVuZ3RoIC0gMSkpIHsKKyAgICByZWFkRG9jdW1lbnQoc3RhdGUpOworICB9CisKKyAgcmV0dXJuIHN0YXRlLmRvY3VtZW50czsKK30KKworCitmdW5jdGlvbiBsb2FkQWxsKGlucHV0LCBpdGVyYXRvciwgb3B0aW9ucykgeworICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyksIGluZGV4LCBsZW5ndGg7CisKKyAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGRvY3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgaXRlcmF0b3IoZG9jdW1lbnRzW2luZGV4XSk7CisgIH0KK30KKworCitmdW5jdGlvbiBsb2FkKGlucHV0LCBvcHRpb25zKSB7CisgIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTsKKworICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkgeworICAgIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi8KKyAgICByZXR1cm4gdW5kZWZpbmVkOworICB9IGVsc2UgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICByZXR1cm4gZG9jdW1lbnRzWzBdOworICB9CisgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtLCBidXQgZm91bmQgbW9yZScpOworfQorCisKK2Z1bmN0aW9uIHNhZmVMb2FkQWxsKGlucHV0LCBvdXRwdXQsIG9wdGlvbnMpIHsKKyAgbG9hZEFsbChpbnB1dCwgb3V0cHV0LCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTsKK30KKworCitmdW5jdGlvbiBzYWZlTG9hZChpbnB1dCwgb3B0aW9ucykgeworICByZXR1cm4gbG9hZChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7Cit9CisKKworbW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgPSBsb2FkQWxsOworbW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgPSBsb2FkOworbW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgPSBzYWZlTG9hZEFsbDsKK21vZHVsZS5leHBvcnRzLnNhZmVMb2FkICAgID0gc2FmZUxvYWQ7CisKK30seyIuL2NvbW1vbiI6MjEsIi4vZXhjZXB0aW9uIjoyMywiLi9tYXJrIjoyNSwiLi9zY2hlbWEvZGVmYXVsdF9mdWxsIjoyOCwiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIjoyOX1dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworCit2YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTsKKworCitmdW5jdGlvbiBNYXJrKG5hbWUsIGJ1ZmZlciwgcG9zaXRpb24sIGxpbmUsIGNvbHVtbikgeworICB0aGlzLm5hbWUgICAgID0gbmFtZTsKKyAgdGhpcy5idWZmZXIgICA9IGJ1ZmZlcjsKKyAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOworICB0aGlzLmxpbmUgICAgID0gbGluZTsKKyAgdGhpcy5jb2x1bW4gICA9IGNvbHVtbjsKK30KKworCitNYXJrLnByb3RvdHlwZS5nZXRTbmlwcGV0ID0gZnVuY3Rpb24gZ2V0U25pcHBldChpbmRlbnQsIG1heExlbmd0aCkgeworICB2YXIgaGVhZCwgc3RhcnQsIHRhaWwsIGVuZCwgc25pcHBldDsKKworICBpZiAoIXRoaXMuYnVmZmVyKSByZXR1cm4gbnVsbDsKKworICBpbmRlbnQgPSBpbmRlbnQgfHwgNDsKKyAgbWF4TGVuZ3RoID0gbWF4TGVuZ3RoIHx8IDc1OworCisgIGhlYWQgPSAnJzsKKyAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uOworCisgIHdoaWxlIChzdGFydCA+IDAgJiYgJ1x4MDBcclxuXHg4NVx1MjAyOFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoc3RhcnQgLSAxKSkgPT09IC0xKSB7CisgICAgc3RhcnQgLT0gMTsKKyAgICBpZiAodGhpcy5wb3NpdGlvbiAtIHN0YXJ0ID4gKG1heExlbmd0aCAvIDIgLSAxKSkgeworICAgICAgaGVhZCA9ICcgLi4uICc7CisgICAgICBzdGFydCArPSA1OworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgdGFpbCA9ICcnOworICBlbmQgPSB0aGlzLnBvc2l0aW9uOworCisgIHdoaWxlIChlbmQgPCB0aGlzLmJ1ZmZlci5sZW5ndGggJiYgJ1x4MDBcclxuXHg4NVx1MjAyOFx1MjAyOScuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQoZW5kKSkgPT09IC0xKSB7CisgICAgZW5kICs9IDE7CisgICAgaWYgKGVuZCAtIHRoaXMucG9zaXRpb24gPiAobWF4TGVuZ3RoIC8gMiAtIDEpKSB7CisgICAgICB0YWlsID0gJyAuLi4gJzsKKyAgICAgIGVuZCAtPSA1OworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgc25pcHBldCA9IHRoaXMuYnVmZmVyLnNsaWNlKHN0YXJ0LCBlbmQpOworCisgIHJldHVybiBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50KSArIGhlYWQgKyBzbmlwcGV0ICsgdGFpbCArICdcbicgKworICAgICAgICAgY29tbW9uLnJlcGVhdCgnICcsIGluZGVudCArIHRoaXMucG9zaXRpb24gLSBzdGFydCArIGhlYWQubGVuZ3RoKSArICdeJzsKK307CisKKworTWFyay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhjb21wYWN0KSB7CisgIHZhciBzbmlwcGV0LCB3aGVyZSA9ICcnOworCisgIGlmICh0aGlzLm5hbWUpIHsKKyAgICB3aGVyZSArPSAnaW4gIicgKyB0aGlzLm5hbWUgKyAnIiAnOworICB9CisKKyAgd2hlcmUgKz0gJ2F0IGxpbmUgJyArICh0aGlzLmxpbmUgKyAxKSArICcsIGNvbHVtbiAnICsgKHRoaXMuY29sdW1uICsgMSk7CisKKyAgaWYgKCFjb21wYWN0KSB7CisgICAgc25pcHBldCA9IHRoaXMuZ2V0U25pcHBldCgpOworCisgICAgaWYgKHNuaXBwZXQpIHsKKyAgICAgIHdoZXJlICs9ICc6XG4nICsgc25pcHBldDsKKyAgICB9CisgIH0KKworICByZXR1cm4gd2hlcmU7Cit9OworCisKK21vZHVsZS5leHBvcnRzID0gTWFyazsKKworfSx7Ii4vY29tbW9uIjoyMX1dLDI2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuKi8KKwordmFyIGNvbW1vbiAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpOwordmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpOwordmFyIFR5cGUgICAgICAgICAgPSByZXF1aXJlKCcuL3R5cGUnKTsKKworCitmdW5jdGlvbiBjb21waWxlTGlzdChzY2hlbWEsIG5hbWUsIHJlc3VsdCkgeworICB2YXIgZXhjbHVkZSA9IFtdOworCisgIHNjaGVtYS5pbmNsdWRlLmZvckVhY2goZnVuY3Rpb24gKGluY2x1ZGVkU2NoZW1hKSB7CisgICAgcmVzdWx0ID0gY29tcGlsZUxpc3QoaW5jbHVkZWRTY2hlbWEsIG5hbWUsIHJlc3VsdCk7CisgIH0pOworCisgIHNjaGVtYVtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50VHlwZSkgeworICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uIChwcmV2aW91c1R5cGUsIHByZXZpb3VzSW5kZXgpIHsKKyAgICAgIGlmIChwcmV2aW91c1R5cGUudGFnID09PSBjdXJyZW50VHlwZS50YWcpIHsKKyAgICAgICAgZXhjbHVkZS5wdXNoKHByZXZpb3VzSW5kZXgpOworICAgICAgfQorICAgIH0pOworCisgICAgcmVzdWx0LnB1c2goY3VycmVudFR5cGUpOworICB9KTsKKworICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHsKKyAgICByZXR1cm4gZXhjbHVkZS5pbmRleE9mKGluZGV4KSA9PT0gLTE7CisgIH0pOworfQorCisKK2Z1bmN0aW9uIGNvbXBpbGVNYXAoLyogbGlzdHMuLi4gKi8pIHsKKyAgdmFyIHJlc3VsdCA9IHt9LCBpbmRleCwgbGVuZ3RoOworCisgIGZ1bmN0aW9uIGNvbGxlY3RUeXBlKHR5cGUpIHsKKyAgICByZXN1bHRbdHlwZS50YWddID0gdHlwZTsKKyAgfQorCisgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkgeworICAgIGFyZ3VtZW50c1tpbmRleF0uZm9yRWFjaChjb2xsZWN0VHlwZSk7CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisKK2Z1bmN0aW9uIFNjaGVtYShkZWZpbml0aW9uKSB7CisgIHRoaXMuaW5jbHVkZSAgPSBkZWZpbml0aW9uLmluY2x1ZGUgIHx8IFtdOworICB0aGlzLmltcGxpY2l0ID0gZGVmaW5pdGlvbi5pbXBsaWNpdCB8fCBbXTsKKyAgdGhpcy5leHBsaWNpdCA9IGRlZmluaXRpb24uZXhwbGljaXQgfHwgW107CisKKyAgdGhpcy5pbXBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7CisgICAgaWYgKHR5cGUubG9hZEtpbmQgJiYgdHlwZS5sb2FkS2luZCAhPT0gJ3NjYWxhcicpIHsKKyAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC4nKTsKKyAgICB9CisgIH0pOworCisgIHRoaXMuY29tcGlsZWRJbXBsaWNpdCA9IGNvbXBpbGVMaXN0KHRoaXMsICdpbXBsaWNpdCcsIFtdKTsKKyAgdGhpcy5jb21waWxlZEV4cGxpY2l0ID0gY29tcGlsZUxpc3QodGhpcywgJ2V4cGxpY2l0JywgW10pOworICB0aGlzLmNvbXBpbGVkVHlwZU1hcCAgPSBjb21waWxlTWFwKHRoaXMuY29tcGlsZWRJbXBsaWNpdCwgdGhpcy5jb21waWxlZEV4cGxpY2l0KTsKK30KKworCitTY2hlbWEuREVGQVVMVCA9IG51bGw7CisKKworU2NoZW1hLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZVNjaGVtYSgpIHsKKyAgdmFyIHNjaGVtYXMsIHR5cGVzOworCisgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkgeworICAgIGNhc2UgMToKKyAgICAgIHNjaGVtYXMgPSBTY2hlbWEuREVGQVVMVDsKKyAgICAgIHR5cGVzID0gYXJndW1lbnRzWzBdOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDI6CisgICAgICBzY2hlbWFzID0gYXJndW1lbnRzWzBdOworICAgICAgdHlwZXMgPSBhcmd1bWVudHNbMV07CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgU2NoZW1hLmNyZWF0ZSBmdW5jdGlvbicpOworICB9CisKKyAgc2NoZW1hcyA9IGNvbW1vbi50b0FycmF5KHNjaGVtYXMpOworICB0eXBlcyA9IGNvbW1vbi50b0FycmF5KHR5cGVzKTsKKworICBpZiAoIXNjaGVtYXMuZXZlcnkoZnVuY3Rpb24gKHNjaGVtYSkgeyByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgU2NoZW1hOyB9KSkgeworICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBzdXBlciBzY2hlbWFzIChvciBhIHNpbmdsZSBTY2hlbWEgb2JqZWN0KSBjb250YWlucyBhIG5vbi1TY2hlbWEgb2JqZWN0LicpOworICB9CisKKyAgaWYgKCF0eXBlcy5ldmVyeShmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdHlwZSBpbnN0YW5jZW9mIFR5cGU7IH0pKSB7CisgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4nKTsKKyAgfQorCisgIHJldHVybiBuZXcgU2NoZW1hKHsKKyAgICBpbmNsdWRlOiBzY2hlbWFzLAorICAgIGV4cGxpY2l0OiB0eXBlcworICB9KTsKK307CisKKworbW9kdWxlLmV4cG9ydHMgPSBTY2hlbWE7CisKK30seyIuL2NvbW1vbiI6MjEsIi4vZXhjZXB0aW9uIjoyMywiLi90eXBlIjozMn1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8vIFN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYS4KKy8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwNDkyMworLy8KKy8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLgorLy8gU28sIENvcmUgc2NoZW1hIGhhcyBubyBkaXN0aW5jdGlvbnMgZnJvbSBKU09OIHNjaGVtYSBpcyBKUy1ZQU1MLgorCisKKyd1c2Ugc3RyaWN0JzsKKworCit2YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7CisKKworbW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHsKKyAgaW5jbHVkZTogWworICAgIHJlcXVpcmUoJy4vanNvbicpCisgIF0KK30pOworCit9LHsiLi4vc2NoZW1hIjoyNiwiLi9qc29uIjozMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8vIEpTLVlBTUwncyBkZWZhdWx0IHNjaGVtYSBmb3IgYGxvYWRgIGZ1bmN0aW9uLgorLy8gSXQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLgorLy8KKy8vIFRoaXMgc2NoZW1hIGlzIGJhc2VkIG9uIEpTLVlBTUwncyBkZWZhdWx0IHNhZmUgc2NoZW1hIGFuZCBpbmNsdWRlcworLy8gSmF2YVNjcmlwdC1zcGVjaWZpYyB0eXBlczogISFqcy91bmRlZmluZWQsICEhanMvcmVnZXhwIGFuZCAhIWpzL2Z1bmN0aW9uLgorLy8KKy8vIEFsc28gdGhpcyBzY2hlbWEgaXMgdXNlZCBhcyBkZWZhdWx0IGJhc2Ugc2NoZW1hIGF0IGBTY2hlbWEuY3JlYXRlYCBmdW5jdGlvbi4KKworCisndXNlIHN0cmljdCc7CisKKwordmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpOworCisKK21vZHVsZS5leHBvcnRzID0gU2NoZW1hLkRFRkFVTFQgPSBuZXcgU2NoZW1hKHsKKyAgaW5jbHVkZTogWworICAgIHJlcXVpcmUoJy4vZGVmYXVsdF9zYWZlJykKKyAgXSwKKyAgZXhwbGljaXQ6IFsKKyAgICByZXF1aXJlKCcuLi90eXBlL2pzL3VuZGVmaW5lZCcpLAorICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvcmVnZXhwJyksCisgICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9mdW5jdGlvbicpCisgIF0KK30pOworCit9LHsiLi4vc2NoZW1hIjoyNiwiLi4vdHlwZS9qcy9mdW5jdGlvbiI6MzcsIi4uL3R5cGUvanMvcmVnZXhwIjozOCwiLi4vdHlwZS9qcy91bmRlZmluZWQiOjM5LCIuL2RlZmF1bHRfc2FmZSI6Mjl9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBzYWZlTG9hZGAgZnVuY3Rpb24uCisvLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uCisvLworLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gc3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hIGFuZCBpbmNsdWRlcyBtb3N0IG9mCisvLyBleHRyYSB0eXBlcyBkZXNjcmliZWQgYXQgWUFNTCB0YWcgcmVwb3NpdG9yeS4gKGh0dHA6Ly95YW1sLm9yZy90eXBlLykKKworCisndXNlIHN0cmljdCc7CisKKwordmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpOworCisKK21vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7CisgIGluY2x1ZGU6IFsKKyAgICByZXF1aXJlKCcuL2NvcmUnKQorICBdLAorICBpbXBsaWNpdDogWworICAgIHJlcXVpcmUoJy4uL3R5cGUvdGltZXN0YW1wJyksCisgICAgcmVxdWlyZSgnLi4vdHlwZS9tZXJnZScpCisgIF0sCisgIGV4cGxpY2l0OiBbCisgICAgcmVxdWlyZSgnLi4vdHlwZS9iaW5hcnknKSwKKyAgICByZXF1aXJlKCcuLi90eXBlL29tYXAnKSwKKyAgICByZXF1aXJlKCcuLi90eXBlL3BhaXJzJyksCisgICAgcmVxdWlyZSgnLi4vdHlwZS9zZXQnKQorICBdCit9KTsKKworfSx7Ii4uL3NjaGVtYSI6MjYsIi4uL3R5cGUvYmluYXJ5IjozMywiLi4vdHlwZS9tZXJnZSI6NDEsIi4uL3R5cGUvb21hcCI6NDMsIi4uL3R5cGUvcGFpcnMiOjQ0LCIuLi90eXBlL3NldCI6NDYsIi4uL3R5cGUvdGltZXN0YW1wIjo0OCwiLi9jb3JlIjoyN31dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8vIFN0YW5kYXJkIFlBTUwncyBGYWlsc2FmZSBzY2hlbWEuCisvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDIzNDYKKworCisndXNlIHN0cmljdCc7CisKKwordmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpOworCisKK21vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7CisgIGV4cGxpY2l0OiBbCisgICAgcmVxdWlyZSgnLi4vdHlwZS9zdHInKSwKKyAgICByZXF1aXJlKCcuLi90eXBlL3NlcScpLAorICAgIHJlcXVpcmUoJy4uL3R5cGUvbWFwJykKKyAgXQorfSk7CisKK30seyIuLi9zY2hlbWEiOjI2LCIuLi90eXBlL21hcCI6NDAsIi4uL3R5cGUvc2VxIjo0NSwiLi4vdHlwZS9zdHIiOjQ3fV0sMzE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLy8gU3RhbmRhcmQgWUFNTCdzIEpTT04gc2NoZW1hLgorLy8gaHR0cDovL3d3dy55YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyODAzMjMxCisvLworLy8gTk9URTogSlMtWUFNTCBkb2VzIG5vdCBzdXBwb3J0IHNjaGVtYS1zcGVjaWZpYyB0YWcgcmVzb2x1dGlvbiByZXN0cmljdGlvbnMuCisvLyBTbywgdGhpcyBzY2hlbWEgaXMgbm90IHN1Y2ggc3RyaWN0IGFzIGRlZmluZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi4KKy8vIEl0IGFsbG93cyBudW1iZXJzIGluIGJpbmFyeSBub3RhaW9uLCB1c2UgYE51bGxgIGFuZCBgTlVMTGAgYXMgYG51bGxgLCBldGMuCisKKworJ3VzZSBzdHJpY3QnOworCisKK3ZhciBTY2hlbWEgPSByZXF1aXJlKCcuLi9zY2hlbWEnKTsKKworCittb2R1bGUuZXhwb3J0cyA9IG5ldyBTY2hlbWEoeworICBpbmNsdWRlOiBbCisgICAgcmVxdWlyZSgnLi9mYWlsc2FmZScpCisgIF0sCisgIGltcGxpY2l0OiBbCisgICAgcmVxdWlyZSgnLi4vdHlwZS9udWxsJyksCisgICAgcmVxdWlyZSgnLi4vdHlwZS9ib29sJyksCisgICAgcmVxdWlyZSgnLi4vdHlwZS9pbnQnKSwKKyAgICByZXF1aXJlKCcuLi90eXBlL2Zsb2F0JykKKyAgXQorfSk7CisKK30seyIuLi9zY2hlbWEiOjI2LCIuLi90eXBlL2Jvb2wiOjM0LCIuLi90eXBlL2Zsb2F0IjozNSwiLi4vdHlwZS9pbnQiOjM2LCIuLi90eXBlL251bGwiOjQyLCIuL2ZhaWxzYWZlIjozMH1dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpOworCit2YXIgVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TID0gWworICAna2luZCcsCisgICdyZXNvbHZlJywKKyAgJ2NvbnN0cnVjdCcsCisgICdpbnN0YW5jZU9mJywKKyAgJ3ByZWRpY2F0ZScsCisgICdyZXByZXNlbnQnLAorICAnZGVmYXVsdFN0eWxlJywKKyAgJ3N0eWxlQWxpYXNlcycKK107CisKK3ZhciBZQU1MX05PREVfS0lORFMgPSBbCisgICdzY2FsYXInLAorICAnc2VxdWVuY2UnLAorICAnbWFwcGluZycKK107CisKK2Z1bmN0aW9uIGNvbXBpbGVTdHlsZUFsaWFzZXMobWFwKSB7CisgIHZhciByZXN1bHQgPSB7fTsKKworICBpZiAobWFwICE9PSBudWxsKSB7CisgICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHlsZSkgeworICAgICAgbWFwW3N0eWxlXS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykgeworICAgICAgICByZXN1bHRbU3RyaW5nKGFsaWFzKV0gPSBzdHlsZTsKKyAgICAgIH0pOworICAgIH0pOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gVHlwZSh0YWcsIG9wdGlvbnMpIHsKKyAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CisKKyAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeworICAgIGlmIChUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHsKKyAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIG9wdGlvbiAiJyArIG5hbWUgKyAnIiBpcyBtZXQgaW4gZGVmaW5pdGlvbiBvZiAiJyArIHRhZyArICciIFlBTUwgdHlwZS4nKTsKKyAgICB9CisgIH0pOworCisgIC8vIFRPRE86IEFkZCB0YWcgZm9ybWF0IGNoZWNrLgorICB0aGlzLnRhZyAgICAgICAgICA9IHRhZzsKKyAgdGhpcy5raW5kICAgICAgICAgPSBvcHRpb25zWydraW5kJ10gICAgICAgICB8fCBudWxsOworICB0aGlzLnJlc29sdmUgICAgICA9IG9wdGlvbnNbJ3Jlc29sdmUnXSAgICAgIHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07CisgIHRoaXMuY29uc3RydWN0ICAgID0gb3B0aW9uc1snY29uc3RydWN0J10gICAgfHwgZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGE7IH07CisgIHRoaXMuaW5zdGFuY2VPZiAgID0gb3B0aW9uc1snaW5zdGFuY2VPZiddICAgfHwgbnVsbDsKKyAgdGhpcy5wcmVkaWNhdGUgICAgPSBvcHRpb25zWydwcmVkaWNhdGUnXSAgICB8fCBudWxsOworICB0aGlzLnJlcHJlc2VudCAgICA9IG9wdGlvbnNbJ3JlcHJlc2VudCddICAgIHx8IG51bGw7CisgIHRoaXMuZGVmYXVsdFN0eWxlID0gb3B0aW9uc1snZGVmYXVsdFN0eWxlJ10gfHwgbnVsbDsKKyAgdGhpcy5zdHlsZUFsaWFzZXMgPSBjb21waWxlU3R5bGVBbGlhc2VzKG9wdGlvbnNbJ3N0eWxlQWxpYXNlcyddIHx8IG51bGwpOworCisgIGlmIChZQU1MX05PREVfS0lORFMuaW5kZXhPZih0aGlzLmtpbmQpID09PSAtMSkgeworICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIGtpbmQgIicgKyB0aGlzLmtpbmQgKyAnIiBpcyBzcGVjaWZpZWQgZm9yICInICsgdGFnICsgJyIgWUFNTCB0eXBlLicpOworICB9Cit9CisKK21vZHVsZS5leHBvcnRzID0gVHlwZTsKKworfSx7Ii4vZXhjZXB0aW9uIjoyM31dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKworLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlKi8KKwordmFyIE5vZGVCdWZmZXI7CisKK3RyeSB7CisgIC8vIEEgdHJpY2sgZm9yIGJyb3dzZXJpZmllZCB2ZXJzaW9uLCB0byBub3QgaW5jbHVkZSBgQnVmZmVyYCBzaGltCisgIHZhciBfcmVxdWlyZSA9IHJlcXVpcmU7CisgIE5vZGVCdWZmZXIgPSBfcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyOworfSBjYXRjaCAoX18pIHt9CisKK3ZhciBUeXBlICAgICAgID0gcmVxdWlyZSgnLi4vdHlwZScpOworCisKKy8vIFsgNjQsIDY1LCA2NiBdIC0+IFsgcGFkZGluZywgQ1IsIExGIF0KK3ZhciBCQVNFNjRfTUFQID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XG5ccic7CisKKworZnVuY3Rpb24gcmVzb2x2ZVlhbWxCaW5hcnkoZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgIHZhciBjb2RlLCBpZHgsIGJpdGxlbiA9IDAsIG1heCA9IGRhdGEubGVuZ3RoLCBtYXAgPSBCQVNFNjRfTUFQOworCisgIC8vIENvbnZlcnQgb25lIGJ5IG9uZS4KKyAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7CisgICAgY29kZSA9IG1hcC5pbmRleE9mKGRhdGEuY2hhckF0KGlkeCkpOworCisgICAgLy8gU2tpcCBDUi9MRgorICAgIGlmIChjb2RlID4gNjQpIGNvbnRpbnVlOworCisgICAgLy8gRmFpbCBvbiBpbGxlZ2FsIGNoYXJhY3RlcnMKKyAgICBpZiAoY29kZSA8IDApIHJldHVybiBmYWxzZTsKKworICAgIGJpdGxlbiArPSA2OworICB9CisKKyAgLy8gSWYgdGhlcmUgYXJlIGFueSBiaXRzIGxlZnQsIHNvdXJjZSB3YXMgY29ycnVwdGVkCisgIHJldHVybiAoYml0bGVuICUgOCkgPT09IDA7Cit9CisKK2Z1bmN0aW9uIGNvbnN0cnVjdFlhbWxCaW5hcnkoZGF0YSkgeworICB2YXIgaWR4LCB0YWlsYml0cywKKyAgICAgIGlucHV0ID0gZGF0YS5yZXBsYWNlKC9bXHJcbj1dL2csICcnKSwgLy8gcmVtb3ZlIENSL0xGICYgcGFkZGluZyB0byBzaW1wbGlmeSBzY2FuCisgICAgICBtYXggPSBpbnB1dC5sZW5ndGgsCisgICAgICBtYXAgPSBCQVNFNjRfTUFQLAorICAgICAgYml0cyA9IDAsCisgICAgICByZXN1bHQgPSBbXTsKKworICAvLyBDb2xsZWN0IGJ5IDYqNCBiaXRzICgzIGJ5dGVzKQorCisgIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykgeworICAgIGlmICgoaWR4ICUgNCA9PT0gMCkgJiYgaWR4KSB7CisgICAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTsKKyAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7CisgICAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7CisgICAgfQorCisgICAgYml0cyA9IChiaXRzIDw8IDYpIHwgbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpOworICB9CisKKyAgLy8gRHVtcCB0YWlsCisKKyAgdGFpbGJpdHMgPSAobWF4ICUgNCkgKiA2OworCisgIGlmICh0YWlsYml0cyA9PT0gMCkgeworICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpOworICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7CisgICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpOworICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxOCkgeworICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDEwKSAmIDB4RkYpOworICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDIpICYgMHhGRik7CisgIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDEyKSB7CisgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gNCkgJiAweEZGKTsKKyAgfQorCisgIC8vIFdyYXAgaW50byBCdWZmZXIgZm9yIE5vZGVKUyBhbmQgbGVhdmUgQXJyYXkgZm9yIGJyb3dzZXIKKyAgaWYgKE5vZGVCdWZmZXIpIHJldHVybiBuZXcgTm9kZUJ1ZmZlcihyZXN1bHQpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHJlcHJlc2VudFlhbWxCaW5hcnkob2JqZWN0IC8qLCBzdHlsZSovKSB7CisgIHZhciByZXN1bHQgPSAnJywgYml0cyA9IDAsIGlkeCwgdGFpbCwKKyAgICAgIG1heCA9IG9iamVjdC5sZW5ndGgsCisgICAgICBtYXAgPSBCQVNFNjRfTUFQOworCisgIC8vIENvbnZlcnQgZXZlcnkgdGhyZWUgYnl0ZXMgdG8gNCBBU0NJSSBjaGFyYWN0ZXJzLgorCisgIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykgeworICAgIGlmICgoaWR4ICUgMyA9PT0gMCkgJiYgaWR4KSB7CisgICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdOworICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTsKKyAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNikgJiAweDNGXTsKKyAgICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdOworICAgIH0KKworICAgIGJpdHMgPSAoYml0cyA8PCA4KSArIG9iamVjdFtpZHhdOworICB9CisKKyAgLy8gRHVtcCB0YWlsCisKKyAgdGFpbCA9IG1heCAlIDM7CisKKyAgaWYgKHRhaWwgPT09IDApIHsKKyAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M0ZdOworICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzRl07CisgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdOworICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M0ZdOworICB9IGVsc2UgaWYgKHRhaWwgPT09IDIpIHsKKyAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEwKSAmIDB4M0ZdOworICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNCkgJiAweDNGXTsKKyAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDIpICYgMHgzRl07CisgICAgcmVzdWx0ICs9IG1hcFs2NF07CisgIH0gZWxzZSBpZiAodGFpbCA9PT0gMSkgeworICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMikgJiAweDNGXTsKKyAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDQpICYgMHgzRl07CisgICAgcmVzdWx0ICs9IG1hcFs2NF07CisgICAgcmVzdWx0ICs9IG1hcFs2NF07CisgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBpc0JpbmFyeShvYmplY3QpIHsKKyAgcmV0dXJuIE5vZGVCdWZmZXIgJiYgTm9kZUJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnknLCB7CisgIGtpbmQ6ICdzY2FsYXInLAorICByZXNvbHZlOiByZXNvbHZlWWFtbEJpbmFyeSwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQmluYXJ5LAorICBwcmVkaWNhdGU6IGlzQmluYXJ5LAorICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxCaW5hcnkKK30pOworCit9LHsiLi4vdHlwZSI6MzJ9XSwzNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpOworCitmdW5jdGlvbiByZXNvbHZlWWFtbEJvb2xlYW4oZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgIHZhciBtYXggPSBkYXRhLmxlbmd0aDsKKworICByZXR1cm4gKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ3RydWUnIHx8IGRhdGEgPT09ICdUcnVlJyB8fCBkYXRhID09PSAnVFJVRScpKSB8fAorICAgICAgICAgKG1heCA9PT0gNSAmJiAoZGF0YSA9PT0gJ2ZhbHNlJyB8fCBkYXRhID09PSAnRmFsc2UnIHx8IGRhdGEgPT09ICdGQUxTRScpKTsKK30KKworZnVuY3Rpb24gY29uc3RydWN0WWFtbEJvb2xlYW4oZGF0YSkgeworICByZXR1cm4gZGF0YSA9PT0gJ3RydWUnIHx8CisgICAgICAgICBkYXRhID09PSAnVHJ1ZScgfHwKKyAgICAgICAgIGRhdGEgPT09ICdUUlVFJzsKK30KKworZnVuY3Rpb24gaXNCb29sZWFuKG9iamVjdCkgeworICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEJvb2xlYW5dJzsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVZYW1sQm9vbGVhbiwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQm9vbGVhbiwKKyAgcHJlZGljYXRlOiBpc0Jvb2xlYW4sCisgIHJlcHJlc2VudDogeworICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ3RydWUnIDogJ2ZhbHNlJzsgfSwKKyAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUUlVFJyA6ICdGQUxTRSc7IH0sCisgICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAnVHJ1ZScgOiAnRmFsc2UnOyB9CisgIH0sCisgIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZScKK30pOworCit9LHsiLi4vdHlwZSI6MzJ9XSwzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTsKK3ZhciBUeXBlICAgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK3ZhciBZQU1MX0ZMT0FUX1BBVFRFUk4gPSBuZXcgUmVnRXhwKAorICAnXig/OlstK10/KD86WzAtOV1bMC05X10qKVxcLlswLTlfXSooPzpbZUVdWy0rXVswLTldKyk/JyArCisgICd8XFwuWzAtOV9dKyg/OltlRV1bLStdWzAtOV0rKT8nICsKKyAgJ3xbLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFwuWzAtOV9dKicgKworICAnfFstK10/XFwuKD86aW5mfEluZnxJTkYpJyArCisgICd8XFwuKD86bmFufE5hTnxOQU4pKSQnKTsKKworZnVuY3Rpb24gcmVzb2x2ZVlhbWxGbG9hdChkYXRhKSB7CisgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7CisKKyAgaWYgKCFZQU1MX0ZMT0FUX1BBVFRFUk4udGVzdChkYXRhKSkgcmV0dXJuIGZhbHNlOworCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBjb25zdHJ1Y3RZYW1sRmxvYXQoZGF0YSkgeworICB2YXIgdmFsdWUsIHNpZ24sIGJhc2UsIGRpZ2l0czsKKworICB2YWx1ZSAgPSBkYXRhLnJlcGxhY2UoL18vZywgJycpLnRvTG93ZXJDYXNlKCk7CisgIHNpZ24gICA9IHZhbHVlWzBdID09PSAnLScgPyAtMSA6IDE7CisgIGRpZ2l0cyA9IFtdOworCisgIGlmICgnKy0nLmluZGV4T2YodmFsdWVbMF0pID49IDApIHsKKyAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpOworICB9CisKKyAgaWYgKHZhbHVlID09PSAnLmluZicpIHsKKyAgICByZXR1cm4gKHNpZ24gPT09IDEpID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOworCisgIH0gZWxzZSBpZiAodmFsdWUgPT09ICcubmFuJykgeworICAgIHJldHVybiBOYU47CisKKyAgfSBlbHNlIGlmICh2YWx1ZS5pbmRleE9mKCc6JykgPj0gMCkgeworICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikgeworICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VGbG9hdCh2LCAxMCkpOworICAgIH0pOworCisgICAgdmFsdWUgPSAwLjA7CisgICAgYmFzZSA9IDE7CisKKyAgICBkaWdpdHMuZm9yRWFjaChmdW5jdGlvbiAoZCkgeworICAgICAgdmFsdWUgKz0gZCAqIGJhc2U7CisgICAgICBiYXNlICo9IDYwOworICAgIH0pOworCisgICAgcmV0dXJuIHNpZ24gKiB2YWx1ZTsKKworICB9CisgIHJldHVybiBzaWduICogcGFyc2VGbG9hdCh2YWx1ZSwgMTApOworfQorCisKK3ZhciBTQ0lFTlRJRklDX1dJVEhPVVRfRE9UID0gL15bLStdP1swLTldK2UvOworCitmdW5jdGlvbiByZXByZXNlbnRZYW1sRmxvYXQob2JqZWN0LCBzdHlsZSkgeworICB2YXIgcmVzOworCisgIGlmIChpc05hTihvYmplY3QpKSB7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcubmFuJzsKKyAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLk5BTic7CisgICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5OYU4nOworICAgIH0KKyAgfSBlbHNlIGlmIChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkgeworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLmluZic7CisgICAgICBjYXNlICd1cHBlcmNhc2UnOiByZXR1cm4gJy5JTkYnOworICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICcuSW5mJzsKKyAgICB9CisgIH0gZWxzZSBpZiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHsKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy0uaW5mJzsKKyAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLS5JTkYnOworICAgICAgY2FzZSAnY2FtZWxjYXNlJzogcmV0dXJuICctLkluZic7CisgICAgfQorICB9IGVsc2UgaWYgKGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKSB7CisgICAgcmV0dXJuICctMC4wJzsKKyAgfQorCisgIHJlcyA9IG9iamVjdC50b1N0cmluZygxMCk7CisKKyAgLy8gSlMgc3RyaW5naWZpZXIgY2FuIGJ1aWxkIHNjaWVudGlmaWMgZm9ybWF0IHdpdGhvdXQgZG90czogNWUtMTAwLAorICAvLyB3aGlsZSBZQU1MIHJlcXVyZXMgZG90OiA1LmUtMTAwLiBGaXggaXQgd2l0aCBzaW1wbGUgaGFjaworCisgIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKCdlJywgJy5lJykgOiByZXM7Cit9CisKK2Z1bmN0aW9uIGlzRmxvYXQob2JqZWN0KSB7CisgIHJldHVybiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE51bWJlcl0nKSAmJgorICAgICAgICAgKG9iamVjdCAlIDEgIT09IDAgfHwgY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVZYW1sRmxvYXQsCisgIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEZsb2F0LAorICBwcmVkaWNhdGU6IGlzRmxvYXQsCisgIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEZsb2F0LAorICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnCit9KTsKKworfSx7Ii4uL2NvbW1vbiI6MjEsIi4uL3R5cGUiOjMyfV0sMzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7Cit2YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpOworCitmdW5jdGlvbiBpc0hleENvZGUoYykgeworICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHx8CisgICAgICAgICAoKDB4NDEvKiBBICovIDw9IGMpICYmIChjIDw9IDB4NDYvKiBGICovKSkgfHwKKyAgICAgICAgICgoMHg2MS8qIGEgKi8gPD0gYykgJiYgKGMgPD0gMHg2Ni8qIGYgKi8pKTsKK30KKworZnVuY3Rpb24gaXNPY3RDb2RlKGMpIHsKKyAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzNy8qIDcgKi8pKTsKK30KKworZnVuY3Rpb24gaXNEZWNDb2RlKGMpIHsKKyAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKTsKK30KKworZnVuY3Rpb24gcmVzb2x2ZVlhbWxJbnRlZ2VyKGRhdGEpIHsKKyAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTsKKworICB2YXIgbWF4ID0gZGF0YS5sZW5ndGgsCisgICAgICBpbmRleCA9IDAsCisgICAgICBoYXNEaWdpdHMgPSBmYWxzZSwKKyAgICAgIGNoOworCisgIGlmICghbWF4KSByZXR1cm4gZmFsc2U7CisKKyAgY2ggPSBkYXRhW2luZGV4XTsKKworICAvLyBzaWduCisgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHsKKyAgICBjaCA9IGRhdGFbKytpbmRleF07CisgIH0KKworICBpZiAoY2ggPT09ICcwJykgeworICAgIC8vIDAKKyAgICBpZiAoaW5kZXggKyAxID09PSBtYXgpIHJldHVybiB0cnVlOworICAgIGNoID0gZGF0YVsrK2luZGV4XTsKKworICAgIC8vIGJhc2UgMiwgYmFzZSA4LCBiYXNlIDE2CisKKyAgICBpZiAoY2ggPT09ICdiJykgeworICAgICAgLy8gYmFzZSAyCisgICAgICBpbmRleCsrOworCisgICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHsKKyAgICAgICAgY2ggPSBkYXRhW2luZGV4XTsKKyAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlOworICAgICAgICBpZiAoY2ggIT09ICcwJyAmJiBjaCAhPT0gJzEnKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7CisgICAgICB9CisgICAgICByZXR1cm4gaGFzRGlnaXRzOworICAgIH0KKworCisgICAgaWYgKGNoID09PSAneCcpIHsKKyAgICAgIC8vIGJhc2UgMTYKKyAgICAgIGluZGV4Kys7CisKKyAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykgeworICAgICAgICBjaCA9IGRhdGFbaW5kZXhdOworICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7CisgICAgICAgIGlmICghaXNIZXhDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7CisgICAgICB9CisgICAgICByZXR1cm4gaGFzRGlnaXRzOworICAgIH0KKworICAgIC8vIGJhc2UgOAorICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykgeworICAgICAgY2ggPSBkYXRhW2luZGV4XTsKKyAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTsKKyAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSByZXR1cm4gZmFsc2U7CisgICAgICBoYXNEaWdpdHMgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gaGFzRGlnaXRzOworICB9CisKKyAgLy8gYmFzZSAxMCAoZXhjZXB0IDApIG9yIGJhc2UgNjAKKworICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHsKKyAgICBjaCA9IGRhdGFbaW5kZXhdOworICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTsKKyAgICBpZiAoY2ggPT09ICc6JykgYnJlYWs7CisgICAgaWYgKCFpc0RlY0NvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaGFzRGlnaXRzID0gdHJ1ZTsKKyAgfQorCisgIGlmICghaGFzRGlnaXRzKSByZXR1cm4gZmFsc2U7CisKKyAgLy8gaWYgIWJhc2U2MCAtIGRvbmU7CisgIGlmIChjaCAhPT0gJzonKSByZXR1cm4gdHJ1ZTsKKworICAvLyBiYXNlNjAgYWxtb3N0IG5vdCB1c2VkLCBubyBuZWVkcyB0byBvcHRpbWl6ZQorICByZXR1cm4gL14oOlswLTVdP1swLTldKSskLy50ZXN0KGRhdGEuc2xpY2UoaW5kZXgpKTsKK30KKworZnVuY3Rpb24gY29uc3RydWN0WWFtbEludGVnZXIoZGF0YSkgeworICB2YXIgdmFsdWUgPSBkYXRhLCBzaWduID0gMSwgY2gsIGJhc2UsIGRpZ2l0cyA9IFtdOworCisgIGlmICh2YWx1ZS5pbmRleE9mKCdfJykgIT09IC0xKSB7CisgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9fL2csICcnKTsKKyAgfQorCisgIGNoID0gdmFsdWVbMF07CisKKyAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykgeworICAgIGlmIChjaCA9PT0gJy0nKSBzaWduID0gLTE7CisgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTsKKyAgICBjaCA9IHZhbHVlWzBdOworICB9CisKKyAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiAwOworCisgIGlmIChjaCA9PT0gJzAnKSB7CisgICAgaWYgKHZhbHVlWzFdID09PSAnYicpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDIpOworICAgIGlmICh2YWx1ZVsxXSA9PT0gJ3gnKSByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxNik7CisgICAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgOCk7CisgIH0KKworICBpZiAodmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkgeworICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikgeworICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VJbnQodiwgMTApKTsKKyAgICB9KTsKKworICAgIHZhbHVlID0gMDsKKyAgICBiYXNlID0gMTsKKworICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7CisgICAgICB2YWx1ZSArPSAoZCAqIGJhc2UpOworICAgICAgYmFzZSAqPSA2MDsKKyAgICB9KTsKKworICAgIHJldHVybiBzaWduICogdmFsdWU7CisKKyAgfQorCisgIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDEwKTsKK30KKworZnVuY3Rpb24gaXNJbnRlZ2VyKG9iamVjdCkgeworICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpKSA9PT0gJ1tvYmplY3QgTnVtYmVyXScgJiYKKyAgICAgICAgIChvYmplY3QgJSAxID09PSAwICYmICFjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVZYW1sSW50ZWdlciwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sSW50ZWdlciwKKyAgcHJlZGljYXRlOiBpc0ludGVnZXIsCisgIHJlcHJlc2VudDogeworICAgIGJpbmFyeTogICAgICBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiAnMGInICsgb2JqZWN0LnRvU3RyaW5nKDIpOyB9LAorICAgIG9jdGFsOiAgICAgICBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiAnMCcgICsgb2JqZWN0LnRvU3RyaW5nKDgpOyB9LAorICAgIGRlY2ltYWw6ICAgICBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiAgICAgICAgb2JqZWN0LnRvU3RyaW5nKDEwKTsgfSwKKyAgICBoZXhhZGVjaW1hbDogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gJzB4JyArIG9iamVjdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsgfQorICB9LAorICBkZWZhdWx0U3R5bGU6ICdkZWNpbWFsJywKKyAgc3R5bGVBbGlhc2VzOiB7CisgICAgYmluYXJ5OiAgICAgIFsgMiwgICdiaW4nIF0sCisgICAgb2N0YWw6ICAgICAgIFsgOCwgICdvY3QnIF0sCisgICAgZGVjaW1hbDogICAgIFsgMTAsICdkZWMnIF0sCisgICAgaGV4YWRlY2ltYWw6IFsgMTYsICdoZXgnIF0KKyAgfQorfSk7CisKK30seyIuLi9jb21tb24iOjIxLCIuLi90eXBlIjozMn1dLDM3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIGVzcHJpbWE7CisKKy8vIEJyb3dzZXJpZmllZCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgZXNwcmltYQorLy8KKy8vIDEuIEZvciBub2RlLmpzIGp1c3QgcmVxdWlyZSBtb2R1bGUgYXMgZGVwcworLy8gMi4gRm9yIGJyb3dzZXIgdHJ5IHRvIHJlcXVpcmUgbXVkdWxlIHZpYSBleHRlcm5hbCBBTUQgc3lzdGVtLgorLy8gICAgSWYgbm90IGZvdW5kIC0gdHJ5IHRvIGZhbGxiYWNrIHRvIHdpbmRvdy5lc3ByaW1hLiBJZiBub3QKKy8vICAgIGZvdW5kIHRvbyAtIHRoZW4gZmFpbCB0byBwYXJzZS4KKy8vCit0cnkgeworICAvLyB3b3JrYXJvdW5kIHRvIGV4Y2x1ZGUgcGFja2FnZSBmcm9tIGJyb3dzZXJpZnkgbGlzdC4KKyAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTsKKyAgZXNwcmltYSA9IF9yZXF1aXJlKCdlc3ByaW1hJyk7Cit9IGNhdGNoIChfKSB7CisgIC8qZ2xvYmFsIHdpbmRvdyAqLworICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIGVzcHJpbWEgPSB3aW5kb3cuZXNwcmltYTsKK30KKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7CisKK2Z1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0RnVuY3Rpb24oZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOworCisgIHRyeSB7CisgICAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsCisgICAgICAgIGFzdCAgICA9IGVzcHJpbWEucGFyc2Uoc291cmNlLCB7IHJhbmdlOiB0cnVlIH0pOworCisgICAgaWYgKGFzdC50eXBlICAgICAgICAgICAgICAgICAgICAhPT0gJ1Byb2dyYW0nICAgICAgICAgICAgIHx8CisgICAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgIGFzdC5ib2R5WzBdLnR5cGUgICAgICAgICAgICAhPT0gJ0V4cHJlc3Npb25TdGF0ZW1lbnQnIHx8CisgICAgICAgIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Z1bmN0aW9uRXhwcmVzc2lvbicpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBjYXRjaCAoZXJyKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9Cit9CisKK2Z1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7CisgIC8qanNsaW50IGV2aWw6dHJ1ZSovCisKKyAgdmFyIHNvdXJjZSA9ICcoJyArIGRhdGEgKyAnKScsCisgICAgICBhc3QgICAgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZSwgeyByYW5nZTogdHJ1ZSB9KSwKKyAgICAgIHBhcmFtcyA9IFtdLAorICAgICAgYm9keTsKKworICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHwKKyAgICAgIGFzdC5ib2R5Lmxlbmd0aCAgICAgICAgICAgICAhPT0gMSAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICBhc3QuYm9keVswXS50eXBlICAgICAgICAgICAgIT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyB8fAorICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykgeworICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgZnVuY3Rpb24nKTsKKyAgfQorCisgIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24ucGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHBhcmFtKSB7CisgICAgcGFyYW1zLnB1c2gocGFyYW0ubmFtZSk7CisgIH0pOworCisgIGJvZHkgPSBhc3QuYm9keVswXS5leHByZXNzaW9uLmJvZHkucmFuZ2U7CisKKyAgLy8gRXNwcmltYSdzIHJhbmdlcyBpbmNsdWRlIHRoZSBmaXJzdCAneycgYW5kIHRoZSBsYXN0ICd9JyBjaGFyYWN0ZXJzIG9uCisgIC8vIGZ1bmN0aW9uIGV4cHJlc3Npb25zLiBTbyBjdXQgdGhlbSBvdXQuCisgIC8qZXNsaW50LWRpc2FibGUgbm8tbmV3LWZ1bmMqLworICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgc291cmNlLnNsaWNlKGJvZHlbMF0gKyAxLCBib2R5WzFdIC0gMSkpOworfQorCitmdW5jdGlvbiByZXByZXNlbnRKYXZhc2NyaXB0RnVuY3Rpb24ob2JqZWN0IC8qLCBzdHlsZSovKSB7CisgIHJldHVybiBvYmplY3QudG9TdHJpbmcoKTsKK30KKworZnVuY3Rpb24gaXNGdW5jdGlvbihvYmplY3QpIHsKKyAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy9mdW5jdGlvbicsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVKYXZhc2NyaXB0RnVuY3Rpb24sCisgIGNvbnN0cnVjdDogY29uc3RydWN0SmF2YXNjcmlwdEZ1bmN0aW9uLAorICBwcmVkaWNhdGU6IGlzRnVuY3Rpb24sCisgIHJlcHJlc2VudDogcmVwcmVzZW50SmF2YXNjcmlwdEZ1bmN0aW9uCit9KTsKKworfSx7Ii4uLy4uL3R5cGUiOjMyfV0sMzg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTsKKworZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRSZWdFeHAoZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTsKKworICB2YXIgcmVnZXhwID0gZGF0YSwKKyAgICAgIHRhaWwgICA9IC9cLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSwKKyAgICAgIG1vZGlmaWVycyA9ICcnOworCisgIC8vIGlmIHJlZ2V4cCBzdGFydHMgd2l0aCAnLycgaXQgY2FuIGhhdmUgbW9kaWZpZXJzIGFuZCBtdXN0IGJlIHByb3Blcmx5IGNsb3NlZAorICAvLyBgL2Zvby9naW1gIC0gbW9kaWZpZXJzIHRhaWwgY2FuIGJlIG1heGltdW0gMyBjaGFycworICBpZiAocmVnZXhwWzBdID09PSAnLycpIHsKKyAgICBpZiAodGFpbCkgbW9kaWZpZXJzID0gdGFpbFsxXTsKKworICAgIGlmIChtb2RpZmllcnMubGVuZ3RoID4gMykgcmV0dXJuIGZhbHNlOworICAgIC8vIGlmIGV4cHJlc3Npb24gc3RhcnRzIHdpdGggLywgaXMgc2hvdWxkIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWQKKyAgICBpZiAocmVnZXhwW3JlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMV0gIT09ICcvJykgcmV0dXJuIGZhbHNlOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRSZWdFeHAoZGF0YSkgeworICB2YXIgcmVnZXhwID0gZGF0YSwKKyAgICAgIHRhaWwgICA9IC9cLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSwKKyAgICAgIG1vZGlmaWVycyA9ICcnOworCisgIC8vIGAvZm9vL2dpbWAgLSB0YWlsIGNhbiBiZSBtYXhpbXVtIDQgY2hhcnMKKyAgaWYgKHJlZ2V4cFswXSA9PT0gJy8nKSB7CisgICAgaWYgKHRhaWwpIG1vZGlmaWVycyA9IHRhaWxbMV07CisgICAgcmVnZXhwID0gcmVnZXhwLnNsaWNlKDEsIHJlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMSk7CisgIH0KKworICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleHAsIG1vZGlmaWVycyk7Cit9CisKK2Z1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHAob2JqZWN0IC8qLCBzdHlsZSovKSB7CisgIHZhciByZXN1bHQgPSAnLycgKyBvYmplY3Quc291cmNlICsgJy8nOworCisgIGlmIChvYmplY3QuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnOworICBpZiAob2JqZWN0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJzsKKyAgaWYgKG9iamVjdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGlzUmVnRXhwKG9iamVjdCkgeworICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHAnLCB7CisgIGtpbmQ6ICdzY2FsYXInLAorICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFJlZ0V4cCwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0UmVnRXhwLAorICBwcmVkaWNhdGU6IGlzUmVnRXhwLAorICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHAKK30pOworCit9LHsiLi4vLi4vdHlwZSI6MzJ9XSwzOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpOworCitmdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCgpIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQoKSB7CisgIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi8KKyAgcmV0dXJuIHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHsKKyAgcmV0dXJuICcnOworfQorCitmdW5jdGlvbiBpc1VuZGVmaW5lZChvYmplY3QpIHsKKyAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy91bmRlZmluZWQnLCB7CisgIGtpbmQ6ICdzY2FsYXInLAorICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0VW5kZWZpbmVkLAorICBwcmVkaWNhdGU6IGlzVW5kZWZpbmVkLAorICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRVbmRlZmluZWQKK30pOworCit9LHsiLi4vLi4vdHlwZSI6MzJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpOworCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptYXAnLCB7CisgIGtpbmQ6ICdtYXBwaW5nJywKKyAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTsgfQorfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK2Z1bmN0aW9uIHJlc29sdmVZYW1sTWVyZ2UoZGF0YSkgeworICByZXR1cm4gZGF0YSA9PT0gJzw8JyB8fCBkYXRhID09PSBudWxsOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVZYW1sTWVyZ2UKK30pOworCit9LHsiLi4vdHlwZSI6MzJ9XSw0MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpOworCitmdW5jdGlvbiByZXNvbHZlWWFtbE51bGwoZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7CisKKyAgdmFyIG1heCA9IGRhdGEubGVuZ3RoOworCisgIHJldHVybiAobWF4ID09PSAxICYmIGRhdGEgPT09ICd+JykgfHwKKyAgICAgICAgIChtYXggPT09IDQgJiYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnTnVsbCcgfHwgZGF0YSA9PT0gJ05VTEwnKSk7Cit9CisKK2Z1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkgeworICByZXR1cm4gbnVsbDsKK30KKworZnVuY3Rpb24gaXNOdWxsKG9iamVjdCkgeworICByZXR1cm4gb2JqZWN0ID09PSBudWxsOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJywgeworICBraW5kOiAnc2NhbGFyJywKKyAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxOdWxsLAorICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxOdWxsLAorICBwcmVkaWNhdGU6IGlzTnVsbCwKKyAgcmVwcmVzZW50OiB7CisgICAgY2Fub25pY2FsOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnfic7ICAgIH0sCisgICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCc7IH0sCisgICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTlVMTCc7IH0sCisgICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTnVsbCc7IH0KKyAgfSwKKyAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJworfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK3ZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OwordmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CisKK2Z1bmN0aW9uIHJlc29sdmVZYW1sT21hcChkYXRhKSB7CisgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTsKKworICB2YXIgb2JqZWN0S2V5cyA9IFtdLCBpbmRleCwgbGVuZ3RoLCBwYWlyLCBwYWlyS2V5LCBwYWlySGFzS2V5LAorICAgICAgb2JqZWN0ID0gZGF0YTsKKworICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHsKKyAgICBwYWlyID0gb2JqZWN0W2luZGV4XTsKKyAgICBwYWlySGFzS2V5ID0gZmFsc2U7CisKKyAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHBhaXJLZXkgaW4gcGFpcikgeworICAgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhaXIsIHBhaXJLZXkpKSB7CisgICAgICAgIGlmICghcGFpckhhc0tleSkgcGFpckhhc0tleSA9IHRydWU7CisgICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKworICAgIGlmICghcGFpckhhc0tleSkgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9iamVjdEtleXMuaW5kZXhPZihwYWlyS2V5KSA9PT0gLTEpIG9iamVjdEtleXMucHVzaChwYWlyS2V5KTsKKyAgICBlbHNlIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBjb25zdHJ1Y3RZYW1sT21hcChkYXRhKSB7CisgIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdOworfQorCittb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJywgeworICBraW5kOiAnc2VxdWVuY2UnLAorICByZXNvbHZlOiByZXNvbHZlWWFtbE9tYXAsCisgIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE9tYXAKK30pOworCit9LHsiLi4vdHlwZSI6MzJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisndXNlIHN0cmljdCc7CisKK3ZhciBUeXBlID0gcmVxdWlyZSgnLi4vdHlwZScpOworCit2YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKKworZnVuY3Rpb24gcmVzb2x2ZVlhbWxQYWlycyhkYXRhKSB7CisgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTsKKworICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LAorICAgICAgb2JqZWN0ID0gZGF0YTsKKworICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7CisKKyAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7CisgICAgcGFpciA9IG9iamVjdFtpbmRleF07CisKKyAgICBpZiAoX3RvU3RyaW5nLmNhbGwocGFpcikgIT09ICdbb2JqZWN0IE9iamVjdF0nKSByZXR1cm4gZmFsc2U7CisKKyAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7CisKKyAgICBpZiAoa2V5cy5sZW5ndGggIT09IDEpIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTsKKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBjb25zdHJ1Y3RZYW1sUGFpcnMoZGF0YSkgeworICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIFtdOworCisgIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsCisgICAgICBvYmplY3QgPSBkYXRhOworCisgIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTsKKworICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHsKKyAgICBwYWlyID0gb2JqZWN0W2luZGV4XTsKKworICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTsKKworICAgIHJlc3VsdFtpbmRleF0gPSBbIGtleXNbMF0sIHBhaXJba2V5c1swXV0gXTsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJywgeworICBraW5kOiAnc2VxdWVuY2UnLAorICByZXNvbHZlOiByZXNvbHZlWWFtbFBhaXJzLAorICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxQYWlycworfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK21vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNlcScsIHsKKyAga2luZDogJ3NlcXVlbmNlJywKKyAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTsgfQorfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQ2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK3ZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5OworCitmdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7CisgIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTsKKworICB2YXIga2V5LCBvYmplY3QgPSBkYXRhOworCisgIGZvciAoa2V5IGluIG9iamVjdCkgeworICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHsKKyAgICAgIGlmIChvYmplY3Rba2V5XSAhPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorCisgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBjb25zdHJ1Y3RZYW1sU2V0KGRhdGEpIHsKKyAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307Cit9CisKK21vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNldCcsIHsKKyAga2luZDogJ21hcHBpbmcnLAorICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCwKKyAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0Cit9KTsKKworfSx7Ii4uL3R5cGUiOjMyfV0sNDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworJ3VzZSBzdHJpY3QnOworCit2YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTsKKworbW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6c3RyJywgeworICBraW5kOiAnc2NhbGFyJywKKyAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiAnJzsgfQorfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyd1c2Ugc3RyaWN0JzsKKwordmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7CisKK3ZhciBZQU1MX0RBVEVfUkVHRVhQID0gbmV3IFJlZ0V4cCgKKyAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyCisgICctKFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGgKKyAgJy0oWzAtOV1bMC05XSkkJyk7ICAgICAgICAgICAgICAgICAgIC8vIFszXSBkYXkKKwordmFyIFlBTUxfVElNRVNUQU1QX1JFR0VYUCA9IG5ldyBSZWdFeHAoCisgICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhcgorICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoCisgICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbM10gZGF5CisgICcoPzpbVHRdfFsgXFx0XSspJyAgICAgICAgICAgICAgICAgKyAvLyAuLi4KKyAgJyhbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICArIC8vIFs0XSBob3VyCisgICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNV0gbWludXRlCisgICc6KFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbNl0gc2Vjb25kCisgICcoPzpcXC4oWzAtOV0qKSk/JyAgICAgICAgICAgICAgICAgKyAvLyBbN10gZnJhY3Rpb24KKyAgJyg/OlsgXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pJyArIC8vIFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXIKKyAgJyg/OjooWzAtOV1bMC05XSkpPykpPyQnKTsgICAgICAgICAgIC8vIFsxMV0gdHpfbWludXRlCisKK2Z1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGEpIHsKKyAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgaWYgKFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7CisgIGlmIChZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7CisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gY29uc3RydWN0WWFtbFRpbWVzdGFtcChkYXRhKSB7CisgIHZhciBtYXRjaCwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uID0gMCwKKyAgICAgIGRlbHRhID0gbnVsbCwgdHpfaG91ciwgdHpfbWludXRlLCBkYXRlOworCisgIG1hdGNoID0gWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpOworICBpZiAobWF0Y2ggPT09IG51bGwpIG1hdGNoID0gWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSk7CisKKyAgaWYgKG1hdGNoID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ0RhdGUgcmVzb2x2ZSBlcnJvcicpOworCisgIC8vIG1hdGNoOiBbMV0geWVhciBbMl0gbW9udGggWzNdIGRheQorCisgIHllYXIgPSArKG1hdGNoWzFdKTsKKyAgbW9udGggPSArKG1hdGNoWzJdKSAtIDE7IC8vIEpTIG1vbnRoIHN0YXJ0cyB3aXRoIDAKKyAgZGF5ID0gKyhtYXRjaFszXSk7CisKKyAgaWYgKCFtYXRjaFs0XSkgeyAvLyBubyBob3VyCisgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTsKKyAgfQorCisgIC8vIG1hdGNoOiBbNF0gaG91ciBbNV0gbWludXRlIFs2XSBzZWNvbmQgWzddIGZyYWN0aW9uCisKKyAgaG91ciA9ICsobWF0Y2hbNF0pOworICBtaW51dGUgPSArKG1hdGNoWzVdKTsKKyAgc2Vjb25kID0gKyhtYXRjaFs2XSk7CisKKyAgaWYgKG1hdGNoWzddKSB7CisgICAgZnJhY3Rpb24gPSBtYXRjaFs3XS5zbGljZSgwLCAzKTsKKyAgICB3aGlsZSAoZnJhY3Rpb24ubGVuZ3RoIDwgMykgeyAvLyBtaWxsaS1zZWNvbmRzCisgICAgICBmcmFjdGlvbiArPSAnMCc7CisgICAgfQorICAgIGZyYWN0aW9uID0gK2ZyYWN0aW9uOworICB9CisKKyAgLy8gbWF0Y2g6IFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXIgWzExXSB0el9taW51dGUKKworICBpZiAobWF0Y2hbOV0pIHsKKyAgICB0el9ob3VyID0gKyhtYXRjaFsxMF0pOworICAgIHR6X21pbnV0ZSA9ICsobWF0Y2hbMTFdIHx8IDApOworICAgIGRlbHRhID0gKHR6X2hvdXIgKiA2MCArIHR6X21pbnV0ZSkgKiA2MDAwMDsgLy8gZGVsdGEgaW4gbWlsaS1zZWNvbmRzCisgICAgaWYgKG1hdGNoWzldID09PSAnLScpIGRlbHRhID0gLWRlbHRhOworICB9CisKKyAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbikpOworCisgIGlmIChkZWx0YSkgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpIC0gZGVsdGEpOworCisgIHJldHVybiBkYXRlOworfQorCitmdW5jdGlvbiByZXByZXNlbnRZYW1sVGltZXN0YW1wKG9iamVjdCAvKiwgc3R5bGUqLykgeworICByZXR1cm4gb2JqZWN0LnRvSVNPU3RyaW5nKCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcCcsIHsKKyAga2luZDogJ3NjYWxhcicsCisgIHJlc29sdmU6IHJlc29sdmVZYW1sVGltZXN0YW1wLAorICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAsCisgIGluc3RhbmNlT2Y6IERhdGUsCisgIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbFRpbWVzdGFtcAorfSk7CisKK30seyIuLi90eXBlIjozMn1dLDQ5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlSW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2Jhc2VJbmRleE9mJyksCisgICAgYmluYXJ5SW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iaW5hcnlJbmRleCcpOworCisvKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqLwordmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4OworCisvKioKKyAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGB2YWx1ZWAgaXMgZm91bmQgaW4gYGFycmF5YAorICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2FtZXZhbHVlemVybykKKyAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhcyB0aGUgb2Zmc2V0CisgKiBmcm9tIHRoZSBlbmQgb2YgYGFycmF5YC4gSWYgYGFycmF5YCBpcyBzb3J0ZWQgcHJvdmlkaW5nIGB0cnVlYCBmb3IgYGZyb21JbmRleGAKKyAqIHBlcmZvcm1zIGEgZmFzdGVyIGJpbmFyeSBzZWFyY2guCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBBcnJheQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNlYXJjaC4KKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuCisgKiBAcGFyYW0ge2Jvb2xlYW58bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbSBvciBgdHJ1ZWAKKyAqICB0byBwZXJmb3JtIGEgYmluYXJ5IHNlYXJjaCBvbiBhIHNvcnRlZCBhcnJheS4KKyAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpOworICogLy8gPT4gMQorICoKKyAqIC8vIHVzaW5nIGBmcm9tSW5kZXhgCisgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTsKKyAqIC8vID0+IDMKKyAqCisgKiAvLyBwZXJmb3JtaW5nIGEgYmluYXJ5IHNlYXJjaAorICogXy5pbmRleE9mKFsxLCAxLCAyLCAyXSwgMiwgdHJ1ZSk7CisgKiAvLyA9PiAyCisgKi8KK2Z1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHsKKyAgdmFyIGxlbmd0aCA9IGFycmF5ID8gYXJyYXkubGVuZ3RoIDogMDsKKyAgaWYgKCFsZW5ndGgpIHsKKyAgICByZXR1cm4gLTE7CisgIH0KKyAgaWYgKHR5cGVvZiBmcm9tSW5kZXggPT0gJ251bWJlcicpIHsKKyAgICBmcm9tSW5kZXggPSBmcm9tSW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCkgOiBmcm9tSW5kZXg7CisgIH0gZWxzZSBpZiAoZnJvbUluZGV4KSB7CisgICAgdmFyIGluZGV4ID0gYmluYXJ5SW5kZXgoYXJyYXksIHZhbHVlKTsKKyAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYKKyAgICAgICAgKHZhbHVlID09PSB2YWx1ZSA/ICh2YWx1ZSA9PT0gYXJyYXlbaW5kZXhdKSA6IChhcnJheVtpbmRleF0gIT09IGFycmF5W2luZGV4XSkpKSB7CisgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJldHVybiAtMTsKKyAgfQorICByZXR1cm4gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXggfHwgMCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaW5kZXhPZjsKKworfSx7Ii4uL2ludGVybmFsL2Jhc2VJbmRleE9mIjo3OCwiLi4vaW50ZXJuYWwvYmluYXJ5SW5kZXgiOjkyfV0sNTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IEFycmF5CisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8ubGFzdChbMSwgMiwgM10pOworICogLy8gPT4gMworICovCitmdW5jdGlvbiBsYXN0KGFycmF5KSB7CisgIHZhciBsZW5ndGggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IDA7CisgIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBsYXN0OworCit9LHt9XSw1MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgTGF6eVdyYXBwZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9MYXp5V3JhcHBlcicpLAorICAgIExvZGFzaFdyYXBwZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9Mb2Rhc2hXcmFwcGVyJyksCisgICAgYmFzZUxvZGFzaCA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2Jhc2VMb2Rhc2gnKSwKKyAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi4vbGFuZy9pc0FycmF5JyksCisgICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlJyksCisgICAgd3JhcHBlckNsb25lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvd3JhcHBlckNsb25lJyk7CisKKy8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi8KK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5OworCisvKioKKyAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgY2hhaW5pbmcuCisgKiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsIGFuZCBmdW5jdGlvbnMgY2FuCisgKiBiZSBjaGFpbmVkIHRvZ2V0aGVyLiBNZXRob2RzIHRoYXQgcmV0cmlldmUgYSBzaW5nbGUgdmFsdWUgb3IgbWF5IHJldHVybiBhCisgKiBwcmltaXRpdmUgdmFsdWUgd2lsbCBhdXRvbWF0aWNhbGx5IGVuZCB0aGUgY2hhaW4gcmV0dXJuaW5nIHRoZSB1bndyYXBwZWQKKyAqIHZhbHVlLiBFeHBsaWNpdCBjaGFpbmluZyBtYXkgYmUgZW5hYmxlZCB1c2luZyBgXy5jaGFpbmAuIFRoZSBleGVjdXRpb24gb2YKKyAqIGNoYWluZWQgbWV0aG9kcyBpcyBsYXp5LCB0aGF0IGlzLCBleGVjdXRpb24gaXMgZGVmZXJyZWQgdW50aWwgYF8jdmFsdWVgCisgKiBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLgorICoKKyAqIExhenkgZXZhbHVhdGlvbiBhbGxvd3Mgc2V2ZXJhbCBtZXRob2RzIHRvIHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uLiBTaG9ydGN1dAorICogZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiBzdHJhdGVneSB3aGljaCBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBjYW4gaGVscAorICogdG8gYXZvaWQgdGhlIGNyZWF0aW9uIG9mIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGdyZWF0bHkgcmVkdWNlIHRoZQorICogbnVtYmVyIG9mIGl0ZXJhdGVlIGV4ZWN1dGlvbnMuCisgKgorICogQ2hhaW5pbmcgaXMgc3VwcG9ydGVkIGluIGN1c3RvbSBidWlsZHMgYXMgbG9uZyBhcyB0aGUgYF8jdmFsdWVgIG1ldGhvZCBpcworICogZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuCisgKgorICogSW4gYWRkaXRpb24gdG8gbG9kYXNoIG1ldGhvZHMsIHdyYXBwZXJzIGhhdmUgYEFycmF5YCBhbmQgYFN0cmluZ2AgbWV0aG9kcy4KKyAqCisgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOgorICogYGNvbmNhdGAsIGBqb2luYCwgYHBvcGAsIGBwdXNoYCwgYHJldmVyc2VgLCBgc2hpZnRgLCBgc2xpY2VgLCBgc29ydGAsCisgKiBgc3BsaWNlYCwgYW5kIGB1bnNoaWZ0YAorICoKKyAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOgorICogYHJlcGxhY2VgIGFuZCBgc3BsaXRgCisgKgorICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZToKKyAqIGBjb21wYWN0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBmaWx0ZXJgLAorICogYGZpcnN0YCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcGx1Y2tgLCBgcmVqZWN0YCwgYHJlc3RgLCBgcmV2ZXJzZWAsCisgKiBgc2xpY2VgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYHRvQXJyYXlgLAorICogYW5kIGB3aGVyZWAKKyAqCisgKiBUaGUgY2hhaW5hYmxlIHdyYXBwZXIgbWV0aG9kcyBhcmU6CisgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhdGAsIGBiZWZvcmVgLCBgYmluZGAsIGBiaW5kQWxsYCwgYGJpbmRLZXlgLAorICogYGNhbGxiYWNrYCwgYGNoYWluYCwgYGNodW5rYCwgYGNvbW1pdGAsIGBjb21wYWN0YCwgYGNvbmNhdGAsIGBjb25zdGFudGAsCisgKiBgY291bnRCeWAsIGBjcmVhdGVgLCBgY3VycnlgLCBgZGVib3VuY2VgLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwKKyAqIGBkZWZlcmAsIGBkZWxheWAsIGBkaWZmZXJlbmNlYCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGRyb3BSaWdodFdoaWxlYCwKKyAqIGBkcm9wV2hpbGVgLCBgZmlsbGAsIGBmaWx0ZXJgLCBgZmxhdHRlbmAsIGBmbGF0dGVuRGVlcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsCisgKiBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLCBgZm9ySW5gLCBgZm9ySW5SaWdodGAsIGBmb3JPd25gLCBgZm9yT3duUmlnaHRgLAorICogYGZ1bmN0aW9uc2AsIGBncm91cEJ5YCwgYGluZGV4QnlgLCBgaW5pdGlhbGAsIGBpbnRlcnNlY3Rpb25gLCBgaW52ZXJ0YCwKKyAqIGBpbnZva2VgLCBga2V5c2AsIGBrZXlzSW5gLCBgbWFwYCwgYG1hcEtleXNgLCBgbWFwVmFsdWVzYCwgYG1hdGNoZXNgLAorICogYG1hdGNoZXNQcm9wZXJ0eWAsIGBtZW1vaXplYCwgYG1lcmdlYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsCisgKiBgbW9kQXJnc2AsIGBuZWdhdGVgLCBgb21pdGAsIGBvbmNlYCwgYHBhaXJzYCwgYHBhcnRpYWxgLCBgcGFydGlhbFJpZ2h0YCwKKyAqIGBwYXJ0aXRpb25gLCBgcGlja2AsIGBwbGFudGAsIGBwbHVja2AsIGBwcm9wZXJ0eWAsIGBwcm9wZXJ0eU9mYCwgYHB1bGxgLAorICogYHB1bGxBdGAsIGBwdXNoYCwgYHJhbmdlYCwgYHJlYXJnYCwgYHJlamVjdGAsIGByZW1vdmVgLCBgcmVzdGAsIGByZXN0UGFyYW1gLAorICogYHJldmVyc2VgLCBgc2V0YCwgYHNodWZmbGVgLCBgc2xpY2VgLCBgc29ydGAsIGBzb3J0QnlgLCBgc29ydEJ5QWxsYCwKKyAqIGBzb3J0QnlPcmRlcmAsIGBzcGxpY2VgLCBgc3ByZWFkYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwKKyAqIGB0YWtlV2hpbGVgLCBgdGFwYCwgYHRocm90dGxlYCwgYHRocnVgLCBgdGltZXNgLCBgdG9BcnJheWAsIGB0b1BsYWluT2JqZWN0YCwKKyAqIGB0cmFuc2Zvcm1gLCBgdW5pb25gLCBgdW5pcWAsIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB2YWx1ZXNgLAorICogYHZhbHVlc0luYCwgYHdoZXJlYCwgYHdpdGhvdXRgLCBgd3JhcGAsIGB4b3JgLCBgemlwYCwgYHppcE9iamVjdGAsIGB6aXBXaXRoYAorICoKKyAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBhcmUgKipub3QqKiBjaGFpbmFibGUgYnkgZGVmYXVsdCBhcmU6CisgKiBgYWRkYCwgYGF0dGVtcHRgLCBgY2FtZWxDYXNlYCwgYGNhcGl0YWxpemVgLCBgY2VpbGAsIGBjbG9uZWAsIGBjbG9uZURlZXBgLAorICogYGRlYnVycmAsIGBlbmRzV2l0aGAsIGBlc2NhcGVgLCBgZXNjYXBlUmVnRXhwYCwgYGV2ZXJ5YCwgYGZpbmRgLCBgZmluZEluZGV4YCwKKyAqIGBmaW5kS2V5YCwgYGZpbmRMYXN0YCwgYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmluZFdoZXJlYCwgYGZpcnN0YCwKKyAqIGBmbG9vcmAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsIGBpZGVudGl0eWAsIGBpbmNsdWRlc2AsIGBpbmRleE9mYCwKKyAqIGBpblJhbmdlYCwgYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNCb29sZWFuYCwgYGlzRGF0ZWAsIGBpc0VsZW1lbnRgLAorICogYGlzRW1wdHlgLCBgaXNFcXVhbGAsIGBpc0Vycm9yYCwgYGlzRmluaXRlYCBgaXNGdW5jdGlvbmAsIGBpc01hdGNoYCwKKyAqIGBpc05hdGl2ZWAsIGBpc05hTmAsIGBpc051bGxgLCBgaXNOdW1iZXJgLCBgaXNPYmplY3RgLCBgaXNQbGFpbk9iamVjdGAsCisgKiBgaXNSZWdFeHBgLCBgaXNTdHJpbmdgLCBgaXNVbmRlZmluZWRgLCBgaXNUeXBlZEFycmF5YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwKKyAqIGBsYXN0YCwgYGxhc3RJbmRleE9mYCwgYGx0YCwgYGx0ZWAsIGBtYXhgLCBgbWluYCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsCisgKiBgbm93YCwgYHBhZGAsIGBwYWRMZWZ0YCwgYHBhZFJpZ2h0YCwgYHBhcnNlSW50YCwgYHBvcGAsIGByYW5kb21gLCBgcmVkdWNlYCwKKyAqIGByZWR1Y2VSaWdodGAsIGByZXBlYXRgLCBgcmVzdWx0YCwgYHJvdW5kYCwgYHJ1bkluQ29udGV4dGAsIGBzaGlmdGAsIGBzaXplYCwKKyAqIGBzbmFrZUNhc2VgLCBgc29tZWAsIGBzb3J0ZWRJbmRleGAsIGBzb3J0ZWRMYXN0SW5kZXhgLCBgc3RhcnRDYXNlYCwKKyAqIGBzdGFydHNXaXRoYCwgYHN1bWAsIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1MZWZ0YCwgYHRyaW1SaWdodGAsIGB0cnVuY2AsCisgKiBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdmFsdWVgLCBhbmQgYHdvcmRzYAorICoKKyAqIFRoZSB3cmFwcGVyIG1ldGhvZCBgc2FtcGxlYCB3aWxsIHJldHVybiBhIHdyYXBwZWQgdmFsdWUgd2hlbiBgbmAgaXMgcHJvdmlkZWQsCisgKiBvdGhlcndpc2UgYW4gdW53cmFwcGVkIHZhbHVlIGlzIHJldHVybmVkLgorICoKKyAqIEBuYW1lIF8KKyAqIEBjb25zdHJ1Y3RvcgorICogQGNhdGVnb3J5IENoYWluCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwIGluIGEgYGxvZGFzaGAgaW5zdGFuY2UuCisgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS4KKyAqIEBleGFtcGxlCisgKgorICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyLCAzXSk7CisgKgorICogLy8gcmV0dXJucyBhbiB1bndyYXBwZWQgdmFsdWUKKyAqIHdyYXBwZWQucmVkdWNlKGZ1bmN0aW9uKHRvdGFsLCBuKSB7CisgKiAgIHJldHVybiB0b3RhbCArIG47CisgKiB9KTsKKyAqIC8vID0+IDYKKyAqCisgKiAvLyByZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZQorICogdmFyIHNxdWFyZXMgPSB3cmFwcGVkLm1hcChmdW5jdGlvbihuKSB7CisgKiAgIHJldHVybiBuICogbjsKKyAqIH0pOworICoKKyAqIF8uaXNBcnJheShzcXVhcmVzKTsKKyAqIC8vID0+IGZhbHNlCisgKgorICogXy5pc0FycmF5KHNxdWFyZXMudmFsdWUoKSk7CisgKiAvLyA9PiB0cnVlCisgKi8KK2Z1bmN0aW9uIGxvZGFzaCh2YWx1ZSkgeworICBpZiAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNBcnJheSh2YWx1ZSkgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSkgeworICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHsKKyAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX2NoYWluX18nKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnX193cmFwcGVkX18nKSkgeworICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7CisgICAgfQorICB9CisgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7Cit9CisKKy8vIEVuc3VyZSB3cmFwcGVycyBhcmUgaW5zdGFuY2VzIG9mIGBiYXNlTG9kYXNoYC4KK2xvZGFzaC5wcm90b3R5cGUgPSBiYXNlTG9kYXNoLnByb3RvdHlwZTsKKworbW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7CisKK30seyIuLi9pbnRlcm5hbC9MYXp5V3JhcHBlciI6NjAsIi4uL2ludGVybmFsL0xvZGFzaFdyYXBwZXIiOjYxLCIuLi9pbnRlcm5hbC9iYXNlTG9kYXNoIjo4MiwiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIjoxMjYsIi4uL2ludGVybmFsL3dyYXBwZXJDbG9uZSI6MTM3LCIuLi9sYW5nL2lzQXJyYXkiOjE0MH1dLDUyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK21vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mb3JFYWNoJyk7CisKK30seyIuL2ZvckVhY2giOjU0fV0sNTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYmFzZUVhY2gnKSwKKyAgICBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvY3JlYXRlRmluZCcpOworCisvKioKKyAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnQKKyAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBib3VuZCB0byBgdGhpc0FyZ2AgYW5kCisgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuCisgKgorICogSWYgYSBwcm9wZXJ0eSBuYW1lIGlzIHByb3ZpZGVkIGZvciBgcHJlZGljYXRlYCB0aGUgY3JlYXRlZCBgXy5wcm9wZXJ0eWAKKyAqIHN0eWxlIGNhbGxiYWNrIHJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBnaXZlbiBlbGVtZW50LgorICoKKyAqIElmIGEgdmFsdWUgaXMgYWxzbyBwcm92aWRlZCBmb3IgYHRoaXNBcmdgIHRoZSBjcmVhdGVkIGBfLm1hdGNoZXNQcm9wZXJ0eWAKKyAqIHN0eWxlIGNhbGxiYWNrIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYSBtYXRjaGluZyBwcm9wZXJ0eQorICogdmFsdWUsIGVsc2UgYGZhbHNlYC4KKyAqCisgKiBJZiBhbiBvYmplY3QgaXMgcHJvdmlkZWQgZm9yIGBwcmVkaWNhdGVgIHRoZSBjcmVhdGVkIGBfLm1hdGNoZXNgIHN0eWxlCisgKiBjYWxsYmFjayByZXR1cm5zIGB0cnVlYCBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZlbgorICogb2JqZWN0LCBlbHNlIGBmYWxzZWAuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBhbGlhcyBkZXRlY3QKKyAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uCisgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2VhcmNoLgorICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R8c3RyaW5nfSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkCisgKiAgcGVyIGl0ZXJhdGlvbi4KKyAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgcHJlZGljYXRlYC4KKyAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuCisgKiBAZXhhbXBsZQorICoKKyAqIHZhciB1c2VycyA9IFsKKyAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LAorICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LAorICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH0KKyAqIF07CisgKgorICogXy5yZXN1bHQoXy5maW5kKHVzZXJzLCBmdW5jdGlvbihjaHIpIHsKKyAqICAgcmV0dXJuIGNoci5hZ2UgPCA0MDsKKyAqIH0pLCAndXNlcicpOworICogLy8gPT4gJ2Jhcm5leScKKyAqCisgKiAvLyB1c2luZyB0aGUgYF8ubWF0Y2hlc2AgY2FsbGJhY2sgc2hvcnRoYW5kCisgKiBfLnJlc3VsdChfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pLCAndXNlcicpOworICogLy8gPT4gJ3BlYmJsZXMnCisgKgorICogLy8gdXNpbmcgdGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgY2FsbGJhY2sgc2hvcnRoYW5kCisgKiBfLnJlc3VsdChfLmZpbmQodXNlcnMsICdhY3RpdmUnLCBmYWxzZSksICd1c2VyJyk7CisgKiAvLyA9PiAnZnJlZCcKKyAqCisgKiAvLyB1c2luZyB0aGUgYF8ucHJvcGVydHlgIGNhbGxiYWNrIHNob3J0aGFuZAorICogXy5yZXN1bHQoXy5maW5kKHVzZXJzLCAnYWN0aXZlJyksICd1c2VyJyk7CisgKiAvLyA9PiAnYmFybmV5JworICovCit2YXIgZmluZCA9IGNyZWF0ZUZpbmQoYmFzZUVhY2gpOworCittb2R1bGUuZXhwb3J0cyA9IGZpbmQ7CisKK30seyIuLi9pbnRlcm5hbC9iYXNlRWFjaCI6NzEsIi4uL2ludGVybmFsL2NyZWF0ZUZpbmQiOjEwMn1dLDU0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBhcnJheUVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9hcnJheUVhY2gnKSwKKyAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2Jhc2VFYWNoJyksCisgICAgY3JlYXRlRm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2NyZWF0ZUZvckVhY2gnKTsKKworLyoqCisgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBpbnZva2luZyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuCisgKiBUaGUgYGl0ZXJhdGVlYCBpcyBib3VuZCB0byBgdGhpc0FyZ2AgYW5kIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6CisgKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkKKyAqIGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuCisgKgorICogKipOb3RlOioqIEFzIHdpdGggb3RoZXIgIkNvbGxlY3Rpb25zIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSAibGVuZ3RoIiBwcm9wZXJ0eQorICogYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIGBfLmZvckluYCBvciBgXy5mb3JPd25gCisgKiBtYXkgYmUgdXNlZCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGFsaWFzIGVhY2gKKyAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uCisgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLgorICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uCisgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGl0ZXJhdGVlYC4KKyAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R8c3RyaW5nfSBSZXR1cm5zIGBjb2xsZWN0aW9uYC4KKyAqIEBleGFtcGxlCisgKgorICogXyhbMSwgMl0pLmZvckVhY2goZnVuY3Rpb24obikgeworICogICBjb25zb2xlLmxvZyhuKTsKKyAqIH0pLnZhbHVlKCk7CisgKiAvLyA9PiBsb2dzIGVhY2ggdmFsdWUgZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCByZXR1cm5zIHRoZSBhcnJheQorICoKKyAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKG4sIGtleSkgeworICogICBjb25zb2xlLmxvZyhuLCBrZXkpOworICogfSk7CisgKiAvLyA9PiBsb2dzIGVhY2ggdmFsdWUta2V5IHBhaXIgYW5kIHJldHVybnMgdGhlIG9iamVjdCAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKQorICovCit2YXIgZm9yRWFjaCA9IGNyZWF0ZUZvckVhY2goYXJyYXlFYWNoLCBiYXNlRWFjaCk7CisKK21vZHVsZS5leHBvcnRzID0gZm9yRWFjaDsKKworfSx7Ii4uL2ludGVybmFsL2FycmF5RWFjaCI6NjMsIi4uL2ludGVybmFsL2Jhc2VFYWNoIjo3MSwiLi4vaW50ZXJuYWwvY3JlYXRlRm9yRWFjaCI6MTAzfV0sNTU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYmFzZUluZGV4T2YnKSwKKyAgICBnZXRMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9nZXRMZW5ndGgnKSwKKyAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi4vbGFuZy9pc0FycmF5JyksCisgICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0l0ZXJhdGVlQ2FsbCcpLAorICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNMZW5ndGgnKSwKKyAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2xhbmcvaXNTdHJpbmcnKSwKKyAgICB2YWx1ZXMgPSByZXF1aXJlKCcuLi9vYmplY3QvdmFsdWVzJyk7CisKKy8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovCit2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7CisKKy8qKgorICogQ2hlY2tzIGlmIGB0YXJnZXRgIGlzIGluIGBjb2xsZWN0aW9uYCB1c2luZworICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2FtZXZhbHVlemVybykKKyAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhcyB0aGUgb2Zmc2V0CisgKiBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLgorICoKKyAqIEBzdGF0aWMKKyAqIEBtZW1iZXJPZiBfCisgKiBAYWxpYXMgY29udGFpbnMsIGluY2x1ZGUKKyAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uCisgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2VhcmNoLgorICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuCisgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uCisgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYSBjYWxsYmFjayBmb3IgZnVuY3Rpb25zIGxpa2UgYF8ucmVkdWNlYC4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIG1hdGNoaW5nIGVsZW1lbnQgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC4KKyAqIEBleGFtcGxlCisgKgorICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTsKKyAqIC8vID0+IGZhbHNlCisgKgorICogXy5pbmNsdWRlcyh7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfSwgJ2ZyZWQnKTsKKyAqIC8vID0+IHRydWUKKyAqCisgKiBfLmluY2x1ZGVzKCdwZWJibGVzJywgJ2ViJyk7CisgKiAvLyA9PiB0cnVlCisgKi8KK2Z1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHRhcmdldCwgZnJvbUluZGV4LCBndWFyZCkgeworICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbiA/IGdldExlbmd0aChjb2xsZWN0aW9uKSA6IDA7CisgIGlmICghaXNMZW5ndGgobGVuZ3RoKSkgeworICAgIGNvbGxlY3Rpb24gPSB2YWx1ZXMoY29sbGVjdGlvbik7CisgICAgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7CisgIH0KKyAgaWYgKHR5cGVvZiBmcm9tSW5kZXggIT0gJ251bWJlcicgfHwgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHRhcmdldCwgZnJvbUluZGV4LCBndWFyZCkpKSB7CisgICAgZnJvbUluZGV4ID0gMDsKKyAgfSBlbHNlIHsKKyAgICBmcm9tSW5kZXggPSBmcm9tSW5kZXggPCAwID8gbmF0aXZlTWF4KGxlbmd0aCArIGZyb21JbmRleCwgMCkgOiAoZnJvbUluZGV4IHx8IDApOworICB9CisgIHJldHVybiAodHlwZW9mIGNvbGxlY3Rpb24gPT0gJ3N0cmluZycgfHwgIWlzQXJyYXkoY29sbGVjdGlvbikgJiYgaXNTdHJpbmcoY29sbGVjdGlvbikpCisgICAgPyAoZnJvbUluZGV4IDw9IGxlbmd0aCAmJiBjb2xsZWN0aW9uLmluZGV4T2YodGFyZ2V0LCBmcm9tSW5kZXgpID4gLTEpCisgICAgOiAoISFsZW5ndGggJiYgYmFzZUluZGV4T2YoY29sbGVjdGlvbiwgdGFyZ2V0LCBmcm9tSW5kZXgpID4gLTEpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGluY2x1ZGVzOworCit9LHsiLi4vaW50ZXJuYWwvYmFzZUluZGV4T2YiOjc4LCIuLi9pbnRlcm5hbC9nZXRMZW5ndGgiOjExMiwiLi4vaW50ZXJuYWwvaXNJdGVyYXRlZUNhbGwiOjEyMiwiLi4vaW50ZXJuYWwvaXNMZW5ndGgiOjEyNSwiLi4vbGFuZy9pc0FycmF5IjoxNDAsIi4uL2xhbmcvaXNTdHJpbmciOjE0NiwiLi4vb2JqZWN0L3ZhbHVlcyI6MTUyfV0sNTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYXJyYXlNYXAnKSwKKyAgICBiYXNlQ2FsbGJhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iYXNlQ2FsbGJhY2snKSwKKyAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYmFzZU1hcCcpLAorICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9sYW5nL2lzQXJyYXknKTsKKworLyoqCisgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhyb3VnaAorICogYGl0ZXJhdGVlYC4gVGhlIGBpdGVyYXRlZWAgaXMgYm91bmQgdG8gYHRoaXNBcmdgIGFuZCBpbnZva2VkIHdpdGggdGhyZWUKKyAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLgorICoKKyAqIElmIGEgcHJvcGVydHkgbmFtZSBpcyBwcm92aWRlZCBmb3IgYGl0ZXJhdGVlYCB0aGUgY3JlYXRlZCBgXy5wcm9wZXJ0eWAKKyAqIHN0eWxlIGNhbGxiYWNrIHJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBnaXZlbiBlbGVtZW50LgorICoKKyAqIElmIGEgdmFsdWUgaXMgYWxzbyBwcm92aWRlZCBmb3IgYHRoaXNBcmdgIHRoZSBjcmVhdGVkIGBfLm1hdGNoZXNQcm9wZXJ0eWAKKyAqIHN0eWxlIGNhbGxiYWNrIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYSBtYXRjaGluZyBwcm9wZXJ0eQorICogdmFsdWUsIGVsc2UgYGZhbHNlYC4KKyAqCisgKiBJZiBhbiBvYmplY3QgaXMgcHJvdmlkZWQgZm9yIGBpdGVyYXRlZWAgdGhlIGNyZWF0ZWQgYF8ubWF0Y2hlc2Agc3R5bGUKKyAqIGNhbGxiYWNrIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuCisgKiBvYmplY3QsIGVsc2UgYGZhbHNlYC4KKyAqCisgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2UKKyAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLgorICoKKyAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOgorICogYGFyeWAsIGBjYWxsYmFja2AsIGBjaHVua2AsIGBjbG9uZWAsIGBjcmVhdGVgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsCisgKiBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLCBgZmlsbGAsIGBmbGF0dGVuYCwgYGludmVydGAsIGBtYXhgLCBgbWluYCwKKyAqIGBwYXJzZUludGAsIGBzbGljZWAsIGBzb3J0QnlgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGVtcGxhdGVgLCBgdHJpbWAsCisgKiBgdHJpbUxlZnRgLCBgdHJpbVJpZ2h0YCwgYHRydW5jYCwgYHJhbmRvbWAsIGByYW5nZWAsIGBzYW1wbGVgLCBgc29tZWAsCisgKiBgc3VtYCwgYHVuaXFgLCBhbmQgYHdvcmRzYAorICoKKyAqIEBzdGF0aWMKKyAqIEBtZW1iZXJPZiBfCisgKiBAYWxpYXMgY29sbGVjdAorICogQGNhdGVnb3J5IENvbGxlY3Rpb24KKyAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdHxzdHJpbmd9IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZAorICogIHBlciBpdGVyYXRpb24uCisgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGl0ZXJhdGVlYC4KKyAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS4KKyAqIEBleGFtcGxlCisgKgorICogZnVuY3Rpb24gdGltZXNUaHJlZShuKSB7CisgKiAgIHJldHVybiBuICogMzsKKyAqIH0KKyAqCisgKiBfLm1hcChbMSwgMl0sIHRpbWVzVGhyZWUpOworICogLy8gPT4gWzMsIDZdCisgKgorICogXy5tYXAoeyAnYSc6IDEsICdiJzogMiB9LCB0aW1lc1RocmVlKTsKKyAqIC8vID0+IFszLCA2XSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKQorICoKKyAqIHZhciB1c2VycyA9IFsKKyAqICAgeyAndXNlcic6ICdiYXJuZXknIH0sCisgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfQorICogXTsKKyAqCisgKiAvLyB1c2luZyB0aGUgYF8ucHJvcGVydHlgIGNhbGxiYWNrIHNob3J0aGFuZAorICogXy5tYXAodXNlcnMsICd1c2VyJyk7CisgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ10KKyAqLworZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCB0aGlzQXJnKSB7CisgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDsKKyAgaXRlcmF0ZWUgPSBiYXNlQ2FsbGJhY2soaXRlcmF0ZWUsIHRoaXNBcmcsIDMpOworICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gbWFwOworCit9LHsiLi4vaW50ZXJuYWwvYXJyYXlNYXAiOjY0LCIuLi9pbnRlcm5hbC9iYXNlQ2FsbGJhY2siOjY3LCIuLi9pbnRlcm5hbC9iYXNlTWFwIjo4MywiLi4vbGFuZy9pc0FycmF5IjoxNDB9XSw1NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvZ2V0TmF0aXZlJyk7CisKKy8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovCit2YXIgbmF0aXZlTm93ID0gZ2V0TmF0aXZlKERhdGUsICdub3cnKTsKKworLyoqCisgKiBHZXRzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBVbml4IGVwb2NoCisgKiAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IERhdGUKKyAqIEBleGFtcGxlCisgKgorICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkgeworICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApOworICogfSwgXy5ub3coKSk7CisgKiAvLyA9PiBsb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBmdW5jdGlvbiB0byBiZSBpbnZva2VkCisgKi8KK3ZhciBub3cgPSBuYXRpdmVOb3cgfHwgZnVuY3Rpb24oKSB7CisgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKK307CisKK21vZHVsZS5leHBvcnRzID0gbm93OworCit9LHsiLi4vaW50ZXJuYWwvZ2V0TmF0aXZlIjoxMTR9XSw1ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgY3JlYXRlV3JhcHBlciA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2NyZWF0ZVdyYXBwZXInKSwKKyAgICByZXBsYWNlSG9sZGVycyA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlcGxhY2VIb2xkZXJzJyksCisgICAgcmVzdFBhcmFtID0gcmVxdWlyZSgnLi9yZXN0UGFyYW0nKTsKKworLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3Igd3JhcHBlciBtZXRhZGF0YS4gKi8KK3ZhciBCSU5EX0ZMQUcgPSAxLAorICAgIFBBUlRJQUxfRkxBRyA9IDMyOworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYAorICogYW5kIHByZXBlbmRzIGFueSBhZGRpdGlvbmFsIGBfLmJpbmRgIGFyZ3VtZW50cyB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUKKyAqIGJvdW5kIGZ1bmN0aW9uLgorICoKKyAqIFRoZSBgXy5iaW5kLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLAorICogbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLgorICoKKyAqICoqTm90ZToqKiBVbmxpa2UgbmF0aXZlIGBGdW5jdGlvbiNiaW5kYCB0aGlzIG1ldGhvZCBkb2VzIG5vdCBzZXQgdGhlICJsZW5ndGgiCisgKiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBGdW5jdGlvbgorICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC4KKyAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLgorICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi4KKyAqIEBleGFtcGxlCisgKgorICogdmFyIGdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7CisgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uOworICogfTsKKyAqCisgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9OworICoKKyAqIHZhciBib3VuZCA9IF8uYmluZChncmVldCwgb2JqZWN0LCAnaGknKTsKKyAqIGJvdW5kKCchJyk7CisgKiAvLyA9PiAnaGkgZnJlZCEnCisgKgorICogLy8gdXNpbmcgcGxhY2Vob2xkZXJzCisgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgXywgJyEnKTsKKyAqIGJvdW5kKCdoaScpOworICogLy8gPT4gJ2hpIGZyZWQhJworICovCit2YXIgYmluZCA9IHJlc3RQYXJhbShmdW5jdGlvbihmdW5jLCB0aGlzQXJnLCBwYXJ0aWFscykgeworICB2YXIgYml0bWFzayA9IEJJTkRfRkxBRzsKKyAgaWYgKHBhcnRpYWxzLmxlbmd0aCkgeworICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGJpbmQucGxhY2Vob2xkZXIpOworICAgIGJpdG1hc2sgfD0gUEFSVElBTF9GTEFHOworICB9CisgIHJldHVybiBjcmVhdGVXcmFwcGVyKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzKTsKK30pOworCisvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuCitiaW5kLnBsYWNlaG9sZGVyID0ge307CisKK21vZHVsZS5leHBvcnRzID0gYmluZDsKKworfSx7Ii4uL2ludGVybmFsL2NyZWF0ZVdyYXBwZXIiOjEwNiwiLi4vaW50ZXJuYWwvcmVwbGFjZUhvbGRlcnMiOjEzMiwiLi9yZXN0UGFyYW0iOjU5fV0sNTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yICJGdW5jdGlvbnMiIG1ldGhvZHMuICovCit2YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nOworCisvKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqLwordmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4OworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZQorICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzIGFuIGFycmF5LgorICoKKyAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvRnVuY3Rpb25zL3Jlc3RfcGFyYW1ldGVycykuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBGdW5jdGlvbgorICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by4KKyAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLgorICogQGV4YW1wbGUKKyAqCisgKiB2YXIgc2F5ID0gXy5yZXN0UGFyYW0oZnVuY3Rpb24od2hhdCwgbmFtZXMpIHsKKyAqICAgcmV0dXJuIHdoYXQgKyAnICcgKyBfLmluaXRpYWwobmFtZXMpLmpvaW4oJywgJykgKworICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7CisgKiB9KTsKKyAqCisgKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTsKKyAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcycKKyAqLworZnVuY3Rpb24gcmVzdFBhcmFtKGZ1bmMsIHN0YXJ0KSB7CisgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7CisgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpOworICB9CisgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6ICgrc3RhcnQgfHwgMCksIDApOworICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsCisgICAgICAgIGluZGV4ID0gLTEsCisgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSwKKyAgICAgICAgcmVzdCA9IEFycmF5KGxlbmd0aCk7CisKKyAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgICAgcmVzdFtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdOworICAgIH0KKyAgICBzd2l0Y2ggKHN0YXJ0KSB7CisgICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpcywgcmVzdCk7CisgICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJnc1swXSwgcmVzdCk7CisgICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSwgcmVzdCk7CisgICAgfQorICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpOworICAgIGluZGV4ID0gLTE7CisgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkgeworICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdOworICAgIH0KKyAgICBvdGhlckFyZ3Nbc3RhcnRdID0gcmVzdDsKKyAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBvdGhlckFyZ3MpOworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IHJlc3RQYXJhbTsKKworfSx7fV0sNjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL2Jhc2VDcmVhdGUnKSwKKyAgICBiYXNlTG9kYXNoID0gcmVxdWlyZSgnLi9iYXNlTG9kYXNoJyk7CisKKy8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIGAtSW5maW5pdHlgIGFuZCBgSW5maW5pdHlgLiAqLwordmFyIFBPU0lUSVZFX0lORklOSVRZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOworCisvKioKKyAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC4KKyAqLworZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpIHsKKyAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlOworICB0aGlzLl9fYWN0aW9uc19fID0gW107CisgIHRoaXMuX19kaXJfXyA9IDE7CisgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7CisgIHRoaXMuX19pdGVyYXRlZXNfXyA9IFtdOworICB0aGlzLl9fdGFrZUNvdW50X18gPSBQT1NJVElWRV9JTkZJTklUWTsKKyAgdGhpcy5fX3ZpZXdzX18gPSBbXTsKK30KKworTGF6eVdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7CitMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjsKKworbW9kdWxlLmV4cG9ydHMgPSBMYXp5V3JhcHBlcjsKKworfSx7Ii4vYmFzZUNyZWF0ZSI6NzAsIi4vYmFzZUxvZGFzaCI6ODJ9XSw2MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vYmFzZUNyZWF0ZScpLAorICAgIGJhc2VMb2Rhc2ggPSByZXF1aXJlKCcuL2Jhc2VMb2Rhc2gnKTsKKworLyoqCisgKiBUaGUgYmFzZSBjb25zdHJ1Y3RvciBmb3IgY3JlYXRpbmcgYGxvZGFzaGAgd3JhcHBlciBvYmplY3RzLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLgorICogQHBhcmFtIHtib29sZWFufSBbY2hhaW5BbGxdIEVuYWJsZSBjaGFpbmluZyBmb3IgYWxsIHdyYXBwZXIgbWV0aG9kcy4KKyAqIEBwYXJhbSB7QXJyYXl9IFthY3Rpb25zPVtdXSBBY3Rpb25zIHRvIHBlZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuCisgKi8KK2Z1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsIGNoYWluQWxsLCBhY3Rpb25zKSB7CisgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTsKKyAgdGhpcy5fX2FjdGlvbnNfXyA9IGFjdGlvbnMgfHwgW107CisgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDsKK30KKworTG9kYXNoV3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTsKK0xvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjsKKworbW9kdWxlLmV4cG9ydHMgPSBMb2Rhc2hXcmFwcGVyOworCit9LHsiLi9iYXNlQ3JlYXRlIjo3MCwiLi9iYXNlTG9kYXNoIjo4Mn1dLDYyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLgorICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC4KKyAqLworZnVuY3Rpb24gYXJyYXlDb3B5KHNvdXJjZSwgYXJyYXkpIHsKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoOworCisgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpOworICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07CisgIH0KKyAgcmV0dXJuIGFycmF5OworfQorCittb2R1bGUuZXhwb3J0cyA9IGFycmF5Q29weTsKKworfSx7fV0sNjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrCisgKiBzaG9ydGhhbmRzIGFuZCBgdGhpc2AgYmluZGluZy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC4KKyAqLworZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkgeworICB2YXIgaW5kZXggPSAtMSwKKyAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKworICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGFycmF5OworfQorCittb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDsKKworfSx7fV0sNjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgY2FsbGJhY2sKKyAqIHNob3J0aGFuZHMgYW5kIGB0aGlzYCBiaW5kaW5nLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLgorICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi4KKyAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS4KKyAqLworZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7CisgIHZhciBpbmRleCA9IC0xLAorICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLAorICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTsKKworICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhcnJheU1hcDsKKworfSx7fV0sNjU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrCisgKiBzaG9ydGhhbmRzIGFuZCBgdGhpc2AgYmluZGluZy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLAorICogIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHsKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7CisKKyAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHsKKyAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkgeworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7CisKK30se31dLDY2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlQ29weSA9IHJlcXVpcmUoJy4vYmFzZUNvcHknKSwKKyAgICBrZXlzID0gcmVxdWlyZSgnLi4vb2JqZWN0L2tleXMnKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXJndW1lbnQganVnZ2xpbmcsCisgKiBtdWx0aXBsZSBzb3VyY2VzLCBhbmQgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LgorICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC4KKyAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuCisgKi8KK2Z1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHsKKyAgcmV0dXJuIHNvdXJjZSA9PSBudWxsCisgICAgPyBvYmplY3QKKyAgICA6IGJhc2VDb3B5KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ247CisKK30seyIuLi9vYmplY3Qva2V5cyI6MTQ5LCIuL2Jhc2VDb3B5Ijo2OX1dLDY3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vYmFzZU1hdGNoZXMnKSwKKyAgICBiYXNlTWF0Y2hlc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9iYXNlTWF0Y2hlc1Byb3BlcnR5JyksCisgICAgYmluZENhbGxiYWNrID0gcmVxdWlyZSgnLi9iaW5kQ2FsbGJhY2snKSwKKyAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL3V0aWxpdHkvaWRlbnRpdHknKSwKKyAgICBwcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL3V0aWxpdHkvcHJvcGVydHknKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jYWxsYmFja2Agd2hpY2ggc3VwcG9ydHMgc3BlY2lmeWluZyB0aGUKKyAqIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gW2Z1bmM9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYSBjYWxsYmFjay4KKyAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuCisgKiBAcGFyYW0ge251bWJlcn0gW2FyZ0NvdW50XSBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suCisgKi8KK2Z1bmN0aW9uIGJhc2VDYWxsYmFjayhmdW5jLCB0aGlzQXJnLCBhcmdDb3VudCkgeworICB2YXIgdHlwZSA9IHR5cGVvZiBmdW5jOworICBpZiAodHlwZSA9PSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIHRoaXNBcmcgPT09IHVuZGVmaW5lZAorICAgICAgPyBmdW5jCisgICAgICA6IGJpbmRDYWxsYmFjayhmdW5jLCB0aGlzQXJnLCBhcmdDb3VudCk7CisgIH0KKyAgaWYgKGZ1bmMgPT0gbnVsbCkgeworICAgIHJldHVybiBpZGVudGl0eTsKKyAgfQorICBpZiAodHlwZSA9PSAnb2JqZWN0JykgeworICAgIHJldHVybiBiYXNlTWF0Y2hlcyhmdW5jKTsKKyAgfQorICByZXR1cm4gdGhpc0FyZyA9PT0gdW5kZWZpbmVkCisgICAgPyBwcm9wZXJ0eShmdW5jKQorICAgIDogYmFzZU1hdGNoZXNQcm9wZXJ0eShmdW5jLCB0aGlzQXJnKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlQ2FsbGJhY2s7CisKK30seyIuLi91dGlsaXR5L2lkZW50aXR5IjoxNTQsIi4uL3V0aWxpdHkvcHJvcGVydHkiOjE1NiwiLi9iYXNlTWF0Y2hlcyI6ODQsIi4vYmFzZU1hdGNoZXNQcm9wZXJ0eSI6ODUsIi4vYmluZENhbGxiYWNrIjo5NH1dLDY4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBhcnJheUNvcHkgPSByZXF1aXJlKCcuL2FycmF5Q29weScpLAorICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vYXJyYXlFYWNoJyksCisgICAgYmFzZUFzc2lnbiA9IHJlcXVpcmUoJy4vYmFzZUFzc2lnbicpLAorICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL2Jhc2VGb3JPd24nKSwKKyAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vaW5pdENsb25lQXJyYXknKSwKKyAgICBpbml0Q2xvbmVCeVRhZyA9IHJlcXVpcmUoJy4vaW5pdENsb25lQnlUYWcnKSwKKyAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL2luaXRDbG9uZU9iamVjdCcpLAorICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9sYW5nL2lzQXJyYXknKSwKKyAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL2lzSG9zdE9iamVjdCcpLAorICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vbGFuZy9pc09iamVjdCcpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLAorICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJywKKyAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLAorICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsCisgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLAorICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLAorICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLAorICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLAorICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLAorICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLAorICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLAorICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLAorICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7CisKK3ZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsCisgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLAorICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJywKKyAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsCisgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsCisgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsCisgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsCisgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJywKKyAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLAorICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7CisKKy8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovCit2YXIgY2xvbmVhYmxlVGFncyA9IHt9OworY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID0KK2Nsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9CitjbG9uZWFibGVUYWdzW2RhdGVUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9CitjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9CitjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0KK2Nsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9CitjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPQorY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPQorY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTsKK2Nsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9CitjbG9uZWFibGVUYWdzW21hcFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPQorY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisgKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKQorICogb2YgdmFsdWVzLgorICovCit2YXIgb2JqVG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZzsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhcmd1bWVudCBqdWdnbGluZworICogYW5kIGB0aGlzYCBiaW5kaW5nIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLgorICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcgdmFsdWVzLgorICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC4KKyAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IGB2YWx1ZWAgYmVsb25ncyB0by4KKyAqIEBwYXJhbSB7QXJyYXl9IFtzdGFja0E9W11dIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIG9iamVjdHMuCisgKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tCPVtdXSBBc3NvY2lhdGVzIGNsb25lcyB3aXRoIHNvdXJjZSBjb3VudGVycGFydHMuCisgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLgorICovCitmdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGlzRGVlcCwgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrQSwgc3RhY2tCKSB7CisgIHZhciByZXN1bHQ7CisgIGlmIChjdXN0b21pemVyKSB7CisgICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QpIDogY3VzdG9taXplcih2YWx1ZSk7CisgIH0KKyAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkgeworICAgIHJldHVybiB2YWx1ZTsKKyAgfQorICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTsKKyAgaWYgKGlzQXJyKSB7CisgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpOworICAgIGlmICghaXNEZWVwKSB7CisgICAgICByZXR1cm4gYXJyYXlDb3B5KHZhbHVlLCByZXN1bHQpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICB2YXIgdGFnID0gb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSksCisgICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnOworCisgICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkgeworICAgICAgaWYgKGlzSG9zdE9iamVjdCh2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307CisgICAgICB9CisgICAgICByZXN1bHQgPSBpbml0Q2xvbmVPYmplY3QoaXNGdW5jID8ge30gOiB2YWx1ZSk7CisgICAgICBpZiAoIWlzRGVlcCkgeworICAgICAgICByZXR1cm4gYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIGNsb25lYWJsZVRhZ3NbdGFnXQorICAgICAgICA/IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCkKKyAgICAgICAgOiAob2JqZWN0ID8gdmFsdWUgOiB7fSk7CisgICAgfQorICB9CisgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuCisgIHN0YWNrQSB8fCAoc3RhY2tBID0gW10pOworICBzdGFja0IgfHwgKHN0YWNrQiA9IFtdKTsKKworICB2YXIgbGVuZ3RoID0gc3RhY2tBLmxlbmd0aDsKKyAgd2hpbGUgKGxlbmd0aC0tKSB7CisgICAgaWYgKHN0YWNrQVtsZW5ndGhdID09IHZhbHVlKSB7CisgICAgICByZXR1cm4gc3RhY2tCW2xlbmd0aF07CisgICAgfQorICB9CisgIC8vIEFkZCB0aGUgc291cmNlIHZhbHVlIHRvIHRoZSBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgYXNzb2NpYXRlIGl0IHdpdGggaXRzIGNsb25lLgorICBzdGFja0EucHVzaCh2YWx1ZSk7CisgIHN0YWNrQi5wdXNoKHJlc3VsdCk7CisKKyAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS4KKyAgKGlzQXJyID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikodmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHsKKyAgICByZXN1bHRba2V5XSA9IGJhc2VDbG9uZShzdWJWYWx1ZSwgaXNEZWVwLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFja0EsIHN0YWNrQik7CisgIH0pOworICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTsKKworfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4vYXJyYXlDb3B5Ijo2MiwiLi9hcnJheUVhY2giOjYzLCIuL2Jhc2VBc3NpZ24iOjY2LCIuL2Jhc2VGb3JPd24iOjc2LCIuL2luaXRDbG9uZUFycmF5IjoxMTYsIi4vaW5pdENsb25lQnlUYWciOjExNywiLi9pbml0Q2xvbmVPYmplY3QiOjExOCwiLi9pc0hvc3RPYmplY3QiOjEyMH1dLDY5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS4KKyAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBjb3B5LgorICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLgorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC4KKyAqLworZnVuY3Rpb24gYmFzZUNvcHkoc291cmNlLCBwcm9wcywgb2JqZWN0KSB7CisgIG9iamVjdCB8fCAob2JqZWN0ID0ge30pOworCisgIHZhciBpbmRleCA9IC0xLAorICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoOworCisgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7CisgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTsKKyAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldOworICB9CisgIHJldHVybiBvYmplY3Q7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUNvcHk7CisKK30se31dLDcwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2xhbmcvaXNPYmplY3QnKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nCisgKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZSBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS4KKyAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuCisgKi8KK3ZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkgeworICBmdW5jdGlvbiBvYmplY3QoKSB7fQorICByZXR1cm4gZnVuY3Rpb24ocHJvdG90eXBlKSB7CisgICAgaWYgKGlzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90b3R5cGU7CisgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDsKKyAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7CisgICAgfQorICAgIHJldHVybiByZXN1bHQgfHwge307CisgIH07Cit9KCkpOworCittb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7CisKK30seyIuLi9sYW5nL2lzT2JqZWN0IjoxNDR9XSw3MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vYmFzZUZvck93bicpLAorICAgIGNyZWF0ZUJhc2VFYWNoID0gcmVxdWlyZSgnLi9jcmVhdGVCYXNlRWFjaCcpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgY2FsbGJhY2sKKyAqIHNob3J0aGFuZHMgYW5kIGB0aGlzYCBiaW5kaW5nLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLgorICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi4KKyAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R8c3RyaW5nfSBSZXR1cm5zIGBjb2xsZWN0aW9uYC4KKyAqLwordmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUVhY2g7CisKK30seyIuL2Jhc2VGb3JPd24iOjc2LCIuL2NyZWF0ZUJhc2VFYWNoIjo5OH1dLDcyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZGAsIGBfLmZpbmRMYXN0YCwgYF8uZmluZEtleWAsIGFuZCBgXy5maW5kTGFzdEtleWAsCisgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrIHNob3J0aGFuZHMgYW5kIGB0aGlzYCBiaW5kaW5nLCB3aGljaCBpdGVyYXRlcworICogb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgdGhlIHByb3ZpZGVkIGBlYWNoRnVuY2AuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzZWFyY2guCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLgorICogQHBhcmFtIHtib29sZWFufSBbcmV0S2V5XSBTcGVjaWZ5IHJldHVybmluZyB0aGUga2V5IG9mIHRoZSBmb3VuZCBlbGVtZW50CisgKiAgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuCisgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZm91bmQgZWxlbWVudCBvciBpdHMga2V5LCBlbHNlIGB1bmRlZmluZWRgLgorICovCitmdW5jdGlvbiBiYXNlRmluZChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGVhY2hGdW5jLCByZXRLZXkpIHsKKyAgdmFyIHJlc3VsdDsKKyAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikgeworICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHsKKyAgICAgIHJlc3VsdCA9IHJldEtleSA/IGtleSA6IHZhbHVlOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUZpbmQ7CisKK30se31dLDczOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dAorICogc3VwcG9ydCBmb3IgY2FsbGJhY2sgc2hvcnRoYW5kcyBhbmQgYHRoaXNgIGJpbmRpbmcuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzZWFyY2guCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi4KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LgorICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC4KKyAqLworZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tUmlnaHQpIHsKKyAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCwKKyAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7CisKKyAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHsKKyAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkgeworICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgfQorICByZXR1cm4gLTE7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUZpbmRJbmRleDsKKworfSx7fV0sNzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUJhc2VGb3InKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvckluYCBhbmQgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzCisgKiBvdmVyIGBvYmplY3RgIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBpbnZva2luZyBgaXRlcmF0ZWVgIGZvcgorICogZWFjaCBwcm9wZXJ0eS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5CisgKiByZXR1cm5pbmcgYGZhbHNlYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLgorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC4KKyAqLwordmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUZvcjsKKworfSx7Ii4vY3JlYXRlQmFzZUZvciI6OTl9XSw3NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vYmFzZUZvcicpLAorICAgIGtleXNJbiA9IHJlcXVpcmUoJy4uL29iamVjdC9rZXlzSW4nKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBjYWxsYmFjaworICogc2hvcnRoYW5kcyBhbmQgYHRoaXNgIGJpbmRpbmcuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLgorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC4KKyAqLworZnVuY3Rpb24gYmFzZUZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHsKKyAgcmV0dXJuIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5c0luKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9ySW47CisKK30seyIuLi9vYmplY3Qva2V5c0luIjoxNTAsIi4vYmFzZUZvciI6NzR9XSw3NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vYmFzZUZvcicpLAorICAgIGtleXMgPSByZXF1aXJlKCcuLi9vYmplY3Qva2V5cycpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBjYWxsYmFjaworICogc2hvcnRoYW5kcyBhbmQgYHRoaXNgIGJpbmRpbmcuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLgorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC4KKyAqLworZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7CisgIHJldHVybiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3JPd247CisKK30seyIuLi9vYmplY3Qva2V5cyI6MTQ5LCIuL2Jhc2VGb3IiOjc0fV0sNzc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi90b09iamVjdCcpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RyaW5nIHBhdGhzCisgKiBhbmQgZGVmYXVsdCB2YWx1ZXMuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS4KKyAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBbcGF0aEtleV0gVGhlIGtleSByZXByZXNlbnRhdGlvbiBvZiBwYXRoLgorICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLgorICovCitmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCwgcGF0aEtleSkgeworICBpZiAob2JqZWN0ID09IG51bGwpIHsKKyAgICByZXR1cm47CisgIH0KKyAgb2JqZWN0ID0gdG9PYmplY3Qob2JqZWN0KTsKKyAgaWYgKHBhdGhLZXkgIT09IHVuZGVmaW5lZCAmJiBwYXRoS2V5IGluIG9iamVjdCkgeworICAgIHBhdGggPSBbcGF0aEtleV07CisgIH0KKyAgdmFyIGluZGV4ID0gMCwKKyAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoOworCisgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkgeworICAgIG9iamVjdCA9IHRvT2JqZWN0KG9iamVjdClbcGF0aFtpbmRleCsrXV07CisgIH0KKyAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkOworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7CisKK30seyIuL3RvT2JqZWN0IjoxMzV9XSw3ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaW5kZXhPZk5hTiA9IHJlcXVpcmUoJy4vaW5kZXhPZk5hTicpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYmluYXJ5IHNlYXJjaGVzLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2VhcmNoLgorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci4KKyAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLgorICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC4KKyAqLworZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHsKKyAgaWYgKHZhbHVlICE9PSB2YWx1ZSkgeworICAgIHJldHVybiBpbmRleE9mTmFOKGFycmF5LCBmcm9tSW5kZXgpOworICB9CisgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsCisgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7CisKKyAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHsKKyAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkgeworICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgfQorICByZXR1cm4gLTE7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7CisKK30seyIuL2luZGV4T2ZOYU4iOjExNX1dLDc5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL2Jhc2VJc0VxdWFsRGVlcCcpLAorICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vbGFuZy9pc09iamVjdCcpLAorICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7CisKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2l0aG91dCBzdXBwb3J0IGZvciBgdGhpc2AgYmluZGluZworICogYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpbmcgdmFsdWVzLgorICogQHBhcmFtIHtib29sZWFufSBbaXNMb29zZV0gU3BlY2lmeSBwZXJmb3JtaW5nIHBhcnRpYWwgY29tcGFyaXNvbnMuCisgKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tBXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgb2JqZWN0cy4KKyAqIEBwYXJhbSB7QXJyYXl9IFtzdGFja0JdIFRyYWNrcyB0cmF2ZXJzZWQgYG90aGVyYCBvYmplY3RzLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBjdXN0b21pemVyLCBpc0xvb3NlLCBzdGFja0EsIHN0YWNrQikgeworICBpZiAodmFsdWUgPT09IG90aGVyKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0KHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHsKKyAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjsKKyAgfQorICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYmFzZUlzRXF1YWwsIGN1c3RvbWl6ZXIsIGlzTG9vc2UsIHN0YWNrQSwgc3RhY2tCKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDsKKworfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi9iYXNlSXNFcXVhbERlZXAiOjgwLCIuL2lzT2JqZWN0TGlrZSI6MTI2fV0sODA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9lcXVhbEFycmF5cycpLAorICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL2VxdWFsQnlUYWcnKSwKKyAgICBlcXVhbE9iamVjdHMgPSByZXF1aXJlKCcuL2VxdWFsT2JqZWN0cycpLAorICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9sYW5nL2lzQXJyYXknKSwKKyAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL2lzSG9zdE9iamVjdCcpLAorICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNUeXBlZEFycmF5Jyk7CisKKy8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi8KK3ZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsCisgICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLAorICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTsKKworLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovCit2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTsKKworLyoqCisgKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKQorICogb2YgdmFsdWVzLgorICovCit2YXIgb2JqVG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZzsKKworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zCisgKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyCisgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpbmcgb2JqZWN0cy4KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzTG9vc2VdIFNwZWNpZnkgcGVyZm9ybWluZyBwYXJ0aWFsIGNvbXBhcmlzb25zLgorICogQHBhcmFtIHtBcnJheX0gW3N0YWNrQT1bXV0gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIG9iamVjdHMuCisgKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tCPVtdXSBUcmFja3MgdHJhdmVyc2VkIGBvdGhlcmAgb2JqZWN0cy4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLgorICovCitmdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgZXF1YWxGdW5jLCBjdXN0b21pemVyLCBpc0xvb3NlLCBzdGFja0EsIHN0YWNrQikgeworICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksCisgICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLAorICAgICAgb2JqVGFnID0gYXJyYXlUYWcsCisgICAgICBvdGhUYWcgPSBhcnJheVRhZzsKKworICBpZiAoIW9iaklzQXJyKSB7CisgICAgb2JqVGFnID0gb2JqVG9TdHJpbmcuY2FsbChvYmplY3QpOworICAgIGlmIChvYmpUYWcgPT0gYXJnc1RhZykgeworICAgICAgb2JqVGFnID0gb2JqZWN0VGFnOworICAgIH0gZWxzZSBpZiAob2JqVGFnICE9IG9iamVjdFRhZykgeworICAgICAgb2JqSXNBcnIgPSBpc1R5cGVkQXJyYXkob2JqZWN0KTsKKyAgICB9CisgIH0KKyAgaWYgKCFvdGhJc0FycikgeworICAgIG90aFRhZyA9IG9ialRvU3RyaW5nLmNhbGwob3RoZXIpOworICAgIGlmIChvdGhUYWcgPT0gYXJnc1RhZykgeworICAgICAgb3RoVGFnID0gb2JqZWN0VGFnOworICAgIH0gZWxzZSBpZiAob3RoVGFnICE9IG9iamVjdFRhZykgeworICAgICAgb3RoSXNBcnIgPSBpc1R5cGVkQXJyYXkob3RoZXIpOworICAgIH0KKyAgfQorICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnICYmICFpc0hvc3RPYmplY3Qob2JqZWN0KSwKKyAgICAgIG90aElzT2JqID0gb3RoVGFnID09IG9iamVjdFRhZyAmJiAhaXNIb3N0T2JqZWN0KG90aGVyKSwKKyAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7CisKKyAgaWYgKGlzU2FtZVRhZyAmJiAhKG9iaklzQXJyIHx8IG9iaklzT2JqKSkgeworICAgIHJldHVybiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZyk7CisgIH0KKyAgaWYgKCFpc0xvb3NlKSB7CisgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSwKKyAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7CisKKyAgICBpZiAob2JqSXNXcmFwcGVkIHx8IG90aElzV3JhcHBlZCkgeworICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCwgb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyLCBjdXN0b21pemVyLCBpc0xvb3NlLCBzdGFja0EsIHN0YWNrQik7CisgICAgfQorICB9CisgIGlmICghaXNTYW1lVGFnKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC4KKyAgLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZGV0ZWN0aW5nIGNpcmN1bGFyIHJlZmVyZW5jZXMgc2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jSk8uCisgIHN0YWNrQSB8fCAoc3RhY2tBID0gW10pOworICBzdGFja0IgfHwgKHN0YWNrQiA9IFtdKTsKKworICB2YXIgbGVuZ3RoID0gc3RhY2tBLmxlbmd0aDsKKyAgd2hpbGUgKGxlbmd0aC0tKSB7CisgICAgaWYgKHN0YWNrQVtsZW5ndGhdID09IG9iamVjdCkgeworICAgICAgcmV0dXJuIHN0YWNrQltsZW5ndGhdID09IG90aGVyOworICAgIH0KKyAgfQorICAvLyBBZGQgYG9iamVjdGAgYW5kIGBvdGhlcmAgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLgorICBzdGFja0EucHVzaChvYmplY3QpOworICBzdGFja0IucHVzaChvdGhlcik7CisKKyAgdmFyIHJlc3VsdCA9IChvYmpJc0FyciA/IGVxdWFsQXJyYXlzIDogZXF1YWxPYmplY3RzKShvYmplY3QsIG90aGVyLCBlcXVhbEZ1bmMsIGN1c3RvbWl6ZXIsIGlzTG9vc2UsIHN0YWNrQSwgc3RhY2tCKTsKKworICBzdGFja0EucG9wKCk7CisgIHN0YWNrQi5wb3AoKTsKKworICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDsKKworfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzVHlwZWRBcnJheSI6MTQ3LCIuL2VxdWFsQXJyYXlzIjoxMDcsIi4vZXF1YWxCeVRhZyI6MTA4LCIuL2VxdWFsT2JqZWN0cyI6MTA5LCIuL2lzSG9zdE9iamVjdCI6MTIwfV0sODE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9iYXNlSXNFcXVhbCcpLAorICAgIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi90b09iamVjdCcpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgY2FsbGJhY2sKKyAqIHNob3J0aGFuZHMgYW5kIGB0aGlzYCBiaW5kaW5nLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC4KKyAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVyeSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmluZyBvYmplY3RzLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHsKKyAgdmFyIGluZGV4ID0gbWF0Y2hEYXRhLmxlbmd0aCwKKyAgICAgIGxlbmd0aCA9IGluZGV4LAorICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7CisKKyAgaWYgKG9iamVjdCA9PSBudWxsKSB7CisgICAgcmV0dXJuICFsZW5ndGg7CisgIH0KKyAgb2JqZWN0ID0gdG9PYmplY3Qob2JqZWN0KTsKKyAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07CisgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkKKyAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXQorICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdCkKKyAgICAgICAgKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7CisgICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07CisgICAgdmFyIGtleSA9IGRhdGFbMF0sCisgICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sCisgICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTsKKworICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkgeworICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSkgOiB1bmRlZmluZWQ7CisgICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgY3VzdG9taXplciwgdHJ1ZSkgOiByZXN1bHQpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7CisKK30seyIuL2Jhc2VJc0VxdWFsIjo3OSwiLi90b09iamVjdCI6MTM1fV0sODI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGFsbCBjaGFpbmluZyB3cmFwcGVycyBpbmhlcml0IGZyb20uCisgKgorICogQHByaXZhdGUKKyAqLworZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHsKKyAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC4KK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlTG9kYXNoOworCit9LHt9XSw4MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL2Jhc2VFYWNoJyksCisgICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7CisKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGNhbGxiYWNrIHNob3J0aGFuZHMKKyAqIGFuZCBgdGhpc2AgYmluZGluZy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuCisgKi8KK2Z1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHsKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdOworCisgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHsKKyAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTsKKyAgfSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZU1hcDsKKworfSx7Ii4vYmFzZUVhY2giOjcxLCIuL2lzQXJyYXlMaWtlIjoxMTl9XSw4NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL2Jhc2VJc01hdGNoJyksCisgICAgZ2V0TWF0Y2hEYXRhID0gcmVxdWlyZSgnLi9nZXRNYXRjaERhdGEnKSwKKyAgICB0b09iamVjdCA9IHJlcXVpcmUoJy4vdG9PYmplY3QnKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2VzIG5vdCBjbG9uZSBgc291cmNlYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBiYXNlTWF0Y2hlcyhzb3VyY2UpIHsKKyAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpOworICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkgeworICAgIHZhciBrZXkgPSBtYXRjaERhdGFbMF1bMF0sCisgICAgICAgIHZhbHVlID0gbWF0Y2hEYXRhWzBdWzFdOworCisgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIG9iamVjdCA9IHRvT2JqZWN0KG9iamVjdCk7CisgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHZhbHVlICYmICh2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gb2JqZWN0KSk7CisgICAgfTsKKyAgfQorICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgcmV0dXJuIGJhc2VJc01hdGNoKG9iamVjdCwgbWF0Y2hEYXRhKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlczsKKworfSx7Ii4vYmFzZUlzTWF0Y2giOjgxLCIuL2dldE1hdGNoRGF0YSI6MTEzLCIuL3RvT2JqZWN0IjoxMzV9XSw4NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vYmFzZUdldCcpLAorICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9iYXNlSXNFcXVhbCcpLAorICAgIGJhc2VTbGljZSA9IHJlcXVpcmUoJy4vYmFzZVNsaWNlJyksCisgICAgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpLAorICAgIGlzS2V5ID0gcmVxdWlyZSgnLi9pc0tleScpLAorICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vaXNTdHJpY3RDb21wYXJhYmxlJyksCisgICAgbGFzdCA9IHJlcXVpcmUoJy4uL2FycmF5L2xhc3QnKSwKKyAgICB0b09iamVjdCA9IHJlcXVpcmUoJy4vdG9PYmplY3QnKSwKKyAgICB0b1BhdGggPSByZXF1aXJlKCcuL3RvUGF0aCcpOworCisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lcyBub3QgY2xvbmUgYHNyY1ZhbHVlYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC4KKyAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkgeworICB2YXIgaXNBcnIgPSBpc0FycmF5KHBhdGgpLAorICAgICAgaXNDb21tb24gPSBpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpLAorICAgICAgcGF0aEtleSA9IChwYXRoICsgJycpOworCisgIHBhdGggPSB0b1BhdGgocGF0aCk7CisgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHsKKyAgICBpZiAob2JqZWN0ID09IG51bGwpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgdmFyIGtleSA9IHBhdGhLZXk7CisgICAgb2JqZWN0ID0gdG9PYmplY3Qob2JqZWN0KTsKKyAgICBpZiAoKGlzQXJyIHx8ICFpc0NvbW1vbikgJiYgIShrZXkgaW4gb2JqZWN0KSkgeworICAgICAgb2JqZWN0ID0gcGF0aC5sZW5ndGggPT0gMSA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTsKKyAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBrZXkgPSBsYXN0KHBhdGgpOworICAgICAgb2JqZWN0ID0gdG9PYmplY3Qob2JqZWN0KTsKKyAgICB9CisgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZQorICAgICAgPyAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIG9iamVjdCkpCisgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmplY3Rba2V5XSwgdW5kZWZpbmVkLCB0cnVlKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5OworCit9LHsiLi4vYXJyYXkvbGFzdCI6NTAsIi4uL2xhbmcvaXNBcnJheSI6MTQwLCIuL2Jhc2VHZXQiOjc3LCIuL2Jhc2VJc0VxdWFsIjo3OSwiLi9iYXNlU2xpY2UiOjg5LCIuL2lzS2V5IjoxMjMsIi4vaXNTdHJpY3RDb21wYXJhYmxlIjoxMjcsIi4vdG9PYmplY3QiOjEzNSwiLi90b1BhdGgiOjEzNn1dLDg2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vdG9PYmplY3QnKTsKKworLyoqCisgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7CisgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHsKKyAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiB0b09iamVjdChvYmplY3QpW2tleV07CisgIH07Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5OworCit9LHsiLi90b09iamVjdCI6MTM1fV0sODc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL2Jhc2VHZXQnKSwKKyAgICB0b1BhdGggPSByZXF1aXJlKCcuL3RvUGF0aCcpOworCisvKioKKyAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LgorICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uCisgKi8KK2Z1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkgeworICB2YXIgcGF0aEtleSA9IChwYXRoICsgJycpOworICBwYXRoID0gdG9QYXRoKHBhdGgpOworICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoLCBwYXRoS2V5KTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwOworCit9LHsiLi9iYXNlR2V0Ijo3NywiLi90b1BhdGgiOjEzNn1dLDg4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL3V0aWxpdHkvaWRlbnRpdHknKSwKKyAgICBtZXRhTWFwID0gcmVxdWlyZSgnLi9tZXRhTWFwJyk7CisKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldERhdGFgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3AgZGV0ZWN0aW9uLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC4KKyAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLgorICovCit2YXIgYmFzZVNldERhdGEgPSAhbWV0YU1hcCA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgZGF0YSkgeworICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTsKKyAgcmV0dXJuIGZ1bmM7Cit9OworCittb2R1bGUuZXhwb3J0cyA9IGJhc2VTZXREYXRhOworCit9LHsiLi4vdXRpbGl0eS9pZGVudGl0eSI6MTU0LCIuL21ldGFNYXAiOjEyOX1dLDg5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLgorICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uCisgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuCisgKi8KK2Z1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkgeworICB2YXIgaW5kZXggPSAtMSwKKyAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKworICBzdGFydCA9IHN0YXJ0ID09IG51bGwgPyAwIDogKCtzdGFydCB8fCAwKTsKKyAgaWYgKHN0YXJ0IDwgMCkgeworICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7CisgIH0KKyAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiAoK2VuZCB8fCAwKTsKKyAgaWYgKGVuZCA8IDApIHsKKyAgICBlbmQgKz0gbGVuZ3RoOworICB9CisgIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTsKKyAgc3RhcnQgPj4+PSAwOworCisgIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpOworICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTsKKworfSx7fV0sOTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGlmIGl0J3Mgbm90IG9uZS4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkCisgKiBmb3IgYG51bGxgIG9yIGB1bmRlZmluZWRgIHZhbHVlcy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy4KKyAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy4KKyAqLworZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7CisgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiAodmFsdWUgKyAnJyk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gYmFzZVRvU3RyaW5nOworCit9LHt9XSw5MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuCisgKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMKKyAqIG9mIGBwcm9wc2AuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS4KKyAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci4KKyAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy4KKyAqLworZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7CisgIHZhciBpbmRleCA9IC0xLAorICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLAorICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTsKKworICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgIHJlc3VsdFtpbmRleF0gPSBvYmplY3RbcHJvcHNbaW5kZXhdXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7CisKK30se31dLDkyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiaW5hcnlJbmRleEJ5ID0gcmVxdWlyZSgnLi9iaW5hcnlJbmRleEJ5JyksCisgICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuLi91dGlsaXR5L2lkZW50aXR5Jyk7CisKKy8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovCit2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsCisgICAgSEFMRl9NQVhfQVJSQVlfTEVOR1RIID0gTUFYX0FSUkFZX0xFTkdUSCA+Pj4gMTsKKworLyoqCisgKiBQZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggb2YgYGFycmF5YCB0byBkZXRlcm1pbmUgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAKKyAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC4KKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLgorICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LgorICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAqICBpbnRvIGBhcnJheWAuCisgKi8KK2Z1bmN0aW9uIGJpbmFyeUluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkgeworICB2YXIgbG93ID0gMCwKKyAgICAgIGhpZ2ggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IGxvdzsKKworICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09PSB2YWx1ZSAmJiBoaWdoIDw9IEhBTEZfTUFYX0FSUkFZX0xFTkdUSCkgeworICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7CisgICAgICB2YXIgbWlkID0gKGxvdyArIGhpZ2gpID4+PiAxLAorICAgICAgICAgIGNvbXB1dGVkID0gYXJyYXlbbWlkXTsKKworICAgICAgaWYgKChyZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKSkgJiYgY29tcHV0ZWQgIT09IG51bGwpIHsKKyAgICAgICAgbG93ID0gbWlkICsgMTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGhpZ2ggPSBtaWQ7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBoaWdoOworICB9CisgIHJldHVybiBiaW5hcnlJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaWRlbnRpdHksIHJldEhpZ2hlc3QpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGJpbmFyeUluZGV4OworCit9LHsiLi4vdXRpbGl0eS9pZGVudGl0eSI6MTU0LCIuL2JpbmFyeUluZGV4QnkiOjkzfV0sOTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsCisgICAgbmF0aXZlTWluID0gTWF0aC5taW47CisKKy8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovCit2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsCisgICAgTUFYX0FSUkFZX0lOREVYID0gTUFYX0FSUkFZX0xFTkdUSCAtIDE7CisKKy8qKgorICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiaW5hcnlJbmRleGAgZXhjZXB0IHRoYXQgaXQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvcgorICogYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpciBzb3J0IHJhbmtpbmcuIFRoZQorICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LgorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLgorICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LgorICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAqICBpbnRvIGBhcnJheWAuCisgKi8KK2Z1bmN0aW9uIGJpbmFyeUluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSwgcmV0SGlnaGVzdCkgeworICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTsKKworICB2YXIgbG93ID0gMCwKKyAgICAgIGhpZ2ggPSBhcnJheSA/IGFycmF5Lmxlbmd0aCA6IDAsCisgICAgICB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSwKKyAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLAorICAgICAgdmFsSXNVbmRlZiA9IHZhbHVlID09PSB1bmRlZmluZWQ7CisKKyAgd2hpbGUgKGxvdyA8IGhpZ2gpIHsKKyAgICB2YXIgbWlkID0gbmF0aXZlRmxvb3IoKGxvdyArIGhpZ2gpIC8gMiksCisgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksCisgICAgICAgIGlzRGVmID0gY29tcHV0ZWQgIT09IHVuZGVmaW5lZCwKKyAgICAgICAgaXNSZWZsZXhpdmUgPSBjb21wdXRlZCA9PT0gY29tcHV0ZWQ7CisKKyAgICBpZiAodmFsSXNOYU4pIHsKKyAgICAgIHZhciBzZXRMb3cgPSBpc1JlZmxleGl2ZSB8fCByZXRIaWdoZXN0OworICAgIH0gZWxzZSBpZiAodmFsSXNOdWxsKSB7CisgICAgICBzZXRMb3cgPSBpc1JlZmxleGl2ZSAmJiBpc0RlZiAmJiAocmV0SGlnaGVzdCB8fCBjb21wdXRlZCAhPSBudWxsKTsKKyAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWYpIHsKKyAgICAgIHNldExvdyA9IGlzUmVmbGV4aXZlICYmIChyZXRIaWdoZXN0IHx8IGlzRGVmKTsKKyAgICB9IGVsc2UgaWYgKGNvbXB1dGVkID09IG51bGwpIHsKKyAgICAgIHNldExvdyA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICBzZXRMb3cgPSByZXRIaWdoZXN0ID8gKGNvbXB1dGVkIDw9IHZhbHVlKSA6IChjb21wdXRlZCA8IHZhbHVlKTsKKyAgICB9CisgICAgaWYgKHNldExvdykgeworICAgICAgbG93ID0gbWlkICsgMTsKKyAgICB9IGVsc2UgeworICAgICAgaGlnaCA9IG1pZDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG5hdGl2ZU1pbihoaWdoLCBNQVhfQVJSQVlfSU5ERVgpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGJpbmFyeUluZGV4Qnk7CisKK30se31dLDk0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4uL3V0aWxpdHkvaWRlbnRpdHknKTsKKworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VDYWxsYmFja2Agd2hpY2ggb25seSBzdXBwb3J0cyBgdGhpc2AgYmluZGluZworICogYW5kIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcHJvdmlkZSB0byBgZnVuY2AuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGJpbmQuCisgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC4KKyAqIEBwYXJhbSB7bnVtYmVyfSBbYXJnQ291bnRdIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLgorICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay4KKyAqLworZnVuY3Rpb24gYmluZENhbGxiYWNrKGZ1bmMsIHRoaXNBcmcsIGFyZ0NvdW50KSB7CisgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7CisgICAgcmV0dXJuIGlkZW50aXR5OworICB9CisgIGlmICh0aGlzQXJnID09PSB1bmRlZmluZWQpIHsKKyAgICByZXR1cm4gZnVuYzsKKyAgfQorICBzd2l0Y2ggKGFyZ0NvdW50KSB7CisgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgIHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgdmFsdWUpOworICAgIH07CisgICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7CisgICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7CisgICAgfTsKKyAgICBjYXNlIDQ6IHJldHVybiBmdW5jdGlvbihhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7CisgICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pOworICAgIH07CisgICAgY2FzZSA1OiByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyLCBrZXksIG9iamVjdCwgc291cmNlKSB7CisgICAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIHZhbHVlLCBvdGhlciwga2V5LCBvYmplY3QsIHNvdXJjZSk7CisgICAgfTsKKyAgfQorICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBiaW5kQ2FsbGJhY2s7CisKK30seyIuLi91dGlsaXR5L2lkZW50aXR5IjoxNTR9XSw5NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7CisvKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIEFycmF5QnVmZmVyID0gZ2xvYmFsLkFycmF5QnVmZmVyLAorICAgIFVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheTsKKworLyoqCisgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGdpdmVuIGFycmF5IGJ1ZmZlci4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuCisgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuCisgKi8KK2Z1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1ZmZlcikgeworICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlci5ieXRlTGVuZ3RoKSwKKyAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheShyZXN1bHQpOworCisgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlcikpOworICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlckNsb25lOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKKworfSx7fV0sOTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVNYXggPSBNYXRoLm1heDsKKworLyoqCisgKiBDcmVhdGVzIGFuIGFycmF5IHRoYXQgaXMgdGhlIGNvbXBvc2l0aW9uIG9mIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cywKKyAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy4KKyAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC4KKyAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy4KKyAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy4KKyAqLworZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMpIHsKKyAgdmFyIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCwKKyAgICAgIGFyZ3NJbmRleCA9IC0xLAorICAgICAgYXJnc0xlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLAorICAgICAgbGVmdEluZGV4ID0gLTEsCisgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLAorICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpOworCisgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHsKKyAgICByZXN1bHRbbGVmdEluZGV4XSA9IHBhcnRpYWxzW2xlZnRJbmRleF07CisgIH0KKyAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkgeworICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdOworICB9CisgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHsKKyAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjb21wb3NlQXJnczsKKworfSx7fV0sOTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVNYXggPSBNYXRoLm1heDsKKworLyoqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvbXBvc2VBcmdzYCBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnRzIGNvbXBvc2l0aW9uCisgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGFyZ3MgVGhlIHByb3ZpZGVkIGFyZ3VtZW50cy4KKyAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLgorICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLgorICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLgorICovCitmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzKSB7CisgIHZhciBob2xkZXJzSW5kZXggPSAtMSwKKyAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCwKKyAgICAgIGFyZ3NJbmRleCA9IC0xLAorICAgICAgYXJnc0xlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIGhvbGRlcnNMZW5ndGgsIDApLAorICAgICAgcmlnaHRJbmRleCA9IC0xLAorICAgICAgcmlnaHRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsCisgICAgICByZXN1bHQgPSBBcnJheShhcmdzTGVuZ3RoICsgcmlnaHRMZW5ndGgpOworCisgIHdoaWxlICgrK2FyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHsKKyAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTsKKyAgfQorICB2YXIgb2Zmc2V0ID0gYXJnc0luZGV4OworICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHsKKyAgICByZXN1bHRbb2Zmc2V0ICsgcmlnaHRJbmRleF0gPSBwYXJ0aWFsc1tyaWdodEluZGV4XTsKKyAgfQorICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7CisgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCittb2R1bGUuZXhwb3J0cyA9IGNvbXBvc2VBcmdzUmlnaHQ7CisKK30se31dLDk4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBnZXRMZW5ndGggPSByZXF1aXJlKCcuL2dldExlbmd0aCcpLAorICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLAorICAgIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi90b09iamVjdCcpOworCisvKioKKyAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uCisgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7CisgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24gPyBnZXRMZW5ndGgoY29sbGVjdGlvbikgOiAwOworICAgIGlmICghaXNMZW5ndGgobGVuZ3RoKSkgeworICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTsKKyAgICB9CisgICAgdmFyIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTEsCisgICAgICAgIGl0ZXJhYmxlID0gdG9PYmplY3QoY29sbGVjdGlvbik7CisKKyAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkgeworICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb2xsZWN0aW9uOworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VFYWNoOworCit9LHsiLi9nZXRMZW5ndGgiOjExMiwiLi9pc0xlbmd0aCI6MTI1LCIuL3RvT2JqZWN0IjoxMzV9XSw5OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL3RvT2JqZWN0Jyk7CisKKy8qKgorICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIGBfLmZvckluYCBvciBgXy5mb3JJblJpZ2h0YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkgeworICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHsKKyAgICB2YXIgaXRlcmFibGUgPSB0b09iamVjdChvYmplY3QpLAorICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksCisgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCwKKyAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMTsKKworICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7CisgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdOworICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9iamVjdDsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yOworCit9LHsiLi90b09iamVjdCI6MTM1fV0sMTAwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKK3ZhciBjcmVhdGVDdG9yV3JhcHBlciA9IHJlcXVpcmUoJy4vY3JlYXRlQ3RvcldyYXBwZXInKTsKKworLyoqCisgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgYW5kIGludm9rZXMgaXQgd2l0aCB0aGUgYHRoaXNgCisgKiBiaW5kaW5nIG9mIGB0aGlzQXJnYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC4KKyAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gY3JlYXRlQmluZFdyYXBwZXIoZnVuYywgdGhpc0FyZykgeworICB2YXIgQ3RvciA9IGNyZWF0ZUN0b3JXcmFwcGVyKGZ1bmMpOworCisgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7CisgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gZ2xvYmFsICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jOworICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmd1bWVudHMpOworICB9CisgIHJldHVybiB3cmFwcGVyOworfQorCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJpbmRXcmFwcGVyOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKKworfSx7Ii4vY3JlYXRlQ3RvcldyYXBwZXIiOjEwMX1dLDEwMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUNyZWF0ZSA9IHJlcXVpcmUoJy4vYmFzZUNyZWF0ZScpLAorICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vbGFuZy9pc09iamVjdCcpOworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mCisgKiB3aGV0aGVyIGl0IHdhcyBpbnZva2VkIGFzIHBhcnQgb2YgYSBgbmV3YCBleHByZXNzaW9uIG9yIGJ5IGBjYWxsYCBvciBgYXBwbHlgLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDdG9yIFRoZSBjb25zdHJ1Y3RvciB0byB3cmFwLgorICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gY3JlYXRlQ3RvcldyYXBwZXIoQ3RvcikgeworICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgLy8gVXNlIGEgYHN3aXRjaGAgc3RhdGVtZW50IHRvIHdvcmsgd2l0aCBjbGFzcyBjb25zdHJ1Y3RvcnMuCisgICAgLy8gU2VlIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0CisgICAgLy8gZm9yIG1vcmUgZGV0YWlscy4KKyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsKKyAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7CisgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQ3RvcjsKKyAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0pOworICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7CisgICAgICBjYXNlIDM6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTsKKyAgICAgIGNhc2UgNDogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pOworICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7CisgICAgICBjYXNlIDY6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdKTsKKyAgICAgIGNhc2UgNzogcmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sIGFyZ3NbNF0sIGFyZ3NbNV0sIGFyZ3NbNl0pOworICAgIH0KKyAgICB2YXIgdGhpc0JpbmRpbmcgPSBiYXNlQ3JlYXRlKEN0b3IucHJvdG90eXBlKSwKKyAgICAgICAgcmVzdWx0ID0gQ3Rvci5hcHBseSh0aGlzQmluZGluZywgYXJncyk7CisKKyAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci4KKyAgICAvLyBTZWUgaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTMuMi4yIGZvciBtb3JlIGRldGFpbHMuCisgICAgcmV0dXJuIGlzT2JqZWN0KHJlc3VsdCkgPyByZXN1bHQgOiB0aGlzQmluZGluZzsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVDdG9yV3JhcHBlcjsKKworfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi9iYXNlQ3JlYXRlIjo3MH1dLDEwMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZUNhbGxiYWNrID0gcmVxdWlyZSgnLi9iYXNlQ2FsbGJhY2snKSwKKyAgICBiYXNlRmluZCA9IHJlcXVpcmUoJy4vYmFzZUZpbmQnKSwKKyAgICBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9iYXNlRmluZEluZGV4JyksCisgICAgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpOworCisvKioKKyAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLgorICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmaW5kIGZ1bmN0aW9uLgorICovCitmdW5jdGlvbiBjcmVhdGVGaW5kKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHsKKyAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgdGhpc0FyZykgeworICAgIHByZWRpY2F0ZSA9IGJhc2VDYWxsYmFjayhwcmVkaWNhdGUsIHRoaXNBcmcsIDMpOworICAgIGlmIChpc0FycmF5KGNvbGxlY3Rpb24pKSB7CisgICAgICB2YXIgaW5kZXggPSBiYXNlRmluZEluZGV4KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbVJpZ2h0KTsKKyAgICAgIHJldHVybiBpbmRleCA+IC0xID8gY29sbGVjdGlvbltpbmRleF0gOiB1bmRlZmluZWQ7CisgICAgfQorICAgIHJldHVybiBiYXNlRmluZChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGVhY2hGdW5jKTsKKyAgfTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVGaW5kOworCit9LHsiLi4vbGFuZy9pc0FycmF5IjoxNDAsIi4vYmFzZUNhbGxiYWNrIjo2NywiLi9iYXNlRmluZCI6NzIsIi4vYmFzZUZpbmRJbmRleCI6NzN9XSwxMDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJpbmRDYWxsYmFjayA9IHJlcXVpcmUoJy4vYmluZENhbGxiYWNrJyksCisgICAgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpOworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmb3IgYF8uZm9yRWFjaGAgb3IgYF8uZm9yRWFjaFJpZ2h0YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gYXJyYXlGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYW4gYXJyYXkuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGVhY2ggZnVuY3Rpb24uCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZUZvckVhY2goYXJyYXlGdW5jLCBlYWNoRnVuYykgeworICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUsIHRoaXNBcmcpIHsKKyAgICByZXR1cm4gKHR5cGVvZiBpdGVyYXRlZSA9PSAnZnVuY3Rpb24nICYmIHRoaXNBcmcgPT09IHVuZGVmaW5lZCAmJiBpc0FycmF5KGNvbGxlY3Rpb24pKQorICAgICAgPyBhcnJheUZ1bmMoY29sbGVjdGlvbiwgaXRlcmF0ZWUpCisgICAgICA6IGVhY2hGdW5jKGNvbGxlY3Rpb24sIGJpbmRDYWxsYmFjayhpdGVyYXRlZSwgdGhpc0FyZywgMykpOworICB9OworfQorCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZvckVhY2g7CisKK30seyIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi9iaW5kQ2FsbGJhY2siOjk0fV0sMTA0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKK3ZhciBhcnJheUNvcHkgPSByZXF1aXJlKCcuL2FycmF5Q29weScpLAorICAgIGNvbXBvc2VBcmdzID0gcmVxdWlyZSgnLi9jb21wb3NlQXJncycpLAorICAgIGNvbXBvc2VBcmdzUmlnaHQgPSByZXF1aXJlKCcuL2NvbXBvc2VBcmdzUmlnaHQnKSwKKyAgICBjcmVhdGVDdG9yV3JhcHBlciA9IHJlcXVpcmUoJy4vY3JlYXRlQ3RvcldyYXBwZXInKSwKKyAgICBpc0xhemlhYmxlID0gcmVxdWlyZSgnLi9pc0xhemlhYmxlJyksCisgICAgcmVvcmRlciA9IHJlcXVpcmUoJy4vcmVvcmRlcicpLAorICAgIHJlcGxhY2VIb2xkZXJzID0gcmVxdWlyZSgnLi9yZXBsYWNlSG9sZGVycycpLAorICAgIHNldERhdGEgPSByZXF1aXJlKCcuL3NldERhdGEnKTsKKworLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3Igd3JhcHBlciBtZXRhZGF0YS4gKi8KK3ZhciBCSU5EX0ZMQUcgPSAxLAorICAgIEJJTkRfS0VZX0ZMQUcgPSAyLAorICAgIENVUlJZX0JPVU5EX0ZMQUcgPSA0LAorICAgIENVUlJZX0ZMQUcgPSA4LAorICAgIENVUlJZX1JJR0hUX0ZMQUcgPSAxNiwKKyAgICBQQVJUSUFMX0ZMQUcgPSAzMiwKKyAgICBQQVJUSUFMX1JJR0hUX0ZMQUcgPSA2NCwKKyAgICBBUllfRkxBRyA9IDEyODsKKworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVNYXggPSBNYXRoLm1heDsKKworLyoqCisgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgYW5kIGludm9rZXMgaXQgd2l0aCBvcHRpb25hbCBgdGhpc2AKKyAqIGJpbmRpbmcgb2YsIHBhcnRpYWwgYXBwbGljYXRpb24sIGFuZCBjdXJyeWluZy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHJlZmVyZW5jZS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIG9mIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBwZXJgIGZvciBtb3JlIGRldGFpbHMuCisgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLgorICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIG5ldyBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLgorICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzUmlnaHRdIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBuZXcgZnVuY3Rpb24uCisgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc1JpZ2h0XSBUaGUgYHBhcnRpYWxzUmlnaHRgIHBsYWNlaG9sZGVyIGluZGV4ZXMuCisgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uCisgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuCisgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLgorICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gY3JlYXRlSHlicmlkV3JhcHBlcihmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHkpIHsKKyAgdmFyIGlzQXJ5ID0gYml0bWFzayAmIEFSWV9GTEFHLAorICAgICAgaXNCaW5kID0gYml0bWFzayAmIEJJTkRfRkxBRywKKyAgICAgIGlzQmluZEtleSA9IGJpdG1hc2sgJiBCSU5EX0tFWV9GTEFHLAorICAgICAgaXNDdXJyeSA9IGJpdG1hc2sgJiBDVVJSWV9GTEFHLAorICAgICAgaXNDdXJyeUJvdW5kID0gYml0bWFzayAmIENVUlJZX0JPVU5EX0ZMQUcsCisgICAgICBpc0N1cnJ5UmlnaHQgPSBiaXRtYXNrICYgQ1VSUllfUklHSFRfRkxBRywKKyAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yV3JhcHBlcihmdW5jKTsKKworICBmdW5jdGlvbiB3cmFwcGVyKCkgeworICAgIC8vIEF2b2lkIGBhcmd1bWVudHNgIG9iamVjdCB1c2UgZGlzcXVhbGlmeWluZyBvcHRpbWl6YXRpb25zIGJ5CisgICAgLy8gY29udmVydGluZyBpdCB0byBhbiBhcnJheSBiZWZvcmUgcHJvdmlkaW5nIGl0IHRvIG90aGVyIGZ1bmN0aW9ucy4KKyAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAgICAgaW5kZXggPSBsZW5ndGgsCisgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpOworCisgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTsKKyAgICB9CisgICAgaWYgKHBhcnRpYWxzKSB7CisgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMpOworICAgIH0KKyAgICBpZiAocGFydGlhbHNSaWdodCkgeworICAgICAgYXJncyA9IGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0KTsKKyAgICB9CisgICAgaWYgKGlzQ3VycnkgfHwgaXNDdXJyeVJpZ2h0KSB7CisgICAgICB2YXIgcGxhY2Vob2xkZXIgPSB3cmFwcGVyLnBsYWNlaG9sZGVyLAorICAgICAgICAgIGFyZ3NIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpOworCisgICAgICBsZW5ndGggLT0gYXJnc0hvbGRlcnMubGVuZ3RoOworICAgICAgaWYgKGxlbmd0aCA8IGFyaXR5KSB7CisgICAgICAgIHZhciBuZXdBcmdQb3MgPSBhcmdQb3MgPyBhcnJheUNvcHkoYXJnUG9zKSA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIG5ld0FyaXR5ID0gbmF0aXZlTWF4KGFyaXR5IC0gbGVuZ3RoLCAwKSwKKyAgICAgICAgICAgIG5ld3NIb2xkZXJzID0gaXNDdXJyeSA/IGFyZ3NIb2xkZXJzIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgbmV3SG9sZGVyc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IGFyZ3NIb2xkZXJzLAorICAgICAgICAgICAgbmV3UGFydGlhbHMgPSBpc0N1cnJ5ID8gYXJncyA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIG5ld1BhcnRpYWxzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogYXJnczsKKworICAgICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gUEFSVElBTF9GTEFHIDogUEFSVElBTF9SSUdIVF9GTEFHKTsKKyAgICAgICAgYml0bWFzayAmPSB+KGlzQ3VycnkgPyBQQVJUSUFMX1JJR0hUX0ZMQUcgOiBQQVJUSUFMX0ZMQUcpOworCisgICAgICAgIGlmICghaXNDdXJyeUJvdW5kKSB7CisgICAgICAgICAgYml0bWFzayAmPSB+KEJJTkRfRkxBRyB8IEJJTkRfS0VZX0ZMQUcpOworICAgICAgICB9CisgICAgICAgIHZhciBuZXdEYXRhID0gW2Z1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdzSG9sZGVycywgbmV3UGFydGlhbHNSaWdodCwgbmV3SG9sZGVyc1JpZ2h0LCBuZXdBcmdQb3MsIGFyeSwgbmV3QXJpdHldLAorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkV3JhcHBlci5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpOworCisgICAgICAgIGlmIChpc0xhemlhYmxlKGZ1bmMpKSB7CisgICAgICAgICAgc2V0RGF0YShyZXN1bHQsIG5ld0RhdGEpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywKKyAgICAgICAgZm4gPSBpc0JpbmRLZXkgPyB0aGlzQmluZGluZ1tmdW5jXSA6IGZ1bmM7CisKKyAgICBpZiAoYXJnUG9zKSB7CisgICAgICBhcmdzID0gcmVvcmRlcihhcmdzLCBhcmdQb3MpOworICAgIH0KKyAgICBpZiAoaXNBcnkgJiYgYXJ5IDwgYXJncy5sZW5ndGgpIHsKKyAgICAgIGFyZ3MubGVuZ3RoID0gYXJ5OworICAgIH0KKyAgICBpZiAodGhpcyAmJiB0aGlzICE9PSBnbG9iYWwgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpIHsKKyAgICAgIGZuID0gQ3RvciB8fCBjcmVhdGVDdG9yV3JhcHBlcihmdW5jKTsKKyAgICB9CisgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTsKKyAgfQorICByZXR1cm4gd3JhcHBlcjsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVIeWJyaWRXcmFwcGVyOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKKworfSx7Ii4vYXJyYXlDb3B5Ijo2MiwiLi9jb21wb3NlQXJncyI6OTYsIi4vY29tcG9zZUFyZ3NSaWdodCI6OTcsIi4vY3JlYXRlQ3RvcldyYXBwZXIiOjEwMSwiLi9pc0xhemlhYmxlIjoxMjQsIi4vcmVvcmRlciI6MTMxLCIuL3JlcGxhY2VIb2xkZXJzIjoxMzIsIi4vc2V0RGF0YSI6MTMzfV0sMTA1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKK3ZhciBjcmVhdGVDdG9yV3JhcHBlciA9IHJlcXVpcmUoJy4vY3JlYXRlQ3RvcldyYXBwZXInKTsKKworLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3Igd3JhcHBlciBtZXRhZGF0YS4gKi8KK3ZhciBCSU5EX0ZMQUcgPSAxOworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCBhbmQgaW52b2tlcyBpdCB3aXRoIHRoZSBvcHRpb25hbCBgdGhpc2AKKyAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhvc2UgcHJvdmlkZWQgdG8KKyAqIHRoZSB3cmFwcGVyLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLgorICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgb2YgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcHBlcmAgZm9yIG1vcmUgZGV0YWlscy4KKyAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLgorICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvIHRoZSBuZXcgZnVuY3Rpb24uCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gY3JlYXRlUGFydGlhbFdyYXBwZXIoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpIHsKKyAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBCSU5EX0ZMQUcsCisgICAgICBDdG9yID0gY3JlYXRlQ3RvcldyYXBwZXIoZnVuYyk7CisKKyAgZnVuY3Rpb24gd3JhcHBlcigpIHsKKyAgICAvLyBBdm9pZCBgYXJndW1lbnRzYCBvYmplY3QgdXNlIGRpc3F1YWxpZnlpbmcgb3B0aW1pemF0aW9ucyBieQorICAgIC8vIGNvbnZlcnRpbmcgaXQgdG8gYW4gYXJyYXkgYmVmb3JlIHByb3ZpZGluZyBpdCBgZnVuY2AuCisgICAgdmFyIGFyZ3NJbmRleCA9IC0xLAorICAgICAgICBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwKKyAgICAgICAgbGVmdEluZGV4ID0gLTEsCisgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsCisgICAgICAgIGFyZ3MgPSBBcnJheShsZWZ0TGVuZ3RoICsgYXJnc0xlbmd0aCk7CisKKyAgICB3aGlsZSAoKytsZWZ0SW5kZXggPCBsZWZ0TGVuZ3RoKSB7CisgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdOworICAgIH0KKyAgICB3aGlsZSAoYXJnc0xlbmd0aC0tKSB7CisgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07CisgICAgfQorICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IGdsb2JhbCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYzsKKyAgICByZXR1cm4gZm4uYXBwbHkoaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3MpOworICB9CisgIHJldHVybiB3cmFwcGVyOworfQorCittb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVBhcnRpYWxXcmFwcGVyOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKKworfSx7Ii4vY3JlYXRlQ3RvcldyYXBwZXIiOjEwMX1dLDEwNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYmFzZVNldERhdGEgPSByZXF1aXJlKCcuL2Jhc2VTZXREYXRhJyksCisgICAgY3JlYXRlQmluZFdyYXBwZXIgPSByZXF1aXJlKCcuL2NyZWF0ZUJpbmRXcmFwcGVyJyksCisgICAgY3JlYXRlSHlicmlkV3JhcHBlciA9IHJlcXVpcmUoJy4vY3JlYXRlSHlicmlkV3JhcHBlcicpLAorICAgIGNyZWF0ZVBhcnRpYWxXcmFwcGVyID0gcmVxdWlyZSgnLi9jcmVhdGVQYXJ0aWFsV3JhcHBlcicpLAorICAgIGdldERhdGEgPSByZXF1aXJlKCcuL2dldERhdGEnKSwKKyAgICBtZXJnZURhdGEgPSByZXF1aXJlKCcuL21lcmdlRGF0YScpLAorICAgIHNldERhdGEgPSByZXF1aXJlKCcuL3NldERhdGEnKTsKKworLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3Igd3JhcHBlciBtZXRhZGF0YS4gKi8KK3ZhciBCSU5EX0ZMQUcgPSAxLAorICAgIEJJTkRfS0VZX0ZMQUcgPSAyLAorICAgIFBBUlRJQUxfRkxBRyA9IDMyLAorICAgIFBBUlRJQUxfUklHSFRfRkxBRyA9IDY0OworCisvKiogVXNlZCBhcyB0aGUgYFR5cGVFcnJvcmAgbWVzc2FnZSBmb3IgIkZ1bmN0aW9ucyIgbWV0aG9kcy4gKi8KK3ZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7CisKKy8qIE5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovCit2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7CisKKy8qKgorICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbAorICogYHRoaXNgIGJpbmRpbmcgYW5kIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHJlZmVyZW5jZS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIG9mIGZsYWdzLgorICogIFRoZSBiaXRtYXNrIG1heSBiZSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGZsYWdzOgorICogICAgIDEgLSBgXy5iaW5kYAorICogICAgIDIgLSBgXy5iaW5kS2V5YAorICogICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvbgorICogICAgIDggLSBgXy5jdXJyeWAKKyAqICAgIDE2IC0gYF8uY3VycnlSaWdodGAKKyAqICAgIDMyIC0gYF8ucGFydGlhbGAKKyAqICAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YAorICogICAxMjggLSBgXy5yZWFyZ2AKKyAqICAgMjU2IC0gYF8uYXJ5YAorICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC4KKyAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC4KKyAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLgorICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLgorICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLgorICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC4KKyAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkgeworICB2YXIgaXNCaW5kS2V5ID0gYml0bWFzayAmIEJJTkRfS0VZX0ZMQUc7CisgIGlmICghaXNCaW5kS2V5ICYmIHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHsKKyAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7CisgIH0KKyAgdmFyIGxlbmd0aCA9IHBhcnRpYWxzID8gcGFydGlhbHMubGVuZ3RoIDogMDsKKyAgaWYgKCFsZW5ndGgpIHsKKyAgICBiaXRtYXNrICY9IH4oUEFSVElBTF9GTEFHIHwgUEFSVElBTF9SSUdIVF9GTEFHKTsKKyAgICBwYXJ0aWFscyA9IGhvbGRlcnMgPSB1bmRlZmluZWQ7CisgIH0KKyAgbGVuZ3RoIC09IChob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwKTsKKyAgaWYgKGJpdG1hc2sgJiBQQVJUSUFMX1JJR0hUX0ZMQUcpIHsKKyAgICB2YXIgcGFydGlhbHNSaWdodCA9IHBhcnRpYWxzLAorICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzOworCisgICAgcGFydGlhbHMgPSBob2xkZXJzID0gdW5kZWZpbmVkOworICB9CisgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKSwKKyAgICAgIG5ld0RhdGEgPSBbZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5XTsKKworICBpZiAoZGF0YSkgeworICAgIG1lcmdlRGF0YShuZXdEYXRhLCBkYXRhKTsKKyAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTsKKyAgICBhcml0eSA9IG5ld0RhdGFbOV07CisgIH0KKyAgbmV3RGF0YVs5XSA9IGFyaXR5ID09IG51bGwKKyAgICA/IChpc0JpbmRLZXkgPyAwIDogZnVuYy5sZW5ndGgpCisgICAgOiAobmF0aXZlTWF4KGFyaXR5IC0gbGVuZ3RoLCAwKSB8fCAwKTsKKworICBpZiAoYml0bWFzayA9PSBCSU5EX0ZMQUcpIHsKKyAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZFdyYXBwZXIobmV3RGF0YVswXSwgbmV3RGF0YVsyXSk7CisgIH0gZWxzZSBpZiAoKGJpdG1hc2sgPT0gUEFSVElBTF9GTEFHIHx8IGJpdG1hc2sgPT0gKEJJTkRfRkxBRyB8IFBBUlRJQUxfRkxBRykpICYmICFuZXdEYXRhWzRdLmxlbmd0aCkgeworICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWxXcmFwcGVyLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7CisgIH0gZWxzZSB7CisgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkV3JhcHBlci5hcHBseSh1bmRlZmluZWQsIG5ld0RhdGEpOworICB9CisgIHZhciBzZXR0ZXIgPSBkYXRhID8gYmFzZVNldERhdGEgOiBzZXREYXRhOworICByZXR1cm4gc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gY3JlYXRlV3JhcHBlcjsKKworfSx7Ii4vYmFzZVNldERhdGEiOjg4LCIuL2NyZWF0ZUJpbmRXcmFwcGVyIjoxMDAsIi4vY3JlYXRlSHlicmlkV3JhcHBlciI6MTA0LCIuL2NyZWF0ZVBhcnRpYWxXcmFwcGVyIjoxMDUsIi4vZ2V0RGF0YSI6MTEwLCIuL21lcmdlRGF0YSI6MTI4LCIuL3NldERhdGEiOjEzM31dLDEwNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9hcnJheVNvbWUnKTsKKworLyoqCisgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yCisgKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb21wYXJlLgorICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpbmcgYXJyYXlzLgorICogQHBhcmFtIHtib29sZWFufSBbaXNMb29zZV0gU3BlY2lmeSBwZXJmb3JtaW5nIHBhcnRpYWwgY29tcGFyaXNvbnMuCisgKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tBXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgb2JqZWN0cy4KKyAqIEBwYXJhbSB7QXJyYXl9IFtzdGFja0JdIFRyYWNrcyB0cmF2ZXJzZWQgYG90aGVyYCBvYmplY3RzLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksIG90aGVyLCBlcXVhbEZ1bmMsIGN1c3RvbWl6ZXIsIGlzTG9vc2UsIHN0YWNrQSwgc3RhY2tCKSB7CisgIHZhciBpbmRleCA9IC0xLAorICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLAorICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoOworCisgIGlmIChhcnJMZW5ndGggIT0gb3RoTGVuZ3RoICYmICEoaXNMb29zZSAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIC8vIElnbm9yZSBub24taW5kZXggcHJvcGVydGllcy4KKyAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHsKKyAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sCisgICAgICAgIG90aFZhbHVlID0gb3RoZXJbaW5kZXhdLAorICAgICAgICByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihpc0xvb3NlID8gb3RoVmFsdWUgOiBhcnJWYWx1ZSwgaXNMb29zZSA/IGFyclZhbHVlIDogb3RoVmFsdWUsIGluZGV4KSA6IHVuZGVmaW5lZDsKKworICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkgeworICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS4KKyAgICBpZiAoaXNMb29zZSkgeworICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uKG90aFZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4gYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGN1c3RvbWl6ZXIsIGlzTG9vc2UsIHN0YWNrQSwgc3RhY2tCKTsKKyAgICAgICAgICB9KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSBlbHNlIGlmICghKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBjdXN0b21pemVyLCBpc0xvb3NlLCBzdGFja0EsIHN0YWNrQikpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisgIHJldHVybiB0cnVlOworfQorCittb2R1bGUuZXhwb3J0cyA9IGVxdWFsQXJyYXlzOworCit9LHsiLi9hcnJheVNvbWUiOjY1fV0sMTA4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi8KK3ZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLAorICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsCisgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLAorICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLAorICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLAorICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nOworCisvKioKKyAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2YKKyAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuCisgKgorICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZgorICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLgorICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLgorICovCitmdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZykgeworICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2UgYm9vbFRhZzoKKyAgICBjYXNlIGRhdGVUYWc6CisgICAgICAvLyBDb2VyY2UgZGF0ZXMgYW5kIGJvb2xlYW5zIHRvIG51bWJlcnMsIGRhdGVzIHRvIG1pbGxpc2Vjb25kcyBhbmQgYm9vbGVhbnMKKyAgICAgIC8vIHRvIGAxYCBvciBgMGAgdHJlYXRpbmcgaW52YWxpZCBkYXRlcyBjb2VyY2VkIHRvIGBOYU5gIGFzIG5vdCBlcXVhbC4KKyAgICAgIHJldHVybiArb2JqZWN0ID09ICtvdGhlcjsKKworICAgIGNhc2UgZXJyb3JUYWc6CisgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlOworCisgICAgY2FzZSBudW1iZXJUYWc6CisgICAgICAvLyBUcmVhdCBgTmFOYCB2cy4gYE5hTmAgYXMgZXF1YWwuCisgICAgICByZXR1cm4gKG9iamVjdCAhPSArb2JqZWN0KQorICAgICAgICA/IG90aGVyICE9ICtvdGhlcgorICAgICAgICA6IG9iamVjdCA9PSArb3RoZXI7CisKKyAgICBjYXNlIHJlZ2V4cFRhZzoKKyAgICBjYXNlIHN0cmluZ1RhZzoKKyAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MgcHJpbWl0aXZlcyBhbmQgc3RyaW5nCisgICAgICAvLyBvYmplY3RzIGFzIGVxdWFsLiBTZWUgaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTUuMTAuNi40IGZvciBtb3JlIGRldGFpbHMuCisgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZzsKKworfSx7fV0sMTA5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBrZXlzID0gcmVxdWlyZSgnLi4vb2JqZWN0L2tleXMnKTsKKworLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi8KK3ZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7CisKKy8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqLwordmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7CisKKy8qKgorICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3IKKyAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuCisgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLgorICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLgorICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaW5nIHZhbHVlcy4KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzTG9vc2VdIFNwZWNpZnkgcGVyZm9ybWluZyBwYXJ0aWFsIGNvbXBhcmlzb25zLgorICogQHBhcmFtIHtBcnJheX0gW3N0YWNrQV0gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIG9iamVjdHMuCisgKiBAcGFyYW0ge0FycmF5fSBbc3RhY2tCXSBUcmFja3MgdHJhdmVyc2VkIGBvdGhlcmAgb2JqZWN0cy4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLgorICovCitmdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgZXF1YWxGdW5jLCBjdXN0b21pemVyLCBpc0xvb3NlLCBzdGFja0EsIHN0YWNrQikgeworICB2YXIgb2JqUHJvcHMgPSBrZXlzKG9iamVjdCksCisgICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsCisgICAgICBvdGhQcm9wcyA9IGtleXMob3RoZXIpLAorICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoOworCisgIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc0xvb3NlKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHZhciBpbmRleCA9IG9iakxlbmd0aDsKKyAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICB2YXIga2V5ID0gb2JqUHJvcHNbaW5kZXhdOworICAgIGlmICghKGlzTG9vc2UgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICB2YXIgc2tpcEN0b3IgPSBpc0xvb3NlOworICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkgeworICAgIGtleSA9IG9ialByb3BzW2luZGV4XTsKKyAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSwKKyAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldLAorICAgICAgICByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihpc0xvb3NlID8gb3RoVmFsdWUgOiBvYmpWYWx1ZSwgaXNMb29zZT8gb2JqVmFsdWUgOiBvdGhWYWx1ZSwga2V5KSA6IHVuZGVmaW5lZDsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLgorICAgIGlmICghKHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgY3VzdG9taXplciwgaXNMb29zZSwgc3RhY2tBLCBzdGFja0IpIDogcmVzdWx0KSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7CisgIH0KKyAgaWYgKCFza2lwQ3RvcikgeworICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLAorICAgICAgICBvdGhDdG9yID0gb3RoZXIuY29uc3RydWN0b3I7CisKKyAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC4KKyAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmCisgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJgorICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiYKKyAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBlcXVhbE9iamVjdHM7CisKK30seyIuLi9vYmplY3Qva2V5cyI6MTQ5fV0sMTEwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBtZXRhTWFwID0gcmVxdWlyZSgnLi9tZXRhTWFwJyksCisgICAgbm9vcCA9IHJlcXVpcmUoJy4uL3V0aWxpdHkvbm9vcCcpOworCisvKioKKyAqIEdldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWV0YWRhdGEgZm9yIGBmdW5jYC4KKyAqLwordmFyIGdldERhdGEgPSAhbWV0YU1hcCA/IG5vb3AgOiBmdW5jdGlvbihmdW5jKSB7CisgIHJldHVybiBtZXRhTWFwLmdldChmdW5jKTsKK307CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RGF0YTsKKworfSx7Ii4uL3V0aWxpdHkvbm9vcCI6MTU1LCIuL21ldGFNYXAiOjEyOX1dLDExMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgcmVhbE5hbWVzID0gcmVxdWlyZSgnLi9yZWFsTmFtZXMnKTsKKworLyoqCisgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lLgorICovCitmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7CisgIHZhciByZXN1bHQgPSAoZnVuYy5uYW1lICsgJycpLAorICAgICAgYXJyYXkgPSByZWFsTmFtZXNbcmVzdWx0XSwKKyAgICAgIGxlbmd0aCA9IGFycmF5ID8gYXJyYXkubGVuZ3RoIDogMDsKKworICB3aGlsZSAobGVuZ3RoLS0pIHsKKyAgICB2YXIgZGF0YSA9IGFycmF5W2xlbmd0aF0sCisgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYzsKKyAgICBpZiAob3RoZXJGdW5jID09IG51bGwgfHwgb3RoZXJGdW5jID09IGZ1bmMpIHsKKyAgICAgIHJldHVybiBkYXRhLm5hbWU7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0RnVuY05hbWU7CisKK30seyIuL3JlYWxOYW1lcyI6MTMwfV0sMTEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL2Jhc2VQcm9wZXJ0eScpOworCisvKioKKyAqIEdldHMgdGhlICJsZW5ndGgiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLgorICoKKyAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYSBbSklUIGJ1Z10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5MikKKyAqIHRoYXQgYWZmZWN0cyBTYWZhcmkgb24gYXQgbGVhc3QgaU9TIDguMS04LjMgQVJNNjQuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS4KKyAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSAibGVuZ3RoIiB2YWx1ZS4KKyAqLwordmFyIGdldExlbmd0aCA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TGVuZ3RoOworCit9LHsiLi9iYXNlUHJvcGVydHkiOjg2fV0sMTEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL2lzU3RyaWN0Q29tcGFyYWJsZScpLAorICAgIHBhaXJzID0gcmVxdWlyZSgnLi4vb2JqZWN0L3BhaXJzJyk7CisKKy8qKgorICogR2V0cyB0aGUgcHJvcGVyeSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LgorICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLgorICovCitmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7CisgIHZhciByZXN1bHQgPSBwYWlycyhvYmplY3QpLAorICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDsKKworICB3aGlsZSAobGVuZ3RoLS0pIHsKKyAgICByZXN1bHRbbGVuZ3RoXVsyXSA9IGlzU3RyaWN0Q29tcGFyYWJsZShyZXN1bHRbbGVuZ3RoXVsxXSk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBnZXRNYXRjaERhdGE7CisKK30seyIuLi9vYmplY3QvcGFpcnMiOjE1MSwiLi9pc1N0cmljdENvbXBhcmFibGUiOjEyN31dLDExNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNOYXRpdmUgPSByZXF1aXJlKCcuLi9sYW5nL2lzTmF0aXZlJyk7CisKKy8qKgorICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuCisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuCisgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuCisgKi8KK2Z1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkgeworICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldOworICByZXR1cm4gaXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlOworCit9LHsiLi4vbGFuZy9pc05hdGl2ZSI6MTQzfV0sMTE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYE5hTmAgaXMgZm91bmQgaW4gYGFycmF5YC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNlYXJjaC4KKyAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLgorICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuCisgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCBgTmFOYCwgZWxzZSBgLTFgLgorICovCitmdW5jdGlvbiBpbmRleE9mTmFOKGFycmF5LCBmcm9tSW5kZXgsIGZyb21SaWdodCkgeworICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLAorICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMCA6IC0xKTsKKworICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkgeworICAgIHZhciBvdGhlciA9IGFycmF5W2luZGV4XTsKKyAgICBpZiAob3RoZXIgIT09IG90aGVyKSB7CisgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorICB9CisgIHJldHVybiAtMTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpbmRleE9mTmFOOworCit9LHt9XSwxMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi8KK3ZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7CisKKy8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqLwordmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7CisKKy8qKgorICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS4KKyAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuCisgKi8KK2Z1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7CisgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsCisgICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTsKKworICAvLyBBZGQgYXJyYXkgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLgorICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkgeworICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4OworICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0OworICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7CisKK30se31dLDExNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKGdsb2JhbCl7Cit2YXIgYnVmZmVyQ2xvbmUgPSByZXF1aXJlKCcuL2J1ZmZlckNsb25lJyk7CisKKy8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi8KK3ZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLAorICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsCisgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsCisgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsCisgICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7CisKK3ZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsCisgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLAorICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJywKKyAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsCisgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsCisgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsCisgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsCisgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJywKKyAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLAorICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7CisKKy8qKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgIGZsYWdzIGZyb20gdGhlaXIgY29lcmNlZCBzdHJpbmcgdmFsdWVzLiAqLwordmFyIHJlRmxhZ3MgPSAvXHcqJC87CisKKy8qKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5OworCisvKiogVXNlZCB0byBsb29rdXAgYSB0eXBlIGFycmF5IGNvbnN0cnVjdG9ycyBieSBgdG9TdHJpbmdUYWdgLiAqLwordmFyIGN0b3JCeVRhZyA9IHt9OworY3RvckJ5VGFnW2Zsb2F0MzJUYWddID0gZ2xvYmFsLkZsb2F0MzJBcnJheTsKK2N0b3JCeVRhZ1tmbG9hdDY0VGFnXSA9IGdsb2JhbC5GbG9hdDY0QXJyYXk7CitjdG9yQnlUYWdbaW50OFRhZ10gPSBnbG9iYWwuSW50OEFycmF5OworY3RvckJ5VGFnW2ludDE2VGFnXSA9IGdsb2JhbC5JbnQxNkFycmF5OworY3RvckJ5VGFnW2ludDMyVGFnXSA9IGdsb2JhbC5JbnQzMkFycmF5OworY3RvckJ5VGFnW3VpbnQ4VGFnXSA9IFVpbnQ4QXJyYXk7CitjdG9yQnlUYWdbdWludDhDbGFtcGVkVGFnXSA9IGdsb2JhbC5VaW50OENsYW1wZWRBcnJheTsKK2N0b3JCeVRhZ1t1aW50MTZUYWddID0gZ2xvYmFsLlVpbnQxNkFycmF5OworY3RvckJ5VGFnW3VpbnQzMlRhZ10gPSBnbG9iYWwuVWludDMyQXJyYXk7CisKKy8qKgorICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLgorICoKKyAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mCisgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLgorICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLgorICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS4KKyAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLgorICovCitmdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7CisgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yOworICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6CisgICAgICByZXR1cm4gYnVmZmVyQ2xvbmUob2JqZWN0KTsKKworICAgIGNhc2UgYm9vbFRhZzoKKyAgICBjYXNlIGRhdGVUYWc6CisgICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7CisKKyAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzoKKyAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6CisgICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzoKKyAgICAgIC8vIFNhZmFyaSA1IG1vYmlsZSBpbmNvcnJlY3RseSBoYXMgYE9iamVjdGAgYXMgdGhlIGNvbnN0cnVjdG9yIG9mIHR5cGVkIGFycmF5cy4KKyAgICAgIGlmIChDdG9yIGluc3RhbmNlb2YgQ3RvcikgeworICAgICAgICBDdG9yID0gY3RvckJ5VGFnW3RhZ107CisgICAgICB9CisgICAgICB2YXIgYnVmZmVyID0gb2JqZWN0LmJ1ZmZlcjsKKyAgICAgIHJldHVybiBuZXcgQ3Rvcihpc0RlZXAgPyBidWZmZXJDbG9uZShidWZmZXIpIDogYnVmZmVyLCBvYmplY3QuYnl0ZU9mZnNldCwgb2JqZWN0Lmxlbmd0aCk7CisKKyAgICBjYXNlIG51bWJlclRhZzoKKyAgICBjYXNlIHN0cmluZ1RhZzoKKyAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpOworCisgICAgY2FzZSByZWdleHBUYWc6CisgICAgICB2YXIgcmVzdWx0ID0gbmV3IEN0b3Iob2JqZWN0LnNvdXJjZSwgcmVGbGFncy5leGVjKG9iamVjdCkpOworICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IG9iamVjdC5sYXN0SW5kZXg7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZzsKKworfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09ICJ1bmRlZmluZWQiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiID8gd2luZG93IDoge30pCisKK30seyIuL2J1ZmZlckNsb25lIjo5NX1dLDExODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLgorICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuCisgKi8KK2Z1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHsKKyAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7CisgIGlmICghKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IpKSB7CisgICAgQ3RvciA9IE9iamVjdDsKKyAgfQorICByZXR1cm4gbmV3IEN0b3I7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0OworCit9LHt9XSwxMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGdldExlbmd0aCA9IHJlcXVpcmUoJy4vZ2V0TGVuZ3RoJyksCisgICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7CisKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suCisgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuCisgKi8KK2Z1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7CisgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlOworCit9LHsiLi9nZXRMZW5ndGgiOjExMiwiLi9pc0xlbmd0aCI6MTI1fV0sMTIwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBob3N0IG9iamVjdCBpbiBJRSA8IDkuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBob3N0IG9iamVjdCwgZWxzZSBgZmFsc2VgLgorICovCit2YXIgaXNIb3N0T2JqZWN0ID0gKGZ1bmN0aW9uKCkgeworICB0cnkgeworICAgIE9iamVjdCh7ICd0b1N0cmluZyc6IDAgfSArICcnKTsKKyAgfSBjYXRjaChlKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH07CisgIH0KKyAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7CisgICAgLy8gSUUgPCA5IHByZXNlbnRzIG1hbnkgaG9zdCBvYmplY3RzIGFzIGBPYmplY3RgIG9iamVjdHMgdGhhdCBjYW4gY29lcmNlCisgICAgLy8gdG8gc3RyaW5ncyBkZXNwaXRlIGhhdmluZyBpbXByb3Blcmx5IGRlZmluZWQgYHRvU3RyaW5nYCBtZXRob2RzLgorICAgIHJldHVybiB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgKHZhbHVlICsgJycpID09ICdzdHJpbmcnOworICB9OworfSgpKTsKKworbW9kdWxlLmV4cG9ydHMgPSBpc0hvc3RPYmplY3Q7CisKK30se31dLDEyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovCit2YXIgcmVJc1VpbnQgPSAvXlxkKyQvOworCisvKioKKyAqIFVzZWQgYXMgdGhlIFttYXhpbXVtIGxlbmd0aF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLm1heF9zYWZlX2ludGVnZXIpCisgKiBvZiBhbiBhcnJheS1saWtlIHZhbHVlLgorICovCit2YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7CisKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7CisgIHZhbHVlID0gKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fCByZUlzVWludC50ZXN0KHZhbHVlKSkgPyArdmFsdWUgOiAtMTsKKyAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoOworICByZXR1cm4gdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4OworCit9LHt9XSwxMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLAorICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL2lzSW5kZXgnKSwKKyAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2xhbmcvaXNPYmplY3QnKTsKKworLyoqCisgKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuCisgKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LgorICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuCisgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLCBlbHNlIGBmYWxzZWAuCisgKi8KK2Z1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7CisgIGlmICghaXNPYmplY3Qob2JqZWN0KSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDsKKyAgaWYgKHR5cGUgPT0gJ251bWJlcicKKyAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpCisgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdCkpIHsKKyAgICB2YXIgb3RoZXIgPSBvYmplY3RbaW5kZXhdOworICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAodmFsdWUgPT09IG90aGVyKSA6IChvdGhlciAhPT0gb3RoZXIpOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDsKKworfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi9pc0FycmF5TGlrZSI6MTE5LCIuL2lzSW5kZXgiOjEyMX1dLDEyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpLAorICAgIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi90b09iamVjdCcpOworCisvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovCit2YXIgcmVJc0RlZXBQcm9wID0gL1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxuXFxdfFxcLikqP1wxKVxdLywKKyAgICByZUlzUGxhaW5Qcm9wID0gL15cdyokLzsKKworLyoqCisgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLgorICovCitmdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7CisgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlOworICBpZiAoKHR5cGUgPT0gJ3N0cmluZycgJiYgcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSkgfHwgdHlwZSA9PSAnbnVtYmVyJykgeworICAgIHJldHVybiB0cnVlOworICB9CisgIGlmIChpc0FycmF5KHZhbHVlKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICB2YXIgcmVzdWx0ID0gIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKTsKKyAgcmV0dXJuIHJlc3VsdCB8fCAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gdG9PYmplY3Qob2JqZWN0KSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNLZXk7CisKK30seyIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi90b09iamVjdCI6MTM1fV0sMTI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBMYXp5V3JhcHBlciA9IHJlcXVpcmUoJy4vTGF6eVdyYXBwZXInKSwKKyAgICBnZXREYXRhID0gcmVxdWlyZSgnLi9nZXREYXRhJyksCisgICAgZ2V0RnVuY05hbWUgPSByZXF1aXJlKCcuL2dldEZ1bmNOYW1lJyksCisgICAgbG9kYXNoID0gcmVxdWlyZSgnLi4vY2hhaW4vbG9kYXNoJyk7CisKKy8qKgorICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCwgZWxzZSBgZmFsc2VgLgorICovCitmdW5jdGlvbiBpc0xhemlhYmxlKGZ1bmMpIHsKKyAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksCisgICAgICBvdGhlciA9IGxvZGFzaFtmdW5jTmFtZV07CisKKyAgaWYgKHR5cGVvZiBvdGhlciAhPSAnZnVuY3Rpb24nIHx8ICEoZnVuY05hbWUgaW4gTGF6eVdyYXBwZXIucHJvdG90eXBlKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICBpZiAoZnVuYyA9PT0gb3RoZXIpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICB2YXIgZGF0YSA9IGdldERhdGEob3RoZXIpOworICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNMYXppYWJsZTsKKworfSx7Ii4uL2NoYWluL2xvZGFzaCI6NTEsIi4vTGF6eVdyYXBwZXIiOjYwLCIuL2dldERhdGEiOjExMCwiLi9nZXRGdW5jTmFtZSI6MTExfV0sMTI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogVXNlZCBhcyB0aGUgW21heGltdW0gbGVuZ3RoXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIubWF4X3NhZmVfaW50ZWdlcikKKyAqIG9mIGFuIGFycmF5LWxpa2UgdmFsdWUuCisgKi8KK3ZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTsKKworLyoqCisgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLgorICoKKyAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC4KKyAqLworZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHsKKyAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7CisKK30se31dLDEyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuCisgKi8KK2Z1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkgeworICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlOworCit9LHt9XSwxMjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vbGFuZy9pc09iamVjdCcpOworCisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdAorICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuCisgKi8KK2Z1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkgeworICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNTdHJpY3RDb21wYXJhYmxlOworCit9LHsiLi4vbGFuZy9pc09iamVjdCI6MTQ0fV0sMTI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBhcnJheUNvcHkgPSByZXF1aXJlKCcuL2FycmF5Q29weScpLAorICAgIGNvbXBvc2VBcmdzID0gcmVxdWlyZSgnLi9jb21wb3NlQXJncycpLAorICAgIGNvbXBvc2VBcmdzUmlnaHQgPSByZXF1aXJlKCcuL2NvbXBvc2VBcmdzUmlnaHQnKSwKKyAgICByZXBsYWNlSG9sZGVycyA9IHJlcXVpcmUoJy4vcmVwbGFjZUhvbGRlcnMnKTsKKworLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3Igd3JhcHBlciBtZXRhZGF0YS4gKi8KK3ZhciBCSU5EX0ZMQUcgPSAxLAorICAgIENVUlJZX0JPVU5EX0ZMQUcgPSA0LAorICAgIENVUlJZX0ZMQUcgPSA4LAorICAgIEFSWV9GTEFHID0gMTI4LAorICAgIFJFQVJHX0ZMQUcgPSAyNTY7CisKKy8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi8KK3ZhciBQTEFDRUhPTERFUiA9ICdfX2xvZGFzaF9wbGFjZWhvbGRlcl9fJzsKKworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVNaW4gPSBNYXRoLm1pbjsKKworLyoqCisgKiBNZXJnZXMgdGhlIGZ1bmN0aW9uIG1ldGFkYXRhIG9mIGBzb3VyY2VgIGludG8gYGRhdGFgLgorICoKKyAqIE1lcmdpbmcgbWV0YWRhdGEgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIHJlcXVpcmVkIHRvIGludm9rZSBhIGZ1bmN0aW9uLgorICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1ldGhvZHMgbGlrZSBgXy5iaW5kYCwgYF8uY3VycnlgLCBhbmQgYF8ucGFydGlhbGAKKyAqIG1heSBiZSBhcHBsaWVkIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIG9yZGVyLiBNZXRob2RzIGxpa2UgYF8uYXJ5YCBhbmQgYF8ucmVhcmdgCisgKiBhdWdtZW50IGZ1bmN0aW9uIGFyZ3VtZW50cywgbWFraW5nIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSBleGVjdXRlZCBpbXBvcnRhbnQsCisgKiBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlIGFuIGV4Y2VwdGlvbiBmb3IgYSBzYWZlCisgKiBjb21tb24gY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWAgYW5kIG9yIGBfLnJlYXJnYCBhcHBsaWVkLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fSBkYXRhIFRoZSBkZXN0aW5hdGlvbiBtZXRhZGF0YS4KKyAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLgorICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkYXRhYC4KKyAqLworZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkgeworICB2YXIgYml0bWFzayA9IGRhdGFbMV0sCisgICAgICBzcmNCaXRtYXNrID0gc291cmNlWzFdLAorICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLAorICAgICAgaXNDb21tb24gPSBuZXdCaXRtYXNrIDwgQVJZX0ZMQUc7CisKKyAgdmFyIGlzQ29tYm8gPQorICAgIChzcmNCaXRtYXNrID09IEFSWV9GTEFHICYmIGJpdG1hc2sgPT0gQ1VSUllfRkxBRykgfHwKKyAgICAoc3JjQml0bWFzayA9PSBBUllfRkxBRyAmJiBiaXRtYXNrID09IFJFQVJHX0ZMQUcgJiYgZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSB8fAorICAgIChzcmNCaXRtYXNrID09IChBUllfRkxBRyB8IFJFQVJHX0ZMQUcpICYmIGJpdG1hc2sgPT0gQ1VSUllfRkxBRyk7CisKKyAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuCisgIGlmICghKGlzQ29tbW9uIHx8IGlzQ29tYm8pKSB7CisgICAgcmV0dXJuIGRhdGE7CisgIH0KKyAgLy8gVXNlIHNvdXJjZSBgdGhpc0FyZ2AgaWYgYXZhaWxhYmxlLgorICBpZiAoc3JjQml0bWFzayAmIEJJTkRfRkxBRykgeworICAgIGRhdGFbMl0gPSBzb3VyY2VbMl07CisgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi4KKyAgICBuZXdCaXRtYXNrIHw9IChiaXRtYXNrICYgQklORF9GTEFHKSA/IDAgOiBDVVJSWV9CT1VORF9GTEFHOworICB9CisgIC8vIENvbXBvc2UgcGFydGlhbCBhcmd1bWVudHMuCisgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTsKKyAgaWYgKHZhbHVlKSB7CisgICAgdmFyIHBhcnRpYWxzID0gZGF0YVszXTsKKyAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiBhcnJheUNvcHkodmFsdWUpOworICAgIGRhdGFbNF0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbM10sIFBMQUNFSE9MREVSKSA6IGFycmF5Q29weShzb3VyY2VbNF0pOworICB9CisgIC8vIENvbXBvc2UgcGFydGlhbCByaWdodCBhcmd1bWVudHMuCisgIHZhbHVlID0gc291cmNlWzVdOworICBpZiAodmFsdWUpIHsKKyAgICBwYXJ0aWFscyA9IGRhdGFbNV07CisgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiBhcnJheUNvcHkodmFsdWUpOworICAgIGRhdGFbNl0gPSBwYXJ0aWFscyA/IHJlcGxhY2VIb2xkZXJzKGRhdGFbNV0sIFBMQUNFSE9MREVSKSA6IGFycmF5Q29weShzb3VyY2VbNl0pOworICB9CisgIC8vIFVzZSBzb3VyY2UgYGFyZ1Bvc2AgaWYgYXZhaWxhYmxlLgorICB2YWx1ZSA9IHNvdXJjZVs3XTsKKyAgaWYgKHZhbHVlKSB7CisgICAgZGF0YVs3XSA9IGFycmF5Q29weSh2YWx1ZSk7CisgIH0KKyAgLy8gVXNlIHNvdXJjZSBgYXJ5YCBpZiBpdCdzIHNtYWxsZXIuCisgIGlmIChzcmNCaXRtYXNrICYgQVJZX0ZMQUcpIHsKKyAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7CisgIH0KKyAgLy8gVXNlIHNvdXJjZSBgYXJpdHlgIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuCisgIGlmIChkYXRhWzldID09IG51bGwpIHsKKyAgICBkYXRhWzldID0gc291cmNlWzldOworICB9CisgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy4KKyAgZGF0YVswXSA9IHNvdXJjZVswXTsKKyAgZGF0YVsxXSA9IG5ld0JpdG1hc2s7CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK21vZHVsZS5leHBvcnRzID0gbWVyZ2VEYXRhOworCit9LHsiLi9hcnJheUNvcHkiOjYyLCIuL2NvbXBvc2VBcmdzIjo5NiwiLi9jb21wb3NlQXJnc1JpZ2h0Ijo5NywiLi9yZXBsYWNlSG9sZGVycyI6MTMyfV0sMTI5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKyhmdW5jdGlvbiAoZ2xvYmFsKXsKK3ZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL2dldE5hdGl2ZScpOworCisvKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIFdlYWtNYXAgPSBnZXROYXRpdmUoZ2xvYmFsLCAnV2Vha01hcCcpOworCisvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi8KK3ZhciBtZXRhTWFwID0gV2Vha01hcCAmJiBuZXcgV2Vha01hcDsKKworbW9kdWxlLmV4cG9ydHMgPSBtZXRhTWFwOworCit9KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgPyB3aW5kb3cgOiB7fSkKKworfSx7Ii4vZ2V0TmF0aXZlIjoxMTR9XSwxMzA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqIFVzZWQgdG8gbG9va3VwIHVubWluaWZpZWQgZnVuY3Rpb24gbmFtZXMuICovCit2YXIgcmVhbE5hbWVzID0ge307CisKK21vZHVsZS5leHBvcnRzID0gcmVhbE5hbWVzOworCit9LHt9XSwxMzE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGFycmF5Q29weSA9IHJlcXVpcmUoJy4vYXJyYXlDb3B5JyksCisgICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vaXNJbmRleCcpOworCisvKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqLwordmFyIG5hdGl2ZU1pbiA9IE1hdGgubWluOworCisvKioKKyAqIFJlb3JkZXIgYGFycmF5YCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBpbmRleGVzIHdoZXJlIHRoZSBlbGVtZW50IGF0CisgKiB0aGUgZmlyc3QgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIGZpcnN0IGVsZW1lbnQsIHRoZSBlbGVtZW50IGF0CisgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci4KKyAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFycmF5IGluZGV4ZXMuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC4KKyAqLworZnVuY3Rpb24gcmVvcmRlcihhcnJheSwgaW5kZXhlcykgeworICB2YXIgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLAorICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLAorICAgICAgb2xkQXJyYXkgPSBhcnJheUNvcHkoYXJyYXkpOworCisgIHdoaWxlIChsZW5ndGgtLSkgeworICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTsKKyAgICBhcnJheVtsZW5ndGhdID0gaXNJbmRleChpbmRleCwgYXJyTGVuZ3RoKSA/IG9sZEFycmF5W2luZGV4XSA6IHVuZGVmaW5lZDsKKyAgfQorICByZXR1cm4gYXJyYXk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gcmVvcmRlcjsKKworfSx7Ii4vYXJyYXlDb3B5Ijo2MiwiLi9pc0luZGV4IjoxMjF9XSwxMzI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqIFVzZWQgYXMgdGhlIGludGVybmFsIGFyZ3VtZW50IHBsYWNlaG9sZGVyLiAqLwordmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nOworCisvKioKKyAqIFJlcGxhY2VzIGFsbCBgcGxhY2Vob2xkZXJgIGVsZW1lbnRzIGluIGBhcnJheWAgd2l0aCBhbiBpbnRlcm5hbCBwbGFjZWhvbGRlcgorICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS4KKyAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHRvIHJlcGxhY2UuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBwbGFjZWhvbGRlciBpbmRleGVzLgorICovCitmdW5jdGlvbiByZXBsYWNlSG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHsKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsCisgICAgICByZXNJbmRleCA9IC0xLAorICAgICAgcmVzdWx0ID0gW107CisKKyAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHsKKyAgICBpZiAoYXJyYXlbaW5kZXhdID09PSBwbGFjZWhvbGRlcikgeworICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7CisgICAgICByZXN1bHRbKytyZXNJbmRleF0gPSBpbmRleDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSByZXBsYWNlSG9sZGVyczsKKworfSx7fV0sMTMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlU2V0RGF0YSA9IHJlcXVpcmUoJy4vYmFzZVNldERhdGEnKSwKKyAgICBub3cgPSByZXF1aXJlKCcuLi9kYXRlL25vdycpOworCisvKiogVXNlZCB0byBkZXRlY3Qgd2hlbiBhIGZ1bmN0aW9uIGJlY29tZXMgaG90LiAqLwordmFyIEhPVF9DT1VOVCA9IDE1MCwKKyAgICBIT1RfU1BBTiA9IDE2OworCisvKioKKyAqIFNldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC4KKyAqCisgKiAqKk5vdGU6KiogSWYgdGhpcyBmdW5jdGlvbiBiZWNvbWVzIGhvdCwgaS5lLiBpcyBpbnZva2VkIGEgbG90IGluIGEgc2hvcnQKKyAqIHBlcmlvZCBvZiB0aW1lLCBpdCB3aWxsIHRyaXAgaXRzIGJyZWFrZXIgYW5kIHRyYW5zaXRpb24gdG8gYW4gaWRlbnRpdHkgZnVuY3Rpb24KKyAqIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZSBbVjggaXNzdWUgMjA3MF0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIwNzApCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC4KKyAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuCisgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLgorICovCit2YXIgc2V0RGF0YSA9IChmdW5jdGlvbigpIHsKKyAgdmFyIGNvdW50ID0gMCwKKyAgICAgIGxhc3RDYWxsZWQgPSAwOworCisgIHJldHVybiBmdW5jdGlvbihrZXksIHZhbHVlKSB7CisgICAgdmFyIHN0YW1wID0gbm93KCksCisgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7CisKKyAgICBsYXN0Q2FsbGVkID0gc3RhbXA7CisgICAgaWYgKHJlbWFpbmluZyA+IDApIHsKKyAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkgeworICAgICAgICByZXR1cm4ga2V5OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBjb3VudCA9IDA7CisgICAgfQorICAgIHJldHVybiBiYXNlU2V0RGF0YShrZXksIHZhbHVlKTsKKyAgfTsKK30oKSk7CisKK21vZHVsZS5leHBvcnRzID0gc2V0RGF0YTsKKworfSx7Ii4uL2RhdGUvbm93Ijo1NywiLi9iYXNlU2V0RGF0YSI6ODh9XSwxMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi4vbGFuZy9pc0FyZ3VtZW50cycpLAorICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9sYW5nL2lzQXJyYXknKSwKKyAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9pc0luZGV4JyksCisgICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksCisgICAgaXNTdHJpbmcgPSByZXF1aXJlKCcuLi9sYW5nL2lzU3RyaW5nJyksCisgICAga2V5c0luID0gcmVxdWlyZSgnLi4vb2JqZWN0L2tleXNJbicpOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTsKKworLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovCit2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTsKKworLyoqCisgKiBBIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGBPYmplY3Qua2V5c2Agd2hpY2ggY3JlYXRlcyBhbiBhcnJheSBvZiB0aGUKKyAqIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLgorICoKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLgorICovCitmdW5jdGlvbiBzaGltS2V5cyhvYmplY3QpIHsKKyAgdmFyIHByb3BzID0ga2V5c0luKG9iamVjdCksCisgICAgICBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aCwKKyAgICAgIGxlbmd0aCA9IHByb3BzTGVuZ3RoICYmIG9iamVjdC5sZW5ndGg7CisKKyAgdmFyIGFsbG93SW5kZXhlcyA9ICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYKKyAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkgfHwgaXNTdHJpbmcob2JqZWN0KSk7CisKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICByZXN1bHQgPSBbXTsKKworICB3aGlsZSAoKytpbmRleCA8IHByb3BzTGVuZ3RoKSB7CisgICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTsKKyAgICBpZiAoKGFsbG93SW5kZXhlcyAmJiBpc0luZGV4KGtleSwgbGVuZ3RoKSkgfHwgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHsKKyAgICAgIHJlc3VsdC5wdXNoKGtleSk7CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gc2hpbUtleXM7CisKK30seyIuLi9sYW5nL2lzQXJndW1lbnRzIjoxMzksIi4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzU3RyaW5nIjoxNDYsIi4uL29iamVjdC9rZXlzSW4iOjE1MCwiLi9pc0luZGV4IjoxMjEsIi4vaXNMZW5ndGgiOjEyNX1dLDEzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9sYW5nL2lzT2JqZWN0JyksCisgICAgaXNTdHJpbmcgPSByZXF1aXJlKCcuLi9sYW5nL2lzU3RyaW5nJyksCisgICAgc3VwcG9ydCA9IHJlcXVpcmUoJy4uL3N1cHBvcnQnKTsKKworLyoqCisgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIG9iamVjdCBpZiBpdCdzIG5vdCBvbmUuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuCisgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBvYmplY3QuCisgKi8KK2Z1bmN0aW9uIHRvT2JqZWN0KHZhbHVlKSB7CisgIGlmIChzdXBwb3J0LnVuaW5kZXhlZENoYXJzICYmIGlzU3RyaW5nKHZhbHVlKSkgeworICAgIHZhciBpbmRleCA9IC0xLAorICAgICAgICBsZW5ndGggPSB2YWx1ZS5sZW5ndGgsCisgICAgICAgIHJlc3VsdCA9IE9iamVjdCh2YWx1ZSk7CisKKyAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkgeworICAgICAgcmVzdWx0W2luZGV4XSA9IHZhbHVlLmNoYXJBdChpbmRleCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSA/IHZhbHVlIDogT2JqZWN0KHZhbHVlKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB0b09iamVjdDsKKworfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi4vbGFuZy9pc1N0cmluZyI6MTQ2LCIuLi9zdXBwb3J0IjoxNTN9XSwxMzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vYmFzZVRvU3RyaW5nJyksCisgICAgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpOworCisvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovCit2YXIgcmVQcm9wTmFtZSA9IC9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxuXFxdfFxcLikqPylcMilcXS9nOworCisvKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi8KK3ZhciByZUVzY2FwZUNoYXIgPSAvXFwoXFwpPy9nOworCisvKioKKyAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gcHJvcGVydHkgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuCisgKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHByb3BlcnR5IHBhdGggYXJyYXkuCisgKi8KK2Z1bmN0aW9uIHRvUGF0aCh2YWx1ZSkgeworICBpZiAoaXNBcnJheSh2YWx1ZSkpIHsKKyAgICByZXR1cm4gdmFsdWU7CisgIH0KKyAgdmFyIHJlc3VsdCA9IFtdOworICBiYXNlVG9TdHJpbmcodmFsdWUpLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN0cmluZykgeworICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTsKKyAgfSk7CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gdG9QYXRoOworCit9LHsiLi4vbGFuZy9pc0FycmF5IjoxNDAsIi4vYmFzZVRvU3RyaW5nIjo5MH1dLDEzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgTGF6eVdyYXBwZXIgPSByZXF1aXJlKCcuL0xhenlXcmFwcGVyJyksCisgICAgTG9kYXNoV3JhcHBlciA9IHJlcXVpcmUoJy4vTG9kYXNoV3JhcHBlcicpLAorICAgIGFycmF5Q29weSA9IHJlcXVpcmUoJy4vYXJyYXlDb3B5Jyk7CisKKy8qKgorICogQ3JlYXRlcyBhIGNsb25lIG9mIGB3cmFwcGVyYC4KKyAqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtPYmplY3R9IHdyYXBwZXIgVGhlIHdyYXBwZXIgdG8gY2xvbmUuCisgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgd3JhcHBlci4KKyAqLworZnVuY3Rpb24gd3JhcHBlckNsb25lKHdyYXBwZXIpIHsKKyAgcmV0dXJuIHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcgorICAgID8gd3JhcHBlci5jbG9uZSgpCisgICAgOiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVyLl9fd3JhcHBlZF9fLCB3cmFwcGVyLl9fY2hhaW5fXywgYXJyYXlDb3B5KHdyYXBwZXIuX19hY3Rpb25zX18pKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB3cmFwcGVyQ2xvbmU7CisKK30seyIuL0xhenlXcmFwcGVyIjo2MCwiLi9Mb2Rhc2hXcmFwcGVyIjo2MSwiLi9hcnJheUNvcHkiOjYyfV0sMTM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iYXNlQ2xvbmUnKSwKKyAgICBiaW5kQ2FsbGJhY2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iaW5kQ2FsbGJhY2snKTsKKworLyoqCisgKiBDcmVhdGVzIGEgZGVlcCBjbG9uZSBvZiBgdmFsdWVgLiBJZiBgY3VzdG9taXplcmAgaXMgcHJvdmlkZWQgaXQncyBpbnZva2VkCisgKiB0byBwcm9kdWNlIHRoZSBjbG9uZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCBjbG9uaW5nCisgKiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBib3VuZCB0byBgdGhpc0FyZ2AKKyAqIGFuZCBpbnZva2VkIHdpdGggdXAgdG8gdGhyZWUgYXJndW1lbnQ7ICh2YWx1ZSBbLCBpbmRleHxrZXksIG9iamVjdF0pLgorICoKKyAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZQorICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmZyYXN0cnVjdHVyZS5odG1sI2ludGVybmFsLXN0cnVjdHVyZWQtY2xvbmluZy1hbGdvcml0aG0pLgorICogVGhlIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFuZCBvYmplY3RzIGNyZWF0ZWQgYnkKKyAqIGNvbnN0cnVjdG9ycyBvdGhlciB0aGFuIGBPYmplY3RgIGFyZSBjbG9uZWQgdG8gcGxhaW4gYE9iamVjdGAgb2JqZWN0cy4gQW4KKyAqIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2ggYXMgZnVuY3Rpb25zLCBET00gbm9kZXMsCisgKiBNYXBzLCBTZXRzLCBhbmQgV2Vha01hcHMuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBkZWVwIGNsb25lLgorICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZyB2YWx1ZXMuCisgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGN1c3RvbWl6ZXJgLgorICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLgorICogQGV4YW1wbGUKKyAqCisgKiB2YXIgdXNlcnMgPSBbCisgKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LAorICogICB7ICd1c2VyJzogJ2ZyZWQnIH0KKyAqIF07CisgKgorICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcCh1c2Vycyk7CisgKiBkZWVwWzBdID09PSB1c2Vyc1swXTsKKyAqIC8vID0+IGZhbHNlCisgKgorICogLy8gdXNpbmcgYSBjdXN0b21pemVyIGNhbGxiYWNrCisgKiB2YXIgZWwgPSBfLmNsb25lRGVlcChkb2N1bWVudC5ib2R5LCBmdW5jdGlvbih2YWx1ZSkgeworICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7CisgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTsKKyAqICAgfQorICogfSk7CisgKgorICogZWwgPT09IGRvY3VtZW50LmJvZHkKKyAqIC8vID0+IGZhbHNlCisgKiBlbC5ub2RlTmFtZQorICogLy8gPT4gQk9EWQorICogZWwuY2hpbGROb2Rlcy5sZW5ndGg7CisgKiAvLyA9PiAyMAorICovCitmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUsIGN1c3RvbWl6ZXIsIHRoaXNBcmcpIHsKKyAgcmV0dXJuIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicKKyAgICA/IGJhc2VDbG9uZSh2YWx1ZSwgdHJ1ZSwgYmluZENhbGxiYWNrKGN1c3RvbWl6ZXIsIHRoaXNBcmcsIDMpKQorICAgIDogYmFzZUNsb25lKHZhbHVlLCB0cnVlKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBjbG9uZURlZXA7CisKK30seyIuLi9pbnRlcm5hbC9iYXNlQ2xvbmUiOjY4LCIuLi9pbnRlcm5hbC9iaW5kQ2FsbGJhY2siOjk0fV0sMTM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lzQXJyYXlMaWtlJyksCisgICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlJyk7CisKKy8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi8KK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5OworCisvKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7CisKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgYXJndW1lbnRzYCBvYmplY3QuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7CisgKiAvLyA9PiB0cnVlCisgKgorICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pOworICogLy8gPT4gZmFsc2UKKyAqLworZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHsKKyAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNBcnJheUxpa2UodmFsdWUpICYmCisgICAgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7CisKK30seyIuLi9pbnRlcm5hbC9pc0FycmF5TGlrZSI6MTE5LCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiOjEyNn1dLDE0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvZ2V0TmF0aXZlJyksCisgICAgaXNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0xlbmd0aCcpLAorICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lzT2JqZWN0TGlrZScpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTsKKworLyoqCisgKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKQorICogb2YgdmFsdWVzLgorICovCit2YXIgb2JqVG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZzsKKworLyogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi8KK3ZhciBuYXRpdmVJc0FycmF5ID0gZ2V0TmF0aXZlKEFycmF5LCAnaXNBcnJheScpOworCisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaXNBcnJheShbMSwgMiwgM10pOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaXNBcnJheShmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTsKKyAqIC8vID0+IGZhbHNlCisgKi8KK3ZhciBpc0FycmF5ID0gbmF0aXZlSXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkgeworICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmIG9ialRvU3RyaW5nLmNhbGwodmFsdWUpID09IGFycmF5VGFnOworfTsKKworbW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5OworCit9LHsiLi4vaW50ZXJuYWwvZ2V0TmF0aXZlIjoxMTQsIi4uL2ludGVybmFsL2lzTGVuZ3RoIjoxMjUsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2fV0sMTQxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSwKKyAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksCisgICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0FycmF5TGlrZScpLAorICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSwKKyAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc09iamVjdExpa2UnKSwKKyAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSwKKyAgICBrZXlzID0gcmVxdWlyZSgnLi4vb2JqZWN0L2tleXMnKTsKKworLyoqCisgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBlbXB0eS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGVtcHR5IHVubGVzcyBpdCdzIGFuCisgKiBgYXJndW1lbnRzYCBvYmplY3QsIGFycmF5LCBzdHJpbmcsIG9yIGpRdWVyeS1saWtlIGNvbGxlY3Rpb24gd2l0aCBhIGxlbmd0aAorICogZ3JlYXRlciB0aGFuIGAwYCBvciBhbiBvYmplY3Qgd2l0aCBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzLgorICoKKyAqIEBzdGF0aWMKKyAqIEBtZW1iZXJPZiBfCisgKiBAY2F0ZWdvcnkgTGFuZworICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaXNFbXB0eShudWxsKTsKKyAqIC8vID0+IHRydWUKKyAqCisgKiBfLmlzRW1wdHkodHJ1ZSk7CisgKiAvLyA9PiB0cnVlCisgKgorICogXy5pc0VtcHR5KDEpOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaXNFbXB0eShbMSwgMiwgM10pOworICogLy8gPT4gZmFsc2UKKyAqCisgKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7CisgKiAvLyA9PiBmYWxzZQorICovCitmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7CisgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJiAoaXNBcnJheSh2YWx1ZSkgfHwgaXNTdHJpbmcodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fAorICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNGdW5jdGlvbih2YWx1ZS5zcGxpY2UpKSkpIHsKKyAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDsKKyAgfQorICByZXR1cm4gIWtleXModmFsdWUpLmxlbmd0aDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc0VtcHR5OworCit9LHsiLi4vaW50ZXJuYWwvaXNBcnJheUxpa2UiOjExOSwiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIjoxMjYsIi4uL29iamVjdC9rZXlzIjoxNDksIi4vaXNBcmd1bWVudHMiOjEzOSwiLi9pc0FycmF5IjoxNDAsIi4vaXNGdW5jdGlvbiI6MTQyLCIuL2lzU3RyaW5nIjoxNDZ9XSwxNDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CisKKy8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpCisgKiBvZiB2YWx1ZXMuCisgKi8KK3ZhciBvYmpUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nOworCisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IExhbmcKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC4KKyAqIEBleGFtcGxlCisgKgorICogXy5pc0Z1bmN0aW9uKF8pOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaXNGdW5jdGlvbigvYWJjLyk7CisgKiAvLyA9PiBmYWxzZQorICovCitmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7CisgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvcgorICAvLyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaSB3aGljaCByZXR1cm4gJ2Z1bmN0aW9uJyBmb3IgcmVnZXhlcworICAvLyBhbmQgU2FmYXJpIDggd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgY29uc3RydWN0b3JzLgorICByZXR1cm4gaXNPYmplY3QodmFsdWUpICYmIG9ialRvU3RyaW5nLmNhbGwodmFsdWUpID09IGZ1bmNUYWc7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjsKKworfSx7Ii4vaXNPYmplY3QiOjE0NH1dLDE0MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLAorICAgIGlzSG9zdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lzSG9zdE9iamVjdCcpLAorICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lzT2JqZWN0TGlrZScpOworCisvKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSA+IDUpLiAqLwordmFyIHJlSXNIb3N0Q3RvciA9IC9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTsKKworLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqLwordmFyIGZuVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7CisKKy8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqLwordmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7CisKKy8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovCit2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgKworICBmblRvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCAnXFwkJicpCisgIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCAnJDEuKj8nKSArICckJworKTsKKworLyoqCisgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbi4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IExhbmcKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC4KKyAqIEBleGFtcGxlCisgKgorICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7CisgKiAvLyA9PiB0cnVlCisgKgorICogXy5pc05hdGl2ZShfKTsKKyAqIC8vID0+IGZhbHNlCisgKi8KK2Z1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7CisgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkgeworICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3QoZm5Ub1N0cmluZy5jYWxsKHZhbHVlKSk7CisgIH0KKyAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgKGlzSG9zdE9iamVjdCh2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yKS50ZXN0KHZhbHVlKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc05hdGl2ZTsKKworfSx7Ii4uL2ludGVybmFsL2lzSG9zdE9iamVjdCI6MTIwLCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiOjEyNiwiLi9pc0Z1bmN0aW9uIjoxNDJ9XSwxNDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGUgW2xhbmd1YWdlIHR5cGVdKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDgpIG9mIGBPYmplY3RgLgorICogKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLgorICogQGV4YW1wbGUKKyAqCisgKiBfLmlzT2JqZWN0KHt9KTsKKyAqIC8vID0+IHRydWUKKyAqCisgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7CisgKiAvLyA9PiB0cnVlCisgKgorICogXy5pc09iamVjdCgxKTsKKyAqIC8vID0+IGZhbHNlCisgKi8KK2Z1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7CisgIC8vIEF2b2lkIGEgVjggSklUIGJ1ZyBpbiBDaHJvbWUgMTktMjAuCisgIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjI5MSBmb3IgbW9yZSBkZXRhaWxzLgorICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKyAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDsKKworfSx7fV0sMTQ1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlRm9ySW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iYXNlRm9ySW4nKSwKKyAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSwKKyAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0hvc3RPYmplY3QnKSwKKyAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc09iamVjdExpa2UnKSwKKyAgICBzdXBwb3J0ID0gcmVxdWlyZSgnLi4vc3VwcG9ydCcpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7CisKKy8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi8KK3ZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5OworCisvKioKKyAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpCisgKiBvZiB2YWx1ZXMuCisgKi8KK3ZhciBvYmpUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nOworCisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGUKKyAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC4KKyAqCisgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgYXNzdW1lcyBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yCisgKiBoYXZlIG5vIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIGZ1bmN0aW9uIEZvbygpIHsKKyAqICAgdGhpcy5hID0gMTsKKyAqIH0KKyAqCisgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7CisgKiAvLyA9PiBmYWxzZQorICoKKyAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pOworICogLy8gPT4gZmFsc2UKKyAqCisgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTsKKyAqIC8vID0+IHRydWUKKyAqCisgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7CisgKiAvLyA9PiB0cnVlCisgKi8KK2Z1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHsKKyAgdmFyIEN0b3I7CisKKyAgLy8gRXhpdCBlYXJseSBmb3Igbm9uIGBPYmplY3RgIG9iamVjdHMuCisgIGlmICghKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gb2JqZWN0VGFnICYmICFpc0hvc3RPYmplY3QodmFsdWUpICYmICFpc0FyZ3VtZW50cyh2YWx1ZSkpIHx8CisgICAgICAoIWhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjb25zdHJ1Y3RvcicpICYmIChDdG9yID0gdmFsdWUuY29uc3RydWN0b3IsIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgIShDdG9yIGluc3RhbmNlb2YgQ3RvcikpKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICAvLyBJRSA8IDkgaXRlcmF0ZXMgaW5oZXJpdGVkIHByb3BlcnRpZXMgYmVmb3JlIG93biBwcm9wZXJ0aWVzLiBJZiB0aGUgZmlyc3QKKyAgLy8gaXRlcmF0ZWQgcHJvcGVydHkgaXMgYW4gb2JqZWN0J3Mgb3duIHByb3BlcnR5IHRoZW4gdGhlcmUgYXJlIG5vIGluaGVyaXRlZAorICAvLyBlbnVtZXJhYmxlIHByb3BlcnRpZXMuCisgIHZhciByZXN1bHQ7CisgIGlmIChzdXBwb3J0Lm93bkxhc3QpIHsKKyAgICBiYXNlRm9ySW4odmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXksIG9iamVjdCkgeworICAgICAgcmVzdWx0ID0gaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdCAhPT0gZmFsc2U7CisgIH0KKyAgLy8gSW4gbW9zdCBlbnZpcm9ubWVudHMgYW4gb2JqZWN0J3Mgb3duIHByb3BlcnRpZXMgYXJlIGl0ZXJhdGVkIGJlZm9yZQorICAvLyBpdHMgaW5oZXJpdGVkIHByb3BlcnRpZXMuIElmIHRoZSBsYXN0IGl0ZXJhdGVkIHByb3BlcnR5IGlzIGFuIG9iamVjdCdzCisgIC8vIG93biBwcm9wZXJ0eSB0aGVuIHRoZXJlIGFyZSBubyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLgorICBiYXNlRm9ySW4odmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHsKKyAgICByZXN1bHQgPSBrZXk7CisgIH0pOworICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgcmVzdWx0KTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0OworCit9LHsiLi4vaW50ZXJuYWwvYmFzZUZvckluIjo3NSwiLi4vaW50ZXJuYWwvaXNIb3N0T2JqZWN0IjoxMjAsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2LCIuLi9zdXBwb3J0IjoxNTMsIi4vaXNBcmd1bWVudHMiOjEzOX1dLDE0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlJyk7CisKKy8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi8KK3ZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJzsKKworLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi8KK3ZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7CisKKy8qKgorICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZykKKyAqIG9mIHZhbHVlcy4KKyAqLwordmFyIG9ialRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7CisKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaXNTdHJpbmcoJ2FiYycpOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaXNTdHJpbmcoMSk7CisgKiAvLyA9PiBmYWxzZQorICovCitmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkgeworICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IChpc09iamVjdExpa2UodmFsdWUpICYmIG9ialRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN0cmluZ1RhZyk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNTdHJpbmc7CisKK30seyIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiOjEyNn1dLDE0NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgaXNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0xlbmd0aCcpLAorICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lzT2JqZWN0TGlrZScpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLAorICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJywKKyAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLAorICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsCisgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLAorICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLAorICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLAorICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLAorICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLAorICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLAorICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLAorICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLAorICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7CisKK3ZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsCisgICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLAorICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJywKKyAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsCisgICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsCisgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsCisgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsCisgICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJywKKyAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLAorICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7CisKKy8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi8KK3ZhciB0eXBlZEFycmF5VGFncyA9IHt9OwordHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9Cit0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9Cit0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPQordHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPQordHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7Cit0eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9Cit0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9Cit0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9Cit0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPQordHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPQordHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPQordHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7CisKKy8qKiBVc2VkIGZvciBuYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMuICovCit2YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpCisgKiBvZiB2YWx1ZXMuCisgKi8KK3ZhciBvYmpUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nOworCisvKioKKyAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IExhbmcKKyAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgorICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC4KKyAqIEBleGFtcGxlCisgKgorICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpOworICogLy8gPT4gdHJ1ZQorICoKKyAqIF8uaXNUeXBlZEFycmF5KFtdKTsKKyAqIC8vID0+IGZhbHNlCisgKi8KK2Z1bmN0aW9uIGlzVHlwZWRBcnJheSh2YWx1ZSkgeworICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqVG9TdHJpbmcuY2FsbCh2YWx1ZSldOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTsKKworfSx7Ii4uL2ludGVybmFsL2lzTGVuZ3RoIjoxMjUsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2fV0sMTQ4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBMYW5nCisgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay4KKyAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTsKKyAqIC8vID0+IHRydWUKKyAqCisgKiBfLmlzVW5kZWZpbmVkKG51bGwpOworICogLy8gPT4gZmFsc2UKKyAqLworZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHsKKyAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7CisKK30se31dLDE0OTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvZ2V0TmF0aXZlJyksCisgICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0FycmF5TGlrZScpLAorICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vbGFuZy9pc09iamVjdCcpLAorICAgIHNoaW1LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvc2hpbUtleXMnKSwKKyAgICBzdXBwb3J0ID0gcmVxdWlyZSgnLi4vc3VwcG9ydCcpOworCisvKiBOYXRpdmUgbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqLwordmFyIG5hdGl2ZUtleXMgPSBnZXROYXRpdmUoT2JqZWN0LCAna2V5cycpOworCisvKioKKyAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLgorICoKKyAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlCisgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LmtleXMpCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEBzdGF0aWMKKyAqIEBtZW1iZXJPZiBfCisgKiBAY2F0ZWdvcnkgT2JqZWN0CisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLgorICogQGV4YW1wbGUKKyAqCisgKiBmdW5jdGlvbiBGb28oKSB7CisgKiAgIHRoaXMuYSA9IDE7CisgKiAgIHRoaXMuYiA9IDI7CisgKiB9CisgKgorICogRm9vLnByb3RvdHlwZS5jID0gMzsKKyAqCisgKiBfLmtleXMobmV3IEZvbyk7CisgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpCisgKgorICogXy5rZXlzKCdoaScpOworICogLy8gPT4gWycwJywgJzEnXQorICovCit2YXIga2V5cyA9ICFuYXRpdmVLZXlzID8gc2hpbUtleXMgOiBmdW5jdGlvbihvYmplY3QpIHsKKyAgdmFyIEN0b3IgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdC5jb25zdHJ1Y3RvcjsKKyAgaWYgKCh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlID09PSBvYmplY3QpIHx8CisgICAgICAodHlwZW9mIG9iamVjdCA9PSAnZnVuY3Rpb24nID8gc3VwcG9ydC5lbnVtUHJvdG90eXBlcyA6IGlzQXJyYXlMaWtlKG9iamVjdCkpKSB7CisgICAgcmV0dXJuIHNoaW1LZXlzKG9iamVjdCk7CisgIH0KKyAgcmV0dXJuIGlzT2JqZWN0KG9iamVjdCkgPyBuYXRpdmVLZXlzKG9iamVjdCkgOiBbXTsKK307CisKK21vZHVsZS5leHBvcnRzID0ga2V5czsKKworfSx7Ii4uL2ludGVybmFsL2dldE5hdGl2ZSI6MTE0LCIuLi9pbnRlcm5hbC9pc0FycmF5TGlrZSI6MTE5LCIuLi9pbnRlcm5hbC9zaGltS2V5cyI6MTM0LCIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4uL3N1cHBvcnQiOjE1M31dLDE1MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYXJyYXlFYWNoJyksCisgICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuLi9sYW5nL2lzQXJndW1lbnRzJyksCisgICAgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2xhbmcvaXNBcnJheScpLAorICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9sYW5nL2lzRnVuY3Rpb24nKSwKKyAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNJbmRleCcpLAorICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvaXNMZW5ndGgnKSwKKyAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2xhbmcvaXNPYmplY3QnKSwKKyAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2xhbmcvaXNTdHJpbmcnKSwKKyAgICBzdXBwb3J0ID0gcmVxdWlyZSgnLi4vc3VwcG9ydCcpOworCisvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovCit2YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLAorICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsCisgICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJywKKyAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsCisgICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsCisgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsCisgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsCisgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsCisgICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7CisKKy8qKiBVc2VkIHRvIGZpeCB0aGUgSlNjcmlwdCBgW1tEb250RW51bV1dYCBidWcuICovCit2YXIgc2hhZG93UHJvcHMgPSBbCisgICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywKKyAgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnCitdOworCisvKiogVXNlZCBmb3IgbmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIGVycm9yUHJvdG8gPSBFcnJvci5wcm90b3R5cGUsCisgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlLAorICAgIHN0cmluZ1Byb3RvID0gU3RyaW5nLnByb3RvdHlwZTsKKworLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovCit2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTsKKworLyoqCisgKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKQorICogb2YgdmFsdWVzLgorICovCit2YXIgb2JqVG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZzsKKworLyoqIFVzZWQgdG8gYXZvaWQgaXRlcmF0aW5nIG92ZXIgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBpbiBJRSA8IDkuICovCit2YXIgbm9uRW51bVByb3BzID0ge307Citub25FbnVtUHJvcHNbYXJyYXlUYWddID0gbm9uRW51bVByb3BzW2RhdGVUYWddID0gbm9uRW51bVByb3BzW251bWJlclRhZ10gPSB7ICdjb25zdHJ1Y3Rvcic6IHRydWUsICd0b0xvY2FsZVN0cmluZyc6IHRydWUsICd0b1N0cmluZyc6IHRydWUsICd2YWx1ZU9mJzogdHJ1ZSB9Oworbm9uRW51bVByb3BzW2Jvb2xUYWddID0gbm9uRW51bVByb3BzW3N0cmluZ1RhZ10gPSB7ICdjb25zdHJ1Y3Rvcic6IHRydWUsICd0b1N0cmluZyc6IHRydWUsICd2YWx1ZU9mJzogdHJ1ZSB9Oworbm9uRW51bVByb3BzW2Vycm9yVGFnXSA9IG5vbkVudW1Qcm9wc1tmdW5jVGFnXSA9IG5vbkVudW1Qcm9wc1tyZWdleHBUYWddID0geyAnY29uc3RydWN0b3InOiB0cnVlLCAndG9TdHJpbmcnOiB0cnVlIH07Citub25FbnVtUHJvcHNbb2JqZWN0VGFnXSA9IHsgJ2NvbnN0cnVjdG9yJzogdHJ1ZSB9OworCithcnJheUVhY2goc2hhZG93UHJvcHMsIGZ1bmN0aW9uKGtleSkgeworICBmb3IgKHZhciB0YWcgaW4gbm9uRW51bVByb3BzKSB7CisgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwobm9uRW51bVByb3BzLCB0YWcpKSB7CisgICAgICB2YXIgcHJvcHMgPSBub25FbnVtUHJvcHNbdGFnXTsKKyAgICAgIHByb3BzW2tleV0gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpOworICAgIH0KKyAgfQorfSk7CisKKy8qKgorICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC4KKyAqCisgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4KKyAqCisgKiBAc3RhdGljCisgKiBAbWVtYmVyT2YgXworICogQGNhdGVnb3J5IE9iamVjdAorICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LgorICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy4KKyAqIEBleGFtcGxlCisgKgorICogZnVuY3Rpb24gRm9vKCkgeworICogICB0aGlzLmEgPSAxOworICogICB0aGlzLmIgPSAyOworICogfQorICoKKyAqIEZvby5wcm90b3R5cGUuYyA9IDM7CisgKgorICogXy5rZXlzSW4obmV3IEZvbyk7CisgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkKKyAqLworZnVuY3Rpb24ga2V5c0luKG9iamVjdCkgeworICBpZiAob2JqZWN0ID09IG51bGwpIHsKKyAgICByZXR1cm4gW107CisgIH0KKyAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7CisgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7CisgIH0KKyAgdmFyIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7CisKKyAgbGVuZ3RoID0gKGxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmCisgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpIHx8IGlzU3RyaW5nKG9iamVjdCkpICYmIGxlbmd0aCkgfHwgMDsKKworICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvciwKKyAgICAgIGluZGV4ID0gLTEsCisgICAgICBwcm90byA9IChpc0Z1bmN0aW9uKEN0b3IpICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bywKKyAgICAgIGlzUHJvdG8gPSBwcm90byA9PT0gb2JqZWN0LAorICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSwKKyAgICAgIHNraXBJbmRleGVzID0gbGVuZ3RoID4gMCwKKyAgICAgIHNraXBFcnJvclByb3BzID0gc3VwcG9ydC5lbnVtRXJyb3JQcm9wcyAmJiAob2JqZWN0ID09PSBlcnJvclByb3RvIHx8IG9iamVjdCBpbnN0YW5jZW9mIEVycm9yKSwKKyAgICAgIHNraXBQcm90byA9IHN1cHBvcnQuZW51bVByb3RvdHlwZXMgJiYgaXNGdW5jdGlvbihvYmplY3QpOworCisgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7CisgICAgcmVzdWx0W2luZGV4XSA9IChpbmRleCArICcnKTsKKyAgfQorICAvLyBsb2Rhc2ggc2tpcHMgdGhlIGBjb25zdHJ1Y3RvcmAgcHJvcGVydHkgd2hlbiBpdCBpbmZlcnMgaXQncyBpdGVyYXRpbmcKKyAgLy8gb3ZlciBhIGBwcm90b3R5cGVgIG9iamVjdCBiZWNhdXNlIElFIDwgOSBjYW4ndCBzZXQgdGhlIGBbW0VudW1lcmFibGVdXWAKKyAgLy8gYXR0cmlidXRlIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5IGFuZCB0aGUgYGNvbnN0cnVjdG9yYCBwcm9wZXJ0eSBvZiBhCisgIC8vIHByb3RvdHlwZSBkZWZhdWx0cyB0byBub24tZW51bWVyYWJsZS4KKyAgZm9yICh2YXIga2V5IGluIG9iamVjdCkgeworICAgIGlmICghKHNraXBQcm90byAmJiBrZXkgPT0gJ3Byb3RvdHlwZScpICYmCisgICAgICAgICEoc2tpcEVycm9yUHJvcHMgJiYgKGtleSA9PSAnbWVzc2FnZScgfHwga2V5ID09ICduYW1lJykpICYmCisgICAgICAgICEoc2tpcEluZGV4ZXMgJiYgaXNJbmRleChrZXksIGxlbmd0aCkpICYmCisgICAgICAgICEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHsKKyAgICAgIHJlc3VsdC5wdXNoKGtleSk7CisgICAgfQorICB9CisgIGlmIChzdXBwb3J0Lm5vbkVudW1TaGFkb3dzICYmIG9iamVjdCAhPT0gb2JqZWN0UHJvdG8pIHsKKyAgICB2YXIgdGFnID0gb2JqZWN0ID09PSBzdHJpbmdQcm90byA/IHN0cmluZ1RhZyA6IChvYmplY3QgPT09IGVycm9yUHJvdG8gPyBlcnJvclRhZyA6IG9ialRvU3RyaW5nLmNhbGwob2JqZWN0KSksCisgICAgICAgIG5vbkVudW1zID0gbm9uRW51bVByb3BzW3RhZ10gfHwgbm9uRW51bVByb3BzW29iamVjdFRhZ107CisKKyAgICBpZiAodGFnID09IG9iamVjdFRhZykgeworICAgICAgcHJvdG8gPSBvYmplY3RQcm90bzsKKyAgICB9CisgICAgbGVuZ3RoID0gc2hhZG93UHJvcHMubGVuZ3RoOworICAgIHdoaWxlIChsZW5ndGgtLSkgeworICAgICAga2V5ID0gc2hhZG93UHJvcHNbbGVuZ3RoXTsKKyAgICAgIHZhciBub25FbnVtID0gbm9uRW51bXNba2V5XTsKKyAgICAgIGlmICghKGlzUHJvdG8gJiYgbm9uRW51bSkgJiYKKyAgICAgICAgICAobm9uRW51bSA/IGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpIDogb2JqZWN0W2tleV0gIT09IHByb3RvW2tleV0pKSB7CisgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiByZXN1bHQ7Cit9CisKK21vZHVsZS5leHBvcnRzID0ga2V5c0luOworCit9LHsiLi4vaW50ZXJuYWwvYXJyYXlFYWNoIjo2MywiLi4vaW50ZXJuYWwvaXNJbmRleCI6MTIxLCIuLi9pbnRlcm5hbC9pc0xlbmd0aCI6MTI1LCIuLi9sYW5nL2lzQXJndW1lbnRzIjoxMzksIi4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzRnVuY3Rpb24iOjE0MiwiLi4vbGFuZy9pc09iamVjdCI6MTQ0LCIuLi9sYW5nL2lzU3RyaW5nIjoxNDYsIi4uL3N1cHBvcnQiOjE1M31dLDE1MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7Cit2YXIga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLAorICAgIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvdG9PYmplY3QnKTsKKworLyoqCisgKiBDcmVhdGVzIGEgdHdvIGRpbWVuc2lvbmFsIGFycmF5IG9mIHRoZSBrZXktdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgLAorICogZS5nLiBgW1trZXkxLCB2YWx1ZTFdLCBba2V5MiwgdmFsdWUyXV1gLgorICoKKyAqIEBzdGF0aWMKKyAqIEBtZW1iZXJPZiBfCisgKiBAY2F0ZWdvcnkgT2JqZWN0CisgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuCisgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMuCisgKiBAZXhhbXBsZQorICoKKyAqIF8ucGFpcnMoeyAnYmFybmV5JzogMzYsICdmcmVkJzogNDAgfSk7CisgKiAvLyA9PiBbWydiYXJuZXknLCAzNl0sIFsnZnJlZCcsIDQwXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkKKyAqLworZnVuY3Rpb24gcGFpcnMob2JqZWN0KSB7CisgIG9iamVjdCA9IHRvT2JqZWN0KG9iamVjdCk7CisKKyAgdmFyIGluZGV4ID0gLTEsCisgICAgICBwcm9wcyA9IGtleXMob2JqZWN0KSwKKyAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aCwKKyAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7CisKKyAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHsKKyAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdOworICAgIHJlc3VsdFtpbmRleF0gPSBba2V5LCBvYmplY3Rba2V5XV07CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBwYWlyczsKKworfSx7Ii4uL2ludGVybmFsL3RvT2JqZWN0IjoxMzUsIi4va2V5cyI6MTQ5fV0sMTUyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKK3ZhciBiYXNlVmFsdWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvYmFzZVZhbHVlcycpLAorICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTsKKworLyoqCisgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuCisgKgorICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBPYmplY3QKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS4KKyAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLgorICogQGV4YW1wbGUKKyAqCisgKiBmdW5jdGlvbiBGb28oKSB7CisgKiAgIHRoaXMuYSA9IDE7CisgKiAgIHRoaXMuYiA9IDI7CisgKiB9CisgKgorICogRm9vLnByb3RvdHlwZS5jID0gMzsKKyAqCisgKiBfLnZhbHVlcyhuZXcgRm9vKTsKKyAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKQorICoKKyAqIF8udmFsdWVzKCdoaScpOworICogLy8gPT4gWydoJywgJ2knXQorICovCitmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7CisgIHJldHVybiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSB2YWx1ZXM7CisKK30seyIuLi9pbnRlcm5hbC9iYXNlVmFsdWVzIjo5MSwiLi9rZXlzIjoxNDl9XSwxNTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqIFVzZWQgZm9yIG5hdGl2ZSBtZXRob2QgcmVmZXJlbmNlcy4gKi8KK3ZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlLAorICAgIGVycm9yUHJvdG8gPSBFcnJvci5wcm90b3R5cGUsCisgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlOworCisvKiogTmF0aXZlIG1ldGhvZCByZWZlcmVuY2VzLiAqLwordmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsCisgICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7CisKKy8qKgorICogQW4gb2JqZWN0IGVudmlyb25tZW50IGZlYXR1cmUgZmxhZ3MuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEB0eXBlIE9iamVjdAorICovCit2YXIgc3VwcG9ydCA9IHt9OworCisoZnVuY3Rpb24oeCkgeworICB2YXIgQ3RvciA9IGZ1bmN0aW9uKCkgeyB0aGlzLnggPSB4OyB9LAorICAgICAgb2JqZWN0ID0geyAnMCc6IHgsICdsZW5ndGgnOiB4IH0sCisgICAgICBwcm9wcyA9IFtdOworCisgIEN0b3IucHJvdG90eXBlID0geyAndmFsdWVPZic6IHgsICd5JzogeCB9OworICBmb3IgKHZhciBrZXkgaW4gbmV3IEN0b3IpIHsgcHJvcHMucHVzaChrZXkpOyB9CisKKyAgLyoqCisgICAqIERldGVjdCBpZiBgbmFtZWAgb3IgYG1lc3NhZ2VgIHByb3BlcnRpZXMgb2YgYEVycm9yLnByb3RvdHlwZWAgYXJlCisgICAqIGVudW1lcmFibGUgYnkgZGVmYXVsdCAoSUUgPCA5LCBTYWZhcmkgPCA1LjEpLgorICAgKgorICAgKiBAbWVtYmVyT2YgXy5zdXBwb3J0CisgICAqIEB0eXBlIGJvb2xlYW4KKyAgICovCisgIHN1cHBvcnQuZW51bUVycm9yUHJvcHMgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGVycm9yUHJvdG8sICdtZXNzYWdlJykgfHwKKyAgICBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGVycm9yUHJvdG8sICduYW1lJyk7CisKKyAgLyoqCisgICAqIERldGVjdCBpZiBgcHJvdG90eXBlYCBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhYmxlIGJ5IGRlZmF1bHQuCisgICAqCisgICAqIEZpcmVmb3ggPCAzLjYsIE9wZXJhID4gOS41MCAtIE9wZXJhIDwgMTEuNjAsIGFuZCBTYWZhcmkgPCA1LjEKKyAgICogKGlmIHRoZSBwcm90b3R5cGUgb3IgYSBwcm9wZXJ0eSBvbiB0aGUgcHJvdG90eXBlIGhhcyBiZWVuIHNldCkKKyAgICogaW5jb3JyZWN0bHkgc2V0IHRoZSBgW1tFbnVtZXJhYmxlXV1gIHZhbHVlIG9mIGEgZnVuY3Rpb24ncyBgcHJvdG90eXBlYAorICAgKiBwcm9wZXJ0eSB0byBgdHJ1ZWAuCisgICAqCisgICAqIEBtZW1iZXJPZiBfLnN1cHBvcnQKKyAgICogQHR5cGUgYm9vbGVhbgorICAgKi8KKyAgc3VwcG9ydC5lbnVtUHJvdG90eXBlcyA9IHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoQ3RvciwgJ3Byb3RvdHlwZScpOworCisgIC8qKgorICAgKiBEZXRlY3QgaWYgcHJvcGVydGllcyBzaGFkb3dpbmcgdGhvc2Ugb24gYE9iamVjdC5wcm90b3R5cGVgIGFyZSBub24tZW51bWVyYWJsZS4KKyAgICoKKyAgICogSW4gSUUgPCA5IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzLCBzaGFkb3dpbmcgbm9uLWVudW1lcmFibGUgb25lcywKKyAgICogYXJlIG1hZGUgbm9uLWVudW1lcmFibGUgYXMgd2VsbCAoYS5rLmEgdGhlIEpTY3JpcHQgYFtbRG9udEVudW1dXWAgYnVnKS4KKyAgICoKKyAgICogQG1lbWJlck9mIF8uc3VwcG9ydAorICAgKiBAdHlwZSBib29sZWFuCisgICAqLworICBzdXBwb3J0Lm5vbkVudW1TaGFkb3dzID0gIS92YWx1ZU9mLy50ZXN0KHByb3BzKTsKKworICAvKioKKyAgICogRGV0ZWN0IGlmIG93biBwcm9wZXJ0aWVzIGFyZSBpdGVyYXRlZCBhZnRlciBpbmhlcml0ZWQgcHJvcGVydGllcyAoSUUgPCA5KS4KKyAgICoKKyAgICogQG1lbWJlck9mIF8uc3VwcG9ydAorICAgKiBAdHlwZSBib29sZWFuCisgICAqLworICBzdXBwb3J0Lm93bkxhc3QgPSBwcm9wc1swXSAhPSAneCc7CisKKyAgLyoqCisgICAqIERldGVjdCBpZiBgQXJyYXkjc2hpZnRgIGFuZCBgQXJyYXkjc3BsaWNlYCBhdWdtZW50IGFycmF5LWxpa2Ugb2JqZWN0cworICAgKiBjb3JyZWN0bHkuCisgICAqCisgICAqIEZpcmVmb3ggPCAxMCwgY29tcGF0aWJpbGl0eSBtb2RlcyBvZiBJRSA4LCBhbmQgSUUgPCA5IGhhdmUgYnVnZ3kgQXJyYXkKKyAgICogYHNoaWZ0KClgIGFuZCBgc3BsaWNlKClgIGZ1bmN0aW9ucyB0aGF0IGZhaWwgdG8gcmVtb3ZlIHRoZSBsYXN0IGVsZW1lbnQsCisgICAqIGB2YWx1ZVswXWAsIG9mIGFycmF5LWxpa2Ugb2JqZWN0cyBldmVuIHRob3VnaCB0aGUgImxlbmd0aCIgcHJvcGVydHkgaXMKKyAgICogc2V0IHRvIGAwYC4gVGhlIGBzaGlmdCgpYCBtZXRob2QgaXMgYnVnZ3kgaW4gY29tcGF0aWJpbGl0eSBtb2RlcyBvZiBJRSA4LAorICAgKiB3aGlsZSBgc3BsaWNlKClgIGlzIGJ1Z2d5IHJlZ2FyZGxlc3Mgb2YgbW9kZSBpbiBJRSA8IDkuCisgICAqCisgICAqIEBtZW1iZXJPZiBfLnN1cHBvcnQKKyAgICogQHR5cGUgYm9vbGVhbgorICAgKi8KKyAgc3VwcG9ydC5zcGxpY2VPYmplY3RzID0gKHNwbGljZS5jYWxsKG9iamVjdCwgMCwgMSksICFvYmplY3RbMF0pOworCisgIC8qKgorICAgKiBEZXRlY3QgbGFjayBvZiBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgc3RyaW5nIGNoYXJhY3RlcnMgYnkgaW5kZXguCisgICAqCisgICAqIElFIDwgOCBjYW4ndCBhY2Nlc3MgY2hhcmFjdGVycyBieSBpbmRleC4gSUUgOCBjYW4gb25seSBhY2Nlc3MgY2hhcmFjdGVycworICAgKiBieSBpbmRleCBvbiBzdHJpbmcgbGl0ZXJhbHMsIG5vdCBzdHJpbmcgb2JqZWN0cy4KKyAgICoKKyAgICogQG1lbWJlck9mIF8uc3VwcG9ydAorICAgKiBAdHlwZSBib29sZWFuCisgICAqLworICBzdXBwb3J0LnVuaW5kZXhlZENoYXJzID0gKCd4J1swXSArIE9iamVjdCgneCcpWzBdKSAhPSAneHgnOworfSgxLCAwKSk7CisKK21vZHVsZS5leHBvcnRzID0gc3VwcG9ydDsKKworfSx7fV0sMTU0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZWQgdG8gaXQuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBVdGlsaXR5CisgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS4KKyAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuCisgKiBAZXhhbXBsZQorICoKKyAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07CisgKgorICogXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3Q7CisgKiAvLyA9PiB0cnVlCisgKi8KK2Z1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7CisgIHJldHVybiB2YWx1ZTsKK30KKworbW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTsKKworfSx7fV0sMTU1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXsKKy8qKgorICogQSBuby1vcGVyYXRpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB1bmRlZmluZWRgIHJlZ2FyZGxlc3Mgb2YgdGhlCisgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBVdGlsaXR5CisgKiBAZXhhbXBsZQorICoKKyAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07CisgKgorICogXy5ub29wKG9iamVjdCkgPT09IHVuZGVmaW5lZDsKKyAqIC8vID0+IHRydWUKKyAqLworZnVuY3Rpb24gbm9vcCgpIHsKKyAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC4KK30KKworbW9kdWxlLmV4cG9ydHMgPSBub29wOworCit9LHt9XSwxNTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpewordmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2Jhc2VQcm9wZXJ0eScpLAorICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9iYXNlUHJvcGVydHlEZWVwJyksCisgICAgaXNLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9pc0tleScpOworCisvKioKKyAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlIGF0IGBwYXRoYCBvbiBhCisgKiBnaXZlbiBvYmplY3QuCisgKgorICogQHN0YXRpYworICogQG1lbWJlck9mIF8KKyAqIEBjYXRlZ29yeSBVdGlsaXR5CisgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LgorICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uCisgKiBAZXhhbXBsZQorICoKKyAqIHZhciBvYmplY3RzID0gWworICogICB7ICdhJzogeyAnYic6IHsgJ2MnOiAyIH0gfSB9LAorICogICB7ICdhJzogeyAnYic6IHsgJ2MnOiAxIH0gfSB9CisgKiBdOworICoKKyAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYi5jJykpOworICogLy8gPT4gWzIsIDFdCisgKgorICogXy5wbHVjayhfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJywgJ2MnXSkpLCAnYS5iLmMnKTsKKyAqIC8vID0+IFsxLCAyXQorICovCitmdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7CisgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eShwYXRoKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7Cit9CisKK21vZHVsZS5leHBvcnRzID0gcHJvcGVydHk7CisKK30seyIuLi9pbnRlcm5hbC9iYXNlUHJvcGVydHkiOjg2LCIuLi9pbnRlcm5hbC9iYXNlUHJvcGVydHlEZWVwIjo4NywiLi4vaW50ZXJuYWwvaXNLZXkiOjEyM31dLDE1NzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisoZnVuY3Rpb24gKHByb2Nlc3MpeworLy8gdmltOnRzPTQ6c3RzPTQ6c3c9NDoKKy8qIQorICoKKyAqIENvcHlyaWdodCAyMDA5LTIwMTIgS3JpcyBLb3dhbCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVAorICogbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcS9yYXcvbWFzdGVyL0xJQ0VOU0UKKyAqCisgKiBXaXRoIHBhcnRzIGJ5IFR5bGVyIENsb3NlCisgKiBDb3B5cmlnaHQgMjAwNy0yMDA5IFR5bGVyIENsb3NlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIFggbGljZW5zZSBmb3VuZAorICogYXQgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5odG1sCisgKiBGb3JrZWQgYXQgcmVmX3NlbmQuanMgdmVyc2lvbjogMjAwOS0wNS0xMQorICoKKyAqIFdpdGggcGFydHMgYnkgTWFyayBNaWxsZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyhmdW5jdGlvbiAoZGVmaW5pdGlvbikgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIC8vIFRoaXMgZmlsZSB3aWxsIGZ1bmN0aW9uIHByb3Blcmx5IGFzIGEgPHNjcmlwdD4gdGFnLCBvciBhIG1vZHVsZQorICAgIC8vIHVzaW5nIENvbW1vbkpTIGFuZCBOb2RlSlMgb3IgUmVxdWlyZUpTIG1vZHVsZSBmb3JtYXRzLiAgSW4KKyAgICAvLyBDb21tb24vTm9kZS9SZXF1aXJlSlMsIHRoZSBtb2R1bGUgZXhwb3J0cyB0aGUgUSBBUEkgYW5kIHdoZW4KKyAgICAvLyBleGVjdXRlZCBhcyBhIHNpbXBsZSA8c2NyaXB0PiwgaXQgY3JlYXRlcyBhIFEgZ2xvYmFsIGluc3RlYWQuCisKKyAgICAvLyBNb250YWdlIFJlcXVpcmUKKyAgICBpZiAodHlwZW9mIGJvb3RzdHJhcCA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICBib290c3RyYXAoInByb21pc2UiLCBkZWZpbml0aW9uKTsKKworICAgIC8vIENvbW1vbkpTCisgICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG1vZHVsZSA9PT0gIm9iamVjdCIpIHsKKyAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBkZWZpbml0aW9uKCk7CisKKyAgICAvLyBSZXF1aXJlSlMKKyAgICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICJmdW5jdGlvbiIgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoZGVmaW5pdGlvbik7CisKKyAgICAvLyBTRVMgKFNlY3VyZSBFY21hU2NyaXB0KQorICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcyAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgaWYgKCFzZXMub2soKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VzLm1ha2VRID0gZGVmaW5pdGlvbjsKKyAgICAgICAgfQorCisgICAgLy8gPHNjcmlwdD4KKyAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAvLyBQcmVmZXIgd2luZG93IG92ZXIgc2VsZiBmb3IgYWRkLW9uIHNjcmlwdHMuIFVzZSBzZWxmIGZvcgorICAgICAgICAvLyBub24td2luZG93ZWQgY29udGV4dHMuCisgICAgICAgIHZhciBnbG9iYWwgPSB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiA/IHdpbmRvdyA6IHNlbGY7CisKKyAgICAgICAgLy8gR2V0IHRoZSBgd2luZG93YCBvYmplY3QsIHNhdmUgdGhlIHByZXZpb3VzIFEgZ2xvYmFsCisgICAgICAgIC8vIGFuZCBpbml0aWFsaXplIFEgYXMgYSBnbG9iYWwuCisgICAgICAgIHZhciBwcmV2aW91c1EgPSBnbG9iYWwuUTsKKyAgICAgICAgZ2xvYmFsLlEgPSBkZWZpbml0aW9uKCk7CisKKyAgICAgICAgLy8gQWRkIGEgbm9Db25mbGljdCBmdW5jdGlvbiBzbyBRIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlCisgICAgICAgIC8vIGdsb2JhbCBuYW1lc3BhY2UuCisgICAgICAgIGdsb2JhbC5RLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBnbG9iYWwuUSA9IHByZXZpb3VzUTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9OworCisgICAgfSBlbHNlIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaGlzIGVudmlyb25tZW50IHdhcyBub3QgYW50aWNpcGF0ZWQgYnkgUS4gUGxlYXNlIGZpbGUgYSBidWcuIik7CisgICAgfQorCit9KShmdW5jdGlvbiAoKSB7CisidXNlIHN0cmljdCI7CisKK3ZhciBoYXNTdGFja3MgPSBmYWxzZTsKK3RyeSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9IGNhdGNoIChlKSB7CisgICAgaGFzU3RhY2tzID0gISFlLnN0YWNrOworfQorCisvLyBBbGwgY29kZSBhZnRlciB0aGlzIHBvaW50IHdpbGwgYmUgZmlsdGVyZWQgZnJvbSBzdGFjayB0cmFjZXMgcmVwb3J0ZWQKKy8vIGJ5IFEuCit2YXIgcVN0YXJ0aW5nTGluZSA9IGNhcHR1cmVMaW5lKCk7Cit2YXIgcUZpbGVOYW1lOworCisvLyBzaGltcworCisvLyB1c2VkIGZvciBmYWxsYmFjayBpbiAiYWxsUmVzb2x2ZWQiCit2YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9OworCisvLyBVc2UgdGhlIGZhc3Rlc3QgcG9zc2libGUgbWVhbnMgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gYSBmdXR1cmUgdHVybgorLy8gb2YgdGhlIGV2ZW50IGxvb3AuCit2YXIgbmV4dFRpY2sgPShmdW5jdGlvbiAoKSB7CisgICAgLy8gbGlua2VkIGxpc3Qgb2YgdGFza3MgKHNpbmdsZSwgd2l0aCBoZWFkIG5vZGUpCisgICAgdmFyIGhlYWQgPSB7dGFzazogdm9pZCAwLCBuZXh0OiBudWxsfTsKKyAgICB2YXIgdGFpbCA9IGhlYWQ7CisgICAgdmFyIGZsdXNoaW5nID0gZmFsc2U7CisgICAgdmFyIHJlcXVlc3RUaWNrID0gdm9pZCAwOworICAgIHZhciBpc05vZGVKUyA9IGZhbHNlOworICAgIC8vIHF1ZXVlIGZvciBsYXRlIHRhc2tzLCB1c2VkIGJ5IHVuaGFuZGxlZCByZWplY3Rpb24gdHJhY2tpbmcKKyAgICB2YXIgbGF0ZXJRdWV1ZSA9IFtdOworCisgICAgZnVuY3Rpb24gZmx1c2goKSB7CisgICAgICAgIC8qIGpzaGludCBsb29wZnVuYzogdHJ1ZSAqLworICAgICAgICB2YXIgdGFzaywgZG9tYWluOworCisgICAgICAgIHdoaWxlIChoZWFkLm5leHQpIHsKKyAgICAgICAgICAgIGhlYWQgPSBoZWFkLm5leHQ7CisgICAgICAgICAgICB0YXNrID0gaGVhZC50YXNrOworICAgICAgICAgICAgaGVhZC50YXNrID0gdm9pZCAwOworICAgICAgICAgICAgZG9tYWluID0gaGVhZC5kb21haW47CisKKyAgICAgICAgICAgIGlmIChkb21haW4pIHsKKyAgICAgICAgICAgICAgICBoZWFkLmRvbWFpbiA9IHZvaWQgMDsKKyAgICAgICAgICAgICAgICBkb21haW4uZW50ZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJ1blNpbmdsZSh0YXNrLCBkb21haW4pOworCisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGxhdGVyUXVldWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0YXNrID0gbGF0ZXJRdWV1ZS5wb3AoKTsKKyAgICAgICAgICAgIHJ1blNpbmdsZSh0YXNrKTsKKyAgICAgICAgfQorICAgICAgICBmbHVzaGluZyA9IGZhbHNlOworICAgIH0KKyAgICAvLyBydW5zIGEgc2luZ2xlIGZ1bmN0aW9uIGluIHRoZSBhc3luYyBxdWV1ZQorICAgIGZ1bmN0aW9uIHJ1blNpbmdsZSh0YXNrLCBkb21haW4pIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRhc2soKTsKKworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoaXNOb2RlSlMpIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBub2RlLCB1bmNhdWdodCBleGNlcHRpb25zIGFyZSBjb25zaWRlcmVkIGZhdGFsIGVycm9ycy4KKyAgICAgICAgICAgICAgICAvLyBSZS10aHJvdyB0aGVtIHN5bmNocm9ub3VzbHkgdG8gaW50ZXJydXB0IGZsdXNoaW5nIQorCisgICAgICAgICAgICAgICAgLy8gRW5zdXJlIGNvbnRpbnVhdGlvbiBpZiB0aGUgdW5jYXVnaHQgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQKKyAgICAgICAgICAgICAgICAvLyBsaXN0ZW5pbmcgInVuY2F1Z2h0RXhjZXB0aW9uIiBldmVudHMgKGFzIGRvbWFpbnMgZG9lcykuCisgICAgICAgICAgICAgICAgLy8gQ29udGludWUgaW4gbmV4dCBldmVudCB0byBhdm9pZCB0aWNrIHJlY3Vyc2lvbi4KKyAgICAgICAgICAgICAgICBpZiAoZG9tYWluKSB7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZmx1c2gsIDApOworICAgICAgICAgICAgICAgIGlmIChkb21haW4pIHsKKyAgICAgICAgICAgICAgICAgICAgZG9tYWluLmVudGVyKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBicm93c2VycywgdW5jYXVnaHQgZXhjZXB0aW9ucyBhcmUgbm90IGZhdGFsLgorICAgICAgICAgICAgICAgIC8vIFJlLXRocm93IHRoZW0gYXN5bmNocm9ub3VzbHkgdG8gYXZvaWQgc2xvdy1kb3ducy4KKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChkb21haW4pIHsKKyAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuZXh0VGljayA9IGZ1bmN0aW9uICh0YXNrKSB7CisgICAgICAgIHRhaWwgPSB0YWlsLm5leHQgPSB7CisgICAgICAgICAgICB0YXNrOiB0YXNrLAorICAgICAgICAgICAgZG9tYWluOiBpc05vZGVKUyAmJiBwcm9jZXNzLmRvbWFpbiwKKyAgICAgICAgICAgIG5leHQ6IG51bGwKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoIWZsdXNoaW5nKSB7CisgICAgICAgICAgICBmbHVzaGluZyA9IHRydWU7CisgICAgICAgICAgICByZXF1ZXN0VGljaygpOworICAgICAgICB9CisgICAgfTsKKworICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gIm9iamVjdCIgJiYKKyAgICAgICAgcHJvY2Vzcy50b1N0cmluZygpID09PSAiW29iamVjdCBwcm9jZXNzXSIgJiYgcHJvY2Vzcy5uZXh0VGljaykgeworICAgICAgICAvLyBFbnN1cmUgUSBpcyBpbiBhIHJlYWwgTm9kZSBlbnZpcm9ubWVudCwgd2l0aCBhIGBwcm9jZXNzLm5leHRUaWNrYC4KKyAgICAgICAgLy8gVG8gc2VlIHRocm91Z2ggZmFrZSBOb2RlIGVudmlyb25tZW50czoKKyAgICAgICAgLy8gKiBNb2NoYSB0ZXN0IHJ1bm5lciAtIGV4cG9zZXMgYSBgcHJvY2Vzc2AgZ2xvYmFsIHdpdGhvdXQgYSBgbmV4dFRpY2tgCisgICAgICAgIC8vICogQnJvd3NlcmlmeSAtIGV4cG9zZXMgYSBgcHJvY2Vzcy5uZXhUaWNrYCBmdW5jdGlvbiB0aGF0IHVzZXMKKyAgICAgICAgLy8gICBgc2V0VGltZW91dGAuIEluIHRoaXMgY2FzZSBgc2V0SW1tZWRpYXRlYCBpcyBwcmVmZXJyZWQgYmVjYXVzZQorICAgICAgICAvLyAgICBpdCBpcyBmYXN0ZXIuIEJyb3dzZXJpZnkncyBgcHJvY2Vzcy50b1N0cmluZygpYCB5aWVsZHMKKyAgICAgICAgLy8gICAiW29iamVjdCBPYmplY3RdIiwgd2hpbGUgaW4gYSByZWFsIE5vZGUgZW52aXJvbm1lbnQKKyAgICAgICAgLy8gICBgcHJvY2Vzcy5uZXh0VGljaygpYCB5aWVsZHMgIltvYmplY3QgcHJvY2Vzc10iLgorICAgICAgICBpc05vZGVKUyA9IHRydWU7CisKKyAgICAgICAgcmVxdWVzdFRpY2sgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTsKKyAgICAgICAgfTsKKworICAgIH0gZWxzZSBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAvLyBJbiBJRTEwLCBOb2RlLmpzIDAuOSssIG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9Ob2JsZUpTL3NldEltbWVkaWF0ZQorICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIHJlcXVlc3RUaWNrID0gc2V0SW1tZWRpYXRlLmJpbmQod2luZG93LCBmbHVzaCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXF1ZXN0VGljayA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoZmx1c2gpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgfSBlbHNlIGlmICh0eXBlb2YgTWVzc2FnZUNoYW5uZWwgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgIC8vIG1vZGVybiBicm93c2VycworICAgICAgICAvLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5nLmlvLzIwMTEvMDYvd2luZG93bmV4dHRpY2suaHRtbAorICAgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgICAgICAvLyBBdCBsZWFzdCBTYWZhcmkgVmVyc2lvbiA2LjAuNSAoODUzNi4zMC4xKSBpbnRlcm1pdHRlbnRseSBjYW5ub3QgY3JlYXRlCisgICAgICAgIC8vIHdvcmtpbmcgbWVzc2FnZSBwb3J0cyB0aGUgZmlyc3QgdGltZSBhIHBhZ2UgbG9hZHMuCisgICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmVxdWVzdFRpY2sgPSByZXF1ZXN0UG9ydFRpY2s7CisgICAgICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZsdXNoOworICAgICAgICAgICAgZmx1c2goKTsKKyAgICAgICAgfTsKKyAgICAgICAgdmFyIHJlcXVlc3RQb3J0VGljayA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIC8vIE9wZXJhIHJlcXVpcmVzIHVzIHRvIHByb3ZpZGUgYSBtZXNzYWdlIHBheWxvYWQsIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgIC8vIHdoZXRoZXIgd2UgdXNlIGl0LgorICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgwKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdFRpY2sgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZsdXNoLCAwKTsKKyAgICAgICAgICAgIHJlcXVlc3RQb3J0VGljaygpOworICAgICAgICB9OworCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gb2xkIGJyb3dzZXJzCisgICAgICAgIHJlcXVlc3RUaWNrID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2V0VGltZW91dChmbHVzaCwgMCk7CisgICAgICAgIH07CisgICAgfQorICAgIC8vIHJ1bnMgYSB0YXNrIGFmdGVyIGFsbCBvdGhlciB0YXNrcyBoYXZlIGJlZW4gcnVuCisgICAgLy8gdGhpcyBpcyB1c2VmdWwgZm9yIHVuaGFuZGxlZCByZWplY3Rpb24gdHJhY2tpbmcgdGhhdCBuZWVkcyB0byBoYXBwZW4KKyAgICAvLyBhZnRlciBhbGwgYHRoZW5gZCB0YXNrcyBoYXZlIGJlZW4gcnVuLgorICAgIG5leHRUaWNrLnJ1bkFmdGVyID0gZnVuY3Rpb24gKHRhc2spIHsKKyAgICAgICAgbGF0ZXJRdWV1ZS5wdXNoKHRhc2spOworICAgICAgICBpZiAoIWZsdXNoaW5nKSB7CisgICAgICAgICAgICBmbHVzaGluZyA9IHRydWU7CisgICAgICAgICAgICByZXF1ZXN0VGljaygpOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gbmV4dFRpY2s7Cit9KSgpOworCisvLyBBdHRlbXB0IHRvIG1ha2UgZ2VuZXJpY3Mgc2FmZSBpbiB0aGUgZmFjZSBvZiBkb3duc3RyZWFtCisvLyBtb2RpZmljYXRpb25zLgorLy8gVGhlcmUgaXMgbm8gc2l0dWF0aW9uIHdoZXJlIHRoaXMgaXMgbmVjZXNzYXJ5LgorLy8gSWYgeW91IG5lZWQgYSBzZWN1cml0eSBndWFyYW50ZWUsIHRoZXNlIHByaW1vcmRpYWxzIG5lZWQgdG8gYmUKKy8vIGRlZXBseSBmcm96ZW4gYW55d2F5LCBhbmQgaWYgeW91IGRvbuKAmXQgbmVlZCBhIHNlY3VyaXR5IGd1YXJhbnRlZSwKKy8vIHRoaXMgaXMganVzdCBwbGFpbiBwYXJhbm9pZC4KKy8vIEhvd2V2ZXIsIHRoaXMgKiptaWdodCoqIGhhdmUgdGhlIG5pY2Ugc2lkZS1lZmZlY3Qgb2YgcmVkdWNpbmcgdGhlIHNpemUgb2YKKy8vIHRoZSBtaW5pZmllZCBjb2RlIGJ5IHJlZHVjaW5nIHguY2FsbCgpIHRvIG1lcmVseSB4KCkKKy8vIFNlZSBNYXJrIE1pbGxlcuKAmXMgZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGlzIGRvZXMuCisvLyBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1jb252ZW50aW9uczpzYWZlX21ldGFfcHJvZ3JhbW1pbmcKK3ZhciBjYWxsID0gRnVuY3Rpb24uY2FsbDsKK2Z1bmN0aW9uIHVuY3VycnlUaGlzKGYpIHsKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gY2FsbC5hcHBseShmLCBhcmd1bWVudHMpOworICAgIH07Cit9CisvLyBUaGlzIGlzIGVxdWl2YWxlbnQsIGJ1dCBzbG93ZXI6CisvLyB1bmN1cnJ5VGhpcyA9IEZ1bmN0aW9uX2JpbmQuYmluZChGdW5jdGlvbl9iaW5kLmNhbGwpOworLy8gaHR0cDovL2pzcGVyZi5jb20vdW5jdXJyeXRoaXMKKwordmFyIGFycmF5X3NsaWNlID0gdW5jdXJyeVRoaXMoQXJyYXkucHJvdG90eXBlLnNsaWNlKTsKKwordmFyIGFycmF5X3JlZHVjZSA9IHVuY3VycnlUaGlzKAorICAgIEFycmF5LnByb3RvdHlwZS5yZWR1Y2UgfHwgZnVuY3Rpb24gKGNhbGxiYWNrLCBiYXNpcykgeworICAgICAgICB2YXIgaW5kZXggPSAwLAorICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5sZW5ndGg7CisgICAgICAgIC8vIGNvbmNlcm5pbmcgdGhlIGluaXRpYWwgdmFsdWUsIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQKKyAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKKyAgICAgICAgICAgIC8vIHNlZWsgdG8gdGhlIGZpcnN0IHZhbHVlIGluIHRoZSBhcnJheSwgYWNjb3VudGluZworICAgICAgICAgICAgLy8gZm9yIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGlzIGlzIGEgc3BhcnNlIGFycmF5CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4IGluIHRoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgYmFzaXMgPSB0aGlzW2luZGV4KytdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCsraW5kZXggPj0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IHdoaWxlICgxKTsKKyAgICAgICAgfQorICAgICAgICAvLyByZWR1Y2UKKyAgICAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgICAgICAvLyBhY2NvdW50IGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgYXJyYXkgaXMgc3BhcnNlCisgICAgICAgICAgICBpZiAoaW5kZXggaW4gdGhpcykgeworICAgICAgICAgICAgICAgIGJhc2lzID0gY2FsbGJhY2soYmFzaXMsIHRoaXNbaW5kZXhdLCBpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJhc2lzOworICAgIH0KKyk7CisKK3ZhciBhcnJheV9pbmRleE9mID0gdW5jdXJyeVRoaXMoCisgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgfHwgZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIC8vIG5vdCBhIHZlcnkgZ29vZCBzaGltLCBidXQgZ29vZCBlbm91Z2ggZm9yIG91ciBvbmUgdXNlIG9mIGl0CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyk7CisKK3ZhciBhcnJheV9tYXAgPSB1bmN1cnJ5VGhpcygKKyAgICBBcnJheS5wcm90b3R5cGUubWFwIHx8IGZ1bmN0aW9uIChjYWxsYmFjaywgdGhpc3ApIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICB2YXIgY29sbGVjdCA9IFtdOworICAgICAgICBhcnJheV9yZWR1Y2Uoc2VsZiwgZnVuY3Rpb24gKHVuZGVmaW5lZCwgdmFsdWUsIGluZGV4KSB7CisgICAgICAgICAgICBjb2xsZWN0LnB1c2goY2FsbGJhY2suY2FsbCh0aGlzcCwgdmFsdWUsIGluZGV4LCBzZWxmKSk7CisgICAgICAgIH0sIHZvaWQgMCk7CisgICAgICAgIHJldHVybiBjb2xsZWN0OworICAgIH0KKyk7CisKK3ZhciBvYmplY3RfY3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiAocHJvdG90eXBlKSB7CisgICAgZnVuY3Rpb24gVHlwZSgpIHsgfQorICAgIFR5cGUucHJvdG90eXBlID0gcHJvdG90eXBlOworICAgIHJldHVybiBuZXcgVHlwZSgpOworfTsKKwordmFyIG9iamVjdF9oYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpOworCit2YXIgb2JqZWN0X2tleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqZWN0KSB7CisgICAgdmFyIGtleXMgPSBbXTsKKyAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7CisgICAgICAgIGlmIChvYmplY3RfaGFzT3duUHJvcGVydHkob2JqZWN0LCBrZXkpKSB7CisgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga2V5czsKK307CisKK3ZhciBvYmplY3RfdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKTsKKworZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHsKKyAgICByZXR1cm4gdmFsdWUgPT09IE9iamVjdCh2YWx1ZSk7Cit9CisKKy8vIGdlbmVyYXRvciByZWxhdGVkIHNoaW1zCisKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbiBvbmNlIEVTNiBnZW5lcmF0b3JzIGFyZSBpbiBTcGlkZXJNb25rZXkuCitmdW5jdGlvbiBpc1N0b3BJdGVyYXRpb24oZXhjZXB0aW9uKSB7CisgICAgcmV0dXJuICgKKyAgICAgICAgb2JqZWN0X3RvU3RyaW5nKGV4Y2VwdGlvbikgPT09ICJbb2JqZWN0IFN0b3BJdGVyYXRpb25dIiB8fAorICAgICAgICBleGNlcHRpb24gaW5zdGFuY2VvZiBRUmV0dXJuVmFsdWUKKyAgICApOworfQorCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgaGVscGVyIGFuZCBRLnJldHVybiBvbmNlIEVTNiBnZW5lcmF0b3JzIGFyZSBpbgorLy8gU3BpZGVyTW9ua2V5LgordmFyIFFSZXR1cm5WYWx1ZTsKK2lmICh0eXBlb2YgUmV0dXJuVmFsdWUgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgUVJldHVyblZhbHVlID0gUmV0dXJuVmFsdWU7Cit9IGVsc2UgeworICAgIFFSZXR1cm5WYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfTsKK30KKworLy8gbG9uZyBzdGFjayB0cmFjZXMKKwordmFyIFNUQUNLX0pVTVBfU0VQQVJBVE9SID0gIkZyb20gcHJldmlvdXMgZXZlbnQ6IjsKKworZnVuY3Rpb24gbWFrZVN0YWNrVHJhY2VMb25nKGVycm9yLCBwcm9taXNlKSB7CisgICAgLy8gSWYgcG9zc2libGUsIHRyYW5zZm9ybSB0aGUgZXJyb3Igc3RhY2sgdHJhY2UgYnkgcmVtb3ZpbmcgTm9kZSBhbmQgUQorICAgIC8vIGNydWZ0LCB0aGVuIGNvbmNhdGVuYXRpbmcgd2l0aCB0aGUgc3RhY2sgdHJhY2Ugb2YgYHByb21pc2VgLiBTZWUgIzU3LgorICAgIGlmIChoYXNTdGFja3MgJiYKKyAgICAgICAgcHJvbWlzZS5zdGFjayAmJgorICAgICAgICB0eXBlb2YgZXJyb3IgPT09ICJvYmplY3QiICYmCisgICAgICAgIGVycm9yICE9PSBudWxsICYmCisgICAgICAgIGVycm9yLnN0YWNrICYmCisgICAgICAgIGVycm9yLnN0YWNrLmluZGV4T2YoU1RBQ0tfSlVNUF9TRVBBUkFUT1IpID09PSAtMQorICAgICkgeworICAgICAgICB2YXIgc3RhY2tzID0gW107CisgICAgICAgIGZvciAodmFyIHAgPSBwcm9taXNlOyAhIXA7IHAgPSBwLnNvdXJjZSkgeworICAgICAgICAgICAgaWYgKHAuc3RhY2spIHsKKyAgICAgICAgICAgICAgICBzdGFja3MudW5zaGlmdChwLnN0YWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGFja3MudW5zaGlmdChlcnJvci5zdGFjayk7CisKKyAgICAgICAgdmFyIGNvbmNhdGVkU3RhY2tzID0gc3RhY2tzLmpvaW4oIlxuIiArIFNUQUNLX0pVTVBfU0VQQVJBVE9SICsgIlxuIik7CisgICAgICAgIGVycm9yLnN0YWNrID0gZmlsdGVyU3RhY2tTdHJpbmcoY29uY2F0ZWRTdGFja3MpOworICAgIH0KK30KKworZnVuY3Rpb24gZmlsdGVyU3RhY2tTdHJpbmcoc3RhY2tTdHJpbmcpIHsKKyAgICB2YXIgbGluZXMgPSBzdGFja1N0cmluZy5zcGxpdCgiXG4iKTsKKyAgICB2YXIgZGVzaXJlZExpbmVzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2ldOworCisgICAgICAgIGlmICghaXNJbnRlcm5hbEZyYW1lKGxpbmUpICYmICFpc05vZGVGcmFtZShsaW5lKSAmJiBsaW5lKSB7CisgICAgICAgICAgICBkZXNpcmVkTGluZXMucHVzaChsaW5lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZGVzaXJlZExpbmVzLmpvaW4oIlxuIik7Cit9CisKK2Z1bmN0aW9uIGlzTm9kZUZyYW1lKHN0YWNrTGluZSkgeworICAgIHJldHVybiBzdGFja0xpbmUuaW5kZXhPZigiKG1vZHVsZS5qczoiKSAhPT0gLTEgfHwKKyAgICAgICAgICAgc3RhY2tMaW5lLmluZGV4T2YoIihub2RlLmpzOiIpICE9PSAtMTsKK30KKworZnVuY3Rpb24gZ2V0RmlsZU5hbWVBbmRMaW5lTnVtYmVyKHN0YWNrTGluZSkgeworICAgIC8vIE5hbWVkIGZ1bmN0aW9uczogImF0IGZ1bmN0aW9uTmFtZSAoZmlsZW5hbWU6bGluZU51bWJlcjpjb2x1bW5OdW1iZXIpIgorICAgIC8vIEluIElFMTAgZnVuY3Rpb24gbmFtZSBjYW4gaGF2ZSBzcGFjZXMgKCJBbm9ueW1vdXMgZnVuY3Rpb24iKSBPX28KKyAgICB2YXIgYXR0ZW1wdDEgPSAvYXQgLisgXCgoLispOihcZCspOig/OlxkKylcKSQvLmV4ZWMoc3RhY2tMaW5lKTsKKyAgICBpZiAoYXR0ZW1wdDEpIHsKKyAgICAgICAgcmV0dXJuIFthdHRlbXB0MVsxXSwgTnVtYmVyKGF0dGVtcHQxWzJdKV07CisgICAgfQorCisgICAgLy8gQW5vbnltb3VzIGZ1bmN0aW9uczogImF0IGZpbGVuYW1lOmxpbmVOdW1iZXI6Y29sdW1uTnVtYmVyIgorICAgIHZhciBhdHRlbXB0MiA9IC9hdCAoW14gXSspOihcZCspOig/OlxkKykkLy5leGVjKHN0YWNrTGluZSk7CisgICAgaWYgKGF0dGVtcHQyKSB7CisgICAgICAgIHJldHVybiBbYXR0ZW1wdDJbMV0sIE51bWJlcihhdHRlbXB0MlsyXSldOworICAgIH0KKworICAgIC8vIEZpcmVmb3ggc3R5bGU6ICJmdW5jdGlvbkBmaWxlbmFtZTpsaW5lTnVtYmVyIG9yIEBmaWxlbmFtZTpsaW5lTnVtYmVyIgorICAgIHZhciBhdHRlbXB0MyA9IC8uKkAoLispOihcZCspJC8uZXhlYyhzdGFja0xpbmUpOworICAgIGlmIChhdHRlbXB0MykgeworICAgICAgICByZXR1cm4gW2F0dGVtcHQzWzFdLCBOdW1iZXIoYXR0ZW1wdDNbMl0pXTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGlzSW50ZXJuYWxGcmFtZShzdGFja0xpbmUpIHsKKyAgICB2YXIgZmlsZU5hbWVBbmRMaW5lTnVtYmVyID0gZ2V0RmlsZU5hbWVBbmRMaW5lTnVtYmVyKHN0YWNrTGluZSk7CisKKyAgICBpZiAoIWZpbGVOYW1lQW5kTGluZU51bWJlcikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdmFyIGZpbGVOYW1lID0gZmlsZU5hbWVBbmRMaW5lTnVtYmVyWzBdOworICAgIHZhciBsaW5lTnVtYmVyID0gZmlsZU5hbWVBbmRMaW5lTnVtYmVyWzFdOworCisgICAgcmV0dXJuIGZpbGVOYW1lID09PSBxRmlsZU5hbWUgJiYKKyAgICAgICAgbGluZU51bWJlciA+PSBxU3RhcnRpbmdMaW5lICYmCisgICAgICAgIGxpbmVOdW1iZXIgPD0gcUVuZGluZ0xpbmU7Cit9CisKKy8vIGRpc2NvdmVyIG93biBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIHJhbmdlIGZvciBmaWx0ZXJpbmcgc3RhY2sKKy8vIHRyYWNlcworZnVuY3Rpb24gY2FwdHVyZUxpbmUoKSB7CisgICAgaWYgKCFoYXNTdGFja3MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdmFyIGxpbmVzID0gZS5zdGFjay5zcGxpdCgiXG4iKTsKKyAgICAgICAgdmFyIGZpcnN0TGluZSA9IGxpbmVzWzBdLmluZGV4T2YoIkAiKSA+IDAgPyBsaW5lc1sxXSA6IGxpbmVzWzJdOworICAgICAgICB2YXIgZmlsZU5hbWVBbmRMaW5lTnVtYmVyID0gZ2V0RmlsZU5hbWVBbmRMaW5lTnVtYmVyKGZpcnN0TGluZSk7CisgICAgICAgIGlmICghZmlsZU5hbWVBbmRMaW5lTnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBxRmlsZU5hbWUgPSBmaWxlTmFtZUFuZExpbmVOdW1iZXJbMF07CisgICAgICAgIHJldHVybiBmaWxlTmFtZUFuZExpbmVOdW1iZXJbMV07CisgICAgfQorfQorCitmdW5jdGlvbiBkZXByZWNhdGUoY2FsbGJhY2ssIG5hbWUsIGFsdGVybmF0aXZlKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAidW5kZWZpbmVkIiAmJgorICAgICAgICAgICAgdHlwZW9mIGNvbnNvbGUud2FybiA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgY29uc29sZS53YXJuKG5hbWUgKyAiIGlzIGRlcHJlY2F0ZWQsIHVzZSAiICsgYWx0ZXJuYXRpdmUgKworICAgICAgICAgICAgICAgICAgICAgICAgICIgaW5zdGVhZC4iLCBuZXcgRXJyb3IoIiIpLnN0YWNrKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoY2FsbGJhY2ssIGFyZ3VtZW50cyk7CisgICAgfTsKK30KKworLy8gZW5kIG9mIHNoaW1zCisvLyBiZWdpbm5pbmcgb2YgcmVhbCB3b3JrCisKKy8qKgorICogQ29uc3RydWN0cyBhIHByb21pc2UgZm9yIGFuIGltbWVkaWF0ZSByZWZlcmVuY2UsIHBhc3NlcyBwcm9taXNlcyB0aHJvdWdoLCBvcgorICogY29lcmNlcyBwcm9taXNlcyBmcm9tIGRpZmZlcmVudCBzeXN0ZW1zLgorICogQHBhcmFtIHZhbHVlIGltbWVkaWF0ZSByZWZlcmVuY2Ugb3IgcHJvbWlzZQorICovCitmdW5jdGlvbiBRKHZhbHVlKSB7CisgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5IGEgUHJvbWlzZSwgcmV0dXJuIGl0IGRpcmVjdGx5LiAgVGhpcyBlbmFibGVzCisgICAgLy8gdGhlIHJlc29sdmUgZnVuY3Rpb24gdG8gYm90aCBiZSB1c2VkIHRvIGNyZWF0ZWQgcmVmZXJlbmNlcyBmcm9tIG9iamVjdHMsCisgICAgLy8gYnV0IHRvIHRvbGVyYWJseSBjb2VyY2Ugbm9uLXByb21pc2VzIHRvIHByb21pc2VzLgorICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIC8vIGFzc2ltaWxhdGUgdGhlbmFibGVzCisgICAgaWYgKGlzUHJvbWlzZUFsaWtlKHZhbHVlKSkgeworICAgICAgICByZXR1cm4gY29lcmNlKHZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gZnVsZmlsbCh2YWx1ZSk7CisgICAgfQorfQorUS5yZXNvbHZlID0gUTsKKworLyoqCisgKiBQZXJmb3JtcyBhIHRhc2sgaW4gYSBmdXR1cmUgdHVybiBvZiB0aGUgZXZlbnQgbG9vcC4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IHRhc2sKKyAqLworUS5uZXh0VGljayA9IG5leHRUaWNrOworCisvKioKKyAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGxvbmcgc3RhY2sgdHJhY2VzIHdpbGwgYmUgb24KKyAqLworUS5sb25nU3RhY2tTdXBwb3J0ID0gZmFsc2U7CisKKy8vIGVuYWJsZSBsb25nIHN0YWNrcyBpZiBRX0RFQlVHIGlzIHNldAoraWYgKHR5cGVvZiBwcm9jZXNzID09PSAib2JqZWN0IiAmJiBwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52LlFfREVCVUcpIHsKKyAgICBRLmxvbmdTdGFja1N1cHBvcnQgPSB0cnVlOworfQorCisvKioKKyAqIENvbnN0cnVjdHMgYSB7cHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0fSBvYmplY3QuCisgKgorICogYHJlc29sdmVgIGlzIGEgY2FsbGJhY2sgdG8gaW52b2tlIHdpdGggYSBtb3JlIHJlc29sdmVkIHZhbHVlIGZvciB0aGUKKyAqIHByb21pc2UuIFRvIGZ1bGZpbGwgdGhlIHByb21pc2UsIGludm9rZSBgcmVzb2x2ZWAgd2l0aCBhbnkgdmFsdWUgdGhhdCBpcworICogbm90IGEgdGhlbmFibGUuIFRvIHJlamVjdCB0aGUgcHJvbWlzZSwgaW52b2tlIGByZXNvbHZlYCB3aXRoIGEgcmVqZWN0ZWQKKyAqIHRoZW5hYmxlLCBvciBpbnZva2UgYHJlamVjdGAgd2l0aCB0aGUgcmVhc29uIGRpcmVjdGx5LiBUbyByZXNvbHZlIHRoZQorICogcHJvbWlzZSB0byBhbm90aGVyIHRoZW5hYmxlLCB0aHVzIHB1dHRpbmcgaXQgaW4gdGhlIHNhbWUgc3RhdGUsIGludm9rZQorICogYHJlc29sdmVgIHdpdGggdGhhdCBvdGhlciB0aGVuYWJsZS4KKyAqLworUS5kZWZlciA9IGRlZmVyOworZnVuY3Rpb24gZGVmZXIoKSB7CisgICAgLy8gaWYgIm1lc3NhZ2VzIiBpcyBhbiAiQXJyYXkiLCB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBwcm9taXNlIGhhcyBub3QgeWV0CisgICAgLy8gYmVlbiByZXNvbHZlZC4gIElmIGl0IGlzICJ1bmRlZmluZWQiLCBpdCBoYXMgYmVlbiByZXNvbHZlZC4gIEVhY2gKKyAgICAvLyBlbGVtZW50IG9mIHRoZSBtZXNzYWdlcyBhcnJheSBpcyBpdHNlbGYgYW4gYXJyYXkgb2YgY29tcGxldGUgYXJndW1lbnRzIHRvCisgICAgLy8gZm9yd2FyZCB0byB0aGUgcmVzb2x2ZWQgcHJvbWlzZS4gIFdlIGNvZXJjZSB0aGUgcmVzb2x1dGlvbiB2YWx1ZSB0byBhCisgICAgLy8gcHJvbWlzZSB1c2luZyB0aGUgYHJlc29sdmVgIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaGFuZGxlcyBib3RoIGZ1bGx5CisgICAgLy8gbm9uLXRoZW5hYmxlIHZhbHVlcyBhbmQgb3RoZXIgdGhlbmFibGVzIGdyYWNlZnVsbHkuCisgICAgdmFyIG1lc3NhZ2VzID0gW10sIHByb2dyZXNzTGlzdGVuZXJzID0gW10sIHJlc29sdmVkUHJvbWlzZTsKKworICAgIHZhciBkZWZlcnJlZCA9IG9iamVjdF9jcmVhdGUoZGVmZXIucHJvdG90eXBlKTsKKyAgICB2YXIgcHJvbWlzZSA9IG9iamVjdF9jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpOworCisgICAgcHJvbWlzZS5wcm9taXNlRGlzcGF0Y2ggPSBmdW5jdGlvbiAocmVzb2x2ZSwgb3AsIG9wZXJhbmRzKSB7CisgICAgICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzKTsKKyAgICAgICAgaWYgKG1lc3NhZ2VzKSB7CisgICAgICAgICAgICBtZXNzYWdlcy5wdXNoKGFyZ3MpOworICAgICAgICAgICAgaWYgKG9wID09PSAid2hlbiIgJiYgb3BlcmFuZHNbMV0pIHsgLy8gcHJvZ3Jlc3Mgb3BlcmFuZAorICAgICAgICAgICAgICAgIHByb2dyZXNzTGlzdGVuZXJzLnB1c2gob3BlcmFuZHNbMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUS5uZXh0VGljayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRQcm9taXNlLnByb21pc2VEaXNwYXRjaC5hcHBseShyZXNvbHZlZFByb21pc2UsIGFyZ3MpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gWFhYIGRlcHJlY2F0ZWQKKyAgICBwcm9taXNlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmIChtZXNzYWdlcykgeworICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICAgIH0KKyAgICAgICAgdmFyIG5lYXJlclZhbHVlID0gbmVhcmVyKHJlc29sdmVkUHJvbWlzZSk7CisgICAgICAgIGlmIChpc1Byb21pc2UobmVhcmVyVmFsdWUpKSB7CisgICAgICAgICAgICByZXNvbHZlZFByb21pc2UgPSBuZWFyZXJWYWx1ZTsgLy8gc2hvcnRlbiBjaGFpbgorICAgICAgICB9CisgICAgICAgIHJldHVybiBuZWFyZXJWYWx1ZTsKKyAgICB9OworCisgICAgcHJvbWlzZS5pbnNwZWN0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoIXJlc29sdmVkUHJvbWlzZSkgeworICAgICAgICAgICAgcmV0dXJuIHsgc3RhdGU6ICJwZW5kaW5nIiB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXNvbHZlZFByb21pc2UuaW5zcGVjdCgpOworICAgIH07CisKKyAgICBpZiAoUS5sb25nU3RhY2tTdXBwb3J0ICYmIGhhc1N0YWNrcykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIE5PVEU6IGRvbid0IHRyeSB0byB1c2UgYEVycm9yLmNhcHR1cmVTdGFja1RyYWNlYCBvciB0cmFuc2ZlciB0aGUKKyAgICAgICAgICAgIC8vIGFjY2Vzc29yIGFyb3VuZDsgdGhhdCBjYXVzZXMgbWVtb3J5IGxlYWtzIGFzIHBlciBHSC0xMTEuIEp1c3QKKyAgICAgICAgICAgIC8vIHJlaWZ5IHRoZSBzdGFjayB0cmFjZSBhcyBhIHN0cmluZyBBU0FQLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUsIGN1dCBvZmYgdGhlIGZpcnN0IGxpbmU7IGl0J3MgYWx3YXlzIGp1c3QKKyAgICAgICAgICAgIC8vICJbb2JqZWN0IFByb21pc2VdXG4iLCBhcyBwZXIgdGhlIGB0b1N0cmluZ2AuCisgICAgICAgICAgICBwcm9taXNlLnN0YWNrID0gZS5zdGFjay5zdWJzdHJpbmcoZS5zdGFjay5pbmRleE9mKCJcbiIpICsgMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBOT1RFOiB3ZSBkbyB0aGUgY2hlY2tzIGZvciBgcmVzb2x2ZWRQcm9taXNlYCBpbiBlYWNoIG1ldGhvZCwgaW5zdGVhZCBvZgorICAgIC8vIGNvbnNvbGlkYXRpbmcgdGhlbSBpbnRvIGBiZWNvbWVgLCBzaW5jZSBvdGhlcndpc2Ugd2UnZCBjcmVhdGUgbmV3CisgICAgLy8gcHJvbWlzZXMgd2l0aCB0aGUgbGluZXMgYGJlY29tZSh3aGF0ZXZlcih2YWx1ZSkpYC4gU2VlIGUuZy4gR0gtMjUyLgorCisgICAgZnVuY3Rpb24gYmVjb21lKG5ld1Byb21pc2UpIHsKKyAgICAgICAgcmVzb2x2ZWRQcm9taXNlID0gbmV3UHJvbWlzZTsKKyAgICAgICAgcHJvbWlzZS5zb3VyY2UgPSBuZXdQcm9taXNlOworCisgICAgICAgIGFycmF5X3JlZHVjZShtZXNzYWdlcywgZnVuY3Rpb24gKHVuZGVmaW5lZCwgbWVzc2FnZSkgeworICAgICAgICAgICAgUS5uZXh0VGljayhmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgbmV3UHJvbWlzZS5wcm9taXNlRGlzcGF0Y2guYXBwbHkobmV3UHJvbWlzZSwgbWVzc2FnZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgdm9pZCAwKTsKKworICAgICAgICBtZXNzYWdlcyA9IHZvaWQgMDsKKyAgICAgICAgcHJvZ3Jlc3NMaXN0ZW5lcnMgPSB2b2lkIDA7CisgICAgfQorCisgICAgZGVmZXJyZWQucHJvbWlzZSA9IHByb21pc2U7CisgICAgZGVmZXJyZWQucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICBpZiAocmVzb2x2ZWRQcm9taXNlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBiZWNvbWUoUSh2YWx1ZSkpOworICAgIH07CisKKyAgICBkZWZlcnJlZC5mdWxmaWxsID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIGlmIChyZXNvbHZlZFByb21pc2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJlY29tZShmdWxmaWxsKHZhbHVlKSk7CisgICAgfTsKKyAgICBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbiAocmVhc29uKSB7CisgICAgICAgIGlmIChyZXNvbHZlZFByb21pc2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJlY29tZShyZWplY3QocmVhc29uKSk7CisgICAgfTsKKyAgICBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbiAocHJvZ3Jlc3MpIHsKKyAgICAgICAgaWYgKHJlc29sdmVkUHJvbWlzZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXJyYXlfcmVkdWNlKHByb2dyZXNzTGlzdGVuZXJzLCBmdW5jdGlvbiAodW5kZWZpbmVkLCBwcm9ncmVzc0xpc3RlbmVyKSB7CisgICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBwcm9ncmVzc0xpc3RlbmVyKHByb2dyZXNzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCB2b2lkIDApOworICAgIH07CisKKyAgICByZXR1cm4gZGVmZXJyZWQ7Cit9CisKKy8qKgorICogQ3JlYXRlcyBhIE5vZGUtc3R5bGUgY2FsbGJhY2sgdGhhdCB3aWxsIHJlc29sdmUgb3IgcmVqZWN0IHRoZSBkZWZlcnJlZAorICogcHJvbWlzZS4KKyAqIEByZXR1cm5zIGEgbm9kZWJhY2sKKyAqLworZGVmZXIucHJvdG90eXBlLm1ha2VOb2RlUmVzb2x2ZXIgPSBmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHJldHVybiBmdW5jdGlvbiAoZXJyb3IsIHZhbHVlKSB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgc2VsZi5yZWplY3QoZXJyb3IpOworICAgICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICBzZWxmLnJlc29sdmUoYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxmLnJlc29sdmUodmFsdWUpOworICAgICAgICB9CisgICAgfTsKK307CisKKy8qKgorICogQHBhcmFtIHJlc29sdmVyIHtGdW5jdGlvbn0gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm90aGluZyBhbmQgYWNjZXB0cworICogdGhlIHJlc29sdmUsIHJlamVjdCwgYW5kIG5vdGlmeSBmdW5jdGlvbnMgZm9yIGEgZGVmZXJyZWQuCisgKiBAcmV0dXJucyBhIHByb21pc2UgdGhhdCBtYXkgYmUgcmVzb2x2ZWQgd2l0aCB0aGUgZ2l2ZW4gcmVzb2x2ZSBhbmQgcmVqZWN0CisgKiBmdW5jdGlvbnMsIG9yIHJlamVjdGVkIGJ5IGEgdGhyb3duIGV4Y2VwdGlvbiBpbiByZXNvbHZlcgorICovCitRLlByb21pc2UgPSBwcm9taXNlOyAvLyBFUzYKK1EucHJvbWlzZSA9IHByb21pc2U7CitmdW5jdGlvbiBwcm9taXNlKHJlc29sdmVyKSB7CisgICAgaWYgKHR5cGVvZiByZXNvbHZlciAhPT0gImZ1bmN0aW9uIikgeworICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJyZXNvbHZlciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7CisgICAgfQorICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7CisgICAgdHJ5IHsKKyAgICAgICAgcmVzb2x2ZXIoZGVmZXJyZWQucmVzb2x2ZSwgZGVmZXJyZWQucmVqZWN0LCBkZWZlcnJlZC5ub3RpZnkpOworICAgIH0gY2F0Y2ggKHJlYXNvbikgeworICAgICAgICBkZWZlcnJlZC5yZWplY3QocmVhc29uKTsKKyAgICB9CisgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7Cit9CisKK3Byb21pc2UucmFjZSA9IHJhY2U7IC8vIEVTNgorcHJvbWlzZS5hbGwgPSBhbGw7IC8vIEVTNgorcHJvbWlzZS5yZWplY3QgPSByZWplY3Q7IC8vIEVTNgorcHJvbWlzZS5yZXNvbHZlID0gUTsgLy8gRVM2CisKKy8vIFhYWCBleHBlcmltZW50YWwuICBUaGlzIG1ldGhvZCBpcyBhIHdheSB0byBkZW5vdGUgdGhhdCBhIGxvY2FsIHZhbHVlIGlzCisvLyBzZXJpYWxpemFibGUgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSBkaXNwYXRjaGVkIHRvIGEgcmVtb3RlIHVwb24gcmVxdWVzdCwKKy8vIGluc3RlYWQgb2YgcGFzc2luZyBhIHJlZmVyZW5jZS4KK1EucGFzc0J5Q29weSA9IGZ1bmN0aW9uIChvYmplY3QpIHsKKyAgICAvL2ZyZWV6ZShvYmplY3QpOworICAgIC8vcGFzc0J5Q29waWVzLnNldChvYmplY3QsIHRydWUpOworICAgIHJldHVybiBvYmplY3Q7Cit9OworCitQcm9taXNlLnByb3RvdHlwZS5wYXNzQnlDb3B5ID0gZnVuY3Rpb24gKCkgeworICAgIC8vZnJlZXplKG9iamVjdCk7CisgICAgLy9wYXNzQnlDb3BpZXMuc2V0KG9iamVjdCwgdHJ1ZSk7CisgICAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIElmIHR3byBwcm9taXNlcyBldmVudHVhbGx5IGZ1bGZpbGwgdG8gdGhlIHNhbWUgdmFsdWUsIHByb21pc2VzIHRoYXQgdmFsdWUsCisgKiBidXQgb3RoZXJ3aXNlIHJlamVjdHMuCisgKiBAcGFyYW0geCB7QW55Kn0KKyAqIEBwYXJhbSB5IHtBbnkqfQorICogQHJldHVybnMge0FueSp9IGEgcHJvbWlzZSBmb3IgeCBhbmQgeSBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgYnV0IGEgcmVqZWN0aW9uCisgKiBvdGhlcndpc2UuCisgKgorICovCitRLmpvaW4gPSBmdW5jdGlvbiAoeCwgeSkgeworICAgIHJldHVybiBRKHgpLmpvaW4oeSk7Cit9OworCitQcm9taXNlLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gKHRoYXQpIHsKKyAgICByZXR1cm4gUShbdGhpcywgdGhhdF0pLnNwcmVhZChmdW5jdGlvbiAoeCwgeSkgeworICAgICAgICBpZiAoeCA9PT0geSkgeworICAgICAgICAgICAgLy8gVE9ETzogIj09PSIgc2hvdWxkIGJlIE9iamVjdC5pcyBvciBlcXVpdgorICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGpvaW46IG5vdCB0aGUgc2FtZTogIiArIHggKyAiICIgKyB5KTsKKyAgICAgICAgfQorICAgIH0pOworfTsKKworLyoqCisgKiBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIGZpcnN0IG9mIGFuIGFycmF5IG9mIHByb21pc2VzIHRvIGJlY29tZSBzZXR0bGVkLgorICogQHBhcmFtIGFuc3dlcnMge0FycmF5W0FueSpdfSBwcm9taXNlcyB0byByYWNlCisgKiBAcmV0dXJucyB7QW55Kn0gdGhlIGZpcnN0IHByb21pc2UgdG8gYmUgc2V0dGxlZAorICovCitRLnJhY2UgPSByYWNlOworZnVuY3Rpb24gcmFjZShhbnN3ZXJQcykgeworICAgIHJldHVybiBwcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgLy8gU3dpdGNoIHRvIHRoaXMgb25jZSB3ZSBjYW4gYXNzdW1lIGF0IGxlYXN0IEVTNQorICAgICAgICAvLyBhbnN3ZXJQcy5mb3JFYWNoKGZ1bmN0aW9uIChhbnN3ZXJQKSB7CisgICAgICAgIC8vICAgICBRKGFuc3dlclApLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgLy8gfSk7CisgICAgICAgIC8vIFVzZSB0aGlzIGluIHRoZSBtZWFudGltZQorICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYW5zd2VyUHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgIFEoYW5zd2VyUHNbaV0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitQcm9taXNlLnByb3RvdHlwZS5yYWNlID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiB0aGlzLnRoZW4oUS5yYWNlKTsKK307CisKKy8qKgorICogQ29uc3RydWN0cyBhIFByb21pc2Ugd2l0aCBhIHByb21pc2UgZGVzY3JpcHRvciBvYmplY3QgYW5kIG9wdGlvbmFsIGZhbGxiYWNrCisgKiBmdW5jdGlvbi4gIFRoZSBkZXNjcmlwdG9yIGNvbnRhaW5zIG1ldGhvZHMgbGlrZSB3aGVuKHJlamVjdGVkKSwgZ2V0KG5hbWUpLAorICogc2V0KG5hbWUsIHZhbHVlKSwgcG9zdChuYW1lLCBhcmdzKSwgYW5kIGRlbGV0ZShuYW1lKSwgd2hpY2ggYWxsCisgKiByZXR1cm4gZWl0aGVyIGEgdmFsdWUsIGEgcHJvbWlzZSBmb3IgYSB2YWx1ZSwgb3IgYSByZWplY3Rpb24uICBUaGUgZmFsbGJhY2sKKyAqIGFjY2VwdHMgdGhlIG9wZXJhdGlvbiBuYW1lLCBhIHJlc29sdmVyLCBhbmQgYW55IGZ1cnRoZXIgYXJndW1lbnRzIHRoYXQgd291bGQKKyAqIGhhdmUgYmVlbiBmb3J3YXJkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIG1ldGhvZCBhYm92ZSBoYWQgYSBtZXRob2QgYmVlbgorICogcHJvdmlkZWQgd2l0aCB0aGUgcHJvcGVyIG5hbWUuICBUaGUgQVBJIG1ha2VzIG5vIGd1YXJhbnRlZXMgYWJvdXQgdGhlIG5hdHVyZQorICogb2YgdGhlIHJldHVybmVkIG9iamVjdCwgYXBhcnQgZnJvbSB0aGF0IGl0IGlzIHVzYWJsZSB3aGVyZWV2ZXIgcHJvbWlzZXMgYXJlCisgKiBib3VnaHQgYW5kIHNvbGQuCisgKi8KK1EubWFrZVByb21pc2UgPSBQcm9taXNlOworZnVuY3Rpb24gUHJvbWlzZShkZXNjcmlwdG9yLCBmYWxsYmFjaywgaW5zcGVjdCkgeworICAgIGlmIChmYWxsYmFjayA9PT0gdm9pZCAwKSB7CisgICAgICAgIGZhbGxiYWNrID0gZnVuY3Rpb24gKG9wKSB7CisgICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcigKKyAgICAgICAgICAgICAgICAiUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IG9wZXJhdGlvbjogIiArIG9wCisgICAgICAgICAgICApKTsKKyAgICAgICAgfTsKKyAgICB9CisgICAgaWYgKGluc3BlY3QgPT09IHZvaWQgMCkgeworICAgICAgICBpbnNwZWN0ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHtzdGF0ZTogInVua25vd24ifTsKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICB2YXIgcHJvbWlzZSA9IG9iamVjdF9jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpOworCisgICAgcHJvbWlzZS5wcm9taXNlRGlzcGF0Y2ggPSBmdW5jdGlvbiAocmVzb2x2ZSwgb3AsIGFyZ3MpIHsKKyAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yW29wXSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlc2NyaXB0b3Jbb3BdLmFwcGx5KHByb21pc2UsIGFyZ3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxsYmFjay5jYWxsKHByb21pc2UsIG9wLCBhcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICByZXN1bHQgPSByZWplY3QoZXhjZXB0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzb2x2ZSkgeworICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpOworICAgICAgICB9CisgICAgfTsKKworICAgIHByb21pc2UuaW5zcGVjdCA9IGluc3BlY3Q7CisKKyAgICAvLyBYWFggZGVwcmVjYXRlZCBgdmFsdWVPZmAgYW5kIGBleGNlcHRpb25gIHN1cHBvcnQKKyAgICBpZiAoaW5zcGVjdCkgeworICAgICAgICB2YXIgaW5zcGVjdGVkID0gaW5zcGVjdCgpOworICAgICAgICBpZiAoaW5zcGVjdGVkLnN0YXRlID09PSAicmVqZWN0ZWQiKSB7CisgICAgICAgICAgICBwcm9taXNlLmV4Y2VwdGlvbiA9IGluc3BlY3RlZC5yZWFzb247CisgICAgICAgIH0KKworICAgICAgICBwcm9taXNlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgaW5zcGVjdGVkID0gaW5zcGVjdCgpOworICAgICAgICAgICAgaWYgKGluc3BlY3RlZC5zdGF0ZSA9PT0gInBlbmRpbmciIHx8CisgICAgICAgICAgICAgICAgaW5zcGVjdGVkLnN0YXRlID09PSAicmVqZWN0ZWQiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaW5zcGVjdGVkLnZhbHVlOworICAgICAgICB9OworICAgIH0KKworICAgIHJldHVybiBwcm9taXNlOworfQorCitQcm9taXNlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gIltvYmplY3QgUHJvbWlzZV0iOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChmdWxmaWxsZWQsIHJlamVjdGVkLCBwcm9ncmVzc2VkKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzOworICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7CisgICAgdmFyIGRvbmUgPSBmYWxzZTsgICAvLyBlbnN1cmUgdGhlIHVudHJ1c3RlZCBwcm9taXNlIG1ha2VzIGF0IG1vc3QgYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlIGNhbGwgdG8gb25lIG9mIHRoZSBjYWxsYmFja3MKKworICAgIGZ1bmN0aW9uIF9mdWxmaWxsZWQodmFsdWUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZnVsZmlsbGVkID09PSAiZnVuY3Rpb24iID8gZnVsZmlsbGVkKHZhbHVlKSA6IHZhbHVlOworICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIF9yZWplY3RlZChleGNlcHRpb24pIHsKKyAgICAgICAgaWYgKHR5cGVvZiByZWplY3RlZCA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgbWFrZVN0YWNrVHJhY2VMb25nKGV4Y2VwdGlvbiwgc2VsZik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RlZChleGNlcHRpb24pOworICAgICAgICAgICAgfSBjYXRjaCAobmV3RXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXdFeGNlcHRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBfcHJvZ3Jlc3NlZCh2YWx1ZSkgeworICAgICAgICByZXR1cm4gdHlwZW9mIHByb2dyZXNzZWQgPT09ICJmdW5jdGlvbiIgPyBwcm9ncmVzc2VkKHZhbHVlKSA6IHZhbHVlOworICAgIH0KKworICAgIFEubmV4dFRpY2soZnVuY3Rpb24gKCkgeworICAgICAgICBzZWxmLnByb21pc2VEaXNwYXRjaChmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChkb25lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9uZSA9IHRydWU7CisKKyAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUoX2Z1bGZpbGxlZCh2YWx1ZSkpOworICAgICAgICB9LCAid2hlbiIsIFtmdW5jdGlvbiAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBpZiAoZG9uZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworCisgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKF9yZWplY3RlZChleGNlcHRpb24pKTsKKyAgICAgICAgfV0pOworICAgIH0pOworCisgICAgLy8gUHJvZ3Jlc3MgcHJvcGFnYXRvciBuZWVkIHRvIGJlIGF0dGFjaGVkIGluIHRoZSBjdXJyZW50IHRpY2suCisgICAgc2VsZi5wcm9taXNlRGlzcGF0Y2godm9pZCAwLCAid2hlbiIsIFt2b2lkIDAsIGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICB2YXIgbmV3VmFsdWU7CisgICAgICAgIHZhciB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3VmFsdWUgPSBfcHJvZ3Jlc3NlZCh2YWx1ZSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChRLm9uZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBRLm9uZXJyb3IoZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3KSB7CisgICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnkobmV3VmFsdWUpOworICAgICAgICB9CisgICAgfV0pOworCisgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7Cit9OworCitRLnRhcCA9IGZ1bmN0aW9uIChwcm9taXNlLCBjYWxsYmFjaykgeworICAgIHJldHVybiBRKHByb21pc2UpLnRhcChjYWxsYmFjayk7Cit9OworCisvKioKKyAqIFdvcmtzIGFsbW9zdCBsaWtlICJmaW5hbGx5IiwgYnV0IG5vdCBjYWxsZWQgZm9yIHJlamVjdGlvbnMuCisgKiBPcmlnaW5hbCByZXNvbHV0aW9uIHZhbHVlIGlzIHBhc3NlZCB0aHJvdWdoIGNhbGxiYWNrIHVuYWZmZWN0ZWQuCisgKiBDYWxsYmFjayBtYXkgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IHdpbGwgYmUgYXdhaXRlZCBmb3IuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjaworICogQHJldHVybnMge1EuUHJvbWlzZX0KKyAqIEBleGFtcGxlCisgKiBkb1NvbWV0aGluZygpCisgKiAgIC50aGVuKC4uLikKKyAqICAgLnRhcChjb25zb2xlLmxvZykKKyAqICAgLnRoZW4oLi4uKTsKKyAqLworUHJvbWlzZS5wcm90b3R5cGUudGFwID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CisgICAgY2FsbGJhY2sgPSBRKGNhbGxiYWNrKTsKKworICAgIHJldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIHJldHVybiBjYWxsYmFjay5mY2FsbCh2YWx1ZSkudGhlblJlc29sdmUodmFsdWUpOworICAgIH0pOworfTsKKworLyoqCisgKiBSZWdpc3RlcnMgYW4gb2JzZXJ2ZXIgb24gYSBwcm9taXNlLgorICoKKyAqIEd1YXJhbnRlZXM6CisgKgorICogMS4gdGhhdCBmdWxmaWxsZWQgYW5kIHJlamVjdGVkIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZS4KKyAqIDIuIHRoYXQgZWl0aGVyIHRoZSBmdWxmaWxsZWQgY2FsbGJhY2sgb3IgdGhlIHJlamVjdGVkIGNhbGxiYWNrIHdpbGwgYmUKKyAqICAgIGNhbGxlZCwgYnV0IG5vdCBib3RoLgorICogMy4gdGhhdCBmdWxmaWxsZWQgYW5kIHJlamVjdGVkIHdpbGwgbm90IGJlIGNhbGxlZCBpbiB0aGlzIHR1cm4uCisgKgorICogQHBhcmFtIHZhbHVlICAgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIHRvIG9ic2VydmUKKyAqIEBwYXJhbSBmdWxmaWxsZWQgIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSBmdWxmaWxsZWQgdmFsdWUKKyAqIEBwYXJhbSByZWplY3RlZCAgIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSByZWplY3Rpb24gZXhjZXB0aW9uCisgKiBAcGFyYW0gcHJvZ3Jlc3NlZCBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gYW55IHByb2dyZXNzIG5vdGlmaWNhdGlvbnMKKyAqIEByZXR1cm4gcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBpbnZva2VkIGNhbGxiYWNrCisgKi8KK1Eud2hlbiA9IHdoZW47CitmdW5jdGlvbiB3aGVuKHZhbHVlLCBmdWxmaWxsZWQsIHJlamVjdGVkLCBwcm9ncmVzc2VkKSB7CisgICAgcmV0dXJuIFEodmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCwgcHJvZ3Jlc3NlZCk7Cit9CisKK1Byb21pc2UucHJvdG90eXBlLnRoZW5SZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB2YWx1ZTsgfSk7Cit9OworCitRLnRoZW5SZXNvbHZlID0gZnVuY3Rpb24gKHByb21pc2UsIHZhbHVlKSB7CisgICAgcmV0dXJuIFEocHJvbWlzZSkudGhlblJlc29sdmUodmFsdWUpOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUudGhlblJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICByZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgcmVhc29uOyB9KTsKK307CisKK1EudGhlblJlamVjdCA9IGZ1bmN0aW9uIChwcm9taXNlLCByZWFzb24pIHsKKyAgICByZXR1cm4gUShwcm9taXNlKS50aGVuUmVqZWN0KHJlYXNvbik7Cit9OworCisvKioKKyAqIElmIGFuIG9iamVjdCBpcyBub3QgYSBwcm9taXNlLCBpdCBpcyBhcyAibmVhciIgYXMgcG9zc2libGUuCisgKiBJZiBhIHByb21pc2UgaXMgcmVqZWN0ZWQsIGl0IGlzIGFzICJuZWFyIiBhcyBwb3NzaWJsZSB0b28uCisgKiBJZiBpdOKAmXMgYSBmdWxmaWxsZWQgcHJvbWlzZSwgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIGlzIG5lYXJlci4KKyAqIElmIGl04oCZcyBhIGRlZmVycmVkIHByb21pc2UgYW5kIHRoZSBkZWZlcnJlZCBoYXMgYmVlbiByZXNvbHZlZCwgdGhlCisgKiByZXNvbHV0aW9uIGlzICJuZWFyZXIiLgorICogQHBhcmFtIG9iamVjdAorICogQHJldHVybnMgbW9zdCByZXNvbHZlZCAobmVhcmVzdCkgZm9ybSBvZiB0aGUgb2JqZWN0CisgKi8KKworLy8gWFhYIHNob3VsZCB3ZSByZS1kbyB0aGlzPworUS5uZWFyZXIgPSBuZWFyZXI7CitmdW5jdGlvbiBuZWFyZXIodmFsdWUpIHsKKyAgICBpZiAoaXNQcm9taXNlKHZhbHVlKSkgeworICAgICAgICB2YXIgaW5zcGVjdGVkID0gdmFsdWUuaW5zcGVjdCgpOworICAgICAgICBpZiAoaW5zcGVjdGVkLnN0YXRlID09PSAiZnVsZmlsbGVkIikgeworICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RlZC52YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8qKgorICogQHJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgcHJvbWlzZS4KKyAqIE90aGVyd2lzZSBpdCBpcyBhIGZ1bGZpbGxlZCB2YWx1ZS4KKyAqLworUS5pc1Byb21pc2UgPSBpc1Byb21pc2U7CitmdW5jdGlvbiBpc1Byb21pc2Uob2JqZWN0KSB7CisgICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIFByb21pc2U7Cit9CisKK1EuaXNQcm9taXNlQWxpa2UgPSBpc1Byb21pc2VBbGlrZTsKK2Z1bmN0aW9uIGlzUHJvbWlzZUFsaWtlKG9iamVjdCkgeworICAgIHJldHVybiBpc09iamVjdChvYmplY3QpICYmIHR5cGVvZiBvYmplY3QudGhlbiA9PT0gImZ1bmN0aW9uIjsKK30KKworLyoqCisgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIG1lYW5pbmcgbm90CisgKiBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuCisgKi8KK1EuaXNQZW5kaW5nID0gaXNQZW5kaW5nOworZnVuY3Rpb24gaXNQZW5kaW5nKG9iamVjdCkgeworICAgIHJldHVybiBpc1Byb21pc2Uob2JqZWN0KSAmJiBvYmplY3QuaW5zcGVjdCgpLnN0YXRlID09PSAicGVuZGluZyI7Cit9CisKK1Byb21pc2UucHJvdG90eXBlLmlzUGVuZGluZyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy5pbnNwZWN0KCkuc3RhdGUgPT09ICJwZW5kaW5nIjsKK307CisKKy8qKgorICogQHJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgdmFsdWUgb3IgZnVsZmlsbGVkCisgKiBwcm9taXNlLgorICovCitRLmlzRnVsZmlsbGVkID0gaXNGdWxmaWxsZWQ7CitmdW5jdGlvbiBpc0Z1bGZpbGxlZChvYmplY3QpIHsKKyAgICByZXR1cm4gIWlzUHJvbWlzZShvYmplY3QpIHx8IG9iamVjdC5pbnNwZWN0KCkuc3RhdGUgPT09ICJmdWxmaWxsZWQiOworfQorCitQcm9taXNlLnByb3RvdHlwZS5pc0Z1bGZpbGxlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy5pbnNwZWN0KCkuc3RhdGUgPT09ICJmdWxmaWxsZWQiOworfTsKKworLyoqCisgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSByZWplY3RlZCBwcm9taXNlLgorICovCitRLmlzUmVqZWN0ZWQgPSBpc1JlamVjdGVkOworZnVuY3Rpb24gaXNSZWplY3RlZChvYmplY3QpIHsKKyAgICByZXR1cm4gaXNQcm9taXNlKG9iamVjdCkgJiYgb2JqZWN0Lmluc3BlY3QoKS5zdGF0ZSA9PT0gInJlamVjdGVkIjsKK30KKworUHJvbWlzZS5wcm90b3R5cGUuaXNSZWplY3RlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXR1cm4gdGhpcy5pbnNwZWN0KCkuc3RhdGUgPT09ICJyZWplY3RlZCI7Cit9OworCisvLy8vIEJFR0lOIFVOSEFORExFRCBSRUpFQ1RJT04gVFJBQ0tJTkcKKworLy8gVGhpcyBwcm9taXNlIGxpYnJhcnkgY29uc3VtZXMgZXhjZXB0aW9ucyB0aHJvd24gaW4gaGFuZGxlcnMgc28gdGhleSBjYW4gYmUKKy8vIGhhbmRsZWQgYnkgYSBzdWJzZXF1ZW50IHByb21pc2UuICBUaGUgZXhjZXB0aW9ucyBnZXQgYWRkZWQgdG8gdGhpcyBhcnJheSB3aGVuCisvLyB0aGV5IGFyZSBjcmVhdGVkLCBhbmQgcmVtb3ZlZCB3aGVuIHRoZXkgYXJlIGhhbmRsZWQuICBOb3RlIHRoYXQgaW4gRVM2IG9yCisvLyBzaGltbWVkIGVudmlyb25tZW50cywgdGhpcyB3b3VsZCBuYXR1cmFsbHkgYmUgYSBgU2V0YC4KK3ZhciB1bmhhbmRsZWRSZWFzb25zID0gW107Cit2YXIgdW5oYW5kbGVkUmVqZWN0aW9ucyA9IFtdOwordmFyIHJlcG9ydGVkVW5oYW5kbGVkUmVqZWN0aW9ucyA9IFtdOwordmFyIHRyYWNrVW5oYW5kbGVkUmVqZWN0aW9ucyA9IHRydWU7CisKK2Z1bmN0aW9uIHJlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucygpIHsKKyAgICB1bmhhbmRsZWRSZWFzb25zLmxlbmd0aCA9IDA7CisgICAgdW5oYW5kbGVkUmVqZWN0aW9ucy5sZW5ndGggPSAwOworCisgICAgaWYgKCF0cmFja1VuaGFuZGxlZFJlamVjdGlvbnMpIHsKKyAgICAgICAgdHJhY2tVbmhhbmRsZWRSZWplY3Rpb25zID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRyYWNrUmVqZWN0aW9uKHByb21pc2UsIHJlYXNvbikgeworICAgIGlmICghdHJhY2tVbmhhbmRsZWRSZWplY3Rpb25zKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAib2JqZWN0IiAmJiB0eXBlb2YgcHJvY2Vzcy5lbWl0ID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgIFEubmV4dFRpY2sucnVuQWZ0ZXIoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgaWYgKGFycmF5X2luZGV4T2YodW5oYW5kbGVkUmVqZWN0aW9ucywgcHJvbWlzZSkgIT09IC0xKSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLCByZWFzb24sIHByb21pc2UpOworICAgICAgICAgICAgICAgIHJlcG9ydGVkVW5oYW5kbGVkUmVqZWN0aW9ucy5wdXNoKHByb21pc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICB1bmhhbmRsZWRSZWplY3Rpb25zLnB1c2gocHJvbWlzZSk7CisgICAgaWYgKHJlYXNvbiAmJiB0eXBlb2YgcmVhc29uLnN0YWNrICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICB1bmhhbmRsZWRSZWFzb25zLnB1c2gocmVhc29uLnN0YWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmhhbmRsZWRSZWFzb25zLnB1c2goIihubyBzdGFjaykgIiArIHJlYXNvbik7CisgICAgfQorfQorCitmdW5jdGlvbiB1bnRyYWNrUmVqZWN0aW9uKHByb21pc2UpIHsKKyAgICBpZiAoIXRyYWNrVW5oYW5kbGVkUmVqZWN0aW9ucykgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGF0ID0gYXJyYXlfaW5kZXhPZih1bmhhbmRsZWRSZWplY3Rpb25zLCBwcm9taXNlKTsKKyAgICBpZiAoYXQgIT09IC0xKSB7CisgICAgICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIHByb2Nlc3MuZW1pdCA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgUS5uZXh0VGljay5ydW5BZnRlcihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGF0UmVwb3J0ID0gYXJyYXlfaW5kZXhPZihyZXBvcnRlZFVuaGFuZGxlZFJlamVjdGlvbnMsIHByb21pc2UpOworICAgICAgICAgICAgICAgIGlmIChhdFJlcG9ydCAhPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIiwgdW5oYW5kbGVkUmVhc29uc1thdF0sIHByb21pc2UpOworICAgICAgICAgICAgICAgICAgICByZXBvcnRlZFVuaGFuZGxlZFJlamVjdGlvbnMuc3BsaWNlKGF0UmVwb3J0LCAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICB1bmhhbmRsZWRSZWplY3Rpb25zLnNwbGljZShhdCwgMSk7CisgICAgICAgIHVuaGFuZGxlZFJlYXNvbnMuc3BsaWNlKGF0LCAxKTsKKyAgICB9Cit9CisKK1EucmVzZXRVbmhhbmRsZWRSZWplY3Rpb25zID0gcmVzZXRVbmhhbmRsZWRSZWplY3Rpb25zOworCitRLmdldFVuaGFuZGxlZFJlYXNvbnMgPSBmdW5jdGlvbiAoKSB7CisgICAgLy8gTWFrZSBhIGNvcHkgc28gdGhhdCBjb25zdW1lcnMgY2FuJ3QgaW50ZXJmZXJlIHdpdGggb3VyIGludGVybmFsIHN0YXRlLgorICAgIHJldHVybiB1bmhhbmRsZWRSZWFzb25zLnNsaWNlKCk7Cit9OworCitRLnN0b3BVbmhhbmRsZWRSZWplY3Rpb25UcmFja2luZyA9IGZ1bmN0aW9uICgpIHsKKyAgICByZXNldFVuaGFuZGxlZFJlamVjdGlvbnMoKTsKKyAgICB0cmFja1VuaGFuZGxlZFJlamVjdGlvbnMgPSBmYWxzZTsKK307CisKK3Jlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucygpOworCisvLy8vIEVORCBVTkhBTkRMRUQgUkVKRUNUSU9OIFRSQUNLSU5HCisKKy8qKgorICogQ29uc3RydWN0cyBhIHJlamVjdGVkIHByb21pc2UuCisgKiBAcGFyYW0gcmVhc29uIHZhbHVlIGRlc2NyaWJpbmcgdGhlIGZhaWx1cmUKKyAqLworUS5yZWplY3QgPSByZWplY3Q7CitmdW5jdGlvbiByZWplY3QocmVhc29uKSB7CisgICAgdmFyIHJlamVjdGlvbiA9IFByb21pc2UoeworICAgICAgICAid2hlbiI6IGZ1bmN0aW9uIChyZWplY3RlZCkgeworICAgICAgICAgICAgLy8gbm90ZSB0aGF0IHRoZSBlcnJvciBoYXMgYmVlbiBoYW5kbGVkCisgICAgICAgICAgICBpZiAocmVqZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICB1bnRyYWNrUmVqZWN0aW9uKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlamVjdGVkID8gcmVqZWN0ZWQocmVhc29uKSA6IHRoaXM7CisgICAgICAgIH0KKyAgICB9LCBmdW5jdGlvbiBmYWxsYmFjaygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwgZnVuY3Rpb24gaW5zcGVjdCgpIHsKKyAgICAgICAgcmV0dXJuIHsgc3RhdGU6ICJyZWplY3RlZCIsIHJlYXNvbjogcmVhc29uIH07CisgICAgfSk7CisKKyAgICAvLyBOb3RlIHRoYXQgdGhlIHJlYXNvbiBoYXMgbm90IGJlZW4gaGFuZGxlZC4KKyAgICB0cmFja1JlamVjdGlvbihyZWplY3Rpb24sIHJlYXNvbik7CisKKyAgICByZXR1cm4gcmVqZWN0aW9uOworfQorCisvKioKKyAqIENvbnN0cnVjdHMgYSBmdWxmaWxsZWQgcHJvbWlzZSBmb3IgYW4gaW1tZWRpYXRlIHJlZmVyZW5jZS4KKyAqIEBwYXJhbSB2YWx1ZSBpbW1lZGlhdGUgcmVmZXJlbmNlCisgKi8KK1EuZnVsZmlsbCA9IGZ1bGZpbGw7CitmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7CisgICAgcmV0dXJuIFByb21pc2UoeworICAgICAgICAid2hlbiI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfSwKKyAgICAgICAgImdldCI6IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVbbmFtZV07CisgICAgICAgIH0sCisgICAgICAgICJzZXQiOiBmdW5jdGlvbiAobmFtZSwgcmhzKSB7CisgICAgICAgICAgICB2YWx1ZVtuYW1lXSA9IHJoczsKKyAgICAgICAgfSwKKyAgICAgICAgImRlbGV0ZSI6IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgICAgICAgICBkZWxldGUgdmFsdWVbbmFtZV07CisgICAgICAgIH0sCisgICAgICAgICJwb3N0IjogZnVuY3Rpb24gKG5hbWUsIGFyZ3MpIHsKKyAgICAgICAgICAgIC8vIE1hcmsgTWlsbGVyIHByb3Bvc2VzIHRoYXQgcG9zdCB3aXRoIG5vIG5hbWUgc2hvdWxkIGFwcGx5IGEKKyAgICAgICAgICAgIC8vIHByb21pc2VkIGZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKG5hbWUgPT09IG51bGwgfHwgbmFtZSA9PT0gdm9pZCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFwcGx5KHZvaWQgMCwgYXJncyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtuYW1lXS5hcHBseSh2YWx1ZSwgYXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhcHBseSI6IGZ1bmN0aW9uICh0aGlzcCwgYXJncykgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFwcGx5KHRoaXNwLCBhcmdzKTsKKyAgICAgICAgfSwKKyAgICAgICAgImtleXMiOiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0X2tleXModmFsdWUpOworICAgICAgICB9CisgICAgfSwgdm9pZCAwLCBmdW5jdGlvbiBpbnNwZWN0KCkgeworICAgICAgICByZXR1cm4geyBzdGF0ZTogImZ1bGZpbGxlZCIsIHZhbHVlOiB2YWx1ZSB9OworICAgIH0pOworfQorCisvKioKKyAqIENvbnZlcnRzIHRoZW5hYmxlcyB0byBRIHByb21pc2VzLgorICogQHBhcmFtIHByb21pc2UgdGhlbmFibGUgcHJvbWlzZQorICogQHJldHVybnMgYSBRIHByb21pc2UKKyAqLworZnVuY3Rpb24gY29lcmNlKHByb21pc2UpIHsKKyAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpOworICAgIFEubmV4dFRpY2soZnVuY3Rpb24gKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcHJvbWlzZS50aGVuKGRlZmVycmVkLnJlc29sdmUsIGRlZmVycmVkLnJlamVjdCwgZGVmZXJyZWQubm90aWZ5KTsKKyAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QoZXhjZXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworfQorCisvKioKKyAqIEFubm90YXRlcyBhbiBvYmplY3Qgc3VjaCB0aGF0IGl0IHdpbGwgbmV2ZXIgYmUKKyAqIHRyYW5zZmVycmVkIGF3YXkgZnJvbSB0aGlzIHByb2Nlc3Mgb3ZlciBhbnkgcHJvbWlzZQorICogY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICogQHBhcmFtIG9iamVjdAorICogQHJldHVybnMgcHJvbWlzZSBhIHdyYXBwaW5nIG9mIHRoYXQgb2JqZWN0IHRoYXQKKyAqIGFkZGl0aW9uYWxseSByZXNwb25kcyB0byB0aGUgImlzRGVmIiBtZXNzYWdlCisgKiB3aXRob3V0IGEgcmVqZWN0aW9uLgorICovCitRLm1hc3RlciA9IG1hc3RlcjsKK2Z1bmN0aW9uIG1hc3RlcihvYmplY3QpIHsKKyAgICByZXR1cm4gUHJvbWlzZSh7CisgICAgICAgICJpc0RlZiI6IGZ1bmN0aW9uICgpIHt9CisgICAgfSwgZnVuY3Rpb24gZmFsbGJhY2sob3AsIGFyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGRpc3BhdGNoKG9iamVjdCwgb3AsIGFyZ3MpOworICAgIH0sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIFEob2JqZWN0KS5pbnNwZWN0KCk7CisgICAgfSk7Cit9CisKKy8qKgorICogU3ByZWFkcyB0aGUgdmFsdWVzIG9mIGEgcHJvbWlzZWQgYXJyYXkgb2YgYXJndW1lbnRzIGludG8gdGhlCisgKiBmdWxmaWxsbWVudCBjYWxsYmFjay4KKyAqIEBwYXJhbSBmdWxmaWxsZWQgY2FsbGJhY2sgdGhhdCByZWNlaXZlcyB2YXJpYWRpYyBhcmd1bWVudHMgZnJvbSB0aGUKKyAqIHByb21pc2VkIGFycmF5CisgKiBAcGFyYW0gcmVqZWN0ZWQgY2FsbGJhY2sgdGhhdCByZWNlaXZlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSBwcm9taXNlCisgKiBpcyByZWplY3RlZC4KKyAqIEByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBvciB0aHJvd24gZXhjZXB0aW9uIG9mCisgKiBlaXRoZXIgY2FsbGJhY2suCisgKi8KK1Euc3ByZWFkID0gc3ByZWFkOworZnVuY3Rpb24gc3ByZWFkKHZhbHVlLCBmdWxmaWxsZWQsIHJlamVjdGVkKSB7CisgICAgcmV0dXJuIFEodmFsdWUpLnNwcmVhZChmdWxmaWxsZWQsIHJlamVjdGVkKTsKK30KKworUHJvbWlzZS5wcm90b3R5cGUuc3ByZWFkID0gZnVuY3Rpb24gKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpIHsKKyAgICByZXR1cm4gdGhpcy5hbGwoKS50aGVuKGZ1bmN0aW9uIChhcnJheSkgeworICAgICAgICByZXR1cm4gZnVsZmlsbGVkLmFwcGx5KHZvaWQgMCwgYXJyYXkpOworICAgIH0sIHJlamVjdGVkKTsKK307CisKKy8qKgorICogVGhlIGFzeW5jIGZ1bmN0aW9uIGlzIGEgZGVjb3JhdG9yIGZvciBnZW5lcmF0b3IgZnVuY3Rpb25zLCB0dXJuaW5nCisgKiB0aGVtIGludG8gYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMuICBBbHRob3VnaCBnZW5lcmF0b3JzIGFyZSBvbmx5IHBhcnQKKyAqIG9mIHRoZSBuZXdlc3QgRUNNQVNjcmlwdCA2IGRyYWZ0cywgdGhpcyBjb2RlIGRvZXMgbm90IGNhdXNlIHN5bnRheAorICogZXJyb3JzIGluIG9sZGVyIGVuZ2luZXMuICBUaGlzIGNvZGUgc2hvdWxkIGNvbnRpbnVlIHRvIHdvcmsgYW5kIHdpbGwKKyAqIGluIGZhY3QgaW1wcm92ZSBvdmVyIHRpbWUgYXMgdGhlIGxhbmd1YWdlIGltcHJvdmVzLgorICoKKyAqIEVTNiBnZW5lcmF0b3JzIGFyZSBjdXJyZW50bHkgcGFydCBvZiBWOCB2ZXJzaW9uIDMuMTkgd2l0aCB0aGUKKyAqIC0taGFybW9ueS1nZW5lcmF0b3JzIHJ1bnRpbWUgZmxhZyBlbmFibGVkLiAgU3BpZGVyTW9ua2V5IGhhcyBoYWQgdGhlbQorICogZm9yIGxvbmdlciwgYnV0IHVuZGVyIGFuIG9sZGVyIFB5dGhvbi1pbnNwaXJlZCBmb3JtLiAgVGhpcyBmdW5jdGlvbgorICogd29ya3Mgb24gYm90aCBraW5kcyBvZiBnZW5lcmF0b3JzLgorICoKKyAqIERlY29yYXRlcyBhIGdlbmVyYXRvciBmdW5jdGlvbiBzdWNoIHRoYXQ6CisgKiAgLSBpdCBtYXkgeWllbGQgcHJvbWlzZXMKKyAqICAtIGV4ZWN1dGlvbiB3aWxsIGNvbnRpbnVlIHdoZW4gdGhhdCBwcm9taXNlIGlzIGZ1bGZpbGxlZAorICogIC0gdGhlIHZhbHVlIG9mIHRoZSB5aWVsZCBleHByZXNzaW9uIHdpbGwgYmUgdGhlIGZ1bGZpbGxlZCB2YWx1ZQorICogIC0gaXQgcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWUgKHdoZW4gdGhlIGdlbmVyYXRvcgorICogICAgc3RvcHMgaXRlcmF0aW5nKQorICogIC0gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICogICAgb2YgdGhlIGdlbmVyYXRvciBvciB0aGUgZmlyc3QgcmVqZWN0ZWQgcHJvbWlzZSBhbW9uZyB0aG9zZQorICogICAgeWllbGRlZC4KKyAqICAtIGlmIGFuIGVycm9yIGlzIHRocm93biBpbiB0aGUgZ2VuZXJhdG9yLCBpdCBwcm9wYWdhdGVzIHRocm91Z2gKKyAqICAgIGV2ZXJ5IGZvbGxvd2luZyB5aWVsZCB1bnRpbCBpdCBpcyBjYXVnaHQsIG9yIHVudGlsIGl0IGVzY2FwZXMKKyAqICAgIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gYWx0b2dldGhlciwgYW5kIGlzIHRyYW5zbGF0ZWQgaW50byBhCisgKiAgICByZWplY3Rpb24gZm9yIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBkZWNvcmF0ZWQgZ2VuZXJhdG9yLgorICovCitRLmFzeW5jID0gYXN5bmM7CitmdW5jdGlvbiBhc3luYyhtYWtlR2VuZXJhdG9yKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgLy8gd2hlbiB2ZXJiIGlzICJzZW5kIiwgYXJnIGlzIGEgdmFsdWUKKyAgICAgICAgLy8gd2hlbiB2ZXJiIGlzICJ0aHJvdyIsIGFyZyBpcyBhbiBleGNlcHRpb24KKyAgICAgICAgZnVuY3Rpb24gY29udGludWVyKHZlcmIsIGFyZykgeworICAgICAgICAgICAgdmFyIHJlc3VsdDsKKworICAgICAgICAgICAgLy8gVW50aWwgVjggMy4xOSAvIENocm9taXVtIDI5IGlzIHJlbGVhc2VkLCBTcGlkZXJNb25rZXkgaXMgdGhlIG9ubHkKKyAgICAgICAgICAgIC8vIGVuZ2luZSB0aGF0IGhhcyBhIGRlcGxveWVkIGJhc2Ugb2YgYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGdlbmVyYXRvcnMuCisgICAgICAgICAgICAvLyBIb3dldmVyLCBTTSdzIGdlbmVyYXRvcnMgdXNlIHRoZSBQeXRob24taW5zcGlyZWQgc2VtYW50aWNzIG9mCisgICAgICAgICAgICAvLyBvdXRkYXRlZCBFUzYgZHJhZnRzLiAgV2Ugd291bGQgbGlrZSB0byBzdXBwb3J0IEVTNiwgYnV0IHdlJ2QgYWxzbworICAgICAgICAgICAgLy8gbGlrZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBnZW5lcmF0b3JzIGluIGRlcGxveWVkIGJyb3dzZXJzLCBzbworICAgICAgICAgICAgLy8gd2UgYWxzbyBzdXBwb3J0IFB5dGhvbi1zdHlsZSBnZW5lcmF0b3JzLiAgQXQgc29tZSBwb2ludCB3ZSBjYW4gcmVtb3ZlCisgICAgICAgICAgICAvLyB0aGlzIGJsb2NrLgorCisgICAgICAgICAgICBpZiAodHlwZW9mIFN0b3BJdGVyYXRpb24gPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgLy8gRVM2IEdlbmVyYXRvcnMKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBnZW5lcmF0b3JbdmVyYl0oYXJnKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFEocmVzdWx0LnZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2hlbihyZXN1bHQudmFsdWUsIGNhbGxiYWNrLCBlcnJiYWNrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFNwaWRlck1vbmtleSBHZW5lcmF0b3JzCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNhc2Ugd2hlbiBTTSBkb2VzIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdlbmVyYXRvclt2ZXJiXShhcmcpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdG9wSXRlcmF0aW9uKGV4Y2VwdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBRKGV4Y2VwdGlvbi52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHdoZW4ocmVzdWx0LCBjYWxsYmFjaywgZXJyYmFjayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmFyIGdlbmVyYXRvciA9IG1ha2VHZW5lcmF0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgdmFyIGNhbGxiYWNrID0gY29udGludWVyLmJpbmQoY29udGludWVyLCAibmV4dCIpOworICAgICAgICB2YXIgZXJyYmFjayA9IGNvbnRpbnVlci5iaW5kKGNvbnRpbnVlciwgInRocm93Iik7CisgICAgICAgIHJldHVybiBjYWxsYmFjaygpOworICAgIH07Cit9CisKKy8qKgorICogVGhlIHNwYXduIGZ1bmN0aW9uIGlzIGEgc21hbGwgd3JhcHBlciBhcm91bmQgYXN5bmMgdGhhdCBpbW1lZGlhdGVseQorICogY2FsbHMgdGhlIGdlbmVyYXRvciBhbmQgYWxzbyBlbmRzIHRoZSBwcm9taXNlIGNoYWluLCBzbyB0aGF0IGFueQorICogdW5oYW5kbGVkIGVycm9ycyBhcmUgdGhyb3duIGluc3RlYWQgb2YgZm9yd2FyZGVkIHRvIHRoZSBlcnJvcgorICogaGFuZGxlci4gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBpdCdzIGV4dHJlbWVseSBjb21tb24gdG8gcnVuCisgKiBnZW5lcmF0b3JzIGF0IHRoZSB0b3AtbGV2ZWwgdG8gd29yayB3aXRoIGxpYnJhcmllcy4KKyAqLworUS5zcGF3biA9IHNwYXduOworZnVuY3Rpb24gc3Bhd24obWFrZUdlbmVyYXRvcikgeworICAgIFEuZG9uZShRLmFzeW5jKG1ha2VHZW5lcmF0b3IpKCkpOworfQorCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgaW50ZXJmYWNlIG9uY2UgRVM2IGdlbmVyYXRvcnMgYXJlIGluIFNwaWRlck1vbmtleS4KKy8qKgorICogVGhyb3dzIGEgUmV0dXJuVmFsdWUgZXhjZXB0aW9uIHRvIHN0b3AgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvci4KKyAqCisgKiBUaGlzIGludGVyZmFjZSBpcyBhIHN0b3AtZ2FwIG1lYXN1cmUgdG8gc3VwcG9ydCBnZW5lcmF0b3IgcmV0dXJuCisgKiB2YWx1ZXMgaW4gb2xkZXIgRmlyZWZveC9TcGlkZXJNb25rZXkuICBJbiBicm93c2VycyB0aGF0IHN1cHBvcnQgRVM2CisgKiBnZW5lcmF0b3JzIGxpa2UgQ2hyb21pdW0gMjksIGp1c3QgdXNlICJyZXR1cm4iIGluIHlvdXIgZ2VuZXJhdG9yCisgKiBmdW5jdGlvbnMuCisgKgorICogQHBhcmFtIHZhbHVlIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoZSBzdXJyb3VuZGluZyBnZW5lcmF0b3IKKyAqIEB0aHJvd3MgUmV0dXJuVmFsdWUgZXhjZXB0aW9uIHdpdGggdGhlIHZhbHVlLgorICogQGV4YW1wbGUKKyAqIC8vIEVTNiBzdHlsZQorICogUS5hc3luYyhmdW5jdGlvbiogKCkgeworICogICAgICB2YXIgZm9vID0geWllbGQgZ2V0Rm9vUHJvbWlzZSgpOworICogICAgICB2YXIgYmFyID0geWllbGQgZ2V0QmFyUHJvbWlzZSgpOworICogICAgICByZXR1cm4gZm9vICsgYmFyOworICogfSkKKyAqIC8vIE9sZGVyIFNwaWRlck1vbmtleSBzdHlsZQorICogUS5hc3luYyhmdW5jdGlvbiAoKSB7CisgKiAgICAgIHZhciBmb28gPSB5aWVsZCBnZXRGb29Qcm9taXNlKCk7CisgKiAgICAgIHZhciBiYXIgPSB5aWVsZCBnZXRCYXJQcm9taXNlKCk7CisgKiAgICAgIFEucmV0dXJuKGZvbyArIGJhcik7CisgKiB9KQorICovCitRWyJyZXR1cm4iXSA9IF9yZXR1cm47CitmdW5jdGlvbiBfcmV0dXJuKHZhbHVlKSB7CisgICAgdGhyb3cgbmV3IFFSZXR1cm5WYWx1ZSh2YWx1ZSk7Cit9CisKKy8qKgorICogVGhlIHByb21pc2VkIGZ1bmN0aW9uIGRlY29yYXRvciBlbnN1cmVzIHRoYXQgYW55IHByb21pc2UgYXJndW1lbnRzCisgKiBhcmUgc2V0dGxlZCBhbmQgcGFzc2VkIGFzIHZhbHVlcyAoYHRoaXNgIGlzIGFsc28gc2V0dGxlZCBhbmQgcGFzc2VkCisgKiBhcyBhIHZhbHVlKS4gIEl0IHdpbGwgYWxzbyBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gaXMKKyAqIGFsd2F5cyBhIHByb21pc2UuCisgKgorICogQGV4YW1wbGUKKyAqIHZhciBhZGQgPSBRLnByb21pc2VkKGZ1bmN0aW9uIChhLCBiKSB7CisgKiAgICAgcmV0dXJuIGEgKyBiOworICogfSk7CisgKiBhZGQoUShhKSwgUShCKSk7CisgKgorICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGRlY29yYXRlCisgKiBAcmV0dXJucyB7ZnVuY3Rpb259IGEgZnVuY3Rpb24gdGhhdCBoYXMgYmVlbiBkZWNvcmF0ZWQuCisgKi8KK1EucHJvbWlzZWQgPSBwcm9taXNlZDsKK2Z1bmN0aW9uIHByb21pc2VkKGNhbGxiYWNrKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIHNwcmVhZChbdGhpcywgYWxsKGFyZ3VtZW50cyldLCBmdW5jdGlvbiAoc2VsZiwgYXJncykgeworICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHNlbGYsIGFyZ3MpOworICAgICAgICB9KTsKKyAgICB9OworfQorCisvKioKKyAqIHNlbmRzIGEgbWVzc2FnZSB0byBhIHZhbHVlIGluIGEgZnV0dXJlIHR1cm4KKyAqIEBwYXJhbSBvYmplY3QqIHRoZSByZWNpcGllbnQKKyAqIEBwYXJhbSBvcCB0aGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBvcGVyYXRpb24sIGUuZy4sICJ3aGVuIiwKKyAqIEBwYXJhbSBhcmdzIGZ1cnRoZXIgYXJndW1lbnRzIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgb3BlcmF0aW9uCisgKiBAcmV0dXJucyByZXN1bHQge1Byb21pc2V9IGEgcHJvbWlzZSBmb3IgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uCisgKi8KK1EuZGlzcGF0Y2ggPSBkaXNwYXRjaDsKK2Z1bmN0aW9uIGRpc3BhdGNoKG9iamVjdCwgb3AsIGFyZ3MpIHsKKyAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKG9wLCBhcmdzKTsKK30KKworUHJvbWlzZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiAob3AsIGFyZ3MpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgc2VsZi5wcm9taXNlRGlzcGF0Y2goZGVmZXJyZWQucmVzb2x2ZSwgb3AsIGFyZ3MpOworICAgIH0pOworICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworfTsKKworLyoqCisgKiBHZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGluIGEgZnV0dXJlIHR1cm4uCisgKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IG9iamVjdAorICogQHBhcmFtIG5hbWUgICAgICBuYW1lIG9mIHByb3BlcnR5IHRvIGdldAorICogQHJldHVybiBwcm9taXNlIGZvciB0aGUgcHJvcGVydHkgdmFsdWUKKyAqLworUS5nZXQgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXkpIHsKKyAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKCJnZXQiLCBba2V5XSk7Cit9OworCitQcm9taXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7CisgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goImdldCIsIFtrZXldKTsKK307CisKKy8qKgorICogU2V0cyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpbiBhIGZ1dHVyZSB0dXJuLgorICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIG9iamVjdCBvYmplY3QKKyAqIEBwYXJhbSBuYW1lICAgICAgbmFtZSBvZiBwcm9wZXJ0eSB0byBzZXQKKyAqIEBwYXJhbSB2YWx1ZSAgICAgbmV3IHZhbHVlIG9mIHByb3BlcnR5CisgKiBAcmV0dXJuIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKKyAqLworUS5zZXQgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaCgic2V0IiwgW2tleSwgdmFsdWVdKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7CisgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goInNldCIsIFtrZXksIHZhbHVlXSk7Cit9OworCisvKioKKyAqIERlbGV0ZXMgYSBwcm9wZXJ0eSBpbiBhIGZ1dHVyZSB0dXJuLgorICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIHRhcmdldCBvYmplY3QKKyAqIEBwYXJhbSBuYW1lICAgICAgbmFtZSBvZiBwcm9wZXJ0eSB0byBkZWxldGUKKyAqIEByZXR1cm4gcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICovCitRLmRlbCA9IC8vIFhYWCBsZWdhY3kKK1FbImRlbGV0ZSJdID0gZnVuY3Rpb24gKG9iamVjdCwga2V5KSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaCgiZGVsZXRlIiwgW2tleV0pOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUuZGVsID0gLy8gWFhYIGxlZ2FjeQorUHJvbWlzZS5wcm90b3R5cGVbImRlbGV0ZSJdID0gZnVuY3Rpb24gKGtleSkgeworICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKCJkZWxldGUiLCBba2V5XSk7Cit9OworCisvKioKKyAqIEludm9rZXMgYSBtZXRob2QgaW4gYSBmdXR1cmUgdHVybi4KKyAqIEBwYXJhbSBvYmplY3QgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIGZvciB0YXJnZXQgb2JqZWN0CisgKiBAcGFyYW0gbmFtZSAgICAgIG5hbWUgb2YgbWV0aG9kIHRvIGludm9rZQorICogQHBhcmFtIHZhbHVlICAgICBhIHZhbHVlIHRvIHBvc3QsIHR5cGljYWxseSBhbiBhcnJheSBvZgorICogICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uIGFyZ3VtZW50cyBmb3IgcHJvbWlzZXMgdGhhdAorICogICAgICAgICAgICAgICAgICBhcmUgdWx0aW1hdGVseSBiYWNrZWQgd2l0aCBgcmVzb2x2ZWAgdmFsdWVzLAorICogICAgICAgICAgICAgICAgICBhcyBvcHBvc2VkIHRvIHRob3NlIGJhY2tlZCB3aXRoIFVSTHMKKyAqICAgICAgICAgICAgICAgICAgd2hlcmVpbiB0aGUgcG9zdGVkIHZhbHVlIGNhbiBiZSBhbnkKKyAqICAgICAgICAgICAgICAgICAgSlNPTiBzZXJpYWxpemFibGUgb2JqZWN0LgorICogQHJldHVybiBwcm9taXNlIGZvciB0aGUgcmV0dXJuIHZhbHVlCisgKi8KKy8vIGJvdW5kIGxvY2FsbHkgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IG90aGVyIG1ldGhvZHMKK1EubWFwcGx5ID0gLy8gWFhYIEFzIHByb3Bvc2VkIGJ5ICJSZWRzYW5kcm8iCitRLnBvc3QgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCBhcmdzKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaCgicG9zdCIsIFtuYW1lLCBhcmdzXSk7Cit9OworCitQcm9taXNlLnByb3RvdHlwZS5tYXBwbHkgPSAvLyBYWFggQXMgcHJvcG9zZWQgYnkgIlJlZHNhbmRybyIKK1Byb21pc2UucHJvdG90eXBlLnBvc3QgPSBmdW5jdGlvbiAobmFtZSwgYXJncykgeworICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKCJwb3N0IiwgW25hbWUsIGFyZ3NdKTsKK307CisKKy8qKgorICogSW52b2tlcyBhIG1ldGhvZCBpbiBhIGZ1dHVyZSB0dXJuLgorICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIHRhcmdldCBvYmplY3QKKyAqIEBwYXJhbSBuYW1lICAgICAgbmFtZSBvZiBtZXRob2QgdG8gaW52b2tlCisgKiBAcGFyYW0gLi4uYXJncyAgIGFycmF5IG9mIGludm9jYXRpb24gYXJndW1lbnRzCisgKiBAcmV0dXJuIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKKyAqLworUS5zZW5kID0gLy8gWFhYIE1hcmsgTWlsbGVyJ3MgcHJvcG9zZWQgcGFybGFuY2UKK1EubWNhbGwgPSAvLyBYWFggQXMgcHJvcG9zZWQgYnkgIlJlZHNhbmRybyIKK1EuaW52b2tlID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZSAvKi4uLmFyZ3MqLykgeworICAgIHJldHVybiBRKG9iamVjdCkuZGlzcGF0Y2goInBvc3QiLCBbbmFtZSwgYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAyKV0pOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUuc2VuZCA9IC8vIFhYWCBNYXJrIE1pbGxlcidzIHByb3Bvc2VkIHBhcmxhbmNlCitQcm9taXNlLnByb3RvdHlwZS5tY2FsbCA9IC8vIFhYWCBBcyBwcm9wb3NlZCBieSAiUmVkc2FuZHJvIgorUHJvbWlzZS5wcm90b3R5cGUuaW52b2tlID0gZnVuY3Rpb24gKG5hbWUgLyouLi5hcmdzKi8pIHsKKyAgICByZXR1cm4gdGhpcy5kaXNwYXRjaCgicG9zdCIsIFtuYW1lLCBhcnJheV9zbGljZShhcmd1bWVudHMsIDEpXSk7Cit9OworCisvKioKKyAqIEFwcGxpZXMgdGhlIHByb21pc2VkIGZ1bmN0aW9uIGluIGEgZnV0dXJlIHR1cm4uCisgKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IGZ1bmN0aW9uCisgKiBAcGFyYW0gYXJncyAgICAgIGFycmF5IG9mIGFwcGxpY2F0aW9uIGFyZ3VtZW50cworICovCitRLmZhcHBseSA9IGZ1bmN0aW9uIChvYmplY3QsIGFyZ3MpIHsKKyAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKCJhcHBseSIsIFt2b2lkIDAsIGFyZ3NdKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLmZhcHBseSA9IGZ1bmN0aW9uIChhcmdzKSB7CisgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goImFwcGx5IiwgW3ZvaWQgMCwgYXJnc10pOworfTsKKworLyoqCisgKiBDYWxscyB0aGUgcHJvbWlzZWQgZnVuY3Rpb24gaW4gYSBmdXR1cmUgdHVybi4KKyAqIEBwYXJhbSBvYmplY3QgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIGZvciB0YXJnZXQgZnVuY3Rpb24KKyAqIEBwYXJhbSAuLi5hcmdzICAgYXJyYXkgb2YgYXBwbGljYXRpb24gYXJndW1lbnRzCisgKi8KK1FbInRyeSJdID0KK1EuZmNhbGwgPSBmdW5jdGlvbiAob2JqZWN0IC8qIC4uLmFyZ3MqLykgeworICAgIHJldHVybiBRKG9iamVjdCkuZGlzcGF0Y2goImFwcGx5IiwgW3ZvaWQgMCwgYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKV0pOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUuZmNhbGwgPSBmdW5jdGlvbiAoLyouLi5hcmdzKi8pIHsKKyAgICByZXR1cm4gdGhpcy5kaXNwYXRjaCgiYXBwbHkiLCBbdm9pZCAwLCBhcnJheV9zbGljZShhcmd1bWVudHMpXSk7Cit9OworCisvKioKKyAqIEJpbmRzIHRoZSBwcm9taXNlZCBmdW5jdGlvbiwgdHJhbnNmb3JtaW5nIHJldHVybiB2YWx1ZXMgaW50byBhIGZ1bGZpbGxlZAorICogcHJvbWlzZSBhbmQgdGhyb3duIGVycm9ycyBpbnRvIGEgcmVqZWN0ZWQgb25lLgorICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIHRhcmdldCBmdW5jdGlvbgorICogQHBhcmFtIC4uLmFyZ3MgICBhcnJheSBvZiBhcHBsaWNhdGlvbiBhcmd1bWVudHMKKyAqLworUS5mYmluZCA9IGZ1bmN0aW9uIChvYmplY3QgLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgcHJvbWlzZSA9IFEob2JqZWN0KTsKKyAgICB2YXIgYXJncyA9IGFycmF5X3NsaWNlKGFyZ3VtZW50cywgMSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uIGZib3VuZCgpIHsKKyAgICAgICAgcmV0dXJuIHByb21pc2UuZGlzcGF0Y2goImFwcGx5IiwgWworICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIGFyZ3MuY29uY2F0KGFycmF5X3NsaWNlKGFyZ3VtZW50cykpCisgICAgICAgIF0pOworICAgIH07Cit9OworUHJvbWlzZS5wcm90b3R5cGUuZmJpbmQgPSBmdW5jdGlvbiAoLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgcHJvbWlzZSA9IHRoaXM7CisgICAgdmFyIGFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMpOworICAgIHJldHVybiBmdW5jdGlvbiBmYm91bmQoKSB7CisgICAgICAgIHJldHVybiBwcm9taXNlLmRpc3BhdGNoKCJhcHBseSIsIFsKKyAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICBhcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKQorICAgICAgICBdKTsKKyAgICB9OworfTsKKworLyoqCisgKiBSZXF1ZXN0cyB0aGUgbmFtZXMgb2YgdGhlIG93bmVkIHByb3BlcnRpZXMgb2YgYSBwcm9taXNlZAorICogb2JqZWN0IGluIGEgZnV0dXJlIHR1cm4uCisgKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IG9iamVjdAorICogQHJldHVybiBwcm9taXNlIGZvciB0aGUga2V5cyBvZiB0aGUgZXZlbnR1YWxseSBzZXR0bGVkIG9iamVjdAorICovCitRLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaCgia2V5cyIsIFtdKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goImtleXMiLCBbXSk7Cit9OworCisvKioKKyAqIFR1cm5zIGFuIGFycmF5IG9mIHByb21pc2VzIGludG8gYSBwcm9taXNlIGZvciBhbiBhcnJheS4gIElmIGFueSBvZgorICogdGhlIHByb21pc2VzIGdldHMgcmVqZWN0ZWQsIHRoZSB3aG9sZSBhcnJheSBpcyByZWplY3RlZCBpbW1lZGlhdGVseS4KKyAqIEBwYXJhbSB7QXJyYXkqfSBhbiBhcnJheSAob3IgcHJvbWlzZSBmb3IgYW4gYXJyYXkpIG9mIHZhbHVlcyAob3IKKyAqIHByb21pc2VzIGZvciB2YWx1ZXMpCisgKiBAcmV0dXJucyBhIHByb21pc2UgZm9yIGFuIGFycmF5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcworICovCisvLyBCeSBNYXJrIE1pbGxlcgorLy8gaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9c3RyYXdtYW46Y29uY3VycmVuY3kmcmV2PTEzMDg3NzY1MjEjYWxsZnVsZmlsbGVkCitRLmFsbCA9IGFsbDsKK2Z1bmN0aW9uIGFsbChwcm9taXNlcykgeworICAgIHJldHVybiB3aGVuKHByb21pc2VzLCBmdW5jdGlvbiAocHJvbWlzZXMpIHsKKyAgICAgICAgdmFyIHBlbmRpbmdDb3VudCA9IDA7CisgICAgICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7CisgICAgICAgIGFycmF5X3JlZHVjZShwcm9taXNlcywgZnVuY3Rpb24gKHVuZGVmaW5lZCwgcHJvbWlzZSwgaW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBzbmFwc2hvdDsKKyAgICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgICBpc1Byb21pc2UocHJvbWlzZSkgJiYKKyAgICAgICAgICAgICAgICAoc25hcHNob3QgPSBwcm9taXNlLmluc3BlY3QoKSkuc3RhdGUgPT09ICJmdWxmaWxsZWQiCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlc1tpbmRleF0gPSBzbmFwc2hvdC52YWx1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKytwZW5kaW5nQ291bnQ7CisgICAgICAgICAgICAgICAgd2hlbigKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXBlbmRpbmdDb3VudCA9PT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocHJvbWlzZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QsCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChwcm9ncmVzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5KHsgaW5kZXg6IGluZGV4LCB2YWx1ZTogcHJvZ3Jlc3MgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICB9LCB2b2lkIDApOworICAgICAgICBpZiAocGVuZGluZ0NvdW50ID09PSAwKSB7CisgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHByb21pc2VzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKKyAgICB9KTsKK30KKworUHJvbWlzZS5wcm90b3R5cGUuYWxsID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBhbGwodGhpcyk7Cit9OworCisvKioKKyAqIFJldHVybnMgdGhlIGZpcnN0IHJlc29sdmVkIHByb21pc2Ugb2YgYW4gYXJyYXkuIFByaW9yIHJlamVjdGVkIHByb21pc2VzIGFyZQorICogaWdub3JlZC4gIFJlamVjdHMgb25seSBpZiBhbGwgcHJvbWlzZXMgYXJlIHJlamVjdGVkLgorICogQHBhcmFtIHtBcnJheSp9IGFuIGFycmF5IGNvbnRhaW5pbmcgdmFsdWVzIG9yIHByb21pc2VzIGZvciB2YWx1ZXMKKyAqIEByZXR1cm5zIGEgcHJvbWlzZSBmdWxmaWxsZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJlc29sdmVkIHByb21pc2UsCisgKiBvciBhIHJlamVjdGVkIHByb21pc2UgaWYgYWxsIHByb21pc2VzIGFyZSByZWplY3RlZC4KKyAqLworUS5hbnkgPSBhbnk7CisKK2Z1bmN0aW9uIGFueShwcm9taXNlcykgeworICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHsKKyAgICAgICAgcmV0dXJuIFEucmVzb2x2ZSgpOworICAgIH0KKworICAgIHZhciBkZWZlcnJlZCA9IFEuZGVmZXIoKTsKKyAgICB2YXIgcGVuZGluZ0NvdW50ID0gMDsKKyAgICBhcnJheV9yZWR1Y2UocHJvbWlzZXMsIGZ1bmN0aW9uIChwcmV2LCBjdXJyZW50LCBpbmRleCkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IHByb21pc2VzW2luZGV4XTsKKworICAgICAgICBwZW5kaW5nQ291bnQrKzsKKworICAgICAgICB3aGVuKHByb21pc2UsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzKTsKKyAgICAgICAgZnVuY3Rpb24gb25GdWxmaWxsZWQocmVzdWx0KSB7CisgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gb25SZWplY3RlZCgpIHsKKyAgICAgICAgICAgIHBlbmRpbmdDb3VudC0tOworICAgICAgICAgICAgaWYgKHBlbmRpbmdDb3VudCA9PT0gMCkgeworICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdChuZXcgRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgZnVsZmlsbG1lbnQgdmFsdWUgZnJvbSBhbnkgcHJvbWlzZSwgYWxsICIgKworICAgICAgICAgICAgICAgICAgICAicHJvbWlzZXMgd2VyZSByZWplY3RlZC4iCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gb25Qcm9ncmVzcyhwcm9ncmVzcykgeworICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5KHsKKyAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsCisgICAgICAgICAgICAgICAgdmFsdWU6IHByb2dyZXNzCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0sIHVuZGVmaW5lZCk7CisKKyAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKK30KKworUHJvbWlzZS5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBhbnkodGhpcyk7Cit9OworCisvKioKKyAqIFdhaXRzIGZvciBhbGwgcHJvbWlzZXMgdG8gYmUgc2V0dGxlZCwgZWl0aGVyIGZ1bGZpbGxlZCBvcgorICogcmVqZWN0ZWQuICBUaGlzIGlzIGRpc3RpbmN0IGZyb20gYGFsbGAgc2luY2UgdGhhdCB3b3VsZCBzdG9wCisgKiB3YWl0aW5nIGF0IHRoZSBmaXJzdCByZWplY3Rpb24uICBUaGUgcHJvbWlzZSByZXR1cm5lZCBieQorICogYGFsbFJlc29sdmVkYCB3aWxsIG5ldmVyIGJlIHJlamVjdGVkLgorICogQHBhcmFtIHByb21pc2VzIGEgcHJvbWlzZSBmb3IgYW4gYXJyYXkgKG9yIGFuIGFycmF5KSBvZiBwcm9taXNlcworICogKG9yIHZhbHVlcykKKyAqIEByZXR1cm4gYSBwcm9taXNlIGZvciBhbiBhcnJheSBvZiBwcm9taXNlcworICovCitRLmFsbFJlc29sdmVkID0gZGVwcmVjYXRlKGFsbFJlc29sdmVkLCAiYWxsUmVzb2x2ZWQiLCAiYWxsU2V0dGxlZCIpOworZnVuY3Rpb24gYWxsUmVzb2x2ZWQocHJvbWlzZXMpIHsKKyAgICByZXR1cm4gd2hlbihwcm9taXNlcywgZnVuY3Rpb24gKHByb21pc2VzKSB7CisgICAgICAgIHByb21pc2VzID0gYXJyYXlfbWFwKHByb21pc2VzLCBRKTsKKyAgICAgICAgcmV0dXJuIHdoZW4oYWxsKGFycmF5X21hcChwcm9taXNlcywgZnVuY3Rpb24gKHByb21pc2UpIHsKKyAgICAgICAgICAgIHJldHVybiB3aGVuKHByb21pc2UsIG5vb3AsIG5vb3ApOworICAgICAgICB9KSksIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlczsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK1Byb21pc2UucHJvdG90eXBlLmFsbFJlc29sdmVkID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiBhbGxSZXNvbHZlZCh0aGlzKTsKK307CisKKy8qKgorICogQHNlZSBQcm9taXNlI2FsbFNldHRsZWQKKyAqLworUS5hbGxTZXR0bGVkID0gYWxsU2V0dGxlZDsKK2Z1bmN0aW9uIGFsbFNldHRsZWQocHJvbWlzZXMpIHsKKyAgICByZXR1cm4gUShwcm9taXNlcykuYWxsU2V0dGxlZCgpOworfQorCisvKioKKyAqIFR1cm5zIGFuIGFycmF5IG9mIHByb21pc2VzIGludG8gYSBwcm9taXNlIGZvciBhbiBhcnJheSBvZiB0aGVpciBzdGF0ZXMgKGFzCisgKiByZXR1cm5lZCBieSBgaW5zcGVjdGApIHdoZW4gdGhleSBoYXZlIGFsbCBzZXR0bGVkLgorICogQHBhcmFtIHtBcnJheVtBbnkqXX0gdmFsdWVzIGFuIGFycmF5IChvciBwcm9taXNlIGZvciBhbiBhcnJheSkgb2YgdmFsdWVzIChvcgorICogcHJvbWlzZXMgZm9yIHZhbHVlcykKKyAqIEByZXR1cm5zIHtBcnJheVtTdGF0ZV19IGFuIGFycmF5IG9mIHN0YXRlcyBmb3IgdGhlIHJlc3BlY3RpdmUgdmFsdWVzLgorICovCitQcm9taXNlLnByb3RvdHlwZS5hbGxTZXR0bGVkID0gZnVuY3Rpb24gKCkgeworICAgIHJldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24gKHByb21pc2VzKSB7CisgICAgICAgIHJldHVybiBhbGwoYXJyYXlfbWFwKHByb21pc2VzLCBmdW5jdGlvbiAocHJvbWlzZSkgeworICAgICAgICAgICAgcHJvbWlzZSA9IFEocHJvbWlzZSk7CisgICAgICAgICAgICBmdW5jdGlvbiByZWdhcmRsZXNzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlLmluc3BlY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4ocmVnYXJkbGVzcywgcmVnYXJkbGVzcyk7CisgICAgICAgIH0pKTsKKyAgICB9KTsKK307CisKKy8qKgorICogQ2FwdHVyZXMgdGhlIGZhaWx1cmUgb2YgYSBwcm9taXNlLCBnaXZpbmcgYW4gb3BvcnR1bml0eSB0byByZWNvdmVyCisgKiB3aXRoIGEgY2FsbGJhY2suICBJZiB0aGUgZ2l2ZW4gcHJvbWlzZSBpcyBmdWxmaWxsZWQsIHRoZSByZXR1cm5lZAorICogcHJvbWlzZSBpcyBmdWxmaWxsZWQuCisgKiBAcGFyYW0ge0FueSp9IHByb21pc2UgZm9yIHNvbWV0aGluZworICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgdG8gZnVsZmlsbCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpZiB0aGUKKyAqIGdpdmVuIHByb21pc2UgaXMgcmVqZWN0ZWQKKyAqIEByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sKKyAqLworUS5mYWlsID0gLy8gWFhYIGxlZ2FjeQorUVsiY2F0Y2giXSA9IGZ1bmN0aW9uIChvYmplY3QsIHJlamVjdGVkKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS50aGVuKHZvaWQgMCwgcmVqZWN0ZWQpOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUuZmFpbCA9IC8vIFhYWCBsZWdhY3kKK1Byb21pc2UucHJvdG90eXBlWyJjYXRjaCJdID0gZnVuY3Rpb24gKHJlamVjdGVkKSB7CisgICAgcmV0dXJuIHRoaXMudGhlbih2b2lkIDAsIHJlamVjdGVkKTsKK307CisKKy8qKgorICogQXR0YWNoZXMgYSBsaXN0ZW5lciB0aGF0IGNhbiByZXNwb25kIHRvIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMgZnJvbSBhCisgKiBwcm9taXNlJ3Mgb3JpZ2luYXRpbmcgZGVmZXJyZWQuIFRoaXMgbGlzdGVuZXIgcmVjZWl2ZXMgdGhlIGV4YWN0IGFyZ3VtZW50cworICogcGFzc2VkIHRvIGBgZGVmZXJyZWQubm90aWZ5YGAuCisgKiBAcGFyYW0ge0FueSp9IHByb21pc2UgZm9yIHNvbWV0aGluZworICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgdG8gcmVjZWl2ZSBhbnkgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucworICogQHJldHVybnMgdGhlIGdpdmVuIHByb21pc2UsIHVuY2hhbmdlZAorICovCitRLnByb2dyZXNzID0gcHJvZ3Jlc3M7CitmdW5jdGlvbiBwcm9ncmVzcyhvYmplY3QsIHByb2dyZXNzZWQpIHsKKyAgICByZXR1cm4gUShvYmplY3QpLnRoZW4odm9pZCAwLCB2b2lkIDAsIHByb2dyZXNzZWQpOworfQorCitQcm9taXNlLnByb3RvdHlwZS5wcm9ncmVzcyA9IGZ1bmN0aW9uIChwcm9ncmVzc2VkKSB7CisgICAgcmV0dXJuIHRoaXMudGhlbih2b2lkIDAsIHZvaWQgMCwgcHJvZ3Jlc3NlZCk7Cit9OworCisvKioKKyAqIFByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5IHRvIG9ic2VydmUgdGhlIHNldHRsaW5nIG9mIGEgcHJvbWlzZSwKKyAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcHJvbWlzZSBpcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuICBGb3J3YXJkcworICogdGhlIHJlc29sdXRpb24gdG8gdGhlIHJldHVybmVkIHByb21pc2Ugd2hlbiB0aGUgY2FsbGJhY2sgaXMgZG9uZS4KKyAqIFRoZSBjYWxsYmFjayBjYW4gcmV0dXJuIGEgcHJvbWlzZSB0byBkZWZlciBjb21wbGV0aW9uLgorICogQHBhcmFtIHtBbnkqfSBwcm9taXNlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0byBvYnNlcnZlIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBnaXZlbgorICogcHJvbWlzZSwgdGFrZXMgbm8gYXJndW1lbnRzLgorICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgZ2l2ZW4gcHJvbWlzZSB3aGVuCisgKiBgYGZpbmBgIGlzIGRvbmUuCisgKi8KK1EuZmluID0gLy8gWFhYIGxlZ2FjeQorUVsiZmluYWxseSJdID0gZnVuY3Rpb24gKG9iamVjdCwgY2FsbGJhY2spIHsKKyAgICByZXR1cm4gUShvYmplY3QpWyJmaW5hbGx5Il0oY2FsbGJhY2spOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUuZmluID0gLy8gWFhYIGxlZ2FjeQorUHJvbWlzZS5wcm90b3R5cGVbImZpbmFsbHkiXSA9IGZ1bmN0aW9uIChjYWxsYmFjaykgeworICAgIGNhbGxiYWNrID0gUShjYWxsYmFjayk7CisgICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAodmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmZjYWxsKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0pOworICAgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAgLy8gVE9ETyBhdHRlbXB0IHRvIHJlY3ljbGUgdGhlIHJlamVjdGlvbiB3aXRoICJ0aGlzIi4KKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmZjYWxsKCkudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0aHJvdyByZWFzb247CisgICAgICAgIH0pOworICAgIH0pOworfTsKKworLyoqCisgKiBUZXJtaW5hdGVzIGEgY2hhaW4gb2YgcHJvbWlzZXMsIGZvcmNpbmcgcmVqZWN0aW9ucyB0byBiZQorICogdGhyb3duIGFzIGV4Y2VwdGlvbnMuCisgKiBAcGFyYW0ge0FueSp9IHByb21pc2UgYXQgdGhlIGVuZCBvZiBhIGNoYWluIG9mIHByb21pc2VzCisgKiBAcmV0dXJucyBub3RoaW5nCisgKi8KK1EuZG9uZSA9IGZ1bmN0aW9uIChvYmplY3QsIGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5kb25lKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLmRvbmUgPSBmdW5jdGlvbiAoZnVsZmlsbGVkLCByZWplY3RlZCwgcHJvZ3Jlc3MpIHsKKyAgICB2YXIgb25VbmhhbmRsZWRFcnJvciA9IGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAvLyBmb3J3YXJkIHRvIGEgZnV0dXJlIHR1cm4gc28gdGhhdCBgYHdoZW5gYAorICAgICAgICAvLyBkb2VzIG5vdCBjYXRjaCBpdCBhbmQgdHVybiBpdCBpbnRvIGEgcmVqZWN0aW9uLgorICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG1ha2VTdGFja1RyYWNlTG9uZyhlcnJvciwgcHJvbWlzZSk7CisgICAgICAgICAgICBpZiAoUS5vbmVycm9yKSB7CisgICAgICAgICAgICAgICAgUS5vbmVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH07CisKKyAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBgbmV4dFRpY2tgaW5nIHZpYSBhbiB1bm5lY2Vzc2FyeSBgd2hlbmAuCisgICAgdmFyIHByb21pc2UgPSBmdWxmaWxsZWQgfHwgcmVqZWN0ZWQgfHwgcHJvZ3Jlc3MgPworICAgICAgICB0aGlzLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCwgcHJvZ3Jlc3MpIDoKKyAgICAgICAgdGhpczsKKworICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gIm9iamVjdCIgJiYgcHJvY2VzcyAmJiBwcm9jZXNzLmRvbWFpbikgeworICAgICAgICBvblVuaGFuZGxlZEVycm9yID0gcHJvY2Vzcy5kb21haW4uYmluZChvblVuaGFuZGxlZEVycm9yKTsKKyAgICB9CisKKyAgICBwcm9taXNlLnRoZW4odm9pZCAwLCBvblVuaGFuZGxlZEVycm9yKTsKK307CisKKy8qKgorICogQ2F1c2VzIGEgcHJvbWlzZSB0byBiZSByZWplY3RlZCBpZiBpdCBkb2VzIG5vdCBnZXQgZnVsZmlsbGVkIGJlZm9yZQorICogc29tZSBtaWxsaXNlY29uZHMgdGltZSBvdXQuCisgKiBAcGFyYW0ge0FueSp9IHByb21pc2UKKyAqIEBwYXJhbSB7TnVtYmVyfSBtaWxsaXNlY29uZHMgdGltZW91dAorICogQHBhcmFtIHtBbnkqfSBjdXN0b20gZXJyb3IgbWVzc2FnZSBvciBFcnJvciBvYmplY3QgKG9wdGlvbmFsKQorICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgZ2l2ZW4gcHJvbWlzZSBpZiBpdCBpcworICogZnVsZmlsbGVkIGJlZm9yZSB0aGUgdGltZW91dCwgb3RoZXJ3aXNlIHJlamVjdGVkLgorICovCitRLnRpbWVvdXQgPSBmdW5jdGlvbiAob2JqZWN0LCBtcywgZXJyb3IpIHsKKyAgICByZXR1cm4gUShvYmplY3QpLnRpbWVvdXQobXMsIGVycm9yKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbiAobXMsIGVycm9yKSB7CisgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICB2YXIgdGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmICghZXJyb3IgfHwgInN0cmluZyIgPT09IHR5cGVvZiBlcnJvcikgeworICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZXJyb3IgfHwgIlRpbWVkIG91dCBhZnRlciAiICsgbXMgKyAiIG1zIik7CisgICAgICAgICAgICBlcnJvci5jb2RlID0gIkVUSU1FRE9VVCI7CisgICAgICAgIH0KKyAgICAgICAgZGVmZXJyZWQucmVqZWN0KGVycm9yKTsKKyAgICB9LCBtcyk7CisKKyAgICB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpOworICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHZhbHVlKTsKKyAgICB9LCBmdW5jdGlvbiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpOworICAgICAgICBkZWZlcnJlZC5yZWplY3QoZXhjZXB0aW9uKTsKKyAgICB9LCBkZWZlcnJlZC5ub3RpZnkpOworCisgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7Cit9OworCisvKioKKyAqIFJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUgKG9yIHByb21pc2VkIHZhbHVlKSwgc29tZQorICogbWlsbGlzZWNvbmRzIGFmdGVyIGl0IHJlc29sdmVkLiBQYXNzZXMgcmVqZWN0aW9ucyBpbW1lZGlhdGVseS4KKyAqIEBwYXJhbSB7QW55Kn0gcHJvbWlzZQorICogQHBhcmFtIHtOdW1iZXJ9IG1pbGxpc2Vjb25kcworICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgZ2l2ZW4gcHJvbWlzZSBhZnRlciBtaWxsaXNlY29uZHMKKyAqIHRpbWUgaGFzIGVsYXBzZWQgc2luY2UgdGhlIHJlc29sdXRpb24gb2YgdGhlIGdpdmVuIHByb21pc2UuCisgKiBJZiB0aGUgZ2l2ZW4gcHJvbWlzZSByZWplY3RzLCB0aGF0IGlzIHBhc3NlZCBpbW1lZGlhdGVseS4KKyAqLworUS5kZWxheSA9IGZ1bmN0aW9uIChvYmplY3QsIHRpbWVvdXQpIHsKKyAgICBpZiAodGltZW91dCA9PT0gdm9pZCAwKSB7CisgICAgICAgIHRpbWVvdXQgPSBvYmplY3Q7CisgICAgICAgIG9iamVjdCA9IHZvaWQgMDsKKyAgICB9CisgICAgcmV0dXJuIFEob2JqZWN0KS5kZWxheSh0aW1lb3V0KTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLmRlbGF5ID0gZnVuY3Rpb24gKHRpbWVvdXQpIHsKKyAgICByZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUodmFsdWUpOworICAgICAgICB9LCB0aW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CisgICAgfSk7Cit9OworCisvKioKKyAqIFBhc3NlcyBhIGNvbnRpbnVhdGlvbiB0byBhIE5vZGUgZnVuY3Rpb24sIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBnaXZlbgorICogYXJndW1lbnRzIHByb3ZpZGVkIGFzIGFuIGFycmF5LCBhbmQgcmV0dXJucyBhIHByb21pc2UuCisgKgorICogICAgICBRLm5mYXBwbHkoRlMucmVhZEZpbGUsIFtfX2ZpbGVuYW1lXSkKKyAqICAgICAgLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHsKKyAqICAgICAgfSkKKyAqCisgKi8KK1EubmZhcHBseSA9IGZ1bmN0aW9uIChjYWxsYmFjaywgYXJncykgeworICAgIHJldHVybiBRKGNhbGxiYWNrKS5uZmFwcGx5KGFyZ3MpOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUubmZhcHBseSA9IGZ1bmN0aW9uIChhcmdzKSB7CisgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICB2YXIgbm9kZUFyZ3MgPSBhcnJheV9zbGljZShhcmdzKTsKKyAgICBub2RlQXJncy5wdXNoKGRlZmVycmVkLm1ha2VOb2RlUmVzb2x2ZXIoKSk7CisgICAgdGhpcy5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTsKKyAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTsKK307CisKKy8qKgorICogUGFzc2VzIGEgY29udGludWF0aW9uIHRvIGEgTm9kZSBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIGdpdmVuCisgKiBhcmd1bWVudHMgcHJvdmlkZWQgaW5kaXZpZHVhbGx5LCBhbmQgcmV0dXJucyBhIHByb21pc2UuCisgKiBAZXhhbXBsZQorICogUS5uZmNhbGwoRlMucmVhZEZpbGUsIF9fZmlsZW5hbWUpCisgKiAudGhlbihmdW5jdGlvbiAoY29udGVudCkgeworICogfSkKKyAqCisgKi8KK1EubmZjYWxsID0gZnVuY3Rpb24gKGNhbGxiYWNrIC8qLi4uYXJncyovKSB7CisgICAgdmFyIGFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDEpOworICAgIHJldHVybiBRKGNhbGxiYWNrKS5uZmFwcGx5KGFyZ3MpOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUubmZjYWxsID0gZnVuY3Rpb24gKC8qLi4uYXJncyovKSB7CisgICAgdmFyIG5vZGVBcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzKTsKKyAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpOworICAgIG5vZGVBcmdzLnB1c2goZGVmZXJyZWQubWFrZU5vZGVSZXNvbHZlcigpKTsKKyAgICB0aGlzLmZhcHBseShub2RlQXJncykuZmFpbChkZWZlcnJlZC5yZWplY3QpOworICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworfTsKKworLyoqCisgKiBXcmFwcyBhIE5vZGVKUyBjb250aW51YXRpb24gcGFzc2luZyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhbiBlcXVpdmFsZW50CisgKiB2ZXJzaW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UuCisgKiBAZXhhbXBsZQorICogUS5uZmJpbmQoRlMucmVhZEZpbGUsIF9fZmlsZW5hbWUpKCJ1dGYtOCIpCisgKiAudGhlbihjb25zb2xlLmxvZykKKyAqIC5kb25lKCkKKyAqLworUS5uZmJpbmQgPQorUS5kZW5vZGVpZnkgPSBmdW5jdGlvbiAoY2FsbGJhY2sgLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgYmFzZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDEpOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBub2RlQXJncyA9IGJhc2VBcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKTsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICAgICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpOworICAgICAgICBRKGNhbGxiYWNrKS5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CisgICAgfTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLm5mYmluZCA9CitQcm9taXNlLnByb3RvdHlwZS5kZW5vZGVpZnkgPSBmdW5jdGlvbiAoLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgYXJncyA9IGFycmF5X3NsaWNlKGFyZ3VtZW50cyk7CisgICAgYXJncy51bnNoaWZ0KHRoaXMpOworICAgIHJldHVybiBRLmRlbm9kZWlmeS5hcHBseSh2b2lkIDAsIGFyZ3MpOworfTsKKworUS5uYmluZCA9IGZ1bmN0aW9uIChjYWxsYmFjaywgdGhpc3AgLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgYmFzZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDIpOworICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBub2RlQXJncyA9IGJhc2VBcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKTsKKyAgICAgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICAgICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpOworICAgICAgICBmdW5jdGlvbiBib3VuZCgpIHsKKyAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5hcHBseSh0aGlzcCwgYXJndW1lbnRzKTsKKyAgICAgICAgfQorICAgICAgICBRKGJvdW5kKS5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7CisgICAgfTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLm5iaW5kID0gZnVuY3Rpb24gKC8qdGhpc3AsIC4uLmFyZ3MqLykgeworICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAwKTsKKyAgICBhcmdzLnVuc2hpZnQodGhpcyk7CisgICAgcmV0dXJuIFEubmJpbmQuYXBwbHkodm9pZCAwLCBhcmdzKTsKK307CisKKy8qKgorICogQ2FsbHMgYSBtZXRob2Qgb2YgYSBOb2RlLXN0eWxlIG9iamVjdCB0aGF0IGFjY2VwdHMgYSBOb2RlLXN0eWxlCisgKiBjYWxsYmFjayB3aXRoIGEgZ2l2ZW4gYXJyYXkgb2YgYXJndW1lbnRzLCBwbHVzIGEgcHJvdmlkZWQgY2FsbGJhY2suCisgKiBAcGFyYW0gb2JqZWN0IGFuIG9iamVjdCB0aGF0IGhhcyB0aGUgbmFtZWQgbWV0aG9kCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBtZXRob2Qgb2Ygb2JqZWN0CisgKiBAcGFyYW0ge0FycmF5fSBhcmdzIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2Q7IHRoZSBjYWxsYmFjaworICogd2lsbCBiZSBwcm92aWRlZCBieSBRIGFuZCBhcHBlbmRlZCB0byB0aGVzZSBhcmd1bWVudHMuCisgKiBAcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSB2YWx1ZSBvciBlcnJvcgorICovCitRLm5tYXBwbHkgPSAvLyBYWFggQXMgcHJvcG9zZWQgYnkgIlJlZHNhbmRybyIKK1EubnBvc3QgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lLCBhcmdzKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5ucG9zdChuYW1lLCBhcmdzKTsKK307CisKK1Byb21pc2UucHJvdG90eXBlLm5tYXBwbHkgPSAvLyBYWFggQXMgcHJvcG9zZWQgYnkgIlJlZHNhbmRybyIKK1Byb21pc2UucHJvdG90eXBlLm5wb3N0ID0gZnVuY3Rpb24gKG5hbWUsIGFyZ3MpIHsKKyAgICB2YXIgbm9kZUFyZ3MgPSBhcnJheV9zbGljZShhcmdzIHx8IFtdKTsKKyAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpOworICAgIG5vZGVBcmdzLnB1c2goZGVmZXJyZWQubWFrZU5vZGVSZXNvbHZlcigpKTsKKyAgICB0aGlzLmRpc3BhdGNoKCJwb3N0IiwgW25hbWUsIG5vZGVBcmdzXSkuZmFpbChkZWZlcnJlZC5yZWplY3QpOworICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworfTsKKworLyoqCisgKiBDYWxscyBhIG1ldGhvZCBvZiBhIE5vZGUtc3R5bGUgb2JqZWN0IHRoYXQgYWNjZXB0cyBhIE5vZGUtc3R5bGUKKyAqIGNhbGxiYWNrLCBmb3J3YXJkaW5nIHRoZSBnaXZlbiB2YXJpYWRpYyBhcmd1bWVudHMsIHBsdXMgYSBwcm92aWRlZAorICogY2FsbGJhY2sgYXJndW1lbnQuCisgKiBAcGFyYW0gb2JqZWN0IGFuIG9iamVjdCB0aGF0IGhhcyB0aGUgbmFtZWQgbWV0aG9kCisgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBtZXRob2Qgb2Ygb2JqZWN0CisgKiBAcGFyYW0gLi4uYXJncyBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kOyB0aGUgY2FsbGJhY2sgd2lsbAorICogYmUgcHJvdmlkZWQgYnkgUSBhbmQgYXBwZW5kZWQgdG8gdGhlc2UgYXJndW1lbnRzLgorICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgdmFsdWUgb3IgZXJyb3IKKyAqLworUS5uc2VuZCA9IC8vIFhYWCBCYXNlZCBvbiBNYXJrIE1pbGxlcidzIHByb3Bvc2VkICJzZW5kIgorUS5ubWNhbGwgPSAvLyBYWFggQmFzZWQgb24gIlJlZHNhbmRybydzIiBwcm9wb3NhbAorUS5uaW52b2tlID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZSAvKi4uLmFyZ3MqLykgeworICAgIHZhciBub2RlQXJncyA9IGFycmF5X3NsaWNlKGFyZ3VtZW50cywgMik7CisgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTsKKyAgICBub2RlQXJncy5wdXNoKGRlZmVycmVkLm1ha2VOb2RlUmVzb2x2ZXIoKSk7CisgICAgUShvYmplY3QpLmRpc3BhdGNoKCJwb3N0IiwgW25hbWUsIG5vZGVBcmdzXSkuZmFpbChkZWZlcnJlZC5yZWplY3QpOworICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlOworfTsKKworUHJvbWlzZS5wcm90b3R5cGUubnNlbmQgPSAvLyBYWFggQmFzZWQgb24gTWFyayBNaWxsZXIncyBwcm9wb3NlZCAic2VuZCIKK1Byb21pc2UucHJvdG90eXBlLm5tY2FsbCA9IC8vIFhYWCBCYXNlZCBvbiAiUmVkc2FuZHJvJ3MiIHByb3Bvc2FsCitQcm9taXNlLnByb3RvdHlwZS5uaW52b2tlID0gZnVuY3Rpb24gKG5hbWUgLyouLi5hcmdzKi8pIHsKKyAgICB2YXIgbm9kZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDEpOworICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7CisgICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpOworICAgIHRoaXMuZGlzcGF0Y2goInBvc3QiLCBbbmFtZSwgbm9kZUFyZ3NdKS5mYWlsKGRlZmVycmVkLnJlamVjdCk7CisgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7Cit9OworCisvKioKKyAqIElmIGEgZnVuY3Rpb24gd291bGQgbGlrZSB0byBzdXBwb3J0IGJvdGggTm9kZSBjb250aW51YXRpb24tcGFzc2luZy1zdHlsZSBhbmQKKyAqIHByb21pc2UtcmV0dXJuaW5nLXN0eWxlLCBpdCBjYW4gZW5kIGl0cyBpbnRlcm5hbCBwcm9taXNlIGNoYWluIHdpdGgKKyAqIGBub2RlaWZ5KG5vZGViYWNrKWAsIGZvcndhcmRpbmcgdGhlIG9wdGlvbmFsIG5vZGViYWNrIGFyZ3VtZW50LiAgSWYgdGhlIHVzZXIKKyAqIGVsZWN0cyB0byB1c2UgYSBub2RlYmFjaywgdGhlIHJlc3VsdCB3aWxsIGJlIHNlbnQgdGhlcmUuICBJZiB0aGV5IGRvIG5vdAorICogcGFzcyBhIG5vZGViYWNrLCB0aGV5IHdpbGwgcmVjZWl2ZSB0aGUgcmVzdWx0IHByb21pc2UuCisgKiBAcGFyYW0gb2JqZWN0IGEgcmVzdWx0IChvciBhIHByb21pc2UgZm9yIGEgcmVzdWx0KQorICogQHBhcmFtIHtGdW5jdGlvbn0gbm9kZWJhY2sgYSBOb2RlLmpzLXN0eWxlIGNhbGxiYWNrCisgKiBAcmV0dXJucyBlaXRoZXIgdGhlIHByb21pc2Ugb3Igbm90aGluZworICovCitRLm5vZGVpZnkgPSBub2RlaWZ5OworZnVuY3Rpb24gbm9kZWlmeShvYmplY3QsIG5vZGViYWNrKSB7CisgICAgcmV0dXJuIFEob2JqZWN0KS5ub2RlaWZ5KG5vZGViYWNrKTsKK30KKworUHJvbWlzZS5wcm90b3R5cGUubm9kZWlmeSA9IGZ1bmN0aW9uIChub2RlYmFjaykgeworICAgIGlmIChub2RlYmFjaykgeworICAgICAgICB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7CisgICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBub2RlYmFjayhudWxsLCB2YWx1ZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBub2RlYmFjayhlcnJvcik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfTsKKworUS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJRLm5vQ29uZmxpY3Qgb25seSB3b3JrcyB3aGVuIFEgaXMgdXNlZCBhcyBhIGdsb2JhbCIpOworfTsKKworLy8gQWxsIGNvZGUgYmVmb3JlIHRoaXMgcG9pbnQgd2lsbCBiZSBmaWx0ZXJlZCBmcm9tIHN0YWNrIHRyYWNlcy4KK3ZhciBxRW5kaW5nTGluZSA9IGNhcHR1cmVMaW5lKCk7CisKK3JldHVybiBROworCit9KTsKKworfSkuY2FsbCh0aGlzLHJlcXVpcmUoJ19wcm9jZXNzJykpCisKK30seyJfcHJvY2VzcyI6MTJ9XSwxNTg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBSb290IHJlZmVyZW5jZSBmb3IgaWZyYW1lcy4KKyAqLworCit2YXIgcm9vdDsKK2lmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgeyAvLyBCcm93c2VyIHdpbmRvdworICByb290ID0gd2luZG93OworfSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gV2ViIFdvcmtlcgorICByb290ID0gc2VsZjsKK30gZWxzZSB7IC8vIE90aGVyIGVudmlyb25tZW50cworICBjb25zb2xlLndhcm4oIlVzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQiKTsKKyAgcm9vdCA9IHRoaXM7Cit9CisKK3ZhciBFbWl0dGVyID0gcmVxdWlyZSgnZW1pdHRlcicpOwordmFyIHJlcXVlc3RCYXNlID0gcmVxdWlyZSgnLi9yZXF1ZXN0LWJhc2UnKTsKK3ZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXMtb2JqZWN0Jyk7CisKKy8qKgorICogTm9vcC4KKyAqLworCitmdW5jdGlvbiBub29wKCl7fTsKKworLyoqCisgKiBFeHBvc2UgYHJlcXVlc3RgLgorICovCisKK3ZhciByZXF1ZXN0ID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3JlcXVlc3QnKS5iaW5kKG51bGwsIFJlcXVlc3QpOworCisvKioKKyAqIERldGVybWluZSBYSFIuCisgKi8KKworcmVxdWVzdC5nZXRYSFIgPSBmdW5jdGlvbiAoKSB7CisgIGlmIChyb290LlhNTEh0dHBSZXF1ZXN0CisgICAgICAmJiAoIXJvb3QubG9jYXRpb24gfHwgJ2ZpbGU6JyAhPSByb290LmxvY2F0aW9uLnByb3RvY29sCisgICAgICAgICAgfHwgIXJvb3QuQWN0aXZlWE9iamVjdCkpIHsKKyAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0OworICB9IGVsc2UgeworICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTsgfSBjYXRjaChlKSB7fQorICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuNi4wJyk7IH0gY2F0Y2goZSkge30KKyAgICB0cnkgeyByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjMuMCcpOyB9IGNhdGNoKGUpIHt9CisgICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpOyB9IGNhdGNoKGUpIHt9CisgIH0KKyAgdGhyb3cgRXJyb3IoIkJyb3dzZXItb25seSB2ZXJpc29uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSIik7Cit9OworCisvKioKKyAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gcworICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwcml2YXRlCisgKi8KKwordmFyIHRyaW0gPSAnJy50cmltCisgID8gZnVuY3Rpb24ocykgeyByZXR1cm4gcy50cmltKCk7IH0KKyAgOiBmdW5jdGlvbihzKSB7IHJldHVybiBzLnJlcGxhY2UoLyheXHMqfFxzKiQpL2csICcnKTsgfTsKKworLyoqCisgKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLgorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmoKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIHNlcmlhbGl6ZShvYmopIHsKKyAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gb2JqOworICB2YXIgcGFpcnMgPSBbXTsKKyAgZm9yICh2YXIga2V5IGluIG9iaikgeworICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIG9ialtrZXldKTsKKyAgfQorICByZXR1cm4gcGFpcnMuam9pbignJicpOworfQorCisvKioKKyAqIEhlbHBzICdzZXJpYWxpemUnIHdpdGggc2VyaWFsaXppbmcgYXJyYXlzLgorICogTXV0YXRlcyB0aGUgcGFpcnMgYXJyYXkuCisgKgorICogQHBhcmFtIHtBcnJheX0gcGFpcnMKKyAqIEBwYXJhbSB7U3RyaW5nfSBrZXkKKyAqIEBwYXJhbSB7TWl4ZWR9IHZhbAorICovCisKK2Z1bmN0aW9uIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHZhbCkgeworICBpZiAodmFsICE9IG51bGwpIHsKKyAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7CisgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbih2KSB7CisgICAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpOworICAgICAgfSk7CisgICAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7CisgICAgICBmb3IodmFyIHN1YmtleSBpbiB2YWwpIHsKKyAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSArICdbJyArIHN1YmtleSArICddJywgdmFsW3N1YmtleV0pOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpCisgICAgICAgICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkpOworICAgIH0KKyAgfSBlbHNlIGlmICh2YWwgPT09IG51bGwpIHsKKyAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpKTsKKyAgfQorfQorCisvKioKKyAqIEV4cG9zZSBzZXJpYWxpemF0aW9uIG1ldGhvZC4KKyAqLworCisgcmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7CisKKyAvKioKKyAgKiBQYXJzZSB0aGUgZ2l2ZW4geC13d3ctZm9ybS11cmxlbmNvZGVkIGBzdHJgLgorICAqCisgICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICAqIEByZXR1cm4ge09iamVjdH0KKyAgKiBAYXBpIHByaXZhdGUKKyAgKi8KKworZnVuY3Rpb24gcGFyc2VTdHJpbmcoc3RyKSB7CisgIHZhciBvYmogPSB7fTsKKyAgdmFyIHBhaXJzID0gc3RyLnNwbGl0KCcmJyk7CisgIHZhciBwYWlyOworICB2YXIgcG9zOworCisgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBwYWlycy5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgIHBhaXIgPSBwYWlyc1tpXTsKKyAgICBwb3MgPSBwYWlyLmluZGV4T2YoJz0nKTsKKyAgICBpZiAocG9zID09IC0xKSB7CisgICAgICBvYmpbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXIpXSA9ICcnOworICAgIH0gZWxzZSB7CisgICAgICBvYmpbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXIuc2xpY2UoMCwgcG9zKSldID0KKyAgICAgICAgZGVjb2RlVVJJQ29tcG9uZW50KHBhaXIuc2xpY2UocG9zICsgMSkpOworICAgIH0KKyAgfQorCisgIHJldHVybiBvYmo7Cit9CisKKy8qKgorICogRXhwb3NlIHBhcnNlci4KKyAqLworCityZXF1ZXN0LnBhcnNlU3RyaW5nID0gcGFyc2VTdHJpbmc7CisKKy8qKgorICogRGVmYXVsdCBNSU1FIHR5cGUgbWFwLgorICoKKyAqICAgICBzdXBlcmFnZW50LnR5cGVzLnhtbCA9ICdhcHBsaWNhdGlvbi94bWwnOworICoKKyAqLworCityZXF1ZXN0LnR5cGVzID0geworICBodG1sOiAndGV4dC9odG1sJywKKyAganNvbjogJ2FwcGxpY2F0aW9uL2pzb24nLAorICB4bWw6ICdhcHBsaWNhdGlvbi94bWwnLAorICB1cmxlbmNvZGVkOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKKyAgJ2Zvcm0nOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKKyAgJ2Zvcm0tZGF0YSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnCit9OworCisvKioKKyAqIERlZmF1bHQgc2VyaWFsaXphdGlvbiBtYXAuCisgKgorICogICAgIHN1cGVyYWdlbnQuc2VyaWFsaXplWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKG9iail7CisgKiAgICAgICByZXR1cm4gJ2dlbmVyYXRlZCB4bWwgaGVyZSc7CisgKiAgICAgfTsKKyAqCisgKi8KKworIHJlcXVlc3Quc2VyaWFsaXplID0geworICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHNlcmlhbGl6ZSwKKyAgICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5zdHJpbmdpZnkKKyB9OworCisgLyoqCisgICogRGVmYXVsdCBwYXJzZXJzLgorICAqCisgICogICAgIHN1cGVyYWdlbnQucGFyc2VbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24oc3RyKXsKKyAgKiAgICAgICByZXR1cm4geyBvYmplY3QgcGFyc2VkIGZyb20gc3RyIH07CisgICogICAgIH07CisgICoKKyAgKi8KKworcmVxdWVzdC5wYXJzZSA9IHsKKyAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHBhcnNlU3RyaW5nLAorICAnYXBwbGljYXRpb24vanNvbic6IEpTT04ucGFyc2UKK307CisKKy8qKgorICogUGFyc2UgdGhlIGdpdmVuIGhlYWRlciBgc3RyYCBpbnRvCisgKiBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgbWFwcGVkIGZpZWxkcy4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gc3RyCisgKiBAcmV0dXJuIHtPYmplY3R9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiBwYXJzZUhlYWRlcihzdHIpIHsKKyAgdmFyIGxpbmVzID0gc3RyLnNwbGl0KC9ccj9cbi8pOworICB2YXIgZmllbGRzID0ge307CisgIHZhciBpbmRleDsKKyAgdmFyIGxpbmU7CisgIHZhciBmaWVsZDsKKyAgdmFyIHZhbDsKKworICBsaW5lcy5wb3AoKTsgLy8gdHJhaWxpbmcgQ1JMRgorCisgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBsaW5lcy5sZW5ndGg7IGkgPCBsZW47ICsraSkgeworICAgIGxpbmUgPSBsaW5lc1tpXTsKKyAgICBpbmRleCA9IGxpbmUuaW5kZXhPZignOicpOworICAgIGZpZWxkID0gbGluZS5zbGljZSgwLCBpbmRleCkudG9Mb3dlckNhc2UoKTsKKyAgICB2YWwgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7CisgICAgZmllbGRzW2ZpZWxkXSA9IHZhbDsKKyAgfQorCisgIHJldHVybiBmaWVsZHM7Cit9CisKKy8qKgorICogQ2hlY2sgaWYgYG1pbWVgIGlzIGpzb24gb3IgaGFzICtqc29uIHN0cnVjdHVyZWQgc3ludGF4IHN1ZmZpeC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gbWltZQorICogQHJldHVybiB7Qm9vbGVhbn0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGlzSlNPTihtaW1lKSB7CisgIHJldHVybiAvW1wvK11qc29uXGIvLnRlc3QobWltZSk7Cit9CisKKy8qKgorICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gc3RyCisgKiBAcmV0dXJuIHtTdHJpbmd9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitmdW5jdGlvbiB0eXBlKHN0cil7CisgIHJldHVybiBzdHIuc3BsaXQoLyAqOyAqLykuc2hpZnQoKTsKK307CisKKy8qKgorICogUmV0dXJuIGhlYWRlciBmaWVsZCBwYXJhbWV0ZXJzLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBzdHIKKyAqIEByZXR1cm4ge09iamVjdH0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIHBhcmFtcyhzdHIpeworICByZXR1cm4gc3RyLnNwbGl0KC8gKjsgKi8pLnJlZHVjZShmdW5jdGlvbihvYmosIHN0cil7CisgICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KC8gKj0gKi8pLAorICAgICAgICBrZXkgPSBwYXJ0cy5zaGlmdCgpLAorICAgICAgICB2YWwgPSBwYXJ0cy5zaGlmdCgpOworCisgICAgaWYgKGtleSAmJiB2YWwpIG9ialtrZXldID0gdmFsOworICAgIHJldHVybiBvYmo7CisgIH0sIHt9KTsKK307CisKKy8qKgorICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLgorICoKKyAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YykKKyAqICAtIHBhcnNlIGhlYWRlcgorICoKKyAqIEV4YW1wbGVzOgorICoKKyAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6CisgKgorICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDsKKyAqCisgKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6CisgKgorICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pOworICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7CisgKgorICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDoKKyAqCisgKiAgICAgIHJlcXVlc3QKKyAqICAgICAgICAucG9zdCgnL3VzZXInKQorICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KQorICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTsKKyAqCisgKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDoKKyAqCisgKiAgICAgIHJlcXVlc3QKKyAqICAgICAgICAucG9zdCgnL3VzZXInKQorICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pOworICoKKyAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOgorICoKKyAqICAgICAgcmVxdWVzdAorICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KQorICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTsKKyAqCisgKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOgorICoKKyAqICAgICAgcmVxdWVzdAorICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pOworICoKKyAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhocgorICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIFJlc3BvbnNlKHJlcSwgb3B0aW9ucykgeworICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKyAgdGhpcy5yZXEgPSByZXE7CisgIHRoaXMueGhyID0gdGhpcy5yZXEueGhyOworICAvLyByZXNwb25zZVRleHQgaXMgYWNjZXNzaWJsZSBvbmx5IGlmIHJlc3BvbnNlVHlwZSBpcyAnJyBvciAndGV4dCcgYW5kIG9uIG9sZGVyIGJyb3dzZXJzCisgIHRoaXMudGV4dCA9ICgodGhpcy5yZXEubWV0aG9kICE9J0hFQUQnICYmICh0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICcnIHx8IHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnKSkgfHwgdHlwZW9mIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgID8gdGhpcy54aHIucmVzcG9uc2VUZXh0CisgICAgIDogbnVsbDsKKyAgdGhpcy5zdGF0dXNUZXh0ID0gdGhpcy5yZXEueGhyLnN0YXR1c1RleHQ7CisgIHRoaXMuX3NldFN0YXR1c1Byb3BlcnRpZXModGhpcy54aHIuc3RhdHVzKTsKKyAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnMgPSBwYXJzZUhlYWRlcih0aGlzLnhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7CisgIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zICIiIGZvciBDT1JTIHJlcXVlc3RzLCBidXQKKyAgLy8gZ2V0UmVzcG9uc2VIZWFkZXIgc3RpbGwgd29ya3MuIHNvIHdlIGdldCBjb250ZW50LXR5cGUgZXZlbiBpZiBnZXR0aW5nCisgIC8vIG90aGVyIGhlYWRlcnMgZmFpbHMuCisgIHRoaXMuaGVhZGVyWydjb250ZW50LXR5cGUnXSA9IHRoaXMueGhyLmdldFJlc3BvbnNlSGVhZGVyKCdjb250ZW50LXR5cGUnKTsKKyAgdGhpcy5fc2V0SGVhZGVyUHJvcGVydGllcyh0aGlzLmhlYWRlcik7CisgIHRoaXMuYm9keSA9IHRoaXMucmVxLm1ldGhvZCAhPSAnSEVBRCcKKyAgICA/IHRoaXMuX3BhcnNlQm9keSh0aGlzLnRleHQgPyB0aGlzLnRleHQgOiB0aGlzLnhoci5yZXNwb25zZSkKKyAgICA6IG51bGw7Cit9CisKKy8qKgorICogR2V0IGNhc2UtaW5zZW5zaXRpdmUgYGZpZWxkYCB2YWx1ZS4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gZmllbGQKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHVibGljCisgKi8KKworUmVzcG9uc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGZpZWxkKXsKKyAgcmV0dXJuIHRoaXMuaGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldOworfTsKKworLyoqCisgKiBTZXQgaGVhZGVyIHJlbGF0ZWQgcHJvcGVydGllczoKKyAqCisgKiAgIC0gYC50eXBlYCB0aGUgY29udGVudCB0eXBlIHdpdGhvdXQgcGFyYW1zCisgKgorICogQSByZXNwb25zZSBvZiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IgorICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiAidGV4dC9wbGFpbiIuCisgKgorICogQHBhcmFtIHtPYmplY3R9IGhlYWRlcgorICogQGFwaSBwcml2YXRlCisgKi8KKworUmVzcG9uc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24oaGVhZGVyKXsKKyAgLy8gY29udGVudC10eXBlCisgIHZhciBjdCA9IHRoaXMuaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJzsKKyAgdGhpcy50eXBlID0gdHlwZShjdCk7CisKKyAgLy8gcGFyYW1zCisgIHZhciBvYmogPSBwYXJhbXMoY3QpOworICBmb3IgKHZhciBrZXkgaW4gb2JqKSB0aGlzW2tleV0gPSBvYmpba2V5XTsKK307CisKKy8qKgorICogUGFyc2UgdGhlIGdpdmVuIGJvZHkgYHN0cmAuCisgKgorICogVXNlZCBmb3IgYXV0by1wYXJzaW5nIG9mIGJvZGllcy4gUGFyc2VycworICogYXJlIGRlZmluZWQgb24gdGhlIGBzdXBlcmFnZW50LnBhcnNlYCBvYmplY3QuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHN0cgorICogQHJldHVybiB7TWl4ZWR9CisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSZXNwb25zZS5wcm90b3R5cGUuX3BhcnNlQm9keSA9IGZ1bmN0aW9uKHN0cil7CisgIHZhciBwYXJzZSA9IHJlcXVlc3QucGFyc2VbdGhpcy50eXBlXTsKKyAgaWYgKCFwYXJzZSAmJiBpc0pTT04odGhpcy50eXBlKSkgeworICAgIHBhcnNlID0gcmVxdWVzdC5wYXJzZVsnYXBwbGljYXRpb24vanNvbiddOworICB9CisgIHJldHVybiBwYXJzZSAmJiBzdHIgJiYgKHN0ci5sZW5ndGggfHwgc3RyIGluc3RhbmNlb2YgT2JqZWN0KQorICAgID8gcGFyc2Uoc3RyKQorICAgIDogbnVsbDsKK307CisKKy8qKgorICogU2V0IGZsYWdzIHN1Y2ggYXMgYC5va2AgYmFzZWQgb24gYHN0YXR1c2AuCisgKgorICogRm9yIGV4YW1wbGUgYSAyeHggcmVzcG9uc2Ugd2lsbCBnaXZlIHlvdSBhIGAub2tgIG9mIF9fdHJ1ZV9fCisgKiB3aGVyZWFzIDV4eCB3aWxsIGJlIF9fZmFsc2VfXyBhbmQgYC5lcnJvcmAgd2lsbCBiZSBfX3RydWVfXy4gVGhlCisgKiBgLmNsaWVudEVycm9yYCBhbmQgYC5zZXJ2ZXJFcnJvcmAgYXJlIGFsc28gYXZhaWxhYmxlIHRvIGJlIG1vcmUKKyAqIHNwZWNpZmljLCBhbmQgYC5zdGF0dXNUeXBlYCBpcyB0aGUgY2xhc3Mgb2YgZXJyb3IgcmFuZ2luZyBmcm9tIDEuLjUKKyAqIHNvbWV0aW1lcyB1c2VmdWwgZm9yIG1hcHBpbmcgcmVzcG9uZCBjb2xvcnMgZXRjLgorICoKKyAqICJzdWdhciIgcHJvcGVydGllcyBhcmUgYWxzbyBkZWZpbmVkIGZvciBjb21tb24gY2FzZXMuIEN1cnJlbnRseSBwcm92aWRpbmc6CisgKgorICogICAtIC5ub0NvbnRlbnQKKyAqICAgLSAuYmFkUmVxdWVzdAorICogICAtIC51bmF1dGhvcml6ZWQKKyAqICAgLSAubm90QWNjZXB0YWJsZQorICogICAtIC5ub3RGb3VuZAorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBzdGF0dXMKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1Jlc3BvbnNlLnByb3RvdHlwZS5fc2V0U3RhdHVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKHN0YXR1cyl7CisgIC8vIGhhbmRsZSBJRTkgYnVnOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwMDQ2OTcyL21zaWUtcmV0dXJucy1zdGF0dXMtY29kZS1vZi0xMjIzLWZvci1hamF4LXJlcXVlc3QKKyAgaWYgKHN0YXR1cyA9PT0gMTIyMykgeworICAgIHN0YXR1cyA9IDIwNDsKKyAgfQorCisgIHZhciB0eXBlID0gc3RhdHVzIC8gMTAwIHwgMDsKKworICAvLyBzdGF0dXMgLyBjbGFzcworICB0aGlzLnN0YXR1cyA9IHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1czsKKyAgdGhpcy5zdGF0dXNUeXBlID0gdHlwZTsKKworICAvLyBiYXNpY3MKKyAgdGhpcy5pbmZvID0gMSA9PSB0eXBlOworICB0aGlzLm9rID0gMiA9PSB0eXBlOworICB0aGlzLmNsaWVudEVycm9yID0gNCA9PSB0eXBlOworICB0aGlzLnNlcnZlckVycm9yID0gNSA9PSB0eXBlOworICB0aGlzLmVycm9yID0gKDQgPT0gdHlwZSB8fCA1ID09IHR5cGUpCisgICAgPyB0aGlzLnRvRXJyb3IoKQorICAgIDogZmFsc2U7CisKKyAgLy8gc3VnYXIKKyAgdGhpcy5hY2NlcHRlZCA9IDIwMiA9PSBzdGF0dXM7CisgIHRoaXMubm9Db250ZW50ID0gMjA0ID09IHN0YXR1czsKKyAgdGhpcy5iYWRSZXF1ZXN0ID0gNDAwID09IHN0YXR1czsKKyAgdGhpcy51bmF1dGhvcml6ZWQgPSA0MDEgPT0gc3RhdHVzOworICB0aGlzLm5vdEFjY2VwdGFibGUgPSA0MDYgPT0gc3RhdHVzOworICB0aGlzLm5vdEZvdW5kID0gNDA0ID09IHN0YXR1czsKKyAgdGhpcy5mb3JiaWRkZW4gPSA0MDMgPT0gc3RhdHVzOworfTsKKworLyoqCisgKiBSZXR1cm4gYW4gYEVycm9yYCByZXByZXNlbnRhdGl2ZSBvZiB0aGlzIHJlc3BvbnNlLgorICoKKyAqIEByZXR1cm4ge0Vycm9yfQorICogQGFwaSBwdWJsaWMKKyAqLworCitSZXNwb25zZS5wcm90b3R5cGUudG9FcnJvciA9IGZ1bmN0aW9uKCl7CisgIHZhciByZXEgPSB0aGlzLnJlcTsKKyAgdmFyIG1ldGhvZCA9IHJlcS5tZXRob2Q7CisgIHZhciB1cmwgPSByZXEudXJsOworCisgIHZhciBtc2cgPSAnY2Fubm90ICcgKyBtZXRob2QgKyAnICcgKyB1cmwgKyAnICgnICsgdGhpcy5zdGF0dXMgKyAnKSc7CisgIHZhciBlcnIgPSBuZXcgRXJyb3IobXNnKTsKKyAgZXJyLnN0YXR1cyA9IHRoaXMuc3RhdHVzOworICBlcnIubWV0aG9kID0gbWV0aG9kOworICBlcnIudXJsID0gdXJsOworCisgIHJldHVybiBlcnI7Cit9OworCisvKioKKyAqIEV4cG9zZSBgUmVzcG9uc2VgLgorICovCisKK3JlcXVlc3QuUmVzcG9uc2UgPSBSZXNwb25zZTsKKworLyoqCisgKiBJbml0aWFsaXplIGEgbmV3IGBSZXF1ZXN0YCB3aXRoIHRoZSBnaXZlbiBgbWV0aG9kYCBhbmQgYHVybGAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZAorICogQHBhcmFtIHtTdHJpbmd9IHVybAorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBSZXF1ZXN0KG1ldGhvZCwgdXJsKSB7CisgIHZhciBzZWxmID0gdGhpczsKKyAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTsKKyAgdGhpcy5tZXRob2QgPSBtZXRob2Q7CisgIHRoaXMudXJsID0gdXJsOworICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZQorICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlCisgIHRoaXMub24oJ2VuZCcsIGZ1bmN0aW9uKCl7CisgICAgdmFyIGVyciA9IG51bGw7CisgICAgdmFyIHJlcyA9IG51bGw7CisKKyAgICB0cnkgeworICAgICAgcmVzID0gbmV3IFJlc3BvbnNlKHNlbGYpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgZXJyID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpOworICAgICAgZXJyLnBhcnNlID0gdHJ1ZTsKKyAgICAgIGVyci5vcmlnaW5hbCA9IGU7CisgICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlscworICAgICAgZXJyLnJhd1Jlc3BvbnNlID0gc2VsZi54aHIgJiYgc2VsZi54aHIucmVzcG9uc2VUZXh0ID8gc2VsZi54aHIucmVzcG9uc2VUZXh0IDogbnVsbDsKKyAgICAgIC8vIGlzc3VlICM4NzY6IHJldHVybiB0aGUgaHR0cCBzdGF0dXMgY29kZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlscworICAgICAgZXJyLnN0YXR1c0NvZGUgPSBzZWxmLnhociAmJiBzZWxmLnhoci5zdGF0dXMgPyBzZWxmLnhoci5zdGF0dXMgOiBudWxsOworICAgICAgcmV0dXJuIHNlbGYuY2FsbGJhY2soZXJyKTsKKyAgICB9CisKKyAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTsKKworICAgIHZhciBuZXdfZXJyOworICAgIHRyeSB7CisgICAgICBpZiAocmVzLnN0YXR1cyA8IDIwMCB8fCByZXMuc3RhdHVzID49IDMwMCkgeworICAgICAgICBuZXdfZXJyID0gbmV3IEVycm9yKHJlcy5zdGF0dXNUZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZScpOworICAgICAgICBuZXdfZXJyLm9yaWdpbmFsID0gZXJyOworICAgICAgICBuZXdfZXJyLnJlc3BvbnNlID0gcmVzOworICAgICAgICBuZXdfZXJyLnN0YXR1cyA9IHJlcy5zdGF0dXM7CisgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgICBuZXdfZXJyID0gZTsgLy8gIzk4NSB0b3VjaGluZyByZXMgbWF5IGNhdXNlIElOVkFMSURfU1RBVEVfRVJSIG9uIG9sZCBBbmRyb2lkCisgICAgfQorCisgICAgLy8gIzEwMDAgZG9uJ3QgY2F0Y2ggZXJyb3JzIGZyb20gdGhlIGNhbGxiYWNrIHRvIGF2b2lkIGRvdWJsZSBjYWxsaW5nIGl0CisgICAgaWYgKG5ld19lcnIpIHsKKyAgICAgIHNlbGYuY2FsbGJhY2sobmV3X2VyciwgcmVzKTsKKyAgICB9IGVsc2UgeworICAgICAgc2VsZi5jYWxsYmFjayhudWxsLCByZXMpOworICAgIH0KKyAgfSk7Cit9CisKKy8qKgorICogTWl4aW4gYEVtaXR0ZXJgIGFuZCBgcmVxdWVzdEJhc2VgLgorICovCisKK0VtaXR0ZXIoUmVxdWVzdC5wcm90b3R5cGUpOworZm9yICh2YXIga2V5IGluIHJlcXVlc3RCYXNlKSB7CisgIFJlcXVlc3QucHJvdG90eXBlW2tleV0gPSByZXF1ZXN0QmFzZVtrZXldOworfQorCisvKioKKyAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC4KKyAqCisgKiBFeGFtcGxlczoKKyAqCisgKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7CisgKgorICogICAgICByZXF1ZXN0LnBvc3QoJy8nKQorICogICAgICAgIC50eXBlKCd4bWwnKQorICogICAgICAgIC5zZW5kKHhtbHN0cmluZykKKyAqICAgICAgICAuZW5kKGNhbGxiYWNrKTsKKyAqCisgKiAgICAgIHJlcXVlc3QucG9zdCgnLycpCisgKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpCisgKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKQorICogICAgICAgIC5lbmQoY2FsbGJhY2spOworICoKKyAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlCisgKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KKworUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uKHR5cGUpeworICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgcmVxdWVzdC50eXBlc1t0eXBlXSB8fCB0eXBlKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCByZXNwb25zZVR5cGUgdG8gYHZhbGAuIFByZXNlbnRseSB2YWxpZCByZXNwb25zZVR5cGVzIGFyZSAnYmxvYicgYW5kCisgKiAnYXJyYXlidWZmZXInLgorICoKKyAqIEV4YW1wbGVzOgorICoKKyAqICAgICAgcmVxLmdldCgnLycpCisgKiAgICAgICAgLnJlc3BvbnNlVHlwZSgnYmxvYicpCisgKiAgICAgICAgLmVuZChjYWxsYmFjayk7CisgKgorICogQHBhcmFtIHtTdHJpbmd9IHZhbAorICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK1JlcXVlc3QucHJvdG90eXBlLnJlc3BvbnNlVHlwZSA9IGZ1bmN0aW9uKHZhbCl7CisgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbDsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCBBY2NlcHQgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC4KKyAqCisgKiBFeGFtcGxlczoKKyAqCisgKiAgICAgIHN1cGVyYWdlbnQudHlwZXMuanNvbiA9ICdhcHBsaWNhdGlvbi9qc29uJzsKKyAqCisgKiAgICAgIHJlcXVlc3QuZ2V0KCcvYWdlbnQnKQorICogICAgICAgIC5hY2NlcHQoJ2pzb24nKQorICogICAgICAgIC5lbmQoY2FsbGJhY2spOworICoKKyAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpCisgKiAgICAgICAgLmFjY2VwdCgnYXBwbGljYXRpb24vanNvbicpCisgKiAgICAgICAgLmVuZChjYWxsYmFjayk7CisgKgorICogQHBhcmFtIHtTdHJpbmd9IGFjY2VwdAorICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK1JlcXVlc3QucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uKHR5cGUpeworICB0aGlzLnNldCgnQWNjZXB0JywgcmVxdWVzdC50eXBlc1t0eXBlXSB8fCB0eXBlKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFNldCBBdXRob3JpemF0aW9uIGZpZWxkIHZhbHVlIHdpdGggYHVzZXJgIGFuZCBgcGFzc2AuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHVzZXIKKyAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzCisgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyB3aXRoICd0eXBlJyBwcm9wZXJ0eSAnYXV0bycgb3IgJ2Jhc2ljJyAoZGVmYXVsdCAnYmFzaWMnKQorICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK1JlcXVlc3QucHJvdG90eXBlLmF1dGggPSBmdW5jdGlvbih1c2VyLCBwYXNzLCBvcHRpb25zKXsKKyAgaWYgKCFvcHRpb25zKSB7CisgICAgb3B0aW9ucyA9IHsKKyAgICAgIHR5cGU6ICdiYXNpYycKKyAgICB9CisgIH0KKworICBzd2l0Y2ggKG9wdGlvbnMudHlwZSkgeworICAgIGNhc2UgJ2Jhc2ljJzoKKyAgICAgIHZhciBzdHIgPSBidG9hKHVzZXIgKyAnOicgKyBwYXNzKTsKKyAgICAgIHRoaXMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBzdHIpOworICAgIGJyZWFrOworCisgICAgY2FzZSAnYXV0byc6CisgICAgICB0aGlzLnVzZXJuYW1lID0gdXNlcjsKKyAgICAgIHRoaXMucGFzc3dvcmQgPSBwYXNzOworICAgIGJyZWFrOworICB9CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuCisqCisqIEV4YW1wbGVzOgorKgorKiAgIHJlcXVlc3QuZ2V0KCcvc2hvZXMnKQorKiAgICAgLnF1ZXJ5KCdzaXplPTEwJykKKyogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSkKKyoKKyogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSB2YWwKKyogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisqIEBhcGkgcHVibGljCisqLworCitSZXF1ZXN0LnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uKHZhbCl7CisgIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgdmFsKSB2YWwgPSBzZXJpYWxpemUodmFsKTsKKyAgaWYgKHZhbCkgdGhpcy5fcXVlcnkucHVzaCh2YWwpOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogUXVldWUgdGhlIGdpdmVuIGBmaWxlYCBhcyBhbiBhdHRhY2htZW50IHRvIHRoZSBzcGVjaWZpZWQgYGZpZWxkYCwKKyAqIHdpdGggb3B0aW9uYWwgYGZpbGVuYW1lYC4KKyAqCisgKiBgYGAganMKKyAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpCisgKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPSJhIj48YiBpZD0iYiI+aGV5ITwvYj48L2E+J10sIHsgdHlwZTogInRleHQvaHRtbCJ9KSkKKyAqICAgLmVuZChjYWxsYmFjayk7CisgKiBgYGAKKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gZmllbGQKKyAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlCisgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWUKKyAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitSZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbihmaWVsZCwgZmlsZSwgZmlsZW5hbWUpeworICB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChmaWVsZCwgZmlsZSwgZmlsZW5hbWUgfHwgZmlsZS5uYW1lKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCitSZXF1ZXN0LnByb3RvdHlwZS5fZ2V0Rm9ybURhdGEgPSBmdW5jdGlvbigpeworICBpZiAoIXRoaXMuX2Zvcm1EYXRhKSB7CisgICAgdGhpcy5fZm9ybURhdGEgPSBuZXcgcm9vdC5Gb3JtRGF0YSgpOworICB9CisgIHJldHVybiB0aGlzLl9mb3JtRGF0YTsKK307CisKKy8qKgorICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYAorICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay4KKyAqCisgKiBAcGFyYW0ge0Vycm9yfSBlcnIKKyAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlcworICogQGFwaSBwcml2YXRlCisgKi8KKworUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnIsIHJlcyl7CisgIHZhciBmbiA9IHRoaXMuX2NhbGxiYWNrOworICB0aGlzLmNsZWFyVGltZW91dCgpOworICBmbihlcnIsIHJlcyk7Cit9OworCisvKioKKyAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLgorICoKKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK1JlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbigpeworICB2YXIgZXJyID0gbmV3IEVycm9yKCdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcblBvc3NpYmxlIGNhdXNlczogdGhlIG5ldHdvcmsgaXMgb2ZmbGluZSwgT3JpZ2luIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiwgdGhlIHBhZ2UgaXMgYmVpbmcgdW5sb2FkZWQsIGV0Yy4nKTsKKyAgZXJyLmNyb3NzRG9tYWluID0gdHJ1ZTsKKworICBlcnIuc3RhdHVzID0gdGhpcy5zdGF0dXM7CisgIGVyci5tZXRob2QgPSB0aGlzLm1ldGhvZDsKKyAgZXJyLnVybCA9IHRoaXMudXJsOworCisgIHRoaXMuY2FsbGJhY2soZXJyKTsKK307CisKKy8qKgorICogSW52b2tlIGNhbGxiYWNrIHdpdGggdGltZW91dCBlcnJvci4KKyAqCisgKiBAYXBpIHByaXZhdGUKKyAqLworCitSZXF1ZXN0LnByb3RvdHlwZS5fdGltZW91dEVycm9yID0gZnVuY3Rpb24oKXsKKyAgdmFyIHRpbWVvdXQgPSB0aGlzLl90aW1lb3V0OworICB2YXIgZXJyID0gbmV3IEVycm9yKCd0aW1lb3V0IG9mICcgKyB0aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyk7CisgIGVyci50aW1lb3V0ID0gdGltZW91dDsKKyAgdGhpcy5jYWxsYmFjayhlcnIpOworfTsKKworLyoqCisgKiBDb21wb3NlIHF1ZXJ5c3RyaW5nIHRvIGFwcGVuZCB0byByZXEudXJsCisgKgorICogQGFwaSBwcml2YXRlCisgKi8KKworUmVxdWVzdC5wcm90b3R5cGUuX2FwcGVuZFF1ZXJ5U3RyaW5nID0gZnVuY3Rpb24oKXsKKyAgdmFyIHF1ZXJ5ID0gdGhpcy5fcXVlcnkuam9pbignJicpOworICBpZiAocXVlcnkpIHsKKyAgICB0aGlzLnVybCArPSB+dGhpcy51cmwuaW5kZXhPZignPycpCisgICAgICA/ICcmJyArIHF1ZXJ5CisgICAgICA6ICc/JyArIHF1ZXJ5OworICB9Cit9OworCisvKioKKyAqIEluaXRpYXRlIHJlcXVlc3QsIGludm9raW5nIGNhbGxiYWNrIGBmbihyZXMpYAorICogd2l0aCBhbiBpbnN0YW5jZW9mIGBSZXNwb25zZWAuCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4KKyAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitSZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbihmbil7CisgIHZhciBzZWxmID0gdGhpczsKKyAgdmFyIHhociA9IHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKTsKKyAgdmFyIHRpbWVvdXQgPSB0aGlzLl90aW1lb3V0OworICB2YXIgZGF0YSA9IHRoaXMuX2Zvcm1EYXRhIHx8IHRoaXMuX2RhdGE7CisKKyAgLy8gc3RvcmUgY2FsbGJhY2sKKyAgdGhpcy5fY2FsbGJhY2sgPSBmbiB8fCBub29wOworCisgIC8vIHN0YXRlIGNoYW5nZQorICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKXsKKyAgICBpZiAoNCAhPSB4aHIucmVhZHlTdGF0ZSkgcmV0dXJuOworCisgICAgLy8gSW4gSUU5LCByZWFkcyB0byBhbnkgcHJvcGVydHkgKGUuZy4gc3RhdHVzKSBvZmYgb2YgYW4gYWJvcnRlZCBYSFIgd2lsbAorICAgIC8vIHJlc3VsdCBpbiB0aGUgZXJyb3IgIkNvdWxkIG5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGR1ZSB0byBlcnJvciBjMDBjMDIzZiIKKyAgICB2YXIgc3RhdHVzOworICAgIHRyeSB7IHN0YXR1cyA9IHhoci5zdGF0dXMgfSBjYXRjaChlKSB7IHN0YXR1cyA9IDA7IH0KKworICAgIGlmICgwID09IHN0YXR1cykgeworICAgICAgaWYgKHNlbGYudGltZWRvdXQpIHJldHVybiBzZWxmLl90aW1lb3V0RXJyb3IoKTsKKyAgICAgIGlmIChzZWxmLl9hYm9ydGVkKSByZXR1cm47CisgICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7CisgICAgfQorICAgIHNlbGYuZW1pdCgnZW5kJyk7CisgIH07CisKKyAgLy8gcHJvZ3Jlc3MKKyAgdmFyIGhhbmRsZVByb2dyZXNzID0gZnVuY3Rpb24oZSl7CisgICAgaWYgKGUudG90YWwgPiAwKSB7CisgICAgICBlLnBlcmNlbnQgPSBlLmxvYWRlZCAvIGUudG90YWwgKiAxMDA7CisgICAgfQorICAgIGUuZGlyZWN0aW9uID0gJ2Rvd25sb2FkJzsKKyAgICBzZWxmLmVtaXQoJ3Byb2dyZXNzJywgZSk7CisgIH07CisgIGlmICh0aGlzLmhhc0xpc3RlbmVycygncHJvZ3Jlc3MnKSkgeworICAgIHhoci5vbnByb2dyZXNzID0gaGFuZGxlUHJvZ3Jlc3M7CisgIH0KKyAgdHJ5IHsKKyAgICBpZiAoeGhyLnVwbG9hZCAmJiB0aGlzLmhhc0xpc3RlbmVycygncHJvZ3Jlc3MnKSkgeworICAgICAgeGhyLnVwbG9hZC5vbnByb2dyZXNzID0gaGFuZGxlUHJvZ3Jlc3M7CisgICAgfQorICB9IGNhdGNoKGUpIHsKKyAgICAvLyBBY2Nlc3NpbmcgeGhyLnVwbG9hZCBmYWlscyBpbiBJRSBmcm9tIGEgd2ViIHdvcmtlciwgc28ganVzdCBwcmV0ZW5kIGl0IGRvZXNuJ3QgZXhpc3QuCisgICAgLy8gUmVwb3J0ZWQgaGVyZToKKyAgICAvLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzgzNzI0NS94bWxodHRwcmVxdWVzdC11cGxvYWQtdGhyb3dzLWludmFsaWQtYXJndW1lbnQtd2hlbi11c2VkLWZyb20td2ViLXdvcmtlci1jb250ZXh0CisgIH0KKworICAvLyB0aW1lb3V0CisgIGlmICh0aW1lb3V0ICYmICF0aGlzLl90aW1lcikgeworICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpeworICAgICAgc2VsZi50aW1lZG91dCA9IHRydWU7CisgICAgICBzZWxmLmFib3J0KCk7CisgICAgfSwgdGltZW91dCk7CisgIH0KKworICAvLyBxdWVyeXN0cmluZworICB0aGlzLl9hcHBlbmRRdWVyeVN0cmluZygpOworCisgIC8vIGluaXRpYXRlIHJlcXVlc3QKKyAgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkgeworICAgIHhoci5vcGVuKHRoaXMubWV0aG9kLCB0aGlzLnVybCwgdHJ1ZSwgdGhpcy51c2VybmFtZSwgdGhpcy5wYXNzd29yZCk7CisgIH0gZWxzZSB7CisgICAgeGhyLm9wZW4odGhpcy5tZXRob2QsIHRoaXMudXJsLCB0cnVlKTsKKyAgfQorCisgIC8vIENPUlMKKyAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7CisKKyAgLy8gYm9keQorICBpZiAoJ0dFVCcgIT0gdGhpcy5tZXRob2QgJiYgJ0hFQUQnICE9IHRoaXMubWV0aG9kICYmICdzdHJpbmcnICE9IHR5cGVvZiBkYXRhICYmICF0aGlzLl9pc0hvc3QoZGF0YSkpIHsKKyAgICAvLyBzZXJpYWxpemUgc3R1ZmYKKyAgICB2YXIgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddOworICAgIHZhciBzZXJpYWxpemUgPSB0aGlzLl9zZXJpYWxpemVyIHx8IHJlcXVlc3Quc2VyaWFsaXplW2NvbnRlbnRUeXBlID8gY29udGVudFR5cGUuc3BsaXQoJzsnKVswXSA6ICcnXTsKKyAgICBpZiAoIXNlcmlhbGl6ZSAmJiBpc0pTT04oY29udGVudFR5cGUpKSBzZXJpYWxpemUgPSByZXF1ZXN0LnNlcmlhbGl6ZVsnYXBwbGljYXRpb24vanNvbiddOworICAgIGlmIChzZXJpYWxpemUpIGRhdGEgPSBzZXJpYWxpemUoZGF0YSk7CisgIH0KKworICAvLyBzZXQgaGVhZGVyIGZpZWxkcworICBmb3IgKHZhciBmaWVsZCBpbiB0aGlzLmhlYWRlcikgeworICAgIGlmIChudWxsID09IHRoaXMuaGVhZGVyW2ZpZWxkXSkgY29udGludWU7CisgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoZmllbGQsIHRoaXMuaGVhZGVyW2ZpZWxkXSk7CisgIH0KKworICBpZiAodGhpcy5fcmVzcG9uc2VUeXBlKSB7CisgICAgeGhyLnJlc3BvbnNlVHlwZSA9IHRoaXMuX3Jlc3BvbnNlVHlwZTsKKyAgfQorCisgIC8vIHNlbmQgc3R1ZmYKKyAgdGhpcy5lbWl0KCdyZXF1ZXN0JywgdGhpcyk7CisKKyAgLy8gSUUxMSB4aHIuc2VuZCh1bmRlZmluZWQpIHNlbmRzICd1bmRlZmluZWQnIHN0cmluZyBhcyBQT1NUIHBheWxvYWQgKGluc3RlYWQgb2Ygbm90aGluZykKKyAgLy8gV2UgbmVlZCBudWxsIGhlcmUgaWYgZGF0YSBpcyB1bmRlZmluZWQKKyAgeGhyLnNlbmQodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnID8gZGF0YSA6IG51bGwpOworICByZXR1cm4gdGhpczsKK307CisKKworLyoqCisgKiBFeHBvc2UgYFJlcXVlc3RgLgorICovCisKK3JlcXVlc3QuUmVxdWVzdCA9IFJlcXVlc3Q7CisKKy8qKgorICogR0VUIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmbgorICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXQorICogQHJldHVybiB7UmVxdWVzdH0KKyAqIEBhcGkgcHVibGljCisgKi8KKworcmVxdWVzdC5nZXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKXsKKyAgdmFyIHJlcSA9IHJlcXVlc3QoJ0dFVCcsIHVybCk7CisgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSBmbiA9IGRhdGEsIGRhdGEgPSBudWxsOworICBpZiAoZGF0YSkgcmVxLnF1ZXJ5KGRhdGEpOworICBpZiAoZm4pIHJlcS5lbmQoZm4pOworICByZXR1cm4gcmVxOworfTsKKworLyoqCisgKiBIRUFEIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmbgorICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXQorICogQHJldHVybiB7UmVxdWVzdH0KKyAqIEBhcGkgcHVibGljCisgKi8KKworcmVxdWVzdC5oZWFkID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbil7CisgIHZhciByZXEgPSByZXF1ZXN0KCdIRUFEJywgdXJsKTsKKyAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIGZuID0gZGF0YSwgZGF0YSA9IG51bGw7CisgIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTsKKyAgaWYgKGZuKSByZXEuZW5kKGZuKTsKKyAgcmV0dXJuIHJlcTsKK307CisKKy8qKgorICogT1BUSU9OUyBxdWVyeSB0byBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gdXJsCisgKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0KKyAqIEByZXR1cm4ge1JlcXVlc3R9CisgKiBAYXBpIHB1YmxpYworICovCisKK3JlcXVlc3Qub3B0aW9ucyA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4peworICB2YXIgcmVxID0gcmVxdWVzdCgnT1BUSU9OUycsIHVybCk7CisgIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSBmbiA9IGRhdGEsIGRhdGEgPSBudWxsOworICBpZiAoZGF0YSkgcmVxLnNlbmQoZGF0YSk7CisgIGlmIChmbikgcmVxLmVuZChmbik7CisgIHJldHVybiByZXE7Cit9OworCisvKioKKyAqIERFTEVURSBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gdXJsCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dCisgKiBAcmV0dXJuIHtSZXF1ZXN0fQorICogQGFwaSBwdWJsaWMKKyAqLworCitmdW5jdGlvbiBkZWwodXJsLCBmbil7CisgIHZhciByZXEgPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpOworICBpZiAoZm4pIHJlcS5lbmQoZm4pOworICByZXR1cm4gcmVxOworfTsKKworcmVxdWVzdFsnZGVsJ10gPSBkZWw7CityZXF1ZXN0WydkZWxldGUnXSA9IGRlbDsKKworLyoqCisgKiBQQVRDSCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXQorICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXQorICogQHJldHVybiB7UmVxdWVzdH0KKyAqIEBhcGkgcHVibGljCisgKi8KKworcmVxdWVzdC5wYXRjaCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4peworICB2YXIgcmVxID0gcmVxdWVzdCgnUEFUQ0gnLCB1cmwpOworICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgZm4gPSBkYXRhLCBkYXRhID0gbnVsbDsKKyAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpOworICBpZiAoZm4pIHJlcS5lbmQoZm4pOworICByZXR1cm4gcmVxOworfTsKKworLyoqCisgKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuCisgKgorICogQHBhcmFtIHtTdHJpbmd9IHVybAorICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dCisgKiBAcmV0dXJuIHtSZXF1ZXN0fQorICogQGFwaSBwdWJsaWMKKyAqLworCityZXF1ZXN0LnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKXsKKyAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpOworICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgZm4gPSBkYXRhLCBkYXRhID0gbnVsbDsKKyAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpOworICBpZiAoZm4pIHJlcS5lbmQoZm4pOworICByZXR1cm4gcmVxOworfTsKKworLyoqCisgKiBQVVQgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC4KKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gdXJsCisgKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl0KKyAqIEByZXR1cm4ge1JlcXVlc3R9CisgKiBAYXBpIHB1YmxpYworICovCisKK3JlcXVlc3QucHV0ID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbil7CisgIHZhciByZXEgPSByZXF1ZXN0KCdQVVQnLCB1cmwpOworICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgZm4gPSBkYXRhLCBkYXRhID0gbnVsbDsKKyAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpOworICBpZiAoZm4pIHJlcS5lbmQoZm4pOworICByZXR1cm4gcmVxOworfTsKKworfSx7Ii4vaXMtb2JqZWN0IjoxNTksIi4vcmVxdWVzdCI6MTYxLCIuL3JlcXVlc3QtYmFzZSI6MTYwLCJlbWl0dGVyIjoxNjJ9XSwxNTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBDaGVjayBpZiBgb2JqYCBpcyBhbiBvYmplY3QuCisgKgorICogQHBhcmFtIHtPYmplY3R9IG9iagorICogQHJldHVybiB7Qm9vbGVhbn0KKyAqIEBhcGkgcHJpdmF0ZQorICovCisKK2Z1bmN0aW9uIGlzT2JqZWN0KG9iaikgeworICByZXR1cm4gbnVsbCAhPT0gb2JqICYmICdvYmplY3QnID09PSB0eXBlb2Ygb2JqOworfQorCittb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0OworCit9LHt9XSwxNjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeworLyoqCisgKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlCisgKi8KK3ZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXMtb2JqZWN0Jyk7CisKKy8qKgorICogQ2xlYXIgcHJldmlvdXMgdGltZW91dC4KKyAqCisgKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KKworZXhwb3J0cy5jbGVhclRpbWVvdXQgPSBmdW5jdGlvbiBfY2xlYXJUaW1lb3V0KCl7CisgIHRoaXMuX3RpbWVvdXQgPSAwOworICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogT3ZlcnJpZGUgZGVmYXVsdCByZXNwb25zZSBib2R5IHBhcnNlcgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBpbmNvbWluZyBkYXRhIGludG8gcmVxdWVzdC5ib2R5CisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0KKyAqIEBhcGkgcHVibGljCisgKi8KKworZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uIHBhcnNlKGZuKXsKKyAgdGhpcy5fcGFyc2VyID0gZm47CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBPdmVycmlkZSBkZWZhdWx0IHJlcXVlc3QgYm9keSBzZXJpYWxpemVyCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGRhdGEgc2V0IHZpYSAuc2VuZCBvciAuYXR0YWNoIGludG8gcGF5bG9hZCB0byBzZW5kCisgKgorICogQHBhcmFtIHtGdW5jdGlvbn0KKyAqIEBhcGkgcHVibGljCisgKi8KKworZXhwb3J0cy5zZXJpYWxpemUgPSBmdW5jdGlvbiBzZXJpYWxpemUoZm4peworICB0aGlzLl9zZXJpYWxpemVyID0gZm47CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQgdGltZW91dCB0byBgbXNgLgorICoKKyAqIEBwYXJhbSB7TnVtYmVyfSBtcworICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK2V4cG9ydHMudGltZW91dCA9IGZ1bmN0aW9uIHRpbWVvdXQobXMpeworICB0aGlzLl90aW1lb3V0ID0gbXM7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBQcm9taXNlIHN1cHBvcnQKKyAqCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QKKyAqIEByZXR1cm4ge1JlcXVlc3R9CisgKi8KKworZXhwb3J0cy50aGVuID0gZnVuY3Rpb24gdGhlbihyZXNvbHZlLCByZWplY3QpIHsKKyAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkgeworICAgIHZhciBzZWxmID0gdGhpczsKKyAgICB0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGlubmVyUmVzb2x2ZSwgaW5uZXJSZWplY3QpeworICAgICAgc2VsZi5lbmQoZnVuY3Rpb24oZXJyLCByZXMpeworICAgICAgICBpZiAoZXJyKSBpbm5lclJlamVjdChlcnIpOyBlbHNlIGlubmVyUmVzb2x2ZShyZXMpOworICAgICAgfSk7CisgICAgfSk7CisgIH0KKyAgcmV0dXJuIHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKK30KKworLyoqCisgKiBBbGxvdyBmb3IgZXh0ZW5zaW9uCisgKi8KKworZXhwb3J0cy51c2UgPSBmdW5jdGlvbiB1c2UoZm4pIHsKKyAgZm4odGhpcyk7CisgIHJldHVybiB0aGlzOworfQorCisKKy8qKgorICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuCisgKiBDYXNlLWluc2Vuc2l0aXZlLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZAorICogQHJldHVybiB7U3RyaW5nfQorICogQGFwaSBwdWJsaWMKKyAqLworCitleHBvcnRzLmdldCA9IGZ1bmN0aW9uKGZpZWxkKXsKKyAgcmV0dXJuIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTsKK307CisKKy8qKgorICogR2V0IGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGBmaWVsZGAgdmFsdWUuCisgKiBUaGlzIGlzIGEgZGVwcmVjYXRlZCBpbnRlcm5hbCBBUEkuIFVzZSBgLmdldChmaWVsZClgIGluc3RlYWQuCisgKgorICogKGdldEhlYWRlciBpcyBubyBsb25nZXIgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBzdXBlcmFnZW50IGNvZGUgYmFzZSkKKyAqCisgKiBAcGFyYW0ge1N0cmluZ30gZmllbGQKKyAqIEByZXR1cm4ge1N0cmluZ30KKyAqIEBhcGkgcHJpdmF0ZQorICogQGRlcHJlY2F0ZWQKKyAqLworCitleHBvcnRzLmdldEhlYWRlciA9IGV4cG9ydHMuZ2V0OworCisvKioKKyAqIFNldCBoZWFkZXIgYGZpZWxkYCB0byBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdC4KKyAqIENhc2UtaW5zZW5zaXRpdmUuCisgKgorICogRXhhbXBsZXM6CisgKgorICogICAgICByZXEuZ2V0KCcvJykKKyAqICAgICAgICAuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpCisgKiAgICAgICAgLnNldCgnWC1BUEktS2V5JywgJ2Zvb2JhcicpCisgKiAgICAgICAgLmVuZChjYWxsYmFjayk7CisgKgorICogICAgICByZXEuZ2V0KCcvJykKKyAqICAgICAgICAuc2V0KHsgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsICdYLUFQSS1LZXknOiAnZm9vYmFyJyB9KQorICogICAgICAgIC5lbmQoY2FsbGJhY2spOworICoKKyAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gZmllbGQKKyAqIEBwYXJhbSB7U3RyaW5nfSB2YWwKKyAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitleHBvcnRzLnNldCA9IGZ1bmN0aW9uKGZpZWxkLCB2YWwpeworICBpZiAoaXNPYmplY3QoZmllbGQpKSB7CisgICAgZm9yICh2YXIga2V5IGluIGZpZWxkKSB7CisgICAgICB0aGlzLnNldChrZXksIGZpZWxkW2tleV0pOworICAgIH0KKyAgICByZXR1cm4gdGhpczsKKyAgfQorICB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV0gPSB2YWw7CisgIHRoaXMuaGVhZGVyW2ZpZWxkXSA9IHZhbDsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIFJlbW92ZSBoZWFkZXIgYGZpZWxkYC4KKyAqIENhc2UtaW5zZW5zaXRpdmUuCisgKgorICogRXhhbXBsZToKKyAqCisgKiAgICAgIHJlcS5nZXQoJy8nKQorICogICAgICAgIC51bnNldCgnVXNlci1BZ2VudCcpCisgKiAgICAgICAgLmVuZChjYWxsYmFjayk7CisgKgorICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkCisgKi8KK2V4cG9ydHMudW5zZXQgPSBmdW5jdGlvbihmaWVsZCl7CisgIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07CisgIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCBmb3IgIm11bHRpcGFydC9mb3JtLWRhdGEiCisgKiByZXF1ZXN0IGJvZGllcy4KKyAqCisgKiBgYGAganMKKyAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpCisgKiAgIC5maWVsZCgnZm9vJywgJ2JhcicpCisgKiAgIC5lbmQoY2FsbGJhY2spOworICogYGBgCisgKgorICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKKyAqIEBwYXJhbSB7U3RyaW5nfEJsb2J8RmlsZXxCdWZmZXJ8ZnMuUmVhZFN0cmVhbX0gdmFsCisgKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmcKKyAqIEBhcGkgcHVibGljCisgKi8KK2V4cG9ydHMuZmllbGQgPSBmdW5jdGlvbihuYW1lLCB2YWwpIHsKKyAgdGhpcy5fZ2V0Rm9ybURhdGEoKS5hcHBlbmQobmFtZSwgdmFsKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCisvKioKKyAqIEFib3J0IHRoZSByZXF1ZXN0LCBhbmQgY2xlYXIgcG90ZW50aWFsIHRpbWVvdXQuCisgKgorICogQHJldHVybiB7UmVxdWVzdH0KKyAqIEBhcGkgcHVibGljCisgKi8KK2V4cG9ydHMuYWJvcnQgPSBmdW5jdGlvbigpeworICBpZiAodGhpcy5fYWJvcnRlZCkgeworICAgIHJldHVybiB0aGlzOworICB9CisgIHRoaXMuX2Fib3J0ZWQgPSB0cnVlOworICB0aGlzLnhociAmJiB0aGlzLnhoci5hYm9ydCgpOyAvLyBicm93c2VyCisgIHRoaXMucmVxICYmIHRoaXMucmVxLmFib3J0KCk7IC8vIG5vZGUKKyAgdGhpcy5jbGVhclRpbWVvdXQoKTsKKyAgdGhpcy5lbWl0KCdhYm9ydCcpOworICByZXR1cm4gdGhpczsKK307CisKKy8qKgorICogRW5hYmxlIHRyYW5zbWlzc2lvbiBvZiBjb29raWVzIHdpdGggeC1kb21haW4gcmVxdWVzdHMuCisgKgorICogTm90ZSB0aGF0IGZvciB0aGlzIHRvIHdvcmsgdGhlIG9yaWdpbiBtdXN0IG5vdCBiZQorICogdXNpbmcgIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiIgd2l0aCBhIHdpbGRjYXJkLAorICogYW5kIGFsc28gbXVzdCBzZXQgIkFjY2Vzcy1Db250cm9sLUFsbG93LUNyZWRlbnRpYWxzIgorICogdG8gInRydWUiLgorICoKKyAqIEBhcGkgcHVibGljCisgKi8KKworZXhwb3J0cy53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbigpeworICAvLyBUaGlzIGlzIGJyb3dzZXItb25seSBmdW5jdGlvbmFsaXR5LiBOb2RlIHNpZGUgaXMgbm8tb3AuCisgIHRoaXMuX3dpdGhDcmVkZW50aWFscyA9IHRydWU7CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBTZXQgdGhlIG1heCByZWRpcmVjdHMgdG8gYG5gLiBEb2VzIG5vdGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBAcGFyYW0ge051bWJlcn0gbgorICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nCisgKiBAYXBpIHB1YmxpYworICovCisKK2V4cG9ydHMucmVkaXJlY3RzID0gZnVuY3Rpb24obil7CisgIHRoaXMuX21heFJlZGlyZWN0cyA9IG47CisgIHJldHVybiB0aGlzOworfTsKKworLyoqCisgKiBDb252ZXJ0IHRvIGEgcGxhaW4gamF2YXNjcmlwdCBvYmplY3QgKG5vdCBKU09OIHN0cmluZykgb2Ygc2NhbGFyIHByb3BlcnRpZXMuCisgKiBOb3RlIGFzIHRoaXMgbWV0aG9kIGlzIGRlc2lnbmVkIHRvIHJldHVybiBhIHVzZWZ1bCBub24tdGhpcyB2YWx1ZSwKKyAqIGl0IGNhbm5vdCBiZSBjaGFpbmVkLgorICoKKyAqIEByZXR1cm4ge09iamVjdH0gZGVzY3JpYmluZyBtZXRob2QsIHVybCwgYW5kIGRhdGEgb2YgdGhpcyByZXF1ZXN0CisgKiBAYXBpIHB1YmxpYworICovCisKK2V4cG9ydHMudG9KU09OID0gZnVuY3Rpb24oKXsKKyAgcmV0dXJuIHsKKyAgICBtZXRob2Q6IHRoaXMubWV0aG9kLAorICAgIHVybDogdGhpcy51cmwsCisgICAgZGF0YTogdGhpcy5fZGF0YSwKKyAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXIKKyAgfTsKK307CisKKy8qKgorICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCwKKyAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopCisgKgorICogVE9ETzogZnV0dXJlIHByb29mLCBtb3ZlIHRvIGNvbXBvZW50IGxhbmQKKyAqCisgKiBAcGFyYW0ge09iamVjdH0gb2JqCisgKiBAcmV0dXJuIHtCb29sZWFufQorICogQGFwaSBwcml2YXRlCisgKi8KKworZXhwb3J0cy5faXNIb3N0ID0gZnVuY3Rpb24gX2lzSG9zdChvYmopIHsKKyAgdmFyIHN0ciA9IHt9LnRvU3RyaW5nLmNhbGwob2JqKTsKKworICBzd2l0Y2ggKHN0cikgeworICAgIGNhc2UgJ1tvYmplY3QgRmlsZV0nOgorICAgIGNhc2UgJ1tvYmplY3QgQmxvYl0nOgorICAgIGNhc2UgJ1tvYmplY3QgRm9ybURhdGFdJzoKKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KK30KKworLyoqCisgKiBTZW5kIGBkYXRhYCBhcyB0aGUgcmVxdWVzdCBib2R5LCBkZWZhdWx0aW5nIHRoZSBgLnR5cGUoKWAgdG8gImpzb24iIHdoZW4KKyAqIGFuIG9iamVjdCBpcyBnaXZlbi4KKyAqCisgKiBFeGFtcGxlczoKKyAqCisgKiAgICAgICAvLyBtYW51YWwganNvbgorICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpCisgKiAgICAgICAgIC50eXBlKCdqc29uJykKKyAqICAgICAgICAgLnNlbmQoJ3sibmFtZSI6InRqIn0nKQorICogICAgICAgICAuZW5kKGNhbGxiYWNrKQorICoKKyAqICAgICAgIC8vIGF1dG8ganNvbgorICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpCisgKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KQorICogICAgICAgICAuZW5kKGNhbGxiYWNrKQorICoKKyAqICAgICAgIC8vIG1hbnVhbCB4LXd3dy1mb3JtLXVybGVuY29kZWQKKyAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKQorICogICAgICAgICAudHlwZSgnZm9ybScpCisgKiAgICAgICAgIC5zZW5kKCduYW1lPXRqJykKKyAqICAgICAgICAgLmVuZChjYWxsYmFjaykKKyAqCisgKiAgICAgICAvLyBhdXRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZAorICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpCisgKiAgICAgICAgIC50eXBlKCdmb3JtJykKKyAqICAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0pCisgKiAgICAgICAgIC5lbmQoY2FsbGJhY2spCisgKgorICogICAgICAgLy8gZGVmYXVsdHMgdG8geC13d3ctZm9ybS11cmxlbmNvZGVkCisgKiAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKQorICogICAgICAgIC5zZW5kKCduYW1lPXRvYmknKQorICogICAgICAgIC5zZW5kKCdzcGVjaWVzPWZlcnJldCcpCisgKiAgICAgICAgLmVuZChjYWxsYmFjaykKKyAqCisgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGRhdGEKKyAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZworICogQGFwaSBwdWJsaWMKKyAqLworCitleHBvcnRzLnNlbmQgPSBmdW5jdGlvbihkYXRhKXsKKyAgdmFyIG9iaiA9IGlzT2JqZWN0KGRhdGEpOworICB2YXIgdHlwZSA9IHRoaXMuX2hlYWRlclsnY29udGVudC10eXBlJ107CisKKyAgLy8gbWVyZ2UKKyAgaWYgKG9iaiAmJiBpc09iamVjdCh0aGlzLl9kYXRhKSkgeworICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7CisgICAgICB0aGlzLl9kYXRhW2tleV0gPSBkYXRhW2tleV07CisgICAgfQorICB9IGVsc2UgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBkYXRhKSB7CisgICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWQKKyAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpOworICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddOworICAgIGlmICgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyA9PSB0eXBlKSB7CisgICAgICB0aGlzLl9kYXRhID0gdGhpcy5fZGF0YQorICAgICAgICA/IHRoaXMuX2RhdGEgKyAnJicgKyBkYXRhCisgICAgICAgIDogZGF0YTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5fZGF0YSA9ICh0aGlzLl9kYXRhIHx8ICcnKSArIGRhdGE7CisgICAgfQorICB9IGVsc2UgeworICAgIHRoaXMuX2RhdGEgPSBkYXRhOworICB9CisKKyAgaWYgKCFvYmogfHwgdGhpcy5faXNIb3N0KGRhdGEpKSByZXR1cm4gdGhpczsKKworICAvLyBkZWZhdWx0IHRvIGpzb24KKyAgaWYgKCF0eXBlKSB0aGlzLnR5cGUoJ2pzb24nKTsKKyAgcmV0dXJuIHRoaXM7Cit9OworCit9LHsiLi9pcy1vYmplY3QiOjE1OX1dLDE2MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisvLyBUaGUgbm9kZSBhbmQgYnJvd3NlciBtb2R1bGVzIGV4cG9zZSB2ZXJzaW9ucyBvZiB0aGlzIHdpdGggdGhlCisvLyBhcHByb3ByaWF0ZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBib3VuZCBhcyBmaXJzdCBhcmd1bWVudAorLyoqCisgKiBJc3N1ZSBhIHJlcXVlc3Q6CisgKgorICogRXhhbXBsZXM6CisgKgorICogICAgcmVxdWVzdCgnR0VUJywgJy91c2VycycpLmVuZChjYWxsYmFjaykKKyAqICAgIHJlcXVlc3QoJy91c2VycycpLmVuZChjYWxsYmFjaykKKyAqICAgIHJlcXVlc3QoJy91c2VycycsIGNhbGxiYWNrKQorICoKKyAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2QKKyAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSB1cmwgb3IgY2FsbGJhY2sKKyAqIEByZXR1cm4ge1JlcXVlc3R9CisgKiBAYXBpIHB1YmxpYworICovCisKK2Z1bmN0aW9uIHJlcXVlc3QoUmVxdWVzdENvbnN0cnVjdG9yLCBtZXRob2QsIHVybCkgeworICAvLyBjYWxsYmFjaworICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgdXJsKSB7CisgICAgcmV0dXJuIG5ldyBSZXF1ZXN0Q29uc3RydWN0b3IoJ0dFVCcsIG1ldGhvZCkuZW5kKHVybCk7CisgIH0KKworICAvLyB1cmwgZmlyc3QKKyAgaWYgKDIgPT0gYXJndW1lbnRzLmxlbmd0aCkgeworICAgIHJldHVybiBuZXcgUmVxdWVzdENvbnN0cnVjdG9yKCdHRVQnLCBtZXRob2QpOworICB9CisKKyAgcmV0dXJuIG5ldyBSZXF1ZXN0Q29uc3RydWN0b3IobWV0aG9kLCB1cmwpOworfQorCittb2R1bGUuZXhwb3J0cyA9IHJlcXVlc3Q7CisKK30se31dLDE2MjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7CisNCisvKioNCisgKiBFeHBvc2UgYEVtaXR0ZXJgLg0KKyAqLw0KKw0KK2lmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykgew0KKyAgbW9kdWxlLmV4cG9ydHMgPSBFbWl0dGVyOw0KK30NCisNCisvKioNCisgKiBJbml0aWFsaXplIGEgbmV3IGBFbWl0dGVyYC4NCisgKg0KKyAqIEBhcGkgcHVibGljDQorICovDQorDQorZnVuY3Rpb24gRW1pdHRlcihvYmopIHsNCisgIGlmIChvYmopIHJldHVybiBtaXhpbihvYmopOw0KK307DQorDQorLyoqDQorICogTWl4aW4gdGhlIGVtaXR0ZXIgcHJvcGVydGllcy4NCisgKg0KKyAqIEBwYXJhbSB7T2JqZWN0fSBvYmoNCisgKiBAcmV0dXJuIHtPYmplY3R9DQorICogQGFwaSBwcml2YXRlDQorICovDQorDQorZnVuY3Rpb24gbWl4aW4ob2JqKSB7DQorICBmb3IgKHZhciBrZXkgaW4gRW1pdHRlci5wcm90b3R5cGUpIHsNCisgICAgb2JqW2tleV0gPSBFbWl0dGVyLnByb3RvdHlwZVtrZXldOw0KKyAgfQ0KKyAgcmV0dXJuIG9iajsNCit9DQorDQorLyoqDQorICogTGlzdGVuIG9uIHRoZSBnaXZlbiBgZXZlbnRgIHdpdGggYGZuYC4NCisgKg0KKyAqIEBwYXJhbSB7U3RyaW5nfSBldmVudA0KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZuDQorICogQHJldHVybiB7RW1pdHRlcn0NCisgKiBAYXBpIHB1YmxpYw0KKyAqLw0KKw0KK0VtaXR0ZXIucHJvdG90eXBlLm9uID0NCitFbWl0dGVyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGZuKXsNCisgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTsNCisgICh0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdID0gdGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XSB8fCBbXSkNCisgICAgLnB1c2goZm4pOw0KKyAgcmV0dXJuIHRoaXM7DQorfTsNCisNCisvKioNCisgKiBBZGRzIGFuIGBldmVudGAgbGlzdGVuZXIgdGhhdCB3aWxsIGJlIGludm9rZWQgYSBzaW5nbGUNCisgKiB0aW1lIHRoZW4gYXV0b21hdGljYWxseSByZW1vdmVkLg0KKyAqDQorICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50DQorICogQHBhcmFtIHtGdW5jdGlvbn0gZm4NCisgKiBAcmV0dXJuIHtFbWl0dGVyfQ0KKyAqIEBhcGkgcHVibGljDQorICovDQorDQorRW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uKGV2ZW50LCBmbil7DQorICBmdW5jdGlvbiBvbigpIHsNCisgICAgdGhpcy5vZmYoZXZlbnQsIG9uKTsNCisgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsNCisgIH0NCisNCisgIG9uLmZuID0gZm47DQorICB0aGlzLm9uKGV2ZW50LCBvbik7DQorICByZXR1cm4gdGhpczsNCit9Ow0KKw0KKy8qKg0KKyAqIFJlbW92ZSB0aGUgZ2l2ZW4gY2FsbGJhY2sgZm9yIGBldmVudGAgb3IgYWxsDQorICogcmVnaXN0ZXJlZCBjYWxsYmFja3MuDQorICoNCisgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQNCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbg0KKyAqIEByZXR1cm4ge0VtaXR0ZXJ9DQorICogQGFwaSBwdWJsaWMNCisgKi8NCisNCitFbWl0dGVyLnByb3RvdHlwZS5vZmYgPQ0KK0VtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0NCitFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPQ0KK0VtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZm4pew0KKyAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IHt9Ow0KKw0KKyAgLy8gYWxsDQorICBpZiAoMCA9PSBhcmd1bWVudHMubGVuZ3RoKSB7DQorICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9Ow0KKyAgICByZXR1cm4gdGhpczsNCisgIH0NCisNCisgIC8vIHNwZWNpZmljIGV2ZW50DQorICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XTsNCisgIGlmICghY2FsbGJhY2tzKSByZXR1cm4gdGhpczsNCisNCisgIC8vIHJlbW92ZSBhbGwgaGFuZGxlcnMNCisgIGlmICgxID09IGFyZ3VtZW50cy5sZW5ndGgpIHsNCisgICAgZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07DQorICAgIHJldHVybiB0aGlzOw0KKyAgfQ0KKw0KKyAgLy8gcmVtb3ZlIHNwZWNpZmljIGhhbmRsZXINCisgIHZhciBjYjsNCisgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7DQorICAgIGNiID0gY2FsbGJhY2tzW2ldOw0KKyAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikgew0KKyAgICAgIGNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIH0NCisgIHJldHVybiB0aGlzOw0KK307DQorDQorLyoqDQorICogRW1pdCBgZXZlbnRgIHdpdGggdGhlIGdpdmVuIGFyZ3MuDQorICoNCisgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQNCisgKiBAcGFyYW0ge01peGVkfSAuLi4NCisgKiBAcmV0dXJuIHtFbWl0dGVyfQ0KKyAqLw0KKw0KK0VtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbihldmVudCl7DQorICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307DQorICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKQ0KKyAgICAsIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07DQorDQorICBpZiAoY2FsbGJhY2tzKSB7DQorICAgIGNhbGxiYWNrcyA9IGNhbGxiYWNrcy5zbGljZSgwKTsNCisgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNhbGxiYWNrcy5sZW5ndGg7IGkgPCBsZW47ICsraSkgew0KKyAgICAgIGNhbGxiYWNrc1tpXS5hcHBseSh0aGlzLCBhcmdzKTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgcmV0dXJuIHRoaXM7DQorfTsNCisNCisvKioNCisgKiBSZXR1cm4gYXJyYXkgb2YgY2FsbGJhY2tzIGZvciBgZXZlbnRgLg0KKyAqDQorICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50DQorICogQHJldHVybiB7QXJyYXl9DQorICogQGFwaSBwdWJsaWMNCisgKi8NCisNCitFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudCl7DQorICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307DQorICByZXR1cm4gdGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XSB8fCBbXTsNCit9Ow0KKw0KKy8qKg0KKyAqIENoZWNrIGlmIHRoaXMgZW1pdHRlciBoYXMgYGV2ZW50YCBoYW5kbGVycy4NCisgKg0KKyAqIEBwYXJhbSB7U3RyaW5nfSBldmVudA0KKyAqIEByZXR1cm4ge0Jvb2xlYW59DQorICogQGFwaSBwdWJsaWMNCisgKi8NCisNCitFbWl0dGVyLnByb3RvdHlwZS5oYXNMaXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudCl7DQorICByZXR1cm4gISEgdGhpcy5saXN0ZW5lcnMoZXZlbnQpLmxlbmd0aDsNCit9Ow0KKworfSx7fV19LHt9LFsxXSkoMSkKK30pOworCisKKyAvKmdsb2JhbCBKU09ORWRpdG9yKi8KKyd1c2Ugc3RyaWN0JzsKKword2luZG93LlN3YWdnZXJVaSA9IEJhY2tib25lLlJvdXRlci5leHRlbmQoeworCisgIGRvbV9pZDogJ3N3YWdnZXJfdWknLAorCisgIC8vIEF0dHJpYnV0ZXMKKyAgb3B0aW9uczogbnVsbCwKKyAgYXBpOiBudWxsLAorICBoZWFkZXJWaWV3OiBudWxsLAorICBtYWluVmlldzogbnVsbCwKKworICAvLyBTd2FnZ2VyVWkgYWNjZXB0cyBhbGwgdGhlIHNhbWUgb3B0aW9ucyBhcyBTd2FnZ2VyQXBpCisgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKKyAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKworICAgIGlmIChvcHRpb25zLmRlZmF1bHRNb2RlbFJlbmRlcmluZyAhPT0gJ21vZGVsJykgeworICAgICAgb3B0aW9ucy5kZWZhdWx0TW9kZWxSZW5kZXJpbmcgPSAnc2NoZW1hJzsKKyAgICB9CisKKyAgICBpZiAoIW9wdGlvbnMuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZCkgeworICAgICAgb3B0aW9ucy5oaWdobGlnaHRTaXplVGhyZXNob2xkID0gMTAwMDAwOworICAgIH0KKworICAgIC8vIEFsbG93IGRvbV9pZCB0byBiZSBvdmVycmlkZGVuCisgICAgaWYgKG9wdGlvbnMuZG9tX2lkKSB7CisgICAgICB0aGlzLmRvbV9pZCA9IG9wdGlvbnMuZG9tX2lkOworICAgICAgZGVsZXRlIG9wdGlvbnMuZG9tX2lkOworICAgIH0KKworICAgIGlmICghb3B0aW9ucy5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzKXsKKyAgICAgIG9wdGlvbnMuc3VwcG9ydGVkU3VibWl0TWV0aG9kcyA9IFsKKyAgICAgICAgJ2dldCcsCisgICAgICAgICdwdXQnLAorICAgICAgICAncG9zdCcsCisgICAgICAgICdkZWxldGUnLAorICAgICAgICAnaGVhZCcsCisgICAgICAgICdvcHRpb25zJywKKyAgICAgICAgJ3BhdGNoJworICAgICAgXTsKKyAgICB9CisKKyAgICBpZiAodHlwZW9mIG9wdGlvbnMub2F1dGgyUmVkaXJlY3RVcmwgPT09ICdzdHJpbmcnKSB7CisgICAgICB3aW5kb3cub0F1dGhSZWRpcmVjdFVybCA9IG9wdGlvbnMub2F1dGgyUmVkaXJlY3RVcmw7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGFuIGVtcHR5IGRpdiB3aGljaCBjb250YWlucyB0aGUgZG9tX2lkCisgICAgaWYgKCEgJCgnIycgKyB0aGlzLmRvbV9pZCkubGVuZ3RoKXsKKyAgICAgICQoJ2JvZHknKS5hcHBlbmQoJzxkaXYgaWQ9IicgKyB0aGlzLmRvbV9pZCArICciPjwvZGl2PicpIDsKKyAgICB9CisKKyAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworCisgICAgLy8gc2V0IG1hcmtlZCBvcHRpb25zCisgICAgbWFya2VkLnNldE9wdGlvbnMoe2dmbTogdHJ1ZX0pOworCisgICAgLy8gU2V0IHRoZSBjYWxsYmFja3MKKyAgICB2YXIgdGhhdCA9IHRoaXM7CisgICAgdGhpcy5vcHRpb25zLnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoYXQucmVuZGVyKCk7IH07CisgICAgdGhpcy5vcHRpb25zLnByb2dyZXNzID0gZnVuY3Rpb24oZCkgeyByZXR1cm4gdGhhdC5zaG93TWVzc2FnZShkKTsgfTsKKyAgICB0aGlzLm9wdGlvbnMuZmFpbHVyZSA9IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHRoYXQub25Mb2FkRmFpbHVyZShkKTsgfTsKKworICAgIC8vIENyZWF0ZSB2aWV3IHRvIGhhbmRsZSB0aGUgaGVhZGVyIGlucHV0cworICAgIHRoaXMuaGVhZGVyVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuSGVhZGVyVmlldyh7ZWw6ICQoJyNoZWFkZXInKX0pOworCisgICAgLy8gRXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgYmFzZVVybC9hcGlLZXkgaXMgZW50ZXJlZCBieSB1c2VyCisgICAgdGhpcy5oZWFkZXJWaWV3Lm9uKCd1cGRhdGUtc3dhZ2dlci11aScsIGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgIHJldHVybiB0aGF0LnVwZGF0ZVN3YWdnZXJVaShkYXRhKTsKKyAgICB9KTsKKworICAgIC8vIEpTb24gRWRpdG9yIGN1c3RvbSB0aGVtaW5nCisgICAgIEpTT05FZGl0b3IuZGVmYXVsdHMuaWNvbmxpYnMuc3dhZ2dlciA9IEpTT05FZGl0b3IuQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7CisgICAgICBtYXBwaW5nOiB7CisgICAgICAgIGNvbGxhcHNlOiAnY29sbGFwc2UnLAorICAgICAgICBleHBhbmQ6ICdleHBhbmQnCisgICAgICAgIH0sCisgICAgICBpY29uX3ByZWZpeDogJ3N3YWdnZXItJworICAgICAgfSk7CisKKyAgfSwKKworICAvLyBTZXQgYW4gb3B0aW9uIGFmdGVyIGluaXRpYWxpemluZworICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHsKKyAgICB0aGlzLm9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlOworICB9LAorCisgIC8vIEdldCB0aGUgdmFsdWUgb2YgYSBwcmV2aW91c2x5IHNldCBvcHRpb24KKyAgZ2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24pIHsKKyAgICByZXR1cm4gdGhpcy5vcHRpb25zW29wdGlvbl07CisgIH0sCisKKyAgLy8gRXZlbnQgaGFuZGxlciBmb3Igd2hlbiB1cmwva2V5IGlzIHJlY2VpdmVkIGZyb20gdXNlcgorICB1cGRhdGVTd2FnZ2VyVWk6IGZ1bmN0aW9uKGRhdGEpeworICAgIHRoaXMub3B0aW9ucy51cmwgPSBkYXRhLnVybDsKKyAgICB0aGlzLmxvYWQoKTsKKyAgfSwKKworICAvLyBDcmVhdGUgYW4gYXBpIGFuZCByZW5kZXIKKyAgbG9hZDogZnVuY3Rpb24oKXsKKyAgICAvLyBJbml0aWFsaXplIHRoZSBBUEkgb2JqZWN0CisgICAgaWYgKHRoaXMubWFpblZpZXcpIHsKKyAgICAgIHRoaXMubWFpblZpZXcuY2xlYXIoKTsKKyAgICB9CisKKyAgICBpZiAodGhpcy5hdXRoVmlldykgeworICAgICAgdGhpcy5hdXRoVmlldy5yZW1vdmUoKTsKKyAgICB9CisgICAgdmFyIHVybCA9IHRoaXMub3B0aW9ucy51cmw7CisgICAgaWYgKHVybCAmJiB1cmwuaW5kZXhPZignaHR0cCcpICE9PSAwKSB7CisgICAgICB1cmwgPSB0aGlzLmJ1aWxkVXJsKHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvU3RyaW5nKCksIHVybCk7CisgICAgfQorICAgIGlmKHRoaXMuYXBpKSB7CisgICAgICB0aGlzLm9wdGlvbnMuYXV0aG9yaXphdGlvbnMgPSB0aGlzLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5hdXRoejsKKyAgICB9CisgICAgdGhpcy5vcHRpb25zLnVybCA9IHVybDsKKyAgICB0aGlzLmhlYWRlclZpZXcudXBkYXRlKHVybCk7CisKKyAgICB0aGlzLmFwaSA9IG5ldyBTd2FnZ2VyQ2xpZW50KHRoaXMub3B0aW9ucyk7CisgIH0sCisKKyAgLy8gY29sbGFwc2UgYWxsIHNlY3Rpb25zCisgIGNvbGxhcHNlQWxsOiBmdW5jdGlvbigpeworICAgIERvY3MuY29sbGFwc2VFbmRwb2ludExpc3RGb3JSZXNvdXJjZSgnJyk7CisgIH0sCisKKyAgLy8gbGlzdCBvcGVyYXRpb25zIGZvciBhbGwgc2VjdGlvbnMKKyAgbGlzdEFsbDogZnVuY3Rpb24oKXsKKyAgICBEb2NzLmNvbGxhcHNlT3BlcmF0aW9uc0ZvclJlc291cmNlKCcnKTsKKyAgfSwKKworICAvLyBleHBhbmQgb3BlcmF0aW9ucyBmb3IgYWxsIHNlY3Rpb25zCisgIGV4cGFuZEFsbDogZnVuY3Rpb24oKXsKKyAgICBEb2NzLmV4cGFuZE9wZXJhdGlvbnNGb3JSZXNvdXJjZSgnJyk7CisgIH0sCisKKyAgLy8gVGhpcyBpcyBib3VuZCB0byBzdWNjZXNzIGhhbmRsZXIgZm9yIFN3YWdnZXJBcGkKKyAgLy8gIHNvIGl0IGdldHMgY2FsbGVkIHdoZW4gU3dhZ2dlckFwaSBjb21wbGV0ZXMgbG9hZGluZworICByZW5kZXI6IGZ1bmN0aW9uKCl7CisgICAgdmFyIGF1dGhzTW9kZWw7CisgICAgdGhpcy5zaG93TWVzc2FnZSgnRmluaXNoZWQgTG9hZGluZyBSZXNvdXJjZSBJbmZvcm1hdGlvbi4gUmVuZGVyaW5nIFN3YWdnZXIgVUkuLi4nKTsKKyAgICB0aGlzLm1haW5WaWV3ID0gbmV3IFN3YWdnZXJVaS5WaWV3cy5NYWluVmlldyh7CisgICAgICBtb2RlbDogdGhpcy5hcGksCisgICAgICBlbDogJCgnIycgKyB0aGlzLmRvbV9pZCksCisgICAgICBzd2FnZ2VyT3B0aW9uczogdGhpcy5vcHRpb25zLAorICAgICAgcm91dGVyOiB0aGlzCisgICAgfSkucmVuZGVyKCk7CisgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5hcGkuc2VjdXJpdHlEZWZpbml0aW9ucykpeworICAgICAgYXV0aHNNb2RlbCA9IF8ubWFwKHRoaXMuYXBpLnNlY3VyaXR5RGVmaW5pdGlvbnMsIGZ1bmN0aW9uIChhdXRoLCBuYW1lKSB7CisgICAgICAgIHZhciByZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0W25hbWVdID0gYXV0aDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0pOworICAgICAgdGhpcy5hdXRoVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuQXV0aEJ1dHRvblZpZXcoeworICAgICAgICBkYXRhOiBTd2FnZ2VyVWkudXRpbHMucGFyc2VTZWN1cml0eURlZmluaXRpb25zKGF1dGhzTW9kZWwpLAorICAgICAgICByb3V0ZXI6IHRoaXMKKyAgICAgIH0pOworICAgICAgJCgnI2F1dGhfY29udGFpbmVyJykuYXBwZW5kKHRoaXMuYXV0aFZpZXcucmVuZGVyKCkuZWwpOworICAgIH0KKyAgICB0aGlzLnNob3dNZXNzYWdlKCk7CisgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuZG9jRXhwYW5zaW9uKSB7CisgICAgICBjYXNlICdmdWxsJzoKKyAgICAgICAgdGhpcy5leHBhbmRBbGwoKTsgYnJlYWs7CisgICAgICBjYXNlICdsaXN0JzoKKyAgICAgICAgdGhpcy5saXN0QWxsKCk7IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHRoaXMucmVuZGVyR0ZNKCk7CisKKyAgICBpZiAodGhpcy5vcHRpb25zLm9uQ29tcGxldGUpeworICAgICAgdGhpcy5vcHRpb25zLm9uQ29tcGxldGUodGhpcy5hcGksIHRoaXMpOworICAgIH0KKworICAgIHNldFRpbWVvdXQoRG9jcy5zaGViYW5nLmJpbmQodGhpcyksIDEwMCk7CisgIH0sCisKKyAgYnVpbGRVcmw6IGZ1bmN0aW9uKGJhc2UsIHVybCl7CisgICAgaWYgKHVybC5pbmRleE9mKCcvJykgPT09IDApIHsKKyAgICAgIHZhciBwYXJ0cyA9IGJhc2Uuc3BsaXQoJy8nKTsKKyAgICAgIGJhc2UgPSBwYXJ0c1swXSArICcvLycgKyBwYXJ0c1syXTsKKyAgICAgIHJldHVybiBiYXNlICsgdXJsOworICAgIH0gZWxzZSB7CisgICAgICB2YXIgZW5kT2ZQYXRoID0gYmFzZS5sZW5ndGg7CisKKyAgICAgIGlmIChiYXNlLmluZGV4T2YoJz8nKSA+IC0xKXsKKyAgICAgICAgZW5kT2ZQYXRoID0gTWF0aC5taW4oZW5kT2ZQYXRoLCBiYXNlLmluZGV4T2YoJz8nKSk7CisgICAgICB9CisKKyAgICAgIGlmIChiYXNlLmluZGV4T2YoJyMnKSA+IC0xKXsKKyAgICAgICAgZW5kT2ZQYXRoID0gTWF0aC5taW4oZW5kT2ZQYXRoLCBiYXNlLmluZGV4T2YoJyMnKSk7CisgICAgICB9CisKKyAgICAgIGJhc2UgPSBiYXNlLnN1YnN0cmluZygwLCBlbmRPZlBhdGgpOworCisgICAgICBpZiAoYmFzZS5pbmRleE9mKCcvJywgYmFzZS5sZW5ndGggLSAxICkgIT09IC0xKXsKKyAgICAgICAgcmV0dXJuIGJhc2UgKyB1cmw7CisgICAgICB9CisKKyAgICAgIHJldHVybiBiYXNlICsgJy8nICsgdXJsOworICAgIH0KKyAgfSwKKworICAvLyBTaG93cyBtZXNzYWdlIG9uIHRvcGJhciBvZiB0aGUgdWkKKyAgc2hvd01lc3NhZ2U6IGZ1bmN0aW9uKGRhdGEpeworICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGRhdGEgPSAnJzsKKyAgICB9CisgICAgdmFyICRtc2diYXIgPSAkKCcjbWVzc2FnZS1iYXInKTsKKyAgICAkbXNnYmFyLnJlbW92ZUNsYXNzKCdtZXNzYWdlLWZhaWwnKTsKKyAgICAkbXNnYmFyLmFkZENsYXNzKCdtZXNzYWdlLXN1Y2Nlc3MnKTsKKyAgICAkbXNnYmFyLnRleHQoZGF0YSk7CisgICAgaWYod2luZG93LlN3YWdnZXJUcmFuc2xhdG9yKSB7CisgICAgICB3aW5kb3cuU3dhZ2dlclRyYW5zbGF0b3IudHJhbnNsYXRlKCRtc2diYXIpOworICAgIH0KKyAgfSwKKworICAvLyBzaG93cyBtZXNzYWdlIGluIHJlZAorICBvbkxvYWRGYWlsdXJlOiBmdW5jdGlvbihkYXRhKXsKKyAgICBpZiAoZGF0YSA9PT0gdW5kZWZpbmVkKSB7CisgICAgICBkYXRhID0gJyc7CisgICAgfQorICAgICQoJyNtZXNzYWdlLWJhcicpLnJlbW92ZUNsYXNzKCdtZXNzYWdlLXN1Y2Nlc3MnKTsKKyAgICAkKCcjbWVzc2FnZS1iYXInKS5hZGRDbGFzcygnbWVzc2FnZS1mYWlsJyk7CisKKyAgICB2YXIgdmFsID0gJCgnI21lc3NhZ2UtYmFyJykudGV4dChkYXRhKTsKKworICAgIGlmICh0aGlzLm9wdGlvbnMub25GYWlsdXJlKSB7CisgICAgICB0aGlzLm9wdGlvbnMub25GYWlsdXJlKGRhdGEpOworICAgIH0KKworICAgIHJldHVybiB2YWw7CisgIH0sCisKKyAgLy8gUmVuZGVycyBHRk0gZm9yIGVsZW1lbnRzIHdpdGggJ21hcmtkb3duJyBjbGFzcworICByZW5kZXJHRk06IGZ1bmN0aW9uKCl7CisgICAgJCgnLm1hcmtkb3duJykuZWFjaChmdW5jdGlvbigpeworICAgICAgJCh0aGlzKS5odG1sKG1hcmtlZCgkKHRoaXMpLmh0bWwoKSkpOworICAgIH0pOworCisgICAgJCgnLnByb3BEZXNjJywgJy5tb2RlbC1zaWduYXR1cmUgLmRlc2NyaXB0aW9uJykuZWFjaChmdW5jdGlvbiAoKSB7CisgICAgICAkKHRoaXMpLmh0bWwobWFya2VkKCQodGhpcykuaHRtbCgpKSkuYWRkQ2xhc3MoJ21hcmtkb3duJyk7CisgICAgfSk7CisgIH0KKworfSk7CisKK3dpbmRvdy5Td2FnZ2VyVWkuVmlld3MgPSB7fTsKK3dpbmRvdy5Td2FnZ2VyVWkuTW9kZWxzID0ge307Cit3aW5kb3cuU3dhZ2dlclVpLkNvbGxlY3Rpb25zID0ge307Cit3aW5kb3cuU3dhZ2dlclVpLnBhcnRpYWxzID0ge307Cit3aW5kb3cuU3dhZ2dlclVpLnV0aWxzID0ge307CisKKy8vIGRvbid0IGJyZWFrIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBhbmQgd2FybiB1c2VycyB0byB1cGdyYWRlIHRoZWlyIGNvZGUKKyhmdW5jdGlvbigpeworICB3aW5kb3cuYXV0aG9yaXphdGlvbnMgPSB7CisgICAgYWRkOiBmdW5jdGlvbigpIHsKKyAgICAgIHdhcm4oJ1VzaW5nIHdpbmRvdy5hdXRob3JpemF0aW9ucyBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIFN3YWdnZXJVaS5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkKCkuJyk7CisKKyAgICAgIGlmICh0eXBlb2Ygd2luZG93LnN3YWdnZXJVaSA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2luZG93LnN3YWdnZXJVaSBpcyBub3QgZGVmaW5lZCcpOworICAgICAgfQorCisgICAgICBpZiAod2luZG93LnN3YWdnZXJVaSBpbnN0YW5jZW9mIFN3YWdnZXJVaSkgeworICAgICAgICB3aW5kb3cuc3dhZ2dlclVpLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5hZGQuYXBwbHkod2luZG93LnN3YWdnZXJVaS5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgfQorICB9OworCisgIHdpbmRvdy5BcGlLZXlBdXRob3JpemF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgd2Fybignd2luZG93LkFwaUtleUF1dGhvcml6YXRpb24gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBTd2FnZ2VyQ2xpZW50LkFwaUtleUF1dGhvcml6YXRpb24uJyk7CisgICAgU3dhZ2dlckNsaWVudC5BcGlLZXlBdXRob3JpemF0aW9uLmFwcGx5KHdpbmRvdywgYXJndW1lbnRzKTsKKyAgfTsKKworICB3aW5kb3cuUGFzc3dvcmRBdXRob3JpemF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgd2Fybignd2luZG93LlBhc3N3b3JkQXV0aG9yaXphdGlvbiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIFN3YWdnZXJDbGllbnQuUGFzc3dvcmRBdXRob3JpemF0aW9uLicpOworICAgIFN3YWdnZXJDbGllbnQuUGFzc3dvcmRBdXRob3JpemF0aW9uLmFwcGx5KHdpbmRvdywgYXJndW1lbnRzKTsKKyAgfTsKKworICBmdW5jdGlvbiB3YXJuKG1lc3NhZ2UpIHsKKyAgICBpZiAoJ2NvbnNvbGUnIGluIHdpbmRvdyAmJiB0eXBlb2Ygd2luZG93LmNvbnNvbGUud2FybiA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpOworICAgIH0KKyAgfQorfSkoKTsKKworCisvLyBVTUQKKyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkgeworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKKyAgICAgICAgLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgorICAgICAgICBkZWZpbmUoWydiJ10sIGZ1bmN0aW9uIChiKSB7CisgICAgICAgICAgICByZXR1cm4gKHJvb3QuU3dhZ2dlclVpID0gZmFjdG9yeShiKSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CisgICAgICAgIC8vIE5vZGUuIERvZXMgbm90IHdvcmsgd2l0aCBzdHJpY3QgQ29tbW9uSlMsIGJ1dAorICAgICAgICAvLyBvbmx5IENvbW1vbkpTLWxpa2UgZW52aXJvbm1lbnRzIHRoYXQgc3VwcG9ydCBtb2R1bGUuZXhwb3J0cywKKyAgICAgICAgLy8gbGlrZSBOb2RlLgorICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnYicpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHMKKyAgICAgICAgcm9vdC5Td2FnZ2VyVWkgPSBmYWN0b3J5KHJvb3QuYik7CisgICAgfQorfSh0aGlzLCBmdW5jdGlvbiAoKSB7CisgICAgcmV0dXJuIFN3YWdnZXJVaTsKK30pKTsKKworJ3VzZSBzdHJpY3QnOworCit3aW5kb3cuU3dhZ2dlclVpLnV0aWxzID0geworICAgIHBhcnNlU2VjdXJpdHlEZWZpbml0aW9uczogZnVuY3Rpb24gKHNlY3VyaXR5LCBzZWN1cml0eURlZmluaXRpb25zKSB7CisgICAgICAgIHZhciBhdXRocyA9IE9iamVjdC5hc3NpZ24oe30sIHNlY3VyaXR5RGVmaW5pdGlvbnMpOworICAgICAgICB2YXIgb2F1dGgyQXJyID0gW107CisgICAgICAgIHZhciBhdXRoc0FyciA9IFtdOworICAgICAgICB2YXIgc2NvcGVzID0gW107CisgICAgICAgIHZhciB1dGlscyA9IHdpbmRvdy5Td2FnZ2VyVWkudXRpbHM7CisKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHNlY3VyaXR5KSkgeyByZXR1cm4gbnVsbDsgfQorCisgICAgICAgIHNlY3VyaXR5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHZhciBzaW5nbGVTZWN1cml0eSA9IHt9OworICAgICAgICAgICAgdmFyIHNpbmdsZU9hdXRoMlNlY3VyaXR5ID0ge307CisKKyAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpdGVtKSB7CisgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbVtrZXldKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWF1dGhzW2tleV0pIHsgY29udGludWU7IH0KKyAgICAgICAgICAgICAgICAgICAgYXV0aHNba2V5XSA9IGF1dGhzW2tleV0gfHwge307CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRoc1trZXldLnR5cGUgPT09ICdvYXV0aDInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldID0gT2JqZWN0LmFzc2lnbih7fSwgYXV0aHNba2V5XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldLnNjb3BlcyA9IE9iamVjdC5hc3NpZ24oe30sIGF1dGhzW2tleV0uc2NvcGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2luZ2xlT2F1dGgyU2VjdXJpdHlba2V5XS5zY29wZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVtrZXldLmluZGV4T2YoaSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldLnNjb3Blc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldLnNjb3BlcyA9IHV0aWxzLnBhcnNlT2F1dGgyU2NvcGVzKHNpbmdsZU9hdXRoMlNlY3VyaXR5W2tleV0uc2NvcGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlcyA9IF8ubWVyZ2Uoc2NvcGVzLCBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldLnNjb3Blcyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTZWN1cml0eVtrZXldID0gT2JqZWN0LmFzc2lnbih7fSwgYXV0aHNba2V5XSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVtrZXldLnR5cGUgPT09ICdvYXV0aDInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVPYXV0aDJTZWN1cml0eVtrZXldID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbVtrZXldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZU9hdXRoMlNlY3VyaXR5W2tleV0uc2NvcGVzID0gdXRpbHMucGFyc2VPYXV0aDJTY29wZXMoc2luZ2xlT2F1dGgyU2VjdXJpdHlba2V5XS5zY29wZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVzID0gXy5tZXJnZShzY29wZXMsIHNpbmdsZU9hdXRoMlNlY3VyaXR5W2tleV0uc2NvcGVzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNlY3VyaXR5W2tleV0gPSBpdGVtW2tleV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghXy5pc0VtcHR5KHNpbmdsZVNlY3VyaXR5KSkgeworICAgICAgICAgICAgICAgIGF1dGhzQXJyLnB1c2goc2luZ2xlU2VjdXJpdHkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIV8uaXNFbXB0eShzaW5nbGVPYXV0aDJTZWN1cml0eSkpeworICAgICAgICAgICAgICAgIG9hdXRoMkFyci5wdXNoKHNpbmdsZU9hdXRoMlNlY3VyaXR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGF1dGhzIDogYXV0aHNBcnIsCisgICAgICAgICAgICBvYXV0aDI6IG9hdXRoMkFyciwKKyAgICAgICAgICAgIHNjb3Blczogc2NvcGVzCisgICAgICAgIH07CisgICAgfSwKKworICAgIHBhcnNlT2F1dGgyU2NvcGVzOiBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICB2YXIgc2NvcGVzID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgdmFyIGtleTsKKworICAgICAgICBmb3IgKGtleSBpbiBzY29wZXMpIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtzY29wZToga2V5LCBkZXNjcmlwdGlvbjogc2NvcGVzW2tleV19KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIHNhbml0aXplOiBmdW5jdGlvbihodG1sKSB7CisgICAgICAgIC8vIFN0cmlwIHRoZSBzY3JpcHQgdGFncyBmcm9tIHRoZSBodG1sIGFuZCBpbmxpbmUgZXZlbmhhbmRsZXJzCisgICAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksICcnKTsKKyAgICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvKG9uXHcrPSJbXiJdKiIpKihvblx3Kz0nW14nXSonKSoob25cdys9XHcqXChcdypcKSkqL2dpLCAnJyk7CisKKyAgICAgICAgcmV0dXJuIGh0bWw7CisgICAgfQorfTsKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLk1vZGVscy5BcGlLZXlBdXRoTW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICAgICdpbic6ICcnLAorICAgICAgICBuYW1lOiAnJywKKyAgICAgICAgdGl0bGU6ICcnLAorICAgICAgICB2YWx1ZTogJycKKyAgICB9LAorCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLm9uKCdjaGFuZ2UnLCB0aGlzLnZhbGlkYXRlKTsKKyAgICB9LAorCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHZhbGlkID0gISF0aGlzLmdldCgndmFsdWUnKTsKKworICAgICAgICB0aGlzLnNldCgndmFsaWQnLCB2YWxpZCk7CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KK30pOworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuQXBpS2V5QXV0aFZpZXcgPSBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7IC8vIFRPRE86IGFwcGVuZCB0aGlzIHRvIGdsb2JhbCBTd2FnZ2VyVWkKKworICAgIGV2ZW50czogeworICAgICAgICAnY2hhbmdlIC5pbnB1dF9hcGlLZXlfZW50cnknOiAnYXBpS2V5Q2hhbmdlJworICAgIH0sCisKKyAgICBzZWxlY3RvcnM6IHsKKyAgICAgICAgYXBpa2V5SW5wdXQ6ICcuaW5wdXRfYXBpS2V5X2VudHJ5JworICAgIH0sCisKKyAgICB0ZW1wbGF0ZTogSGFuZGxlYmFycy50ZW1wbGF0ZXMuYXBpa2V5X2F1dGgsCisKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRzKSB7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdHMgfHwge307CisgICAgICAgIHRoaXMucm91dGVyID0gdGhpcy5vcHRpb25zLnJvdXRlcjsKKyAgICB9LAorCisgICAgcmVuZGVyOiBmdW5jdGlvbiAoKXsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRlbXBsYXRlKHRoaXMubW9kZWwudG9KU09OKCkpKTsKKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgYXBpS2V5Q2hhbmdlOiBmdW5jdGlvbiAoZSkgeworICAgICAgICB2YXIgdmFsID0gJChlLnRhcmdldCkudmFsKCk7CisgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgIHRoaXMuJCh0aGlzLnNlbGVjdG9ycy5hcGlrZXlJbnB1dCkucmVtb3ZlQ2xhc3MoJ2Vycm9yJyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm1vZGVsLnNldCgndmFsdWUnLCB2YWwpOworICAgIH0sCisKKyAgICBpc1ZhbGlkOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbGlkYXRlKCk7CisgICAgfSwKKworICAgIGhpZ2hsaWdodEludmFsaWQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgdGhpcy4kKHRoaXMuc2VsZWN0b3JzLmFwaWtleUlucHV0KS5hZGRDbGFzcygnZXJyb3InKTsKKyAgICAgICAgfQorICAgIH0KKworfSk7CisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5BdXRoQnV0dG9uVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKyAgICBldmVudHM6IHsKKyAgICAgICAgJ2NsaWNrIC5hdXRob3JpemVfX2J0bic6ICdhdXRob3JpemVCdG5DbGljaycKKyAgICB9LAorCisgICAgdHBsczogeworICAgICAgICBwb3B1cDogSGFuZGxlYmFycy50ZW1wbGF0ZXMucG9wdXAsCisgICAgICAgIGF1dGhCdG46IEhhbmRsZWJhcnMudGVtcGxhdGVzLmF1dGhfYnV0dG9uLAorICAgICAgICBhdXRoQnRuT3BlcmF0aW9uOiBIYW5kbGViYXJzLnRlbXBsYXRlcy5hdXRoX2J1dHRvbl9vcGVyYXRpb24KKyAgICB9LAorCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0cykgeworICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRzIHx8IHt9OworICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YSA9IHRoaXMub3B0aW9ucy5kYXRhIHx8IHt9OworICAgICAgICB0aGlzLmlzT3BlcmF0aW9uID0gdGhpcy5vcHRpb25zLmlzT3BlcmF0aW9uOworICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5tb2RlbCB8fCB7fTsKKyAgICAgICAgdGhpcy5yb3V0ZXIgPSB0aGlzLm9wdGlvbnMucm91dGVyOworICAgICAgICB0aGlzLmF1dGhzID0gdGhpcy5vcHRpb25zLmRhdGEub2F1dGgyLmNvbmNhdCh0aGlzLm9wdGlvbnMuZGF0YS5hdXRocyk7CisgICAgfSwKKworICAgIHJlbmRlcjogZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgdHBsTmFtZSA9IHRoaXMuaXNPcGVyYXRpb24gPyAnYXV0aEJ0bk9wZXJhdGlvbicgOiAnYXV0aEJ0bic7CisKKyAgICAgICAgdGhpcy4kYXV0aEVsID0gdGhpcy5yZW5kZXJBdXRocyh0aGlzLmF1dGhzKTsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRwbHNbdHBsTmFtZV0odGhpcy5tb2RlbCkpOworCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICBhdXRob3JpemVCdG5DbGljazogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgdmFyIGF1dGhzTW9kZWw7CisKKyAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgICAgIGF1dGhzTW9kZWwgPSB7CisgICAgICAgICAgICB0aXRsZTogJ0F2YWlsYWJsZSBhdXRob3JpemF0aW9ucycsCisgICAgICAgICAgICBjb250ZW50OiB0aGlzLiRhdXRoRWwKKyAgICAgICAgfTsKKworICAgICAgICAvLyBUaGUgY29udGVudCBvZiB0aGUgcG9wdXAgaXMgcmVtb3ZlZCBhbmQgYWxsIGV2ZW50cyB1bmJvdW5kIGFmdGVyIGNsaWNraW5nIHRoZSAnQ2FuY2VsJyBidXR0b24gb2YgdGhlIHBvcHVwLgorICAgICAgICAvLyBXZSdsbCBoYXZlIHRvIHJlLXJlbmRlciB0aGUgY29udGVudHMgYmVmb3JlIGNyZWF0aW5nIGEgbmV3IHBvcHVwIHZpZXcuCisgICAgICAgIHRoaXMucmVuZGVyKCk7CisKKyAgICAgICAgdGhpcy5wb3B1cCA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuUG9wdXBWaWV3KHttb2RlbDogYXV0aHNNb2RlbH0pOworICAgICAgICB0aGlzLnBvcHVwLnJlbmRlcigpOworICAgIH0sCisKKyAgICByZW5kZXJBdXRoczogZnVuY3Rpb24gKGF1dGhzKSB7CisgICAgICAgIHZhciAkZWwgPSAkKCc8ZGl2PicpOworICAgICAgICB2YXIgaXNMb2dvdXQgPSBmYWxzZTsKKworICAgICAgICBhdXRocy5mb3JFYWNoKGZ1bmN0aW9uIChhdXRoKSB7CisgICAgICAgICAgICB2YXIgYXV0aFZpZXcgPSBuZXcgU3dhZ2dlclVpLlZpZXdzLkF1dGhWaWV3KHtkYXRhOiBhdXRoLCByb3V0ZXI6IHRoaXMucm91dGVyfSk7CisgICAgICAgICAgICB2YXIgYXV0aEVsID0gYXV0aFZpZXcucmVuZGVyKCkuZWw7CisgICAgICAgICAgICAkZWwuYXBwZW5kKGF1dGhFbCk7CisgICAgICAgICAgICBpZiAoYXV0aFZpZXcuaXNMb2dvdXQpIHsKKyAgICAgICAgICAgICAgICBpc0xvZ291dCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIHRoaXMubW9kZWwuaXNMb2dvdXQgPSBpc0xvZ291dDsKKworICAgICAgICByZXR1cm4gJGVsOworICAgIH0KKworfSk7CisKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLkNvbGxlY3Rpb25zLkF1dGhzQ29sbGVjdGlvbiA9IEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICBjb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKKworICAgICAgICBhcmdzWzBdID0gdGhpcy5wYXJzZShhcmdzWzBdKTsKKworICAgICAgICBCYWNrYm9uZS5Db2xsZWN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpOworICAgIH0sCisKKyAgICBhZGQ6IGZ1bmN0aW9uIChtb2RlbCkgeworICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisKKyAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7CisgICAgICAgICAgICBhcmdzWzBdID0gXy5tYXAobW9kZWwsIGZ1bmN0aW9uKHZhbCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZU9uZSh2YWwpOworICAgICAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcmdzWzBdID0gdGhpcy5oYW5kbGVPbmUobW9kZWwpOworICAgICAgICB9CisKKyAgICAgICAgQmFja2JvbmUuQ29sbGVjdGlvbi5wcm90b3R5cGUuYWRkLmFwcGx5KHRoaXMsIGFyZ3MpOworICAgIH0sCisKKyAgICBoYW5kbGVPbmU6IGZ1bmN0aW9uIChtb2RlbCkgeworICAgICAgICB2YXIgcmVzdWx0ID0gbW9kZWw7CisKKyAgICAgICAgaWYgKCEgKG1vZGVsIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwpICkgeworICAgICAgICAgICAgc3dpdGNoIChtb2RlbC50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnb2F1dGgyJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN3YWdnZXJVaS5Nb2RlbHMuT2F1dGgyTW9kZWwobW9kZWwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdiYXNpYyc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTd2FnZ2VyVWkuTW9kZWxzLkJhc2ljQXV0aE1vZGVsKG1vZGVsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnYXBpS2V5JzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN3YWdnZXJVaS5Nb2RlbHMuQXBpS2V5QXV0aE1vZGVsKG1vZGVsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEJhY2tib25lLk1vZGVsKG1vZGVsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIGlzVmFsaWQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHZhbGlkID0gdHJ1ZTsKKworICAgICAgICB0aGlzLm1vZGVscy5mb3JFYWNoKGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgICAgICAgICBpZiAoIW1vZGVsLnZhbGlkYXRlKCkpIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gdmFsaWQ7CisgICAgfSwKKworICAgIGlzQXV0aG9yaXplZDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IHRoaXMud2hlcmUoeyBpc0xvZ291dDogdHJ1ZSB9KS5sZW5ndGg7CisgICAgfSwKKworICAgIGlzUGFydGlhbGx5QXV0aG9yaXplZDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gdGhpcy53aGVyZSh7IGlzTG9nb3V0OiB0cnVlIH0pLmxlbmd0aCA+IDA7CisgICAgfSwKKworICAgIHBhcnNlOiBmdW5jdGlvbiAoZGF0YSkgeworICAgICAgICB2YXIgYXV0aHogPSB7fTsKKworICAgICAgICBpZih0eXBlb2Ygd2luZG93LnN3YWdnZXJVaSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIGF1dGh6ID0gT2JqZWN0LmFzc2lnbih7fSwgd2luZG93LnN3YWdnZXJVaS5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYXV0aHopOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF8ubWFwKGRhdGEsIGZ1bmN0aW9uIChhdXRoLCBuYW1lKSB7CisgICAgICAgICAgICB2YXIgaXNCYXNpYyA9IGF1dGh6W25hbWVdICYmIGF1dGgudHlwZSA9PT0gJ2Jhc2ljJyAmJiBhdXRoeltuYW1lXS51c2VybmFtZSAmJiBhdXRoeltuYW1lXS5wYXNzd29yZDsKKworICAgICAgICAgICAgXy5leHRlbmQoYXV0aCwgeworICAgICAgICAgICAgICAgIHRpdGxlOiBuYW1lCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKGF1dGh6W25hbWVdIHx8IGlzQmFzaWMpIHsKKyAgICAgICAgICAgICAgICBfLmV4dGVuZChhdXRoLCB7CisgICAgICAgICAgICAgICAgICAgIGlzTG9nb3V0OiB0cnVlLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXNCYXNpYyA/IHVuZGVmaW5lZCA6IGF1dGh6W25hbWVdLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogaXNCYXNpYyA/IGF1dGh6W25hbWVdLnVzZXJuYW1lIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogaXNCYXNpYyA/IGF1dGh6W25hbWVdLnBhc3N3b3JkIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gYXV0aDsKKyAgICAgICAgfSk7CisgICAgfQorfSk7CisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5BdXRoc0NvbGxlY3Rpb25WaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0cykgeworICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRzIHx8IHt9OworICAgICAgICB0aGlzLm9wdGlvbnMuZGF0YSA9IHRoaXMub3B0aW9ucy5kYXRhIHx8IHt9OworICAgICAgICB0aGlzLnJvdXRlciA9IHRoaXMub3B0aW9ucy5yb3V0ZXI7CisKKyAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gbmV3IFN3YWdnZXJVaS5Db2xsZWN0aW9ucy5BdXRoc0NvbGxlY3Rpb24ob3B0cy5kYXRhKTsKKworICAgICAgICB0aGlzLiRpbm5lckVsID0gJCgnPGRpdj4nKTsKKyAgICAgICAgdGhpcy5hdXRoVmlld3MgPSBbXTsKKyAgICB9LAorCisgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uIChhdXRoKSB7CisgICAgICAgICAgICB0aGlzLnJlbmRlck9uZUF1dGgoYXV0aCk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIHRoaXMuJGVsLmh0bWwodGhpcy4kaW5uZXJFbC5odG1sKCkgPyB0aGlzLiRpbm5lckVsIDogJycpOworCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0sCisKKyAgICByZW5kZXJPbmVBdXRoOiBmdW5jdGlvbiAoYXV0aE1vZGVsKSB7CisgICAgICAgIHZhciBhdXRoVmlld0VsLCBhdXRoVmlldywgYXV0aFZpZXdOYW1lOworICAgICAgICB2YXIgdHlwZSA9IGF1dGhNb2RlbC5nZXQoJ3R5cGUnKTsKKworICAgICAgICBpZiAodHlwZSA9PT0gJ2FwaUtleScpIHsKKyAgICAgICAgICAgIGF1dGhWaWV3TmFtZSA9ICdBcGlLZXlBdXRoVmlldyc7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Jhc2ljJyAmJiB0aGlzLiRpbm5lckVsLmZpbmQoJy5iYXNpY19hdXRoX2NvbnRhaW5lcicpLmxlbmd0aCA9PT0gMCkgeworICAgICAgICAgICAgYXV0aFZpZXdOYW1lID0gJ0Jhc2ljQXV0aFZpZXcnOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYXV0aDInKSB7CisgICAgICAgICAgICBhdXRoVmlld05hbWUgPSAnT2F1dGgyVmlldyc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0aFZpZXdOYW1lKSB7CisgICAgICAgICAgICBhdXRoVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3NbYXV0aFZpZXdOYW1lXSh7bW9kZWw6IGF1dGhNb2RlbCwgcm91dGVyOiB0aGlzLnJvdXRlcn0pOworICAgICAgICAgICAgYXV0aFZpZXdFbCA9IGF1dGhWaWV3LnJlbmRlcigpLmVsOworICAgICAgICAgICAgdGhpcy5hdXRoVmlld3MucHVzaChhdXRoVmlldyk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLiRpbm5lckVsLmFwcGVuZChhdXRoVmlld0VsKTsKKyAgICB9LAorCisgICAgaGlnaGxpZ2h0SW52YWxpZDogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLmF1dGhWaWV3cy5mb3JFYWNoKGZ1bmN0aW9uICh2aWV3KSB7CisgICAgICAgICAgICB2aWV3LmhpZ2hsaWdodEludmFsaWQoKTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgfQorCit9KTsKKworJ3VzZSBzdHJpY3QnOworCisvKiBnbG9iYWwgcmVkaXJlY3RfdXJpOnRydWUgKi8KKy8qIGdsb2JhbCBjbGllbnRJZCAqLworLyogZ2xvYmFsIHNjb3BlU2VwYXJhdG9yICovCisvKiBnbG9iYWwgYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zICovCisvKiBnbG9iYWwgY2xpZW50U2VjcmV0ICovCisvKiBnbG9iYWwgb25PQXV0aENvbXBsZXRlICovCisvKiBnbG9iYWwgcmVhbG0gKi8KKy8qanNoaW50IHVudXNlZDpmYWxzZSovCisKK1N3YWdnZXJVaS5WaWV3cy5BdXRoVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKyAgICBldmVudHM6IHsKKyAgICAgICAgJ2NsaWNrIC5hdXRoX3N1Ym1pdF9fYnV0dG9uJzogJ2F1dGhvcml6ZUNsaWNrJywKKyAgICAgICAgJ2NsaWNrIC5hdXRoX2xvZ291dF9fYnV0dG9uJzogJ2xvZ291dENsaWNrJworICAgIH0sCisKKyAgICB0cGxzOiB7CisgICAgICAgIG1haW46IEhhbmRsZWJhcnMudGVtcGxhdGVzLmF1dGhfdmlldworICAgIH0sCisKKyAgICBzZWxlY3RvcnM6IHsKKyAgICAgICAgaW5uZXJFbDogJy5hdXRoX2lubmVyJywKKyAgICAgICAgYXV0aEJ0bjogJy5hdXRoX3N1Ym1pdF9fYnV0dG9uJworICAgIH0sCisKKyAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRzKSB7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdHMgfHwge307CisgICAgICAgIG9wdHMuZGF0YSA9IG9wdHMuZGF0YSB8fCB7fTsKKyAgICAgICAgdGhpcy5yb3V0ZXIgPSB0aGlzLm9wdGlvbnMucm91dGVyOworCisgICAgICAgIHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuQXV0aHNDb2xsZWN0aW9uVmlldyh7ZGF0YTogb3B0cy5kYXRhfSk7CisKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRwbHMubWFpbih7CisgICAgICAgICAgICBpc0xvZ291dDogdGhpcy5hdXRoc0NvbGxlY3Rpb25WaWV3LmNvbGxlY3Rpb24uaXNBdXRob3JpemVkKCksCisgICAgICAgICAgICBpc0F1dGhvcml6ZWQ6IHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmlzUGFydGlhbGx5QXV0aG9yaXplZCgpCisgICAgICAgIH0pKTsKKyAgICAgICAgdGhpcy4kaW5uZXJFbCA9IHRoaXMuJCh0aGlzLnNlbGVjdG9ycy5pbm5lckVsKTsKKyAgICAgICAgdGhpcy5pc0xvZ291dCA9IHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmlzUGFydGlhbGx5QXV0aG9yaXplZCgpOworICAgIH0sCisKKyAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy4kaW5uZXJFbC5odG1sKHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5yZW5kZXIoKS5lbCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIGF1dGhvcml6ZUNsaWNrOiBmdW5jdGlvbiAoZSkgeworICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisKKyAgICAgICAgaWYgKHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgdGhpcy5hdXRob3JpemUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5oaWdobGlnaHRJbnZhbGlkKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgYXV0aG9yaXplOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24gKGF1dGgpIHsKKyAgICAgICAgICAgIHZhciBrZXlBdXRoLCBiYXNpY0F1dGg7CisgICAgICAgICAgICB2YXIgdHlwZSA9IGF1dGguZ2V0KCd0eXBlJyk7CisKKyAgICAgICAgICAgIGlmICh0eXBlID09PSAnYXBpS2V5JykgeworICAgICAgICAgICAgICAgIGtleUF1dGggPSBuZXcgU3dhZ2dlckNsaWVudC5BcGlLZXlBdXRob3JpemF0aW9uKAorICAgICAgICAgICAgICAgICAgICBhdXRoLmdldCgnbmFtZScpLAorICAgICAgICAgICAgICAgICAgICBhdXRoLmdldCgndmFsdWUnKSwKKyAgICAgICAgICAgICAgICAgICAgYXV0aC5nZXQoJ2luJykKKyAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuYXBpLmNsaWVudEF1dGhvcml6YXRpb25zLmFkZChhdXRoLmdldCgndGl0bGUnKSwga2V5QXV0aCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdiYXNpYycpIHsKKyAgICAgICAgICAgICAgICBiYXNpY0F1dGggPSBuZXcgU3dhZ2dlckNsaWVudC5QYXNzd29yZEF1dGhvcml6YXRpb24oYXV0aC5nZXQoJ3VzZXJuYW1lJyksIGF1dGguZ2V0KCdwYXNzd29yZCcpKTsKKyAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkKGF1dGguZ2V0KCd0aXRsZScpLCBiYXNpY0F1dGgpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2F1dGgyJykgeworICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlT2F1dGgyTG9naW4oYXV0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sIHRoaXMpOworCisgICAgICAgIHRoaXMucm91dGVyLmxvYWQoKTsKKyAgICB9LAorCisgICAgbG9nb3V0Q2xpY2s6IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKworICAgICAgICB0aGlzLmF1dGhzQ29sbGVjdGlvblZpZXcuY29sbGVjdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChhdXRoKSB7CisgICAgICAgICAgICB3aW5kb3cuc3dhZ2dlclVpLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5yZW1vdmUoYXV0aC5nZXQoJ3RpdGxlJykpOworICAgICAgICB9KTsKKworICAgICAgICB0aGlzLnJvdXRlci5sb2FkKCk7CisgICAgfSwKKworICAgIC8vIHRha2VuIGZyb20gbGliL3N3YWdnZXItb2F1dGguanMKKyAgICBoYW5kbGVPYXV0aDJMb2dpbjogZnVuY3Rpb24gKGF1dGgpIHsKKyAgICAgICAgdmFyIGhvc3QgPSB3aW5kb3cubG9jYXRpb247CisgICAgICAgIHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygwLCBsb2NhdGlvbi5wYXRobmFtZS5sYXN0SW5kZXhPZignLycpKTsKKyAgICAgICAgdmFyIGRlZmF1bHRSZWRpcmVjdFVybCA9IGhvc3QucHJvdG9jb2wgKyAnLy8nICsgaG9zdC5ob3N0ICsgcGF0aG5hbWUgKyAnL28yYy5odG1sJzsKKyAgICAgICAgdmFyIHJlZGlyZWN0VXJsID0gd2luZG93Lm9BdXRoUmVkaXJlY3RVcmwgfHwgZGVmYXVsdFJlZGlyZWN0VXJsOworICAgICAgICB2YXIgdXJsID0gbnVsbDsKKyAgICAgICAgdmFyIHNjb3BlcyA9IF8ubWFwKGF1dGguZ2V0KCdzY29wZXMnKSwgZnVuY3Rpb24gKHNjb3BlKSB7CisgICAgICAgICAgICBpZihzY29wZS5jaGVja2VkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnNjb3BlOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IHdpbmRvdy5zd2FnZ2VyVWlBdXRoIHx8ICh3aW5kb3cuc3dhZ2dlclVpQXV0aCA9IHt9KTsKKyAgICAgICAgdmFyIHN0YXRlLCBkZXRzLCBlcDsKKyAgICAgICAgY29udGFpbmVyLk9BdXRoU2NoZW1lS2V5ID0gYXV0aC5nZXQoJ3RpdGxlJyk7CisKKyAgICAgICAgd2luZG93LmVuYWJsZWRTY29wZXMgPSBzY29wZXM7CisgICAgICAgIHZhciBmbG93ID0gYXV0aC5nZXQoJ2Zsb3cnKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYWNjZXNzIHRva2VuIHBhcmFtZXRlciByZXR1cm5lZCBieSB0aGUgc2VydmVyLgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0gZGV0cworICAgICAgICAgKiAgICAgVGhlIGF1dGhvcmlzYXRpb24gc2NoZW1lIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAqIEByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGFjY2VzcyB0b2tlbiBwYXJhbWV0ZXIKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGdldFRva2VuTmFtZShkZXRzKSB7CisgICAgICAgICAgICByZXR1cm4gZGV0cy52ZW5kb3JFeHRlbnNpb25zWyd4LXRva2VuTmFtZSddIHx8IGRldHMudG9rZW5OYW1lOworICAgICAgICB9CisKKyAgICAgICAgaWYoYXV0aC5nZXQoJ3R5cGUnKSA9PT0gJ29hdXRoMicgJiYgZmxvdyAmJiAoZmxvdyA9PT0gJ2ltcGxpY2l0JyB8fCBmbG93ID09PSAnYWNjZXNzQ29kZScpKSB7CisgICAgICAgICAgICBkZXRzID0gYXV0aC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgdXJsID0gZGV0cy5hdXRob3JpemF0aW9uVXJsICsgJz9yZXNwb25zZV90eXBlPScgKyAoZmxvdyA9PT0gJ2ltcGxpY2l0JyA/ICd0b2tlbicgOiAnY29kZScpOworICAgICAgICAgICAgY29udGFpbmVyLnRva2VuTmFtZSA9IGdldFRva2VuTmFtZShkZXRzKSB8fCAnYWNjZXNzX3Rva2VuJzsKKyAgICAgICAgICAgIGNvbnRhaW5lci50b2tlblVybCA9IChmbG93ID09PSAnYWNjZXNzQ29kZScgPyBkZXRzLnRva2VuVXJsIDogbnVsbCk7CisgICAgICAgICAgICBzdGF0ZSA9IGNvbnRhaW5lci5PQXV0aFNjaGVtZUtleTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGF1dGguZ2V0KCd0eXBlJykgPT09ICdvYXV0aDInICYmIGZsb3cgJiYgKGZsb3cgPT09ICdhcHBsaWNhdGlvbicpKSB7CisgICAgICAgICAgICBkZXRzID0gYXV0aC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgY29udGFpbmVyLnRva2VuTmFtZSA9IGdldFRva2VuTmFtZShkZXRzKSB8fCAnYWNjZXNzX3Rva2VuJzsKKyAgICAgICAgICAgIHRoaXMuY2xpZW50Q3JlZGVudGlhbHNGbG93KHNjb3BlcywgZGV0cywgY29udGFpbmVyLk9BdXRoU2NoZW1lS2V5KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGF1dGguZ2V0KCd0eXBlJykgPT09ICdvYXV0aDInICYmIGZsb3cgJiYgKGZsb3cgPT09ICdwYXNzd29yZCcpKSB7CisgICAgICAgICAgICBkZXRzID0gYXV0aC5hdHRyaWJ1dGVzOworICAgICAgICAgICAgY29udGFpbmVyLnRva2VuTmFtZSA9IGdldFRva2VuTmFtZShkZXRzKSB8fCAnYWNjZXNzX3Rva2VuJzsKKyAgICAgICAgICAgIHRoaXMucGFzc3dvcmRGbG93KHNjb3BlcywgZGV0cywgY29udGFpbmVyLk9BdXRoU2NoZW1lS2V5KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGF1dGguZ2V0KCdncmFudFR5cGVzJykpIHsKKyAgICAgICAgICAgIC8vIDEuMiBzdXBwb3J0CisgICAgICAgICAgICB2YXIgbyA9IGF1dGguZ2V0KCdncmFudFR5cGVzJyk7CisgICAgICAgICAgICBmb3IodmFyIHQgaW4gbykgeworICAgICAgICAgICAgICAgIGlmKG8uaGFzT3duUHJvcGVydHkodCkgJiYgdCA9PT0gJ2ltcGxpY2l0JykgeworICAgICAgICAgICAgICAgICAgICBkZXRzID0gb1t0XTsKKyAgICAgICAgICAgICAgICAgICAgZXAgPSBkZXRzLmxvZ2luRW5kcG9pbnQudXJsOworICAgICAgICAgICAgICAgICAgICB1cmwgPSBkZXRzLmxvZ2luRW5kcG9pbnQudXJsICsgJz9yZXNwb25zZV90eXBlPXRva2VuJzsKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnRva2VuTmFtZSA9IGdldFRva2VuTmFtZShkZXRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoby5oYXNPd25Qcm9wZXJ0eSh0KSAmJiB0ID09PSAnYWNjZXNzQ29kZScpIHsKKyAgICAgICAgICAgICAgICAgICAgZGV0cyA9IG9bdF07CisgICAgICAgICAgICAgICAgICAgIGVwID0gZGV0cy50b2tlblJlcXVlc3RFbmRwb2ludC51cmw7CisgICAgICAgICAgICAgICAgICAgIHVybCA9IGRldHMudG9rZW5SZXF1ZXN0RW5kcG9pbnQudXJsICsgJz9yZXNwb25zZV90eXBlPWNvZGUnOworICAgICAgICAgICAgICAgICAgICBjb250YWluZXIudG9rZW5OYW1lID0gZ2V0VG9rZW5OYW1lKGRldHMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlZGlyZWN0X3VyaSA9IHJlZGlyZWN0VXJsOworCisgICAgICAgIHVybCArPSAnJnJlZGlyZWN0X3VyaT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0VXJsKTsKKyAgICAgICAgdXJsICs9ICcmcmVhbG09JyArIGVuY29kZVVSSUNvbXBvbmVudChyZWFsbSk7CisgICAgICAgIHVybCArPSAnJmNsaWVudF9pZD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGNsaWVudElkKTsKKyAgICAgICAgdXJsICs9ICcmc2NvcGU9JyArIGVuY29kZVVSSUNvbXBvbmVudChzY29wZXMuam9pbihzY29wZVNlcGFyYXRvcikpOworICAgICAgICB1cmwgKz0gJyZzdGF0ZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0YXRlKTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGFkZGl0aW9uYWxRdWVyeVN0cmluZ1BhcmFtcykgeworICAgICAgICAgICAgdXJsICs9ICcmJyArIGtleSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChhZGRpdGlvbmFsUXVlcnlTdHJpbmdQYXJhbXNba2V5XSk7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cub3Blbih1cmwpOworICAgIH0sCisKKyAgICAvLyB0YWtlbiBmcm9tIGxpYi9zd2FnZ2VyLW9hdXRoLmpzCisgICAgY2xpZW50Q3JlZGVudGlhbHNGbG93OiBmdW5jdGlvbiAoc2NvcGVzLCBvYXV0aCwgT0F1dGhTY2hlbWVLZXkpIHsKKyAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblJlcXVlc3Qoc2NvcGVzLCBvYXV0aCwgT0F1dGhTY2hlbWVLZXksICdjbGllbnRfY3JlZGVudGlhbHMnKTsKKyAgICB9LAorCisgICAgcGFzc3dvcmRGbG93OiBmdW5jdGlvbiAoc2NvcGVzLCBvYXV0aCwgT0F1dGhTY2hlbWVLZXkpIHsKKyAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblJlcXVlc3Qoc2NvcGVzLCBvYXV0aCwgT0F1dGhTY2hlbWVLZXksICdwYXNzd29yZCcsIHsKKyAgICAgICAgICAgICd1c2VybmFtZSc6IG9hdXRoLnVzZXJuYW1lLAorICAgICAgICAgICAgJ3Bhc3N3b3JkJzogb2F1dGgucGFzc3dvcmQKKyAgICAgICAgfSk7CisgICAgfSwKKworICAgIGFjY2Vzc1Rva2VuUmVxdWVzdDogZnVuY3Rpb24gKHNjb3Blcywgb2F1dGgsIE9BdXRoU2NoZW1lS2V5LCBncmFudFR5cGUsIHBhcmFtcykgeworICAgICAgICBwYXJhbXMgPSAkLmV4dGVuZCh7fSwgeworICAgICAgICAgICAgJ3Njb3BlJzogc2NvcGVzLmpvaW4oJyAnKSwKKyAgICAgICAgICAgICdncmFudF90eXBlJzogZ3JhbnRUeXBlCisgICAgICAgIH0sIHBhcmFtcyk7CisKKyAgICAgICAgdmFyIGhlYWRlcnM9IHt9OworCisgICAgICAgIHN3aXRjaCAob2F1dGguY2xpZW50QXV0aGVudGljYXRpb25UeXBlKSB7CisgICAgICAgICAgICBjYXNlICdiYXNpYyc6CisgICAgICAgICAgICAgICAgaGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBidG9hKG9hdXRoLmNsaWVudElkICsgJzonICsgb2F1dGguY2xpZW50U2VjcmV0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QtYm9keSc6CisgICAgICAgICAgICAgICAgcGFyYW1zLmNsaWVudF9pZCA9IG9hdXRoLmNsaWVudElkOworICAgICAgICAgICAgICAgIHBhcmFtcy5jbGllbnRfc2VjcmV0ID0gb2F1dGguY2xpZW50U2VjcmV0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHVybCA6IG9hdXRoLnRva2VuVXJsLAorICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAorICAgICAgICAgICAgZGF0YTogcGFyYW1zLAorICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycywKKyAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG9uT0F1dGhDb21wbGV0ZShkYXRhLCBPQXV0aFNjaGVtZUtleSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uICgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb25PQXV0aENvbXBsZXRlKCcnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfSk7CisKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLk1vZGVscy5CYXNpY0F1dGhNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgdXNlcm5hbWU6ICcnLAorICAgICAgICBwYXNzd29yZDogJycsCisgICAgICAgIHRpdGxlOiAnYmFzaWMnCisgICAgfSwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy5vbignY2hhbmdlJywgdGhpcy52YWxpZGF0ZSk7CisgICAgfSwKKworICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciB2YWxpZCA9ICEhdGhpcy5nZXQoJ3Bhc3N3b3JkJykgJiYgISF0aGlzLmdldCgndXNlcm5hbWUnKTsKKworICAgICAgICB0aGlzLnNldCgndmFsaWQnLCB2YWxpZCk7CisKKyAgICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KK30pOworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuQmFzaWNBdXRoVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uIChvcHRzKSB7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdHMgfHwge307CisgICAgICAgIHRoaXMucm91dGVyID0gdGhpcy5vcHRpb25zLnJvdXRlcjsKKyAgICB9LAorCisgICAgZXZlbnRzOiB7CisgICAgICAgICdjaGFuZ2UgLmF1dGhfaW5wdXQnOiAnaW5wdXRDaGFuZ2UnCisgICAgfSwKKworICAgIHNlbGVjdG9yczogeworICAgICAgICB1c2VybmFtZUlucHV0OiAnLmJhc2ljX2F1dGhfX3VzZXJuYW1lJywKKyAgICAgICAgcGFzc3dvcmRJbnB1dDogJy5iYXNpY19hdXRoX19wYXNzd29yZCcKKyAgICB9LAorCisgICAgY2xzOiB7CisgICAgICAgIGVycm9yOiAnZXJyb3InCisgICAgfSwKKworICAgIHRlbXBsYXRlOiBIYW5kbGViYXJzLnRlbXBsYXRlcy5iYXNpY19hdXRoLAorCisgICAgcmVuZGVyOiBmdW5jdGlvbigpeworICAgICAgICAkKHRoaXMuZWwpLmh0bWwodGhpcy50ZW1wbGF0ZSh0aGlzLm1vZGVsLnRvSlNPTigpKSk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIGlucHV0Q2hhbmdlOiBmdW5jdGlvbiAoZSkgeworICAgICAgICB2YXIgJGVsID0gJChlLnRhcmdldCk7CisgICAgICAgIHZhciB2YWwgPSAkZWwudmFsKCk7CisgICAgICAgIHZhciBhdHRyID0gJGVsLnByb3AoJ25hbWUnKTsKKworICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAkZWwucmVtb3ZlQ2xhc3ModGhpcy5jbHMuZXJyb3IpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5tb2RlbC5zZXQoYXR0ciwgdmFsKTsKKyAgICB9LAorCisgICAgaXNWYWxpZDogZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC52YWxpZGF0ZSgpOworICAgIH0sCisKKyAgICBoaWdobGlnaHRJbnZhbGlkOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlmICghdGhpcy5tb2RlbC5nZXQoJ3VzZXJuYW1lJykpIHsKKyAgICAgICAgICAgIHRoaXMuJCh0aGlzLnNlbGVjdG9ycy51c2VybmFtZUlucHV0KS5hZGRDbGFzcyh0aGlzLmNscy5lcnJvcik7CisgICAgICAgIH0KKyAgICB9Cit9KTsKKworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuQ29udGVudFR5cGVWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHt9LAorCisgIHJlbmRlcjogZnVuY3Rpb24oKXsKKyAgCXRoaXMubW9kZWwuY29udGVudFR5cGVJZCA9ICdjdCcgKyBNYXRoLnJhbmRvbSgpOworICAgICQodGhpcy5lbCkuaHRtbChIYW5kbGViYXJzLnRlbXBsYXRlcy5jb250ZW50X3R5cGUodGhpcy5tb2RlbCkpOworICAgIHJldHVybiB0aGlzOworICB9Cit9KTsKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLlZpZXdzLkhlYWRlclZpZXcgPSBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CisgIGV2ZW50czogeworICAgICdjbGljayAjc2hvdy1wZXQtc3RvcmUtaWNvbicgICAgOiAnc2hvd1BldFN0b3JlJywKKyAgICAnY2xpY2sgI2V4cGxvcmUnICAgICAgICAgICAgICAgIDogJ3Nob3dDdXN0b20nLAorICAgICdzdWJtaXQgI2FwaV9zZWxlY3RvcicgICAgICAgICAgOiAnc2hvd0N1c3RvbScsCisgICAgJ2tleXVwICNpbnB1dF9iYXNlVXJsJyAgICAgICAgICA6ICdzaG93Q3VzdG9tT25LZXl1cCcsCisgICAgJ2tleXVwICNpbnB1dF9hcGlLZXknICAgICAgICAgICA6ICdzaG93Q3VzdG9tT25LZXl1cCcKKyAgfSwKKworICBpbml0aWFsaXplOiBmdW5jdGlvbigpe30sCisKKyAgc2hvd1BldFN0b3JlOiBmdW5jdGlvbigpeworICAgIHRoaXMudHJpZ2dlcigndXBkYXRlLXN3YWdnZXItdWknLCB7CisgICAgICB1cmw6J2h0dHA6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YyL3N3YWdnZXIuanNvbicKKyAgICB9KTsKKyAgfSwKKworICBzaG93Q3VzdG9tT25LZXl1cDogZnVuY3Rpb24oZSl7CisgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHsKKyAgICAgIHRoaXMuc2hvd0N1c3RvbSgpOworICAgIH0KKyAgfSwKKworICBzaG93Q3VzdG9tOiBmdW5jdGlvbihlKXsKKyAgICBpZiAoZSkgeworICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIH0KKworICAgIHRoaXMudHJpZ2dlcigndXBkYXRlLXN3YWdnZXItdWknLCB7CisgICAgICB1cmw6ICQoJyNpbnB1dF9iYXNlVXJsJykudmFsKCkKKyAgICB9KTsKKyAgfSwKKworICB1cGRhdGU6IGZ1bmN0aW9uKHVybCwgYXBpS2V5LCB0cmlnZ2VyKXsKKyAgICBpZiAodHJpZ2dlciA9PT0gdW5kZWZpbmVkKSB7CisgICAgICB0cmlnZ2VyID0gZmFsc2U7CisgICAgfQorCisgICAgJCgnI2lucHV0X2Jhc2VVcmwnKS52YWwodXJsKTsKKworICAgIGlmICh0cmlnZ2VyKSB7CisgICAgICB0aGlzLnRyaWdnZXIoJ3VwZGF0ZS1zd2FnZ2VyLXVpJywge3VybDp1cmx9KTsKKyAgICB9CisgIH0KK30pOworCisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5NYWluVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKyAgYXBpc1NvcnRlciA6IHsKKyAgICBhbHBoYSAgIDogZnVuY3Rpb24oYSxiKXsgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7IH0KKyAgfSwKKyAgb3BlcmF0aW9uc1NvcnRlcnMgOiB7CisgICAgYWxwaGEgICA6IGZ1bmN0aW9uKGEsYil7IHJldHVybiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpOyB9LAorICAgIG1ldGhvZCAgOiBmdW5jdGlvbihhLGIpeyByZXR1cm4gYS5tZXRob2QubG9jYWxlQ29tcGFyZShiLm1ldGhvZCk7IH0KKyAgfSwKKyAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0cyl7CisgICAgdmFyIHNvcnRlck9wdGlvbiwgc29ydGVyRm4sIGtleSwgdmFsdWU7CisgICAgb3B0cyA9IG9wdHMgfHwge307CisKKyAgICB0aGlzLnJvdXRlciA9IG9wdHMucm91dGVyOworCisgICAgLy8gU29ydCBBUElzCisgICAgaWYgKG9wdHMuc3dhZ2dlck9wdGlvbnMuYXBpc1NvcnRlcikgeworICAgICAgc29ydGVyT3B0aW9uID0gb3B0cy5zd2FnZ2VyT3B0aW9ucy5hcGlzU29ydGVyOworICAgICAgaWYgKF8uaXNGdW5jdGlvbihzb3J0ZXJPcHRpb24pKSB7CisgICAgICAgIHNvcnRlckZuID0gc29ydGVyT3B0aW9uOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgc29ydGVyRm4gPSB0aGlzLmFwaXNTb3J0ZXJbc29ydGVyT3B0aW9uXTsKKyAgICAgIH0KKyAgICAgIGlmIChfLmlzRnVuY3Rpb24oc29ydGVyRm4pKSB7CisgICAgICAgIHRoaXMubW9kZWwuYXBpc0FycmF5LnNvcnQoc29ydGVyRm4pOworICAgICAgfQorICAgIH0KKyAgICAvLyBTb3J0IG9wZXJhdGlvbnMgb2YgZWFjaCBBUEkKKyAgICBpZiAob3B0cy5zd2FnZ2VyT3B0aW9ucy5vcGVyYXRpb25zU29ydGVyKSB7CisgICAgICBzb3J0ZXJPcHRpb24gPSBvcHRzLnN3YWdnZXJPcHRpb25zLm9wZXJhdGlvbnNTb3J0ZXI7CisgICAgICBpZiAoXy5pc0Z1bmN0aW9uKHNvcnRlck9wdGlvbikpIHsKKyAgICAgICAgc29ydGVyRm4gPSBzb3J0ZXJPcHRpb247CisgICAgICB9IGVsc2UgeworICAgICAgICBzb3J0ZXJGbiA9IHRoaXMub3BlcmF0aW9uc1NvcnRlcnNbc29ydGVyT3B0aW9uXTsKKyAgICAgIH0KKyAgICAgIGlmIChfLmlzRnVuY3Rpb24oc29ydGVyRm4pKSB7CisgICAgICAgIGZvciAoa2V5IGluIHRoaXMubW9kZWwuYXBpc0FycmF5KSB7CisgICAgICAgICAgdGhpcy5tb2RlbC5hcGlzQXJyYXlba2V5XS5vcGVyYXRpb25zQXJyYXkuc29ydChzb3J0ZXJGbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyBzZXQgdXAgdGhlIFVJIGZvciBpbnB1dAorICAgIHRoaXMubW9kZWwuYXV0aHMgPSBbXTsKKworICAgIGZvciAoa2V5IGluIHRoaXMubW9kZWwuc2VjdXJpdHlEZWZpbml0aW9ucykgeworICAgICAgdmFsdWUgPSB0aGlzLm1vZGVsLnNlY3VyaXR5RGVmaW5pdGlvbnNba2V5XTsKKworICAgICAgdGhpcy5tb2RlbC5hdXRocy5wdXNoKHsKKyAgICAgICAgbmFtZToga2V5LAorICAgICAgICB0eXBlOiB2YWx1ZS50eXBlLAorICAgICAgICB2YWx1ZTogdmFsdWUKKyAgICAgIH0pOworICAgIH0KKworICAgIGlmICgndmFsaWRhdG9yVXJsJyBpbiBvcHRzLnN3YWdnZXJPcHRpb25zKSB7CisgICAgICAvLyBWYWxpZGF0b3IgVVJMIHNwZWNpZmllZCBleHBsaWNpdGx5CisgICAgICB0aGlzLm1vZGVsLnZhbGlkYXRvclVybCA9IG9wdHMuc3dhZ2dlck9wdGlvbnMudmFsaWRhdG9yVXJsOworICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbC51cmwuaW5kZXhPZignbG9jYWxob3N0JykgPiAwIHx8IHRoaXMubW9kZWwudXJsLmluZGV4T2YoJzEyNy4wLjAuMScpID4gMCkgeworICAgICAgLy8gTG9jYWxob3N0IG92ZXJyaWRlCisgICAgICB0aGlzLm1vZGVsLnZhbGlkYXRvclVybCA9IG51bGw7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMubW9kZWwudmFsaWRhdG9yVXJsID0gJy8vb25saW5lLnN3YWdnZXIuaW8vdmFsaWRhdG9yJzsKKyAgICB9CisKKyAgICAvLyBKU29uRWRpdG9yIHJlcXVpcmVzIHR5cGU9J29iamVjdCcgdG8gYmUgcHJlc2VudCBvbiBkZWZpbmVkIHR5cGVzLCB3ZSBhZGQgaXQgaWYgaXQncyBtaXNzaW5nCisgICAgLy8gaXMgdGhlcmUgYW55IHZhbGlkIGNhc2Ugd2VyZSBpdCBzaG91bGQgbm90IGJlIGFkZGVkID8KKyAgICB2YXIgZGVmOworICAgIGZvcihkZWYgaW4gdGhpcy5tb2RlbC5kZWZpbml0aW9ucyl7CisgICAgICBpZiAoIXRoaXMubW9kZWwuZGVmaW5pdGlvbnNbZGVmXS50eXBlKXsKKyAgICAgICAgdGhpcy5tb2RlbC5kZWZpbml0aW9uc1tkZWZdLnR5cGUgPSAnb2JqZWN0JzsKKyAgICAgIH0KKyAgICB9CisKKyAgfSwKKworICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAkKHRoaXMuZWwpLmh0bWwoSGFuZGxlYmFycy50ZW1wbGF0ZXMubWFpbih0aGlzLm1vZGVsKSk7CisgICAgdGhpcy5pbmZvID0gdGhpcy4kKCcuaW5mbycpWzBdOworCisgICAgaWYgKHRoaXMuaW5mbykgeworICAgICAgdGhpcy5pbmZvLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbkxpbmtDbGljaywgdHJ1ZSk7CisgICAgfQorCisgICAgdGhpcy5tb2RlbC5zZWN1cml0eURlZmluaXRpb25zID0gdGhpcy5tb2RlbC5zZWN1cml0eURlZmluaXRpb25zIHx8IHt9OworCisgICAgLy8gUmVuZGVyIGVhY2ggcmVzb3VyY2UKKworICAgIHZhciByZXNvdXJjZXMgPSB7fTsKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1vZGVsLmFwaXNBcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5tb2RlbC5hcGlzQXJyYXlbaV07CisgICAgICB2YXIgaWQgPSByZXNvdXJjZS5uYW1lOworICAgICAgd2hpbGUgKHR5cGVvZiByZXNvdXJjZXNbaWRdICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBpZCA9IGlkICsgJ18nICsgY291bnRlcjsKKyAgICAgICAgY291bnRlciArPSAxOworICAgICAgfQorICAgICAgcmVzb3VyY2UuaWQgPSBzYW5pdGl6ZUh0bWwoaWQpOworICAgICAgcmVzb3VyY2VzW2lkXSA9IHJlc291cmNlOworICAgICAgdGhpcy5hZGRSZXNvdXJjZShyZXNvdXJjZSwgdGhpcy5tb2RlbC5hdXRocyk7CisgICAgfQorCisgICAgJCgnLnByb3BXcmFwJykuaG92ZXIoZnVuY3Rpb24gb25Ib3ZlcigpeworICAgICAgJCgnLm9wdGlvbnNXcmFwcGVyJywgJCh0aGlzKSkuc2hvdygpOworICAgIH0sIGZ1bmN0aW9uIG9mZmhvdmVyKCl7CisgICAgICAkKCcub3B0aW9uc1dyYXBwZXInLCAkKHRoaXMpKS5oaWRlKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAgYWRkUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlLCBhdXRocyl7CisgICAgLy8gUmVuZGVyIGEgcmVzb3VyY2UgYW5kIGFkZCBpdCB0byByZXNvdXJjZXMgbGkKKyAgICByZXNvdXJjZS5pZCA9IHJlc291cmNlLmlkLnJlcGxhY2UoL1teYS16QS1aXGRdL2csIGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gc3RyLmNoYXJDb2RlQXQoMCk7IH0pOworCisgICAgLy8gTWFrZSBhbGwgZGVmaW5pdGlvbnMgYXZhaWxhYmxlIGF0IHRoZSByb290IG9mIHRoZSByZXNvdXJjZSBzbyB0aGF0IHRoZXkgY2FuCisgICAgLy8gYmUgbG9hZGVkIGJ5IHRoZSBKU29uRWRpdG9yCisgICAgcmVzb3VyY2UuZGVmaW5pdGlvbnMgPSB0aGlzLm1vZGVsLmRlZmluaXRpb25zOworCisgICAgdmFyIHJlc291cmNlVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuUmVzb3VyY2VWaWV3KHsKKyAgICAgIG1vZGVsOiByZXNvdXJjZSwKKyAgICAgIHJvdXRlcjogdGhpcy5yb3V0ZXIsCisgICAgICB0YWdOYW1lOiAnbGknLAorICAgICAgaWQ6ICdyZXNvdXJjZV8nICsgcmVzb3VyY2UuaWQsCisgICAgICBjbGFzc05hbWU6ICdyZXNvdXJjZScsCisgICAgICBhdXRoczogYXV0aHMsCisgICAgICBzd2FnZ2VyT3B0aW9uczogdGhpcy5vcHRpb25zLnN3YWdnZXJPcHRpb25zCisgICAgfSk7CisgICAgJCgnI3Jlc291cmNlcycsIHRoaXMuZWwpLmFwcGVuZChyZXNvdXJjZVZpZXcucmVuZGVyKCkuZWwpOworICB9LAorCisgIGNsZWFyOiBmdW5jdGlvbigpeworICAgICQodGhpcy5lbCkuaHRtbCgnJyk7CisgIH0sCisKKyAgb25MaW5rQ2xpY2s6IGZ1bmN0aW9uIChlKSB7CisgICAgdmFyIGVsID0gZS50YXJnZXQ7CisKKyAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ0EnICYmIGVsLmhyZWYgJiYgIWVsLnRhcmdldCkgeworICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIHdpbmRvdy5vcGVuKGVsLmhyZWYsICdfYmxhbmsnKTsKKyAgICB9CisgIH0KK30pOworCisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5Nb2RlbHMuT2F1dGgyTW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICAgIHNjb3Blczoge30sCisgICAgICAgIGlzUGFzc3dvcmRGbG93OiBmYWxzZSwKKyAgICAgICAgY2xpZW50QXV0aGVudGljYXRpb25UeXBlOiAnbm9uZScKKyAgICB9LAorCisgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkgeworICAgICAgICBpZih0aGlzLmF0dHJpYnV0ZXMgJiYgdGhpcy5hdHRyaWJ1dGVzLnNjb3BlcykgeworICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBfLmNsb25lRGVlcCh0aGlzLmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgdmFyIGksIHNjb3BlcyA9IFtdOworICAgICAgICAgICAgZm9yKGkgaW4gYXR0cmlidXRlcy5zY29wZXMpIHsKKyAgICAgICAgICAgICAgICB2YXIgc2NvcGUgPSBhdHRyaWJ1dGVzLnNjb3Blc1tpXTsKKyAgICAgICAgICAgICAgICBpZih0eXBlb2Ygc2NvcGUuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgICAgIHNjb3Blc1tzY29wZV0gPSBhdHRyaWJ1dGVzLnNjb3Blc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgc2NvcGVzLnB1c2goYXR0cmlidXRlcy5zY29wZXNbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuc2NvcGVzID0gc2NvcGVzOworICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMgJiYgdGhpcy5hdHRyaWJ1dGVzLmZsb3cpIHsKKyAgICAgICAgICAgIHZhciBmbG93ID0gdGhpcy5hdHRyaWJ1dGVzLmZsb3c7CisgICAgICAgICAgICB0aGlzLnNldCgnaXNQYXNzd29yZEZsb3cnLCBmbG93ID09PSAncGFzc3dvcmQnKTsKKyAgICAgICAgICAgIHRoaXMuc2V0KCdyZXF1aXJlQ2xpZW50QXV0aGVudGljYXRpb24nLCBmbG93ID09PSAnYXBwbGljYXRpb24nKTsKKyAgICAgICAgICAgIHRoaXMuc2V0KCdjbGllbnRBdXRoZW50aWNhdGlvbicsIGZsb3cgPT09ICdwYXNzd29yZCcgfHwgZmxvdyA9PT0gJ2FwcGxpY2F0aW9uJyk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5vbignY2hhbmdlJywgdGhpcy52YWxpZGF0ZSk7CisgICAgfSwKKworICAgIHNldFNjb3BlczogZnVuY3Rpb24gKG5hbWUsIHZhbCkgeworICAgICAgICB2YXIgYXV0aCA9IF8uZXh0ZW5kKHt9LCB0aGlzLmF0dHJpYnV0ZXMpOworICAgICAgICB2YXIgaW5kZXggPSBfLmZpbmRJbmRleChhdXRoLnNjb3BlcywgZnVuY3Rpb24obykgeworICAgICAgICAgICAgcmV0dXJuIG8uc2NvcGUgPT09IG5hbWU7CisgICAgICAgIH0pOworICAgICAgICBhdXRoLnNjb3Blc1tpbmRleF0uY2hlY2tlZCA9IHZhbDsKKworICAgICAgICB0aGlzLnNldChhdXRoKTsKKyAgICAgICAgdGhpcy52YWxpZGF0ZSgpOworICAgIH0sCisKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKCkgeworICAgICAgdmFyIHZhbGlkID0gZmFsc2U7CisgICAgICBpZiAodGhpcy5nZXQoJ2lzUGFzc3dvcmRGbG93JykgJiYKKyAgICAgICAgICAoIXRoaXMuZ2V0KCd1c2VybmFtZScpKSkgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKworICAgICAgaWYgKHRoaXMuZ2V0KCdjbGllbnRBdXRoZW50aWNhdGlvblR5cGUnKSBpbiBbJ2Jhc2ljJywgJ3JlcXVlc3QtYm9keSddICYmCisgICAgICAgICAgKCF0aGlzLmdldCgnY2xpZW50SWQnKSkpIHsKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIHZhciBzY3AgPSB0aGlzLmdldCgnc2NvcGVzJyk7CisgICAgICB2YXIgaWR4ID0gIF8uZmluZEluZGV4KHNjcCwgZnVuY3Rpb24gKG8pIHsKKyAgICAgICAgIHJldHVybiBvLmNoZWNrZWQgPT09IHRydWU7CisgICAgICB9KTsKKworICAgICAgaWYoc2NwLmxlbmd0aCA+IDAgJiYgaWR4ID49IDApIHsKKyAgICAgICAgICB2YWxpZCA9IHRydWU7CisgICAgICB9CisKKyAgICAgIGlmKHNjcC5sZW5ndGggPT09IDApIHsKKyAgICAgICAgICB2YWxpZCA9IHRydWU7CisgICAgICB9CisKKyAgICAgIHRoaXMuc2V0KCd2YWxpZCcsIHZhbGlkKTsKKworICAgICAgcmV0dXJuIHZhbGlkOworICAgIH0KK30pOworCisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5PYXV0aDJWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICAgIGV2ZW50czogeworICAgICAgICAnY2hhbmdlIC5vYXV0aC1zY29wZSc6ICdzY29wZUNoYW5nZScsCisgICAgICAgICdjaGFuZ2UgLm9hdXRoLXVzZXJuYW1lJzogJ3NldFVzZXJuYW1lJywKKyAgICAgICAgJ2NoYW5nZSAub2F1dGgtcGFzc3dvcmQnOiAnc2V0UGFzc3dvcmQnLAorICAgICAgICAnY2hhbmdlIC5vYXV0aC1jbGllbnQtYXV0aGVudGljYXRpb24tdHlwZSc6ICdzZXRDbGllbnRBdXRoZW50aWNhdGlvblR5cGUnLAorICAgICAgICAnY2hhbmdlIC5vYXV0aC1jbGllbnQtaWQnOiAnc2V0Q2xpZW50SWQnLAorICAgICAgICAnY2hhbmdlIC5vYXV0aC1jbGllbnQtc2VjcmV0JzogJ3NldENsaWVudFNlY3JldCcKKyAgICB9LAorCisgICAgdGVtcGxhdGU6IEhhbmRsZWJhcnMudGVtcGxhdGVzLm9hdXRoMiwKKworICAgIGNsczogeworICAgICAgICBlcnJvcjogJ2Vycm9yJworICAgIH0sCisKKyAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhpcy4kZWwuaHRtbCh0aGlzLnRlbXBsYXRlKHRoaXMubW9kZWwudG9KU09OKCkpKTsKKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgc2NvcGVDaGFuZ2U6IGZ1bmN0aW9uIChlKSB7CisgICAgICAgIHZhciB2YWwgPSAkKGUudGFyZ2V0KS5wcm9wKCdjaGVja2VkJyk7CisgICAgICAgIHZhciBzY29wZSA9ICQoZS50YXJnZXQpLmRhdGEoJ3Njb3BlJyk7CisKKyAgICAgICAgdGhpcy5tb2RlbC5zZXRTY29wZXMoc2NvcGUsIHZhbCk7CisgICAgfSwKKworICAgIHNldFVzZXJuYW1lOiBmdW5jdGlvbiAoZSkgeworICAgICAgICB2YXIgdmFsPSAkKGUudGFyZ2V0KS52YWwoKTsKKyAgICAgICAgdGhpcy5tb2RlbC5zZXQoJ3VzZXJuYW1lJywgdmFsKTsKKyAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgJChlLnRhcmdldCkucmVtb3ZlQ2xhc3ModGhpcy5jbHMuZXJyb3IpOworICAgICAgICB9CisgICAgfSwKKworICAgIHNldFBhc3N3b3JkOiBmdW5jdGlvbiAoZSkgeworICAgICAgICB0aGlzLm1vZGVsLnNldCgncGFzc3dvcmQnLCAkKGUudGFyZ2V0KS52YWwoKSk7CisgICAgfSwKKworICAgIHNldENsaWVudEF1dGhlbnRpY2F0aW9uVHlwZTogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgdmFyIHR5cGUgPSAkKGUudGFyZ2V0KS52YWwoKTsKKyAgICAgICAgdmFyICRlbCA9IHRoaXMuJGVsOworICAgICAgICB0aGlzLm1vZGVsLnNldCgnY2xpZW50QXV0aGVudGljYXRpb25UeXBlJywgdHlwZSk7CisKKyAgICAgICAgc3dpdGNoKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgJ25vbmUnOgorICAgICAgICAgICAgICAgICRlbC5maW5kKCcub2F1dGgtY2xpZW50LWF1dGhlbnRpY2F0aW9uJykuaGlkZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnYmFzaWMnOgorICAgICAgICAgICAgY2FzZSAncmVxdWVzdC1ib2R5JzoKKyAgICAgICAgICAgICAgICAkZWwuZmluZCgnLm9hdXRoLWNsaWVudC1pZCcpLnJlbW92ZUNsYXNzKHRoaXMuY2xzLmVycm9yKTsKKyAgICAgICAgICAgICAgICAkZWwuZmluZCgnLm9hdXRoLWNsaWVudC1hdXRoZW50aWNhdGlvbicpLnNob3coKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBzZXRDbGllbnRJZDogZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgdmFyIHZhbCA9ICQoZS50YXJnZXQpLnZhbCgpOworICAgICAgICB0aGlzLm1vZGVsLnNldCgnY2xpZW50SWQnLCB2YWwpOworICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAkKGUudGFyZ2V0KS5yZW1vdmVDbGFzcyh0aGlzLmNscy5lcnJvcik7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgc2V0Q2xpZW50U2VjcmV0OiBmdW5jdGlvbiAoZSkgeworICAgICAgICB0aGlzLm1vZGVsLnNldCgnY2xpZW50U2VjcmV0JywgJChlLnRhcmdldCkudmFsKCkpOworICAgICAgICAkKGUudGFyZ2V0KS5yZW1vdmVDbGFzcygnZXJyb3InKTsKKyAgICB9LAorCisgICAgaGlnaGxpZ2h0SW52YWxpZDogZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAoIXRoaXMubW9kZWwuZ2V0KCd1c2VybmFtZScpKSB7CisgICAgICAgICAgICB0aGlzLiRlbC5maW5kKCcub2F1dGgtdXNlcm5hbWUnKS5hZGRDbGFzcyh0aGlzLmNscy5lcnJvcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMubW9kZWwuZ2V0KCdjbGllbnRJZCcpKSB7CisgICAgICAgICAgICB0aGlzLiRlbC5maW5kKCcub2F1dGgtY2xpZW50LWlkJykuYWRkQ2xhc3ModGhpcy5jbHMuZXJyb3IpOworICAgICAgICB9CisgICAgfQorfSk7CisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5PcGVyYXRpb25WaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBpbnZvY2F0aW9uVXJsOiBudWxsLAorCisgIGV2ZW50czogeworICAgICdzdWJtaXQgLnNhbmRib3gnICAgICAgICAgOiAnc3VibWl0T3BlcmF0aW9uJywKKyAgICAnY2xpY2sgLnN1Ym1pdCcgICAgICAgICAgIDogJ3N1Ym1pdE9wZXJhdGlvbicsCisgICAgJ2NsaWNrIC5yZXNwb25zZV9oaWRlcicgICA6ICdoaWRlUmVzcG9uc2UnLAorICAgICdjbGljayAudG9nZ2xlT3BlcmF0aW9uJyAgOiAndG9nZ2xlT3BlcmF0aW9uQ29udGVudCcsCisgICAgJ21vdXNlZW50ZXIgLmFwaS1pYycgICAgICA6ICdtb3VzZUVudGVyJywKKyAgICAnZGJsY2xpY2sgLmN1cmwnICAgICAgICAgIDogJ3NlbGVjdFRleHQnLAorICAgICdjaGFuZ2UgW25hbWU9cmVzcG9uc2VDb250ZW50VHlwZV0nIDogJ3Nob3dTbmlwcGV0JworICB9LAorCisgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICBvcHRzID0gb3B0cyB8fCB7fTsKKyAgICB0aGlzLnJvdXRlciA9IG9wdHMucm91dGVyOworICAgIHRoaXMuYXV0aHMgPSBvcHRzLmF1dGhzOworICAgIHRoaXMucGFyZW50SWQgPSB0aGlzLm1vZGVsLnBhcmVudElkOworICAgIHRoaXMubmlja25hbWUgPSB0aGlzLm1vZGVsLm5pY2tuYW1lOworICAgIHRoaXMubW9kZWwuZW5jb2RlZFBhcmVudElkID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGFyZW50SWQpOworCisgICAgaWYgKG9wdHMuc3dhZ2dlck9wdGlvbnMpIHsKKyAgICAgIHRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZyA9IG9wdHMuc3dhZ2dlck9wdGlvbnMuZGVmYXVsdE1vZGVsUmVuZGVyaW5nOworCisgICAgICBpZiAob3B0cy5zd2FnZ2VyT3B0aW9ucy5zaG93UmVxdWVzdEhlYWRlcnMpIHsKKyAgICAgICAgdGhpcy5tb2RlbC5zaG93UmVxdWVzdEhlYWRlcnMgPSB0cnVlOworICAgICAgfQorCisgICAgICBpZiAob3B0cy5zd2FnZ2VyT3B0aW9ucy5zaG93T3BlcmF0aW9uSWRzKSB7CisgICAgICAgIHRoaXMubW9kZWwuc2hvd09wZXJhdGlvbklkcyA9IHRydWU7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiB0aGlzOworICB9LAorCisgIHNlbGVjdFRleHQ6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGRvYyA9IGRvY3VtZW50LAorICAgICAgICB0ZXh0ID0gZXZlbnQudGFyZ2V0LmZpcnN0Q2hpbGQsCisgICAgICAgIHJhbmdlLAorICAgICAgICBzZWxlY3Rpb247CisgICAgaWYgKGRvYy5ib2R5LmNyZWF0ZVRleHRSYW5nZSkgeworICAgICAgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOworICAgICAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQodGV4dCk7CisgICAgICByYW5nZS5zZWxlY3QoKTsKKyAgICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHsKKyAgICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0ZXh0KTsKKyAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CisgICAgfQorICB9LAorCisgIG1vdXNlRW50ZXI6IGZ1bmN0aW9uKGUpIHsKKyAgICB2YXIgZWxlbSA9ICQodGhpcy5lbCkuZmluZCgnLmNvbnRlbnQnKTsKKyAgICB2YXIgeCA9IGUucGFnZVg7CisgICAgdmFyIHkgPSBlLnBhZ2VZOworICAgIHZhciBzY1ggPSAkKHdpbmRvdykuc2Nyb2xsTGVmdCgpOworICAgIHZhciBzY1kgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCk7CisgICAgdmFyIHNjTWF4WCA9IHNjWCArICQod2luZG93KS53aWR0aCgpOworICAgIHZhciBzY01heFkgPSBzY1kgKyAkKHdpbmRvdykuaGVpZ2h0KCk7CisgICAgdmFyIHdkID0gZWxlbS53aWR0aCgpOworICAgIHZhciBoZ2ggPSBlbGVtLmhlaWdodCgpOworCisgICAgaWYgKHggKyB3ZCA+IHNjTWF4WCkgeworICAgICAgeCA9IHNjTWF4WCAtIHdkOworICAgIH0KKworICAgIGlmICh4IDwgc2NYKSB7CisgICAgICB4ID0gc2NYOworICAgIH0KKworICAgIGlmICh5ICsgaGdoID4gc2NNYXhZKSB7CisgICAgICB5ID0gc2NNYXhZIC0gaGdoOworICAgIH0KKworICAgIGlmICh5IDwgc2NZKSB7CisgICAgICB5ID0gc2NZOworICAgIH0KKworICAgIHZhciBwb3MgPSB7fTsKKyAgICBwb3MudG9wID0geTsKKyAgICBwb3MubGVmdCA9IHg7CisgICAgZWxlbS5jc3MocG9zKTsKKyAgfSwKKworICAvLyBOb3RlOiBjb3BpZWQgZnJvbSBDb2ZmZWVTY3JpcHQgY29tcGlsZWQgZmlsZQorICAvLyBUT0RPOiByZWZhY3RvcgorICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgIHZhciBhLCBhdXRoLCBhdXRocywgY29kZSwgY29udGVudFR5cGVNb2RlbCwgaXNNZXRob2RTdWJtaXNzaW9uU3VwcG9ydGVkLCBrLCBrZXksIGwsIGxlbiwgbGVuMSwgbGVuMiwgbGVuMywgbGVuNCwgbSwgbW9kZWxBdXRocywgbiwgbywgcCwgcGFyYW0sIHEsIHJlZiwgcmVmMSwgcmVmMiwgcmVmMywgcmVmNCwgcmVmNSwgcmVzcG9uc2VDb250ZW50VHlwZVZpZXcsIHJlc3BvbnNlU2lnbmF0dXJlVmlldywgc2NoZW1hLCBzY2hlbWFPYmosIHNjb3BlSW5kZXgsIHNpZ25hdHVyZU1vZGVsLCBzdGF0dXNDb2RlLCBzdWNjZXNzUmVzcG9uc2UsIHR5cGUsIHYsIHZhbHVlLCBwcm9kdWNlcywgaXNYTUwsIGlzSlNPTjsKKyAgICBpc01ldGhvZFN1Ym1pc3Npb25TdXBwb3J0ZWQgPSBqUXVlcnkuaW5BcnJheSh0aGlzLm1vZGVsLm1ldGhvZCwgdGhpcy5tb2RlbC5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzKCkpID49IDA7CisgICAgaWYgKCFpc01ldGhvZFN1Ym1pc3Npb25TdXBwb3J0ZWQpIHsKKyAgICAgIHRoaXMubW9kZWwuaXNSZWFkT25seSA9IHRydWU7CisgICAgfQorICAgIHRoaXMubW9kZWwuZGVzY3JpcHRpb24gPSB0aGlzLm1vZGVsLmRlc2NyaXB0aW9uIHx8IHRoaXMubW9kZWwubm90ZXM7CisgICAgdGhpcy5tb2RlbC5vYXV0aCA9IG51bGw7CisgICAgbW9kZWxBdXRocyA9IHRoaXMubW9kZWwuYXV0aG9yaXphdGlvbnMgfHwgdGhpcy5tb2RlbC5zZWN1cml0eTsKKyAgICBpZiAobW9kZWxBdXRocykgeworICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxBdXRocykpIHsKKyAgICAgICAgZm9yIChsID0gMCwgbGVuID0gbW9kZWxBdXRocy5sZW5ndGg7IGwgPCBsZW47IGwrKykgeworICAgICAgICAgIGF1dGhzID0gbW9kZWxBdXRoc1tsXTsKKyAgICAgICAgICBmb3IgKGtleSBpbiBhdXRocykgeworICAgICAgICAgICAgZm9yIChhIGluIHRoaXMuYXV0aHMpIHsKKyAgICAgICAgICAgICAgYXV0aCA9IHRoaXMuYXV0aHNbYV07CisgICAgICAgICAgICAgIGlmIChrZXkgPT09IGF1dGgubmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRoLnR5cGUgPT09ICdvYXV0aDInKSB7CisgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLm9hdXRoID0ge307CisgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLm9hdXRoLnNjb3BlcyA9IFtdOworICAgICAgICAgICAgICAgICAgcmVmMSA9IGF1dGgudmFsdWUuc2NvcGVzOworICAgICAgICAgICAgICAgICAgZm9yIChrIGluIHJlZjEpIHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IHJlZjFba107CisgICAgICAgICAgICAgICAgICAgIHNjb3BlSW5kZXggPSBhdXRoc1trZXldLmluZGV4T2Yoayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZUluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICBvID0geworICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGU6IGssCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdgorICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC5vYXV0aC5zY29wZXMucHVzaChvKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChrIGluIG1vZGVsQXV0aHMpIHsKKyAgICAgICAgICB2ID0gbW9kZWxBdXRoc1trXTsKKyAgICAgICAgICBpZiAoayA9PT0gJ29hdXRoMicpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLm9hdXRoID09PSBudWxsKSB7CisgICAgICAgICAgICAgIHRoaXMubW9kZWwub2F1dGggPSB7fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLm9hdXRoLnNjb3BlcyA9PT0gdm9pZCAwKSB7CisgICAgICAgICAgICAgIHRoaXMubW9kZWwub2F1dGguc2NvcGVzID0gW107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKG0gPSAwLCBsZW4xID0gdi5sZW5ndGg7IG0gPCBsZW4xOyBtKyspIHsKKyAgICAgICAgICAgICAgbyA9IHZbbV07CisgICAgICAgICAgICAgIHRoaXMubW9kZWwub2F1dGguc2NvcGVzLnB1c2gobyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmICh0eXBlb2YgdGhpcy5tb2RlbC5yZXNwb25zZXMgIT09ICd1bmRlZmluZWQnKSB7CisgICAgICB0aGlzLm1vZGVsLnJlc3BvbnNlTWVzc2FnZXMgPSBbXTsKKyAgICAgIHJlZjIgPSB0aGlzLm1vZGVsLnJlc3BvbnNlczsKKyAgICAgIGZvciAoY29kZSBpbiByZWYyKSB7CisgICAgICAgIHZhbHVlID0gcmVmMltjb2RlXTsKKyAgICAgICAgc2NoZW1hID0gbnVsbDsKKyAgICAgICAgc2NoZW1hT2JqID0gdGhpcy5tb2RlbC5yZXNwb25zZXNbY29kZV0uc2NoZW1hOworICAgICAgICBpZiAoc2NoZW1hT2JqICYmIHNjaGVtYU9iai4kcmVmKSB7CisgICAgICAgICAgc2NoZW1hID0gc2NoZW1hT2JqLiRyZWY7CisgICAgICAgICAgaWYgKHNjaGVtYS5pbmRleE9mKCcjL2RlZmluaXRpb25zLycpICE9PSAtMSkgeworICAgICAgICAgICAgc2NoZW1hID0gc2NoZW1hLnJlcGxhY2UoL14uKiNcL2RlZmluaXRpb25zXC8vLCAnJyk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRoaXMubW9kZWwucmVzcG9uc2VNZXNzYWdlcy5wdXNoKHsKKyAgICAgICAgICBjb2RlOiBjb2RlLAorICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLmRlc2NyaXB0aW9uLAorICAgICAgICAgIHJlc3BvbnNlTW9kZWw6IHNjaGVtYSwKKyAgICAgICAgICBoZWFkZXJzOiB2YWx1ZS5oZWFkZXJzLAorICAgICAgICAgIHNjaGVtYTogc2NoZW1hT2JqCisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKyAgICBpZiAodHlwZW9mIHRoaXMubW9kZWwucmVzcG9uc2VNZXNzYWdlcyA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIHRoaXMubW9kZWwucmVzcG9uc2VNZXNzYWdlcyA9IFtdOworICAgIH0KKyAgICBzaWduYXR1cmVNb2RlbCA9IG51bGw7CisgICAgcHJvZHVjZXMgPSB0aGlzLm1vZGVsLnByb2R1Y2VzOworICAgIGlzWE1MID0gdGhpcy5jb250YWlucyhwcm9kdWNlcywgJ3htbCcpOworICAgIGlzSlNPTiA9IGlzWE1MID8gdGhpcy5jb250YWlucyhwcm9kdWNlcywgJ2pzb24nKSA6IHRydWU7CisKKyAgICBpZiAodGhpcy5tb2RlbC5zdWNjZXNzUmVzcG9uc2UpIHsKKyAgICAgIHN1Y2Nlc3NSZXNwb25zZSA9IHRoaXMubW9kZWwuc3VjY2Vzc1Jlc3BvbnNlOworICAgICAgZm9yIChrZXkgaW4gc3VjY2Vzc1Jlc3BvbnNlKSB7CisgICAgICAgIHZhbHVlID0gc3VjY2Vzc1Jlc3BvbnNlW2tleV07CisgICAgICAgIHRoaXMubW9kZWwuc3VjY2Vzc0NvZGUgPSBrZXk7CisgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZS5jcmVhdGVKU09OU2FtcGxlID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgdGhpcy5tb2RlbC5zdWNjZXNzRGVzY3JpcHRpb24gPSB2YWx1ZS5kZXNjcmlwdGlvbjsKKyAgICAgICAgICB0aGlzLm1vZGVsLmhlYWRlcnMgPSB0aGlzLnBhcnNlUmVzcG9uc2VIZWFkZXJzKHZhbHVlLmhlYWRlcnMpOworICAgICAgICAgIHNpZ25hdHVyZU1vZGVsID0geworICAgICAgICAgICAgc2FtcGxlSlNPTjogaXNKU09OID8gSlNPTi5zdHJpbmdpZnkoU3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5jcmVhdGVKU09OU2FtcGxlKHZhbHVlKSwgdm9pZCAwLCAyKSA6IGZhbHNlLAorICAgICAgICAgICAgaXNQYXJhbTogZmFsc2UsCisgICAgICAgICAgICBzYW1wbGVYTUw6IGlzWE1MID8gU3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5jcmVhdGVYTUxTYW1wbGUodmFsdWUubmFtZSwgdmFsdWUuZGVmaW5pdGlvbiwgdmFsdWUubW9kZWxzKSA6IGZhbHNlLAorICAgICAgICAgICAgc2lnbmF0dXJlOiBTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmdldE1vZGVsU2lnbmF0dXJlKHZhbHVlLm5hbWUsIHZhbHVlLmRlZmluaXRpb24sIHZhbHVlLm1vZGVscywgdmFsdWUubW9kZWxQcm9wZXJ0eU1hY3JvKQorICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgc2lnbmF0dXJlTW9kZWwgPSB7CisgICAgICAgICAgICBzaWduYXR1cmU6IFN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuZ2V0UHJpbWl0aXZlU2lnbmF0dXJlKHZhbHVlKQorICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWwucmVzcG9uc2VDbGFzc1NpZ25hdHVyZSAmJiB0aGlzLm1vZGVsLnJlc3BvbnNlQ2xhc3NTaWduYXR1cmUgIT09ICdzdHJpbmcnKSB7CisgICAgICBzaWduYXR1cmVNb2RlbCA9IHsKKyAgICAgICAgc2FtcGxlSlNPTjogdGhpcy5tb2RlbC5yZXNwb25zZVNhbXBsZUpTT04sCisgICAgICAgIGlzUGFyYW06IGZhbHNlLAorICAgICAgICBzaWduYXR1cmU6IHRoaXMubW9kZWwucmVzcG9uc2VDbGFzc1NpZ25hdHVyZQorICAgICAgfTsKKyAgICB9CisgICAgJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLm9wZXJhdGlvbih0aGlzLm1vZGVsKSk7CisgICAgaWYgKHNpZ25hdHVyZU1vZGVsKSB7CisgICAgICBzaWduYXR1cmVNb2RlbC5kZWZhdWx0UmVuZGVyaW5nID0gdGhpcy5tb2RlbC5kZWZhdWx0UmVuZGVyaW5nOworICAgICAgcmVzcG9uc2VTaWduYXR1cmVWaWV3ID0gbmV3IFN3YWdnZXJVaS5WaWV3cy5TaWduYXR1cmVWaWV3KHsKKyAgICAgICAgbW9kZWw6IHNpZ25hdHVyZU1vZGVsLAorICAgICAgICByb3V0ZXI6IHRoaXMucm91dGVyLAorICAgICAgICB0YWdOYW1lOiAnZGl2JworICAgICAgfSk7CisgICAgICAkKCcubW9kZWwtc2lnbmF0dXJlJywgJCh0aGlzLmVsKSkuYXBwZW5kKHJlc3BvbnNlU2lnbmF0dXJlVmlldy5yZW5kZXIoKS5lbCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRoaXMubW9kZWwucmVzcG9uc2VDbGFzc1NpZ25hdHVyZSA9ICdzdHJpbmcnOworICAgICAgJCgnLm1vZGVsLXNpZ25hdHVyZScsICQodGhpcy5lbCkpLmh0bWwodGhpcy5tb2RlbC50eXBlKTsKKyAgICB9CisgICAgY29udGVudFR5cGVNb2RlbCA9IHsKKyAgICAgIGlzUGFyYW06IGZhbHNlCisgICAgfTsKKyAgICBjb250ZW50VHlwZU1vZGVsLmNvbnN1bWVzID0gdGhpcy5tb2RlbC5jb25zdW1lczsKKyAgICBjb250ZW50VHlwZU1vZGVsLnByb2R1Y2VzID0gdGhpcy5tb2RlbC5wcm9kdWNlczsKKyAgICByZWYzID0gdGhpcy5tb2RlbC5wYXJhbWV0ZXJzOworICAgIGZvciAobiA9IDAsIGxlbjIgPSByZWYzLmxlbmd0aDsgbiA8IGxlbjI7IG4rKykgeworICAgICAgcGFyYW0gPSByZWYzW25dOworICAgICAgdHlwZSA9IHBhcmFtLnR5cGUgfHwgcGFyYW0uZGF0YVR5cGUgfHwgJyc7CisgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICAgIHNjaGVtYSA9IHBhcmFtLnNjaGVtYTsKKyAgICAgICAgaWYgKHNjaGVtYSAmJiBzY2hlbWEuJHJlZikgeworICAgICAgICAgIHJlZiA9IHNjaGVtYS4kcmVmOworICAgICAgICAgIGlmIChyZWYuaW5kZXhPZignIy9kZWZpbml0aW9ucy8nKSA9PT0gMCkgeworICAgICAgICAgICAgdHlwZSA9IHJlZi5zdWJzdHJpbmcoJyMvZGVmaW5pdGlvbnMvJy5sZW5ndGgpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0eXBlID0gcmVmOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKHR5cGUgJiYgdHlwZS50b0xvd2VyQ2FzZSgpID09PSAnZmlsZScpIHsKKyAgICAgICAgaWYgKCFjb250ZW50VHlwZU1vZGVsLmNvbnN1bWVzKSB7CisgICAgICAgICAgY29udGVudFR5cGVNb2RlbC5jb25zdW1lcyA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhJzsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcGFyYW0udHlwZSA9IHR5cGU7CisgICAgfQorICAgIHJlc3BvbnNlQ29udGVudFR5cGVWaWV3ID0gbmV3IFN3YWdnZXJVaS5WaWV3cy5SZXNwb25zZUNvbnRlbnRUeXBlVmlldyh7CisgICAgICBtb2RlbDogY29udGVudFR5cGVNb2RlbCwKKyAgICAgIHJvdXRlcjogdGhpcy5yb3V0ZXIKKyAgICB9KTsKKyAgICAkKCcucmVzcG9uc2UtY29udGVudC10eXBlJywgJCh0aGlzLmVsKSkuYXBwZW5kKHJlc3BvbnNlQ29udGVudFR5cGVWaWV3LnJlbmRlcigpLmVsKTsKKyAgICByZWY0ID0gdGhpcy5tb2RlbC5wYXJhbWV0ZXJzOworICAgIGZvciAocCA9IDAsIGxlbjMgPSByZWY0Lmxlbmd0aDsgcCA8IGxlbjM7IHArKykgeworICAgICAgcGFyYW0gPSByZWY0W3BdOworICAgICAgdGhpcy5hZGRQYXJhbWV0ZXIocGFyYW0sIGNvbnRlbnRUeXBlTW9kZWwuY29uc3VtZXMpOworICAgIH0KKyAgICByZWY1ID0gdGhpcy5tb2RlbC5yZXNwb25zZU1lc3NhZ2VzOworICAgIGZvciAocSA9IDAsIGxlbjQgPSByZWY1Lmxlbmd0aDsgcSA8IGxlbjQ7IHErKykgeworICAgICAgc3RhdHVzQ29kZSA9IHJlZjVbcV07CisgICAgICBzdGF0dXNDb2RlLmlzWE1MID0gaXNYTUw7CisgICAgICBzdGF0dXNDb2RlLmlzSlNPTiA9IGlzSlNPTjsKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzdGF0dXNDb2RlLmhlYWRlcnMpKSB7CisgICAgICAgIHN0YXR1c0NvZGUuaGVhZGVycyA9IHRoaXMucGFyc2VIZWFkZXJzVHlwZShzdGF0dXNDb2RlLmhlYWRlcnMpOworICAgICAgfQorICAgICAgdGhpcy5hZGRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpOworICAgIH0KKworICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMubW9kZWwuc2VjdXJpdHkpKSB7CisgICAgICB2YXIgYXV0aHNNb2RlbCA9IFN3YWdnZXJVaS51dGlscy5wYXJzZVNlY3VyaXR5RGVmaW5pdGlvbnModGhpcy5tb2RlbC5zZWN1cml0eSwgdGhpcy5tb2RlbC5wYXJlbnQuc2VjdXJpdHlEZWZpbml0aW9ucyk7CisKKyAgICAgIGF1dGhzTW9kZWwuaXNMb2dvdXQgPSAhXy5pc0VtcHR5KHRoaXMubW9kZWwuY2xpZW50QXV0aG9yaXphdGlvbnMuYXV0aHopOworICAgICAgdGhpcy5hdXRoVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuQXV0aEJ1dHRvblZpZXcoeworICAgICAgICBkYXRhOiBhdXRoc01vZGVsLAorICAgICAgICByb3V0ZXI6IHRoaXMucm91dGVyLAorICAgICAgICBpc09wZXJhdGlvbjogdHJ1ZSwKKyAgICAgICAgbW9kZWw6IHsKKyAgICAgICAgICBzY29wZXM6IGF1dGhzTW9kZWwuc2NvcGVzCisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgdGhpcy4kKCcuYXV0aG9yaXplLXdyYXBwZXInKS5hcHBlbmQodGhpcy5hdXRoVmlldy5yZW5kZXIoKS5lbCk7CisgICAgfQorCisgICAgdGhpcy5zaG93U25pcHBldCgpOworICAgIHJldHVybiB0aGlzOworICB9LAorCisgIHBhcnNlSGVhZGVyc1R5cGU6IGZ1bmN0aW9uIChoZWFkZXJzKSB7CisgICAgdmFyIG1hcCA9IHsKKyAgICAgICdzdHJpbmcnOiB7CisgICAgICAgICdkYXRlLXRpbWUnOiAnZGF0ZVRpbWUnLAorICAgICAgICAnZGF0ZScgICAgIDogJ2RhdGUnCisgICAgICB9CisgICAgfTsKKworICAgIF8uZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiAoaGVhZGVyKSB7CisgICAgICB2YXIgdmFsdWU7CisgICAgICBoZWFkZXIgPSBoZWFkZXIgfHwge307CisgICAgICB2YWx1ZSA9IG1hcFtoZWFkZXIudHlwZV0gJiYgbWFwW2hlYWRlci50eXBlXVtoZWFkZXIuZm9ybWF0XTsKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHsKKyAgICAgICAgaGVhZGVyLnR5cGUgPSB2YWx1ZTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIHJldHVybiBoZWFkZXJzOworICB9LAorCisgIGNvbnRhaW5zOiBmdW5jdGlvbiAocHJvZHVjZXMsIHR5cGUpIHsKKyAgICByZXR1cm4gcHJvZHVjZXMuZmlsdGVyKGZ1bmN0aW9uICh2YWwpIHsKKyAgICAgIGlmICh2YWwuaW5kZXhPZih0eXBlKSA+IC0xKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgIH0pLmxlbmd0aDsKKyAgfSwKKworICBwYXJzZVJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24gKGRhdGEpIHsKKyAgICB2YXIgSEVBREVSU19TRVBBUkFUT1IgPSAnOyAnOworICAgIHZhciBoZWFkZXJzID0gXy5jbG9uZShkYXRhKTsKKworICAgIF8uZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiAoaGVhZGVyKSB7CisgICAgICB2YXIgb3RoZXIgPSBbXTsKKyAgICAgIF8uZm9yRWFjaChoZWFkZXIsIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gWyd0eXBlJywgJ2Rlc2NyaXB0aW9uJ107CisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmluZGV4T2Yoa2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSkgeworICAgICAgICAgIG90aGVyLnB1c2goa2V5ICsgJzogJyArIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgfSk7CisKKyAgICAgIG90aGVyLmpvaW4oSEVBREVSU19TRVBBUkFUT1IpOworICAgICAgaGVhZGVyLm90aGVyID0gb3RoZXI7CisgICAgfSk7CisKKyAgICByZXR1cm4gaGVhZGVyczsKKyAgfSwKKworICBhZGRQYXJhbWV0ZXI6IGZ1bmN0aW9uKHBhcmFtLCBjb25zdW1lcykgeworICAgIC8vIFJlbmRlciBhIHBhcmFtZXRlcgorICAgIHBhcmFtLmNvbnN1bWVzID0gY29uc3VtZXM7CisgICAgcGFyYW0uZGVmYXVsdFJlbmRlcmluZyA9IHRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZzsKKworICAgIC8vIENvcHkgdGhpcyBwYXJhbSBKU09OIHNwZWMgc28gdGhhdCBpdCB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgSnNvbkVkaXRvcgorICAgIGlmKHBhcmFtLnNjaGVtYSl7CisgICAgICAkLmV4dGVuZCh0cnVlLCBwYXJhbS5zY2hlbWEsIHRoaXMubW9kZWwuZGVmaW5pdGlvbnNbcGFyYW0udHlwZV0pOworICAgICAgcGFyYW0uc2NoZW1hLmRlZmluaXRpb25zID0gdGhpcy5tb2RlbC5kZWZpbml0aW9uczsKKyAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIEpzb25FZGl0b3IgdG8gZGlzcGxheSB0aGUgcm9vdCBwcm9wZXJseQorICAgICAgaWYoIXBhcmFtLnNjaGVtYS50eXBlKXsKKyAgICAgICAgcGFyYW0uc2NoZW1hLnR5cGUgPSAnb2JqZWN0JzsKKyAgICAgIH0KKyAgICAgIC8vIFRoaXMgaXMgdGhlIHRpdGxlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IEpzb25FZGl0b3IgZm9yIHRoZSByb290CisgICAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGRpc3BsYXkgdGhlIHBhcmFtZXRlcidzIG5hbWUgaW4gdGhlIFBhcmFtZXRlciBjb2x1bW4KKyAgICAgIC8vIFdlIHNldCB0aGlzIHRvIHNwYWNlLCB3ZSBjYW4ndCBzZXQgaXQgdG8gbnVsbCBvciBzcGFjZSBvdGhlcndpc2UgSnNvbkVkaXRvcgorICAgICAgLy8gd2lsbCByZXBsYWNlIGl0IHdpdGggdGhlIHRleHQgInJvb3QiIHdoaWNoIHdvbid0IGxvb2sgZ29vZCBvbiBzY3JlZW4KKyAgICAgIGlmKCFwYXJhbS5zY2hlbWEudGl0bGUpeworICAgICAgICBwYXJhbS5zY2hlbWEudGl0bGUgPSAnICc7CisgICAgICB9CisgICAgfQorCisgICAgdmFyIHBhcmFtVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuUGFyYW1ldGVyVmlldyh7CisgICAgICBtb2RlbDogcGFyYW0sCisgICAgICB0YWdOYW1lOiAndHInLAorICAgICAgcmVhZE9ubHk6IHRoaXMubW9kZWwuaXNSZWFkT25seSwKKyAgICAgIHN3YWdnZXJPcHRpb25zOiB0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnMKKyAgICB9KTsKKyAgICAkKCcub3BlcmF0aW9uLXBhcmFtcycsICQodGhpcy5lbCkpLmFwcGVuZChwYXJhbVZpZXcucmVuZGVyKCkuZWwpOworICB9LAorCisgIGFkZFN0YXR1c0NvZGU6IGZ1bmN0aW9uKHN0YXR1c0NvZGUpIHsKKyAgICAvLyBSZW5kZXIgc3RhdHVzIGNvZGVzCisgICAgc3RhdHVzQ29kZS5kZWZhdWx0UmVuZGVyaW5nID0gdGhpcy5tb2RlbC5kZWZhdWx0UmVuZGVyaW5nOworICAgIHZhciBzdGF0dXNDb2RlVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuU3RhdHVzQ29kZVZpZXcoeworICAgICAgbW9kZWw6IHN0YXR1c0NvZGUsCisgICAgICB0YWdOYW1lOiAndHInLAorICAgICAgcm91dGVyOiB0aGlzLnJvdXRlcgorICAgIH0pOworICAgICQoJy5vcGVyYXRpb24tc3RhdHVzJywgJCh0aGlzLmVsKSkuYXBwZW5kKHN0YXR1c0NvZGVWaWV3LnJlbmRlcigpLmVsKTsKKyAgfSwKKworICAvLyBOb3RlOiBjb3BpZWQgZnJvbSBDb2ZmZWVTY3JpcHQgY29tcGlsZWQgZmlsZQorICAvLyBUT0RPOiByZWRhY3RvcgorICBzdWJtaXRPcGVyYXRpb246IGZ1bmN0aW9uKGUpIHsKKyAgICB2YXIgZXJyb3JfZnJlZSwgZm9ybSwgaXNGaWxlVXBsb2FkLCBtYXAsIG9wdHM7CisgICAgaWYgKGUgIT09IG51bGwpIHsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgZm9ybSA9ICQoJy5zYW5kYm94JywgJCh0aGlzLmVsKSk7CisgICAgZXJyb3JfZnJlZSA9IHRydWU7CisgICAgZm9ybS5maW5kKCdpbnB1dC5yZXF1aXJlZCcpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdlcnJvcicpOworICAgICAgaWYgKGpRdWVyeS50cmltKCQodGhpcykudmFsKCkpID09PSAnJykgeworICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdlcnJvcicpOworICAgICAgICAkKHRoaXMpLndpZ2dsZSh7CisgICAgICAgICAgY2FsbGJhY2s6IChmdW5jdGlvbihfdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAkKF90aGlzKS5mb2N1cygpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KSh0aGlzKQorICAgICAgICB9KTsKKyAgICAgICAgZXJyb3JfZnJlZSA9IGZhbHNlOworICAgICAgfQorICAgIH0pOworICAgIGZvcm0uZmluZCgndGV4dGFyZWEucmVxdWlyZWQ6dmlzaWJsZScpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdlcnJvcicpOworICAgICAgaWYgKGpRdWVyeS50cmltKCQodGhpcykudmFsKCkpID09PSAnJykgeworICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdlcnJvcicpOworICAgICAgICAkKHRoaXMpLndpZ2dsZSh7CisgICAgICAgICAgY2FsbGJhY2s6IChmdW5jdGlvbihfdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICByZXR1cm4gJChfdGhpcykuZm9jdXMoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgfSkodGhpcykKKyAgICAgICAgfSk7CisgICAgICAgIGVycm9yX2ZyZWUgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICBmb3JtLmZpbmQoJ3NlbGVjdC5yZXF1aXJlZCcpLmVhY2goZnVuY3Rpb24oKSB7CisgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdlcnJvcicpOworICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gLTEpIHsKKyAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnZXJyb3InKTsKKyAgICAgICAgJCh0aGlzKS53aWdnbGUoeworICAgICAgICAgIGNhbGxiYWNrOiAoZnVuY3Rpb24oX3RoaXMpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgJChfdGhpcykuZm9jdXMoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgfSkodGhpcykKKyAgICAgICAgfSk7CisgICAgICAgIGVycm9yX2ZyZWUgPSBmYWxzZTsKKyAgICAgIH0KKyAgICB9KTsKKyAgICBpZiAoZXJyb3JfZnJlZSkgeworICAgICAgbWFwID0gdGhpcy5nZXRJbnB1dE1hcChmb3JtKTsKKyAgICAgIGlzRmlsZVVwbG9hZCA9IHRoaXMuaXNGaWxlVXBsb2FkKGZvcm0pOworICAgICAgb3B0cyA9IHsKKyAgICAgICAgcGFyZW50OiB0aGlzCisgICAgICB9OworICAgICAgaWYgKHRoaXMub3B0aW9ucy5zd2FnZ2VyT3B0aW9ucykgeworICAgICAgICBmb3IodmFyIGtleSBpbiB0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnMpIHsKKyAgICAgICAgICBvcHRzW2tleV0gPSB0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnNba2V5XTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICB2YXIgcGk7CisgICAgICBmb3IocGkgPSAwOyBwaSA8IHRoaXMubW9kZWwucGFyYW1ldGVycy5sZW5ndGg7IHBpKyspeworICAgICAgICB2YXIgcCA9IHRoaXMubW9kZWwucGFyYW1ldGVyc1twaV07CisgICAgICAgIGlmKCBwLmpzb25FZGl0b3IgJiYgcC5qc29uRWRpdG9yLmlzRW5hYmxlZCgpKXsKKyAgICAgICAgICB2YXIganNvbiA9IHAuanNvbkVkaXRvci5nZXRWYWx1ZSgpOworICAgICAgICAgIG1hcFtwLm5hbWVdID0gSlNPTi5zdHJpbmdpZnkoanNvbik7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgb3B0cy5yZXNwb25zZUNvbnRlbnRUeXBlID0gJCgnZGl2IHNlbGVjdFtuYW1lPXJlc3BvbnNlQ29udGVudFR5cGVdJywgJCh0aGlzLmVsKSkudmFsKCk7CisgICAgICBvcHRzLnJlcXVlc3RDb250ZW50VHlwZSA9ICQoJ2RpdiBzZWxlY3RbbmFtZT1wYXJhbWV0ZXJDb250ZW50VHlwZV0nLCAkKHRoaXMuZWwpKS52YWwoKTsKKyAgICAgICQoJy5yZXNwb25zZV90aHJvYmJlcicsICQodGhpcy5lbCkpLnNob3coKTsKKyAgICAgIGlmIChpc0ZpbGVVcGxvYWQpIHsKKyAgICAgICAgJCgnLnJlcXVlc3RfdXJsJywgJCh0aGlzLmVsKSkuaHRtbCgnPHByZT48L3ByZT4nKTsKKyAgICAgICAgJCgnLnJlcXVlc3RfdXJsIHByZScsICQodGhpcy5lbCkpLnRleHQodGhpcy5pbnZvY2F0aW9uVXJsKTsKKworICAgICAgICBvcHRzLnVzZUpRdWVyeSA9IHRydWU7CisgICAgICAgIG1hcC5wYXJhbWV0ZXJDb250ZW50VHlwZSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhJzsKKyAgICAgICAgdGhpcy5tYXAgPSBtYXA7CisgICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmV4ZWN1dGUobWFwLCBvcHRzLCB0aGlzLnNob3dDb21wbGV0ZVN0YXR1cywgdGhpcy5zaG93RXJyb3JTdGF0dXMsIHRoaXMpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5tYXAgPSBtYXA7CisgICAgICAgIHJldHVybiB0aGlzLm1vZGVsLmV4ZWN1dGUobWFwLCBvcHRzLCB0aGlzLnNob3dDb21wbGV0ZVN0YXR1cywgdGhpcy5zaG93RXJyb3JTdGF0dXMsIHRoaXMpOworICAgICAgfQorICAgIH0KKyAgfSwKKworICBnZXRJbnB1dE1hcDogZnVuY3Rpb24gKGZvcm0pIHsKKyAgICB2YXIgbWFwLCByZWYxLCBsLCBsZW4sIG8sIHJlZjIsIG0sIGxlbjEsIHZhbCwgcmVmMywgbiwgbGVuMjsKKyAgICBtYXAgPSB7fTsKKyAgICByZWYxID0gZm9ybS5maW5kKCdpbnB1dCcpOworICAgIGZvciAobCA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBsIDwgbGVuOyBsKyspIHsKKyAgICAgIG8gPSByZWYxW2xdOworICAgICAgaWYgKChvLnZhbHVlICE9PSBudWxsKSAmJiBqUXVlcnkudHJpbShvLnZhbHVlKS5sZW5ndGggPiAwKSB7CisgICAgICAgIG1hcFtvLm5hbWVdID0gby52YWx1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChvLnR5cGUgPT09ICdmaWxlJykgeworICAgICAgICBtYXBbby5uYW1lXSA9IG8uZmlsZXNbMF07CisgICAgICB9CisgICAgfQorICAgIHJlZjIgPSBmb3JtLmZpbmQoJ3RleHRhcmVhJyk7CisgICAgZm9yIChtID0gMCwgbGVuMSA9IHJlZjIubGVuZ3RoOyBtIDwgbGVuMTsgbSsrKSB7CisgICAgICBvID0gcmVmMlttXTsKKyAgICAgIHZhbCA9IHRoaXMuZ2V0VGV4dEFyZWFWYWx1ZShvKTsKKyAgICAgIGlmICgodmFsICE9PSBudWxsKSAmJiBqUXVlcnkudHJpbSh2YWwpLmxlbmd0aCA+IDApIHsKKyAgICAgICAgbWFwW28ubmFtZV0gPSB2YWw7CisgICAgICB9CisgICAgfQorICAgIHJlZjMgPSBmb3JtLmZpbmQoJ3NlbGVjdCcpOworICAgIGZvciAobiA9IDAsIGxlbjIgPSByZWYzLmxlbmd0aDsgbiA8IGxlbjI7IG4rKykgeworICAgICAgbyA9IHJlZjNbbl07CisgICAgICB2YWwgPSB0aGlzLmdldFNlbGVjdGVkVmFsdWUobyk7CisgICAgICBpZiAoKHZhbCAhPT0gbnVsbCkgJiYgalF1ZXJ5LnRyaW0odmFsKS5sZW5ndGggPiAwKSB7CisgICAgICAgIG1hcFtvLm5hbWVdID0gdmFsOworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWFwOworICB9LAorCisgIGlzRmlsZVVwbG9hZDogZnVuY3Rpb24gKGZvcm0pIHsKKyAgICB2YXIgcmVmMSwgbCwgbGVuLCBvOworICAgIHZhciBpc0ZpbGVVcGxvYWQgPSBmYWxzZTsKKyAgICByZWYxID0gZm9ybS5maW5kKCdpbnB1dCcpOworICAgIGZvciAobCA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBsIDwgbGVuOyBsKyspIHsKKyAgICAgIG8gPSByZWYxW2xdOworICAgICAgaWYgKG8udHlwZSA9PT0gJ2ZpbGUnKSB7CisgICAgICAgIGlzRmlsZVVwbG9hZCA9IHRydWU7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBpc0ZpbGVVcGxvYWQ7CisgIH0sCisKKyAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UsIHBhcmVudCkgeworICAgIHBhcmVudC5zaG93Q29tcGxldGVTdGF0dXMocmVzcG9uc2UpOworICB9LAorCisgIC8vIHdyYXBzIGEganF1ZXJ5IHJlc3BvbnNlIGFzIGEgc2hyZWQgcmVzcG9uc2UKKyAgd3JhcDogZnVuY3Rpb24oZGF0YSkgeworICAgIHZhciBoLCBoZWFkZXJBcnJheSwgaGVhZGVycywgaSwgbCwgbGVuLCBvOworICAgIGhlYWRlcnMgPSB7fTsKKyAgICBoZWFkZXJBcnJheSA9IGRhdGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkuc3BsaXQoJ1xyJyk7CisgICAgZm9yIChsID0gMCwgbGVuID0gaGVhZGVyQXJyYXkubGVuZ3RoOyBsIDwgbGVuOyBsKyspIHsKKyAgICAgIGkgPSBoZWFkZXJBcnJheVtsXTsKKyAgICAgIGggPSBpLm1hdGNoKC9eKFteOl0qPyk6KC4qKSQvKTsKKyAgICAgIGlmICghaCkgeworICAgICAgICBoID0gW107CisgICAgICB9CisgICAgICBoLnNoaWZ0KCk7CisgICAgICBpZiAoaFswXSAhPT0gdm9pZCAwICYmIGhbMV0gIT09IHZvaWQgMCkgeworICAgICAgICBoZWFkZXJzW2hbMF0udHJpbSgpXSA9IGhbMV0udHJpbSgpOworICAgICAgfQorICAgIH0KKyAgICBvID0ge307CisgICAgby5jb250ZW50ID0ge307CisgICAgby5jb250ZW50LmRhdGEgPSBkYXRhLnJlc3BvbnNlVGV4dDsKKyAgICBvLmhlYWRlcnMgPSBoZWFkZXJzOworICAgIG8ucmVxdWVzdCA9IHt9OworICAgIG8ucmVxdWVzdC51cmwgPSB0aGlzLmludm9jYXRpb25Vcmw7CisgICAgby5zdGF0dXMgPSBkYXRhLnN0YXR1czsKKyAgICByZXR1cm4gbzsKKyAgfSwKKworICBnZXRTZWxlY3RlZFZhbHVlOiBmdW5jdGlvbihzZWxlY3QpIHsKKyAgICBpZiAoIXNlbGVjdC5tdWx0aXBsZSkgeworICAgICAgcmV0dXJuIHNlbGVjdC52YWx1ZTsKKyAgICB9IGVsc2UgeworICAgICAgdmFyIG9wdGlvbnMgPSBbXTsKKyAgICAgIGZvciAodmFyIGwgPSAwLCBsZW4gPSBzZWxlY3Qub3B0aW9ucy5sZW5ndGg7IGwgPCBsZW47IGwrKykgeworICAgICAgICB2YXIgb3B0ID0gc2VsZWN0Lm9wdGlvbnNbbF07CisgICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHsKKyAgICAgICAgICBvcHRpb25zLnB1c2gob3B0LnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkgeworICAgICAgICByZXR1cm4gb3B0aW9uczsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfQorICAgIH0KKyAgfSwKKworICAvLyBoYW5kbGVyIGZvciBoaWRlIHJlc3BvbnNlIGxpbmsKKyAgaGlkZVJlc3BvbnNlOiBmdW5jdGlvbihlKSB7CisgICAgaWYgKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9CisgICAgJCgnLnJlc3BvbnNlJywgJCh0aGlzLmVsKSkuc2xpZGVVcCgpOworICAgICQoJy5yZXNwb25zZV9oaWRlcicsICQodGhpcy5lbCkpLmZhZGVPdXQoKTsKKyAgfSwKKworICAvLyBTaG93IHJlc3BvbnNlIGZyb20gc2VydmVyCisgIHNob3dSZXNwb25zZTogZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICB2YXIgcHJldHR5SnNvbiA9IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLCBudWxsLCAnXHQnKS5yZXBsYWNlKC9cbi9nLCAnPGJyPicpOworICAgICQoJy5yZXNwb25zZV9ib2R5JywgJCh0aGlzLmVsKSkuaHRtbChfLmVzY2FwZShwcmV0dHlKc29uKSk7CisgIH0sCisKKyAgLy8gU2hvdyBlcnJvciBmcm9tIHNlcnZlcgorICBzaG93RXJyb3JTdGF0dXM6IGZ1bmN0aW9uKGRhdGEsIHBhcmVudCkgeworICAgIHBhcmVudC5zaG93U3RhdHVzKGRhdGEpOworICB9LAorCisgIC8vIHNob3cgdGhlIHN0YXR1cyBjb2RlcworICBzaG93Q29tcGxldGVTdGF0dXM6IGZ1bmN0aW9uKGRhdGEsIHBhcmVudCl7CisgICAgcGFyZW50LnNob3dTdGF0dXMoZGF0YSk7CisgIH0sCisKKyAgLy8gQWRhcHRlZCBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI4OTMyNTkvNDU0MDA0CisgIC8vIE5vdGU6IGRpcmVjdGx5IHBvcnRlZCBmcm9tIENvZmZlZVNjcmlwdAorICAvLyBUT0RPOiBDbGVhbnVwIENvZmZlZVNjcmlwdCBhcnRpZmFjdHMKKyAgZm9ybWF0WG1sOiBmdW5jdGlvbih4bWwpIHsKKyAgICB2YXIgY29udGV4cCwgZm4sIGZvcm1hdHRlZCwgaW5kZW50LCBsLCBsYXN0VHlwZSwgbGVuLCBsaW5lcywgbG4sIHBhZCwgcmVnLCB0cmFuc2l0aW9ucywgd3NleHA7CisgICAgcmVnID0gLyg+KSg8KShcLyopL2c7CisgICAgd3NleHAgPSAvWyBdKiguKilbIF0rXG4vZzsKKyAgICBjb250ZXhwID0gLyg8Lis+KSguK1xuKS9nOworICAgIHhtbCA9IHhtbC5yZXBsYWNlKC9cclxuL2csICdcbicpLnJlcGxhY2UocmVnLCAnJDFcbiQyJDMnKS5yZXBsYWNlKHdzZXhwLCAnJDFcbicpLnJlcGxhY2UoY29udGV4cCwgJyQxXG4kMicpOworICAgIHBhZCA9IDA7CisgICAgZm9ybWF0dGVkID0gJyc7CisgICAgbGluZXMgPSB4bWwuc3BsaXQoJ1xuJyk7CisgICAgaW5kZW50ID0gMDsKKyAgICBsYXN0VHlwZSA9ICdvdGhlcic7CisgICAgdHJhbnNpdGlvbnMgPSB7CisgICAgICAnc2luZ2xlLT5zaW5nbGUnOiAwLAorICAgICAgJ3NpbmdsZS0+Y2xvc2luZyc6IC0xLAorICAgICAgJ3NpbmdsZS0+b3BlbmluZyc6IDAsCisgICAgICAnc2luZ2xlLT5vdGhlcic6IDAsCisgICAgICAnY2xvc2luZy0+c2luZ2xlJzogMCwKKyAgICAgICdjbG9zaW5nLT5jbG9zaW5nJzogLTEsCisgICAgICAnY2xvc2luZy0+b3BlbmluZyc6IDAsCisgICAgICAnY2xvc2luZy0+b3RoZXInOiAwLAorICAgICAgJ29wZW5pbmctPnNpbmdsZSc6IDEsCisgICAgICAnb3BlbmluZy0+Y2xvc2luZyc6IDAsCisgICAgICAnb3BlbmluZy0+b3BlbmluZyc6IDEsCisgICAgICAnb3BlbmluZy0+b3RoZXInOiAxLAorICAgICAgJ290aGVyLT5zaW5nbGUnOiAwLAorICAgICAgJ290aGVyLT5jbG9zaW5nJzogLTEsCisgICAgICAnb3RoZXItPm9wZW5pbmcnOiAwLAorICAgICAgJ290aGVyLT5vdGhlcic6IDAKKyAgICB9OworICAgIGZuID0gZnVuY3Rpb24obG4pIHsKKyAgICAgIHZhciBmcm9tVG8sIGosIGtleSwgcGFkZGluZywgdHlwZSwgdHlwZXMsIHZhbHVlOworICAgICAgdHlwZXMgPSB7CisgICAgICAgIHNpbmdsZTogQm9vbGVhbihsbi5tYXRjaCgvPC4rXC8+LykpLAorICAgICAgICBjbG9zaW5nOiBCb29sZWFuKGxuLm1hdGNoKC88XC8uKz4vKSksCisgICAgICAgIG9wZW5pbmc6IEJvb2xlYW4obG4ubWF0Y2goLzxbXiE/XS4qPi8pKQorICAgICAgfTsKKyAgICAgIHR5cGUgPSAoKGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgcmVzdWx0czsKKyAgICAgICAgcmVzdWx0cyA9IFtdOworICAgICAgICBmb3IgKGtleSBpbiB0eXBlcykgeworICAgICAgICAgIHZhbHVlID0gdHlwZXNba2V5XTsKKyAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaChrZXkpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICAgIH0pKCkpWzBdOworICAgICAgdHlwZSA9IHR5cGUgPT09IHZvaWQgMCA/ICdvdGhlcicgOiB0eXBlOworICAgICAgZnJvbVRvID0gbGFzdFR5cGUgKyAnLT4nICsgdHlwZTsKKyAgICAgIGxhc3RUeXBlID0gdHlwZTsKKyAgICAgIHBhZGRpbmcgPSAnJzsKKyAgICAgIGluZGVudCArPSB0cmFuc2l0aW9uc1tmcm9tVG9dOworICAgICAgcGFkZGluZyA9ICgoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBtLCByZWYxLCByZXN1bHRzOworICAgICAgICByZXN1bHRzID0gW107CisgICAgICAgIGZvciAoaiA9IG0gPSAwLCByZWYxID0gaW5kZW50OyAwIDw9IHJlZjEgPyBtIDwgcmVmMSA6IG0gPiByZWYxOyBqID0gMCA8PSByZWYxID8gKyttIDogLS1tKSB7CisgICAgICAgICAgcmVzdWx0cy5wdXNoKCcgICcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgfSkoKSkuam9pbignJyk7CisgICAgICBpZiAoZnJvbVRvID09PSAnb3BlbmluZy0+Y2xvc2luZycpIHsKKyAgICAgICAgZm9ybWF0dGVkID0gZm9ybWF0dGVkLnN1YnN0cigwLCBmb3JtYXR0ZWQubGVuZ3RoIC0gMSkgKyBsbiArICdcbic7CisgICAgICB9IGVsc2UgeworICAgICAgICBmb3JtYXR0ZWQgKz0gcGFkZGluZyArIGxuICsgJ1xuJzsKKyAgICAgIH0KKyAgICB9OworICAgIGZvciAobCA9IDAsIGxlbiA9IGxpbmVzLmxlbmd0aDsgbCA8IGxlbjsgbCsrKSB7CisgICAgICBsbiA9IGxpbmVzW2xdOworICAgICAgZm4obG4pOworICAgIH0KKyAgICByZXR1cm4gZm9ybWF0dGVkOworICB9LAorCisgIC8vIHB1dHMgdGhlIHJlc3BvbnNlIGRhdGEgaW4gVUkKKyAgc2hvd1N0YXR1czogZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICB2YXIgdXJsLCBjb250ZW50OworICAgIGlmIChyZXNwb25zZS5jb250ZW50ID09PSB1bmRlZmluZWQpIHsKKyAgICAgIGNvbnRlbnQgPSByZXNwb25zZS5kYXRhOworICAgICAgdXJsID0gcmVzcG9uc2UudXJsOworICAgIH0gZWxzZSB7CisgICAgICBjb250ZW50ID0gcmVzcG9uc2UuY29udGVudC5kYXRhOworICAgICAgdXJsID0gcmVzcG9uc2UucmVxdWVzdC51cmw7CisgICAgfQorICAgIHZhciBoZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICBpZih0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHsKKyAgICAgIGNvbnRlbnQgPSBqUXVlcnkudHJpbShjb250ZW50KTsKKyAgICB9CisKKyAgICAvLyBpZiBzZXJ2ZXIgaXMgbmljZSwgYW5kIHNlbmRzIGNvbnRlbnQtdHlwZSBiYWNrLCB3ZSBjYW4gdXNlIGl0CisgICAgdmFyIGNvbnRlbnRUeXBlID0gbnVsbDsKKyAgICBpZiAoaGVhZGVycykgeworICAgICAgY29udGVudFR5cGUgPSBoZWFkZXJzWydDb250ZW50LVR5cGUnXSB8fCBoZWFkZXJzWydjb250ZW50LXR5cGUnXTsKKyAgICAgIGlmIChjb250ZW50VHlwZSkgeworICAgICAgICBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLnNwbGl0KCc7JylbMF0udHJpbSgpOworICAgICAgfQorICAgIH0KKworICAgICQoJy5yZXNwb25zZV9ib2R5JywgJCh0aGlzLmVsKSkucmVtb3ZlQ2xhc3MoJ2pzb24nKTsKKyAgICAkKCcucmVzcG9uc2VfYm9keScsICQodGhpcy5lbCkpLnJlbW92ZUNsYXNzKCd4bWwnKTsKKworICAgIHZhciBzdXBwb3J0c0F1ZGlvUGxheWJhY2sgPSBmdW5jdGlvbihjb250ZW50VHlwZSl7CisgICAgICB2YXIgYXVkaW9FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKTsKKyAgICAgIHJldHVybiAhIShhdWRpb0VsZW1lbnQuY2FuUGxheVR5cGUgJiYgYXVkaW9FbGVtZW50LmNhblBsYXlUeXBlKGNvbnRlbnRUeXBlKS5yZXBsYWNlKC9uby8sICcnKSk7CisgICAgfTsKKworICAgIHZhciBwcmU7CisgICAgdmFyIGNvZGU7CisgICAgdmFyIHNraXBIaWdobGlnaHQgPSBmYWxzZTsKKyAgICBpZiAoIWNvbnRlbnQpIHsKKyAgICAgIGNvZGUgPSAkKCc8Y29kZSAvPicpLnRleHQoJ25vIGNvbnRlbnQnKTsKKyAgICAgIHByZSA9ICQoJzxwcmUgY2xhc3M9Impzb24iIC8+JykuYXBwZW5kKGNvZGUpOworCisgICAgICAvLyBKU09OCisgICAgfSBlbHNlIGlmICgKKyAgICAgICAgY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIHx8CisgICAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSAmJiAoL2F0dGFjaG1lbnQvKS50ZXN0KGhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSkgfHwKKyAgICAgICAgaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddICYmICgvYXR0YWNobWVudC8pLnRlc3QoaGVhZGVyc1snY29udGVudC1kaXNwb3NpdGlvbiddKSB8fAorICAgICAgICBoZWFkZXJzWydDb250ZW50LURlc2NyaXB0aW9uJ10gJiYgKC9GaWxlIFRyYW5zZmVyLykudGVzdChoZWFkZXJzWydDb250ZW50LURlc2NyaXB0aW9uJ10pIHx8CisgICAgICAgIGhlYWRlcnNbJ2NvbnRlbnQtZGVzY3JpcHRpb24nXSAmJiAoL0ZpbGUgVHJhbnNmZXIvKS50ZXN0KGhlYWRlcnNbJ2NvbnRlbnQtZGVzY3JpcHRpb24nXSkpIHsKKworICAgICAgaWYgKCdCbG9iJyBpbiB3aW5kb3cpIHsKKyAgICAgICAgdmFyIHR5cGUgPSBjb250ZW50VHlwZSB8fCAndGV4dC9odG1sJzsKKyAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAgICAgIHZhciBocmVmOworCisgICAgICAgIGlmKHt9LnRvU3RyaW5nLmFwcGx5KGNvbnRlbnQpID09PSAnW29iamVjdCBCbG9iXScpIHsKKyAgICAgICAgICBocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoY29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFyIGJpbmFyeURhdGEgPSBbXTsKKyAgICAgICAgICBiaW5hcnlEYXRhLnB1c2goY29udGVudCk7CisgICAgICAgICAgaHJlZiA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKGJpbmFyeURhdGEsIHt0eXBlOiB0eXBlfSkpOworICAgICAgICB9CisgICAgICAgIHZhciBmaWxlTmFtZSA9IHJlc3BvbnNlLnVybC5zdWJzdHIocmVzcG9uc2UudXJsLmxhc3RJbmRleE9mKCcvJykgKyAxKTsKKyAgICAgICAgdmFyIGRvd25sb2FkID0gW3R5cGUsIGZpbGVOYW1lLCBocmVmXS5qb2luKCc6Jyk7CisKKyAgICAgICAgLy8gVXNlIGZpbGVuYW1lIGZyb20gcmVzcG9uc2UgaGVhZGVyCisgICAgICAgIHZhciBkaXNwb3NpdGlvbiA9IGhlYWRlcnNbJ2NvbnRlbnQtZGlzcG9zaXRpb24nXSB8fCBoZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ107CisgICAgICAgIGlmKHR5cGVvZiBkaXNwb3NpdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICB2YXIgcmVzcG9uc2VGaWxlbmFtZSA9IC9maWxlbmFtZT0oW147XSopOz8vLmV4ZWMoZGlzcG9zaXRpb24pOworICAgICAgICAgIGlmKHJlc3BvbnNlRmlsZW5hbWUgIT09IG51bGwgJiYgcmVzcG9uc2VGaWxlbmFtZS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBkb3dubG9hZCA9IHJlc3BvbnNlRmlsZW5hbWVbMV07CisgICAgICAgICAgICBmaWxlTmFtZSA9IGRvd25sb2FkOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGEuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7CisgICAgICAgIGEuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGRvd25sb2FkKTsKKyAgICAgICAgYS5pbm5lclRleHQgPSAnRG93bmxvYWQgJyArIGZpbGVOYW1lOworCisgICAgICAgIHByZSA9ICQoJzxkaXYvPicpLmFwcGVuZChhKTsKKyAgICAgICAgc2tpcEhpZ2hsaWdodCA9IHRydWU7CisgICAgICB9IGVsc2UgeworICAgICAgICBwcmUgPSAkKCc8cHJlIGNsYXNzPSJqc29uIiAvPicpLmFwcGVuZCgnRG93bmxvYWQgaGVhZGVycyBkZXRlY3RlZCBidXQgeW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZG93bmxvYWRpbmcgYmluYXJ5IHZpYSBYSFIgKEJsb2IpLicpOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJyB8fCAvXCtqc29uJC8udGVzdChjb250ZW50VHlwZSkpIHsKKyAgICAgIHZhciBqc29uID0gbnVsbDsKKyAgICAgIHRyeSB7CisgICAgICAgIGpzb24gPSBKU09OLnN0cmluZ2lmeShKU09OLnBhcnNlKGNvbnRlbnQpLCBudWxsLCAnICAnKTsKKyAgICAgIH0gY2F0Y2ggKF9lcnJvcikgeworICAgICAgICBqc29uID0gJ2NhblwndCBwYXJzZSBKU09OLiAgUmF3IHJlc3VsdDpcblxuJyArIGNvbnRlbnQ7CisgICAgICB9CisgICAgICBjb2RlID0gJCgnPGNvZGUgLz4nKS50ZXh0KGpzb24pOworICAgICAgcHJlID0gJCgnPHByZSBjbGFzcz0ianNvbiIgLz4nKS5hcHBlbmQoY29kZSk7CisKKyAgICAgIC8vIFhNTAorICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi94bWwnIHx8IC9cK3htbCQvLnRlc3QoY29udGVudFR5cGUpKSB7CisgICAgICBjb2RlID0gJCgnPGNvZGUgLz4nKS50ZXh0KHRoaXMuZm9ybWF0WG1sKGNvbnRlbnQpKTsKKyAgICAgIHByZSA9ICQoJzxwcmUgY2xhc3M9InhtbCIgLz4nKS5hcHBlbmQoY29kZSk7CisKKyAgICAgIC8vIEhUTUwKKyAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlID09PSAndGV4dC9odG1sJykgeworICAgICAgY29kZSA9ICQoJzxjb2RlIC8+JykuaHRtbChfLmVzY2FwZShjb250ZW50KSk7CisgICAgICBwcmUgPSAkKCc8cHJlIGNsYXNzPSJ4bWwiIC8+JykuYXBwZW5kKGNvZGUpOworCisgICAgICAvLyBQbGFpbiBUZXh0CisgICAgfSBlbHNlIGlmICgvdGV4dFwvcGxhaW4vLnRlc3QoY29udGVudFR5cGUpKSB7CisgICAgICBjb2RlID0gJCgnPGNvZGUgLz4nKS50ZXh0KGNvbnRlbnQpOworICAgICAgcHJlID0gJCgnPHByZSBjbGFzcz0icGxhaW4iIC8+JykuYXBwZW5kKGNvZGUpOworCisgICAgICAvLyBJbWFnZQorICAgIH0gZWxzZSBpZiAoL15pbWFnZVwvLy50ZXN0KGNvbnRlbnRUeXBlKSkgeworICAgICAgdmFyIHVybENyZWF0b3IgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7CisgICAgICB2YXIgaW1hZ2VVcmwgPSB1cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChjb250ZW50KTsKKworICAgICAgcHJlID0gJCgnPGltZz4nKS5hdHRyKCAnc3JjJywgaW1hZ2VVcmwpOworICAgICAgLy8gQXVkaW8KKyAgICB9IGVsc2UgaWYgKC9eYXVkaW9cLy8udGVzdChjb250ZW50VHlwZSkgJiYgc3VwcG9ydHNBdWRpb1BsYXliYWNrKGNvbnRlbnRUeXBlKSkgeworICAgICAgcHJlID0gJCgnPGF1ZGlvIGNvbnRyb2xzPicpLmFwcGVuZCgkKCc8c291cmNlPicpLmF0dHIoJ3NyYycsIHVybCkuYXR0cigndHlwZScsIGNvbnRlbnRUeXBlKSk7CisgICAgfSBlbHNlIGlmKGhlYWRlcnMubG9jYXRpb24gfHwgaGVhZGVycy5Mb2NhdGlvbikgeworICAgICAgLy8gTG9jYXRpb24gaGVhZGVyIGJhc2VkIHJlZGlyZWN0IGRvd25sb2FkCisgICAgICB3aW5kb3cubG9jYXRpb24gPSByZXNwb25zZS51cmw7CisKKyAgICAgIC8vIEFueXRoaW5nIGVsc2UgKENPUlMpCisgICAgfSBlbHNlIHsKKyAgICAgIGNvZGUgPSAkKCc8Y29kZSAvPicpLnRleHQoY29udGVudCk7CisgICAgICBwcmUgPSAkKCc8cHJlIGNsYXNzPSJqc29uIiAvPicpLmFwcGVuZChjb2RlKTsKKyAgICB9CisgICAgdmFyIHJlc3BvbnNlX2JvZHkgPSBwcmU7CisgICAgJCgnLnJlcXVlc3RfdXJsJywgJCh0aGlzLmVsKSkuaHRtbCgnPHByZT48L3ByZT4nKTsKKyAgICAkKCcucmVxdWVzdF91cmwgcHJlJywgJCh0aGlzLmVsKSkudGV4dCh1cmwpOworICAgICQoJy5yZXNwb25zZV9jb2RlJywgJCh0aGlzLmVsKSkuaHRtbCgnPHByZT4nICsgcmVzcG9uc2Uuc3RhdHVzICsgJzwvcHJlPicpOworICAgICQoJy5yZXNwb25zZV9ib2R5JywgJCh0aGlzLmVsKSkuaHRtbChyZXNwb25zZV9ib2R5KTsKKyAgICAkKCcucmVzcG9uc2VfaGVhZGVycycsICQodGhpcy5lbCkpLmh0bWwoJzxwcmU+JyArIF8uZXNjYXBlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmhlYWRlcnMsIG51bGwsICcgICcpKS5yZXBsYWNlKC9cbi9nLCAnPGJyPicpICsgJzwvcHJlPicpOworICAgICQoJy5yZXNwb25zZScsICQodGhpcy5lbCkpLnNsaWRlRG93bigpOworICAgICQoJy5yZXNwb25zZV9oaWRlcicsICQodGhpcy5lbCkpLnNob3coKTsKKyAgICAkKCcucmVzcG9uc2VfdGhyb2JiZXInLCAkKHRoaXMuZWwpKS5oaWRlKCk7CisKKworICAgIC8vIGFkZHMgY3VybCBvdXRwdXQKKyAgICB2YXIgY3VybENvbW1hbmQgPSB0aGlzLm1vZGVsLmFzQ3VybCh0aGlzLm1hcCwge3Jlc3BvbnNlQ29udGVudFR5cGU6IGNvbnRlbnRUeXBlfSk7CisgICAgY3VybENvbW1hbmQgPSBjdXJsQ29tbWFuZC5yZXBsYWNlKCchJywgJyYjMzM7Jyk7CisgICAgJCggJ2Rpdi5jdXJsJywgJCh0aGlzLmVsKSkuaHRtbCgnPHByZT4nICsgXy5lc2NhcGUoY3VybENvbW1hbmQpICsgJzwvcHJlPicpOworCisgICAgLy8gb25seSBoaWdobGlnaHQgdGhlIHJlc3BvbnNlIGlmIHJlc3BvbnNlIGlzIGxlc3MgdGhhbiB0aHJlc2hvbGQsIGRlZmF1bHQgc3RhdGUgaXMgaGlnaGxpZ2h0IHJlc3BvbnNlCisgICAgdmFyIG9wdHMgPSB0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnM7CisKKyAgICBpZiAob3B0cy5zaG93UmVxdWVzdEhlYWRlcnMpIHsKKyAgICAgIHZhciBmb3JtID0gJCgnLnNhbmRib3gnLCAkKHRoaXMuZWwpKSwKKyAgICAgICAgICBtYXAgPSB0aGlzLmdldElucHV0TWFwKGZvcm0pLAorICAgICAgICAgIHJlcXVlc3RIZWFkZXJzID0gdGhpcy5tb2RlbC5nZXRIZWFkZXJQYXJhbXMobWFwKTsKKyAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1snQ29udGVudC1UeXBlJ107CisgICAgICAkKCcucmVxdWVzdF9oZWFkZXJzJywgJCh0aGlzLmVsKSkuaHRtbCgnPHByZT4nICsgXy5lc2NhcGUoSlNPTi5zdHJpbmdpZnkocmVxdWVzdEhlYWRlcnMsIG51bGwsICcgICcpKS5yZXBsYWNlKC9cbi9nLCAnPGJyPicpICsgJzwvcHJlPicpOworICAgIH0KKworICAgIC8vIENhbGwgdXNlci1kZWZpbmVkIGhvb2sKKyAgICBpZiAob3B0cy5yZXNwb25zZUhvb2tzICYmIG9wdHMucmVzcG9uc2VIb29rc1t0aGlzLm5pY2tuYW1lXSkgeworICAgICAgb3B0cy5yZXNwb25zZUhvb2tzW3RoaXMubmlja25hbWVdKHJlc3BvbnNlLCB0aGlzKTsKKyAgICB9CisKKyAgICB2YXIgcmVzcG9uc2VfYm9keV9lbCA9ICQoJy5yZXNwb25zZV9ib2R5JywgJCh0aGlzLmVsKSlbMF07CisgICAgLy8gb25seSBoaWdobGlnaHQgdGhlIHJlc3BvbnNlIGlmIHJlc3BvbnNlIGlzIGxlc3MgdGhhbiB0aHJlc2hvbGQsIGRlZmF1bHQgc3RhdGUgaXMgaGlnaGxpZ2h0IHJlc3BvbnNlCisgICAgaWYgKG9wdHMuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZCAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiBvcHRzLmhpZ2hsaWdodFNpemVUaHJlc2hvbGQgfHwgc2tpcEhpZ2hsaWdodCkgeworICAgICAgcmV0dXJuIHJlc3BvbnNlX2JvZHlfZWw7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodEJsb2NrKHJlc3BvbnNlX2JvZHlfZWwpOworICAgIH0KKyAgfSwKKworICB0b2dnbGVPcGVyYXRpb25Db250ZW50OiBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICB2YXIgZWxlbSA9ICQoJyMnICsgRG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUodGhpcy5wYXJlbnRJZCArICdfJyArIHRoaXMubmlja25hbWUgKyAnX2NvbnRlbnQnKSk7CisgICAgaWYgKGVsZW0uaXMoJzp2aXNpYmxlJykpeworICAgICAgJC5iYnEucHVzaFN0YXRlKCcjLycsIDIpOworICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgIERvY3MuY29sbGFwc2VPcGVyYXRpb24oZWxlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgIERvY3MuZXhwYW5kT3BlcmF0aW9uKGVsZW0pOworICAgIH0KKyAgfSwKKworICBnZXRUZXh0QXJlYVZhbHVlOiBmdW5jdGlvbih0ZXh0QXJlYSkgeworICAgIHZhciBwYXJhbSwgcGFyc2VkLCByZXN1bHQsIGk7CisgICAgaWYgKHRleHRBcmVhLnZhbHVlID09PSBudWxsIHx8IGpRdWVyeS50cmltKHRleHRBcmVhLnZhbHVlKS5sZW5ndGggPT09IDApIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBwYXJhbSA9IHRoaXMuZ2V0UGFyYW1CeU5hbWUodGV4dEFyZWEubmFtZSk7CisgICAgaWYgKHBhcmFtICYmIHBhcmFtLnR5cGUgJiYgcGFyYW0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAnYXJyYXknKSB7CisgICAgICBwYXJzZWQgPSB0ZXh0QXJlYS52YWx1ZS5zcGxpdCgnXG4nKTsKKyAgICAgIHJlc3VsdCA9IFtdOworICAgICAgZm9yIChpID0gMDsgaSA8IHBhcnNlZC5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAocGFyc2VkW2ldICE9PSBudWxsICYmIGpRdWVyeS50cmltKHBhcnNlZFtpXSkubGVuZ3RoID4gMCkgeworICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlZFtpXSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCA6IG51bGw7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0ZXh0QXJlYS52YWx1ZTsKKyAgICB9CisgIH0sCisKKyAgc2hvd1NuaXBwZXQ6IGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgY29udGVudFR5cGVFbCA9IHRoaXMuJCgnW25hbWU9cmVzcG9uc2VDb250ZW50VHlwZV0nKTsKKyAgICB2YXIgeG1sU25pcHBldEVsID0gdGhpcy4kKCcub3BlcmF0aW9uLXN0YXR1cyAuc25pcHBldF94bWwsIC5yZXNwb25zZS1jbGFzcyAuc25pcHBldF94bWwnKTsKKyAgICB2YXIganNvblNuaXBwZXRFbCA9IHRoaXMuJCgnLm9wZXJhdGlvbi1zdGF0dXMgLnNuaXBwZXRfanNvbiwgLnJlc3BvbnNlLWNsYXNzIC5zbmlwcGV0X2pzb24nKTsKKyAgICB2YXIgY29udGVudFR5cGU7CisKKyAgICBpZiAoIWNvbnRlbnRUeXBlRWwubGVuZ3RoKSB7IHJldHVybjsgfQorICAgIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGVFbC52YWwoKTsKKworICAgIGlmIChjb250ZW50VHlwZS5pbmRleE9mKCd4bWwnKSA+IC0xKSB7CisgICAgICB4bWxTbmlwcGV0RWwuc2hvdygpOworICAgICAganNvblNuaXBwZXRFbC5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGpzb25TbmlwcGV0RWwuc2hvdygpOworICAgICAgeG1sU25pcHBldEVsLmhpZGUoKTsKKyAgICB9CisgIH0sCisKKyAgZ2V0UGFyYW1CeU5hbWU6IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICB2YXIgaTsKKyAgICBpZiAodGhpcy5tb2RlbC5wYXJhbWV0ZXJzKSB7CisgICAgICBmb3IoaSA9IDA7IGkgPCB0aGlzLm1vZGVsLnBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHRoaXMubW9kZWwucGFyYW1ldGVyc1tpXS5uYW1lID09PSBuYW1lKSB7CisgICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwucGFyYW1ldGVyc1tpXTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbnVsbDsKKyAgfQorCit9KTsKKworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuUGFyYW1ldGVyQ29udGVudFR5cGVWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBpbml0aWFsaXplOiBmdW5jdGlvbiAgKCkge30sCisKKyAgcmVuZGVyOiBmdW5jdGlvbigpeworICAgIHRoaXMubW9kZWwucGFyYW1ldGVyQ29udGVudFR5cGVJZCA9ICdwY3QnICsgTWF0aC5yYW5kb20oKTsKKyAgICAkKHRoaXMuZWwpLmh0bWwoSGFuZGxlYmFycy50ZW1wbGF0ZXMucGFyYW1ldGVyX2NvbnRlbnRfdHlwZSh0aGlzLm1vZGVsKSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KKworfSk7CisndXNlIHN0cmljdCc7CisKK1N3YWdnZXJVaS5WaWV3cy5QYXJhbWV0ZXJWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBldmVudHM6IHsKKyAgICAnY2hhbmdlIFtuYW1lPXBhcmFtZXRlckNvbnRlbnRUeXBlXScgOiAndG9nZ2xlUGFyYW1ldGVyU25pcHBldCcKKyAgfSwKKworICBpbml0aWFsaXplOiBmdW5jdGlvbigpeworICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lzQXJyYXknLCBmdW5jdGlvbihwYXJhbSwgb3B0cykgeworICAgICAgdmFyIHBhcmFtVHlwZSA9IHBhcmFtLnR5cGUgJiYgcGFyYW0udHlwZS50b0xvd2VyQ2FzZSgpOworICAgICAgaWYgKHBhcmFtVHlwZSA9PT0gJ2FycmF5JyB8fCBwYXJhbS5hbGxvd011bHRpcGxlKSB7CisgICAgICAgIHJldHVybiBvcHRzLmZuKHRoaXMpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG9wdHMuaW52ZXJzZSh0aGlzKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwKKworICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgIHZhciB0eXBlID0gdGhpcy5tb2RlbC50eXBlIHx8IHRoaXMubW9kZWwuZGF0YVR5cGU7CisgICAgdmFyIG1vZGVsVHlwZSA9IHRoaXMubW9kZWwubW9kZWxTaWduYXR1cmUudHlwZTsKKyAgICB2YXIgbW9kZWxEZWZpbml0aW9ucyA9IHRoaXMubW9kZWwubW9kZWxTaWduYXR1cmUuZGVmaW5pdGlvbnM7CisgICAgdmFyIHNjaGVtYSA9IHRoaXMubW9kZWwuc2NoZW1hIHx8IHt9OworICAgIHZhciBjb25zdW1lcyA9IHRoaXMubW9kZWwuY29uc3VtZXMgfHwgW107CisgICAgdmFyIHNhbXBsZUpTT04sIHNpZ25hdHVyZVZpZXc7CisKKyAgICBpZiAodHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICBpZiAoc2NoZW1hLiRyZWYpIHsKKyAgICAgICAgdmFyIHJlZiA9IHNjaGVtYS4kcmVmOworICAgICAgICBpZiAocmVmLmluZGV4T2YoJyMvZGVmaW5pdGlvbnMvJykgPT09IDApIHsKKyAgICAgICAgICB0eXBlID0gcmVmLnN1YnN0cmluZygnIy9kZWZpbml0aW9ucy8nLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgdHlwZSA9IHJlZjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHRoaXMubW9kZWwudHlwZSA9IHR5cGU7CisgICAgdGhpcy5tb2RlbC5wYXJhbVR5cGUgPSB0aGlzLm1vZGVsLmluIHx8IHRoaXMubW9kZWwucGFyYW1UeXBlOworICAgIHRoaXMubW9kZWwuaXNCb2R5ID0gdGhpcy5tb2RlbC5wYXJhbVR5cGUgPT09ICdib2R5JyB8fCB0aGlzLm1vZGVsLmluID09PSAnYm9keSc7CisgICAgdGhpcy5tb2RlbC5pc0ZpbGUgPSB0eXBlICYmIHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZpbGUnOworCisgICAgLy8gQWxsb3cgZm9yIGRlZmF1bHQgPT09IGZhbHNlCisgICAgaWYodHlwZW9mIHRoaXMubW9kZWwuZGVmYXVsdCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIHRoaXMubW9kZWwuZGVmYXVsdCA9IHRoaXMubW9kZWwuZGVmYXVsdFZhbHVlOworICAgIH0KKworICAgIHRoaXMubW9kZWwuaGFzRGVmYXVsdCA9ICh0eXBlb2YgdGhpcy5tb2RlbC5kZWZhdWx0ICE9PSAndW5kZWZpbmVkJyk7CisgICAgdGhpcy5tb2RlbC52YWx1ZUlkID0gJ20nICsgdGhpcy5tb2RlbC5uYW1lICsgTWF0aC5yYW5kb20oKTsKKworICAgIGlmICh0aGlzLm1vZGVsLmFsbG93YWJsZVZhbHVlcykgeworICAgICAgdGhpcy5tb2RlbC5pc0xpc3QgPSB0cnVlOworICAgIH0KKworICAgIHZhciBpc1hNTCA9IHRoaXMuY29udGFpbnMoY29uc3VtZXMsICd4bWwnKTsKKyAgICB2YXIgaXNKU09OID0gaXNYTUwgPyB0aGlzLmNvbnRhaW5zKGNvbnN1bWVzLCAnanNvbicpIDogdHJ1ZTsKKyAgICBzYW1wbGVKU09OID0gU3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5jcmVhdGVQYXJhbWV0ZXJKU09OU2FtcGxlKG1vZGVsVHlwZSwgbW9kZWxEZWZpbml0aW9ucyk7CisKKyAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlKCk7CisgICAgJCh0aGlzLmVsKS5odG1sKHRlbXBsYXRlKHRoaXMubW9kZWwpKTsKKworICAgIHZhciBzaWduYXR1cmVNb2RlbCA9IHsKKyAgICAgIHNhbXBsZUpTT046IGlzSlNPTiA/IHNhbXBsZUpTT04gOiBmYWxzZSwKKyAgICAgIHNhbXBsZVhNTDogc2FtcGxlSlNPTiAmJiBpc1hNTCA/IFN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuY3JlYXRlWE1MU2FtcGxlKCcnLCBzY2hlbWEsIG1vZGVsRGVmaW5pdGlvbnMsIHRydWUpIDogZmFsc2UsCisgICAgICBpc1BhcmFtOiB0cnVlLAorICAgICAgc2lnbmF0dXJlOiBTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmdldFBhcmFtZXRlck1vZGVsU2lnbmF0dXJlKG1vZGVsVHlwZSwgbW9kZWxEZWZpbml0aW9ucyksCisgICAgICBkZWZhdWx0UmVuZGVyaW5nOiB0aGlzLm1vZGVsLmRlZmF1bHRSZW5kZXJpbmcKKyAgICB9OworCisgICAgaWYgKHNhbXBsZUpTT04pIHsKKyAgICAgIHNpZ25hdHVyZVZpZXcgPSBuZXcgU3dhZ2dlclVpLlZpZXdzLlNpZ25hdHVyZVZpZXcoe21vZGVsOiBzaWduYXR1cmVNb2RlbCwgdGFnTmFtZTogJ2Rpdid9KTsKKyAgICAgICQoJy5tb2RlbC1zaWduYXR1cmUnLCAkKHRoaXMuZWwpKS5hcHBlbmQoc2lnbmF0dXJlVmlldy5yZW5kZXIoKS5lbCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgJCgnLm1vZGVsLXNpZ25hdHVyZScsICQodGhpcy5lbCkpLmh0bWwodGhpcy5tb2RlbC5zaWduYXR1cmUpOworICAgIH0KKworICAgIHZhciBpc1BhcmFtID0gZmFsc2U7CisKKyAgICBpZiggdGhpcy5vcHRpb25zLnN3YWdnZXJPcHRpb25zLmpzb25FZGl0b3IgJiYgdGhpcy5tb2RlbC5pc0JvZHkgJiYgdGhpcy5tb2RlbC5zY2hlbWEpeworICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKTsKKyAgICAgIHRoaXMubW9kZWwuanNvbkVkaXRvciA9CisgICAgICAgIC8qIGdsb2JhbCBKU09ORWRpdG9yICovCisgICAgICAgIG5ldyBKU09ORWRpdG9yKCQoJy5lZGl0b3JfaG9sZGVyJywgJHNlbGYpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICB7c2NoZW1hOiB0aGlzLm1vZGVsLnNjaGVtYSwgc3RhcnR2YWwgOiB0aGlzLm1vZGVsLmRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICBhamF4OnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX3Byb3BlcnRpZXM6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVfZWRpdF9qc29uOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpY29ubGliOiAnc3dhZ2dlcicgfSk7CisgICAgICAvLyBUaGlzIGlzIHNvIHRoYXQgdGhlIHNpZ25hdHVyZSBjYW4gc2VuZCBiYWNrIHRoZSBzYW1wbGUgdG8gdGhlIGpzb24gZWRpdG9yCisgICAgICAvLyBUT0RPOiBTaWduYXR1cmVWaWV3IHNob3VsZCBleHBvc2UgYW4gZXZlbnQgIm9uU2FtcGxlQ2xpY2tlZCIgaW5zdGVhZAorICAgICAgc2lnbmF0dXJlTW9kZWwuanNvbkVkaXRvciA9IHRoaXMubW9kZWwuanNvbkVkaXRvcjsKKyAgICAgICQoJy5ib2R5LXRleHRhcmVhJywgJHNlbGYpLmhpZGUoKTsKKyAgICAgICQoJy5lZGl0b3JfaG9sZGVyJywgJHNlbGYpLnNob3coKTsKKyAgICAgICQoJy5wYXJhbWV0ZXItY29udGVudC10eXBlJywgJHNlbGYpCisgICAgICAgIC5jaGFuZ2UoZnVuY3Rpb24oZSl7CisgICAgICAgICAgICBpZihlLnRhcmdldC52YWx1ZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcpeworICAgICAgICAgICAgICAkKCcuYm9keS10ZXh0YXJlYScsICRzZWxmKS5zaG93KCk7CisgICAgICAgICAgICAgICQoJy5lZGl0b3JfaG9sZGVyJywgJHNlbGYpLmhpZGUoKTsKKyAgICAgICAgICAgICAgdGhpcy5tb2RlbC5qc29uRWRpdG9yLmRpc2FibGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAkKCcuYm9keS10ZXh0YXJlYScsICRzZWxmKS5oaWRlKCk7CisgICAgICAgICAgICAgICQoJy5lZGl0b3JfaG9sZGVyJywgJHNlbGYpLnNob3coKTsKKyAgICAgICAgICAgICAgdGhpcy5tb2RlbC5qc29uRWRpdG9yLmVuYWJsZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKworCisgICAgaWYgKHRoaXMubW9kZWwuaXNCb2R5KSB7CisgICAgICBpc1BhcmFtID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2YXIgY29udGVudFR5cGVNb2RlbCA9IHsKKyAgICAgIGlzUGFyYW06IGlzUGFyYW0KKyAgICB9OworCisgICAgY29udGVudFR5cGVNb2RlbC5jb25zdW1lcyA9IHRoaXMubW9kZWwuY29uc3VtZXM7CisKKyAgICBpZiAoaXNQYXJhbSkgeworICAgICAgdmFyIHBhcmFtZXRlckNvbnRlbnRUeXBlVmlldyA9IG5ldyBTd2FnZ2VyVWkuVmlld3MuUGFyYW1ldGVyQ29udGVudFR5cGVWaWV3KHttb2RlbDogY29udGVudFR5cGVNb2RlbH0pOworICAgICAgJCgnLnBhcmFtZXRlci1jb250ZW50LXR5cGUnLCAkKHRoaXMuZWwpKS5hcHBlbmQocGFyYW1ldGVyQ29udGVudFR5cGVWaWV3LnJlbmRlcigpLmVsKTsKKyAgICAgIHRoaXMudG9nZ2xlUGFyYW1ldGVyU25pcHBldCgpOworICAgIH0KKworICAgIGVsc2UgeworICAgICAgdmFyIHJlc3BvbnNlQ29udGVudFR5cGVWaWV3ID0gbmV3IFN3YWdnZXJVaS5WaWV3cy5SZXNwb25zZUNvbnRlbnRUeXBlVmlldyh7bW9kZWw6IGNvbnRlbnRUeXBlTW9kZWx9KTsKKyAgICAgICQoJy5yZXNwb25zZS1jb250ZW50LXR5cGUnLCAkKHRoaXMuZWwpKS5hcHBlbmQocmVzcG9uc2VDb250ZW50VHlwZVZpZXcucmVuZGVyKCkuZWwpOworICAgICAgdGhpcy50b2dnbGVSZXNwb25zZVNuaXBwZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICBjb250YWluczogZnVuY3Rpb24gKGNvbnN1bWVzLCB0eXBlKSB7CisgICAgcmV0dXJuIGNvbnN1bWVzLmZpbHRlcihmdW5jdGlvbiAodmFsKSB7CisgICAgICBpZiAodmFsLmluZGV4T2YodHlwZSkgPiAtMSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICB9KS5sZW5ndGg7CisgIH0sCisKKyAgdG9nZ2xlUGFyYW1ldGVyU25pcHBldDogZnVuY3Rpb24gKCkgeworICAgIHZhciBjb250ZW50VHlwZSA9IHRoaXMuJCgnW25hbWU9cGFyYW1ldGVyQ29udGVudFR5cGVdJykudmFsKCk7CisKKyAgICB0aGlzLnRvZ2dsZVNuaXBwZXQoY29udGVudFR5cGUpOworICB9LAorCisgIHRvZ2dsZVJlc3BvbnNlU25pcHBldDogZnVuY3Rpb24gKCkgeworICAgIHZhciBjb250ZW50RWwgPSB0aGlzLiQoJ1tuYW1lPXJlc3BvbnNlQ29udGVudFR5cGVdJyk7CisKKyAgICBpZiAoIWNvbnRlbnRFbC5sZW5ndGgpIHsgcmV0dXJuOyB9CisKKyAgICB0aGlzLnRvZ2dsZVNuaXBwZXQoY29udGVudEVsLnZhbCgpKTsKKyAgfSwKKworICB0b2dnbGVTbmlwcGV0OiBmdW5jdGlvbiAodHlwZSkgeworICAgIHR5cGUgPSB0eXBlIHx8ICcnOworICAgIGlmICh0eXBlLmluZGV4T2YoJ3htbCcpID4gLTEpIHsKKyAgICAgIHRoaXMuJCgnLnNuaXBwZXRfeG1sJykuc2hvdygpOworICAgICAgdGhpcy4kKCcuc25pcHBldF9qc29uJykuaGlkZSgpOworICAgIH0gZWxzZSB7CisgICAgICB0aGlzLiQoJy5zbmlwcGV0X2pzb24nKS5zaG93KCk7CisgICAgICB0aGlzLiQoJy5zbmlwcGV0X3htbCcpLmhpZGUoKTsKKyAgICB9CisgIH0sCisKKyAgLy8gUmV0dXJuIGFuIGFwcHJvcHJpYXRlIHRlbXBsYXRlIGJhc2VkIG9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgYSBsaXN0LCByZWFkb25seSwgcmVxdWlyZWQKKyAgdGVtcGxhdGU6IGZ1bmN0aW9uKCl7CisgICAgaWYgKHRoaXMubW9kZWwuaXNMaXN0KSB7CisgICAgICByZXR1cm4gSGFuZGxlYmFycy50ZW1wbGF0ZXMucGFyYW1fbGlzdDsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWFkT25seSkgeworICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXF1aXJlZCkgeworICAgICAgICAgIHJldHVybiBIYW5kbGViYXJzLnRlbXBsYXRlcy5wYXJhbV9yZWFkb25seV9yZXF1aXJlZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXR1cm4gSGFuZGxlYmFycy50ZW1wbGF0ZXMucGFyYW1fcmVhZG9ubHk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcXVpcmVkKSB7CisgICAgICAgICAgcmV0dXJuIEhhbmRsZWJhcnMudGVtcGxhdGVzLnBhcmFtX3JlcXVpcmVkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBIYW5kbGViYXJzLnRlbXBsYXRlcy5wYXJhbTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorfSk7CisKKyd1c2Ugc3RyaWN0JzsKKworLyoganNoaW50IC1XMTIyICovCitTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlID0gKGZ1bmN0aW9uICgpIHsKKyAgLy8gY29weS1wYXN0ZWQgZnJvbSBzd2FnZ2VyLWpzCisgIHZhciByZXNvbHZlU2NoZW1hID0gZnVuY3Rpb24gKHNjaGVtYSkgeworICAgIGlmIChfLmlzUGxhaW5PYmplY3Qoc2NoZW1hLnNjaGVtYSkpIHsKKyAgICAgIHNjaGVtYSA9IHJlc29sdmVTY2hlbWEoc2NoZW1hLnNjaGVtYSk7CisgICAgfQorCisgICAgcmV0dXJuIHNjaGVtYTsKKyAgfTsKKworICAvLyBjb3B5LXBhc3RlZCBmcm9tIHN3YWdnZXItanMKKyAgdmFyIHNpbXBsZVJlZiA9IGZ1bmN0aW9uIChuYW1lKSB7CisgICAgaWYgKHR5cGVvZiBuYW1lID09PSAndW5kZWZpbmVkJykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgaWYgKG5hbWUuaW5kZXhPZignIy9kZWZpbml0aW9ucy8nKSA9PT0gMCkgeworICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyaW5nKCcjL2RlZmluaXRpb25zLycubGVuZ3RoKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorICB9OworCisgIC8vIGNvcHktcGFzdGVkIGZyb20gc3dhZ2dlci1qcworICB2YXIgZ2V0SW5saW5lTW9kZWwgPSBmdW5jdGlvbihpbmxpbmVTdHIpIHsKKyAgICBpZigvXklubGluZSBNb2RlbCBcZCskLy50ZXN0KGlubGluZVN0cikgJiYgdGhpcy5pbmxpbmVNb2RlbHMpIHsKKyAgICAgIHZhciBpZCA9IHBhcnNlSW50KGlubGluZVN0ci5zdWJzdHIoJ0lubGluZSBNb2RlbCcubGVuZ3RoKS50cmltKCksMTApOyAvLworICAgICAgdmFyIG1vZGVsID0gdGhpcy5pbmxpbmVNb2RlbHNbaWRdOworICAgICAgcmV0dXJuIG1vZGVsOworICAgIH0KKyAgICAvLyBJJ20gcmV0dXJuaW5nIG51bGwgaGVyZSwgc2hvdWxkIEkgcmF0aGVyIHRocm93IGFuIGVycm9yPworICAgIHJldHVybiBudWxsOworICB9OworCisgIC8vIGNvcHktcGFzdGVkIGZyb20gc3dhZ2dlci1qcworICB2YXIgZm9ybWF0WG1sID0gZnVuY3Rpb24oeG1sKSB7CisgICAgdmFyIGNvbnRleHAsIGZuLCBmb3JtYXR0ZWQsIGluZGVudCwgbCwgbGFzdFR5cGUsIGxlbiwgbGluZXMsIGxuLCBwYWQsIHJlZywgdHJhbnNpdGlvbnMsIHdzZXhwOworICAgIHJlZyA9IC8oPikoPCkoXC8qKS9nOworICAgIHdzZXhwID0gL1sgXSooLiopWyBdK1xuL2c7CisgICAgY29udGV4cCA9IC8oPC4rPikoLitcbikvZzsKKyAgICB4bWwgPSB4bWwucmVwbGFjZShyZWcsICckMVxuJDIkMycpLnJlcGxhY2Uod3NleHAsICckMVxuJykucmVwbGFjZShjb250ZXhwLCAnJDFcbiQyJyk7CisgICAgcGFkID0gMDsKKyAgICBmb3JtYXR0ZWQgPSAnJzsKKyAgICBsaW5lcyA9IHhtbC5zcGxpdCgnXG4nKTsKKyAgICBpbmRlbnQgPSAwOworICAgIGxhc3RUeXBlID0gJ290aGVyJzsKKyAgICB0cmFuc2l0aW9ucyA9IHsKKyAgICAgICdzaW5nbGUtPnNpbmdsZSc6IDAsCisgICAgICAnc2luZ2xlLT5jbG9zaW5nJzogLTEsCisgICAgICAnc2luZ2xlLT5vcGVuaW5nJzogMCwKKyAgICAgICdzaW5nbGUtPm90aGVyJzogMCwKKyAgICAgICdjbG9zaW5nLT5zaW5nbGUnOiAwLAorICAgICAgJ2Nsb3NpbmctPmNsb3NpbmcnOiAtMSwKKyAgICAgICdjbG9zaW5nLT5vcGVuaW5nJzogMCwKKyAgICAgICdjbG9zaW5nLT5vdGhlcic6IDAsCisgICAgICAnb3BlbmluZy0+c2luZ2xlJzogMSwKKyAgICAgICdvcGVuaW5nLT5jbG9zaW5nJzogMCwKKyAgICAgICdvcGVuaW5nLT5vcGVuaW5nJzogMSwKKyAgICAgICdvcGVuaW5nLT5vdGhlcic6IDEsCisgICAgICAnb3RoZXItPnNpbmdsZSc6IDAsCisgICAgICAnb3RoZXItPmNsb3NpbmcnOiAtMSwKKyAgICAgICdvdGhlci0+b3BlbmluZyc6IDAsCisgICAgICAnb3RoZXItPm90aGVyJzogMAorICAgIH07CisgICAgZm4gPSBmdW5jdGlvbihsbikgeworICAgICAgdmFyIGZyb21Ubywgaiwga2V5LCBwYWRkaW5nLCB0eXBlLCB0eXBlcywgdmFsdWU7CisgICAgICB0eXBlcyA9IHsKKyAgICAgICAgc2luZ2xlOiBCb29sZWFuKGxuLm1hdGNoKC88LitcLz4vKSksCisgICAgICAgIGNsb3Npbmc6IEJvb2xlYW4obG4ubWF0Y2goLzxcLy4rPi8pKSwKKyAgICAgICAgb3BlbmluZzogQm9vbGVhbihsbi5tYXRjaCgvPFteIT9dLio+LykpCisgICAgICB9OworICAgICAgdHlwZSA9ICgoZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciByZXN1bHRzOworICAgICAgICByZXN1bHRzID0gW107CisgICAgICAgIGZvciAoa2V5IGluIHR5cGVzKSB7CisgICAgICAgICAgdmFsdWUgPSB0eXBlc1trZXldOworICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGtleSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzOworICAgICAgfSkoKSlbMF07CisgICAgICB0eXBlID0gdHlwZSA9PT0gdm9pZCAwID8gJ290aGVyJyA6IHR5cGU7CisgICAgICBmcm9tVG8gPSBsYXN0VHlwZSArICctPicgKyB0eXBlOworICAgICAgbGFzdFR5cGUgPSB0eXBlOworICAgICAgcGFkZGluZyA9ICcnOworICAgICAgaW5kZW50ICs9IHRyYW5zaXRpb25zW2Zyb21Ub107CisgICAgICBwYWRkaW5nID0gKChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG0sIHJlZjEsIHJlc3VsdHM7CisgICAgICAgIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgZm9yIChqID0gbSA9IDAsIHJlZjEgPSBpbmRlbnQ7IDAgPD0gcmVmMSA/IG0gPCByZWYxIDogbSA+IHJlZjE7IGogPSAwIDw9IHJlZjEgPyArK20gOiAtLW0pIHsKKyAgICAgICAgICByZXN1bHRzLnB1c2goJyAgJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdHM7CisgICAgICB9KSgpKS5qb2luKCcnKTsKKyAgICAgIGlmIChmcm9tVG8gPT09ICdvcGVuaW5nLT5jbG9zaW5nJykgeworICAgICAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQuc3Vic3RyKDAsIGZvcm1hdHRlZC5sZW5ndGggLSAxKSArIGxuICsgJ1xuJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZvcm1hdHRlZCArPSBwYWRkaW5nICsgbG4gKyAnXG4nOworICAgICAgfQorICAgIH07CisgICAgZm9yIChsID0gMCwgbGVuID0gbGluZXMubGVuZ3RoOyBsIDwgbGVuOyBsKyspIHsKKyAgICAgIGxuID0gbGluZXNbbF07CisgICAgICBmbihsbik7CisgICAgfQorICAgIHJldHVybiBmb3JtYXR0ZWQ7CisgIH07CisKKyAgLy8gY29weS1wYXN0ZWQgZnJvbSBzd2FnZ2VyLWpzCisgIHZhciBnZXRNb2RlbFNpZ25hdHVyZSA9IGZ1bmN0aW9uIChuYW1lLCBzY2hlbWEsIG1vZGVscywgbW9kZWxQcm9wZXJ0eU1hY3JvKSB7CisgICAgdmFyIHN0cm9uZ09wZW4gPSAnPHNwYW4gY2xhc3M9InN0cm9uZyI+JzsKKyAgICB2YXIgc3Ryb25nQ2xvc2UgPSAnPC9zcGFuPic7CisKKyAgICB2YXIgb3B0aW9uSHRtbCA9IGZ1bmN0aW9uIChsYWJlbCwgdmFsdWUpIHsKKyAgICAgIHJldHVybiAnPHRyPjx0ZCBjbGFzcz0ib3B0aW9uTmFtZSI+JyArIGxhYmVsICsgJzo8L3RkPjx0ZD4nICsgdmFsdWUgKyAnPC90ZD48L3RyPic7CisgICAgfTsKKworCisgICAgLy8gQWxsb3cgZm9yIGlnbm9yaW5nIHRoZSAnbmFtZScgYXJndW1lbnQuLi4uIHNoaWZ0aW5nIHRoZSByZXN0CisgICAgaWYoXy5pc09iamVjdChhcmd1bWVudHNbMF0pKSB7CisgICAgICBuYW1lID0gdm9pZCAwOworICAgICAgc2NoZW1hID0gYXJndW1lbnRzWzBdOworICAgICAgbW9kZWxzID0gYXJndW1lbnRzWzFdOworICAgICAgbW9kZWxQcm9wZXJ0eU1hY3JvID0gYXJndW1lbnRzWzJdOworICAgIH0KKworICAgIG1vZGVscyA9IG1vZGVscyB8fCB7fTsKKworICAgIC8vIFJlc29sdmUgdGhlIHNjaGVtYSAoSGFuZGxlIG5lc3RlZCBzY2hlbWFzKQorICAgIHNjaGVtYSA9IHJlc29sdmVTY2hlbWEoc2NoZW1hKTsKKworICAgIC8vIFJldHVybiBmb3IgZW1wdHkgb2JqZWN0CisgICAgaWYoXy5pc0VtcHR5KHNjaGVtYSkpIHsKKyAgICAgIHJldHVybiBzdHJvbmdPcGVuICsgJ0VtcHR5JyArIHN0cm9uZ0Nsb3NlOworICAgIH0KKworICAgIC8vIERlcmVmZXJlbmNlICRyZWYgZnJvbSAnbW9kZWxzJworICAgIGlmKHR5cGVvZiBzY2hlbWEuJHJlZiA9PT0gJ3N0cmluZycpIHsKKyAgICAgIG5hbWUgPSBzaW1wbGVSZWYoc2NoZW1hLiRyZWYpOworICAgICAgc2NoZW1hID0gbW9kZWxzW25hbWVdOworICAgICAgaWYodHlwZW9mIHNjaGVtYSA9PT0gJ3VuZGVmaW5lZCcpCisgICAgICB7CisgICAgICAgIHJldHVybiBzdHJvbmdPcGVuICsgbmFtZSArICcgaXMgbm90IGRlZmluZWQhJyArIHN0cm9uZ0Nsb3NlOworICAgICAgfQorICAgIH0KKworICAgIGlmKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykgeworICAgICAgbmFtZSA9IHNjaGVtYS50aXRsZSB8fCAnSW5saW5lIE1vZGVsJzsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBhcmUgYSBNb2RlbCBvYmplY3QuLi4gYWRqdXN0IGFjY29yZGluZ2x5CisgICAgaWYoc2NoZW1hLmRlZmluaXRpb24pIHsKKyAgICAgIHNjaGVtYSA9IHNjaGVtYS5kZWZpbml0aW9uOworICAgIH0KKworICAgIGlmKHR5cGVvZiBtb2RlbFByb3BlcnR5TWFjcm8gIT09ICdmdW5jdGlvbicpIHsKKyAgICAgIG1vZGVsUHJvcGVydHlNYWNybyA9IGZ1bmN0aW9uKHByb3ApeworICAgICAgICByZXR1cm4gKHByb3AgfHwge30pLmRlZmF1bHQ7CisgICAgICB9OworICAgIH0KKworICAgIHZhciByZWZlcmVuY2VzID0ge307CisgICAgdmFyIHNlZW5Nb2RlbHMgPSBbXTsKKyAgICB2YXIgaW5saW5lTW9kZWxzID0gMDsKKworICAgIC8vIEdlbmVyYXRlIGN1cnJlbnQgSFRNTAorICAgIHZhciBodG1sID0gcHJvY2Vzc01vZGVsKHNjaGVtYSwgbmFtZSk7CisKKyAgICAvLyBHZW5lcmF0ZSByZWZlcmVuY2VzIEhUTUwKKyAgICB3aGlsZSAoXy5rZXlzKHJlZmVyZW5jZXMpLmxlbmd0aCA+IDApIHsKKyAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi8KKyAgICAgIF8uZm9yRWFjaChyZWZlcmVuY2VzLCBmdW5jdGlvbiAoc2NoZW1hLCBuYW1lKSB7CisgICAgICAgIHZhciBzZWVuTW9kZWwgPSBfLmluZGV4T2Yoc2Vlbk1vZGVscywgbmFtZSkgPiAtMTsKKworICAgICAgICBkZWxldGUgcmVmZXJlbmNlc1tuYW1lXTsKKworICAgICAgICBpZiAoIXNlZW5Nb2RlbCkgeworICAgICAgICAgIHNlZW5Nb2RlbHMucHVzaChuYW1lKTsKKworICAgICAgICAgIGh0bWwgKz0gJzxiciAvPicgKyBwcm9jZXNzTW9kZWwoc2NoZW1hLCBuYW1lKTsKKyAgICAgICAgfQorICAgICAgfSk7CisgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqLworICAgIH0KKworICAgIHJldHVybiBodG1sOworCisKKyAgICBmdW5jdGlvbiBhZGRSZWZlcmVuY2Uoc2NoZW1hLCBuYW1lLCBza2lwUmVmKSB7CisgICAgICB2YXIgbW9kZWxOYW1lID0gbmFtZTsKKyAgICAgIHZhciBtb2RlbDsKKworICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICAgIG1vZGVsTmFtZSA9IHNjaGVtYS50aXRsZSB8fCBzaW1wbGVSZWYoc2NoZW1hLiRyZWYpOworICAgICAgICBtb2RlbCA9IG1vZGVsc1tzaW1wbGVSZWYoc2NoZW1hLiRyZWYpXTsKKyAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkgeworICAgICAgICBtb2RlbE5hbWUgPSBzY2hlbWEudGl0bGUgfHwgJ0lubGluZSBNb2RlbCAnICsgKCsraW5saW5lTW9kZWxzKTsKKyAgICAgICAgbW9kZWwgPSB7ZGVmaW5pdGlvbjogc2NoZW1hfTsKKyAgICAgIH0KKworICAgICAgaWYgKHNraXBSZWYgIT09IHRydWUpIHsKKyAgICAgICAgcmVmZXJlbmNlc1ttb2RlbE5hbWVdID0gXy5pc1VuZGVmaW5lZChtb2RlbCkgPyB7fSA6IG1vZGVsLmRlZmluaXRpb247CisgICAgICB9CisKKyAgICAgIHJldHVybiBtb2RlbE5hbWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJpbWl0aXZlVG9IVE1MKHNjaGVtYSkgeworICAgICAgdmFyIGh0bWwgPSAnPHNwYW4gY2xhc3M9InByb3BUeXBlIj4nOworICAgICAgdmFyIHR5cGUgPSBzY2hlbWEudHlwZSB8fCAnb2JqZWN0JzsKKworICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICAgIGh0bWwgKz0gYWRkUmVmZXJlbmNlKHNjaGVtYSwgc2ltcGxlUmVmKHNjaGVtYS4kcmVmKSk7CisgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CisgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEucHJvcGVydGllcykpIHsKKyAgICAgICAgICBodG1sICs9IGFkZFJlZmVyZW5jZShzY2hlbWEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGh0bWwgKz0gJ29iamVjdCc7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5JykgeworICAgICAgICBodG1sICs9ICdBcnJheVsnOworCisgICAgICAgIGlmIChfLmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkgeworICAgICAgICAgIGh0bWwgKz0gXy5tYXAoc2NoZW1hLml0ZW1zLCBhZGRSZWZlcmVuY2UpLmpvaW4oJywnKTsKKyAgICAgICAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3Qoc2NoZW1hLml0ZW1zKSkgeworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy4kcmVmKSkgeworICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy50eXBlKSAmJiBfLmluZGV4T2YoWydhcnJheScsICdvYmplY3QnXSwgc2NoZW1hLml0ZW1zLnR5cGUpID09PSAtMSkgeworICAgICAgICAgICAgICBodG1sICs9IHNjaGVtYS5pdGVtcy50eXBlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgaHRtbCArPSBhZGRSZWZlcmVuY2Uoc2NoZW1hLml0ZW1zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaHRtbCArPSBhZGRSZWZlcmVuY2Uoc2NoZW1hLml0ZW1zLCBzaW1wbGVSZWYoc2NoZW1hLml0ZW1zLiRyZWYpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgY29uc29sZS5sb2coJ0FycmF5IHR5cGVcJ3MgXCdpdGVtc1wnIHNjaGVtYSBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBjYW5ub3QgcHJvY2VzcycpOworICAgICAgICAgIGh0bWwgKz0gJ29iamVjdCc7CisgICAgICAgIH0KKworICAgICAgICBodG1sICs9ICddJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGh0bWwgKz0gc2NoZW1hLnR5cGU7CisgICAgICB9CisKKyAgICAgIGh0bWwgKz0gJzwvc3Bhbj4nOworCisgICAgICByZXR1cm4gaHRtbDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcmltaXRpdmVUb09wdGlvbnNIVE1MKHNjaGVtYSwgaHRtbCkgeworICAgICAgdmFyIG9wdGlvbnMgPSAnJzsKKyAgICAgIHZhciB0eXBlID0gc2NoZW1hLnR5cGUgfHwgJ29iamVjdCc7CisgICAgICB2YXIgaXNBcnJheSA9IHR5cGUgPT09ICdhcnJheSc7CisKKyAgICAgIGlmICghXy5pc1VuZGVmaW5lZChzY2hlbWEuZGVzY3JpcHRpb24pKSB7CisgICAgICAgIGh0bWwgKz0gJzogJyArICc8c3BhbiBjbGFzcz0icHJvcERlc2MiPicgKyBzY2hlbWEuZGVzY3JpcHRpb24gKyAnPC9zcGFuPic7CisgICAgICB9CisKKyAgICAgIGlmIChzY2hlbWEuZW51bSkgeworICAgICAgICBodG1sICs9ICcgPSA8c3BhbiBjbGFzcz0icHJvcFZhbHMiPltcJycgKyBzY2hlbWEuZW51bS5qb2luKCdcJywgXCcnKSArICdcJ108L3NwYW4+JzsKKyAgICAgIH0KKworICAgICAgaWYgKGlzQXJyYXkpIHsKKyAgICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChzY2hlbWEuaXRlbXMpICYmICFfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy50eXBlKSkgeworICAgICAgICAgIHR5cGUgPSBzY2hlbWEuaXRlbXMudHlwZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICB0eXBlID0gJ29iamVjdCc7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5kZWZhdWx0KSkgeworICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ0RlZmF1bHQnLCBzY2hlbWEuZGVmYXVsdCk7CisgICAgICB9CisKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgY2FzZSAnc3RyaW5nJzoKKyAgICAgICAgaWYgKHNjaGVtYS5taW5MZW5ndGgpIHsKKyAgICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ01pbi4gTGVuZ3RoJywgc2NoZW1hLm1pbkxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2NoZW1hLm1heExlbmd0aCkgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnTWF4LiBMZW5ndGgnLCBzY2hlbWEubWF4TGVuZ3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY2hlbWEucGF0dGVybikgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnUmVnLiBFeHAuJywgc2NoZW1hLnBhdHRlcm4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW50ZWdlcic6CisgICAgICBjYXNlICdudW1iZXInOgorICAgICAgICBpZiAoc2NoZW1hLm1pbmltdW0pIHsKKyAgICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ01pbi4gVmFsdWUnLCBzY2hlbWEubWluaW11bSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2NoZW1hLmV4Y2x1c2l2ZU1pbmltdW0pIHsKKyAgICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ0V4Y2x1c2l2ZSBNaW4uJywgJ3RydWUnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY2hlbWEubWF4aW11bSkgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnTWF4LiBWYWx1ZScsIHNjaGVtYS5tYXhpbXVtKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY2hlbWEuZXhjbHVzaXZlTWF4aW11bSkgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnRXhjbHVzaXZlIE1heC4nLCAndHJ1ZScpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjaGVtYS5tdWx0aXBsZU9mKSB7CisgICAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdNdWx0aXBsZSBPZicsIHNjaGVtYS5tdWx0aXBsZU9mKTsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoaXNBcnJheSkgeworICAgICAgICBpZiAoc2NoZW1hLm1pbkl0ZW1zKSB7CisgICAgICAgICAgb3B0aW9ucyArPSBvcHRpb25IdG1sKCdNaW4uIEl0ZW1zJywgc2NoZW1hLm1pbkl0ZW1zKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY2hlbWEubWF4SXRlbXMpIHsKKyAgICAgICAgICBvcHRpb25zICs9IG9wdGlvbkh0bWwoJ01heC4gSXRlbXMnLCBzY2hlbWEubWF4SXRlbXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjaGVtYS51bmlxdWVJdGVtcykgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnVW5pcXVlIEl0ZW1zJywgJ3RydWUnKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY2hlbWEuY29sbGVjdGlvbkZvcm1hdCkgeworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnQ29sbC4gRm9ybWF0Jywgc2NoZW1hLmNvbGxlY3Rpb25Gb3JtYXQpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykpIHsKKyAgICAgICAgaWYgKF8uaXNBcnJheShzY2hlbWEuZW51bSkpIHsKKyAgICAgICAgICB2YXIgZW51bVN0cmluZzsKKworICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnaW50ZWdlcicpIHsKKyAgICAgICAgICAgIGVudW1TdHJpbmcgPSBzY2hlbWEuZW51bS5qb2luKCcsICcpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnVtU3RyaW5nID0gJyInICsgc2NoZW1hLmVudW0uam9pbignIiwgIicpICsgJyInOworICAgICAgICAgIH0KKworICAgICAgICAgIG9wdGlvbnMgKz0gb3B0aW9uSHRtbCgnRW51bScsIGVudW1TdHJpbmcpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHsKKyAgICAgICAgaHRtbCA9ICc8c3BhbiBjbGFzcz0icHJvcFdyYXAiPicgKyBodG1sICsgJzx0YWJsZSBjbGFzcz0ib3B0aW9uc1dyYXBwZXIiPjx0cj48dGggY29sc3Bhbj0iMiI+JyArIHR5cGUgKyAnPC90aD48L3RyPicgKyBvcHRpb25zICsgJzwvdGFibGU+PC9zcGFuPic7CisgICAgICB9CisKKyAgICAgIHJldHVybiBodG1sOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NNb2RlbChzY2hlbWEsIG5hbWUpIHsKKyAgICAgIHZhciB0eXBlID0gc2NoZW1hLnR5cGUgfHwgJ29iamVjdCc7CisgICAgICB2YXIgaXNBcnJheSA9IHNjaGVtYS50eXBlID09PSAnYXJyYXknOworICAgICAgdmFyIGh0bWwgPSBzdHJvbmdPcGVuICsgbmFtZSArICcgJyArIChpc0FycmF5ID8gJ1snIDogJ3snKSArIHN0cm9uZ0Nsb3NlOworICAgICAgdmFyIGNvbnRlbnRzOworCisgICAgICBpZiAobmFtZSkgeworICAgICAgICBzZWVuTW9kZWxzLnB1c2gobmFtZSk7CisgICAgICB9CisKKyAgICAgIGlmIChpc0FycmF5KSB7CisgICAgICAgIGlmIChfLmlzQXJyYXkoc2NoZW1hLml0ZW1zKSkgeworICAgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIF8ubWFwKHNjaGVtYS5pdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHsKKyAgICAgICAgICAgIHZhciB0eXBlID0gaXRlbS50eXBlIHx8ICdvYmplY3QnOworCisgICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChpdGVtLiRyZWYpKSB7CisgICAgICAgICAgICAgIGlmIChfLmluZGV4T2YoWydhcnJheScsICdvYmplY3QnXSwgdHlwZSkgPiAtMSkgeworICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnb2JqZWN0JyAmJiBfLmlzVW5kZWZpbmVkKGl0ZW0ucHJvcGVydGllcykpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnb2JqZWN0JzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZFJlZmVyZW5jZShpdGVtKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVRvT3B0aW9uc0hUTUwoaXRlbSwgdHlwZSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJldHVybiBhZGRSZWZlcmVuY2UoaXRlbSwgc2ltcGxlUmVmKGl0ZW0uJHJlZikpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pLmpvaW4oJyw8L2Rpdj48ZGl2PicpOworICAgICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc2NoZW1hLml0ZW1zLiRyZWYpKSB7CisgICAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnYXJyYXknLCAnb2JqZWN0J10sIHNjaGVtYS5pdGVtcy50eXBlIHx8ICdvYmplY3QnKSA+IC0xKSB7CisgICAgICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMudHlwZSkgfHwgc2NoZW1hLml0ZW1zLnR5cGUgPT09ICdvYmplY3QnKSAmJiBfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcy5wcm9wZXJ0aWVzKSkgeworICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXY+b2JqZWN0PC9kaXY+JzsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2PicgKyBhZGRSZWZlcmVuY2Uoc2NoZW1hLml0ZW1zKSArICc8L2Rpdj4nOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBodG1sICs9ICc8ZGl2PicgKyBwcmltaXRpdmVUb09wdGlvbnNIVE1MKHNjaGVtYS5pdGVtcywgc2NoZW1hLml0ZW1zLnR5cGUpICsgJzwvZGl2Pic7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGh0bWwgKz0gJzxkaXY+JyArIGFkZFJlZmVyZW5jZShzY2hlbWEuaXRlbXMsIHNpbXBsZVJlZihzY2hlbWEuaXRlbXMuJHJlZikpICsgJzwvZGl2Pic7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNvbnNvbGUubG9nKCdBcnJheSB0eXBlXCdzIFwnaXRlbXNcJyBwcm9wZXJ0eSBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBjYW5ub3QgcHJvY2VzcycpOworICAgICAgICAgIGh0bWwgKz0gJzxkaXY+b2JqZWN0PC9kaXY+JzsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICAgICAgaHRtbCArPSAnPGRpdj4nICsgYWRkUmVmZXJlbmNlKHNjaGVtYSwgbmFtZSkgKyAnPC9kaXY+JzsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgICAgIGlmIChfLmlzUGxhaW5PYmplY3Qoc2NoZW1hLnByb3BlcnRpZXMpKSB7CisgICAgICAgICAgICBjb250ZW50cyA9IF8ubWFwKHNjaGVtYS5wcm9wZXJ0aWVzLCBmdW5jdGlvbiAocHJvcGVydHksIG5hbWUpIHsKKyAgICAgICAgICAgICAgdmFyIHByb3BlcnR5SXNSZXF1aXJlZCA9IChfLmluZGV4T2Yoc2NoZW1hLnJlcXVpcmVkLCBuYW1lKSA+PSAwKTsKKyAgICAgICAgICAgICAgdmFyIGNQcm9wZXJ0eSA9IF8uY2xvbmVEZWVwKHByb3BlcnR5KTsKKworICAgICAgICAgICAgICB2YXIgcmVxdWlyZWRDbGFzcyA9IHByb3BlcnR5SXNSZXF1aXJlZCA/ICdyZXF1aXJlZCcgOiAnJzsKKyAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnPHNwYW4gY2xhc3M9InByb3BOYW1lICcgKyByZXF1aXJlZENsYXNzICsgJyI+JyArIG5hbWUgKyAnPC9zcGFuPiAoJzsKKyAgICAgICAgICAgICAgdmFyIG1vZGVsOworCisgICAgICAgICAgICAgIC8vIEFsbG93IG1hY3JvIHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICBjUHJvcGVydHkuZGVmYXVsdCA9IG1vZGVsUHJvcGVydHlNYWNybyhjUHJvcGVydHkpOworCisgICAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIHNjaGVtYSAoSGFuZGxlIG5lc3RlZCBzY2hlbWFzKQorICAgICAgICAgICAgICBjUHJvcGVydHkgPSByZXNvbHZlU2NoZW1hKGNQcm9wZXJ0eSk7CisKKyAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgcHJvcGVydHkgcmVmZXJlbmNlcyB0byBwcmltaXRpdmVzIChJc3N1ZSAzMzkpCisgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChjUHJvcGVydHkuJHJlZikpIHsKKyAgICAgICAgICAgICAgICBtb2RlbCA9IG1vZGVsc1tzaW1wbGVSZWYoY1Byb3BlcnR5LiRyZWYpXTsKKworICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtb2RlbCkgJiYgXy5pbmRleE9mKFt1bmRlZmluZWQsICdhcnJheScsICdvYmplY3QnXSwgbW9kZWwuZGVmaW5pdGlvbi50eXBlKSA9PT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgIC8vIFVzZSByZWZlcmVuY2VkIHNjaGVtYQorICAgICAgICAgICAgICAgICAgY1Byb3BlcnR5ID0gcmVzb2x2ZVNjaGVtYShtb2RlbC5kZWZpbml0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBodG1sICs9IHByaW1pdGl2ZVRvSFRNTChjUHJvcGVydHkpOworCisgICAgICAgICAgICAgIGlmKCFwcm9wZXJ0eUlzUmVxdWlyZWQpIHsKKyAgICAgICAgICAgICAgICBodG1sICs9ICcsIDxzcGFuIGNsYXNzPSJwcm9wT3B0S2V5Ij5vcHRpb25hbDwvc3Bhbj4nOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgaWYocHJvcGVydHkucmVhZE9ubHkpIHsKKyAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJywgPHNwYW4gY2xhc3M9InByb3BSZWFkT25seSI+cmVhZCBvbmx5PC9zcGFuPic7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBodG1sICs9ICcpJzsKKworICAgICAgICAgICAgICByZXR1cm4gJzxkaXYnICsgKHByb3BlcnR5LnJlYWRPbmx5ID8gJyBjbGFzcz0icmVhZE9ubHkiJyA6ICcnKSArICc+JyArIHByaW1pdGl2ZVRvT3B0aW9uc0hUTUwoY1Byb3BlcnR5LCBodG1sKTsKKyAgICAgICAgICAgIH0pLmpvaW4oJyw8L2Rpdj4nKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoY29udGVudHMpIHsKKyAgICAgICAgICAgIGh0bWwgKz0gY29udGVudHMgKyAnPC9kaXY+JzsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaHRtbCArPSAnPGRpdj4nICsgcHJpbWl0aXZlVG9PcHRpb25zSFRNTChzY2hlbWEsIHR5cGUpICsgJzwvZGl2Pic7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIGh0bWwgKyBzdHJvbmdPcGVuICsgKGlzQXJyYXkgPyAnXScgOiAnfScpICsgc3Ryb25nQ2xvc2U7CisgICAgfQorCisgIH07CisKKyAgLy8gY29weS1wYXN0ZWQgZnJvbSBzd2FnZ2VyLWpzCisgIHZhciBzY2hlbWFUb0pTT04gPSBmdW5jdGlvbiAoc2NoZW1hLCBtb2RlbHMsIG1vZGVsc1RvSWdub3JlLCBtb2RlbFByb3BlcnR5TWFjcm8pIHsKKyAgICAvLyBSZXNvbHZlIHRoZSBzY2hlbWEgKEhhbmRsZSBuZXN0ZWQgc2NoZW1hcykKKyAgICBzY2hlbWEgPSByZXNvbHZlU2NoZW1hKHNjaGVtYSk7CisKKyAgICBpZih0eXBlb2YgbW9kZWxQcm9wZXJ0eU1hY3JvICE9PSAnZnVuY3Rpb24nKSB7CisgICAgICBtb2RlbFByb3BlcnR5TWFjcm8gPSBmdW5jdGlvbihwcm9wKXsKKyAgICAgICAgcmV0dXJuIChwcm9wIHx8IHt9KS5kZWZhdWx0OworICAgICAgfTsKKyAgICB9CisKKyAgICBtb2RlbHNUb0lnbm9yZT0gbW9kZWxzVG9JZ25vcmUgfHwge307CisKKyAgICB2YXIgdHlwZSA9IHNjaGVtYS50eXBlIHx8ICdvYmplY3QnOworICAgIHZhciBmb3JtYXQgPSBzY2hlbWEuZm9ybWF0OworICAgIHZhciBtb2RlbDsKKyAgICB2YXIgb3V0cHV0OworCisgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHNjaGVtYS5leGFtcGxlKSkgeworICAgICAgb3V0cHV0ID0gc2NoZW1hLmV4YW1wbGU7CisgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYS5pdGVtcykgJiYgXy5pc0FycmF5KHNjaGVtYS5lbnVtKSkgeworICAgICAgb3V0cHV0ID0gc2NoZW1hLmVudW1bMF07CisgICAgfQorCisgICAgaWYgKF8uaXNVbmRlZmluZWQob3V0cHV0KSkgeworICAgICAgaWYgKHNjaGVtYS4kcmVmKSB7CisgICAgICAgIG1vZGVsID0gbW9kZWxzW3NpbXBsZVJlZihzY2hlbWEuJHJlZildOworCisgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtb2RlbCkpIHsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChtb2RlbHNUb0lnbm9yZVttb2RlbC5uYW1lXSkpIHsKKyAgICAgICAgICAgIG1vZGVsc1RvSWdub3JlW21vZGVsLm5hbWVdID0gbW9kZWw7CisgICAgICAgICAgICBvdXRwdXQgPSBzY2hlbWFUb0pTT04obW9kZWwuZGVmaW5pdGlvbiwgbW9kZWxzLCBtb2RlbHNUb0lnbm9yZSwgbW9kZWxQcm9wZXJ0eU1hY3JvKTsKKyAgICAgICAgICAgIGRlbGV0ZSBtb2RlbHNUb0lnbm9yZVttb2RlbC5uYW1lXTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1vZGVsLnR5cGUgPT09ICdhcnJheScpIHsKKyAgICAgICAgICAgICAgb3V0cHV0ID0gW107CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBvdXRwdXQgPSB7fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQoc2NoZW1hLmRlZmF1bHQpKSB7CisgICAgICAgIG91dHB1dCA9IHNjaGVtYS5kZWZhdWx0OworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJykgeworICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGF0ZS10aW1lJykgeworICAgICAgICAgIG91dHB1dCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkYXRlJykgeworICAgICAgICAgIG91dHB1dCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG91dHB1dCA9ICdzdHJpbmcnOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJykgeworICAgICAgICBvdXRwdXQgPSAwOworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykgeworICAgICAgICBvdXRwdXQgPSAwLjA7CisgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sZWFuJykgeworICAgICAgICBvdXRwdXQgPSB0cnVlOworICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0JykgeworICAgICAgICBvdXRwdXQgPSB7fTsKKworICAgICAgICBfLmZvckVhY2goc2NoZW1hLnByb3BlcnRpZXMsIGZ1bmN0aW9uIChwcm9wZXJ0eSwgbmFtZSkgeworICAgICAgICAgIHZhciBjUHJvcGVydHkgPSBfLmNsb25lRGVlcChwcm9wZXJ0eSk7CisKKyAgICAgICAgICAvLyBBbGxvdyBtYWNybyB0byBzZXQgdGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgICBjUHJvcGVydHkuZGVmYXVsdCA9IG1vZGVsUHJvcGVydHlNYWNybyhwcm9wZXJ0eSk7CisKKyAgICAgICAgICBvdXRwdXRbbmFtZV0gPSBzY2hlbWFUb0pTT04oY1Byb3BlcnR5LCBtb2RlbHMsIG1vZGVsc1RvSWdub3JlLCBtb2RlbFByb3BlcnR5TWFjcm8pOworICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5JykgeworICAgICAgICBvdXRwdXQgPSBbXTsKKworICAgICAgICBpZiAoXy5pc0FycmF5KHNjaGVtYS5pdGVtcykpIHsKKyAgICAgICAgICBfLmZvckVhY2goc2NoZW1hLml0ZW1zLCBmdW5jdGlvbiAoaXRlbSkgeworICAgICAgICAgICAgb3V0cHV0LnB1c2goc2NoZW1hVG9KU09OKGl0ZW0sIG1vZGVscywgbW9kZWxzVG9JZ25vcmUsIG1vZGVsUHJvcGVydHlNYWNybykpOworICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgICAgb3V0cHV0LnB1c2goc2NoZW1hVG9KU09OKHNjaGVtYS5pdGVtcywgbW9kZWxzLCBtb2RlbHNUb0lnbm9yZSwgbW9kZWxQcm9wZXJ0eU1hY3JvKSk7CisgICAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChzY2hlbWEuaXRlbXMpKSB7CisgICAgICAgICAgb3V0cHV0LnB1c2goe30pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGNvbnNvbGUubG9nKCdBcnJheSB0eXBlXCdzIFwnaXRlbXNcJyBwcm9wZXJ0eSBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBjYW5ub3QgcHJvY2VzcycpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG91dHB1dDsKKyAgfTsKKworICAvLyBjb3B5LXBhc3RlZCBmcm9tIHN3YWdnZXItanMKKyAgdmFyIGNyZWF0ZUpTT05TYW1wbGUgPSBmdW5jdGlvbiAodmFsdWUsIG1vZGVsc1RvSWdub3JlKSB7CisgICAgbW9kZWxzVG9JZ25vcmUgPSBtb2RlbHNUb0lnbm9yZSB8fCB7fTsKKworICAgIG1vZGVsc1RvSWdub3JlW3ZhbHVlLm5hbWVdID0gdmFsdWU7CisKKyAgICAvLyBSZXNwb25zZSBzdXBwb3J0CisgICAgaWYgKHZhbHVlLmV4YW1wbGVzICYmIF8uaXNQbGFpbk9iamVjdCh2YWx1ZS5leGFtcGxlcykpIHsKKyAgICAgIHZhbHVlID0gXy5jbG9uZURlZXAodmFsdWUpOworICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZS5leGFtcGxlcyk7CisKKyAgICAgIF8uZm9yRWFjaChrZXlzLCBmdW5jdGlvbihrZXkpIHsKKyAgICAgICAgaWYoa2V5LmluZGV4T2YoJ2FwcGxpY2F0aW9uL2pzb24nKSA9PT0gMCkgeworICAgICAgICAgIHZhciBleGFtcGxlID0gdmFsdWUuZXhhbXBsZXNba2V5XTsKKyAgICAgICAgICBpZiAoXy5pc1N0cmluZyhleGFtcGxlKSkgeworICAgICAgICAgICAgZXhhbXBsZSA9IGpzeWFtbC5zYWZlTG9hZChleGFtcGxlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdmFsdWUuZGVmaW5pdGlvbi5leGFtcGxlID0gZXhhbXBsZTsKKyAgICAgICAgICByZXR1cm4gc2NoZW1hVG9KU09OKHZhbHVlLmRlZmluaXRpb24sIGV4YW1wbGUsIG1vZGVsc1RvSWdub3JlLCB2YWx1ZS5tb2RlbFByb3BlcnR5TWFjcm8pOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUuZXhhbXBsZXMpIHsKKyAgICAgIHZhbHVlID0gXy5jbG9uZURlZXAodmFsdWUpOworICAgICAgdmFyIGV4YW1wbGUgPSB2YWx1ZS5leGFtcGxlczsKKyAgICAgIGlmIChfLmlzU3RyaW5nKGV4YW1wbGUpKSB7CisgICAgICAgIGV4YW1wbGUgPSBqc3lhbWwuc2FmZUxvYWQoZXhhbXBsZSk7CisgICAgICB9CisgICAgICB2YWx1ZS5kZWZpbml0aW9uLmV4YW1wbGUgPSBleGFtcGxlOworICAgICAgcmV0dXJuIHNjaGVtYVRvSlNPTih2YWx1ZS5kZWZpbml0aW9uLCBleGFtcGxlLCBtb2RlbHNUb0lnbm9yZSwgdmFsdWUubW9kZWxQcm9wZXJ0eU1hY3JvKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1hVG9KU09OKHZhbHVlLmRlZmluaXRpb24sIHZhbHVlLm1vZGVscywgbW9kZWxzVG9JZ25vcmUsIHZhbHVlLm1vZGVsUHJvcGVydHlNYWNybyk7CisgIH07CisKKyAgLy8gY29weS1wYXN0ZWQgZnJvbSBzd2FnZ2VyLWpzCisgIHZhciBnZXRQYXJhbWV0ZXJNb2RlbFNpZ25hdHVyZSA9IGZ1bmN0aW9uICh0eXBlLCBkZWZpbml0aW9ucykgeworICAgICAgdmFyIGlzUHJpbWl0aXZlLCBsaXN0VHlwZTsKKworICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICBsaXN0VHlwZSA9IHRydWU7CisgICAgICAgIHR5cGUgPSB0eXBlWzBdOworICAgICAgfQorCisgICAgICAvLyBDb252ZXJ0IHVuZGVmaW5lZCB0byBzdHJpbmcgb2YgJ3VuZGVmaW5lZCcKKyAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgdHlwZSA9ICd1bmRlZmluZWQnOworICAgICAgICBpc1ByaW1pdGl2ZSA9IHRydWU7CisKKyAgICAgIH0gZWxzZSBpZiAoZGVmaW5pdGlvbnNbdHlwZV0peworICAgICAgICAvLyBhIG1vZGVsIGRlZiBleGlzdHM/CisgICAgICAgIHR5cGUgPSBkZWZpbml0aW9uc1t0eXBlXTsgLyogTW9kZWwgKi8KKyAgICAgICAgaXNQcmltaXRpdmUgPSBmYWxzZTsKKworICAgICAgfSBlbHNlIGlmIChnZXRJbmxpbmVNb2RlbCh0eXBlKSkgeworICAgICAgICB0eXBlID0gZ2V0SW5saW5lTW9kZWwodHlwZSk7IC8qIE1vZGVsICovCisgICAgICAgIGlzUHJpbWl0aXZlID0gZmFsc2U7CisKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGRlZmF1bHQgdG8gcHJpbWl0aXZlCisgICAgICAgIGlzUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAgaWYgKGlzUHJpbWl0aXZlKSB7CisgICAgICAgIGlmIChsaXN0VHlwZSkgeworICAgICAgICAgIHJldHVybiAnQXJyYXlbJyArIHR5cGUgKyAnXSc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIHR5cGUudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGxpc3RUeXBlKSB7CisgICAgICAgICAgcmV0dXJuICdBcnJheVsnICsgZ2V0TW9kZWxTaWduYXR1cmUodHlwZS5uYW1lLCB0eXBlLmRlZmluaXRpb24sIHR5cGUubW9kZWxzLCB0eXBlLm1vZGVsUHJvcGVydHlNYWNybykgKyAnXSc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIGdldE1vZGVsU2lnbmF0dXJlKHR5cGUubmFtZSwgdHlwZS5kZWZpbml0aW9uLCB0eXBlLm1vZGVscywgdHlwZS5tb2RlbFByb3BlcnR5TWFjcm8pOworICAgICAgICB9CisgICAgICB9CisgIH07CisKKyAgLy8gY29weS1wYXN0ZWQgZnJvbSBzd2FnZ2VyLWpzCisgIHZhciBjcmVhdGVQYXJhbWV0ZXJKU09OU2FtcGxlID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVscykgeworICAgIHZhciBsaXN0VHlwZSwgc2FtcGxlSnNvbiwgaW5uZXJUeXBlOworICAgIG1vZGVscyA9IG1vZGVscyB8fCB7fTsKKworICAgIGxpc3RUeXBlID0gKHR5cGUgaW5zdGFuY2VvZiBBcnJheSk7CisgICAgaW5uZXJUeXBlID0gbGlzdFR5cGUgPyB0eXBlWzBdIDogdHlwZTsKKworICAgIGlmKG1vZGVsc1tpbm5lclR5cGVdKSB7CisgICAgICBzYW1wbGVKc29uID0gY3JlYXRlSlNPTlNhbXBsZShtb2RlbHNbaW5uZXJUeXBlXSk7CisgICAgfSBlbHNlIGlmIChnZXRJbmxpbmVNb2RlbChpbm5lclR5cGUpKXsKKyAgICAgIHNhbXBsZUpzb24gPSBjcmVhdGVKU09OU2FtcGxlKGdldElubGluZU1vZGVsKGlubmVyVHlwZSkpOyAvLyBtYXkgcmV0dXJuIG51bGwsIGlmIHR5cGUgaXNuJ3QgY29ycmVjdAorICAgIH0KKworCisgICAgaWYgKHNhbXBsZUpzb24pIHsKKyAgICAgIHNhbXBsZUpzb24gPSBsaXN0VHlwZSA/IFtzYW1wbGVKc29uXSA6IHNhbXBsZUpzb247CisKKyAgICAgIGlmICh0eXBlb2Ygc2FtcGxlSnNvbiA9PT0gJ3N0cmluZycpIHsKKyAgICAgICAgcmV0dXJuIHNhbXBsZUpzb247CisgICAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3Qoc2FtcGxlSnNvbikpIHsKKyAgICAgICAgdmFyIHQgPSBzYW1wbGVKc29uOworCisgICAgICAgIGlmIChzYW1wbGVKc29uIGluc3RhbmNlb2YgQXJyYXkgJiYgc2FtcGxlSnNvbi5sZW5ndGggPiAwKSB7CisgICAgICAgICAgdCA9IHNhbXBsZUpzb25bMF07CisgICAgICAgIH0KKworICAgICAgICBpZiAodC5ub2RlTmFtZSAmJiB0eXBlb2YgdCA9PT0gJ05vZGUnKSB7CisgICAgICAgICAgdmFyIHhtbFN0cmluZyA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcodCk7CisKKyAgICAgICAgICByZXR1cm4gZm9ybWF0WG1sKHhtbFN0cmluZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNhbXBsZUpzb24sIG51bGwsIDIpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gc2FtcGxlSnNvbjsKKyAgICAgIH0KKyAgICB9CisgIH07CisKKyAgdmFyIHdyYXBUYWcgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGF0dHJzKSB7CisgICAgdmFyIHN0ciwgYXR0cmlidXRlczsKKworICAgIGF0dHJzID0gYXR0cnMgfHwgW107CisKKyAgICBhdHRyaWJ1dGVzID0gYXR0cnMubWFwKGZ1bmN0aW9uIChhdHRyKSB7CisgICAgICByZXR1cm4gJyAnICsgYXR0ci5uYW1lICsgJz0iJyArIGF0dHIudmFsdWUgKyAnIic7CisgICAgfSkuam9pbignJyk7CisKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgIHJldHVybiBnZXRFcnJvck1lc3NhZ2UoJ05vZGUgbmFtZSBpcyBub3QgcHJvdmlkZWQnKTsKKyAgICB9CisKKyAgICBzdHIgPSBbCisgICAgICAnPCcsIG5hbWUsCisgICAgICBhdHRyaWJ1dGVzLAorICAgICAgJz4nLAorICAgICAgdmFsdWUsCisgICAgICAnPC8nLCBuYW1lLCAnPicKKyAgICBdOworCisgICAgcmV0dXJuIHN0ci5qb2luKCcnKTsKKyAgfTsKKworICAvLyBDb21tZW50aW5nIHRoaXMgZnVudGlvbiBhcyB0aGUgbmFtZXMgYXJlIG5vdyBkZXRlcm1pbmVkIGJlZm9yZWhhbmQgYW5kIHRoZSBwcmVmaXggcGFydCBpcyBleHBvc2VkIGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24gfCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9pc3N1ZXMvMjU3NworIC8qKiB2YXIgZ2V0TmFtZSA9IGZ1bmN0aW9uIChuYW1lLCB4bWwpIHsKKyAgICB2YXIgcmVzdWx0ID0gbmFtZSB8fCAnJzsKKworICAgIHhtbCA9IHhtbCB8fCB7fTsKKworICAgIGlmICh4bWwubmFtZSkgeworICAgICAgcmVzdWx0ID0geG1sLm5hbWU7CisgICAgfQorCisgICAgaWYgKHhtbC5wcmVmaXgpIHsKKyAgICAgIHJlc3VsdCA9IHhtbC5wcmVmaXggKyAnOicgKyByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfTsKKyAgKi8KKworICB2YXIgZ2V0UHJlZml4ID0gZnVuY3Rpb24gKG5hbWUsIHhtbCkgeworICAgIHZhciByZXN1bHQgPSBuYW1lIHx8ICcnOworCisgICAgeG1sID0geG1sIHx8IHt9OworCisgICAgaWYgKHhtbC5wcmVmaXgpIHsKKyAgICAgIHJlc3VsdCA9IHhtbC5wcmVmaXggKyAnOicgKyByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfTsKKworICB2YXIgZ2V0TmFtZXNwYWNlID0gZnVuY3Rpb24gKHhtbCkgeworICAgIHZhciBuYW1lc3BhY2UgPSAnJzsKKyAgICB2YXIgbmFtZSA9ICd4bWxucyc7CisKKyAgICB4bWwgPSB4bWwgfHwge307CisKKyAgICBpZiAoeG1sLm5hbWVzcGFjZSkgeworICAgICAgbmFtZXNwYWNlID0geG1sLm5hbWVzcGFjZTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIG5hbWVzcGFjZTsKKyAgICB9CisKKyAgICBpZiAoeG1sLnByZWZpeCkgeworICAgICAgbmFtZSArPSAnOicgKyB4bWwucHJlZml4OworICAgIH0KKworICAgIHJldHVybiB7CisgICAgICBuYW1lOiBuYW1lLAorICAgICAgdmFsdWU6IG5hbWVzcGFjZQorICAgIH07CisgIH07CisKKyAgdmFyIGNyZWF0ZUFycmF5WE1MID0gZnVuY3Rpb24gKGRlc2NyaXB0b3IpIHsKKyAgICB2YXIgbmFtZSA9IGRlc2NyaXB0b3IubmFtZTsKKyAgICB2YXIgY29uZmlnID0gZGVzY3JpcHRvci5jb25maWc7CisgICAgdmFyIGRlZmluaXRpb24gPSBkZXNjcmlwdG9yLmRlZmluaXRpb247CisgICAgdmFyIG1vZGVscyA9IGRlc2NyaXB0b3IubW9kZWxzOworICAgIHZhciB2YWx1ZTsKKyAgICB2YXIgaXRlbXMgPSBkZWZpbml0aW9uLml0ZW1zOworICAgIHZhciB4bWwgPSBkZWZpbml0aW9uLnhtbCB8fCB7fTsKKyAgICB2YXIgbmFtZXNwYWNlID0gZ2V0TmFtZXNwYWNlKHhtbCk7CisgICAgdmFyIGF0dHJpYnV0ZXMgPSBbXTsKKworICAgIGlmICghaXRlbXMpIHsgcmV0dXJuIGdldEVycm9yTWVzc2FnZSgpOyB9CisgICAgdmFyIGtleSA9IG5hbWU7CisgICAgLy8gSWYgdGhlcmUgaXMgYSBuYW1lIHNwZWNpZmllZCBmb3IgdGhlIGFycmF5IGVsZW1lbnRzLCB1c2UgdGhhdCBmb3IgdGhlIGFycmF5IGVsZW1lbnRzIG5hbWUgfCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9pc3N1ZXMvMjU3NworICAgIGlmKGl0ZW1zLnhtbCAmJiBpdGVtcy54bWwubmFtZSkgeworICAgICAgICBrZXkgPSBpdGVtcy54bWwubmFtZTsKKyAgICB9CisgICAgdmFsdWUgPSBjcmVhdGVTY2hlbWFYTUwoa2V5LCBpdGVtcywgbW9kZWxzLCBjb25maWcpOworICAgIGlmIChuYW1lc3BhY2UpIHsKKyAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lc3BhY2UpOworICAgIH0KKworICAgIGlmICh4bWwud3JhcHBlZCkgeworICAgICAgdmFsdWUgPSB3cmFwVGFnKG5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFsdWU7CisgIH07CisKKyAgdmFyIGdldFByaW1pdGl2ZVNpZ25hdHVyZSA9IGZ1bmN0aW9uIChzY2hlbWEpIHsKKyAgICB2YXIgdHlwZSwgaXRlbXM7CisKKyAgICBzY2hlbWEgPSBzY2hlbWEgfHwge307CisgICAgaXRlbXMgPSBzY2hlbWEuaXRlbXMgfHwge307CisgICAgdHlwZSA9IHNjaGVtYS50eXBlIHx8ICcnOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICBjYXNlICdvYmplY3QnOiByZXR1cm4gJ09iamVjdCBpcyBub3QgYSBwcmltaXRpdmUnOworICAgICAgY2FzZSAnYXJyYXknIDogcmV0dXJuICdBcnJheVsnICsgKGl0ZW1zLmZvcm1hdCB8fCBpdGVtcy50eXBlKSArICddJzsKKyAgICAgIGRlZmF1bHQ6IHJldHVybiBzY2hlbWEuZm9ybWF0IHx8IHR5cGU7CisgICAgfQorICB9OworCisgIHZhciBjcmVhdGVQcmltaXRpdmVYTUwgPSBmdW5jdGlvbiAoZGVzY3JpcHRvcikgeworICAgIHZhciBuYW1lID0gZGVzY3JpcHRvci5uYW1lOworICAgIHZhciBkZWZpbml0aW9uID0gZGVzY3JpcHRvci5kZWZpbml0aW9uOworICAgIHZhciBwcmltaXRpdmVzTWFwID0geworICAgICAgJ3N0cmluZyc6IHsKKyAgICAgICAgJ2RhdGUnOiBuZXcgRGF0ZSgxKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0sCisgICAgICAgICdkYXRlLXRpbWUnIDogbmV3IERhdGUoMSkudG9JU09TdHJpbmcoKSwKKyAgICAgICAgJ2RlZmF1bHQnOiAnc3RyaW5nJworICAgICAgfSwKKyAgICAgICdpbnRlZ2VyJzogeworICAgICAgICAnZGVmYXVsdCc6IDEKKyAgICAgIH0sCisgICAgICAnbnVtYmVyJzogeworICAgICAgICAnZGVmYXVsdCc6IDEuMQorICAgICAgfSwKKyAgICAgICdib29sZWFuJzogeworICAgICAgICAnZGVmYXVsdCc6IHRydWUKKyAgICAgIH0KKyAgICB9OworICAgIHZhciB0eXBlID0gZGVmaW5pdGlvbi50eXBlOworICAgIHZhciBmb3JtYXQgPSBkZWZpbml0aW9uLmZvcm1hdDsKKyAgICB2YXIgeG1sID0gZGVmaW5pdGlvbi54bWwgfHwge307CisgICAgdmFyIG5hbWVzcGFjZSA9IGdldE5hbWVzcGFjZSh4bWwpOworICAgIHZhciBhdHRyaWJ1dGVzID0gW107CisgICAgdmFyIHZhbHVlOworCisgICAgaWYgKF8ua2V5cyhwcmltaXRpdmVzTWFwKS5pbmRleE9mKHR5cGUpIDwgMCkgeyByZXR1cm4gZ2V0RXJyb3JNZXNzYWdlKCk7IH0KKworICAgIGlmIChfLmlzQXJyYXkoZGVmaW5pdGlvbi5lbnVtKSl7CisgICAgICB2YWx1ZSA9IGRlZmluaXRpb24uZW51bVswXTsKKyAgICB9IGVsc2UgeworICAgICAgdmFsdWUgPSBkZWZpbml0aW9uLmV4YW1wbGUgfHwgcHJpbWl0aXZlc01hcFt0eXBlXVtmb3JtYXRdIHx8IHByaW1pdGl2ZXNNYXBbdHlwZV0uZGVmYXVsdDsKKyAgICB9CisKKyAgICBpZiAoeG1sLmF0dHJpYnV0ZSkgeworICAgICAgcmV0dXJuIHtuYW1lOiBuYW1lLCB2YWx1ZTogdmFsdWV9OworICAgIH0KKworICAgIGlmIChuYW1lc3BhY2UpIHsKKyAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lc3BhY2UpOworICAgIH0KKworICAgIHJldHVybiB3cmFwVGFnKG5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgfTsKKworICBmdW5jdGlvbiBjcmVhdGVPYmplY3RYTUwgKGRlc2NyaXB0b3IpIHsKKyAgICB2YXIgbmFtZSA9IGRlc2NyaXB0b3IubmFtZTsKKyAgICB2YXIgZGVmaW5pdGlvbiA9IGRlc2NyaXB0b3IuZGVmaW5pdGlvbjsKKyAgICB2YXIgY29uZmlnID0gZGVzY3JpcHRvci5jb25maWc7CisgICAgdmFyIG1vZGVscyA9IGRlc2NyaXB0b3IubW9kZWxzOworICAgIHZhciBpc1BhcmFtID0gZGVzY3JpcHRvci5jb25maWcuaXNQYXJhbTsKKyAgICB2YXIgc2VyaWFsaXplZFByb3BlcnRpZXM7CisgICAgdmFyIGF0dHJzID0gW107CisgICAgdmFyIHByb3BlcnRpZXMgPSBkZWZpbml0aW9uLnByb3BlcnRpZXM7CisgICAgdmFyIGFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gZGVmaW5pdGlvbi5hZGRpdGlvbmFsUHJvcGVydGllczsKKyAgICB2YXIgeG1sID0gZGVmaW5pdGlvbi54bWw7CisgICAgdmFyIG5hbWVzcGFjZSA9IGdldE5hbWVzcGFjZSh4bWwpOworCisgICAgaWYgKG5hbWVzcGFjZSkgeworICAgICAgYXR0cnMucHVzaChuYW1lc3BhY2UpOworICAgIH0KKworICAgIGlmICghcHJvcGVydGllcyAmJiAhYWRkaXRpb25hbFByb3BlcnRpZXMpIHsgcmV0dXJuIGdldEVycm9yTWVzc2FnZSgpOyB9CisKKyAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTsKKworICAgIHNlcmlhbGl6ZWRQcm9wZXJ0aWVzID0gXy5tYXAocHJvcGVydGllcywgZnVuY3Rpb24gKHByb3AsIGtleSkgeworICAgICAgdmFyIHhtbCwgcmVzdWx0OworCisgICAgICBpZiAoaXNQYXJhbSAmJiBwcm9wLnJlYWRPbmx5KSB7CisgICAgICAgIHJldHVybiAnJzsKKyAgICAgIH0KKworICAgICAgeG1sID0gcHJvcC54bWwgfHwge307CisgICAgICByZXN1bHQgPSBjcmVhdGVTY2hlbWFYTUwoa2V5LCBwcm9wLCBtb2RlbHMsIGNvbmZpZyk7CisKKyAgICAgIGlmICh4bWwuYXR0cmlidXRlKSB7CisgICAgICAgIGF0dHJzLnB1c2gocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuICcnOworICAgICAgfQorCisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pLmpvaW4oJycpOworCisgICAgaWYgKGFkZGl0aW9uYWxQcm9wZXJ0aWVzKSB7CisgICAgICBzZXJpYWxpemVkUHJvcGVydGllcyArPSAnPCEtLSBhZGRpdGlvbmFsIGVsZW1lbnRzIGFsbG93ZWQgLS0+JzsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcFRhZyhuYW1lLCBzZXJpYWxpemVkUHJvcGVydGllcywgYXR0cnMpOworICB9CisKKyAgZnVuY3Rpb24gZ2V0SW5maW5pdGVMb29wTWVzc2FnZSAobmFtZSwgbG9vcFRvKSB7CisgICAgcmV0dXJuIHdyYXBUYWcobmFtZSwgJzwhLS0gSW5maW5pdGUgbG9vcCAkcmVmOicgKyBsb29wVG8gKyAnIC0tPicpOworICB9CisKKyAgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlIChkZXRhaWxzKSB7CisgICAgZGV0YWlscyA9IGRldGFpbHMgPyAnOiAnICsgZGV0YWlscyA6ICcnOworICAgIHJldHVybiAnPCEtLSBpbnZhbGlkIFhNTCcgKyBkZXRhaWxzICsgJyAtLT4nOworICB9CisKKyAgZnVuY3Rpb24gY3JlYXRlU2NoZW1hWE1MIChuYW1lLCBkZWZpbml0aW9uLCBtb2RlbHMsIGNvbmZpZykgeworICAgIHZhciAkcmVmID0gXy5pc09iamVjdChkZWZpbml0aW9uKSA/IGRlZmluaXRpb24uJHJlZiA6IG51bGw7CisgICAgdmFyIG91dHB1dCwgaW5kZXg7CisgICAgY29uZmlnID0gY29uZmlnIHx8IHt9OworICAgIGNvbmZpZy5tb2RlbHNUb0lnbm9yZSA9IGNvbmZpZy5tb2RlbHNUb0lnbm9yZSB8fCBbXTsKKworICAgIHZhciBkZXNjcmlwdG9yID0gXy5pc1N0cmluZygkcmVmKSA/IGdldERlc2NyaXB0b3JCeVJlZigkcmVmLCBuYW1lLCBtb2RlbHMsIGNvbmZpZykKKyAgICAgICAgOiBnZXREZXNjcmlwdG9yKG5hbWUsIGRlZmluaXRpb24sIG1vZGVscywgY29uZmlnKTsKKworICAgIGlmICghZGVzY3JpcHRvcikgeworICAgICAgcmV0dXJuIGdldEVycm9yTWVzc2FnZSgpOworICAgIH0KKworICAgIHN3aXRjaCAoZGVzY3JpcHRvci50eXBlKSB7CisgICAgICBjYXNlICdhcnJheSc6CisgICAgICAgIG91dHB1dCA9IGNyZWF0ZUFycmF5WE1MKGRlc2NyaXB0b3IpOyBicmVhazsKKyAgICAgIGNhc2UgJ29iamVjdCc6CisgICAgICAgIG91dHB1dCA9IGNyZWF0ZU9iamVjdFhNTChkZXNjcmlwdG9yKTsgYnJlYWs7CisgICAgICBjYXNlICdsb29wJzoKKyAgICAgICAgb3V0cHV0ID0gZ2V0SW5maW5pdGVMb29wTWVzc2FnZShkZXNjcmlwdG9yLm5hbWUsIGRlc2NyaXB0b3IuY29uZmlnLmxvb3BUbyk7IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgb3V0cHV0ID0gY3JlYXRlUHJpbWl0aXZlWE1MKGRlc2NyaXB0b3IpOworICAgIH0KKworICAgIGlmICgkcmVmICYmIGRlc2NyaXB0b3IudHlwZSAhPT0gJ2xvb3AnKSB7CisgICAgICBpbmRleCA9IGNvbmZpZy5tb2RlbHNUb0lnbm9yZS5pbmRleE9mKCRyZWYpOworICAgICAgaWYgKGluZGV4ID4gLTEpIHsKKyAgICAgICAgY29uZmlnLm1vZGVsc1RvSWdub3JlLnNwbGljZShpbmRleCwgMSk7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG91dHB1dDsKKyAgfQorCisgIGZ1bmN0aW9uIERlc2NyaXB0b3IgKG5hbWUsIHR5cGUsIGRlZmluaXRpb24sIG1vZGVscywgY29uZmlnKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCA0KSB7CisgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICB9CisgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwge307CisgICAgdGhpcy5jb25maWcubW9kZWxzVG9JZ25vcmUgPSB0aGlzLmNvbmZpZy5tb2RlbHNUb0lnbm9yZSB8fCBbXTsKKyAgICAvLyBuYW1lIGlzIGFscmVhZHkgc2V0IGJ5IGdldERlc2NyaXB0b3JCeVJlZiBvciBnZXREZXNjcmlwdG9yIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgdHlwZS4gT25seSBwcmVmaXgsIGlmIHByZXNlbnQgaXMgbmVlZGVkIHRvIGJlIHNldCBoZXJlIHwgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvaXNzdWVzLzI1NzcKKyAgICB0aGlzLm5hbWUgPSBnZXRQcmVmaXgobmFtZSwgZGVmaW5pdGlvbi54bWwpOworICAgIHRoaXMuZGVmaW5pdGlvbiA9IGRlZmluaXRpb247CisgICAgdGhpcy5tb2RlbHMgPSBtb2RlbHM7CisgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgfQorCisgIGZ1bmN0aW9uIGdldERlc2NyaXB0b3JCeVJlZigkcmVmLCBuYW1lLCBtb2RlbHMsIGNvbmZpZykgeworICAgIHZhciBtb2RlbFR5cGUgPSBzaW1wbGVSZWYoJHJlZik7CisgICAgdmFyIG1vZGVsID0gbW9kZWxzW21vZGVsVHlwZV0gfHwge307CisgICAgdmFyIHR5cGUgPSBtb2RlbC5kZWZpbml0aW9uICYmIG1vZGVsLmRlZmluaXRpb24udHlwZSA/IG1vZGVsLmRlZmluaXRpb24udHlwZSA6ICdvYmplY3QnOworICAgIC8vIElmIG1vZGVsIGRlZmluaXRpb24geG1sIG5hbWUgaXMgcHJlc2VudCwgdGhlbiB0aGF0IHdpbGwgYmUgcHJlZmVycmVkIG92ZXIgbW9kZWwgbmFtZS4gVGhpcyBpcyB0aGUgY2FzZSBvZiBwcmVmZXJyaW5nIFhtbEVsZW1lbnQgbmFtZSBvdmVyIFhtbFJvb3RFbGVtZW50IG5hbWUgaWYgWG1sRWxlbWVudCBuYW1lIGlzIHByb3ZpZGVkIHwgaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItdWkvaXNzdWVzLzI1NzcKKyAgICBpZihtb2RlbC5kZWZpbml0aW9uICYmIG1vZGVsLmRlZmluaXRpb24ueG1sICYmIG1vZGVsLmRlZmluaXRpb24ueG1sLm5hbWUpIHsKKyAgICAgICAgbmFtZSA9IG5hbWUgfHwgbW9kZWwuZGVmaW5pdGlvbi54bWwubmFtZSB8fCBtb2RlbC5uYW1lOworICAgIH0KKyAgICAvLyBlbHNlIG9ubHkgbW9kZWwgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZm9yIGRldGVybWluYXRpb24gfCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9pc3N1ZXMvMjU3NworICAgIGVsc2UgeworICAgICAgICBuYW1lID0gbmFtZSB8fCBtb2RlbC5uYW1lOworICAgIH0KKworICAgIGlmIChjb25maWcubW9kZWxzVG9JZ25vcmUuaW5kZXhPZigkcmVmKSA+IC0xKSB7CisgICAgICB0eXBlID0gJ2xvb3AnOworICAgICAgY29uZmlnLmxvb3BUbyA9IG1vZGVsVHlwZTsKKyAgICB9IGVsc2UgeworICAgICAgY29uZmlnLm1vZGVsc1RvSWdub3JlLnB1c2goJHJlZik7CisgICAgfQorCisgICAgaWYgKCFtb2RlbC5kZWZpbml0aW9uKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBEZXNjcmlwdG9yKG5hbWUsIHR5cGUsIG1vZGVsLmRlZmluaXRpb24sIG1vZGVscywgY29uZmlnKTsKKyAgfQorCisgIGZ1bmN0aW9uIGdldERlc2NyaXB0b3IgKG5hbWUsIGRlZmluaXRpb24sIG1vZGVscywgY29uZmlnKXsKKyAgICB2YXIgdHlwZSA9IGRlZmluaXRpb24udHlwZSB8fCAnb2JqZWN0JzsKKyAgICAvLyBJZiBkZWZpbml0aW9uIHhtbCBuYW1lIGlzIHByZXNlbnQsIHRoZW4gdGhhdCB3aWxsIGJlIHByZWZlcnJlZCBvdmVyIG5hbWUgfCBodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aS9pc3N1ZXMvMjU3NworICAgIGlmKGRlZmluaXRpb24ueG1sICYmIGRlZmluaXRpb24ueG1sLm5hbWUpIHsKKyAgICAgICAgbmFtZSA9IGRlZmluaXRpb24ueG1sLm5hbWUgfHwgbmFtZTsKKyAgICB9CisgICAgaWYgKCFkZWZpbml0aW9uKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IERlc2NyaXB0b3IobmFtZSwgdHlwZSwgZGVmaW5pdGlvbiwgbW9kZWxzLCBjb25maWcpOworICB9CisKKyAgZnVuY3Rpb24gY3JlYXRlWE1MU2FtcGxlIChuYW1lLCBkZWZpbml0aW9uLCBtb2RlbHMsIGlzUGFyYW0pIHsKKyAgICB2YXIgcHJvbG9nID0gJzw/eG1sIHZlcnNpb249IjEuMCI/Pic7CisKKyAgICByZXR1cm4gZm9ybWF0WG1sKHByb2xvZyArIGNyZWF0ZVNjaGVtYVhNTChuYW1lLCBkZWZpbml0aW9uLCBtb2RlbHMsIHsgaXNQYXJhbTogaXNQYXJhbSB9ICkpOworICB9CisKKyAgcmV0dXJuIHsKKyAgICAgIGdldE1vZGVsU2lnbmF0dXJlOiBnZXRNb2RlbFNpZ25hdHVyZSwKKyAgICAgIGNyZWF0ZUpTT05TYW1wbGU6IGNyZWF0ZUpTT05TYW1wbGUsCisgICAgICBnZXRQYXJhbWV0ZXJNb2RlbFNpZ25hdHVyZTogZ2V0UGFyYW1ldGVyTW9kZWxTaWduYXR1cmUsCisgICAgICBjcmVhdGVQYXJhbWV0ZXJKU09OU2FtcGxlOiBjcmVhdGVQYXJhbWV0ZXJKU09OU2FtcGxlLAorICAgICAgY3JlYXRlU2NoZW1hWE1MOiBjcmVhdGVTY2hlbWFYTUwsCisgICAgICBjcmVhdGVYTUxTYW1wbGU6IGNyZWF0ZVhNTFNhbXBsZSwKKyAgICAgIGdldFByaW1pdGl2ZVNpZ25hdHVyZTogZ2V0UHJpbWl0aXZlU2lnbmF0dXJlCisgIH07CisKK30pKCk7CisKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLlZpZXdzLlBvcHVwVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKyAgICBldmVudHM6IHsKKyAgICAgICAgJ2NsaWNrIC5hcGktcG9wdXAtY2FuY2VsJzogJ2NhbmNlbENsaWNrJworICAgIH0sCisKKyAgICB0ZW1wbGF0ZTogSGFuZGxlYmFycy50ZW1wbGF0ZXMucG9wdXAsCisgICAgY2xhc3NOYW1lOiAnYXBpLXBvcHVwLWRpYWxvZycsCisKKyAgICBzZWxlY3RvcnM6IHsKKyAgICAgICAgY29udGVudDogJy5hcGktcG9wdXAtY29udGVudCcsCisgICAgICAgIG1haW4gICA6ICcjc3dhZ2dlci11aS1jb250YWluZXInCisgICAgfSwKKworICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCl7CisgICAgICAgIHRoaXMuJGVsLmh0bWwodGhpcy50ZW1wbGF0ZSh0aGlzLm1vZGVsKSk7CisgICAgfSwKKworICAgIHJlbmRlcjogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLiQodGhpcy5zZWxlY3RvcnMuY29udGVudCkuYXBwZW5kKHRoaXMubW9kZWwuY29udGVudCk7CisgICAgICAgICQodGhpcy5zZWxlY3RvcnMubWFpbikuZmlyc3QoKS5hcHBlbmQodGhpcy5lbCk7CisgICAgICAgIHRoaXMuc2hvd1BvcHVwKCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIHNob3dQb3B1cDogZnVuY3Rpb24gKCkgeworICAgICAgICB0aGlzLiRlbC5zaG93KCk7CisgICAgfSwKKworICAgIGNhbmNlbENsaWNrOiBmdW5jdGlvbiAoKSB7CisgICAgICAgIHRoaXMucmVtb3ZlKCk7CisgICAgfQorCit9KTsKKworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuUmVzb3VyY2VWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRzKSB7CisgICAgb3B0cyA9IG9wdHMgfHwge307CisgICAgdGhpcy5yb3V0ZXIgPSBvcHRzLnJvdXRlcjsKKyAgICB0aGlzLmF1dGhzID0gb3B0cy5hdXRoczsKKyAgICBpZiAoJycgPT09IHRoaXMubW9kZWwuZGVzY3JpcHRpb24pIHsKKyAgICAgIHRoaXMubW9kZWwuZGVzY3JpcHRpb24gPSBudWxsOworICAgIH0KKyAgICBpZiAodGhpcy5tb2RlbC5kZXNjcmlwdGlvbikgeworICAgICAgdGhpcy5tb2RlbC5zdW1tYXJ5ID0gdGhpcy5tb2RlbC5kZXNjcmlwdGlvbjsKKyAgICB9CisgICAgdGhpcy5udW1iZXIgPSAwOworICB9LAorCisgIHJlbmRlcjogZnVuY3Rpb24oKXsKKyAgICB2YXIgbWV0aG9kcyA9IHt9OworCisKKyAgICAkKHRoaXMuZWwpLmh0bWwoSGFuZGxlYmFycy50ZW1wbGF0ZXMucmVzb3VyY2UodGhpcy5tb2RlbCkpOworCisgICAgLy8gUmVuZGVyIGVhY2ggb3BlcmF0aW9uCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1vZGVsLm9wZXJhdGlvbnNBcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgdmFyIG9wZXJhdGlvbiA9IHRoaXMubW9kZWwub3BlcmF0aW9uc0FycmF5W2ldOworICAgICAgdmFyIGNvdW50ZXIgPSAwOworICAgICAgdmFyIGlkID0gb3BlcmF0aW9uLm5pY2tuYW1lOworCisgICAgICB3aGlsZSAodHlwZW9mIG1ldGhvZHNbaWRdICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBpZCA9IGlkICsgJ18nICsgY291bnRlcjsKKyAgICAgICAgY291bnRlciArPSAxOworICAgICAgfQorCisgICAgICBtZXRob2RzW2lkXSA9IG9wZXJhdGlvbjsKKworICAgICAgb3BlcmF0aW9uLm5pY2tuYW1lID0gaWQ7CisgICAgICBvcGVyYXRpb24ucGFyZW50SWQgPSB0aGlzLm1vZGVsLmlkOworICAgICAgb3BlcmF0aW9uLmRlZmluaXRpb25zID0gdGhpcy5tb2RlbC5kZWZpbml0aW9uczsgLy8gbWFrZSBKc29uIFNjaGVtYSBhdmFpbGFibGUgZm9yIEpTb25FZGl0b3IgaW4gdGhpcyBvcGVyYXRpb24KKyAgICAgIHRoaXMuYWRkT3BlcmF0aW9uKG9wZXJhdGlvbik7CisgICAgfQorCisgICAgJCgnLnRvZ2dsZUVuZHBvaW50TGlzdCcsIHRoaXMuZWwpLmNsaWNrKHRoaXMuY2FsbERvY3MuYmluZCh0aGlzLCAndG9nZ2xlRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2UnKSk7CisgICAgJCgnLmNvbGxhcHNlUmVzb3VyY2UnLCB0aGlzLmVsKS5jbGljayh0aGlzLmNhbGxEb2NzLmJpbmQodGhpcywgJ2NvbGxhcHNlT3BlcmF0aW9uc0ZvclJlc291cmNlJykpOworICAgICQoJy5leHBhbmRSZXNvdXJjZScsIHRoaXMuZWwpLmNsaWNrKHRoaXMuY2FsbERvY3MuYmluZCh0aGlzLCAnZXhwYW5kT3BlcmF0aW9uc0ZvclJlc291cmNlJykpOworCisgICAgcmV0dXJuIHRoaXM7CisgIH0sCisKKyAgYWRkT3BlcmF0aW9uOiBmdW5jdGlvbihvcGVyYXRpb24pIHsKKworICAgIG9wZXJhdGlvbi5udW1iZXIgPSB0aGlzLm51bWJlcjsKKworICAgIC8vIFJlbmRlciBhbiBvcGVyYXRpb24gYW5kIGFkZCBpdCB0byBvcGVyYXRpb25zIGxpCisgICAgdmFyIG9wZXJhdGlvblZpZXcgPSBuZXcgU3dhZ2dlclVpLlZpZXdzLk9wZXJhdGlvblZpZXcoeworICAgICAgbW9kZWw6IG9wZXJhdGlvbiwKKyAgICAgIHJvdXRlcjogdGhpcy5yb3V0ZXIsCisgICAgICB0YWdOYW1lOiAnbGknLAorICAgICAgY2xhc3NOYW1lOiAnZW5kcG9pbnQnLAorICAgICAgc3dhZ2dlck9wdGlvbnM6IHRoaXMub3B0aW9ucy5zd2FnZ2VyT3B0aW9ucywKKyAgICAgIGF1dGhzOiB0aGlzLmF1dGhzCisgICAgfSk7CisKKyAgICAkKCcuZW5kcG9pbnRzJywgJCh0aGlzLmVsKSkuYXBwZW5kKG9wZXJhdGlvblZpZXcucmVuZGVyKCkuZWwpOworCisgICAgdGhpcy5udW1iZXIrKzsKKworICB9LAorICAvLyBHZW5lcmljIEV2ZW50IGhhbmRsZXIgKGBEb2NzYCBpcyBnbG9iYWwpCisKKworICBjYWxsRG9jczogZnVuY3Rpb24oZm5OYW1lLCBlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIERvY3NbZm5OYW1lXShlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJykpOworICB9Cit9KTsKKworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuUmVzcG9uc2VDb250ZW50VHlwZVZpZXcgPSBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CisgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCl7fSwKKworICByZW5kZXI6IGZ1bmN0aW9uKCl7CisgICAgdGhpcy5tb2RlbC5yZXNwb25zZUNvbnRlbnRUeXBlSWQgPSAncmN0JyArIE1hdGgucmFuZG9tKCk7CisgICAgJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLnJlc3BvbnNlX2NvbnRlbnRfdHlwZSh0aGlzLm1vZGVsKSk7CisgICAgcmV0dXJuIHRoaXM7CisgIH0KK30pOworJ3VzZSBzdHJpY3QnOworCitTd2FnZ2VyVWkuVmlld3MuU2lnbmF0dXJlVmlldyA9IEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKKyAgZXZlbnRzOiB7CisgICAgJ2NsaWNrIGEuZGVzY3JpcHRpb24tbGluaycgICAgICAgOiAnc3dpdGNoVG9EZXNjcmlwdGlvbicsCisgICAgJ2NsaWNrIGEuc25pcHBldC1saW5rJyAgICAgICAgICAgOiAnc3dpdGNoVG9TbmlwcGV0JywKKyAgICAnbW91c2Vkb3duIC5zbmlwcGV0X2pzb24nICAgICAgICAgIDogJ2pzb25TbmlwcGV0TW91c2VEb3duJywKKyAgICAnbW91c2Vkb3duIC5zbmlwcGV0X3htbCcgICAgICAgICAgOiAneG1sU25pcHBldE1vdXNlRG93bicKKyAgfSwKKworICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7CisgIH0sCisKKyAgcmVuZGVyOiBmdW5jdGlvbigpeworCisgICAgJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLnNpZ25hdHVyZSh0aGlzLm1vZGVsKSk7CisKKyAgICBpZiAodGhpcy5tb2RlbC5kZWZhdWx0UmVuZGVyaW5nID09PSAnbW9kZWwnKSB7CisgICAgICB0aGlzLnN3aXRjaFRvRGVzY3JpcHRpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgdGhpcy5zd2l0Y2hUb1NuaXBwZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpczsKKyAgfSwKKworICAvLyBoYW5kbGVyIGZvciBzaG93IHNpZ25hdHVyZQorICBzd2l0Y2hUb0Rlc2NyaXB0aW9uOiBmdW5jdGlvbihlKXsKKyAgICBpZiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0KKworICAgICQoJy5zbmlwcGV0JywgJCh0aGlzLmVsKSkuaGlkZSgpOworICAgICQoJy5kZXNjcmlwdGlvbicsICQodGhpcy5lbCkpLnNob3coKTsKKyAgICAkKCcuZGVzY3JpcHRpb24tbGluaycsICQodGhpcy5lbCkpLmFkZENsYXNzKCdzZWxlY3RlZCcpOworICAgICQoJy5zbmlwcGV0LWxpbmsnLCAkKHRoaXMuZWwpKS5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKTsKKyAgfSwKKworICAvLyBoYW5kbGVyIGZvciBzaG93IHNhbXBsZQorICBzd2l0Y2hUb1NuaXBwZXQ6IGZ1bmN0aW9uKGUpeworICAgIGlmIChlKSB7IGUucHJldmVudERlZmF1bHQoKTsgfQorCisgICAgJCgnLnNuaXBwZXQnLCAkKHRoaXMuZWwpKS5zaG93KCk7CisgICAgJCgnLmRlc2NyaXB0aW9uJywgJCh0aGlzLmVsKSkuaGlkZSgpOworICAgICQoJy5zbmlwcGV0LWxpbmsnLCAkKHRoaXMuZWwpKS5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKKyAgICAkKCcuZGVzY3JpcHRpb24tbGluaycsICQodGhpcy5lbCkpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOworICB9LAorCisgIC8vIGhhbmRsZXIgZm9yIHNuaXBwZXQgdG8gdGV4dCBhcmVhCisgIHNuaXBwZXRUb1RleHRBcmVhOiBmdW5jdGlvbih2YWwpIHsKKyAgICB2YXIgdGV4dEFyZWEgPSAkKCd0ZXh0YXJlYScsICQodGhpcy5lbC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZSkpOworCisgICAgLy8gRml4IGZvciBidWcgaW4gSUUgMTAvMTEgd2hpY2ggY2F1c2VzIHBsYWNlaG9sZGVyIHRleHQgdG8gYmUgY29waWVkIHRvICJ2YWx1ZSIKKyAgICBpZiAoJC50cmltKHRleHRBcmVhLnZhbCgpKSA9PT0gJycgfHwgdGV4dEFyZWEucHJvcCgncGxhY2Vob2xkZXInKSA9PT0gdGV4dEFyZWEudmFsKCkpIHsKKyAgICAgIHRleHRBcmVhLnZhbCh2YWwpOworICAgICAgLy8gVE9ETyBtb3ZlIHRoaXMgY29kZSBvdXRzaWRlIG9mIHRoZSB2aWV3IGFuZCBleHBvc2UgYW4gZXZlbnQgaW5zdGVhZAorICAgICAgaWYoIHRoaXMubW9kZWwuanNvbkVkaXRvciAmJiB0aGlzLm1vZGVsLmpzb25FZGl0b3IuaXNFbmFibGVkKCkpeworICAgICAgICB0aGlzLm1vZGVsLmpzb25FZGl0b3Iuc2V0VmFsdWUoSlNPTi5wYXJzZSh0aGlzLm1vZGVsLnNhbXBsZUpTT04pKTsKKyAgICAgIH0KKyAgICB9CisgIH0sCisKKyAganNvblNuaXBwZXRNb3VzZURvd246IGZ1bmN0aW9uIChlKSB7CisgICAgaWYgKHRoaXMubW9kZWwuaXNQYXJhbSkgeworICAgICAgaWYgKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9CisKKyAgICAgIHRoaXMuc25pcHBldFRvVGV4dEFyZWEodGhpcy5tb2RlbC5zYW1wbGVKU09OKTsKKyAgICB9CisgIH0sCisKKyAgeG1sU25pcHBldE1vdXNlRG93bjogZnVuY3Rpb24gKGUpIHsKKyAgICBpZiAodGhpcy5tb2RlbC5pc1BhcmFtKSB7CisgICAgICBpZiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0KKworICAgICAgdGhpcy5zbmlwcGV0VG9UZXh0QXJlYSh0aGlzLm1vZGVsLnNhbXBsZVhNTCk7CisgICAgfQorICB9Cit9KTsKKyd1c2Ugc3RyaWN0JzsKKworU3dhZ2dlclVpLlZpZXdzLlN0YXR1c0NvZGVWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoeworICBpbml0aWFsaXplOiBmdW5jdGlvbiAob3B0cykgeworICAgIHRoaXMub3B0aW9ucyA9IG9wdHMgfHwge307CisgICAgdGhpcy5yb3V0ZXIgPSB0aGlzLm9wdGlvbnMucm91dGVyOworICB9LAorCisgIHJlbmRlcjogZnVuY3Rpb24oKXsKKyAgICB2YXIgcmVzcG9uc2VNb2RlbCwgcmVzcG9uc2VNb2RlbFZpZXc7CisgICAgdmFyIHZhbHVlID0gdGhpcy5yb3V0ZXIuYXBpLm1vZGVsc1t0aGlzLm1vZGVsLnJlc3BvbnNlTW9kZWxdOworICAgICQodGhpcy5lbCkuaHRtbChIYW5kbGViYXJzLnRlbXBsYXRlcy5zdGF0dXNfY29kZSh0aGlzLm1vZGVsKSk7CisKKyAgICBpZiAodGhpcy5yb3V0ZXIuYXBpLm1vZGVscy5oYXNPd25Qcm9wZXJ0eSh0aGlzLm1vZGVsLnJlc3BvbnNlTW9kZWwpKSB7CisgICAgICByZXNwb25zZU1vZGVsID0geworICAgICAgICBzYW1wbGVKU09OOiBKU09OLnN0cmluZ2lmeShTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmNyZWF0ZUpTT05TYW1wbGUodmFsdWUpLCB2b2lkIDAsIDIpLAorICAgICAgICBzYW1wbGVYTUw6IHRoaXMubW9kZWwuaXNYTUwgPyBTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmNyZWF0ZVhNTFNhbXBsZSgnJywgdGhpcy5tb2RlbC5zY2hlbWEsIHRoaXMucm91dGVyLmFwaS5tb2RlbHMpIDogZmFsc2UsCisgICAgICAgIGlzUGFyYW06IGZhbHNlLAorICAgICAgICBzaWduYXR1cmU6IFN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuZ2V0TW9kZWxTaWduYXR1cmUodGhpcy5tb2RlbC5yZXNwb25zZU1vZGVsLCB2YWx1ZSwgdGhpcy5yb3V0ZXIuYXBpLm1vZGVscyksCisgICAgICAgIGRlZmF1bHRSZW5kZXJpbmc6IHRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZworICAgICAgfTsKKyAgICB9IGVsc2UgeworICAgICAgcmVzcG9uc2VNb2RlbCA9IHsKKyAgICAgICAgc2lnbmF0dXJlOiBTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmdldFByaW1pdGl2ZVNpZ25hdHVyZSh0aGlzLm1vZGVsLnNjaGVtYSkKKyAgICAgIH07CisgICAgfQorCisgICAgcmVzcG9uc2VNb2RlbFZpZXcgPSBuZXcgU3dhZ2dlclVpLlZpZXdzLlNpZ25hdHVyZVZpZXcoe21vZGVsOiByZXNwb25zZU1vZGVsLCB0YWdOYW1lOiAnZGl2J30pOworICAgICQoJy5tb2RlbC1zaWduYXR1cmUnLCB0aGlzLiRlbCkuYXBwZW5kKHJlc3BvbnNlTW9kZWxWaWV3LnJlbmRlcigpLmVsKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfQorfSk7fSkuY2FsbCh0aGlzKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zjg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5SbGJYQnNZWFJsY3k1cWN5SXNJbVJ2WXk1cWN5SXNJbVZ6TlMxemFHbHRMbXB6SWl3aWFHVnNjR1Z5Y3k5b1lXNWtiR1ZpWVhKekxtcHpJaXdpYzJGdWFYUnBlbVV0YUhSdGJDNXRhVzR1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12WW5KdmQzTmxjbWxtZVM5dWIyUmxYMjF2WkhWc1pYTXZZbkp2ZDNObGNpMXdZV05yTDE5d2NtVnNkV1JsTG1weklpd2lhVzVrWlhndWFuTWlMQ0pzYVdJdllYVjBhQzVxY3lJc0lteHBZaTlqYkdsbGJuUXVhbk1pTENKc2FXSXZhR1ZzY0dWeWN5NXFjeUlzSW14cFlpOW9kSFJ3TG1weklpd2liR2xpTDNKbGMyOXNkbVZ5TG1weklpd2liR2xpTDNOamFHVnRZUzF0WVhKcmRYQXVhbk1pTENKc2FXSXZjM0JsWXkxamIyNTJaWEowWlhJdWFuTWlMQ0pzYVdJdmRIbHdaWE12Ylc5a1pXd3Vhbk1pTENKc2FXSXZkSGx3WlhNdmIzQmxjbUYwYVc5dUxtcHpJaXdpYkdsaUwzUjVjR1Z6TDI5d1pYSmhkR2x2YmtkeWIzVndMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMkp5YjNkelpYSnBabmt2Ym05a1pWOXRiMlIxYkdWekwzQnliMk5sYzNNdlluSnZkM05sY2k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5aWRHOWhMMmx1WkdWNExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwySjFabVpsY2k5cGJtUmxlQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlpZFdabVpYSXZibTlrWlY5dGIyUjFiR1Z6TDJKaGMyVTJOQzFxY3k5c2FXSXZZalkwTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJKMVptWmxjaTl1YjJSbFgyMXZaSFZzWlhNdmFXVmxaVGMxTkM5cGJtUmxlQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlpZFdabVpYSXZibTlrWlY5dGIyUjFiR1Z6TDJsekxXRnljbUY1TDJsdVpHVjRMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMk52YjJ0cFpXcGhjaTlqYjI5cmFXVnFZWEl1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12YW5NdGVXRnRiQzlwYm1SbGVDNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXFjeTE1WVcxc0wyeHBZaTlxY3kxNVlXMXNMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnB6TFhsaGJXd3ZiR2xpTDJwekxYbGhiV3d2WTI5dGJXOXVMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnB6TFhsaGJXd3ZiR2xpTDJwekxYbGhiV3d2WkhWdGNHVnlMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnB6TFhsaGJXd3ZiR2xpTDJwekxYbGhiV3d2WlhoalpYQjBhVzl1TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJwekxYbGhiV3d2YkdsaUwycHpMWGxoYld3dmJHOWhaR1Z5TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJwekxYbGhiV3d2YkdsaUwycHpMWGxoYld3dmJXRnlheTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlxY3kxNVlXMXNMMnhwWWk5cWN5MTVZVzFzTDNOamFHVnRZUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlxY3kxNVlXMXNMMnhwWWk5cWN5MTVZVzFzTDNOamFHVnRZUzlqYjNKbExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwycHpMWGxoYld3dmJHbGlMMnB6TFhsaGJXd3ZjMk5vWlcxaEwyUmxabUYxYkhSZlpuVnNiQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlxY3kxNVlXMXNMMnhwWWk5cWN5MTVZVzFzTDNOamFHVnRZUzlrWldaaGRXeDBYM05oWm1VdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmFuTXRlV0Z0YkM5c2FXSXZhbk10ZVdGdGJDOXpZMmhsYldFdlptRnBiSE5oWm1VdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmFuTXRlV0Z0YkM5c2FXSXZhbk10ZVdGdGJDOXpZMmhsYldFdmFuTnZiaTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlxY3kxNVlXMXNMMnhwWWk5cWN5MTVZVzFzTDNSNWNHVXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZhbk10ZVdGdGJDOXNhV0l2YW5NdGVXRnRiQzkwZVhCbEwySnBibUZ5ZVM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5cWN5MTVZVzFzTDJ4cFlpOXFjeTE1WVcxc0wzUjVjR1V2WW05dmJDNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXFjeTE1WVcxc0wyeHBZaTlxY3kxNVlXMXNMM1I1Y0dVdlpteHZZWFF1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12YW5NdGVXRnRiQzlzYVdJdmFuTXRlV0Z0YkM5MGVYQmxMMmx1ZEM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5cWN5MTVZVzFzTDJ4cFlpOXFjeTE1WVcxc0wzUjVjR1V2YW5NdlpuVnVZM1JwYjI0dWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmFuTXRlV0Z0YkM5c2FXSXZhbk10ZVdGdGJDOTBlWEJsTDJwekwzSmxaMlY0Y0M1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5cWN5MTVZVzFzTDJ4cFlpOXFjeTE1WVcxc0wzUjVjR1V2YW5NdmRXNWtaV1pwYm1Wa0xtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwycHpMWGxoYld3dmJHbGlMMnB6TFhsaGJXd3ZkSGx3WlM5dFlYQXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZhbk10ZVdGdGJDOXNhV0l2YW5NdGVXRnRiQzkwZVhCbEwyMWxjbWRsTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJwekxYbGhiV3d2YkdsaUwycHpMWGxoYld3dmRIbHdaUzl1ZFd4c0xtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwycHpMWGxoYld3dmJHbGlMMnB6TFhsaGJXd3ZkSGx3WlM5dmJXRndMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnB6TFhsaGJXd3ZiR2xpTDJwekxYbGhiV3d2ZEhsd1pTOXdZV2x5Y3k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5cWN5MTVZVzFzTDJ4cFlpOXFjeTE1WVcxc0wzUjVjR1V2YzJWeExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwycHpMWGxoYld3dmJHbGlMMnB6TFhsaGJXd3ZkSGx3WlM5elpYUXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZhbk10ZVdGdGJDOXNhV0l2YW5NdGVXRnRiQzkwZVhCbEwzTjBjaTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlxY3kxNVlXMXNMMnhwWWk5cWN5MTVZVzFzTDNSNWNHVXZkR2x0WlhOMFlXMXdMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdllYSnlZWGt2YVc1a1pYaFBaaTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwyRnljbUY1TDJ4aGMzUXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5amFHRnBiaTlzYjJSaGMyZ3Vhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5amIyeHNaV04wYVc5dUwyVmhZMmd1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOWpiMnhzWldOMGFXOXVMMlpwYm1RdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlqYjJ4c1pXTjBhVzl1TDJadmNrVmhZMmd1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOWpiMnhzWldOMGFXOXVMMmx1WTJ4MVpHVnpMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdlkyOXNiR1ZqZEdsdmJpOXRZWEF1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOWtZWFJsTDI1dmR5NXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJaMWJtTjBhVzl1TDJKcGJtUXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5bWRXNWpkR2x2Ymk5eVpYTjBVR0Z5WVcwdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlNWVhwNVYzSmhjSEJsY2k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMHh2WkdGemFGZHlZWEJ3WlhJdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzloY25KaGVVTnZjSGt1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOWhjbkpoZVVWaFkyZ3Vhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5aGNuSmhlVTFoY0M1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMkZ5Y21GNVUyOXRaUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySmhjMlZCYzNOcFoyNHVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5aVlYTmxRMkZzYkdKaFkyc3Vhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5aVlYTmxRMnh2Ym1VdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlpWVhObFEyOXdlUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySmhjMlZEY21WaGRHVXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5aVlYTmxSV0ZqYUM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMkpoYzJWR2FXNWtMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dlltRnpaVVpwYm1SSmJtUmxlQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySmhjMlZHYjNJdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlpWVhObFJtOXlTVzR1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOWlZWE5sUm05eVQzZHVMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dlltRnpaVWRsZEM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMkpoYzJWSmJtUmxlRTltTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZbUZ6WlVselJYRjFZV3d1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOWlZWE5sU1hORmNYVmhiRVJsWlhBdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlpWVhObFNYTk5ZWFJqYUM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMkpoYzJWTWIyUmhjMmd1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOWlZWE5sVFdGd0xtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YVc1MFpYSnVZV3d2WW1GelpVMWhkR05vWlhNdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlpWVhObFRXRjBZMmhsYzFCeWIzQmxjblI1TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZbUZ6WlZCeWIzQmxjblI1TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZbUZ6WlZCeWIzQmxjblI1UkdWbGNDNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJsdWRHVnlibUZzTDJKaGMyVlRaWFJFWVhSaExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YVc1MFpYSnVZV3d2WW1GelpWTnNhV05sTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZbUZ6WlZSdlUzUnlhVzVuTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZbUZ6WlZaaGJIVmxjeTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySnBibUZ5ZVVsdVpHVjRMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dlltbHVZWEo1U1c1a1pYaENlUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySnBibVJEWVd4c1ltRmpheTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wySjFabVpsY2tOc2IyNWxMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dlkyOXRjRzl6WlVGeVozTXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5amIyMXdiM05sUVhKbmMxSnBaMmgwTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZM0psWVhSbFFtRnpaVVZoWTJndWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlqY21WaGRHVkNZWE5sUm05eUxtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YVc1MFpYSnVZV3d2WTNKbFlYUmxRbWx1WkZkeVlYQndaWEl1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOWpjbVZoZEdWRGRHOXlWM0poY0hCbGNpNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJsdWRHVnlibUZzTDJOeVpXRjBaVVpwYm1RdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlqY21WaGRHVkdiM0pGWVdOb0xtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YVc1MFpYSnVZV3d2WTNKbFlYUmxTSGxpY21sa1YzSmhjSEJsY2k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMk55WldGMFpWQmhjblJwWVd4WGNtRndjR1Z5TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZZM0psWVhSbFYzSmhjSEJsY2k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMlZ4ZFdGc1FYSnlZWGx6TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZaWEYxWVd4Q2VWUmhaeTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wyVnhkV0ZzVDJKcVpXTjBjeTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wyZGxkRVJoZEdFdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzluWlhSR2RXNWpUbUZ0WlM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMmRsZEV4bGJtZDBhQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wyZGxkRTFoZEdOb1JHRjBZUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wyZGxkRTVoZEdsMlpTNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJsdWRHVnlibUZzTDJsdVpHVjRUMlpPWVU0dWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzlwYm1sMFEyeHZibVZCY25KaGVTNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJsdWRHVnlibUZzTDJsdWFYUkRiRzl1WlVKNVZHRm5MbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dmFXNXBkRU5zYjI1bFQySnFaV04wTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZhWE5CY25KaGVVeHBhMlV1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOXBjMGh2YzNSUFltcGxZM1F1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOXBjMGx1WkdWNExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YVc1MFpYSnVZV3d2YVhOSmRHVnlZWFJsWlVOaGJHd3Vhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5cGMwdGxlUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wybHpUR0Y2YVdGaWJHVXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5cGMweGxibWQwYUM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMmx6VDJKcVpXTjBUR2xyWlM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMMmx6VTNSeWFXTjBRMjl0Y0dGeVlXSnNaUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wyMWxjbWRsUkdGMFlTNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXNiMlJoYzJndFkyOXRjR0YwTDJsdWRHVnlibUZzTDIxbGRHRk5ZWEF1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12Ykc5a1lYTm9MV052YlhCaGRDOXBiblJsY201aGJDOXlaV0ZzVG1GdFpYTXVhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZiRzlrWVhOb0xXTnZiWEJoZEM5cGJuUmxjbTVoYkM5eVpXOXlaR1Z5TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZhVzUwWlhKdVlXd3ZjbVZ3YkdGalpVaHZiR1JsY25NdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzl6WlhSRVlYUmhMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmFXNTBaWEp1WVd3dmMyaHBiVXRsZVhNdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlwYm5SbGNtNWhiQzkwYjA5aWFtVmpkQzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwybHVkR1Z5Ym1Gc0wzUnZVR0YwYUM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMmx1ZEdWeWJtRnNMM2R5WVhCd1pYSkRiRzl1WlM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMnhoYm1jdlkyeHZibVZFWldWd0xtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YkdGdVp5OXBjMEZ5WjNWdFpXNTBjeTVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOQmNuSmhlUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhORmJYQjBlUzVxY3lJc0ltNXZaR1ZmYlc5a2RXeGxjeTlzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOR2RXNWpkR2x2Ymk1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMnhoYm1jdmFYTk9ZWFJwZG1VdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzlzWVc1bkwybHpUMkpxWldOMExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwyeHZaR0Z6YUMxamIyMXdZWFF2YkdGdVp5OXBjMUJzWVdsdVQySnFaV04wTG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZiR0Z1Wnk5cGMxTjBjbWx1Wnk1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMnhoYm1jdmFYTlVlWEJsWkVGeWNtRjVMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmJHRnVaeTlwYzFWdVpHVm1hVzVsWkM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMjlpYW1WamRDOXJaWGx6TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDJ4dlpHRnphQzFqYjIxd1lYUXZiMkpxWldOMEwydGxlWE5KYmk1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMjlpYW1WamRDOXdZV2x5Y3k1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMMjlpYW1WamRDOTJZV3gxWlhNdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmJHOWtZWE5vTFdOdmJYQmhkQzl6ZFhCd2IzSjBMbXB6SWl3aWJtOWtaVjl0YjJSMWJHVnpMMnh2WkdGemFDMWpiMjF3WVhRdmRYUnBiR2wwZVM5cFpHVnVkR2wwZVM1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMM1YwYVd4cGRIa3ZibTl2Y0M1cWN5SXNJbTV2WkdWZmJXOWtkV3hsY3k5c2IyUmhjMmd0WTI5dGNHRjBMM1YwYVd4cGRIa3ZjSEp2Y0dWeWRIa3Vhbk1pTENKdWIyUmxYMjF2WkhWc1pYTXZjUzl4TG1weklpd2libTlrWlY5dGIyUjFiR1Z6TDNOMWNHVnlZV2RsYm5RdmJHbGlMMk5zYVdWdWRDNXFjeUlzSW01dlpHVmZiVzlrZFd4bGN5OXpkWEJsY21GblpXNTBMMnhwWWk5cGN5MXZZbXBsWTNRdWFuTWlMQ0p1YjJSbFgyMXZaSFZzWlhNdmMzVndaWEpoWjJWdWRDOXNhV0l2Y21WeGRXVnpkQzFpWVhObExtcHpJaXdpYm05a1pWOXRiMlIxYkdWekwzTjFjR1Z5WVdkbGJuUXZiR2xpTDNKbGNYVmxjM1F1YW5NaUxDSnViMlJsWDIxdlpIVnNaWE12YzNWd1pYSmhaMlZ1ZEM5dWIyUmxYMjF2WkhWc1pYTXZZMjl0Y0c5dVpXNTBMV1Z0YVhSMFpYSXZhVzVrWlhndWFuTWlMQ0pUZDJGbloyVnlWV2t1YW5NaUxDSjFkR2xzY3k5MWRHbHNjeTVxY3lJc0luWnBaWGN2UVhCcFMyVjVRWFYwYUUxdlpHVnNMbXB6SWl3aWRtbGxkeTlCY0dsTFpYbEJkWFJvVm1sbGR5NXFjeUlzSW5acFpYY3ZRWFYwYUVKMWRIUnZibFpwWlhjdWFuTWlMQ0oyYVdWM0wwRjFkR2h6UTI5c2JHVmpkR2x2Ymk1cWN5SXNJblpwWlhjdlFYVjBhSE5EYjJ4c1pXTjBhVzl1Vm1sbGR5NXFjeUlzSW5acFpYY3ZRWFYwYUZacFpYY3Vhbk1pTENKMmFXVjNMMEpoYzJsalFYVjBhRTF2WkdWc0xtcHpJaXdpZG1sbGR5OUNZWE5wWTBGMWRHaFdhV1YzTG1weklpd2lkbWxsZHk5RGIyNTBaVzUwVkhsd1pWWnBaWGN1YW5NaUxDSjJhV1YzTDBobFlXUmxjbFpwWlhjdWFuTWlMQ0oyYVdWM0wwMWhhVzVXYVdWM0xtcHpJaXdpZG1sbGR5OVBZWFYwYURKTmIyUmxiQzVxY3lJc0luWnBaWGN2VDJGMWRHZ3lWbWxsZHk1cWN5SXNJblpwWlhjdlQzQmxjbUYwYVc5dVZtbGxkeTVxY3lJc0luWnBaWGN2VUdGeVlXMWxkR1Z5UTI5dWRHVnVkRlI1Y0dWV2FXVjNMbXB6SWl3aWRtbGxkeTlRWVhKaGJXVjBaWEpXYVdWM0xtcHpJaXdpZG1sbGR5OXdZWEowYVdGc2N5OXphV2R1WVhSMWNtVXVhbk1pTENKMmFXVjNMMUJ2Y0hWd1ZtbGxkeTVxY3lJc0luWnBaWGN2VW1WemIzVnlZMlZXYVdWM0xtcHpJaXdpZG1sbGR5OVNaWE53YjI1elpVTnZiblJsYm5SVWVYQmxWbWxsZHk1cWN5SXNJblpwWlhjdlUybG5ibUYwZFhKbFZtbGxkeTVxY3lJc0luWnBaWGN2VTNSaGRIVnpRMjlrWlZacFpYY3Vhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN08wRkJRVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGRE1YaENRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVONFRVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUTJwb1JVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVU51UjBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPenM3T3pzN1FVTk9RVHRCUTBGQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRNME5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOeVNrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOd2RFSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTjJSVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONFdFRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTTVORUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpkblFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRNMjlDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpsRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRhblpEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEyaENRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6RkVRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU55UWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRE55OURRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpWSVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTndSa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRha05CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzSlJRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTFCQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzWkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZETTBSQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGJIbENRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpORFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEYkdwRVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpWRlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRlRWRCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEyeENRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNwQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6VkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRha0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGVrSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZETjBSQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRM1pKUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEYmtOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNwSFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONFMwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRjRVpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRelZFUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpWQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRFVrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRXa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOc1EwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6VkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRja1JCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5TUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkROMEpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5TUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzaEdRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRja1JCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEYmtKQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVNM1NFRTdRVUZEUVRzN1FVTkVRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGVFUkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRja05CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNwRVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRjRVZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRM2hDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRlRVJCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRNVVJCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU14UWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGNrSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOd1FrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOMFFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRja0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOMlFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTnVRa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRMjVEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU53U1VFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzWkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEZGtKQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTJaQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRla0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOMlFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEycENRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRha0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5xUWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRE9VSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpOQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6VkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzWkhRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNCRVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlExWkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU4yUWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU12UWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkROME5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGFFSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRia0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5xUWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEyaERRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEySkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGRFSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRM1pEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONlJFRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRka05CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOMlFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5zUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRjRU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRMMEpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6TkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNwQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzSkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNwQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEY0VKQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTJ4SVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlF6bERRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEZEVaQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTI1RVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTm9SRUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTnVSVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRaa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONlFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRFprRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRja0pCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGFFSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU4yUWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpGQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTNKR1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRMmhDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU5tUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOeVFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGVFSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkROVUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZETlVKQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRek5DUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRjRUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTFwQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTJaQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONlJrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRXa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTktRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRE4wSkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkROVUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRE1VTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTXhRa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU0xUWtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRiRUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEZGtSQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRiRU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRlRU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTXZRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzUkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEycEVRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRelZDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEYUVaQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOdVEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUXpGRlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTnlRa0U3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUczdRVU01UTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVONFNVRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3TzBGRGFrTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEycERRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN1FVTm9SMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CT3p0QlEzQkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJRMjVDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEJReTlDUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdPMEZEYm1kRlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRCUTJnNVFrRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOaVFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN08wRkRNMVpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHM3UVVOb1EwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVRzN096czdRVU51UzBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVTnNWRUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUXk5RlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlEzSkNRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVTTFRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZEY0VWQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVU01UmtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZEY2tSQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVU0xVGtFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkRjRUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVOd1JFRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlExWkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUXk5RFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRMmhLUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVTXhSVUU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRMnhHUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZEYmpOQ1FUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVU5ZUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlF6ZE1RVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVTTNPVUpCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGRGNFTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkRNMFZCTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVU5XUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUXpORlFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJPMEZCUTBFN1FVRkRRVHRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVR0QlFVTkJJaXdpWm1sc1pTSTZJbk4zWVdkblpYSXRkV2t1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUJxYzJocGJuUWdhV2R1YjNKbE9uTjBZWEowSUNvdklGeHVJSHNvWm5WdVkzUnBiMjRvS1NCN1hHNGdJSFpoY2lCMFpXMXdiR0YwWlNBOUlFaGhibVJzWldKaGNuTXVkR1Z0Y0d4aGRHVXNJSFJsYlhCc1lYUmxjeUE5SUVoaGJtUnNaV0poY25NdWRHVnRjR3hoZEdWeklEMGdTR0Z1Wkd4bFltRnljeTUwWlcxd2JHRjBaWE1nZkh3Z2UzMDdYRzUwWlcxd2JHRjBaWE5iSjJGd2FXdGxlVjloZFhSb0oxMGdQU0IwWlcxd2JHRjBaU2g3WENJeFhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TzF4dVhHNGdJSEpsZEhWeWJpQmNJaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM0JoYmlCamJHRnpjejFjWEZ3aWEyVjVYMkYxZEdoZlgzWmhiSFZsWEZ4Y0lqNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuS1M1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMblpoYkhWbElEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0p6WVc1cGRHbDZaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmMzQmhiajVjWEc1Y0lqdGNibjBzWENJelhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR2x1Y0hWMElIQnNZV05sYUc5c1pHVnlQVnhjWENKaGNHbGZhMlY1WEZ4Y0lpQmpiR0Z6Y3oxY1hGd2lZWFYwYUY5cGJuQjFkQ0JwYm5CMWRGOWhjR2xMWlhsZlpXNTBjbmxjWEZ3aUlHNWhiV1U5WEZ4Y0ltRndhVXRsZVZ4Y1hDSWdkSGx3WlQxY1hGd2lkR1Y0ZEZ4Y1hDSXZQbHhjYmx3aU8xeHVmU3hjSW1OdmJYQnBiR1Z5WENJNld6Y3NYQ0krUFNBMExqQXVNRndpWFN4Y0ltMWhhVzVjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RXNJR0ZzYVdGek1UMWtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ0JoYkdsaGN6STlhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuTzF4dVhHNGdJSEpsZEhWeWJpQmNJanhrYVhZZ1kyeGhjM005WEZ4Y0ltdGxlVjlwYm5CMWRGOWpiMjUwWVdsdVpYSmNYRndpUGx4Y2JpQWdJQ0E4YURNZ1kyeGhjM005WEZ4Y0ltRjFkR2hmWDNScGRHeGxYRnhjSWo1QmNHa2dhMlY1SUdGMWRHaHZjbWw2WVhScGIyNDhMMmd6UGx4Y2JpQWdJQ0E4WkdsMklHTnNZWE56UFZ4Y1hDSmhkWFJvWDE5a1pYTmpjbWx3ZEdsdmJseGNYQ0krWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1SbGMyTnlhWEIwYVc5dUlEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0p6WVc1cGRHbDZaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dlpHbDJQbHhjYmlBZ0lDQThaR2wyUGx4Y2JpQWdJQ0FnSUNBZ1BHUnBkaUJqYkdGemN6MWNYRndpYTJWNVgyRjFkR2hmWDJacFpXeGtYRnhjSWo1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4YzNCaGJpQmpiR0Z6Y3oxY1hGd2lhMlY1WDJGMWRHaGZYMnhoWW1Wc1hGeGNJajV1WVcxbE9qd3ZjM0JoYmo1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4YzNCaGJpQmpiR0Z6Y3oxY1hGd2lhMlY1WDJGMWRHaGZYM1poYkhWbFhGeGNJajVjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXVZVzFsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMM053WVc0K1hGeHVJQ0FnSUNBZ0lDQThMMlJwZGo1Y1hHNGdJQ0FnSUNBZ0lEeGthWFlnWTJ4aGMzTTlYRnhjSW10bGVWOWhkWFJvWDE5bWFXVnNaRnhjWENJK1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnUEhOd1lXNGdZMnhoYzNNOVhGeGNJbXRsZVY5aGRYUm9YMTlzWVdKbGJGeGNYQ0krYVc0NlBDOXpjR0Z1UGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHh6Y0dGdUlHTnNZWE56UFZ4Y1hDSnJaWGxmWVhWMGFGOWZkbUZzZFdWY1hGd2lQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd1cxd2lhVzVjSWwwZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2YzNCaGJqNWNYRzRnSUNBZ0lDQWdJRHd2WkdsMlBseGNiaUFnSUNBZ0lDQWdQR1JwZGlCamJHRnpjejFjWEZ3aWEyVjVYMkYxZEdoZlgyWnBaV3hrWEZ4Y0lqNWNYRzRnSUNBZ0lDQWdJQ0FnSUNBOGMzQmhiaUJqYkdGemN6MWNYRndpYTJWNVgyRjFkR2hmWDJ4aFltVnNYRnhjSWo1MllXeDFaVG84TDNOd1lXNCtYRnh1WENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGMweHZaMjkxZENBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01Td2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTXl3Z1pHRjBZU3dnTUNrc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpSUNBZ0lDQWdJQ0E4TDJScGRqNWNYRzRnSUNBZ1BDOWthWFkrWEZ4dVBDOWthWFkrWEZ4dVhDSTdYRzU5TEZ3aWRYTmxSR0YwWVZ3aU9uUnlkV1Y5S1R0Y2JuUmxiWEJzWVhSbGMxc25ZWFYwYUY5aWRYUjBiMjRuWFNBOUlIUmxiWEJzWVhSbEtIdGNJbU52YlhCcGJHVnlYQ0k2V3pjc1hDSStQU0EwTGpBdU1Gd2lYU3hjSW0xaGFXNWNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJjSWp4aElHTnNZWE56UFNkaGRYUm9iM0pwZW1WZlgySjBiaWNnYUhKbFpqMWNYRndpSTF4Y1hDSStRWFYwYUc5eWFYcGxQQzloUGx4Y2Jsd2lPMXh1ZlN4Y0luVnpaVVJoZEdGY0lqcDBjblZsZlNrN1hHNTBaVzF3YkdGMFpYTmJKMkYxZEdoZlluVjBkRzl1WDI5d1pYSmhkR2x2YmlkZElEMGdkR1Z0Y0d4aGRHVW9lMXdpTVZ3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGd2lJQ0FnSUNBZ0lDQmhkWFJvYjNKcGVtVmZYMkowYmw5dmNHVnlZWFJwYjI1ZmJHOW5hVzVjWEc1Y0lqdGNibjBzWENJelhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJR0YxZEdodmNtbDZaVjlmWW5SdVgyOXdaWEpoZEdsdmJsOXNiMmR2ZFhSY1hHNWNJanRjYm4wc1hDSTFYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeE8xeHVYRzRnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnUEhWc0lHTnNZWE56UFZ4Y1hDSmhkWFJvYjNKcGVtVXRjMk52Y0dWelhGeGNJajVjWEc1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKekxtVmhZMmd1WTJGc2JDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXpZMjl3WlhNZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZoWTJoY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9OaXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lJQ0FnSUNBZ0lDQThMM1ZzUGx4Y2Jsd2lPMXh1ZlN4Y0lqWmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5PMXh1WEc0Z0lISmxkSFZ5YmlCY0lpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGJHa2dZMnhoYzNNOVhGeGNJbUYxZEdodmNtbDZaVjlmYzJOdmNHVmNYRndpSUhScGRHeGxQVnhjWENKY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVrWlhOamNtbHdkR2x2YmlBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnhjSWo1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV6WTI5d1pTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5c2FUNWNYRzVjSWp0Y2JuMHNYQ0pqYjIxd2FXeGxjbHdpT2xzM0xGd2lQajBnTkM0d0xqQmNJbDBzWENKdFlXbHVYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeExDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZUdGNibHh1SUNCeVpYUjFjbTRnWENJOFpHbDJJR05zWVhOelBWeGNYQ0poZFhSb2IzSnBlbVZmWDJKMGJpQmhkWFJvYjNKcGVtVmZYMkowYmw5dmNHVnlZWFJwYjI1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx6VEc5bmIzVjBJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKcFpsd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2d4TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZ3pMQ0JrWVhSaExDQXdLU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRndpUGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTmJYQ0pwWmx3aVhTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjMk52Y0dWeklEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZzFMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMlJwZGo1Y1hHNWNJanRjYm4wc1hDSjFjMlZFWVhSaFhDSTZkSEoxWlgwcE8xeHVkR1Z0Y0d4aGRHVnpXeWRoZFhSb1gzWnBaWGNuWFNBOUlIUmxiWEJzWVhSbEtIdGNJakZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCY0lpQWdJQ0FnSUNBZ0lDQWdJRHhpZFhSMGIyNGdkSGx3WlQxY1hGd2lZblYwZEc5dVhGeGNJaUJqYkdGemN6MWNYRndpWVhWMGFGOWZZblYwZEc5dUlHRjFkR2hmYzNWaWJXbDBYMTlpZFhSMGIyNWNYRndpSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGtGMWRHaHZjbWw2WlR3dlluVjBkRzl1UGx4Y2Jsd2lPMXh1ZlN4Y0lqTmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnSUNBZ0lEeGlkWFIwYjI0Z2RIbHdaVDFjWEZ3aVluVjBkRzl1WEZ4Y0lpQmpiR0Z6Y3oxY1hGd2lZWFYwYUY5ZlluVjBkRzl1SUdGMWRHaGZiRzluYjNWMFgxOWlkWFIwYjI1Y1hGd2lJR1JoZEdFdGMzY3RkSEpoYm5Oc1lYUmxQa3h2WjI5MWREd3ZZblYwZEc5dVBseGNibHdpTzF4dWZTeGNJbU52YlhCcGJHVnlYQ0k2V3pjc1hDSStQU0EwTGpBdU1Gd2lYU3hjSW0xaGFXNWNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OU8xeHVYRzRnSUhKbGRIVnliaUJjSWp4a2FYWWdZMnhoYzNNOVhGeGNJbUYxZEdoZlkyOXVkR0ZwYm1WeVhGeGNJajVjWEc1Y1hHNGdJQ0FnUEdScGRpQmpiR0Z6Y3oxY1hGd2lZWFYwYUY5cGJtNWxjbHhjWENJK1BDOWthWFkrWEZ4dUlDQWdJRHhrYVhZZ1kyeGhjM005WEZ4Y0ltRjFkR2hmYzNWaWJXbDBYRnhjSWo1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpMblZ1YkdWemN5NWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVhWE5NYjJkdmRYUWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5WdWJHVnpjMXdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNCb1pXeHdaWEp6VzF3aWFXWmNJbDB1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1selFYVjBhRzl5YVhwbFpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NeXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lJQ0FnSUR3dlpHbDJQbHhjYmx4Y2Jqd3ZaR2wyUGx4Y2Jsd2lPMXh1ZlN4Y0luVnpaVVJoZEdGY0lqcDBjblZsZlNrN1hHNTBaVzF3YkdGMFpYTmJKMkpoYzJsalgyRjFkR2duWFNBOUlIUmxiWEJzWVhSbEtIdGNJakZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCY0lpQXRJR0YxZEdodmNtbDZaV1JjSWp0Y2JuMHNYQ0l6WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hPMXh1WEc0Z0lISmxkSFZ5YmlCY0lpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzQmhiaUJqYkdGemN6MWNYRndpWW1GemFXTmZZWFYwYUY5ZmRtRnNkV1ZjWEZ3aVBsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp5a3VZMkZzYkNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MWMyVnlibUZ0WlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzl6Y0dGdVBseGNibHdpTzF4dWZTeGNJalZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCY0lpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGFXNXdkWFFnY21WeGRXbHlaV1FnY0d4aFkyVm9iMnhrWlhJOVhGeGNJblZ6WlhKdVlXMWxYRnhjSWlCamJHRnpjejFjWEZ3aVltRnphV05mWVhWMGFGOWZkWE5sY201aGJXVWdZWFYwYUY5cGJuQjFkRnhjWENJZ2JtRnRaVDFjWEZ3aWRYTmxjbTVoYldWY1hGd2lJSFI1Y0dVOVhGeGNJblJsZUhSY1hGd2lMejVjWEc1Y0lqdGNibjBzWENJM1hDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJQ0FnSUNBOFpHbDJJR05zWVhOelBWeGNYQ0poZFhSb1gyeGhZbVZzWEZ4Y0lqNWNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE53WVc0Z1kyeGhjM005WEZ4Y0ltSmhjMmxqWDJGMWRHaGZYMnhoWW1Wc1hGeGNJaUJrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDV3WVhOemQyOXlaRG84TDNOd1lXNCtYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHhwYm5CMWRDQnlaWEYxYVhKbFpDQndiR0ZqWldodmJHUmxjajFjWEZ3aWNHRnpjM2R2Y21SY1hGd2lJR05zWVhOelBWeGNYQ0ppWVhOcFkxOWhkWFJvWDE5d1lYTnpkMjl5WkNCaGRYUm9YMmx1Y0hWMFhGeGNJaUJ1WVcxbFBWeGNYQ0p3WVhOemQyOXlaRnhjWENJZ2RIbHdaVDFjWEZ3aWNHRnpjM2R2Y21SY1hGd2lMejQ4TDJ4aFltVnNQbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lEd3ZaR2wyUGx4Y2Jsd2lPMXh1ZlN4Y0ltTnZiWEJwYkdWeVhDSTZXemNzWENJK1BTQTBMakF1TUZ3aVhTeGNJbTFoYVc1Y0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekVzSUdGc2FXRnpNVDFrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TzF4dVhHNGdJSEpsZEhWeWJpQmNJanhrYVhZZ1kyeGhjM005SjJKaGMybGpYMkYxZEdoZlkyOXVkR0ZwYm1WeUp6NWNYRzRnSUNBZ1BHZ3pJR05zWVhOelBWeGNYQ0poZFhSb1gxOTBhWFJzWlZ4Y1hDSStRbUZ6YVdNZ1lYVjBhR1Z1ZEdsallYUnBiMjVjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNCb1pXeHdaWEp6VzF3aWFXWmNJbDB1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1selRHOW5iM1YwSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwyZ3pQbHhjYmlBZ0lDQThabTl5YlNCamJHRnpjejFjWEZ3aVltRnphV05mYVc1d2RYUmZZMjl1ZEdGcGJtVnlYRnhjSWo1Y1hHNGdJQ0FnSUNBZ0lEeGthWFlnWTJ4aGMzTTlYRnhjSW1GMWRHaGZYMlJsYzJOeWFYQjBhVzl1WEZ4Y0lqNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuS1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVpHVnpZM0pwY0hScGIyNGdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOWthWFkrWEZ4dUlDQWdJQ0FnSUNBOFpHbDJJR05zWVhOelBWeGNYQ0poZFhSb1gyeGhZbVZzWEZ4Y0lqNWNYRzRnSUNBZ0lDQWdJQ0FnSUNBOGMzQmhiaUJqYkdGemN6MWNYRndpWW1GemFXTmZZWFYwYUY5ZmJHRmlaV3hjWEZ3aUlHUmhkR0V0YzNjdGRISmhibk5zWVhSbFBuVnpaWEp1WVcxbE9qd3ZjM0JoYmo1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx6VEc5bmIzVjBJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKcFpsd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2d6TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZzFMQ0JrWVhSaExDQXdLU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSWdJQ0FnSUNBZ0lEd3ZaR2wyUGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTXVkVzVzWlhOekxtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXBjMHh2WjI5MWRDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpZFc1c1pYTnpYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0Rjc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWlBZ0lDQThMMlp2Y20wK1hGeHVQQzlrYVhZK1hGeHVYQ0k3WEc1OUxGd2lkWE5sUkdGMFlWd2lPblJ5ZFdWOUtUdGNiblJsYlhCc1lYUmxjMXNuWTI5dWRHVnVkRjkwZVhCbEoxMGdQU0IwWlcxd2JHRjBaU2g3WENJeFhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TzF4dVhHNGdJSEpsZEhWeWJpQW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTXVaV0ZqYUM1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbkJ5YjJSMVkyVnpJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbFlXTm9YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RJc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwTzF4dWZTeGNJakpjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RXNJR0ZzYVdGek1UMWtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ0JoYkdsaGN6STlhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuTzF4dVhHNGdJSEpsZEhWeWJpQmNJbHgwUEc5d2RHbHZiaUIyWVd4MVpUMWNYRndpWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc1pHVndkR2d3TEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnhjSWo1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1TeGtaWEIwYURBc2Uxd2libUZ0WlZ3aU9sd2ljMkZ1YVhScGVtVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDI5d2RHbHZiajVjWEc1Y0lqdGNibjBzWENJMFhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0lnSUR4dmNIUnBiMjRnZG1Gc2RXVTlYRnhjSW1Gd2NHeHBZMkYwYVc5dUwycHpiMjVjWEZ3aVBtRndjR3hwWTJGMGFXOXVMMnB6YjI0OEwyOXdkR2x2Ymo1Y1hHNWNJanRjYm4wc1hDSmpiMjF3YVd4bGNsd2lPbHMzTEZ3aVBqMGdOQzR3TGpCY0lsMHNYQ0p0WVdsdVhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TENCaGJHbGhjekU5WkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQWdPaUI3ZlN3Z1lXeHBZWE15UFdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp6dGNibHh1SUNCeVpYUjFjbTRnWENJOGJHRmlaV3dnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1VnWm05eVBWeGNYQ0pjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNWpiMjUwWlc1MFZIbHdaVWxrSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRndpUGxKbGMzQnZibk5sSUVOdmJuUmxiblFnVkhsd1pUd3ZiR0ZpWld3K1hGeHVQSE5sYkdWamRDQnVZVzFsUFZ4Y1hDSmpiMjUwWlc1MFZIbHdaVnhjWENJZ2FXUTlYRnhjSWx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbU52Ym5SbGJuUlVlWEJsU1dRZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJbHhjWENJK1hGeHVYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnYUdWc2NHVnljMXRjSW1sbVhDSmRMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV3Y205a2RXTmxjeUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTVN3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9OQ3dnWkdGMFlTd2dNQ2tzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzl6Wld4bFkzUStYRnh1WENJN1hHNTlMRndpZFhObFJHRjBZVndpT25SeWRXVjlLVHRjYm5SbGJYQnNZWFJsYzFzbmJXRnBiaWRkSUQwZ2RHVnRjR3hoZEdVb2Uxd2lNVndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dZV3hwWVhNeFBXUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNJR0ZzYVdGek1qMW9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWM3WEc1Y2JpQWdjbVYwZFhKdUlGd2lJQ0E4WkdsMklHTnNZWE56UFZ4Y1hDSnBibVp2WDNScGRHeGxYRnhjSWo1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29LSE4wWVdOck1TQTlJQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXBibVp2SURvZ1pHVndkR2d3S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVM1MGFYUnNaU0E2SUhOMFlXTnJNU2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMlJwZGo1Y1hHNGdJRHhrYVhZZ1kyeGhjM005WEZ4Y0ltbHVabTlmWkdWelkzSnBjSFJwYjI0Z2JXRnlhMlJ2ZDI1Y1hGd2lQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENnb2MzUmhZMnN4SUQwZ0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1sdVptOGdPaUJrWlhCMGFEQXBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hMbVJsYzJOeWFYQjBhVzl1SURvZ2MzUmhZMnN4S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2WkdsMlBseGNibHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1WlhoMFpYSnVZV3hFYjJOeklEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZ3lMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSWdJRndpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHRnNhV0Z6TVN3b0tITjBZV05yTVNBOUlDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGJtWnZJRG9nWkdWd2RHZ3dLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzUwWlhKdGMwOW1VMlZ5ZG1salpWVnliQ0E2SUhOMFlXTnJNU2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTkN3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbTV2YjNBc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpWEZ4dUlDQmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0NoemRHRmphekVnUFNBb0tITjBZV05yTVNBOUlDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGJtWnZJRG9nWkdWd2RHZ3dLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzVqYjI1MFlXTjBJRG9nYzNSaFkyc3hLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzV1WVcxbElEb2djM1JoWTJzeEtTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZzJMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRzRnSUZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29LSE4wWVdOck1TQTlJQ2dvYzNSaFkyc3hJRDBnS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx1Wm04Z09pQmtaWEIwYURBcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeExtTnZiblJoWTNRZ09pQnpkR0ZqYXpFcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeExuVnliQ0E2SUhOMFlXTnJNU2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvT0N3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbTV2YjNBc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpWEZ4dUlDQmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0NoemRHRmphekVnUFNBb0tITjBZV05yTVNBOUlDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGJtWnZJRG9nWkdWd2RHZ3dLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzVqYjI1MFlXTjBJRG9nYzNSaFkyc3hLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzVsYldGcGJDQTZJSE4wWVdOck1Ta3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NVEFzSUdSaGRHRXNJREFwTEZ3aWFXNTJaWEp6WlZ3aU9tTnZiblJoYVc1bGNpNXViMjl3TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJbHhjYmlBZ1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWMxdGNJbWxtWENKZExtTmhiR3dvWVd4cFlYTXhMQ2dvYzNSaFkyc3hJRDBnS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx1Wm04Z09pQmtaWEIwYURBcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeExteHBZMlZ1YzJVZ09pQnpkR0ZqYXpFcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtERXlMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRzVjSWp0Y2JuMHNYQ0l5WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUR4d1Bsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2dvYzNSaFkyc3hJRDBnS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbVY0ZEdWeWJtRnNSRzlqY3lBNklHUmxjSFJvTUNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFdVpHVnpZM0pwY0hScGIyNGdPaUJ6ZEdGamF6RXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOXdQbHhjYmlBZ1BHRWdhSEpsWmoxY1hGd2lYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29LSE4wWVdOck1TQTlJQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNWxlSFJsY201aGJFUnZZM01nT2lCa1pYQjBhREFwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4TG5WeWJDQTZJSE4wWVdOck1Ta3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpWEZ4Y0lpQjBZWEpuWlhROVhGeGNJbDlpYkdGdWExeGNYQ0krWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvS0hOMFlXTnJNU0E5SUNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVsZUhSbGNtNWhiRVJ2WTNNZ09pQmtaWEIwYURBcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeExuVnliQ0E2SUhOMFlXTnJNU2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOWhQbHhjYmx3aU8xeHVmU3hjSWpSY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekU3WEc1Y2JpQWdjbVYwZFhKdUlGd2lQR1JwZGlCamJHRnpjejFjWEZ3aWFXNW1iMTkwYjNOY1hGd2lQanhoSUhSaGNtZGxkRDFjWEZ3aVgySnNZVzVyWEZ4Y0lpQm9jbVZtUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtY3BMbU5oYkd3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd29LSE4wWVdOck1TQTlJQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXBibVp2SURvZ1pHVndkR2d3S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVM1MFpYSnRjMDltVTJWeWRtbGpaVlZ5YkNBNklITjBZV05yTVNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnhjSWlCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlQ1VVpYSnRjeUJ2WmlCelpYSjJhV05sUEM5aFBqd3ZaR2wyUGx3aU8xeHVmU3hjSWpaY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekU3WEc1Y2JpQWdjbVYwZFhKdUlGd2lQR1JwZGo0OFpHbDJJR05zWVhOelBTZHBibVp2WDI1aGJXVW5JSE4wZVd4bFBWeGNYQ0prYVhOd2JHRjVPaUJwYm14cGJtVmNYRndpSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGtOeVpXRjBaV1FnWW5rZ1BDOWthWFkrSUZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1WnlrdVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENnb2MzUmhZMnN4SUQwZ0tDaHpkR0ZqYXpFZ1BTQW9aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFXNW1ieUE2SUdSbGNIUm9NQ2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1WTI5dWRHRmpkQ0E2SUhOMFlXTnJNU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1Ym1GdFpTQTZJSE4wWVdOck1Ta3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5a2FYWStYQ0k3WEc1OUxGd2lPRndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dZV3hwWVhNeFBXUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNJR0ZzYVdGek1qMW9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWM3WEc1Y2JpQWdjbVYwZFhKdUlGd2lQR1JwZGlCamJHRnpjejBuYVc1bWIxOTFjbXduSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGxObFpTQnRiM0psSUdGMElEeGhJR2h5WldZOVhGeGNJbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLQ2h6ZEdGamF6RWdQU0FvS0hOMFlXTnJNU0E5SUNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVwYm1adklEb2daR1Z3ZEdnd0tTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TNWpiMjUwWVdOMElEb2djM1JoWTJzeEtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TNTFjbXdnT2lCemRHRmphekVwTEh0Y0ltNWhiV1ZjSWpwY0ltVnpZMkZ3WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lseGNYQ0krWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvS0hOMFlXTnJNU0E5SUNnb2MzUmhZMnN4SUQwZ0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1sdVptOGdPaUJrWlhCMGFEQXBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hMbU52Ym5SaFkzUWdPaUJ6ZEdGamF6RXBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hMblZ5YkNBNklITjBZV05yTVNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzloUGp3dlpHbDJQbHdpTzF4dWZTeGNJakV3WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0k4WkdsMklHTnNZWE56UFNkcGJtWnZYMlZ0WVdsc0p6NDhZU0IwWVhKblpYUTlYRnhjSWw5d1lYSmxiblJjWEZ3aUlHaHlaV1k5WEZ4Y0ltMWhhV3gwYnpwY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENnb2MzUmhZMnN4SUQwZ0tDaHpkR0ZqYXpFZ1BTQW9aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFXNW1ieUE2SUdSbGNIUm9NQ2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1WTI5dWRHRmpkQ0E2SUhOMFlXTnJNU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1WlcxaGFXd2dPaUJ6ZEdGamF6RXBMSHRjSW01aGJXVmNJanBjSW1WelkyRndaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWo5emRXSnFaV04wUFZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0NoemRHRmphekVnUFNBb1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YVc1bWJ5QTZJR1JsY0hSb01Da3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RXVkR2wwYkdVZ09pQnpkR0ZqYXpFcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJbHhjWENJZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1EyOXVkR0ZqZENCMGFHVWdaR1YyWld4dmNHVnlQQzloUGp3dlpHbDJQbHdpTzF4dWZTeGNJakV5WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0k4WkdsMklHTnNZWE56UFNkcGJtWnZYMnhwWTJWdWMyVW5QanhoSUhSaGNtZGxkRDFjWEZ3aVgySnNZVzVyWEZ4Y0lpQm9jbVZtUFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENnb2MzUmhZMnN4SUQwZ0tDaHpkR0ZqYXpFZ1BTQW9aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFXNW1ieUE2SUdSbGNIUm9NQ2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1YkdsalpXNXpaU0E2SUhOMFlXTnJNU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1ZFhKc0lEb2djM1JoWTJzeEtTeDdYQ0p1WVcxbFhDSTZYQ0psYzJOaGNHVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0luUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0NoemRHRmphekVnUFNBb0tITjBZV05yTVNBOUlDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGJtWnZJRG9nWkdWd2RHZ3dLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzVzYVdObGJuTmxJRG9nYzNSaFkyc3hLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNUzV1WVcxbElEb2djM1JoWTJzeEtTeDdYQ0p1WVcxbFhDSTZYQ0psYzJOaGNHVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDJFK1BDOWthWFkrWENJN1hHNTlMRndpTVRSY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekU3WEc1Y2JpQWdjbVYwZFhKdUlGd2lJQ0FzSUR4emNHRnVJSE4wZVd4bFBWeGNYQ0ptYjI1MExYWmhjbWxoYm5RNklITnRZV3hzTFdOaGNITmNYRndpSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUG1Gd2FTQjJaWEp6YVc5dVBDOXpjR0Z1UGpvZ1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVaWE5qWVhCbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbVZ6WTJGd1pTa2dmSHdnYUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bktTNWpZV3hzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0tDaHpkR0ZqYXpFZ1BTQW9aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFXNW1ieUE2SUdSbGNIUm9NQ2twSUNFOUlHNTFiR3dnUHlCemRHRmphekV1ZG1WeWMybHZiaUE2SUhOMFlXTnJNU2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeHVJQ0FnSUZ3aU8xeHVmU3hjSWpFMlhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TENCaGJHbGhjekU5WkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQWdPaUI3ZlN3Z1lXeHBZWE15UFdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp6dGNibHh1SUNCeVpYUjFjbTRnWENJZ0lDQWdQSE53WVc0Z2MzUjViR1U5WEZ4Y0ltWnNiMkYwT25KcFoyaDBYRnhjSWo0OFlTQjBZWEpuWlhROVhGeGNJbDlpYkdGdWExeGNYQ0lnYUhKbFpqMWNYRndpWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVkbUZzYVdSaGRHOXlWWEpzSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSXZaR1ZpZFdjL2RYSnNQVndpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuVnliQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeGNJajQ4YVcxbklHbGtQVnhjWENKMllXeHBaR0YwYjNKY1hGd2lJSE55WXoxY1hGd2lYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWRtRnNhV1JoZEc5eVZYSnNJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJL2RYSnNQVndpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuVnliQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeGNJajQ4TDJFK1hGeHVJQ0FnSUR3dmMzQmhiajVjWEc1Y0lqdGNibjBzWENKamIyMXdhV3hsY2x3aU9sczNMRndpUGowZ05DNHdMakJjSWwwc1hDSnRZV2x1WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmVHRjYmx4dUlDQnlaWFIxY200Z1hDSThaR2wySUdOc1lYTnpQU2RwYm1adkp5QnBaRDBuWVhCcFgybHVabThuUGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTmJYQ0pwWmx3aVhTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVhVzVtYnlBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01Td2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOWthWFkrWEZ4dVBHUnBkaUJqYkdGemN6MG5ZMjl1ZEdGcGJtVnlKeUJwWkQwbmNtVnpiM1Z5WTJWelgyTnZiblJoYVc1bGNpYytYRnh1SUNBOFpHbDJJR05zWVhOelBTZGhkWFJvYjNKcGVtVXRkM0poY0hCbGNpYytQQzlrYVhZK1hGeHVYRnh1SUNBOGRXd2dhV1E5SjNKbGMyOTFjbU5sY3ljK1BDOTFiRDVjWEc1Y1hHNGdJRHhrYVhZZ1kyeGhjM005WEZ4Y0ltWnZiM1JsY2x4Y1hDSStYRnh1SUNBZ0lEeG9OQ0J6ZEhsc1pUMWNYRndpWTI5c2IzSTZJQ001T1RsY1hGd2lQbHNnUEhOd1lXNGdjM1I1YkdVOVhGeGNJbVp2Ym5RdGRtRnlhV0Z1ZERvZ2MyMWhiR3d0WTJGd2MxeGNYQ0krWW1GelpTQjFjbXc4TDNOd1lXNCtPaUJjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQm9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWNwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1aVlYTmxVR0YwYUNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnh1WENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDZ29jM1JoWTJzeElEMGdLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbHVabThnT2lCa1pYQjBhREFwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4TG5abGNuTnBiMjRnT2lCemRHRmphekVwTEh0Y0ltNWhiV1ZjSWpwY0ltbG1YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RFMExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKZFhGeHVYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnYUdWc2NHVnljMXRjSW1sbVhDSmRMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzUyWVd4cFpHRjBiM0pWY213Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtERTJMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSWdJQ0FnUEM5b05ENWNYRzRnSUNBZ1BDOWthWFkrWEZ4dVBDOWthWFkrWEZ4dVhDSTdYRzU5TEZ3aWRYTmxSR0YwWVZ3aU9uUnlkV1Y5S1R0Y2JuUmxiWEJzWVhSbGMxc25iMkYxZEdneUoxMGdQU0IwWlcxd2JHRjBaU2g3WENJeFhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TzF4dVhHNGdJSEpsZEhWeWJpQmNJanh3UGtGMWRHaHZjbWw2WVhScGIyNGdWVkpNT2lCY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z2FHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5LUzVqWVd4c0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtRjFkR2h2Y21sNllYUnBiMjVWY213Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbk5oYm1sMGFYcGxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5d1Bsd2lPMXh1ZlN4Y0lqTmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFN1hHNWNiaUFnY21WMGRYSnVJRndpUEhBK1ZHOXJaVzRnVlZKTU9pQmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuS1M1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMblJ2YTJWdVZYSnNJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZjRDVjSWp0Y2JuMHNYQ0kxWENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQnlaWFIxY200Z1hDSWdJQ0FnSUNBZ0lEeHdQbEJzWldGelpTQnBibkIxZENCMWMyVnlibUZ0WlNCaGJtUWdjR0Z6YzNkdmNtUWdabTl5SUhCaGMzTjNiM0prSUdac2IzY2dZWFYwYUc5eWFYcGhkR2x2Ymp3dmNENWNYRzRnSUNBZ0lDQWdJRHhtYVdWc1pITmxkRDVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThaR2wyUGp4c1lXSmxiRDVWYzJWeWJtRnRaVG9nUEdsdWNIVjBJR05zWVhOelBWeGNYQ0p2WVhWMGFDMTFjMlZ5Ym1GdFpWeGNYQ0lnZEhsd1pUMWNYRndpZEdWNGRGeGNYQ0lnYm1GdFpUMWNYRndpZFhObGNtNWhiV1ZjWEZ3aVBqd3ZiR0ZpWld3K1BDOWthWFkrWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdQR1JwZGo0OGJHRmlaV3crVUdGemMzZHZjbVE2SUR4cGJuQjFkQ0JqYkdGemN6MWNYRndpYjJGMWRHZ3RjR0Z6YzNkdmNtUmNYRndpSUhSNWNHVTlYRnhjSW5CaGMzTjNiM0prWEZ4Y0lpQnVZVzFsUFZ4Y1hDSndZWE56ZDI5eVpGeGNYQ0krUEM5c1lXSmxiRDQ4TDJScGRqNWNYRzRnSUNBZ0lDQWdJRHd2Wm1sbGJHUnpaWFErWEZ4dVhDSTdYRzU5TEZ3aU4xd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVR0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJRHh3UGxObGRIVndJR05zYVdWdWRDQmhkWFJvWlc1MGFXTmhkR2x2Ymk1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKelcxd2lhV1pjSWwwdVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV5WlhGMWFYSmxRMnhwWlc1MFFYVjBhR1Z1ZEdsallXbDBiMjRnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltbG1YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0Rnc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmNENWNYRzRnSUNBZ0lDQWdJRHhtYVdWc1pITmxkRDVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThaR2wyUGp4c1lXSmxiRDVVZVhCbE9seGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjMlZzWldOMElHTnNZWE56UFZ4Y1hDSnZZWFYwYUMxamJHbGxiblF0WVhWMGFHVnVkR2xqWVhScGIyNHRkSGx3WlZ4Y1hDSWdibUZ0WlQxY1hGd2lZMnhwWlc1MExXRjFkR2hsYm5ScFkyRjBhVzl1TFhSNWNHVmNYRndpUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQRzl3ZEdsdmJpQjJZV3gxWlQxY1hGd2libTl1WlZ4Y1hDSWdjMlZzWldOMFpXUStUbTl1WlNCdmNpQnZkR2hsY2p3dmIzQjBhVzl1UGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQRzl3ZEdsdmJpQjJZV3gxWlQxY1hGd2lZbUZ6YVdOY1hGd2lQa0poYzJsaklHRjFkR2c4TDI5d2RHbHZiajVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHZjSFJwYjI0Z2RtRnNkV1U5WEZ4Y0luSmxjWFZsYzNRdFltOWtlVnhjWENJK1VtVnhkV1Z6ZENCaWIyUjVQQzl2Y0hScGIyNCtYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2YzJWc1pXTjBQbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lEd3ZiR0ZpWld3K1BDOWthWFkrWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdQR1JwZGlCamJHRnpjejFjWEZ3aWIyRjFkR2d0WTJ4cFpXNTBMV0YxZEdobGJuUnBZMkYwYVc5dVhGeGNJaUJvYVdSa1pXNCtYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHhrYVhZK1BHeGhZbVZzUGtOc2FXVnVkRWxrT2lBOGFXNXdkWFFnWTJ4aGMzTTlYRnhjSW05aGRYUm9MV05zYVdWdWRDMXBaRnhjWENJZ2RIbHdaVDFjWEZ3aWRHVjRkRnhjWENJZ2JtRnRaVDFjWEZ3aVkyeHBaVzUwTFdsa1hGeGNJajQ4TDJ4aFltVnNQand2WkdsMlBseGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThaR2wyUGp4c1lXSmxiRDVUWldOeVpYUTZJRHhwYm5CMWRDQmpiR0Z6Y3oxY1hGd2liMkYxZEdndFkyeHBaVzUwTFhObFkzSmxkRnhjWENJZ2RIbHdaVDFjWEZ3aWRHVjRkRnhjWENJZ2JtRnRaVDFjWEZ3aVkyeHBaVzUwTFhObFkzSmxkRnhjWENJK1BDOXNZV0psYkQ0OEwyUnBkajVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThMMlJwZGo1Y1hHNGdJQ0FnSUNBZ0lEd3ZabWxsYkdSelpYUStYRnh1WENJN1hHNTlMRndpT0Z3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGd2lLRkpsY1hWcGNtVmtLVndpTzF4dWZTeGNJakV3WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJQ0FnSUNBOGJHaytYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHhwYm5CMWRDQmpiR0Z6Y3oxY1hGd2liMkYxZEdndGMyTnZjR1ZjWEZ3aUlIUjVjR1U5WEZ4Y0ltTm9aV05yWW05NFhGeGNJaUJrWVhSaExYTmpiM0JsUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1elkyOXdaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeGNJaUJ2WVhWMGFIUjVjR1U5WEZ4Y0lsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TGs5QmRYUm9VMk5vWlcxbFMyVjVJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hGd2lMejVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEd4aFltVnNQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuTmpiM0JsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMnhoWW1Wc1BqeGljaTgrWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emNHRnVJR05zWVhOelBWeGNYQ0poY0drdGMyTnZjR1V0WkdWelkxeGNYQ0krWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVaR1Z6WTNKcGNIUnBiMjRnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltVnpZMkZ3WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lseGNibHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1VDBGMWRHaFRZMmhsYldWTFpYa2dPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1sbVhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKbWJsd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLREV4TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVibTl2Y0N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0lnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl6Y0dGdVBseGNiaUFnSUNBZ0lDQWdJQ0FnSUR3dmJHaytYRnh1WENJN1hHNTlMRndpTVRGY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekU3WEc1Y2JpQWdjbVYwZFhKdUlGd2lJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tGd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp5a3VZMkZzYkNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1UFFYVjBhRk5qYUdWdFpVdGxlU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aUtWeGNibHdpTzF4dWZTeGNJbU52YlhCcGJHVnlYQ0k2V3pjc1hDSStQU0EwTGpBdU1Gd2lYU3hjSW0xaGFXNWNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5PMXh1WEc0Z0lISmxkSFZ5YmlCY0lqeGthWFkrWEZ4dUlDQWdJRHhvTXlCamJHRnpjejFjWEZ3aVlYVjBhRjlmZEdsMGJHVmNYRndpUGs5QmRYUm9NaTR3UEM5b016NWNYRzRnSUNBZ1BIQStYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11YzJGdWFYUnBlbVVnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdWMyRnVhWFJwZW1VcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbVJsYzJOeWFYQjBhVzl1SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2Y0Q1Y1hHNGdJQ0FnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1aGRYUm9iM0pwZW1GMGFXOXVWWEpzSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hHNGdJQ0FnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MGIydGxibFZ5YkNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb015d2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeHVJQ0FnSUR4d1BtWnNiM2M2SUZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbVpzYjNjZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2Y0Q1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx6VUdGemMzZHZjbVJHYkc5M0lEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZzFMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKelcxd2lhV1pjSWwwdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtTnNhV1Z1ZEVGMWRHaGxiblJwWTJGMGFXOXVJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKcFpsd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2czTENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVibTl2Y0N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0lnSUNBZ1BIQStQSE4wY205dVp6NGdYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVlYQndUbUZ0WlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lJRHd2YzNSeWIyNW5QaUJCVUVrZ2NtVnhkV2x5WlhNZ2RHaGxJR1p2Ykd4dmQybHVaeUJ6WTI5d1pYTXVJRk5sYkdWamRDQjNhR2xqYUNCdmJtVnpJSGx2ZFNCM1lXNTBJSFJ2SUdkeVlXNTBJSFJ2SUZOM1lXZG5aWElnVlVrdVBDOXdQbHhjYmlBZ0lDQThjRDVUWTI5d1pYTWdZWEpsSUhWelpXUWdkRzhnWjNKaGJuUWdZVzRnWVhCd2JHbGpZWFJwYjI0Z1pHbG1abVZ5Wlc1MElHeGxkbVZzY3lCdlppQmhZMk5sYzNNZ2RHOGdaR0YwWVNCdmJpQmlaV2hoYkdZZ2IyWWdkR2hsSUdWdVpDQjFjMlZ5TGlCRllXTm9JRUZRU1NCdFlYa2daR1ZqYkdGeVpTQnZibVVnYjNJZ2JXOXlaU0J6WTI5d1pYTXVYRnh1SUNBZ0lDQWdJQ0E4WVNCb2NtVm1QVnhjWENJalhGeGNJajVNWldGeWJpQm9iM2NnZEc4Z2RYTmxQQzloUGx4Y2JpQWdJQ0E4TDNBK1hGeHVJQ0FnSUR4MWJDQmpiR0Z6Y3oxY1hGd2lZWEJwTFhCdmNIVndMWE5qYjNCbGMxeGNYQ0krWEZ4dVhDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWN5NWxZV05vTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1elkyOXdaWE1nT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltVmhZMmhjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01UQXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpQWdJQ0E4TDNWc1BseGNiand2WkdsMlBsd2lPMXh1ZlN4Y0luVnpaVVJoZEdGY0lqcDBjblZsZlNrN1hHNTBaVzF3YkdGMFpYTmJKMjl3WlhKaGRHbHZiaWRkSUQwZ2RHVnRjR3hoZEdVb2Uxd2lNVndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZ3aVpHVndjbVZqWVhSbFpGd2lPMXh1ZlN4Y0lqTmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnSUNBZ0lEeG9ORDQ4YzNCaGJpQmtZWFJoTFhOM0xYUnlZVzV6YkdGMFpUNVhZWEp1YVc1bk9pQkVaWEJ5WldOaGRHVmtQQzl6Y0dGdVBqd3ZhRFErWEZ4dVhDSTdYRzU5TEZ3aU5Wd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVR0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJRHhvTkQ0OGMzQmhiaUJrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVKYlhCc1pXMWxiblJoZEdsdmJpQk9iM1JsY3p3dmMzQmhiajQ4TDJnMFBseGNiaUFnSUNBZ0lDQWdQR1JwZGlCamJHRnpjejFjWEZ3aWJXRnlhMlJ2ZDI1Y1hGd2lQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JvWld4d1pYSnpMbWhsYkhCbGNrMXBjM05wYm1jcExtTmhiR3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQWdPaUI3ZlN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1WkdWelkzSnBjSFJwYjI0Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbk5oYm1sMGFYcGxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5a2FYWStYRnh1WENJN1hHNTlMRndpTjF3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGd2lJQ0FnSUNBZ0lDQWdJQ0FnUEdScGRpQmpiR0Z6Y3owbllYVjBhRzl5YVhwbExYZHlZWEJ3WlhJZ1lYVjBhRzl5YVhwbExYZHlZWEJ3WlhKZmIzQmxjbUYwYVc5dUp6NDhMMlJwZGo1Y1hHNWNJanRjYm4wc1hDSTVYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeExDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZUdGNibHh1SUNCeVpYUjFjbTRnWENJZ0lDQWdJQ0FnSUNBZ1BHUnBkaUJqYkdGemN6MWNYRndpY21WemNHOXVjMlV0WTJ4aGMzTmNYRndpUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHhvTkQ0OGMzQmhiaUJrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVTWlhOd2IyNXpaU0JEYkdGemN6d3ZjM0JoYmo0Z0tEeHpjR0Z1SUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGxOMFlYUjFjend2YzNCaGJqNGdYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z2FHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5LUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YzNWalkyVnpjME52WkdVZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaWs4TDJnMFBseGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWMxdGNJbWxtWENKZExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXpkV05qWlhOelJHVnpZM0pwY0hScGIyNGdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1sbVhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKbWJsd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLREV3TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVibTl2Y0N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0pjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThjRDQ4YzNCaGJpQmpiR0Z6Y3oxY1hGd2liVzlrWld3dGMybG5ibUYwZFhKbFhGeGNJaUF2UGp3dmNENWNYRzRnSUNBZ0lDQWdJQ0FnSUNBOFluSXZQbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lEeGthWFlnWTJ4aGMzTTlYRnhjSW5KbGMzQnZibk5sTFdOdmJuUmxiblF0ZEhsd1pWeGNYQ0lnTHo1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4TDJScGRqNWNYRzVjSWp0Y2JuMHNYQ0l4TUZ3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUhOMFlXTnJNVHRjYmx4dUlDQnlaWFIxY200Z1hDSThaR2wySUdOc1lYTnpQVnhjWENKdFlYSnJaRzkzYmx4Y1hDSStYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11YzJGdWFYUnBlbVVnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdWMyRnVhWFJwZW1VcElIeDhJR2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1WnlrdVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV6ZFdOalpYTnpSR1Z6WTNKcGNIUnBiMjRnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzlrYVhZK1hDSTdYRzU5TEZ3aU1USmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFN1hHNWNiaUFnY21WMGRYSnVJRndpSUNBZ0lDQWdJQ0FnSUR4b05DQmtZWFJoTFhOM0xYUnlZVzV6YkdGMFpUNUlaV0ZrWlhKelBDOW9ORDVjWEc0Z0lDQWdJQ0FnSUNBZ1BIUmhZbXhsSUdOc1lYTnpQVnhjWENKb1pXRmtaWEp6WEZ4Y0lqNWNYRzRnSUNBZ0lDQWdJQ0FnSUNBOGRHaGxZV1ErWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZEhJK1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDBhQ0J6ZEhsc1pUMWNYRndpZDJsa2RHZzZJREV3TUhCNE95QnRZWGd0ZDJsa2RHZzZJREV3TUhCNFhGeGNJaUJrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVJWldGa1pYSThMM1JvUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGRHZ2djM1I1YkdVOVhGeGNJbmRwWkhSb09pQXpNVEJ3ZURzZ2JXRjRMWGRwWkhSb09pQXpNVEJ3ZUZ4Y1hDSWdaR0YwWVMxemR5MTBjbUZ1YzJ4aGRHVStSR1Z6WTNKcGNIUnBiMjQ4TDNSb1BseGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThkR2dnYzNSNWJHVTlYRnhjSW5kcFpIUm9PaUF5TURCd2VEc2diV0Y0TFhkcFpIUm9PaUF5TURCd2VGeGNYQ0lnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1UrVkhsd1pUd3ZkR2crWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4MGFDQnpkSGxzWlQxY1hGd2lkMmxrZEdnNklETXlNSEI0T3lCdFlYZ3RkMmxrZEdnNklETXlNSEI0WEZ4Y0lpQmtZWFJoTFhOM0xYUnlZVzV6YkdGMFpUNVBkR2hsY2p3dmRHZytYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM1J5UGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHd2ZEdobFlXUStYRnh1SUNBZ0lDQWdJQ0FnSUNBZ1BIUmliMlI1UGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTXVaV0ZqYUM1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWhsWVdSbGNuTWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1WaFkyaGNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTVRNc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWlBZ0lDQWdJQ0FnSUNBZ0lEd3ZkR0p2WkhrK1hGeHVJQ0FnSUNBZ0lDQWdJRHd2ZEdGaWJHVStYRnh1WENJN1hHNTlMRndpTVROY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekVzSUdobGJIQmxjaXdnWVd4cFlYTXhQV1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzSUdGc2FXRnpNajFvWld4d1pYSnpMbWhsYkhCbGNrMXBjM05wYm1jN1hHNWNiaUFnY21WMGRYSnVJRndpSUNBZ0lDQWdJQ0FnSUNBZ0lDQThkSEkrWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4MFpENWNJbHh1SUNBZ0lDc2dZMjl1ZEdGcGJtVnlMbVZ6WTJGd1pVVjRjSEpsYzNOcGIyNG9LQ2hvWld4d1pYSWdQU0FvYUdWc2NHVnlJRDBnYUdWc2NHVnljeTVyWlhrZ2ZId2dLR1JoZEdFZ0ppWWdaR0YwWVM1clpYa3BLU0FoUFNCdWRXeHNJRDhnYUdWc2NHVnlJRG9nWVd4cFlYTXlLU3dvZEhsd1pXOW1JR2hsYkhCbGNpQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlEOGdhR1ZzY0dWeUxtTmhiR3dvWVd4cFlYTXhMSHRjSW01aGJXVmNJanBjSW10bGVWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU0E2SUdobGJIQmxjaWtwS1Z4dUlDQWdJQ3NnWENJOEwzUmtQbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZEdRK1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVjMkZ1YVhScGVtVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YzJGdWFYUnBlbVVwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtUmxjMk55YVhCMGFXOXVJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZkR1ErWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4MFpENWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MGVYQmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzUmtQbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZEdRK1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVaWE5qWVhCbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbVZ6WTJGd1pTa2dmSHdnWVd4cFlYTXlLUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YjNSb1pYSWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1WelkyRndaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmRHUStYRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM1J5UGx4Y2Jsd2lPMXh1ZlN4Y0lqRTFYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ0lDQWdJQ0FnSUNBZ1BHZzBJR1JoZEdFdGMzY3RkSEpoYm5Oc1lYUmxQbEJoY21GdFpYUmxjbk04TDJnMFBseGNiaUFnSUNBZ0lDQWdJQ0E4ZEdGaWJHVWdZMnhoYzNNOUoyWjFiR3gzYVdSMGFDQndZWEpoYldWMFpYSnpKejVjWEc0Z0lDQWdJQ0FnSUNBZ1BIUm9aV0ZrUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHgwY2o1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4ZEdnZ2MzUjViR1U5WEZ4Y0luZHBaSFJvT2lBeE1EQndlRHNnYldGNExYZHBaSFJvT2lBeE1EQndlRnhjWENJZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1VHRnlZVzFsZEdWeVBDOTBhRDVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThkR2dnYzNSNWJHVTlYRnhjSW5kcFpIUm9PaUF6TVRCd2VEc2diV0Y0TFhkcFpIUm9PaUF6TVRCd2VGeGNYQ0lnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1UrVm1Gc2RXVThMM1JvUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHgwYUNCemRIbHNaVDFjWEZ3aWQybGtkR2c2SURJd01IQjRPeUJ0WVhndGQybGtkR2c2SURJd01IQjRYRnhjSWlCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlQ1RVpYTmpjbWx3ZEdsdmJqd3ZkR2crWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdQSFJvSUhOMGVXeGxQVnhjWENKM2FXUjBhRG9nTVRBd2NIZzdJRzFoZUMxM2FXUjBhRG9nTVRBd2NIaGNYRndpSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGxCaGNtRnRaWFJsY2lCVWVYQmxQQzkwYUQ1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4ZEdnZ2MzUjViR1U5WEZ4Y0luZHBaSFJvT2lBeU1qQndlRHNnYldGNExYZHBaSFJvT2lBeU16QndlRnhjWENJZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1JHRjBZU0JVZVhCbFBDOTBhRDVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThMM1J5UGx4Y2JpQWdJQ0FnSUNBZ0lDQThMM1JvWldGa1BseGNiaUFnSUNBZ0lDQWdJQ0E4ZEdKdlpIa2dZMnhoYzNNOVhGeGNJbTl3WlhKaGRHbHZiaTF3WVhKaGJYTmNYRndpUGx4Y2JseGNiaUFnSUNBZ0lDQWdJQ0E4TDNSaWIyUjVQbHhjYmlBZ0lDQWdJQ0FnSUNBOEwzUmhZbXhsUGx4Y2Jsd2lPMXh1ZlN4Y0lqRTNYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ0lDQWdJQ0FnSUNBZ1BHUnBkaUJ6ZEhsc1pUMG5iV0Z5WjJsdU9qQTdjR0ZrWkdsdVp6b3dPMlJwYzNCc1lYazZhVzVzYVc1bEp6NDhMMlJwZGo1Y1hHNGdJQ0FnSUNBZ0lDQWdQR2cwSUdSaGRHRXRjM2N0ZEhKaGJuTnNZWFJsUGxKbGMzQnZibk5sSUUxbGMzTmhaMlZ6UEM5b05ENWNYRzRnSUNBZ0lDQWdJQ0FnUEhSaFlteGxJR05zWVhOelBTZG1kV3hzZDJsa2RHZ2djbVZ6Y0c5dWMyVXRiV1Z6YzJGblpYTW5QbHhjYmlBZ0lDQWdJQ0FnSUNBZ0lEeDBhR1ZoWkQ1Y1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4ZEhJK1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGRHZ2daR0YwWVMxemR5MTBjbUZ1YzJ4aGRHVStTRlJVVUNCVGRHRjBkWE1nUTI5a1pUd3ZkR2crWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZEdnZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1VtVmhjMjl1UEM5MGFENWNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEeDBhQ0JrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVTWlhOd2IyNXpaU0JOYjJSbGJEd3ZkR2crWEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0E4ZEdnZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1NHVmhaR1Z5Y3p3dmRHZytYRnh1SUNBZ0lDQWdJQ0FnSUNBZ1BDOTBjajVjWEc0Z0lDQWdJQ0FnSUNBZ0lDQThMM1JvWldGa1BseGNiaUFnSUNBZ0lDQWdJQ0FnSUR4MFltOWtlU0JqYkdGemN6MWNYRndpYjNCbGNtRjBhVzl1TFhOMFlYUjFjMXhjWENJK1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnUEM5MFltOWtlVDVjWEc0Z0lDQWdJQ0FnSUNBZ1BDOTBZV0pzWlQ1Y1hHNWNJanRjYm4wc1hDSXhPVndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZ3aVhDSTdYRzU5TEZ3aU1qRmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnSUNBOFpHbDJJR05zWVhOelBTZHpZVzVrWW05NFgyaGxZV1JsY2ljK1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnUEdsdWNIVjBJR05zWVhOelBTZHpkV0p0YVhRbklIUjVjR1U5SjNOMVltMXBkQ2NnZG1Gc2RXVTlKMVJ5ZVNCcGRDQnZkWFFoSnlCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlM4K1hGeHVJQ0FnSUNBZ0lDQWdJQ0FnUEdFZ2FISmxaajBuSXljZ1kyeGhjM005SjNKbGMzQnZibk5sWDJocFpHVnlKeUJ6ZEhsc1pUMG5aR2x6Y0d4aGVUcHViMjVsSnlCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlQ1SWFXUmxJRkpsYzNCdmJuTmxQQzloUGx4Y2JpQWdJQ0FnSUNBZ0lDQWdJRHh6Y0dGdUlHTnNZWE56UFNkeVpYTndiMjV6WlY5MGFISnZZbUpsY2ljZ2MzUjViR1U5SjJScGMzQnNZWGs2Ym05dVpTYytQQzl6Y0dGdVBseGNiaUFnSUNBZ0lDQWdJQ0E4TDJScGRqNWNYRzVjSWp0Y2JuMHNYQ0l5TTF3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGd2lJQ0FnSUNBZ0lDQWdJRHhvTkNCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlQ1U1pYRjFaWE4wSUVobFlXUmxjbk04TDJnMFBseGNiaUFnSUNBZ0lDQWdJQ0E4WkdsMklHTnNZWE56UFNkaWJHOWpheUJ5WlhGMVpYTjBYMmhsWVdSbGNuTW5Qand2WkdsMlBseGNibHdpTzF4dWZTeGNJbU52YlhCcGJHVnlYQ0k2V3pjc1hDSStQU0EwTGpBdU1Gd2lYU3hjSW0xaGFXNWNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5MQ0JoYkdsaGN6TTlZMjl1ZEdGcGJtVnlMbVZ6WTJGd1pVVjRjSEpsYzNOcGIyNDdYRzVjYmlBZ2NtVjBkWEp1SUZ3aUlDQThkV3dnWTJ4aGMzTTlKMjl3WlhKaGRHbHZibk1uSUQ1Y1hHNGdJQ0FnUEd4cElHTnNZWE56UFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV0WlhSb2IyUWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1WelkyRndaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWlCdmNHVnlZWFJwYjI0bklHbGtQU2RjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXdZWEpsYm5SSlpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpWDF3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbTVwWTJ0dVlXMWxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJblBseGNiaUFnSUNBZ0lEeGthWFlnWTJ4aGMzTTlKMmhsWVdScGJtY25QbHhjYmlBZ0lDQWdJQ0FnUEdnelBseGNiaUFnSUNBZ0lDQWdJQ0E4YzNCaGJpQmpiR0Z6Y3owbmFIUjBjRjl0WlhSb2IyUW5QbHhjYmlBZ0lDQWdJQ0FnSUNBOFlTQm9jbVZtUFNjaklTOWNJbHh1SUNBZ0lDc2dZV3hwWVhNektDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1bGJtTnZaR1ZrVUdGeVpXNTBTV1FnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLVnh1SUNBZ0lDc2dYQ0l2WENKY2JpQWdJQ0FySUdGc2FXRnpNeWdvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVibWxqYTI1aGJXVWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtWeHVJQ0FnSUNzZ1hDSW5JR05zWVhOelBWeGNYQ0owYjJkbmJHVlBjR1Z5WVhScGIyNWNYRndpUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbTFsZEdodlpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5aFBseGNiaUFnSUNBZ0lDQWdJQ0E4TDNOd1lXNCtYRnh1SUNBZ0lDQWdJQ0FnSUR4emNHRnVJR05zWVhOelBTZHdZWFJvSno1Y1hHNGdJQ0FnSUNBZ0lDQWdQR0VnYUhKbFpqMG5JeUV2WENKY2JpQWdJQ0FySUdGc2FXRnpNeWdvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVaVzVqYjJSbFpGQmhjbVZ1ZEVsa0lEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0p6WVc1cGRHbDZaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NsY2JpQWdJQ0FySUZ3aUwxd2lYRzRnSUNBZ0t5QmhiR2xoY3pNb0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG01cFkydHVZVzFsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2xjYmlBZ0lDQXJJRndpSnlCamJHRnpjejFjWEZ3aWRHOW5aMnhsVDNCbGNtRjBhVzl1SUZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVpHVndjbVZqWVhSbFpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NU3dnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnhjSWo1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV3WVhSb0lEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0psYzJOaGNHVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDJFK1hGeHVJQ0FnSUNBZ0lDQWdJRHd2YzNCaGJqNWNYRzRnSUNBZ0lDQWdJRHd2YURNK1hGeHVJQ0FnSUNBZ0lDQThkV3dnWTJ4aGMzTTlKMjl3ZEdsdmJuTW5QbHhjYmlBZ0lDQWdJQ0FnSUNBOGJHaytYRnh1SUNBZ0lDQWdJQ0FnSUR4aElHaHlaV1k5SnlNaEwxd2lYRzRnSUNBZ0t5QmhiR2xoY3pNb0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1WdVkyOWtaV1JRWVhKbGJuUkpaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BYRzRnSUNBZ0t5QmNJaTljSWx4dUlDQWdJQ3NnWVd4cFlYTXpLQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXVhV05yYm1GdFpTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcFhHNGdJQ0FnS3lCY0lpY2dZMnhoYzNNOVhGeGNJblJ2WjJkc1pVOXdaWEpoZEdsdmJseGNYQ0krUEhOd1lXNGdZMnhoYzNNOVhGeGNJbTFoY210a2IzZHVYRnhjSWo1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV6ZFcxdFlYSjVJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzTndZVzQrUEM5aFBseGNiaUFnSUNBZ0lDQWdJQ0E4TDJ4cFBseGNiaUFnSUNBZ0lDQWdQQzkxYkQ1Y1hHNGdJQ0FnSUNBOEwyUnBkajVjWEc0Z0lDQWdJQ0E4WkdsMklHTnNZWE56UFNkamIyNTBaVzUwSnlCcFpEMG5YQ0pjYmlBZ0lDQXJJR0ZzYVdGek15Z29hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVpXNWpiMlJsWkZCaGNtVnVkRWxrSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2xjYmlBZ0lDQXJJRndpWDF3aVhHNGdJQ0FnS3lCaGJHbGhjek1vS0dobGJIQmxjbk11YzJGdWFYUnBlbVVnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdWMyRnVhWFJwZW1VcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbTVwWTJ0dVlXMWxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTbGNiaUFnSUNBcklGd2lYMk52Ym5SbGJuUW5JSE4wZVd4bFBTZGthWE53YkdGNU9tNXZibVVuUGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTmJYQ0pwWmx3aVhTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVaR1Z3Y21WallYUmxaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTXl3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbTV2YjNBc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnYUdWc2NHVnljMXRjSW1sbVhDSmRMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVrWlhOamNtbHdkR2x2YmlBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb05Td2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1elpXTjFjbWwwZVNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb055d2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MGVYQmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKcFpsd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2c1TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVibTl2Y0N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0pjWEc1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKelcxd2lhV1pjSWwwdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtaGxZV1JsY25NZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtERXlMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWJtOXZjQ3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRzRnSUNBZ0lDQWdJRHhtYjNKdElHRmpZMlZ3ZEMxamFHRnljMlYwUFNkVlZFWXRPQ2NnWTJ4aGMzTTlKM05oYm1SaWIzZ25QbHhjYmlBZ0lDQWdJQ0FnSUNBOFpHbDJJSE4wZVd4bFBTZHRZWEpuYVc0Nk1EdHdZV1JrYVc1bk9qQTdaR2x6Y0d4aGVUcHBibXhwYm1VblBqd3ZaR2wyUGx4Y2Jsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTmJYQ0pwWmx3aVhTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjR0Z5WVcxbGRHVnljeUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTVRVc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1Y21WemNHOXVjMlZOWlhOellXZGxjeUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTVRjc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YVhOU1pXRmtUMjVzZVNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01Ua3NJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RJeExDQmtZWFJoTENBd0tTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJZ0lDQWdJQ0FnSUR3dlptOXliVDVjWEc0Z0lDQWdJQ0FnSUR4a2FYWWdZMnhoYzNNOUozSmxjM0J2Ym5ObEp5QnpkSGxzWlQwblpHbHpjR3hoZVRwdWIyNWxKejVjWEc0Z0lDQWdJQ0FnSUNBZ1BHZzBJR05zWVhOelBTZGpkWEpzSno1RGRYSnNQQzlvTkQ1Y1hHNGdJQ0FnSUNBZ0lDQWdQR1JwZGlCamJHRnpjejBuWW14dlkyc2dZM1Z5YkNjK1BDOWthWFkrWEZ4dUlDQWdJQ0FnSUNBZ0lEeG9OQ0JrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVTWlhGMVpYTjBJRlZTVER3dmFEUStYRnh1SUNBZ0lDQWdJQ0FnSUR4a2FYWWdZMnhoYzNNOUoySnNiMk5ySUhKbGNYVmxjM1JmZFhKc0p6NDhMMlJwZGo1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbk5vYjNkU1pYRjFaWE4wU0dWaFpHVnljeUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTWpNc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWlBZ0lDQWdJQ0FnSUNBOGFEUWdaR0YwWVMxemR5MTBjbUZ1YzJ4aGRHVStVbVZ6Y0c5dWMyVWdRbTlrZVR3dmFEUStYRnh1SUNBZ0lDQWdJQ0FnSUR4a2FYWWdZMnhoYzNNOUoySnNiMk5ySUhKbGMzQnZibk5sWDJKdlpIa25Qand2WkdsMlBseGNiaUFnSUNBZ0lDQWdJQ0E4YURRZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1VtVnpjRzl1YzJVZ1EyOWtaVHd2YURRK1hGeHVJQ0FnSUNBZ0lDQWdJRHhrYVhZZ1kyeGhjM005SjJKc2IyTnJJSEpsYzNCdmJuTmxYMk52WkdVblBqd3ZaR2wyUGx4Y2JpQWdJQ0FnSUNBZ0lDQThhRFFnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1UrVW1WemNHOXVjMlVnU0dWaFpHVnljend2YURRK1hGeHVJQ0FnSUNBZ0lDQWdJRHhrYVhZZ1kyeGhjM005SjJKc2IyTnJJSEpsYzNCdmJuTmxYMmhsWVdSbGNuTW5Qand2WkdsMlBseGNiaUFnSUNBZ0lDQWdQQzlrYVhZK1hGeHVJQ0FnSUNBZ1BDOWthWFkrWEZ4dUlDQWdJRHd2YkdrK1hGeHVJQ0E4TDNWc1BseGNibHdpTzF4dWZTeGNJblZ6WlVSaGRHRmNJanAwY25WbGZTazdYRzUwWlcxd2JHRjBaWE5iSjNCaGNtRnRKMTBnUFNCMFpXMXdiR0YwWlNoN1hDSXhYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeE8xeHVYRzRnSUhKbGRIVnliaUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbHpSbWxzWlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01pd2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTkN3Z1pHRjBZU3dnTUNrc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWs3WEc1OUxGd2lNbHdpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dZV3hwWVhNeFBXUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNJR0ZzYVdGek1qMW9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWM3WEc1Y2JpQWdjbVYwZFhKdUlGd2lYSFJjZEZ4MFBHbHVjSFYwSUhSNWNHVTlYRnhjSW1acGJHVmNYRndpSUc1aGJXVTlKMXdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtNWhiV1VnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltVnpZMkZ3WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpY2dhV1E5SjF3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMblpoYkhWbFNXUWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1WelkyRndaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWljdlBseGNibHgwWEhSY2REeGthWFlnWTJ4aGMzTTlYRnhjSW5CaGNtRnRaWFJsY2kxamIyNTBaVzUwTFhSNWNHVmNYRndpSUM4K1hGeHVYQ0k3WEc1OUxGd2lORndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1UdGNibHh1SUNCeVpYUjFjbTRnS0NoemRHRmphekVnUFNCb1pXeHdaWEp6VzF3aWFXWmNJbDB1WTJGc2JDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01GdGNJbVJsWm1GMWJIUmNJbDBnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltbG1YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RVc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLRGNzSUdSaGRHRXNJREFwTEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBPMXh1ZlN4Y0lqVmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5PMXh1WEc0Z0lISmxkSFZ5YmlCY0lseDBYSFJjZEZ4MFBHUnBkaUJqYkdGemN6MWNYRndpWldScGRHOXlYMmh2YkdSbGNseGNYQ0krUEM5a2FYWStYRnh1WEhSY2RGeDBYSFE4ZEdWNGRHRnlaV0VnWTJ4aGMzTTlKMkp2WkhrdGRHVjRkR0Z5WldFbklHNWhiV1U5SjF3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbTVoYldVZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaWNnYVdROUoxd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG5aaGJIVmxTV1FnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltVnpZMkZ3WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpYytYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURCYlhDSmtaV1poZFd4MFhDSmRJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzUmxlSFJoY21WaFBseGNiaUFnSUNBZ0lDQWdQR0p5SUM4K1hGeHVJQ0FnSUNBZ0lDQThaR2wySUdOc1lYTnpQVnhjWENKd1lYSmhiV1YwWlhJdFkyOXVkR1Z1ZEMxMGVYQmxYRnhjSWlBdlBseGNibHdpTzF4dWZTeGNJamRjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RXNJR0ZzYVdGek1UMWtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ0JoYkdsaGN6STlhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuTzF4dVhHNGdJSEpsZEhWeWJpQmNJbHgwWEhSY2RGeDBQSFJsZUhSaGNtVmhJR05zWVhOelBTZGliMlI1TFhSbGVIUmhjbVZoSnlCdVlXMWxQU2RjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXVZVzFsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSW5JR2xrUFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzUyWVd4MVpVbGtJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJblBqd3ZkR1Y0ZEdGeVpXRStYRnh1WEhSY2RGeDBYSFE4WkdsMklHTnNZWE56UFZ4Y1hDSmxaR2wwYjNKZmFHOXNaR1Z5WEZ4Y0lqNDhMMlJwZGo1Y1hHNWNkRngwWEhSY2REeGljaUF2UGx4Y2JseDBYSFJjZEZ4MFBHUnBkaUJqYkdGemN6MWNYRndpY0dGeVlXMWxkR1Z5TFdOdmJuUmxiblF0ZEhsd1pWeGNYQ0lnTHo1Y1hHNWNJanRjYm4wc1hDSTVYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeE8xeHVYRzRnSUhKbGRIVnliaUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbHpSbWxzWlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01pd2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTVRBc0lHUmhkR0VzSURBcExGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwTzF4dWZTeGNJakV3WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hPMXh1WEc0Z0lISmxkSFZ5YmlBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuSmxibVJsY2xSbGVIUlFZWEpoYlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXlaVzVrWlhKVVpYaDBVR0Z5WVcwcElIeDhJR2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1WnlrdVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TEdSbGNIUm9NQ3g3WENKdVlXMWxYQ0k2WENKeVpXNWtaWEpVWlhoMFVHRnlZVzFjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01URXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcE8xeHVmU3hjSWpFeFhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0pjSWp0Y2JuMHNYQ0pqYjIxd2FXeGxjbHdpT2xzM0xGd2lQajBnTkM0d0xqQmNJbDBzWENKdFlXbHVYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeExDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd2dZV3hwWVhNeVBXaGxiSEJsY25NdWFHVnNjR1Z5VFdsemMybHVaenRjYmx4dUlDQnlaWFIxY200Z1hDSThkR1FnWTJ4aGMzTTlKMk52WkdVblBqeHNZV0psYkNCbWIzSTlKMXdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuWmhiSFZsU1dRZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaWMrWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVibUZ0WlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzlzWVdKbGJENDhMM1JrUGx4Y2JqeDBaRDVjWEc1Y1hHNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpXMXdpYVdaY0lsMHVZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbWx6UW05a2VTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NU3dnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb09Td2daR0YwWVN3Z01Da3NYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeHVQQzkwWkQ1Y1hHNDhkR1FnWTJ4aGMzTTlYRnhjSW0xaGNtdGtiM2R1WEZ4Y0lqNWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVaR1Z6WTNKcGNIUnBiMjRnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzkwWkQ1Y1hHNDhkR1ErWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjR0Z5WVcxVWVYQmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzUmtQbHhjYmp4MFpENWNYRzVjZER4emNHRnVJR05zWVhOelBWeGNYQ0p0YjJSbGJDMXphV2R1WVhSMWNtVmNYRndpUGp3dmMzQmhiajVjWEc0OEwzUmtQbHhjYmx3aU8xeHVmU3hjSW5WelpVUmhkR0ZjSWpwMGNuVmxmU2s3WEc1MFpXMXdiR0YwWlhOYkozQmhjbUZ0WDJ4cGMzUW5YU0E5SUhSbGJYQnNZWFJsS0h0Y0lqRmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJjSWlCeVpYRjFhWEpsWkZ3aU8xeHVmU3hjSWpOY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSEpsZEhWeWJpQmNJaUJ0ZFd4MGFYQnNaVDFjWEZ3aWJYVnNkR2x3YkdWY1hGd2lYQ0k3WEc1OUxGd2lOVndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZ3aUlISmxjWFZwY21Wa0lGd2lPMXh1ZlN4Y0lqZGNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFN1hHNWNiaUFnY21WMGRYSnVJRndpSUNBZ0lDQWdQRzl3ZEdsdmJpQmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpMblZ1YkdWemN5NWpZV3hzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1oaGMwUmxabUYxYkhRZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJblZ1YkdWemMxd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2c0TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVibTl2Y0N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0lnZG1Gc2RXVTlKeWMrUEM5dmNIUnBiMjQrWEZ4dVhDSTdYRzU5TEZ3aU9Gd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnY21WMGRYSnVJRndpSUNCelpXeGxZM1JsWkQxY1hGd2lYRnhjSWlCY0lqdGNibjBzWENJeE1Gd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVN3Z1lXeHBZWE14UFdSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0lHRnNhV0Z6TWoxb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtYzdYRzVjYmlBZ2NtVjBkWEp1SUZ3aVhGeHVJQ0FnSUNBZ1BHOXdkR2x2YmlCY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKelcxd2lhV1pjSWwwdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbHpSR1ZtWVhWc2RDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NVEVzSUdSaGRHRXNJREFwTEZ3aWFXNTJaWEp6WlZ3aU9tTnZiblJoYVc1bGNpNXViMjl3TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaUFnZG1Gc2RXVTlKMXdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzUyWVd4MVpTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJblBpQmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVkbUZzZFdVZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbk5oYm1sMGFYcGxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpSUZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFYTkVaV1poZFd4MElEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZ3hNeXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lJRHd2YjNCMGFXOXVQbHhjYmx4Y2Jsd2lPMXh1ZlN4Y0lqRXhYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ2MyVnNaV04wWldROVhGeGNJbHhjWENJZ0lGd2lPMXh1ZlN4Y0lqRXpYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ0tHUmxabUYxYkhRcElGd2lPMXh1ZlN4Y0lqRTFYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJOGMzUnliMjVuUGx3aU8xeHVmU3hjSWpFM1hDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0k4TDNOMGNtOXVaejVjSWp0Y2JuMHNYQ0pqYjIxd2FXeGxjbHdpT2xzM0xGd2lQajBnTkM0d0xqQmNJbDBzWENKdFlXbHVYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeExDQm9aV3h3WlhJc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5PMXh1WEc0Z0lISmxkSFZ5YmlCY0lqeDBaQ0JqYkdGemN6MG5ZMjlrWlZ3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWNtVnhkV2x5WldRZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtERXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpYytQR3hoWW1Wc0lHWnZjajBuWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVkbUZzZFdWSlpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpSno1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWJtRnRaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMnhoWW1Wc1Bqd3ZkR1ErWEZ4dVBIUmtQbHhjYmlBZ1BITmxiR1ZqZENCY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXBjMEZ5Y21GNUlIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbWx6UVhKeVlYa3BJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc1pHVndkR2d3TEh0Y0ltNWhiV1ZjSWpwY0ltbHpRWEp5WVhsY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NeXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lJR05zWVhOelBWeGNYQ0p3WVhKaGJXVjBaWElnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1eVpYRjFhWEpsWkNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb05Td2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeGNJaUJ1WVcxbFBWeGNYQ0pjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1ellXNXBkR2w2WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXpZVzVwZEdsNlpTa2dmSHdnWVd4cFlYTXlLUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1Ym1GdFpTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hGd2lJR2xrUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MllXeDFaVWxrSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRndpUGx4Y2JseGNibHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk11ZFc1c1pYTnpMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV5WlhGMWFYSmxaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWRXNXNaWE56WENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtEY3NJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lseGNibHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk11WldGamFDNWpZV3hzS0dGc2FXRnpNU3dvS0hOMFlXTnJNU0E5SUNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVoYkd4dmQyRmliR1ZXWVd4MVpYTWdPaUJrWlhCMGFEQXBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hMbVJsYzJOeWFYQjBhWFpsVm1Gc2RXVnpJRG9nYzNSaFkyc3hLU3g3WENKdVlXMWxYQ0k2WENKbFlXTm9YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RFd0xDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hHNGdJRHd2YzJWc1pXTjBQbHhjYmp3dmRHUStYRnh1UEhSa0lHTnNZWE56UFZ4Y1hDSnRZWEpyWkc5M2JseGNYQ0krWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1eVpYRjFhWEpsWkNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2lhV1pjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVp1WENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb01UVXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDZ29hR1ZzY0dWeUlEMGdLR2hsYkhCbGNpQTlJR2hsYkhCbGNuTXVaR1Z6WTNKcGNIUnBiMjRnZkh3Z0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG1SbGMyTnlhWEIwYVc5dUlEb2daR1Z3ZEdnd0tTa2dJVDBnYm5Wc2JDQS9JR2hsYkhCbGNpQTZJR0ZzYVdGek1pa3NLSFI1Y0dWdlppQm9aV3h3WlhJZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lHaGxiSEJsY2k1allXeHNLR0ZzYVdGek1TeDdYQ0p1WVcxbFhDSTZYQ0prWlhOamNtbHdkR2x2Ymx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTQTZJR2hsYkhCbGNpa3BLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWMxdGNJbWxtWENKZExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXlaWEYxYVhKbFpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NVGNzSUdSaGRHRXNJREFwTEZ3aWFXNTJaWEp6WlZ3aU9tTnZiblJoYVc1bGNpNXViMjl3TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2ZEdRK1hGeHVQSFJrUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbkJoY21GdFZIbHdaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOTBaRDVjWEc0OGRHUStQSE53WVc0Z1kyeGhjM005WEZ4Y0ltMXZaR1ZzTFhOcFoyNWhkSFZ5WlZ4Y1hDSStQQzl6Y0dGdVBqd3ZkR1ErWEZ4dVhDSTdYRzU5TEZ3aWRYTmxSR0YwWVZ3aU9uUnlkV1Y5S1R0Y2JuUmxiWEJzWVhSbGMxc25jR0Z5WVcxZmNtVmhaRzl1YkhrblhTQTlJSFJsYlhCc1lYUmxLSHRjSWpGY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekVzSUdGc2FXRnpNVDFrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENCaGJHbGhjekk5YUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bk8xeHVYRzRnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnUEhSbGVIUmhjbVZoSUdOc1lYTnpQU2RpYjJSNUxYUmxlSFJoY21WaEp5QnlaV0ZrYjI1c2VUMG5jbVZoWkc5dWJIa25JRzVoYldVOUoxd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXVZVzFsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaWNnYVdROUoxd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG5aaGJIVmxTV1FnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltVnpZMkZ3WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpYytYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11YzJGdWFYUnBlbVVnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdWMyRnVhWFJwZW1VcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dXMXdpWkdWbVlYVnNkRndpWFNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2ljMkZ1YVhScGVtVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDNSbGVIUmhjbVZoUGx4Y2JpQWdJQ0FnSUNBZ1BHUnBkaUJqYkdGemN6MWNYRndpY0dGeVlXMWxkR1Z5TFdOdmJuUmxiblF0ZEhsd1pWeGNYQ0lnTHo1Y1hHNWNJanRjYm4wc1hDSXpYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeE8xeHVYRzRnSUhKbGRIVnliaUFvS0hOMFlXTnJNU0E5SUdobGJIQmxjbk5iWENKcFpsd2lYUzVqWVd4c0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd1cxd2laR1ZtWVhWc2RGd2lYU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWFXWmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltWnVYQ0k2WTI5dWRHRnBibVZ5TG5CeWIyZHlZVzBvTkN3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9OaXdnWkdGMFlTd2dNQ2tzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpazdYRzU5TEZ3aU5Gd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVR0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUNBZ0lDQWdJQ0FnSUNCY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z2FHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5LUzVqWVd4c0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd1cxd2laR1ZtWVhWc2RGd2lYU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRzVjSWp0Y2JuMHNYQ0kyWENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQnlaWFIxY200Z1hDSWdJQ0FnSUNBZ0lDQWdJQ0FvWlcxd2RIa3BYRnh1WENJN1hHNTlMRndpWTI5dGNHbHNaWEpjSWpwYk55eGNJajQ5SURRdU1DNHdYQ0pkTEZ3aWJXRnBibHdpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dZV3hwWVhNeFBXUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNJR0ZzYVdGek1qMW9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWM3WEc1Y2JpQWdjbVYwZFhKdUlGd2lQSFJrSUdOc1lYTnpQU2RqYjJSbEp6NDhiR0ZpWld3Z1ptOXlQU2RjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNTJZV3gxWlVsa0lEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0psYzJOaGNHVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0luUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1dVlXMWxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZiR0ZpWld3K1BDOTBaRDVjWEc0OGRHUStYRnh1WENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGMwSnZaSGtnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0ltbG1YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RFc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLRE1zSUdSaGRHRXNJREFwTEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2ZEdRK1hGeHVQSFJrSUdOc1lYTnpQVnhjWENKdFlYSnJaRzkzYmx4Y1hDSStYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11YzJGdWFYUnBlbVVnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdWMyRnVhWFJwZW1VcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbVJsYzJOeWFYQjBhVzl1SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJand2ZEdRK1hGeHVQSFJrUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbkJoY21GdFZIbHdaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOTBaRDVjWEc0OGRHUStQSE53WVc0Z1kyeGhjM005WEZ4Y0ltMXZaR1ZzTFhOcFoyNWhkSFZ5WlZ4Y1hDSStQQzl6Y0dGdVBqd3ZkR1ErWEZ4dVhDSTdYRzU5TEZ3aWRYTmxSR0YwWVZ3aU9uUnlkV1Y5S1R0Y2JuUmxiWEJzWVhSbGMxc25jR0Z5WVcxZmNtVmhaRzl1YkhsZmNtVnhkV2x5WldRblhTQTlJSFJsYlhCc1lYUmxLSHRjSWpGY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekVzSUdGc2FXRnpNVDFrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENCaGJHbGhjekk5YUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bk8xeHVYRzRnSUhKbGRIVnliaUJjSWlBZ0lDQWdJQ0FnUEhSbGVIUmhjbVZoSUdOc1lYTnpQU2RpYjJSNUxYUmxlSFJoY21WaEp5QnlaV0ZrYjI1c2VUMG5jbVZoWkc5dWJIa25JSEJzWVdObGFHOXNaR1Z5UFNjb2NtVnhkV2x5WldRcEp5QnVZVzFsUFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWJtRnRaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSW5JR2xrUFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NWxjMk5oY0dVZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVaWE5qWVhCbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzUyWVd4MVpVbGtJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJblBsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01GdGNJbVJsWm1GMWJIUmNJbDBnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzkwWlhoMFlYSmxZVDVjWEc1Y0lqdGNibjBzWENJelhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0IyWVhJZ2MzUmhZMnN4TzF4dVhHNGdJSEpsZEhWeWJpQW9LSE4wWVdOck1TQTlJR2hsYkhCbGNuTmJYQ0pwWmx3aVhTNWpZV3hzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3VzF3aVpHVm1ZWFZzZEZ3aVhTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9OQ3dnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb05pd2daR0YwWVN3Z01Da3NYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlrN1hHNTlMRndpTkZ3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUhOMFlXTnJNVHRjYmx4dUlDQnlaWFIxY200Z1hDSWdJQ0FnSUNBZ0lDQWdJQ0JjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1ellXNXBkR2w2WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXpZVzVwZEdsNlpTa2dmSHdnYUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bktTNWpZV3hzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3VzF3aVpHVm1ZWFZzZEZ3aVhTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hHNWNJanRjYm4wc1hDSTJYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ0lDQWdJQ0FnSUNBZ0lDQW9aVzF3ZEhrcFhGeHVYQ0k3WEc1OUxGd2lZMjl0Y0dsc1pYSmNJanBiTnl4Y0lqNDlJRFF1TUM0d1hDSmRMRndpYldGcGJsd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVN3Z1lXeHBZWE14UFdSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0lHRnNhV0Z6TWoxb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtYzdYRzVjYmlBZ2NtVjBkWEp1SUZ3aVBIUmtJR05zWVhOelBTZGpiMlJsSUhKbGNYVnBjbVZrSno0OGJHRmlaV3dnWm05eVBTZGNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MllXeDFaVWxrSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSW5QbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV1WVcxbElEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0p6WVc1cGRHbDZaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmJHRmlaV3crUEM5MFpENWNYRzQ4ZEdRK1hGeHVYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnYUdWc2NHVnljMXRjSW1sbVhDSmRMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVwYzBKdlpIa2dPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1sbVhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKbWJsd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLREVzSUdSaGRHRXNJREFwTEZ3aWFXNTJaWEp6WlZ3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtETXNJR1JoZEdFc0lEQXBMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZkR1ErWEZ4dVBIUmtJR05zWVhOelBWeGNYQ0p0WVhKclpHOTNibHhjWENJK1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVjMkZ1YVhScGVtVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YzJGdWFYUnBlbVVwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtUmxjMk55YVhCMGFXOXVJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZkR1ErWEZ4dVBIUmtQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuQmhjbUZ0Vkhsd1pTQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5MFpENWNYRzQ4ZEdRK1BITndZVzRnWTJ4aGMzTTlYRnhjSW0xdlpHVnNMWE5wWjI1aGRIVnlaVnhjWENJK1BDOXpjR0Z1UGp3dmRHUStYRnh1WENJN1hHNTlMRndpZFhObFJHRjBZVndpT25SeWRXVjlLVHRjYm5SbGJYQnNZWFJsYzFzbmNHRnlZVzFmY21WeGRXbHlaV1FuWFNBOUlIUmxiWEJzWVhSbEtIdGNJakZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RTdYRzVjYmlBZ2NtVjBkWEp1SUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVhWE5HYVd4bElEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0pwWmx3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWm01Y0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZ3lMQ0JrWVhSaExDQXdLU3hjSW1sdWRtVnljMlZjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNnMExDQmtZWFJoTENBd0tTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1R0Y2JuMHNYQ0l5WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0pjZEZ4MFhIUThhVzV3ZFhRZ2RIbHdaVDFjWEZ3aVptbHNaVnhjWENJZ2JtRnRaVDBuWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVibUZ0WlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lKeUJwWkQwblhDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVaWE5qWVhCbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbVZ6WTJGd1pTa2dmSHdnWVd4cFlYTXlLUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1ZG1Gc2RXVkpaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aUp5OCtYRnh1WENJN1hHNTlMRndpTkZ3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUhOMFlXTnJNVHRjYmx4dUlDQnlaWFIxY200Z0tDaHpkR0ZqYXpFZ1BTQm9aV3h3WlhKelcxd2lhV1pjSWwwdVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NRnRjSW1SbFptRjFiSFJjSWwwZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtEVXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0Rjc0lHUmhkR0VzSURBcExGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwTzF4dWZTeGNJalZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RXNJR0ZzYVdGek1UMWtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUNBNklIdDlMQ0JoYkdsaGN6STlhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuTzF4dVhHNGdJSEpsZEhWeWJpQmNJbHgwWEhSY2RGeDBQR1JwZGlCamJHRnpjejFjWEZ3aVpXUnBkRzl5WDJodmJHUmxjbHhjWENJK1BDOWthWFkrWEZ4dVhIUmNkRngwWEhROGRHVjRkR0Z5WldFZ1kyeGhjM005SjJKdlpIa3RkR1Y0ZEdGeVpXRWdjbVZ4ZFdseVpXUW5JSEJzWVdObGFHOXNaR1Z5UFNjb2NtVnhkV2x5WldRcEp5QnVZVzFsUFNkY0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWJtRnRaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSW5JR2xrUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MllXeDFaVWxrSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRndpUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUZ0Y0ltUmxabUYxYkhSY0lsMGdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOTBaWGgwWVhKbFlUNWNYRzRnSUNBZ0lDQWdJRHhpY2lBdlBseGNiaUFnSUNBZ0lDQWdQR1JwZGlCamJHRnpjejFjWEZ3aWNHRnlZVzFsZEdWeUxXTnZiblJsYm5RdGRIbHdaVnhjWENJZ0x6NWNYRzVjSWp0Y2JuMHNYQ0kzWENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0pjZEZ4MFhIUmNkRHgwWlhoMFlYSmxZU0JqYkdGemN6MG5ZbTlrZVMxMFpYaDBZWEpsWVNCeVpYRjFhWEpsWkNjZ2NHeGhZMlZvYjJ4a1pYSTlKeWh5WlhGMWFYSmxaQ2tuSUc1aGJXVTlKMXdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV1WVcxbElEb2daR1Z3ZEdnd0tTeDdYQ0p1WVcxbFhDSTZYQ0p6WVc1cGRHbDZaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWljZ2FXUTlKMXdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG1WelkyRndaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1bGMyTmhjR1VwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xuWmhiSFZsU1dRZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZ6WTJGd1pWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaWMrUEM5MFpYaDBZWEpsWVQ1Y1hHNWNkRngwWEhSY2REeGthWFlnWTJ4aGMzTTlYRnhjSW1Wa2FYUnZjbDlvYjJ4a1pYSmNYRndpUGp3dlpHbDJQbHhjYmx4MFhIUmNkRngwUEdKeUlDOCtYRnh1WEhSY2RGeDBYSFE4WkdsMklHTnNZWE56UFZ4Y1hDSndZWEpoYldWMFpYSXRZMjl1ZEdWdWRDMTBlWEJsWEZ4Y0lpQXZQbHhjYmx3aU8xeHVmU3hjSWpsY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSFpoY2lCemRHRmphekU3WEc1Y2JpQWdjbVYwZFhKdUlDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWMxdGNJbWxtWENKZExtTmhiR3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQWdPaUI3ZlN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YVhOR2FXeGxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKcFpsd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2d4TUN3Z1pHRjBZU3dnTUNrc1hDSnBiblpsY25ObFhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NVElzSUdSaGRHRXNJREFwTEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBPMXh1ZlN4Y0lqRXdYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeExDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd2dZV3hwWVhNeVBXaGxiSEJsY25NdWFHVnNjR1Z5VFdsemMybHVaenRjYmx4dUlDQnlaWFIxY200Z1hDSmNkRngwWEhROGFXNXdkWFFnWTJ4aGMzTTlKM0JoY21GdFpYUmxjaUJ5WlhGMWFYSmxaQ2NnZEhsd1pUMG5abWxzWlNjZ2JtRnRaVDBuWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG01aGJXVWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aUp5QnBaRDBuWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVkbUZzZFdWSlpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpWlhOallYQmxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpSnk4K1hGeHVYQ0k3WEc1OUxGd2lNVEpjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RTdYRzVjYmlBZ2NtVjBkWEp1SUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdWNtVnVaR1Z5VkdWNGRGQmhjbUZ0SUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuSmxibVJsY2xSbGVIUlFZWEpoYlNrZ2ZId2dhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuS1M1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzWkdWd2RHZ3dMSHRjSW01aGJXVmNJanBjSW5KbGJtUmxjbFJsZUhSUVlYSmhiVndpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneE15d2daR0YwWVN3Z01Da3NYQ0pwYm5abGNuTmxYQ0k2WTI5dWRHRnBibVZ5TG01dmIzQXNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlrN1hHNTlMRndpTVROY0lqcG1kVzVqZEdsdmJpaGpiMjUwWVdsdVpYSXNaR1Z3ZEdnd0xHaGxiSEJsY25Nc2NHRnlkR2xoYkhNc1pHRjBZU2tnZTF4dUlDQWdJSEpsZEhWeWJpQmNJbHdpTzF4dWZTeGNJbU52YlhCcGJHVnlYQ0k2V3pjc1hDSStQU0EwTGpBdU1Gd2lYU3hjSW0xaGFXNWNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDQmhiR2xoY3pJOWFHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5PMXh1WEc0Z0lISmxkSFZ5YmlCY0lqeDBaQ0JqYkdGemN6MG5ZMjlrWlNCeVpYRjFhWEpsWkNjK1BHeGhZbVZzSUdadmNqMG5YQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWRtRnNkV1ZKWkNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lKejVjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1bGMyTmhjR1VnZkh3Z0tHUmxjSFJvTUNBbUppQmtaWEIwYURBdVpYTmpZWEJsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXVZVzFsSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMnhoWW1Wc1Bqd3ZkR1ErWEZ4dVBIUmtQbHhjYmx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFYTkNiMlI1SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2c1TENCa1lYUmhMQ0F3S1N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDNSa1BseGNiangwWkQ1Y1hHNWNkRHh6ZEhKdmJtYytQSE53WVc0Z1kyeGhjM005WEZ4Y0ltMWhjbXRrYjNkdVhGeGNJajVjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1ellXNXBkR2w2WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXpZVzVwZEdsNlpTa2dmSHdnWVd4cFlYTXlLUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1WkdWelkzSnBjSFJwYjI0Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbk5oYm1sMGFYcGxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5emNHRnVQand2YzNSeWIyNW5QbHhjYmp3dmRHUStYRnh1UEhSa1Bsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbVZ6WTJGd1pTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzVsYzJOaGNHVXBJSHg4SUdGc2FXRnpNaWt1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG5CaGNtRnRWSGx3WlNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2laWE5qWVhCbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lQQzkwWkQ1Y1hHNDhkR1ErUEhOd1lXNGdZMnhoYzNNOVhGeGNJbTF2WkdWc0xYTnBaMjVoZEhWeVpWeGNYQ0krUEM5emNHRnVQand2ZEdRK1hGeHVYQ0k3WEc1OUxGd2lkWE5sUkdGMFlWd2lPblJ5ZFdWOUtUdGNiblJsYlhCc1lYUmxjMXNuY0dGeVlXMWxkR1Z5WDJOdmJuUmxiblJmZEhsd1pTZGRJRDBnZEdWdGNHeGhkR1VvZTF3aU1Wd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVR0Y2JseHVJQ0J5WlhSMWNtNGdLQ2h6ZEdGamF6RWdQU0JvWld4d1pYSnpMbVZoWTJndVkyRnNiQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DQTZJSHQ5TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVqYjI1emRXMWxjeUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpXRmphRndpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneUxDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1R0Y2JuMHNYQ0l5WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmU3dnWVd4cFlYTXlQV2hsYkhCbGNuTXVhR1ZzY0dWeVRXbHpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0lnSUR4dmNIUnBiMjRnZG1Gc2RXVTlYRnhjSWx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExHUmxjSFJvTUN4N1hDSnVZVzFsWENJNlhDSnpZVzVwZEdsNlpWd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJbHhjWENJK1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVjMkZ1YVhScGVtVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YzJGdWFYUnBlbVVwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNaR1Z3ZEdnd0xIdGNJbTVoYldWY0lqcGNJbk5oYm1sMGFYcGxYQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSmtZWFJoWENJNlpHRjBZWDBwS1NBaFBTQnVkV3hzSUQ4Z2MzUmhZMnN4SURvZ1hDSmNJaWxjYmlBZ0lDQXJJRndpUEM5dmNIUnBiMjQrWEZ4dVhDSTdYRzU5TEZ3aU5Gd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnY21WMGRYSnVJRndpSUNBOGIzQjBhVzl1SUhaaGJIVmxQVnhjWENKaGNIQnNhV05oZEdsdmJpOXFjMjl1WEZ4Y0lqNWhjSEJzYVdOaGRHbHZiaTlxYzI5dVBDOXZjSFJwYjI0K1hGeHVYQ0k3WEc1OUxGd2lZMjl0Y0dsc1pYSmNJanBiTnl4Y0lqNDlJRFF1TUM0d1hDSmRMRndpYldGcGJsd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVN3Z2FHVnNjR1Z5TENCaGJHbGhjekU5WkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQWdPaUI3ZlN3Z1lXeHBZWE15UFdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp6dGNibHh1SUNCeVpYUjFjbTRnWENJOGJHRmlaV3dnWm05eVBWeGNYQ0pjSWx4dUlDQWdJQ3NnWTI5dWRHRnBibVZ5TG1WelkyRndaVVY0Y0hKbGMzTnBiMjRvS0Nob1pXeHdaWElnUFNBb2FHVnNjR1Z5SUQwZ2FHVnNjR1Z5Y3k1d1lYSmhiV1YwWlhKRGIyNTBaVzUwVkhsd1pVbGtJSHg4SUNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzV3WVhKaGJXVjBaWEpEYjI1MFpXNTBWSGx3WlVsa0lEb2daR1Z3ZEdnd0tTa2dJVDBnYm5Wc2JDQS9JR2hsYkhCbGNpQTZJR0ZzYVdGek1pa3NLSFI1Y0dWdlppQm9aV3h3WlhJZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lHaGxiSEJsY2k1allXeHNLR0ZzYVdGek1TeDdYQ0p1WVcxbFhDSTZYQ0p3WVhKaGJXVjBaWEpEYjI1MFpXNTBWSGx3WlVsa1hDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBJRG9nYUdWc2NHVnlLU2twWEc0Z0lDQWdLeUJjSWx4Y1hDSWdaR0YwWVMxemR5MTBjbUZ1YzJ4aGRHVStVR0Z5WVcxbGRHVnlJR052Ym5SbGJuUWdkSGx3WlRvOEwyeGhZbVZzUGx4Y2JqeHpaV3hsWTNRZ2JtRnRaVDFjWEZ3aWNHRnlZVzFsZEdWeVEyOXVkR1Z1ZEZSNWNHVmNYRndpSUdsa1BWeGNYQ0pjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNBb2FHVnNjR1Z5Y3k1ellXNXBkR2w2WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXpZVzVwZEdsNlpTa2dmSHdnWVd4cFlYTXlLUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1Y0dGeVlXMWxkR1Z5UTI5dWRHVnVkRlI1Y0dWSlpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hGd2lQbHhjYmx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVkyOXVjM1Z0WlhNZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtERXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RRc0lHUmhkR0VzSURBcExGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmMyVnNaV04wUGx4Y2Jsd2lPMXh1ZlN4Y0luVnpaVVJoZEdGY0lqcDBjblZsZlNrN1hHNTBaVzF3YkdGMFpYTmJKM0J2Y0hWd0oxMGdQU0IwWlcxd2JHRjBaU2g3WENKamIyMXdhV3hsY2x3aU9sczNMRndpUGowZ05DNHdMakJjSWwwc1hDSnRZV2x1WENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYUdWc2NHVnlPMXh1WEc0Z0lISmxkSFZ5YmlCY0lqeGthWFlnWTJ4aGMzTTlYRnhjSW1Gd2FTMXdiM0IxY0Mxa2FXRnNiMmN0ZDNKaGNIQmxjbHhjWENJK1hGeHVJQ0FnSUR4a2FYWWdZMnhoYzNNOVhGeGNJbUZ3YVMxd2IzQjFjQzEwYVhSc1pWeGNYQ0krWENKY2JpQWdJQ0FySUdOdmJuUmhhVzVsY2k1bGMyTmhjR1ZGZUhCeVpYTnphVzl1S0Nnb2FHVnNjR1Z5SUQwZ0tHaGxiSEJsY2lBOUlHaGxiSEJsY25NdWRHbDBiR1VnZkh3Z0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG5ScGRHeGxJRG9nWkdWd2RHZ3dLU2tnSVQwZ2JuVnNiQ0EvSUdobGJIQmxjaUE2SUdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp5a3NLSFI1Y0dWdlppQm9aV3h3WlhJZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lHaGxiSEJsY2k1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzZTF3aWJtRnRaVndpT2x3aWRHbDBiR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrZ09pQm9aV3h3WlhJcEtTbGNiaUFnSUNBcklGd2lQQzlrYVhZK1hGeHVJQ0FnSUR4a2FYWWdZMnhoYzNNOVhGeGNJbUZ3YVMxd2IzQjFjQzFqYjI1MFpXNTBYRnhjSWo0OEwyUnBkajVjWEc0Z0lDQWdQSEFnWTJ4aGMzTTlYRnhjSW1WeWNtOXlMVzF6WjF4Y1hDSStQQzl3UGx4Y2JpQWdJQ0E4WkdsMklHTnNZWE56UFZ4Y1hDSmhjR2t0Y0c5d2RYQXRZV04wYVc5dWMxeGNYQ0krWEZ4dUlDQWdJQ0FnSUNBOFluVjBkRzl1SUdOc1lYTnpQVnhjWENKaGNHa3RjRzl3ZFhBdFkyRnVZMlZzSUdGd2FTMWlkWFIwYjI0Z1ozSmhlVnhjWENJZ2RIbHdaVDFjWEZ3aVluVjBkRzl1WEZ4Y0lqNURZVzVqWld3OEwySjFkSFJ2Ymo1Y1hHNGdJQ0FnUEM5a2FYWStYRnh1UEM5a2FYWStYRnh1UEdScGRpQmpiR0Z6Y3oxY1hGd2lZWEJwTFhCdmNIVndMV1JwWVd4dlp5MXphR0ZrYjNkY1hGd2lQand2WkdsMlBsd2lPMXh1ZlN4Y0luVnpaVVJoZEdGY0lqcDBjblZsZlNrN1hHNTBaVzF3YkdGMFpYTmJKM0psYzI5MWNtTmxKMTBnUFNCMFpXMXdiR0YwWlNoN1hDSXhYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCeVpYUjFjbTRnWENJZ09pQmNJanRjYm4wc1hDSXpYQ0k2Wm5WdVkzUnBiMjRvWTI5dWRHRnBibVZ5TEdSbGNIUm9NQ3hvWld4d1pYSnpMSEJoY25ScFlXeHpMR1JoZEdFcElIdGNiaUFnSUNCMllYSWdjM1JoWTJzeE8xeHVYRzRnSUhKbGRIVnliaUJjSWlBZ0lDQThiR2srWEZ4dUlDQWdJQ0FnUEdFZ2FISmxaajBuWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdWMyRnVhWFJwZW1VZ2ZId2dLR1JsY0hSb01DQW1KaUJrWlhCMGFEQXVjMkZ1YVhScGVtVXBJSHg4SUdobGJIQmxjbk11YUdWc2NHVnlUV2x6YzJsdVp5a3VZMkZzYkNoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OUxDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MWNtd2dPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aUp5QmtZWFJoTFhOM0xYUnlZVzV6YkdGMFpUNVNZWGM4TDJFK1hGeHVJQ0FnSUR3dmJHaytYRnh1WENJN1hHNTlMRndpWTI5dGNHbHNaWEpjSWpwYk55eGNJajQ5SURRdU1DNHdYQ0pkTEZ3aWJXRnBibHdpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dhR1ZzY0dWeUxDQnZjSFJwYjI1ekxDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd2dZV3hwWVhNeVBXaGxiSEJsY25NdWFHVnNjR1Z5VFdsemMybHVaeXdnWW5WbVptVnlJRDBnWEc0Z0lGd2lQR1JwZGlCamJHRnpjejBuYUdWaFpHbHVaeWMrWEZ4dUlDQThhREkrWEZ4dUlDQWdJRHhoSUdoeVpXWTlKeU1oTDF3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cFpDQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJbklHTnNZWE56UFZ4Y1hDSjBiMmRuYkdWRmJtUndiMmx1ZEV4cGMzUmNYRndpSUdSaGRHRXRhV1E5WEZ4Y0lsd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXBaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmNYRndpUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxuTmhibWwwYVhwbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbk5oYm1sMGFYcGxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1dVlXMWxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZZVDRnWENJN1hHNGdJSE4wWVdOck1TQTlJQ2dvYUdWc2NHVnlJRDBnS0dobGJIQmxjaUE5SUdobGJIQmxjbk11YzNWdGJXRnllU0I4ZkNBb1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YzNWdGJXRnllU0E2SUdSbGNIUm9NQ2twSUNFOUlHNTFiR3dnUHlCb1pXeHdaWElnT2lCaGJHbGhjeklwTENodmNIUnBiMjV6UFh0Y0ltNWhiV1ZjSWpwY0luTjFiVzFoY25sY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NU3dnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBMQ2gwZVhCbGIyWWdhR1ZzY0dWeUlEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ1B5Qm9aV3h3WlhJdVkyRnNiQ2hoYkdsaGN6RXNiM0IwYVc5dWN5a2dPaUJvWld4d1pYSXBLVHRjYmlBZ2FXWWdLQ0ZvWld4d1pYSnpMbk4xYlcxaGNua3BJSHNnYzNSaFkyc3hJRDBnYUdWc2NHVnljeTVpYkc5amEwaGxiSEJsY2sxcGMzTnBibWN1WTJGc2JDaGtaWEIwYURBc2MzUmhZMnN4TEc5d2RHbHZibk1wZlZ4dUlDQnBaaUFvYzNSaFkyc3hJQ0U5SUc1MWJHd3BJSHNnWW5WbVptVnlJQ3M5SUhOMFlXTnJNVHNnZlZ4dUlDQnlaWFIxY200Z1luVm1abVZ5SUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWMzVnRiV0Z5ZVNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2ljMkZ1YVhScGVtVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0pjWEc0Z0lEd3ZhREkrWEZ4dUlDQThkV3dnWTJ4aGMzTTlKMjl3ZEdsdmJuTW5QbHhjYmlBZ0lDQThiR2srWEZ4dUlDQWdJQ0FnUEdFZ2FISmxaajBuSXlFdlhDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVjMkZ1YVhScGVtVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YzJGdWFYUnBlbVVwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbGtJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpY2dhV1E5SjJWdVpIQnZhVzUwVEdsemRGUnZaMmRsY2w5Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWFXUWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aUp5QmpiR0Z6Y3oxY1hGd2lkRzluWjJ4bFJXNWtjRzlwYm5STWFYTjBYRnhjSWlCa1lYUmhMV2xrUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVhV1FnT2lCa1pYQjBhREFwTEh0Y0ltNWhiV1ZjSWpwY0luTmhibWwwYVhwbFhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklGd2lYRnhjSWlCa1lYUmhMWE4zTFhSeVlXNXpiR0YwWlQ1VGFHOTNMMGhwWkdVOEwyRStYRnh1SUNBZ0lEd3ZiR2srWEZ4dUlDQWdJRHhzYVQ1Y1hHNGdJQ0FnSUNBOFlTQm9jbVZtUFNjakp5QmpiR0Z6Y3oxY1hGd2lZMjlzYkdGd2MyVlNaWE52ZFhKalpWeGNYQ0lnWkdGMFlTMXBaRDFjWEZ3aVhDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVjMkZ1YVhScGVtVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YzJGdWFYUnBlbVVwSUh4OElHRnNhV0Z6TWlrdVkyRnNiQ2hoYkdsaGN6RXNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0xtbGtJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lseGNYQ0lnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1UrWEZ4dUlDQWdJQ0FnSUNCTWFYTjBJRTl3WlhKaGRHbHZibk5jWEc0Z0lDQWdJQ0E4TDJFK1hGeHVJQ0FnSUR3dmJHaytYRnh1SUNBZ0lEeHNhVDVjWEc0Z0lDQWdJQ0E4WVNCb2NtVm1QU2NqSnlCamJHRnpjejFjWEZ3aVpYaHdZVzVrVW1WemIzVnlZMlZjWEZ3aUlHUmhkR0V0YVdROVhGeGNJbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVwWkNBNklHUmxjSFJvTUNrc2Uxd2libUZ0WlZ3aU9sd2ljMkZ1YVhScGVtVmNJaXhjSW1oaGMyaGNJanA3ZlN4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0pjWEZ3aUlHUmhkR0V0YzNjdGRISmhibk5zWVhSbFBseGNiaUFnSUNBZ0lDQWdSWGh3WVc1a0lFOXdaWEpoZEdsdmJuTmNYRzRnSUNBZ0lDQThMMkUrWEZ4dUlDQWdJRHd2YkdrK1hGeHVYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnYUdWc2NHVnljMXRjSW1sbVhDSmRMbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzUxY213Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0ptYmx3aU9tTnZiblJoYVc1bGNpNXdjbTluY21GdEtETXNJR1JoZEdFc0lEQXBMRndpYVc1MlpYSnpaVndpT21OdmJuUmhhVzVsY2k1dWIyOXdMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lpQWdQQzkxYkQ1Y1hHNDhMMlJwZGo1Y1hHNDhkV3dnWTJ4aGMzTTlKMlZ1WkhCdmFXNTBjeWNnYVdROUoxd2lYRzRnSUNBZ0t5QW9LSE4wWVdOck1TQTlJQ2hvWld4d1pYSnpMbk5oYm1sMGFYcGxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG5OaGJtbDBhWHBsS1NCOGZDQmhiR2xoY3pJcExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXBaQ0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aWMyRnVhWFJwZW1WY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSmZaVzVrY0c5cGJuUmZiR2x6ZENjZ2MzUjViR1U5SjJScGMzQnNZWGs2Ym05dVpTYytYRnh1WEZ4dVBDOTFiRDVjWEc1Y0lqdGNibjBzWENKMWMyVkVZWFJoWENJNmRISjFaWDBwTzF4dWRHVnRjR3hoZEdWeld5ZHlaWE53YjI1elpWOWpiMjUwWlc1MFgzUjVjR1VuWFNBOUlIUmxiWEJzWVhSbEtIdGNJakZjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RTdYRzVjYmlBZ2NtVjBkWEp1SUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5Y3k1bFlXTm9MbU5oYkd3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWNISnZaSFZqWlhNZ09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbVZoWTJoY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NaXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpazdYRzU5TEZ3aU1sd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVN3Z1lXeHBZWE14UFdSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0lHRnNhV0Z6TWoxb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtYzdYRzVjYmlBZ2NtVjBkWEp1SUZ3aUlDQThiM0IwYVc5dUlIWmhiSFZsUFZ4Y1hDSmNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTV6WVc1cGRHbDZaU0I4ZkNBb1pHVndkR2d3SUNZbUlHUmxjSFJvTUM1ellXNXBkR2w2WlNrZ2ZId2dZV3hwWVhNeUtTNWpZV3hzS0dGc2FXRnpNU3hrWlhCMGFEQXNlMXdpYm1GdFpWd2lPbHdpYzJGdWFYUnBlbVZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hGd2lQbHdpWEc0Z0lDQWdLeUFvS0hOMFlXTnJNU0E5SUNob1pXeHdaWEp6TG5OaGJtbDBhWHBsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xuTmhibWwwYVhwbEtTQjhmQ0JoYkdsaGN6SXBMbU5oYkd3b1lXeHBZWE14TEdSbGNIUm9NQ3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTa2dJVDBnYm5Wc2JDQS9JSE4wWVdOck1TQTZJRndpWENJcFhHNGdJQ0FnS3lCY0lqd3ZiM0IwYVc5dVBseGNibHdpTzF4dWZTeGNJalJjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCY0lpQWdQRzl3ZEdsdmJpQjJZV3gxWlQxY1hGd2lZWEJ3YkdsallYUnBiMjR2YW5OdmJseGNYQ0krWVhCd2JHbGpZWFJwYjI0dmFuTnZiand2YjNCMGFXOXVQbHhjYmx3aU8xeHVmU3hjSW1OdmJYQnBiR1Z5WENJNld6Y3NYQ0krUFNBMExqQXVNRndpWFN4Y0ltMWhhVzVjSWpwbWRXNWpkR2x2YmloamIyNTBZV2x1WlhJc1pHVndkR2d3TEdobGJIQmxjbk1zY0dGeWRHbGhiSE1zWkdGMFlTa2dlMXh1SUNBZ0lIWmhjaUJ6ZEdGamF6RXNJR2hsYkhCbGNpd2dZV3hwWVhNeFBXUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3SURvZ2UzMHNJR0ZzYVdGek1qMW9aV3h3WlhKekxtaGxiSEJsY2sxcGMzTnBibWNzSUdGc2FXRnpNejFjSW1aMWJtTjBhVzl1WENJc0lHRnNhV0Z6TkQxamIyNTBZV2x1WlhJdVpYTmpZWEJsUlhod2NtVnpjMmx2Ymp0Y2JseHVJQ0J5WlhSMWNtNGdYQ0k4YkdGaVpXd2daR0YwWVMxemR5MTBjbUZ1YzJ4aGRHVWdabTl5UFZ4Y1hDSmNJbHh1SUNBZ0lDc2dZV3hwWVhNMEtDZ29hR1ZzY0dWeUlEMGdLR2hsYkhCbGNpQTlJR2hsYkhCbGNuTXVjbVZ6Y0c5dWMyVkRiMjUwWlc1MFZIbHdaVWxrSUh4OElDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1eVpYTndiMjV6WlVOdmJuUmxiblJVZVhCbFNXUWdPaUJrWlhCMGFEQXBLU0FoUFNCdWRXeHNJRDhnYUdWc2NHVnlJRG9nWVd4cFlYTXlLU3dvZEhsd1pXOW1JR2hsYkhCbGNpQTlQVDBnWVd4cFlYTXpJRDhnYUdWc2NHVnlMbU5oYkd3b1lXeHBZWE14TEh0Y0ltNWhiV1ZjSWpwY0luSmxjM0J2Ym5ObFEyOXVkR1Z1ZEZSNWNHVkpaRndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NBNklHaGxiSEJsY2lrcEtWeHVJQ0FnSUNzZ1hDSmNYRndpUGxKbGMzQnZibk5sSUVOdmJuUmxiblFnVkhsd1pUd3ZiR0ZpWld3K1hGeHVQSE5sYkdWamRDQnVZVzFsUFZ4Y1hDSnlaWE53YjI1elpVTnZiblJsYm5SVWVYQmxYRnhjSWlCcFpEMWNYRndpWENKY2JpQWdJQ0FySUdGc2FXRnpOQ2dvS0dobGJIQmxjaUE5SUNob1pXeHdaWElnUFNCb1pXeHdaWEp6TG5KbGMzQnZibk5sUTI5dWRHVnVkRlI1Y0dWSlpDQjhmQ0FvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjbVZ6Y0c5dWMyVkRiMjUwWlc1MFZIbHdaVWxrSURvZ1pHVndkR2d3S1NrZ0lUMGdiblZzYkNBL0lHaGxiSEJsY2lBNklHRnNhV0Z6TWlrc0tIUjVjR1Z2WmlCb1pXeHdaWElnUFQwOUlHRnNhV0Z6TXlBL0lHaGxiSEJsY2k1allXeHNLR0ZzYVdGek1TeDdYQ0p1WVcxbFhDSTZYQ0p5WlhOd2IyNXpaVU52Ym5SbGJuUlVlWEJsU1dSY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa2dPaUJvWld4d1pYSXBLU2xjYmlBZ0lDQXJJRndpWEZ4Y0lqNWNYRzVjSWx4dUlDQWdJQ3NnS0NoemRHRmphekVnUFNCb1pXeHdaWEp6VzF3aWFXWmNJbDB1WTJGc2JDaGhiR2xoY3pFc0tHUmxjSFJvTUNBaFBTQnVkV3hzSUQ4Z1pHVndkR2d3TG5CeWIyUjFZMlZ6SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNneExDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2cwTENCa1lYUmhMQ0F3S1N4Y0ltUmhkR0ZjSWpwa1lYUmhmU2twSUNFOUlHNTFiR3dnUHlCemRHRmphekVnT2lCY0lsd2lLVnh1SUNBZ0lDc2dYQ0k4TDNObGJHVmpkRDVjWEc1Y0lqdGNibjBzWENKMWMyVkVZWFJoWENJNmRISjFaWDBwTzF4dWRHVnRjR3hoZEdWeld5ZHphV2R1WVhSMWNtVW5YU0E5SUhSbGJYQnNZWFJsS0h0Y0lqRmNJanBtZFc1amRHbHZiaWhqYjI1MFlXbHVaWElzWkdWd2RHZ3dMR2hsYkhCbGNuTXNjR0Z5ZEdsaGJITXNaR0YwWVNrZ2UxeHVJQ0FnSUhaaGNpQnpkR0ZqYXpFc0lHRnNhV0Z6TVQxa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQ0E2SUh0OU8xeHVYRzRnSUhKbGRIVnliaUJjSWx4Y2JqeGthWFkrWEZ4dVBIVnNJR05zWVhOelBWeGNYQ0p6YVdkdVlYUjFjbVV0Ym1GMlhGeGNJajVjWEc0Z0lEeHNhVDQ4WVNCamJHRnpjejFjWEZ3aVpHVnpZM0pwY0hScGIyNHRiR2x1YTF4Y1hDSWdhSEpsWmoxY1hGd2lJMXhjWENJZ1pHRjBZUzF6ZHkxMGNtRnVjMnhoZEdVK1RXOWtaV3c4TDJFK1BDOXNhVDVjWEc0Z0lEeHNhVDQ4WVNCamJHRnpjejFjWEZ3aWMyNXBjSEJsZEMxc2FXNXJYRnhjSWlCb2NtVm1QVnhjWENJalhGeGNJaUJrWVhSaExYTjNMWFJ5WVc1emJHRjBaVDVGZUdGdGNHeGxJRlpoYkhWbFBDOWhQand2YkdrK1hGeHVQQzkxYkQ1Y1hHNDhaR2wyUGx4Y2JseGNianhrYVhZZ1kyeGhjM005WEZ4Y0luTnBaMjVoZEhWeVpTMWpiMjUwWVdsdVpYSmNYRndpUGx4Y2JpQWdQR1JwZGlCamJHRnpjejFjWEZ3aVpHVnpZM0pwY0hScGIyNWNYRndpUGx4Y2JpQWdJQ0FnSUZ3aVhHNGdJQ0FnS3lCamIyNTBZV2x1WlhJdVpYTmpZWEJsUlhod2NtVnpjMmx2Ymlnb2FHVnNjR1Z5Y3k1ellXNXBkR2w2WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNXpZVzVwZEdsNlpTa2dmSHdnYUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bktTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjMmxuYm1GMGRYSmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKellXNXBkR2w2WlZ3aUxGd2lhR0Z6YUZ3aU9udDlMRndpWkdGMFlWd2lPbVJoZEdGOUtTbGNiaUFnSUNBcklGd2lYRnh1SUNBOEwyUnBkajVjWEc1Y1hHNGdJRHhrYVhZZ1kyeGhjM005WEZ4Y0luTnVhWEJ3WlhSY1hGd2lQbHhjYmx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlHaGxiSEJsY25OYlhDSnBabHdpWFM1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWMyRnRjR3hsU2xOUFRpQTZJR1JsY0hSb01Da3NlMXdpYm1GdFpWd2lPbHdpYVdaY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1adVhDSTZZMjl1ZEdGcGJtVnlMbkJ5YjJkeVlXMG9NaXdnWkdGMFlTd2dNQ2tzWENKcGJuWmxjbk5sWENJNlkyOXVkR0ZwYm1WeUxtNXZiM0FzWENKa1lYUmhYQ0k2WkdGMFlYMHBLU0FoUFNCdWRXeHNJRDhnYzNSaFkyc3hJRG9nWENKY0lpbGNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdhR1ZzY0dWeWMxdGNJbWxtWENKZExtTmhiR3dvWVd4cFlYTXhMQ2hrWlhCMGFEQWdJVDBnYm5Wc2JDQS9JR1JsY0hSb01DNXpZVzF3YkdWWVRVd2dPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1sbVhDSXNYQ0pvWVhOb1hDSTZlMzBzWENKbWJsd2lPbU52Ym5SaGFXNWxjaTV3Y205bmNtRnRLRFVzSUdSaGRHRXNJREFwTEZ3aWFXNTJaWEp6WlZ3aU9tTnZiblJoYVc1bGNpNXViMjl3TEZ3aVpHRjBZVndpT21SaGRHRjlLU2tnSVQwZ2JuVnNiQ0EvSUhOMFlXTnJNU0E2SUZ3aVhDSXBYRzRnSUNBZ0t5QmNJaUFnUEM5a2FYWStYRnh1UEM5a2FYWStYRnh1WENJN1hHNTlMRndpTWx3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUhOMFlXTnJNU3dnWVd4cFlYTXhQV1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzA3WEc1Y2JpQWdjbVYwZFhKdUlGd2lJQ0FnSUNBZ1BHUnBkaUJqYkdGemN6MWNYRndpYzI1cGNIQmxkRjlxYzI5dVhGeGNJajVjWEc0Z0lDQWdJQ0FnSUR4d2NtVStQR052WkdVK1hDSmNiaUFnSUNBcklDZ29jM1JoWTJzeElEMGdLR2hsYkhCbGNuTXVaWE5qWVhCbElIeDhJQ2hrWlhCMGFEQWdKaVlnWkdWd2RHZ3dMbVZ6WTJGd1pTa2dmSHdnYUdWc2NHVnljeTVvWld4d1pYSk5hWE56YVc1bktTNWpZV3hzS0dGc2FXRnpNU3dvWkdWd2RHZ3dJQ0U5SUc1MWJHd2dQeUJrWlhCMGFEQXVjMkZ0Y0d4bFNsTlBUaUE2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOWpiMlJsUGp3dmNISmxQbHhjYmlBZ0lDQWdJQ0FnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGMxQmhjbUZ0SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNnekxDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hHNGdJQ0FnSUNBOEwyUnBkajVjWEc1Y0lqdGNibjBzWENJelhDSTZablZ1WTNScGIyNG9ZMjl1ZEdGcGJtVnlMR1JsY0hSb01DeG9aV3h3WlhKekxIQmhjblJwWVd4ekxHUmhkR0VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0k4YzIxaGJHd2dZMnhoYzNNOVhGeGNJbTV2ZEdsalpWeGNYQ0lnWkdGMFlTMXpkeTEwY21GdWMyeGhkR1UrUEM5emJXRnNiRDVjSWp0Y2JuMHNYQ0kxWENJNlpuVnVZM1JwYjI0b1kyOXVkR0ZwYm1WeUxHUmxjSFJvTUN4b1pXeHdaWEp6TEhCaGNuUnBZV3h6TEdSaGRHRXBJSHRjYmlBZ0lDQjJZWElnYzNSaFkyc3hMQ0JoYkdsaGN6RTlaR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBZ09pQjdmVHRjYmx4dUlDQnlaWFIxY200Z1hDSWdJQ0FnUEdScGRpQmpiR0Z6Y3oxY1hGd2ljMjVwY0hCbGRGOTRiV3hjWEZ3aVBseGNiaUFnSUNBZ0lEeHdjbVUrUEdOdlpHVStYQ0pjYmlBZ0lDQXJJQ2dvYzNSaFkyc3hJRDBnS0dobGJIQmxjbk11WlhOallYQmxJSHg4SUNoa1pYQjBhREFnSmlZZ1pHVndkR2d3TG1WelkyRndaU2tnZkh3Z2FHVnNjR1Z5Y3k1b1pXeHdaWEpOYVhOemFXNW5LUzVqWVd4c0tHRnNhV0Z6TVN3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREF1YzJGdGNHeGxXRTFNSURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSmxjMk5oY0dWY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtWeHVJQ0FnSUNzZ1hDSThMMk52WkdVK1BDOXdjbVUrWEZ4dUlDQWdJQ0FnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5YzF0Y0ltbG1YQ0pkTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1cGMxQmhjbUZ0SURvZ1pHVndkR2d3S1N4N1hDSnVZVzFsWENJNlhDSnBabHdpTEZ3aWFHRnphRndpT250OUxGd2labTVjSWpwamIyNTBZV2x1WlhJdWNISnZaM0poYlNnekxDQmtZWFJoTENBd0tTeGNJbWx1ZG1WeWMyVmNJanBqYjI1MFlXbHVaWEl1Ym05dmNDeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENKY1hHNGdJQ0FnUEM5a2FYWStYRnh1WENJN1hHNTlMRndpTjF3aU9tWjFibU4wYVc5dUtHTnZiblJoYVc1bGNpeGtaWEIwYURBc2FHVnNjR1Z5Y3l4d1lYSjBhV0ZzY3l4a1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUhOMFlXTnJNVHRjYmx4dUlDQnlaWFIxY200Z1hDSWdJQ0FnWENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ0tHaGxiSEJsY25NdVpYTmpZWEJsSUh4OElDaGtaWEIwYURBZ0ppWWdaR1Z3ZEdnd0xtVnpZMkZ3WlNrZ2ZId2dhR1ZzY0dWeWN5NW9aV3h3WlhKTmFYTnphVzVuS1M1allXeHNLR1JsY0hSb01DQWhQU0J1ZFd4c0lEOGdaR1Z3ZEdnd0lEb2dlMzBzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbk5wWjI1aGRIVnlaU0E2SUdSbGNIUm9NQ2tzZTF3aWJtRnRaVndpT2x3aVpYTmpZWEJsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVhGeHVYQ0k3WEc1OUxGd2lZMjl0Y0dsc1pYSmNJanBiTnl4Y0lqNDlJRFF1TUM0d1hDSmRMRndpYldGcGJsd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVR0Y2JseHVJQ0J5WlhSMWNtNGdLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVwWmtOdmJtUWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1YVdaRGIyNWtLU0I4ZkNCb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtY3BMbU5oYkd3b1pHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdWMyRnRjR3hsU2xOUFRpQTZJR1JsY0hSb01Da3NYQ0o4ZkZ3aUxDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1ellXMXdiR1ZZVFV3Z09pQmtaWEIwYURBcExIdGNJbTVoYldWY0lqcGNJbWxtUTI5dVpGd2lMRndpYUdGemFGd2lPbnQ5TEZ3aVptNWNJanBqYjI1MFlXbHVaWEl1Y0hKdlozSmhiU2d4TENCa1lYUmhMQ0F3S1N4Y0ltbHVkbVZ5YzJWY0lqcGpiMjUwWVdsdVpYSXVjSEp2WjNKaGJTZzNMQ0JrWVhSaExDQXdLU3hjSW1SaGRHRmNJanBrWVhSaGZTa3BJQ0U5SUc1MWJHd2dQeUJ6ZEdGamF6RWdPaUJjSWx3aUtUdGNibjBzWENKMWMyVkVZWFJoWENJNmRISjFaWDBwTzF4dWRHVnRjR3hoZEdWeld5ZHpkR0YwZFhOZlkyOWtaU2RkSUQwZ2RHVnRjR3hoZEdVb2Uxd2lNVndpT21aMWJtTjBhVzl1S0dOdmJuUmhhVzVsY2l4a1pYQjBhREFzYUdWc2NHVnljeXh3WVhKMGFXRnNjeXhrWVhSaEtTQjdYRzRnSUNBZ2RtRnlJSE4wWVdOck1Td2dhR1ZzY0dWeUxDQmhiR2xoY3pFOVpHVndkR2d3SUNFOUlHNTFiR3dnUHlCa1pYQjBhREFnT2lCN2ZTd2dZV3hwWVhNeVBXaGxiSEJsY25NdWFHVnNjR1Z5VFdsemMybHVaenRjYmx4dUlDQnlaWFIxY200Z1hDSWdJQ0FnSUNBOGRISStYRnh1SUNBZ0lDQWdJQ0E4ZEdRK1hDSmNiaUFnSUNBcklHTnZiblJoYVc1bGNpNWxjMk5oY0dWRmVIQnlaWE56YVc5dUtDZ29hR1ZzY0dWeUlEMGdLR2hsYkhCbGNpQTlJR2hsYkhCbGNuTXVhMlY1SUh4OElDaGtZWFJoSUNZbUlHUmhkR0V1YTJWNUtTa2dJVDBnYm5Wc2JDQS9JR2hsYkhCbGNpQTZJR0ZzYVdGek1pa3NLSFI1Y0dWdlppQm9aV3h3WlhJZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lHaGxiSEJsY2k1allXeHNLR0ZzYVdGek1TeDdYQ0p1WVcxbFhDSTZYQ0pyWlhsY0lpeGNJbWhoYzJoY0lqcDdmU3hjSW1SaGRHRmNJanBrWVhSaGZTa2dPaUJvWld4d1pYSXBLU2xjYmlBZ0lDQXJJRndpUEM5MFpENWNYRzRnSUNBZ0lDQWdJRHgwWkQ1Y0lseHVJQ0FnSUNzZ0tDaHpkR0ZqYXpFZ1BTQW9hR1ZzY0dWeWN5NXpZVzVwZEdsNlpTQjhmQ0FvWkdWd2RHZ3dJQ1ltSUdSbGNIUm9NQzV6WVc1cGRHbDZaU2tnZkh3Z1lXeHBZWE15S1M1allXeHNLR0ZzYVdGek1Td29aR1Z3ZEdnd0lDRTlJRzUxYkd3Z1B5QmtaWEIwYURBdVpHVnpZM0pwY0hScGIyNGdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW5OaGJtbDBhWHBsWENJc1hDSm9ZWE5vWENJNmUzMHNYQ0prWVhSaFhDSTZaR0YwWVgwcEtTQWhQU0J1ZFd4c0lEOGdjM1JoWTJzeElEb2dYQ0pjSWlsY2JpQWdJQ0FySUZ3aVBDOTBaRDVjWEc0Z0lDQWdJQ0FnSUR4MFpENWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1MGVYQmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzUmtQbHhjYmlBZ0lDQWdJRHd2ZEhJK1hGeHVYQ0k3WEc1OUxGd2lZMjl0Y0dsc1pYSmNJanBiTnl4Y0lqNDlJRFF1TUM0d1hDSmRMRndpYldGcGJsd2lPbVoxYm1OMGFXOXVLR052Ym5SaGFXNWxjaXhrWlhCMGFEQXNhR1ZzY0dWeWN5eHdZWEowYVdGc2N5eGtZWFJoS1NCN1hHNGdJQ0FnZG1GeUlITjBZV05yTVN3Z1lXeHBZWE14UFdSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dJRG9nZTMwc0lHRnNhV0Z6TWoxb1pXeHdaWEp6TG1obGJIQmxjazFwYzNOcGJtYzdYRzVjYmlBZ2NtVjBkWEp1SUZ3aVBIUmtJSGRwWkhSb1BTY3hOU1VuSUdOc1lYTnpQU2RqYjJSbEp6NWNJbHh1SUNBZ0lDc2dLQ2h6ZEdGamF6RWdQU0FvYUdWc2NHVnljeTVsYzJOaGNHVWdmSHdnS0dSbGNIUm9NQ0FtSmlCa1pYQjBhREF1WlhOallYQmxLU0I4ZkNCaGJHbGhjeklwTG1OaGJHd29ZV3hwWVhNeExDaGtaWEIwYURBZ0lUMGdiblZzYkNBL0lHUmxjSFJvTUM1amIyUmxJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbGMyTmhjR1ZjSWl4Y0ltaGhjMmhjSWpwN2ZTeGNJbVJoZEdGY0lqcGtZWFJoZlNrcElDRTlJRzUxYkd3Z1B5QnpkR0ZqYXpFZ09pQmNJbHdpS1Z4dUlDQWdJQ3NnWENJOEwzUmtQbHhjYmp4MFpDQmpiR0Z6Y3oxY1hGd2liV0Z5YTJSdmQyNWNYRndpUGx3aVhHNGdJQ0FnS3lBb0tITjBZV05yTVNBOUlDaG9aV3h3WlhKekxtVnpZMkZ3WlNCOGZDQW9aR1Z3ZEdnd0lDWW1JR1JsY0hSb01DNWxjMk5oY0dVcElIeDhJR0ZzYVdGek1pa3VZMkZzYkNoaGJHbGhjekVzS0dSbGNIUm9NQ0FoUFNCdWRXeHNJRDhnWkdWd2RHZ3dMbTFsYzNOaFoyVWdPaUJrWlhCMGFEQXBMSHRjSW01aGJXVmNJanBjSW1WelkyRndaVndpTEZ3aWFHRnphRndpT250OUxGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWp3dmRHUStYRnh1UEhSa0lIZHBaSFJvUFNjMU1DVW5Qanh6Y0dGdUlHTnNZWE56UFZ4Y1hDSnRiMlJsYkMxemFXZHVZWFIxY21WY1hGd2lJQzgrUEM5MFpENWNYRzQ4ZEdRZ1kyeGhjM005WEZ4Y0ltaGxZV1JsY25OY1hGd2lQbHhjYmlBZ1BIUmhZbXhsUGx4Y2JpQWdJQ0E4ZEdKdlpIaytYRnh1WENKY2JpQWdJQ0FySUNnb2MzUmhZMnN4SUQwZ2FHVnNjR1Z5Y3k1bFlXTm9MbU5oYkd3b1lXeHBZWE14TENoa1pYQjBhREFnSVQwZ2JuVnNiQ0EvSUdSbGNIUm9NQzVvWldGa1pYSnpJRG9nWkdWd2RHZ3dLU3g3WENKdVlXMWxYQ0k2WENKbFlXTm9YQ0lzWENKb1lYTm9YQ0k2ZTMwc1hDSm1ibHdpT21OdmJuUmhhVzVsY2k1d2NtOW5jbUZ0S0RFc0lHUmhkR0VzSURBcExGd2lhVzUyWlhKelpWd2lPbU52Ym5SaGFXNWxjaTV1YjI5d0xGd2laR0YwWVZ3aU9tUmhkR0Y5S1NrZ0lUMGdiblZzYkNBL0lITjBZV05yTVNBNklGd2lYQ0lwWEc0Z0lDQWdLeUJjSWlBZ0lDQThMM1JpYjJSNVBseGNiaUFnUEM5MFlXSnNaVDVjWEc0OEwzUmtQbHdpTzF4dWZTeGNJblZ6WlVSaGRHRmNJanAwY25WbGZTazdYRzU5S1NncE8zMGdYRzRnTHlvZ2FuTm9hVzUwSUdsbmJtOXlaVHBsYm1RZ0tpOGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNibHh1SkNobWRXNWpkR2x2YmlncElIdGNibHh1WEhRdkx5QklaV3h3WlhJZ1puVnVZM1JwYjI0Z1ptOXlJSFpsY25ScFkyRnNiSGtnWVd4cFoyNXBibWNnUkU5TklHVnNaVzFsYm5SelhHNWNkQzh2SUdoMGRIQTZMeTkzZDNjdWMyVnZaR1Z1ZG1WeUxtTnZiUzl6YVcxd2JHVXRkbVZ5ZEdsallXd3RZV3hwWjI0dGNHeDFaMmx1TFdadmNpMXFjWFZsY25rdlhHNWNkQ1F1Wm00dWRrRnNhV2R1SUQwZ1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MGNtVjBkWEp1SUhSb2FYTXVaV0ZqYUNobWRXNWpkR2x2YmlncGUxeHVYSFJjZEZ4MGRtRnlJR0ZvSUQwZ0pDaDBhR2x6S1M1b1pXbG5hSFFvS1R0Y2JseDBYSFJjZEhaaGNpQndhQ0E5SUNRb2RHaHBjeWt1Y0dGeVpXNTBLQ2t1YUdWcFoyaDBLQ2s3WEc1Y2RGeDBYSFIyWVhJZ2JXZ2dQU0FvY0dnZ0xTQmhhQ2tnTHlBeU8xeHVYSFJjZEZ4MEpDaDBhR2x6S1M1amMzTW9KMjFoY21kcGJpMTBiM0FuTENCdGFDazdYRzVjZEZ4MGZTazdYRzVjZEgwN1hHNWNibHgwSkM1bWJpNXpkSEpsZEdOb1JtOXliWFJoYzNScFkwbHVjSFYwVjJsa2RHaFViMUJoY21WdWRDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dVhIUmNkSEpsZEhWeWJpQjBhR2x6TG1WaFkyZ29ablZ1WTNScGIyNG9LWHRjYmx4MFhIUmNkSFpoY2lCd1gzZHBaSFJvSUQwZ0pDaDBhR2x6S1M1amJHOXpaWE4wS0Z3aVptOXliVndpS1M1cGJtNWxjbGRwWkhSb0tDazdYRzVjZEZ4MFhIUjJZWElnY0Y5d1lXUmthVzVuSUQwZ2NHRnljMlZKYm5Rb0pDaDBhR2x6S1M1amJHOXpaWE4wS0Z3aVptOXliVndpS1M1amMzTW9KM0JoWkdScGJtY3RiR1ZtZENjcElDd3hNQ2tnS3lCd1lYSnpaVWx1ZENna0tIUm9hWE1wTG1Oc2IzTmxjM1FvSjJadmNtMG5LUzVqYzNNb0ozQmhaR1JwYm1jdGNtbG5hSFFuS1N3Z01UQXBPMXh1WEhSY2RGeDBkbUZ5SUhSb2FYTmZjR0ZrWkdsdVp5QTlJSEJoY25ObFNXNTBLQ1FvZEdocGN5a3VZM056S0Nkd1lXUmthVzVuTFd4bFpuUW5LU3dnTVRBcElDc2djR0Z5YzJWSmJuUW9KQ2gwYUdsektTNWpjM01vSjNCaFpHUnBibWN0Y21sbmFIUW5LU3dnTVRBcE8xeHVYSFJjZEZ4MEpDaDBhR2x6S1M1amMzTW9KM2RwWkhSb0p5d2djRjkzYVdSMGFDQXRJSEJmY0dGa1pHbHVaeUF0SUhSb2FYTmZjR0ZrWkdsdVp5azdYRzVjZEZ4MGZTazdYRzVjZEgwN1hHNWNibHgwSkNnblptOXliUzVtYjNKdGRHRnpkR2xqSUd4cExuTjBjbWx1WnlCcGJuQjFkQ3dnWm05eWJTNW1iM0p0ZEdGemRHbGpJSFJsZUhSaGNtVmhKeWt1YzNSeVpYUmphRVp2Y20xMFlYTjBhV05KYm5CMWRGZHBaSFJvVkc5UVlYSmxiblFvS1R0Y2JseHVYSFF2THlCV1pYSjBhV05oYkd4NUlHTmxiblJsY2lCMGFHVnpaU0J3WVhKaFozSmhjR2h6WEc1Y2RDOHZJRkJoY21WdWRDQnRZWGtnYm1WbFpDQmhJRzFwYmkxb1pXbG5hSFFnWm05eUlIUm9hWE1nZEc4Z2QyOXlheTR1WEc1Y2RDUW9KM1ZzTG1SdmQyNXdiR0Y1WldRZ2JHa2daR2wyTG1OdmJuUmxiblFnY0NjcExuWkJiR2xuYmlncE8xeHVYRzVjZEM4dklGZG9aVzRnWVNCellXNWtZbTk0SUdadmNtMGdhWE1nYzNWaWJXbDBkR1ZrTGk1Y2JseDBKQ2hjSW1admNtMHVjMkZ1WkdKdmVGd2lLUzV6ZFdKdGFYUW9ablZ1WTNScGIyNG9LWHRjYmx4dVhIUmNkSFpoY2lCbGNuSnZjbDltY21WbElEMGdkSEoxWlR0Y2JseHVYSFJjZEM4dklFTjVZMnhsSUhSb2NtOTFaMmdnZEdobElHWnZjbTF6SUhKbGNYVnBjbVZrSUdsdWNIVjBjMXh1SUZ4MFhIUWtLSFJvYVhNcExtWnBibVFvWENKcGJuQjFkQzV5WlhGMWFYSmxaRndpS1M1bFlXTm9LR1oxYm1OMGFXOXVLQ2tnZTF4dVhHNWNkRngwWEhRdkx5QlNaVzF2ZG1VZ1lXNTVJR1Y0YVhOMGFXNW5JR1Z5Y205eUlITjBlV3hsY3lCbWNtOXRJSFJvWlNCcGJuQjFkRnh1WEhSY2RGeDBKQ2gwYUdsektTNXlaVzF2ZG1WRGJHRnpjeWduWlhKeWIzSW5LVHRjYmx4dVhIUmNkRngwTHk4Z1ZHRmpheUIwYUdVZ1pYSnliM0lnYzNSNWJHVWdiMjRnYVdZZ2RHaGxJR2x1Y0hWMElHbHpJR1Z0Y0hSNUxpNWNibHgwWEhSY2RHbG1JQ2drS0hSb2FYTXBMblpoYkNncElEMDlQU0FuSnlrZ2UxeHVYSFJjZEZ4MFhIUWtLSFJvYVhNcExtRmtaRU5zWVhOektDZGxjbkp2Y2ljcE8xeHVYSFJjZEZ4MFhIUWtLSFJvYVhNcExuZHBaMmRzWlNncE8xeHVYSFJjZEZ4MFhIUmxjbkp2Y2w5bWNtVmxJRDBnWm1Gc2MyVTdYRzVjZEZ4MFhIUjlYRzVjYmx4MFhIUjlLVHRjYmx4dVhIUmNkSEpsZEhWeWJpQmxjbkp2Y2w5bWNtVmxPMXh1WEhSOUtUdGNibHh1ZlNrN1hHNWNibVoxYm1OMGFXOXVJR05zYVhCd2VVTnZjR2xsWkVOaGJHeGlZV05yS0NrZ2UxeHVJQ0FrS0NjallYQnBYMnRsZVY5amIzQnBaV1FuS1M1bVlXUmxTVzRvS1M1a1pXeGhlU2d4TURBd0tTNW1ZV1JsVDNWMEtDazdYRzVjYmlBZ0x5OGdkbUZ5SUdJZ1BTQWtLRndpSTJOc2FYQndlVjkwYjI5c2RHbHdYMXdpSUNzZ1lTazdYRzRnSUM4dklHSXViR1Z1WjNSb0lDRTlJREFnSmlZZ0tHSXVZWFIwY2loY0luUnBkR3hsWENJc0lGd2lZMjl3YVdWa0lWd2lLUzUwY21sbloyVnlLRndpZEdsd2Mza3VjbVZzYjJGa1hDSXBMQ0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1S0NrZ2UxeHVJQ0F2THlBZ0lHSXVZWFIwY2loY0luUnBkR3hsWENJc0lGd2lZMjl3ZVNCMGJ5QmpiR2x3WW05aGNtUmNJaWxjYmlBZ0x5OGdmU3hjYmlBZ0x5OGdOVEF3S1NsY2JuMWNibHh1THk4Z1RHOW5aMmx1WnlCbWRXNWpkR2x2YmlCMGFHRjBJR0ZqWTI5MWJuUnpJR1p2Y2lCaWNtOTNjMlZ5Y3lCMGFHRjBJR1J2YmlkMElHaGhkbVVnZDJsdVpHOTNMbU52Ym5OdmJHVmNibVoxYm1OMGFXOXVJR3h2WnlncGUxeHVJQ0JzYjJjdWFHbHpkRzl5ZVNBOUlHeHZaeTVvYVhOMGIzSjVJSHg4SUZ0ZE8xeHVJQ0JzYjJjdWFHbHpkRzl5ZVM1d2RYTm9LR0Z5WjNWdFpXNTBjeWs3WEc0Z0lHbG1LSFJvYVhNdVkyOXVjMjlzWlNsN1hHNGdJQ0FnWTI5dWMyOXNaUzVzYjJjb0lFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHRnlaM1Z0Wlc1MGN5bGJNRjBnS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZMeUJJWVc1a2JHVWdZbkp2ZDNObGNuTWdkR2hoZENCa2J5QmpiMjV6YjJ4bElHbHVZMjl5Y21WamRHeDVJQ2hKUlRrZ1lXNWtJR0psYkc5M0xDQnpaV1VnYUhSMGNEb3ZMM04wWVdOcmIzWmxjbVpzYjNjdVkyOXRMMkV2TlRVek9UTTNPQzgzT1RFektWeHVhV1lnS0VaMWJtTjBhVzl1TG5CeWIzUnZkSGx3WlM1aWFXNWtJQ1ltSUdOdmJuTnZiR1VnSmlZZ2RIbHdaVzltSUdOdmJuTnZiR1V1Ykc5bklEMDlQU0JjSW05aWFtVmpkRndpS1NCN1hHNGdJQ0FnVzF4dUlDQWdJQ0FnWENKc2IyZGNJaXhjSW1sdVptOWNJaXhjSW5kaGNtNWNJaXhjSW1WeWNtOXlYQ0lzWENKaGMzTmxjblJjSWl4Y0ltUnBjbHdpTEZ3aVkyeGxZWEpjSWl4Y0luQnliMlpwYkdWY0lpeGNJbkJ5YjJacGJHVkZibVJjSWx4dUlDQWdJRjB1Wm05eVJXRmphQ2htZFc1amRHbHZiaUFvYldWMGFHOWtLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1ZiYldWMGFHOWtYU0E5SUhSb2FYTXVZbWx1WkNoamIyNXpiMnhsVzIxbGRHaHZaRjBzSUdOdmJuTnZiR1VwTzF4dUlDQWdJSDBzSUVaMWJtTjBhVzl1TG5CeWIzUnZkSGx3WlM1allXeHNLVHRjYm4xY2JseHVkMmx1Wkc5M0xrUnZZM01nUFNCN1hHNWNibHgwYzJobFltRnVaem9nWm5WdVkzUnBiMjRvS1NCN1hHNWNibHgwWEhRdkx5QkpaaUJ6YUdWaVlXNW5JR2hoY3lCaGJpQnZjR1Z5WVhScGIyNGdibWxqYTI1aGJXVWdhVzRnYVhRdUxseHVYSFJjZEM4dklHVXVaeTRnTDJSdlkzTXZJeUV2ZDI5eVpITXZaMlYwWDNObFlYSmphRnh1WEhSY2RIWmhjaUJtY21GbmJXVnVkSE1nUFNBa0xuQmhjbUZ0TG1aeVlXZHRaVzUwS0NrdWMzQnNhWFFvSnk4bktUdGNibHgwWEhSbWNtRm5iV1Z1ZEhNdWMyaHBablFvS1RzZ0x5OGdaMlYwSUhKcFpDQnZaaUIwYUdVZ1ltRnVaMXh1WEc1Y2RGeDBjM2RwZEdOb0lDaG1jbUZuYldWdWRITXViR1Z1WjNSb0tTQjdYRzVjZEZ4MFhIUmpZWE5sSURFNlhHNGdJQ0FnSUNBZ0lHbG1JQ2htY21GbmJXVnVkSE5iTUYwdWJHVnVaM1JvSUQ0Z01Da2dleUF2THlCd2NtVjJaVzUwSUcxaGRHTm9hVzVuSUZ3aUl5OWNJbHh1SUNBZ0lDQWdJQ0FnSUM4dklFVjRjR0Z1WkNCaGJHd2diM0JsY21GMGFXOXVjeUJtYjNJZ2RHaGxJSEpsYzI5MWNtTmxJR0Z1WkNCelkzSnZiR3dnZEc4Z2FYUmNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ1pHOXRYMmxrSUQwZ0ozSmxjMjkxY21ObFh5Y2dLeUJtY21GbmJXVnVkSE5iTUYwN1hHNWNiaUFnSUNBZ0lDQWdJQ0JFYjJOekxtVjRjR0Z1WkVWdVpIQnZhVzUwVEdsemRFWnZjbEpsYzI5MWNtTmxLR1p5WVdkdFpXNTBjMXN3WFNrN1hHNGdJQ0FnSUNBZ0lDQWdKQ2hjSWlOY0lpdGtiMjFmYVdRcExuTnNhV1JsZEc4b2UyaHBaMmhzYVdkb2REb2dabUZzYzJWOUtUdGNiaUFnSUNBZ0lDQWdmVnh1WEhSY2RGeDBYSFJpY21WaGF6dGNibHgwWEhSY2RHTmhjMlVnTWpwY2JseDBYSFJjZEZ4MEx5OGdVbVZtWlhJZ2RHOGdkR2hsSUdWdVpIQnZhVzUwSUVSUFRTQmxiR1Z0Wlc1MExDQmxMbWN1SUNOM2IzSmtjMTluWlhSZmMyVmhjbU5vWEc1Y2JpQWdJQ0FnSUNBZ0x5OGdSWGh3WVc1a0lGSmxjMjkxY21ObFhHNGdJQ0FnSUNBZ0lFUnZZM011Wlhod1lXNWtSVzVrY0c5cGJuUk1hWE4wUm05eVVtVnpiM1Z5WTJVb1puSmhaMjFsYm5Seld6QmRLVHRjYmlBZ0lDQWdJQ0FnSkNoY0lpTmNJaXRrYjIxZmFXUXBMbk5zYVdSbGRHOG9lMmhwWjJoc2FXZG9kRG9nWm1Gc2MyVjlLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnUlhod1lXNWtJRzl3WlhKaGRHbHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR3hwWDJSdmJWOXBaQ0E5SUdaeVlXZHRaVzUwY3k1cWIybHVLQ2RmSnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2JHbGZZMjl1ZEdWdWRGOWtiMjFmYVdRZ1BTQnNhVjlrYjIxZmFXUWdLeUJjSWw5amIyNTBaVzUwWENJN1hHNWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ1JHOWpjeTVsZUhCaGJtUlBjR1Z5WVhScGIyNG9KQ2duSXljcmJHbGZZMjl1ZEdWdWRGOWtiMjFmYVdRcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNRb0p5TW5LMnhwWDJSdmJWOXBaQ2t1YzJ4cFpHVjBieWg3YUdsbmFHeHBaMmgwT2lCbVlXeHpaWDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RIUnZaMmRzWlVWdVpIQnZhVzUwVEdsemRFWnZjbEpsYzI5MWNtTmxPaUJtZFc1amRHbHZiaWh5WlhOdmRYSmpaU2tnZTF4dVhIUmNkSFpoY2lCbGJHVnRJRDBnSkNnbmJHa2pjbVZ6YjNWeVkyVmZKeUFySUVSdlkzTXVaWE5qWVhCbFVtVnpiM1Z5WTJWT1lXMWxLSEpsYzI5MWNtTmxLU0FySUNjZ2RXd3VaVzVrY0c5cGJuUnpKeWs3WEc1Y2RGeDBhV1lnS0dWc1pXMHVhWE1vSnpwMmFYTnBZbXhsSnlrcElIdGNibHgwWEhSY2RDUXVZbUp4TG5CMWMyaFRkR0YwWlNnbkl5OG5MQ0F5S1R0Y2JseDBYSFJjZEVSdlkzTXVZMjlzYkdGd2MyVkZibVJ3YjJsdWRFeHBjM1JHYjNKU1pYTnZkWEpqWlNoeVpYTnZkWEpqWlNrN1hHNWNkRngwZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDUXVZbUp4TG5CMWMyaFRkR0YwWlNnbkl5OG5JQ3NnY21WemIzVnlZMlVzSURJcE8xeHVYSFJjZEZ4MFJHOWpjeTVsZUhCaGJtUkZibVJ3YjJsdWRFeHBjM1JHYjNKU1pYTnZkWEpqWlNoeVpYTnZkWEpqWlNrN1hHNWNkRngwZlZ4dVhIUjlMRnh1WEc1Y2RDOHZJRVY0Y0dGdVpDQnlaWE52ZFhKalpWeHVYSFJsZUhCaGJtUkZibVJ3YjJsdWRFeHBjM1JHYjNKU1pYTnZkWEpqWlRvZ1puVnVZM1JwYjI0b2NtVnpiM1Z5WTJVcElIdGNibHgwWEhSMllYSWdjbVZ6YjNWeVkyVWdQU0JFYjJOekxtVnpZMkZ3WlZKbGMyOTFjbU5sVG1GdFpTaHlaWE52ZFhKalpTazdYRzVjZEZ4MGFXWWdLSEpsYzI5MWNtTmxJRDA5SUNjbktTQjdYRzVjZEZ4MFhIUWtLQ2N1Y21WemIzVnlZMlVnZFd3dVpXNWtjRzlwYm5Sekp5a3VjMnhwWkdWRWIzZHVLQ2s3WEc1Y2RGeDBYSFJ5WlhSMWNtNDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEpDZ25iR2tqY21WemIzVnlZMlZmSnlBcklISmxjMjkxY21ObEtTNWhaR1JEYkdGemN5Z25ZV04wYVhabEp5azdYRzVjYmx4MFhIUjJZWElnWld4bGJTQTlJQ1FvSjJ4cEkzSmxjMjkxY21ObFh5Y2dLeUJ5WlhOdmRYSmpaU0FySUNjZ2RXd3VaVzVrY0c5cGJuUnpKeWs3WEc1Y2RGeDBaV3hsYlM1emJHbGtaVVJ2ZDI0b0tUdGNibHgwZlN4Y2JseHVYSFF2THlCRGIyeHNZWEJ6WlNCeVpYTnZkWEpqWlNCaGJtUWdiV0Z5YXlCaGN5QmxlSEJzYVdOcGRHeDVJR05zYjNObFpGeHVYSFJqYjJ4c1lYQnpaVVZ1WkhCdmFXNTBUR2x6ZEVadmNsSmxjMjkxY21ObE9pQm1kVzVqZEdsdmJpaHlaWE52ZFhKalpTa2dlMXh1WEhSY2RIWmhjaUJ5WlhOdmRYSmpaU0E5SUVSdlkzTXVaWE5qWVhCbFVtVnpiM1Z5WTJWT1lXMWxLSEpsYzI5MWNtTmxLVHRjYmx4MFhIUnBaaUFvY21WemIzVnlZMlVnUFQwZ0p5Y3BJSHRjYmx4MFhIUmNkQ1FvSnk1eVpYTnZkWEpqWlNCMWJDNWxibVJ3YjJsdWRITW5LUzV6Ykdsa1pWVndLQ2s3WEc1Y2RGeDBYSFJ5WlhSMWNtNDdYRzVjZEZ4MGZWeHVYRzVjZEZ4MEpDZ25iR2tqY21WemIzVnlZMlZmSnlBcklISmxjMjkxY21ObEtTNXlaVzF2ZG1WRGJHRnpjeWduWVdOMGFYWmxKeWs3WEc1Y2JseDBYSFIyWVhJZ1pXeGxiU0E5SUNRb0oyeHBJM0psYzI5MWNtTmxYeWNnS3lCeVpYTnZkWEpqWlNBcklDY2dkV3d1Wlc1a2NHOXBiblJ6SnlrN1hHNWNkRngwWld4bGJTNXpiR2xrWlZWd0tDazdYRzVjZEgwc1hHNWNibHgwWlhod1lXNWtUM0JsY21GMGFXOXVjMFp2Y2xKbGMyOTFjbU5sT2lCbWRXNWpkR2x2YmloeVpYTnZkWEpqWlNrZ2UxeHVYSFJjZEM4dklFMWhhMlVnYzNWeVpTQjBhR1VnY21WemIzVnlZMlVnWTI5dWRHRnBibVZ5SUdseklHOXdaVzR1TGx4dVhIUmNkRVJ2WTNNdVpYaHdZVzVrUlc1a2NHOXBiblJNYVhOMFJtOXlVbVZ6YjNWeVkyVW9jbVZ6YjNWeVkyVXBPMXh1WEc1Y2RGeDBhV1lnS0hKbGMyOTFjbU5sSUQwOUlDY25LU0I3WEc1Y2RGeDBYSFFrS0NjdWNtVnpiM1Z5WTJVZ2RXd3VaVzVrY0c5cGJuUnpJR3hwTG05d1pYSmhkR2x2YmlCa2FYWXVZMjl1ZEdWdWRDY3BMbk5zYVdSbFJHOTNiaWdwTzF4dVhIUmNkRngwY21WMGRYSnVPMXh1WEhSY2RIMWNibHh1WEhSY2RDUW9KMnhwSTNKbGMyOTFjbU5sWHljZ0t5QkViMk56TG1WelkyRndaVkpsYzI5MWNtTmxUbUZ0WlNoeVpYTnZkWEpqWlNrZ0t5QW5JR3hwTG05d1pYSmhkR2x2YmlCa2FYWXVZMjl1ZEdWdWRDY3BMbVZoWTJnb1puVnVZM1JwYjI0b0tTQjdYRzVjZEZ4MFhIUkViMk56TG1WNGNHRnVaRTl3WlhKaGRHbHZiaWdrS0hSb2FYTXBLVHRjYmx4MFhIUjlLVHRjYmx4MGZTeGNibHh1WEhSamIyeHNZWEJ6WlU5d1pYSmhkR2x2Ym5OR2IzSlNaWE52ZFhKalpUb2dablZ1WTNScGIyNG9jbVZ6YjNWeVkyVXBJSHRjYmx4MFhIUXZMeUJOWVd0bElITjFjbVVnZEdobElISmxjMjkxY21ObElHTnZiblJoYVc1bGNpQnBjeUJ2Y0dWdUxpNWNibHgwWEhSRWIyTnpMbVY0Y0dGdVpFVnVaSEJ2YVc1MFRHbHpkRVp2Y2xKbGMyOTFjbU5sS0hKbGMyOTFjbU5sS1R0Y2JseHVYSFJjZEdsbUlDaHlaWE52ZFhKalpTQTlQU0FuSnlrZ2UxeHVYSFJjZEZ4MEpDZ25MbkpsYzI5MWNtTmxJSFZzTG1WdVpIQnZhVzUwY3lCc2FTNXZjR1Z5WVhScGIyNGdaR2wyTG1OdmJuUmxiblFuS1M1emJHbGtaVlZ3S0NrN1hHNWNkRngwWEhSeVpYUjFjbTQ3WEc1Y2RGeDBmVnh1WEc1Y2RGeDBKQ2duYkdramNtVnpiM1Z5WTJWZkp5QXJJRVJ2WTNNdVpYTmpZWEJsVW1WemIzVnlZMlZPWVcxbEtISmxjMjkxY21ObEtTQXJJQ2NnYkdrdWIzQmxjbUYwYVc5dUlHUnBkaTVqYjI1MFpXNTBKeWt1WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmx4MFhIUmNkRVJ2WTNNdVkyOXNiR0Z3YzJWUGNHVnlZWFJwYjI0b0pDaDBhR2x6S1NrN1hHNWNkRngwZlNrN1hHNWNkSDBzWEc1Y2JseDBaWE5qWVhCbFVtVnpiM1Z5WTJWT1lXMWxPaUJtZFc1amRHbHZiaWh5WlhOdmRYSmpaU2tnZTF4dVhIUmNkSEpsZEhWeWJpQnlaWE52ZFhKalpTNXlaWEJzWVdObEtDOWJJVndpSXlRbEppY29LU29yTEM1Y1hDODZPenc5UGo5QVhGeGJYRnhjWEZ4Y1hWeGNYbUI3ZkgxK1hTOW5MQ0JjSWx4Y1hGd2tKbHdpS1R0Y2JseDBmU3hjYmx4dVhIUmxlSEJoYm1SUGNHVnlZWFJwYjI0NklHWjFibU4wYVc5dUtHVnNaVzBwSUh0Y2JseDBYSFJsYkdWdExuTnNhV1JsUkc5M2JpZ3BPMXh1WEhSOUxGeHVYRzVjZEdOdmJHeGhjSE5sVDNCbGNtRjBhVzl1T2lCbWRXNWpkR2x2YmlobGJHVnRLU0I3WEc1Y2RGeDBaV3hsYlM1emJHbGtaVlZ3S0NrN1hHNWNkSDFjYm4wN1hHNGlMQ0l2S2lGY2JpQXFJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlsY3kxemFHbHRjeTlsY3pVdGMyaHBiVnh1SUNvZ1FHeHBZMlZ1YzJVZ1pYTTFMWE5vYVcwZ1EyOXdlWEpwWjJoMElESXdNRGt0TWpBeE5TQmllU0JqYjI1MGNtbGlkWFJ2Y25Nc0lFMUpWQ0JNYVdObGJuTmxYRzRnS2lCelpXVWdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlZ6TFhOb2FXMXpMMlZ6TlMxemFHbHRMMkpzYjJJdmJXRnpkR1Z5TDB4SlEwVk9VMFZjYmlBcUwxeHVYRzR2THlCMmFXMDZJSFJ6UFRRZ2MzUnpQVFFnYzNjOU5DQmxlSEJoYm1SMFlXSmNibHh1THk4Z1FXUmtJSE5sYldsamIyeHZiaUIwYnlCd2NtVjJaVzUwSUVsSlJrVWdabkp2YlNCaVpXbHVaeUJ3WVhOelpXUWdZWE1nWVhKbmRXMWxiblFnZEc4Z1kyOXVZMkYwWlc1aGRHVmtJR052WkdVdVhHNDdYRzVjYmk4dklGVk5SQ0FvVlc1cGRtVnljMkZzSUUxdlpIVnNaU0JFWldacGJtbDBhVzl1S1Z4dUx5OGdjMlZsSUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5MWJXUnFjeTkxYldRdllteHZZaTl0WVhOMFpYSXZkR1Z0Y0d4aGRHVnpMM0psZEhWeWJrVjRjRzl5ZEhNdWFuTmNiaWhtZFc1amRHbHZiaUFvY205dmRDd2dabUZqZEc5eWVTa2dlMXh1SUNBZ0lDZDFjMlVnYzNSeWFXTjBKenRjYmx4dUlDQWdJQzhxSUdkc2IySmhiQ0JrWldacGJtVXNJR1Y0Y0c5eWRITXNJRzF2WkhWc1pTQXFMMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdaR1ZtYVc1bElEMDlQU0FuWm5WdVkzUnBiMjRuSUNZbUlHUmxabWx1WlM1aGJXUXBJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1FVMUVMaUJTWldkcGMzUmxjaUJoY3lCaGJpQmhibTl1ZVcxdmRYTWdiVzlrZFd4bExseHVJQ0FnSUNBZ0lDQmtaV1pwYm1Vb1ptRmpkRzl5ZVNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWlhod2IzSjBjeUE5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lDQWdMeThnVG05a1pTNGdSRzlsY3lCdWIzUWdkMjl5YXlCM2FYUm9JSE4wY21samRDQkRiMjF0YjI1S1V5d2dZblYwWEc0Z0lDQWdJQ0FnSUM4dklHOXViSGtnUTI5dGJXOXVTbE10YkdsclpTQmxiblpwY205dFpXNTBjeUIwYUdGMElITjFjSEJ2Y25RZ2JXOWtkV3hsTG1WNGNHOXlkSE1zWEc0Z0lDQWdJQ0FnSUM4dklHeHBhMlVnVG05a1pTNWNiaUFnSUNBZ0lDQWdiVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm1ZV04wYjNKNUtDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdRbkp2ZDNObGNpQm5iRzlpWVd4eklDaHliMjkwSUdseklIZHBibVJ2ZHlsY2JpQWdJQ0FnSUNBZ2NtOXZkQzV5WlhSMWNtNUZlSEJ2Y25SeklEMGdabUZqZEc5eWVTZ3BPMXh1SUNBZ0lIMWNibjBvZEdocGN5d2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVKeWFXNW5jeUJoYmlCbGJuWnBjbTl1YldWdWRDQmhjeUJqYkc5elpTQjBieUJGUTAxQlUyTnlhWEIwSURVZ1kyOXRjR3hwWVc1alpWeHVJQ0FnSUNBcUlHRnpJR2x6SUhCdmMzTnBZbXhsSUhkcGRHZ2dkR2hsSUdaaFkybHNhWFJwWlhNZ2IyWWdaWEp6ZEhkb2FXeGxJR1Z1WjJsdVpYTXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkJibTV2ZEdGMFpXUWdSVk0xT2lCb2RIUndPaTh2WlhNMUxtZHBkR2gxWWk1amIyMHZJQ2h6Y0dWamFXWnBZeUJzYVc1cmN5QmlaV3h2ZHlsY2JpQWdJQ0FnS2lCRlV6VWdVM0JsWXpvZ2FIUjBjRG92TDNkM2R5NWxZMjFoTFdsdWRHVnlibUYwYVc5dVlXd3ViM0puTDNCMVlteHBZMkYwYVc5dWN5OW1hV3hsY3k5RlEwMUJMVk5VTDBWamJXRXRNall5TG5Ca1pseHVJQ0FnSUNBcUlGSmxjWFZwY21Wa0lISmxZV1JwYm1jNklHaDBkSEE2THk5cVlYWmhjMk55YVhCMGQyVmliRzluTG5kdmNtUndjbVZ6Y3k1amIyMHZNakF4TVM4eE1pOHdOUzlsZUhSbGJtUnBibWN0YW1GMllYTmpjbWx3ZEMxdVlYUnBkbVZ6TDF4dUlDQWdJQ0FxTDF4dVhHNGdJQ0FnTHk4Z1UyaHZjblJqZFhRZ2RHOGdZVzRnYjJaMFpXNGdZV05qWlhOelpXUWdjSEp2Y0dWeWRHbGxjeXdnYVc0Z2IzSmtaWElnZEc4Z1lYWnZhV1FnYlhWc2RHbHdiR1ZjYmlBZ0lDQXZMeUJrWlhKbFptVnlaVzVqWlNCMGFHRjBJR052YzNSeklIVnVhWFpsY25OaGJHeDVMaUJVYUdseklHRnNjMjhnYUc5c1pITWdZU0J5WldabGNtVnVZMlVnZEc4Z2EyNXZkMjR0WjI5dlpGeHVJQ0FnSUM4dklHWjFibU4wYVc5dWN5NWNiaUFnSUNCMllYSWdKRUZ5Y21GNUlEMGdRWEp5WVhrN1hHNGdJQ0FnZG1GeUlFRnljbUY1VUhKdmRHOTBlWEJsSUQwZ0pFRnljbUY1TG5CeWIzUnZkSGx3WlR0Y2JpQWdJQ0IyWVhJZ0pFOWlhbVZqZENBOUlFOWlhbVZqZER0Y2JpQWdJQ0IyWVhJZ1QySnFaV04wVUhKdmRHOTBlWEJsSUQwZ0pFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVN1hHNGdJQ0FnZG1GeUlDUkdkVzVqZEdsdmJpQTlJRVoxYm1OMGFXOXVPMXh1SUNBZ0lIWmhjaUJHZFc1amRHbHZibEJ5YjNSdmRIbHdaU0E5SUNSR2RXNWpkR2x2Ymk1d2NtOTBiM1I1Y0dVN1hHNGdJQ0FnZG1GeUlDUlRkSEpwYm1jZ1BTQlRkSEpwYm1jN1hHNGdJQ0FnZG1GeUlGTjBjbWx1WjFCeWIzUnZkSGx3WlNBOUlDUlRkSEpwYm1jdWNISnZkRzkwZVhCbE8xeHVJQ0FnSUhaaGNpQWtUblZ0WW1WeUlEMGdUblZ0WW1WeU8xeHVJQ0FnSUhaaGNpQk9kVzFpWlhKUWNtOTBiM1I1Y0dVZ1BTQWtUblZ0WW1WeUxuQnliM1J2ZEhsd1pUdGNiaUFnSUNCMllYSWdZWEp5WVhsZmMyeHBZMlVnUFNCQmNuSmhlVkJ5YjNSdmRIbHdaUzV6YkdsalpUdGNiaUFnSUNCMllYSWdZWEp5WVhsZmMzQnNhV05sSUQwZ1FYSnlZWGxRY205MGIzUjVjR1V1YzNCc2FXTmxPMXh1SUNBZ0lIWmhjaUJoY25KaGVWOXdkWE5vSUQwZ1FYSnlZWGxRY205MGIzUjVjR1V1Y0hWemFEdGNiaUFnSUNCMllYSWdZWEp5WVhsZmRXNXphR2xtZENBOUlFRnljbUY1VUhKdmRHOTBlWEJsTG5WdWMyaHBablE3WEc0Z0lDQWdkbUZ5SUdGeWNtRjVYMk52Ym1OaGRDQTlJRUZ5Y21GNVVISnZkRzkwZVhCbExtTnZibU5oZER0Y2JpQWdJQ0IyWVhJZ1lYSnlZWGxmYW05cGJpQTlJRUZ5Y21GNVVISnZkRzkwZVhCbExtcHZhVzQ3WEc0Z0lDQWdkbUZ5SUdOaGJHd2dQU0JHZFc1amRHbHZibEJ5YjNSdmRIbHdaUzVqWVd4c08xeHVJQ0FnSUhaaGNpQmhjSEJzZVNBOUlFWjFibU4wYVc5dVVISnZkRzkwZVhCbExtRndjR3g1TzF4dUlDQWdJSFpoY2lCdFlYZ2dQU0JOWVhSb0xtMWhlRHRjYmlBZ0lDQjJZWElnYldsdUlEMGdUV0YwYUM1dGFXNDdYRzVjYmlBZ0lDQXZMeUJJWVhacGJtY2dZU0IwYjFOMGNtbHVaeUJzYjJOaGJDQjJZWEpwWVdKc1pTQnVZVzFsSUdKeVpXRnJjeUJwYmlCUGNHVnlZU0J6YnlCMWMyVWdkRzlmYzNSeWFXNW5MbHh1SUNBZ0lIWmhjaUIwYjE5emRISnBibWNnUFNCUFltcGxZM1JRY205MGIzUjVjR1V1ZEc5VGRISnBibWM3WEc1Y2JpQWdJQ0F2S2lCbmJHOWlZV3dnVTNsdFltOXNJQ292WEc0Z0lDQWdMeW9nWlhOc2FXNTBMV1JwYzJGaWJHVWdiMjVsTFhaaGNpMWtaV05zWVhKaGRHbHZiaTF3WlhJdGJHbHVaU3dnYm04dGNtVmtaV05zWVhKbExDQnRZWGd0YzNSaGRHVnRaVzUwY3kxd1pYSXRiR2x1WlNBcUwxeHVJQ0FnSUhaaGNpQm9ZWE5VYjFOMGNtbHVaMVJoWnlBOUlIUjVjR1Z2WmlCVGVXMWliMndnUFQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnZEhsd1pXOW1JRk41YldKdmJDNTBiMU4wY21sdVoxUmhaeUE5UFQwZ0ozTjViV0p2YkNjN1hHNGdJQ0FnZG1GeUlHbHpRMkZzYkdGaWJHVTdJQzhxSUdsdWJHbHVaV1FnWm5KdmJTQm9kSFJ3Y3pvdkwyNXdiV3B6TG1OdmJTOXBjeTFqWVd4c1lXSnNaU0FxTHlCMllYSWdabTVVYjFOMGNpQTlJRVoxYm1OMGFXOXVMbkJ5YjNSdmRIbHdaUzUwYjFOMGNtbHVaeXdnWTI5dWMzUnlkV04wYjNKU1pXZGxlQ0E5SUM5ZVhGeHpLbU5zWVhOeklDOHNJR2x6UlZNMlEyeGhjM05HYmlBOUlHWjFibU4wYVc5dUlHbHpSVk0yUTJ4aGMzTkdiaWgyWVd4MVpTa2dleUIwY25rZ2V5QjJZWElnWm01VGRISWdQU0JtYmxSdlUzUnlMbU5oYkd3b2RtRnNkV1VwT3lCMllYSWdjMmx1WjJ4bFUzUnlhWEJ3WldRZ1BTQm1ibE4wY2k1eVpYQnNZV05sS0M5Y1hDOWNYQzh1S2x4Y2JpOW5MQ0FuSnlrN0lIWmhjaUJ0ZFd4MGFWTjBjbWx3Y0dWa0lEMGdjMmx1WjJ4bFUzUnlhWEJ3WldRdWNtVndiR0ZqWlNndlhGd3ZYRndxV3k1Y1hITmNYRk5kS2x4Y0tseGNMeTluTENBbkp5azdJSFpoY2lCemNHRmpaVk4wY21sd2NHVmtJRDBnYlhWc2RHbFRkSEpwY0hCbFpDNXlaWEJzWVdObEtDOWNYRzR2Yldjc0lDY2dKeWt1Y21Wd2JHRmpaU2d2SUhzeWZTOW5MQ0FuSUNjcE95QnlaWFIxY200Z1kyOXVjM1J5ZFdOMGIzSlNaV2RsZUM1MFpYTjBLSE53WVdObFUzUnlhWEJ3WldRcE95QjlJR05oZEdOb0lDaGxLU0I3SUhKbGRIVnliaUJtWVd4elpUc2dMeW9nYm05MElHRWdablZ1WTNScGIyNGdLaThnZlNCOUxDQjBjbmxHZFc1amRHbHZiazlpYW1WamRDQTlJR1oxYm1OMGFXOXVJSFJ5ZVVaMWJtTjBhVzl1VDJKcVpXTjBLSFpoYkhWbEtTQjdJSFJ5ZVNCN0lHbG1JQ2hwYzBWVE5rTnNZWE56Um00b2RtRnNkV1VwS1NCN0lISmxkSFZ5YmlCbVlXeHpaVHNnZlNCbWJsUnZVM1J5TG1OaGJHd29kbUZzZFdVcE95QnlaWFIxY200Z2RISjFaVHNnZlNCallYUmphQ0FvWlNrZ2V5QnlaWFIxY200Z1ptRnNjMlU3SUgwZ2ZTd2dabTVEYkdGemN5QTlJQ2RiYjJKcVpXTjBJRVoxYm1OMGFXOXVYU2NzSUdkbGJrTnNZWE56SUQwZ0oxdHZZbXBsWTNRZ1IyVnVaWEpoZEc5eVJuVnVZM1JwYjI1ZEp5d2dhWE5EWVd4c1lXSnNaU0E5SUdaMWJtTjBhVzl1SUdselEyRnNiR0ZpYkdVb2RtRnNkV1VwSUhzZ2FXWWdLQ0YyWVd4MVpTa2dleUJ5WlhSMWNtNGdabUZzYzJVN0lIMGdhV1lnS0hSNWNHVnZaaUIyWVd4MVpTQWhQVDBnSjJaMWJtTjBhVzl1SnlBbUppQjBlWEJsYjJZZ2RtRnNkV1VnSVQwOUlDZHZZbXBsWTNRbktTQjdJSEpsZEhWeWJpQm1ZV3h6WlRzZ2ZTQnBaaUFvYUdGelZHOVRkSEpwYm1kVVlXY3BJSHNnY21WMGRYSnVJSFJ5ZVVaMWJtTjBhVzl1VDJKcVpXTjBLSFpoYkhWbEtUc2dmU0JwWmlBb2FYTkZVelpEYkdGemMwWnVLSFpoYkhWbEtTa2dleUJ5WlhSMWNtNGdabUZzYzJVN0lIMGdkbUZ5SUhOMGNrTnNZWE56SUQwZ2RHOWZjM1J5YVc1bkxtTmhiR3dvZG1Gc2RXVXBPeUJ5WlhSMWNtNGdjM1J5UTJ4aGMzTWdQVDA5SUdadVEyeGhjM01nZkh3Z2MzUnlRMnhoYzNNZ1BUMDlJR2RsYmtOc1lYTnpPeUI5TzF4dVhHNGdJQ0FnZG1GeUlHbHpVbVZuWlhnN0lDOHFJR2x1YkdsdVpXUWdabkp2YlNCb2RIUndjem92TDI1d2JXcHpMbU52YlM5cGN5MXlaV2RsZUNBcUx5QjJZWElnY21WblpYaEZlR1ZqSUQwZ1VtVm5SWGh3TG5CeWIzUnZkSGx3WlM1bGVHVmpMQ0IwY25sU1pXZGxlRVY0WldNZ1BTQm1kVzVqZEdsdmJpQjBjbmxTWldkbGVFVjRaV01vZG1Gc2RXVXBJSHNnZEhKNUlIc2djbVZuWlhoRmVHVmpMbU5oYkd3b2RtRnNkV1VwT3lCeVpYUjFjbTRnZEhKMVpUc2dmU0JqWVhSamFDQW9aU2tnZXlCeVpYUjFjbTRnWm1Gc2MyVTdJSDBnZlN3Z2NtVm5aWGhEYkdGemN5QTlJQ2RiYjJKcVpXTjBJRkpsWjBWNGNGMG5PeUJwYzFKbFoyVjRJRDBnWm5WdVkzUnBiMjRnYVhOU1pXZGxlQ2gyWVd4MVpTa2dleUJwWmlBb2RIbHdaVzltSUhaaGJIVmxJQ0U5UFNBbmIySnFaV04wSnlrZ2V5QnlaWFIxY200Z1ptRnNjMlU3SUgwZ2NtVjBkWEp1SUdoaGMxUnZVM1J5YVc1blZHRm5JRDhnZEhKNVVtVm5aWGhGZUdWaktIWmhiSFZsS1NBNklIUnZYM04wY21sdVp5NWpZV3hzS0haaGJIVmxLU0E5UFQwZ2NtVm5aWGhEYkdGemN6c2dmVHRjYmlBZ0lDQjJZWElnYVhOVGRISnBibWM3SUM4cUlHbHViR2x1WldRZ1puSnZiU0JvZEhSd2N6b3ZMMjV3YldwekxtTnZiUzlwY3kxemRISnBibWNnS2k4Z2RtRnlJSE4wY2xaaGJIVmxJRDBnVTNSeWFXNW5MbkJ5YjNSdmRIbHdaUzUyWVd4MVpVOW1MQ0IwY25sVGRISnBibWRQWW1wbFkzUWdQU0JtZFc1amRHbHZiaUIwY25sVGRISnBibWRQWW1wbFkzUW9kbUZzZFdVcElIc2dkSEo1SUhzZ2MzUnlWbUZzZFdVdVkyRnNiQ2gyWVd4MVpTazdJSEpsZEhWeWJpQjBjblZsT3lCOUlHTmhkR05vSUNobEtTQjdJSEpsZEhWeWJpQm1ZV3h6WlRzZ2ZTQjlMQ0J6ZEhKcGJtZERiR0Z6Y3lBOUlDZGJiMkpxWldOMElGTjBjbWx1WjEwbk95QnBjMU4wY21sdVp5QTlJR1oxYm1OMGFXOXVJR2x6VTNSeWFXNW5LSFpoYkhWbEtTQjdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkemRISnBibWNuS1NCN0lISmxkSFZ5YmlCMGNuVmxPeUI5SUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnSVQwOUlDZHZZbXBsWTNRbktTQjdJSEpsZEhWeWJpQm1ZV3h6WlRzZ2ZTQnlaWFIxY200Z2FHRnpWRzlUZEhKcGJtZFVZV2NnUHlCMGNubFRkSEpwYm1kUFltcGxZM1FvZG1Gc2RXVXBJRG9nZEc5ZmMzUnlhVzVuTG1OaGJHd29kbUZzZFdVcElEMDlQU0J6ZEhKcGJtZERiR0Z6Y3pzZ2ZUdGNiaUFnSUNBdktpQmxjMnhwYm5RdFpXNWhZbXhsSUc5dVpTMTJZWEl0WkdWamJHRnlZWFJwYjI0dGNHVnlMV3hwYm1Vc0lHNXZMWEpsWkdWamJHRnlaU3dnYldGNExYTjBZWFJsYldWdWRITXRjR1Z5TFd4cGJtVWdLaTljYmx4dUlDQWdJQzhxSUdsdWJHbHVaV1FnWm5KdmJTQm9kSFJ3T2k4dmJuQnRhbk11WTI5dEwyUmxabWx1WlMxd2NtOXdaWEowYVdWeklDb3ZYRzRnSUNBZ2RtRnlJSE4xY0hCdmNuUnpSR1Z6WTNKcGNIUnZjbk1nUFNBa1QySnFaV04wTG1SbFptbHVaVkJ5YjNCbGNuUjVJQ1ltSUNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2IySnFJRDBnZTMwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtHOWlhaXdnSjNnbkxDQjdJR1Z1ZFcxbGNtRmliR1U2SUdaaGJITmxMQ0IyWVd4MVpUb2diMkpxSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnWHlCcGJpQnZZbW9wSUhzZ0x5OGdhbk5qY3pwcFoyNXZjbVVnWkdsellXeHNiM2RWYm5WelpXUldZWEpwWVdKc1pYTmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjJKcUxuZ2dQVDA5SUc5aWFqdGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZXlBdktpQjBhR2x6SUdseklFVlRNeUFxTDF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlNncEtUdGNiaUFnSUNCMllYSWdaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5QTlJQ2htZFc1amRHbHZiaUFvYUdGektTQjdYRzRnSUNBZ0lDQWdJQzh2SUVSbFptbHVaU0JqYjI1bWFXZDFjbUZpYkdVc0lIZHlhWFJoWW14bExDQmhibVFnYm05dUxXVnVkVzFsY21GaWJHVWdjSEp2Y0hOY2JpQWdJQ0FnSUNBZ0x5OGdhV1lnZEdobGVTQmtiMjRuZENCbGVHbHpkQzVjYmlBZ0lDQWdJQ0FnZG1GeUlHUmxabWx1WlZCeWIzQmxjblI1TzF4dUlDQWdJQ0FnSUNCcFppQW9jM1Z3Y0c5eWRITkVaWE5qY21sd2RHOXljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtYVc1bFVISnZjR1Z5ZEhrZ1BTQm1kVzVqZEdsdmJpQW9iMkpxWldOMExDQnVZVzFsTENCdFpYUm9iMlFzSUdadmNtTmxRWE56YVdkdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGbWIzSmpaVUZ6YzJsbmJpQW1KaUFvYm1GdFpTQnBiaUJ2WW1wbFkzUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h2WW1wbFkzUXNJRzVoYldVc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dVptbG5kWEpoWW14bE9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiblZ0WlhKaFlteGxPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDNKcGRHRmliR1U2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUJ0WlhSb2IyUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXWnBibVZRY205d1pYSjBlU0E5SUdaMWJtTjBhVzl1SUNodlltcGxZM1FzSUc1aGJXVXNJRzFsZEdodlpDd2dabTl5WTJWQmMzTnBaMjRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV1p2Y21ObFFYTnphV2R1SUNZbUlDaHVZVzFsSUdsdUlHOWlhbVZqZENrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2WW1wbFkzUmJibUZ0WlYwZ1BTQnRaWFJvYjJRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlCa1pXWnBibVZRY205d1pYSjBhV1Z6S0c5aWFtVmpkQ3dnYldGd0xDQm1iM0pqWlVGemMybG5iaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdibUZ0WlNCcGJpQnRZWEFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hR0Z6TG1OaGJHd29iV0Z3TENCdVlXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV1pwYm1WUWNtOXdaWEowZVNodlltcGxZM1FzSUc1aGJXVXNJRzFoY0Z0dVlXMWxYU3dnWm05eVkyVkJjM05wWjI0cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUtFOWlhbVZqZEZCeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlU2twTzF4dVhHNGdJQ0FnTHk5Y2JpQWdJQ0F2THlCVmRHbHNYRzRnSUNBZ0x5OGdQVDA5UFQwOVhHNGdJQ0FnTHk5Y2JseHVJQ0FnSUM4cUlISmxjR3hoWTJWaFlteGxJSGRwZEdnZ2FIUjBjSE02THk5dWNHMXFjeTVqYjIwdmNHRmphMkZuWlM5bGN5MWhZbk4wY21GamRDQXZhR1ZzY0dWeWN5OXBjMUJ5YVcxcGRHbDJaU0FxTDF4dUlDQWdJSFpoY2lCcGMxQnlhVzFwZEdsMlpTQTlJR1oxYm1OMGFXOXVJR2x6VUhKcGJXbDBhWFpsS0dsdWNIVjBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQjBlWEJsSUQwZ2RIbHdaVzltSUdsdWNIVjBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzV3ZFhRZ1BUMDlJRzUxYkd3Z2ZId2dLSFI1Y0dVZ0lUMDlJQ2R2WW1wbFkzUW5JQ1ltSUhSNWNHVWdJVDA5SUNkbWRXNWpkR2x2YmljcE8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCMllYSWdhWE5CWTNSMVlXeE9ZVTRnUFNBa1RuVnRZbVZ5TG1selRtRk9JSHg4SUdaMWJtTjBhVzl1SUdselFXTjBkV0ZzVG1GT0tIZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSGdnSVQwOUlIZzdYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lIWmhjaUJGVXlBOUlIdGNiaUFnSUNBZ0lDQWdMeThnUlZNMUlEa3VORnh1SUNBZ0lDQWdJQ0F2THlCb2RIUndPaTh2WlhNMUxtZHBkR2gxWWk1amIyMHZJM2c1TGpSY2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwycHpjR1Z5Wmk1amIyMHZkRzh0YVc1MFpXZGxjbHh1SUNBZ0lDQWdJQ0F2S2lCeVpYQnNZV05sWVdKc1pTQjNhWFJvSUdoMGRIQnpPaTh2Ym5CdGFuTXVZMjl0TDNCaFkydGhaMlV2WlhNdFlXSnpkSEpoWTNRZ1JWTTFMbFJ2U1c1MFpXZGxjaUFxTDF4dUlDQWdJQ0FnSUNCVWIwbHVkR1ZuWlhJNklHWjFibU4wYVc5dUlGUnZTVzUwWldkbGNpaHVkVzBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdUlEMGdLMjUxYlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGMwRmpkSFZoYkU1aFRpaHVLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc0Z1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHVJQ0U5UFNBd0lDWW1JRzRnSVQwOUlDZ3hJQzhnTUNrZ0ppWWdiaUFoUFQwZ0xTZ3hJQzhnTUNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVJRDBnS0c0Z1BpQXdJSHg4SUMweEtTQXFJRTFoZEdndVpteHZiM0lvVFdGMGFDNWhZbk1vYmlrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHNDdYRzRnSUNBZ0lDQWdJSDBzWEc1Y2JpQWdJQ0FnSUNBZ0x5b2djbVZ3YkdGalpXRmliR1VnZDJsMGFDQm9kSFJ3Y3pvdkwyNXdiV3B6TG1OdmJTOXdZV05yWVdkbEwyVnpMV0ZpYzNSeVlXTjBJRVZUTlM1VWIxQnlhVzFwZEdsMlpTQXFMMXh1SUNBZ0lDQWdJQ0JVYjFCeWFXMXBkR2wyWlRvZ1puVnVZM1JwYjI0Z1ZHOVFjbWx0YVhScGRtVW9hVzV3ZFhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQjJZV3dzSUhaaGJIVmxUMllzSUhSdlUzUnlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x6VUhKcGJXbDBhWFpsS0dsdWNIVjBLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5CMWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbFQyWWdQU0JwYm5CMWRDNTJZV3gxWlU5bU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpRMkZzYkdGaWJHVW9kbUZzZFdWUFppa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd3Z1BTQjJZV3gxWlU5bUxtTmhiR3dvYVc1d2RYUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGMxQnlhVzFwZEdsMlpTaDJZV3dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjJZV3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHOVRkSElnUFNCcGJuQjFkQzUwYjFOMGNtbHVaenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzBOaGJHeGhZbXhsS0hSdlUzUnlLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJDQTlJSFJ2VTNSeUxtTmhiR3dvYVc1d2RYUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGMxQnlhVzFwZEdsMlpTaDJZV3dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjJZV3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ3BPMXh1SUNBZ0lDQWdJQ0I5TEZ4dVhHNGdJQ0FnSUNBZ0lDOHZJRVZUTlNBNUxqbGNiaUFnSUNBZ0lDQWdMeThnYUhSMGNEb3ZMMlZ6TlM1bmFYUm9kV0l1WTI5dEx5TjRPUzQ1WEc0Z0lDQWdJQ0FnSUM4cUlISmxjR3hoWTJWaFlteGxJSGRwZEdnZ2FIUjBjSE02THk5dWNHMXFjeTVqYjIwdmNHRmphMkZuWlM5bGN5MWhZbk4wY21GamRDQkZVelV1Vkc5UFltcGxZM1FnS2k5Y2JpQWdJQ0FnSUNBZ1ZHOVBZbXBsWTNRNklHWjFibU4wYVc5dUlDaHZLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYnlBOVBTQnVkV3hzS1NCN0lDOHZJSFJvYVhNZ2JXRjBZMmhsY3lCaWIzUm9JRzUxYkd3Z1lXNWtJSFZ1WkdWbWFXNWxaRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKallXNG5kQ0JqYjI1MlpYSjBJRndpSUNzZ2J5QXJJQ2NnZEc4Z2IySnFaV04wSnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0pFOWlhbVZqZENodktUdGNiaUFnSUNBZ0lDQWdmU3hjYmx4dUlDQWdJQ0FnSUNBdktpQnlaWEJzWVdObFlXSnNaU0IzYVhSb0lHaDBkSEJ6T2k4dmJuQnRhbk11WTI5dEwzQmhZMnRoWjJVdlpYTXRZV0p6ZEhKaFkzUWdSVk0xTGxSdlZXbHVkRE15SUNvdlhHNGdJQ0FnSUNBZ0lGUnZWV2x1ZERNeU9pQm1kVzVqZEdsdmJpQlViMVZwYm5Rek1paDRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VDQStQajRnTUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNWNiaUFnSUNBdkwxeHVJQ0FnSUM4dklFWjFibU4wYVc5dVhHNGdJQ0FnTHk4Z1BUMDlQVDA5UFQxY2JpQWdJQ0F2TDF4dVhHNGdJQ0FnTHk4Z1JWTXROU0F4TlM0ekxqUXVOVnh1SUNBZ0lDOHZJR2gwZEhBNkx5OWxjelV1WjJsMGFIVmlMbU52YlM4amVERTFMak11TkM0MVhHNWNiaUFnSUNCMllYSWdSVzF3ZEhrZ1BTQm1kVzVqZEdsdmJpQkZiWEIwZVNncElIdDlPMXh1WEc0Z0lDQWdaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aEdkVzVqZEdsdmJsQnliM1J2ZEhsd1pTd2dlMXh1SUNBZ0lDQWdJQ0JpYVc1a09pQm1kVzVqZEdsdmJpQmlhVzVrS0hSb1lYUXBJSHNnTHk4Z0xteGxibWQwYUNCcGN5QXhYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXhMaUJNWlhRZ1ZHRnlaMlYwSUdKbElIUm9aU0IwYUdseklIWmhiSFZsTGx4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhSaGNtZGxkQ0E5SUhSb2FYTTdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXlMaUJKWmlCSmMwTmhiR3hoWW14bEtGUmhjbWRsZENrZ2FYTWdabUZzYzJVc0lIUm9jbTkzSUdFZ1ZIbHdaVVZ5Y205eUlHVjRZMlZ3ZEdsdmJpNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hhWE5EWVd4c1lXSnNaU2gwWVhKblpYUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnblJuVnVZM1JwYjI0dWNISnZkRzkwZVhCbExtSnBibVFnWTJGc2JHVmtJRzl1SUdsdVkyOXRjR0YwYVdKc1pTQW5JQ3NnZEdGeVoyVjBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklETXVJRXhsZENCQklHSmxJR0VnYm1WM0lDaHdiM056YVdKc2VTQmxiWEIwZVNrZ2FXNTBaWEp1WVd3Z2JHbHpkQ0J2WmlCaGJHd2diMllnZEdobFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBZ0lHRnlaM1Z0Wlc1MElIWmhiSFZsY3lCd2NtOTJhV1JsWkNCaFpuUmxjaUIwYUdselFYSm5JQ2hoY21jeExDQmhjbWN5SUdWMFl5a3NJR2x1SUc5eVpHVnlMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdXRmhZSUhOc2FXTmxaRUZ5WjNNZ2QybHNiQ0J6ZEdGdVpDQnBiaUJtYjNJZ1hDSkJYQ0lnYVdZZ2RYTmxaRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR0Z5WjNNZ1BTQmhjbkpoZVY5emJHbGpaUzVqWVd4c0tHRnlaM1Z0Wlc1MGN5d2dNU2s3SUM4dklHWnZjaUJ1YjNKdFlXd2dZMkZzYkZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnTkM0Z1RHVjBJRVlnWW1VZ1lTQnVaWGNnYm1GMGFYWmxJRVZEVFVGVFkzSnBjSFFnYjJKcVpXTjBMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdNVEV1SUZObGRDQjBhR1VnVzF0UWNtOTBiM1I1Y0dWZFhTQnBiblJsY201aGJDQndjbTl3WlhKMGVTQnZaaUJHSUhSdklIUm9aU0J6ZEdGdVpHRnlaRnh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdJQ0JpZFdsc2RDMXBiaUJHZFc1amRHbHZiaUJ3Y205MGIzUjVjR1VnYjJKcVpXTjBJR0Z6SUhOd1pXTnBabWxsWkNCcGJpQXhOUzR6TGpNdU1TNWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklERXlMaUJUWlhRZ2RHaGxJRnRiUTJGc2JGMWRJR2x1ZEdWeWJtRnNJSEJ5YjNCbGNuUjVJRzltSUVZZ1lYTWdaR1Z6WTNKcFltVmtJR2x1WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUFnSURFMUxqTXVOQzQxTGpFdVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBeE15NGdVMlYwSUhSb1pTQmJXME52Ym5OMGNuVmpkRjFkSUdsdWRHVnlibUZzSUhCeWIzQmxjblI1SUc5bUlFWWdZWE1nWkdWelkzSnBZbVZrSUdsdVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBZ0lERTFMak11TkM0MUxqSXVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXhOQzRnVTJWMElIUm9aU0JiVzBoaGMwbHVjM1JoYm1ObFhWMGdhVzUwWlhKdVlXd2djSEp2Y0dWeWRIa2diMllnUmlCaGN5QmtaWE5qY21saVpXUWdhVzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJQ0FnTVRVdU15NDBMalV1TXk1Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCaWIzVnVaRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJpYVc1a1pYSWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5QnBibk4wWVc1alpXOW1JR0p2ZFc1a0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklERTFMak11TkM0MUxqSWdXMXREYjI1emRISjFZM1JkWFZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJYYUdWdUlIUm9aU0JiVzBOdmJuTjBjblZqZEYxZElHbHVkR1Z5Ym1Gc0lHMWxkR2h2WkNCdlppQmhJR1oxYm1OMGFXOXVJRzlpYW1WamRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1JpQjBhR0YwSUhkaGN5QmpjbVZoZEdWa0lIVnphVzVuSUhSb1pTQmlhVzVrSUdaMWJtTjBhVzl1SUdseklHTmhiR3hsWkNCM2FYUm9JR0ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2x6ZENCdlppQmhjbWQxYldWdWRITWdSWGgwY21GQmNtZHpMQ0IwYUdVZ1ptOXNiRzkzYVc1bklITjBaWEJ6SUdGeVpTQjBZV3RsYmpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnTVM0Z1RHVjBJSFJoY21kbGRDQmlaU0IwYUdVZ2RtRnNkV1VnYjJZZ1JpZHpJRnRiVkdGeVoyVjBSblZ1WTNScGIyNWRYVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QWdJR2x1ZEdWeWJtRnNJSEJ5YjNCbGNuUjVMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QXlMaUJKWmlCMFlYSm5aWFFnYUdGeklHNXZJRnRiUTI5dWMzUnlkV04wWFYwZ2FXNTBaWEp1WVd3Z2JXVjBhRzlrTENCaFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUNBZ1ZIbHdaVVZ5Y205eUlHVjRZMlZ3ZEdsdmJpQnBjeUIwYUhKdmQyNHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklETXVJRXhsZENCaWIzVnVaRUZ5WjNNZ1ltVWdkR2hsSUhaaGJIVmxJRzltSUVZbmN5QmJXMEp2ZFc1a1FYSm5jMTFkSUdsdWRHVnlibUZzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJQ0FnY0hKdmNHVnlkSGt1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRFF1SUV4bGRDQmhjbWR6SUdKbElHRWdibVYzSUd4cGMzUWdZMjl1ZEdGcGJtbHVaeUIwYUdVZ2MyRnRaU0IyWVd4MVpYTWdZWE1nZEdobFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUNBZ2JHbHpkQ0JpYjNWdVpFRnlaM01nYVc0Z2RHaGxJSE5oYldVZ2IzSmtaWElnWm05c2JHOTNaV1FnWW5rZ2RHaGxJSE5oYldWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnSUNCMllXeDFaWE1nWVhNZ2RHaGxJR3hwYzNRZ1JYaDBjbUZCY21keklHbHVJSFJvWlNCellXMWxJRzl5WkdWeUxseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlBMUxpQlNaWFIxY200Z2RHaGxJSEpsYzNWc2RDQnZaaUJqWVd4c2FXNW5JSFJvWlNCYlcwTnZibk4wY25WamRGMWRJR2x1ZEdWeWJtRnNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklDQWdiV1YwYUc5a0lHOW1JSFJoY21kbGRDQndjbTkyYVdScGJtY2dZWEpuY3lCaGN5QjBhR1VnWVhKbmRXMWxiblJ6TGx4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCaGNIQnNlUzVqWVd4c0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHRnlaMlYwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRnljbUY1WDJOdmJtTmhkQzVqWVd4c0tHRnlaM01zSUdGeWNtRjVYM05zYVdObExtTmhiR3dvWVhKbmRXMWxiblJ6S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ1JQWW1wbFkzUW9jbVZ6ZFd4MEtTQTlQVDBnY21WemRXeDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdNVFV1TXk0MExqVXVNU0JiVzBOaGJHeGRYVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QlhhR1Z1SUhSb1pTQmJXME5oYkd4ZFhTQnBiblJsY201aGJDQnRaWFJvYjJRZ2IyWWdZU0JtZFc1amRHbHZiaUJ2WW1wbFkzUXNJRVlzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJSGRvYVdOb0lIZGhjeUJqY21WaGRHVmtJSFZ6YVc1bklIUm9aU0JpYVc1a0lHWjFibU4wYVc5dUlHbHpJR05oYkd4bFpDQjNhWFJvSUdGY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnZEdocGN5QjJZV3gxWlNCaGJtUWdZU0JzYVhOMElHOW1JR0Z5WjNWdFpXNTBjeUJGZUhSeVlVRnlaM01zSUhSb1pTQm1iMnhzYjNkcGJtZGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2MzUmxjSE1nWVhKbElIUmhhMlZ1T2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUF4TGlCTVpYUWdZbTkxYm1SQmNtZHpJR0psSUhSb1pTQjJZV3gxWlNCdlppQkdKM01nVzF0Q2IzVnVaRUZ5WjNOZFhTQnBiblJsY201aGJGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlBZ0lIQnliM0JsY25SNUxseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlBeUxpQk1aWFFnWW05MWJtUlVhR2x6SUdKbElIUm9aU0IyWVd4MVpTQnZaaUJHSjNNZ1cxdENiM1Z1WkZSb2FYTmRYU0JwYm5SbGNtNWhiRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QWdJSEJ5YjNCbGNuUjVMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QXpMaUJNWlhRZ2RHRnlaMlYwSUdKbElIUm9aU0IyWVd4MVpTQnZaaUJHSjNNZ1cxdFVZWEpuWlhSR2RXNWpkR2x2YmwxZElHbHVkR1Z5Ym1Gc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUNBZ2NISnZjR1Z5ZEhrdVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SURRdUlFeGxkQ0JoY21keklHSmxJR0VnYm1WM0lHeHBjM1FnWTI5dWRHRnBibWx1WnlCMGFHVWdjMkZ0WlNCMllXeDFaWE1nWVhNZ2RHaGxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklDQWdiR2x6ZENCaWIzVnVaRUZ5WjNNZ2FXNGdkR2hsSUhOaGJXVWdiM0prWlhJZ1ptOXNiRzkzWldRZ1lua2dkR2hsSUhOaGJXVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z0lDQjJZV3gxWlhNZ1lYTWdkR2hsSUd4cGMzUWdSWGgwY21GQmNtZHpJR2x1SUhSb1pTQnpZVzFsSUc5eVpHVnlMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QTFMaUJTWlhSMWNtNGdkR2hsSUhKbGMzVnNkQ0J2WmlCallXeHNhVzVuSUhSb1pTQmJXME5oYkd4ZFhTQnBiblJsY201aGJDQnRaWFJvYjJSY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnSUNCdlppQjBZWEpuWlhRZ2NISnZkbWxrYVc1bklHSnZkVzVrVkdocGN5QmhjeUIwYUdVZ2RHaHBjeUIyWVd4MVpTQmhibVJjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdJQ0J3Y205MmFXUnBibWNnWVhKbmN5QmhjeUIwYUdVZ1lYSm5kVzFsYm5SekxseHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklHVnhkV2wyT2lCMFlYSm5aWFF1WTJGc2JDaDBhR2x6TENBdUxpNWliM1Z1WkVGeVozTXNJQzR1TG1GeVozTXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJoY0hCc2VTNWpZV3hzS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdGeVoyVjBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hoZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGeWNtRjVYMk52Ym1OaGRDNWpZV3hzS0dGeVozTXNJR0Z5Y21GNVgzTnNhV05sTG1OaGJHd29ZWEpuZFcxbGJuUnpLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdmVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnTVRVdUlFbG1JSFJvWlNCYlcwTnNZWE56WFYwZ2FXNTBaWEp1WVd3Z2NISnZjR1Z5ZEhrZ2IyWWdWR0Z5WjJWMElHbHpJRndpUm5WdVkzUnBiMjVjSWl3Z2RHaGxibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdJQ0FnSUdFdUlFeGxkQ0JNSUdKbElIUm9aU0JzWlc1bmRHZ2djSEp2Y0dWeWRIa2diMllnVkdGeVoyVjBJRzFwYm5WeklIUm9aU0JzWlc1bmRHZ2diMllnUVM1Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUNBZ0lDQmlMaUJUWlhRZ2RHaGxJR3hsYm1kMGFDQnZkMjRnY0hKdmNHVnlkSGtnYjJZZ1JpQjBieUJsYVhSb1pYSWdNQ0J2Y2lCTUxDQjNhR2xqYUdWMlpYSWdhWE5jYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJQ0FnSUNBZ0lHeGhjbWRsY2k1Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SURFMkxpQkZiSE5sSUhObGRDQjBhR1VnYkdWdVozUm9JRzkzYmlCd2NtOXdaWEowZVNCdlppQkdJSFJ2SURBdVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQmliM1Z1WkV4bGJtZDBhQ0E5SUcxaGVDZ3dMQ0IwWVhKblpYUXViR1Z1WjNSb0lDMGdZWEpuY3k1c1pXNW5kR2dwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBeE55NGdVMlYwSUhSb1pTQmhkSFJ5YVdKMWRHVnpJRzltSUhSb1pTQnNaVzVuZEdnZ2IzZHVJSEJ5YjNCbGNuUjVJRzltSUVZZ2RHOGdkR2hsSUhaaGJIVmxjMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdJQ0J6Y0dWamFXWnBaV1FnYVc0Z01UVXVNeTQxTGpFdVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1ltOTFibVJCY21keklEMGdXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR0p2ZFc1a1RHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoY25KaGVWOXdkWE5vTG1OaGJHd29ZbTkxYm1SQmNtZHpMQ0FuSkNjZ0t5QnBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdXRmhZSUVKMWFXeGtJR0VnWkhsdVlXMXBZeUJtZFc1amRHbHZiaUIzYVhSb0lHUmxjMmx5WldRZ1lXMXZkVzUwSUc5bUlHRnlaM1Z0Wlc1MGN5QnBjeUIwYUdVZ2IyNXNlVnh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdkMkY1SUhSdklITmxkQ0IwYUdVZ2JHVnVaM1JvSUhCeWIzQmxjblI1SUc5bUlHRWdablZ1WTNScGIyNHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpiaUJsYm5acGNtOXViV1Z1ZEhNZ2QyaGxjbVVnUTI5dWRHVnVkQ0JUWldOMWNtbDBlU0JRYjJ4cFkybGxjeUJsYm1GaWJHVmtJQ2hEYUhKdmJXVWdaWGgwWlc1emFXOXVjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR1p2Y2lCbGVDNHBJR0ZzYkNCMWMyVWdiMllnWlhaaGJDQnZjaUJHZFc1amRHbHZiaUJqYjNOMGNuVmpkRzl5SUhSb2NtOTNjeUJoYmlCbGVHTmxjSFJwYjI0dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCSWIzZGxkbVZ5SUdsdUlHRnNiQ0J2WmlCMGFHVnpaU0JsYm5acGNtOXViV1Z1ZEhNZ1JuVnVZM1JwYjI0dWNISnZkRzkwZVhCbExtSnBibVFnWlhocGMzUnpYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QmhibVFnYzI4Z2RHaHBjeUJqYjJSbElIZHBiR3dnYm1WMlpYSWdZbVVnWlhobFkzVjBaV1F1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmliM1Z1WkNBOUlDUkdkVzVqZEdsdmJpZ25ZbWx1WkdWeUp5d2dKM0psZEhWeWJpQm1kVzVqZEdsdmJpQW9KeUFySUdGeWNtRjVYMnB2YVc0dVkyRnNiQ2hpYjNWdVpFRnlaM01zSUNjc0p5a2dLeUFuS1hzZ2NtVjBkWEp1SUdKcGJtUmxjaTVoY0hCc2VTaDBhR2x6TENCaGNtZDFiV1Z1ZEhNcE95QjlKeWtvWW1sdVpHVnlLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSaGNtZGxkQzV3Y205MGIzUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRmJYQjBlUzV3Y205MGIzUjVjR1VnUFNCMFlYSm5aWFF1Y0hKdmRHOTBlWEJsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKdmRXNWtMbkJ5YjNSdmRIbHdaU0E5SUc1bGR5QkZiWEIwZVNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRU5zWldGdUlIVndJR1JoYm1kc2FXNW5JSEpsWm1WeVpXNWpaWE11WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUlcxd2RIa3VjSEp2ZEc5MGVYQmxJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1ZFOUVUMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdNVGd1SUZObGRDQjBhR1VnVzF0RmVIUmxibk5wWW14bFhWMGdhVzUwWlhKdVlXd2djSEp2Y0dWeWRIa2diMllnUmlCMGJ5QjBjblZsTGx4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCVVQwUlBYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXhPUzRnVEdWMElIUm9jbTkzWlhJZ1ltVWdkR2hsSUZ0YlZHaHliM2RVZVhCbFJYSnliM0pkWFNCbWRXNWpkR2x2YmlCUFltcGxZM1FnS0RFekxqSXVNeWt1WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUF5TUM0Z1EyRnNiQ0IwYUdVZ1cxdEVaV1pwYm1WUGQyNVFjbTl3WlhKMGVWMWRJR2x1ZEdWeWJtRnNJRzFsZEdodlpDQnZaaUJHSUhkcGRHaGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklDQWdZWEpuZFcxbGJuUnpJRndpWTJGc2JHVnlYQ0lzSUZCeWIzQmxjblI1UkdWelkzSnBjSFJ2Y2lCN1cxdEhaWFJkWFRvZ2RHaHliM2RsY2l3Z1cxdFRaWFJkWFRwY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUNBZ2RHaHliM2RsY2l3Z1cxdEZiblZ0WlhKaFlteGxYVjA2SUdaaGJITmxMQ0JiVzBOdmJtWnBaM1Z5WVdKc1pWMWRPaUJtWVd4elpYMHNJR0Z1WkZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnSUNCbVlXeHpaUzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJREl4TGlCRFlXeHNJSFJvWlNCYlcwUmxabWx1WlU5M2JsQnliM0JsY25SNVhWMGdhVzUwWlhKdVlXd2diV1YwYUc5a0lHOW1JRVlnZDJsMGFGeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z0lDQmhjbWQxYldWdWRITWdYQ0poY21kMWJXVnVkSE5jSWl3Z1VISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUlIdGJXMGRsZEYxZE9pQjBhSEp2ZDJWeUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z0lDQmJXMU5sZEYxZE9pQjBhSEp2ZDJWeUxDQmJXMFZ1ZFcxbGNtRmliR1ZkWFRvZ1ptRnNjMlVzSUZ0YlEyOXVabWxuZFhKaFlteGxYVjA2SUdaaGJITmxmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJQ0FnWVc1a0lHWmhiSE5sTGx4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCVVQwUlBYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5Qk9UMVJGSUVaMWJtTjBhVzl1SUc5aWFtVmpkSE1nWTNKbFlYUmxaQ0IxYzJsdVp5QkdkVzVqZEdsdmJpNXdjbTkwYjNSNWNHVXVZbWx1WkNCa2J5QnViM1JjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR2hoZG1VZ1lTQndjbTkwYjNSNWNHVWdjSEp2Y0dWeWRIa2diM0lnZEdobElGdGJRMjlrWlYxZExDQmJXMFp2Y20xaGJGQmhjbUZ0WlhSbGNuTmRYU3dnWVc1a1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCYlcxTmpiM0JsWFYwZ2FXNTBaWEp1WVd3Z2NISnZjR1Z5ZEdsbGN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGaFlXQ0JqWVc0bmRDQmtaV3hsZEdVZ2NISnZkRzkwZVhCbElHbHVJSEIxY21VdGFuTXVYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJREl5TGlCU1pYUjFjbTRnUmk1Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmliM1Z1WkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ0x5OGdYMUJzWldGelpTQnViM1JsT2lCVGFHOXlkR04xZEhNZ1lYSmxJR1JsWm1sdVpXUWdZV1owWlhJZ1lFWjFibU4wYVc5dUxuQnliM1J2ZEhsd1pTNWlhVzVrWUNCaGN5QjNaVnh1SUNBZ0lDOHZJSFZ6WlNCcGRDQnBiaUJrWldacGJtbHVaeUJ6YUc5eWRHTjFkSE11WEc0Z0lDQWdkbUZ5SUc5M2JuTWdQU0JqWVd4c0xtSnBibVFvVDJKcVpXTjBVSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNUtUdGNiaUFnSUNCMllYSWdkRzlUZEhJZ1BTQmpZV3hzTG1KcGJtUW9UMkpxWldOMFVISnZkRzkwZVhCbExuUnZVM1J5YVc1bktUdGNiaUFnSUNCMllYSWdZWEp5WVhsVGJHbGpaU0E5SUdOaGJHd3VZbWx1WkNoaGNuSmhlVjl6YkdsalpTazdYRzRnSUNBZ2RtRnlJR0Z5Y21GNVUyeHBZMlZCY0hCc2VTQTlJR0Z3Y0d4NUxtSnBibVFvWVhKeVlYbGZjMnhwWTJVcE8xeHVJQ0FnSUhaaGNpQnpkSEpUYkdsalpTQTlJR05oYkd3dVltbHVaQ2hUZEhKcGJtZFFjbTkwYjNSNWNHVXVjMnhwWTJVcE8xeHVJQ0FnSUhaaGNpQnpkSEpUY0d4cGRDQTlJR05oYkd3dVltbHVaQ2hUZEhKcGJtZFFjbTkwYjNSNWNHVXVjM0JzYVhRcE8xeHVJQ0FnSUhaaGNpQnpkSEpKYm1SbGVFOW1JRDBnWTJGc2JDNWlhVzVrS0ZOMGNtbHVaMUJ5YjNSdmRIbHdaUzVwYm1SbGVFOW1LVHRjYmlBZ0lDQjJZWElnY0hWemFFTmhiR3dnUFNCallXeHNMbUpwYm1Rb1lYSnlZWGxmY0hWemFDazdYRzRnSUNBZ2RtRnlJR2x6Ulc1MWJTQTlJR05oYkd3dVltbHVaQ2hQWW1wbFkzUlFjbTkwYjNSNWNHVXVjSEp2Y0dWeWRIbEpjMFZ1ZFcxbGNtRmliR1VwTzF4dUlDQWdJSFpoY2lCaGNuSmhlVk52Y25RZ1BTQmpZV3hzTG1KcGJtUW9RWEp5WVhsUWNtOTBiM1I1Y0dVdWMyOXlkQ2s3WEc1Y2JpQWdJQ0F2TDF4dUlDQWdJQzh2SUVGeWNtRjVYRzRnSUNBZ0x5OGdQVDA5UFQxY2JpQWdJQ0F2TDF4dVhHNGdJQ0FnZG1GeUlHbHpRWEp5WVhrZ1BTQWtRWEp5WVhrdWFYTkJjbkpoZVNCOGZDQm1kVzVqZEdsdmJpQnBjMEZ5Y21GNUtHOWlhaWtnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEc5VGRISW9iMkpxS1NBOVBUMGdKMXR2WW1wbFkzUWdRWEp5WVhsZEp6dGNiaUFnSUNCOU8xeHVYRzRnSUNBZ0x5OGdSVk0xSURFMUxqUXVOQzR4TWx4dUlDQWdJQzh2SUdoMGRIQTZMeTlsY3pVdVoybDBhSFZpTG1OdmJTOGplREUxTGpRdU5DNHhNMXh1SUNBZ0lDOHZJRkpsZEhWeWJpQnNaVzRyWVhKblEyOTFiblF1WEc0Z0lDQWdMeThnVzJKMVoyWnBlQ3dnYVdWc2REaGRYRzRnSUNBZ0x5OGdTVVVnUENBNElHSjFaem9nVzEwdWRXNXphR2xtZENnd0tTQTlQVDBnZFc1a1pXWnBibVZrSUdKMWRDQnphRzkxYkdRZ1ltVWdYQ0l4WENKY2JpQWdJQ0IyWVhJZ2FHRnpWVzV6YUdsbWRGSmxkSFZ5YmxaaGJIVmxRblZuSUQwZ1cxMHVkVzV6YUdsbWRDZ3dLU0FoUFQwZ01UdGNiaUFnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUhWdWMyaHBablE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGeWNtRjVYM1Z1YzJocFpuUXVZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUdoaGMxVnVjMmhwWm5SU1pYUjFjbTVXWVd4MVpVSjFaeWs3WEc1Y2JpQWdJQ0F2THlCRlV6VWdNVFV1TkM0ekxqSmNiaUFnSUNBdkx5Qm9kSFJ3T2k4dlpYTTFMbWRwZEdoMVlpNWpiMjB2STNneE5TNDBMak11TWx4dUlDQWdJQzh2SUdoMGRIQnpPaTh2WkdWMlpXeHZjR1Z5TG0xdmVtbHNiR0V1YjNKbkwyVnVMMHBoZG1GVFkzSnBjSFF2VW1WbVpYSmxibU5sTDBkc2IySmhiRjlQWW1wbFkzUnpMMEZ5Y21GNUwybHpRWEp5WVhsY2JpQWdJQ0JrWldacGJtVlFjbTl3WlhKMGFXVnpLQ1JCY25KaGVTd2dleUJwYzBGeWNtRjVPaUJwYzBGeWNtRjVJSDBwTzF4dVhHNGdJQ0FnTHk4Z1ZHaGxJRWx6UTJGc2JHRmliR1VvS1NCamFHVmpheUJwYmlCMGFHVWdRWEp5WVhrZ1puVnVZM1JwYjI1elhHNGdJQ0FnTHk4Z2FHRnpJR0psWlc0Z2NtVndiR0ZqWldRZ2QybDBhQ0JoSUhOMGNtbGpkQ0JqYUdWamF5QnZiaUIwYUdWY2JpQWdJQ0F2THlCcGJuUmxjbTVoYkNCamJHRnpjeUJ2WmlCMGFHVWdiMkpxWldOMElIUnZJSFJ5WVhBZ1kyRnpaWE1nZDJobGNtVmNiaUFnSUNBdkx5QjBhR1VnY0hKdmRtbGtaV1FnWm5WdVkzUnBiMjRnZDJGeklHRmpkSFZoYkd4NUlHRWdjbVZuZFd4aGNseHVJQ0FnSUM4dklHVjRjSEpsYzNOcGIyNGdiR2wwWlhKaGJDd2dkMmhwWTJnZ2FXNGdWamdnWVc1a1hHNGdJQ0FnTHk4Z1NtRjJZVk5qY21sd2RFTnZjbVVnYVhNZ1lTQjBlWEJsYjJZZ1hDSm1kVzVqZEdsdmJsd2lMaUFnVDI1c2VTQnBibHh1SUNBZ0lDOHZJRlk0SUdGeVpTQnlaV2QxYkdGeUlHVjRjSEpsYzNOcGIyNGdiR2wwWlhKaGJITWdjR1Z5YldsMGRHVmtJR0Z6WEc0Z0lDQWdMeThnY21Wa2RXTmxJSEJoY21GdFpYUmxjbk1zSUhOdklHbDBJR2x6SUdSbGMybHlZV0pzWlNCcGJpQjBhR1ZjYmlBZ0lDQXZMeUJuWlc1bGNtRnNJR05oYzJVZ1ptOXlJSFJvWlNCemFHbHRJSFJ2SUcxaGRHTm9JSFJvWlNCdGIzSmxYRzRnSUNBZ0x5OGdjM1J5YVdOMElHRnVaQ0JqYjIxdGIyNGdZbVZvWVhacGIzSWdiMllnY21WcVpXTjBhVzVuSUhKbFozVnNZWEpjYmlBZ0lDQXZMeUJsZUhCeVpYTnphVzl1Y3k1Y2JseHVJQ0FnSUM4dklFVlROU0F4TlM0MExqUXVNVGhjYmlBZ0lDQXZMeUJvZEhSd09pOHZaWE0xTG1kcGRHaDFZaTVqYjIwdkkzZ3hOUzQwTGpRdU1UaGNiaUFnSUNBdkx5Qm9kSFJ3Y3pvdkwyUmxkbVZzYjNCbGNpNXRiM3BwYkd4aExtOXlaeTlsYmk5S1lYWmhVMk55YVhCMEwxSmxabVZ5Wlc1alpTOUhiRzlpWVd4ZlQySnFaV04wY3k5aGNuSmhlUzltYjNKRllXTm9YRzVjYmlBZ0lDQXZMeUJEYUdWamF5Qm1ZV2xzZFhKbElHOW1JR0o1TFdsdVpHVjRJR0ZqWTJWemN5QnZaaUJ6ZEhKcGJtY2dZMmhoY21GamRHVnljeUFvU1VVZ1BDQTVLVnh1SUNBZ0lDOHZJR0Z1WkNCbVlXbHNkWEpsSUc5bUlHQXdJR2x1SUdKdmVHVmtVM1J5YVc1bllDQW9VbWhwYm04cFhHNGdJQ0FnZG1GeUlHSnZlR1ZrVTNSeWFXNW5JRDBnSkU5aWFtVmpkQ2duWVNjcE8xeHVJQ0FnSUhaaGNpQnpjR3hwZEZOMGNtbHVaeUE5SUdKdmVHVmtVM1J5YVc1bld6QmRJQ0U5UFNBbllTY2dmSHdnSVNnd0lHbHVJR0p2ZUdWa1UzUnlhVzVuS1R0Y2JseHVJQ0FnSUhaaGNpQndjbTl3WlhKc2VVSnZlR1Z6UTI5dWRHVjRkQ0E5SUdaMWJtTjBhVzl1SUhCeWIzQmxjbXg1UW05NFpXUW9iV1YwYUc5a0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUVOb1pXTnJJRzV2WkdVZ01DNDJMakl4SUdKMVp5QjNhR1Z5WlNCMGFHbHlaQ0J3WVhKaGJXVjBaWElnYVhNZ2JtOTBJR0p2ZUdWa1hHNGdJQ0FnSUNBZ0lIWmhjaUJ3Y205d1pYSnNlVUp2ZUdWelRtOXVVM1J5YVdOMElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEJ5YjNCbGNteDVRbTk0WlhOVGRISnBZM1FnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2RHaHlaWGRGZUdObGNIUnBiMjRnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWxkR2h2WkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRaWFJvYjJRdVkyRnNiQ2duWm05dkp5d2dablZ1WTNScGIyNGdLRjhzSUY5ZkxDQmpiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVkR1Y0ZENBaFBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5YjNCbGNteDVRbTk0WlhOT2IyNVRkSEpwWTNRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXVjBhRzlrTG1OaGJHd29XekZkTENCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkMWMyVWdjM1J5YVdOMEp6dGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtOXdaWEpzZVVKdmVHVnpVM1J5YVdOMElEMGdkSGx3Wlc5bUlIUm9hWE1nUFQwOUlDZHpkSEpwYm1jbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHNJQ2Q0SnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHlaWGRGZUdObGNIUnBiMjRnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQWhJVzFsZEdodlpDQW1KaUFoZEdoeVpYZEZlR05sY0hScGIyNGdKaVlnY0hKdmNHVnliSGxDYjNobGMwNXZibE4wY21samRDQW1KaUJ3Y205d1pYSnNlVUp2ZUdWelUzUnlhV04wTzF4dUlDQWdJSDA3WEc1Y2JpQWdJQ0JrWldacGJtVlFjbTl3WlhKMGFXVnpLRUZ5Y21GNVVISnZkRzkwZVhCbExDQjdYRzRnSUNBZ0lDQWdJR1p2Y2tWaFkyZzZJR1oxYm1OMGFXOXVJR1p2Y2tWaFkyZ29ZMkZzYkdKaFkydG1iaThxTENCMGFHbHpRWEpuS2k4cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnZZbXBsWTNRZ1BTQkZVeTVVYjA5aWFtVmpkQ2gwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnpaV3htSUQwZ2MzQnNhWFJUZEhKcGJtY2dKaVlnYVhOVGRISnBibWNvZEdocGN5a2dQeUJ6ZEhKVGNHeHBkQ2gwYUdsekxDQW5KeWtnT2lCdlltcGxZM1E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYVNBOUlDMHhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR3hsYm1kMGFDQTlJRVZUTGxSdlZXbHVkRE15S0hObGJHWXViR1Z1WjNSb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQlVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ZDQTlJR0Z5WjNWdFpXNTBjMXN4WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnU1dZZ2JtOGdZMkZzYkdKaFkyc2dablZ1WTNScGIyNGdiM0lnYVdZZ1kyRnNiR0poWTJzZ2FYTWdibTkwSUdFZ1kyRnNiR0ZpYkdVZ1puVnVZM1JwYjI1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYTkRZV3hzWVdKc1pTaGpZV3hzWW1GamEyWnVLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb0owRnljbUY1TG5CeWIzUnZkSGx3WlM1bWIzSkZZV05vSUdOaGJHeGlZV05ySUcxMWMzUWdZbVVnWVNCbWRXNWpkR2x2YmljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9LeXRwSUR3Z2JHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2tnYVc0Z2MyVnNaaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJKYm5admEyVWdkR2hsSUdOaGJHeGlZV05ySUdaMWJtTjBhVzl1SUhkcGRHZ2dZMkZzYkN3Z2NHRnpjMmx1WnlCaGNtZDFiV1Z1ZEhNNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUdOdmJuUmxlSFFzSUhCeWIzQmxjblI1SUhaaGJIVmxMQ0J3Y205d1pYSjBlU0JyWlhrc0lIUm9hWE5CY21jZ2IySnFaV04wWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdWQ0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYkd4aVlXTnJabTRvYzJWc1psdHBYU3dnYVN3Z2IySnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhiR3hpWVdOclptNHVZMkZzYkNoVUxDQnpaV3htVzJsZExDQnBMQ0J2WW1wbFkzUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z0lYQnliM0JsY214NVFtOTRaWE5EYjI1MFpYaDBLRUZ5Y21GNVVISnZkRzkwZVhCbExtWnZja1ZoWTJncEtUdGNibHh1SUNBZ0lDOHZJRVZUTlNBeE5TNDBMalF1TVRsY2JpQWdJQ0F2THlCb2RIUndPaTh2WlhNMUxtZHBkR2gxWWk1amIyMHZJM2d4TlM0MExqUXVNVGxjYmlBZ0lDQXZMeUJvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5bGJpOURiM0psWDBwaGRtRlRZM0pwY0hSZk1TNDFYMUpsWm1WeVpXNWpaUzlQWW1wbFkzUnpMMEZ5Y21GNUwyMWhjRnh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb1FYSnlZWGxRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2JXRndPaUJtZFc1amRHbHZiaUJ0WVhBb1kyRnNiR0poWTJ0bWJpOHFMQ0IwYUdselFYSm5LaThwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdlltcGxZM1FnUFNCRlV5NVViMDlpYW1WamRDaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCelpXeG1JRDBnYzNCc2FYUlRkSEpwYm1jZ0ppWWdhWE5UZEhKcGJtY29kR2hwY3lrZ1B5QnpkSEpUY0d4cGRDaDBhR2x6TENBbkp5a2dPaUJ2WW1wbFkzUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiR1Z1WjNSb0lEMGdSVk11Vkc5VmFXNTBNeklvYzJWc1ppNXNaVzVuZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlDUkJjbkpoZVNoc1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUZRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBK0lERXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JVSUQwZ1lYSm5kVzFsYm5Seld6RmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpaaUJ1YnlCallXeHNZbUZqYXlCbWRXNWpkR2x2YmlCdmNpQnBaaUJqWVd4c1ltRmpheUJwY3lCdWIzUWdZU0JqWVd4c1lXSnNaU0JtZFc1amRHbHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBOaGJHeGhZbXhsS0dOaGJHeGlZV05yWm00cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWduUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbTFoY0NCallXeHNZbUZqYXlCdGRYTjBJR0psSUdFZ1puVnVZM1JwYjI0bktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCc1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocElHbHVJSE5sYkdZcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCVUlEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpkV3gwVzJsZElEMGdZMkZzYkdKaFkydG1iaWh6Wld4bVcybGRMQ0JwTENCdlltcGxZM1FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpkV3gwVzJsZElEMGdZMkZzYkdKaFkydG1iaTVqWVd4c0tGUXNJSE5sYkdaYmFWMHNJR2tzSUc5aWFtVmpkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTd2dJWEJ5YjNCbGNteDVRbTk0WlhORGIyNTBaWGgwS0VGeWNtRjVVSEp2ZEc5MGVYQmxMbTFoY0NrcE8xeHVYRzRnSUNBZ0x5OGdSVk0xSURFMUxqUXVOQzR5TUZ4dUlDQWdJQzh2SUdoMGRIQTZMeTlsY3pVdVoybDBhSFZpTG1OdmJTOGplREUxTGpRdU5DNHlNRnh1SUNBZ0lDOHZJR2gwZEhCek9pOHZaR1YyWld4dmNHVnlMbTF2ZW1sc2JHRXViM0puTDJWdUwwTnZjbVZmU21GMllWTmpjbWx3ZEY4eExqVmZVbVZtWlhKbGJtTmxMMDlpYW1WamRITXZRWEp5WVhrdlptbHNkR1Z5WEc0Z0lDQWdaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aEJjbkpoZVZCeWIzUnZkSGx3WlN3Z2UxeHVJQ0FnSUNBZ0lDQm1hV3gwWlhJNklHWjFibU4wYVc5dUlHWnBiSFJsY2loallXeHNZbUZqYTJadUx5b3NJSFJvYVhOQmNtY3FMeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUc5aWFtVmpkQ0E5SUVWVExsUnZUMkpxWldOMEtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhObGJHWWdQU0J6Y0d4cGRGTjBjbWx1WnlBbUppQnBjMU4wY21sdVp5aDBhR2x6S1NBL0lITjBjbE53YkdsMEtIUm9hWE1zSUNjbktTQTZJRzlpYW1WamREdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQkZVeTVVYjFWcGJuUXpNaWh6Wld4bUxteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1ZEdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGhjbWQxYldWdWRITXViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZRZ1BTQmhjbWQxYldWdWRITmJNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRWxtSUc1dklHTmhiR3hpWVdOcklHWjFibU4wYVc5dUlHOXlJR2xtSUdOaGJHeGlZV05ySUdseklHNXZkQ0JoSUdOaGJHeGhZbXhsSUdaMWJtTjBhVzl1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdselEyRnNiR0ZpYkdVb1kyRnNiR0poWTJ0bWJpa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkQmNuSmhlUzV3Y205MGIzUjVjR1V1Wm1sc2RHVnlJR05oYkd4aVlXTnJJRzExYzNRZ1ltVWdZU0JtZFc1amRHbHZiaWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2tnYVc0Z2MyVnNaaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlITmxiR1piYVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnVkNBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NnUHlCallXeHNZbUZqYTJadUtIWmhiSFZsTENCcExDQnZZbXBsWTNRcElEb2dZMkZzYkdKaFkydG1iaTVqWVd4c0tGUXNJSFpoYkhWbExDQnBMQ0J2WW1wbFkzUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3ZFhOb1EyRnNiQ2h5WlhOMWJIUXNJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TENBaGNISnZjR1Z5YkhsQ2IzaGxjME52Ym5SbGVIUW9RWEp5WVhsUWNtOTBiM1I1Y0dVdVptbHNkR1Z5S1NrN1hHNWNiaUFnSUNBdkx5QkZVelVnTVRVdU5DNDBMakUyWEc0Z0lDQWdMeThnYUhSMGNEb3ZMMlZ6TlM1bmFYUm9kV0l1WTI5dEx5TjRNVFV1TkM0MExqRTJYRzRnSUNBZ0x5OGdhSFIwY0hNNkx5OWtaWFpsYkc5d1pYSXViVzk2YVd4c1lTNXZjbWN2Wlc0dlNtRjJZVk5qY21sd2RDOVNaV1psY21WdVkyVXZSMnh2WW1Gc1gwOWlhbVZqZEhNdlFYSnlZWGt2WlhabGNubGNiaUFnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUdWMlpYSjVPaUJtZFc1amRHbHZiaUJsZG1WeWVTaGpZV3hzWW1GamEyWnVMeW9zSUhSb2FYTkJjbWNxTHlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHOWlhbVZqZENBOUlFVlRMbFJ2VDJKcVpXTjBLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITmxiR1lnUFNCemNHeHBkRk4wY21sdVp5QW1KaUJwYzFOMGNtbHVaeWgwYUdsektTQS9JSE4wY2xOd2JHbDBLSFJvYVhNc0lDY25LU0E2SUc5aWFtVmpkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJzWlc1bmRHZ2dQU0JGVXk1VWIxVnBiblF6TWloelpXeG1MbXhsYm1kMGFDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdWRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoY21kMWJXVnVkSE11YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGUWdQU0JoY21kMWJXVnVkSE5iTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUVsbUlHNXZJR05oYkd4aVlXTnJJR1oxYm1OMGFXOXVJRzl5SUdsbUlHTmhiR3hpWVdOcklHbHpJRzV2ZENCaElHTmhiR3hoWW14bElHWjFibU4wYVc5dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXbHpRMkZzYkdGaWJHVW9ZMkZzYkdKaFkydG1iaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZEJjbkpoZVM1d2NtOTBiM1I1Y0dVdVpYWmxjbmtnWTJGc2JHSmhZMnNnYlhWemRDQmlaU0JoSUdaMWJtTjBhVzl1SnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVNCcGJpQnpaV3htSUNZbUlDRW9kSGx3Wlc5bUlGUWdQVDA5SUNkMWJtUmxabWx1WldRbklEOGdZMkZzYkdKaFkydG1iaWh6Wld4bVcybGRMQ0JwTENCdlltcGxZM1FwSURvZ1kyRnNiR0poWTJ0bWJpNWpZV3hzS0ZRc0lITmxiR1piYVYwc0lHa3NJRzlpYW1WamRDa3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHNJQ0Z3Y205d1pYSnNlVUp2ZUdWelEyOXVkR1Y0ZENoQmNuSmhlVkJ5YjNSdmRIbHdaUzVsZG1WeWVTa3BPMXh1WEc0Z0lDQWdMeThnUlZNMUlERTFMalF1TkM0eE4xeHVJQ0FnSUM4dklHaDBkSEE2THk5bGN6VXVaMmwwYUhWaUxtTnZiUzhqZURFMUxqUXVOQzR4TjF4dUlDQWdJQzh2SUdoMGRIQnpPaTh2WkdWMlpXeHZjR1Z5TG0xdmVtbHNiR0V1YjNKbkwyVnVMMHBoZG1GVFkzSnBjSFF2VW1WbVpYSmxibU5sTDBkc2IySmhiRjlQWW1wbFkzUnpMMEZ5Y21GNUwzTnZiV1ZjYmlBZ0lDQmtaV1pwYm1WUWNtOXdaWEowYVdWektFRnljbUY1VUhKdmRHOTBlWEJsTENCN1hHNGdJQ0FnSUNBZ0lITnZiV1U2SUdaMWJtTjBhVzl1SUhOdmJXVW9ZMkZzYkdKaFkydG1iaThxTENCMGFHbHpRWEpuSUNvdktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiMkpxWldOMElEMGdSVk11Vkc5UFltcGxZM1FvZEdocGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdjMlZzWmlBOUlITndiR2wwVTNSeWFXNW5JQ1ltSUdselUzUnlhVzVuS0hSb2FYTXBJRDhnYzNSeVUzQnNhWFFvZEdocGN5d2dKeWNwSURvZ2IySnFaV04wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUd4bGJtZDBhQ0E5SUVWVExsUnZWV2x1ZERNeUtITmxiR1l1YkdWdVozUm9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJVTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dGeVozVnRaVzUwY3k1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdWQ0E5SUdGeVozVnRaVzUwYzFzeFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1NXWWdibThnWTJGc2JHSmhZMnNnWm5WdVkzUnBiMjRnYjNJZ2FXWWdZMkZzYkdKaFkyc2dhWE1nYm05MElHRWdZMkZzYkdGaWJHVWdablZ1WTNScGIyNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hhWE5EWVd4c1lXSnNaU2hqWVd4c1ltRmphMlp1S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9KMEZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiMjFsSUdOaGJHeGlZV05ySUcxMWMzUWdZbVVnWVNCbWRXNWpkR2x2YmljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0drZ2FXNGdjMlZzWmlBbUppQW9kSGx3Wlc5bUlGUWdQVDA5SUNkMWJtUmxabWx1WldRbklEOGdZMkZzYkdKaFkydG1iaWh6Wld4bVcybGRMQ0JwTENCdlltcGxZM1FwSURvZ1kyRnNiR0poWTJ0bWJpNWpZV3hzS0ZRc0lITmxiR1piYVYwc0lHa3NJRzlpYW1WamRDa3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHNJQ0Z3Y205d1pYSnNlVUp2ZUdWelEyOXVkR1Y0ZENoQmNuSmhlVkJ5YjNSdmRIbHdaUzV6YjIxbEtTazdYRzVjYmlBZ0lDQXZMeUJGVXpVZ01UVXVOQzQwTGpJeFhHNGdJQ0FnTHk4Z2FIUjBjRG92TDJWek5TNW5hWFJvZFdJdVkyOXRMeU40TVRVdU5DNDBMakl4WEc0Z0lDQWdMeThnYUhSMGNITTZMeTlrWlhabGJHOXdaWEl1Ylc5NmFXeHNZUzV2Y21jdlpXNHZRMjl5WlY5S1lYWmhVMk55YVhCMFh6RXVOVjlTWldabGNtVnVZMlV2VDJKcVpXTjBjeTlCY25KaGVTOXlaV1IxWTJWY2JpQWdJQ0IyWVhJZ2NtVmtkV05sUTI5bGNtTmxjMVJ2VDJKcVpXTjBJRDBnWm1Gc2MyVTdYRzRnSUNBZ2FXWWdLRUZ5Y21GNVVISnZkRzkwZVhCbExuSmxaSFZqWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaV1IxWTJWRGIyVnlZMlZ6Vkc5UFltcGxZM1FnUFNCMGVYQmxiMllnUVhKeVlYbFFjbTkwYjNSNWNHVXVjbVZrZFdObExtTmhiR3dvSjJWek5TY3NJR1oxYm1OMGFXOXVJQ2hmTENCZlh5d2dYMTlmTENCc2FYTjBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JHbHpkRHRjYmlBZ0lDQWdJQ0FnZlNrZ1BUMDlJQ2R2WW1wbFkzUW5PMXh1SUNBZ0lIMWNiaUFnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUhKbFpIVmpaVG9nWm5WdVkzUnBiMjRnY21Wa2RXTmxLR05oYkd4aVlXTnJabTR2S2l3Z2FXNXBkR2xoYkZaaGJIVmxLaThwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdlltcGxZM1FnUFNCRlV5NVViMDlpYW1WamRDaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCelpXeG1JRDBnYzNCc2FYUlRkSEpwYm1jZ0ppWWdhWE5UZEhKcGJtY29kR2hwY3lrZ1B5QnpkSEpUY0d4cGRDaDBhR2x6TENBbkp5a2dPaUJ2WW1wbFkzUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiR1Z1WjNSb0lEMGdSVk11Vkc5VmFXNTBNeklvYzJWc1ppNXNaVzVuZEdncE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpaaUJ1YnlCallXeHNZbUZqYXlCbWRXNWpkR2x2YmlCdmNpQnBaaUJqWVd4c1ltRmpheUJwY3lCdWIzUWdZU0JqWVd4c1lXSnNaU0JtZFc1amRHbHZibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBOaGJHeGhZbXhsS0dOaGJHeGlZV05yWm00cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWduUVhKeVlYa3VjSEp2ZEc5MGVYQmxMbkpsWkhWalpTQmpZV3hzWW1GamF5QnRkWE4wSUdKbElHRWdablZ1WTNScGIyNG5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdibThnZG1Gc2RXVWdkRzhnY21WMGRYSnVJR2xtSUc1dklHbHVhWFJwWVd3Z2RtRnNkV1VnWVc1a0lHRnVJR1Z0Y0hSNUlHRnljbUY1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYkdWdVozUm9JRDA5UFNBd0lDWW1JR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQVDA5SURFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2R5WldSMVkyVWdiMllnWlcxd2RIa2dZWEp5WVhrZ2QybDBhQ0J1YnlCcGJtbDBhV0ZzSUhaaGJIVmxKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnlaWE4xYkhRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBK1BTQXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBJRDBnWVhKbmRXMWxiblJ6V3pGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrYnlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocElHbHVJSE5sYkdZcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlITmxiR1piYVNzclhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdhV1lnWVhKeVlYa2dZMjl1ZEdGcGJuTWdibThnZG1Gc2RXVnpMQ0J1YnlCcGJtbDBhV0ZzSUhaaGJIVmxJSFJ2SUhKbGRIVnlibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9LeXRwSUQ0OUlHeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ25jbVZrZFdObElHOW1JR1Z0Y0hSNUlHRnljbUY1SUhkcGRHZ2dibThnYVc1cGRHbGhiQ0IyWVd4MVpTY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQjNhR2xzWlNBb2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvT3lCcElEd2diR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hU0JwYmlCelpXeG1LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlHTmhiR3hpWVdOclptNG9jbVZ6ZFd4MExDQnpaV3htVzJsZExDQnBMQ0J2WW1wbFkzUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUNGeVpXUjFZMlZEYjJWeVkyVnpWRzlQWW1wbFkzUXBPMXh1WEc0Z0lDQWdMeThnUlZNMUlERTFMalF1TkM0eU1seHVJQ0FnSUM4dklHaDBkSEE2THk5bGN6VXVaMmwwYUhWaUxtTnZiUzhqZURFMUxqUXVOQzR5TWx4dUlDQWdJQzh2SUdoMGRIQnpPaTh2WkdWMlpXeHZjR1Z5TG0xdmVtbHNiR0V1YjNKbkwyVnVMME52Y21WZlNtRjJZVk5qY21sd2RGOHhMalZmVW1WbVpYSmxibU5sTDA5aWFtVmpkSE12UVhKeVlYa3ZjbVZrZFdObFVtbG5hSFJjYmlBZ0lDQjJZWElnY21Wa2RXTmxVbWxuYUhSRGIyVnlZMlZ6Vkc5UFltcGxZM1FnUFNCbVlXeHpaVHRjYmlBZ0lDQnBaaUFvUVhKeVlYbFFjbTkwYjNSNWNHVXVjbVZrZFdObFVtbG5hSFFwSUh0Y2JpQWdJQ0FnSUNBZ2NtVmtkV05sVW1sbmFIUkRiMlZ5WTJWelZHOVBZbXBsWTNRZ1BTQjBlWEJsYjJZZ1FYSnlZWGxRY205MGIzUjVjR1V1Y21Wa2RXTmxVbWxuYUhRdVkyRnNiQ2duWlhNMUp5d2dablZ1WTNScGIyNGdLRjhzSUY5ZkxDQmZYMThzSUd4cGMzUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCc2FYTjBPMXh1SUNBZ0lDQWdJQ0I5S1NBOVBUMGdKMjlpYW1WamRDYzdYRzRnSUNBZ2ZWeHVJQ0FnSUdSbFptbHVaVkJ5YjNCbGNuUnBaWE1vUVhKeVlYbFFjbTkwYjNSNWNHVXNJSHRjYmlBZ0lDQWdJQ0FnY21Wa2RXTmxVbWxuYUhRNklHWjFibU4wYVc5dUlISmxaSFZqWlZKcFoyaDBLR05oYkd4aVlXTnJabTR2S2l3Z2FXNXBkR2xoYkNvdktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiMkpxWldOMElEMGdSVk11Vkc5UFltcGxZM1FvZEdocGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdjMlZzWmlBOUlITndiR2wwVTNSeWFXNW5JQ1ltSUdselUzUnlhVzVuS0hSb2FYTXBJRDhnYzNSeVUzQnNhWFFvZEdocGN5d2dKeWNwSURvZ2IySnFaV04wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUd4bGJtZDBhQ0E5SUVWVExsUnZWV2x1ZERNeUtITmxiR1l1YkdWdVozUm9LVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnU1dZZ2JtOGdZMkZzYkdKaFkyc2dablZ1WTNScGIyNGdiM0lnYVdZZ1kyRnNiR0poWTJzZ2FYTWdibTkwSUdFZ1kyRnNiR0ZpYkdVZ1puVnVZM1JwYjI1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYTkRZV3hzWVdKc1pTaGpZV3hzWW1GamEyWnVLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb0owRnljbUY1TG5CeWIzUnZkSGx3WlM1eVpXUjFZMlZTYVdkb2RDQmpZV3hzWW1GamF5QnRkWE4wSUdKbElHRWdablZ1WTNScGIyNG5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdibThnZG1Gc2RXVWdkRzhnY21WMGRYSnVJR2xtSUc1dklHbHVhWFJwWVd3Z2RtRnNkV1VzSUdWdGNIUjVJR0Z5Y21GNVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JHVnVaM1JvSUQwOVBTQXdJQ1ltSUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkeVpXUjFZMlZTYVdkb2RDQnZaaUJsYlhCMGVTQmhjbkpoZVNCM2FYUm9JRzV2SUdsdWFYUnBZV3dnZG1Gc2RXVW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2REdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnBJRDBnYkdWdVozUm9JQzBnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUQ0OUlESXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0JoY21kMWJXVnVkSE5iTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1J2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0drZ2FXNGdjMlZzWmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpkV3gwSUQwZ2MyVnNabHRwTFMxZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QnBaaUJoY25KaGVTQmpiMjUwWVdsdWN5QnVieUIyWVd4MVpYTXNJRzV2SUdsdWFYUnBZV3dnZG1Gc2RXVWdkRzhnY21WMGRYSnVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ3RMV2tnUENBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2R5WldSMVkyVlNhV2RvZENCdlppQmxiWEIwZVNCaGNuSmhlU0IzYVhSb0lHNXZJR2x1YVhScFlXd2dkbUZzZFdVbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ2QyaHBiR1VnS0hSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtieUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHa2dhVzRnYzJWc1ppa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFFnUFNCallXeHNZbUZqYTJadUtISmxjM1ZzZEN3Z2MyVnNabHRwWFN3Z2FTd2diMkpxWldOMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlIZG9hV3hsSUNocExTMHBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z0lYSmxaSFZqWlZKcFoyaDBRMjlsY21ObGMxUnZUMkpxWldOMEtUdGNibHh1SUNBZ0lDOHZJRVZUTlNBeE5TNDBMalF1TVRSY2JpQWdJQ0F2THlCb2RIUndPaTh2WlhNMUxtZHBkR2gxWWk1amIyMHZJM2d4TlM0MExqUXVNVFJjYmlBZ0lDQXZMeUJvZEhSd2N6b3ZMMlJsZG1Wc2IzQmxjaTV0YjNwcGJHeGhMbTl5Wnk5bGJpOUtZWFpoVTJOeWFYQjBMMUpsWm1WeVpXNWpaUzlIYkc5aVlXeGZUMkpxWldOMGN5OUJjbkpoZVM5cGJtUmxlRTltWEc0Z0lDQWdkbUZ5SUdoaGMwWnBjbVZtYjNneVNXNWtaWGhQWmtKMVp5QTlJRUZ5Y21GNVVISnZkRzkwZVhCbExtbHVaR1Y0VDJZZ0ppWWdXekFzSURGZExtbHVaR1Y0VDJZb01Td2dNaWtnSVQwOUlDMHhPMXh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb1FYSnlZWGxRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2FXNWtaWGhQWmpvZ1puVnVZM1JwYjI0Z2FXNWtaWGhQWmloelpXRnlZMmhGYkdWdFpXNTBMeW9zSUdaeWIyMUpibVJsZUNBcUx5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSE5sYkdZZ1BTQnpjR3hwZEZOMGNtbHVaeUFtSmlCcGMxTjBjbWx1WnloMGFHbHpLU0EvSUhOMGNsTndiR2wwS0hSb2FYTXNJQ2NuS1NBNklFVlRMbFJ2VDJKcVpXTjBLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHeGxibWQwYUNBOUlFVlRMbFJ2VldsdWRETXlLSE5sYkdZdWJHVnVaM1JvS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdrZ1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQTlJRVZUTGxSdlNXNTBaV2RsY2loaGNtZDFiV1Z1ZEhOYk1WMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5Qm9ZVzVrYkdVZ2JtVm5ZWFJwZG1VZ2FXNWthV05sYzF4dUlDQWdJQ0FnSUNBZ0lDQWdhU0E5SUdrZ1BqMGdNQ0EvSUdrZ09pQnRZWGdvTUN3Z2JHVnVaM1JvSUNzZ2FTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLRHNnYVNBOElHeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHa2dhVzRnYzJWc1ppQW1KaUJ6Wld4bVcybGRJRDA5UFNCelpXRnlZMmhGYkdWdFpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXRNVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUdoaGMwWnBjbVZtYjNneVNXNWtaWGhQWmtKMVp5azdYRzVjYmlBZ0lDQXZMeUJGVXpVZ01UVXVOQzQwTGpFMVhHNGdJQ0FnTHk4Z2FIUjBjRG92TDJWek5TNW5hWFJvZFdJdVkyOXRMeU40TVRVdU5DNDBMakUxWEc0Z0lDQWdMeThnYUhSMGNITTZMeTlrWlhabGJHOXdaWEl1Ylc5NmFXeHNZUzV2Y21jdlpXNHZTbUYyWVZOamNtbHdkQzlTWldabGNtVnVZMlV2UjJ4dlltRnNYMDlpYW1WamRITXZRWEp5WVhrdmJHRnpkRWx1WkdWNFQyWmNiaUFnSUNCMllYSWdhR0Z6Um1seVpXWnZlREpNWVhOMFNXNWtaWGhQWmtKMVp5QTlJRUZ5Y21GNVVISnZkRzkwZVhCbExteGhjM1JKYm1SbGVFOW1JQ1ltSUZzd0xDQXhYUzVzWVhOMFNXNWtaWGhQWmlnd0xDQXRNeWtnSVQwOUlDMHhPMXh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb1FYSnlZWGxRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2JHRnpkRWx1WkdWNFQyWTZJR1oxYm1OMGFXOXVJR3hoYzNSSmJtUmxlRTltS0hObFlYSmphRVZzWlcxbGJuUXZLaXdnWm5KdmJVbHVaR1Y0SUNvdktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdjMlZzWmlBOUlITndiR2wwVTNSeWFXNW5JQ1ltSUdselUzUnlhVzVuS0hSb2FYTXBJRDhnYzNSeVUzQnNhWFFvZEdocGN5d2dKeWNwSURvZ1JWTXVWRzlQWW1wbFkzUW9kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2JHVnVaM1JvSUQwZ1JWTXVWRzlWYVc1ME16SW9jMlZzWmk1c1pXNW5kR2dwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JHVnVaM1JvSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR2tnUFNCc1pXNW5kR2dnTFNBeE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBOUlHMXBiaWhwTENCRlV5NVViMGx1ZEdWblpYSW9ZWEpuZFcxbGJuUnpXekZkS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJvWVc1a2JHVWdibVZuWVhScGRtVWdhVzVrYVdObGMxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVNBOUlHa2dQajBnTUNBL0lHa2dPaUJzWlc1bmRHZ2dMU0JOWVhSb0xtRmljeWhwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb095QnBJRDQ5SURBN0lHa3RMU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBJR2x1SUhObGJHWWdKaVlnYzJWaGNtTm9SV3hsYldWdWRDQTlQVDBnYzJWc1psdHBYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TENCb1lYTkdhWEpsWm05NE1reGhjM1JKYm1SbGVFOW1RblZuS1R0Y2JseHVJQ0FnSUM4dklFVlROU0F4TlM0MExqUXVNVEpjYmlBZ0lDQXZMeUJvZEhSd09pOHZaWE0xTG1kcGRHaDFZaTVqYjIwdkkzZ3hOUzQwTGpRdU1USmNiaUFnSUNCMllYSWdjM0JzYVdObFRtOXZjRkpsZEhWeWJuTkZiWEIwZVVGeWNtRjVJRDBnS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdFZ1BTQmJNU3dnTWwwN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0JoTG5Od2JHbGpaU2dwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWVM1c1pXNW5kR2dnUFQwOUlESWdKaVlnYVhOQmNuSmhlU2h5WlhOMWJIUXBJQ1ltSUhKbGMzVnNkQzVzWlc1bmRHZ2dQVDA5SURBN1hHNGdJQ0FnZlNncEtUdGNiaUFnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUM4dklGTmhabUZ5YVNBMUxqQWdZblZuSUhkb1pYSmxJQzV6Y0d4cFkyVW9LU0J5WlhSMWNtNXpJSFZ1WkdWbWFXNWxaRnh1SUNBZ0lDQWdJQ0J6Y0d4cFkyVTZJR1oxYm1OMGFXOXVJSE53YkdsalpTaHpkR0Z5ZEN3Z1pHVnNaWFJsUTI5MWJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoY21kMWJXVnVkSE11YkdWdVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVhKeVlYbGZjM0JzYVdObExtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0FoYzNCc2FXTmxUbTl2Y0ZKbGRIVnlibk5GYlhCMGVVRnljbUY1S1R0Y2JseHVJQ0FnSUhaaGNpQnpjR3hwWTJWWGIzSnJjMWRwZEdoRmJYQjBlVTlpYW1WamRDQTlJQ2htZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ2WW1vZ1BTQjdmVHRjYmlBZ0lDQWdJQ0FnUVhKeVlYbFFjbTkwYjNSNWNHVXVjM0JzYVdObExtTmhiR3dvYjJKcUxDQXdMQ0F3TENBeEtUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHOWlhaTVzWlc1bmRHZ2dQVDA5SURFN1hHNGdJQ0FnZlNncEtUdGNiaUFnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUhOd2JHbGpaVG9nWm5WdVkzUnBiMjRnYzNCc2FXTmxLSE4wWVhKMExDQmtaV3hsZEdWRGIzVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dGeVozVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZWEpuY3lBOUlHRnlaM1Z0Wlc1MGN6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXViR1Z1WjNSb0lEMGdiV0Y0S0VWVExsUnZTVzUwWldkbGNpaDBhR2x6TG14bGJtZDBhQ2tzSURBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ1BpQXdJQ1ltSUhSNWNHVnZaaUJrWld4bGRHVkRiM1Z1ZENBaFBUMGdKMjUxYldKbGNpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoY21keklEMGdZWEp5WVhsVGJHbGpaU2hoY21kMWJXVnVkSE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGhjbWR6TG14bGJtZDBhQ0E4SURJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hWemFFTmhiR3dvWVhKbmN5d2dkR2hwY3k1c1pXNW5kR2dnTFNCemRHRnlkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lYSm5jMXN4WFNBOUlFVlRMbFJ2U1c1MFpXZGxjaWhrWld4bGRHVkRiM1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbUY1WDNOd2JHbGpaUzVoY0hCc2VTaDBhR2x6TENCaGNtZHpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUNGemNHeHBZMlZYYjNKcmMxZHBkR2hGYlhCMGVVOWlhbVZqZENrN1hHNGdJQ0FnZG1GeUlITndiR2xqWlZkdmNtdHpWMmwwYUV4aGNtZGxVM0JoY25ObFFYSnlZWGx6SUQwZ0tHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1VHVnlJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlsY3kxemFHbHRjeTlsY3pVdGMyaHBiUzlwYzNOMVpYTXZNamsxWEc0Z0lDQWdJQ0FnSUM4dklGTmhabUZ5YVNBM0x6Z2dZbkpsWVd0eklIZHBkR2dnYzNCaGNuTmxJR0Z5Y21GNWN5QnZaaUJ6YVhwbElERmxOU0J2Y2lCbmNtVmhkR1Z5WEc0Z0lDQWdJQ0FnSUhaaGNpQmhjbklnUFNCdVpYY2dKRUZ5Y21GNUtERmxOU2s3WEc0Z0lDQWdJQ0FnSUM4dklHNXZkR1U2SUhSb1pTQnBibVJsZUNCTlZWTlVJR0psSURnZ2IzSWdiR0Z5WjJWeUlHOXlJSFJvWlNCMFpYTjBJSGRwYkd3Z1ptRnNjMlVnY0dGemMxeHVJQ0FnSUNBZ0lDQmhjbkpiT0YwZ1BTQW5lQ2M3WEc0Z0lDQWdJQ0FnSUdGeWNpNXpjR3hwWTJVb01Td2dNU2s3WEc0Z0lDQWdJQ0FnSUM4dklHNXZkR1U2SUhSb2FYTWdkR1Z6ZENCdGRYTjBJR0psSUdSbFptbHVaV1FnS21GbWRHVnlLaUIwYUdVZ2FXNWtaWGhQWmlCemFHbHRYRzRnSUNBZ0lDQWdJQzh2SUhCbGNpQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZaWE10YzJocGJYTXZaWE0xTFhOb2FXMHZhWE56ZFdWekx6TXhNMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZWEp5TG1sdVpHVjRUMllvSjNnbktTQTlQVDBnTnp0Y2JpQWdJQ0I5S0NrcE8xeHVJQ0FnSUhaaGNpQnpjR3hwWTJWWGIzSnJjMWRwZEdoVGJXRnNiRk53WVhKelpVRnljbUY1Y3lBOUlDaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUM4dklGQmxjaUJvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2WlhNdGMyaHBiWE12WlhNMUxYTm9hVzB2YVhOemRXVnpMekk1TlZ4dUlDQWdJQ0FnSUNBdkx5QlBjR1Z5WVNBeE1pNHhOU0JpY21WaGEzTWdiMjRnZEdocGN5d2dibThnYVdSbFlTQjNhSGt1WEc0Z0lDQWdJQ0FnSUhaaGNpQnVJRDBnTWpVMk8xeHVJQ0FnSUNBZ0lDQjJZWElnWVhKeUlEMGdXMTA3WEc0Z0lDQWdJQ0FnSUdGeWNsdHVYU0E5SUNkaEp6dGNiaUFnSUNBZ0lDQWdZWEp5TG5Od2JHbGpaU2h1SUNzZ01Td2dNQ3dnSjJJbktUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbHR1WFNBOVBUMGdKMkVuTzF4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWhCY25KaGVWQnliM1J2ZEhsd1pTd2dlMXh1SUNBZ0lDQWdJQ0J6Y0d4cFkyVTZJR1oxYm1OMGFXOXVJSE53YkdsalpTaHpkR0Z5ZEN3Z1pHVnNaWFJsUTI5MWJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJQSUQwZ1JWTXVWRzlQWW1wbFkzUW9kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1FTQTlJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUd4bGJpQTlJRVZUTGxSdlZXbHVkRE15S0U4dWJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpXeGhkR2wyWlZOMFlYSjBJRDBnUlZNdVZHOUpiblJsWjJWeUtITjBZWEowS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCaFkzUjFZV3hUZEdGeWRDQTlJSEpsYkdGMGFYWmxVM1JoY25RZ1BDQXdJRDhnYldGNEtDaHNaVzRnS3lCeVpXeGhkR2wyWlZOMFlYSjBLU3dnTUNrZ09pQnRhVzRvY21Wc1lYUnBkbVZUZEdGeWRDd2diR1Z1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCaFkzUjFZV3hFWld4bGRHVkRiM1Z1ZENBOUlHMXBiaWh0WVhnb1JWTXVWRzlKYm5SbFoyVnlLR1JsYkdWMFpVTnZkVzUwS1N3Z01Da3NJR3hsYmlBdElHRmpkSFZoYkZOMFlYSjBLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdzZ1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR1p5YjIwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9heUE4SUdGamRIVmhiRVJsYkdWMFpVTnZkVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1puSnZiU0E5SUNSVGRISnBibWNvWVdOMGRXRnNVM1JoY25RZ0t5QnJLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IzZHVjeWhQTENCbWNtOXRLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkJXMnRkSUQwZ1QxdG1jbTl0WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2F5QXJQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYVhSbGJYTWdQU0JoY25KaGVWTnNhV05sS0dGeVozVnRaVzUwY3l3Z01pazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdhWFJsYlVOdmRXNTBJRDBnYVhSbGJYTXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlIUnZPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2wwWlcxRGIzVnVkQ0E4SUdGamRIVmhiRVJsYkdWMFpVTnZkVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2F5QTlJR0ZqZEhWaGJGTjBZWEowTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnRZWGhMSUQwZ2JHVnVJQzBnWVdOMGRXRnNSR1ZzWlhSbFEyOTFiblE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDJocGJHVWdLR3NnUENCdFlYaExLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnliMjBnUFNBa1UzUnlhVzVuS0dzZ0t5QmhZM1IxWVd4RVpXeGxkR1ZEYjNWdWRDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSdklEMGdKRk4wY21sdVp5aHJJQ3NnYVhSbGJVTnZkVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c5M2JuTW9UeXdnWm5KdmJTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRTliZEc5ZElEMGdUMXRtY205dFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsYkdWMFpTQlBXM1J2WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcklDczlJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdzZ1BTQnNaVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHMXBia3NnUFNCc1pXNGdMU0JoWTNSMVlXeEVaV3hsZEdWRGIzVnVkQ0FySUdsMFpXMURiM1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2FHbHNaU0FvYXlBK0lHMXBia3NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZzWlhSbElFOWJheUF0SURGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JySUMwOUlERTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBkR1Z0UTI5MWJuUWdQaUJoWTNSMVlXeEVaV3hsZEdWRGIzVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdzZ1BTQnNaVzRnTFNCaFkzUjFZV3hFWld4bGRHVkRiM1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2FHbHNaU0FvYXlBK0lHRmpkSFZoYkZOMFlYSjBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnliMjBnUFNBa1UzUnlhVzVuS0dzZ0t5QmhZM1IxWVd4RVpXeGxkR1ZEYjNWdWRDQXRJREVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBieUE5SUNSVGRISnBibWNvYXlBcklHbDBaVzFEYjNWdWRDQXRJREVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYjNkdWN5aFBMQ0JtY205dEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdUMXQwYjEwZ1BTQlBXMlp5YjIxZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZzWlhSbElFOWJkRzlkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdzZ0xUMGdNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcklEMGdZV04wZFdGc1UzUmhjblE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR2wwWlcxekxteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnVDF0clhTQTlJR2wwWlcxelcybGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3NnS3owZ01UdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJRTh1YkdWdVozUm9JRDBnYkdWdUlDMGdZV04wZFdGc1JHVnNaWFJsUTI5MWJuUWdLeUJwZEdWdFEyOTFiblE3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQkJPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU3dnSVhOd2JHbGpaVmR2Y210elYybDBhRXhoY21kbFUzQmhjbk5sUVhKeVlYbHpJSHg4SUNGemNHeHBZMlZYYjNKcmMxZHBkR2hUYldGc2JGTndZWEp6WlVGeWNtRjVjeWs3WEc1Y2JpQWdJQ0IyWVhJZ2IzSnBaMmx1WVd4S2IybHVJRDBnUVhKeVlYbFFjbTkwYjNSNWNHVXVhbTlwYmp0Y2JpQWdJQ0IyWVhJZ2FHRnpVM1J5YVc1blNtOXBia0oxWnp0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQm9ZWE5UZEhKcGJtZEtiMmx1UW5WbklEMGdRWEp5WVhrdWNISnZkRzkwZVhCbExtcHZhVzR1WTJGc2JDZ25NVEl6Snl3Z0p5d25LU0FoUFQwZ0p6RXNNaXd6Snp0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lHaGhjMU4wY21sdVowcHZhVzVDZFdjZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYUdGelUzUnlhVzVuU205cGJrSjFaeWtnZTF4dUlDQWdJQ0FnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VGeWNtRjVVSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnFiMmx1T2lCbWRXNWpkR2x2YmlCcWIybHVLSE5sY0dGeVlYUnZjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnpaWEFnUFNCMGVYQmxiMllnYzJWd1lYSmhkRzl5SUQwOVBTQW5kVzVrWldacGJtVmtKeUEvSUNjc0p5QTZJSE5sY0dGeVlYUnZjanRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiM0pwWjJsdVlXeEtiMmx1TG1OaGJHd29hWE5UZEhKcGJtY29kR2hwY3lrZ1B5QnpkSEpUY0d4cGRDaDBhR2x6TENBbkp5a2dPaUIwYUdsekxDQnpaWEFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5TENCb1lYTlRkSEpwYm1kS2IybHVRblZuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2FHRnpTbTlwYmxWdVpHVm1hVzVsWkVKMVp5QTlJRnN4TENBeVhTNXFiMmx1S0hWdVpHVm1hVzVsWkNrZ0lUMDlJQ2N4TERJbk8xeHVJQ0FnSUdsbUlDaG9ZWE5LYjJsdVZXNWtaV1pwYm1Wa1FuVm5LU0I3WEc0Z0lDQWdJQ0FnSUdSbFptbHVaVkJ5YjNCbGNuUnBaWE1vUVhKeVlYbFFjbTkwYjNSNWNHVXNJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHcHZhVzQ2SUdaMWJtTjBhVzl1SUdwdmFXNG9jMlZ3WVhKaGRHOXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITmxjQ0E5SUhSNWNHVnZaaUJ6WlhCaGNtRjBiM0lnUFQwOUlDZDFibVJsWm1sdVpXUW5JRDhnSnl3bklEb2djMlZ3WVhKaGRHOXlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnZjbWxuYVc1aGJFcHZhVzR1WTJGc2JDaDBhR2x6TENCelpYQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlMQ0JvWVhOS2IybHVWVzVrWldacGJtVmtRblZuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2NIVnphRk5vYVcwZ1BTQm1kVzVqZEdsdmJpQndkWE5vS0dsMFpXMHBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlFOGdQU0JGVXk1VWIwOWlhbVZqZENoMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNGdQU0JGVXk1VWIxVnBiblF6TWloUExteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ01EdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tHa2dQQ0JoY21kMWJXVnVkSE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlBXMjRnS3lCcFhTQTlJR0Z5WjNWdFpXNTBjMXRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2tnS3owZ01UdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JQTG14bGJtZDBhQ0E5SUc0Z0t5QnBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiaUFySUdrN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhaaGNpQndkWE5vU1hOT2IzUkhaVzVsY21saklEMGdLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJRzlpYWlBOUlIdDlPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG5CMWMyZ3VZMkZzYkNodlltb3NJSFZ1WkdWbWFXNWxaQ2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUWdJVDA5SURFZ2ZId2diMkpxTG14bGJtZDBhQ0FoUFQwZ01TQjhmQ0IwZVhCbGIyWWdiMkpxV3pCZElDRTlQU0FuZFc1a1pXWnBibVZrSnlCOGZDQWhiM2R1Y3lodlltb3NJREFwTzF4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWhCY25KaGVWQnliM1J2ZEhsd1pTd2dlMXh1SUNBZ0lDQWdJQ0J3ZFhOb09pQm1kVzVqZEdsdmJpQndkWE5vS0dsMFpXMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzBGeWNtRjVLSFJvYVhNcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbUY1WDNCMWMyZ3VZWEJ3Ykhrb2RHaHBjeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd2RYTm9VMmhwYlM1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU3dnY0hWemFFbHpUbTkwUjJWdVpYSnBZeWs3WEc1Y2JpQWdJQ0F2THlCVWFHbHpJR1pwZUdWeklHRWdkbVZ5ZVNCM1pXbHlaQ0JpZFdjZ2FXNGdUM0JsY21FZ01UQXVOaUIzYUdWdUlIQjFjMmhwYm1jZ1lIVnVaR1ZtYVc1bFpGeHVJQ0FnSUhaaGNpQndkWE5vVlc1a1pXWnBibVZrU1hOWFpXbHlaQ0E5SUNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCaGNuSWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJR0Z5Y2k1d2RYTm9LSFZ1WkdWbWFXNWxaQ2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUWdJVDA5SURFZ2ZId2dZWEp5TG14bGJtZDBhQ0FoUFQwZ01TQjhmQ0IwZVhCbGIyWWdZWEp5V3pCZElDRTlQU0FuZFc1a1pXWnBibVZrSnlCOGZDQWhiM2R1Y3loaGNuSXNJREFwTzF4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWhCY25KaGVWQnliM1J2ZEhsd1pTd2dleUJ3ZFhOb09pQndkWE5vVTJocGJTQjlMQ0J3ZFhOb1ZXNWtaV1pwYm1Wa1NYTlhaV2x5WkNrN1hHNWNiaUFnSUNBdkx5QkZVelVnTVRVdU1pNHpMakUwWEc0Z0lDQWdMeThnYUhSMGNEb3ZMMlZ6TlM1bmFYUm9kV0l1YVc4dkkzZ3hOUzQwTGpRdU1UQmNiaUFnSUNBdkx5QkdhWGdnWW05NFpXUWdjM1J5YVc1bklHSjFaMXh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb1FYSnlZWGxRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2MyeHBZMlU2SUdaMWJtTjBhVzl1SUNoemRHRnlkQ3dnWlc1a0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZWEp5SUQwZ2FYTlRkSEpwYm1jb2RHaHBjeWtnUHlCemRISlRjR3hwZENoMGFHbHpMQ0FuSnlrZ09pQjBhR2x6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbUY1VTJ4cFkyVkJjSEJzZVNoaGNuSXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TENCemNHeHBkRk4wY21sdVp5azdYRzVjYmlBZ0lDQjJZWElnYzI5eWRFbG5ibTl5WlhOT2IyNUdkVzVqZEdsdmJuTWdQU0FvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdXekVzSURKZExuTnZjblFvYm5Wc2JDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCYk1Td2dNbDB1YzI5eWRDaDdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UzMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnZG1GeUlITnZjblJVYUhKdmQzTlBibEpsWjJWNElEMGdLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdkR2hwY3lCcGN5QmhJSEJ5YjJKc1pXMGdhVzRnUm1seVpXWnZlQ0EwTENCcGJpQjNhR2xqYUNCZ2RIbHdaVzltSUM5aEx5QTlQVDBnSjJaMWJtTjBhVzl1SjJCY2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lGc3hMQ0F5WFM1emIzSjBLQzloTHlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHQ5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUgwb0tTazdYRzRnSUNBZ2RtRnlJSE52Y25SSloyNXZjbVZ6Vlc1a1pXWnBibVZrSUQwZ0tHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1lYQndiR2xsY3lCcGJpQkpSU0E0TENCbWIzSWdiMjVsTGx4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1d6RXNJREpkTG5OdmNuUW9kVzVrWldacGJtVmtLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmU2dwS1R0Y2JpQWdJQ0JrWldacGJtVlFjbTl3WlhKMGFXVnpLRUZ5Y21GNVVISnZkRzkwZVhCbExDQjdYRzRnSUNBZ0lDQWdJSE52Y25RNklHWjFibU4wYVc5dUlITnZjblFvWTI5dGNHRnlaVVp1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJYQmhjbVZHYmlBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVhKeVlYbFRiM0owS0hSb2FYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnBjME5oYkd4aFlteGxLR052YlhCaGNtVkdiaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZEJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyOXlkQ0JqWVd4c1ltRmpheUJ0ZFhOMElHSmxJR0VnWm5WdVkzUnBiMjRuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGNuSmhlVk52Y25Rb2RHaHBjeXdnWTI5dGNHRnlaVVp1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc0lITnZjblJKWjI1dmNtVnpUbTl1Um5WdVkzUnBiMjV6SUh4OElDRnpiM0owU1dkdWIzSmxjMVZ1WkdWbWFXNWxaQ0I4ZkNBaGMyOXlkRlJvY205M2MwOXVVbVZuWlhncE8xeHVYRzRnSUNBZ0x5OWNiaUFnSUNBdkx5QlBZbXBsWTNSY2JpQWdJQ0F2THlBOVBUMDlQVDFjYmlBZ0lDQXZMMXh1WEc0Z0lDQWdMeThnUlZNMUlERTFMakl1TXk0eE5GeHVJQ0FnSUM4dklHaDBkSEE2THk5bGN6VXVaMmwwYUhWaUxtTnZiUzhqZURFMUxqSXVNeTR4TkZ4dVhHNGdJQ0FnTHk4Z2FIUjBjRG92TDNkb1lYUjBhR1ZvWldGa2MyRnBaQzVqYjIwdk1qQXhNQzh4TUM5aExYTmhabVZ5TFc5aWFtVmpkQzFyWlhsekxXTnZiWEJoZEdsaWFXeHBkSGt0YVcxd2JHVnRaVzUwWVhScGIyNWNiaUFnSUNCMllYSWdhR0Z6Ukc5dWRFVnVkVzFDZFdjZ1BTQWhhWE5GYm5WdEtIc2dKM1J2VTNSeWFXNW5Kem9nYm5Wc2JDQjlMQ0FuZEc5VGRISnBibWNuS1R0Y2JpQWdJQ0IyWVhJZ2FHRnpVSEp2ZEc5RmJuVnRRblZuSUQwZ2FYTkZiblZ0S0daMWJtTjBhVzl1SUNncElIdDlMQ0FuY0hKdmRHOTBlWEJsSnlrN1hHNGdJQ0FnZG1GeUlHaGhjMU4wY21sdVowVnVkVzFDZFdjZ1BTQWhiM2R1Y3lnbmVDY3NJQ2N3SnlrN1hHNGdJQ0FnZG1GeUlHVnhkV0ZzYzBOdmJuTjBjblZqZEc5eVVISnZkRzkwZVhCbElEMGdablZ1WTNScGIyNGdLRzhwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR04wYjNJZ1BTQnZMbU52Ym5OMGNuVmpkRzl5TzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWTNSdmNpQW1KaUJqZEc5eUxuQnliM1J2ZEhsd1pTQTlQVDBnYnp0Y2JpQWdJQ0I5TzF4dUlDQWdJSFpoY2lCaWJHRmphMnhwYzNSbFpFdGxlWE1nUFNCN1hHNGdJQ0FnSUNBZ0lDUjNhVzVrYjNjNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNSamIyNXpiMnhsT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0FrY0dGeVpXNTBPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWtjMlZzWmpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnSkdaeVlXMWxPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWtabkpoYldWek9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBa1puSmhiV1ZGYkdWdFpXNTBPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWtkMlZpYTJsMFNXNWtaWGhsWkVSQ09pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBa2QyVmlhMmwwVTNSdmNtRm5aVWx1Wm04NklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNSbGVIUmxjbTVoYkRvZ2RISjFaVnh1SUNBZ0lIMDdYRzRnSUNBZ2RtRnlJR2hoYzBGMWRHOXRZWFJwYjI1RmNYVmhiR2wwZVVKMVp5QTlJQ2htZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDOHFJR2RzYjJKaGJITWdkMmx1Wkc5M0lDb3ZYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZDJsdVpHOTNJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdzZ2FXNGdkMmx1Wkc5M0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFlteGhZMnRzYVhOMFpXUkxaWGx6V3lja0p5QXJJR3RkSUNZbUlHOTNibk1vZDJsdVpHOTNMQ0JyS1NBbUppQjNhVzVrYjNkYmExMGdJVDA5SUc1MWJHd2dKaVlnZEhsd1pXOW1JSGRwYm1SdmQxdHJYU0E5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhGMVlXeHpRMjl1YzNSeWRXTjBiM0pRY205MGIzUjVjR1VvZDJsdVpHOTNXMnRkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnZG1GeUlHVnhkV0ZzYzBOdmJuTjBjblZqZEc5eVVISnZkRzkwZVhCbFNXWk9iM1JDZFdkbmVTQTlJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCM2FXNWtiM2NnUFQwOUlDZDFibVJsWm1sdVpXUW5JSHg4SUNGb1lYTkJkWFJ2YldGMGFXOXVSWEYxWVd4cGRIbENkV2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmxjWFZoYkhORGIyNXpkSEoxWTNSdmNsQnliM1J2ZEhsd1pTaHZZbXBsWTNRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWEYxWVd4elEyOXVjM1J5ZFdOMGIzSlFjbTkwYjNSNWNHVW9iMkpxWldOMEtUdGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdJQ0IyWVhJZ1pHOXVkRVZ1ZFcxeklEMGdXMXh1SUNBZ0lDQWdJQ0FuZEc5VGRISnBibWNuTEZ4dUlDQWdJQ0FnSUNBbmRHOU1iMk5oYkdWVGRISnBibWNuTEZ4dUlDQWdJQ0FnSUNBbmRtRnNkV1ZQWmljc1hHNGdJQ0FnSUNBZ0lDZG9ZWE5QZDI1UWNtOXdaWEowZVNjc1hHNGdJQ0FnSUNBZ0lDZHBjMUJ5YjNSdmRIbHdaVTltSnl4Y2JpQWdJQ0FnSUNBZ0ozQnliM0JsY25SNVNYTkZiblZ0WlhKaFlteGxKeXhjYmlBZ0lDQWdJQ0FnSjJOdmJuTjBjblZqZEc5eUoxeHVJQ0FnSUYwN1hHNGdJQ0FnZG1GeUlHUnZiblJGYm5WdGMweGxibWQwYUNBOUlHUnZiblJGYm5WdGN5NXNaVzVuZEdnN1hHNWNiaUFnSUNBdkx5QjBZV3RsYmlCa2FYSmxZM1JzZVNCbWNtOXRJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlzYW1oaGNtSXZhWE10WVhKbmRXMWxiblJ6TDJKc2IySXZiV0Z6ZEdWeUwybHVaR1Y0TG1welhHNGdJQ0FnTHk4Z1kyRnVJR0psSUhKbGNHeGhZMlZrSUhkcGRHZ2djbVZ4ZFdseVpTZ25hWE10WVhKbmRXMWxiblJ6SnlrZ2FXWWdkMlVnWlhabGNpQjFjMlVnWVNCaWRXbHNaQ0J3Y205alpYTnpJR2x1YzNSbFlXUmNiaUFnSUNCMllYSWdhWE5UZEdGdVpHRnlaRUZ5WjNWdFpXNTBjeUE5SUdaMWJtTjBhVzl1SUdselFYSm5kVzFsYm5SektIWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGIxTjBjaWgyWVd4MVpTa2dQVDA5SUNkYmIySnFaV04wSUVGeVozVnRaVzUwYzEwbk8xeHVJQ0FnSUgwN1hHNGdJQ0FnZG1GeUlHbHpUR1ZuWVdONVFYSm5kVzFsYm5SeklEMGdablZ1WTNScGIyNGdhWE5CY21kMWJXVnVkSE1vZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbElDRTlQU0J1ZFd4c0lDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkdlltcGxZM1FuSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdkbUZzZFdVdWJHVnVaM1JvSUQwOVBTQW5iblZ0WW1WeUp5QW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1V1YkdWdVozUm9JRDQ5SURBZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNGcGMwRnljbUY1S0haaGJIVmxLU0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdhWE5EWVd4c1lXSnNaU2gyWVd4MVpTNWpZV3hzWldVcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnZG1GeUlHbHpRWEpuZFcxbGJuUnpJRDBnYVhOVGRHRnVaR0Z5WkVGeVozVnRaVzUwY3loaGNtZDFiV1Z1ZEhNcElEOGdhWE5UZEdGdVpHRnlaRUZ5WjNWdFpXNTBjeUE2SUdselRHVm5ZV041UVhKbmRXMWxiblJ6TzF4dVhHNGdJQ0FnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWdrVDJKcVpXTjBMQ0I3WEc0Z0lDQWdJQ0FnSUd0bGVYTTZJR1oxYm1OMGFXOXVJR3RsZVhNb2IySnFaV04wS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2FYTkdiaUE5SUdselEyRnNiR0ZpYkdVb2IySnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCcGMwRnlaM01nUFNCcGMwRnlaM1Z0Wlc1MGN5aHZZbXBsWTNRcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHbHpUMkpxWldOMElEMGdiMkpxWldOMElDRTlQU0J1ZFd4c0lDWW1JSFI1Y0dWdlppQnZZbXBsWTNRZ1BUMDlJQ2R2WW1wbFkzUW5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR2x6VTNSeUlEMGdhWE5QWW1wbFkzUWdKaVlnYVhOVGRISnBibWNvYjJKcVpXTjBLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGcGMwOWlhbVZqZENBbUppQWhhWE5HYmlBbUppQWhhWE5CY21kektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWduVDJKcVpXTjBMbXRsZVhNZ1kyRnNiR1ZrSUc5dUlHRWdibTl1TFc5aWFtVmpkQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnZEdobFMyVjVjeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITnJhWEJRY205MGJ5QTlJR2hoYzFCeWIzUnZSVzUxYlVKMVp5QW1KaUJwYzBadU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDaHBjMU4wY2lBbUppQm9ZWE5UZEhKcGJtZEZiblZ0UW5WbktTQjhmQ0JwYzBGeVozTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUc5aWFtVmpkQzVzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3ZFhOb1EyRnNiQ2gwYUdWTFpYbHpMQ0FrVTNSeWFXNW5LR2twS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYTkJjbWR6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2JtRnRaU0JwYmlCdlltcGxZM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NFb2MydHBjRkJ5YjNSdklDWW1JRzVoYldVZ1BUMDlJQ2R3Y205MGIzUjVjR1VuS1NBbUppQnZkMjV6S0c5aWFtVmpkQ3dnYm1GdFpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEIxYzJoRFlXeHNLSFJvWlV0bGVYTXNJQ1JUZEhKcGJtY29ibUZ0WlNrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYUdGelJHOXVkRVZ1ZFcxQ2RXY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2MydHBjRU52Ym5OMGNuVmpkRzl5SUQwZ1pYRjFZV3h6UTI5dWMzUnlkV04wYjNKUWNtOTBiM1I1Y0dWSlprNXZkRUoxWjJkNUtHOWlhbVZqZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FpQTlJREE3SUdvZ1BDQmtiMjUwUlc1MWJYTk1aVzVuZEdnN0lHb3JLeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnWkc5dWRFVnVkVzBnUFNCa2IyNTBSVzUxYlhOYmFsMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLSE5yYVhCRGIyNXpkSEoxWTNSdmNpQW1KaUJrYjI1MFJXNTFiU0E5UFQwZ0oyTnZibk4wY25WamRHOXlKeWtnSmlZZ2IzZHVjeWh2WW1wbFkzUXNJR1J2Ym5SRmJuVnRLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hWemFFTmhiR3dvZEdobFMyVjVjeXdnWkc5dWRFVnVkVzBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvWlV0bGVYTTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSFpoY2lCclpYbHpWMjl5YTNOWGFYUm9RWEpuZFcxbGJuUnpJRDBnSkU5aWFtVmpkQzVyWlhseklDWW1JQ2htZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRk5oWm1GeWFTQTFMakFnWW5WblhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBa1QySnFaV04wTG10bGVYTW9ZWEpuZFcxbGJuUnpLUzVzWlc1bmRHZ2dQVDA5SURJN1hHNGdJQ0FnZlNneExDQXlLU2s3WEc0Z0lDQWdkbUZ5SUd0bGVYTklZWE5CY21kMWJXVnVkSE5NWlc1bmRHaENkV2NnUFNBa1QySnFaV04wTG10bGVYTWdKaVlnS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdGeVowdGxlWE1nUFNBa1QySnFaV04wTG10bGVYTW9ZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dJVDA5SURFZ2ZId2dZWEpuUzJWNWN5NXNaVzVuZEdnZ0lUMDlJREVnZkh3Z1lYSm5TMlY1YzFzd1hTQWhQVDBnTVR0Y2JpQWdJQ0I5S0RFcEtUdGNiaUFnSUNCMllYSWdiM0pwWjJsdVlXeExaWGx6SUQwZ0pFOWlhbVZqZEM1clpYbHpPMXh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb0pFOWlhbVZqZEN3Z2UxeHVJQ0FnSUNBZ0lDQnJaWGx6T2lCbWRXNWpkR2x2YmlCclpYbHpLRzlpYW1WamRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x6UVhKbmRXMWxiblJ6S0c5aWFtVmpkQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjNKcFoybHVZV3hMWlhsektHRnljbUY1VTJ4cFkyVW9iMkpxWldOMEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ2Y21sbmFXNWhiRXRsZVhNb2IySnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUNGclpYbHpWMjl5YTNOWGFYUm9RWEpuZFcxbGJuUnpJSHg4SUd0bGVYTklZWE5CY21kMWJXVnVkSE5NWlc1bmRHaENkV2NwTzF4dVhHNGdJQ0FnTHk5Y2JpQWdJQ0F2THlCRVlYUmxYRzRnSUNBZ0x5OGdQVDA5UFZ4dUlDQWdJQzh2WEc1Y2JpQWdJQ0IyWVhJZ2FHRnpUbVZuWVhScGRtVk5iMjUwYUZsbFlYSkNkV2NnUFNCdVpYY2dSR0YwWlNndE16VXdPVGd5TnpNeU9UWXdNREk1TWlrdVoyVjBWVlJEVFc5dWRHZ29LU0FoUFQwZ01EdGNiaUFnSUNCMllYSWdZVTVsWjJGMGFYWmxWR1Z6ZEVSaGRHVWdQU0J1WlhjZ1JHRjBaU2d0TVRVd09UZzBNakk0T1RZd01ESTVNaWs3WEc0Z0lDQWdkbUZ5SUdGUWIzTnBkR2wyWlZSbGMzUkVZWFJsSUQwZ2JtVjNJRVJoZEdVb01UUTBPVFkyTWpRd01EQXdNQ2s3WEc0Z0lDQWdkbUZ5SUdoaGMxUnZWVlJEVTNSeWFXNW5SbTl5YldGMFFuVm5JRDBnWVU1bFoyRjBhWFpsVkdWemRFUmhkR1V1ZEc5VlZFTlRkSEpwYm1jb0tTQWhQVDBnSjAxdmJpd2dNREVnU21GdUlDMDBOVGczTlNBeE1UbzFPVG8xT1NCSFRWUW5PMXh1SUNBZ0lIWmhjaUJvWVhOVWIwUmhkR1ZUZEhKcGJtZEdiM0p0WVhSQ2RXYzdYRzRnSUNBZ2RtRnlJR2hoYzFSdlUzUnlhVzVuUm05eWJXRjBRblZuTzF4dUlDQWdJSFpoY2lCMGFXMWxXbTl1WlU5bVpuTmxkQ0E5SUdGT1pXZGhkR2wyWlZSbGMzUkVZWFJsTG1kbGRGUnBiV1Y2YjI1bFQyWm1jMlYwS0NrN1hHNGdJQ0FnYVdZZ0tIUnBiV1ZhYjI1bFQyWm1jMlYwSUR3Z0xUY3lNQ2tnZTF4dUlDQWdJQ0FnSUNCb1lYTlViMFJoZEdWVGRISnBibWRHYjNKdFlYUkNkV2NnUFNCaFRtVm5ZWFJwZG1WVVpYTjBSR0YwWlM1MGIwUmhkR1ZUZEhKcGJtY29LU0FoUFQwZ0oxUjFaU0JLWVc0Z01ESWdMVFExT0RjMUp6dGNiaUFnSUNBZ0lDQWdhR0Z6Vkc5VGRISnBibWRHYjNKdFlYUkNkV2NnUFNBaEtDOWVWR2gxSUVSbFl5QXhNQ0F5TURFMUlGeGNaRnhjWkRwY1hHUmNYR1E2WEZ4a1hGeGtJRWROVkZzdFhGd3JYVnhjWkZ4Y1pGeGNaRnhjWkNnL09pQjhKQ2t2S1M1MFpYTjBLR0ZRYjNOcGRHbDJaVlJsYzNSRVlYUmxMblJ2VTNSeWFXNW5LQ2twTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2hoYzFSdlJHRjBaVk4wY21sdVowWnZjbTFoZEVKMVp5QTlJR0ZPWldkaGRHbDJaVlJsYzNSRVlYUmxMblJ2UkdGMFpWTjBjbWx1WnlncElDRTlQU0FuVFc5dUlFcGhiaUF3TVNBdE5EVTROelVuTzF4dUlDQWdJQ0FnSUNCb1lYTlViMU4wY21sdVowWnZjbTFoZEVKMVp5QTlJQ0VvTDE1WFpXUWdSR1ZqSURBNUlESXdNVFVnWEZ4a1hGeGtPbHhjWkZ4Y1pEcGNYR1JjWEdRZ1IwMVVXeTFjWEN0ZFhGeGtYRnhrWEZ4a1hGeGtLRDg2SUh3a0tTOHBMblJsYzNRb1lWQnZjMmwwYVhabFZHVnpkRVJoZEdVdWRHOVRkSEpwYm1jb0tTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJRzl5YVdkcGJtRnNSMlYwUm5Wc2JGbGxZWElnUFNCallXeHNMbUpwYm1Rb1JHRjBaUzV3Y205MGIzUjVjR1V1WjJWMFJuVnNiRmxsWVhJcE8xeHVJQ0FnSUhaaGNpQnZjbWxuYVc1aGJFZGxkRTF2Ym5Sb0lEMGdZMkZzYkM1aWFXNWtLRVJoZEdVdWNISnZkRzkwZVhCbExtZGxkRTF2Ym5Sb0tUdGNiaUFnSUNCMllYSWdiM0pwWjJsdVlXeEhaWFJFWVhSbElEMGdZMkZzYkM1aWFXNWtLRVJoZEdVdWNISnZkRzkwZVhCbExtZGxkRVJoZEdVcE8xeHVJQ0FnSUhaaGNpQnZjbWxuYVc1aGJFZGxkRlZVUTBaMWJHeFpaV0Z5SUQwZ1kyRnNiQzVpYVc1a0tFUmhkR1V1Y0hKdmRHOTBlWEJsTG1kbGRGVlVRMFoxYkd4WlpXRnlLVHRjYmlBZ0lDQjJZWElnYjNKcFoybHVZV3hIWlhSVlZFTk5iMjUwYUNBOUlHTmhiR3d1WW1sdVpDaEVZWFJsTG5CeWIzUnZkSGx3WlM1blpYUlZWRU5OYjI1MGFDazdYRzRnSUNBZ2RtRnlJRzl5YVdkcGJtRnNSMlYwVlZSRFJHRjBaU0E5SUdOaGJHd3VZbWx1WkNoRVlYUmxMbkJ5YjNSdmRIbHdaUzVuWlhSVlZFTkVZWFJsS1R0Y2JpQWdJQ0IyWVhJZ2IzSnBaMmx1WVd4SFpYUlZWRU5FWVhrZ1BTQmpZV3hzTG1KcGJtUW9SR0YwWlM1d2NtOTBiM1I1Y0dVdVoyVjBWVlJEUkdGNUtUdGNiaUFnSUNCMllYSWdiM0pwWjJsdVlXeEhaWFJWVkVOSWIzVnljeUE5SUdOaGJHd3VZbWx1WkNoRVlYUmxMbkJ5YjNSdmRIbHdaUzVuWlhSVlZFTkliM1Z5Y3lrN1hHNGdJQ0FnZG1GeUlHOXlhV2RwYm1Gc1IyVjBWVlJEVFdsdWRYUmxjeUE5SUdOaGJHd3VZbWx1WkNoRVlYUmxMbkJ5YjNSdmRIbHdaUzVuWlhSVlZFTk5hVzUxZEdWektUdGNiaUFnSUNCMllYSWdiM0pwWjJsdVlXeEhaWFJWVkVOVFpXTnZibVJ6SUQwZ1kyRnNiQzVpYVc1a0tFUmhkR1V1Y0hKdmRHOTBlWEJsTG1kbGRGVlVRMU5sWTI5dVpITXBPMXh1SUNBZ0lIWmhjaUJ2Y21sbmFXNWhiRWRsZEZWVVEwMXBiR3hwYzJWamIyNWtjeUE5SUdOaGJHd3VZbWx1WkNoRVlYUmxMbkJ5YjNSdmRIbHdaUzVuWlhSVlZFTk5hV3hzYVhObFkyOXVaSE1wTzF4dUlDQWdJSFpoY2lCa1lYbE9ZVzFsSUQwZ1d5ZFRkVzRuTENBblRXOXVKeXdnSjFSMVpTY3NJQ2RYWldRbkxDQW5WR2gxSnl3Z0owWnlhU2NzSUNkVFlYUW5YVHRjYmlBZ0lDQjJZWElnYlc5dWRHaE9ZVzFsSUQwZ1d5ZEtZVzRuTENBblJtVmlKeXdnSjAxaGNpY3NJQ2RCY0hJbkxDQW5UV0Y1Snl3Z0owcDFiaWNzSUNkS2RXd25MQ0FuUVhWbkp5d2dKMU5sY0Njc0lDZFBZM1FuTENBblRtOTJKeXdnSjBSbFl5ZGRPMXh1SUNBZ0lIWmhjaUJrWVhselNXNU5iMjUwYUNBOUlHWjFibU4wYVc5dUlHUmhlWE5KYmsxdmJuUm9LRzF2Ym5Sb0xDQjVaV0Z5S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdmNtbG5hVzVoYkVkbGRFUmhkR1VvYm1WM0lFUmhkR1VvZVdWaGNpd2diVzl1ZEdnc0lEQXBLVHRjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aEVZWFJsTG5CeWIzUnZkSGx3WlN3Z2UxeHVJQ0FnSUNBZ0lDQm5aWFJHZFd4c1dXVmhjam9nWm5WdVkzUnBiMjRnWjJWMFJuVnNiRmxsWVhJb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWFJvYVhNZ2ZId2dJU2gwYUdseklHbHVjM1JoYm1ObGIyWWdSR0YwWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2QwYUdseklHbHpJRzV2ZENCaElFUmhkR1VnYjJKcVpXTjBMaWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSGxsWVhJZ1BTQnZjbWxuYVc1aGJFZGxkRVoxYkd4WlpXRnlLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIbGxZWElnUENBd0lDWW1JRzl5YVdkcGJtRnNSMlYwVFc5dWRHZ29kR2hwY3lrZ1BpQXhNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1WldGeUlDc2dNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1WldGeU8xeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0JuWlhSTmIyNTBhRG9nWm5WdVkzUnBiMjRnWjJWMFRXOXVkR2dvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE1nZkh3Z0lTaDBhR2x6SUdsdWMzUmhibU5sYjJZZ1JHRjBaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZDBhR2x6SUdseklHNXZkQ0JoSUVSaGRHVWdiMkpxWldOMExpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlIbGxZWElnUFNCdmNtbG5hVzVoYkVkbGRFWjFiR3haWldGeUtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUcxdmJuUm9JRDBnYjNKcFoybHVZV3hIWlhSTmIyNTBhQ2gwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDVaV0Z5SUR3Z01DQW1KaUJ0YjI1MGFDQStJREV4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SURBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JXOXVkR2c3WEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lHZGxkRVJoZEdVNklHWjFibU4wYVc5dUlHZGxkRVJoZEdVb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWFJvYVhNZ2ZId2dJU2gwYUdseklHbHVjM1JoYm1ObGIyWWdSR0YwWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2QwYUdseklHbHpJRzV2ZENCaElFUmhkR1VnYjJKcVpXTjBMaWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSGxsWVhJZ1BTQnZjbWxuYVc1aGJFZGxkRVoxYkd4WlpXRnlLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHMXZiblJvSUQwZ2IzSnBaMmx1WVd4SFpYUk5iMjUwYUNoMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJrWVhSbElEMGdiM0pwWjJsdVlXeEhaWFJFWVhSbEtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hsbFlYSWdQQ0F3SUNZbUlHMXZiblJvSUQ0Z01URXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JXOXVkR2dnUFQwOUlERXlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa1lYUmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1pHRjVjeUE5SUdSaGVYTkpiazF2Ym5Sb0tEQXNJSGxsWVhJZ0t5QXhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdLR1JoZVhNZ0xTQmtZWFJsS1NBcklERTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR0YwWlR0Y2JpQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdaMlYwVlZSRFJuVnNiRmxsWVhJNklHWjFibU4wYVc5dUlHZGxkRlZVUTBaMWJHeFpaV0Z5S0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6SUh4OElDRW9kR2hwY3lCcGJuTjBZVzVqWlc5bUlFUmhkR1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ25kR2hwY3lCcGN5QnViM1FnWVNCRVlYUmxJRzlpYW1WamRDNG5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQjVaV0Z5SUQwZ2IzSnBaMmx1WVd4SFpYUlZWRU5HZFd4c1dXVmhjaWgwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDVaV0Z5SUR3Z01DQW1KaUJ2Y21sbmFXNWhiRWRsZEZWVVEwMXZiblJvS0hSb2FYTXBJRDRnTVRFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VXVmhjaUFySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VXVmhjanRjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ1oyVjBWVlJEVFc5dWRHZzZJR1oxYm1OMGFXOXVJR2RsZEZWVVEwMXZiblJvS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6SUh4OElDRW9kR2hwY3lCcGJuTjBZVzVqWlc5bUlFUmhkR1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ25kR2hwY3lCcGN5QnViM1FnWVNCRVlYUmxJRzlpYW1WamRDNG5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQjVaV0Z5SUQwZ2IzSnBaMmx1WVd4SFpYUlZWRU5HZFd4c1dXVmhjaWgwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnRiMjUwYUNBOUlHOXlhV2RwYm1Gc1IyVjBWVlJEVFc5dWRHZ29kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2VXVmhjaUE4SURBZ0ppWWdiVzl1ZEdnZ1BpQXhNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxdmJuUm9PMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCblpYUlZWRU5FWVhSbE9pQm1kVzVqZEdsdmJpQm5aWFJWVkVORVlYUmxLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGMGFHbHpJSHg4SUNFb2RHaHBjeUJwYm5OMFlXNWpaVzltSUVSaGRHVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnbmRHaHBjeUJwY3lCdWIzUWdZU0JFWVhSbElHOWlhbVZqZEM0bktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCNVpXRnlJRDBnYjNKcFoybHVZV3hIWlhSVlZFTkdkV3hzV1dWaGNpaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdGIyNTBhQ0E5SUc5eWFXZHBibUZzUjJWMFZWUkRUVzl1ZEdnb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWkdGMFpTQTlJRzl5YVdkcGJtRnNSMlYwVlZSRFJHRjBaU2gwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDVaV0Z5SUR3Z01DQW1KaUJ0YjI1MGFDQStJREV4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzF2Ym5Sb0lEMDlQU0F4TWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR0YwWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR1JoZVhNZ1BTQmtZWGx6U1c1TmIyNTBhQ2d3TENCNVpXRnlJQ3NnTVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoa1lYbHpJQzBnWkdGMFpTa2dLeUF4TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdSaGRHVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0JvWVhOT1pXZGhkR2wyWlUxdmJuUm9XV1ZoY2tKMVp5azdYRzVjYmlBZ0lDQmtaV1pwYm1WUWNtOXdaWEowYVdWektFUmhkR1V1Y0hKdmRHOTBlWEJsTENCN1hHNGdJQ0FnSUNBZ0lIUnZWVlJEVTNSeWFXNW5PaUJtZFc1amRHbHZiaUIwYjFWVVExTjBjbWx1WnlncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hkR2hwY3lCOGZDQWhLSFJvYVhNZ2FXNXpkR0Z1WTJWdlppQkVZWFJsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9KM1JvYVhNZ2FYTWdibTkwSUdFZ1JHRjBaU0J2WW1wbFkzUXVKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdaR0Y1SUQwZ2IzSnBaMmx1WVd4SFpYUlZWRU5FWVhrb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWkdGMFpTQTlJRzl5YVdkcGJtRnNSMlYwVlZSRFJHRjBaU2gwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnRiMjUwYUNBOUlHOXlhV2RwYm1Gc1IyVjBWVlJEVFc5dWRHZ29kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2VXVmhjaUE5SUc5eWFXZHBibUZzUjJWMFZWUkRSblZzYkZsbFlYSW9kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2FHOTFjaUE5SUc5eWFXZHBibUZzUjJWMFZWUkRTRzkxY25Nb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYldsdWRYUmxJRDBnYjNKcFoybHVZV3hIWlhSVlZFTk5hVzUxZEdWektIUm9hWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhObFkyOXVaQ0E5SUc5eWFXZHBibUZzUjJWMFZWUkRVMlZqYjI1a2N5aDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmtZWGxPWVcxbFcyUmhlVjBnS3lBbkxDQW5JQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvWkdGMFpTQThJREV3SUQ4Z0p6QW5JQ3NnWkdGMFpTQTZJR1JoZEdVcElDc2dKeUFuSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdGIyNTBhRTVoYldWYmJXOXVkR2hkSUNzZ0p5QW5JQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1WldGeUlDc2dKeUFuSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb2FHOTFjaUE4SURFd0lEOGdKekFuSUNzZ2FHOTFjaUE2SUdodmRYSXBJQ3NnSnpvbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9iV2x1ZFhSbElEd2dNVEFnUHlBbk1DY2dLeUJ0YVc1MWRHVWdPaUJ0YVc1MWRHVXBJQ3NnSnpvbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9jMlZqYjI1a0lEd2dNVEFnUHlBbk1DY2dLeUJ6WldOdmJtUWdPaUJ6WldOdmJtUXBJQ3NnSnlCSFRWUW5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU3dnYUdGelRtVm5ZWFJwZG1WTmIyNTBhRmxsWVhKQ2RXY2dmSHdnYUdGelZHOVZWRU5UZEhKcGJtZEdiM0p0WVhSQ2RXY3BPMXh1WEc0Z0lDQWdMeThnVDNCbGNtRWdNVElnYUdGeklHQXNZRnh1SUNBZ0lHUmxabWx1WlZCeWIzQmxjblJwWlhNb1JHRjBaUzV3Y205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2RHOUVZWFJsVTNSeWFXNW5PaUJtZFc1amRHbHZiaUIwYjBSaGRHVlRkSEpwYm1jb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWFJvYVhNZ2ZId2dJU2gwYUdseklHbHVjM1JoYm1ObGIyWWdSR0YwWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2QwYUdseklHbHpJRzV2ZENCaElFUmhkR1VnYjJKcVpXTjBMaWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR1JoZVNBOUlIUm9hWE11WjJWMFJHRjVLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWkdGMFpTQTlJSFJvYVhNdVoyVjBSR0YwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHMXZiblJvSUQwZ2RHaHBjeTVuWlhSTmIyNTBhQ2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhsbFlYSWdQU0IwYUdsekxtZGxkRVoxYkd4WlpXRnlLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHRjVUbUZ0WlZ0a1lYbGRJQ3NnSnlBbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRiMjUwYUU1aGJXVmJiVzl1ZEdoZElDc2dKeUFuSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb1pHRjBaU0E4SURFd0lEOGdKekFuSUNzZ1pHRjBaU0E2SUdSaGRHVXBJQ3NnSnlBbklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVaV0Z5TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z2FHRnpUbVZuWVhScGRtVk5iMjUwYUZsbFlYSkNkV2NnZkh3Z2FHRnpWRzlFWVhSbFUzUnlhVzVuUm05eWJXRjBRblZuS1R0Y2JseHVJQ0FnSUM4dklHTmhiaWQwSUhWelpTQmtaV1pwYm1WUWNtOXdaWEowYVdWeklHaGxjbVVnWW1WallYVnpaU0J2WmlCMGIxTjBjbWx1WnlCbGJuVnRaWEpoZEdsdmJpQnBjM04xWlNCcGJpQkpSU0E4UFNBNFhHNGdJQ0FnYVdZZ0tHaGhjMDVsWjJGMGFYWmxUVzl1ZEdoWlpXRnlRblZuSUh4OElHaGhjMVJ2VTNSeWFXNW5SbTl5YldGMFFuVm5LU0I3WEc0Z0lDQWdJQ0FnSUVSaGRHVXVjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5JRDBnWm5WdVkzUnBiMjRnZEc5VGRISnBibWNvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE1nZkh3Z0lTaDBhR2x6SUdsdWMzUmhibU5sYjJZZ1JHRjBaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZDBhR2x6SUdseklHNXZkQ0JoSUVSaGRHVWdiMkpxWldOMExpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHUmhlU0E5SUhSb2FYTXVaMlYwUkdGNUtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdaR0YwWlNBOUlIUm9hWE11WjJWMFJHRjBaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUcxdmJuUm9JRDBnZEdocGN5NW5aWFJOYjI1MGFDZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSGxsWVhJZ1BTQjBhR2x6TG1kbGRFWjFiR3haWldGeUtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdhRzkxY2lBOUlIUm9hWE11WjJWMFNHOTFjbk1vS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdGFXNTFkR1VnUFNCMGFHbHpMbWRsZEUxcGJuVjBaWE1vS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCelpXTnZibVFnUFNCMGFHbHpMbWRsZEZObFkyOXVaSE1vS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCMGFXMWxlbTl1WlU5bVpuTmxkQ0E5SUhSb2FYTXVaMlYwVkdsdFpYcHZibVZQWm1aelpYUW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJvYjNWeWMwOW1abk5sZENBOUlFMWhkR2d1Wm14dmIzSW9UV0YwYUM1aFluTW9kR2x0WlhwdmJtVlBabVp6WlhRcElDOGdOakFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUcxcGJuVjBaWE5QWm1aelpYUWdQU0JOWVhSb0xtWnNiMjl5S0UxaGRHZ3VZV0p6S0hScGJXVjZiMjVsVDJabWMyVjBLU0FsSURZd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrWVhsT1lXMWxXMlJoZVYwZ0t5QW5JQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxdmJuUm9UbUZ0WlZ0dGIyNTBhRjBnS3lBbklDY2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2hrWVhSbElEd2dNVEFnUHlBbk1DY2dLeUJrWVhSbElEb2daR0YwWlNrZ0t5QW5JQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhsbFlYSWdLeUFuSUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDaG9iM1Z5SUR3Z01UQWdQeUFuTUNjZ0t5Qm9iM1Z5SURvZ2FHOTFjaWtnS3lBbk9pY2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2h0YVc1MWRHVWdQQ0F4TUNBL0lDY3dKeUFySUcxcGJuVjBaU0E2SUcxcGJuVjBaU2tnS3lBbk9pY2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2h6WldOdmJtUWdQQ0F4TUNBL0lDY3dKeUFySUhObFkyOXVaQ0E2SUhObFkyOXVaQ2tnS3lBbklFZE5WQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNoMGFXMWxlbTl1WlU5bVpuTmxkQ0ErSURBZ1B5QW5MU2NnT2lBbkt5Y3BJQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvYUc5MWNuTlBabVp6WlhRZ1BDQXhNQ0EvSUNjd0p5QXJJR2h2ZFhKelQyWm1jMlYwSURvZ2FHOTFjbk5QWm1aelpYUXBJQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvYldsdWRYUmxjMDltWm5ObGRDQThJREV3SUQ4Z0p6QW5JQ3NnYldsdWRYUmxjMDltWm5ObGRDQTZJRzFwYm5WMFpYTlBabVp6WlhRcE8xeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0JwWmlBb2MzVndjRzl5ZEhORVpYTmpjbWx3ZEc5eWN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0pFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hFWVhSbExuQnliM1J2ZEhsd1pTd2dKM1J2VTNSeWFXNW5KeXdnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJtWnBaM1Z5WVdKc1pUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2NtbDBZV0pzWlRvZ2RISjFaVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJGVXpVZ01UVXVPUzQxTGpRelhHNGdJQ0FnTHk4Z2FIUjBjRG92TDJWek5TNW5hWFJvZFdJdVkyOXRMeU40TVRVdU9TNDFMalF6WEc0Z0lDQWdMeThnVkdocGN5Qm1kVzVqZEdsdmJpQnlaWFIxY201eklHRWdVM1J5YVc1bklIWmhiSFZsSUhKbGNISmxjMlZ1ZENCMGFHVWdhVzV6ZEdGdVkyVWdhVzRnZEdsdFpWeHVJQ0FnSUM4dklISmxjSEpsYzJWdWRHVmtJR0o1SUhSb2FYTWdSR0YwWlNCdlltcGxZM1F1SUZSb1pTQm1iM0p0WVhRZ2IyWWdkR2hsSUZOMGNtbHVaeUJwY3lCMGFHVWdSR0YwWlNCVWFXMWxYRzRnSUNBZ0x5OGdjM1J5YVc1bklHWnZjbTFoZENCa1pXWnBibVZrSUdsdUlERTFMamt1TVM0eE5TNGdRV3hzSUdacFpXeGtjeUJoY21VZ2NISmxjMlZ1ZENCcGJpQjBhR1VnVTNSeWFXNW5MbHh1SUNBZ0lDOHZJRlJvWlNCMGFXMWxJSHB2Ym1VZ2FYTWdZV3gzWVhseklGVlVReXdnWkdWdWIzUmxaQ0JpZVNCMGFHVWdjM1ZtWm1sNElGb3VJRWxtSUhSb1pTQjBhVzFsSUhaaGJIVmxJRzltWEc0Z0lDQWdMeThnZEdocGN5QnZZbXBsWTNRZ2FYTWdibTkwSUdFZ1ptbHVhWFJsSUU1MWJXSmxjaUJoSUZKaGJtZGxSWEp5YjNJZ1pYaGpaWEIwYVc5dUlHbHpJSFJvY205M2JpNWNiaUFnSUNCMllYSWdibVZuWVhScGRtVkVZWFJsSUQwZ0xUWXlNVGs0TnpVMU1qQXdNREF3TzF4dUlDQWdJSFpoY2lCdVpXZGhkR2wyWlZsbFlYSlRkSEpwYm1jZ1BTQW5MVEF3TURBd01TYzdYRzRnSUNBZ2RtRnlJR2hoYzA1bFoyRjBhWFpsUkdGMFpVSjFaeUE5SUVSaGRHVXVjSEp2ZEc5MGVYQmxMblJ2U1ZOUFUzUnlhVzVuSUNZbUlHNWxkeUJFWVhSbEtHNWxaMkYwYVhabFJHRjBaU2t1ZEc5SlUwOVRkSEpwYm1jb0tTNXBibVJsZUU5bUtHNWxaMkYwYVhabFdXVmhjbE4wY21sdVp5a2dQVDA5SUMweE8xeHVJQ0FnSUhaaGNpQm9ZWE5UWVdaaGNtazFNVVJoZEdWQ2RXY2dQU0JFWVhSbExuQnliM1J2ZEhsd1pTNTBiMGxUVDFOMGNtbHVaeUFtSmlCdVpYY2dSR0YwWlNndE1Ta3VkRzlKVTA5VGRISnBibWNvS1NBaFBUMGdKekU1TmprdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNVdpYzdYRzVjYmlBZ0lDQjJZWElnWjJWMFZHbHRaU0E5SUdOaGJHd3VZbWx1WkNoRVlYUmxMbkJ5YjNSdmRIbHdaUzVuWlhSVWFXMWxLVHRjYmx4dUlDQWdJR1JsWm1sdVpWQnliM0JsY25ScFpYTW9SR0YwWlM1d2NtOTBiM1I1Y0dVc0lIdGNiaUFnSUNBZ0lDQWdkRzlKVTA5VGRISnBibWM2SUdaMWJtTjBhVzl1SUhSdlNWTlBVM1J5YVc1bktDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzBacGJtbDBaU2gwYUdsektTQjhmQ0FoYVhOR2FXNXBkR1VvWjJWMFZHbHRaU2gwYUdsektTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCQlpHOXdaU0JRYUc5MGIzTm9iM0FnY21WeGRXbHlaWE1nZEdobElITmxZMjl1WkNCamFHVmpheTVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVW1GdVoyVkZjbkp2Y2lnblJHRjBaUzV3Y205MGIzUjVjR1V1ZEc5SlUwOVRkSEpwYm1jZ1kyRnNiR1ZrSUc5dUlHNXZiaTFtYVc1cGRHVWdkbUZzZFdVdUp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQjVaV0Z5SUQwZ2IzSnBaMmx1WVd4SFpYUlZWRU5HZFd4c1dXVmhjaWgwYUdsektUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJRzF2Ym5Sb0lEMGdiM0pwWjJsdVlXeEhaWFJWVkVOTmIyNTBhQ2gwYUdsektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklITmxaU0JvZEhSd2N6b3ZMMmRwZEdoMVlpNWpiMjB2WlhNdGMyaHBiWE12WlhNMUxYTm9hVzB2YVhOemRXVnpMekV4TVZ4dUlDQWdJQ0FnSUNBZ0lDQWdlV1ZoY2lBclBTQk5ZWFJvTG1ac2IyOXlLRzF2Ym5Sb0lDOGdNVElwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdiVzl1ZEdnZ1BTQW9iVzl1ZEdnZ0pTQXhNaUFySURFeUtTQWxJREV5TzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCMGFHVWdaR0YwWlNCMGFXMWxJSE4wY21sdVp5Qm1iM0p0WVhRZ2FYTWdjM0JsWTJsbWFXVmtJR2x1SURFMUxqa3VNUzR4TlM1Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCYmJXOXVkR2dnS3lBeExDQnZjbWxuYVc1aGJFZGxkRlZVUTBSaGRHVW9kR2hwY3lrc0lHOXlhV2RwYm1Gc1IyVjBWVlJEU0c5MWNuTW9kR2hwY3lrc0lHOXlhV2RwYm1Gc1IyVjBWVlJEVFdsdWRYUmxjeWgwYUdsektTd2diM0pwWjJsdVlXeEhaWFJWVkVOVFpXTnZibVJ6S0hSb2FYTXBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIbGxZWElnUFNBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tIbGxZWElnUENBd0lEOGdKeTBuSURvZ0tIbGxZWElnUGlBNU9UazVJRDhnSnlzbklEb2dKeWNwS1NBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUnlVMnhwWTJVb0p6QXdNREF3SnlBcklFMWhkR2d1WVdKektIbGxZWElwTENBb01DQThQU0I1WldGeUlDWW1JSGxsWVhJZ1BEMGdPVGs1T1NrZ1B5QXROQ0E2SUMwMktWeHVJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCeVpYTjFiSFF1YkdWdVozUm9PeUFySzJrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJ3WVdRZ2JXOXVkR2h6TENCa1lYbHpMQ0JvYjNWeWN5d2diV2x1ZFhSbGN5d2dZVzVrSUhObFkyOXVaSE1nZEc4Z2FHRjJaU0IwZDI4Z1pHbG5hWFJ6TGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMzVnNkRnRwWFNBOUlITjBjbE5zYVdObEtDY3dNQ2NnS3lCeVpYTjFiSFJiYVYwc0lDMHlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklIQmhaQ0J0YVd4c2FYTmxZMjl1WkhNZ2RHOGdhR0YyWlNCMGFISmxaU0JrYVdkcGRITXVYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhsbFlYSWdLeUFuTFNjZ0t5QmhjbkpoZVZOc2FXTmxLSEpsYzNWc2RDd2dNQ3dnTWlrdWFtOXBiaWduTFNjcElDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5WQ2NnS3lCaGNuSmhlVk5zYVdObEtISmxjM1ZzZEN3Z01pa3VhbTlwYmlnbk9pY3BJQ3NnSnk0bklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSEpUYkdsalpTZ25NREF3SnlBcklHOXlhV2RwYm1Gc1IyVjBWVlJEVFdsc2JHbHpaV052Ym1SektIUm9hWE1wTENBdE15a2dLeUFuV2lkY2JpQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TENCb1lYTk9aV2RoZEdsMlpVUmhkR1ZDZFdjZ2ZId2dhR0Z6VTJGbVlYSnBOVEZFWVhSbFFuVm5LVHRjYmx4dUlDQWdJQzh2SUVWVE5TQXhOUzQ1TGpVdU5EUmNiaUFnSUNBdkx5Qm9kSFJ3T2k4dlpYTTFMbWRwZEdoMVlpNWpiMjB2STNneE5TNDVMalV1TkRSY2JpQWdJQ0F2THlCVWFHbHpJR1oxYm1OMGFXOXVJSEJ5YjNacFpHVnpJR0VnVTNSeWFXNW5JSEpsY0hKbGMyVnVkR0YwYVc5dUlHOW1JR0VnUkdGMFpTQnZZbXBsWTNRZ1ptOXlJSFZ6WlNCaWVWeHVJQ0FnSUM4dklFcFRUMDR1YzNSeWFXNW5hV1o1SUNneE5TNHhNaTR6S1M1Y2JpQWdJQ0IyWVhJZ1pHRjBaVlJ2U2xOUFRrbHpVM1Z3Y0c5eWRHVmtJRDBnS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQkVZWFJsTG5CeWIzUnZkSGx3WlM1MGIwcFRUMDRnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdVpYY2dSR0YwWlNoT1lVNHBMblJ2U2xOUFRpZ3BJRDA5UFNCdWRXeHNJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1WM0lFUmhkR1VvYm1WbllYUnBkbVZFWVhSbEtTNTBiMHBUVDA0b0tTNXBibVJsZUU5bUtHNWxaMkYwYVhabFdXVmhjbE4wY21sdVp5a2dJVDA5SUMweElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdSR0YwWlM1d2NtOTBiM1I1Y0dVdWRHOUtVMDlPTG1OaGJHd29leUF2THlCblpXNWxjbWxqWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZTVk5QVTNSeWFXNW5PaUJtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlCMGNuVmxPeUI5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBvS1NrN1hHNGdJQ0FnYVdZZ0tDRmtZWFJsVkc5S1UwOU9TWE5UZFhCd2IzSjBaV1FwSUh0Y2JpQWdJQ0FnSUNBZ1JHRjBaUzV3Y205MGIzUjVjR1V1ZEc5S1UwOU9JRDBnWm5WdVkzUnBiMjRnZEc5S1UwOU9LR3RsZVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1YyaGxiaUIwYUdVZ2RHOUtVMDlPSUcxbGRHaHZaQ0JwY3lCallXeHNaV1FnZDJsMGFDQmhjbWQxYldWdWRDQnJaWGtzSUhSb1pTQm1iMnhzYjNkcGJtZGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklITjBaWEJ6SUdGeVpTQjBZV3RsYmpwY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z01TNGdJRXhsZENCUElHSmxJSFJvWlNCeVpYTjFiSFFnYjJZZ1kyRnNiR2x1WnlCVWIwOWlhbVZqZEN3Z1oybDJhVzVuSUdsMElIUm9aU0IwYUdselhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCMllXeDFaU0JoY3lCcGRITWdZWEpuZFcxbGJuUXVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXlMaUJNWlhRZ2RIWWdZbVVnUlZNdVZHOVFjbWx0YVhScGRtVW9UeXdnYUdsdWRDQk9kVzFpWlhJcExseHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlFOGdQU0FrVDJKcVpXTjBLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlIUjJJRDBnUlZNdVZHOVFjbWx0YVhScGRtVW9UeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUF6TGlCSlppQjBkaUJwY3lCaElFNTFiV0psY2lCaGJtUWdhWE1nYm05MElHWnBibWwwWlN3Z2NtVjBkWEp1SUc1MWJHd3VYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIUjJJRDA5UFNBbmJuVnRZbVZ5SnlBbUppQWhhWE5HYVc1cGRHVW9kSFlwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBMExpQk1aWFFnZEc5SlUwOGdZbVVnZEdobElISmxjM1ZzZENCdlppQmpZV3hzYVc1bklIUm9aU0JiVzBkbGRGMWRJR2x1ZEdWeWJtRnNJRzFsZEdodlpDQnZabHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdUeUIzYVhSb0lHRnlaM1Z0Wlc1MElGd2lkRzlKVTA5VGRISnBibWRjSWk1Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCMGIwbFRUeUE5SUU4dWRHOUpVMDlUZEhKcGJtYzdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QTFMaUJKWmlCSmMwTmhiR3hoWW14bEtIUnZTVk5QS1NCcGN5Qm1ZV3h6WlN3Z2RHaHliM2NnWVNCVWVYQmxSWEp5YjNJZ1pYaGpaWEIwYVc5dUxseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnBjME5oYkd4aFlteGxLSFJ2U1ZOUEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvSjNSdlNWTlBVM1J5YVc1bklIQnliM0JsY25SNUlHbHpJRzV2ZENCallXeHNZV0pzWlNjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnTmk0Z1VtVjBkWEp1SUhSb1pTQnlaWE4xYkhRZ2IyWWdZMkZzYkdsdVp5QjBhR1VnVzF0RFlXeHNYVjBnYVc1MFpYSnVZV3dnYldWMGFHOWtJRzltWEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUFnZEc5SlUwOGdkMmwwYUNCUElHRnpJSFJvWlNCMGFHbHpJSFpoYkhWbElHRnVaQ0JoYmlCbGJYQjBlU0JoY21kMWJXVnVkQ0JzYVhOMExseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJ2U1ZOUExtTmhiR3dvVHlrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklFNVBWRVVnTVNCVWFHVWdZWEpuZFcxbGJuUWdhWE1nYVdkdWIzSmxaQzVjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnVGs5VVJTQXlJRlJvWlNCMGIwcFRUMDRnWm5WdVkzUnBiMjRnYVhNZ2FXNTBaVzUwYVc5dVlXeHNlU0JuWlc1bGNtbGpPeUJwZENCa2IyVnpJRzV2ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnY21WeGRXbHlaU0IwYUdGMElHbDBjeUIwYUdseklIWmhiSFZsSUdKbElHRWdSR0YwWlNCdlltcGxZM1F1SUZSb1pYSmxabTl5WlN3Z2FYUWdZMkZ1SUdKbFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCMGNtRnVjMlpsY25KbFpDQjBieUJ2ZEdobGNpQnJhVzVrY3lCdlppQnZZbXBsWTNSeklHWnZjaUIxYzJVZ1lYTWdZU0J0WlhSb2IyUXVJRWh2ZDJWMlpYSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnBkQ0JrYjJWeklISmxjWFZwY21VZ2RHaGhkQ0JoYm5rZ2MzVmphQ0J2WW1wbFkzUWdhR0YyWlNCaElIUnZTVk5QVTNSeWFXNW5JRzFsZEdodlpDNGdRVzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRzlpYW1WamRDQnBjeUJtY21WbElIUnZJSFZ6WlNCMGFHVWdZWEpuZFcxbGJuUWdhMlY1SUhSdklHWnBiSFJsY2lCcGRITmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklITjBjbWx1WjJsbWFXTmhkR2x2Ymk1Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QkZVelVnTVRVdU9TNDBMakpjYmlBZ0lDQXZMeUJvZEhSd09pOHZaWE0xTG1kcGRHaDFZaTVqYjIwdkkzZ3hOUzQ1TGpRdU1seHVJQ0FnSUM4dklHSmhjMlZrSUc5dUlIZHZjbXNnYzJoaGNtVmtJR0o1SUVSaGJtbGxiQ0JHY21sbGMyVnVJQ2hrWVc1MGJXRnVLVnh1SUNBZ0lDOHZJR2gwZEhBNkx5OW5hWE4wTG1kcGRHaDFZaTVqYjIwdk16QXpNalE1WEc0Z0lDQWdkbUZ5SUhOMWNIQnZjblJ6UlhoMFpXNWtaV1JaWldGeWN5QTlJRVJoZEdVdWNHRnljMlVvSnlzd016TTJOVGd0TURrdE1qZFVNREU2TkRZNk5EQXVNREF3V2ljcElEMDlQU0F4WlRFMU8xeHVJQ0FnSUhaaGNpQmhZMk5sY0hSelNXNTJZV3hwWkVSaGRHVnpJRDBnSVdselRtRk9LRVJoZEdVdWNHRnljMlVvSnpJd01USXRNRFF0TURSVU1qUTZNREE2TURBdU5UQXdXaWNwS1NCOGZDQWhhWE5PWVU0b1JHRjBaUzV3WVhKelpTZ25NakF4TWkweE1TMHpNVlF5TXpvMU9UbzFPUzR3TURCYUp5a3BJSHg4SUNGcGMwNWhUaWhFWVhSbExuQmhjbk5sS0NjeU1ERXlMVEV5TFRNeFZESXpPalU1T2pZd0xqQXdNRm9uS1NrN1hHNGdJQ0FnZG1GeUlHUnZaWE5PYjNSUVlYSnpaVmt5UzA1bGQxbGxZWElnUFNCcGMwNWhUaWhFWVhSbExuQmhjbk5sS0NjeU1EQXdMVEF4TFRBeFZEQXdPakF3T2pBd0xqQXdNRm9uS1NrN1hHNGdJQ0FnYVdZZ0tHUnZaWE5PYjNSUVlYSnpaVmt5UzA1bGQxbGxZWElnZkh3Z1lXTmpaWEIwYzBsdWRtRnNhV1JFWVhSbGN5QjhmQ0FoYzNWd2NHOXlkSE5GZUhSbGJtUmxaRmxsWVhKektTQjdYRzRnSUNBZ0lDQWdJQzh2SUZoWVdDQm5iRzlpWVd3Z1lYTnphV2R1YldWdWRDQjNiMjRuZENCM2IzSnJJR2x1SUdWdFltVmtaR2x1WjNNZ2RHaGhkQ0IxYzJWY2JpQWdJQ0FnSUNBZ0x5OGdZVzRnWVd4MFpYSnVZWFJsSUc5aWFtVmpkQ0JtYjNJZ2RHaGxJR052Ym5SbGVIUXVYRzRnSUNBZ0lDQWdJQzhxSUdkc2IySmhiQ0JFWVhSbE9pQjBjblZsSUNvdlhHNGdJQ0FnSUNBZ0lDOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHNXZMWFZ1WkdWbUlDb3ZYRzRnSUNBZ0lDQWdJSFpoY2lCdFlYaFRZV1psVlc1emFXZHVaV1F6TWtKcGRDQTlJRTFoZEdndWNHOTNLRElzSURNeEtTQXRJREU3WEc0Z0lDQWdJQ0FnSUhaaGNpQm9ZWE5UWVdaaGNtbFRhV2R1WldSSmJuUkNkV2NnUFNCcGMwRmpkSFZoYkU1aFRpaHVaWGNnUkdGMFpTZ3hPVGN3TENBd0xDQXhMQ0F3TENBd0xDQXdMQ0J0WVhoVFlXWmxWVzV6YVdkdVpXUXpNa0pwZENBcklERXBMbWRsZEZScGJXVW9LU2s3WEc0Z0lDQWdJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUc1dkxXbHRjR3hwWTJsMExXZHNiMkpoYkhNZ0tpOWNiaUFnSUNBZ0lDQWdSR0YwWlNBOUlDaG1kVzVqZEdsdmJpQW9UbUYwYVhabFJHRjBaU2tnZTF4dUlDQWdJQ0FnSUNBdktpQmxjMnhwYm5RdFpXNWhZbXhsSUc1dkxXbHRjR3hwWTJsMExXZHNiMkpoYkhNZ0tpOWNiaUFnSUNBZ0lDQWdMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQnVieTExYm1SbFppQXFMMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdSR0YwWlM1c1pXNW5kR2dnUFQwOUlEZGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQkVZWFJsVTJocGJTQTlJR1oxYm1OMGFXOXVJRVJoZEdVb1dTd2dUU3dnUkN3Z2FDd2diU3dnY3l3Z2JYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2JHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdaR0YwWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kR2hwY3lCcGJuTjBZVzVqWlc5bUlFNWhkR2wyWlVSaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSE5sWTI5dVpITWdQU0J6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnYldsc2JHbHpJRDBnYlhNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNob1lYTlRZV1poY21sVGFXZHVaV1JKYm5SQ2RXY2dKaVlnYkdWdVozUm9JRDQ5SURjZ0ppWWdiWE1nUGlCdFlYaFRZV1psVlc1emFXZHVaV1F6TWtKcGRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnZDI5eWF5QmhjbTkxYm1RZ1lTQlRZV1poY21rZ09DODVJR0oxWnlCM2FHVnlaU0JwZENCMGNtVmhkSE1nZEdobElITmxZMjl1WkhNZ1lYTWdjMmxuYm1Wa1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiWE5VYjFOb2FXWjBJRDBnVFdGMGFDNW1iRzl2Y2lodGN5QXZJRzFoZUZOaFptVlZibk5wWjI1bFpETXlRbWwwS1NBcUlHMWhlRk5oWm1WVmJuTnBaMjVsWkRNeVFtbDBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhOVWIxTm9hV1owSUQwZ1RXRjBhQzVtYkc5dmNpaHRjMVJ2VTJocFpuUWdMeUF4WlRNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyVmpiMjVrY3lBclBTQnpWRzlUYUdsbWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMXBiR3hwY3lBdFBTQnpWRzlUYUdsbWRDQXFJREZsTXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1lYUmxJRDBnYkdWdVozUm9JRDA5UFNBeElDWW1JQ1JUZEhKcGJtY29XU2tnUFQwOUlGa2dQeUF2THlCcGMxTjBjbWx1WnloWktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdWMlVnWlhod2JHbGphWFJzZVNCd1lYTnpJR2wwSUhSb2NtOTFaMmdnY0dGeWMyVTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGNnVG1GMGFYWmxSR0YwWlNoRVlYUmxVMmhwYlM1d1lYSnpaU2haS1NrZ09seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdWMlVnYUdGMlpTQjBieUJ0WVc1MVlXeHNlU0J0WVd0bElHTmhiR3h6SUdSbGNHVnVaR2x1WnlCdmJpQmhjbWQxYldWdWRGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR1Z1WjNSb0lHaGxjbVZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsYm1kMGFDQStQU0EzSUQ4Z2JtVjNJRTVoZEdsMlpVUmhkR1VvV1N3Z1RTd2dSQ3dnYUN3Z2JTd2djMlZqYjI1a2N5d2diV2xzYkdsektTQTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaVzVuZEdnZ1BqMGdOaUEvSUc1bGR5Qk9ZWFJwZG1WRVlYUmxLRmtzSUUwc0lFUXNJR2dzSUcwc0lITmxZMjl1WkhNcElEcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxibWQwYUNBK1BTQTFJRDhnYm1WM0lFNWhkR2wyWlVSaGRHVW9XU3dnVFN3Z1JDd2dhQ3dnYlNrZ09seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVnVaM1JvSUQ0OUlEUWdQeUJ1WlhjZ1RtRjBhWFpsUkdGMFpTaFpMQ0JOTENCRUxDQm9LU0E2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlc1bmRHZ2dQajBnTXlBL0lHNWxkeUJPWVhScGRtVkVZWFJsS0Zrc0lFMHNJRVFwSURwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGJtZDBhQ0ErUFNBeUlEOGdibVYzSUU1aGRHbDJaVVJoZEdVb1dTd2dUU2tnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdWdVozUm9JRDQ5SURFZ1B5QnVaWGNnVG1GMGFYWmxSR0YwWlNoWklHbHVjM1JoYm1ObGIyWWdUbUYwYVhabFJHRjBaU0EvSUN0WklEb2dXU2tnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGNnVG1GMGFYWmxSR0YwWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JoZEdVZ1BTQk9ZWFJwZG1WRVlYUmxMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doYVhOUWNtbHRhWFJwZG1Vb1pHRjBaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVUhKbGRtVnVkQ0J0YVhoMWNITWdkMmwwYUNCMWJtWnBlR1ZrSUVSaGRHVWdiMkpxWldOMFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsWm1sdVpWQnliM0JsY25ScFpYTW9aR0YwWlN3Z2V5QmpiMjV6ZEhKMVkzUnZjam9nUkdGMFpWTm9hVzBnZlN3Z2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrWVhSbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z01UVXVPUzR4TGpFMUlFUmhkR1VnVkdsdFpTQlRkSEpwYm1jZ1JtOXliV0YwTGx4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdsemIwUmhkR1ZGZUhCeVpYTnphVzl1SUQwZ2JtVjNJRkpsWjBWNGNDZ25YaWNnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNjb1hGeGNYR1I3TkgxOFd5c3RYVnhjWEZ4a2V6WjlLU2NnS3lBdkx5Qm1iM1Z5TFdScFoybDBJSGxsWVhJZ1kyRndkSFZ5WlNCdmNpQnphV2R1SUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklEWXRaR2xuYVhRZ1pYaDBaVzVrWldRZ2VXVmhjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2NvUHpvdEtGeGNYRnhrZXpKOUtTY2dLeUF2THlCdmNIUnBiMjVoYkNCdGIyNTBhQ0JqWVhCMGRYSmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKeWcvT2kwb1hGeGNYR1I3TW4wcEp5QXJJQzh2SUc5d2RHbHZibUZzSUdSaGVTQmpZWEIwZFhKbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0p5Zy9PaWNnS3lBdkx5QmpZWEIwZFhKbElHaHZkWEp6T20xcGJuVjBaWE02YzJWamIyNWtjeTV0YVd4c2FYTmxZMjl1WkhOY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMVFvWEZ4Y1hHUjdNbjBwSnlBcklDOHZJR2h2ZFhKeklHTmhjSFIxY21WY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKem9vWEZ4Y1hHUjdNbjBwSnlBcklDOHZJRzFwYm5WMFpYTWdZMkZ3ZEhWeVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuS0Q4Nkp5QXJJQzh2SUc5d2RHbHZibUZzSURwelpXTnZibVJ6TG0xcGJHeHBjMlZqYjI1a2MxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0p6b29YRnhjWEdSN01uMHBKeUFySUM4dklITmxZMjl1WkhNZ1kyRndkSFZ5WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSnlnL09paGNYRnhjTGx4Y1hGeGtlekVzZlNrcFB5Y2dLeUF2THlCdGFXeHNhWE5sWTI5dVpITWdZMkZ3ZEhWeVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuS1Q4bklDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5LQ2NnS3lBdkx5QmpZWEIwZFhKbElGVlVReUJ2Wm1aelpYUWdZMjl0Y0c5dVpXNTBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkYWZDY2dLeUF2THlCVlZFTWdZMkZ3ZEhWeVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FuS0Q4Nkp5QXJJQzh2SUc5bVpuTmxkQ0J6Y0dWamFXWnBaWElnS3k4dGFHOTFjbk02YldsdWRYUmxjMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKeWhiTFN0ZEtTY2dLeUF2THlCemFXZHVJR05oY0hSMWNtVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDY29YRnhjWEdSN01uMHBKeUFySUM4dklHaHZkWEp6SUc5bVpuTmxkQ0JqWVhCMGRYSmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5PaWhjWEZ4Y1pIc3lmU2tuSUNzZ0x5OGdiV2x1ZFhSbGN5QnZabVp6WlhRZ1kyRndkSFZ5WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW5LU2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNjcFB5ay9LVDhwUHljZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSnlRbktUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJRzF2Ym5Sb2N5QTlJRnN3TENBek1Td2dOVGtzSURrd0xDQXhNakFzSURFMU1Td2dNVGd4TENBeU1USXNJREkwTXl3Z01qY3pMQ0F6TURRc0lETXpOQ3dnTXpZMVhUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR1JoZVVaeWIyMU5iMjUwYUNBOUlHWjFibU4wYVc5dUlHUmhlVVp5YjIxTmIyNTBhQ2g1WldGeUxDQnRiMjUwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUIwSUQwZ2JXOXVkR2dnUGlBeElEOGdNU0E2SURBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiVzl1ZEdoelcyMXZiblJvWFNBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRTFoZEdndVpteHZiM0lvS0hsbFlYSWdMU0F4T1RZNUlDc2dkQ2tnTHlBMEtTQXRYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUUxaGRHZ3VabXh2YjNJb0tIbGxZWElnTFNBeE9UQXhJQ3NnZENrZ0x5QXhNREFwSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdUV0YwYUM1bWJHOXZjaWdvZVdWaGNpQXRJREUyTURFZ0t5QjBLU0F2SURRd01Da2dLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBek5qVWdLaUFvZVdWaGNpQXRJREU1TnpBcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQjBiMVZVUXlBOUlHWjFibU4wYVc5dUlIUnZWVlJES0hRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnY3lBOUlEQTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUcxeklEMGdkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FHRnpVMkZtWVhKcFUybG5ibVZrU1c1MFFuVm5JQ1ltSUcxeklENGdiV0Y0VTJGbVpWVnVjMmxuYm1Wa016SkNhWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnZDI5eWF5QmhjbTkxYm1RZ1lTQlRZV1poY21rZ09DODVJR0oxWnlCM2FHVnlaU0JwZENCMGNtVmhkSE1nZEdobElITmxZMjl1WkhNZ1lYTWdjMmxuYm1Wa1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdGMxUnZVMmhwWm5RZ1BTQk5ZWFJvTG1ac2IyOXlLRzF6SUM4Z2JXRjRVMkZtWlZWdWMybG5ibVZrTXpKQ2FYUXBJQ29nYldGNFUyRm1aVlZ1YzJsbmJtVmtNekpDYVhRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCelZHOVRhR2xtZENBOUlFMWhkR2d1Wm14dmIzSW9iWE5VYjFOb2FXWjBJQzhnTVdVektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY3lBclBTQnpWRzlUYUdsbWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYlhNZ0xUMGdjMVJ2VTJocFpuUWdLaUF4WlRNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBa1RuVnRZbVZ5S0c1bGR5Qk9ZWFJwZG1WRVlYUmxLREU1TnpBc0lEQXNJREVzSURBc0lEQXNJSE1zSUcxektTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkRiM0I1SUdGdWVTQmpkWE4wYjIwZ2JXVjBhRzlrY3lCaElETnlaQ0J3WVhKMGVTQnNhV0p5WVhKNUlHMWhlU0JvWVhabElHRmtaR1ZrWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnJaWGtnYVc0Z1RtRjBhWFpsUkdGMFpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodmQyNXpLRTVoZEdsMlpVUmhkR1VzSUd0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1JHRjBaVk5vYVcxYmEyVjVYU0E5SUU1aGRHbDJaVVJoZEdWYmEyVjVYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRU52Y0hrZ1hDSnVZWFJwZG1WY0lpQnRaWFJvYjJSeklHVjRjR3hwWTJsMGJIazdJSFJvWlhrZ2JXRjVJR0psSUc1dmJpMWxiblZ0WlhKaFlteGxYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXWnBibVZRY205d1pYSjBhV1Z6S0VSaGRHVlRhR2x0TENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JtOTNPaUJPWVhScGRtVkVZWFJsTG01dmR5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQlZWRU02SUU1aGRHbDJaVVJoZEdVdVZWUkRYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxDQjBjblZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJRVJoZEdWVGFHbHRMbkJ5YjNSdmRIbHdaU0E5SUU1aGRHbDJaVVJoZEdVdWNISnZkRzkwZVhCbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWbWFXNWxVSEp2Y0dWeWRHbGxjeWhFWVhSbFUyaHBiUzV3Y205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkSEoxWTNSdmNqb2dSR0YwWlZOb2FXMWNiaUFnSUNBZ0lDQWdJQ0FnSUgwc0lIUnlkV1VwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCVmNHZHlZV1JsSUVSaGRHVXVjR0Z5YzJVZ2RHOGdhR0Z1Wkd4bElITnBiWEJzYVdacFpXUWdTVk5QSURnMk1ERWdjM1J5YVc1bmMxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlIQmhjbk5sVTJocGJTQTlJR1oxYm1OMGFXOXVJSEJoY25ObEtITjBjbWx1WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ0WVhSamFDQTlJR2x6YjBSaGRHVkZlSEJ5WlhOemFXOXVMbVY0WldNb2MzUnlhVzVuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0YwWTJncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2NHRnljMlVnYlc5dWRHaHpMQ0JrWVhsekxDQm9iM1Z5Y3l3Z2JXbHVkWFJsY3l3Z2MyVmpiMjVrY3l3Z1lXNWtJRzFwYkd4cGMyVmpiMjVrYzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJ3Y205MmFXUmxJR1JsWm1GMWJIUWdkbUZzZFdWeklHbG1JRzVsWTJWemMyRnllVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QndZWEp6WlNCMGFHVWdWVlJESUc5bVpuTmxkQ0JqYjIxd2IyNWxiblJjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSGxsWVhJZ1BTQWtUblZ0WW1WeUtHMWhkR05vV3pGZEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMXZiblJvSUQwZ0pFNTFiV0psY2lodFlYUmphRnN5WFNCOGZDQXhLU0F0SURFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1lYa2dQU0FrVG5WdFltVnlLRzFoZEdOb1d6TmRJSHg4SURFcElDMGdNU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2h2ZFhJZ1BTQWtUblZ0WW1WeUtHMWhkR05vV3pSZElIeDhJREFwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYldsdWRYUmxJRDBnSkU1MWJXSmxjaWh0WVhSamFGczFYU0I4ZkNBd0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxZMjl1WkNBOUlDUk9kVzFpWlhJb2JXRjBZMmhiTmwwZ2ZId2dNQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YVd4c2FYTmxZMjl1WkNBOUlFMWhkR2d1Wm14dmIzSW9KRTUxYldKbGNpaHRZWFJqYUZzM1hTQjhmQ0F3S1NBcUlERXdNREFwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1YyaGxiaUIwYVcxbElIcHZibVVnYVhNZ2JXbHpjMlZrTENCc2IyTmhiQ0J2Wm1aelpYUWdjMmh2ZFd4a0lHSmxJSFZ6WldSY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklDaEZVeUExTGpFZ1luVm5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnYzJWbElHaDBkSEJ6T2k4dlluVm5jeTVsWTIxaGMyTnlhWEIwTG05eVp5OXphRzkzWDJKMVp5NWpaMmsvYVdROU1URXlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBjMHh2WTJGc1ZHbHRaU0E5SUVKdmIyeGxZVzRvYldGMFkyaGJORjBnSmlZZ0lXMWhkR05vV3poZEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnBaMjVQWm1aelpYUWdQU0J0WVhSamFGczVYU0E5UFQwZ0p5MG5JRDhnTVNBNklDMHhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhRzkxY2s5bVpuTmxkQ0E5SUNST2RXMWlaWElvYldGMFkyaGJNVEJkSUh4OElEQXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV2x1ZFhSbFQyWm1jMlYwSUQwZ0pFNTFiV0psY2lodFlYUmphRnN4TVYwZ2ZId2dNQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQm9ZWE5OYVc1MWRHVnpUM0pUWldOdmJtUnpUM0pOYVd4c2FYTmxZMjl1WkhNZ1BTQnRhVzUxZEdVZ1BpQXdJSHg4SUhObFkyOXVaQ0ErSURBZ2ZId2diV2xzYkdselpXTnZibVFnUGlBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb2IzVnlJRHdnS0doaGMwMXBiblYwWlhOUGNsTmxZMjl1WkhOUGNrMXBiR3hwYzJWamIyNWtjeUEvSURJMElEb2dNalVwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdGFXNTFkR1VnUENBMk1DQW1KaUJ6WldOdmJtUWdQQ0EyTUNBbUppQnRhV3hzYVhObFkyOXVaQ0E4SURFd01EQWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzF2Ym5Sb0lENGdMVEVnSmlZZ2JXOXVkR2dnUENBeE1pQW1KaUJvYjNWeVQyWm1jMlYwSUR3Z01qUWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFwYm5WMFpVOW1abk5sZENBOElEWXdJQ1ltSUM4dklHUmxkR1ZqZENCcGJuWmhiR2xrSUc5bVpuTmxkSE5jYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JoZVNBK0lDMHhJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWVhrZ1BDQW9aR0Y1Um5KdmJVMXZiblJvS0hsbFlYSXNJRzF2Ym5Sb0lDc2dNU2tnTFNCa1lYbEdjbTl0VFc5dWRHZ29lV1ZoY2l3Z2JXOXVkR2dwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb1pHRjVSbkp2YlUxdmJuUm9LSGxsWVhJc0lHMXZiblJvS1NBcklHUmhlU2tnS2lBeU5DQXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUc5MWNpQXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUc5MWNrOW1abk5sZENBcUlITnBaMjVQWm1aelpYUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDa2dLaUEyTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMzVnNkQ0E5SUNoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9jbVZ6ZFd4MElDc2diV2x1ZFhSbElDc2diV2x1ZFhSbFQyWm1jMlYwSUNvZ2MybG5iazltWm5ObGRDa2dLaUEyTUNBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMlZqYjI1a1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElDb2dNVEF3TUNBcklHMXBiR3hwYzJWamIyNWtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dselRHOWpZV3hVYVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBJRDBnZEc5VlZFTW9jbVZ6ZFd4MEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2d0T0M0Mk5HVXhOU0E4UFNCeVpYTjFiSFFnSmlZZ2NtVnpkV3gwSUR3OUlEZ3VOalJsTVRVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCT1lVNDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQk9ZWFJwZG1WRVlYUmxMbkJoY25ObExtRndjR3g1S0hSb2FYTXNJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHVm1hVzVsVUhKdmNHVnlkR2xsY3loRVlYUmxVMmhwYlN3Z2V5QndZWEp6WlRvZ2NHRnljMlZUYUdsdElIMHBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1JHRjBaVk5vYVcwN1hHNGdJQ0FnSUNBZ0lIMG9SR0YwWlNrcE8xeHVJQ0FnSUNBZ0lDQXZLaUJuYkc5aVlXd2dSR0YwWlRvZ1ptRnNjMlVnS2k5Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCRlV6VWdNVFV1T1M0MExqUmNiaUFnSUNBdkx5Qm9kSFJ3T2k4dlpYTTFMbWRwZEdoMVlpNWpiMjB2STNneE5TNDVMalF1TkZ4dUlDQWdJR2xtSUNnaFJHRjBaUzV1YjNjcElIdGNiaUFnSUNBZ0lDQWdSR0YwWlM1dWIzY2dQU0JtZFc1amRHbHZiaUJ1YjNjb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OWNiaUFnSUNBdkx5Qk9kVzFpWlhKY2JpQWdJQ0F2THlBOVBUMDlQVDFjYmlBZ0lDQXZMMXh1WEc0Z0lDQWdMeThnUlZNMUxqRWdNVFV1Tnk0MExqVmNiaUFnSUNBdkx5Qm9kSFJ3T2k4dlpYTTFMbWRwZEdoMVlpNWpiMjB2STNneE5TNDNMalF1TlZ4dUlDQWdJSFpoY2lCb1lYTlViMFpwZUdWa1FuVm5jeUE5SUU1MWJXSmxjbEJ5YjNSdmRIbHdaUzUwYjBacGVHVmtJQ1ltSUNoY2JpQWdJQ0FnSUNnd0xqQXdNREE0S1M1MGIwWnBlR1ZrS0RNcElDRTlQU0FuTUM0d01EQW5JSHg4WEc0Z0lDQWdJQ0FvTUM0NUtTNTBiMFpwZUdWa0tEQXBJQ0U5UFNBbk1TY2dmSHhjYmlBZ0lDQWdJQ2d4TGpJMU5Ta3VkRzlHYVhobFpDZ3lLU0FoUFQwZ0p6RXVNalVuSUh4OFhHNGdJQ0FnSUNBb01UQXdNREF3TURBd01EQXdNREF3TURFeU9Da3VkRzlHYVhobFpDZ3dLU0FoUFQwZ0p6RXdNREF3TURBd01EQXdNREF3TURBeE1qZ25YRzRnSUNBZ0tUdGNibHh1SUNBZ0lIWmhjaUIwYjBacGVHVmtTR1ZzY0dWeWN5QTlJSHRjYmlBZ0lDQWdJQ0FnWW1GelpUb2dNV1UzTEZ4dUlDQWdJQ0FnSUNCemFYcGxPaUEyTEZ4dUlDQWdJQ0FnSUNCa1lYUmhPaUJiTUN3Z01Dd2dNQ3dnTUN3Z01Dd2dNRjBzWEc0Z0lDQWdJQ0FnSUcxMWJIUnBjR3g1T2lCbWRXNWpkR2x2YmlCdGRXeDBhWEJzZVNodUxDQmpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYVNBOUlDMHhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR015SUQwZ1l6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhkb2FXeGxJQ2dySzJrZ1BDQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1emFYcGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWXpJZ0t6MGdiaUFxSUhSdlJtbDRaV1JJWld4d1pYSnpMbVJoZEdGYmFWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkRzlHYVhobFpFaGxiSEJsY25NdVpHRjBZVnRwWFNBOUlHTXlJQ1VnZEc5R2FYaGxaRWhsYkhCbGNuTXVZbUZ6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCak1pQTlJRTFoZEdndVpteHZiM0lvWXpJZ0x5QjBiMFpwZUdWa1NHVnNjR1Z5Y3k1aVlYTmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnWkdsMmFXUmxPaUJtZFc1amRHbHZiaUJrYVhacFpHVW9iaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdrZ1BTQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1emFYcGxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR01nUFNBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZDJocGJHVWdLQzB0YVNBK1BTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWXlBclBTQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1a1lYUmhXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSdlJtbDRaV1JJWld4d1pYSnpMbVJoZEdGYmFWMGdQU0JOWVhSb0xtWnNiMjl5S0dNZ0x5QnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqSUQwZ0tHTWdKU0J1S1NBcUlIUnZSbWw0WldSSVpXeHdaWEp6TG1KaGMyVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJRzUxYlZSdlUzUnlhVzVuT2lCbWRXNWpkR2x2YmlCdWRXMVViMU4wY21sdVp5Z3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ2RHOUdhWGhsWkVobGJIQmxjbk11YzJsNlpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnpJRDBnSnljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9MUzFwSUQ0OUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2N5QWhQVDBnSnljZ2ZId2dhU0E5UFQwZ01DQjhmQ0IwYjBacGVHVmtTR1ZzY0dWeWN5NWtZWFJoVzJsZElDRTlQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCMElEMGdKRk4wY21sdVp5aDBiMFpwZUdWa1NHVnNjR1Z5Y3k1a1lYUmhXMmxkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hNZ1BUMDlJQ2NuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeklEMGdkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhNZ0t6MGdjM1J5VTJ4cFkyVW9KekF3TURBd01EQW5MQ0F3TENBM0lDMGdkQzVzWlc1bmRHZ3BJQ3NnZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6TzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQndiM2M2SUdaMWJtTjBhVzl1SUhCdmR5aDRMQ0J1TENCaFkyTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2JpQTlQVDBnTUNBL0lHRmpZeUE2SUNodUlDVWdNaUE5UFQwZ01TQS9JSEJ2ZHloNExDQnVJQzBnTVN3Z1lXTmpJQ29nZUNrZ09pQndiM2NvZUNBcUlIZ3NJRzRnTHlBeUxDQmhZMk1wS1NrN1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJR3h2WnpvZ1puVnVZM1JwYjI0Z2JHOW5LSGdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdUlEMGdNRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUI0TWlBOUlIZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCM2FHbHNaU0FvZURJZ1BqMGdOREE1TmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHNGdLejBnTVRJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VESWdMejBnTkRBNU5qdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaDRNaUErUFNBeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiaUFyUFNBeE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIZ3lJQzg5SURJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JqdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjJZWElnZEc5R2FYaGxaRk5vYVcwZ1BTQm1kVzVqZEdsdmJpQjBiMFpwZUdWa0tHWnlZV04wYVc5dVJHbG5hWFJ6S1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJtTENCNExDQnpMQ0J0TENCbExDQjZMQ0JxTENCck8xeHVYRzRnSUNBZ0lDQWdJQzh2SUZSbGMzUWdabTl5SUU1aFRpQmhibVFnY205MWJtUWdabkpoWTNScGIyNUVhV2RwZEhNZ1pHOTNibHh1SUNBZ0lDQWdJQ0JtSUQwZ0pFNTFiV0psY2lobWNtRmpkR2x2YmtScFoybDBjeWs3WEc0Z0lDQWdJQ0FnSUdZZ1BTQnBjMEZqZEhWaGJFNWhUaWhtS1NBL0lEQWdPaUJOWVhSb0xtWnNiMjl5S0dZcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNobUlEd2dNQ0I4ZkNCbUlENGdNakFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0NkT2RXMWlaWEl1ZEc5R2FYaGxaQ0JqWVd4c1pXUWdkMmwwYUNCcGJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCa1pXTnBiV0ZzY3ljcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnZUNBOUlDUk9kVzFpWlhJb2RHaHBjeWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6UVdOMGRXRnNUbUZPS0hncEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjA1aFRpYzdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBdkx5QkpaaUJwZENCcGN5QjBiMjhnWW1sbklHOXlJSE50WVd4c0xDQnlaWFIxY200Z2RHaGxJSE4wY21sdVp5QjJZV3gxWlNCdlppQjBhR1VnYm5WdFltVnlYRzRnSUNBZ0lDQWdJR2xtSUNoNElEdzlJQzB4WlRJeElIeDhJSGdnUGowZ01XVXlNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDUlRkSEpwYm1jb2VDazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeklEMGdKeWM3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLSGdnUENBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeklEMGdKeTBuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdlQ0E5SUMxNE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYlNBOUlDY3dKenRjYmx4dUlDQWdJQ0FnSUNCcFppQW9lQ0ErSURGbExUSXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUF4WlMweU1TQThJSGdnUENBeFpUSXhYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QXROekFnUENCc2IyY3lLSGdwSUR3Z056QmNiaUFnSUNBZ0lDQWdJQ0FnSUdVZ1BTQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1c2IyY29lQ0FxSUhSdlJtbDRaV1JJWld4d1pYSnpMbkJ2ZHlneUxDQTJPU3dnTVNrcElDMGdOams3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjZJRDBnS0dVZ1BDQXdJRDhnZUNBcUlIUnZSbWw0WldSSVpXeHdaWEp6TG5CdmR5Z3lMQ0F0WlN3Z01Ta2dPaUI0SUM4Z2RHOUdhWGhsWkVobGJIQmxjbk11Y0c5M0tESXNJR1VzSURFcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhvZ0tqMGdNSGd4TURBd01EQXdNREF3TURBd01Ec2dMeThnVFdGMGFDNXdiM2NvTWl3Z05USXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pTQTlJRFV5SUMwZ1pUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdMVEU0SUR3Z1pTQThJREV5TWx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnZUNBOUlIb2dMeUF5SUY0Z1pWeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVWdQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHOUdhWGhsWkVobGJIQmxjbk11YlhWc2RHbHdiSGtvTUN3Z2VpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhaUE5SUdZN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FpQStQU0EzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2Um1sNFpXUklaV3h3WlhKekxtMTFiSFJwY0d4NUtERmxOeXdnTUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR29nTFQwZ056dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYjBacGVHVmtTR1ZzY0dWeWN5NXRkV3gwYVhCc2VTaDBiMFpwZUdWa1NHVnNjR1Z5Y3k1d2IzY29NVEFzSUdvc0lERXBMQ0F3S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcUlEMGdaU0F0SURFN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FpQStQU0F5TXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYjBacGVHVmtTR1ZzY0dWeWN5NWthWFpwWkdVb01TQThQQ0F5TXlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR29nTFQwZ01qTTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEc5R2FYaGxaRWhsYkhCbGNuTXVaR2wyYVdSbEtERWdQRHdnYWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHOUdhWGhsWkVobGJIQmxjbk11YlhWc2RHbHdiSGtvTVN3Z01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkRzlHYVhobFpFaGxiSEJsY25NdVpHbDJhV1JsS0RJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMGdQU0IwYjBacGVHVmtTR1ZzY0dWeWN5NXVkVzFVYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1dGRXeDBhWEJzZVNnd0xDQjZLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYjBacGVHVmtTR1ZzY0dWeWN5NXRkV3gwYVhCc2VTZ3hJRHc4SUNndFpTa3NJREFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcwZ1BTQjBiMFpwZUdWa1NHVnNjR1Z5Y3k1dWRXMVViMU4wY21sdVp5Z3BJQ3NnYzNSeVUyeHBZMlVvSnpBdU1EQXdNREF3TURBd01EQXdNREF3TURBd01EQW5MQ0F5TENBeUlDc2daaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9aaUErSURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdzZ1BTQnRMbXhsYm1kMGFEdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3NnUEQwZ1ppa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzBnUFNCeklDc2djM1J5VTJ4cFkyVW9KekF1TURBd01EQXdNREF3TURBd01EQXdNREF3TUNjc0lEQXNJR1lnTFNCcklDc2dNaWtnS3lCdE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0SUQwZ2N5QXJJSE4wY2xOc2FXTmxLRzBzSURBc0lHc2dMU0JtS1NBcklDY3VKeUFySUhOMGNsTnNhV05sS0cwc0lHc2dMU0JtS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHMGdQU0J6SUNzZ2JUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0TzF4dUlDQWdJSDA3WEc0Z0lDQWdaR1ZtYVc1bFVISnZjR1Z5ZEdsbGN5aE9kVzFpWlhKUWNtOTBiM1I1Y0dVc0lIc2dkRzlHYVhobFpEb2dkRzlHYVhobFpGTm9hVzBnZlN3Z2FHRnpWRzlHYVhobFpFSjFaM01wTzF4dVhHNGdJQ0FnZG1GeUlHaGhjMVJ2VUhKbFkybHphVzl1Vlc1a1pXWnBibVZrUW5WbklEMGdLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBeExqQXVkRzlRY21WamFYTnBiMjRvZFc1a1pXWnBibVZrS1NBOVBUMGdKekVuTzF4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMG9LU2s3WEc0Z0lDQWdkbUZ5SUc5eWFXZHBibUZzVkc5UWNtVmphWE5wYjI0Z1BTQk9kVzFpWlhKUWNtOTBiM1I1Y0dVdWRHOVFjbVZqYVhOcGIyNDdYRzRnSUNBZ1pHVm1hVzVsVUhKdmNHVnlkR2xsY3loT2RXMWlaWEpRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2RHOVFjbVZqYVhOcGIyNDZJR1oxYm1OMGFXOXVJSFJ2VUhKbFkybHphVzl1S0hCeVpXTnBjMmx2YmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFI1Y0dWdlppQndjbVZqYVhOcGIyNGdQVDA5SUNkMWJtUmxabWx1WldRbklEOGdiM0pwWjJsdVlXeFViMUJ5WldOcGMybHZiaTVqWVd4c0tIUm9hWE1wSURvZ2IzSnBaMmx1WVd4VWIxQnlaV05wYzJsdmJpNWpZV3hzS0hSb2FYTXNJSEJ5WldOcGMybHZiaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TENCb1lYTlViMUJ5WldOcGMybHZibFZ1WkdWbWFXNWxaRUoxWnlrN1hHNWNiaUFnSUNBdkwxeHVJQ0FnSUM4dklGTjBjbWx1WjF4dUlDQWdJQzh2SUQwOVBUMDlQVnh1SUNBZ0lDOHZYRzVjYmlBZ0lDQXZMeUJGVXpVZ01UVXVOUzQwTGpFMFhHNGdJQ0FnTHk4Z2FIUjBjRG92TDJWek5TNW5hWFJvZFdJdVkyOXRMeU40TVRVdU5TNDBMakUwWEc1Y2JpQWdJQ0F2THlCYlluVm5abWw0TENCSlJTQnNkQ0E1TENCbWFYSmxabTk0SURRc0lFdHZibkYxWlhKdmNpd2dUM0JsY21Fc0lHOWljMk4xY21VZ1luSnZkM05sY25OZFhHNGdJQ0FnTHk4Z1RXRnVlU0JpY205M2MyVnljeUJrYnlCdWIzUWdjM0JzYVhRZ2NISnZjR1Z5YkhrZ2QybDBhQ0J5WldkMWJHRnlJR1Y0Y0hKbGMzTnBiMjV6SUc5eUlIUm9aWGxjYmlBZ0lDQXZMeUJrYnlCdWIzUWdjR1Z5Wm05eWJTQjBhR1VnYzNCc2FYUWdZMjl5Y21WamRHeDVJSFZ1WkdWeUlHOWljMk4xY21VZ1kyOXVaR2wwYVc5dWN5NWNiaUFnSUNBdkx5QlRaV1VnYUhSMGNEb3ZMMkpzYjJjdWMzUmxkbVZ1YkdWMmFYUm9ZVzR1WTI5dEwyRnlZMmhwZG1WekwyTnliM056TFdKeWIzZHpaWEl0YzNCc2FYUmNiaUFnSUNBdkx5QkpKM1psSUhSbGMzUmxaQ0JwYmlCdFlXNTVJR0p5YjNkelpYSnpJR0Z1WkNCMGFHbHpJSE5sWlcxeklIUnZJR052ZG1WeUlIUm9aU0JrWlhacFlXNTBJRzl1WlhNNlhHNGdJQ0FnTHk4Z0lDQWdKMkZpSnk1emNHeHBkQ2d2S0Q4NllXSXBLaThwSUhOb2IzVnNaQ0JpWlNCYlhDSmNJaXdnWENKY0lsMHNJRzV2ZENCYlhDSmNJbDFjYmlBZ0lDQXZMeUFnSUNBbkxpY3VjM0JzYVhRb0x5Z3VQeWtvTGo4cEx5a2djMmh2ZFd4a0lHSmxJRnRjSWx3aUxDQmNJaTVjSWl3Z1hDSmNJaXdnWENKY0lsMHNJRzV2ZENCYlhDSmNJaXdnWENKY0lsMWNiaUFnSUNBdkx5QWdJQ0FuZEdWemMzUW5Mbk53YkdsMEtDOG9jeWtxTHlrZ2MyaHZkV3hrSUdKbElGdGNJblJjSWl3Z2RXNWtaV1pwYm1Wa0xDQmNJbVZjSWl3Z1hDSnpYQ0lzSUZ3aWRGd2lYU3dnYm05MFhHNGdJQ0FnTHk4Z0lDQWdJQ0FnVzNWdVpHVm1hVzVsWkN3Z1hDSjBYQ0lzSUhWdVpHVm1hVzVsWkN3Z1hDSmxYQ0lzSUM0dUxsMWNiaUFnSUNBdkx5QWdJQ0FuSnk1emNHeHBkQ2d2TGo4dktTQnphRzkxYkdRZ1ltVWdXMTBzSUc1dmRDQmJYQ0pjSWwxY2JpQWdJQ0F2THlBZ0lDQW5MaWN1YzNCc2FYUW9MeWdwS0NrdktTQnphRzkxYkdRZ1ltVWdXMXdpTGx3aVhTd2dibTkwSUZ0Y0lsd2lMQ0JjSWx3aUxDQmNJaTVjSWwxY2JseHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lDQWdKMkZpSnk1emNHeHBkQ2d2S0Q4NllXSXBLaThwTG14bGJtZDBhQ0FoUFQwZ01pQjhmRnh1SUNBZ0lDQWdJQ0FuTGljdWMzQnNhWFFvTHlndVB5a29MajhwTHlrdWJHVnVaM1JvSUNFOVBTQTBJSHg4WEc0Z0lDQWdJQ0FnSUNkMFpYTnpkQ2N1YzNCc2FYUW9MeWh6S1NvdktWc3hYU0E5UFQwZ0ozUW5JSHg4WEc0Z0lDQWdJQ0FnSUNkMFpYTjBKeTV6Y0d4cGRDZ3ZLRDg2S1M4c0lDMHhLUzVzWlc1bmRHZ2dJVDA5SURRZ2ZIeGNiaUFnSUNBZ0lDQWdKeWN1YzNCc2FYUW9MeTQvTHlrdWJHVnVaM1JvSUh4OFhHNGdJQ0FnSUNBZ0lDY3VKeTV6Y0d4cGRDZ3ZLQ2tvS1M4cExteGxibWQwYUNBK0lERmNiaUFnSUNBcElIdGNiaUFnSUNBZ0lDQWdLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCamIyMXdiR2xoYm5SRmVHVmpUbkJqWnlBOUlIUjVjR1Z2WmlBb0x5Z3BQejh2S1M1bGVHVmpLQ2NuS1ZzeFhTQTlQVDBnSjNWdVpHVm1hVzVsWkNjN0lDOHZJRTVRUTBjNklHNXZibkJoY25ScFkybHdZWFJwYm1jZ1kyRndkSFZ5YVc1bklHZHliM1Z3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYldGNFUyRm1aVE15UW1sMFNXNTBJRDBnVFdGMGFDNXdiM2NvTWl3Z016SXBJQzBnTVR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnVTNSeWFXNW5VSEp2ZEc5MGVYQmxMbk53YkdsMElEMGdablZ1WTNScGIyNGdLSE5sY0dGeVlYUnZjaXdnYkdsdGFYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2MzUnlhVzVuSUQwZ1UzUnlhVzVuS0hSb2FYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYzJWd1lYSmhkRzl5SUQwOVBTQW5kVzVrWldacGJtVmtKeUFtSmlCc2FXMXBkQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnU1dZZ1lITmxjR0Z5WVhSdmNtQWdhWE1nYm05MElHRWdjbVZuWlhnc0lIVnpaU0J1WVhScGRtVWdjM0JzYVhSY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV2x6VW1WblpYZ29jMlZ3WVhKaGRHOXlLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MzUnlVM0JzYVhRb2RHaHBjeXdnYzJWd1lYSmhkRzl5TENCc2FXMXBkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJRzkxZEhCMWRDQTlJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQm1iR0ZuY3lBOUlDaHpaWEJoY21GMGIzSXVhV2R1YjNKbFEyRnpaU0EvSUNkcEp5QTZJQ2NuS1NBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLSE5sY0dGeVlYUnZjaTV0ZFd4MGFXeHBibVVnUHlBbmJTY2dPaUFuSnlrZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2h6WlhCaGNtRjBiM0l1ZFc1cFkyOWtaU0EvSUNkMUp5QTZJQ2NuS1NBcklDOHZJR2x1SUVWVE5seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2h6WlhCaGNtRjBiM0l1YzNScFkydDVJRDhnSjNrbklEb2dKeWNwTENBdkx5QkdhWEpsWm05NElETXJJR0Z1WkNCRlV6WmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdGemRFeGhjM1JKYm1SbGVDQTlJREFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRTFoYTJVZ1lHZHNiMkpoYkdBZ1lXNWtJR0YyYjJsa0lHQnNZWE4wU1c1a1pYaGdJR2x6YzNWbGN5QmllU0IzYjNKcmFXNW5JSGRwZEdnZ1lTQmpiM0I1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxjR0Z5WVhSdmNqSXNJRzFoZEdOb0xDQnNZWE4wU1c1a1pYZ3NJR3hoYzNSTVpXNW5kR2c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITmxjR0Z5WVhSdmNrTnZjSGtnUFNCdVpYY2dVbVZuUlhod0tITmxjR0Z5WVhSdmNpNXpiM1Z5WTJVc0lHWnNZV2R6SUNzZ0oyY25LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXTnZiWEJzYVdGdWRFVjRaV05PY0dObktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFUnZaWE51SjNRZ2JtVmxaQ0JtYkdGbmN5Qm5lU3dnWW5WMElIUm9aWGtnWkc5dUozUWdhSFZ5ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpaWEJoY21GMGIzSXlJRDBnYm1WM0lGSmxaMFY0Y0NnblhpY2dLeUJ6WlhCaGNtRjBiM0pEYjNCNUxuTnZkWEpqWlNBcklDY2tLRDhoWEZ4Y1hITXBKeXdnWm14aFozTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2S2lCV1lXeDFaWE1nWm05eUlHQnNhVzFwZEdBc0lIQmxjaUIwYUdVZ2MzQmxZenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS2lCSlppQjFibVJsWm1sdVpXUTZJRFF5T1RRNU5qY3lPVFVnTHk4Z2JXRjRVMkZtWlRNeVFtbDBTVzUwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNvZ1NXWWdNQ3dnU1c1bWFXNXBkSGtzSUc5eUlFNWhUam9nTUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcUlFbG1JSEJ2YzJsMGFYWmxJRzUxYldKbGNqb2diR2x0YVhRZ1BTQk5ZWFJvTG1ac2IyOXlLR3hwYldsMEtUc2dhV1lnS0d4cGJXbDBJRDRnTkRJNU5EazJOekk1TlNrZ2JHbHRhWFFnTFQwZ05ESTVORGsyTnpJNU5qdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLaUJKWmlCdVpXZGhkR2wyWlNCdWRXMWlaWEk2SURReU9UUTVOamN5T1RZZ0xTQk5ZWFJvTG1ac2IyOXlLRTFoZEdndVlXSnpLR3hwYldsMEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdLaUJKWmlCdmRHaGxjam9nVkhsd1pTMWpiMjUyWlhKMExDQjBhR1Z1SUhWelpTQjBhR1VnWVdKdmRtVWdjblZzWlhOY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tpOWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnYzNCc2FYUk1hVzFwZENBOUlIUjVjR1Z2WmlCc2FXMXBkQ0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJ0WVhoVFlXWmxNekpDYVhSSmJuUWdPaUJGVXk1VWIxVnBiblF6TWloc2FXMXBkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYldGMFkyZ2dQU0J6WlhCaGNtRjBiM0pEYjNCNUxtVjRaV01vYzNSeWFXNW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9iV0YwWTJncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1lITmxjR0Z5WVhSdmNrTnZjSGt1YkdGemRFbHVaR1Y0WUNCcGN5QnViM1FnY21Wc2FXRmliR1VnWTNKdmMzTXRZbkp2ZDNObGNseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWVhOMFNXNWtaWGdnUFNCdFlYUmphQzVwYm1SbGVDQXJJRzFoZEdOb1d6QmRMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGhjM1JKYm1SbGVDQStJR3hoYzNSTVlYTjBTVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQjFjMmhEWVd4c0tHOTFkSEIxZEN3Z2MzUnlVMnhwWTJVb2MzUnlhVzVuTENCc1lYTjBUR0Z6ZEVsdVpHVjRMQ0J0WVhSamFDNXBibVJsZUNrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdSbWw0SUdKeWIzZHpaWEp6SUhkb2IzTmxJR0JsZUdWallDQnRaWFJvYjJSeklHUnZiaWQwSUdOdmJuTnBjM1JsYm5Sc2VTQnlaWFIxY200Z1lIVnVaR1ZtYVc1bFpHQWdabTl5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCdWIyNXdZWEowYVdOcGNHRjBhVzVuSUdOaGNIUjFjbWx1WnlCbmNtOTFjSE5jYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFkyOXRjR3hwWVc1MFJYaGxZMDV3WTJjZ0ppWWdiV0YwWTJndWJHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUc1dkxXeHZiM0F0Wm5WdVl5QXFMMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGRHTm9XekJkTG5KbGNHeGhZMlVvYzJWd1lYSmhkRzl5TWl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTVRzZ2FTQThJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0F5T3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lYSm5kVzFsYm5SelcybGRJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR05vVzJsZElEMGdkbTlwWkNBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQnVieTFzYjI5d0xXWjFibU1nS2k5Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHRZWFJqYUM1c1pXNW5kR2dnUGlBeElDWW1JRzFoZEdOb0xtbHVaR1Y0SUR3Z2MzUnlhVzVuTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRnljbUY1WDNCMWMyZ3VZWEJ3Ykhrb2IzVjBjSFYwTENCaGNuSmhlVk5zYVdObEtHMWhkR05vTENBeEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNZWE4wVEdWdVozUm9JRDBnYldGMFkyaGJNRjB1YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR0Z6ZEV4aGMzUkpibVJsZUNBOUlHeGhjM1JKYm1SbGVEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h2ZFhSd2RYUXViR1Z1WjNSb0lENDlJSE53YkdsMFRHbHRhWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jMlZ3WVhKaGRHOXlRMjl3ZVM1c1lYTjBTVzVrWlhnZ1BUMDlJRzFoZEdOb0xtbHVaR1Y0S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCelpYQmhjbUYwYjNKRGIzQjVMbXhoYzNSSmJtUmxlQ3NyT3lBdkx5QkJkbTlwWkNCaGJpQnBibVpwYm1sMFpTQnNiMjl3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYldGMFkyZ2dQU0J6WlhCaGNtRjBiM0pEYjNCNUxtVjRaV01vYzNSeWFXNW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGhjM1JNWVhOMFNXNWtaWGdnUFQwOUlITjBjbWx1Wnk1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d4aGMzUk1aVzVuZEdnZ2ZId2dJWE5sY0dGeVlYUnZja052Y0hrdWRHVnpkQ2duSnlrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQjFjMmhEWVd4c0tHOTFkSEIxZEN3Z0p5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSFZ6YUVOaGJHd29iM1YwY0hWMExDQnpkSEpUYkdsalpTaHpkSEpwYm1jc0lHeGhjM1JNWVhOMFNXNWtaWGdwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5MWRIQjFkQzVzWlc1bmRHZ2dQaUJ6Y0d4cGRFeHBiV2wwSUQ4Z1lYSnlZWGxUYkdsalpTaHZkWFJ3ZFhRc0lEQXNJSE53YkdsMFRHbHRhWFFwSURvZ2IzVjBjSFYwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnZlNncEtUdGNibHh1SUNBZ0lDOHZJRnRpZFdkbWFYZ3NJR05vY205dFpWMWNiaUFnSUNBdkx5QkpaaUJ6WlhCaGNtRjBiM0lnYVhNZ2RXNWtaV1pwYm1Wa0xDQjBhR1Z1SUhSb1pTQnlaWE4xYkhRZ1lYSnlZWGtnWTI5dWRHRnBibk1nYW5WemRDQnZibVVnVTNSeWFXNW5MRnh1SUNBZ0lDOHZJSGRvYVdOb0lHbHpJSFJvWlNCMGFHbHpJSFpoYkhWbElDaGpiMjUyWlhKMFpXUWdkRzhnWVNCVGRISnBibWNwTGlCSlppQnNhVzFwZENCcGN5QnViM1FnZFc1a1pXWnBibVZrTEZ4dUlDQWdJQzh2SUhSb1pXNGdkR2hsSUc5MWRIQjFkQ0JoY25KaGVTQnBjeUIwY25WdVkyRjBaV1FnYzI4Z2RHaGhkQ0JwZENCamIyNTBZV2x1Y3lCdWJ5QnRiM0psSUhSb1lXNGdiR2x0YVhSY2JpQWdJQ0F2THlCbGJHVnRaVzUwY3k1Y2JpQWdJQ0F2THlCY0lqQmNJaTV6Y0d4cGRDaDFibVJsWm1sdVpXUXNJREFwSUMwK0lGdGRYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ25NQ2N1YzNCc2FYUW9kbTlwWkNBd0xDQXdLUzVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnVTNSeWFXNW5VSEp2ZEc5MGVYQmxMbk53YkdsMElEMGdablZ1WTNScGIyNGdjM0JzYVhRb2MyVndZWEpoZEc5eUxDQnNhVzFwZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCelpYQmhjbUYwYjNJZ1BUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlHeHBiV2wwSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOMGNsTndiR2wwS0hSb2FYTXNJSE5sY0dGeVlYUnZjaXdnYkdsdGFYUXBPMXh1SUNBZ0lDQWdJQ0I5TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCemRISmZjbVZ3YkdGalpTQTlJRk4wY21sdVoxQnliM1J2ZEhsd1pTNXlaWEJzWVdObE8xeHVJQ0FnSUhaaGNpQnlaWEJzWVdObFVtVndiM0owYzBkeWIzVndjME52Y25KbFkzUnNlU0E5SUNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCbmNtOTFjSE1nUFNCYlhUdGNiaUFnSUNBZ0lDQWdKM2duTG5KbGNHeGhZMlVvTDNnb0xpay9MMmNzSUdaMWJtTjBhVzl1SUNodFlYUmphQ3dnWjNKdmRYQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQjFjMmhEWVd4c0tHZHliM1Z3Y3l3Z1ozSnZkWEFwTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHZHliM1Z3Y3k1c1pXNW5kR2dnUFQwOUlERWdKaVlnZEhsd1pXOW1JR2R5YjNWd2Mxc3dYU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDYzdYRzRnSUNBZ2ZTZ3BLVHRjYmx4dUlDQWdJR2xtSUNnaGNtVndiR0ZqWlZKbGNHOXlkSE5IY205MWNITkRiM0p5WldOMGJIa3BJSHRjYmlBZ0lDQWdJQ0FnVTNSeWFXNW5VSEp2ZEc5MGVYQmxMbkpsY0d4aFkyVWdQU0JtZFc1amRHbHZiaUJ5WlhCc1lXTmxLSE5sWVhKamFGWmhiSFZsTENCeVpYQnNZV05sVm1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJwYzBadUlEMGdhWE5EWVd4c1lXSnNaU2h5WlhCc1lXTmxWbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHaGhjME5oY0hSMWNtbHVaMGR5YjNWd2N5QTlJR2x6VW1WblpYZ29jMlZoY21Ob1ZtRnNkV1VwSUNZbUlDZ3ZYRndwV3lvL1hTOHBMblJsYzNRb2MyVmhjbU5vVm1Gc2RXVXVjMjkxY21ObEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hhWE5HYmlCOGZDQWhhR0Z6UTJGd2RIVnlhVzVuUjNKdmRYQnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY2w5eVpYQnNZV05sTG1OaGJHd29kR2hwY3l3Z2MyVmhjbU5vVm1Gc2RXVXNJSEpsY0d4aFkyVldZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCM2NtRndjR1ZrVW1Wd2JHRmpaVlpoYkhWbElEMGdablZ1WTNScGIyNGdLRzFoZEdOb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2IzSnBaMmx1WVd4TVlYTjBTVzVrWlhnZ1BTQnpaV0Z5WTJoV1lXeDFaUzVzWVhOMFNXNWtaWGc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxZWEpqYUZaaGJIVmxMbXhoYzNSSmJtUmxlQ0E5SURBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCaGNtZHpJRDBnYzJWaGNtTm9WbUZzZFdVdVpYaGxZeWh0WVhSamFDa2dmSHdnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sWVhKamFGWmhiSFZsTG14aGMzUkpibVJsZUNBOUlHOXlhV2RwYm1Gc1RHRnpkRWx1WkdWNE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3ZFhOb1EyRnNiQ2hoY21kekxDQmhjbWQxYldWdWRITmJiR1Z1WjNSb0lDMGdNbDBzSUdGeVozVnRaVzUwYzF0c1pXNW5kR2dnTFNBeFhTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhCc1lXTmxWbUZzZFdVdVlYQndiSGtvZEdocGN5d2dZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MzUnlYM0psY0d4aFkyVXVZMkZzYkNoMGFHbHpMQ0J6WldGeVkyaFdZV3gxWlN3Z2QzSmhjSEJsWkZKbGNHeGhZMlZXWVd4MVpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdSVU5OUVMweU5qSXNJRE55WkNCQ0xqSXVNMXh1SUNBZ0lDOHZJRTV2ZENCaGJpQkZRMDFCVTJOeWFYQjBJSE4wWVc1a1lYSmtMQ0JoYkhSb2IzVm5hQ0JGUTAxQlUyTnlhWEIwSUROeVpDQkZaR2wwYVc5dUlHaGhjeUJoWEc0Z0lDQWdMeThnYm05dUxXNXZjbTFoZEdsMlpTQnpaV04wYVc5dUlITjFaMmRsYzNScGJtY2dkVzVwWm05eWJTQnpaVzFoYm5ScFkzTWdZVzVrSUdsMElITm9iM1ZzWkNCaVpWeHVJQ0FnSUM4dklHNXZjbTFoYkdsNlpXUWdZV055YjNOeklHRnNiQ0JpY205M2MyVnljMXh1SUNBZ0lDOHZJRnRpZFdkbWFYZ3NJRWxGSUd4MElEbGRJRWxGSUR3Z09TQnpkV0p6ZEhJb0tTQjNhWFJvSUc1bFoyRjBhWFpsSUhaaGJIVmxJRzV2ZENCM2IzSnJhVzVuSUdsdUlFbEZYRzRnSUNBZ2RtRnlJSE4wY21sdVoxOXpkV0p6ZEhJZ1BTQlRkSEpwYm1kUWNtOTBiM1I1Y0dVdWMzVmljM1J5TzF4dUlDQWdJSFpoY2lCb1lYTk9aV2RoZEdsMlpWTjFZbk4wY2tKMVp5QTlJQ2NuTG5OMVluTjBjaUFtSmlBbk1HSW5Mbk4xWW5OMGNpZ3RNU2tnSVQwOUlDZGlKenRjYmlBZ0lDQmtaV1pwYm1WUWNtOXdaWEowYVdWektGTjBjbWx1WjFCeWIzUnZkSGx3WlN3Z2UxeHVJQ0FnSUNBZ0lDQnpkV0p6ZEhJNklHWjFibU4wYVc5dUlITjFZbk4wY2loemRHRnlkQ3dnYkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYm05eWJXRnNhWHBsWkZOMFlYSjBJRDBnYzNSaGNuUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jM1JoY25RZ1BDQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsWkZOMFlYSjBJRDBnYldGNEtIUm9hWE11YkdWdVozUm9JQ3NnYzNSaGNuUXNJREFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOMGNtbHVaMTl6ZFdKemRISXVZMkZzYkNoMGFHbHpMQ0J1YjNKdFlXeHBlbVZrVTNSaGNuUXNJR3hsYm1kMGFDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0JvWVhOT1pXZGhkR2wyWlZOMVluTjBja0oxWnlrN1hHNWNiaUFnSUNBdkx5QkZVelVnTVRVdU5TNDBMakl3WEc0Z0lDQWdMeThnZDJocGRHVnpjR0ZqWlNCbWNtOXRPaUJvZEhSd09pOHZaWE0xTG1kcGRHaDFZaTVwYnk4amVERTFMalV1TkM0eU1GeHVJQ0FnSUhaaGNpQjNjeUE5SUNkY1hIZ3dPVnhjZURCQlhGeDRNRUpjWEhnd1ExeGNlREJFWEZ4NE1qQmNYSGhCTUZ4Y2RURTJPREJjWEhVeE9EQkZYRngxTWpBd01GeGNkVEl3TURGY1hIVXlNREF5WEZ4MU1qQXdNeWNnSzF4dUlDQWdJQ0FnSUNBblhGeDFNakF3TkZ4Y2RUSXdNRFZjWEhVeU1EQTJYRngxTWpBd04xeGNkVEl3TURoY1hIVXlNREE1WEZ4MU1qQXdRVnhjZFRJd01rWmNYSFV5TURWR1hGeDFNekF3TUZ4Y2RUSXdNamduSUN0Y2JpQWdJQ0FnSUNBZ0oxeGNkVEl3TWpsY1hIVkdSVVpHSnp0Y2JpQWdJQ0IyWVhJZ2VtVnliMWRwWkhSb0lEMGdKMXhjZFRJd01HSW5PMXh1SUNBZ0lIWmhjaUIzYzFKbFoyVjRRMmhoY25NZ1BTQW5XeWNnS3lCM2N5QXJJQ2RkSnp0Y2JpQWdJQ0IyWVhJZ2RISnBiVUpsWjJsdVVtVm5aWGh3SUQwZ2JtVjNJRkpsWjBWNGNDZ25YaWNnS3lCM2MxSmxaMlY0UTJoaGNuTWdLeUIzYzFKbFoyVjRRMmhoY25NZ0t5QW5LaWNwTzF4dUlDQWdJSFpoY2lCMGNtbHRSVzVrVW1WblpYaHdJRDBnYm1WM0lGSmxaMFY0Y0NoM2MxSmxaMlY0UTJoaGNuTWdLeUIzYzFKbFoyVjRRMmhoY25NZ0t5QW5LaVFuS1R0Y2JpQWdJQ0IyWVhJZ2FHRnpWSEpwYlZkb2FYUmxjM0JoWTJWQ2RXY2dQU0JUZEhKcGJtZFFjbTkwYjNSNWNHVXVkSEpwYlNBbUppQW9kM011ZEhKcGJTZ3BJSHg4SUNGNlpYSnZWMmxrZEdndWRISnBiU2dwS1R0Y2JpQWdJQ0JrWldacGJtVlFjbTl3WlhKMGFXVnpLRk4wY21sdVoxQnliM1J2ZEhsd1pTd2dlMXh1SUNBZ0lDQWdJQ0F2THlCb2RIUndPaTh2WW14dlp5NXpkR1YyWlc1c1pYWnBkR2hoYmk1amIyMHZZWEpqYUdsMlpYTXZabUZ6ZEdWeUxYUnlhVzB0YW1GMllYTmpjbWx3ZEZ4dUlDQWdJQ0FnSUNBdkx5Qm9kSFJ3T2k4dmNHVnlabVZqZEdsdmJtdHBiR3h6TG1OdmJTOTNhR2wwWlhOd1lXTmxMV1JsZG1saGRHbHZibk12WEc0Z0lDQWdJQ0FnSUhSeWFXMDZJR1oxYm1OMGFXOXVJSFJ5YVcwb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIUm9hWE1nUFQwOUlDZDFibVJsWm1sdVpXUW5JSHg4SUhSb2FYTWdQVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aVkyRnVKM1FnWTI5dWRtVnlkQ0JjSWlBcklIUm9hWE1nS3lBbklIUnZJRzlpYW1WamRDY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ1JUZEhKcGJtY29kR2hwY3lrdWNtVndiR0ZqWlNoMGNtbHRRbVZuYVc1U1pXZGxlSEFzSUNjbktTNXlaWEJzWVdObEtIUnlhVzFGYm1SU1pXZGxlSEFzSUNjbktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHNJR2hoYzFSeWFXMVhhR2wwWlhOd1lXTmxRblZuS1R0Y2JpQWdJQ0IyWVhJZ2RISnBiU0E5SUdOaGJHd3VZbWx1WkNoVGRISnBibWN1Y0hKdmRHOTBlWEJsTG5SeWFXMHBPMXh1WEc0Z0lDQWdkbUZ5SUdoaGMweGhjM1JKYm1SbGVFSjFaeUE5SUZOMGNtbHVaMUJ5YjNSdmRIbHdaUzVzWVhOMFNXNWtaWGhQWmlBbUppQW5ZV0pqNDRHQzQ0R0VKeTVzWVhOMFNXNWtaWGhQWmlnbjQ0R0M0NEdFSnl3Z01pa2dJVDA5SUMweE8xeHVJQ0FnSUdSbFptbHVaVkJ5YjNCbGNuUnBaWE1vVTNSeWFXNW5VSEp2ZEc5MGVYQmxMQ0I3WEc0Z0lDQWdJQ0FnSUd4aGMzUkpibVJsZUU5bU9pQm1kVzVqZEdsdmJpQnNZWE4wU1c1a1pYaFBaaWh6WldGeVkyaFRkSEpwYm1jcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RHaHBjeUE5UFQwZ0ozVnVaR1ZtYVc1bFpDY2dmSHdnZEdocGN5QTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKallXNG5kQ0JqYjI1MlpYSjBJRndpSUNzZ2RHaHBjeUFySUNjZ2RHOGdiMkpxWldOMEp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1V5QTlJQ1JUZEhKcGJtY29kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2MyVmhjbU5vVTNSeUlEMGdKRk4wY21sdVp5aHpaV0Z5WTJoVGRISnBibWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUc1MWJWQnZjeUE5SUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUGlBeElEOGdKRTUxYldKbGNpaGhjbWQxYldWdWRITmJNVjBwSURvZ1RtRk9PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSEJ2Y3lBOUlHbHpRV04wZFdGc1RtRk9LRzUxYlZCdmN5a2dQeUJKYm1acGJtbDBlU0E2SUVWVExsUnZTVzUwWldkbGNpaHVkVzFRYjNNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITjBZWEowSUQwZ2JXbHVLRzFoZUNod2IzTXNJREFwTENCVExteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2MyVmhjbU5vVEdWdUlEMGdjMlZoY21Ob1UzUnlMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnJJRDBnYzNSaGNuUWdLeUJ6WldGeVkyaE1aVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjNhR2xzWlNBb2F5QStJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcklEMGdiV0Y0S0RBc0lHc2dMU0J6WldGeVkyaE1aVzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnBibVJsZUNBOUlITjBja2x1WkdWNFQyWW9jM1J5VTJ4cFkyVW9VeXdnYXl3Z2MzUmhjblFnS3lCelpXRnlZMmhNWlc0cExDQnpaV0Z5WTJoVGRISXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGJtUmxlQ0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdzZ0t5QnBibVJsZUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0xURTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0JvWVhOTVlYTjBTVzVrWlhoQ2RXY3BPMXh1WEc0Z0lDQWdkbUZ5SUc5eWFXZHBibUZzVEdGemRFbHVaR1Y0VDJZZ1BTQlRkSEpwYm1kUWNtOTBiM1I1Y0dVdWJHRnpkRWx1WkdWNFQyWTdYRzRnSUNBZ1pHVm1hVzVsVUhKdmNHVnlkR2xsY3loVGRISnBibWRRY205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ2JHRnpkRWx1WkdWNFQyWTZJR1oxYm1OMGFXOXVJR3hoYzNSSmJtUmxlRTltS0hObFlYSmphRk4wY21sdVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5eWFXZHBibUZzVEdGemRFbHVaR1Y0VDJZdVlYQndiSGtvZEdocGN5d2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDBzSUZOMGNtbHVaMUJ5YjNSdmRIbHdaUzVzWVhOMFNXNWtaWGhQWmk1c1pXNW5kR2dnSVQwOUlERXBPMXh1WEc0Z0lDQWdMeThnUlZNdE5TQXhOUzR4TGpJdU1seHVJQ0FnSUM4cUlHVnpiR2x1ZEMxa2FYTmhZbXhsSUhKaFpHbDRJQ292WEc0Z0lDQWdhV1lnS0hCaGNuTmxTVzUwS0hkeklDc2dKekE0SnlrZ0lUMDlJRGdnZkh3Z2NHRnljMlZKYm5Rb2QzTWdLeUFuTUhneE5pY3BJQ0U5UFNBeU1pa2dlMXh1SUNBZ0lDOHFJR1Z6YkdsdWRDMWxibUZpYkdVZ2NtRmthWGdnS2k5Y2JpQWdJQ0FnSUNBZ0x5b2daMnh2WW1Gc0lIQmhjbk5sU1c1ME9pQjBjblZsSUNvdlhHNGdJQ0FnSUNBZ0lIQmhjbk5sU1c1MElEMGdLR1oxYm1OMGFXOXVJQ2h2Y21sblVHRnljMlZKYm5RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQm9aWGhTWldkbGVDQTlJQzllVzF4Y0xTdGRQekJiZUZoZEx6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaUJ3WVhKelpVbHVkQ2h6ZEhJc0lISmhaR2w0S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSE4wY21sdVp5QTlJSFJ5YVcwb1UzUnlhVzVuS0hOMGNpa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCa1pXWmhkV3gwWldSU1lXUnBlQ0E5SUNST2RXMWlaWElvY21Ga2FYZ3BJSHg4SUNob1pYaFNaV2RsZUM1MFpYTjBLSE4wY21sdVp5a2dQeUF4TmlBNklERXdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiM0pwWjFCaGNuTmxTVzUwS0hOMGNtbHVaeXdnWkdWbVlYVnNkR1ZrVW1Ga2FYZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdmU2h3WVhKelpVbHVkQ2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUdoMGRIQnpPaTh2WlhNMUxtZHBkR2gxWWk1cGJ5OGplREUxTGpFdU1pNHpYRzRnSUNBZ2FXWWdLREVnTHlCd1lYSnpaVVpzYjJGMEtDY3RNQ2NwSUNFOVBTQXRTVzVtYVc1cGRIa3BJSHRjYmlBZ0lDQWdJQ0FnTHlvZ1oyeHZZbUZzSUhCaGNuTmxSbXh2WVhRNklIUnlkV1VnS2k5Y2JpQWdJQ0FnSUNBZ2NHRnljMlZHYkc5aGRDQTlJQ2htZFc1amRHbHZiaUFvYjNKcFoxQmhjbk5sUm14dllYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlCd1lYSnpaVVpzYjJGMEtITjBjbWx1WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJwYm5CMWRGTjBjbWx1WnlBOUlIUnlhVzBvVTNSeWFXNW5LSE4wY21sdVp5a3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCdmNtbG5VR0Z5YzJWR2JHOWhkQ2hwYm5CMWRGTjBjbWx1WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkQ0E5UFQwZ01DQW1KaUJ6ZEhKVGJHbGpaU2hwYm5CMWRGTjBjbWx1Wnl3Z01Dd2dNU2tnUFQwOUlDY3RKeUEvSUMwd0lEb2djbVZ6ZFd4ME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ2ZTaHdZWEp6WlVac2IyRjBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0ZOMGNtbHVaeWh1WlhjZ1VtRnVaMlZGY25KdmNpZ25kR1Z6ZENjcEtTQWhQVDBnSjFKaGJtZGxSWEp5YjNJNklIUmxjM1FuS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJsY25KdmNsUnZVM1J5YVc1blUyaHBiU0E5SUdaMWJtTjBhVzl1SUhSdlUzUnlhVzVuS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMGFHbHpJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5QjhmQ0IwYUdseklEMDlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSW1OaGJpZDBJR052Ym5abGNuUWdYQ0lnS3lCMGFHbHpJQ3NnSnlCMGJ5QnZZbXBsWTNRbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdVlXMWxJRDBnZEdocGN5NXVZVzFsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ1WVcxbElEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHNWhiV1VnUFNBblJYSnliM0luTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdibUZ0WlNBaFBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WVcxbElEMGdKRk4wY21sdVp5aHVZVzFsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ0YzJjZ1BTQjBhR2x6TG0xbGMzTmhaMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JRzF6WnlBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdGMyY2dQU0FuSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JRzF6WnlBaFBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YzJjZ1BTQWtVM1J5YVc1bktHMXpaeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JVzVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JYTm5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnRjMmNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm1GdFpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVZVzFsSUNzZ0p6b2dKeUFySUcxelp6dGNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnTHk4Z1kyRnVKM1FnZFhObElHUmxabWx1WlZCeWIzQmxjblJwWlhNZ2FHVnlaU0JpWldOaGRYTmxJRzltSUhSdlUzUnlhVzVuSUdWdWRXMWxjbUYwYVc5dUlHbHpjM1ZsSUdsdUlFbEZJRHc5SURoY2JpQWdJQ0FnSUNBZ1JYSnliM0l1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuSUQwZ1pYSnliM0pVYjFOMGNtbHVaMU5vYVcwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tITjFjSEJ2Y25SelJHVnpZM0pwY0hSdmNuTXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVnVjM1Z5WlU1dmJrVnVkVzFsY21GaWJHVWdQU0JtZFc1amRHbHZiaUFvYjJKcUxDQndjbTl3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYTkZiblZ0S0c5aWFpd2djSEp2Y0NrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnWkdWell5QTlJRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVVSbGMyTnlhWEIwYjNJb2IySnFMQ0J3Y205d0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWkdWell5NWpiMjVtYVdkMWNtRmliR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1Z6WXk1bGJuVnRaWEpoWW14bElEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNodlltb3NJSEJ5YjNBc0lHUmxjMk1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ1pXNXpkWEpsVG05dVJXNTFiV1Z5WVdKc1pTaEZjbkp2Y2k1d2NtOTBiM1I1Y0dVc0lDZHRaWE56WVdkbEp5azdYRzRnSUNBZ0lDQWdJR2xtSUNoRmNuSnZjaTV3Y205MGIzUjVjR1V1YldWemMyRm5aU0FoUFQwZ0p5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lFVnljbTl5TG5CeWIzUnZkSGx3WlM1dFpYTnpZV2RsSUQwZ0p5YzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWlc1emRYSmxUbTl1Ulc1MWJXVnlZV0pzWlNoRmNuSnZjaTV3Y205MGIzUjVjR1VzSUNkdVlXMWxKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0ZOMGNtbHVaeWd2WVM5dGFXY3BJQ0U5UFNBbkwyRXZaMmx0SnlrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnY21WblpYaFViMU4wY21sdVp5QTlJR1oxYm1OMGFXOXVJSFJ2VTNSeWFXNW5LQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhOMGNpQTlJQ2N2SnlBcklIUm9hWE11YzI5MWNtTmxJQ3NnSnk4bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WjJ4dlltRnNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSeUlDczlJQ2RuSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtbG5ibTl5WlVOaGMyVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEhJZ0t6MGdKMmtuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWJYVnNkR2xzYVc1bEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1J5SUNzOUlDZHRKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6ZEhJN1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQzh2SUdOaGJpZDBJSFZ6WlNCa1pXWnBibVZRY205d1pYSjBhV1Z6SUdobGNtVWdZbVZqWVhWelpTQnZaaUIwYjFOMGNtbHVaeUJsYm5WdFpYSmhkR2x2YmlCcGMzTjFaU0JwYmlCSlJTQThQU0E0WEc0Z0lDQWdJQ0FnSUZKbFowVjRjQzV3Y205MGIzUjVjR1V1ZEc5VGRISnBibWNnUFNCeVpXZGxlRlJ2VTNSeWFXNW5PMXh1SUNBZ0lIMWNibjBwS1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JpOHFhbk5zYVc1MElHVnhaWEU2SUhSeWRXVXFMMXh1WEc1SVlXNWtiR1ZpWVhKekxuSmxaMmx6ZEdWeVNHVnNjR1Z5S0NkellXNXBkR2w2WlNjc0lHWjFibU4wYVc5dUlDaDBaWGgwS1NCN1hHNGdJQ0FnZG1GeUlISmxjM1ZzZER0Y2JseHVJQ0FnSUdsbUlDaDBaWGgwSUQwOVBTQjFibVJsWm1sdVpXUXBJSHNnY21WMGRYSnVJQ2NuT3lCOVhHNWNiaUFnSUNCeVpYTjFiSFFnUFNCellXNXBkR2w2WlVoMGJXd29kR1Y0ZEN3Z2UxeHVJQ0FnSUNBZ0lDQmhiR3h2ZDJWa1ZHRm5jem9nV3lBblpHbDJKeXdnSjNOd1lXNG5MQ0FuWWljc0lDZHBKeXdnSjJWdEp5d2dKM04wY205dVp5Y3NJQ2RoSnl3Z0oySnlKeXdnSjNSaFlteGxKeXdnSjNSaWIyUjVKeXdnSjNSeUp5d2dKM1JvSnl3Z0ozUmtKeUJkTEZ4dUlDQWdJQ0FnSUNCaGJHeHZkMlZrUVhSMGNtbGlkWFJsY3pvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSjJScGRpYzZJRnNnSjJOc1lYTnpKeUJkTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKM053WVc0bk9pQmJJQ2RqYkdGemN5Y2dYU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDZDBZV0pzWlNjNklGc2dKMk5zWVhOekp5QmRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0ozUmtKem9nV3lBblkyeGhjM01uSUYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FuZEdnbk9pQmJJQ2RqYjJ4emNHRnVKeUJkTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKMkVuT2lCYklDZG9jbVZtSnlCZFhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTR0Z1Wkd4bFltRnljeTVUWVdabFUzUnlhVzVuS0hKbGMzVnNkQ2s3WEc1OUtUdGNibHh1U0dGdVpHeGxZbUZ5Y3k1eVpXZHBjM1JsY2tobGJIQmxjaWduY21WdVpHVnlWR1Y0ZEZCaGNtRnRKeXdnWm5WdVkzUnBiMjRvY0dGeVlXMHBJSHRjYmlBZ0lDQjJZWElnY21WemRXeDBMQ0IwZVhCbElEMGdKM1JsZUhRbkxDQnBaRUYwZENBOUlDY25PMXh1SUNBZ0lIWmhjaUJ3WVhKaGJWUjVjR1VnUFNCd1lYSmhiUzUwZVhCbElIeDhJSEJoY21GdExuTmphR1Z0WVNBbUppQndZWEpoYlM1elkyaGxiV0V1ZEhsd1pTQjhmQ0FuSnp0Y2JpQWdJQ0IyWVhJZ2FYTkJjbkpoZVNBOUlIQmhjbUZ0Vkhsd1pTNTBiMHh2ZDJWeVEyRnpaU2dwSUQwOVBTQW5ZWEp5WVhrbklIeDhJSEJoY21GdExtRnNiRzkzVFhWc2RHbHdiR1U3WEc0Z0lDQWdkbUZ5SUdSbFptRjFiSFJXWVd4MVpTQTlJR2x6UVhKeVlYa2dKaVlnUVhKeVlYa3VhWE5CY25KaGVTaHdZWEpoYlM1a1pXWmhkV3gwS1NBL0lIQmhjbUZ0TG1SbFptRjFiSFF1YW05cGJpZ25YRnh1SnlrZ09pQndZWEpoYlM1a1pXWmhkV3gwTzF4dUlDQWdJSFpoY2lCdVlXMWxJRDBnU0dGdVpHeGxZbUZ5Y3k1VmRHbHNjeTVsYzJOaGNHVkZlSEJ5WlhOemFXOXVLSEJoY21GdExtNWhiV1VwTzF4dUlDQWdJSFpoY2lCMllXeDFaVWxrSUQwZ1NHRnVaR3hsWW1GeWN5NVZkR2xzY3k1bGMyTmhjR1ZGZUhCeVpYTnphVzl1S0hCaGNtRnRMblpoYkhWbFNXUXBPMXh1SUNBZ0lIQmhjbUZ0Vkhsd1pTQTlJRWhoYm1Sc1pXSmhjbk11VlhScGJITXVaWE5qWVhCbFJYaHdjbVZ6YzJsdmJpaHdZWEpoYlZSNWNHVXBPMXh1WEc0Z0lDQWdkbUZ5SUdSaGRHRldaVzVrYjNKRmVIUmxibk5wYjI1eklEMGdUMkpxWldOMExtdGxlWE1vY0dGeVlXMHBMbVpwYkhSbGNpaG1kVzVqZEdsdmJpaHdjbTl3WlhKMGVTa2dlMXh1SUNBZ0lDQWdJQ0F2THlCbWFXeDBaWElnV0Mxa1lYUmhMU0J3Y205d1pYSjBhV1Z6WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ3Y205d1pYSjBlUzV0WVhSamFDZ3ZYbGd0WkdGMFlTMHZhU2tnSVQwOUlHNTFiR3c3WEc0Z0lDQWdmU2t1Y21Wa2RXTmxLR1oxYm1OMGFXOXVLSEpsYzNWc2RDd2djSEp2Y0dWeWRIa3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z2NtVnRiM1psSUZndElHWnliMjBnY0hKdmNHVnlkSGtnYm1GdFpTd2djMjhnYVhRZ2NtVnpkV3gwY3lCcGJpQm9kRzFzSUdGMGRISnBZblYwWlhNZ2JHbHJaU0JrWVhSaExXWnZiejBuWW1GeUoxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwSUNzOUlDY2dKeUFySUhCeWIzQmxjblI1TG5OMVluTjBjbWx1WnlneUxDQndjbTl3WlhKMGVTNXNaVzVuZEdncElDc2dKejFjWENjbklDc2djR0Z5WVcxYmNISnZjR1Z5ZEhsZElDc2dKMXhjSnljN1hHNGdJQ0FnZlN3Z0p5Y3BPMXh1WEc0Z0lDQWdhV1lvY0dGeVlXMHVabTl5YldGMElDWW1JSEJoY21GdExtWnZjbTFoZENBOVBUMGdKM0JoYzNOM2IzSmtKeWtnZTF4dUlDQWdJQ0FnSUNCMGVYQmxJRDBnSjNCaGMzTjNiM0prSnp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmloMllXeDFaVWxrS1NCN1hHNGdJQ0FnSUNBZ0lHbGtRWFIwSUQwZ0p5QnBaRDFjWENjbklDc2dkbUZzZFdWSlpDQXJJQ2RjWENjbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGtaV1poZFd4MFZtRnNkV1VwSUh0Y2JpQWdJQ0FnSUdSbFptRjFiSFJXWVd4MVpTQTlJSE5oYm1sMGFYcGxTSFJ0YkNoa1pXWmhkV3gwVm1Gc2RXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCa1pXWmhkV3gwVm1Gc2RXVWdQU0FuSnp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlocGMwRnljbUY1S1NCN1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlDYzhkR1Y0ZEdGeVpXRWdZMnhoYzNNOVhGd25ZbTlrZVMxMFpYaDBZWEpsWVNjZ0t5QW9jR0Z5WVcwdWNtVnhkV2x5WldRZ1B5QW5JSEpsY1hWcGNtVmtKeUE2SUNjbktTQXJJQ2RjWENjZ2JtRnRaVDFjWENjbklDc2dibUZ0WlNBcklDZGNYQ2NuSUNzZ2FXUkJkSFFnS3lCa1lYUmhWbVZ1Wkc5eVJYaDBaVzV6YVc5dWN6dGNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MElDczlJQ2NnY0d4aFkyVm9iMnhrWlhJOVhGd25VSEp2ZG1sa1pTQnRkV3gwYVhCc1pTQjJZV3gxWlhNZ2FXNGdibVYzSUd4cGJtVnpKeUFySUNod1lYSmhiUzV5WlhGMWFYSmxaQ0EvSUNjZ0tHRjBJR3hsWVhOMElHOXVaU0J5WlhGMWFYSmxaQ2t1SnlBNklDY3VKeWtnS3lBblhGd25QaWM3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQ0FyUFNCa1pXWmhkV3gwVm1Gc2RXVWdLeUFuUEM5MFpYaDBZWEpsWVQ0bk8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndZWEpoYldWMFpYSkRiR0Z6Y3lBOUlDZHdZWEpoYldWMFpYSW5PMXh1SUNBZ0lDQWdJQ0JwWmlod1lYSmhiUzV5WlhGMWFYSmxaQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIQmhjbUZ0WlhSbGNrTnNZWE56SUNzOUlDY2djbVZ4ZFdseVpXUW5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQ0E5SUNjOGFXNXdkWFFnWTJ4aGMzTTlYRnduSnlBcklIQmhjbUZ0WlhSbGNrTnNZWE56SUNzZ0oxeGNKeUJ0YVc1c1pXNW5kR2c5WEZ3bkp5QXJJQ2h3WVhKaGJTNXlaWEYxYVhKbFpDQS9JREVnT2lBd0tTQXJJQ2RjWENjbk8xeHVJQ0FnSUNBZ0lDQnlaWE4xYkhRZ0t6MGdKeUJ1WVcxbFBWeGNKeWNnS3lCdVlXMWxJQ3NuWEZ3bklIQnNZV05sYUc5c1pHVnlQVnhjSnljZ0t5QW9jR0Z5WVcwdWNtVnhkV2x5WldRZ1B5QW5LSEpsY1hWcGNtVmtLU2NnT2lBbkp5a2dLeUFuWEZ3bkp5QXJJR2xrUVhSMElDc2daR0YwWVZabGJtUnZja1Y0ZEdWdWMybHZibk03WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQ0FyUFNBbklIUjVjR1U5WEZ3bkp5QXJJSFI1Y0dVZ0t5QW5YRnduSUhaaGJIVmxQVnhjSnljZ0t5QmtaV1poZFd4MFZtRnNkV1VnS3lBblhGd25MejRuTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRWhoYm1Sc1pXSmhjbk11VTJGbVpWTjBjbWx1WnloeVpYTjFiSFFwTzF4dWZTazdYRzVjYmtoaGJtUnNaV0poY25NdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJsbVEyOXVaQ2NzSUdaMWJtTjBhVzl1SUNoMk1Td2diM0JsY21GMGIzSXNJSFl5TENCdmNIUnBiMjV6S1NCN1hHNWNiaUFnSUNCemQybDBZMmdnS0c5d1pYSmhkRzl5S1NCN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnSnowOUp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFvZGpFZ1BUMGdkaklwSUQ4Z2IzQjBhVzl1Y3k1bWJpaDBhR2x6S1NBNklHOXdkR2x2Ym5NdWFXNTJaWEp6WlNoMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQW5QVDA5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9kakVnUFQwOUlIWXlLU0EvSUc5d2RHbHZibk11Wm00b2RHaHBjeWtnT2lCdmNIUnBiMjV6TG1sdWRtVnljMlVvZEdocGN5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ0p6d25PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoMk1TQThJSFl5S1NBL0lHOXdkR2x2Ym5NdVptNG9kR2hwY3lrZ09pQnZjSFJwYjI1ekxtbHVkbVZ5YzJVb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKenc5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9kakVnUEQwZ2RqSXBJRDhnYjNCMGFXOXVjeTVtYmloMGFHbHpLU0E2SUc5d2RHbHZibk11YVc1MlpYSnpaU2gwYUdsektUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNBblBpYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0hZeElENGdkaklwSUQ4Z2IzQjBhVzl1Y3k1bWJpaDBhR2x6S1NBNklHOXdkR2x2Ym5NdWFXNTJaWEp6WlNoMGFHbHpLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQW5QajBuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDaDJNU0ErUFNCMk1pa2dQeUJ2Y0hScGIyNXpMbVp1S0hSb2FYTXBJRG9nYjNCMGFXOXVjeTVwYm5abGNuTmxLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjbUppYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0hZeElDWW1JSFl5S1NBL0lHOXdkR2x2Ym5NdVptNG9kR2hwY3lrZ09pQnZjSFJwYjI1ekxtbHVkbVZ5YzJVb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKM3g4SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9kakVnZkh3Z2RqSXBJRDhnYjNCMGFXOXVjeTVtYmloMGFHbHpLU0E2SUc5d2RHbHZibk11YVc1MlpYSnpaU2gwYUdsektUdGNiaUFnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ2Y0hScGIyNXpMbWx1ZG1WeWMyVW9kR2hwY3lrN1hHNGdJQ0FnZlZ4dWZTazdYRzVjYmtoaGJtUnNaV0poY25NdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJWelkyRndaU2NzSUdaMWJtTjBhVzl1SUNoMllXeDFaU2tnZTF4dUlDQWdJSFpoY2lCMFpYaDBJRDBnU0dGdVpHeGxZbUZ5Y3k1VmRHbHNjeTVsYzJOaGNHVkZlSEJ5WlhOemFXOXVLSFpoYkhWbEtUdGNibHh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dTR0Z1Wkd4bFltRnljeTVUWVdabFUzUnlhVzVuS0hSbGVIUXBPMXh1ZlNrN1hHNGlMQ0lvWm5WdVkzUnBiMjRvWmlsN2FXWW9kSGx3Wlc5bUlHVjRjRzl5ZEhNOVBUMWNJbTlpYW1WamRGd2lKaVowZVhCbGIyWWdiVzlrZFd4bElUMDlYQ0oxYm1SbFptbHVaV1JjSWlsN2JXOWtkV3hsTG1WNGNHOXlkSE05WmlncGZXVnNjMlVnYVdZb2RIbHdaVzltSUdSbFptbHVaVDA5UFZ3aVpuVnVZM1JwYjI1Y0lpWW1aR1ZtYVc1bExtRnRaQ2w3WkdWbWFXNWxLRnRkTEdZcGZXVnNjMlY3ZG1GeUlHYzdhV1lvZEhsd1pXOW1JSGRwYm1SdmR5RTlQVndpZFc1a1pXWnBibVZrWENJcGUyYzlkMmx1Wkc5M2ZXVnNjMlVnYVdZb2RIbHdaVzltSUdkc2IySmhiQ0U5UFZ3aWRXNWtaV1pwYm1Wa1hDSXBlMmM5WjJ4dlltRnNmV1ZzYzJVZ2FXWW9kSGx3Wlc5bUlITmxiR1loUFQxY0luVnVaR1ZtYVc1bFpGd2lLWHRuUFhObGJHWjlaV3h6Wlh0blBYUm9hWE45Wnk1ellXNXBkR2w2WlVoMGJXdzlaaWdwZlgwcEtHWjFibU4wYVc5dUtDbDdkbUZ5SUdSbFptbHVaU3h0YjJSMWJHVXNaWGh3YjNKMGN6dHlaWFIxY200Z1puVnVZM1JwYjI0Z1pTaDBMRzRzY2lsN1puVnVZM1JwYjI0Z2N5aHZMSFVwZTJsbUtDRnVXMjlkS1h0cFppZ2hkRnR2WFNsN2RtRnlJR0U5ZEhsd1pXOW1JSEpsY1hWcGNtVTlQVndpWm5WdVkzUnBiMjVjSWlZbWNtVnhkV2x5WlR0cFppZ2hkU1ltWVNseVpYUjFjbTRnWVNodkxDRXdLVHRwWmlocEtYSmxkSFZ5YmlCcEtHOHNJVEFwTzNaaGNpQm1QVzVsZHlCRmNuSnZjaWhjSWtOaGJtNXZkQ0JtYVc1a0lHMXZaSFZzWlNBblhDSXJieXRjSWlkY0lpazdkR2h5YjNjZ1ppNWpiMlJsUFZ3aVRVOUVWVXhGWDA1UFZGOUdUMVZPUkZ3aUxHWjlkbUZ5SUd3OWJsdHZYVDE3Wlhod2IzSjBjenA3ZlgwN2RGdHZYVnN3WFM1allXeHNLR3d1Wlhod2IzSjBjeXhtZFc1amRHbHZiaWhsS1h0MllYSWdiajEwVzI5ZFd6RmRXMlZkTzNKbGRIVnliaUJ6S0c0L2JqcGxLWDBzYkN4c0xtVjRjRzl5ZEhNc1pTeDBMRzRzY2lsOWNtVjBkWEp1SUc1YmIxMHVaWGh3YjNKMGMzMTJZWElnYVQxMGVYQmxiMllnY21WeGRXbHlaVDA5WENKbWRXNWpkR2x2Ymx3aUppWnlaWEYxYVhKbE8yWnZjaWgyWVhJZ2J6MHdPMjg4Y2k1c1pXNW5kR2c3YnlzcktYTW9jbHR2WFNrN2NtVjBkWEp1SUhOOUtIc3hPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdDJZWElnYUhSdGJIQmhjbk5sY2oxeVpYRjFhWEpsS0Z3aWFIUnRiSEJoY25ObGNqSmNJaWs3ZG1GeUlHVjRkR1Z1WkQxeVpYRjFhWEpsS0Z3aWVIUmxibVJjSWlrN2RtRnlJSEYxYjNSbFVtVm5aWGh3UFhKbGNYVnBjbVVvWENKeVpXZGxlSEF0Y1hWdmRHVmNJaWs3Wm5WdVkzUnBiMjRnWldGamFDaHZZbW9zWTJJcGUybG1LRzlpYWlsUFltcGxZM1F1YTJWNWN5aHZZbW9wTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvYTJWNUtYdGpZaWh2WW1wYmEyVjVYU3hyWlhrcGZTbDlablZ1WTNScGIyNGdhR0Z6S0c5aWFpeHJaWGtwZTNKbGRIVnlibnQ5TG1oaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2IySnFMR3RsZVNsOWJXOWtkV3hsTG1WNGNHOXlkSE05YzJGdWFYUnBlbVZJZEcxc08yWjFibU4wYVc5dUlITmhibWwwYVhwbFNIUnRiQ2hvZEcxc0xHOXdkR2x2Ym5Nc1gzSmxZM1Z5YzJsdVp5bDdkbUZ5SUhKbGMzVnNkRDFjSWx3aU8yWjFibU4wYVc5dUlFWnlZVzFsS0hSaFp5eGhkSFJ5YVdKektYdDJZWElnZEdoaGREMTBhR2x6TzNSb2FYTXVkR0ZuUFhSaFp6dDBhR2x6TG1GMGRISnBZbk05WVhSMGNtbGljM3g4ZTMwN2RHaHBjeTUwWVdkUWIzTnBkR2x2YmoxeVpYTjFiSFF1YkdWdVozUm9PM1JvYVhNdWRHVjRkRDFjSWx3aU8zUm9hWE11ZFhCa1lYUmxVR0Z5Wlc1MFRtOWtaVlJsZUhROVpuVnVZM1JwYjI0b0tYdHBaaWh6ZEdGamF5NXNaVzVuZEdncGUzWmhjaUJ3WVhKbGJuUkdjbUZ0WlQxemRHRmphMXR6ZEdGamF5NXNaVzVuZEdndE1WMDdjR0Z5Wlc1MFJuSmhiV1V1ZEdWNGRDczlkR2hoZEM1MFpYaDBmWDE5YVdZb0lXOXdkR2x2Ym5NcGUyOXdkR2x2Ym5NOWMyRnVhWFJwZW1WSWRHMXNMbVJsWm1GMWJIUnpPMjl3ZEdsdmJuTXVjR0Z5YzJWeVBXaDBiV3hRWVhKelpYSkVaV1poZFd4MGMzMWxiSE5sZTI5d2RHbHZibk05WlhoMFpXNWtLSE5oYm1sMGFYcGxTSFJ0YkM1a1pXWmhkV3gwY3l4dmNIUnBiMjV6S1R0cFppaHZjSFJwYjI1ekxuQmhjbk5sY2lsN2IzQjBhVzl1Y3k1d1lYSnpaWEk5WlhoMFpXNWtLR2gwYld4UVlYSnpaWEpFWldaaGRXeDBjeXh2Y0hScGIyNXpMbkJoY25ObGNpbDlaV3h6Wlh0dmNIUnBiMjV6TG5CaGNuTmxjajFvZEcxc1VHRnljMlZ5UkdWbVlYVnNkSE45ZlhaaGNpQnViMjVVWlhoMFZHRm5jMEZ5Y21GNVBXOXdkR2x2Ym5NdWJtOXVWR1Y0ZEZSaFozTjhmRnRjSW5OamNtbHdkRndpTEZ3aWMzUjViR1ZjSWl4Y0luUmxlSFJoY21WaFhDSmRPM1poY2lCaGJHeHZkMlZrUVhSMGNtbGlkWFJsYzAxaGNEdDJZWElnWVd4c2IzZGxaRUYwZEhKcFluVjBaWE5IYkc5aVRXRndPMmxtS0c5d2RHbHZibk11WVd4c2IzZGxaRUYwZEhKcFluVjBaWE1wZTJGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd1BYdDlPMkZzYkc5M1pXUkJkSFJ5YVdKMWRHVnpSMnh2WWsxaGNEMTdmVHRsWVdOb0tHOXdkR2x2Ym5NdVlXeHNiM2RsWkVGMGRISnBZblYwWlhNc1puVnVZM1JwYjI0b1lYUjBjbWxpZFhSbGN5eDBZV2NwZTJGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd1czUmhaMTA5VzEwN2RtRnlJR2RzYjJKU1pXZGxlRDFiWFR0aGRIUnlhV0oxZEdWekxtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2JtRnRaU2w3YVdZb2JtRnRaUzVwYm1SbGVFOW1LRndpS2x3aUtUNDlNQ2w3WjJ4dllsSmxaMlY0TG5CMWMyZ29jWFZ2ZEdWU1pXZGxlSEFvYm1GdFpTa3VjbVZ3YkdGalpTZ3ZYRnhjWEZ4Y0tpOW5MRndpTGlwY0lpa3BmV1ZzYzJWN1lXeHNiM2RsWkVGMGRISnBZblYwWlhOTllYQmJkR0ZuWFM1d2RYTm9LRzVoYldVcGZYMHBPMkZzYkc5M1pXUkJkSFJ5YVdKMWRHVnpSMnh2WWsxaGNGdDBZV2RkUFc1bGR5QlNaV2RGZUhBb1hDSmVLRndpSzJkc2IySlNaV2RsZUM1cWIybHVLRndpZkZ3aUtTdGNJaWtrWENJcGZTbDlkbUZ5SUdGc2JHOTNaV1JEYkdGemMyVnpUV0Z3UFh0OU8yVmhZMmdvYjNCMGFXOXVjeTVoYkd4dmQyVmtRMnhoYzNObGN5eG1kVzVqZEdsdmJpaGpiR0Z6YzJWekxIUmhaeWw3YVdZb1lXeHNiM2RsWkVGMGRISnBZblYwWlhOTllYQXBlMmxtS0NGb1lYTW9ZV3hzYjNkbFpFRjBkSEpwWW5WMFpYTk5ZWEFzZEdGbktTbDdZV3hzYjNkbFpFRjBkSEpwWW5WMFpYTk5ZWEJiZEdGblhUMWJYWDFoYkd4dmQyVmtRWFIwY21saWRYUmxjMDFoY0Z0MFlXZGRMbkIxYzJnb1hDSmpiR0Z6YzF3aUtYMWhiR3h2ZDJWa1EyeGhjM05sYzAxaGNGdDBZV2RkUFdOc1lYTnpaWE45S1R0MllYSWdkSEpoYm5ObWIzSnRWR0ZuYzAxaGNEMTdmVHQyWVhJZ2RISmhibk5tYjNKdFZHRm5jMEZzYkR0bFlXTm9LRzl3ZEdsdmJuTXVkSEpoYm5ObWIzSnRWR0ZuY3l4bWRXNWpkR2x2YmloMGNtRnVjMlp2Y20wc2RHRm5LWHQyWVhJZ2RISmhibk5HZFc0N2FXWW9kSGx3Wlc5bUlIUnlZVzV6Wm05eWJUMDlQVndpWm5WdVkzUnBiMjVjSWlsN2RISmhibk5HZFc0OWRISmhibk5tYjNKdGZXVnNjMlVnYVdZb2RIbHdaVzltSUhSeVlXNXpabTl5YlQwOVBWd2ljM1J5YVc1blhDSXBlM1J5WVc1elJuVnVQWE5oYm1sMGFYcGxTSFJ0YkM1emFXMXdiR1ZVY21GdWMyWnZjbTBvZEhKaGJuTm1iM0p0S1gxcFppaDBZV2M5UFQxY0lpcGNJaWw3ZEhKaGJuTm1iM0p0VkdGbmMwRnNiRDEwY21GdWMwWjFibjFsYkhObGUzUnlZVzV6Wm05eWJWUmhaM05OWVhCYmRHRm5YVDEwY21GdWMwWjFibjE5S1R0MllYSWdaR1Z3ZEdnOU1EdDJZWElnYzNSaFkyczlXMTA3ZG1GeUlITnJhWEJOWVhBOWUzMDdkbUZ5SUhSeVlXNXpabTl5YlUxaGNEMTdmVHQyWVhJZ2MydHBjRlJsZUhROVptRnNjMlU3ZG1GeUlITnJhWEJVWlhoMFJHVndkR2c5TUR0MllYSWdjR0Z5YzJWeVBXNWxkeUJvZEcxc2NHRnljMlZ5TGxCaGNuTmxjaWg3YjI1dmNHVnVkR0ZuT21aMWJtTjBhVzl1S0c1aGJXVXNZWFIwY21saWN5bDdhV1lvYzJ0cGNGUmxlSFFwZTNOcmFYQlVaWGgwUkdWd2RHZ3JLenR5WlhSMWNtNTlkbUZ5SUdaeVlXMWxQVzVsZHlCR2NtRnRaU2h1WVcxbExHRjBkSEpwWW5NcE8zTjBZV05yTG5CMWMyZ29abkpoYldVcE8zWmhjaUJ6YTJsd1BXWmhiSE5sTzNaaGNpQm9ZWE5VWlhoMFBXWnlZVzFsTG5SbGVIUS9kSEoxWlRwbVlXeHpaVHQyWVhJZ2RISmhibk5tYjNKdFpXUlVZV2M3YVdZb2FHRnpLSFJ5WVc1elptOXliVlJoWjNOTllYQXNibUZ0WlNrcGUzUnlZVzV6Wm05eWJXVmtWR0ZuUFhSeVlXNXpabTl5YlZSaFozTk5ZWEJiYm1GdFpWMG9ibUZ0WlN4aGRIUnlhV0p6S1R0bWNtRnRaUzVoZEhSeWFXSnpQV0YwZEhKcFluTTlkSEpoYm5ObWIzSnRaV1JVWVdjdVlYUjBjbWxpY3p0cFppaDBjbUZ1YzJadmNtMWxaRlJoWnk1MFpYaDBJVDA5ZFc1a1pXWnBibVZrS1h0bWNtRnRaUzVwYm01bGNsUmxlSFE5ZEhKaGJuTm1iM0p0WldSVVlXY3VkR1Y0ZEgxcFppaHVZVzFsSVQwOWRISmhibk5tYjNKdFpXUlVZV2N1ZEdGblRtRnRaU2w3Wm5KaGJXVXVibUZ0WlQxdVlXMWxQWFJ5WVc1elptOXliV1ZrVkdGbkxuUmhaMDVoYldVN2RISmhibk5tYjNKdFRXRndXMlJsY0hSb1hUMTBjbUZ1YzJadmNtMWxaRlJoWnk1MFlXZE9ZVzFsZlgxcFppaDBjbUZ1YzJadmNtMVVZV2R6UVd4c0tYdDBjbUZ1YzJadmNtMWxaRlJoWnoxMGNtRnVjMlp2Y20xVVlXZHpRV3hzS0c1aGJXVXNZWFIwY21saWN5azdabkpoYldVdVlYUjBjbWxpY3oxaGRIUnlhV0p6UFhSeVlXNXpabTl5YldWa1ZHRm5MbUYwZEhKcFluTTdhV1lvYm1GdFpTRTlQWFJ5WVc1elptOXliV1ZrVkdGbkxuUmhaMDVoYldVcGUyWnlZVzFsTG01aGJXVTlibUZ0WlQxMGNtRnVjMlp2Y20xbFpGUmhaeTUwWVdkT1lXMWxPM1J5WVc1elptOXliVTFoY0Z0a1pYQjBhRjA5ZEhKaGJuTm1iM0p0WldSVVlXY3VkR0ZuVG1GdFpYMTlhV1lvYjNCMGFXOXVjeTVoYkd4dmQyVmtWR0ZuY3lZbWIzQjBhVzl1Y3k1aGJHeHZkMlZrVkdGbmN5NXBibVJsZUU5bUtHNWhiV1VwUFQwOUxURXBlM05yYVhBOWRISjFaVHRwWmlodWIyNVVaWGgwVkdGbmMwRnljbUY1TG1sdVpHVjRUMllvYm1GdFpTa2hQVDB0TVNsN2MydHBjRlJsZUhROWRISjFaVHR6YTJsd1ZHVjRkRVJsY0hSb1BURjljMnRwY0UxaGNGdGtaWEIwYUYwOWRISjFaWDFrWlhCMGFDc3JPMmxtS0hOcmFYQXBlM0psZEhWeWJuMXlaWE4xYkhRclBWd2lQRndpSzI1aGJXVTdhV1lvSVdGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd2ZIeG9ZWE1vWVd4c2IzZGxaRUYwZEhKcFluVjBaWE5OWVhBc2JtRnRaU2w4ZkdGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd1cxd2lLbHdpWFNsN1pXRmphQ2hoZEhSeWFXSnpMR1oxYm1OMGFXOXVLSFpoYkhWbExHRXBlMmxtS0NGaGJHeHZkMlZrUVhSMGNtbGlkWFJsYzAxaGNIeDhhR0Z6S0dGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd0xHNWhiV1VwSmlaaGJHeHZkMlZrUVhSMGNtbGlkWFJsYzAxaGNGdHVZVzFsWFM1cGJtUmxlRTltS0dFcElUMDlMVEY4ZkdGc2JHOTNaV1JCZEhSeWFXSjFkR1Z6VFdGd1cxd2lLbHdpWFNZbVlXeHNiM2RsWkVGMGRISnBZblYwWlhOTllYQmJYQ0lxWENKZExtbHVaR1Y0VDJZb1lTa2hQVDB0TVh4OGFHRnpLR0ZzYkc5M1pXUkJkSFJ5YVdKMWRHVnpSMnh2WWsxaGNDeHVZVzFsS1NZbVlXeHNiM2RsWkVGMGRISnBZblYwWlhOSGJHOWlUV0Z3VzI1aGJXVmRMblJsYzNRb1lTbDhmR0ZzYkc5M1pXUkJkSFJ5YVdKMWRHVnpSMnh2WWsxaGNGdGNJaXBjSWwwbUptRnNiRzkzWldSQmRIUnlhV0oxZEdWelIyeHZZazFoY0Z0Y0lpcGNJbDB1ZEdWemRDaGhLU2w3YVdZb1lUMDlQVndpYUhKbFpsd2lmSHhoUFQwOVhDSnpjbU5jSWlsN2FXWW9ibUYxWjJoMGVVaHlaV1lvYm1GdFpTeDJZV3gxWlNrcGUyUmxiR1YwWlNCbWNtRnRaUzVoZEhSeWFXSnpXMkZkTzNKbGRIVnlibjE5YVdZb1lUMDlQVndpWTJ4aGMzTmNJaWw3ZG1Gc2RXVTlabWxzZEdWeVEyeGhjM05sY3loMllXeDFaU3hoYkd4dmQyVmtRMnhoYzNObGMwMWhjRnR1WVcxbFhTazdhV1lvSVhaaGJIVmxMbXhsYm1kMGFDbDdaR1ZzWlhSbElHWnlZVzFsTG1GMGRISnBZbk5iWVYwN2NtVjBkWEp1ZlgxeVpYTjFiSFFyUFZ3aUlGd2lLMkU3YVdZb2RtRnNkV1V1YkdWdVozUm9LWHR5WlhOMWJIUXJQU2M5WENJbksyVnpZMkZ3WlVoMGJXd29kbUZzZFdVcEt5ZGNJaWQ5ZldWc2MyVjdaR1ZzWlhSbElHWnlZVzFsTG1GMGRISnBZbk5iWVYxOWZTbDlhV1lvYjNCMGFXOXVjeTV6Wld4bVEyeHZjMmx1Wnk1cGJtUmxlRTltS0c1aGJXVXBJVDA5TFRFcGUzSmxjM1ZzZENzOVhDSWdMejVjSW4xbGJITmxlM0psYzNWc2RDczlYQ0krWENJN2FXWW9abkpoYldVdWFXNXVaWEpVWlhoMEppWWhhR0Z6VkdWNGRDWW1JVzl3ZEdsdmJuTXVkR1Y0ZEVacGJIUmxjaWw3Y21WemRXeDBLejFtY21GdFpTNXBibTVsY2xSbGVIUjlmWDBzYjI1MFpYaDBPbVoxYm1OMGFXOXVLSFJsZUhRcGUybG1LSE5yYVhCVVpYaDBLWHR5WlhSMWNtNTlkbUZ5SUd4aGMzUkdjbUZ0WlQxemRHRmphMXR6ZEdGamF5NXNaVzVuZEdndE1WMDdkbUZ5SUhSaFp6dHBaaWhzWVhOMFJuSmhiV1VwZTNSaFp6MXNZWE4wUm5KaGJXVXVkR0ZuTzNSbGVIUTliR0Z6ZEVaeVlXMWxMbWx1Ym1WeVZHVjRkQ0U5UFhWdVpHVm1hVzVsWkQ5c1lYTjBSbkpoYldVdWFXNXVaWEpVWlhoME9uUmxlSFI5YVdZb2RHRm5QVDA5WENKelkzSnBjSFJjSW54OGRHRm5QVDA5WENKemRIbHNaVndpS1h0eVpYTjFiSFFyUFhSbGVIUjlaV3h6Wlh0MllYSWdaWE5qWVhCbFpEMWxjMk5oY0dWSWRHMXNLSFJsZUhRcE8ybG1LRzl3ZEdsdmJuTXVkR1Y0ZEVacGJIUmxjaWw3Y21WemRXeDBLejF2Y0hScGIyNXpMblJsZUhSR2FXeDBaWElvWlhOallYQmxaQ2w5Wld4elpYdHlaWE4xYkhRclBXVnpZMkZ3WldSOWZXbG1LSE4wWVdOckxteGxibWQwYUNsN2RtRnlJR1p5WVcxbFBYTjBZV05yVzNOMFlXTnJMbXhsYm1kMGFDMHhYVHRtY21GdFpTNTBaWGgwS3oxMFpYaDBmWDBzYjI1amJHOXpaWFJoWnpwbWRXNWpkR2x2YmlodVlXMWxLWHRwWmloemEybHdWR1Y0ZENsN2MydHBjRlJsZUhSRVpYQjBhQzB0TzJsbUtDRnphMmx3VkdWNGRFUmxjSFJvS1h0emEybHdWR1Y0ZEQxbVlXeHpaWDFsYkhObGUzSmxkSFZ5Ym4xOWRtRnlJR1p5WVcxbFBYTjBZV05yTG5CdmNDZ3BPMmxtS0NGbWNtRnRaU2w3Y21WMGRYSnVmWE5yYVhCVVpYaDBQV1poYkhObE8yUmxjSFJvTFMwN2FXWW9jMnRwY0UxaGNGdGtaWEIwYUYwcGUyUmxiR1YwWlNCemEybHdUV0Z3VzJSbGNIUm9YVHRtY21GdFpTNTFjR1JoZEdWUVlYSmxiblJPYjJSbFZHVjRkQ2dwTzNKbGRIVnlibjFwWmloMGNtRnVjMlp2Y20xTllYQmJaR1Z3ZEdoZEtYdHVZVzFsUFhSeVlXNXpabTl5YlUxaGNGdGtaWEIwYUYwN1pHVnNaWFJsSUhSeVlXNXpabTl5YlUxaGNGdGtaWEIwYUYxOWFXWW9iM0IwYVc5dWN5NWxlR05zZFhOcGRtVkdhV3gwWlhJbUptOXdkR2x2Ym5NdVpYaGpiSFZ6YVhabFJtbHNkR1Z5S0daeVlXMWxLU2w3Y21WemRXeDBQWEpsYzNWc2RDNXpkV0p6ZEhJb01DeG1jbUZ0WlM1MFlXZFFiM05wZEdsdmJpazdjbVYwZFhKdWZXWnlZVzFsTG5Wd1pHRjBaVkJoY21WdWRFNXZaR1ZVWlhoMEtDazdhV1lvYjNCMGFXOXVjeTV6Wld4bVEyeHZjMmx1Wnk1cGJtUmxlRTltS0c1aGJXVXBJVDA5TFRFcGUzSmxkSFZ5Ym4xeVpYTjFiSFFyUFZ3aVBDOWNJaXR1WVcxbEsxd2lQbHdpZlgwc2IzQjBhVzl1Y3k1d1lYSnpaWElwTzNCaGNuTmxjaTUzY21sMFpTaG9kRzFzS1R0d1lYSnpaWEl1Wlc1a0tDazdjbVYwZFhKdUlISmxjM1ZzZER0bWRXNWpkR2x2YmlCbGMyTmhjR1ZJZEcxc0tITXBlMmxtS0hSNWNHVnZaaUJ6SVQwOVhDSnpkSEpwYm1kY0lpbDdjejF6SzF3aVhDSjljbVYwZFhKdUlITXVjbVZ3YkdGalpTZ3ZYRndtTDJjc1hDSW1ZVzF3TzF3aUtTNXlaWEJzWVdObEtDODhMMmNzWENJbWJIUTdYQ0lwTG5KbGNHeGhZMlVvTDF4Y1BpOW5MRndpSm1kME8xd2lLUzV5WlhCc1lXTmxLQzljWEZ3aUwyY3NYQ0ltY1hWdmREdGNJaWw5Wm5WdVkzUnBiMjRnYm1GMVoyaDBlVWh5WldZb2JtRnRaU3hvY21WbUtYdG9jbVZtUFdoeVpXWXVjbVZ3YkdGalpTZ3ZXMXhjZURBd0xWeGNlREl3WFNzdlp5eGNJbHdpS1R0b2NtVm1QV2h5WldZdWNtVndiR0ZqWlNndlBGeGNJVnhjTFZ4Y0xTNHFQMXhjTFZ4Y0xWeGNQaTluTEZ3aVhDSXBPM1poY2lCdFlYUmphR1Z6UFdoeVpXWXViV0YwWTJnb0wxNG9XMkV0ZWtFdFdsMHJLVnhjT2k4cE8ybG1LQ0Z0WVhSamFHVnpLWHR5WlhSMWNtNGdabUZzYzJWOWRtRnlJSE5qYUdWdFpUMXRZWFJqYUdWeld6RmRMblJ2VEc5M1pYSkRZWE5sS0NrN2FXWW9hR0Z6S0c5d2RHbHZibk11WVd4c2IzZGxaRk5qYUdWdFpYTkNlVlJoWnl4dVlXMWxLU2w3Y21WMGRYSnVJRzl3ZEdsdmJuTXVZV3hzYjNkbFpGTmphR1Z0WlhOQ2VWUmhaMXR1WVcxbFhTNXBibVJsZUU5bUtITmphR1Z0WlNrOVBUMHRNWDF5WlhSMWNtNGhiM0IwYVc5dWN5NWhiR3h2ZDJWa1UyTm9aVzFsYzN4OGIzQjBhVzl1Y3k1aGJHeHZkMlZrVTJOb1pXMWxjeTVwYm1SbGVFOW1LSE5qYUdWdFpTazlQVDB0TVgxbWRXNWpkR2x2YmlCbWFXeDBaWEpEYkdGemMyVnpLR05zWVhOelpYTXNZV3hzYjNkbFpDbDdhV1lvSVdGc2JHOTNaV1FwZTNKbGRIVnliaUJqYkdGemMyVnpmV05zWVhOelpYTTlZMnhoYzNObGN5NXpjR3hwZENndlhGeHpLeThwTzNKbGRIVnliaUJqYkdGemMyVnpMbVpwYkhSbGNpaG1kVzVqZEdsdmJpaGpiSE56S1h0eVpYUjFjbTRnWVd4c2IzZGxaQzVwYm1SbGVFOW1LR05zYzNNcElUMDlMVEY5S1M1cWIybHVLRndpSUZ3aUtYMTlkbUZ5SUdoMGJXeFFZWEp6WlhKRVpXWmhkV3gwY3oxN1pHVmpiMlJsUlc1MGFYUnBaWE02ZEhKMVpYMDdjMkZ1YVhScGVtVklkRzFzTG1SbFptRjFiSFJ6UFh0aGJHeHZkMlZrVkdGbmN6cGJYQ0pvTTF3aUxGd2lhRFJjSWl4Y0ltZzFYQ0lzWENKb05sd2lMRndpWW14dlkydHhkVzkwWlZ3aUxGd2ljRndpTEZ3aVlWd2lMRndpZFd4Y0lpeGNJbTlzWENJc1hDSnViRndpTEZ3aWJHbGNJaXhjSW1KY0lpeGNJbWxjSWl4Y0luTjBjbTl1WjF3aUxGd2laVzFjSWl4Y0luTjBjbWxyWlZ3aUxGd2lZMjlrWlZ3aUxGd2lhSEpjSWl4Y0ltSnlYQ0lzWENKa2FYWmNJaXhjSW5SaFlteGxYQ0lzWENKMGFHVmhaRndpTEZ3aVkyRndkR2x2Ymx3aUxGd2lkR0p2WkhsY0lpeGNJblJ5WENJc1hDSjBhRndpTEZ3aWRHUmNJaXhjSW5CeVpWd2lYU3hoYkd4dmQyVmtRWFIwY21saWRYUmxjenA3WVRwYlhDSm9jbVZtWENJc1hDSnVZVzFsWENJc1hDSjBZWEpuWlhSY0lsMHNhVzFuT2x0Y0luTnlZMXdpWFgwc2MyVnNaa05zYjNOcGJtYzZXMXdpYVcxblhDSXNYQ0ppY2x3aUxGd2lhSEpjSWl4Y0ltRnlaV0ZjSWl4Y0ltSmhjMlZjSWl4Y0ltSmhjMlZtYjI1MFhDSXNYQ0pwYm5CMWRGd2lMRndpYkdsdWExd2lMRndpYldWMFlWd2lYU3hoYkd4dmQyVmtVMk5vWlcxbGN6cGJYQ0pvZEhSd1hDSXNYQ0pvZEhSd2Mxd2lMRndpWm5Sd1hDSXNYQ0p0WVdsc2RHOWNJbDBzWVd4c2IzZGxaRk5qYUdWdFpYTkNlVlJoWnpwN2ZYMDdjMkZ1YVhScGVtVklkRzFzTG5OcGJYQnNaVlJ5WVc1elptOXliVDFtZFc1amRHbHZiaWh1WlhkVVlXZE9ZVzFsTEc1bGQwRjBkSEpwWW5Nc2JXVnlaMlVwZTIxbGNtZGxQVzFsY21kbFBUMDlkVzVrWldacGJtVmtQM1J5ZFdVNmJXVnlaMlU3Ym1WM1FYUjBjbWxpY3oxdVpYZEJkSFJ5YVdKemZIeDdmVHR5WlhSMWNtNGdablZ1WTNScGIyNG9kR0ZuVG1GdFpTeGhkSFJ5YVdKektYdDJZWElnWVhSMGNtbGlPMmxtS0cxbGNtZGxLWHRtYjNJb1lYUjBjbWxpSUdsdUlHNWxkMEYwZEhKcFluTXBlMkYwZEhKcFluTmJZWFIwY21saVhUMXVaWGRCZEhSeWFXSnpXMkYwZEhKcFlsMTlmV1ZzYzJWN1lYUjBjbWxpY3oxdVpYZEJkSFJ5YVdKemZYSmxkSFZ5Ym50MFlXZE9ZVzFsT201bGQxUmhaMDVoYldVc1lYUjBjbWxpY3pwaGRIUnlhV0p6ZlgxOWZTeDdhSFJ0YkhCaGNuTmxjakk2TXpZc1hDSnlaV2RsZUhBdGNYVnZkR1ZjSWpvMU5DeDRkR1Z1WkRvMU9IMWRMREk2VzJaMWJtTjBhVzl1S0hKbGNYVnBjbVVzYlc5a2RXeGxMR1Y0Y0c5eWRITXBlMXdpZFhObElITjBjbWxqZEZ3aU8yVjRjRzl5ZEhNdWRHOUNlWFJsUVhKeVlYazlkRzlDZVhSbFFYSnlZWGs3Wlhod2IzSjBjeTVtY205dFFubDBaVUZ5Y21GNVBXWnliMjFDZVhSbFFYSnlZWGs3ZG1GeUlHeHZiMnQxY0QxYlhUdDJZWElnY21WMlRHOXZhM1Z3UFZ0ZE8zWmhjaUJCY25JOWRIbHdaVzltSUZWcGJuUTRRWEp5WVhraFBUMWNJblZ1WkdWbWFXNWxaRndpUDFWcGJuUTRRWEp5WVhrNlFYSnlZWGs3Wm5WdVkzUnBiMjRnYVc1cGRDZ3BlM1poY2lCamIyUmxQVndpUVVKRFJFVkdSMGhKU2t0TVRVNVBVRkZTVTFSVlZsZFlXVnBoWW1Oa1pXWm5hR2xxYTJ4dGJtOXdjWEp6ZEhWMmQzaDVlakF4TWpNME5UWTNPRGtyTDF3aU8yWnZjaWgyWVhJZ2FUMHdMR3hsYmoxamIyUmxMbXhsYm1kMGFEdHBQR3hsYmpzcksya3BlMnh2YjJ0MWNGdHBYVDFqYjJSbFcybGRPM0psZGt4dmIydDFjRnRqYjJSbExtTm9ZWEpEYjJSbFFYUW9hU2xkUFdsOWNtVjJURzl2YTNWd1cxd2lMVndpTG1Ob1lYSkRiMlJsUVhRb01DbGRQVFl5TzNKbGRreHZiMnQxY0Z0Y0lsOWNJaTVqYUdGeVEyOWtaVUYwS0RBcFhUMDJNMzFwYm1sMEtDazdablZ1WTNScGIyNGdkRzlDZVhSbFFYSnlZWGtvWWpZMEtYdDJZWElnYVN4cUxHd3NkRzF3TEhCc1lXTmxTRzlzWkdWeWN5eGhjbkk3ZG1GeUlHeGxiajFpTmpRdWJHVnVaM1JvTzJsbUtHeGxiaVUwUGpBcGUzUm9jbTkzSUc1bGR5QkZjbkp2Y2loY0lrbHVkbUZzYVdRZ2MzUnlhVzVuTGlCTVpXNW5kR2dnYlhWemRDQmlaU0JoSUcxMWJIUnBjR3hsSUc5bUlEUmNJaWw5Y0d4aFkyVkliMnhrWlhKelBXSTJORnRzWlc0dE1sMDlQVDFjSWoxY0lqOHlPbUkyTkZ0c1pXNHRNVjA5UFQxY0lqMWNJajh4T2pBN1lYSnlQVzVsZHlCQmNuSW9iR1Z1S2pNdk5DMXdiR0ZqWlVodmJHUmxjbk1wTzJ3OWNHeGhZMlZJYjJ4a1pYSnpQakEvYkdWdUxUUTZiR1Z1TzNaaGNpQk1QVEE3Wm05eUtHazlNQ3hxUFRBN2FUeHNPMmtyUFRRc2FpczlNeWw3ZEcxd1BYSmxka3h2YjJ0MWNGdGlOalF1WTJoaGNrTnZaR1ZCZENocEtWMDhQREU0ZkhKbGRreHZiMnQxY0Z0aU5qUXVZMmhoY2tOdlpHVkJkQ2hwS3pFcFhUdzhNVEo4Y21WMlRHOXZhM1Z3VzJJMk5DNWphR0Z5UTI5a1pVRjBLR2tyTWlsZFBEdzJmSEpsZGt4dmIydDFjRnRpTmpRdVkyaGhja052WkdWQmRDaHBLek1wWFR0aGNuSmJUQ3NyWFQxMGJYQStQakUySmpJMU5UdGhjbkpiVENzclhUMTBiWEErUGpnbU1qVTFPMkZ5Y2x0TUt5dGRQWFJ0Y0NZeU5UVjlhV1lvY0d4aFkyVkliMnhrWlhKelBUMDlNaWw3ZEcxd1BYSmxka3h2YjJ0MWNGdGlOalF1WTJoaGNrTnZaR1ZCZENocEtWMDhQREo4Y21WMlRHOXZhM1Z3VzJJMk5DNWphR0Z5UTI5a1pVRjBLR2tyTVNsZFBqNDBPMkZ5Y2x0TUt5dGRQWFJ0Y0NZeU5UVjlaV3h6WlNCcFppaHdiR0ZqWlVodmJHUmxjbk05UFQweEtYdDBiWEE5Y21WMlRHOXZhM1Z3VzJJMk5DNWphR0Z5UTI5a1pVRjBLR2twWFR3OE1UQjhjbVYyVEc5dmEzVndXMkkyTkM1amFHRnlRMjlrWlVGMEtHa3JNU2xkUER3MGZISmxka3h2YjJ0MWNGdGlOalF1WTJoaGNrTnZaR1ZCZENocEt6SXBYVDQrTWp0aGNuSmJUQ3NyWFQxMGJYQStQamdtTWpVMU8yRnljbHRNS3l0ZFBYUnRjQ1l5TlRWOWNtVjBkWEp1SUdGeWNuMW1kVzVqZEdsdmJpQjBjbWx3YkdWMFZHOUNZWE5sTmpRb2JuVnRLWHR5WlhSMWNtNGdiRzl2YTNWd1cyNTFiVDQrTVRnbU5qTmRLMnh2YjJ0MWNGdHVkVzArUGpFeUpqWXpYU3RzYjI5cmRYQmJiblZ0UGo0MkpqWXpYU3RzYjI5cmRYQmJiblZ0SmpZelhYMW1kVzVqZEdsdmJpQmxibU52WkdWRGFIVnVheWgxYVc1ME9DeHpkR0Z5ZEN4bGJtUXBlM1poY2lCMGJYQTdkbUZ5SUc5MWRIQjFkRDFiWFR0bWIzSW9kbUZ5SUdrOWMzUmhjblE3YVR4bGJtUTdhU3M5TXlsN2RHMXdQU2gxYVc1ME9GdHBYVHc4TVRZcEt5aDFhVzUwT0Z0cEt6RmRQRHc0S1N0MWFXNTBPRnRwS3pKZE8yOTFkSEIxZEM1d2RYTm9LSFJ5YVhCc1pYUlViMEpoYzJVMk5DaDBiWEFwS1gxeVpYUjFjbTRnYjNWMGNIVjBMbXB2YVc0b1hDSmNJaWw5Wm5WdVkzUnBiMjRnWm5KdmJVSjVkR1ZCY25KaGVTaDFhVzUwT0NsN2RtRnlJSFJ0Y0R0MllYSWdiR1Z1UFhWcGJuUTRMbXhsYm1kMGFEdDJZWElnWlhoMGNtRkNlWFJsY3oxc1pXNGxNenQyWVhJZ2IzVjBjSFYwUFZ3aVhDSTdkbUZ5SUhCaGNuUnpQVnRkTzNaaGNpQnRZWGhEYUhWdWEweGxibWQwYUQweE5qTTRNenRtYjNJb2RtRnlJR2s5TUN4c1pXNHlQV3hsYmkxbGVIUnlZVUo1ZEdWek8yazhiR1Z1TWp0cEt6MXRZWGhEYUhWdWEweGxibWQwYUNsN2NHRnlkSE11Y0hWemFDaGxibU52WkdWRGFIVnVheWgxYVc1ME9DeHBMR2tyYldGNFEyaDFibXRNWlc1bmRHZytiR1Z1TWo5c1pXNHlPbWtyYldGNFEyaDFibXRNWlc1bmRHZ3BLWDFwWmlobGVIUnlZVUo1ZEdWelBUMDlNU2w3ZEcxd1BYVnBiblE0VzJ4bGJpMHhYVHR2ZFhSd2RYUXJQV3h2YjJ0MWNGdDBiWEErUGpKZE8yOTFkSEIxZENzOWJHOXZhM1Z3VzNSdGNEdzhOQ1kyTTEwN2IzVjBjSFYwS3oxY0lqMDlYQ0o5Wld4elpTQnBaaWhsZUhSeVlVSjVkR1Z6UFQwOU1pbDdkRzF3UFNoMWFXNTBPRnRzWlc0dE1sMDhQRGdwSzNWcGJuUTRXMnhsYmkweFhUdHZkWFJ3ZFhRclBXeHZiMnQxY0Z0MGJYQStQakV3WFR0dmRYUndkWFFyUFd4dmIydDFjRnQwYlhBK1BqUW1Oak5kTzI5MWRIQjFkQ3M5Ykc5dmEzVndXM1J0Y0R3OE1pWTJNMTA3YjNWMGNIVjBLejFjSWoxY0luMXdZWEowY3k1d2RYTm9LRzkxZEhCMWRDazdjbVYwZFhKdUlIQmhjblJ6TG1wdmFXNG9YQ0pjSWlsOWZTeDdmVjBzTXpwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3ZlN4N2ZWMHNORHBiWm5WdVkzUnBiMjRvY21WeGRXbHlaU3h0YjJSMWJHVXNaWGh3YjNKMGN5bDdLR1oxYm1OMGFXOXVLR2RzYjJKaGJDbDdYQ0oxYzJVZ2MzUnlhV04wWENJN2RtRnlJR0oxWm1abGNqMXlaWEYxYVhKbEtGd2lZblZtWm1WeVhDSXBPM1poY2lCQ2RXWm1aWEk5WW5WbVptVnlMa0oxWm1abGNqdDJZWElnVTJ4dmQwSjFabVpsY2oxaWRXWm1aWEl1VTJ4dmQwSjFabVpsY2p0MllYSWdUVUZZWDB4RlRqMWlkV1ptWlhJdWEwMWhlRXhsYm1kMGFIeDhNakUwTnpRNE16WTBOenRsZUhCdmNuUnpMbUZzYkc5alBXWjFibU4wYVc5dUlHRnNiRzlqS0hOcGVtVXNabWxzYkN4bGJtTnZaR2x1WnlsN2FXWW9kSGx3Wlc5bUlFSjFabVpsY2k1aGJHeHZZejA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdjbVYwZFhKdUlFSjFabVpsY2k1aGJHeHZZeWh6YVhwbExHWnBiR3dzWlc1amIyUnBibWNwZldsbUtIUjVjR1Z2WmlCbGJtTnZaR2x1WnowOVBWd2liblZ0WW1WeVhDSXBlM1JvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKbGJtTnZaR2x1WnlCdGRYTjBJRzV2ZENCaVpTQnVkVzFpWlhKY0lpbDlhV1lvZEhsd1pXOW1JSE5wZW1VaFBUMWNJbTUxYldKbGNsd2lLWHQwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0Z3aWMybDZaU0J0ZFhOMElHSmxJR0VnYm5WdFltVnlYQ0lwZldsbUtITnBlbVUrVFVGWVgweEZUaWw3ZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb1hDSnphWHBsSUdseklIUnZieUJzWVhKblpWd2lLWDEyWVhJZ1pXNWpQV1Z1WTI5a2FXNW5PM1poY2lCZlptbHNiRDFtYVd4c08ybG1LRjltYVd4c1BUMDlkVzVrWldacGJtVmtLWHRsYm1NOWRXNWtaV1pwYm1Wa08xOW1hV3hzUFRCOWRtRnlJR0oxWmoxdVpYY2dRblZtWm1WeUtITnBlbVVwTzJsbUtIUjVjR1Z2WmlCZlptbHNiRDA5UFZ3aWMzUnlhVzVuWENJcGUzWmhjaUJtYVd4c1FuVm1QVzVsZHlCQ2RXWm1aWElvWDJacGJHd3NaVzVqS1R0MllYSWdabXhsYmoxbWFXeHNRblZtTG14bGJtZDBhRHQyWVhJZ2FUMHRNVHQzYUdsc1pTZ3JLMms4YzJsNlpTbDdZblZtVzJsZFBXWnBiR3hDZFdaYmFTVm1iR1Z1WFgxOVpXeHpaWHRpZFdZdVptbHNiQ2hmWm1sc2JDbDljbVYwZFhKdUlHSjFabjA3Wlhod2IzSjBjeTVoYkd4dlkxVnVjMkZtWlQxbWRXNWpkR2x2YmlCaGJHeHZZMVZ1YzJGbVpTaHphWHBsS1h0cFppaDBlWEJsYjJZZ1FuVm1abVZ5TG1Gc2JHOWpWVzV6WVdabFBUMDlYQ0ptZFc1amRHbHZibHdpS1h0eVpYUjFjbTRnUW5WbVptVnlMbUZzYkc5alZXNXpZV1psS0hOcGVtVXBmV2xtS0hSNWNHVnZaaUJ6YVhwbElUMDlYQ0p1ZFcxaVpYSmNJaWw3ZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0luTnBlbVVnYlhWemRDQmlaU0JoSUc1MWJXSmxjbHdpS1gxcFppaHphWHBsUGsxQldGOU1SVTRwZTNSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtGd2ljMmw2WlNCcGN5QjBiMjhnYkdGeVoyVmNJaWw5Y21WMGRYSnVJRzVsZHlCQ2RXWm1aWElvYzJsNlpTbDlPMlY0Y0c5eWRITXVabkp2YlQxbWRXNWpkR2x2YmlCbWNtOXRLSFpoYkhWbExHVnVZMjlrYVc1blQzSlBabVp6WlhRc2JHVnVaM1JvS1h0cFppaDBlWEJsYjJZZ1FuVm1abVZ5TG1aeWIyMDlQVDFjSW1aMWJtTjBhVzl1WENJbUppZ2haMnh2WW1Gc0xsVnBiblE0UVhKeVlYbDhmRlZwYm5RNFFYSnlZWGt1Wm5KdmJTRTlQVUoxWm1abGNpNW1jbTl0S1NsN2NtVjBkWEp1SUVKMVptWmxjaTVtY205dEtIWmhiSFZsTEdWdVkyOWthVzVuVDNKUFptWnpaWFFzYkdWdVozUm9LWDFwWmloMGVYQmxiMllnZG1Gc2RXVTlQVDFjSW01MWJXSmxjbHdpS1h0MGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZGNJblpoYkhWbFhDSWdZWEpuZFcxbGJuUWdiWFZ6ZENCdWIzUWdZbVVnWVNCdWRXMWlaWEluS1gxcFppaDBlWEJsYjJZZ2RtRnNkV1U5UFQxY0luTjBjbWx1WjF3aUtYdHlaWFIxY200Z2JtVjNJRUoxWm1abGNpaDJZV3gxWlN4bGJtTnZaR2x1WjA5eVQyWm1jMlYwS1gxcFppaDBlWEJsYjJZZ1FYSnlZWGxDZFdabVpYSWhQVDFjSW5WdVpHVm1hVzVsWkZ3aUppWjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlFRnljbUY1UW5WbVptVnlLWHQyWVhJZ2IyWm1jMlYwUFdWdVkyOWthVzVuVDNKUFptWnpaWFE3YVdZb1lYSm5kVzFsYm5SekxteGxibWQwYUQwOVBURXBlM0psZEhWeWJpQnVaWGNnUW5WbVptVnlLSFpoYkhWbEtYMXBaaWgwZVhCbGIyWWdiMlptYzJWMFBUMDlYQ0oxYm1SbFptbHVaV1JjSWlsN2IyWm1jMlYwUFRCOWRtRnlJR3hsYmoxc1pXNW5kR2c3YVdZb2RIbHdaVzltSUd4bGJqMDlQVndpZFc1a1pXWnBibVZrWENJcGUyeGxiajEyWVd4MVpTNWllWFJsVEdWdVozUm9MVzltWm5ObGRIMXBaaWh2Wm1aelpYUStQWFpoYkhWbExtSjVkR1ZNWlc1bmRHZ3BlM1JvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0Z3aUoyOW1abk5sZENjZ2FYTWdiM1YwSUc5bUlHSnZkVzVrYzF3aUtYMXBaaWhzWlc0K2RtRnNkV1V1WW5sMFpVeGxibWQwYUMxdlptWnpaWFFwZTNSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtGd2lKMnhsYm1kMGFDY2dhWE1nYjNWMElHOW1JR0p2ZFc1a2Mxd2lLWDF5WlhSMWNtNGdibVYzSUVKMVptWmxjaWgyWVd4MVpTNXpiR2xqWlNodlptWnpaWFFzYjJabWMyVjBLMnhsYmlrcGZXbG1LRUoxWm1abGNpNXBjMEoxWm1abGNpaDJZV3gxWlNrcGUzWmhjaUJ2ZFhROWJtVjNJRUoxWm1abGNpaDJZV3gxWlM1c1pXNW5kR2dwTzNaaGJIVmxMbU52Y0hrb2IzVjBMREFzTUN4MllXeDFaUzVzWlc1bmRHZ3BPM0psZEhWeWJpQnZkWFI5YVdZb2RtRnNkV1VwZTJsbUtFRnljbUY1TG1selFYSnlZWGtvZG1Gc2RXVXBmSHgwZVhCbGIyWWdRWEp5WVhsQ2RXWm1aWEloUFQxY0luVnVaR1ZtYVc1bFpGd2lKaVoyWVd4MVpTNWlkV1ptWlhJZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVVKMVptWmxjbng4WENKc1pXNW5kR2hjSW1sdUlIWmhiSFZsS1h0eVpYUjFjbTRnYm1WM0lFSjFabVpsY2loMllXeDFaU2w5YVdZb2RtRnNkV1V1ZEhsd1pUMDlQVndpUW5WbVptVnlYQ0ltSmtGeWNtRjVMbWx6UVhKeVlYa29kbUZzZFdVdVpHRjBZU2twZTNKbGRIVnliaUJ1WlhjZ1FuVm1abVZ5S0haaGJIVmxMbVJoZEdFcGZYMTBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUm1seWMzUWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhJSE4wY21sdVp5d2dRblZtWm1WeUxDQmNJaXRjSWtGeWNtRjVRblZtWm1WeUxDQkJjbkpoZVN3Z2IzSWdZWEp5WVhrdGJHbHJaU0J2WW1wbFkzUXVYQ0lwZlR0bGVIQnZjblJ6TG1Gc2JHOWpWVzV6WVdabFUyeHZkejFtZFc1amRHbHZiaUJoYkd4dlkxVnVjMkZtWlZOc2IzY29jMmw2WlNsN2FXWW9kSGx3Wlc5bUlFSjFabVpsY2k1aGJHeHZZMVZ1YzJGbVpWTnNiM2M5UFQxY0ltWjFibU4wYVc5dVhDSXBlM0psZEhWeWJpQkNkV1ptWlhJdVlXeHNiMk5WYm5OaFptVlRiRzkzS0hOcGVtVXBmV2xtS0hSNWNHVnZaaUJ6YVhwbElUMDlYQ0p1ZFcxaVpYSmNJaWw3ZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0luTnBlbVVnYlhWemRDQmlaU0JoSUc1MWJXSmxjbHdpS1gxcFppaHphWHBsUGoxTlFWaGZURVZPS1h0MGFISnZkeUJ1WlhjZ1VtRnVaMlZGY25KdmNpaGNJbk5wZW1VZ2FYTWdkRzl2SUd4aGNtZGxYQ0lwZlhKbGRIVnliaUJ1WlhjZ1UyeHZkMEoxWm1abGNpaHphWHBsS1gxOUtTNWpZV3hzS0hSb2FYTXNkSGx3Wlc5bUlHZHNiMkpoYkNFOVBWd2lkVzVrWldacGJtVmtYQ0kvWjJ4dlltRnNPblI1Y0dWdlppQnpaV3htSVQwOVhDSjFibVJsWm1sdVpXUmNJajl6Wld4bU9uUjVjR1Z2WmlCM2FXNWtiM2NoUFQxY0luVnVaR1ZtYVc1bFpGd2lQM2RwYm1SdmR6cDdmU2w5TEh0aWRXWm1aWEk2TlgxZExEVTZXMloxYm1OMGFXOXVLSEpsY1hWcGNtVXNiVzlrZFd4bExHVjRjRzl5ZEhNcGV5aG1kVzVqZEdsdmJpaG5iRzlpWVd3cGUxd2lkWE5sSUhOMGNtbGpkRndpTzNaaGNpQmlZWE5sTmpROWNtVnhkV2x5WlNoY0ltSmhjMlUyTkMxcWMxd2lLVHQyWVhJZ2FXVmxaVGMxTkQxeVpYRjFhWEpsS0Z3aWFXVmxaVGMxTkZ3aUtUdDJZWElnYVhOQmNuSmhlVDF5WlhGMWFYSmxLRndpYVhOaGNuSmhlVndpS1R0bGVIQnZjblJ6TGtKMVptWmxjajFDZFdabVpYSTdaWGh3YjNKMGN5NVRiRzkzUW5WbVptVnlQVk5zYjNkQ2RXWm1aWEk3Wlhod2IzSjBjeTVKVGxOUVJVTlVYMDFCV0Y5Q1dWUkZVejAxTUR0Q2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkQxbmJHOWlZV3d1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNFOVBYVnVaR1ZtYVc1bFpEOW5iRzlpWVd3dVZGbFFSVVJmUVZKU1FWbGZVMVZRVUU5U1ZEcDBlWEJsWkVGeWNtRjVVM1Z3Y0c5eWRDZ3BPMlY0Y0c5eWRITXVhMDFoZUV4bGJtZDBhRDFyVFdGNFRHVnVaM1JvS0NrN1puVnVZM1JwYjI0Z2RIbHdaV1JCY25KaGVWTjFjSEJ2Y25Rb0tYdDBjbmw3ZG1GeUlHRnljajF1WlhjZ1ZXbHVkRGhCY25KaGVTZ3hLVHRoY25JdVgxOXdjbTkwYjE5ZlBYdGZYM0J5YjNSdlgxODZWV2x1ZERoQmNuSmhlUzV3Y205MGIzUjVjR1VzWm05dk9tWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlEUXlmWDA3Y21WMGRYSnVJR0Z5Y2k1bWIyOG9LVDA5UFRReUppWjBlWEJsYjJZZ1lYSnlMbk4xWW1GeWNtRjVQVDA5WENKbWRXNWpkR2x2Ymx3aUppWmhjbkl1YzNWaVlYSnlZWGtvTVN3eEtTNWllWFJsVEdWdVozUm9QVDA5TUgxallYUmphQ2hsS1h0eVpYUjFjbTRnWm1Gc2MyVjlmV1oxYm1OMGFXOXVJR3ROWVhoTVpXNW5kR2dvS1h0eVpYUjFjbTRnUW5WbVptVnlMbFJaVUVWRVgwRlNVa0ZaWDFOVlVGQlBVbFEvTWpFME56UTRNelkwTnpveE1EY3pOelF4T0RJemZXWjFibU4wYVc5dUlHTnlaV0YwWlVKMVptWmxjaWgwYUdGMExHeGxibWQwYUNsN2FXWW9hMDFoZUV4bGJtZDBhQ2dwUEd4bGJtZDBhQ2w3ZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb1hDSkpiblpoYkdsa0lIUjVjR1ZrSUdGeWNtRjVJR3hsYm1kMGFGd2lLWDFwWmloQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNsN2RHaGhkRDF1WlhjZ1ZXbHVkRGhCY25KaGVTaHNaVzVuZEdncE8zUm9ZWFF1WDE5d2NtOTBiMTlmUFVKMVptWmxjaTV3Y205MGIzUjVjR1Y5Wld4elpYdHBaaWgwYUdGMFBUMDliblZzYkNsN2RHaGhkRDF1WlhjZ1FuVm1abVZ5S0d4bGJtZDBhQ2w5ZEdoaGRDNXNaVzVuZEdnOWJHVnVaM1JvZlhKbGRIVnliaUIwYUdGMGZXWjFibU4wYVc5dUlFSjFabVpsY2loaGNtY3NaVzVqYjJScGJtZFBjazltWm5ObGRDeHNaVzVuZEdncGUybG1LQ0ZDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ1ltSVNoMGFHbHpJR2x1YzNSaGJtTmxiMllnUW5WbVptVnlLU2w3Y21WMGRYSnVJRzVsZHlCQ2RXWm1aWElvWVhKbkxHVnVZMjlrYVc1blQzSlBabVp6WlhRc2JHVnVaM1JvS1gxcFppaDBlWEJsYjJZZ1lYSm5QVDA5WENKdWRXMWlaWEpjSWlsN2FXWW9kSGx3Wlc5bUlHVnVZMjlrYVc1blQzSlBabVp6WlhROVBUMWNJbk4wY21sdVoxd2lLWHQwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pKWmlCbGJtTnZaR2x1WnlCcGN5QnpjR1ZqYVdacFpXUWdkR2hsYmlCMGFHVWdabWx5YzNRZ1lYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaElITjBjbWx1WjF3aUtYMXlaWFIxY200Z1lXeHNiMk5WYm5OaFptVW9kR2hwY3l4aGNtY3BmWEpsZEhWeWJpQm1jbTl0S0hSb2FYTXNZWEpuTEdWdVkyOWthVzVuVDNKUFptWnpaWFFzYkdWdVozUm9LWDFDZFdabVpYSXVjRzl2YkZOcGVtVTlPREU1TWp0Q2RXWm1aWEl1WDJGMVoyMWxiblE5Wm5WdVkzUnBiMjRvWVhKeUtYdGhjbkl1WDE5d2NtOTBiMTlmUFVKMVptWmxjaTV3Y205MGIzUjVjR1U3Y21WMGRYSnVJR0Z5Y24wN1puVnVZM1JwYjI0Z1puSnZiU2gwYUdGMExIWmhiSFZsTEdWdVkyOWthVzVuVDNKUFptWnpaWFFzYkdWdVozUm9LWHRwWmloMGVYQmxiMllnZG1Gc2RXVTlQVDFjSW01MWJXSmxjbHdpS1h0MGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZGNJblpoYkhWbFhDSWdZWEpuZFcxbGJuUWdiWFZ6ZENCdWIzUWdZbVVnWVNCdWRXMWlaWEluS1gxcFppaDBlWEJsYjJZZ1FYSnlZWGxDZFdabVpYSWhQVDFjSW5WdVpHVm1hVzVsWkZ3aUppWjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlFRnljbUY1UW5WbVptVnlLWHR5WlhSMWNtNGdabkp2YlVGeWNtRjVRblZtWm1WeUtIUm9ZWFFzZG1Gc2RXVXNaVzVqYjJScGJtZFBjazltWm5ObGRDeHNaVzVuZEdncGZXbG1LSFI1Y0dWdlppQjJZV3gxWlQwOVBWd2ljM1J5YVc1blhDSXBlM0psZEhWeWJpQm1jbTl0VTNSeWFXNW5LSFJvWVhRc2RtRnNkV1VzWlc1amIyUnBibWRQY2s5bVpuTmxkQ2w5Y21WMGRYSnVJR1p5YjIxUFltcGxZM1FvZEdoaGRDeDJZV3gxWlNsOVFuVm1abVZ5TG1aeWIyMDlablZ1WTNScGIyNG9kbUZzZFdVc1pXNWpiMlJwYm1kUGNrOW1abk5sZEN4c1pXNW5kR2dwZTNKbGRIVnliaUJtY205dEtHNTFiR3dzZG1Gc2RXVXNaVzVqYjJScGJtZFBjazltWm5ObGRDeHNaVzVuZEdncGZUdHBaaWhDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ2w3UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzVmWDNCeWIzUnZYMTg5VldsdWREaEJjbkpoZVM1d2NtOTBiM1I1Y0dVN1FuVm1abVZ5TGw5ZmNISnZkRzlmWHoxVmFXNTBPRUZ5Y21GNU8ybG1LSFI1Y0dWdlppQlRlVzFpYjJ3aFBUMWNJblZ1WkdWbWFXNWxaRndpSmlaVGVXMWliMnd1YzNCbFkybGxjeVltUW5WbVptVnlXMU41YldKdmJDNXpjR1ZqYVdWelhUMDlQVUoxWm1abGNpbDdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0VKMVptWmxjaXhUZVcxaWIyd3VjM0JsWTJsbGN5eDdkbUZzZFdVNmJuVnNiQ3hqYjI1bWFXZDFjbUZpYkdVNmRISjFaWDBwZlgxbWRXNWpkR2x2YmlCaGMzTmxjblJUYVhwbEtITnBlbVVwZTJsbUtIUjVjR1Z2WmlCemFYcGxJVDA5WENKdWRXMWlaWEpjSWlsN2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ25YQ0p6YVhwbFhDSWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhJRzUxYldKbGNpY3BmV1ZzYzJVZ2FXWW9jMmw2WlR3d0tYdDBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWduWENKemFYcGxYQ0lnWVhKbmRXMWxiblFnYlhWemRDQnViM1FnWW1VZ2JtVm5ZWFJwZG1VbktYMTlablZ1WTNScGIyNGdZV3hzYjJNb2RHaGhkQ3h6YVhwbExHWnBiR3dzWlc1amIyUnBibWNwZTJGemMyVnlkRk5wZW1Vb2MybDZaU2s3YVdZb2MybDZaVHc5TUNsN2NtVjBkWEp1SUdOeVpXRjBaVUoxWm1abGNpaDBhR0YwTEhOcGVtVXBmV2xtS0dacGJHd2hQVDExYm1SbFptbHVaV1FwZTNKbGRIVnliaUIwZVhCbGIyWWdaVzVqYjJScGJtYzlQVDFjSW5OMGNtbHVaMXdpUDJOeVpXRjBaVUoxWm1abGNpaDBhR0YwTEhOcGVtVXBMbVpwYkd3b1ptbHNiQ3hsYm1OdlpHbHVaeWs2WTNKbFlYUmxRblZtWm1WeUtIUm9ZWFFzYzJsNlpTa3VabWxzYkNobWFXeHNLWDF5WlhSMWNtNGdZM0psWVhSbFFuVm1abVZ5S0hSb1lYUXNjMmw2WlNsOVFuVm1abVZ5TG1Gc2JHOWpQV1oxYm1OMGFXOXVLSE5wZW1Vc1ptbHNiQ3hsYm1OdlpHbHVaeWw3Y21WMGRYSnVJR0ZzYkc5aktHNTFiR3dzYzJsNlpTeG1hV3hzTEdWdVkyOWthVzVuS1gwN1puVnVZM1JwYjI0Z1lXeHNiMk5WYm5OaFptVW9kR2hoZEN4emFYcGxLWHRoYzNObGNuUlRhWHBsS0hOcGVtVXBPM1JvWVhROVkzSmxZWFJsUW5WbVptVnlLSFJvWVhRc2MybDZaVHd3UHpBNlkyaGxZMnRsWkNoemFYcGxLWHd3S1R0cFppZ2hRblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBlMlp2Y2loMllYSWdhVDB3TzJrOGMybDZaVHNySzJrcGUzUm9ZWFJiYVYwOU1IMTljbVYwZFhKdUlIUm9ZWFI5UW5WbVptVnlMbUZzYkc5alZXNXpZV1psUFdaMWJtTjBhVzl1S0hOcGVtVXBlM0psZEhWeWJpQmhiR3h2WTFWdWMyRm1aU2h1ZFd4c0xITnBlbVVwZlR0Q2RXWm1aWEl1WVd4c2IyTlZibk5oWm1WVGJHOTNQV1oxYm1OMGFXOXVLSE5wZW1VcGUzSmxkSFZ5YmlCaGJHeHZZMVZ1YzJGbVpTaHVkV3hzTEhOcGVtVXBmVHRtZFc1amRHbHZiaUJtY205dFUzUnlhVzVuS0hSb1lYUXNjM1J5YVc1bkxHVnVZMjlrYVc1bktYdHBaaWgwZVhCbGIyWWdaVzVqYjJScGJtY2hQVDFjSW5OMGNtbHVaMXdpZkh4bGJtTnZaR2x1WnowOVBWd2lYQ0lwZTJWdVkyOWthVzVuUFZ3aWRYUm1PRndpZldsbUtDRkNkV1ptWlhJdWFYTkZibU52WkdsdVp5aGxibU52WkdsdVp5a3BlM1JvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvSjF3aVpXNWpiMlJwYm1kY0lpQnRkWE4wSUdKbElHRWdkbUZzYVdRZ2MzUnlhVzVuSUdWdVkyOWthVzVuSnlsOWRtRnlJR3hsYm1kMGFEMWllWFJsVEdWdVozUm9LSE4wY21sdVp5eGxibU52WkdsdVp5bDhNRHQwYUdGMFBXTnlaV0YwWlVKMVptWmxjaWgwYUdGMExHeGxibWQwYUNrN2RtRnlJR0ZqZEhWaGJEMTBhR0YwTG5keWFYUmxLSE4wY21sdVp5eGxibU52WkdsdVp5azdhV1lvWVdOMGRXRnNJVDA5YkdWdVozUm9LWHQwYUdGMFBYUm9ZWFF1YzJ4cFkyVW9NQ3hoWTNSMVlXd3BmWEpsZEhWeWJpQjBhR0YwZldaMWJtTjBhVzl1SUdaeWIyMUJjbkpoZVV4cGEyVW9kR2hoZEN4aGNuSmhlU2w3ZG1GeUlHeGxibWQwYUQxaGNuSmhlUzVzWlc1bmRHZzhNRDh3T21Ob1pXTnJaV1FvWVhKeVlYa3ViR1Z1WjNSb0tYd3dPM1JvWVhROVkzSmxZWFJsUW5WbVptVnlLSFJvWVhRc2JHVnVaM1JvS1R0bWIzSW9kbUZ5SUdrOU1EdHBQR3hsYm1kMGFEdHBLejB4S1h0MGFHRjBXMmxkUFdGeWNtRjVXMmxkSmpJMU5YMXlaWFIxY200Z2RHaGhkSDFtZFc1amRHbHZiaUJtY205dFFYSnlZWGxDZFdabVpYSW9kR2hoZEN4aGNuSmhlU3hpZVhSbFQyWm1jMlYwTEd4bGJtZDBhQ2w3WVhKeVlYa3VZbmwwWlV4bGJtZDBhRHRwWmloaWVYUmxUMlptYzJWMFBEQjhmR0Z5Y21GNUxtSjVkR1ZNWlc1bmRHZzhZbmwwWlU5bVpuTmxkQ2w3ZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb1hDSW5iMlptYzJWMEp5QnBjeUJ2ZFhRZ2IyWWdZbTkxYm1SelhDSXBmV2xtS0dGeWNtRjVMbUo1ZEdWTVpXNW5kR2c4WW5sMFpVOW1abk5sZENzb2JHVnVaM1JvZkh3d0tTbDdkR2h5YjNjZ2JtVjNJRkpoYm1kbFJYSnliM0lvWENJbmJHVnVaM1JvSnlCcGN5QnZkWFFnYjJZZ1ltOTFibVJ6WENJcGZXbG1LR0o1ZEdWUFptWnpaWFE5UFQxMWJtUmxabWx1WldRbUpteGxibWQwYUQwOVBYVnVaR1ZtYVc1bFpDbDdZWEp5WVhrOWJtVjNJRlZwYm5RNFFYSnlZWGtvWVhKeVlYa3BmV1ZzYzJVZ2FXWW9iR1Z1WjNSb1BUMDlkVzVrWldacGJtVmtLWHRoY25KaGVUMXVaWGNnVldsdWREaEJjbkpoZVNoaGNuSmhlU3hpZVhSbFQyWm1jMlYwS1gxbGJITmxlMkZ5Y21GNVBXNWxkeUJWYVc1ME9FRnljbUY1S0dGeWNtRjVMR0o1ZEdWUFptWnpaWFFzYkdWdVozUm9LWDFwWmloQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNsN2RHaGhkRDFoY25KaGVUdDBhR0YwTGw5ZmNISnZkRzlmWHoxQ2RXWm1aWEl1Y0hKdmRHOTBlWEJsZldWc2MyVjdkR2hoZEQxbWNtOXRRWEp5WVhsTWFXdGxLSFJvWVhRc1lYSnlZWGtwZlhKbGRIVnliaUIwYUdGMGZXWjFibU4wYVc5dUlHWnliMjFQWW1wbFkzUW9kR2hoZEN4dlltb3BlMmxtS0VKMVptWmxjaTVwYzBKMVptWmxjaWh2WW1vcEtYdDJZWElnYkdWdVBXTm9aV05yWldRb2IySnFMbXhsYm1kMGFDbDhNRHQwYUdGMFBXTnlaV0YwWlVKMVptWmxjaWgwYUdGMExHeGxiaWs3YVdZb2RHaGhkQzVzWlc1bmRHZzlQVDB3S1h0eVpYUjFjbTRnZEdoaGRIMXZZbW91WTI5d2VTaDBhR0YwTERBc01DeHNaVzRwTzNKbGRIVnliaUIwYUdGMGZXbG1LRzlpYWlsN2FXWW9kSGx3Wlc5bUlFRnljbUY1UW5WbVptVnlJVDA5WENKMWJtUmxabWx1WldSY0lpWW1iMkpxTG1KMVptWmxjaUJwYm5OMFlXNWpaVzltSUVGeWNtRjVRblZtWm1WeWZIeGNJbXhsYm1kMGFGd2lhVzRnYjJKcUtYdHBaaWgwZVhCbGIyWWdiMkpxTG14bGJtZDBhQ0U5UFZ3aWJuVnRZbVZ5WENKOGZHbHpibUZ1S0c5aWFpNXNaVzVuZEdncEtYdHlaWFIxY200Z1kzSmxZWFJsUW5WbVptVnlLSFJvWVhRc01DbDljbVYwZFhKdUlHWnliMjFCY25KaGVVeHBhMlVvZEdoaGRDeHZZbW9wZldsbUtHOWlhaTUwZVhCbFBUMDlYQ0pDZFdabVpYSmNJaVltYVhOQmNuSmhlU2h2WW1vdVpHRjBZU2twZTNKbGRIVnliaUJtY205dFFYSnlZWGxNYVd0bEtIUm9ZWFFzYjJKcUxtUmhkR0VwZlgxMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2lSbWx5YzNRZ1lYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaElITjBjbWx1Wnl3Z1FuVm1abVZ5TENCQmNuSmhlVUoxWm1abGNpd2dRWEp5WVhrc0lHOXlJR0Z5Y21GNUxXeHBhMlVnYjJKcVpXTjBMbHdpS1gxbWRXNWpkR2x2YmlCamFHVmphMlZrS0d4bGJtZDBhQ2w3YVdZb2JHVnVaM1JvUGoxclRXRjRUR1Z1WjNSb0tDa3BlM1JvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0Z3aVFYUjBaVzF3ZENCMGJ5QmhiR3h2WTJGMFpTQkNkV1ptWlhJZ2JHRnlaMlZ5SUhSb1lXNGdiV0Y0YVcxMWJTQmNJaXRjSW5OcGVtVTZJREI0WENJcmEwMWhlRXhsYm1kMGFDZ3BMblJ2VTNSeWFXNW5LREUyS1N0Y0lpQmllWFJsYzF3aUtYMXlaWFIxY200Z2JHVnVaM1JvZkRCOVpuVnVZM1JwYjI0Z1UyeHZkMEoxWm1abGNpaHNaVzVuZEdncGUybG1LQ3RzWlc1bmRHZ2hQV3hsYm1kMGFDbDdiR1Z1WjNSb1BUQjljbVYwZFhKdUlFSjFabVpsY2k1aGJHeHZZeWdyYkdWdVozUm9LWDFDZFdabVpYSXVhWE5DZFdabVpYSTlablZ1WTNScGIyNGdhWE5DZFdabVpYSW9ZaWw3Y21WMGRYSnVJU0VvWWlFOWJuVnNiQ1ltWWk1ZmFYTkNkV1ptWlhJcGZUdENkV1ptWlhJdVkyOXRjR0Z5WlQxbWRXNWpkR2x2YmlCamIyMXdZWEpsS0dFc1lpbDdhV1lvSVVKMVptWmxjaTVwYzBKMVptWmxjaWhoS1h4OElVSjFabVpsY2k1cGMwSjFabVpsY2loaUtTbDdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWtGeVozVnRaVzUwY3lCdGRYTjBJR0psSUVKMVptWmxjbk5jSWlsOWFXWW9ZVDA5UFdJcGNtVjBkWEp1SURBN2RtRnlJSGc5WVM1c1pXNW5kR2c3ZG1GeUlIazlZaTVzWlc1bmRHZzdabTl5S0haaGNpQnBQVEFzYkdWdVBVMWhkR2d1YldsdUtIZ3NlU2s3YVR4c1pXNDdLeXRwS1h0cFppaGhXMmxkSVQwOVlsdHBYU2w3ZUQxaFcybGRPM2s5WWx0cFhUdGljbVZoYTMxOWFXWW9lRHg1S1hKbGRIVnliaTB4TzJsbUtIazhlQ2x5WlhSMWNtNGdNVHR5WlhSMWNtNGdNSDA3UW5WbVptVnlMbWx6Ulc1amIyUnBibWM5Wm5WdVkzUnBiMjRnYVhORmJtTnZaR2x1WnlobGJtTnZaR2x1WnlsN2MzZHBkR05vS0ZOMGNtbHVaeWhsYm1OdlpHbHVaeWt1ZEc5TWIzZGxja05oYzJVb0tTbDdZMkZ6WlZ3aWFHVjRYQ0k2WTJGelpWd2lkWFJtT0Z3aU9tTmhjMlZjSW5WMFppMDRYQ0k2WTJGelpWd2lZWE5qYVdsY0lqcGpZWE5sWENKc1lYUnBiakZjSWpwallYTmxYQ0ppYVc1aGNubGNJanBqWVhObFhDSmlZWE5sTmpSY0lqcGpZWE5sWENKMVkzTXlYQ0k2WTJGelpWd2lkV056TFRKY0lqcGpZWE5sWENKMWRHWXhObXhsWENJNlkyRnpaVndpZFhSbUxURTJiR1ZjSWpweVpYUjFjbTRnZEhKMVpUdGtaV1poZFd4ME9uSmxkSFZ5YmlCbVlXeHpaWDE5TzBKMVptWmxjaTVqYjI1allYUTlablZ1WTNScGIyNGdZMjl1WTJGMEtHeHBjM1FzYkdWdVozUm9LWHRwWmlnaGFYTkJjbkpoZVNoc2FYTjBLU2w3ZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnblhDSnNhWE4wWENJZ1lYSm5kVzFsYm5RZ2JYVnpkQ0JpWlNCaGJpQkJjbkpoZVNCdlppQkNkV1ptWlhKekp5bDlhV1lvYkdsemRDNXNaVzVuZEdnOVBUMHdLWHR5WlhSMWNtNGdRblZtWm1WeUxtRnNiRzlqS0RBcGZYWmhjaUJwTzJsbUtHeGxibWQwYUQwOVBYVnVaR1ZtYVc1bFpDbDdiR1Z1WjNSb1BUQTdabTl5S0drOU1EdHBQR3hwYzNRdWJHVnVaM1JvT3lzcmFTbDdiR1Z1WjNSb0t6MXNhWE4wVzJsZExteGxibWQwYUgxOWRtRnlJR0oxWm1abGNqMUNkV1ptWlhJdVlXeHNiMk5WYm5OaFptVW9iR1Z1WjNSb0tUdDJZWElnY0c5elBUQTdabTl5S0drOU1EdHBQR3hwYzNRdWJHVnVaM1JvT3lzcmFTbDdkbUZ5SUdKMVpqMXNhWE4wVzJsZE8ybG1LQ0ZDZFdabVpYSXVhWE5DZFdabVpYSW9ZblZtS1NsN2RHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpZ25YQ0pzYVhOMFhDSWdZWEpuZFcxbGJuUWdiWFZ6ZENCaVpTQmhiaUJCY25KaGVTQnZaaUJDZFdabVpYSnpKeWw5WW5WbUxtTnZjSGtvWW5WbVptVnlMSEJ2Y3lrN2NHOXpLejFpZFdZdWJHVnVaM1JvZlhKbGRIVnliaUJpZFdabVpYSjlPMloxYm1OMGFXOXVJR0o1ZEdWTVpXNW5kR2dvYzNSeWFXNW5MR1Z1WTI5a2FXNW5LWHRwWmloQ2RXWm1aWEl1YVhOQ2RXWm1aWElvYzNSeWFXNW5LU2w3Y21WMGRYSnVJSE4wY21sdVp5NXNaVzVuZEdoOWFXWW9kSGx3Wlc5bUlFRnljbUY1UW5WbVptVnlJVDA5WENKMWJtUmxabWx1WldSY0lpWW1kSGx3Wlc5bUlFRnljbUY1UW5WbVptVnlMbWx6Vm1sbGR6MDlQVndpWm5WdVkzUnBiMjVjSWlZbUtFRnljbUY1UW5WbVptVnlMbWx6Vm1sbGR5aHpkSEpwYm1jcGZIeHpkSEpwYm1jZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVVKMVptWmxjaWtwZTNKbGRIVnliaUJ6ZEhKcGJtY3VZbmwwWlV4bGJtZDBhSDFwWmloMGVYQmxiMllnYzNSeWFXNW5JVDA5WENKemRISnBibWRjSWlsN2MzUnlhVzVuUFZ3aVhDSXJjM1J5YVc1bmZYWmhjaUJzWlc0OWMzUnlhVzVuTG14bGJtZDBhRHRwWmloc1pXNDlQVDB3S1hKbGRIVnliaUF3TzNaaGNpQnNiM2RsY21Wa1EyRnpaVDFtWVd4elpUdG1iM0lvT3pzcGUzTjNhWFJqYUNobGJtTnZaR2x1WnlsN1kyRnpaVndpWVhOamFXbGNJanBqWVhObFhDSnNZWFJwYmpGY0lqcGpZWE5sWENKaWFXNWhjbmxjSWpweVpYUjFjbTRnYkdWdU8yTmhjMlZjSW5WMFpqaGNJanBqWVhObFhDSjFkR1l0T0Z3aU9tTmhjMlVnZFc1a1pXWnBibVZrT25KbGRIVnliaUIxZEdZNFZHOUNlWFJsY3loemRISnBibWNwTG14bGJtZDBhRHRqWVhObFhDSjFZM015WENJNlkyRnpaVndpZFdOekxUSmNJanBqWVhObFhDSjFkR1l4Tm14bFhDSTZZMkZ6WlZ3aWRYUm1MVEUyYkdWY0lqcHlaWFIxY200Z2JHVnVLakk3WTJGelpWd2lhR1Y0WENJNmNtVjBkWEp1SUd4bGJqNCtQakU3WTJGelpWd2lZbUZ6WlRZMFhDSTZjbVYwZFhKdUlHSmhjMlUyTkZSdlFubDBaWE1vYzNSeWFXNW5LUzVzWlc1bmRHZzdaR1ZtWVhWc2REcHBaaWhzYjNkbGNtVmtRMkZ6WlNseVpYUjFjbTRnZFhSbU9GUnZRbmwwWlhNb2MzUnlhVzVuS1M1c1pXNW5kR2c3Wlc1amIyUnBibWM5S0Z3aVhDSXJaVzVqYjJScGJtY3BMblJ2VEc5M1pYSkRZWE5sS0NrN2JHOTNaWEpsWkVOaGMyVTlkSEoxWlgxOWZVSjFabVpsY2k1aWVYUmxUR1Z1WjNSb1BXSjVkR1ZNWlc1bmRHZzdablZ1WTNScGIyNGdjMnh2ZDFSdlUzUnlhVzVuS0dWdVkyOWthVzVuTEhOMFlYSjBMR1Z1WkNsN2RtRnlJR3h2ZDJWeVpXUkRZWE5sUFdaaGJITmxPMmxtS0hOMFlYSjBQVDA5ZFc1a1pXWnBibVZrZkh4emRHRnlkRHd3S1h0emRHRnlkRDB3ZldsbUtITjBZWEowUG5Sb2FYTXViR1Z1WjNSb0tYdHlaWFIxY201Y0lsd2lmV2xtS0dWdVpEMDlQWFZ1WkdWbWFXNWxaSHg4Wlc1a1BuUm9hWE11YkdWdVozUm9LWHRsYm1ROWRHaHBjeTVzWlc1bmRHaDlhV1lvWlc1a1BEMHdLWHR5WlhSMWNtNWNJbHdpZldWdVpENCtQajB3TzNOMFlYSjBQajQrUFRBN2FXWW9aVzVrUEQxemRHRnlkQ2w3Y21WMGRYSnVYQ0pjSW4xcFppZ2haVzVqYjJScGJtY3BaVzVqYjJScGJtYzlYQ0oxZEdZNFhDSTdkMmhwYkdVb2RISjFaU2w3YzNkcGRHTm9LR1Z1WTI5a2FXNW5LWHRqWVhObFhDSm9aWGhjSWpweVpYUjFjbTRnYUdWNFUyeHBZMlVvZEdocGN5eHpkR0Z5ZEN4bGJtUXBPMk5oYzJWY0luVjBaamhjSWpwallYTmxYQ0oxZEdZdE9Gd2lPbkpsZEhWeWJpQjFkR1k0VTJ4cFkyVW9kR2hwY3l4emRHRnlkQ3hsYm1RcE8yTmhjMlZjSW1GelkybHBYQ0k2Y21WMGRYSnVJR0Z6WTJscFUyeHBZMlVvZEdocGN5eHpkR0Z5ZEN4bGJtUXBPMk5oYzJWY0lteGhkR2x1TVZ3aU9tTmhjMlZjSW1KcGJtRnllVndpT25KbGRIVnliaUJzWVhScGJqRlRiR2xqWlNoMGFHbHpMSE4wWVhKMExHVnVaQ2s3WTJGelpWd2lZbUZ6WlRZMFhDSTZjbVYwZFhKdUlHSmhjMlUyTkZOc2FXTmxLSFJvYVhNc2MzUmhjblFzWlc1a0tUdGpZWE5sWENKMVkzTXlYQ0k2WTJGelpWd2lkV056TFRKY0lqcGpZWE5sWENKMWRHWXhObXhsWENJNlkyRnpaVndpZFhSbUxURTJiR1ZjSWpweVpYUjFjbTRnZFhSbU1UWnNaVk5zYVdObEtIUm9hWE1zYzNSaGNuUXNaVzVrS1R0a1pXWmhkV3gwT21sbUtHeHZkMlZ5WldSRFlYTmxLWFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKVmJtdHViM2R1SUdWdVkyOWthVzVuT2lCY0lpdGxibU52WkdsdVp5azdaVzVqYjJScGJtYzlLR1Z1WTI5a2FXNW5LMXdpWENJcExuUnZURzkzWlhKRFlYTmxLQ2s3Ykc5M1pYSmxaRU5oYzJVOWRISjFaWDE5ZlVKMVptWmxjaTV3Y205MGIzUjVjR1V1WDJselFuVm1abVZ5UFhSeWRXVTdablZ1WTNScGIyNGdjM2RoY0NoaUxHNHNiU2w3ZG1GeUlHazlZbHR1WFR0aVcyNWRQV0piYlYwN1lsdHRYVDFwZlVKMVptWmxjaTV3Y205MGIzUjVjR1V1YzNkaGNERTJQV1oxYm1OMGFXOXVJSE4zWVhBeE5pZ3BlM1poY2lCc1pXNDlkR2hwY3k1c1pXNW5kR2c3YVdZb2JHVnVKVEloUFQwd0tYdDBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWhjSWtKMVptWmxjaUJ6YVhwbElHMTFjM1FnWW1VZ1lTQnRkV3gwYVhCc1pTQnZaaUF4TmkxaWFYUnpYQ0lwZldadmNpaDJZWElnYVQwd08yazhiR1Z1TzJrclBUSXBlM04zWVhBb2RHaHBjeXhwTEdrck1TbDljbVYwZFhKdUlIUm9hWE45TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1YzNkaGNETXlQV1oxYm1OMGFXOXVJSE4zWVhBek1pZ3BlM1poY2lCc1pXNDlkR2hwY3k1c1pXNW5kR2c3YVdZb2JHVnVKVFFoUFQwd0tYdDBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWhjSWtKMVptWmxjaUJ6YVhwbElHMTFjM1FnWW1VZ1lTQnRkV3gwYVhCc1pTQnZaaUF6TWkxaWFYUnpYQ0lwZldadmNpaDJZWElnYVQwd08yazhiR1Z1TzJrclBUUXBlM04zWVhBb2RHaHBjeXhwTEdrck15azdjM2RoY0NoMGFHbHpMR2tyTVN4cEt6SXBmWEpsZEhWeWJpQjBhR2x6ZlR0Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5OM1lYQTJORDFtZFc1amRHbHZiaUJ6ZDJGd05qUW9LWHQyWVhJZ2JHVnVQWFJvYVhNdWJHVnVaM1JvTzJsbUtHeGxiaVU0SVQwOU1DbDdkR2h5YjNjZ2JtVjNJRkpoYm1kbFJYSnliM0lvWENKQ2RXWm1aWElnYzJsNlpTQnRkWE4wSUdKbElHRWdiWFZzZEdsd2JHVWdiMllnTmpRdFltbDBjMXdpS1gxbWIzSW9kbUZ5SUdrOU1EdHBQR3hsYmp0cEt6MDRLWHR6ZDJGd0tIUm9hWE1zYVN4cEt6Y3BPM04zWVhBb2RHaHBjeXhwS3pFc2FTczJLVHR6ZDJGd0tIUm9hWE1zYVNzeUxHa3JOU2s3YzNkaGNDaDBhR2x6TEdrck15eHBLelFwZlhKbGRIVnliaUIwYUdsemZUdENkV1ptWlhJdWNISnZkRzkwZVhCbExuUnZVM1J5YVc1blBXWjFibU4wYVc5dUlIUnZVM1J5YVc1bktDbDdkbUZ5SUd4bGJtZDBhRDEwYUdsekxteGxibWQwYUh3d08ybG1LR3hsYm1kMGFEMDlQVEFwY21WMGRYSnVYQ0pjSWp0cFppaGhjbWQxYldWdWRITXViR1Z1WjNSb1BUMDlNQ2x5WlhSMWNtNGdkWFJtT0ZOc2FXTmxLSFJvYVhNc01DeHNaVzVuZEdncE8zSmxkSFZ5YmlCemJHOTNWRzlUZEhKcGJtY3VZWEJ3Ykhrb2RHaHBjeXhoY21kMWJXVnVkSE1wZlR0Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG1WeGRXRnNjejFtZFc1amRHbHZiaUJsY1hWaGJITW9ZaWw3YVdZb0lVSjFabVpsY2k1cGMwSjFabVpsY2loaUtTbDBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUVhKbmRXMWxiblFnYlhWemRDQmlaU0JoSUVKMVptWmxjbHdpS1R0cFppaDBhR2x6UFQwOVlpbHlaWFIxY200Z2RISjFaVHR5WlhSMWNtNGdRblZtWm1WeUxtTnZiWEJoY21Vb2RHaHBjeXhpS1QwOVBUQjlPMEoxWm1abGNpNXdjbTkwYjNSNWNHVXVhVzV6Y0dWamREMW1kVzVqZEdsdmJpQnBibk53WldOMEtDbDdkbUZ5SUhOMGNqMWNJbHdpTzNaaGNpQnRZWGc5Wlhod2IzSjBjeTVKVGxOUVJVTlVYMDFCV0Y5Q1dWUkZVenRwWmloMGFHbHpMbXhsYm1kMGFENHdLWHR6ZEhJOWRHaHBjeTUwYjFOMGNtbHVaeWhjSW1obGVGd2lMREFzYldGNEtTNXRZWFJqYUNndkxuc3lmUzluS1M1cWIybHVLRndpSUZ3aUtUdHBaaWgwYUdsekxteGxibWQwYUQ1dFlYZ3BjM1J5S3oxY0lpQXVMaTRnWENKOWNtVjBkWEp1WENJOFFuVm1abVZ5SUZ3aUszTjBjaXRjSWo1Y0luMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNWpiMjF3WVhKbFBXWjFibU4wYVc5dUlHTnZiWEJoY21Vb2RHRnlaMlYwTEhOMFlYSjBMR1Z1WkN4MGFHbHpVM1JoY25Rc2RHaHBjMFZ1WkNsN2FXWW9JVUoxWm1abGNpNXBjMEoxWm1abGNpaDBZWEpuWlhRcEtYdDBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUVhKbmRXMWxiblFnYlhWemRDQmlaU0JoSUVKMVptWmxjbHdpS1gxcFppaHpkR0Z5ZEQwOVBYVnVaR1ZtYVc1bFpDbDdjM1JoY25ROU1IMXBaaWhsYm1ROVBUMTFibVJsWm1sdVpXUXBlMlZ1WkQxMFlYSm5aWFEvZEdGeVoyVjBMbXhsYm1kMGFEb3dmV2xtS0hSb2FYTlRkR0Z5ZEQwOVBYVnVaR1ZtYVc1bFpDbDdkR2hwYzFOMFlYSjBQVEI5YVdZb2RHaHBjMFZ1WkQwOVBYVnVaR1ZtYVc1bFpDbDdkR2hwYzBWdVpEMTBhR2x6TG14bGJtZDBhSDFwWmloemRHRnlkRHd3Zkh4bGJtUStkR0Z5WjJWMExteGxibWQwYUh4OGRHaHBjMU4wWVhKMFBEQjhmSFJvYVhORmJtUStkR2hwY3k1c1pXNW5kR2dwZTNSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtGd2liM1YwSUc5bUlISmhibWRsSUdsdVpHVjRYQ0lwZldsbUtIUm9hWE5UZEdGeWRENDlkR2hwYzBWdVpDWW1jM1JoY25RK1BXVnVaQ2w3Y21WMGRYSnVJREI5YVdZb2RHaHBjMU4wWVhKMFBqMTBhR2x6Ulc1a0tYdHlaWFIxY200dE1YMXBaaWh6ZEdGeWRENDlaVzVrS1h0eVpYUjFjbTRnTVgxemRHRnlkRDQrUGowd08yVnVaRDQrUGowd08zUm9hWE5UZEdGeWRENCtQajB3TzNSb2FYTkZibVErUGo0OU1EdHBaaWgwYUdselBUMDlkR0Z5WjJWMEtYSmxkSFZ5YmlBd08zWmhjaUI0UFhSb2FYTkZibVF0ZEdocGMxTjBZWEowTzNaaGNpQjVQV1Z1WkMxemRHRnlkRHQyWVhJZ2JHVnVQVTFoZEdndWJXbHVLSGdzZVNrN2RtRnlJSFJvYVhORGIzQjVQWFJvYVhNdWMyeHBZMlVvZEdocGMxTjBZWEowTEhSb2FYTkZibVFwTzNaaGNpQjBZWEpuWlhSRGIzQjVQWFJoY21kbGRDNXpiR2xqWlNoemRHRnlkQ3hsYm1RcE8yWnZjaWgyWVhJZ2FUMHdPMms4YkdWdU95c3JhU2w3YVdZb2RHaHBjME52Y0hsYmFWMGhQVDEwWVhKblpYUkRiM0I1VzJsZEtYdDRQWFJvYVhORGIzQjVXMmxkTzNrOWRHRnlaMlYwUTI5d2VWdHBYVHRpY21WaGEzMTlhV1lvZUR4NUtYSmxkSFZ5YmkweE8ybG1LSGs4ZUNseVpYUjFjbTRnTVR0eVpYUjFjbTRnTUgwN1puVnVZM1JwYjI0Z1ltbGthWEpsWTNScGIyNWhiRWx1WkdWNFQyWW9ZblZtWm1WeUxIWmhiQ3hpZVhSbFQyWm1jMlYwTEdWdVkyOWthVzVuTEdScGNpbDdhV1lvWW5WbVptVnlMbXhsYm1kMGFEMDlQVEFwY21WMGRYSnVMVEU3YVdZb2RIbHdaVzltSUdKNWRHVlBabVp6WlhROVBUMWNJbk4wY21sdVoxd2lLWHRsYm1OdlpHbHVaejFpZVhSbFQyWm1jMlYwTzJKNWRHVlBabVp6WlhROU1IMWxiSE5sSUdsbUtHSjVkR1ZQWm1aelpYUStNakUwTnpRNE16WTBOeWw3WW5sMFpVOW1abk5sZEQweU1UUTNORGd6TmpRM2ZXVnNjMlVnYVdZb1lubDBaVTltWm5ObGREd3RNakUwTnpRNE16WTBPQ2w3WW5sMFpVOW1abk5sZEQwdE1qRTBOelE0TXpZME9IMWllWFJsVDJabWMyVjBQU3RpZVhSbFQyWm1jMlYwTzJsbUtHbHpUbUZPS0dKNWRHVlBabVp6WlhRcEtYdGllWFJsVDJabWMyVjBQV1JwY2o4d09tSjFabVpsY2k1c1pXNW5kR2d0TVgxcFppaGllWFJsVDJabWMyVjBQREFwWW5sMFpVOW1abk5sZEQxaWRXWm1aWEl1YkdWdVozUm9LMko1ZEdWUFptWnpaWFE3YVdZb1lubDBaVTltWm5ObGRENDlZblZtWm1WeUxteGxibWQwYUNsN2FXWW9aR2x5S1hKbGRIVnliaTB4TzJWc2MyVWdZbmwwWlU5bVpuTmxkRDFpZFdabVpYSXViR1Z1WjNSb0xURjlaV3h6WlNCcFppaGllWFJsVDJabWMyVjBQREFwZTJsbUtHUnBjaWxpZVhSbFQyWm1jMlYwUFRBN1pXeHpaU0J5WlhSMWNtNHRNWDFwWmloMGVYQmxiMllnZG1Gc1BUMDlYQ0p6ZEhKcGJtZGNJaWw3ZG1Gc1BVSjFabVpsY2k1bWNtOXRLSFpoYkN4bGJtTnZaR2x1WnlsOWFXWW9RblZtWm1WeUxtbHpRblZtWm1WeUtIWmhiQ2twZTJsbUtIWmhiQzVzWlc1bmRHZzlQVDB3S1h0eVpYUjFjbTR0TVgxeVpYUjFjbTRnWVhKeVlYbEpibVJsZUU5bUtHSjFabVpsY2l4MllXd3NZbmwwWlU5bVpuTmxkQ3hsYm1OdlpHbHVaeXhrYVhJcGZXVnNjMlVnYVdZb2RIbHdaVzltSUhaaGJEMDlQVndpYm5WdFltVnlYQ0lwZTNaaGJEMTJZV3dtTWpVMU8ybG1LRUoxWm1abGNpNVVXVkJGUkY5QlVsSkJXVjlUVlZCUVQxSlVKaVowZVhCbGIyWWdWV2x1ZERoQmNuSmhlUzV3Y205MGIzUjVjR1V1YVc1a1pYaFBaajA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdhV1lvWkdseUtYdHlaWFIxY200Z1ZXbHVkRGhCY25KaGVTNXdjbTkwYjNSNWNHVXVhVzVrWlhoUFppNWpZV3hzS0dKMVptWmxjaXgyWVd3c1lubDBaVTltWm5ObGRDbDlaV3h6Wlh0eVpYUjFjbTRnVldsdWREaEJjbkpoZVM1d2NtOTBiM1I1Y0dVdWJHRnpkRWx1WkdWNFQyWXVZMkZzYkNoaWRXWm1aWElzZG1Gc0xHSjVkR1ZQWm1aelpYUXBmWDF5WlhSMWNtNGdZWEp5WVhsSmJtUmxlRTltS0dKMVptWmxjaXhiZG1Gc1hTeGllWFJsVDJabWMyVjBMR1Z1WTI5a2FXNW5MR1JwY2lsOWRHaHliM2NnYm1WM0lGUjVjR1ZGY25KdmNpaGNJblpoYkNCdGRYTjBJR0psSUhOMGNtbHVaeXdnYm5WdFltVnlJRzl5SUVKMVptWmxjbHdpS1gxbWRXNWpkR2x2YmlCaGNuSmhlVWx1WkdWNFQyWW9ZWEp5TEhaaGJDeGllWFJsVDJabWMyVjBMR1Z1WTI5a2FXNW5MR1JwY2lsN2RtRnlJR2x1WkdWNFUybDZaVDB4TzNaaGNpQmhjbkpNWlc1bmRHZzlZWEp5TG14bGJtZDBhRHQyWVhJZ2RtRnNUR1Z1WjNSb1BYWmhiQzVzWlc1bmRHZzdhV1lvWlc1amIyUnBibWNoUFQxMWJtUmxabWx1WldRcGUyVnVZMjlrYVc1blBWTjBjbWx1WnlobGJtTnZaR2x1WnlrdWRHOU1iM2RsY2tOaGMyVW9LVHRwWmlobGJtTnZaR2x1WnowOVBWd2lkV056TWx3aWZIeGxibU52WkdsdVp6MDlQVndpZFdOekxUSmNJbng4Wlc1amIyUnBibWM5UFQxY0luVjBaakUyYkdWY0lueDhaVzVqYjJScGJtYzlQVDFjSW5WMFppMHhObXhsWENJcGUybG1LR0Z5Y2k1c1pXNW5kR2c4TW54OGRtRnNMbXhsYm1kMGFEd3lLWHR5WlhSMWNtNHRNWDFwYm1SbGVGTnBlbVU5TWp0aGNuSk1aVzVuZEdndlBUSTdkbUZzVEdWdVozUm9MejB5TzJKNWRHVlBabVp6WlhRdlBUSjlmV1oxYm1OMGFXOXVJSEpsWVdRb1luVm1MR2twZTJsbUtHbHVaR1Y0VTJsNlpUMDlQVEVwZTNKbGRIVnliaUJpZFdaYmFWMTlaV3h6Wlh0eVpYUjFjbTRnWW5WbUxuSmxZV1JWU1c1ME1UWkNSU2hwS21sdVpHVjRVMmw2WlNsOWZYWmhjaUJwTzJsbUtHUnBjaWw3ZG1GeUlHWnZkVzVrU1c1a1pYZzlMVEU3Wm05eUtHazlZbmwwWlU5bVpuTmxkRHRwUEdGeWNreGxibWQwYUR0cEt5c3BlMmxtS0hKbFlXUW9ZWEp5TEdrcFBUMDljbVZoWkNoMllXd3NabTkxYm1SSmJtUmxlRDA5UFMweFB6QTZhUzFtYjNWdVpFbHVaR1Y0S1NsN2FXWW9abTkxYm1SSmJtUmxlRDA5UFMweEtXWnZkVzVrU1c1a1pYZzlhVHRwWmlocExXWnZkVzVrU1c1a1pYZ3JNVDA5UFhaaGJFeGxibWQwYUNseVpYUjFjbTRnWm05MWJtUkpibVJsZUNwcGJtUmxlRk5wZW1WOVpXeHpaWHRwWmlobWIzVnVaRWx1WkdWNElUMDlMVEVwYVMwOWFTMW1iM1Z1WkVsdVpHVjRPMlp2ZFc1a1NXNWtaWGc5TFRGOWZYMWxiSE5sZTJsbUtHSjVkR1ZQWm1aelpYUXJkbUZzVEdWdVozUm9QbUZ5Y2t4bGJtZDBhQ2xpZVhSbFQyWm1jMlYwUFdGeWNreGxibWQwYUMxMllXeE1aVzVuZEdnN1ptOXlLR2s5WW5sMFpVOW1abk5sZER0cFBqMHdPMmt0TFNsN2RtRnlJR1p2ZFc1a1BYUnlkV1U3Wm05eUtIWmhjaUJxUFRBN2FqeDJZV3hNWlc1bmRHZzdhaXNyS1h0cFppaHlaV0ZrS0dGeWNpeHBLMm9wSVQwOWNtVmhaQ2gyWVd3c2Fpa3BlMlp2ZFc1a1BXWmhiSE5sTzJKeVpXRnJmWDFwWmlobWIzVnVaQ2x5WlhSMWNtNGdhWDE5Y21WMGRYSnVMVEY5UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzVwYm1Oc2RXUmxjejFtZFc1amRHbHZiaUJwYm1Oc2RXUmxjeWgyWVd3c1lubDBaVTltWm5ObGRDeGxibU52WkdsdVp5bDdjbVYwZFhKdUlIUm9hWE11YVc1a1pYaFBaaWgyWVd3c1lubDBaVTltWm5ObGRDeGxibU52WkdsdVp5a2hQVDB0TVgwN1FuVm1abVZ5TG5CeWIzUnZkSGx3WlM1cGJtUmxlRTltUFdaMWJtTjBhVzl1SUdsdVpHVjRUMllvZG1Gc0xHSjVkR1ZQWm1aelpYUXNaVzVqYjJScGJtY3BlM0psZEhWeWJpQmlhV1JwY21WamRHbHZibUZzU1c1a1pYaFBaaWgwYUdsekxIWmhiQ3hpZVhSbFQyWm1jMlYwTEdWdVkyOWthVzVuTEhSeWRXVXBmVHRDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbXhoYzNSSmJtUmxlRTltUFdaMWJtTjBhVzl1SUd4aGMzUkpibVJsZUU5bUtIWmhiQ3hpZVhSbFQyWm1jMlYwTEdWdVkyOWthVzVuS1h0eVpYUjFjbTRnWW1sa2FYSmxZM1JwYjI1aGJFbHVaR1Y0VDJZb2RHaHBjeXgyWVd3c1lubDBaVTltWm5ObGRDeGxibU52WkdsdVp5eG1ZV3h6WlNsOU8yWjFibU4wYVc5dUlHaGxlRmR5YVhSbEtHSjFaaXh6ZEhKcGJtY3NiMlptYzJWMExHeGxibWQwYUNsN2IyWm1jMlYwUFU1MWJXSmxjaWh2Wm1aelpYUXBmSHd3TzNaaGNpQnlaVzFoYVc1cGJtYzlZblZtTG14bGJtZDBhQzF2Wm1aelpYUTdhV1lvSVd4bGJtZDBhQ2w3YkdWdVozUm9QWEpsYldGcGJtbHVaMzFsYkhObGUyeGxibWQwYUQxT2RXMWlaWElvYkdWdVozUm9LVHRwWmloc1pXNW5kR2crY21WdFlXbHVhVzVuS1h0c1pXNW5kR2c5Y21WdFlXbHVhVzVuZlgxMllYSWdjM1J5VEdWdVBYTjBjbWx1Wnk1c1pXNW5kR2c3YVdZb2MzUnlUR1Z1SlRJaFBUMHdLWFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvWENKSmJuWmhiR2xrSUdobGVDQnpkSEpwYm1kY0lpazdhV1lvYkdWdVozUm9Qbk4wY2t4bGJpOHlLWHRzWlc1bmRHZzljM1J5VEdWdUx6SjlabTl5S0haaGNpQnBQVEE3YVR4c1pXNW5kR2c3S3l0cEtYdDJZWElnY0dGeWMyVmtQWEJoY25ObFNXNTBLSE4wY21sdVp5NXpkV0p6ZEhJb2FTb3lMRElwTERFMktUdHBaaWhwYzA1aFRpaHdZWEp6WldRcEtYSmxkSFZ5YmlCcE8ySjFabHR2Wm1aelpYUXJhVjA5Y0dGeWMyVmtmWEpsZEhWeWJpQnBmV1oxYm1OMGFXOXVJSFYwWmpoWGNtbDBaU2hpZFdZc2MzUnlhVzVuTEc5bVpuTmxkQ3hzWlc1bmRHZ3BlM0psZEhWeWJpQmliR2wwUW5WbVptVnlLSFYwWmpoVWIwSjVkR1Z6S0hOMGNtbHVaeXhpZFdZdWJHVnVaM1JvTFc5bVpuTmxkQ2tzWW5WbUxHOW1abk5sZEN4c1pXNW5kR2dwZldaMWJtTjBhVzl1SUdGelkybHBWM0pwZEdVb1luVm1MSE4wY21sdVp5eHZabVp6WlhRc2JHVnVaM1JvS1h0eVpYUjFjbTRnWW14cGRFSjFabVpsY2loaGMyTnBhVlJ2UW5sMFpYTW9jM1J5YVc1bktTeGlkV1lzYjJabWMyVjBMR3hsYm1kMGFDbDlablZ1WTNScGIyNGdiR0YwYVc0eFYzSnBkR1VvWW5WbUxITjBjbWx1Wnl4dlptWnpaWFFzYkdWdVozUm9LWHR5WlhSMWNtNGdZWE5qYVdsWGNtbDBaU2hpZFdZc2MzUnlhVzVuTEc5bVpuTmxkQ3hzWlc1bmRHZ3BmV1oxYm1OMGFXOXVJR0poYzJVMk5GZHlhWFJsS0dKMVppeHpkSEpwYm1jc2IyWm1jMlYwTEd4bGJtZDBhQ2w3Y21WMGRYSnVJR0pzYVhSQ2RXWm1aWElvWW1GelpUWTBWRzlDZVhSbGN5aHpkSEpwYm1jcExHSjFaaXh2Wm1aelpYUXNiR1Z1WjNSb0tYMW1kVzVqZEdsdmJpQjFZM015VjNKcGRHVW9ZblZtTEhOMGNtbHVaeXh2Wm1aelpYUXNiR1Z1WjNSb0tYdHlaWFIxY200Z1lteHBkRUoxWm1abGNpaDFkR1l4Tm14bFZHOUNlWFJsY3loemRISnBibWNzWW5WbUxteGxibWQwYUMxdlptWnpaWFFwTEdKMVppeHZabVp6WlhRc2JHVnVaM1JvS1gxQ2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5keWFYUmxQV1oxYm1OMGFXOXVJSGR5YVhSbEtITjBjbWx1Wnl4dlptWnpaWFFzYkdWdVozUm9MR1Z1WTI5a2FXNW5LWHRwWmlodlptWnpaWFE5UFQxMWJtUmxabWx1WldRcGUyVnVZMjlrYVc1blBWd2lkWFJtT0Z3aU8yeGxibWQwYUQxMGFHbHpMbXhsYm1kMGFEdHZabVp6WlhROU1IMWxiSE5sSUdsbUtHeGxibWQwYUQwOVBYVnVaR1ZtYVc1bFpDWW1kSGx3Wlc5bUlHOW1abk5sZEQwOVBWd2ljM1J5YVc1blhDSXBlMlZ1WTI5a2FXNW5QVzltWm5ObGREdHNaVzVuZEdnOWRHaHBjeTVzWlc1bmRHZzdiMlptYzJWMFBUQjlaV3h6WlNCcFppaHBjMFpwYm1sMFpTaHZabVp6WlhRcEtYdHZabVp6WlhROWIyWm1jMlYwZkRBN2FXWW9hWE5HYVc1cGRHVW9iR1Z1WjNSb0tTbDdiR1Z1WjNSb1BXeGxibWQwYUh3d08ybG1LR1Z1WTI5a2FXNW5QVDA5ZFc1a1pXWnBibVZrS1dWdVkyOWthVzVuUFZ3aWRYUm1PRndpZldWc2MyVjdaVzVqYjJScGJtYzliR1Z1WjNSb08yeGxibWQwYUQxMWJtUmxabWx1WldSOWZXVnNjMlY3ZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpUW5WbVptVnlMbmR5YVhSbEtITjBjbWx1Wnl3Z1pXNWpiMlJwYm1jc0lHOW1abk5sZEZzc0lHeGxibWQwYUYwcElHbHpJRzV2SUd4dmJtZGxjaUJ6ZFhCd2IzSjBaV1JjSWlsOWRtRnlJSEpsYldGcGJtbHVaejEwYUdsekxteGxibWQwYUMxdlptWnpaWFE3YVdZb2JHVnVaM1JvUFQwOWRXNWtaV1pwYm1Wa2ZIeHNaVzVuZEdnK2NtVnRZV2x1YVc1bktXeGxibWQwYUQxeVpXMWhhVzVwYm1jN2FXWW9jM1J5YVc1bkxteGxibWQwYUQ0d0ppWW9iR1Z1WjNSb1BEQjhmRzltWm5ObGREd3dLWHg4YjJabWMyVjBQblJvYVhNdWJHVnVaM1JvS1h0MGFISnZkeUJ1WlhjZ1VtRnVaMlZGY25KdmNpaGNJa0YwZEdWdGNIUWdkRzhnZDNKcGRHVWdiM1YwYzJsa1pTQmlkV1ptWlhJZ1ltOTFibVJ6WENJcGZXbG1LQ0ZsYm1OdlpHbHVaeWxsYm1OdlpHbHVaejFjSW5WMFpqaGNJanQyWVhJZ2JHOTNaWEpsWkVOaGMyVTlabUZzYzJVN1ptOXlLRHM3S1h0emQybDBZMmdvWlc1amIyUnBibWNwZTJOaGMyVmNJbWhsZUZ3aU9uSmxkSFZ5YmlCb1pYaFhjbWwwWlNoMGFHbHpMSE4wY21sdVp5eHZabVp6WlhRc2JHVnVaM1JvS1R0allYTmxYQ0oxZEdZNFhDSTZZMkZ6WlZ3aWRYUm1MVGhjSWpweVpYUjFjbTRnZFhSbU9GZHlhWFJsS0hSb2FYTXNjM1J5YVc1bkxHOW1abk5sZEN4c1pXNW5kR2dwTzJOaGMyVmNJbUZ6WTJscFhDSTZjbVYwZFhKdUlHRnpZMmxwVjNKcGRHVW9kR2hwY3l4emRISnBibWNzYjJabWMyVjBMR3hsYm1kMGFDazdZMkZ6WlZ3aWJHRjBhVzR4WENJNlkyRnpaVndpWW1sdVlYSjVYQ0k2Y21WMGRYSnVJR3hoZEdsdU1WZHlhWFJsS0hSb2FYTXNjM1J5YVc1bkxHOW1abk5sZEN4c1pXNW5kR2dwTzJOaGMyVmNJbUpoYzJVMk5Gd2lPbkpsZEhWeWJpQmlZWE5sTmpSWGNtbDBaU2gwYUdsekxITjBjbWx1Wnl4dlptWnpaWFFzYkdWdVozUm9LVHRqWVhObFhDSjFZM015WENJNlkyRnpaVndpZFdOekxUSmNJanBqWVhObFhDSjFkR1l4Tm14bFhDSTZZMkZ6WlZ3aWRYUm1MVEUyYkdWY0lqcHlaWFIxY200Z2RXTnpNbGR5YVhSbEtIUm9hWE1zYzNSeWFXNW5MRzltWm5ObGRDeHNaVzVuZEdncE8yUmxabUYxYkhRNmFXWW9iRzkzWlhKbFpFTmhjMlVwZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0lsVnVhMjV2ZDI0Z1pXNWpiMlJwYm1jNklGd2lLMlZ1WTI5a2FXNW5LVHRsYm1OdlpHbHVaejBvWENKY0lpdGxibU52WkdsdVp5a3VkRzlNYjNkbGNrTmhjMlVvS1R0c2IzZGxjbVZrUTJGelpUMTBjblZsZlgxOU8wSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWRHOUtVMDlPUFdaMWJtTjBhVzl1SUhSdlNsTlBUaWdwZTNKbGRIVnlibnQwZVhCbE9sd2lRblZtWm1WeVhDSXNaR0YwWVRwQmNuSmhlUzV3Y205MGIzUjVjR1V1YzJ4cFkyVXVZMkZzYkNoMGFHbHpMbDloY25KOGZIUm9hWE1zTUNsOWZUdG1kVzVqZEdsdmJpQmlZWE5sTmpSVGJHbGpaU2hpZFdZc2MzUmhjblFzWlc1a0tYdHBaaWh6ZEdGeWREMDlQVEFtSm1WdVpEMDlQV0oxWmk1c1pXNW5kR2dwZTNKbGRIVnliaUJpWVhObE5qUXVabkp2YlVKNWRHVkJjbkpoZVNoaWRXWXBmV1ZzYzJWN2NtVjBkWEp1SUdKaGMyVTJOQzVtY205dFFubDBaVUZ5Y21GNUtHSjFaaTV6YkdsalpTaHpkR0Z5ZEN4bGJtUXBLWDE5Wm5WdVkzUnBiMjRnZFhSbU9GTnNhV05sS0dKMVppeHpkR0Z5ZEN4bGJtUXBlMlZ1WkQxTllYUm9MbTFwYmloaWRXWXViR1Z1WjNSb0xHVnVaQ2s3ZG1GeUlISmxjejFiWFR0MllYSWdhVDF6ZEdGeWREdDNhR2xzWlNocFBHVnVaQ2w3ZG1GeUlHWnBjbk4wUW5sMFpUMWlkV1piYVYwN2RtRnlJR052WkdWUWIybHVkRDF1ZFd4c08zWmhjaUJpZVhSbGMxQmxjbE5sY1hWbGJtTmxQV1pwY25OMFFubDBaVDR5TXprL05EcG1hWEp6ZEVKNWRHVStNakl6UHpNNlptbHljM1JDZVhSbFBqRTVNVDh5T2pFN2FXWW9hU3RpZVhSbGMxQmxjbE5sY1hWbGJtTmxQRDFsYm1RcGUzWmhjaUJ6WldOdmJtUkNlWFJsTEhSb2FYSmtRbmwwWlN4bWIzVnlkR2hDZVhSbExIUmxiWEJEYjJSbFVHOXBiblE3YzNkcGRHTm9LR0o1ZEdWelVHVnlVMlZ4ZFdWdVkyVXBlMk5oYzJVZ01UcHBaaWhtYVhKemRFSjVkR1U4TVRJNEtYdGpiMlJsVUc5cGJuUTlabWx5YzNSQ2VYUmxmV0p5WldGck8yTmhjMlVnTWpwelpXTnZibVJDZVhSbFBXSjFabHRwS3pGZE8ybG1LQ2h6WldOdmJtUkNlWFJsSmpFNU1pazlQVDB4TWpncGUzUmxiWEJEYjJSbFVHOXBiblE5S0dacGNuTjBRbmwwWlNZek1TazhQRFo4YzJWamIyNWtRbmwwWlNZMk16dHBaaWgwWlcxd1EyOWtaVkJ2YVc1MFBqRXlOeWw3WTI5a1pWQnZhVzUwUFhSbGJYQkRiMlJsVUc5cGJuUjlmV0p5WldGck8yTmhjMlVnTXpwelpXTnZibVJDZVhSbFBXSjFabHRwS3pGZE8zUm9hWEprUW5sMFpUMWlkV1piYVNzeVhUdHBaaWdvYzJWamIyNWtRbmwwWlNZeE9USXBQVDA5TVRJNEppWW9kR2hwY21SQ2VYUmxKakU1TWlrOVBUMHhNamdwZTNSbGJYQkRiMlJsVUc5cGJuUTlLR1pwY25OMFFubDBaU1l4TlNrOFBERXlmQ2h6WldOdmJtUkNlWFJsSmpZektUdzhObngwYUdseVpFSjVkR1VtTmpNN2FXWW9kR1Z0Y0VOdlpHVlFiMmx1ZEQ0eU1EUTNKaVlvZEdWdGNFTnZaR1ZRYjJsdWREdzFOVEk1Tm54OGRHVnRjRU52WkdWUWIybHVkRDQxTnpNME15a3BlMk52WkdWUWIybHVkRDEwWlcxd1EyOWtaVkJ2YVc1MGZYMWljbVZoYXp0allYTmxJRFE2YzJWamIyNWtRbmwwWlQxaWRXWmJhU3N4WFR0MGFHbHlaRUo1ZEdVOVluVm1XMmtyTWwwN1ptOTFjblJvUW5sMFpUMWlkV1piYVNzelhUdHBaaWdvYzJWamIyNWtRbmwwWlNZeE9USXBQVDA5TVRJNEppWW9kR2hwY21SQ2VYUmxKakU1TWlrOVBUMHhNamdtSmlobWIzVnlkR2hDZVhSbEpqRTVNaWs5UFQweE1qZ3BlM1JsYlhCRGIyUmxVRzlwYm5ROUtHWnBjbk4wUW5sMFpTWXhOU2s4UERFNGZDaHpaV052Ym1SQ2VYUmxKall6S1R3OE1USjhLSFJvYVhKa1FubDBaU1kyTXlrOFBEWjhabTkxY25Sb1FubDBaU1kyTXp0cFppaDBaVzF3UTI5a1pWQnZhVzUwUGpZMU5UTTFKaVowWlcxd1EyOWtaVkJ2YVc1MFBERXhNVFF4TVRJcGUyTnZaR1ZRYjJsdWREMTBaVzF3UTI5a1pWQnZhVzUwZlgxOWZXbG1LR052WkdWUWIybHVkRDA5UFc1MWJHd3BlMk52WkdWUWIybHVkRDAyTlRVek16dGllWFJsYzFCbGNsTmxjWFZsYm1ObFBURjlaV3h6WlNCcFppaGpiMlJsVUc5cGJuUStOalUxTXpVcGUyTnZaR1ZRYjJsdWRDMDlOalUxTXpZN2NtVnpMbkIxYzJnb1kyOWtaVkJ2YVc1MFBqNCtNVEFtTVRBeU0zdzFOVEk1TmlrN1kyOWtaVkJ2YVc1MFBUVTJNekl3ZkdOdlpHVlFiMmx1ZENZeE1ESXpmWEpsY3k1d2RYTm9LR052WkdWUWIybHVkQ2s3YVNzOVlubDBaWE5RWlhKVFpYRjFaVzVqWlgxeVpYUjFjbTRnWkdWamIyUmxRMjlrWlZCdmFXNTBjMEZ5Y21GNUtISmxjeWw5ZG1GeUlFMUJXRjlCVWtkVlRVVk9WRk5mVEVWT1IxUklQVFF3T1RZN1puVnVZM1JwYjI0Z1pHVmpiMlJsUTI5a1pWQnZhVzUwYzBGeWNtRjVLR052WkdWUWIybHVkSE1wZTNaaGNpQnNaVzQ5WTI5a1pWQnZhVzUwY3k1c1pXNW5kR2c3YVdZb2JHVnVQRDFOUVZoZlFWSkhWVTFGVGxSVFgweEZUa2RVU0NsN2NtVjBkWEp1SUZOMGNtbHVaeTVtY205dFEyaGhja052WkdVdVlYQndiSGtvVTNSeWFXNW5MR052WkdWUWIybHVkSE1wZlhaaGNpQnlaWE05WENKY0lqdDJZWElnYVQwd08zZG9hV3hsS0drOGJHVnVLWHR5WlhNclBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVXVZWEJ3Ykhrb1UzUnlhVzVuTEdOdlpHVlFiMmx1ZEhNdWMyeHBZMlVvYVN4cEt6MU5RVmhmUVZKSFZVMUZUbFJUWDB4RlRrZFVTQ2twZlhKbGRIVnliaUJ5WlhOOVpuVnVZM1JwYjI0Z1lYTmphV2xUYkdsalpTaGlkV1lzYzNSaGNuUXNaVzVrS1h0MllYSWdjbVYwUFZ3aVhDSTdaVzVrUFUxaGRHZ3ViV2x1S0dKMVppNXNaVzVuZEdnc1pXNWtLVHRtYjNJb2RtRnlJR2s5YzNSaGNuUTdhVHhsYm1RN0t5dHBLWHR5WlhRclBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVW9ZblZtVzJsZEpqRXlOeWw5Y21WMGRYSnVJSEpsZEgxbWRXNWpkR2x2YmlCc1lYUnBiakZUYkdsalpTaGlkV1lzYzNSaGNuUXNaVzVrS1h0MllYSWdjbVYwUFZ3aVhDSTdaVzVrUFUxaGRHZ3ViV2x1S0dKMVppNXNaVzVuZEdnc1pXNWtLVHRtYjNJb2RtRnlJR2s5YzNSaGNuUTdhVHhsYm1RN0t5dHBLWHR5WlhRclBWTjBjbWx1Wnk1bWNtOXRRMmhoY2tOdlpHVW9ZblZtVzJsZEtYMXlaWFIxY200Z2NtVjBmV1oxYm1OMGFXOXVJR2hsZUZOc2FXTmxLR0oxWml4emRHRnlkQ3hsYm1RcGUzWmhjaUJzWlc0OVluVm1MbXhsYm1kMGFEdHBaaWdoYzNSaGNuUjhmSE4wWVhKMFBEQXBjM1JoY25ROU1EdHBaaWdoWlc1a2ZIeGxibVE4TUh4OFpXNWtQbXhsYmlsbGJtUTliR1Z1TzNaaGNpQnZkWFE5WENKY0lqdG1iM0lvZG1GeUlHazljM1JoY25RN2FUeGxibVE3S3l0cEtYdHZkWFFyUFhSdlNHVjRLR0oxWmx0cFhTbDljbVYwZFhKdUlHOTFkSDFtZFc1amRHbHZiaUIxZEdZeE5teGxVMnhwWTJVb1luVm1MSE4wWVhKMExHVnVaQ2w3ZG1GeUlHSjVkR1Z6UFdKMVppNXpiR2xqWlNoemRHRnlkQ3hsYm1RcE8zWmhjaUJ5WlhNOVhDSmNJanRtYjNJb2RtRnlJR2s5TUR0cFBHSjVkR1Z6TG14bGJtZDBhRHRwS3oweUtYdHlaWE1yUFZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb1lubDBaWE5iYVYwcllubDBaWE5iYVNzeFhTb3lOVFlwZlhKbGRIVnliaUJ5WlhOOVFuVm1abVZ5TG5CeWIzUnZkSGx3WlM1emJHbGpaVDFtZFc1amRHbHZiaUJ6YkdsalpTaHpkR0Z5ZEN4bGJtUXBlM1poY2lCc1pXNDlkR2hwY3k1c1pXNW5kR2c3YzNSaGNuUTlmbjV6ZEdGeWREdGxibVE5Wlc1a1BUMDlkVzVrWldacGJtVmtQMnhsYmpwK2ZtVnVaRHRwWmloemRHRnlkRHd3S1h0emRHRnlkQ3M5YkdWdU8ybG1LSE4wWVhKMFBEQXBjM1JoY25ROU1IMWxiSE5sSUdsbUtITjBZWEowUG14bGJpbDdjM1JoY25ROWJHVnVmV2xtS0dWdVpEd3dLWHRsYm1RclBXeGxianRwWmlobGJtUThNQ2xsYm1ROU1IMWxiSE5sSUdsbUtHVnVaRDVzWlc0cGUyVnVaRDFzWlc1OWFXWW9aVzVrUEhOMFlYSjBLV1Z1WkQxemRHRnlkRHQyWVhJZ2JtVjNRblZtTzJsbUtFSjFabVpsY2k1VVdWQkZSRjlCVWxKQldWOVRWVkJRVDFKVUtYdHVaWGRDZFdZOWRHaHBjeTV6ZFdKaGNuSmhlU2h6ZEdGeWRDeGxibVFwTzI1bGQwSjFaaTVmWDNCeWIzUnZYMTg5UW5WbVptVnlMbkJ5YjNSdmRIbHdaWDFsYkhObGUzWmhjaUJ6YkdsalpVeGxiajFsYm1RdGMzUmhjblE3Ym1WM1FuVm1QVzVsZHlCQ2RXWm1aWElvYzJ4cFkyVk1aVzRzZFc1a1pXWnBibVZrS1R0bWIzSW9kbUZ5SUdrOU1EdHBQSE5zYVdObFRHVnVPeXNyYVNsN2JtVjNRblZtVzJsZFBYUm9hWE5iYVN0emRHRnlkRjE5ZlhKbGRIVnliaUJ1WlhkQ2RXWjlPMloxYm1OMGFXOXVJR05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3hsZUhRc2JHVnVaM1JvS1h0cFppaHZabVp6WlhRbE1TRTlQVEI4Zkc5bVpuTmxkRHd3S1hSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtGd2liMlptYzJWMElHbHpJRzV2ZENCMWFXNTBYQ0lwTzJsbUtHOW1abk5sZEN0bGVIUStiR1Z1WjNSb0tYUm9jbTkzSUc1bGR5QlNZVzVuWlVWeWNtOXlLRndpVkhKNWFXNW5JSFJ2SUdGalkyVnpjeUJpWlhsdmJtUWdZblZtWm1WeUlHeGxibWQwYUZ3aUtYMUNkV1ptWlhJdWNISnZkRzkwZVhCbExuSmxZV1JWU1c1MFRFVTlablZ1WTNScGIyNGdjbVZoWkZWSmJuUk1SU2h2Wm1aelpYUXNZbmwwWlV4bGJtZDBhQ3h1YjBGemMyVnlkQ2w3YjJabWMyVjBQVzltWm5ObGRId3dPMko1ZEdWTVpXNW5kR2c5WW5sMFpVeGxibWQwYUh3d08ybG1LQ0Z1YjBGemMyVnlkQ2xqYUdWamEwOW1abk5sZENodlptWnpaWFFzWW5sMFpVeGxibWQwYUN4MGFHbHpMbXhsYm1kMGFDazdkbUZ5SUhaaGJEMTBhR2x6VzI5bVpuTmxkRjA3ZG1GeUlHMTFiRDB4TzNaaGNpQnBQVEE3ZDJocGJHVW9LeXRwUEdKNWRHVk1aVzVuZEdnbUppaHRkV3dxUFRJMU5pa3BlM1poYkNzOWRHaHBjMXR2Wm1aelpYUXJhVjBxYlhWc2ZYSmxkSFZ5YmlCMllXeDlPMEoxWm1abGNpNXdjbTkwYjNSNWNHVXVjbVZoWkZWSmJuUkNSVDFtZFc1amRHbHZiaUJ5WldGa1ZVbHVkRUpGS0c5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEc1dlFYTnpaWEowS1h0dlptWnpaWFE5YjJabWMyVjBmREE3WW5sMFpVeGxibWQwYUQxaWVYUmxUR1Z1WjNSb2ZEQTdhV1lvSVc1dlFYTnpaWEowS1h0amFHVmphMDltWm5ObGRDaHZabVp6WlhRc1lubDBaVXhsYm1kMGFDeDBhR2x6TG14bGJtZDBhQ2w5ZG1GeUlIWmhiRDEwYUdselcyOW1abk5sZENzdExXSjVkR1ZNWlc1bmRHaGRPM1poY2lCdGRXdzlNVHQzYUdsc1pTaGllWFJsVEdWdVozUm9QakFtSmlodGRXd3FQVEkxTmlrcGUzWmhiQ3M5ZEdocGMxdHZabVp6WlhRckxTMWllWFJsVEdWdVozUm9YU3B0ZFd4OWNtVjBkWEp1SUhaaGJIMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrVlVsdWREZzlablZ1WTNScGIyNGdjbVZoWkZWSmJuUTRLRzltWm5ObGRDeHViMEZ6YzJWeWRDbDdhV1lvSVc1dlFYTnpaWEowS1dOb1pXTnJUMlptYzJWMEtHOW1abk5sZEN3eExIUm9hWE11YkdWdVozUm9LVHR5WlhSMWNtNGdkR2hwYzF0dlptWnpaWFJkZlR0Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5KbFlXUlZTVzUwTVRaTVJUMW1kVzVqZEdsdmJpQnlaV0ZrVlVsdWRERTJURVVvYjJabWMyVjBMRzV2UVhOelpYSjBLWHRwWmlnaGJtOUJjM05sY25RcFkyaGxZMnRQWm1aelpYUW9iMlptYzJWMExESXNkR2hwY3k1c1pXNW5kR2dwTzNKbGRIVnliaUIwYUdselcyOW1abk5sZEYxOGRHaHBjMXR2Wm1aelpYUXJNVjA4UERoOU8wSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWNtVmhaRlZKYm5ReE5rSkZQV1oxYm1OMGFXOXVJSEpsWVdSVlNXNTBNVFpDUlNodlptWnpaWFFzYm05QmMzTmxjblFwZTJsbUtDRnViMEZ6YzJWeWRDbGphR1ZqYTA5bVpuTmxkQ2h2Wm1aelpYUXNNaXgwYUdsekxteGxibWQwYUNrN2NtVjBkWEp1SUhSb2FYTmJiMlptYzJWMFhUdzhPSHgwYUdselcyOW1abk5sZENzeFhYMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrVlVsdWRETXlURVU5Wm5WdVkzUnBiMjRnY21WaFpGVkpiblF6TWt4RktHOW1abk5sZEN4dWIwRnpjMlZ5ZENsN2FXWW9JVzV2UVhOelpYSjBLV05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3cwTEhSb2FYTXViR1Z1WjNSb0tUdHlaWFIxY200b2RHaHBjMXR2Wm1aelpYUmRmSFJvYVhOYmIyWm1jMlYwS3pGZFBEdzRmSFJvYVhOYmIyWm1jMlYwS3pKZFBEd3hOaWtyZEdocGMxdHZabVp6WlhRck0xMHFNVFkzTnpjeU1UWjlPMEoxWm1abGNpNXdjbTkwYjNSNWNHVXVjbVZoWkZWSmJuUXpNa0pGUFdaMWJtTjBhVzl1SUhKbFlXUlZTVzUwTXpKQ1JTaHZabVp6WlhRc2JtOUJjM05sY25RcGUybG1LQ0Z1YjBGemMyVnlkQ2xqYUdWamEwOW1abk5sZENodlptWnpaWFFzTkN4MGFHbHpMbXhsYm1kMGFDazdjbVYwZFhKdUlIUm9hWE5iYjJabWMyVjBYU294TmpjM056SXhOaXNvZEdocGMxdHZabVp6WlhRck1WMDhQREUyZkhSb2FYTmJiMlptYzJWMEt6SmRQRHc0ZkhSb2FYTmJiMlptYzJWMEt6TmRLWDA3UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzV5WldGa1NXNTBURVU5Wm5WdVkzUnBiMjRnY21WaFpFbHVkRXhGS0c5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEc1dlFYTnpaWEowS1h0dlptWnpaWFE5YjJabWMyVjBmREE3WW5sMFpVeGxibWQwYUQxaWVYUmxUR1Z1WjNSb2ZEQTdhV1lvSVc1dlFYTnpaWEowS1dOb1pXTnJUMlptYzJWMEtHOW1abk5sZEN4aWVYUmxUR1Z1WjNSb0xIUm9hWE11YkdWdVozUm9LVHQyWVhJZ2RtRnNQWFJvYVhOYmIyWm1jMlYwWFR0MllYSWdiWFZzUFRFN2RtRnlJR2s5TUR0M2FHbHNaU2dySzJrOFlubDBaVXhsYm1kMGFDWW1LRzExYkNvOU1qVTJLU2w3ZG1Gc0t6MTBhR2x6VzI5bVpuTmxkQ3RwWFNwdGRXeDliWFZzS2oweE1qZzdhV1lvZG1Gc1BqMXRkV3dwZG1Gc0xUMU5ZWFJvTG5CdmR5Z3lMRGdxWW5sMFpVeGxibWQwYUNrN2NtVjBkWEp1SUhaaGJIMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1MFFrVTlablZ1WTNScGIyNGdjbVZoWkVsdWRFSkZLRzltWm5ObGRDeGllWFJsVEdWdVozUm9MRzV2UVhOelpYSjBLWHR2Wm1aelpYUTliMlptYzJWMGZEQTdZbmwwWlV4bGJtZDBhRDFpZVhSbFRHVnVaM1JvZkRBN2FXWW9JVzV2UVhOelpYSjBLV05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEhSb2FYTXViR1Z1WjNSb0tUdGNiblpoY2lCcFBXSjVkR1ZNWlc1bmRHZzdkbUZ5SUcxMWJEMHhPM1poY2lCMllXdzlkR2hwYzF0dlptWnpaWFFyTFMxcFhUdDNhR2xzWlNocFBqQW1KaWh0ZFd3cVBUSTFOaWtwZTNaaGJDczlkR2hwYzF0dlptWnpaWFFyTFMxcFhTcHRkV3g5YlhWc0tqMHhNamc3YVdZb2RtRnNQajF0ZFd3cGRtRnNMVDFOWVhSb0xuQnZkeWd5TERncVlubDBaVXhsYm1kMGFDazdjbVYwZFhKdUlIWmhiSDA3UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzV5WldGa1NXNTBPRDFtZFc1amRHbHZiaUJ5WldGa1NXNTBPQ2h2Wm1aelpYUXNibTlCYzNObGNuUXBlMmxtS0NGdWIwRnpjMlZ5ZENsamFHVmphMDltWm5ObGRDaHZabVp6WlhRc01TeDBhR2x6TG14bGJtZDBhQ2s3YVdZb0lTaDBhR2x6VzI5bVpuTmxkRjBtTVRJNEtTbHlaWFIxY200Z2RHaHBjMXR2Wm1aelpYUmRPM0psZEhWeWJpZ3lOVFV0ZEdocGMxdHZabVp6WlhSZEt6RXBLaTB4ZlR0Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5KbFlXUkpiblF4Tmt4RlBXWjFibU4wYVc5dUlISmxZV1JKYm5ReE5reEZLRzltWm5ObGRDeHViMEZ6YzJWeWRDbDdhV1lvSVc1dlFYTnpaWEowS1dOb1pXTnJUMlptYzJWMEtHOW1abk5sZEN3eUxIUm9hWE11YkdWdVozUm9LVHQyWVhJZ2RtRnNQWFJvYVhOYmIyWm1jMlYwWFh4MGFHbHpXMjltWm5ObGRDc3hYVHc4T0R0eVpYUjFjbTRnZG1Gc0pqTXlOelk0UDNaaGJIdzBNamswT1RBeE56WXdPblpoYkgwN1FuVm1abVZ5TG5CeWIzUnZkSGx3WlM1eVpXRmtTVzUwTVRaQ1JUMW1kVzVqZEdsdmJpQnlaV0ZrU1c1ME1UWkNSU2h2Wm1aelpYUXNibTlCYzNObGNuUXBlMmxtS0NGdWIwRnpjMlZ5ZENsamFHVmphMDltWm5ObGRDaHZabVp6WlhRc01peDBhR2x6TG14bGJtZDBhQ2s3ZG1GeUlIWmhiRDEwYUdselcyOW1abk5sZENzeFhYeDBhR2x6VzI5bVpuTmxkRjA4UERnN2NtVjBkWEp1SUhaaGJDWXpNamMyT0Q5MllXeDhOREk1TkRrd01UYzJNRHAyWVd4OU8wSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERNeVRFVTlablZ1WTNScGIyNGdjbVZoWkVsdWRETXlURVVvYjJabWMyVjBMRzV2UVhOelpYSjBLWHRwWmlnaGJtOUJjM05sY25RcFkyaGxZMnRQWm1aelpYUW9iMlptYzJWMExEUXNkR2hwY3k1c1pXNW5kR2dwTzNKbGRIVnliaUIwYUdselcyOW1abk5sZEYxOGRHaHBjMXR2Wm1aelpYUXJNVjA4UERoOGRHaHBjMXR2Wm1aelpYUXJNbDA4UERFMmZIUm9hWE5iYjJabWMyVjBLek5kUER3eU5IMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1ME16SkNSVDFtZFc1amRHbHZiaUJ5WldGa1NXNTBNekpDUlNodlptWnpaWFFzYm05QmMzTmxjblFwZTJsbUtDRnViMEZ6YzJWeWRDbGphR1ZqYTA5bVpuTmxkQ2h2Wm1aelpYUXNOQ3gwYUdsekxteGxibWQwYUNrN2NtVjBkWEp1SUhSb2FYTmJiMlptYzJWMFhUdzhNalI4ZEdocGMxdHZabVp6WlhRck1WMDhQREUyZkhSb2FYTmJiMlptYzJWMEt6SmRQRHc0ZkhSb2FYTmJiMlptYzJWMEt6TmRmVHRDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbkpsWVdSR2JHOWhkRXhGUFdaMWJtTjBhVzl1SUhKbFlXUkdiRzloZEV4RktHOW1abk5sZEN4dWIwRnpjMlZ5ZENsN2FXWW9JVzV2UVhOelpYSjBLV05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3cwTEhSb2FYTXViR1Z1WjNSb0tUdHlaWFIxY200Z2FXVmxaVGMxTkM1eVpXRmtLSFJvYVhNc2IyWm1jMlYwTEhSeWRXVXNNak1zTkNsOU8wSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWNtVmhaRVpzYjJGMFFrVTlablZ1WTNScGIyNGdjbVZoWkVac2IyRjBRa1VvYjJabWMyVjBMRzV2UVhOelpYSjBLWHRwWmlnaGJtOUJjM05sY25RcFkyaGxZMnRQWm1aelpYUW9iMlptYzJWMExEUXNkR2hwY3k1c1pXNW5kR2dwTzNKbGRIVnliaUJwWldWbE56VTBMbkpsWVdRb2RHaHBjeXh2Wm1aelpYUXNabUZzYzJVc01qTXNOQ2w5TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1Y21WaFpFUnZkV0pzWlV4RlBXWjFibU4wYVc5dUlISmxZV1JFYjNWaWJHVk1SU2h2Wm1aelpYUXNibTlCYzNObGNuUXBlMmxtS0NGdWIwRnpjMlZ5ZENsamFHVmphMDltWm5ObGRDaHZabVp6WlhRc09DeDBhR2x6TG14bGJtZDBhQ2s3Y21WMGRYSnVJR2xsWldVM05UUXVjbVZoWkNoMGFHbHpMRzltWm5ObGRDeDBjblZsTERVeUxEZ3BmVHRDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbkpsWVdSRWIzVmliR1ZDUlQxbWRXNWpkR2x2YmlCeVpXRmtSRzkxWW14bFFrVW9iMlptYzJWMExHNXZRWE56WlhKMEtYdHBaaWdoYm05QmMzTmxjblFwWTJobFkydFBabVp6WlhRb2IyWm1jMlYwTERnc2RHaHBjeTVzWlc1bmRHZ3BPM0psZEhWeWJpQnBaV1ZsTnpVMExuSmxZV1FvZEdocGN5eHZabVp6WlhRc1ptRnNjMlVzTlRJc09DbDlPMloxYm1OMGFXOXVJR05vWldOclNXNTBLR0oxWml4MllXeDFaU3h2Wm1aelpYUXNaWGgwTEcxaGVDeHRhVzRwZTJsbUtDRkNkV1ptWlhJdWFYTkNkV1ptWlhJb1luVm1LU2wwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkY0ltSjFabVpsY2x3aUlHRnlaM1Z0Wlc1MElHMTFjM1FnWW1VZ1lTQkNkV1ptWlhJZ2FXNXpkR0Z1WTJVbktUdHBaaWgyWVd4MVpUNXRZWGg4ZkhaaGJIVmxQRzFwYmlsMGFISnZkeUJ1WlhjZ1VtRnVaMlZGY25KdmNpZ25YQ0oyWVd4MVpWd2lJR0Z5WjNWdFpXNTBJR2x6SUc5MWRDQnZaaUJpYjNWdVpITW5LVHRwWmlodlptWnpaWFFyWlhoMFBtSjFaaTVzWlc1bmRHZ3BkR2h5YjNjZ2JtVjNJRkpoYm1kbFJYSnliM0lvWENKSmJtUmxlQ0J2ZFhRZ2IyWWdjbUZ1WjJWY0lpbDlRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWSmJuUk1SVDFtZFc1amRHbHZiaUIzY21sMFpWVkpiblJNUlNoMllXeDFaU3h2Wm1aelpYUXNZbmwwWlV4bGJtZDBhQ3h1YjBGemMyVnlkQ2w3ZG1Gc2RXVTlLM1poYkhWbE8yOW1abk5sZEQxdlptWnpaWFI4TUR0aWVYUmxUR1Z1WjNSb1BXSjVkR1ZNWlc1bmRHaDhNRHRwWmlnaGJtOUJjM05sY25RcGUzWmhjaUJ0WVhoQ2VYUmxjejFOWVhSb0xuQnZkeWd5TERncVlubDBaVXhsYm1kMGFDa3RNVHRqYUdWamEwbHVkQ2gwYUdsekxIWmhiSFZsTEc5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEcxaGVFSjVkR1Z6TERBcGZYWmhjaUJ0ZFd3OU1UdDJZWElnYVQwd08zUm9hWE5iYjJabWMyVjBYVDEyWVd4MVpTWXlOVFU3ZDJocGJHVW9LeXRwUEdKNWRHVk1aVzVuZEdnbUppaHRkV3dxUFRJMU5pa3BlM1JvYVhOYmIyWm1jMlYwSzJsZFBYWmhiSFZsTDIxMWJDWXlOVFY5Y21WMGRYSnVJRzltWm5ObGRDdGllWFJsVEdWdVozUm9mVHRDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFZVbHVkRUpGUFdaMWJtTjBhVzl1SUhkeWFYUmxWVWx1ZEVKRktIWmhiSFZsTEc5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEc1dlFYTnpaWEowS1h0MllXeDFaVDByZG1Gc2RXVTdiMlptYzJWMFBXOW1abk5sZEh3d08ySjVkR1ZNWlc1bmRHZzlZbmwwWlV4bGJtZDBhSHd3TzJsbUtDRnViMEZ6YzJWeWRDbDdkbUZ5SUcxaGVFSjVkR1Z6UFUxaGRHZ3VjRzkzS0RJc09DcGllWFJsVEdWdVozUm9LUzB4TzJOb1pXTnJTVzUwS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTEdKNWRHVk1aVzVuZEdnc2JXRjRRbmwwWlhNc01DbDlkbUZ5SUdrOVlubDBaVXhsYm1kMGFDMHhPM1poY2lCdGRXdzlNVHQwYUdselcyOW1abk5sZEN0cFhUMTJZV3gxWlNZeU5UVTdkMmhwYkdVb0xTMXBQajB3SmlZb2JYVnNLajB5TlRZcEtYdDBhR2x6VzI5bVpuTmxkQ3RwWFQxMllXeDFaUzl0ZFd3bU1qVTFmWEpsZEhWeWJpQnZabVp6WlhRcllubDBaVXhsYm1kMGFIMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWSmJuUTRQV1oxYm1OMGFXOXVJSGR5YVhSbFZVbHVkRGdvZG1Gc2RXVXNiMlptYzJWMExHNXZRWE56WlhKMEtYdDJZV3gxWlQwcmRtRnNkV1U3YjJabWMyVjBQVzltWm5ObGRId3dPMmxtS0NGdWIwRnpjMlZ5ZENsamFHVmphMGx1ZENoMGFHbHpMSFpoYkhWbExHOW1abk5sZEN3eExESTFOU3d3S1R0cFppZ2hRblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBkbUZzZFdVOVRXRjBhQzVtYkc5dmNpaDJZV3gxWlNrN2RHaHBjMXR2Wm1aelpYUmRQWFpoYkhWbEpqSTFOVHR5WlhSMWNtNGdiMlptYzJWMEt6RjlPMloxYm1OMGFXOXVJRzlpYW1WamRGZHlhWFJsVlVsdWRERTJLR0oxWml4MllXeDFaU3h2Wm1aelpYUXNiR2wwZEd4bFJXNWthV0Z1S1h0cFppaDJZV3gxWlR3d0tYWmhiSFZsUFRZMU5UTTFLM1poYkhWbEt6RTdabTl5S0haaGNpQnBQVEFzYWoxTllYUm9MbTFwYmloaWRXWXViR1Z1WjNSb0xXOW1abk5sZEN3eUtUdHBQR283S3l0cEtYdGlkV1piYjJabWMyVjBLMmxkUFNoMllXeDFaU1l5TlRVOFBEZ3FLR3hwZEhSc1pVVnVaR2xoYmo5cE9qRXRhU2twUGo0K0tHeHBkSFJzWlVWdVpHbGhiajlwT2pFdGFTa3FPSDE5UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzUzY21sMFpWVkpiblF4Tmt4RlBXWjFibU4wYVc5dUlIZHlhWFJsVlVsdWRERTJURVVvZG1Gc2RXVXNiMlptYzJWMExHNXZRWE56WlhKMEtYdDJZV3gxWlQwcmRtRnNkV1U3YjJabWMyVjBQVzltWm5ObGRId3dPMmxtS0NGdWIwRnpjMlZ5ZENsamFHVmphMGx1ZENoMGFHbHpMSFpoYkhWbExHOW1abk5sZEN3eUxEWTFOVE0xTERBcE8ybG1LRUoxWm1abGNpNVVXVkJGUkY5QlVsSkJXVjlUVlZCUVQxSlVLWHQwYUdselcyOW1abk5sZEYwOWRtRnNkV1VtTWpVMU8zUm9hWE5iYjJabWMyVjBLekZkUFhaaGJIVmxQajQrT0gxbGJITmxlMjlpYW1WamRGZHlhWFJsVlVsdWRERTJLSFJvYVhNc2RtRnNkV1VzYjJabWMyVjBMSFJ5ZFdVcGZYSmxkSFZ5YmlCdlptWnpaWFFyTW4wN1FuVm1abVZ5TG5CeWIzUnZkSGx3WlM1M2NtbDBaVlZKYm5ReE5rSkZQV1oxYm1OMGFXOXVJSGR5YVhSbFZVbHVkREUyUWtVb2RtRnNkV1VzYjJabWMyVjBMRzV2UVhOelpYSjBLWHQyWVd4MVpUMHJkbUZzZFdVN2IyWm1jMlYwUFc5bVpuTmxkSHd3TzJsbUtDRnViMEZ6YzJWeWRDbGphR1ZqYTBsdWRDaDBhR2x6TEhaaGJIVmxMRzltWm5ObGRDd3lMRFkxTlRNMUxEQXBPMmxtS0VKMVptWmxjaTVVV1ZCRlJGOUJVbEpCV1Y5VFZWQlFUMUpVS1h0MGFHbHpXMjltWm5ObGRGMDlkbUZzZFdVK1BqNDRPM1JvYVhOYmIyWm1jMlYwS3pGZFBYWmhiSFZsSmpJMU5YMWxiSE5sZTI5aWFtVmpkRmR5YVhSbFZVbHVkREUyS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTEdaaGJITmxLWDF5WlhSMWNtNGdiMlptYzJWMEt6SjlPMloxYm1OMGFXOXVJRzlpYW1WamRGZHlhWFJsVlVsdWRETXlLR0oxWml4MllXeDFaU3h2Wm1aelpYUXNiR2wwZEd4bFJXNWthV0Z1S1h0cFppaDJZV3gxWlR3d0tYWmhiSFZsUFRReU9UUTVOamN5T1RVcmRtRnNkV1VyTVR0bWIzSW9kbUZ5SUdrOU1DeHFQVTFoZEdndWJXbHVLR0oxWmk1c1pXNW5kR2d0YjJabWMyVjBMRFFwTzJrOGFqc3JLMmtwZTJKMVpsdHZabVp6WlhRcmFWMDlkbUZzZFdVK1BqNG9iR2wwZEd4bFJXNWthV0Z1UDJrNk15MXBLU280SmpJMU5YMTlRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWSmJuUXpNa3hGUFdaMWJtTjBhVzl1SUhkeWFYUmxWVWx1ZERNeVRFVW9kbUZzZFdVc2IyWm1jMlYwTEc1dlFYTnpaWEowS1h0MllXeDFaVDByZG1Gc2RXVTdiMlptYzJWMFBXOW1abk5sZEh3d08ybG1LQ0Z1YjBGemMyVnlkQ2xqYUdWamEwbHVkQ2gwYUdsekxIWmhiSFZsTEc5bVpuTmxkQ3cwTERReU9UUTVOamN5T1RVc01DazdhV1lvUW5WbVptVnlMbFJaVUVWRVgwRlNVa0ZaWDFOVlVGQlBVbFFwZTNSb2FYTmJiMlptYzJWMEt6TmRQWFpoYkhWbFBqNCtNalE3ZEdocGMxdHZabVp6WlhRck1sMDlkbUZzZFdVK1BqNHhOanQwYUdselcyOW1abk5sZENzeFhUMTJZV3gxWlQ0K1BqZzdkR2hwYzF0dlptWnpaWFJkUFhaaGJIVmxKakkxTlgxbGJITmxlMjlpYW1WamRGZHlhWFJsVlVsdWRETXlLSFJvYVhNc2RtRnNkV1VzYjJabWMyVjBMSFJ5ZFdVcGZYSmxkSFZ5YmlCdlptWnpaWFFyTkgwN1FuVm1abVZ5TG5CeWIzUnZkSGx3WlM1M2NtbDBaVlZKYm5Rek1rSkZQV1oxYm1OMGFXOXVJSGR5YVhSbFZVbHVkRE15UWtVb2RtRnNkV1VzYjJabWMyVjBMRzV2UVhOelpYSjBLWHQyWVd4MVpUMHJkbUZzZFdVN2IyWm1jMlYwUFc5bVpuTmxkSHd3TzJsbUtDRnViMEZ6YzJWeWRDbGphR1ZqYTBsdWRDaDBhR2x6TEhaaGJIVmxMRzltWm5ObGRDdzBMRFF5T1RRNU5qY3lPVFVzTUNrN2FXWW9RblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBlM1JvYVhOYmIyWm1jMlYwWFQxMllXeDFaVDQrUGpJME8zUm9hWE5iYjJabWMyVjBLekZkUFhaaGJIVmxQajQrTVRZN2RHaHBjMXR2Wm1aelpYUXJNbDA5ZG1Gc2RXVStQajQ0TzNSb2FYTmJiMlptYzJWMEt6TmRQWFpoYkhWbEpqSTFOWDFsYkhObGUyOWlhbVZqZEZkeWFYUmxWVWx1ZERNeUtIUm9hWE1zZG1Gc2RXVXNiMlptYzJWMExHWmhiSE5sS1gxeVpYUjFjbTRnYjJabWMyVjBLelI5TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblJNUlQxbWRXNWpkR2x2YmlCM2NtbDBaVWx1ZEV4RktIWmhiSFZsTEc5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEc1dlFYTnpaWEowS1h0MllXeDFaVDByZG1Gc2RXVTdiMlptYzJWMFBXOW1abk5sZEh3d08ybG1LQ0Z1YjBGemMyVnlkQ2w3ZG1GeUlHeHBiV2wwUFUxaGRHZ3VjRzkzS0RJc09DcGllWFJsVEdWdVozUm9MVEVwTzJOb1pXTnJTVzUwS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTEdKNWRHVk1aVzVuZEdnc2JHbHRhWFF0TVN3dGJHbHRhWFFwZlhaaGNpQnBQVEE3ZG1GeUlHMTFiRDB4TzNaaGNpQnpkV0k5TUR0MGFHbHpXMjltWm5ObGRGMDlkbUZzZFdVbU1qVTFPM2RvYVd4bEtDc3JhVHhpZVhSbFRHVnVaM1JvSmlZb2JYVnNLajB5TlRZcEtYdHBaaWgyWVd4MVpUd3dKaVp6ZFdJOVBUMHdKaVowYUdselcyOW1abk5sZEN0cExURmRJVDA5TUNsN2MzVmlQVEY5ZEdocGMxdHZabVp6WlhRcmFWMDlLSFpoYkhWbEwyMTFiRDQrTUNrdGMzVmlKakkxTlgxeVpYUjFjbTRnYjJabWMyVjBLMko1ZEdWTVpXNW5kR2g5TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblJDUlQxbWRXNWpkR2x2YmlCM2NtbDBaVWx1ZEVKRktIWmhiSFZsTEc5bVpuTmxkQ3hpZVhSbFRHVnVaM1JvTEc1dlFYTnpaWEowS1h0MllXeDFaVDByZG1Gc2RXVTdiMlptYzJWMFBXOW1abk5sZEh3d08ybG1LQ0Z1YjBGemMyVnlkQ2w3ZG1GeUlHeHBiV2wwUFUxaGRHZ3VjRzkzS0RJc09DcGllWFJsVEdWdVozUm9MVEVwTzJOb1pXTnJTVzUwS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTEdKNWRHVk1aVzVuZEdnc2JHbHRhWFF0TVN3dGJHbHRhWFFwZlhaaGNpQnBQV0o1ZEdWTVpXNW5kR2d0TVR0MllYSWdiWFZzUFRFN2RtRnlJSE4xWWowd08zUm9hWE5iYjJabWMyVjBLMmxkUFhaaGJIVmxKakkxTlR0M2FHbHNaU2d0TFdrK1BUQW1KaWh0ZFd3cVBUSTFOaWtwZTJsbUtIWmhiSFZsUERBbUpuTjFZajA5UFRBbUpuUm9hWE5iYjJabWMyVjBLMmtyTVYwaFBUMHdLWHR6ZFdJOU1YMTBhR2x6VzI5bVpuTmxkQ3RwWFQwb2RtRnNkV1V2YlhWc1BqNHdLUzF6ZFdJbU1qVTFmWEpsZEhWeWJpQnZabVp6WlhRcllubDBaVXhsYm1kMGFIMDdRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlVsdWREZzlablZ1WTNScGIyNGdkM0pwZEdWSmJuUTRLSFpoYkhWbExHOW1abk5sZEN4dWIwRnpjMlZ5ZENsN2RtRnNkV1U5SzNaaGJIVmxPMjltWm5ObGREMXZabVp6WlhSOE1EdHBaaWdoYm05QmMzTmxjblFwWTJobFkydEpiblFvZEdocGN5eDJZV3gxWlN4dlptWnpaWFFzTVN3eE1qY3NMVEV5T0NrN2FXWW9JVUoxWm1abGNpNVVXVkJGUkY5QlVsSkJXVjlUVlZCUVQxSlVLWFpoYkhWbFBVMWhkR2d1Wm14dmIzSW9kbUZzZFdVcE8ybG1LSFpoYkhWbFBEQXBkbUZzZFdVOU1qVTFLM1poYkhWbEt6RTdkR2hwYzF0dlptWnpaWFJkUFhaaGJIVmxKakkxTlR0eVpYUjFjbTRnYjJabWMyVjBLekY5TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblF4Tmt4RlBXWjFibU4wYVc5dUlIZHlhWFJsU1c1ME1UWk1SU2gyWVd4MVpTeHZabVp6WlhRc2JtOUJjM05sY25RcGUzWmhiSFZsUFN0MllXeDFaVHR2Wm1aelpYUTliMlptYzJWMGZEQTdhV1lvSVc1dlFYTnpaWEowS1dOb1pXTnJTVzUwS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTERJc016STNOamNzTFRNeU56WTRLVHRwWmloQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNsN2RHaHBjMXR2Wm1aelpYUmRQWFpoYkhWbEpqSTFOVHQwYUdselcyOW1abk5sZENzeFhUMTJZV3gxWlQ0K1BqaDlaV3h6Wlh0dlltcGxZM1JYY21sMFpWVkpiblF4TmloMGFHbHpMSFpoYkhWbExHOW1abk5sZEN4MGNuVmxLWDF5WlhSMWNtNGdiMlptYzJWMEt6SjlPMEoxWm1abGNpNXdjbTkwYjNSNWNHVXVkM0pwZEdWSmJuUXhOa0pGUFdaMWJtTjBhVzl1SUhkeWFYUmxTVzUwTVRaQ1JTaDJZV3gxWlN4dlptWnpaWFFzYm05QmMzTmxjblFwZTNaaGJIVmxQU3QyWVd4MVpUdHZabVp6WlhROWIyWm1jMlYwZkRBN2FXWW9JVzV2UVhOelpYSjBLV05vWldOclNXNTBLSFJvYVhNc2RtRnNkV1VzYjJabWMyVjBMRElzTXpJM05qY3NMVE15TnpZNEtUdHBaaWhDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ2w3ZEdocGMxdHZabVp6WlhSZFBYWmhiSFZsUGo0K09EdDBhR2x6VzI5bVpuTmxkQ3N4WFQxMllXeDFaU1l5TlRWOVpXeHpaWHR2WW1wbFkzUlhjbWwwWlZWSmJuUXhOaWgwYUdsekxIWmhiSFZsTEc5bVpuTmxkQ3htWVd4elpTbDljbVYwZFhKdUlHOW1abk5sZENzeWZUdENkV1ptWlhJdWNISnZkRzkwZVhCbExuZHlhWFJsU1c1ME16Sk1SVDFtZFc1amRHbHZiaUIzY21sMFpVbHVkRE15VEVVb2RtRnNkV1VzYjJabWMyVjBMRzV2UVhOelpYSjBLWHQyWVd4MVpUMHJkbUZzZFdVN2IyWm1jMlYwUFc5bVpuTmxkSHd3TzJsbUtDRnViMEZ6YzJWeWRDbGphR1ZqYTBsdWRDaDBhR2x6TEhaaGJIVmxMRzltWm5ObGRDdzBMREl4TkRjME9ETTJORGNzTFRJeE5EYzBPRE0yTkRncE8ybG1LRUoxWm1abGNpNVVXVkJGUkY5QlVsSkJXVjlUVlZCUVQxSlVLWHQwYUdselcyOW1abk5sZEYwOWRtRnNkV1VtTWpVMU8zUm9hWE5iYjJabWMyVjBLekZkUFhaaGJIVmxQajQrT0R0MGFHbHpXMjltWm5ObGRDc3lYVDEyWVd4MVpUNCtQakUyTzNSb2FYTmJiMlptYzJWMEt6TmRQWFpoYkhWbFBqNCtNalI5Wld4elpYdHZZbXBsWTNSWGNtbDBaVlZKYm5Rek1paDBhR2x6TEhaaGJIVmxMRzltWm5ObGRDeDBjblZsS1gxeVpYUjFjbTRnYjJabWMyVjBLelI5TzBKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblF6TWtKRlBXWjFibU4wYVc5dUlIZHlhWFJsU1c1ME16SkNSU2gyWVd4MVpTeHZabVp6WlhRc2JtOUJjM05sY25RcGUzWmhiSFZsUFN0MllXeDFaVHR2Wm1aelpYUTliMlptYzJWMGZEQTdhV1lvSVc1dlFYTnpaWEowS1dOb1pXTnJTVzUwS0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTERRc01qRTBOelE0TXpZME55d3RNakUwTnpRNE16WTBPQ2s3YVdZb2RtRnNkV1U4TUNsMllXeDFaVDAwTWprME9UWTNNamsxSzNaaGJIVmxLekU3YVdZb1FuVm1abVZ5TGxSWlVFVkVYMEZTVWtGWlgxTlZVRkJQVWxRcGUzUm9hWE5iYjJabWMyVjBYVDEyWVd4MVpUNCtQakkwTzNSb2FYTmJiMlptYzJWMEt6RmRQWFpoYkhWbFBqNCtNVFk3ZEdocGMxdHZabVp6WlhRck1sMDlkbUZzZFdVK1BqNDRPM1JvYVhOYmIyWm1jMlYwS3pOZFBYWmhiSFZsSmpJMU5YMWxiSE5sZTI5aWFtVmpkRmR5YVhSbFZVbHVkRE15S0hSb2FYTXNkbUZzZFdVc2IyWm1jMlYwTEdaaGJITmxLWDF5WlhSMWNtNGdiMlptYzJWMEt6UjlPMloxYm1OMGFXOXVJR05vWldOclNVVkZSVGMxTkNoaWRXWXNkbUZzZFdVc2IyWm1jMlYwTEdWNGRDeHRZWGdzYldsdUtYdHBaaWh2Wm1aelpYUXJaWGgwUG1KMVppNXNaVzVuZEdncGRHaHliM2NnYm1WM0lGSmhibWRsUlhKeWIzSW9YQ0pKYm1SbGVDQnZkWFFnYjJZZ2NtRnVaMlZjSWlrN2FXWW9iMlptYzJWMFBEQXBkR2h5YjNjZ2JtVjNJRkpoYm1kbFJYSnliM0lvWENKSmJtUmxlQ0J2ZFhRZ2IyWWdjbUZ1WjJWY0lpbDlablZ1WTNScGIyNGdkM0pwZEdWR2JHOWhkQ2hpZFdZc2RtRnNkV1VzYjJabWMyVjBMR3hwZEhSc1pVVnVaR2xoYml4dWIwRnpjMlZ5ZENsN2FXWW9JVzV2UVhOelpYSjBLWHRqYUdWamEwbEZSVVUzTlRRb1luVm1MSFpoYkhWbExHOW1abk5sZEN3MExETXVOREF5T0RJek5EWTJNemcxTWpnNE5tVXpPQ3d0TXk0ME1ESTRNak0wTmpZek9EVXlPRGcyWlRNNEtYMXBaV1ZsTnpVMExuZHlhWFJsS0dKMVppeDJZV3gxWlN4dlptWnpaWFFzYkdsMGRHeGxSVzVrYVdGdUxESXpMRFFwTzNKbGRIVnliaUJ2Wm1aelpYUXJOSDFDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFJteHZZWFJNUlQxbWRXNWpkR2x2YmlCM2NtbDBaVVpzYjJGMFRFVW9kbUZzZFdVc2IyWm1jMlYwTEc1dlFYTnpaWEowS1h0eVpYUjFjbTRnZDNKcGRHVkdiRzloZENoMGFHbHpMSFpoYkhWbExHOW1abk5sZEN4MGNuVmxMRzV2UVhOelpYSjBLWDA3UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzUzY21sMFpVWnNiMkYwUWtVOVpuVnVZM1JwYjI0Z2QzSnBkR1ZHYkc5aGRFSkZLSFpoYkhWbExHOW1abk5sZEN4dWIwRnpjMlZ5ZENsN2NtVjBkWEp1SUhkeWFYUmxSbXh2WVhRb2RHaHBjeXgyWVd4MVpTeHZabVp6WlhRc1ptRnNjMlVzYm05QmMzTmxjblFwZlR0bWRXNWpkR2x2YmlCM2NtbDBaVVJ2ZFdKc1pTaGlkV1lzZG1Gc2RXVXNiMlptYzJWMExHeHBkSFJzWlVWdVpHbGhiaXh1YjBGemMyVnlkQ2w3YVdZb0lXNXZRWE56WlhKMEtYdGphR1ZqYTBsRlJVVTNOVFFvWW5WbUxIWmhiSFZsTEc5bVpuTmxkQ3c0TERFdU56azNOamt6TVRNME9EWXlNekUxTjJVek1EZ3NMVEV1TnprM05qa3pNVE0wT0RZeU16RTFOMlV6TURncGZXbGxaV1UzTlRRdWQzSnBkR1VvWW5WbUxIWmhiSFZsTEc5bVpuTmxkQ3hzYVhSMGJHVkZibVJwWVc0c05USXNPQ2s3Y21WMGRYSnVJRzltWm5ObGRDczRmVUoxWm1abGNpNXdjbTkwYjNSNWNHVXVkM0pwZEdWRWIzVmliR1ZNUlQxbWRXNWpkR2x2YmlCM2NtbDBaVVJ2ZFdKc1pVeEZLSFpoYkhWbExHOW1abk5sZEN4dWIwRnpjMlZ5ZENsN2NtVjBkWEp1SUhkeWFYUmxSRzkxWW14bEtIUm9hWE1zZG1Gc2RXVXNiMlptYzJWMExIUnlkV1VzYm05QmMzTmxjblFwZlR0Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5keWFYUmxSRzkxWW14bFFrVTlablZ1WTNScGIyNGdkM0pwZEdWRWIzVmliR1ZDUlNoMllXeDFaU3h2Wm1aelpYUXNibTlCYzNObGNuUXBlM0psZEhWeWJpQjNjbWwwWlVSdmRXSnNaU2gwYUdsekxIWmhiSFZsTEc5bVpuTmxkQ3htWVd4elpTeHViMEZ6YzJWeWRDbDlPMEoxWm1abGNpNXdjbTkwYjNSNWNHVXVZMjl3ZVQxbWRXNWpkR2x2YmlCamIzQjVLSFJoY21kbGRDeDBZWEpuWlhSVGRHRnlkQ3h6ZEdGeWRDeGxibVFwZTJsbUtDRnpkR0Z5ZENsemRHRnlkRDB3TzJsbUtDRmxibVFtSm1WdVpDRTlQVEFwWlc1a1BYUm9hWE11YkdWdVozUm9PMmxtS0hSaGNtZGxkRk4wWVhKMFBqMTBZWEpuWlhRdWJHVnVaM1JvS1hSaGNtZGxkRk4wWVhKMFBYUmhjbWRsZEM1c1pXNW5kR2c3YVdZb0lYUmhjbWRsZEZOMFlYSjBLWFJoY21kbGRGTjBZWEowUFRBN2FXWW9aVzVrUGpBbUptVnVaRHh6ZEdGeWRDbGxibVE5YzNSaGNuUTdhV1lvWlc1a1BUMDljM1JoY25RcGNtVjBkWEp1SURBN2FXWW9kR0Z5WjJWMExteGxibWQwYUQwOVBUQjhmSFJvYVhNdWJHVnVaM1JvUFQwOU1DbHlaWFIxY200Z01EdHBaaWgwWVhKblpYUlRkR0Z5ZER3d0tYdDBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWhjSW5SaGNtZGxkRk4wWVhKMElHOTFkQ0J2WmlCaWIzVnVaSE5jSWlsOWFXWW9jM1JoY25ROE1IeDhjM1JoY25RK1BYUm9hWE11YkdWdVozUm9LWFJvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0Z3aWMyOTFjbU5sVTNSaGNuUWdiM1YwSUc5bUlHSnZkVzVrYzF3aUtUdHBaaWhsYm1ROE1DbDBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWhjSW5OdmRYSmpaVVZ1WkNCdmRYUWdiMllnWW05MWJtUnpYQ0lwTzJsbUtHVnVaRDUwYUdsekxteGxibWQwYUNsbGJtUTlkR2hwY3k1c1pXNW5kR2c3YVdZb2RHRnlaMlYwTG14bGJtZDBhQzEwWVhKblpYUlRkR0Z5ZER4bGJtUXRjM1JoY25RcGUyVnVaRDEwWVhKblpYUXViR1Z1WjNSb0xYUmhjbWRsZEZOMFlYSjBLM04wWVhKMGZYWmhjaUJzWlc0OVpXNWtMWE4wWVhKME8zWmhjaUJwTzJsbUtIUm9hWE05UFQxMFlYSm5aWFFtSm5OMFlYSjBQSFJoY21kbGRGTjBZWEowSmlaMFlYSm5aWFJUZEdGeWREeGxibVFwZTJadmNpaHBQV3hsYmkweE8yaytQVEE3TFMxcEtYdDBZWEpuWlhSYmFTdDBZWEpuWlhSVGRHRnlkRjA5ZEdocGMxdHBLM04wWVhKMFhYMTlaV3h6WlNCcFppaHNaVzQ4TVdVemZId2hRblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBlMlp2Y2locFBUQTdhVHhzWlc0N0t5dHBLWHQwWVhKblpYUmJhU3QwWVhKblpYUlRkR0Z5ZEYwOWRHaHBjMXRwSzNOMFlYSjBYWDE5Wld4elpYdFZhVzUwT0VGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6WlhRdVkyRnNiQ2gwWVhKblpYUXNkR2hwY3k1emRXSmhjbkpoZVNoemRHRnlkQ3h6ZEdGeWRDdHNaVzRwTEhSaGNtZGxkRk4wWVhKMEtYMXlaWFIxY200Z2JHVnVmVHRDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbVpwYkd3OVpuVnVZM1JwYjI0Z1ptbHNiQ2gyWVd3c2MzUmhjblFzWlc1a0xHVnVZMjlrYVc1bktYdHBaaWgwZVhCbGIyWWdkbUZzUFQwOVhDSnpkSEpwYm1kY0lpbDdhV1lvZEhsd1pXOW1JSE4wWVhKMFBUMDlYQ0p6ZEhKcGJtZGNJaWw3Wlc1amIyUnBibWM5YzNSaGNuUTdjM1JoY25ROU1EdGxibVE5ZEdocGN5NXNaVzVuZEdoOVpXeHpaU0JwWmloMGVYQmxiMllnWlc1a1BUMDlYQ0p6ZEhKcGJtZGNJaWw3Wlc1amIyUnBibWM5Wlc1a08yVnVaRDEwYUdsekxteGxibWQwYUgxcFppaDJZV3d1YkdWdVozUm9QVDA5TVNsN2RtRnlJR052WkdVOWRtRnNMbU5vWVhKRGIyUmxRWFFvTUNrN2FXWW9ZMjlrWlR3eU5UWXBlM1poYkQxamIyUmxmWDFwWmlobGJtTnZaR2x1WnlFOVBYVnVaR1ZtYVc1bFpDWW1kSGx3Wlc5bUlHVnVZMjlrYVc1bklUMDlYQ0p6ZEhKcGJtZGNJaWw3ZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loY0ltVnVZMjlrYVc1bklHMTFjM1FnWW1VZ1lTQnpkSEpwYm1kY0lpbDlhV1lvZEhsd1pXOW1JR1Z1WTI5a2FXNW5QVDA5WENKemRISnBibWRjSWlZbUlVSjFabVpsY2k1cGMwVnVZMjlrYVc1bktHVnVZMjlrYVc1bktTbDdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhjSWxWdWEyNXZkMjRnWlc1amIyUnBibWM2SUZ3aUsyVnVZMjlrYVc1bktYMTlaV3h6WlNCcFppaDBlWEJsYjJZZ2RtRnNQVDA5WENKdWRXMWlaWEpjSWlsN2RtRnNQWFpoYkNZeU5UVjlhV1lvYzNSaGNuUThNSHg4ZEdocGN5NXNaVzVuZEdnOGMzUmhjblI4ZkhSb2FYTXViR1Z1WjNSb1BHVnVaQ2w3ZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb1hDSlBkWFFnYjJZZ2NtRnVaMlVnYVc1a1pYaGNJaWw5YVdZb1pXNWtQRDF6ZEdGeWRDbDdjbVYwZFhKdUlIUm9hWE45YzNSaGNuUTljM1JoY25RK1BqNHdPMlZ1WkQxbGJtUTlQVDExYm1SbFptbHVaV1EvZEdocGN5NXNaVzVuZEdnNlpXNWtQajQrTUR0cFppZ2hkbUZzS1haaGJEMHdPM1poY2lCcE8ybG1LSFI1Y0dWdlppQjJZV3c5UFQxY0ltNTFiV0psY2x3aUtYdG1iM0lvYVQxemRHRnlkRHRwUEdWdVpEc3JLMmtwZTNSb2FYTmJhVjA5ZG1Gc2ZYMWxiSE5sZTNaaGNpQmllWFJsY3oxQ2RXWm1aWEl1YVhOQ2RXWm1aWElvZG1Gc0tUOTJZV3c2ZFhSbU9GUnZRbmwwWlhNb2JtVjNJRUoxWm1abGNpaDJZV3dzWlc1amIyUnBibWNwTG5SdlUzUnlhVzVuS0NrcE8zWmhjaUJzWlc0OVlubDBaWE11YkdWdVozUm9PMlp2Y2locFBUQTdhVHhsYm1RdGMzUmhjblE3S3l0cEtYdDBhR2x6VzJrcmMzUmhjblJkUFdKNWRHVnpXMmtsYkdWdVhYMTljbVYwZFhKdUlIUm9hWE45TzNaaGNpQkpUbFpCVEVsRVgwSkJVMFUyTkY5U1JUMHZXMTRyWEZ3dk1DMDVRUzFhWVMxNkxWOWRMMmM3Wm5WdVkzUnBiMjRnWW1GelpUWTBZMnhsWVc0b2MzUnlLWHR6ZEhJOWMzUnlhVzVuZEhKcGJTaHpkSElwTG5KbGNHeGhZMlVvU1U1V1FVeEpSRjlDUVZORk5qUmZVa1VzWENKY0lpazdhV1lvYzNSeUxteGxibWQwYUR3eUtYSmxkSFZ5Ymx3aVhDSTdkMmhwYkdVb2MzUnlMbXhsYm1kMGFDVTBJVDA5TUNsN2MzUnlQWE4wY2l0Y0lqMWNJbjF5WlhSMWNtNGdjM1J5ZldaMWJtTjBhVzl1SUhOMGNtbHVaM1J5YVcwb2MzUnlLWHRwWmloemRISXVkSEpwYlNseVpYUjFjbTRnYzNSeUxuUnlhVzBvS1R0eVpYUjFjbTRnYzNSeUxuSmxjR3hoWTJVb0wxNWNYSE1yZkZ4Y2N5c2tMMmNzWENKY0lpbDlablZ1WTNScGIyNGdkRzlJWlhnb2JpbDdhV1lvYmp3eE5pbHlaWFIxY201Y0lqQmNJaXR1TG5SdlUzUnlhVzVuS0RFMktUdHlaWFIxY200Z2JpNTBiMU4wY21sdVp5Z3hOaWw5Wm5WdVkzUnBiMjRnZFhSbU9GUnZRbmwwWlhNb2MzUnlhVzVuTEhWdWFYUnpLWHQxYm1sMGN6MTFibWwwYzN4OFNXNW1hVzVwZEhrN2RtRnlJR052WkdWUWIybHVkRHQyWVhJZ2JHVnVaM1JvUFhOMGNtbHVaeTVzWlc1bmRHZzdkbUZ5SUd4bFlXUlRkWEp5YjJkaGRHVTliblZzYkR0MllYSWdZbmwwWlhNOVcxMDdabTl5S0haaGNpQnBQVEE3YVR4c1pXNW5kR2c3S3l0cEtYdGpiMlJsVUc5cGJuUTljM1J5YVc1bkxtTm9ZWEpEYjJSbFFYUW9hU2s3YVdZb1kyOWtaVkJ2YVc1MFBqVTFNamsxSmlaamIyUmxVRzlwYm5ROE5UY3pORFFwZTJsbUtDRnNaV0ZrVTNWeWNtOW5ZWFJsS1h0cFppaGpiMlJsVUc5cGJuUStOVFl6TVRrcGUybG1LQ2gxYm1sMGN5MDlNeWsrTFRFcFlubDBaWE11Y0hWemFDZ3lNemtzTVRreExERTRPU2s3WTI5dWRHbHVkV1Y5Wld4elpTQnBaaWhwS3pFOVBUMXNaVzVuZEdncGUybG1LQ2gxYm1sMGN5MDlNeWsrTFRFcFlubDBaWE11Y0hWemFDZ3lNemtzTVRreExERTRPU2s3WTI5dWRHbHVkV1Y5YkdWaFpGTjFjbkp2WjJGMFpUMWpiMlJsVUc5cGJuUTdZMjl1ZEdsdWRXVjlhV1lvWTI5a1pWQnZhVzUwUERVMk16SXdLWHRwWmlnb2RXNXBkSE10UFRNcFBpMHhLV0o1ZEdWekxuQjFjMmdvTWpNNUxERTVNU3d4T0RrcE8yeGxZV1JUZFhKeWIyZGhkR1U5WTI5a1pWQnZhVzUwTzJOdmJuUnBiblZsZldOdlpHVlFiMmx1ZEQwb2JHVmhaRk4xY25KdloyRjBaUzAxTlRJNU5qdzhNVEI4WTI5a1pWQnZhVzUwTFRVMk16SXdLU3MyTlRVek5uMWxiSE5sSUdsbUtHeGxZV1JUZFhKeWIyZGhkR1VwZTJsbUtDaDFibWwwY3kwOU15aytMVEVwWW5sMFpYTXVjSFZ6YUNneU16a3NNVGt4TERFNE9TbDliR1ZoWkZOMWNuSnZaMkYwWlQxdWRXeHNPMmxtS0dOdlpHVlFiMmx1ZER3eE1qZ3BlMmxtS0NoMWJtbDBjeTA5TVNrOE1DbGljbVZoYXp0aWVYUmxjeTV3ZFhOb0tHTnZaR1ZRYjJsdWRDbDlaV3h6WlNCcFppaGpiMlJsVUc5cGJuUThNakEwT0NsN2FXWW9LSFZ1YVhSekxUMHlLVHd3S1dKeVpXRnJPMko1ZEdWekxuQjFjMmdvWTI5a1pWQnZhVzUwUGo0MmZERTVNaXhqYjJSbFVHOXBiblFtTmpOOE1USTRLWDFsYkhObElHbG1LR052WkdWUWIybHVkRHcyTlRVek5pbDdhV1lvS0hWdWFYUnpMVDB6S1R3d0tXSnlaV0ZyTzJKNWRHVnpMbkIxYzJnb1kyOWtaVkJ2YVc1MFBqNHhNbnd5TWpRc1kyOWtaVkJ2YVc1MFBqNDJKall6ZkRFeU9DeGpiMlJsVUc5cGJuUW1Oak44TVRJNEtYMWxiSE5sSUdsbUtHTnZaR1ZRYjJsdWREd3hNVEUwTVRFeUtYdHBaaWdvZFc1cGRITXRQVFFwUERBcFluSmxZV3M3WW5sMFpYTXVjSFZ6YUNoamIyUmxVRzlwYm5RK1BqRTRmREkwTUN4amIyUmxVRzlwYm5RK1BqRXlKall6ZkRFeU9DeGpiMlJsVUc5cGJuUStQalltTmpOOE1USTRMR052WkdWUWIybHVkQ1kyTTN3eE1qZ3BmV1ZzYzJWN2RHaHliM2NnYm1WM0lFVnljbTl5S0Z3aVNXNTJZV3hwWkNCamIyUmxJSEJ2YVc1MFhDSXBmWDF5WlhSMWNtNGdZbmwwWlhOOVpuVnVZM1JwYjI0Z1lYTmphV2xVYjBKNWRHVnpLSE4wY2lsN2RtRnlJR0o1ZEdWQmNuSmhlVDFiWFR0bWIzSW9kbUZ5SUdrOU1EdHBQSE4wY2k1c1pXNW5kR2c3S3l0cEtYdGllWFJsUVhKeVlYa3VjSFZ6YUNoemRISXVZMmhoY2tOdlpHVkJkQ2hwS1NZeU5UVXBmWEpsZEhWeWJpQmllWFJsUVhKeVlYbDlablZ1WTNScGIyNGdkWFJtTVRac1pWUnZRbmwwWlhNb2MzUnlMSFZ1YVhSektYdDJZWElnWXl4b2FTeHNienQyWVhJZ1lubDBaVUZ5Y21GNVBWdGRPMlp2Y2loMllYSWdhVDB3TzJrOGMzUnlMbXhsYm1kMGFEc3JLMmtwZTJsbUtDaDFibWwwY3kwOU1pazhNQ2xpY21WaGF6dGpQWE4wY2k1amFHRnlRMjlrWlVGMEtHa3BPMmhwUFdNK1BqZzdiRzg5WXlVeU5UWTdZbmwwWlVGeWNtRjVMbkIxYzJnb2JHOHBPMko1ZEdWQmNuSmhlUzV3ZFhOb0tHaHBLWDF5WlhSMWNtNGdZbmwwWlVGeWNtRjVmV1oxYm1OMGFXOXVJR0poYzJVMk5GUnZRbmwwWlhNb2MzUnlLWHR5WlhSMWNtNGdZbUZ6WlRZMExuUnZRbmwwWlVGeWNtRjVLR0poYzJVMk5HTnNaV0Z1S0hOMGNpa3BmV1oxYm1OMGFXOXVJR0pzYVhSQ2RXWm1aWElvYzNKakxHUnpkQ3h2Wm1aelpYUXNiR1Z1WjNSb0tYdG1iM0lvZG1GeUlHazlNRHRwUEd4bGJtZDBhRHNySzJrcGUybG1LR2tyYjJabWMyVjBQajFrYzNRdWJHVnVaM1JvZkh4cFBqMXpjbU11YkdWdVozUm9LV0p5WldGck8yUnpkRnRwSzI5bVpuTmxkRjA5YzNKalcybGRmWEpsZEhWeWJpQnBmV1oxYm1OMGFXOXVJR2x6Ym1GdUtIWmhiQ2w3Y21WMGRYSnVJSFpoYkNFOVBYWmhiSDE5S1M1allXeHNLSFJvYVhNc2RIbHdaVzltSUdkc2IySmhiQ0U5UFZ3aWRXNWtaV1pwYm1Wa1hDSS9aMnh2WW1Gc09uUjVjR1Z2WmlCelpXeG1JVDA5WENKMWJtUmxabWx1WldSY0lqOXpaV3htT25SNWNHVnZaaUIzYVc1a2IzY2hQVDFjSW5WdVpHVm1hVzVsWkZ3aVAzZHBibVJ2ZHpwN2ZTbDlMSHRjSW1KaGMyVTJOQzFxYzF3aU9qSXNhV1ZsWlRjMU5Eb3pOeXhwYzJGeWNtRjVPalF3ZlYwc05qcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN0tHWjFibU4wYVc5dUtFSjFabVpsY2lsN1puVnVZM1JwYjI0Z2FYTkJjbkpoZVNoaGNtY3BlMmxtS0VGeWNtRjVMbWx6UVhKeVlYa3BlM0psZEhWeWJpQkJjbkpoZVM1cGMwRnljbUY1S0dGeVp5bDljbVYwZFhKdUlHOWlhbVZqZEZSdlUzUnlhVzVuS0dGeVp5azlQVDFjSWx0dlltcGxZM1FnUVhKeVlYbGRYQ0o5Wlhod2IzSjBjeTVwYzBGeWNtRjVQV2x6UVhKeVlYazdablZ1WTNScGIyNGdhWE5DYjI5c1pXRnVLR0Z5WnlsN2NtVjBkWEp1SUhSNWNHVnZaaUJoY21jOVBUMWNJbUp2YjJ4bFlXNWNJbjFsZUhCdmNuUnpMbWx6UW05dmJHVmhiajFwYzBKdmIyeGxZVzQ3Wm5WdVkzUnBiMjRnYVhOT2RXeHNLR0Z5WnlsN2NtVjBkWEp1SUdGeVp6MDlQVzUxYkd4OVpYaHdiM0owY3k1cGMwNTFiR3c5YVhOT2RXeHNPMloxYm1OMGFXOXVJR2x6VG5Wc2JFOXlWVzVrWldacGJtVmtLR0Z5WnlsN2NtVjBkWEp1SUdGeVp6MDliblZzYkgxbGVIQnZjblJ6TG1selRuVnNiRTl5Vlc1a1pXWnBibVZrUFdselRuVnNiRTl5Vlc1a1pXWnBibVZrTzJaMWJtTjBhVzl1SUdselRuVnRZbVZ5S0dGeVp5bDdjbVYwZFhKdUlIUjVjR1Z2WmlCaGNtYzlQVDFjSW01MWJXSmxjbHdpZldWNGNHOXlkSE11YVhOT2RXMWlaWEk5YVhOT2RXMWlaWEk3Wm5WdVkzUnBiMjRnYVhOVGRISnBibWNvWVhKbktYdHlaWFIxY200Z2RIbHdaVzltSUdGeVp6MDlQVndpYzNSeWFXNW5YQ0o5Wlhod2IzSjBjeTVwYzFOMGNtbHVaejFwYzFOMGNtbHVaenRtZFc1amRHbHZiaUJwYzFONWJXSnZiQ2hoY21jcGUzSmxkSFZ5YmlCMGVYQmxiMllnWVhKblBUMDlYQ0p6ZVcxaWIyeGNJbjFsZUhCdmNuUnpMbWx6VTNsdFltOXNQV2x6VTNsdFltOXNPMloxYm1OMGFXOXVJR2x6Vlc1a1pXWnBibVZrS0dGeVp5bDdjbVYwZFhKdUlHRnlaejA5UFhadmFXUWdNSDFsZUhCdmNuUnpMbWx6Vlc1a1pXWnBibVZrUFdselZXNWtaV1pwYm1Wa08yWjFibU4wYVc5dUlHbHpVbVZuUlhod0tISmxLWHR5WlhSMWNtNGdiMkpxWldOMFZHOVRkSEpwYm1jb2NtVXBQVDA5WENKYmIySnFaV04wSUZKbFowVjRjRjFjSW4xbGVIQnZjblJ6TG1selVtVm5SWGh3UFdselVtVm5SWGh3TzJaMWJtTjBhVzl1SUdselQySnFaV04wS0dGeVp5bDdjbVYwZFhKdUlIUjVjR1Z2WmlCaGNtYzlQVDFjSW05aWFtVmpkRndpSmlaaGNtY2hQVDF1ZFd4c2ZXVjRjRzl5ZEhNdWFYTlBZbXBsWTNROWFYTlBZbXBsWTNRN1puVnVZM1JwYjI0Z2FYTkVZWFJsS0dRcGUzSmxkSFZ5YmlCdlltcGxZM1JVYjFOMGNtbHVaeWhrS1QwOVBWd2lXMjlpYW1WamRDQkVZWFJsWFZ3aWZXVjRjRzl5ZEhNdWFYTkVZWFJsUFdselJHRjBaVHRtZFc1amRHbHZiaUJwYzBWeWNtOXlLR1VwZTNKbGRIVnliaUJ2WW1wbFkzUlViMU4wY21sdVp5aGxLVDA5UFZ3aVcyOWlhbVZqZENCRmNuSnZjbDFjSW54OFpTQnBibk4wWVc1alpXOW1JRVZ5Y205eWZXVjRjRzl5ZEhNdWFYTkZjbkp2Y2oxcGMwVnljbTl5TzJaMWJtTjBhVzl1SUdselJuVnVZM1JwYjI0b1lYSm5LWHR5WlhSMWNtNGdkSGx3Wlc5bUlHRnlaejA5UFZ3aVpuVnVZM1JwYjI1Y0luMWxlSEJ2Y25SekxtbHpSblZ1WTNScGIyNDlhWE5HZFc1amRHbHZianRtZFc1amRHbHZiaUJwYzFCeWFXMXBkR2wyWlNoaGNtY3BlM0psZEhWeWJpQmhjbWM5UFQxdWRXeHNmSHgwZVhCbGIyWWdZWEpuUFQwOVhDSmliMjlzWldGdVhDSjhmSFI1Y0dWdlppQmhjbWM5UFQxY0ltNTFiV0psY2x3aWZIeDBlWEJsYjJZZ1lYSm5QVDA5WENKemRISnBibWRjSW54OGRIbHdaVzltSUdGeVp6MDlQVndpYzNsdFltOXNYQ0o4ZkhSNWNHVnZaaUJoY21jOVBUMWNJblZ1WkdWbWFXNWxaRndpZldWNGNHOXlkSE11YVhOUWNtbHRhWFJwZG1VOWFYTlFjbWx0YVhScGRtVTdaWGh3YjNKMGN5NXBjMEoxWm1abGNqMUNkV1ptWlhJdWFYTkNkV1ptWlhJN1puVnVZM1JwYjI0Z2IySnFaV04wVkc5VGRISnBibWNvYnlsN2NtVjBkWEp1SUU5aWFtVmpkQzV3Y205MGIzUjVjR1V1ZEc5VGRISnBibWN1WTJGc2JDaHZLWDE5S1M1allXeHNLSFJvYVhNc2UybHpRblZtWm1WeU9uSmxjWFZwY21Vb1hDSXVMaTh1TGk5cGN5MWlkV1ptWlhJdmFXNWtaWGd1YW5OY0lpbDlLWDBzZTF3aUxpNHZMaTR2YVhNdFluVm1abVZ5TDJsdVpHVjRMbXB6WENJNk16bDlYU3czT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHQyWVhJZ1JXeGxiV1Z1ZEZSNWNHVTljbVZ4ZFdseVpTaGNJbVJ2YldWc1pXMWxiblIwZVhCbFhDSXBPM1poY2lCbGJuUnBkR2xsY3oxeVpYRjFhWEpsS0Z3aVpXNTBhWFJwWlhOY0lpazdkbUZ5SUdKdmIyeGxZVzVCZEhSeWFXSjFkR1Z6UFh0ZlgzQnliM1J2WDE4NmJuVnNiQ3hoYkd4dmQyWjFiR3h6WTNKbFpXNDZkSEoxWlN4aGMzbHVZenAwY25WbExHRjFkRzltYjJOMWN6cDBjblZsTEdGMWRHOXdiR0Y1T25SeWRXVXNZMmhsWTJ0bFpEcDBjblZsTEdOdmJuUnliMnh6T25SeWRXVXNaR1ZtWVhWc2REcDBjblZsTEdSbFptVnlPblJ5ZFdVc1pHbHpZV0pzWldRNmRISjFaU3hvYVdSa1pXNDZkSEoxWlN4cGMyMWhjRHAwY25WbExHeHZiM0E2ZEhKMVpTeHRkV3gwYVhCc1pUcDBjblZsTEcxMWRHVmtPblJ5ZFdVc2IzQmxianAwY25WbExISmxZV1J2Ym14NU9uUnlkV1VzY21WeGRXbHlaV1E2ZEhKMVpTeHlaWFpsY25ObFpEcDBjblZsTEhOamIzQmxaRHAwY25WbExITmxZVzFzWlhOek9uUnlkV1VzYzJWc1pXTjBaV1E2ZEhKMVpTeDBlWEJsYlhWemRHMWhkR05vT25SeWRXVjlPM1poY2lCMWJtVnVZMjlrWldSRmJHVnRaVzUwY3oxN1gxOXdjbTkwYjE5Zk9tNTFiR3dzYzNSNWJHVTZkSEoxWlN4elkzSnBjSFE2ZEhKMVpTeDRiWEE2ZEhKMVpTeHBabkpoYldVNmRISjFaU3h1YjJWdFltVmtPblJ5ZFdVc2JtOW1jbUZ0WlhNNmRISjFaU3h3YkdGcGJuUmxlSFE2ZEhKMVpTeHViM05qY21sd2REcDBjblZsZlR0bWRXNWpkR2x2YmlCbWIzSnRZWFJCZEhSeWN5aGhkSFJ5YVdKMWRHVnpMRzl3ZEhNcGUybG1LQ0ZoZEhSeWFXSjFkR1Z6S1hKbGRIVnlianQyWVhJZ2IzVjBjSFYwUFZ3aVhDSXNkbUZzZFdVN1ptOXlLSFpoY2lCclpYa2dhVzRnWVhSMGNtbGlkWFJsY3lsN2RtRnNkV1U5WVhSMGNtbGlkWFJsYzF0clpYbGRPMmxtS0c5MWRIQjFkQ2w3YjNWMGNIVjBLejFjSWlCY0luMXBaaWdoZG1Gc2RXVW1KbUp2YjJ4bFlXNUJkSFJ5YVdKMWRHVnpXMnRsZVYwcGUyOTFkSEIxZENzOWEyVjVmV1ZzYzJWN2IzVjBjSFYwS3oxclpYa3JKejFjSWljcktHOXdkSE11WkdWamIyUmxSVzUwYVhScFpYTS9aVzUwYVhScFpYTXVaVzVqYjJSbFdFMU1LSFpoYkhWbEtUcDJZV3gxWlNrckoxd2lKMzE5Y21WMGRYSnVJRzkxZEhCMWRIMTJZWElnYzJsdVoyeGxWR0ZuUFh0ZlgzQnliM1J2WDE4NmJuVnNiQ3hoY21WaE9uUnlkV1VzWW1GelpUcDBjblZsTEdKaGMyVm1iMjUwT25SeWRXVXNZbkk2ZEhKMVpTeGpiMnc2ZEhKMVpTeGpiMjF0WVc1a09uUnlkV1VzWlcxaVpXUTZkSEoxWlN4bWNtRnRaVHAwY25WbExHaHlPblJ5ZFdVc2FXMW5PblJ5ZFdVc2FXNXdkWFE2ZEhKMVpTeHBjMmx1WkdWNE9uUnlkV1VzYTJWNVoyVnVPblJ5ZFdVc2JHbHVhenAwY25WbExHMWxkR0U2ZEhKMVpTeHdZWEpoYlRwMGNuVmxMSE52ZFhKalpUcDBjblZsTEhSeVlXTnJPblJ5ZFdVc2QySnlPblJ5ZFdWOU8zWmhjaUJ5Wlc1a1pYSTliVzlrZFd4bExtVjRjRzl5ZEhNOVpuVnVZM1JwYjI0b1pHOXRMRzl3ZEhNcGUybG1LQ0ZCY25KaGVTNXBjMEZ5Y21GNUtHUnZiU2ttSmlGa2IyMHVZMmhsWlhKcGJ5bGtiMjA5VzJSdmJWMDdiM0IwY3oxdmNIUnpmSHg3ZlR0MllYSWdiM1YwY0hWMFBWd2lYQ0k3Wm05eUtIWmhjaUJwUFRBN2FUeGtiMjB1YkdWdVozUm9PMmtyS3lsN2RtRnlJR1ZzWlcwOVpHOXRXMmxkTzJsbUtHVnNaVzB1ZEhsd1pUMDlQVndpY205dmRGd2lLVzkxZEhCMWRDczljbVZ1WkdWeUtHVnNaVzB1WTJocGJHUnlaVzRzYjNCMGN5azdaV3h6WlNCcFppaEZiR1Z0Wlc1MFZIbHdaUzVwYzFSaFp5aGxiR1Z0S1NsdmRYUndkWFFyUFhKbGJtUmxjbFJoWnlobGJHVnRMRzl3ZEhNcE8yVnNjMlVnYVdZb1pXeGxiUzUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1UkdseVpXTjBhWFpsS1c5MWRIQjFkQ3M5Y21WdVpHVnlSR2x5WldOMGFYWmxLR1ZzWlcwcE8yVnNjMlVnYVdZb1pXeGxiUzUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1UTI5dGJXVnVkQ2x2ZFhSd2RYUXJQWEpsYm1SbGNrTnZiVzFsYm5Rb1pXeGxiU2s3Wld4elpTQnBaaWhsYkdWdExuUjVjR1U5UFQxRmJHVnRaVzUwVkhsd1pTNURSRUZVUVNsdmRYUndkWFFyUFhKbGJtUmxja05rWVhSaEtHVnNaVzBwTzJWc2MyVWdiM1YwY0hWMEt6MXlaVzVrWlhKVVpYaDBLR1ZzWlcwc2IzQjBjeWw5Y21WMGRYSnVJRzkxZEhCMWRIMDdablZ1WTNScGIyNGdjbVZ1WkdWeVZHRm5LR1ZzWlcwc2IzQjBjeWw3YVdZb1pXeGxiUzV1WVcxbFBUMDlYQ0p6ZG1kY0lpbHZjSFJ6UFh0a1pXTnZaR1ZGYm5ScGRHbGxjenB2Y0hSekxtUmxZMjlrWlVWdWRHbDBhV1Z6TEhodGJFMXZaR1U2ZEhKMVpYMDdkbUZ5SUhSaFp6MWNJanhjSWl0bGJHVnRMbTVoYldVc1lYUjBjbWxpY3oxbWIzSnRZWFJCZEhSeWN5aGxiR1Z0TG1GMGRISnBZbk1zYjNCMGN5azdhV1lvWVhSMGNtbGljeWw3ZEdGbkt6MWNJaUJjSWl0aGRIUnlhV0p6ZldsbUtHOXdkSE11ZUcxc1RXOWtaU1ltS0NGbGJHVnRMbU5vYVd4a2NtVnVmSHhsYkdWdExtTm9hV3hrY21WdUxteGxibWQwYUQwOVBUQXBLWHQwWVdjclBWd2lMejVjSW4xbGJITmxlM1JoWnlzOVhDSStYQ0k3YVdZb1pXeGxiUzVqYUdsc1pISmxiaWw3ZEdGbkt6MXlaVzVrWlhJb1pXeGxiUzVqYUdsc1pISmxiaXh2Y0hSektYMXBaaWdoYzJsdVoyeGxWR0ZuVzJWc1pXMHVibUZ0WlYxOGZHOXdkSE11ZUcxc1RXOWtaU2w3ZEdGbkt6MWNJand2WENJclpXeGxiUzV1WVcxbEsxd2lQbHdpZlgxeVpYUjFjbTRnZEdGbmZXWjFibU4wYVc5dUlISmxibVJsY2tScGNtVmpkR2wyWlNobGJHVnRLWHR5WlhSMWNtNWNJanhjSWl0bGJHVnRMbVJoZEdFclhDSStYQ0o5Wm5WdVkzUnBiMjRnY21WdVpHVnlWR1Y0ZENobGJHVnRMRzl3ZEhNcGUzWmhjaUJrWVhSaFBXVnNaVzB1WkdGMFlYeDhYQ0pjSWp0cFppaHZjSFJ6TG1SbFkyOWtaVVZ1ZEdsMGFXVnpKaVloS0dWc1pXMHVjR0Z5Wlc1MEppWmxiR1Z0TG5CaGNtVnVkQzV1WVcxbElHbHVJSFZ1Wlc1amIyUmxaRVZzWlcxbGJuUnpLU2w3WkdGMFlUMWxiblJwZEdsbGN5NWxibU52WkdWWVRVd29aR0YwWVNsOWNtVjBkWEp1SUdSaGRHRjlablZ1WTNScGIyNGdjbVZ1WkdWeVEyUmhkR0VvWld4bGJTbDdjbVYwZFhKdVhDSThJVnREUkVGVVFWdGNJaXRsYkdWdExtTm9hV3hrY21WdVd6QmRMbVJoZEdFclhDSmRYVDVjSW4xbWRXNWpkR2x2YmlCeVpXNWtaWEpEYjIxdFpXNTBLR1ZzWlcwcGUzSmxkSFZ5Ymx3aVBDRXRMVndpSzJWc1pXMHVaR0YwWVN0Y0lpMHRQbHdpZlgwc2UyUnZiV1ZzWlcxbGJuUjBlWEJsT2pnc1pXNTBhWFJwWlhNNk1qQjlYU3c0T2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHR0YjJSMWJHVXVaWGh3YjNKMGN6MTdWR1Y0ZERwY0luUmxlSFJjSWl4RWFYSmxZM1JwZG1VNlhDSmthWEpsWTNScGRtVmNJaXhEYjIxdFpXNTBPbHdpWTI5dGJXVnVkRndpTEZOamNtbHdkRHBjSW5OamNtbHdkRndpTEZOMGVXeGxPbHdpYzNSNWJHVmNJaXhVWVdjNlhDSjBZV2RjSWl4RFJFRlVRVHBjSW1Oa1lYUmhYQ0lzYVhOVVlXYzZablZ1WTNScGIyNG9aV3hsYlNsN2NtVjBkWEp1SUdWc1pXMHVkSGx3WlQwOVBWd2lkR0ZuWENKOGZHVnNaVzB1ZEhsd1pUMDlQVndpYzJOeWFYQjBYQ0o4ZkdWc1pXMHVkSGx3WlQwOVBWd2ljM1I1YkdWY0luMTlmU3g3ZlYwc09UcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2JXOWtkV3hsTG1WNGNHOXlkSE05ZTFSbGVIUTZYQ0owWlhoMFhDSXNSR2x5WldOMGFYWmxPbHdpWkdseVpXTjBhWFpsWENJc1EyOXRiV1Z1ZERwY0ltTnZiVzFsYm5SY0lpeFRZM0pwY0hRNlhDSnpZM0pwY0hSY0lpeFRkSGxzWlRwY0luTjBlV3hsWENJc1ZHRm5PbHdpZEdGblhDSXNRMFJCVkVFNlhDSmpaR0YwWVZ3aUxFUnZZM1I1Y0dVNlhDSmtiMk4wZVhCbFhDSXNhWE5VWVdjNlpuVnVZM1JwYjI0b1pXeGxiU2w3Y21WMGRYSnVJR1ZzWlcwdWRIbHdaVDA5UFZ3aWRHRm5YQ0o4ZkdWc1pXMHVkSGx3WlQwOVBWd2ljMk55YVhCMFhDSjhmR1ZzWlcwdWRIbHdaVDA5UFZ3aWMzUjViR1ZjSW4xOWZTeDdmVjBzTVRBNlcyWjFibU4wYVc5dUtISmxjWFZwY21Vc2JXOWtkV3hsTEdWNGNHOXlkSE1wZTNaaGNpQkZiR1Z0Wlc1MFZIbHdaVDF5WlhGMWFYSmxLRndpWkc5dFpXeGxiV1Z1ZEhSNWNHVmNJaWs3ZG1GeUlISmxYM2RvYVhSbGMzQmhZMlU5TDF4Y2N5c3ZaenQyWVhJZ1RtOWtaVkJ5YjNSdmRIbHdaVDF5WlhGMWFYSmxLRndpTGk5c2FXSXZibTlrWlZ3aUtUdDJZWElnUld4bGJXVnVkRkJ5YjNSdmRIbHdaVDF5WlhGMWFYSmxLRndpTGk5c2FXSXZaV3hsYldWdWRGd2lLVHRtZFc1amRHbHZiaUJFYjIxSVlXNWtiR1Z5S0dOaGJHeGlZV05yTEc5d2RHbHZibk1zWld4bGJXVnVkRU5DS1h0cFppaDBlWEJsYjJZZ1kyRnNiR0poWTJzOVBUMWNJbTlpYW1WamRGd2lLWHRsYkdWdFpXNTBRMEk5YjNCMGFXOXVjenR2Y0hScGIyNXpQV05oYkd4aVlXTnJPMk5oYkd4aVlXTnJQVzUxYkd4OVpXeHpaU0JwWmloMGVYQmxiMllnYjNCMGFXOXVjejA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdaV3hsYldWdWRFTkNQVzl3ZEdsdmJuTTdiM0IwYVc5dWN6MWtaV1poZFd4MFQzQjBjMzEwYUdsekxsOWpZV3hzWW1GamF6MWpZV3hzWW1GamF6dDBhR2x6TGw5dmNIUnBiMjV6UFc5d2RHbHZibk44ZkdSbFptRjFiSFJQY0hSek8zUm9hWE11WDJWc1pXMWxiblJEUWoxbGJHVnRaVzUwUTBJN2RHaHBjeTVrYjIwOVcxMDdkR2hwY3k1ZlpHOXVaVDFtWVd4elpUdDBhR2x6TGw5MFlXZFRkR0ZqYXoxYlhUdDBhR2x6TGw5d1lYSnpaWEk5ZEdocGN5NWZjR0Z5YzJWeWZIeHVkV3hzZlhaaGNpQmtaV1poZFd4MFQzQjBjejE3Ym05eWJXRnNhWHBsVjJocGRHVnpjR0ZqWlRwbVlXeHpaU3gzYVhSb1UzUmhjblJKYm1ScFkyVnpPbVpoYkhObGZUdEViMjFJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzV2Ym5CaGNuTmxjbWx1YVhROVpuVnVZM1JwYjI0b2NHRnljMlZ5S1h0MGFHbHpMbDl3WVhKelpYSTljR0Z5YzJWeWZUdEViMjFJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzV2Ym5KbGMyVjBQV1oxYm1OMGFXOXVLQ2w3Ukc5dFNHRnVaR3hsY2k1allXeHNLSFJvYVhNc2RHaHBjeTVmWTJGc2JHSmhZMnNzZEdocGN5NWZiM0IwYVc5dWN5eDBhR2x6TGw5bGJHVnRaVzUwUTBJcGZUdEViMjFJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzV2Ym1WdVpEMW1kVzVqZEdsdmJpZ3BlMmxtS0hSb2FYTXVYMlJ2Ym1VcGNtVjBkWEp1TzNSb2FYTXVYMlJ2Ym1VOWRISjFaVHQwYUdsekxsOXdZWEp6WlhJOWJuVnNiRHQwYUdsekxsOW9ZVzVrYkdWRFlXeHNZbUZqYXlodWRXeHNLWDA3Ukc5dFNHRnVaR3hsY2k1d2NtOTBiM1I1Y0dVdVgyaGhibVJzWlVOaGJHeGlZV05yUFVSdmJVaGhibVJzWlhJdWNISnZkRzkwZVhCbExtOXVaWEp5YjNJOVpuVnVZM1JwYjI0b1pYSnliM0lwZTJsbUtIUjVjR1Z2WmlCMGFHbHpMbDlqWVd4c1ltRmphejA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdkR2hwY3k1ZlkyRnNiR0poWTJzb1pYSnliM0lzZEdocGN5NWtiMjBwZldWc2MyVjdhV1lvWlhKeWIzSXBkR2h5YjNjZ1pYSnliM0o5ZlR0RWIyMUlZVzVrYkdWeUxuQnliM1J2ZEhsd1pTNXZibU5zYjNObGRHRm5QV1oxYm1OMGFXOXVLQ2w3ZG1GeUlHVnNaVzA5ZEdocGN5NWZkR0ZuVTNSaFkyc3VjRzl3S0NrN2FXWW9kR2hwY3k1ZlpXeGxiV1Z1ZEVOQ0tYUm9hWE11WDJWc1pXMWxiblJEUWlobGJHVnRLWDA3Ukc5dFNHRnVaR3hsY2k1d2NtOTBiM1I1Y0dVdVgyRmtaRVJ2YlVWc1pXMWxiblE5Wm5WdVkzUnBiMjRvWld4bGJXVnVkQ2w3ZG1GeUlIQmhjbVZ1ZEQxMGFHbHpMbDkwWVdkVGRHRmphMXQwYUdsekxsOTBZV2RUZEdGamF5NXNaVzVuZEdndE1WMDdkbUZ5SUhOcFlteHBibWR6UFhCaGNtVnVkRDl3WVhKbGJuUXVZMmhwYkdSeVpXNDZkR2hwY3k1a2IyMDdkbUZ5SUhCeVpYWnBiM1Z6VTJsaWJHbHVaejF6YVdKc2FXNW5jMXR6YVdKc2FXNW5jeTVzWlc1bmRHZ3RNVjA3Wld4bGJXVnVkQzV1WlhoMFBXNTFiR3c3YVdZb2RHaHBjeTVmYjNCMGFXOXVjeTUzYVhSb1UzUmhjblJKYm1ScFkyVnpLWHRsYkdWdFpXNTBMbk4wWVhKMFNXNWtaWGc5ZEdocGN5NWZjR0Z5YzJWeUxuTjBZWEowU1c1a1pYaDlhV1lvZEdocGN5NWZiM0IwYVc5dWN5NTNhWFJvUkc5dFRIWnNNU2w3Wld4bGJXVnVkQzVmWDNCeWIzUnZYMTg5Wld4bGJXVnVkQzUwZVhCbFBUMDlYQ0owWVdkY0lqOUZiR1Z0Wlc1MFVISnZkRzkwZVhCbE9rNXZaR1ZRY205MGIzUjVjR1Y5YVdZb2NISmxkbWx2ZFhOVGFXSnNhVzVuS1h0bGJHVnRaVzUwTG5CeVpYWTljSEpsZG1sdmRYTlRhV0pzYVc1bk8zQnlaWFpwYjNWelUybGliR2x1Wnk1dVpYaDBQV1ZzWlcxbGJuUjlaV3h6Wlh0bGJHVnRaVzUwTG5CeVpYWTliblZzYkgxemFXSnNhVzVuY3k1d2RYTm9LR1ZzWlcxbGJuUXBPMlZzWlcxbGJuUXVjR0Z5Wlc1MFBYQmhjbVZ1ZEh4OGJuVnNiSDA3Ukc5dFNHRnVaR3hsY2k1d2NtOTBiM1I1Y0dVdWIyNXZjR1Z1ZEdGblBXWjFibU4wYVc5dUtHNWhiV1VzWVhSMGNtbGljeWw3ZG1GeUlHVnNaVzFsYm5ROWUzUjVjR1U2Ym1GdFpUMDlQVndpYzJOeWFYQjBYQ0kvUld4bGJXVnVkRlI1Y0dVdVUyTnlhWEIwT201aGJXVTlQVDFjSW5OMGVXeGxYQ0kvUld4bGJXVnVkRlI1Y0dVdVUzUjViR1U2Uld4bGJXVnVkRlI1Y0dVdVZHRm5MRzVoYldVNmJtRnRaU3hoZEhSeWFXSnpPbUYwZEhKcFluTXNZMmhwYkdSeVpXNDZXMTE5TzNSb2FYTXVYMkZrWkVSdmJVVnNaVzFsYm5Rb1pXeGxiV1Z1ZENrN2RHaHBjeTVmZEdGblUzUmhZMnN1Y0hWemFDaGxiR1Z0Wlc1MEtYMDdSRzl0U0dGdVpHeGxjaTV3Y205MGIzUjVjR1V1YjI1MFpYaDBQV1oxYm1OMGFXOXVLR1JoZEdFcGUzWmhjaUJ1YjNKdFlXeHBlbVU5ZEdocGN5NWZiM0IwYVc5dWN5NXViM0p0WVd4cGVtVlhhR2wwWlhOd1lXTmxmSHgwYUdsekxsOXZjSFJwYjI1ekxtbG5ibTl5WlZkb2FYUmxjM0JoWTJVN2RtRnlJR3hoYzNSVVlXYzdhV1lvSVhSb2FYTXVYM1JoWjFOMFlXTnJMbXhsYm1kMGFDWW1kR2hwY3k1a2IyMHViR1Z1WjNSb0ppWW9iR0Z6ZEZSaFp6MTBhR2x6TG1SdmJWdDBhR2x6TG1SdmJTNXNaVzVuZEdndE1WMHBMblI1Y0dVOVBUMUZiR1Z0Wlc1MFZIbHdaUzVVWlhoMEtYdHBaaWh1YjNKdFlXeHBlbVVwZTJ4aGMzUlVZV2N1WkdGMFlUMG9iR0Z6ZEZSaFp5NWtZWFJoSzJSaGRHRXBMbkpsY0d4aFkyVW9jbVZmZDJocGRHVnpjR0ZqWlN4Y0lpQmNJaWw5Wld4elpYdHNZWE4wVkdGbkxtUmhkR0VyUFdSaGRHRjlmV1ZzYzJWN2FXWW9kR2hwY3k1ZmRHRm5VM1JoWTJzdWJHVnVaM1JvSmlZb2JHRnpkRlJoWnoxMGFHbHpMbDkwWVdkVGRHRmphMXQwYUdsekxsOTBZV2RUZEdGamF5NXNaVzVuZEdndE1WMHBKaVlvYkdGemRGUmhaejFzWVhOMFZHRm5MbU5vYVd4a2NtVnVXMnhoYzNSVVlXY3VZMmhwYkdSeVpXNHViR1Z1WjNSb0xURmRLU1ltYkdGemRGUmhaeTUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1VkdWNGRDbDdhV1lvYm05eWJXRnNhWHBsS1h0c1lYTjBWR0ZuTG1SaGRHRTlLR3hoYzNSVVlXY3VaR0YwWVN0a1lYUmhLUzV5WlhCc1lXTmxLSEpsWDNkb2FYUmxjM0JoWTJVc1hDSWdYQ0lwZldWc2MyVjdiR0Z6ZEZSaFp5NWtZWFJoS3oxa1lYUmhmWDFsYkhObGUybG1LRzV2Y20xaGJHbDZaU2w3WkdGMFlUMWtZWFJoTG5KbGNHeGhZMlVvY21WZmQyaHBkR1Z6Y0dGalpTeGNJaUJjSWlsOWRHaHBjeTVmWVdSa1JHOXRSV3hsYldWdWRDaDdaR0YwWVRwa1lYUmhMSFI1Y0dVNlJXeGxiV1Z1ZEZSNWNHVXVWR1Y0ZEgwcGZYMTlPMFJ2YlVoaGJtUnNaWEl1Y0hKdmRHOTBlWEJsTG05dVkyOXRiV1Z1ZEQxbWRXNWpkR2x2Ymloa1lYUmhLWHQyWVhJZ2JHRnpkRlJoWnoxMGFHbHpMbDkwWVdkVGRHRmphMXQwYUdsekxsOTBZV2RUZEdGamF5NXNaVzVuZEdndE1WMDdhV1lvYkdGemRGUmhaeVltYkdGemRGUmhaeTUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1UTI5dGJXVnVkQ2w3YkdGemRGUmhaeTVrWVhSaEt6MWtZWFJoTzNKbGRIVnlibjEyWVhJZ1pXeGxiV1Z1ZEQxN1pHRjBZVHBrWVhSaExIUjVjR1U2Uld4bGJXVnVkRlI1Y0dVdVEyOXRiV1Z1ZEgwN2RHaHBjeTVmWVdSa1JHOXRSV3hsYldWdWRDaGxiR1Z0Wlc1MEtUdDBhR2x6TGw5MFlXZFRkR0ZqYXk1d2RYTm9LR1ZzWlcxbGJuUXBmVHRFYjIxSVlXNWtiR1Z5TG5CeWIzUnZkSGx3WlM1dmJtTmtZWFJoYzNSaGNuUTlablZ1WTNScGIyNG9LWHQyWVhJZ1pXeGxiV1Z1ZEQxN1kyaHBiR1J5Wlc0NlczdGtZWFJoT2x3aVhDSXNkSGx3WlRwRmJHVnRaVzUwVkhsd1pTNVVaWGgwZlYwc2RIbHdaVHBGYkdWdFpXNTBWSGx3WlM1RFJFRlVRWDA3ZEdocGN5NWZZV1JrUkc5dFJXeGxiV1Z1ZENobGJHVnRaVzUwS1R0MGFHbHpMbDkwWVdkVGRHRmpheTV3ZFhOb0tHVnNaVzFsYm5RcGZUdEViMjFJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzV2Ym1OdmJXMWxiblJsYm1ROVJHOXRTR0Z1Wkd4bGNpNXdjbTkwYjNSNWNHVXViMjVqWkdGMFlXVnVaRDFtZFc1amRHbHZiaWdwZTNSb2FYTXVYM1JoWjFOMFlXTnJMbkJ2Y0NncGZUdEViMjFJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzV2Ym5CeWIyTmxjM05wYm1kcGJuTjBjblZqZEdsdmJqMW1kVzVqZEdsdmJpaHVZVzFsTEdSaGRHRXBlM1JvYVhNdVgyRmtaRVJ2YlVWc1pXMWxiblFvZTI1aGJXVTZibUZ0WlN4a1lYUmhPbVJoZEdFc2RIbHdaVHBGYkdWdFpXNTBWSGx3WlM1RWFYSmxZM1JwZG1WOUtYMDdiVzlrZFd4bExtVjRjRzl5ZEhNOVJHOXRTR0Z1Wkd4bGNuMHNlMXdpTGk5c2FXSXZaV3hsYldWdWRGd2lPakV4TEZ3aUxpOXNhV0l2Ym05a1pWd2lPakV5TEdSdmJXVnNaVzFsYm5SMGVYQmxPamw5WFN3eE1UcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2RtRnlJRTV2WkdWUWNtOTBiM1I1Y0dVOWNtVnhkV2x5WlNoY0lpNHZibTlrWlZ3aUtUdDJZWElnUld4bGJXVnVkRkJ5YjNSdmRIbHdaVDF0YjJSMWJHVXVaWGh3YjNKMGN6MVBZbXBsWTNRdVkzSmxZWFJsS0U1dlpHVlFjbTkwYjNSNWNHVXBPM1poY2lCa2IyMU1kbXd4UFh0MFlXZE9ZVzFsT2x3aWJtRnRaVndpZlR0UFltcGxZM1F1YTJWNWN5aGtiMjFNZG13eEtTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHdGxlU2w3ZG1GeUlITm9iM0owYUdGdVpEMWtiMjFNZG13eFcydGxlVjA3VDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtFVnNaVzFsYm5SUWNtOTBiM1I1Y0dVc2EyVjVMSHRuWlhRNlpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z2RHaHBjMXR6YUc5eWRHaGhibVJkZkh4dWRXeHNmU3h6WlhRNlpuVnVZM1JwYjI0b2RtRnNLWHQwYUdselczTm9iM0owYUdGdVpGMDlkbUZzTzNKbGRIVnliaUIyWVd4OWZTbDlLWDBzZTF3aUxpOXViMlJsWENJNk1USjlYU3d4TWpwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3ZG1GeUlFNXZaR1ZRY205MGIzUjVjR1U5Ylc5a2RXeGxMbVY0Y0c5eWRITTllMmRsZENCbWFYSnpkRU5vYVd4a0tDbDdkbUZ5SUdOb2FXeGtjbVZ1UFhSb2FYTXVZMmhwYkdSeVpXNDdjbVYwZFhKdUlHTm9hV3hrY21WdUppWmphR2xzWkhKbGJsc3dYWHg4Ym5Wc2JIMHNaMlYwSUd4aGMzUkRhR2xzWkNncGUzWmhjaUJqYUdsc1pISmxiajEwYUdsekxtTm9hV3hrY21WdU8zSmxkSFZ5YmlCamFHbHNaSEpsYmlZbVkyaHBiR1J5Wlc1YlkyaHBiR1J5Wlc0dWJHVnVaM1JvTFRGZGZIeHVkV3hzZlN4blpYUWdibTlrWlZSNWNHVW9LWHR5WlhSMWNtNGdibTlrWlZSNWNHVnpXM1JvYVhNdWRIbHdaVjE4Zkc1dlpHVlVlWEJsY3k1bGJHVnRaVzUwZlgwN2RtRnlJR1J2YlV4MmJERTllM1JoWjA1aGJXVTZYQ0p1WVcxbFhDSXNZMmhwYkdST2IyUmxjenBjSW1Ob2FXeGtjbVZ1WENJc2NHRnlaVzUwVG05a1pUcGNJbkJoY21WdWRGd2lMSEJ5WlhacGIzVnpVMmxpYkdsdVp6cGNJbkJ5WlhaY0lpeHVaWGgwVTJsaWJHbHVaenBjSW01bGVIUmNJaXh1YjJSbFZtRnNkV1U2WENKa1lYUmhYQ0o5TzNaaGNpQnViMlJsVkhsd1pYTTllMlZzWlcxbGJuUTZNU3gwWlhoME9qTXNZMlJoZEdFNk5DeGpiMjF0Wlc1ME9qaDlPMDlpYW1WamRDNXJaWGx6S0dSdmJVeDJiREVwTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvYTJWNUtYdDJZWElnYzJodmNuUm9ZVzVrUFdSdmJVeDJiREZiYTJWNVhUdFBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVG05a1pWQnliM1J2ZEhsd1pTeHJaWGtzZTJkbGREcG1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6VzNOb2IzSjBhR0Z1WkYxOGZHNTFiR3g5TEhObGREcG1kVzVqZEdsdmJpaDJZV3dwZTNSb2FYTmJjMmh2Y25Sb1lXNWtYVDEyWVd3N2NtVjBkWEp1SUhaaGJIMTlLWDBwZlN4N2ZWMHNNVE02VzJaMWJtTjBhVzl1S0hKbGNYVnBjbVVzYlc5a2RXeGxMR1Y0Y0c5eWRITXBlM1poY2lCRWIyMVZkR2xzY3oxdGIyUjFiR1V1Wlhod2IzSjBjenRiY21WeGRXbHlaU2hjSWk0dmJHbGlMM04wY21sdVoybG1lVndpS1N4eVpYRjFhWEpsS0Z3aUxpOXNhV0l2ZEhKaGRtVnljMkZzWENJcExISmxjWFZwY21Vb1hDSXVMMnhwWWk5dFlXNXBjSFZzWVhScGIyNWNJaWtzY21WeGRXbHlaU2hjSWk0dmJHbGlMM0YxWlhKNWFXNW5YQ0lwTEhKbGNYVnBjbVVvWENJdUwyeHBZaTlzWldkaFkzbGNJaWtzY21WeGRXbHlaU2hjSWk0dmJHbGlMMmhsYkhCbGNuTmNJaWxkTG1admNrVmhZMmdvWm5WdVkzUnBiMjRvWlhoMEtYdFBZbXBsWTNRdWEyVjVjeWhsZUhRcExtWnZja1ZoWTJnb1puVnVZM1JwYjI0b2EyVjVLWHRFYjIxVmRHbHNjMXRyWlhsZFBXVjRkRnRyWlhsZExtSnBibVFvUkc5dFZYUnBiSE1wZlNsOUtYMHNlMXdpTGk5c2FXSXZhR1ZzY0dWeWMxd2lPakUwTEZ3aUxpOXNhV0l2YkdWbllXTjVYQ0k2TVRVc1hDSXVMMnhwWWk5dFlXNXBjSFZzWVhScGIyNWNJam94Tml4Y0lpNHZiR2xpTDNGMVpYSjVhVzVuWENJNk1UY3NYQ0l1TDJ4cFlpOXpkSEpwYm1kcFpubGNJam94T0N4Y0lpNHZiR2xpTDNSeVlYWmxjbk5oYkZ3aU9qRTVmVjBzTVRRNlcyWjFibU4wYVc5dUtISmxjWFZwY21Vc2JXOWtkV3hsTEdWNGNHOXlkSE1wZTJWNGNHOXlkSE11Y21WdGIzWmxVM1ZpYzJWMGN6MW1kVzVqZEdsdmJpaHViMlJsY3lsN2RtRnlJR2xrZUQxdWIyUmxjeTVzWlc1bmRHZ3NibTlrWlN4aGJtTmxjM1J2Y2l4eVpYQnNZV05sTzNkb2FXeGxLQzB0YVdSNFBpMHhLWHR1YjJSbFBXRnVZMlZ6ZEc5eVBXNXZaR1Z6VzJsa2VGMDdibTlrWlhOYmFXUjRYVDF1ZFd4c08zSmxjR3hoWTJVOWRISjFaVHQzYUdsc1pTaGhibU5sYzNSdmNpbDdhV1lvYm05a1pYTXVhVzVrWlhoUFppaGhibU5sYzNSdmNpaytMVEVwZTNKbGNHeGhZMlU5Wm1Gc2MyVTdibTlrWlhNdWMzQnNhV05sS0dsa2VDd3hLVHRpY21WaGEzMWhibU5sYzNSdmNqMWhibU5sYzNSdmNpNXdZWEpsYm5SOWFXWW9jbVZ3YkdGalpTbDdibTlrWlhOYmFXUjRYVDF1YjJSbGZYMXlaWFIxY200Z2JtOWtaWE45TzNaaGNpQlFUMU5KVkVsUFRqMTdSRWxUUTA5T1RrVkRWRVZFT2pFc1VGSkZRMFZFU1U1SE9qSXNSazlNVEU5WFNVNUhPalFzUTA5T1ZFRkpUbE02T0N4RFQwNVVRVWxPUlVSZlFsazZNVFo5TzNaaGNpQmpiMjF3WVhKbFVHOXpQV1Y0Y0c5eWRITXVZMjl0Y0dGeVpVUnZZM1Z0Wlc1MFVHOXphWFJwYjI0OVpuVnVZM1JwYjI0b2JtOWtaVUVzYm05a1pVSXBlM1poY2lCaFVHRnlaVzUwY3oxYlhUdDJZWElnWWxCaGNtVnVkSE05VzEwN2RtRnlJR04xY25KbGJuUXNjMmhoY21Wa1VHRnlaVzUwTEhOcFlteHBibWR6TEdGVGFXSnNhVzVuTEdKVGFXSnNhVzVuTEdsa2VEdHBaaWh1YjJSbFFUMDlQVzV2WkdWQ0tYdHlaWFIxY200Z01IMWpkWEp5Wlc1MFBXNXZaR1ZCTzNkb2FXeGxLR04xY25KbGJuUXBlMkZRWVhKbGJuUnpMblZ1YzJocFpuUW9ZM1Z5Y21WdWRDazdZM1Z5Y21WdWREMWpkWEp5Wlc1MExuQmhjbVZ1ZEgxamRYSnlaVzUwUFc1dlpHVkNPM2RvYVd4bEtHTjFjbkpsYm5RcGUySlFZWEpsYm5SekxuVnVjMmhwWm5Rb1kzVnljbVZ1ZENrN1kzVnljbVZ1ZEQxamRYSnlaVzUwTG5CaGNtVnVkSDFwWkhnOU1EdDNhR2xzWlNoaFVHRnlaVzUwYzF0cFpIaGRQVDA5WWxCaGNtVnVkSE5iYVdSNFhTbDdhV1I0S3l0OWFXWW9hV1I0UFQwOU1DbDdjbVYwZFhKdUlGQlBVMGxVU1U5T0xrUkpVME5QVGs1RlExUkZSSDF6YUdGeVpXUlFZWEpsYm5ROVlWQmhjbVZ1ZEhOYmFXUjRMVEZkTzNOcFlteHBibWR6UFhOb1lYSmxaRkJoY21WdWRDNWphR2xzWkhKbGJqdGhVMmxpYkdsdVp6MWhVR0Z5Wlc1MGMxdHBaSGhkTzJKVGFXSnNhVzVuUFdKUVlYSmxiblJ6VzJsa2VGMDdhV1lvYzJsaWJHbHVaM011YVc1a1pYaFBaaWhoVTJsaWJHbHVaeWsrYzJsaWJHbHVaM011YVc1a1pYaFBaaWhpVTJsaWJHbHVaeWtwZTJsbUtITm9ZWEpsWkZCaGNtVnVkRDA5UFc1dlpHVkNLWHR5WlhSMWNtNGdVRTlUU1ZSSlQwNHVSazlNVEU5WFNVNUhmRkJQVTBsVVNVOU9Ma05QVGxSQlNVNUZSRjlDV1gxeVpYUjFjbTRnVUU5VFNWUkpUMDR1Ums5TVRFOVhTVTVIZldWc2MyVjdhV1lvYzJoaGNtVmtVR0Z5Wlc1MFBUMDlibTlrWlVFcGUzSmxkSFZ5YmlCUVQxTkpWRWxQVGk1UVVrVkRSVVJKVGtkOFVFOVRTVlJKVDA0dVEwOU9WRUZKVGxOOWNtVjBkWEp1SUZCUFUwbFVTVTlPTGxCU1JVTkZSRWxPUjMxOU8yVjRjRzl5ZEhNdWRXNXBjWFZsVTI5eWREMW1kVzVqZEdsdmJpaHViMlJsY3lsN2RtRnlJR2xrZUQxdWIyUmxjeTVzWlc1bmRHZ3NibTlrWlN4d2IzTnBkR2x2Ymp0dWIyUmxjejF1YjJSbGN5NXpiR2xqWlNncE8zZG9hV3hsS0MwdGFXUjRQaTB4S1h0dWIyUmxQVzV2WkdWelcybGtlRjA3Y0c5emFYUnBiMjQ5Ym05a1pYTXVhVzVrWlhoUFppaHViMlJsS1R0cFppaHdiM05wZEdsdmJqNHRNU1ltY0c5emFYUnBiMjQ4YVdSNEtYdHViMlJsY3k1emNHeHBZMlVvYVdSNExERXBmWDF1YjJSbGN5NXpiM0owS0daMWJtTjBhVzl1S0dFc1lpbDdkbUZ5SUhKbGJHRjBhWFpsUFdOdmJYQmhjbVZRYjNNb1lTeGlLVHRwWmloeVpXeGhkR2wyWlNaUVQxTkpWRWxQVGk1UVVrVkRSVVJKVGtjcGUzSmxkSFZ5YmkweGZXVnNjMlVnYVdZb2NtVnNZWFJwZG1VbVVFOVRTVlJKVDA0dVJrOU1URTlYU1U1SEtYdHlaWFIxY200Z01YMXlaWFIxY200Z01IMHBPM0psZEhWeWJpQnViMlJsYzMxOUxIdDlYU3d4TlRwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3ZG1GeUlFVnNaVzFsYm5SVWVYQmxQWEpsY1hWcGNtVW9YQ0prYjIxbGJHVnRaVzUwZEhsd1pWd2lLVHQyWVhJZ2FYTlVZV2M5Wlhod2IzSjBjeTVwYzFSaFp6MUZiR1Z0Wlc1MFZIbHdaUzVwYzFSaFp6dGxlSEJ2Y25SekxuUmxjM1JGYkdWdFpXNTBQV1oxYm1OMGFXOXVLRzl3ZEdsdmJuTXNaV3hsYldWdWRDbDdabTl5S0haaGNpQnJaWGtnYVc0Z2IzQjBhVzl1Y3lsN2FXWW9JVzl3ZEdsdmJuTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2EyVjVLU2s3Wld4elpTQnBaaWhyWlhrOVBUMWNJblJoWjE5dVlXMWxYQ0lwZTJsbUtDRnBjMVJoWnlobGJHVnRaVzUwS1h4OElXOXdkR2x2Ym5NdWRHRm5YMjVoYldVb1pXeGxiV1Z1ZEM1dVlXMWxLU2w3Y21WMGRYSnVJR1poYkhObGZYMWxiSE5sSUdsbUtHdGxlVDA5UFZ3aWRHRm5YM1I1Y0dWY0lpbDdhV1lvSVc5d2RHbHZibk11ZEdGblgzUjVjR1VvWld4bGJXVnVkQzUwZVhCbEtTbHlaWFIxY200Z1ptRnNjMlY5Wld4elpTQnBaaWhyWlhrOVBUMWNJblJoWjE5amIyNTBZV2x1YzF3aUtYdHBaaWhwYzFSaFp5aGxiR1Z0Wlc1MEtYeDhJVzl3ZEdsdmJuTXVkR0ZuWDJOdmJuUmhhVzV6S0dWc1pXMWxiblF1WkdGMFlTa3BlM0psZEhWeWJpQm1ZV3h6WlgxOVpXeHpaU0JwWmlnaFpXeGxiV1Z1ZEM1aGRIUnlhV0p6Zkh3aGIzQjBhVzl1YzF0clpYbGRLR1ZzWlcxbGJuUXVZWFIwY21saWMxdHJaWGxkS1NsN2NtVjBkWEp1SUdaaGJITmxmWDF5WlhSMWNtNGdkSEoxWlgwN2RtRnlJRU5vWldOcmN6MTdkR0ZuWDI1aGJXVTZablZ1WTNScGIyNG9ibUZ0WlNsN2FXWW9kSGx3Wlc5bUlHNWhiV1U5UFQxY0ltWjFibU4wYVc5dVhDSXBlM0psZEhWeWJpQm1kVzVqZEdsdmJpaGxiR1Z0S1h0eVpYUjFjbTRnYVhOVVlXY29aV3hsYlNrbUptNWhiV1VvWld4bGJTNXVZVzFsS1gxOVpXeHpaU0JwWmlodVlXMWxQVDA5WENJcVhDSXBlM0psZEhWeWJpQnBjMVJoWjMxbGJITmxlM0psZEhWeWJpQm1kVzVqZEdsdmJpaGxiR1Z0S1h0eVpYUjFjbTRnYVhOVVlXY29aV3hsYlNrbUptVnNaVzB1Ym1GdFpUMDlQVzVoYldWOWZYMHNkR0ZuWDNSNWNHVTZablZ1WTNScGIyNG9kSGx3WlNsN2FXWW9kSGx3Wlc5bUlIUjVjR1U5UFQxY0ltWjFibU4wYVc5dVhDSXBlM0psZEhWeWJpQm1kVzVqZEdsdmJpaGxiR1Z0S1h0eVpYUjFjbTRnZEhsd1pTaGxiR1Z0TG5SNWNHVXBmWDFsYkhObGUzSmxkSFZ5YmlCbWRXNWpkR2x2YmlobGJHVnRLWHR5WlhSMWNtNGdaV3hsYlM1MGVYQmxQVDA5ZEhsd1pYMTlmU3gwWVdkZlkyOXVkR0ZwYm5NNlpuVnVZM1JwYjI0b1pHRjBZU2w3YVdZb2RIbHdaVzltSUdSaGRHRTlQVDFjSW1aMWJtTjBhVzl1WENJcGUzSmxkSFZ5YmlCbWRXNWpkR2x2YmlobGJHVnRLWHR5WlhSMWNtNGhhWE5VWVdjb1pXeGxiU2ttSm1SaGRHRW9aV3hsYlM1a1lYUmhLWDE5Wld4elpYdHlaWFIxY200Z1puVnVZM1JwYjI0b1pXeGxiU2w3Y21WMGRYSnVJV2x6VkdGbktHVnNaVzBwSmlabGJHVnRMbVJoZEdFOVBUMWtZWFJoZlgxOWZUdG1kVzVqZEdsdmJpQm5aWFJCZEhSeWFXSkRhR1ZqYXloaGRIUnlhV0lzZG1Gc2RXVXBlMmxtS0hSNWNHVnZaaUIyWVd4MVpUMDlQVndpWm5WdVkzUnBiMjVjSWlsN2NtVjBkWEp1SUdaMWJtTjBhVzl1S0dWc1pXMHBlM0psZEhWeWJpQmxiR1Z0TG1GMGRISnBZbk1tSm5aaGJIVmxLR1ZzWlcwdVlYUjBjbWxpYzF0aGRIUnlhV0pkS1gxOVpXeHpaWHR5WlhSMWNtNGdablZ1WTNScGIyNG9aV3hsYlNsN2NtVjBkWEp1SUdWc1pXMHVZWFIwY21saWN5WW1aV3hsYlM1aGRIUnlhV0p6VzJGMGRISnBZbDA5UFQxMllXeDFaWDE5ZldaMWJtTjBhVzl1SUdOdmJXSnBibVZHZFc1amN5aGhMR0lwZTNKbGRIVnliaUJtZFc1amRHbHZiaWhsYkdWdEtYdHlaWFIxY200Z1lTaGxiR1Z0S1h4OFlpaGxiR1Z0S1gxOVpYaHdiM0owY3k1blpYUkZiR1Z0Wlc1MGN6MW1kVzVqZEdsdmJpaHZjSFJwYjI1ekxHVnNaVzFsYm5Rc2NtVmpkWEp6WlN4c2FXMXBkQ2w3ZG1GeUlHWjFibU56UFU5aWFtVmpkQzVyWlhsektHOXdkR2x2Ym5NcExtMWhjQ2htZFc1amRHbHZiaWhyWlhrcGUzWmhjaUIyWVd4MVpUMXZjSFJwYjI1elcydGxlVjA3Y21WMGRYSnVJR3RsZVNCcGJpQkRhR1ZqYTNNL1EyaGxZMnR6VzJ0bGVWMG9kbUZzZFdVcE9tZGxkRUYwZEhKcFlrTm9aV05yS0d0bGVTeDJZV3gxWlNsOUtUdHlaWFIxY200Z1puVnVZM011YkdWdVozUm9QVDA5TUQ5YlhUcDBhR2x6TG1acGJIUmxjaWhtZFc1amN5NXlaV1IxWTJVb1kyOXRZbWx1WlVaMWJtTnpLU3hsYkdWdFpXNTBMSEpsWTNWeWMyVXNiR2x0YVhRcGZUdGxlSEJ2Y25SekxtZGxkRVZzWlcxbGJuUkNlVWxrUFdaMWJtTjBhVzl1S0dsa0xHVnNaVzFsYm5Rc2NtVmpkWEp6WlNsN2FXWW9JVUZ5Y21GNUxtbHpRWEp5WVhrb1pXeGxiV1Z1ZENrcFpXeGxiV1Z1ZEQxYlpXeGxiV1Z1ZEYwN2NtVjBkWEp1SUhSb2FYTXVabWx1WkU5dVpTaG5aWFJCZEhSeWFXSkRhR1ZqYXloY0ltbGtYQ0lzYVdRcExHVnNaVzFsYm5Rc2NtVmpkWEp6WlNFOVBXWmhiSE5sS1gwN1pYaHdiM0owY3k1blpYUkZiR1Z0Wlc1MGMwSjVWR0ZuVG1GdFpUMW1kVzVqZEdsdmJpaHVZVzFsTEdWc1pXMWxiblFzY21WamRYSnpaU3hzYVcxcGRDbDdjbVYwZFhKdUlIUm9hWE11Wm1sc2RHVnlLRU5vWldOcmN5NTBZV2RmYm1GdFpTaHVZVzFsS1N4bGJHVnRaVzUwTEhKbFkzVnljMlVzYkdsdGFYUXBmVHRsZUhCdmNuUnpMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZFVlWEJsUFdaMWJtTjBhVzl1S0hSNWNHVXNaV3hsYldWdWRDeHlaV04xY25ObExHeHBiV2wwS1h0eVpYUjFjbTRnZEdocGN5NW1hV3gwWlhJb1EyaGxZMnR6TG5SaFoxOTBlWEJsS0hSNWNHVXBMR1ZzWlcxbGJuUXNjbVZqZFhKelpTeHNhVzFwZENsOWZTeDdaRzl0Wld4bGJXVnVkSFI1Y0dVNk9YMWRMREUyT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHRsZUhCdmNuUnpMbkpsYlc5MlpVVnNaVzFsYm5ROVpuVnVZM1JwYjI0b1pXeGxiU2w3YVdZb1pXeGxiUzV3Y21WMktXVnNaVzB1Y0hKbGRpNXVaWGgwUFdWc1pXMHVibVY0ZER0cFppaGxiR1Z0TG01bGVIUXBaV3hsYlM1dVpYaDBMbkJ5WlhZOVpXeGxiUzV3Y21WMk8ybG1LR1ZzWlcwdWNHRnlaVzUwS1h0MllYSWdZMmhwYkdSelBXVnNaVzB1Y0dGeVpXNTBMbU5vYVd4a2NtVnVPMk5vYVd4a2N5NXpjR3hwWTJVb1kyaHBiR1J6TG14aGMzUkpibVJsZUU5bUtHVnNaVzBwTERFcGZYMDdaWGh3YjNKMGN5NXlaWEJzWVdObFJXeGxiV1Z1ZEQxbWRXNWpkR2x2YmlobGJHVnRMSEpsY0d4aFkyVnRaVzUwS1h0MllYSWdjSEpsZGoxeVpYQnNZV05sYldWdWRDNXdjbVYyUFdWc1pXMHVjSEpsZGp0cFppaHdjbVYyS1h0d2NtVjJMbTVsZUhROWNtVndiR0ZqWlcxbGJuUjlkbUZ5SUc1bGVIUTljbVZ3YkdGalpXMWxiblF1Ym1WNGREMWxiR1Z0TG01bGVIUTdhV1lvYm1WNGRDbDdibVY0ZEM1d2NtVjJQWEpsY0d4aFkyVnRaVzUwZlhaaGNpQndZWEpsYm5ROWNtVndiR0ZqWlcxbGJuUXVjR0Z5Wlc1MFBXVnNaVzB1Y0dGeVpXNTBPMmxtS0hCaGNtVnVkQ2w3ZG1GeUlHTm9hV3hrY3oxd1lYSmxiblF1WTJocGJHUnlaVzQ3WTJocGJHUnpXMk5vYVd4a2N5NXNZWE4wU1c1a1pYaFBaaWhsYkdWdEtWMDljbVZ3YkdGalpXMWxiblI5ZlR0bGVIQnZjblJ6TG1Gd2NHVnVaRU5vYVd4a1BXWjFibU4wYVc5dUtHVnNaVzBzWTJocGJHUXBlMk5vYVd4a0xuQmhjbVZ1ZEQxbGJHVnRPMmxtS0dWc1pXMHVZMmhwYkdSeVpXNHVjSFZ6YUNoamFHbHNaQ2toUFQweEtYdDJZWElnYzJsaWJHbHVaejFsYkdWdExtTm9hV3hrY21WdVcyVnNaVzB1WTJocGJHUnlaVzR1YkdWdVozUm9MVEpkTzNOcFlteHBibWN1Ym1WNGREMWphR2xzWkR0amFHbHNaQzV3Y21WMlBYTnBZbXhwYm1jN1kyaHBiR1F1Ym1WNGREMXVkV3hzZlgwN1pYaHdiM0owY3k1aGNIQmxibVE5Wm5WdVkzUnBiMjRvWld4bGJTeHVaWGgwS1h0MllYSWdjR0Z5Wlc1MFBXVnNaVzB1Y0dGeVpXNTBMR04xY25KT1pYaDBQV1ZzWlcwdWJtVjRkRHR1WlhoMExtNWxlSFE5WTNWeWNrNWxlSFE3Ym1WNGRDNXdjbVYyUFdWc1pXMDdaV3hsYlM1dVpYaDBQVzVsZUhRN2JtVjRkQzV3WVhKbGJuUTljR0Z5Wlc1ME8ybG1LR04xY25KT1pYaDBLWHRqZFhKeVRtVjRkQzV3Y21WMlBXNWxlSFE3YVdZb2NHRnlaVzUwS1h0MllYSWdZMmhwYkdSelBYQmhjbVZ1ZEM1amFHbHNaSEpsYmp0amFHbHNaSE11YzNCc2FXTmxLR05vYVd4a2N5NXNZWE4wU1c1a1pYaFBaaWhqZFhKeVRtVjRkQ2tzTUN4dVpYaDBLWDE5Wld4elpTQnBaaWh3WVhKbGJuUXBlM0JoY21WdWRDNWphR2xzWkhKbGJpNXdkWE5vS0c1bGVIUXBmWDA3Wlhod2IzSjBjeTV3Y21Wd1pXNWtQV1oxYm1OMGFXOXVLR1ZzWlcwc2NISmxkaWw3ZG1GeUlIQmhjbVZ1ZEQxbGJHVnRMbkJoY21WdWREdHBaaWh3WVhKbGJuUXBlM1poY2lCamFHbHNaSE05Y0dGeVpXNTBMbU5vYVd4a2NtVnVPMk5vYVd4a2N5NXpjR3hwWTJVb1kyaHBiR1J6TG14aGMzUkpibVJsZUU5bUtHVnNaVzBwTERBc2NISmxkaWw5YVdZb1pXeGxiUzV3Y21WMktYdGxiR1Z0TG5CeVpYWXVibVY0ZEQxd2NtVjJmWEJ5WlhZdWNHRnlaVzUwUFhCaGNtVnVkRHR3Y21WMkxuQnlaWFk5Wld4bGJTNXdjbVYyTzNCeVpYWXVibVY0ZEQxbGJHVnRPMlZzWlcwdWNISmxkajF3Y21WMmZYMHNlMzFkTERFM09sdG1kVzVqZEdsdmJpaHlaWEYxYVhKbExHMXZaSFZzWlN4bGVIQnZjblJ6S1h0MllYSWdhWE5VWVdjOWNtVnhkV2x5WlNoY0ltUnZiV1ZzWlcxbGJuUjBlWEJsWENJcExtbHpWR0ZuTzIxdlpIVnNaUzVsZUhCdmNuUnpQWHRtYVd4MFpYSTZabWxzZEdWeUxHWnBibVE2Wm1sdVpDeG1hVzVrVDI1bFEyaHBiR1E2Wm1sdVpFOXVaVU5vYVd4a0xHWnBibVJQYm1VNlptbHVaRTl1WlN4bGVHbHpkSE5QYm1VNlpYaHBjM1J6VDI1bExHWnBibVJCYkd3NlptbHVaRUZzYkgwN1puVnVZM1JwYjI0Z1ptbHNkR1Z5S0hSbGMzUXNaV3hsYldWdWRDeHlaV04xY25ObExHeHBiV2wwS1h0cFppZ2hRWEp5WVhrdWFYTkJjbkpoZVNobGJHVnRaVzUwS1NsbGJHVnRaVzUwUFZ0bGJHVnRaVzUwWFR0cFppaDBlWEJsYjJZZ2JHbHRhWFFoUFQxY0ltNTFiV0psY2x3aWZId2hhWE5HYVc1cGRHVW9iR2x0YVhRcEtYdHNhVzFwZEQxSmJtWnBibWwwZVgxeVpYUjFjbTRnWm1sdVpDaDBaWE4wTEdWc1pXMWxiblFzY21WamRYSnpaU0U5UFdaaGJITmxMR3hwYldsMEtYMW1kVzVqZEdsdmJpQm1hVzVrS0hSbGMzUXNaV3hsYlhNc2NtVmpkWEp6WlN4c2FXMXBkQ2w3ZG1GeUlISmxjM1ZzZEQxYlhTeGphR2xzWkhNN1ptOXlLSFpoY2lCcFBUQXNhajFsYkdWdGN5NXNaVzVuZEdnN2FUeHFPMmtyS3lsN2FXWW9kR1Z6ZENobGJHVnRjMXRwWFNrcGUzSmxjM1ZzZEM1d2RYTm9LR1ZzWlcxelcybGRLVHRwWmlndExXeHBiV2wwUEQwd0tXSnlaV0ZyZldOb2FXeGtjejFsYkdWdGMxdHBYUzVqYUdsc1pISmxianRwWmloeVpXTjFjbk5sSmlaamFHbHNaSE1tSm1Ob2FXeGtjeTVzWlc1bmRHZytNQ2w3WTJocGJHUnpQV1pwYm1Rb2RHVnpkQ3hqYUdsc1pITXNjbVZqZFhKelpTeHNhVzFwZENrN2NtVnpkV3gwUFhKbGMzVnNkQzVqYjI1allYUW9ZMmhwYkdSektUdHNhVzFwZEMwOVkyaHBiR1J6TG14bGJtZDBhRHRwWmloc2FXMXBkRHc5TUNsaWNtVmhhMzE5Y21WMGRYSnVJSEpsYzNWc2RIMW1kVzVqZEdsdmJpQm1hVzVrVDI1bFEyaHBiR1FvZEdWemRDeGxiR1Z0Y3lsN1ptOXlLSFpoY2lCcFBUQXNiRDFsYkdWdGN5NXNaVzVuZEdnN2FUeHNPMmtyS3lsN2FXWW9kR1Z6ZENobGJHVnRjMXRwWFNrcGNtVjBkWEp1SUdWc1pXMXpXMmxkZlhKbGRIVnliaUJ1ZFd4c2ZXWjFibU4wYVc5dUlHWnBibVJQYm1Vb2RHVnpkQ3hsYkdWdGN5bDdkbUZ5SUdWc1pXMDliblZzYkR0bWIzSW9kbUZ5SUdrOU1DeHNQV1ZzWlcxekxteGxibWQwYUR0cFBHd21KaUZsYkdWdE8ya3JLeWw3YVdZb0lXbHpWR0ZuS0dWc1pXMXpXMmxkS1NsN1kyOXVkR2x1ZFdWOVpXeHpaU0JwWmloMFpYTjBLR1ZzWlcxelcybGRLU2w3Wld4bGJUMWxiR1Z0YzF0cFhYMWxiSE5sSUdsbUtHVnNaVzF6VzJsZExtTm9hV3hrY21WdUxteGxibWQwYUQ0d0tYdGxiR1Z0UFdacGJtUlBibVVvZEdWemRDeGxiR1Z0YzF0cFhTNWphR2xzWkhKbGJpbDlmWEpsZEhWeWJpQmxiR1Z0ZldaMWJtTjBhVzl1SUdWNGFYTjBjMDl1WlNoMFpYTjBMR1ZzWlcxektYdG1iM0lvZG1GeUlHazlNQ3hzUFdWc1pXMXpMbXhsYm1kMGFEdHBQR3c3YVNzcktYdHBaaWhwYzFSaFp5aGxiR1Z0YzF0cFhTa21KaWgwWlhOMEtHVnNaVzF6VzJsZEtYeDhaV3hsYlhOYmFWMHVZMmhwYkdSeVpXNHViR1Z1WjNSb1BqQW1KbVY0YVhOMGMwOXVaU2gwWlhOMExHVnNaVzF6VzJsZExtTm9hV3hrY21WdUtTa3BlM0psZEhWeWJpQjBjblZsZlgxeVpYUjFjbTRnWm1Gc2MyVjlablZ1WTNScGIyNGdabWx1WkVGc2JDaDBaWE4wTEdWc1pXMXpLWHQyWVhJZ2NtVnpkV3gwUFZ0ZE8yWnZjaWgyWVhJZ2FUMHdMR285Wld4bGJYTXViR1Z1WjNSb08yazhhanRwS3lzcGUybG1LQ0ZwYzFSaFp5aGxiR1Z0YzF0cFhTa3BZMjl1ZEdsdWRXVTdhV1lvZEdWemRDaGxiR1Z0YzF0cFhTa3BjbVZ6ZFd4MExuQjFjMmdvWld4bGJYTmJhVjBwTzJsbUtHVnNaVzF6VzJsZExtTm9hV3hrY21WdUxteGxibWQwYUQ0d0tYdHlaWE4xYkhROWNtVnpkV3gwTG1OdmJtTmhkQ2htYVc1a1FXeHNLSFJsYzNRc1pXeGxiWE5iYVYwdVkyaHBiR1J5Wlc0cEtYMTljbVYwZFhKdUlISmxjM1ZzZEgxOUxIdGtiMjFsYkdWdFpXNTBkSGx3WlRvNWZWMHNNVGc2VzJaMWJtTjBhVzl1S0hKbGNYVnBjbVVzYlc5a2RXeGxMR1Y0Y0c5eWRITXBlM1poY2lCRmJHVnRaVzUwVkhsd1pUMXlaWEYxYVhKbEtGd2laRzl0Wld4bGJXVnVkSFI1Y0dWY0lpa3NaMlYwVDNWMFpYSklWRTFNUFhKbGNYVnBjbVVvWENKa2IyMHRjMlZ5YVdGc2FYcGxjbHdpS1N4cGMxUmhaejFGYkdWdFpXNTBWSGx3WlM1cGMxUmhaenR0YjJSMWJHVXVaWGh3YjNKMGN6MTdaMlYwU1c1dVpYSklWRTFNT21kbGRFbHVibVZ5U0ZSTlRDeG5aWFJQZFhSbGNraFVUVXc2WjJWMFQzVjBaWEpJVkUxTUxHZGxkRlJsZUhRNloyVjBWR1Y0ZEgwN1puVnVZM1JwYjI0Z1oyVjBTVzV1WlhKSVZFMU1LR1ZzWlcwc2IzQjBjeWw3Y21WMGRYSnVJR1ZzWlcwdVkyaHBiR1J5Wlc0L1pXeGxiUzVqYUdsc1pISmxiaTV0WVhBb1puVnVZM1JwYjI0b1pXeGxiU2w3Y21WMGRYSnVJR2RsZEU5MWRHVnlTRlJOVENobGJHVnRMRzl3ZEhNcGZTa3VhbTlwYmloY0lsd2lLVHBjSWx3aWZXWjFibU4wYVc5dUlHZGxkRlJsZUhRb1pXeGxiU2w3YVdZb1FYSnlZWGt1YVhOQmNuSmhlU2hsYkdWdEtTbHlaWFIxY200Z1pXeGxiUzV0WVhBb1oyVjBWR1Y0ZENrdWFtOXBiaWhjSWx3aUtUdHBaaWhwYzFSaFp5aGxiR1Z0S1h4OFpXeGxiUzUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1UTBSQlZFRXBjbVYwZFhKdUlHZGxkRlJsZUhRb1pXeGxiUzVqYUdsc1pISmxiaWs3YVdZb1pXeGxiUzUwZVhCbFBUMDlSV3hsYldWdWRGUjVjR1V1VkdWNGRDbHlaWFIxY200Z1pXeGxiUzVrWVhSaE8zSmxkSFZ5Ymx3aVhDSjlmU3g3WENKa2IyMHRjMlZ5YVdGc2FYcGxjbHdpT2pjc1pHOXRaV3hsYldWdWRIUjVjR1U2T1gxZExERTVPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdDJZWElnWjJWMFEyaHBiR1J5Wlc0OVpYaHdiM0owY3k1blpYUkRhR2xzWkhKbGJqMW1kVzVqZEdsdmJpaGxiR1Z0S1h0eVpYUjFjbTRnWld4bGJTNWphR2xzWkhKbGJuMDdkbUZ5SUdkbGRGQmhjbVZ1ZEQxbGVIQnZjblJ6TG1kbGRGQmhjbVZ1ZEQxbWRXNWpkR2x2YmlobGJHVnRLWHR5WlhSMWNtNGdaV3hsYlM1d1lYSmxiblI5TzJWNGNHOXlkSE11WjJWMFUybGliR2x1WjNNOVpuVnVZM1JwYjI0b1pXeGxiU2w3ZG1GeUlIQmhjbVZ1ZEQxblpYUlFZWEpsYm5Rb1pXeGxiU2s3Y21WMGRYSnVJSEJoY21WdWREOW5aWFJEYUdsc1pISmxiaWh3WVhKbGJuUXBPbHRsYkdWdFhYMDdaWGh3YjNKMGN5NW5aWFJCZEhSeWFXSjFkR1ZXWVd4MVpUMW1kVzVqZEdsdmJpaGxiR1Z0TEc1aGJXVXBlM0psZEhWeWJpQmxiR1Z0TG1GMGRISnBZbk1tSm1Wc1pXMHVZWFIwY21saWMxdHVZVzFsWFgwN1pYaHdiM0owY3k1b1lYTkJkSFJ5YVdJOVpuVnVZM1JwYjI0b1pXeGxiU3h1WVcxbEtYdHlaWFIxY200aElXVnNaVzB1WVhSMGNtbGljeVltYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNobGJHVnRMbUYwZEhKcFluTXNibUZ0WlNsOU8yVjRjRzl5ZEhNdVoyVjBUbUZ0WlQxbWRXNWpkR2x2YmlobGJHVnRLWHR5WlhSMWNtNGdaV3hsYlM1dVlXMWxmWDBzZTMxZExESXdPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdDJZWElnWlc1amIyUmxQWEpsY1hWcGNtVW9YQ0l1TDJ4cFlpOWxibU52WkdVdWFuTmNJaWtzWkdWamIyUmxQWEpsY1hWcGNtVW9YQ0l1TDJ4cFlpOWtaV052WkdVdWFuTmNJaWs3Wlhod2IzSjBjeTVrWldOdlpHVTlablZ1WTNScGIyNG9aR0YwWVN4c1pYWmxiQ2w3Y21WMGRYSnVLQ0ZzWlhabGJIeDhiR1YyWld3OFBUQS9aR1ZqYjJSbExsaE5URHBrWldOdlpHVXVTRlJOVENrb1pHRjBZU2w5TzJWNGNHOXlkSE11WkdWamIyUmxVM1J5YVdOMFBXWjFibU4wYVc5dUtHUmhkR0VzYkdWMlpXd3BlM0psZEhWeWJpZ2hiR1YyWld4OGZHeGxkbVZzUEQwd1AyUmxZMjlrWlM1WVRVdzZaR1ZqYjJSbExraFVUVXhUZEhKcFkzUXBLR1JoZEdFcGZUdGxlSEJ2Y25SekxtVnVZMjlrWlQxbWRXNWpkR2x2Ymloa1lYUmhMR3hsZG1Wc0tYdHlaWFIxY200b0lXeGxkbVZzZkh4c1pYWmxiRHc5TUQ5bGJtTnZaR1V1V0UxTU9tVnVZMjlrWlM1SVZFMU1LU2hrWVhSaEtYMDdaWGh3YjNKMGN5NWxibU52WkdWWVRVdzlaVzVqYjJSbExsaE5URHRsZUhCdmNuUnpMbVZ1WTI5a1pVaFVUVXcwUFdWNGNHOXlkSE11Wlc1amIyUmxTRlJOVERVOVpYaHdiM0owY3k1bGJtTnZaR1ZJVkUxTVBXVnVZMjlrWlM1SVZFMU1PMlY0Y0c5eWRITXVaR1ZqYjJSbFdFMU1QV1Y0Y0c5eWRITXVaR1ZqYjJSbFdFMU1VM1J5YVdOMFBXUmxZMjlrWlM1WVRVdzdaWGh3YjNKMGN5NWtaV052WkdWSVZFMU1ORDFsZUhCdmNuUnpMbVJsWTI5a1pVaFVUVXcxUFdWNGNHOXlkSE11WkdWamIyUmxTRlJOVEQxa1pXTnZaR1V1U0ZSTlREdGxlSEJ2Y25SekxtUmxZMjlrWlVoVVRVdzBVM1J5YVdOMFBXVjRjRzl5ZEhNdVpHVmpiMlJsU0ZSTlREVlRkSEpwWTNROVpYaHdiM0owY3k1a1pXTnZaR1ZJVkUxTVUzUnlhV04wUFdSbFkyOWtaUzVJVkUxTVUzUnlhV04wTzJWNGNHOXlkSE11WlhOallYQmxQV1Z1WTI5a1pTNWxjMk5oY0dWOUxIdGNJaTR2YkdsaUwyUmxZMjlrWlM1cWMxd2lPakl4TEZ3aUxpOXNhV0l2Wlc1amIyUmxMbXB6WENJNk1qTjlYU3d5TVRwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3ZG1GeUlHVnVkR2wwZVUxaGNEMXlaWEYxYVhKbEtGd2lMaTR2YldGd2N5OWxiblJwZEdsbGN5NXFjMjl1WENJcExHeGxaMkZqZVUxaGNEMXlaWEYxYVhKbEtGd2lMaTR2YldGd2N5OXNaV2RoWTNrdWFuTnZibHdpS1N4NGJXeE5ZWEE5Y21WeGRXbHlaU2hjSWk0dUwyMWhjSE12ZUcxc0xtcHpiMjVjSWlrc1pHVmpiMlJsUTI5a1pWQnZhVzUwUFhKbGNYVnBjbVVvWENJdUwyUmxZMjlrWlY5amIyUmxjRzlwYm5RdWFuTmNJaWs3ZG1GeUlHUmxZMjlrWlZoTlRGTjBjbWxqZEQxblpYUlRkSEpwWTNSRVpXTnZaR1Z5S0hodGJFMWhjQ2tzWkdWamIyUmxTRlJOVEZOMGNtbGpkRDFuWlhSVGRISnBZM1JFWldOdlpHVnlLR1Z1ZEdsMGVVMWhjQ2s3Wm5WdVkzUnBiMjRnWjJWMFUzUnlhV04wUkdWamIyUmxjaWh0WVhBcGUzWmhjaUJyWlhselBVOWlhbVZqZEM1clpYbHpLRzFoY0NrdWFtOXBiaWhjSW54Y0lpa3NjbVZ3YkdGalpUMW5aWFJTWlhCc1lXTmxjaWh0WVhBcE8ydGxlWE1yUFZ3aWZDTmJlRmhkVzF4Y1hGeGtZUzFtUVMxR1hTdDhJMXhjWEZ4a0sxd2lPM1poY2lCeVpUMXVaWGNnVW1WblJYaHdLRndpSmlnL09sd2lLMnRsZVhNclhDSXBPMXdpTEZ3aVoxd2lLVHR5WlhSMWNtNGdablZ1WTNScGIyNG9jM1J5S1h0eVpYUjFjbTRnVTNSeWFXNW5LSE4wY2lrdWNtVndiR0ZqWlNoeVpTeHlaWEJzWVdObEtYMTlkbUZ5SUdSbFkyOWtaVWhVVFV3OVpuVnVZM1JwYjI0b0tYdDJZWElnYkdWbllXTjVQVTlpYW1WamRDNXJaWGx6S0d4bFoyRmplVTFoY0NrdWMyOXlkQ2h6YjNKMFpYSXBPM1poY2lCclpYbHpQVTlpYW1WamRDNXJaWGx6S0dWdWRHbDBlVTFoY0NrdWMyOXlkQ2h6YjNKMFpYSXBPMlp2Y2loMllYSWdhVDB3TEdvOU1EdHBQR3RsZVhNdWJHVnVaM1JvTzJrckt5bDdhV1lvYkdWbllXTjVXMnBkUFQwOWEyVjVjMXRwWFNsN2EyVjVjMXRwWFNzOVhDSTdQMXdpTzJvckszMWxiSE5sZTJ0bGVYTmJhVjByUFZ3aU8xd2lmWDEyWVhJZ2NtVTlibVYzSUZKbFowVjRjQ2hjSWlZb1B6cGNJaXRyWlhsekxtcHZhVzRvWENKOFhDSXBLMXdpZkNOYmVGaGRXMXhjWEZ4a1lTMW1RUzFHWFNzN1Azd2pYRnhjWEdRck96OHBYQ0lzWENKblhDSXBMSEpsY0d4aFkyVTlaMlYwVW1Wd2JHRmpaWElvWlc1MGFYUjVUV0Z3S1R0bWRXNWpkR2x2YmlCeVpYQnNZV05sY2loemRISXBlMmxtS0hOMGNpNXpkV0p6ZEhJb0xURXBJVDA5WENJN1hDSXBjM1J5S3oxY0lqdGNJanR5WlhSMWNtNGdjbVZ3YkdGalpTaHpkSElwZlhKbGRIVnliaUJtZFc1amRHbHZiaWh6ZEhJcGUzSmxkSFZ5YmlCVGRISnBibWNvYzNSeUtTNXlaWEJzWVdObEtISmxMSEpsY0d4aFkyVnlLWDE5S0NrN1puVnVZM1JwYjI0Z2MyOXlkR1Z5S0dFc1lpbDdjbVYwZFhKdUlHRThZajh4T2kweGZXWjFibU4wYVc5dUlHZGxkRkpsY0d4aFkyVnlLRzFoY0NsN2NtVjBkWEp1SUdaMWJtTjBhVzl1SUhKbGNHeGhZMlVvYzNSeUtYdHBaaWh6ZEhJdVkyaGhja0YwS0RFcFBUMDlYQ0lqWENJcGUybG1LSE4wY2k1amFHRnlRWFFvTWlrOVBUMWNJbGhjSW54OGMzUnlMbU5vWVhKQmRDZ3lLVDA5UFZ3aWVGd2lLWHR5WlhSMWNtNGdaR1ZqYjJSbFEyOWtaVkJ2YVc1MEtIQmhjbk5sU1c1MEtITjBjaTV6ZFdKemRISW9NeWtzTVRZcEtYMXlaWFIxY200Z1pHVmpiMlJsUTI5a1pWQnZhVzUwS0hCaGNuTmxTVzUwS0hOMGNpNXpkV0p6ZEhJb01pa3NNVEFwS1gxeVpYUjFjbTRnYldGd1czTjBjaTV6YkdsalpTZ3hMQzB4S1YwN1hHNTlmVzF2WkhWc1pTNWxlSEJ2Y25SelBYdFlUVXc2WkdWamIyUmxXRTFNVTNSeWFXTjBMRWhVVFV3NlpHVmpiMlJsU0ZSTlRDeElWRTFNVTNSeWFXTjBPbVJsWTI5a1pVaFVUVXhUZEhKcFkzUjlmU3g3WENJdUxpOXRZWEJ6TDJWdWRHbDBhV1Z6TG1wemIyNWNJam95TlN4Y0lpNHVMMjFoY0hNdmJHVm5ZV041TG1wemIyNWNJam95Tml4Y0lpNHVMMjFoY0hNdmVHMXNMbXB6YjI1Y0lqb3lOeXhjSWk0dlpHVmpiMlJsWDJOdlpHVndiMmx1ZEM1cWMxd2lPakl5ZlYwc01qSTZXMloxYm1OMGFXOXVLSEpsY1hWcGNtVXNiVzlrZFd4bExHVjRjRzl5ZEhNcGUzWmhjaUJrWldOdlpHVk5ZWEE5Y21WeGRXbHlaU2hjSWk0dUwyMWhjSE12WkdWamIyUmxMbXB6YjI1Y0lpazdiVzlrZFd4bExtVjRjRzl5ZEhNOVpHVmpiMlJsUTI5a1pWQnZhVzUwTzJaMWJtTjBhVzl1SUdSbFkyOWtaVU52WkdWUWIybHVkQ2hqYjJSbFVHOXBiblFwZTJsbUtHTnZaR1ZRYjJsdWRENDlOVFV5T1RZbUptTnZaR1ZRYjJsdWREdzlOVGN6TkROOGZHTnZaR1ZRYjJsdWRENHhNVEUwTVRFeEtYdHlaWFIxY201Y0l1Ky92VndpZldsbUtHTnZaR1ZRYjJsdWRDQnBiaUJrWldOdlpHVk5ZWEFwZTJOdlpHVlFiMmx1ZEQxa1pXTnZaR1ZOWVhCYlkyOWtaVkJ2YVc1MFhYMTJZWElnYjNWMGNIVjBQVndpWENJN2FXWW9ZMjlrWlZCdmFXNTBQalkxTlRNMUtYdGpiMlJsVUc5cGJuUXRQVFkxTlRNMk8yOTFkSEIxZENzOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGpiMlJsVUc5cGJuUStQajR4TUNZeE1ESXpmRFUxTWprMktUdGpiMlJsVUc5cGJuUTlOVFl6TWpCOFkyOWtaVkJ2YVc1MEpqRXdNak45YjNWMGNIVjBLejFUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsS0dOdlpHVlFiMmx1ZENrN2NtVjBkWEp1SUc5MWRIQjFkSDE5TEh0Y0lpNHVMMjFoY0hNdlpHVmpiMlJsTG1wemIyNWNJam95TkgxZExESXpPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdDJZWElnYVc1MlpYSnpaVmhOVEQxblpYUkpiblpsY25ObFQySnFLSEpsY1hWcGNtVW9YQ0l1TGk5dFlYQnpMM2h0YkM1cWMyOXVYQ0lwS1N4NGJXeFNaWEJzWVdObGNqMW5aWFJKYm5abGNuTmxVbVZ3YkdGalpYSW9hVzUyWlhKelpWaE5UQ2s3Wlhod2IzSjBjeTVZVFV3OVoyVjBTVzUyWlhKelpTaHBiblpsY25ObFdFMU1MSGh0YkZKbGNHeGhZMlZ5S1R0MllYSWdhVzUyWlhKelpVaFVUVXc5WjJWMFNXNTJaWEp6WlU5aWFpaHlaWEYxYVhKbEtGd2lMaTR2YldGd2N5OWxiblJwZEdsbGN5NXFjMjl1WENJcEtTeG9kRzFzVW1Wd2JHRmpaWEk5WjJWMFNXNTJaWEp6WlZKbGNHeGhZMlZ5S0dsdWRtVnljMlZJVkUxTUtUdGxlSEJ2Y25SekxraFVUVXc5WjJWMFNXNTJaWEp6WlNocGJuWmxjbk5sU0ZSTlRDeG9kRzFzVW1Wd2JHRmpaWElwTzJaMWJtTjBhVzl1SUdkbGRFbHVkbVZ5YzJWUFltb29iMkpxS1h0eVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb2IySnFLUzV6YjNKMEtDa3VjbVZrZFdObEtHWjFibU4wYVc5dUtHbHVkbVZ5YzJVc2JtRnRaU2w3YVc1MlpYSnpaVnR2WW1wYmJtRnRaVjFkUFZ3aUpsd2lLMjVoYldVclhDSTdYQ0k3Y21WMGRYSnVJR2x1ZG1WeWMyVjlMSHQ5S1gxbWRXNWpkR2x2YmlCblpYUkpiblpsY25ObFVtVndiR0ZqWlhJb2FXNTJaWEp6WlNsN2RtRnlJSE5wYm1kc1pUMWJYU3h0ZFd4MGFYQnNaVDFiWFR0UFltcGxZM1F1YTJWNWN5aHBiblpsY25ObEtTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUtHc3BlMmxtS0dzdWJHVnVaM1JvUFQwOU1TbDdjMmx1WjJ4bExuQjFjMmdvWENKY1hGeGNYQ0lyYXlsOVpXeHpaWHR0ZFd4MGFYQnNaUzV3ZFhOb0tHc3BmWDBwTzIxMWJIUnBjR3hsTG5WdWMyaHBablFvWENKYlhDSXJjMmx1WjJ4bExtcHZhVzRvWENKY0lpa3JYQ0pkWENJcE8zSmxkSFZ5YmlCdVpYY2dVbVZuUlhod0tHMTFiSFJwY0d4bExtcHZhVzRvWENKOFhDSXBMRndpWjF3aUtYMTJZWElnY21WZmJtOXVRVk5EU1VrOUwxdGVYRnd3TFZ4Y2VEZEdYUzluTEhKbFgyRnpkSEpoYkZONWJXSnZiSE05TDF0Y1hIVkVPREF3TFZ4Y2RVUkNSa1pkVzF4Y2RVUkRNREF0WEZ4MVJFWkdSbDB2Wnp0bWRXNWpkR2x2YmlCemFXNW5iR1ZEYUdGeVVtVndiR0ZqWlhJb1l5bDdjbVYwZFhKdVhDSW1JM2hjSWl0akxtTm9ZWEpEYjJSbFFYUW9NQ2t1ZEc5VGRISnBibWNvTVRZcExuUnZWWEJ3WlhKRFlYTmxLQ2tyWENJN1hDSjlablZ1WTNScGIyNGdZWE4wY21Gc1VtVndiR0ZqWlhJb1l5bDdkbUZ5SUdocFoyZzlZeTVqYUdGeVEyOWtaVUYwS0RBcE8zWmhjaUJzYjNjOVl5NWphR0Z5UTI5a1pVRjBLREVwTzNaaGNpQmpiMlJsVUc5cGJuUTlLR2hwWjJndE5UVXlPVFlwS2pFd01qUXJiRzkzTFRVMk16SXdLelkxTlRNMk8zSmxkSFZ5Ymx3aUppTjRYQ0lyWTI5a1pWQnZhVzUwTG5SdlUzUnlhVzVuS0RFMktTNTBiMVZ3Y0dWeVEyRnpaU2dwSzF3aU8xd2lmV1oxYm1OMGFXOXVJR2RsZEVsdWRtVnljMlVvYVc1MlpYSnpaU3h5WlNsN1puVnVZM1JwYjI0Z1puVnVZeWh1WVcxbEtYdHlaWFIxY200Z2FXNTJaWEp6WlZ0dVlXMWxYWDF5WlhSMWNtNGdablZ1WTNScGIyNG9aR0YwWVNsN2NtVjBkWEp1SUdSaGRHRXVjbVZ3YkdGalpTaHlaU3htZFc1aktTNXlaWEJzWVdObEtISmxYMkZ6ZEhKaGJGTjViV0p2YkhNc1lYTjBjbUZzVW1Wd2JHRmpaWElwTG5KbGNHeGhZMlVvY21WZmJtOXVRVk5EU1Vrc2MybHVaMnhsUTJoaGNsSmxjR3hoWTJWeUtYMTlkbUZ5SUhKbFgzaHRiRU5vWVhKelBXZGxkRWx1ZG1WeWMyVlNaWEJzWVdObGNpaHBiblpsY25ObFdFMU1LVHRtZFc1amRHbHZiaUJsYzJOaGNHVllUVXdvWkdGMFlTbDdjbVYwZFhKdUlHUmhkR0V1Y21Wd2JHRmpaU2h5WlY5NGJXeERhR0Z5Y3l4emFXNW5iR1ZEYUdGeVVtVndiR0ZqWlhJcExuSmxjR3hoWTJVb2NtVmZZWE4wY21Gc1UzbHRZbTlzY3l4aGMzUnlZV3hTWlhCc1lXTmxjaWt1Y21Wd2JHRmpaU2h5WlY5dWIyNUJVME5KU1N4emFXNW5iR1ZEYUdGeVVtVndiR0ZqWlhJcGZXVjRjRzl5ZEhNdVpYTmpZWEJsUFdWelkyRndaVmhOVEgwc2Uxd2lMaTR2YldGd2N5OWxiblJwZEdsbGN5NXFjMjl1WENJNk1qVXNYQ0l1TGk5dFlYQnpMM2h0YkM1cWMyOXVYQ0k2TWpkOVhTd3lORHBiWm5WdVkzUnBiMjRvY21WeGRXbHlaU3h0YjJSMWJHVXNaWGh3YjNKMGN5bDdiVzlrZFd4bExtVjRjRzl5ZEhNOWV6QTZOalUxTXpNc01USTRPamd6TmpRc01UTXdPamd5TVRnc01UTXhPalF3TWl3eE16STZPREl5TWl3eE16TTZPREl6TUN3eE16UTZPREl5TkN3eE16VTZPREl5TlN3eE16WTZOekV3TERFek56bzRNalF3TERFek9Eb3pOVElzTVRNNU9qZ3lORGtzTVRRd09qTXpPQ3d4TkRJNk16Z3hMREUwTlRvNE1qRTJMREUwTmpvNE1qRTNMREUwTnpvNE1qSXdMREUwT0RvNE1qSXhMREUwT1RvNE1qSTJMREUxTURvNE1qRXhMREUxTVRvNE1qRXlMREUxTWpvM016SXNNVFV6T2pnME9ESXNNVFUwT2pNMU15d3hOVFU2T0RJMU1Dd3hOVFk2TXpNNUxERTFPRG96T0RJc01UVTVPak0zTm4xOUxIdDlYU3d5TlRwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3Ylc5a2RXeGxMbVY0Y0c5eWRITTllMEZoWTNWMFpUcGNJc09CWENJc1lXRmpkWFJsT2x3aXc2RmNJaXhCWW5KbGRtVTZYQ0xFZ2x3aUxHRmljbVYyWlRwY0lzU0RYQ0lzWVdNNlhDTGlpTDVjSWl4aFkyUTZYQ0xpaUw5Y0lpeGhZMFU2WENMaWlMN01zMXdpTEVGamFYSmpPbHdpdzRKY0lpeGhZMmx5WXpwY0lzT2lYQ0lzWVdOMWRHVTZYQ0xDdEZ3aUxFRmplVHBjSXRDUVhDSXNZV041T2x3aTBMQmNJaXhCUld4cFp6cGNJc09HWENJc1lXVnNhV2M2WENMRHBsd2lMR0ZtT2x3aTRvR2hYQ0lzUVdaeU9sd2k4SjJVaEZ3aUxHRm1janBjSXZDZGxKNWNJaXhCWjNKaGRtVTZYQ0xEZ0Z3aUxHRm5jbUYyWlRwY0lzT2dYQ0lzWVd4bFpuTjViVHBjSXVLRXRWd2lMR0ZzWlhCb09sd2k0b1MxWENJc1FXeHdhR0U2WENMT2tWd2lMR0ZzY0doaE9sd2l6ckZjSWl4QmJXRmpjanBjSXNTQVhDSXNZVzFoWTNJNlhDTEVnVndpTEdGdFlXeG5PbHdpNHFpL1hDSXNZVzF3T2x3aUpsd2lMRUZOVURwY0lpWmNJaXhoYm1SaGJtUTZYQ0xpcVpWY0lpeEJibVE2WENMaXFaTmNJaXhoYm1RNlhDTGlpS2RjSWl4aGJtUmtPbHdpNHFtY1hDSXNZVzVrYzJ4dmNHVTZYQ0xpcVpoY0lpeGhibVIyT2x3aTRxbWFYQ0lzWVc1bk9sd2k0b2lnWENJc1lXNW5aVHBjSXVLbXBGd2lMR0Z1WjJ4bE9sd2k0b2lnWENJc1lXNW5iWE5rWVdFNlhDTGlwcWhjSWl4aGJtZHRjMlJoWWpwY0l1S21xVndpTEdGdVoyMXpaR0ZqT2x3aTRxYXFYQ0lzWVc1bmJYTmtZV1E2WENMaXBxdGNJaXhoYm1kdGMyUmhaVHBjSXVLbXJGd2lMR0Z1WjIxelpHRm1PbHdpNHFhdFhDSXNZVzVuYlhOa1lXYzZYQ0xpcHE1Y0lpeGhibWR0YzJSaGFEcGNJdUttcjF3aUxHRnVaMjF6WkRwY0l1S0lvVndpTEdGdVozSjBPbHdpNG9pZlhDSXNZVzVuY25SMllqcGNJdUtLdmx3aUxHRnVaM0owZG1Ka09sd2k0cWFkWENJc1lXNW5jM0JvT2x3aTRvaWlYQ0lzWVc1bmMzUTZYQ0xEaFZ3aUxHRnVaM3BoY25JNlhDTGlqYnhjSWl4QmIyZHZianBjSXNTRVhDSXNZVzluYjI0NlhDTEVoVndpTEVGdmNHWTZYQ0x3blpTNFhDSXNZVzl3WmpwY0l2Q2RsWkpjSWl4aGNHRmphWEk2WENMaXFhOWNJaXhoY0RwY0l1S0ppRndpTEdGd1JUcGNJdUtwc0Z3aUxHRndaVHBjSXVLSmlsd2lMR0Z3YVdRNlhDTGlpWXRjSWl4aGNHOXpPbHdpSjF3aUxFRndjR3g1Um5WdVkzUnBiMjQ2WENMaWdhRmNJaXhoY0hCeWIzZzZYQ0xpaVloY0lpeGhjSEJ5YjNobGNUcGNJdUtKaWx3aUxFRnlhVzVuT2x3aXc0VmNJaXhoY21sdVp6cGNJc09sWENJc1FYTmpjanBjSXZDZGtweGNJaXhoYzJOeU9sd2k4SjJTdGx3aUxFRnpjMmxuYmpwY0l1S0psRndpTEdGemREcGNJaXBjSWl4aGMzbHRjRHBjSXVLSmlGd2lMR0Z6ZVcxd1pYRTZYQ0xpaVkxY0lpeEJkR2xzWkdVNlhDTERnMXdpTEdGMGFXeGtaVHBjSXNPalhDSXNRWFZ0YkRwY0lzT0VYQ0lzWVhWdGJEcGNJc09rWENJc1lYZGpiMjVwYm5RNlhDTGlpTE5jSWl4aGQybHVkRHBjSXVLb2tWd2lMR0poWTJ0amIyNW5PbHdpNG9tTVhDSXNZbUZqYTJWd2MybHNiMjQ2WENMUHRsd2lMR0poWTJ0d2NtbHRaVHBjSXVLQXRWd2lMR0poWTJ0emFXMDZYQ0xpaUwxY0lpeGlZV05yYzJsdFpYRTZYQ0xpaTQxY0lpeENZV05yYzJ4aGMyZzZYQ0xpaUpaY0lpeENZWEoyT2x3aTRxdW5YQ0lzWW1GeWRtVmxPbHdpNG9xOVhDSXNZbUZ5ZDJWa09sd2k0b3lGWENJc1FtRnlkMlZrT2x3aTRveUdYQ0lzWW1GeWQyVmtaMlU2WENMaWpJVmNJaXhpWW5Kck9sd2k0bzYxWENJc1ltSnlhM1JpY21zNlhDTGlqclpjSWl4aVkyOXVaenBjSXVLSmpGd2lMRUpqZVRwY0l0Q1JYQ0lzWW1ONU9sd2kwTEZjSWl4aVpIRjFienBjSXVLQW5sd2lMR0psWTJGMWN6cGNJdUtJdFZ3aUxHSmxZMkYxYzJVNlhDTGlpTFZjSWl4Q1pXTmhkWE5sT2x3aTRvaTFYQ0lzWW1WdGNIUjVkanBjSXVLbXNGd2lMR0psY0hOcE9sd2l6N1pjSWl4aVpYSnViM1U2WENMaWhLeGNJaXhDWlhKdWIzVnNiR2x6T2x3aTRvU3NYQ0lzUW1WMFlUcGNJczZTWENJc1ltVjBZVHBjSXM2eVhDSXNZbVYwYURwY0l1S0V0bHdpTEdKbGRIZGxaVzQ2WENMaWlheGNJaXhDWm5JNlhDTHduWlNGWENJc1ltWnlPbHdpOEoyVW4xd2lMR0pwWjJOaGNEcGNJdUtMZ2x3aUxHSnBaMk5wY21NNlhDTGlsNjljSWl4aWFXZGpkWEE2WENMaWk0TmNJaXhpYVdkdlpHOTBPbHdpNHFpQVhDSXNZbWxuYjNCc2RYTTZYQ0xpcUlGY0lpeGlhV2R2ZEdsdFpYTTZYQ0xpcUlKY0lpeGlhV2R6Y1dOMWNEcGNJdUtvaGx3aUxHSnBaM04wWVhJNlhDTGltSVZjSWl4aWFXZDBjbWxoYm1kc1pXUnZkMjQ2WENMaWxyMWNJaXhpYVdkMGNtbGhibWRzWlhWd09sd2k0cGF6WENJc1ltbG5kWEJzZFhNNlhDTGlxSVJjSWl4aWFXZDJaV1U2WENMaWk0RmNJaXhpYVdkM1pXUm5aVHBjSXVLTGdGd2lMR0pyWVhKdmR6cGNJdUtralZ3aUxHSnNZV05yYkc5NlpXNW5aVHBjSXVLbnExd2lMR0pzWVdOcmMzRjFZWEpsT2x3aTRwYXFYQ0lzWW14aFkydDBjbWxoYm1kc1pUcGNJdUtXdEZ3aUxHSnNZV05yZEhKcFlXNW5iR1ZrYjNkdU9sd2k0cGErWENJc1lteGhZMnQwY21saGJtZHNaV3hsWm5RNlhDTGlsNEpjSWl4aWJHRmphM1J5YVdGdVoyeGxjbWxuYUhRNlhDTGlscmhjSWl4aWJHRnVhenBjSXVLUW8xd2lMR0pzYXpFeU9sd2k0cGFTWENJc1lteHJNVFE2WENMaWxwRmNJaXhpYkdzek5EcGNJdUtXazF3aUxHSnNiMk5yT2x3aTRwYUlYQ0lzWW01bE9sd2lQZUtEcFZ3aUxHSnVaWEYxYVhZNlhDTGlpYUhpZzZWY0lpeGlUbTkwT2x3aTRxdXRYQ0lzWW01dmREcGNJdUtNa0Z3aUxFSnZjR1k2WENMd25aUzVYQ0lzWW05d1pqcGNJdkNkbFpOY0lpeGliM1E2WENMaWlxVmNJaXhpYjNSMGIyMDZYQ0xpaXFWY0lpeGliM2QwYVdVNlhDTGlpNGhjSWl4aWIzaGliM2c2WENMaXA0bGNJaXhpYjNoa2JEcGNJdUtVa0Z3aUxHSnZlR1JNT2x3aTRwV1ZYQ0lzWW05NFJHdzZYQ0xpbFpaY0lpeGliM2hFVERwY0l1S1ZsMXdpTEdKdmVHUnlPbHdpNHBTTVhDSXNZbTk0WkZJNlhDTGlsWkpjSWl4aWIzaEVjanBjSXVLVmsxd2lMR0p2ZUVSU09sd2k0cFdVWENJc1ltOTRhRHBjSXVLVWdGd2lMR0p2ZUVnNlhDTGlsWkJjSWl4aWIzaG9aRHBjSXVLVXJGd2lMR0p2ZUVoa09sd2k0cFdrWENJc1ltOTRhRVE2WENMaWxhVmNJaXhpYjNoSVJEcGNJdUtWcGx3aUxHSnZlR2gxT2x3aTRwUzBYQ0lzWW05NFNIVTZYQ0xpbGFkY0lpeGliM2hvVlRwY0l1S1ZxRndpTEdKdmVFaFZPbHdpNHBXcFhDSXNZbTk0YldsdWRYTTZYQ0xpaXA5Y0lpeGliM2h3YkhWek9sd2k0b3FlWENJc1ltOTRkR2x0WlhNNlhDTGlpcUJjSWl4aWIzaDFiRHBjSXVLVW1Gd2lMR0p2ZUhWTU9sd2k0cFdiWENJc1ltOTRWV3c2WENMaWxaeGNJaXhpYjNoVlREcGNJdUtWblZ3aUxHSnZlSFZ5T2x3aTRwU1VYQ0lzWW05NGRWSTZYQ0xpbFpoY0lpeGliM2hWY2pwY0l1S1ZtVndpTEdKdmVGVlNPbHdpNHBXYVhDSXNZbTk0ZGpwY0l1S1VnbHdpTEdKdmVGWTZYQ0xpbFpGY0lpeGliM2gyYURwY0l1S1V2RndpTEdKdmVIWklPbHdpNHBXcVhDSXNZbTk0Vm1nNlhDTGlsYXRjSWl4aWIzaFdTRHBjSXVLVnJGd2lMR0p2ZUhac09sd2k0cFNrWENJc1ltOTRka3c2WENMaWxhRmNJaXhpYjNoV2JEcGNJdUtWb2x3aUxHSnZlRlpNT2x3aTRwV2pYQ0lzWW05NGRuSTZYQ0xpbEp4Y0lpeGliM2gyVWpwY0l1S1ZubHdpTEdKdmVGWnlPbHdpNHBXZlhDSXNZbTk0VmxJNlhDTGlsYUJjSWl4aWNISnBiV1U2WENMaWdMVmNJaXhpY21WMlpUcGNJc3VZWENJc1FuSmxkbVU2WENMTG1Gd2lMR0p5ZG1KaGNqcGNJc0ttWENJc1luTmpjanBjSXZDZGtyZGNJaXhDYzJOeU9sd2k0b1NzWENJc1luTmxiV2s2WENMaWdZOWNJaXhpYzJsdE9sd2k0b2k5WENJc1luTnBiV1U2WENMaWk0MWNJaXhpYzI5c1lqcGNJdUtuaFZ3aUxHSnpiMnc2WENKY1hGeGNYQ0lzWW5OdmJHaHpkV0k2WENMaW40aGNJaXhpZFd4c09sd2k0b0NpWENJc1luVnNiR1YwT2x3aTRvQ2lYQ0lzWW5WdGNEcGNJdUtKamx3aUxHSjFiWEJGT2x3aTRxcXVYQ0lzWW5WdGNHVTZYQ0xpaVk5Y0lpeENkVzF3WlhFNlhDTGlpWTVjSWl4aWRXMXdaWEU2WENMaWlZOWNJaXhEWVdOMWRHVTZYQ0xFaGx3aUxHTmhZM1YwWlRwY0lzU0hYQ0lzWTJGd1lXNWtPbHdpNHFtRVhDSXNZMkZ3WW5KamRYQTZYQ0xpcVlsY0lpeGpZWEJqWVhBNlhDTGlxWXRjSWl4allYQTZYQ0xpaUtsY0lpeERZWEE2WENMaWk1SmNJaXhqWVhCamRYQTZYQ0xpcVlkY0lpeGpZWEJrYjNRNlhDTGlxWUJjSWl4RFlYQnBkR0ZzUkdsbVptVnlaVzUwYVdGc1JEcGNJdUtGaFZ3aUxHTmhjSE02WENMaWlLbnZ1SUJjSWl4allYSmxkRHBjSXVLQmdWd2lMR05oY205dU9sd2l5NGRjSWl4RFlYbHNaWGx6T2x3aTRvU3RYQ0lzWTJOaGNITTZYQ0xpcVkxY0lpeERZMkZ5YjI0NlhDTEVqRndpTEdOallYSnZianBjSXNTTlhDSXNRMk5sWkdsc09sd2l3NGRjSWl4alkyVmthV3c2WENMRHAxd2lMRU5qYVhKak9sd2l4SWhjSWl4alkybHlZenBjSXNTSlhDSXNRMk52Ym1sdWREcGNJdUtJc0Z3aUxHTmpkWEJ6T2x3aTRxbU1YQ0lzWTJOMWNITnpiVHBjSXVLcGtGd2lMRU5rYjNRNlhDTEVpbHdpTEdOa2IzUTZYQ0xFaTF3aUxHTmxaR2xzT2x3aXdyaGNJaXhEWldScGJHeGhPbHdpd3JoY0lpeGpaVzF3ZEhsMk9sd2k0cWF5WENJc1kyVnVkRHBjSXNLaVhDSXNZMlZ1ZEdWeVpHOTBPbHdpd3JkY0lpeERaVzUwWlhKRWIzUTZYQ0xDdDF3aUxHTm1janBjSXZDZGxLQmNJaXhEWm5JNlhDTGloSzFjSWl4RFNHTjVPbHdpMEtkY0lpeGphR041T2x3aTBZZGNJaXhqYUdWamF6cGNJdUtjazF3aUxHTm9aV05yYldGeWF6cGNJdUtjazF3aUxFTm9hVHBjSXM2blhDSXNZMmhwT2x3aXo0ZGNJaXhqYVhKak9sd2l5NFpjSWl4amFYSmpaWEU2WENMaWlaZGNJaXhqYVhKamJHVmhjbkp2ZDJ4bFpuUTZYQ0xpaHJwY0lpeGphWEpqYkdWaGNuSnZkM0pwWjJoME9sd2k0b2E3WENJc1kybHlZMnhsWkdGemREcGNJdUtLbTF3aUxHTnBjbU5zWldSamFYSmpPbHdpNG9xYVhDSXNZMmx5WTJ4bFpHUmhjMmc2WENMaWlwMWNJaXhEYVhKamJHVkViM1E2WENMaWlwbGNJaXhqYVhKamJHVmtVanBjSXNLdVhDSXNZMmx5WTJ4bFpGTTZYQ0xpazRoY0lpeERhWEpqYkdWTmFXNTFjenBjSXVLS2xsd2lMRU5wY21Oc1pWQnNkWE02WENMaWlwVmNJaXhEYVhKamJHVlVhVzFsY3pwY0l1S0tsMXdpTEdOcGNqcGNJdUtYaTF3aUxHTnBja1U2WENMaXA0TmNJaXhqYVhKbE9sd2k0b21YWENJc1kybHlabTVwYm5RNlhDTGlxSkJjSWl4amFYSnRhV1E2WENMaXE2OWNJaXhqYVhKelkybHlPbHdpNHFlQ1hDSXNRMnh2WTJ0M2FYTmxRMjl1ZEc5MWNrbHVkR1ZuY21Gc09sd2k0b2l5WENJc1EyeHZjMlZEZFhKc2VVUnZkV0pzWlZGMWIzUmxPbHdpNG9DZFhDSXNRMnh2YzJWRGRYSnNlVkYxYjNSbE9sd2k0b0NaWENJc1kyeDFZbk02WENMaW1hTmNJaXhqYkhWaWMzVnBkRHBjSXVLWm8xd2lMR052Ykc5dU9sd2lPbHdpTEVOdmJHOXVPbHdpNG9pM1hDSXNRMjlzYjI1bE9sd2k0cW0wWENJc1kyOXNiMjVsT2x3aTRvbVVYQ0lzWTI5c2IyNWxjVHBjSXVLSmxGd2lMR052YlcxaE9sd2lMRndpTEdOdmJXMWhkRHBjSWtCY0lpeGpiMjF3T2x3aTRvaUJYQ0lzWTI5dGNHWnVPbHdpNG9pWVhDSXNZMjl0Y0d4bGJXVnVkRHBjSXVLSWdWd2lMR052YlhCc1pYaGxjenBjSXVLRWdsd2lMR052Ym1jNlhDTGlpWVZjSWl4amIyNW5aRzkwT2x3aTRxbXRYQ0lzUTI5dVozSjFaVzUwT2x3aTRvbWhYQ0lzWTI5dWFXNTBPbHdpNG9pdVhDSXNRMjl1YVc1ME9sd2k0b2l2WENJc1EyOXVkRzkxY2tsdWRHVm5jbUZzT2x3aTRvaXVYQ0lzWTI5d1pqcGNJdkNkbFpSY0lpeERiM0JtT2x3aTRvU0NYQ0lzWTI5d2NtOWtPbHdpNG9pUVhDSXNRMjl3Y205a2RXTjBPbHdpNG9pUVhDSXNZMjl3ZVRwY0lzS3BYQ0lzUTA5UVdUcGNJc0twWENJc1kyOXdlWE55T2x3aTRvU1hYQ0lzUTI5MWJuUmxja05zYjJOcmQybHpaVU52Ym5SdmRYSkpiblJsWjNKaGJEcGNJdUtJczF3aUxHTnlZWEp5T2x3aTRvYTFYQ0lzWTNKdmMzTTZYQ0xpbkpkY0lpeERjbTl6Y3pwY0l1S29yMXdpTEVOelkzSTZYQ0x3blpLZVhDSXNZM05qY2pwY0l2Q2RrcmhjSWl4amMzVmlPbHdpNHF1UFhDSXNZM04xWW1VNlhDTGlxNUZjSWl4amMzVndPbHdpNHF1UVhDSXNZM04xY0dVNlhDTGlxNUpjSWl4amRHUnZkRHBjSXVLTHIxd2lMR04xWkdGeWNtdzZYQ0xpcExoY0lpeGpkV1JoY25KeU9sd2k0cVMxWENJc1kzVmxjSEk2WENMaWk1NWNJaXhqZFdWell6cGNJdUtMbjF3aUxHTjFiR0Z5Y2pwY0l1S0d0bHdpTEdOMWJHRnljbkE2WENMaXBMMWNJaXhqZFhCaWNtTmhjRHBjSXVLcGlGd2lMR04xY0dOaGNEcGNJdUtwaGx3aUxFTjFjRU5oY0RwY0l1S0pqVndpTEdOMWNEcGNJdUtJcWx3aUxFTjFjRHBjSXVLTGsxd2lMR04xY0dOMWNEcGNJdUtwaWx3aUxHTjFjR1J2ZERwY0l1S0tqVndpTEdOMWNHOXlPbHdpNHFtRlhDSXNZM1Z3Y3pwY0l1S0lxdSs0Z0Z3aUxHTjFjbUZ5Y2pwY0l1S0d0MXdpTEdOMWNtRnljbTA2WENMaXBMeGNJaXhqZFhKc2VXVnhjSEpsWXpwY0l1S0xubHdpTEdOMWNteDVaWEZ6ZFdOak9sd2k0b3VmWENJc1kzVnliSGwyWldVNlhDTGlpNDVjSWl4amRYSnNlWGRsWkdkbE9sd2k0b3VQWENJc1kzVnljbVZ1T2x3aXdxUmNJaXhqZFhKMlpXRnljbTkzYkdWbWREcGNJdUtHdGx3aUxHTjFjblpsWVhKeWIzZHlhV2RvZERwY0l1S0d0MXdpTEdOMWRtVmxPbHdpNG91T1hDSXNZM1YzWldRNlhDTGlpNDljSWl4amQyTnZibWx1ZERwY0l1S0lzbHdpTEdOM2FXNTBPbHdpNG9peFhDSXNZM2xzWTNSNU9sd2k0b3l0WENJc1pHRm5aMlZ5T2x3aTRvQ2dYQ0lzUkdGbloyVnlPbHdpNG9DaFhDSXNaR0ZzWlhSb09sd2k0b1M0WENJc1pHRnljanBjSXVLR2sxd2lMRVJoY25JNlhDTGlocUZjSWl4a1FYSnlPbHdpNG9lVFhDSXNaR0Z6YURwY0l1S0FrRndpTEVSaGMyaDJPbHdpNHF1a1hDSXNaR0Z6YUhZNlhDTGlpcU5jSWl4a1ltdGhjbTkzT2x3aTRxU1BYQ0lzWkdKc1lXTTZYQ0xMblZ3aUxFUmpZWEp2YmpwY0lzU09YQ0lzWkdOaGNtOXVPbHdpeEk5Y0lpeEVZM2s2WENMUWxGd2lMR1JqZVRwY0l0QzBYQ0lzWkdSaFoyZGxjanBjSXVLQW9Wd2lMR1JrWVhKeU9sd2k0b2VLWENJc1JFUTZYQ0xpaFlWY0lpeGtaRHBjSXVLRmhsd2lMRVJFYjNSeVlXaGtPbHdpNHFTUlhDSXNaR1J2ZEhObGNUcGNJdUtwdDF3aUxHUmxaenBjSXNLd1hDSXNSR1ZzT2x3aTRvaUhYQ0lzUkdWc2RHRTZYQ0xPbEZ3aUxHUmxiSFJoT2x3aXpyUmNJaXhrWlcxd2RIbDJPbHdpNHFheFhDSXNaR1pwYzJoME9sd2k0cVcvWENJc1JHWnlPbHdpOEoyVWgxd2lMR1JtY2pwY0l2Q2RsS0ZjSWl4a1NHRnlPbHdpNHFXbFhDSXNaR2hoY213NlhDTGloNE5jSWl4a2FHRnljanBjSXVLSGdsd2lMRVJwWVdOeWFYUnBZMkZzUVdOMWRHVTZYQ0xDdEZ3aUxFUnBZV055YVhScFkyRnNSRzkwT2x3aXk1bGNJaXhFYVdGamNtbDBhV05oYkVSdmRXSnNaVUZqZFhSbE9sd2l5NTFjSWl4RWFXRmpjbWwwYVdOaGJFZHlZWFpsT2x3aVlGd2lMRVJwWVdOeWFYUnBZMkZzVkdsc1pHVTZYQ0xMbkZ3aUxHUnBZVzA2WENMaWk0UmNJaXhrYVdGdGIyNWtPbHdpNG91RVhDSXNSR2xoYlc5dVpEcGNJdUtMaEZ3aUxHUnBZVzF2Ym1SemRXbDBPbHdpNHBtbVhDSXNaR2xoYlhNNlhDTGltYVpjSWl4a2FXVTZYQ0xDcUZ3aUxFUnBabVpsY21WdWRHbGhiRVE2WENMaWhZWmNJaXhrYVdkaGJXMWhPbHdpejUxY0lpeGthWE5wYmpwY0l1S0xzbHdpTEdScGRqcGNJc08zWENJc1pHbDJhV1JsT2x3aXc3ZGNJaXhrYVhacFpHVnZiblJwYldWek9sd2k0b3VIWENJc1pHbDJiMjU0T2x3aTRvdUhYQ0lzUkVwamVUcGNJdENDWENJc1pHcGplVHBjSXRHU1hDSXNaR3hqYjNKdU9sd2k0b3llWENJc1pHeGpjbTl3T2x3aTRveU5YQ0lzWkc5c2JHRnlPbHdpSkZ3aUxFUnZjR1k2WENMd25aUzdYQ0lzWkc5d1pqcGNJdkNkbFpWY0lpeEViM1E2WENMQ3FGd2lMR1J2ZERwY0lzdVpYQ0lzUkc5MFJHOTBPbHdpNG9PY1hDSXNaRzkwWlhFNlhDTGlpWkJjSWl4a2IzUmxjV1J2ZERwY0l1S0prVndpTEVSdmRFVnhkV0ZzT2x3aTRvbVFYQ0lzWkc5MGJXbHVkWE02WENMaWlMaGNJaXhrYjNSd2JIVnpPbHdpNG9pVVhDSXNaRzkwYzNGMVlYSmxPbHdpNG9xaFhDSXNaRzkxWW14bFltRnlkMlZrWjJVNlhDTGlqSVpjSWl4RWIzVmliR1ZEYjI1MGIzVnlTVzUwWldkeVlXdzZYQ0xpaUs5Y0lpeEViM1ZpYkdWRWIzUTZYQ0xDcUZ3aUxFUnZkV0pzWlVSdmQyNUJjbkp2ZHpwY0l1S0hrMXdpTEVSdmRXSnNaVXhsWm5SQmNuSnZkenBjSXVLSGtGd2lMRVJ2ZFdKc1pVeGxablJTYVdkb2RFRnljbTkzT2x3aTRvZVVYQ0lzUkc5MVlteGxUR1ZtZEZSbFpUcGNJdUtycEZ3aUxFUnZkV0pzWlV4dmJtZE1aV1owUVhKeWIzYzZYQ0xpbjdoY0lpeEViM1ZpYkdWTWIyNW5UR1ZtZEZKcFoyaDBRWEp5YjNjNlhDTGluN3BjSWl4RWIzVmliR1ZNYjI1blVtbG5hSFJCY25KdmR6cGNJdUtmdVZ3aUxFUnZkV0pzWlZKcFoyaDBRWEp5YjNjNlhDTGloNUpjSWl4RWIzVmliR1ZTYVdkb2RGUmxaVHBjSXVLS3FGd2lMRVJ2ZFdKc1pWVndRWEp5YjNjNlhDTGloNUZjSWl4RWIzVmliR1ZWY0VSdmQyNUJjbkp2ZHpwY0l1S0hsVndpTEVSdmRXSnNaVlpsY25ScFkyRnNRbUZ5T2x3aTRvaWxYQ0lzUkc5M2JrRnljbTkzUW1GeU9sd2k0cVNUWENJc1pHOTNibUZ5Y205M09sd2k0b2FUWENJc1JHOTNia0Z5Y205M09sd2k0b2FUWENJc1JHOTNibUZ5Y205M09sd2k0b2VUWENJc1JHOTNia0Z5Y205M1ZYQkJjbkp2ZHpwY0l1S0h0VndpTEVSdmQyNUNjbVYyWlRwY0lzeVJYQ0lzWkc5M2JtUnZkMjVoY25KdmQzTTZYQ0xpaDRwY0lpeGtiM2R1YUdGeWNHOXZibXhsWm5RNlhDTGloNE5jSWl4a2IzZHVhR0Z5Y0c5dmJuSnBaMmgwT2x3aTRvZUNYQ0lzUkc5M2JreGxablJTYVdkb2RGWmxZM1J2Y2pwY0l1S2xrRndpTEVSdmQyNU1aV1owVkdWbFZtVmpkRzl5T2x3aTRxV2VYQ0lzUkc5M2JreGxablJXWldOMGIzSkNZWEk2WENMaXBaWmNJaXhFYjNkdVRHVm1kRlpsWTNSdmNqcGNJdUtHdlZ3aUxFUnZkMjVTYVdkb2RGUmxaVlpsWTNSdmNqcGNJdUtsbjF3aUxFUnZkMjVTYVdkb2RGWmxZM1J2Y2tKaGNqcGNJdUtsbDF3aUxFUnZkMjVTYVdkb2RGWmxZM1J2Y2pwY0l1S0hnVndpTEVSdmQyNVVaV1ZCY25KdmR6cGNJdUtHcDF3aUxFUnZkMjVVWldVNlhDTGlpcVJjSWl4a2NtSnJZWEp2ZHpwY0l1S2trRndpTEdSeVkyOXlianBjSXVLTW4xd2lMR1J5WTNKdmNEcGNJdUtNakZ3aUxFUnpZM0k2WENMd25aS2ZYQ0lzWkhOamNqcGNJdkNka3JsY0lpeEVVMk41T2x3aTBJVmNJaXhrYzJONU9sd2kwWlZjSWl4a2MyOXNPbHdpNHFlMlhDSXNSSE4wY205ck9sd2l4SkJjSWl4a2MzUnliMnM2WENMRWtWd2lMR1IwWkc5ME9sd2k0b3V4WENJc1pIUnlhVHBjSXVLV3Yxd2lMR1IwY21sbU9sd2k0cGErWENJc1pIVmhjbkk2WENMaWg3VmNJaXhrZFdoaGNqcGNJdUtscjF3aUxHUjNZVzVuYkdVNlhDTGlwcVpjSWl4RVdtTjVPbHdpMEk5Y0lpeGtlbU41T2x3aTBaOWNJaXhrZW1sbmNtRnljanBjSXVLZnYxd2lMRVZoWTNWMFpUcGNJc09KWENJc1pXRmpkWFJsT2x3aXc2bGNJaXhsWVhOMFpYSTZYQ0xpcWE1Y0lpeEZZMkZ5YjI0NlhDTEVtbHdpTEdWallYSnZianBjSXNTYlhDSXNSV05wY21NNlhDTERpbHdpTEdWamFYSmpPbHdpdzZwY0lpeGxZMmx5T2x3aTRvbVdYQ0lzWldOdmJHOXVPbHdpNG9tVlhDSXNSV041T2x3aTBLMWNJaXhsWTNrNlhDTFJqVndpTEdWRVJHOTBPbHdpNHFtM1hDSXNSV1J2ZERwY0lzU1dYQ0lzWldSdmREcGNJc1NYWENJc1pVUnZkRHBjSXVLSmtWd2lMR1ZsT2x3aTRvV0hYQ0lzWldaRWIzUTZYQ0xpaVpKY0lpeEZabkk2WENMd25aU0lYQ0lzWldaeU9sd2k4SjJVb2x3aUxHVm5PbHdpNHFxYVhDSXNSV2R5WVhabE9sd2l3NGhjSWl4bFozSmhkbVU2WENMRHFGd2lMR1ZuY3pwY0l1S3FsbHdpTEdWbmMyUnZkRHBjSXVLcW1Gd2lMR1ZzT2x3aTRxcVpYQ0lzUld4bGJXVnVkRHBjSXVLSWlGd2lMR1ZzYVc1MFpYSnpPbHdpNG8rblhDSXNaV3hzT2x3aTRvU1RYQ0lzWld4ek9sd2k0cXFWWENJc1pXeHpaRzkwT2x3aTRxcVhYQ0lzUlcxaFkzSTZYQ0xFa2x3aUxHVnRZV055T2x3aXhKTmNJaXhsYlhCMGVUcGNJdUtJaFZ3aUxHVnRjSFI1YzJWME9sd2k0b2lGWENJc1JXMXdkSGxUYldGc2JGTnhkV0Z5WlRwY0l1S1h1MXdpTEdWdGNIUjVkanBjSXVLSWhWd2lMRVZ0Y0hSNVZtVnllVk50WVd4c1UzRjFZWEpsT2x3aTRwYXJYQ0lzWlcxemNERXpPbHdpNG9DRVhDSXNaVzF6Y0RFME9sd2k0b0NGWENJc1pXMXpjRHBjSXVLQWcxd2lMRVZPUnpwY0lzV0tYQ0lzWlc1bk9sd2l4WXRjSWl4bGJuTndPbHdpNG9DQ1hDSXNSVzluYjI0NlhDTEVtRndpTEdWdloyOXVPbHdpeEpsY0lpeEZiM0JtT2x3aThKMlV2RndpTEdWdmNHWTZYQ0x3blpXV1hDSXNaWEJoY2pwY0l1S0xsVndpTEdWd1lYSnpiRHBjSXVLbm8xd2lMR1Z3YkhWek9sd2k0cW14WENJc1pYQnphVHBjSXM2MVhDSXNSWEJ6YVd4dmJqcGNJczZWWENJc1pYQnphV3h2YmpwY0lzNjFYQ0lzWlhCemFYWTZYQ0xQdFZ3aUxHVnhZMmx5WXpwY0l1S0psbHdpTEdWeFkyOXNiMjQ2WENMaWlaVmNJaXhsY1hOcGJUcGNJdUtKZ2x3aUxHVnhjMnhoYm5SbmRISTZYQ0xpcXBaY0lpeGxjWE5zWVc1MGJHVnpjenBjSXVLcWxWd2lMRVZ4ZFdGc09sd2k0cW0xWENJc1pYRjFZV3h6T2x3aVBWd2lMRVZ4ZFdGc1ZHbHNaR1U2WENMaWlZSmNJaXhsY1hWbGMzUTZYQ0xpaVo5Y0lpeEZjWFZwYkdsaWNtbDFiVHBjSXVLSGpGd2lMR1Z4ZFdsMk9sd2k0b21oWENJc1pYRjFhWFpFUkRwY0l1S3B1RndpTEdWeGRuQmhjbk5zT2x3aTRxZWxYQ0lzWlhKaGNuSTZYQ0xpcGJGY0lpeGxja1J2ZERwY0l1S0prMXdpTEdWelkzSTZYQ0xpaEs5Y0lpeEZjMk55T2x3aTRvU3dYQ0lzWlhOa2IzUTZYQ0xpaVpCY0lpeEZjMmx0T2x3aTRxbXpYQ0lzWlhOcGJUcGNJdUtKZ2x3aUxFVjBZVHBjSXM2WFhDSXNaWFJoT2x3aXpyZGNJaXhGVkVnNlhDTERrRndpTEdWMGFEcGNJc093WENJc1JYVnRiRHBjSXNPTFhDSXNaWFZ0YkRwY0lzT3JYQ0lzWlhWeWJ6cGNJdUtDckZ3aUxHVjRZMnc2WENJaFhDSXNaWGhwYzNRNlhDTGlpSU5jSWl4RmVHbHpkSE02WENMaWlJTmNJaXhsZUhCbFkzUmhkR2x2YmpwY0l1S0VzRndpTEdWNGNHOXVaVzUwYVdGc1pUcGNJdUtGaDF3aUxFVjRjRzl1Wlc1MGFXRnNSVHBjSXVLRmgxd2lMR1poYkd4cGJtZGtiM1J6WlhFNlhDTGlpWkpjSWl4R1kzazZYQ0xRcEZ3aUxHWmplVHBjSXRHRVhDSXNabVZ0WVd4bE9sd2k0cG1BWENJc1ptWnBiR2xuT2x3aTc2eURYQ0lzWm1ac2FXYzZYQ0x2cklCY0lpeG1abXhzYVdjNlhDTHZySVJjSWl4R1puSTZYQ0x3blpTSlhDSXNabVp5T2x3aThKMlVvMXdpTEdacGJHbG5PbHdpNzZ5QlhDSXNSbWxzYkdWa1UyMWhiR3hUY1hWaGNtVTZYQ0xpbDd4Y0lpeEdhV3hzWldSV1pYSjVVMjFoYkd4VGNYVmhjbVU2WENMaWxxcGNJaXhtYW14cFp6cGNJbVpxWENJc1pteGhkRHBjSXVLWnJWd2lMR1pzYkdsbk9sd2k3NnlDWENJc1pteDBibk02WENMaWxyRmNJaXhtYm05bU9sd2l4cEpjSWl4R2IzQm1PbHdpOEoyVXZWd2lMR1p2Y0dZNlhDTHduWldYWENJc1ptOXlZV3hzT2x3aTRvaUFYQ0lzUm05eVFXeHNPbHdpNG9pQVhDSXNabTl5YXpwY0l1S0xsRndpTEdadmNtdDJPbHdpNHF1WlhDSXNSbTkxY21sbGNuUnlaanBjSXVLRXNWd2lMR1p3WVhKMGFXNTBPbHdpNHFpTlhDSXNabkpoWXpFeU9sd2l3cjFjSWl4bWNtRmpNVE02WENMaWhaTmNJaXhtY21Gak1UUTZYQ0xDdkZ3aUxHWnlZV014TlRwY0l1S0ZsVndpTEdaeVlXTXhOanBjSXVLRm1Wd2lMR1p5WVdNeE9EcGNJdUtGbTF3aUxHWnlZV015TXpwY0l1S0ZsRndpTEdaeVlXTXlOVHBjSXVLRmxsd2lMR1p5WVdNek5EcGNJc0srWENJc1puSmhZek0xT2x3aTRvV1hYQ0lzWm5KaFl6TTRPbHdpNG9XY1hDSXNabkpoWXpRMU9sd2k0b1dZWENJc1puSmhZelUyT2x3aTRvV2FYQ0lzWm5KaFl6VTRPbHdpNG9XZFhDSXNabkpoWXpjNE9sd2k0b1dlWENJc1puSmhjMnc2WENMaWdZUmNJaXhtY205M2JqcGNJdUtNb2x3aUxHWnpZM0k2WENMd25aSzdYQ0lzUm5OamNqcGNJdUtFc1Z3aUxHZGhZM1YwWlRwY0lzZTFYQ0lzUjJGdGJXRTZYQ0xPazF3aUxHZGhiVzFoT2x3aXpyTmNJaXhIWVcxdFlXUTZYQ0xQbkZ3aUxHZGhiVzFoWkRwY0lzK2RYQ0lzWjJGd09sd2k0cXFHWENJc1IySnlaWFpsT2x3aXhKNWNJaXhuWW5KbGRtVTZYQ0xFbjF3aUxFZGpaV1JwYkRwY0lzU2lYQ0lzUjJOcGNtTTZYQ0xFbkZ3aUxHZGphWEpqT2x3aXhKMWNJaXhIWTNrNlhDTFFrMXdpTEdkamVUcGNJdEN6WENJc1IyUnZkRHBjSXNTZ1hDSXNaMlJ2ZERwY0lzU2hYQ0lzWjJVNlhDTGlpYVZjSWl4blJUcGNJdUtKcDF3aUxHZEZiRHBjSXVLcWpGd2lMR2RsYkRwY0l1S0xtMXdpTEdkbGNUcGNJdUtKcFZ3aUxHZGxjWEU2WENMaWlhZGNJaXhuWlhGemJHRnVkRHBjSXVLcHZsd2lMR2RsYzJOak9sd2k0cXFwWENJc1oyVnpPbHdpNHFtK1hDSXNaMlZ6Wkc5ME9sd2k0cXFBWENJc1oyVnpaRzkwYnpwY0l1S3FnbHdpTEdkbGMyUnZkRzlzT2x3aTRxcUVYQ0lzWjJWemJEcGNJdUtMbSsrNGdGd2lMR2RsYzJ4bGN6cGNJdUtxbEZ3aUxFZG1janBjSXZDZGxJcGNJaXhuWm5JNlhDTHduWlNrWENJc1oyYzZYQ0xpaWF0Y0lpeEhaenBjSXVLTG1Wd2lMR2RuWnpwY0l1S0xtVndpTEdkcGJXVnNPbHdpNG9TM1hDSXNSMHBqZVRwY0l0Q0RYQ0lzWjJwamVUcGNJdEdUWENJc1oyeGhPbHdpNHFxbFhDSXNaMnc2WENMaWliZGNJaXhuYkVVNlhDTGlxcEpjSWl4bmJHbzZYQ0xpcXFSY0lpeG5ibUZ3T2x3aTRxcUtYQ0lzWjI1aGNIQnliM2c2WENMaXFvcGNJaXhuYm1VNlhDTGlxb2hjSWl4bmJrVTZYQ0xpaWFsY0lpeG5ibVZ4T2x3aTRxcUlYQ0lzWjI1bGNYRTZYQ0xpaWFsY0lpeG5ibk5wYlRwY0l1S0xwMXdpTEVkdmNHWTZYQ0x3blpTK1hDSXNaMjl3WmpwY0l2Q2RsWmhjSWl4bmNtRjJaVHBjSW1CY0lpeEhjbVZoZEdWeVJYRjFZV3c2WENMaWlhVmNJaXhIY21WaGRHVnlSWEYxWVd4TVpYTnpPbHdpNG91YlhDSXNSM0psWVhSbGNrWjFiR3hGY1hWaGJEcGNJdUtKcDF3aUxFZHlaV0YwWlhKSGNtVmhkR1Z5T2x3aTRxcWlYQ0lzUjNKbFlYUmxja3hsYzNNNlhDTGlpYmRjSWl4SGNtVmhkR1Z5VTJ4aGJuUkZjWFZoYkRwY0l1S3B2bHdpTEVkeVpXRjBaWEpVYVd4a1pUcGNJdUtKczF3aUxFZHpZM0k2WENMd25aS2lYQ0lzWjNOamNqcGNJdUtFaWx3aUxHZHphVzA2WENMaWliTmNJaXhuYzJsdFpUcGNJdUtxamx3aUxHZHphVzFzT2x3aTRxcVFYQ0lzWjNSall6cGNJdUtxcDF3aUxHZDBZMmx5T2x3aTRxbTZYQ0lzWjNRNlhDSStYQ0lzUjFRNlhDSStYQ0lzUjNRNlhDTGlpYXRjSWl4bmRHUnZkRHBjSXVLTGwxd2lMR2QwYkZCaGNqcGNJdUttbFZ3aUxHZDBjWFZsYzNRNlhDTGlxYnhjSWl4bmRISmhjSEJ5YjNnNlhDTGlxb1pjSWl4bmRISmhjbkk2WENMaXBiaGNJaXhuZEhKa2IzUTZYQ0xpaTVkY0lpeG5kSEpsY1d4bGMzTTZYQ0xpaTV0Y0lpeG5kSEpsY1hGc1pYTnpPbHdpNHFxTVhDSXNaM1J5YkdWemN6cGNJdUtKdDF3aUxHZDBjbk5wYlRwY0l1S0pzMXdpTEdkMlpYSjBibVZ4Y1RwY0l1S0pxZSs0Z0Z3aUxHZDJia1U2WENMaWlhbnZ1SUJjSWl4SVlXTmxhenBjSXN1SFhDSXNhR0ZwY25Od09sd2k0b0NLWENJc2FHRnNaanBjSXNLOVhDSXNhR0Z0YVd4ME9sd2k0b1NMWENJc1NFRlNSR041T2x3aTBLcGNJaXhvWVhKa1kzazZYQ0xSaWx3aUxHaGhjbkpqYVhJNlhDTGlwWWhjSWl4b1lYSnlPbHdpNG9hVVhDSXNhRUZ5Y2pwY0l1S0hsRndpTEdoaGNuSjNPbHdpNG9hdFhDSXNTR0YwT2x3aVhsd2lMR2hpWVhJNlhDTGloSTljSWl4SVkybHlZenBjSXNTa1hDSXNhR05wY21NNlhDTEVwVndpTEdobFlYSjBjenBjSXVLWnBWd2lMR2hsWVhKMGMzVnBkRHBjSXVLWnBWd2lMR2hsYkd4cGNEcGNJdUtBcGx3aUxHaGxjbU52YmpwY0l1S0t1VndpTEdobWNqcGNJdkNkbEtWY0lpeElabkk2WENMaWhJeGNJaXhJYVd4aVpYSjBVM0JoWTJVNlhDTGloSXRjSWl4b2EzTmxZWEp2ZHpwY0l1S2twVndpTEdocmMzZGhjbTkzT2x3aTRxU21YQ0lzYUc5aGNuSTZYQ0xpaDc5Y0lpeG9iMjEwYUhRNlhDTGlpTHRjSWl4b2IyOXJiR1ZtZEdGeWNtOTNPbHdpNG9hcFhDSXNhRzl2YTNKcFoyaDBZWEp5YjNjNlhDTGlocXBjSWl4b2IzQm1PbHdpOEoyVm1Wd2lMRWh2Y0dZNlhDTGloSTFjSWl4b2IzSmlZWEk2WENMaWdKVmNJaXhJYjNKcGVtOXVkR0ZzVEdsdVpUcGNJdUtVZ0Z3aUxHaHpZM0k2WENMd25aSzlYQ0lzU0hOamNqcGNJdUtFaTF3aUxHaHpiR0Z6YURwY0l1S0VqMXdpTEVoemRISnZhenBjSXNTbVhDSXNhSE4wY205ck9sd2l4S2RjSWl4SWRXMXdSRzkzYmtoMWJYQTZYQ0xpaVk1Y0lpeElkVzF3UlhGMVlXdzZYQ0xpaVk5Y0lpeG9lV0oxYkd3NlhDTGlnWU5jSWl4b2VYQm9aVzQ2WENMaWdKQmNJaXhKWVdOMWRHVTZYQ0xEalZ3aUxHbGhZM1YwWlRwY0lzT3RYQ0lzYVdNNlhDTGlnYU5jSWl4SlkybHlZenBjSXNPT1hDSXNhV05wY21NNlhDTERybHdpTEVsamVUcGNJdENZWENJc2FXTjVPbHdpMExoY0lpeEpaRzkwT2x3aXhMQmNJaXhKUldONU9sd2kwSlZjSWl4cFpXTjVPbHdpMExWY0lpeHBaWGhqYkRwY0lzS2hYQ0lzYVdabU9sd2k0b2VVWENJc2FXWnlPbHdpOEoyVXBsd2lMRWxtY2pwY0l1S0VrVndpTEVsbmNtRjJaVHBjSXNPTVhDSXNhV2R5WVhabE9sd2l3NnhjSWl4cGFUcGNJdUtGaUZ3aUxHbHBhV2x1ZERwY0l1S29qRndpTEdscGFXNTBPbHdpNG9pdFhDSXNhV2x1Wm1sdU9sd2k0cWVjWENJc2FXbHZkR0U2WENMaWhLbGNJaXhKU214cFp6cGNJc1N5WENJc2FXcHNhV2M2WENMRXMxd2lMRWx0WVdOeU9sd2l4S3BjSWl4cGJXRmpjanBjSXNTclhDSXNhVzFoWjJVNlhDTGloSkZjSWl4SmJXRm5hVzVoY25sSk9sd2k0b1dJWENJc2FXMWhaMnhwYm1VNlhDTGloSkJjSWl4cGJXRm5jR0Z5ZERwY0l1S0VrVndpTEdsdFlYUm9PbHdpeExGY0lpeEpiVHBjSXVLRWtWd2lMR2x0YjJZNlhDTGlpcmRjSWl4cGJYQmxaRHBjSXNhMVhDSXNTVzF3YkdsbGN6cGNJdUtIa2x3aUxHbHVZMkZ5WlRwY0l1S0VoVndpTEdsdU9sd2k0b2lJWENJc2FXNW1hVzQ2WENMaWlKNWNJaXhwYm1acGJuUnBaVHBjSXVLbm5Wd2lMR2x1YjJSdmREcGNJc1N4WENJc2FXNTBZMkZzT2x3aTRvcTZYQ0lzYVc1ME9sd2k0b2lyWENJc1NXNTBPbHdpNG9pc1hDSXNhVzUwWldkbGNuTTZYQ0xpaEtSY0lpeEpiblJsWjNKaGJEcGNJdUtJcTF3aUxHbHVkR1Z5WTJGc09sd2k0b3E2WENJc1NXNTBaWEp6WldOMGFXOXVPbHdpNG91Q1hDSXNhVzUwYkdGeWFHczZYQ0xpcUpkY0lpeHBiblJ3Y205a09sd2k0cWk4WENJc1NXNTJhWE5wWW14bFEyOXRiV0U2WENMaWdhTmNJaXhKYm5acGMybGliR1ZVYVcxbGN6cGNJdUtCb2x3aUxFbFBZM2s2WENMUWdWd2lMR2x2WTNrNlhDTFJrVndpTEVsdloyOXVPbHdpeEs1Y0lpeHBiMmR2YmpwY0lzU3ZYQ0lzU1c5d1pqcGNJdkNkbFlCY0lpeHBiM0JtT2x3aThKMlZtbHdpTEVsdmRHRTZYQ0xPbVZ3aUxHbHZkR0U2WENMT3VWd2lMR2x3Y205a09sd2k0cWk4WENJc2FYRjFaWE4wT2x3aXdyOWNJaXhwYzJOeU9sd2k4SjJTdmx3aUxFbHpZM0k2WENMaWhKQmNJaXhwYzJsdU9sd2k0b2lJWENJc2FYTnBibVJ2ZERwY0l1S0x0VndpTEdsemFXNUZPbHdpNG91NVhDSXNhWE5wYm5NNlhDTGlpN1JjSWl4cGMybHVjM1k2WENMaWk3TmNJaXhwYzJsdWRqcGNJdUtJaUZ3aUxHbDBPbHdpNG9HaVhDSXNTWFJwYkdSbE9sd2l4S2hjSWl4cGRHbHNaR1U2WENMRXFWd2lMRWwxYTJONU9sd2kwSVpjSWl4cGRXdGplVHBjSXRHV1hDSXNTWFZ0YkRwY0lzT1BYQ0lzYVhWdGJEcGNJc092WENJc1NtTnBjbU02WENMRXRGd2lMR3BqYVhKak9sd2l4TFZjSWl4S1kzazZYQ0xRbVZ3aUxHcGplVHBjSXRDNVhDSXNTbVp5T2x3aThKMlVqVndpTEdwbWNqcGNJdkNkbEtkY0lpeHFiV0YwYURwY0lzaTNYQ0lzU205d1pqcGNJdkNkbFlGY0lpeHFiM0JtT2x3aThKMlZtMXdpTEVwelkzSTZYQ0x3blpLbFhDSXNhbk5qY2pwY0l2Q2RrcjljSWl4S2MyVnlZM2s2WENMUWlGd2lMR3B6WlhKamVUcGNJdEdZWENJc1NuVnJZM2s2WENMUWhGd2lMR3AxYTJONU9sd2kwWlJjSWl4TFlYQndZVHBjSXM2YVhDSXNhMkZ3Y0dFNlhDTE91bHdpTEd0aGNIQmhkanBjSXMrd1hDSXNTMk5sWkdsc09sd2l4TFpjSWl4clkyVmthV3c2WENMRXQxd2lMRXRqZVRwY0l0Q2FYQ0lzYTJONU9sd2kwTHBjSWl4TFpuSTZYQ0x3blpTT1hDSXNhMlp5T2x3aThKMlVxRndpTEd0bmNtVmxianBjSXNTNFhDSXNTMGhqZVRwY0l0Q2xYQ0lzYTJoamVUcGNJdEdGWENJc1MwcGplVHBjSXRDTVhDSXNhMnBqZVRwY0l0R2NYQ0lzUzI5d1pqcGNJdkNkbFlKY0lpeHJiM0JtT2x3aThKMlZuRndpTEV0elkzSTZYQ0x3blpLbVhDSXNhM05qY2pwY0l2Q2RrNEJjSWl4c1FXRnljanBjSXVLSG1sd2lMRXhoWTNWMFpUcGNJc1M1WENJc2JHRmpkWFJsT2x3aXhMcGNJaXhzWVdWdGNIUjVkanBjSXVLbXRGd2lMR3hoWjNKaGJqcGNJdUtFa2x3aUxFeGhiV0prWVRwY0lzNmJYQ0lzYkdGdFltUmhPbHdpenJ0Y0lpeHNZVzVuT2x3aTRwK29YQ0lzVEdGdVp6cGNJdUtmcWx3aUxHeGhibWRrT2x3aTRxYVJYQ0lzYkdGdVoyeGxPbHdpNHArb1hDSXNiR0Z3T2x3aTRxcUZYQ0lzVEdGd2JHRmpaWFJ5WmpwY0l1S0VrbHdpTEd4aGNYVnZPbHdpd3F0Y0lpeHNZWEp5WWpwY0l1S0hwRndpTEd4aGNuSmlabk02WENMaXBKOWNJaXhzWVhKeU9sd2k0b2FRWENJc1RHRnljanBjSXVLR25sd2lMR3hCY25JNlhDTGloNUJjSWl4c1lYSnlabk02WENMaXBKMWNJaXhzWVhKeWFHczZYQ0xpaHFsY0lpeHNZWEp5YkhBNlhDTGlocXRjSWl4c1lYSnljR3c2WENMaXBMbGNJaXhzWVhKeWMybHRPbHdpNHFXelhDSXNiR0Z5Y25Sc09sd2k0b2FpWENJc2JHRjBZV2xzT2x3aTRxU1pYQ0lzYkVGMFlXbHNPbHdpNHFTYlhDSXNiR0YwT2x3aTRxcXJYQ0lzYkdGMFpUcGNJdUtxclZ3aUxHeGhkR1Z6T2x3aTRxcXQ3N2lBWENJc2JHSmhjbkk2WENMaXBJeGNJaXhzUW1GeWNqcGNJdUtramx3aUxHeGlZbkpyT2x3aTRwMnlYQ0lzYkdKeVlXTmxPbHdpZTF3aUxHeGljbUZqYXpwY0lsdGNJaXhzWW5KclpUcGNJdUttaTF3aUxHeGljbXR6YkdRNlhDTGlwbzljSWl4c1luSnJjMngxT2x3aTRxYU5YQ0lzVEdOaGNtOXVPbHdpeEwxY0lpeHNZMkZ5YjI0NlhDTEV2bHdpTEV4alpXUnBiRHBjSXNTN1hDSXNiR05sWkdsc09sd2l4THhjSWl4c1kyVnBiRHBjSXVLTWlGd2lMR3hqZFdJNlhDSjdYQ0lzVEdONU9sd2kwSnRjSWl4c1kzazZYQ0xRdTF3aUxHeGtZMkU2WENMaXBMWmNJaXhzWkhGMWJ6cGNJdUtBbkZ3aUxHeGtjWFZ2Y2pwY0l1S0FubHdpTEd4a2NtUm9ZWEk2WENMaXBhZGNJaXhzWkhKMWMyaGhjanBjSXVLbGkxd2lMR3hrYzJnNlhDTGlockpjSWl4c1pUcGNJdUtKcEZ3aUxHeEZPbHdpNG9tbVhDSXNUR1ZtZEVGdVoyeGxRbkpoWTJ0bGREcGNJdUtmcUZ3aUxFeGxablJCY25KdmQwSmhjanBjSXVLSHBGd2lMR3hsWm5SaGNuSnZkenBjSXVLR2tGd2lMRXhsWm5SQmNuSnZkenBjSXVLR2tGd2lMRXhsWm5SaGNuSnZkenBjSXVLSGtGd2lMRXhsWm5SQmNuSnZkMUpwWjJoMFFYSnliM2M2WENMaWg0WmNJaXhzWldaMFlYSnliM2QwWVdsc09sd2k0b2FpWENJc1RHVm1kRU5sYVd4cGJtYzZYQ0xpakloY0lpeE1aV1owUkc5MVlteGxRbkpoWTJ0bGREcGNJdUtmcGx3aUxFeGxablJFYjNkdVZHVmxWbVZqZEc5eU9sd2k0cVdoWENJc1RHVm1kRVJ2ZDI1V1pXTjBiM0pDWVhJNlhDTGlwWmxjSWl4TVpXWjBSRzkzYmxabFkzUnZjanBjSXVLSGcxd2lMRXhsWm5SR2JHOXZjanBjSXVLTWlsd2lMR3hsWm5Sb1lYSndiMjl1Wkc5M2JqcGNJdUtHdlZ3aUxHeGxablJvWVhKd2IyOXVkWEE2WENMaWhyeGNJaXhzWldaMGJHVm1kR0Z5Y205M2N6cGNJdUtIaDF3aUxHeGxablJ5YVdkb2RHRnljbTkzT2x3aTRvYVVYQ0lzVEdWbWRGSnBaMmgwUVhKeWIzYzZYQ0xpaHBSY0lpeE1aV1owY21sbmFIUmhjbkp2ZHpwY0l1S0hsRndpTEd4bFpuUnlhV2RvZEdGeWNtOTNjenBjSXVLSGhsd2lMR3hsWm5SeWFXZG9kR2hoY25CdmIyNXpPbHdpNG9lTFhDSXNiR1ZtZEhKcFoyaDBjM0YxYVdkaGNuSnZkenBjSXVLR3JWd2lMRXhsWm5SU2FXZG9kRlpsWTNSdmNqcGNJdUtsamx3aUxFeGxablJVWldWQmNuSnZkenBjSXVLR3BGd2lMRXhsWm5SVVpXVTZYQ0xpaXFOY0lpeE1aV1owVkdWbFZtVmpkRzl5T2x3aTRxV2FYQ0lzYkdWbWRIUm9jbVZsZEdsdFpYTTZYQ0xpaTR0Y0lpeE1aV1owVkhKcFlXNW5iR1ZDWVhJNlhDTGlwNDljSWl4TVpXWjBWSEpwWVc1bmJHVTZYQ0xpaXJKY0lpeE1aV1owVkhKcFlXNW5iR1ZGY1hWaGJEcGNJdUtLdEZ3aUxFeGxablJWY0VSdmQyNVdaV04wYjNJNlhDTGlwWkZjSWl4TVpXWjBWWEJVWldWV1pXTjBiM0k2WENMaXBhQmNJaXhNWldaMFZYQldaV04wYjNKQ1lYSTZYQ0xpcFpoY0lpeE1aV1owVlhCV1pXTjBiM0k2WENMaWhyOWNJaXhNWldaMFZtVmpkRzl5UW1GeU9sd2k0cVdTWENJc1RHVm1kRlpsWTNSdmNqcGNJdUtHdkZ3aUxHeEZaenBjSXVLcWkxd2lMR3hsWnpwY0l1S0xtbHdpTEd4bGNUcGNJdUtKcEZ3aUxHeGxjWEU2WENMaWlhWmNJaXhzWlhGemJHRnVkRHBjSXVLcHZWd2lMR3hsYzJOak9sd2k0cXFvWENJc2JHVnpPbHdpNHFtOVhDSXNiR1Z6Wkc5ME9sd2k0cW0vWENJc2JHVnpaRzkwYnpwY0l1S3FnVndpTEd4bGMyUnZkRzl5T2x3aTRxcURYQ0lzYkdWelp6cGNJdUtMbXUrNGdGd2lMR3hsYzJkbGN6cGNJdUtxazF3aUxHeGxjM05oY0hCeWIzZzZYQ0xpcW9WY0lpeHNaWE56Wkc5ME9sd2k0b3VXWENJc2JHVnpjMlZ4WjNSeU9sd2k0b3VhWENJc2JHVnpjMlZ4Y1dkMGNqcGNJdUtxaTF3aUxFeGxjM05GY1hWaGJFZHlaV0YwWlhJNlhDTGlpNXBjSWl4TVpYTnpSblZzYkVWeGRXRnNPbHdpNG9tbVhDSXNUR1Z6YzBkeVpXRjBaWEk2WENMaWliWmNJaXhzWlhOelozUnlPbHdpNG9tMlhDSXNUR1Z6YzB4bGMzTTZYQ0xpcXFGY0lpeHNaWE56YzJsdE9sd2k0b215WENJc1RHVnpjMU5zWVc1MFJYRjFZV3c2WENMaXFiMWNJaXhNWlhOelZHbHNaR1U2WENMaWliSmNJaXhzWm1semFIUTZYQ0xpcGJ4Y0lpeHNabXh2YjNJNlhDTGlqSXBjSWl4TVpuSTZYQ0x3blpTUFhDSXNiR1p5T2x3aThKMlVxVndpTEd4bk9sd2k0b20yWENJc2JHZEZPbHdpNHFxUlhDSXNiRWhoY2pwY0l1S2xvbHdpTEd4b1lYSmtPbHdpNG9hOVhDSXNiR2hoY25VNlhDTGlocnhjSWl4c2FHRnlkV3c2WENMaXBhcGNJaXhzYUdKc2F6cGNJdUtXaEZ3aUxFeEtZM2s2WENMUWlWd2lMR3hxWTNrNlhDTFJtVndpTEd4c1lYSnlPbHdpNG9lSFhDSXNiR3c2WENMaWlhcGNJaXhNYkRwY0l1S0xtRndpTEd4c1kyOXlibVZ5T2x3aTRveWVYQ0lzVEd4bFpuUmhjbkp2ZHpwY0l1S0htbHdpTEd4c2FHRnlaRHBjSXVLbHExd2lMR3hzZEhKcE9sd2k0cGU2WENJc1RHMXBaRzkwT2x3aXhMOWNJaXhzYldsa2IzUTZYQ0xGZ0Z3aUxHeHRiM1Z6ZEdGamFHVTZYQ0xpanJCY0lpeHNiVzkxYzNRNlhDTGlqckJjSWl4c2JtRndPbHdpNHFxSlhDSXNiRzVoY0hCeWIzZzZYQ0xpcW9sY0lpeHNibVU2WENMaXFvZGNJaXhzYmtVNlhDTGlpYWhjSWl4c2JtVnhPbHdpNHFxSFhDSXNiRzVsY1hFNlhDTGlpYWhjSWl4c2JuTnBiVHBjSXVLTHBsd2lMR3h2WVc1bk9sd2k0cCtzWENJc2JHOWhjbkk2WENMaWg3MWNJaXhzYjJKeWF6cGNJdUtmcGx3aUxHeHZibWRzWldaMFlYSnliM2M2WENMaW43VmNJaXhNYjI1blRHVm1kRUZ5Y205M09sd2k0cCsxWENJc1RHOXVaMnhsWm5SaGNuSnZkenBjSXVLZnVGd2lMR3h2Ym1kc1pXWjBjbWxuYUhSaGNuSnZkenBjSXVLZnQxd2lMRXh2Ym1kTVpXWjBVbWxuYUhSQmNuSnZkenBjSXVLZnQxd2lMRXh2Ym1kc1pXWjBjbWxuYUhSaGNuSnZkenBjSXVLZnVsd2lMR3h2Ym1kdFlYQnpkRzg2WENMaW43eGNJaXhzYjI1bmNtbG5hSFJoY25KdmR6cGNJdUtmdGx3aUxFeHZibWRTYVdkb2RFRnljbTkzT2x3aTRwKzJYQ0lzVEc5dVozSnBaMmgwWVhKeWIzYzZYQ0xpbjdsY0lpeHNiMjl3WVhKeWIzZHNaV1owT2x3aTRvYXJYQ0lzYkc5dmNHRnljbTkzY21sbmFIUTZYQ0xpaHF4Y0lpeHNiM0JoY2pwY0l1S21oVndpTEV4dmNHWTZYQ0x3blpXRFhDSXNiRzl3WmpwY0l2Q2RsWjFjSWl4c2IzQnNkWE02WENMaXFLMWNJaXhzYjNScGJXVnpPbHdpNHFpMFhDSXNiRzkzWVhOME9sd2k0b2lYWENJc2JHOTNZbUZ5T2x3aVgxd2lMRXh2ZDJWeVRHVm1kRUZ5Y205M09sd2k0b2FaWENJc1RHOTNaWEpTYVdkb2RFRnljbTkzT2x3aTRvYVlYQ0lzYkc5Nk9sd2k0cGVLWENJc2JHOTZaVzVuWlRwY0l1S1hpbHdpTEd4dmVtWTZYQ0xpcDZ0Y0lpeHNjR0Z5T2x3aUtGd2lMR3h3WVhKc2REcGNJdUttazF3aUxHeHlZWEp5T2x3aTRvZUdYQ0lzYkhKamIzSnVaWEk2WENMaWpKOWNJaXhzY21oaGNqcGNJdUtIaTF3aUxHeHlhR0Z5WkRwY0l1S2xyVndpTEd4eWJUcGNJdUtBamx3aUxHeHlkSEpwT2x3aTRvcS9YQ0lzYkhOaGNYVnZPbHdpNG9DNVhDSXNiSE5qY2pwY0l2Q2RrNEZjSWl4TWMyTnlPbHdpNG9TU1hDSXNiSE5vT2x3aTRvYXdYQ0lzVEhOb09sd2k0b2F3WENJc2JITnBiVHBjSXVLSnNsd2lMR3h6YVcxbE9sd2k0cXFOWENJc2JITnBiV2M2WENMaXFvOWNJaXhzYzNGaU9sd2lXMXdpTEd4emNYVnZPbHdpNG9DWVhDSXNiSE54ZFc5eU9sd2k0b0NhWENJc1RITjBjbTlyT2x3aXhZRmNJaXhzYzNSeWIyczZYQ0xGZ2x3aUxHeDBZMk02WENMaXFxWmNJaXhzZEdOcGNqcGNJdUtwdVZ3aUxHeDBPbHdpUEZ3aUxFeFVPbHdpUEZ3aUxFeDBPbHdpNG9tcVhDSXNiSFJrYjNRNlhDTGlpNVpjSWl4c2RHaHlaV1U2WENMaWk0dGNJaXhzZEdsdFpYTTZYQ0xpaTRsY0lpeHNkR3hoY25JNlhDTGlwYlpjSWl4c2RIRjFaWE4wT2x3aTRxbTdYQ0lzYkhSeWFUcGNJdUtYZzF3aUxHeDBjbWxsT2x3aTRvcTBYQ0lzYkhSeWFXWTZYQ0xpbDRKY0lpeHNkSEpRWVhJNlhDTGlwcFpjSWl4c2RYSmtjMmhoY2pwY0l1S2xpbHdpTEd4MWNuVm9ZWEk2WENMaXBhWmNJaXhzZG1WeWRHNWxjWEU2WENMaWlhanZ1SUJjSWl4c2RtNUZPbHdpNG9tbzc3aUFYQ0lzYldGamNqcGNJc0t2WENJc2JXRnNaVHBjSXVLWmdsd2lMRzFoYkhRNlhDTGluS0JjSWl4dFlXeDBaWE5sT2x3aTRweWdYQ0lzVFdGd09sd2k0cVNGWENJc2JXRndPbHdpNG9hbVhDSXNiV0Z3YzNSdk9sd2k0b2FtWENJc2JXRndjM1J2Wkc5M2JqcGNJdUtHcDF3aUxHMWhjSE4wYjJ4bFpuUTZYQ0xpaHFSY0lpeHRZWEJ6ZEc5MWNEcGNJdUtHcFZ3aUxHMWhjbXRsY2pwY0l1S1dybHdpTEcxamIyMXRZVHBjSXVLb3FWd2lMRTFqZVRwY0l0Q2NYQ0lzYldONU9sd2kwTHhjSWl4dFpHRnphRHBjSXVLQWxGd2lMRzFFUkc5ME9sd2k0b2k2WENJc2JXVmhjM1Z5WldSaGJtZHNaVHBjSXVLSW9Wd2lMRTFsWkdsMWJWTndZV05sT2x3aTRvR2ZYQ0lzVFdWc2JHbHVkSEptT2x3aTRvU3pYQ0lzVFdaeU9sd2k4SjJVa0Z3aUxHMW1janBjSXZDZGxLcGNJaXh0YUc4NlhDTGloS2RjSWl4dGFXTnlienBjSXNLMVhDSXNiV2xrWVhOME9sd2lLbHdpTEcxcFpHTnBjanBjSXVLcnNGd2lMRzFwWkRwY0l1S0lvMXdpTEcxcFpHUnZkRHBjSXNLM1hDSXNiV2x1ZFhOaU9sd2k0b3FmWENJc2JXbHVkWE02WENMaWlKSmNJaXh0YVc1MWMyUTZYQ0xpaUxoY0lpeHRhVzUxYzJSMU9sd2k0cWlxWENJc1RXbHVkWE5RYkhWek9sd2k0b2lUWENJc2JXeGpjRHBjSXVLcm0xd2lMRzFzWkhJNlhDTGlnS1pjSWl4dGJuQnNkWE02WENMaWlKTmNJaXh0YjJSbGJITTZYQ0xpaXFkY0lpeE5iM0JtT2x3aThKMlZoRndpTEcxdmNHWTZYQ0x3blpXZVhDSXNiWEE2WENMaWlKTmNJaXh0YzJOeU9sd2k4SjJUZ2x3aUxFMXpZM0k2WENMaWhMTmNJaXh0YzNSd2IzTTZYQ0xpaUw1Y0lpeE5kVHBjSXM2Y1hDSXNiWFU2WENMT3ZGd2lMRzExYkhScGJXRndPbHdpNG9xNFhDSXNiWFZ0WVhBNlhDTGlpcmhjSWl4dVlXSnNZVHBjSXVLSWgxd2lMRTVoWTNWMFpUcGNJc1dEWENJc2JtRmpkWFJsT2x3aXhZUmNJaXh1WVc1bk9sd2k0b2lnNG9PU1hDSXNibUZ3T2x3aTRvbUpYQ0lzYm1Gd1JUcGNJdUtwc015NFhDSXNibUZ3YVdRNlhDTGlpWXZNdUZ3aUxHNWhjRzl6T2x3aXhZbGNJaXh1WVhCd2NtOTRPbHdpNG9tSlhDSXNibUYwZFhKaGJEcGNJdUtacmx3aUxHNWhkSFZ5WVd4ek9sd2k0b1NWWENJc2JtRjBkWEk2WENMaW1hNWNJaXh1WW5Od09sd2l3cUJjSWl4dVluVnRjRHBjSXVLSmpzeTRYQ0lzYm1KMWJYQmxPbHdpNG9tUHpMaGNJaXh1WTJGd09sd2k0cW1EWENJc1RtTmhjbTl1T2x3aXhZZGNJaXh1WTJGeWIyNDZYQ0xGaUZ3aUxFNWpaV1JwYkRwY0lzV0ZYQ0lzYm1ObFpHbHNPbHdpeFlaY0lpeHVZMjl1WnpwY0l1S0poMXdpTEc1amIyNW5aRzkwT2x3aTRxbXR6TGhjSWl4dVkzVndPbHdpNHFtQ1hDSXNUbU41T2x3aTBKMWNJaXh1WTNrNlhDTFF2VndpTEc1a1lYTm9PbHdpNG9DVFhDSXNibVZoY21ock9sd2k0cVNrWENJc2JtVmhjbkk2WENMaWhwZGNJaXh1WlVGeWNqcGNJdUtIbDF3aUxHNWxZWEp5YjNjNlhDTGlocGRjSWl4dVpUcGNJdUtKb0Z3aUxHNWxaRzkwT2x3aTRvbVF6TGhjSWl4T1pXZGhkR2wyWlUxbFpHbDFiVk53WVdObE9sd2k0b0NMWENJc1RtVm5ZWFJwZG1WVWFHbGphMU53WVdObE9sd2k0b0NMWENJc1RtVm5ZWFJwZG1WVWFHbHVVM0JoWTJVNlhDTGlnSXRjSWl4T1pXZGhkR2wyWlZabGNubFVhR2x1VTNCaFkyVTZYQ0xpZ0l0Y0lpeHVaWEYxYVhZNlhDTGlpYUpjSWl4dVpYTmxZWEk2WENMaXBLaGNJaXh1WlhOcGJUcGNJdUtKZ3N5NFhDSXNUbVZ6ZEdWa1IzSmxZWFJsY2tkeVpXRjBaWEk2WENMaWlhdGNJaXhPWlhOMFpXUk1aWE56VEdWemN6cGNJdUtKcWx3aUxFNWxkMHhwYm1VNlhDSmNYRzVjSWl4dVpYaHBjM1E2WENMaWlJUmNJaXh1WlhocGMzUnpPbHdpNG9pRVhDSXNUbVp5T2x3aThKMlVrVndpTEc1bWNqcGNJdkNkbEt0Y0lpeHVaMFU2WENMaWlhZk11RndpTEc1blpUcGNJdUtKc1Z3aUxHNW5aWEU2WENMaWliRmNJaXh1WjJWeGNUcGNJdUtKcDh5NFhDSXNibWRsY1hOc1lXNTBPbHdpNHFtK3pMaGNJaXh1WjJWek9sd2k0cW0rekxoY0lpeHVSMmM2WENMaWk1bk11RndpTEc1bmMybHRPbHdpNG9tMVhDSXNia2QwT2x3aTRvbXI0b09TWENJc2JtZDBPbHdpNG9tdlhDSXNibWQwY2pwY0l1S0pyMXdpTEc1SGRIWTZYQ0xpaWF2TXVGd2lMRzVvWVhKeU9sd2k0b2F1WENJc2JtaEJjbkk2WENMaWg0NWNJaXh1YUhCaGNqcGNJdUtyc2x3aUxHNXBPbHdpNG9pTFhDSXNibWx6T2x3aTRvdThYQ0lzYm1selpEcGNJdUtMdWx3aUxHNXBkanBjSXVLSWkxd2lMRTVLWTNrNlhDTFFpbHdpTEc1cVkzazZYQ0xSbWx3aUxHNXNZWEp5T2x3aTRvYWFYQ0lzYm14QmNuSTZYQ0xpaDQxY0lpeHViR1J5T2x3aTRvQ2xYQ0lzYm14Rk9sd2k0b21tekxoY0lpeHViR1U2WENMaWliQmNJaXh1YkdWbWRHRnljbTkzT2x3aTRvYWFYQ0lzYmt4bFpuUmhjbkp2ZHpwY0l1S0hqVndpTEc1c1pXWjBjbWxuYUhSaGNuSnZkenBjSXVLR3Jsd2lMRzVNWldaMGNtbG5hSFJoY25KdmR6cGNJdUtIamx3aUxHNXNaWEU2WENMaWliQmNJaXh1YkdWeGNUcGNJdUtKcHN5NFhDSXNibXhsY1hOc1lXNTBPbHdpNHFtOXpMaGNJaXh1YkdWek9sd2k0cW05ekxoY0lpeHViR1Z6Y3pwY0l1S0pybHdpTEc1TWJEcGNJdUtMbU15NFhDSXNibXh6YVcwNlhDTGlpYlJjSWl4dVRIUTZYQ0xpaWFyaWc1SmNJaXh1YkhRNlhDTGlpYTVjSWl4dWJIUnlhVHBjSXVLTHFsd2lMRzVzZEhKcFpUcGNJdUtMckZ3aUxHNU1kSFk2WENMaWlhck11RndpTEc1dGFXUTZYQ0xpaUtSY0lpeE9iMEp5WldGck9sd2k0b0dnWENJc1RtOXVRbkpsWVd0cGJtZFRjR0ZqWlRwY0lzS2dYQ0lzYm05d1pqcGNJdkNkbFo5Y0lpeE9iM0JtT2x3aTRvU1ZYQ0lzVG05ME9sd2k0cXVzWENJc2JtOTBPbHdpd3F4Y0lpeE9iM1JEYjI1bmNuVmxiblE2WENMaWlhSmNJaXhPYjNSRGRYQkRZWEE2WENMaWlhMWNJaXhPYjNSRWIzVmliR1ZXWlhKMGFXTmhiRUpoY2pwY0l1S0lwbHdpTEU1dmRFVnNaVzFsYm5RNlhDTGlpSWxjSWl4T2IzUkZjWFZoYkRwY0l1S0pvRndpTEU1dmRFVnhkV0ZzVkdsc1pHVTZYQ0xpaVlMTXVGd2lMRTV2ZEVWNGFYTjBjenBjSXVLSWhGd2lMRTV2ZEVkeVpXRjBaWEk2WENMaWlhOWNJaXhPYjNSSGNtVmhkR1Z5UlhGMVlXdzZYQ0xpaWJGY0lpeE9iM1JIY21WaGRHVnlSblZzYkVWeGRXRnNPbHdpNG9tbnpMaGNJaXhPYjNSSGNtVmhkR1Z5UjNKbFlYUmxjanBjSXVLSnE4eTRYQ0lzVG05MFIzSmxZWFJsY2t4bGMzTTZYQ0xpaWJsY0lpeE9iM1JIY21WaGRHVnlVMnhoYm5SRmNYVmhiRHBjSXVLcHZzeTRYQ0lzVG05MFIzSmxZWFJsY2xScGJHUmxPbHdpNG9tMVhDSXNUbTkwU0hWdGNFUnZkMjVJZFcxd09sd2k0b21PekxoY0lpeE9iM1JJZFcxd1JYRjFZV3c2WENMaWlZL011RndpTEc1dmRHbHVPbHdpNG9pSlhDSXNibTkwYVc1a2IzUTZYQ0xpaTdYTXVGd2lMRzV2ZEdsdVJUcGNJdUtMdWN5NFhDSXNibTkwYVc1MllUcGNJdUtJaVZ3aUxHNXZkR2x1ZG1JNlhDTGlpN2RjSWl4dWIzUnBiblpqT2x3aTRvdTJYQ0lzVG05MFRHVm1kRlJ5YVdGdVoyeGxRbUZ5T2x3aTRxZVB6TGhjSWl4T2IzUk1aV1owVkhKcFlXNW5iR1U2WENMaWk2cGNJaXhPYjNSTVpXWjBWSEpwWVc1bmJHVkZjWFZoYkRwY0l1S0xyRndpTEU1dmRFeGxjM002WENMaWlhNWNJaXhPYjNSTVpYTnpSWEYxWVd3NlhDTGlpYkJjSWl4T2IzUk1aWE56UjNKbFlYUmxjanBjSXVLSnVGd2lMRTV2ZEV4bGMzTk1aWE56T2x3aTRvbXF6TGhjSWl4T2IzUk1aWE56VTJ4aGJuUkZjWFZoYkRwY0l1S3B2Y3k0WENJc1RtOTBUR1Z6YzFScGJHUmxPbHdpNG9tMFhDSXNUbTkwVG1WemRHVmtSM0psWVhSbGNrZHlaV0YwWlhJNlhDTGlxcUxNdUZ3aUxFNXZkRTVsYzNSbFpFeGxjM05NWlhOek9sd2k0cXFoekxoY0lpeHViM1J1YVRwY0l1S0lqRndpTEc1dmRHNXBkbUU2WENMaWlJeGNJaXh1YjNSdWFYWmlPbHdpNG91K1hDSXNibTkwYm1sMll6cGNJdUtMdlZ3aUxFNXZkRkJ5WldObFpHVnpPbHdpNG9xQVhDSXNUbTkwVUhKbFkyVmtaWE5GY1hWaGJEcGNJdUtxcjh5NFhDSXNUbTkwVUhKbFkyVmtaWE5UYkdGdWRFVnhkV0ZzT2x3aTRvdWdYQ0lzVG05MFVtVjJaWEp6WlVWc1pXMWxiblE2WENMaWlJeGNJaXhPYjNSU2FXZG9kRlJ5YVdGdVoyeGxRbUZ5T2x3aTRxZVF6TGhjSWl4T2IzUlNhV2RvZEZSeWFXRnVaMnhsT2x3aTRvdXJYQ0lzVG05MFVtbG5hSFJVY21saGJtZHNaVVZ4ZFdGc09sd2k0b3V0WENJc1RtOTBVM0YxWVhKbFUzVmljMlYwT2x3aTRvcVB6TGhjSWl4T2IzUlRjWFZoY21WVGRXSnpaWFJGY1hWaGJEcGNJdUtMb2x3aUxFNXZkRk54ZFdGeVpWTjFjR1Z5YzJWME9sd2k0b3FRekxoY0lpeE9iM1JUY1hWaGNtVlRkWEJsY25ObGRFVnhkV0ZzT2x3aTRvdWpYQ0lzVG05MFUzVmljMlYwT2x3aTRvcUM0b09TWENJc1RtOTBVM1ZpYzJWMFJYRjFZV3c2WENMaWlvaGNJaXhPYjNSVGRXTmpaV1ZrY3pwY0l1S0tnVndpTEU1dmRGTjFZMk5sWldSelJYRjFZV3c2WENMaXFyRE11RndpTEU1dmRGTjFZMk5sWldSelUyeGhiblJGY1hWaGJEcGNJdUtMb1Z3aUxFNXZkRk4xWTJObFpXUnpWR2xzWkdVNlhDTGlpYi9NdUZ3aUxFNXZkRk4xY0dWeWMyVjBPbHdpNG9xRDRvT1NYQ0lzVG05MFUzVndaWEp6WlhSRmNYVmhiRHBjSXVLS2lWd2lMRTV2ZEZScGJHUmxPbHdpNG9tQlhDSXNUbTkwVkdsc1pHVkZjWFZoYkRwY0l1S0poRndpTEU1dmRGUnBiR1JsUm5Wc2JFVnhkV0ZzT2x3aTRvbUhYQ0lzVG05MFZHbHNaR1ZVYVd4a1pUcGNJdUtKaVZ3aUxFNXZkRlpsY25ScFkyRnNRbUZ5T2x3aTRvaWtYQ0lzYm5CaGNtRnNiR1ZzT2x3aTRvaW1YQ0lzYm5CaGNqcGNJdUtJcGx3aUxHNXdZWEp6YkRwY0l1S3J2ZUtEcFZ3aUxHNXdZWEowT2x3aTRvaUN6TGhjSWl4dWNHOXNhVzUwT2x3aTRxaVVYQ0lzYm5CeU9sd2k0b3FBWENJc2JuQnlZM1ZsT2x3aTRvdWdYQ0lzYm5CeVpXTTZYQ0xpaW9CY0lpeHVjSEpsWTJWeE9sd2k0cXF2ekxoY0lpeHVjSEpsT2x3aTRxcXZ6TGhjSWl4dWNtRnljbU02WENMaXBMUE11RndpTEc1eVlYSnlPbHdpNG9hYlhDSXNibkpCY25JNlhDTGloNDljSWl4dWNtRnljbmM2WENMaWhwM011RndpTEc1eWFXZG9kR0Z5Y205M09sd2k0b2FiWENJc2JsSnBaMmgwWVhKeWIzYzZYQ0xpaDQ5Y0lpeHVjblJ5YVRwY0l1S0xxMXdpTEc1eWRISnBaVHBjSXVLTHJWd2lMRzV6WXpwY0l1S0tnVndpTEc1elkyTjFaVHBjSXVLTG9Wd2lMRzV6WTJVNlhDTGlxckRNdUZ3aUxFNXpZM0k2WENMd25aS3BYQ0lzYm5OamNqcGNJdkNkazROY0lpeHVjMmh2Y25SdGFXUTZYQ0xpaUtSY0lpeHVjMmh2Y25Sd1lYSmhiR3hsYkRwY0l1S0lwbHdpTEc1emFXMDZYQ0xpaVlGY0lpeHVjMmx0WlRwY0l1S0poRndpTEc1emFXMWxjVHBjSXVLSmhGd2lMRzV6Yldsa09sd2k0b2lrWENJc2JuTndZWEk2WENMaWlLWmNJaXh1YzNGemRXSmxPbHdpNG91aVhDSXNibk54YzNWd1pUcGNJdUtMbzF3aUxHNXpkV0k2WENMaWlvUmNJaXh1YzNWaVJUcGNJdUtyaGN5NFhDSXNibk4xWW1VNlhDTGlpb2hjSWl4dWMzVmljMlYwT2x3aTRvcUM0b09TWENJc2JuTjFZbk5sZEdWeE9sd2k0b3FJWENJc2JuTjFZbk5sZEdWeGNUcGNJdUtyaGN5NFhDSXNibk4xWTJNNlhDTGlpb0ZjSWl4dWMzVmpZMlZ4T2x3aTRxcXd6TGhjSWl4dWMzVndPbHdpNG9xRlhDSXNibk4xY0VVNlhDTGlxNGJNdUZ3aUxHNXpkWEJsT2x3aTRvcUpYQ0lzYm5OMWNITmxkRHBjSXVLS2crS0RrbHdpTEc1emRYQnpaWFJsY1RwY0l1S0tpVndpTEc1emRYQnpaWFJsY1hFNlhDTGlxNGJNdUZ3aUxHNTBaMnc2WENMaWlibGNJaXhPZEdsc1pHVTZYQ0xEa1Z3aUxHNTBhV3hrWlRwY0lzT3hYQ0lzYm5Sc1p6cGNJdUtKdUZ3aUxHNTBjbWxoYm1kc1pXeGxablE2WENMaWk2cGNJaXh1ZEhKcFlXNW5iR1ZzWldaMFpYRTZYQ0xpaTZ4Y0lpeHVkSEpwWVc1bmJHVnlhV2RvZERwY0l1S0xxMXdpTEc1MGNtbGhibWRzWlhKcFoyaDBaWEU2WENMaWk2MWNJaXhPZFRwY0lzNmRYQ0lzYm5VNlhDTE92VndpTEc1MWJUcGNJaU5jSWl4dWRXMWxjbTg2WENMaWhKWmNJaXh1ZFcxemNEcGNJdUtBaDF3aUxHNTJZWEE2WENMaWlZM2lnNUpjSWl4dWRtUmhjMmc2WENMaWlxeGNJaXh1ZGtSaGMyZzZYQ0xpaXExY0lpeHVWbVJoYzJnNlhDTGlpcTVjSWl4dVZrUmhjMmc2WENMaWlxOWNJaXh1ZG1kbE9sd2k0b21sNG9PU1hDSXNiblpuZERwY0lqN2lnNUpjSWl4dWRraGhjbkk2WENMaXBJUmNJaXh1ZG1sdVptbHVPbHdpNHFlZVhDSXNiblpzUVhKeU9sd2k0cVNDWENJc2JuWnNaVHBjSXVLSnBPS0RrbHdpTEc1MmJIUTZYQ0k4NG9PU1hDSXNiblpzZEhKcFpUcGNJdUtLdE9LRGtsd2lMRzUyY2tGeWNqcGNJdUtrZzF3aUxHNTJjblJ5YVdVNlhDTGlpclhpZzVKY0lpeHVkbk5wYlRwY0l1S0l2T0tEa2x3aUxHNTNZWEpvYXpwY0l1S2tvMXdpTEc1M1lYSnlPbHdpNG9hV1hDSXNibmRCY25JNlhDTGloNVpjSWl4dWQyRnljbTkzT2x3aTRvYVdYQ0lzYm5kdVpXRnlPbHdpNHFTblhDSXNUMkZqZFhSbE9sd2l3NU5jSWl4dllXTjFkR1U2WENMRHMxd2lMRzloYzNRNlhDTGlpcHRjSWl4UFkybHlZenBjSXNPVVhDSXNiMk5wY21NNlhDTER0RndpTEc5amFYSTZYQ0xpaXBwY0lpeFBZM2s2WENMUW5sd2lMRzlqZVRwY0l0QytYQ0lzYjJSaGMyZzZYQ0xpaXAxY0lpeFBaR0pzWVdNNlhDTEZrRndpTEc5a1lteGhZenBjSXNXUlhDSXNiMlJwZGpwY0l1S291RndpTEc5a2IzUTZYQ0xpaXBsY0lpeHZaSE52YkdRNlhDTGlwcnhjSWl4UFJXeHBaenBjSXNXU1hDSXNiMlZzYVdjNlhDTEZrMXdpTEc5bVkybHlPbHdpNHFhL1hDSXNUMlp5T2x3aThKMlVrbHdpTEc5bWNqcGNJdkNkbEt4Y0lpeHZaMjl1T2x3aXk1dGNJaXhQWjNKaGRtVTZYQ0xEa2x3aUxHOW5jbUYyWlRwY0lzT3lYQ0lzYjJkME9sd2k0cWVCWENJc2IyaGlZWEk2WENMaXByVmNJaXh2YUcwNlhDTE9xVndpTEc5cGJuUTZYQ0xpaUs1Y0lpeHZiR0Z5Y2pwY0l1S0d1bHdpTEc5c1kybHlPbHdpNHFhK1hDSXNiMnhqY205emN6cGNJdUttdTF3aUxHOXNhVzVsT2x3aTRvQytYQ0lzYjJ4ME9sd2k0cWVBWENJc1QyMWhZM0k2WENMRmpGd2lMRzl0WVdOeU9sd2l4WTFjSWl4UGJXVm5ZVHBjSXM2cFhDSXNiMjFsWjJFNlhDTFBpVndpTEU5dGFXTnliMjQ2WENMT24xd2lMRzl0YVdOeWIyNDZYQ0xPdjF3aUxHOXRhV1E2WENMaXByWmNJaXh2YldsdWRYTTZYQ0xpaXBaY0lpeFBiM0JtT2x3aThKMlZobHdpTEc5dmNHWTZYQ0x3blpXZ1hDSXNiM0JoY2pwY0l1S210MXdpTEU5d1pXNURkWEpzZVVSdmRXSnNaVkYxYjNSbE9sd2k0b0NjWENJc1QzQmxia04xY214NVVYVnZkR1U2WENMaWdKaGNJaXh2Y0dWeWNEcGNJdUttdVZ3aUxHOXdiSFZ6T2x3aTRvcVZYQ0lzYjNKaGNuSTZYQ0xpaHJ0Y0lpeFBjanBjSXVLcGxGd2lMRzl5T2x3aTRvaW9YQ0lzYjNKa09sd2k0cW1kWENJc2IzSmtaWEk2WENMaWhMUmNJaXh2Y21SbGNtOW1PbHdpNG9TMFhDSXNiM0prWmpwY0lzS3FYQ0lzYjNKa2JUcGNJc0s2WENJc2IzSnBaMjltT2x3aTRvcTJYQ0lzYjNKdmNqcGNJdUtwbGx3aUxHOXljMnh2Y0dVNlhDTGlxWmRjSWl4dmNuWTZYQ0xpcVp0Y0lpeHZVenBjSXVLVGlGd2lMRTl6WTNJNlhDTHduWktxWENJc2IzTmpjanBjSXVLRXRGd2lMRTl6YkdGemFEcGNJc09ZWENJc2IzTnNZWE5vT2x3aXc3aGNJaXh2YzI5c09sd2k0b3FZWENJc1QzUnBiR1JsT2x3aXc1VmNJaXh2ZEdsc1pHVTZYQ0xEdFZ3aUxHOTBhVzFsYzJGek9sd2k0cWkyWENJc1QzUnBiV1Z6T2x3aTRxaTNYQ0lzYjNScGJXVnpPbHdpNG9xWFhDSXNUM1Z0YkRwY0lzT1dYQ0lzYjNWdGJEcGNJc08yWENJc2IzWmlZWEk2WENMaWpMMWNJaXhQZG1WeVFtRnlPbHdpNG9DK1hDSXNUM1psY2tKeVlXTmxPbHdpNG8rZVhDSXNUM1psY2tKeVlXTnJaWFE2WENMaWpyUmNJaXhQZG1WeVVHRnlaVzUwYUdWemFYTTZYQ0xpajV4Y0lpeHdZWEpoT2x3aXdyWmNJaXh3WVhKaGJHeGxiRHBjSXVLSXBWd2lMSEJoY2pwY0l1S0lwVndpTEhCaGNuTnBiVHBjSXVLcnMxd2lMSEJoY25Oc09sd2k0cXU5WENJc2NHRnlkRHBjSXVLSWdsd2lMRkJoY25ScFlXeEVPbHdpNG9pQ1hDSXNVR041T2x3aTBKOWNJaXh3WTNrNlhDTFF2MXdpTEhCbGNtTnVkRHBjSWlWY0lpeHdaWEpwYjJRNlhDSXVYQ0lzY0dWeWJXbHNPbHdpNG9Dd1hDSXNjR1Z5Y0RwY0l1S0twVndpTEhCbGNuUmxibXM2WENMaWdMRmNJaXhRWm5JNlhDTHduWlNUWENJc2NHWnlPbHdpOEoyVXJWd2lMRkJvYVRwY0lzNm1YQ0lzY0docE9sd2l6NFpjSWl4d2FHbDJPbHdpejVWY0lpeHdhRzF0WVhRNlhDTGloTE5jSWl4d2FHOXVaVHBjSXVLWWpsd2lMRkJwT2x3aXpxQmNJaXh3YVRwY0lzK0FYQ0lzY0dsMFkyaG1iM0pyT2x3aTRvdVVYQ0lzY0dsMk9sd2l6NVpjSWl4d2JHRnVZMnM2WENMaWhJOWNJaXh3YkdGdVkydG9PbHdpNG9TT1hDSXNjR3hoYm10Mk9sd2k0b1NQWENJc2NHeDFjMkZqYVhJNlhDTGlxS05jSWl4d2JIVnpZanBjSXVLS25sd2lMSEJzZFhOamFYSTZYQ0xpcUtKY0lpeHdiSFZ6T2x3aUsxd2lMSEJzZFhOa2J6cGNJdUtJbEZ3aUxIQnNkWE5rZFRwY0l1S29wVndpTEhCc2RYTmxPbHdpNHFteVhDSXNVR3gxYzAxcGJuVnpPbHdpd3JGY0lpeHdiSFZ6Ylc0NlhDTENzVndpTEhCc2RYTnphVzA2WENMaXFLWmNJaXh3YkhWemRIZHZPbHdpNHFpblhDSXNjRzA2WENMQ3NWd2lMRkJ2YVc1allYSmxjR3hoYm1VNlhDTGloSXhjSWl4d2IybHVkR2x1ZERwY0l1S29sVndpTEhCdmNHWTZYQ0x3blpXaFhDSXNVRzl3WmpwY0l1S0VtVndpTEhCdmRXNWtPbHdpd3FOY0lpeHdjbUZ3T2x3aTRxcTNYQ0lzVUhJNlhDTGlxcnRjSWl4d2NqcGNJdUtKdWx3aUxIQnlZM1ZsT2x3aTRvbThYQ0lzY0hKbFkyRndjSEp2ZURwY0l1S3F0MXdpTEhCeVpXTTZYQ0xpaWJwY0lpeHdjbVZqWTNWeWJIbGxjVHBjSXVLSnZGd2lMRkJ5WldObFpHVnpPbHdpNG9tNlhDSXNVSEpsWTJWa1pYTkZjWFZoYkRwY0l1S3FyMXdpTEZCeVpXTmxaR1Z6VTJ4aGJuUkZjWFZoYkRwY0l1S0p2RndpTEZCeVpXTmxaR1Z6Vkdsc1pHVTZYQ0xpaWI1Y0lpeHdjbVZqWlhFNlhDTGlxcTljSWl4d2NtVmpibUZ3Y0hKdmVEcGNJdUtxdVZ3aUxIQnlaV051WlhGeE9sd2k0cXExWENJc2NISmxZMjV6YVcwNlhDTGlpNmhjSWl4d2NtVTZYQ0xpcXE5Y0lpeHdja1U2WENMaXFyTmNJaXh3Y21WamMybHRPbHdpNG9tK1hDSXNjSEpwYldVNlhDTGlnTEpjSWl4UWNtbHRaVHBjSXVLQXMxd2lMSEJ5YVcxbGN6cGNJdUtFbVZ3aUxIQnlibUZ3T2x3aTRxcTVYQ0lzY0hKdVJUcGNJdUtxdFZ3aUxIQnlibk5wYlRwY0l1S0xxRndpTEhCeWIyUTZYQ0xpaUk5Y0lpeFFjbTlrZFdOME9sd2k0b2lQWENJc2NISnZabUZzWVhJNlhDTGlqSzVjSWl4d2NtOW1iR2x1WlRwY0l1S01rbHdpTEhCeWIyWnpkWEptT2x3aTRveVRYQ0lzY0hKdmNEcGNJdUtJblZ3aUxGQnliM0J2Y25ScGIyNWhiRHBjSXVLSW5Wd2lMRkJ5YjNCdmNuUnBiMjQ2WENMaWlMZGNJaXh3Y205d2RHODZYQ0xpaUoxY0lpeHdjbk5wYlRwY0l1S0p2bHdpTEhCeWRYSmxiRHBjSXVLS3NGd2lMRkJ6WTNJNlhDTHduWktyWENJc2NITmpjanBjSXZDZGs0VmNJaXhRYzJrNlhDTE9xRndpTEhCemFUcGNJcytJWENJc2NIVnVZM053T2x3aTRvQ0lYQ0lzVVdaeU9sd2k4SjJVbEZ3aUxIRm1janBjSXZDZGxLNWNJaXh4YVc1ME9sd2k0cWlNWENJc2NXOXdaanBjSXZDZGxhSmNJaXhSYjNCbU9sd2k0b1NhWENJc2NYQnlhVzFsT2x3aTRvR1hYQ0lzVVhOamNqcGNJdkNka3F4Y0lpeHhjMk55T2x3aThKMlRobHdpTEhGMVlYUmxjbTVwYjI1ek9sd2k0b1NOWENJc2NYVmhkR2x1ZERwY0l1S29sbHdpTEhGMVpYTjBPbHdpUDF3aUxIRjFaWE4wWlhFNlhDTGlpWjljSWl4eGRXOTBPaWRjSWljc1VWVlBWRG9uWENJbkxISkJZWEp5T2x3aTRvZWJYQ0lzY21GalpUcGNJdUtJdmN5eFhDSXNVbUZqZFhSbE9sd2l4WlJjSWl4eVlXTjFkR1U2WENMRmxWd2lMSEpoWkdsak9sd2k0b2lhWENJc2NtRmxiWEIwZVhZNlhDTGlwck5jSWl4eVlXNW5PbHdpNHArcFhDSXNVbUZ1WnpwY0l1S2ZxMXdpTEhKaGJtZGtPbHdpNHFhU1hDSXNjbUZ1WjJVNlhDTGlwcVZjSWl4eVlXNW5iR1U2WENMaW42bGNJaXh5WVhGMWJ6cGNJc0s3WENJc2NtRnljbUZ3T2x3aTRxVzFYQ0lzY21GeWNtSTZYQ0xpaDZWY0lpeHlZWEp5WW1aek9sd2k0cVNnWENJc2NtRnljbU02WENMaXBMTmNJaXh5WVhKeU9sd2k0b2FTWENJc1VtRnljanBjSXVLR29Gd2lMSEpCY25JNlhDTGloNUpjSWl4eVlYSnlabk02WENMaXBKNWNJaXh5WVhKeWFHczZYQ0xpaHFwY0lpeHlZWEp5YkhBNlhDTGlocXhjSWl4eVlYSnljR3c2WENMaXBZVmNJaXh5WVhKeWMybHRPbHdpNHFXMFhDSXNVbUZ5Y25Sc09sd2k0cVNXWENJc2NtRnljblJzT2x3aTRvYWpYQ0lzY21GeWNuYzZYQ0xpaHAxY0lpeHlZWFJoYVd3NlhDTGlwSnBjSWl4eVFYUmhhV3c2WENMaXBKeGNJaXh5WVhScGJ6cGNJdUtJdGx3aUxISmhkR2x2Ym1Gc2N6cGNJdUtFbWx3aUxISmlZWEp5T2x3aTRxU05YQ0lzY2tKaGNuSTZYQ0xpcEk5Y0lpeFNRbUZ5Y2pwY0l1S2trRndpTEhKaVluSnJPbHdpNHAyelhDSXNjbUp5WVdObE9sd2lmVndpTEhKaWNtRmphenBjSWwxY0lpeHlZbkpyWlRwY0l1S21qRndpTEhKaWNtdHpiR1E2WENMaXBvNWNJaXh5WW5KcmMyeDFPbHdpNHFhUVhDSXNVbU5oY205dU9sd2l4WmhjSWl4eVkyRnliMjQ2WENMRm1Wd2lMRkpqWldScGJEcGNJc1dXWENJc2NtTmxaR2xzT2x3aXhaZGNJaXh5WTJWcGJEcGNJdUtNaVZ3aUxISmpkV0k2WENKOVhDSXNVbU41T2x3aTBLQmNJaXh5WTNrNlhDTFJnRndpTEhKa1kyRTZYQ0xpcExkY0lpeHlaR3hrYUdGeU9sd2k0cVdwWENJc2NtUnhkVzg2WENMaWdKMWNJaXh5WkhGMWIzSTZYQ0xpZ0oxY0lpeHlaSE5vT2x3aTRvYXpYQ0lzY21WaGJEcGNJdUtFbkZ3aUxISmxZV3hwYm1VNlhDTGloSnRjSWl4eVpXRnNjR0Z5ZERwY0l1S0VuRndpTEhKbFlXeHpPbHdpNG9TZFhDSXNVbVU2WENMaWhKeGNJaXh5WldOME9sd2k0cGF0WENJc2NtVm5PbHdpd3E1Y0lpeFNSVWM2WENMQ3Jsd2lMRkpsZG1WeWMyVkZiR1Z0Wlc1ME9sd2k0b2lMWENJc1VtVjJaWEp6WlVWeGRXbHNhV0p5YVhWdE9sd2k0b2VMWENJc1VtVjJaWEp6WlZWd1JYRjFhV3hwWW5KcGRXMDZYQ0xpcGE5Y0lpeHlabWx6YUhRNlhDTGlwYjFjSWl4eVpteHZiM0k2WENMaWpJdGNJaXh5Wm5JNlhDTHduWlN2WENJc1VtWnlPbHdpNG9TY1hDSXNja2hoY2pwY0l1S2xwRndpTEhKb1lYSmtPbHdpNG9lQlhDSXNjbWhoY25VNlhDTGloNEJjSWl4eWFHRnlkV3c2WENMaXBheGNJaXhTYUc4NlhDTE9vVndpTEhKb2J6cGNJcytCWENJc2NtaHZkanBjSXMreFhDSXNVbWxuYUhSQmJtZHNaVUp5WVdOclpYUTZYQ0xpbjZsY0lpeFNhV2RvZEVGeWNtOTNRbUZ5T2x3aTRvZWxYQ0lzY21sbmFIUmhjbkp2ZHpwY0l1S0drbHdpTEZKcFoyaDBRWEp5YjNjNlhDTGlocEpjSWl4U2FXZG9kR0Z5Y205M09sd2k0b2VTWENJc1VtbG5hSFJCY25KdmQweGxablJCY25KdmR6cGNJdUtIaEZ3aUxISnBaMmgwWVhKeWIzZDBZV2xzT2x3aTRvYWpYQ0lzVW1sbmFIUkRaV2xzYVc1bk9sd2k0b3lKWENJc1VtbG5hSFJFYjNWaWJHVkNjbUZqYTJWME9sd2k0cCtuWENJc1VtbG5hSFJFYjNkdVZHVmxWbVZqZEc5eU9sd2k0cVdkWENJc1VtbG5hSFJFYjNkdVZtVmpkRzl5UW1GeU9sd2k0cVdWWENJc1VtbG5hSFJFYjNkdVZtVmpkRzl5T2x3aTRvZUNYQ0lzVW1sbmFIUkdiRzl2Y2pwY0l1S01pMXdpTEhKcFoyaDBhR0Z5Y0c5dmJtUnZkMjQ2WENMaWg0RmNJaXh5YVdkb2RHaGhjbkJ2YjI1MWNEcGNJdUtIZ0Z3aUxISnBaMmgwYkdWbWRHRnljbTkzY3pwY0l1S0hoRndpTEhKcFoyaDBiR1ZtZEdoaGNuQnZiMjV6T2x3aTRvZU1YQ0lzY21sbmFIUnlhV2RvZEdGeWNtOTNjenBjSXVLSGlWd2lMSEpwWjJoMGMzRjFhV2RoY25KdmR6cGNJdUtHblZ3aUxGSnBaMmgwVkdWbFFYSnliM2M2WENMaWhxWmNJaXhTYVdkb2RGUmxaVHBjSXVLS29sd2lMRkpwWjJoMFZHVmxWbVZqZEc5eU9sd2k0cVdiWENJc2NtbG5hSFIwYUhKbFpYUnBiV1Z6T2x3aTRvdU1YQ0lzVW1sbmFIUlVjbWxoYm1kc1pVSmhjanBjSXVLbmtGd2lMRkpwWjJoMFZISnBZVzVuYkdVNlhDTGlpck5jSWl4U2FXZG9kRlJ5YVdGdVoyeGxSWEYxWVd3NlhDTGlpclZjSWl4U2FXZG9kRlZ3Ukc5M2JsWmxZM1J2Y2pwY0l1S2xqMXdpTEZKcFoyaDBWWEJVWldWV1pXTjBiM0k2WENMaXBaeGNJaXhTYVdkb2RGVndWbVZqZEc5eVFtRnlPbHdpNHFXVVhDSXNVbWxuYUhSVmNGWmxZM1J2Y2pwY0l1S0d2bHdpTEZKcFoyaDBWbVZqZEc5eVFtRnlPbHdpNHFXVFhDSXNVbWxuYUhSV1pXTjBiM0k2WENMaWg0QmNJaXh5YVc1bk9sd2l5NXBjSWl4eWFYTnBibWRrYjNSelpYRTZYQ0xpaVpOY0lpeHliR0Z5Y2pwY0l1S0hoRndpTEhKc2FHRnlPbHdpNG9lTVhDSXNjbXh0T2x3aTRvQ1BYQ0lzY20xdmRYTjBZV05vWlRwY0l1S09zVndpTEhKdGIzVnpkRHBjSXVLT3NWd2lMSEp1Yldsa09sd2k0cXV1WENJc2NtOWhibWM2WENMaW42MWNJaXh5YjJGeWNqcGNJdUtIdmx3aUxISnZZbkpyT2x3aTRwK25YQ0lzY205d1lYSTZYQ0xpcG9aY0lpeHliM0JtT2x3aThKMlZvMXdpTEZKdmNHWTZYQ0xpaEoxY0lpeHliM0JzZFhNNlhDTGlxSzVjSWl4eWIzUnBiV1Z6T2x3aTRxaTFYQ0lzVW05MWJtUkpiWEJzYVdWek9sd2k0cVd3WENJc2NuQmhjanBjSWlsY0lpeHljR0Z5WjNRNlhDTGlwcFJjSWl4eWNIQnZiR2x1ZERwY0l1S29rbHdpTEhKeVlYSnlPbHdpNG9lSlhDSXNVbkpwWjJoMFlYSnliM2M2WENMaWg1dGNJaXh5YzJGeGRXODZYQ0xpZ0xwY0lpeHljMk55T2x3aThKMlRoMXdpTEZKelkzSTZYQ0xpaEp0Y0lpeHljMmc2WENMaWhyRmNJaXhTYzJnNlhDTGlockZjSWl4eWMzRmlPbHdpWFZ3aUxISnpjWFZ2T2x3aTRvQ1pYQ0lzY25OeGRXOXlPbHdpNG9DWlhDSXNjblJvY21WbE9sd2k0b3VNWENJc2NuUnBiV1Z6T2x3aTRvdUtYQ0lzY25SeWFUcGNJdUtXdVZ3aUxISjBjbWxsT2x3aTRvcTFYQ0lzY25SeWFXWTZYQ0xpbHJoY0lpeHlkSEpwYkhSeWFUcGNJdUtuamx3aUxGSjFiR1ZFWld4aGVXVmtPbHdpNHFlMFhDSXNjblZzZFdoaGNqcGNJdUtscUZ3aUxISjRPbHdpNG9TZVhDSXNVMkZqZFhSbE9sd2l4WnBjSWl4ellXTjFkR1U2WENMRm0xd2lMSE5pY1hWdk9sd2k0b0NhWENJc2MyTmhjRHBjSXVLcXVGd2lMRk5qWVhKdmJqcGNJc1dnWENJc2MyTmhjbTl1T2x3aXhhRmNJaXhUWXpwY0l1S3F2RndpTEhOak9sd2k0b203WENJc2MyTmpkV1U2WENMaWliMWNJaXh6WTJVNlhDTGlxckJjSWl4elkwVTZYQ0xpcXJSY0lpeFRZMlZrYVd3NlhDTEZubHdpTEhOalpXUnBiRHBjSXNXZlhDSXNVMk5wY21NNlhDTEZuRndpTEhOamFYSmpPbHdpeFoxY0lpeHpZMjVoY0RwY0l1S3F1bHdpTEhOamJrVTZYQ0xpcXJaY0lpeHpZMjV6YVcwNlhDTGlpNmxjSWl4elkzQnZiR2x1ZERwY0l1S29rMXdpTEhOamMybHRPbHdpNG9tL1hDSXNVMk41T2x3aTBLRmNJaXh6WTNrNlhDTFJnVndpTEhOa2IzUmlPbHdpNG9xaFhDSXNjMlJ2ZERwY0l1S0xoVndpTEhOa2IzUmxPbHdpNHFtbVhDSXNjMlZoY21ock9sd2k0cVNsWENJc2MyVmhjbkk2WENMaWhwaGNJaXh6WlVGeWNqcGNJdUtIbUZ3aUxITmxZWEp5YjNjNlhDTGlocGhjSWl4elpXTjBPbHdpd3FkY0lpeHpaVzFwT2x3aU8xd2lMSE5sYzNkaGNqcGNJdUtrcVZ3aUxITmxkRzFwYm5Wek9sd2k0b2lXWENJc2MyVjBiVzQ2WENMaWlKWmNJaXh6WlhoME9sd2k0cHkyWENJc1UyWnlPbHdpOEoyVWxsd2lMSE5tY2pwY0l2Q2RsTEJjSWl4elpuSnZkMjQ2WENMaWpLSmNJaXh6YUdGeWNEcGNJdUtacjF3aUxGTklRMGhqZVRwY0l0Q3BYQ0lzYzJoamFHTjVPbHdpMFlsY0lpeFRTR041T2x3aTBLaGNJaXh6YUdONU9sd2kwWWhjSWl4VGFHOXlkRVJ2ZDI1QmNuSnZkenBjSXVLR2sxd2lMRk5vYjNKMFRHVm1kRUZ5Y205M09sd2k0b2FRWENJc2MyaHZjblJ0YVdRNlhDTGlpS05jSWl4emFHOXlkSEJoY21Gc2JHVnNPbHdpNG9pbFhDSXNVMmh2Y25SU2FXZG9kRUZ5Y205M09sd2k0b2FTWENJc1UyaHZjblJWY0VGeWNtOTNPbHdpNG9hUlhDSXNjMmg1T2x3aXdxMWNJaXhUYVdkdFlUcGNJczZqWENJc2MybG5iV0U2WENMUGcxd2lMSE5wWjIxaFpqcGNJcytDWENJc2MybG5iV0YyT2x3aXo0SmNJaXh6YVcwNlhDTGlpTHhjSWl4emFXMWtiM1E2WENMaXFhcGNJaXh6YVcxbE9sd2k0b21EWENJc2MybHRaWEU2WENMaWlZTmNJaXh6YVcxbk9sd2k0cXFlWENJc2MybHRaMFU2WENMaXFxQmNJaXh6YVcxc09sd2k0cXFkWENJc2MybHRiRVU2WENMaXFwOWNJaXh6YVcxdVpUcGNJdUtKaGx3aUxITnBiWEJzZFhNNlhDTGlxS1JjSWl4emFXMXlZWEp5T2x3aTRxV3lYQ0lzYzJ4aGNuSTZYQ0xpaHBCY0lpeFRiV0ZzYkVOcGNtTnNaVHBjSXVLSW1Gd2lMSE50WVd4c2MyVjBiV2x1ZFhNNlhDTGlpSlpjSWl4emJXRnphSEE2WENMaXFMTmNJaXh6YldWd1lYSnpiRHBjSXVLbnBGd2lMSE50YVdRNlhDTGlpS05jSWl4emJXbHNaVHBjSXVLTW8xd2lMSE50ZERwY0l1S3FxbHdpTEhOdGRHVTZYQ0xpcXF4Y0lpeHpiWFJsY3pwY0l1S3FyTys0Z0Z3aUxGTlBSbFJqZVRwY0l0Q3NYQ0lzYzI5bWRHTjVPbHdpMFl4Y0lpeHpiMnhpWVhJNlhDTGlqTDljSWl4emIyeGlPbHdpNHFlRVhDSXNjMjlzT2x3aUwxd2lMRk52Y0dZNlhDTHduWldLWENJc2MyOXdaanBjSXZDZGxhUmNJaXh6Y0dGa1pYTTZYQ0xpbWFCY0lpeHpjR0ZrWlhOMWFYUTZYQ0xpbWFCY0lpeHpjR0Z5T2x3aTRvaWxYQ0lzYzNGallYQTZYQ0xpaXBOY0lpeHpjV05oY0hNNlhDTGlpcFB2dUlCY0lpeHpjV04xY0RwY0l1S0tsRndpTEhOeFkzVndjenBjSXVLS2xPKzRnRndpTEZOeGNuUTZYQ0xpaUpwY0lpeHpjWE4xWWpwY0l1S0tqMXdpTEhOeGMzVmlaVHBjSXVLS2tWd2lMSE54YzNWaWMyVjBPbHdpNG9xUFhDSXNjM0Z6ZFdKelpYUmxjVHBjSXVLS2tWd2lMSE54YzNWd09sd2k0b3FRWENJc2MzRnpkWEJsT2x3aTRvcVNYQ0lzYzNGemRYQnpaWFE2WENMaWlwQmNJaXh6Y1hOMWNITmxkR1Z4T2x3aTRvcVNYQ0lzYzNGMVlYSmxPbHdpNHBhaFhDSXNVM0YxWVhKbE9sd2k0cGFoWENJc1UzRjFZWEpsU1c1MFpYSnpaV04wYVc5dU9sd2k0b3FUWENJc1UzRjFZWEpsVTNWaWMyVjBPbHdpNG9xUFhDSXNVM0YxWVhKbFUzVmljMlYwUlhGMVlXdzZYQ0xpaXBGY0lpeFRjWFZoY21WVGRYQmxjbk5sZERwY0l1S0trRndpTEZOeGRXRnlaVk4xY0dWeWMyVjBSWEYxWVd3NlhDTGlpcEpjSWl4VGNYVmhjbVZWYm1sdmJqcGNJdUtLbEZ3aUxITnhkV0Z5WmpwY0l1S1dxbHdpTEhOeGRUcGNJdUtXb1Z3aUxITnhkV1k2WENMaWxxcGNJaXh6Y21GeWNqcGNJdUtHa2x3aUxGTnpZM0k2WENMd25aS3VYQ0lzYzNOamNqcGNJdkNkazRoY0lpeHpjMlYwYlc0NlhDTGlpSlpjSWl4emMyMXBiR1U2WENMaWpLTmNJaXh6YzNSaGNtWTZYQ0xpaTRaY0lpeFRkR0Z5T2x3aTRvdUdYQ0lzYzNSaGNqcGNJdUtZaGx3aUxITjBZWEptT2x3aTRwaUZYQ0lzYzNSeVlXbG5hSFJsY0hOcGJHOXVPbHdpejdWY0lpeHpkSEpoYVdkb2RIQm9hVHBjSXMrVlhDSXNjM1J5Ym5NNlhDTENyMXdpTEhOMVlqcGNJdUtLZ2x3aUxGTjFZanBjSXVLTGtGd2lMSE4xWW1SdmREcGNJdUtxdlZ3aUxITjFZa1U2WENMaXE0VmNJaXh6ZFdKbE9sd2k0b3FHWENJc2MzVmlaV1J2ZERwY0l1S3JnMXdpTEhOMVltMTFiSFE2WENMaXE0RmNJaXh6ZFdKdVJUcGNJdUtyaTF3aUxITjFZbTVsT2x3aTRvcUtYQ0lzYzNWaWNHeDFjenBjSXVLcXYxd2lMSE4xWW5KaGNuSTZYQ0xpcGJsY0lpeHpkV0p6WlhRNlhDTGlpb0pjSWl4VGRXSnpaWFE2WENMaWk1QmNJaXh6ZFdKelpYUmxjVHBjSXVLS2hsd2lMSE4xWW5ObGRHVnhjVHBjSXVLcmhWd2lMRk4xWW5ObGRFVnhkV0ZzT2x3aTRvcUdYQ0lzYzNWaWMyVjBibVZ4T2x3aTRvcUtYQ0lzYzNWaWMyVjBibVZ4Y1RwY0l1S3JpMXdpTEhOMVluTnBiVHBjSXVLcmgxd2lMSE4xWW5OMVlqcGNJdUtybFZ3aUxITjFZbk4xY0RwY0l1S3JrMXdpTEhOMVkyTmhjSEJ5YjNnNlhDTGlxcmhjSWl4emRXTmpPbHdpNG9tN1hDSXNjM1ZqWTJOMWNteDVaWEU2WENMaWliMWNJaXhUZFdOalpXVmtjenBjSXVLSnUxd2lMRk4xWTJObFpXUnpSWEYxWVd3NlhDTGlxckJjSWl4VGRXTmpaV1ZrYzFOc1lXNTBSWEYxWVd3NlhDTGlpYjFjSWl4VGRXTmpaV1ZrYzFScGJHUmxPbHdpNG9tL1hDSXNjM1ZqWTJWeE9sd2k0cXF3WENJc2MzVmpZMjVoY0hCeWIzZzZYQ0xpcXJwY0lpeHpkV05qYm1WeGNUcGNJdUtxdGx3aUxITjFZMk51YzJsdE9sd2k0b3VwWENJc2MzVmpZM05wYlRwY0l1S0p2MXdpTEZOMVkyaFVhR0YwT2x3aTRvaUxYQ0lzYzNWdE9sd2k0b2lSWENJc1UzVnRPbHdpNG9pUlhDSXNjM1Z1WnpwY0l1S1pxbHdpTEhOMWNERTZYQ0xDdVZ3aUxITjFjREk2WENMQ3Nsd2lMSE4xY0RNNlhDTENzMXdpTEhOMWNEcGNJdUtLZzF3aUxGTjFjRHBjSXVLTGtWd2lMSE4xY0dSdmREcGNJdUtxdmx3aUxITjFjR1J6ZFdJNlhDTGlxNWhjSWl4emRYQkZPbHdpNHF1R1hDSXNjM1Z3WlRwY0l1S0toMXdpTEhOMWNHVmtiM1E2WENMaXE0UmNJaXhUZFhCbGNuTmxkRHBjSXVLS2cxd2lMRk4xY0dWeWMyVjBSWEYxWVd3NlhDTGlpb2RjSWl4emRYQm9jMjlzT2x3aTRwK0pYQ0lzYzNWd2FITjFZanBjSXVLcmwxd2lMSE4xY0d4aGNuSTZYQ0xpcGJ0Y0lpeHpkWEJ0ZFd4ME9sd2k0cXVDWENJc2MzVndia1U2WENMaXE0eGNJaXh6ZFhCdVpUcGNJdUtLaTF3aUxITjFjSEJzZFhNNlhDTGlxNEJjSWl4emRYQnpaWFE2WENMaWlvTmNJaXhUZFhCelpYUTZYQ0xpaTVGY0lpeHpkWEJ6WlhSbGNUcGNJdUtLaDF3aUxITjFjSE5sZEdWeGNUcGNJdUtyaGx3aUxITjFjSE5sZEc1bGNUcGNJdUtLaTF3aUxITjFjSE5sZEc1bGNYRTZYQ0xpcTR4Y0lpeHpkWEJ6YVcwNlhDTGlxNGhjSWl4emRYQnpkV0k2WENMaXE1UmNJaXh6ZFhCemRYQTZYQ0xpcTVaY0lpeHpkMkZ5YUdzNlhDTGlwS1pjSWl4emQyRnljanBjSXVLR21Wd2lMSE4zUVhKeU9sd2k0b2VaWENJc2MzZGhjbkp2ZHpwY0l1S0dtVndpTEhOM2JuZGhjanBjSXVLa3Fsd2lMSE42Ykdsbk9sd2l3NTljSWl4VVlXSTZYQ0pjWEhSY0lpeDBZWEpuWlhRNlhDTGlqSlpjSWl4VVlYVTZYQ0xPcEZ3aUxIUmhkVHBjSXMrRVhDSXNkR0p5YXpwY0l1S090RndpTEZSallYSnZianBjSXNXa1hDSXNkR05oY205dU9sd2l4YVZjSWl4VVkyVmthV3c2WENMRm9sd2lMSFJqWldScGJEcGNJc1dqWENJc1ZHTjVPbHdpMEtKY0lpeDBZM2s2WENMUmdsd2lMSFJrYjNRNlhDTGlnNXRjSWl4MFpXeHlaV002WENMaWpKVmNJaXhVWm5JNlhDTHduWlNYWENJc2RHWnlPbHdpOEoyVXNWd2lMSFJvWlhKbE5EcGNJdUtJdEZ3aUxIUm9aWEpsWm05eVpUcGNJdUtJdEZ3aUxGUm9aWEpsWm05eVpUcGNJdUtJdEZ3aUxGUm9aWFJoT2x3aXpwaGNJaXgwYUdWMFlUcGNJczY0WENJc2RHaGxkR0Z6ZVcwNlhDTFBrVndpTEhSb1pYUmhkanBjSXMrUlhDSXNkR2hwWTJ0aGNIQnliM2c2WENMaWlZaGNJaXgwYUdsamEzTnBiVHBjSXVLSXZGd2lMRlJvYVdOclUzQmhZMlU2WENMaWdaL2lnSXBjSWl4VWFHbHVVM0JoWTJVNlhDTGlnSWxjSWl4MGFHbHVjM0E2WENMaWdJbGNJaXgwYUd0aGNEcGNJdUtKaUZ3aUxIUm9hM05wYlRwY0l1S0l2RndpTEZSSVQxSk9PbHdpdzU1Y0lpeDBhRzl5YmpwY0lzTytYQ0lzZEdsc1pHVTZYQ0xMbkZ3aUxGUnBiR1JsT2x3aTRvaThYQ0lzVkdsc1pHVkZjWFZoYkRwY0l1S0pnMXdpTEZScGJHUmxSblZzYkVWeGRXRnNPbHdpNG9tRlhDSXNWR2xzWkdWVWFXeGtaVHBjSXVLSmlGd2lMSFJwYldWelltRnlPbHdpNHFpeFhDSXNkR2x0WlhOaU9sd2k0b3FnWENJc2RHbHRaWE02WENMRGwxd2lMSFJwYldWelpEcGNJdUtvc0Z3aUxIUnBiblE2WENMaWlLMWNJaXgwYjJWaE9sd2k0cVNvWENJc2RHOXdZbTkwT2x3aTRveTJYQ0lzZEc5d1kybHlPbHdpNHF1eFhDSXNkRzl3T2x3aTRvcWtYQ0lzVkc5d1pqcGNJdkNkbFl0Y0lpeDBiM0JtT2x3aThKMlZwVndpTEhSdmNHWnZjbXM2WENMaXE1cGNJaXgwYjNOaE9sd2k0cVNwWENJc2RIQnlhVzFsT2x3aTRvQzBYQ0lzZEhKaFpHVTZYQ0xpaEtKY0lpeFVVa0ZFUlRwY0l1S0VvbHdpTEhSeWFXRnVaMnhsT2x3aTRwYTFYQ0lzZEhKcFlXNW5iR1ZrYjNkdU9sd2k0cGEvWENJc2RISnBZVzVuYkdWc1pXWjBPbHdpNHBlRFhDSXNkSEpwWVc1bmJHVnNaV1owWlhFNlhDTGlpclJjSWl4MGNtbGhibWRzWlhFNlhDTGlpWnhjSWl4MGNtbGhibWRzWlhKcFoyaDBPbHdpNHBhNVhDSXNkSEpwWVc1bmJHVnlhV2RvZEdWeE9sd2k0b3ExWENJc2RISnBaRzkwT2x3aTRwZXNYQ0lzZEhKcFpUcGNJdUtKbkZ3aUxIUnlhVzFwYm5Wek9sd2k0cWk2WENJc1ZISnBjR3hsUkc5ME9sd2k0b09iWENJc2RISnBjR3gxY3pwY0l1S291VndpTEhSeWFYTmlPbHdpNHFlTlhDSXNkSEpwZEdsdFpUcGNJdUtvdTF3aUxIUnljR1Y2YVhWdE9sd2k0bytpWENJc1ZITmpjanBjSXZDZGtxOWNJaXgwYzJOeU9sd2k4SjJUaVZ3aUxGUlRZM2s2WENMUXBsd2lMSFJ6WTNrNlhDTFJobHdpTEZSVFNHTjVPbHdpMEl0Y0lpeDBjMmhqZVRwY0l0R2JYQ0lzVkhOMGNtOXJPbHdpeGFaY0lpeDBjM1J5YjJzNlhDTEZwMXdpTEhSM2FYaDBPbHdpNG9tc1hDSXNkSGR2YUdWaFpHeGxablJoY25KdmR6cGNJdUtHbmx3aUxIUjNiMmhsWVdSeWFXZG9kR0Z5Y205M09sd2k0b2FnWENJc1ZXRmpkWFJsT2x3aXc1cGNJaXgxWVdOMWRHVTZYQ0xEdWx3aUxIVmhjbkk2WENMaWhwRmNJaXhWWVhKeU9sd2k0b2FmWENJc2RVRnljanBjSXVLSGtWd2lMRlZoY25KdlkybHlPbHdpNHFXSlhDSXNWV0p5WTNrNlhDTFFqbHdpTEhWaWNtTjVPbHdpMFo1Y0lpeFZZbkpsZG1VNlhDTEZyRndpTEhWaWNtVjJaVHBjSXNXdFhDSXNWV05wY21NNlhDTERtMXdpTEhWamFYSmpPbHdpdzd0Y0lpeFZZM2s2WENMUW8xd2lMSFZqZVRwY0l0R0RYQ0lzZFdSaGNuSTZYQ0xpaDRWY0lpeFZaR0pzWVdNNlhDTEZzRndpTEhWa1lteGhZenBjSXNXeFhDSXNkV1JvWVhJNlhDTGlwYTVjSWl4MVptbHphSFE2WENMaXBiNWNJaXhWWm5JNlhDTHduWlNZWENJc2RXWnlPbHdpOEoyVXNsd2lMRlZuY21GMlpUcGNJc09aWENJc2RXZHlZWFpsT2x3aXc3bGNJaXgxU0dGeU9sd2k0cVdqWENJc2RXaGhjbXc2WENMaWhyOWNJaXgxYUdGeWNqcGNJdUtHdmx3aUxIVm9ZbXhyT2x3aTRwYUFYQ0lzZFd4amIzSnVPbHdpNG95Y1hDSXNkV3hqYjNKdVpYSTZYQ0xpakp4Y0lpeDFiR055YjNBNlhDTGlqSTljSWl4MWJIUnlhVHBjSXVLWHVGd2lMRlZ0WVdOeU9sd2l4YXBjSWl4MWJXRmpjanBjSXNXclhDSXNkVzFzT2x3aXdxaGNJaXhWYm1SbGNrSmhjanBjSWw5Y0lpeFZibVJsY2tKeVlXTmxPbHdpNG8rZlhDSXNWVzVrWlhKQ2NtRmphMlYwT2x3aTRvNjFYQ0lzVlc1a1pYSlFZWEpsYm5Sb1pYTnBjenBjSXVLUG5Wd2lMRlZ1YVc5dU9sd2k0b3VEWENJc1ZXNXBiMjVRYkhWek9sd2k0b3FPWENJc1ZXOW5iMjQ2WENMRnNsd2lMSFZ2WjI5dU9sd2l4Yk5jSWl4VmIzQm1PbHdpOEoyVmpGd2lMSFZ2Y0dZNlhDTHduWldtWENJc1ZYQkJjbkp2ZDBKaGNqcGNJdUtra2x3aUxIVndZWEp5YjNjNlhDTGlocEZjSWl4VmNFRnljbTkzT2x3aTRvYVJYQ0lzVlhCaGNuSnZkenBjSXVLSGtWd2lMRlZ3UVhKeWIzZEViM2R1UVhKeWIzYzZYQ0xpaDRWY0lpeDFjR1J2ZDI1aGNuSnZkenBjSXVLR2xWd2lMRlZ3Ukc5M2JrRnljbTkzT2x3aTRvYVZYQ0lzVlhCa2IzZHVZWEp5YjNjNlhDTGloNVZjSWl4VmNFVnhkV2xzYVdKeWFYVnRPbHdpNHFXdVhDSXNkWEJvWVhKd2IyOXViR1ZtZERwY0l1S0d2MXdpTEhWd2FHRnljRzl2Ym5KcFoyaDBPbHdpNG9hK1hDSXNkWEJzZFhNNlhDTGlpbzVjSWl4VmNIQmxja3hsWm5SQmNuSnZkenBjSXVLR2xsd2lMRlZ3Y0dWeVVtbG5hSFJCY25KdmR6cGNJdUtHbDF3aUxIVndjMms2WENMUGhWd2lMRlZ3YzJrNlhDTFBrbHdpTEhWd2MybG9PbHdpejVKY0lpeFZjSE5wYkc5dU9sd2l6cVZjSWl4MWNITnBiRzl1T2x3aXo0VmNJaXhWY0ZSbFpVRnljbTkzT2x3aTRvYWxYQ0lzVlhCVVpXVTZYQ0xpaXFWY0lpeDFjSFZ3WVhKeWIzZHpPbHdpNG9lSVhDSXNkWEpqYjNKdU9sd2k0b3lkWENJc2RYSmpiM0p1WlhJNlhDTGlqSjFjSWl4MWNtTnliM0E2WENMaWpJNWNJaXhWY21sdVp6cGNJc1d1WENJc2RYSnBibWM2WENMRnIxd2lMSFZ5ZEhKcE9sd2k0cGU1WENJc1ZYTmpjanBjSXZDZGtyQmNJaXgxYzJOeU9sd2k4SjJUaWx3aUxIVjBaRzkwT2x3aTRvdXdYQ0lzVlhScGJHUmxPbHdpeGFoY0lpeDFkR2xzWkdVNlhDTEZxVndpTEhWMGNtazZYQ0xpbHJWY0lpeDFkSEpwWmpwY0l1S1d0RndpTEhWMVlYSnlPbHdpNG9lSVhDSXNWWFZ0YkRwY0lzT2NYQ0lzZFhWdGJEcGNJc084WENJc2RYZGhibWRzWlRwY0l1S21wMXdpTEhaaGJtZHlkRHBjSXVLbW5Gd2lMSFpoY21Wd2MybHNiMjQ2WENMUHRWd2lMSFpoY210aGNIQmhPbHdpejdCY0lpeDJZWEp1YjNSb2FXNW5PbHdpNG9pRlhDSXNkbUZ5Y0docE9sd2l6NVZjSWl4MllYSndhVHBjSXMrV1hDSXNkbUZ5Y0hKdmNIUnZPbHdpNG9pZFhDSXNkbUZ5Y2pwY0l1S0dsVndpTEhaQmNuSTZYQ0xpaDVWY0lpeDJZWEp5YUc4NlhDTFBzVndpTEhaaGNuTnBaMjFoT2x3aXo0SmNJaXgyWVhKemRXSnpaWFJ1WlhFNlhDTGlpb3J2dUlCY0lpeDJZWEp6ZFdKelpYUnVaWEZ4T2x3aTRxdUw3N2lBWENJc2RtRnljM1Z3YzJWMGJtVnhPbHdpNG9xTDc3aUFYQ0lzZG1GeWMzVndjMlYwYm1WeGNUcGNJdUtyak8rNGdGd2lMSFpoY25Sb1pYUmhPbHdpejVGY0lpeDJZWEowY21saGJtZHNaV3hsWm5RNlhDTGlpckpjSWl4MllYSjBjbWxoYm1kc1pYSnBaMmgwT2x3aTRvcXpYQ0lzZGtKaGNqcGNJdUtycUZ3aUxGWmlZWEk2WENMaXE2dGNJaXgyUW1GeWRqcGNJdUtycVZ3aUxGWmplVHBjSXRDU1hDSXNkbU41T2x3aTBMSmNJaXgyWkdGemFEcGNJdUtLb2x3aUxIWkVZWE5vT2x3aTRvcW9YQ0lzVm1SaGMyZzZYQ0xpaXFsY0lpeFdSR0Z6YURwY0l1S0txMXdpTEZaa1lYTm9iRHBjSXVLcnBsd2lMSFpsWldKaGNqcGNJdUtLdTF3aUxIWmxaVHBjSXVLSXFGd2lMRlpsWlRwY0l1S0xnVndpTEhabFpXVnhPbHdpNG9tYVhDSXNkbVZzYkdsd09sd2k0b3V1WENJc2RtVnlZbUZ5T2x3aWZGd2lMRlpsY21KaGNqcGNJdUtBbGx3aUxIWmxjblE2WENKOFhDSXNWbVZ5ZERwY0l1S0FsbHdpTEZabGNuUnBZMkZzUW1GeU9sd2k0b2lqWENJc1ZtVnlkR2xqWVd4TWFXNWxPbHdpZkZ3aUxGWmxjblJwWTJGc1UyVndZWEpoZEc5eU9sd2k0cDJZWENJc1ZtVnlkR2xqWVd4VWFXeGtaVHBjSXVLSmdGd2lMRlpsY25sVWFHbHVVM0JoWTJVNlhDTGlnSXBjSWl4V1puSTZYQ0x3blpTWlhDSXNkbVp5T2x3aThKMlVzMXdpTEhac2RISnBPbHdpNG9xeVhDSXNkbTV6ZFdJNlhDTGlpb0xpZzVKY0lpeDJibk4xY0RwY0l1S0tnK0tEa2x3aUxGWnZjR1k2WENMd25aV05YQ0lzZG05d1pqcGNJdkNkbGFkY0lpeDJjSEp2Y0RwY0l1S0luVndpTEhaeWRISnBPbHdpNG9xelhDSXNWbk5qY2pwY0l2Q2RrckZjSWl4MmMyTnlPbHdpOEoyVGkxd2lMSFp6ZFdKdVJUcGNJdUtyaSsrNGdGd2lMSFp6ZFdKdVpUcGNJdUtLaXUrNGdGd2lMSFp6ZFhCdVJUcGNJdUtyak8rNGdGd2lMSFp6ZFhCdVpUcGNJdUtLaSsrNGdGd2lMRloyWkdGemFEcGNJdUtLcWx3aUxIWjZhV2Q2WVdjNlhDTGlwcHBjSWl4WFkybHlZenBjSXNXMFhDSXNkMk5wY21NNlhDTEZ0VndpTEhkbFpHSmhjanBjSXVLcG4xd2lMSGRsWkdkbE9sd2k0b2luWENJc1YyVmtaMlU2WENMaWk0QmNJaXgzWldSblpYRTZYQ0xpaVpsY0lpeDNaV2xsY25BNlhDTGloSmhjSWl4WFpuSTZYQ0x3blpTYVhDSXNkMlp5T2x3aThKMlV0RndpTEZkdmNHWTZYQ0x3blpXT1hDSXNkMjl3WmpwY0l2Q2RsYWhjSWl4M2NEcGNJdUtFbUZ3aUxIZHlPbHdpNG9tQVhDSXNkM0psWVhSb09sd2k0b21BWENJc1YzTmpjanBjSXZDZGtySmNJaXgzYzJOeU9sd2k4SjJUakZ3aUxIaGpZWEE2WENMaWk0SmNJaXg0WTJseVl6cGNJdUtYcjF3aUxIaGpkWEE2WENMaWk0TmNJaXg0WkhSeWFUcGNJdUtXdlZ3aUxGaG1janBjSXZDZGxKdGNJaXg0Wm5JNlhDTHduWlMxWENJc2VHaGhjbkk2WENMaW43ZGNJaXg0YUVGeWNqcGNJdUtmdWx3aUxGaHBPbHdpenA1Y0lpeDRhVHBjSXM2K1hDSXNlR3hoY25JNlhDTGluN1ZjSWl4NGJFRnljanBjSXVLZnVGd2lMSGh0WVhBNlhDTGluN3hjSWl4NGJtbHpPbHdpNG91N1hDSXNlRzlrYjNRNlhDTGlxSUJjSWl4WWIzQm1PbHdpOEoyVmoxd2lMSGh2Y0dZNlhDTHduWldwWENJc2VHOXdiSFZ6T2x3aTRxaUJYQ0lzZUc5MGFXMWxPbHdpNHFpQ1hDSXNlSEpoY25JNlhDTGluN1pjSWl4NGNrRnljanBjSXVLZnVWd2lMRmh6WTNJNlhDTHduWkt6WENJc2VITmpjanBjSXZDZGs0MWNJaXg0YzNGamRYQTZYQ0xpcUlaY0lpeDRkWEJzZFhNNlhDTGlxSVJjSWl4NGRYUnlhVHBjSXVLV3Mxd2lMSGgyWldVNlhDTGlpNEZjSWl4NGQyVmtaMlU2WENMaWk0QmNJaXhaWVdOMWRHVTZYQ0xEblZ3aUxIbGhZM1YwWlRwY0lzTzlYQ0lzV1VGamVUcGNJdEN2WENJc2VXRmplVHBjSXRHUFhDSXNXV05wY21NNlhDTEZ0bHdpTEhsamFYSmpPbHdpeGJkY0lpeFpZM2s2WENMUXExd2lMSGxqZVRwY0l0R0xYQ0lzZVdWdU9sd2l3cVZjSWl4WlpuSTZYQ0x3blpTY1hDSXNlV1p5T2x3aThKMlV0bHdpTEZsSlkzazZYQ0xRaDF3aUxIbHBZM2s2WENMUmwxd2lMRmx2Y0dZNlhDTHduWldRWENJc2VXOXdaanBjSXZDZGxhcGNJaXhaYzJOeU9sd2k4SjJTdEZ3aUxIbHpZM0k2WENMd25aT09YQ0lzV1ZWamVUcGNJdEN1WENJc2VYVmplVHBjSXRHT1hDSXNlWFZ0YkRwY0lzTy9YQ0lzV1hWdGJEcGNJc1c0WENJc1dtRmpkWFJsT2x3aXhibGNJaXg2WVdOMWRHVTZYQ0xGdWx3aUxGcGpZWEp2YmpwY0lzVzlYQ0lzZW1OaGNtOXVPbHdpeGI1Y0lpeGFZM2s2WENMUWwxd2lMSHBqZVRwY0l0QzNYQ0lzV21SdmREcGNJc1c3WENJc2VtUnZkRHBjSXNXOFhDSXNlbVZsZEhKbU9sd2k0b1NvWENJc1dtVnliMWRwWkhSb1UzQmhZMlU2WENMaWdJdGNJaXhhWlhSaE9sd2l6cFpjSWl4NlpYUmhPbHdpenJaY0lpeDZabkk2WENMd25aUzNYQ0lzV21aeU9sd2k0b1NvWENJc1draGplVHBjSXRDV1hDSXNlbWhqZVRwY0l0QzJYQ0lzZW1sbmNtRnljanBjSXVLSG5Wd2lMSHB2Y0dZNlhDTHduWldyWENJc1dtOXdaanBjSXVLRXBGd2lMRnB6WTNJNlhDTHduWksxWENJc2VuTmpjanBjSXZDZGs0OWNJaXg2ZDJvNlhDTGlnSTFjSWl4NmQyNXFPbHdpNG9DTVhDSjlmU3g3ZlYwc01qWTZXMloxYm1OMGFXOXVLSEpsY1hWcGNtVXNiVzlrZFd4bExHVjRjRzl5ZEhNcGUyMXZaSFZzWlM1bGVIQnZjblJ6UFh0QllXTjFkR1U2WENMRGdWd2lMR0ZoWTNWMFpUcGNJc09oWENJc1FXTnBjbU02WENMRGdsd2lMR0ZqYVhKak9sd2l3NkpjSWl4aFkzVjBaVHBjSXNLMFhDSXNRVVZzYVdjNlhDTERobHdpTEdGbGJHbG5PbHdpdzZaY0lpeEJaM0poZG1VNlhDTERnRndpTEdGbmNtRjJaVHBjSXNPZ1hDSXNZVzF3T2x3aUpsd2lMRUZOVURwY0lpWmNJaXhCY21sdVp6cGNJc09GWENJc1lYSnBibWM2WENMRHBWd2lMRUYwYVd4a1pUcGNJc09EWENJc1lYUnBiR1JsT2x3aXc2TmNJaXhCZFcxc09sd2l3NFJjSWl4aGRXMXNPbHdpdzZSY0lpeGljblppWVhJNlhDTENwbHdpTEVOalpXUnBiRHBjSXNPSFhDSXNZMk5sWkdsc09sd2l3NmRjSWl4alpXUnBiRHBjSXNLNFhDSXNZMlZ1ZERwY0lzS2lYQ0lzWTI5d2VUcGNJc0twWENJc1EwOVFXVHBjSXNLcFhDSXNZM1Z5Y21WdU9sd2l3cVJjSWl4a1pXYzZYQ0xDc0Z3aUxHUnBkbWxrWlRwY0lzTzNYQ0lzUldGamRYUmxPbHdpdzRsY0lpeGxZV04xZEdVNlhDTERxVndpTEVWamFYSmpPbHdpdzRwY0lpeGxZMmx5WXpwY0lzT3FYQ0lzUldkeVlYWmxPbHdpdzRoY0lpeGxaM0poZG1VNlhDTERxRndpTEVWVVNEcGNJc09RWENJc1pYUm9PbHdpdzdCY0lpeEZkVzFzT2x3aXc0dGNJaXhsZFcxc09sd2l3NnRjSWl4bWNtRmpNVEk2WENMQ3ZWd2lMR1p5WVdNeE5EcGNJc0s4WENJc1puSmhZek0wT2x3aXdyNWNJaXhuZERwY0lqNWNJaXhIVkRwY0lqNWNJaXhKWVdOMWRHVTZYQ0xEalZ3aUxHbGhZM1YwWlRwY0lzT3RYQ0lzU1dOcGNtTTZYQ0xEamx3aUxHbGphWEpqT2x3aXc2NWNJaXhwWlhoamJEcGNJc0toWENJc1NXZHlZWFpsT2x3aXc0eGNJaXhwWjNKaGRtVTZYQ0xEckZ3aUxHbHhkV1Z6ZERwY0lzSy9YQ0lzU1hWdGJEcGNJc09QWENJc2FYVnRiRHBjSXNPdlhDSXNiR0Z4ZFc4NlhDTENxMXdpTEd4ME9sd2lQRndpTEV4VU9sd2lQRndpTEcxaFkzSTZYQ0xDcjF3aUxHMXBZM0p2T2x3aXdyVmNJaXh0YVdSa2IzUTZYQ0xDdDF3aUxHNWljM0E2WENMQ29Gd2lMRzV2ZERwY0lzS3NYQ0lzVG5ScGJHUmxPbHdpdzVGY0lpeHVkR2xzWkdVNlhDTERzVndpTEU5aFkzVjBaVHBjSXNPVFhDSXNiMkZqZFhSbE9sd2l3N05jSWl4UFkybHlZenBjSXNPVVhDSXNiMk5wY21NNlhDTER0RndpTEU5bmNtRjJaVHBjSXNPU1hDSXNiMmR5WVhabE9sd2l3N0pjSWl4dmNtUm1PbHdpd3FwY0lpeHZjbVJ0T2x3aXdycGNJaXhQYzJ4aGMyZzZYQ0xEbUZ3aUxHOXpiR0Z6YURwY0lzTzRYQ0lzVDNScGJHUmxPbHdpdzVWY0lpeHZkR2xzWkdVNlhDTER0VndpTEU5MWJXdzZYQ0xEbGx3aUxHOTFiV3c2WENMRHRsd2lMSEJoY21FNlhDTEN0bHdpTEhCc2RYTnRianBjSXNLeFhDSXNjRzkxYm1RNlhDTENvMXdpTEhGMWIzUTZKMXdpSnl4UlZVOVVPaWRjSWljc2NtRnhkVzg2WENMQ3Uxd2lMSEpsWnpwY0lzS3VYQ0lzVWtWSE9sd2l3cTVjSWl4elpXTjBPbHdpd3FkY0lpeHphSGs2WENMQ3JWd2lMSE4xY0RFNlhDTEN1VndpTEhOMWNESTZYQ0xDc2x3aUxITjFjRE02WENMQ3Mxd2lMSE42Ykdsbk9sd2l3NTljSWl4VVNFOVNUanBjSXNPZVhDSXNkR2h2Y200NlhDTER2bHdpTEhScGJXVnpPbHdpdzVkY0lpeFZZV04xZEdVNlhDTERtbHdpTEhWaFkzVjBaVHBjSXNPNlhDSXNWV05wY21NNlhDTERtMXdpTEhWamFYSmpPbHdpdzd0Y0lpeFZaM0poZG1VNlhDTERtVndpTEhWbmNtRjJaVHBjSXNPNVhDSXNkVzFzT2x3aXdxaGNJaXhWZFcxc09sd2l3NXhjSWl4MWRXMXNPbHdpdzd4Y0lpeFpZV04xZEdVNlhDTERuVndpTEhsaFkzVjBaVHBjSXNPOVhDSXNlV1Z1T2x3aXdxVmNJaXg1ZFcxc09sd2l3NzljSW4xOUxIdDlYU3d5TnpwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3Ylc5a2RXeGxMbVY0Y0c5eWRITTllMkZ0Y0RwY0lpWmNJaXhoY0c5ek9sd2lKMXdpTEdkME9sd2lQbHdpTEd4ME9sd2lQRndpTEhGMWIzUTZKMXdpSjMxOUxIdDlYU3d5T0RwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3Wm5WdVkzUnBiMjRnUlhabGJuUkZiV2wwZEdWeUtDbDdkR2hwY3k1ZlpYWmxiblJ6UFhSb2FYTXVYMlYyWlc1MGMzeDhlMzA3ZEdocGN5NWZiV0Y0VEdsemRHVnVaWEp6UFhSb2FYTXVYMjFoZUV4cGMzUmxibVZ5YzN4OGRXNWtaV1pwYm1Wa2ZXMXZaSFZzWlM1bGVIQnZjblJ6UFVWMlpXNTBSVzFwZEhSbGNqdEZkbVZ1ZEVWdGFYUjBaWEl1UlhabGJuUkZiV2wwZEdWeVBVVjJaVzUwUlcxcGRIUmxjanRGZG1WdWRFVnRhWFIwWlhJdWNISnZkRzkwZVhCbExsOWxkbVZ1ZEhNOWRXNWtaV1pwYm1Wa08wVjJaVzUwUlcxcGRIUmxjaTV3Y205MGIzUjVjR1V1WDIxaGVFeHBjM1JsYm1WeWN6MTFibVJsWm1sdVpXUTdSWFpsYm5SRmJXbDBkR1Z5TG1SbFptRjFiSFJOWVhoTWFYTjBaVzVsY25NOU1UQTdSWFpsYm5SRmJXbDBkR1Z5TG5CeWIzUnZkSGx3WlM1elpYUk5ZWGhNYVhOMFpXNWxjbk05Wm5WdVkzUnBiMjRvYmlsN2FXWW9JV2x6VG5WdFltVnlLRzRwZkh4dVBEQjhmR2x6VG1GT0tHNHBLWFJvY205M0lGUjVjR1ZGY25KdmNpaGNJbTRnYlhWemRDQmlaU0JoSUhCdmMybDBhWFpsSUc1MWJXSmxjbHdpS1R0MGFHbHpMbDl0WVhoTWFYTjBaVzVsY25NOWJqdHlaWFIxY200Z2RHaHBjMzA3UlhabGJuUkZiV2wwZEdWeUxuQnliM1J2ZEhsd1pTNWxiV2wwUFdaMWJtTjBhVzl1S0hSNWNHVXBlM1poY2lCbGNpeG9ZVzVrYkdWeUxHeGxiaXhoY21kekxHa3NiR2x6ZEdWdVpYSnpPMmxtS0NGMGFHbHpMbDlsZG1WdWRITXBkR2hwY3k1ZlpYWmxiblJ6UFh0OU8ybG1LSFI1Y0dVOVBUMWNJbVZ5Y205eVhDSXBlMmxtS0NGMGFHbHpMbDlsZG1WdWRITXVaWEp5YjNKOGZHbHpUMkpxWldOMEtIUm9hWE11WDJWMlpXNTBjeTVsY25KdmNpa21KaUYwYUdsekxsOWxkbVZ1ZEhNdVpYSnliM0l1YkdWdVozUm9LWHRsY2oxaGNtZDFiV1Z1ZEhOYk1WMDdhV1lvWlhJZ2FXNXpkR0Z1WTJWdlppQkZjbkp2Y2lsN2RHaHliM2NnWlhKOVpXeHpaWHQyWVhJZ1pYSnlQVzVsZHlCRmNuSnZjaWduVlc1allYVm5hSFFzSUhWdWMzQmxZMmxtYVdWa0lGd2laWEp5YjNKY0lpQmxkbVZ1ZEM0Z0tDY3JaWElyWENJcFhDSXBPMlZ5Y2k1amIyNTBaWGgwUFdWeU8zUm9jbTkzSUdWeWNuMTlmV2hoYm1Sc1pYSTlkR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRPMmxtS0dselZXNWtaV1pwYm1Wa0tHaGhibVJzWlhJcEtYSmxkSFZ5YmlCbVlXeHpaVHRwWmlocGMwWjFibU4wYVc5dUtHaGhibVJzWlhJcEtYdHpkMmwwWTJnb1lYSm5kVzFsYm5SekxteGxibWQwYUNsN1kyRnpaU0F4T21oaGJtUnNaWEl1WTJGc2JDaDBhR2x6S1R0aWNtVmhhenRqWVhObElESTZhR0Z1Wkd4bGNpNWpZV3hzS0hSb2FYTXNZWEpuZFcxbGJuUnpXekZkS1R0aWNtVmhhenRqWVhObElETTZhR0Z1Wkd4bGNpNWpZV3hzS0hSb2FYTXNZWEpuZFcxbGJuUnpXekZkTEdGeVozVnRaVzUwYzFzeVhTazdZbkpsWVdzN1pHVm1ZWFZzZERwaGNtZHpQVUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXpiR2xqWlM1allXeHNLR0Z5WjNWdFpXNTBjeXd4S1R0b1lXNWtiR1Z5TG1Gd2NHeDVLSFJvYVhNc1lYSm5jeWw5ZldWc2MyVWdhV1lvYVhOUFltcGxZM1FvYUdGdVpHeGxjaWtwZTJGeVozTTlRWEp5WVhrdWNISnZkRzkwZVhCbExuTnNhV05sTG1OaGJHd29ZWEpuZFcxbGJuUnpMREVwTzJ4cGMzUmxibVZ5Y3oxb1lXNWtiR1Z5TG5Oc2FXTmxLQ2s3YkdWdVBXeHBjM1JsYm1WeWN5NXNaVzVuZEdnN1ptOXlLR2s5TUR0cFBHeGxianRwS3lzcGJHbHpkR1Z1WlhKelcybGRMbUZ3Y0d4NUtIUm9hWE1zWVhKbmN5bDljbVYwZFhKdUlIUnlkV1Y5TzBWMlpXNTBSVzFwZEhSbGNpNXdjbTkwYjNSNWNHVXVZV1JrVEdsemRHVnVaWEk5Wm5WdVkzUnBiMjRvZEhsd1pTeHNhWE4wWlc1bGNpbDdkbUZ5SUcwN2FXWW9JV2x6Um5WdVkzUnBiMjRvYkdsemRHVnVaWElwS1hSb2NtOTNJRlI1Y0dWRmNuSnZjaWhjSW14cGMzUmxibVZ5SUcxMWMzUWdZbVVnWVNCbWRXNWpkR2x2Ymx3aUtUdHBaaWdoZEdocGN5NWZaWFpsYm5SektYUm9hWE11WDJWMlpXNTBjejE3ZlR0cFppaDBhR2x6TGw5bGRtVnVkSE11Ym1WM1RHbHpkR1Z1WlhJcGRHaHBjeTVsYldsMEtGd2libVYzVEdsemRHVnVaWEpjSWl4MGVYQmxMR2x6Um5WdVkzUnBiMjRvYkdsemRHVnVaWEl1YkdsemRHVnVaWElwUDJ4cGMzUmxibVZ5TG14cGMzUmxibVZ5T214cGMzUmxibVZ5S1R0cFppZ2hkR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRLWFJvYVhNdVgyVjJaVzUwYzF0MGVYQmxYVDFzYVhOMFpXNWxjanRsYkhObElHbG1LR2x6VDJKcVpXTjBLSFJvYVhNdVgyVjJaVzUwYzF0MGVYQmxYU2twZEdocGN5NWZaWFpsYm5SelczUjVjR1ZkTG5CMWMyZ29iR2x6ZEdWdVpYSXBPMlZzYzJVZ2RHaHBjeTVmWlhabGJuUnpXM1I1Y0dWZFBWdDBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMHNiR2x6ZEdWdVpYSmRPMmxtS0dselQySnFaV04wS0hSb2FYTXVYMlYyWlc1MGMxdDBlWEJsWFNrbUppRjBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMHVkMkZ5Ym1Wa0tYdHBaaWdoYVhOVmJtUmxabWx1WldRb2RHaHBjeTVmYldGNFRHbHpkR1Z1WlhKektTbDdiVDEwYUdsekxsOXRZWGhNYVhOMFpXNWxjbk45Wld4elpYdHRQVVYyWlc1MFJXMXBkSFJsY2k1a1pXWmhkV3gwVFdGNFRHbHpkR1Z1WlhKemZXbG1LRzBtSm0wK01DWW1kR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRMbXhsYm1kMGFENXRLWHQwYUdsekxsOWxkbVZ1ZEhOYmRIbHdaVjB1ZDJGeWJtVmtQWFJ5ZFdVN1kyOXVjMjlzWlM1bGNuSnZjaWhjSWlodWIyUmxLU0IzWVhKdWFXNW5PaUJ3YjNOemFXSnNaU0JGZG1WdWRFVnRhWFIwWlhJZ2JXVnRiM0o1SUZ3aUsxd2liR1ZoYXlCa1pYUmxZM1JsWkM0Z0pXUWdiR2x6ZEdWdVpYSnpJR0ZrWkdWa0xpQmNJaXRjSWxWelpTQmxiV2wwZEdWeUxuTmxkRTFoZUV4cGMzUmxibVZ5Y3lncElIUnZJR2x1WTNKbFlYTmxJR3hwYldsMExsd2lMSFJvYVhNdVgyVjJaVzUwYzF0MGVYQmxYUzVzWlc1bmRHZ3BPMmxtS0hSNWNHVnZaaUJqYjI1emIyeGxMblJ5WVdObFBUMDlYQ0ptZFc1amRHbHZibHdpS1h0amIyNXpiMnhsTG5SeVlXTmxLQ2w5ZlgxeVpYUjFjbTRnZEdocGMzMDdSWFpsYm5SRmJXbDBkR1Z5TG5CeWIzUnZkSGx3WlM1dmJqMUZkbVZ1ZEVWdGFYUjBaWEl1Y0hKdmRHOTBlWEJsTG1Ga1pFeHBjM1JsYm1WeU8wVjJaVzUwUlcxcGRIUmxjaTV3Y205MGIzUjVjR1V1YjI1alpUMW1kVzVqZEdsdmJpaDBlWEJsTEd4cGMzUmxibVZ5S1h0cFppZ2hhWE5HZFc1amRHbHZiaWhzYVhOMFpXNWxjaWtwZEdoeWIzY2dWSGx3WlVWeWNtOXlLRndpYkdsemRHVnVaWElnYlhWemRDQmlaU0JoSUdaMWJtTjBhVzl1WENJcE8zWmhjaUJtYVhKbFpEMW1ZV3h6WlR0bWRXNWpkR2x2YmlCbktDbDdkR2hwY3k1eVpXMXZkbVZNYVhOMFpXNWxjaWgwZVhCbExHY3BPMmxtS0NGbWFYSmxaQ2w3Wm1seVpXUTlkSEoxWlR0c2FYTjBaVzVsY2k1aGNIQnNlU2gwYUdsekxHRnlaM1Z0Wlc1MGN5bDlmV2N1YkdsemRHVnVaWEk5YkdsemRHVnVaWEk3ZEdocGN5NXZiaWgwZVhCbExHY3BPM0psZEhWeWJpQjBhR2x6ZlR0RmRtVnVkRVZ0YVhSMFpYSXVjSEp2ZEc5MGVYQmxMbkpsYlc5MlpVeHBjM1JsYm1WeVBXWjFibU4wYVc5dUtIUjVjR1VzYkdsemRHVnVaWElwZTNaaGNpQnNhWE4wTEhCdmMybDBhVzl1TEd4bGJtZDBhQ3hwTzJsbUtDRnBjMFoxYm1OMGFXOXVLR3hwYzNSbGJtVnlLU2wwYUhKdmR5QlVlWEJsUlhKeWIzSW9YQ0pzYVhOMFpXNWxjaUJ0ZFhOMElHSmxJR0VnWm5WdVkzUnBiMjVjSWlrN2FXWW9JWFJvYVhNdVgyVjJaVzUwYzN4OElYUm9hWE11WDJWMlpXNTBjMXQwZVhCbFhTbHlaWFIxY200Z2RHaHBjenRzYVhOMFBYUm9hWE11WDJWMlpXNTBjMXQwZVhCbFhUdHNaVzVuZEdnOWJHbHpkQzVzWlc1bmRHZzdjRzl6YVhScGIyNDlMVEU3YVdZb2JHbHpkRDA5UFd4cGMzUmxibVZ5Zkh4cGMwWjFibU4wYVc5dUtHeHBjM1F1YkdsemRHVnVaWElwSmlac2FYTjBMbXhwYzNSbGJtVnlQVDA5YkdsemRHVnVaWElwZTJSbGJHVjBaU0IwYUdsekxsOWxkbVZ1ZEhOYmRIbHdaVjA3YVdZb2RHaHBjeTVmWlhabGJuUnpMbkpsYlc5MlpVeHBjM1JsYm1WeUtYUm9hWE11WlcxcGRDaGNJbkpsYlc5MlpVeHBjM1JsYm1WeVhDSXNkSGx3WlN4c2FYTjBaVzVsY2lsOVpXeHpaU0JwWmlocGMwOWlhbVZqZENoc2FYTjBLU2w3Wm05eUtHazliR1Z1WjNSb08ya3RMU0ErTURzcGUybG1LR3hwYzNSYmFWMDlQVDFzYVhOMFpXNWxjbng4YkdsemRGdHBYUzVzYVhOMFpXNWxjaVltYkdsemRGdHBYUzVzYVhOMFpXNWxjajA5UFd4cGMzUmxibVZ5S1h0d2IzTnBkR2x2YmoxcE8ySnlaV0ZyZlgxcFppaHdiM05wZEdsdmJqd3dLWEpsZEhWeWJpQjBhR2x6TzJsbUtHeHBjM1F1YkdWdVozUm9QVDA5TVNsN2JHbHpkQzVzWlc1bmRHZzlNRHRrWld4bGRHVWdkR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRmV1ZzYzJWN2JHbHpkQzV6Y0d4cFkyVW9jRzl6YVhScGIyNHNNU2s3WEc1OWFXWW9kR2hwY3k1ZlpYWmxiblJ6TG5KbGJXOTJaVXhwYzNSbGJtVnlLWFJvYVhNdVpXMXBkQ2hjSW5KbGJXOTJaVXhwYzNSbGJtVnlYQ0lzZEhsd1pTeHNhWE4wWlc1bGNpbDljbVYwZFhKdUlIUm9hWE45TzBWMlpXNTBSVzFwZEhSbGNpNXdjbTkwYjNSNWNHVXVjbVZ0YjNabFFXeHNUR2x6ZEdWdVpYSnpQV1oxYm1OMGFXOXVLSFI1Y0dVcGUzWmhjaUJyWlhrc2JHbHpkR1Z1WlhKek8ybG1LQ0YwYUdsekxsOWxkbVZ1ZEhNcGNtVjBkWEp1SUhSb2FYTTdhV1lvSVhSb2FYTXVYMlYyWlc1MGN5NXlaVzF2ZG1WTWFYTjBaVzVsY2lsN2FXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEMDlQVEFwZEdocGN5NWZaWFpsYm5SelBYdDlPMlZzYzJVZ2FXWW9kR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRLV1JsYkdWMFpTQjBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMDdjbVYwZFhKdUlIUm9hWE45YVdZb1lYSm5kVzFsYm5SekxteGxibWQwYUQwOVBUQXBlMlp2Y2loclpYa2dhVzRnZEdocGN5NWZaWFpsYm5SektYdHBaaWhyWlhrOVBUMWNJbkpsYlc5MlpVeHBjM1JsYm1WeVhDSXBZMjl1ZEdsdWRXVTdkR2hwY3k1eVpXMXZkbVZCYkd4TWFYTjBaVzVsY25Nb2EyVjVLWDEwYUdsekxuSmxiVzkyWlVGc2JFeHBjM1JsYm1WeWN5aGNJbkpsYlc5MlpVeHBjM1JsYm1WeVhDSXBPM1JvYVhNdVgyVjJaVzUwY3oxN2ZUdHlaWFIxY200Z2RHaHBjMzFzYVhOMFpXNWxjbk05ZEdocGN5NWZaWFpsYm5SelczUjVjR1ZkTzJsbUtHbHpSblZ1WTNScGIyNG9iR2x6ZEdWdVpYSnpLU2w3ZEdocGN5NXlaVzF2ZG1WTWFYTjBaVzVsY2loMGVYQmxMR3hwYzNSbGJtVnljeWw5Wld4elpTQnBaaWhzYVhOMFpXNWxjbk1wZTNkb2FXeGxLR3hwYzNSbGJtVnljeTVzWlc1bmRHZ3BkR2hwY3k1eVpXMXZkbVZNYVhOMFpXNWxjaWgwZVhCbExHeHBjM1JsYm1WeWMxdHNhWE4wWlc1bGNuTXViR1Z1WjNSb0xURmRLWDFrWld4bGRHVWdkR2hwY3k1ZlpYWmxiblJ6VzNSNWNHVmRPM0psZEhWeWJpQjBhR2x6ZlR0RmRtVnVkRVZ0YVhSMFpYSXVjSEp2ZEc5MGVYQmxMbXhwYzNSbGJtVnljejFtZFc1amRHbHZiaWgwZVhCbEtYdDJZWElnY21WME8ybG1LQ0YwYUdsekxsOWxkbVZ1ZEhOOGZDRjBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMHBjbVYwUFZ0ZE8yVnNjMlVnYVdZb2FYTkdkVzVqZEdsdmJpaDBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMHBLWEpsZEQxYmRHaHBjeTVmWlhabGJuUnpXM1I1Y0dWZFhUdGxiSE5sSUhKbGREMTBhR2x6TGw5bGRtVnVkSE5iZEhsd1pWMHVjMnhwWTJVb0tUdHlaWFIxY200Z2NtVjBmVHRGZG1WdWRFVnRhWFIwWlhJdWNISnZkRzkwZVhCbExteHBjM1JsYm1WeVEyOTFiblE5Wm5WdVkzUnBiMjRvZEhsd1pTbDdhV1lvZEdocGN5NWZaWFpsYm5SektYdDJZWElnWlhac2FYTjBaVzVsY2oxMGFHbHpMbDlsZG1WdWRITmJkSGx3WlYwN2FXWW9hWE5HZFc1amRHbHZiaWhsZG14cGMzUmxibVZ5S1NseVpYUjFjbTRnTVR0bGJITmxJR2xtS0dWMmJHbHpkR1Z1WlhJcGNtVjBkWEp1SUdWMmJHbHpkR1Z1WlhJdWJHVnVaM1JvZlhKbGRIVnliaUF3ZlR0RmRtVnVkRVZ0YVhSMFpYSXViR2x6ZEdWdVpYSkRiM1Z1ZEQxbWRXNWpkR2x2YmlobGJXbDBkR1Z5TEhSNWNHVXBlM0psZEhWeWJpQmxiV2wwZEdWeUxteHBjM1JsYm1WeVEyOTFiblFvZEhsd1pTbDlPMloxYm1OMGFXOXVJR2x6Um5WdVkzUnBiMjRvWVhKbktYdHlaWFIxY200Z2RIbHdaVzltSUdGeVp6MDlQVndpWm5WdVkzUnBiMjVjSW4xbWRXNWpkR2x2YmlCcGMwNTFiV0psY2loaGNtY3BlM0psZEhWeWJpQjBlWEJsYjJZZ1lYSm5QVDA5WENKdWRXMWlaWEpjSW4xbWRXNWpkR2x2YmlCcGMwOWlhbVZqZENoaGNtY3BlM0psZEhWeWJpQjBlWEJsYjJZZ1lYSm5QVDA5WENKdlltcGxZM1JjSWlZbVlYSm5JVDA5Ym5Wc2JIMW1kVzVqZEdsdmJpQnBjMVZ1WkdWbWFXNWxaQ2hoY21jcGUzSmxkSFZ5YmlCaGNtYzlQVDEyYjJsa0lEQjlmU3g3ZlYwc01qazZXMloxYm1OMGFXOXVLSEpsY1hWcGNtVXNiVzlrZFd4bExHVjRjRzl5ZEhNcGUyMXZaSFZzWlM1bGVIQnZjblJ6UFVOdmJHeGxZM1JwYm1kSVlXNWtiR1Z5TzJaMWJtTjBhVzl1SUVOdmJHeGxZM1JwYm1kSVlXNWtiR1Z5S0dOaWN5bDdkR2hwY3k1ZlkySnpQV05pYzN4OGUzMDdkR2hwY3k1bGRtVnVkSE05VzExOWRtRnlJRVZXUlU1VVV6MXlaWEYxYVhKbEtGd2lMaTljSWlrdVJWWkZUbFJUTzA5aWFtVmpkQzVyWlhsektFVldSVTVVVXlrdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlodVlXMWxLWHRwWmloRlZrVk9WRk5iYm1GdFpWMDlQVDB3S1h0dVlXMWxQVndpYjI1Y0lpdHVZVzFsTzBOdmJHeGxZM1JwYm1kSVlXNWtiR1Z5TG5CeWIzUnZkSGx3WlZ0dVlXMWxYVDFtZFc1amRHbHZiaWdwZTNSb2FYTXVaWFpsYm5SekxuQjFjMmdvVzI1aGJXVmRLVHRwWmloMGFHbHpMbDlqWW5OYmJtRnRaVjBwZEdocGN5NWZZMkp6VzI1aGJXVmRLQ2w5ZldWc2MyVWdhV1lvUlZaRlRsUlRXMjVoYldWZFBUMDlNU2w3Ym1GdFpUMWNJbTl1WENJcmJtRnRaVHREYjJ4c1pXTjBhVzVuU0dGdVpHeGxjaTV3Y205MGIzUjVjR1ZiYm1GdFpWMDlablZ1WTNScGIyNG9ZU2w3ZEdocGN5NWxkbVZ1ZEhNdWNIVnphQ2hiYm1GdFpTeGhYU2s3YVdZb2RHaHBjeTVmWTJKelcyNWhiV1ZkS1hSb2FYTXVYMk5pYzF0dVlXMWxYU2hoS1gxOVpXeHpaU0JwWmloRlZrVk9WRk5iYm1GdFpWMDlQVDB5S1h0dVlXMWxQVndpYjI1Y0lpdHVZVzFsTzBOdmJHeGxZM1JwYm1kSVlXNWtiR1Z5TG5CeWIzUnZkSGx3WlZ0dVlXMWxYVDFtZFc1amRHbHZiaWhoTEdJcGUzUm9hWE11WlhabGJuUnpMbkIxYzJnb1cyNWhiV1VzWVN4aVhTazdhV1lvZEdocGN5NWZZMkp6VzI1aGJXVmRLWFJvYVhNdVgyTmljMXR1WVcxbFhTaGhMR0lwZlgxbGJITmxlM1JvY205M0lFVnljbTl5S0Z3aWQzSnZibWNnYm5WdFltVnlJRzltSUdGeVozVnRaVzUwYzF3aUtYMTlLVHREYjJ4c1pXTjBhVzVuU0dGdVpHeGxjaTV3Y205MGIzUjVjR1V1YjI1eVpYTmxkRDFtZFc1amRHbHZiaWdwZTNSb2FYTXVaWFpsYm5SelBWdGRPMmxtS0hSb2FYTXVYMk5pY3k1dmJuSmxjMlYwS1hSb2FYTXVYMk5pY3k1dmJuSmxjMlYwS0NsOU8wTnZiR3hsWTNScGJtZElZVzVrYkdWeUxuQnliM1J2ZEhsd1pTNXlaWE4wWVhKMFBXWjFibU4wYVc5dUtDbDdhV1lvZEdocGN5NWZZMkp6TG05dWNtVnpaWFFwZEdocGN5NWZZMkp6TG05dWNtVnpaWFFvS1R0bWIzSW9kbUZ5SUdrOU1DeHNaVzQ5ZEdocGN5NWxkbVZ1ZEhNdWJHVnVaM1JvTzJrOGJHVnVPMmtyS3lsN2FXWW9kR2hwY3k1ZlkySnpXM1JvYVhNdVpYWmxiblJ6VzJsZFd6QmRYU2w3ZG1GeUlHNTFiVDEwYUdsekxtVjJaVzUwYzF0cFhTNXNaVzVuZEdnN2FXWW9iblZ0UFQwOU1TbDdkR2hwY3k1ZlkySnpXM1JvYVhNdVpYWmxiblJ6VzJsZFd6QmRYU2dwZldWc2MyVWdhV1lvYm5WdFBUMDlNaWw3ZEdocGN5NWZZMkp6VzNSb2FYTXVaWFpsYm5SelcybGRXekJkWFNoMGFHbHpMbVYyWlc1MGMxdHBYVnN4WFNsOVpXeHpaWHQwYUdsekxsOWpZbk5iZEdocGN5NWxkbVZ1ZEhOYmFWMWJNRjFkS0hSb2FYTXVaWFpsYm5SelcybGRXekZkTEhSb2FYTXVaWFpsYm5SelcybGRXekpkS1gxOWZYMTlMSHRjSWk0dlhDSTZNelo5WFN3ek1EcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2RtRnlJR2x1WkdWNFBYSmxjWFZwY21Vb1hDSXVMMmx1WkdWNExtcHpYQ0lwTEVSdmJVaGhibVJzWlhJOWFXNWtaWGd1Ukc5dFNHRnVaR3hsY2l4RWIyMVZkR2xzY3oxcGJtUmxlQzVFYjIxVmRHbHNjenRtZFc1amRHbHZiaUJHWldWa1NHRnVaR3hsY2loallXeHNZbUZqYXl4dmNIUnBiMjV6S1h0MGFHbHpMbWx1YVhRb1kyRnNiR0poWTJzc2IzQjBhVzl1Y3lsOWNtVnhkV2x5WlNoY0ltbHVhR1Z5YVhSelhDSXBLRVpsWldSSVlXNWtiR1Z5TEVSdmJVaGhibVJzWlhJcE8wWmxaV1JJWVc1a2JHVnlMbkJ5YjNSdmRIbHdaUzVwYm1sMFBVUnZiVWhoYm1Sc1pYSTdablZ1WTNScGIyNGdaMlYwUld4bGJXVnVkSE1vZDJoaGRDeDNhR1Z5WlNsN2NtVjBkWEp1SUVSdmJWVjBhV3h6TG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtIZG9ZWFFzZDJobGNtVXNkSEoxWlNsOVpuVnVZM1JwYjI0Z1oyVjBUMjVsUld4bGJXVnVkQ2gzYUdGMExIZG9aWEpsS1h0eVpYUjFjbTRnUkc5dFZYUnBiSE11WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb2QyaGhkQ3gzYUdWeVpTeDBjblZsTERFcFd6QmRmV1oxYm1OMGFXOXVJR1psZEdOb0tIZG9ZWFFzZDJobGNtVXNjbVZqZFhKelpTbDdjbVYwZFhKdUlFUnZiVlYwYVd4ekxtZGxkRlJsZUhRb1JHOXRWWFJwYkhNdVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVW9kMmhoZEN4M2FHVnlaU3h5WldOMWNuTmxMREVwS1M1MGNtbHRLQ2w5Wm5WdVkzUnBiMjRnWVdSa1EyOXVaR2wwYVc5dVlXeHNlU2h2WW1vc2NISnZjQ3gzYUdGMExIZG9aWEpsTEhKbFkzVnljMlVwZTNaaGNpQjBiWEE5Wm1WMFkyZ29kMmhoZEN4M2FHVnlaU3h5WldOMWNuTmxLVHRwWmloMGJYQXBiMkpxVzNCeWIzQmRQWFJ0Y0gxMllYSWdhWE5XWVd4cFpFWmxaV1E5Wm5WdVkzUnBiMjRvZG1Gc2RXVXBlM0psZEhWeWJpQjJZV3gxWlQwOVBWd2ljbk56WENKOGZIWmhiSFZsUFQwOVhDSm1aV1ZrWENKOGZIWmhiSFZsUFQwOVhDSnlaR1k2VWtSR1hDSjlPMFpsWldSSVlXNWtiR1Z5TG5CeWIzUnZkSGx3WlM1dmJtVnVaRDFtZFc1amRHbHZiaWdwZTNaaGNpQm1aV1ZrUFh0OUxHWmxaV1JTYjI5MFBXZGxkRTl1WlVWc1pXMWxiblFvYVhOV1lXeHBaRVpsWldRc2RHaHBjeTVrYjIwcExIUnRjQ3hqYUdsc1pITTdhV1lvWm1WbFpGSnZiM1FwZTJsbUtHWmxaV1JTYjI5MExtNWhiV1U5UFQxY0ltWmxaV1JjSWlsN1kyaHBiR1J6UFdabFpXUlNiMjkwTG1Ob2FXeGtjbVZ1TzJabFpXUXVkSGx3WlQxY0ltRjBiMjFjSWp0aFpHUkRiMjVrYVhScGIyNWhiR3g1S0dabFpXUXNYQ0pwWkZ3aUxGd2lhV1JjSWl4amFHbHNaSE1wTzJGa1pFTnZibVJwZEdsdmJtRnNiSGtvWm1WbFpDeGNJblJwZEd4bFhDSXNYQ0owYVhSc1pWd2lMR05vYVd4a2N5azdhV1lvS0hSdGNEMW5aWFJQYm1WRmJHVnRaVzUwS0Z3aWJHbHVhMXdpTEdOb2FXeGtjeWtwSmlZb2RHMXdQWFJ0Y0M1aGRIUnlhV0p6S1NZbUtIUnRjRDEwYlhBdWFISmxaaWtwWm1WbFpDNXNhVzVyUFhSdGNEdGhaR1JEYjI1a2FYUnBiMjVoYkd4NUtHWmxaV1FzWENKa1pYTmpjbWx3ZEdsdmJsd2lMRndpYzNWaWRHbDBiR1ZjSWl4amFHbHNaSE1wTzJsbUtIUnRjRDFtWlhSamFDaGNJblZ3WkdGMFpXUmNJaXhqYUdsc1pITXBLV1psWldRdWRYQmtZWFJsWkQxdVpYY2dSR0YwWlNoMGJYQXBPMkZrWkVOdmJtUnBkR2x2Ym1Gc2JIa29abVZsWkN4Y0ltRjFkR2h2Y2x3aUxGd2laVzFoYVd4Y0lpeGphR2xzWkhNc2RISjFaU2s3Wm1WbFpDNXBkR1Z0Y3oxblpYUkZiR1Z0Wlc1MGN5aGNJbVZ1ZEhKNVhDSXNZMmhwYkdSektTNXRZWEFvWm5WdVkzUnBiMjRvYVhSbGJTbDdkbUZ5SUdWdWRISjVQWHQ5TEhSdGNEdHBkR1Z0UFdsMFpXMHVZMmhwYkdSeVpXNDdZV1JrUTI5dVpHbDBhVzl1WVd4c2VTaGxiblJ5ZVN4Y0ltbGtYQ0lzWENKcFpGd2lMR2wwWlcwcE8yRmtaRU52Ym1ScGRHbHZibUZzYkhrb1pXNTBjbmtzWENKMGFYUnNaVndpTEZ3aWRHbDBiR1ZjSWl4cGRHVnRLVHRwWmlnb2RHMXdQV2RsZEU5dVpVVnNaVzFsYm5Rb1hDSnNhVzVyWENJc2FYUmxiU2twSmlZb2RHMXdQWFJ0Y0M1aGRIUnlhV0p6S1NZbUtIUnRjRDEwYlhBdWFISmxaaWtwWlc1MGNua3ViR2x1YXoxMGJYQTdhV1lvZEcxd1BXWmxkR05vS0Z3aWMzVnRiV0Z5ZVZ3aUxHbDBaVzBwZkh4bVpYUmphQ2hjSW1OdmJuUmxiblJjSWl4cGRHVnRLU2xsYm5SeWVTNWtaWE5qY21sd2RHbHZiajEwYlhBN2FXWW9kRzF3UFdabGRHTm9LRndpZFhCa1lYUmxaRndpTEdsMFpXMHBLV1Z1ZEhKNUxuQjFZa1JoZEdVOWJtVjNJRVJoZEdVb2RHMXdLVHR5WlhSMWNtNGdaVzUwY25sOUtYMWxiSE5sZTJOb2FXeGtjejFuWlhSUGJtVkZiR1Z0Wlc1MEtGd2lZMmhoYm01bGJGd2lMR1psWldSU2IyOTBMbU5vYVd4a2NtVnVLUzVqYUdsc1pISmxianRtWldWa0xuUjVjR1U5Wm1WbFpGSnZiM1F1Ym1GdFpTNXpkV0p6ZEhJb01Dd3pLVHRtWldWa0xtbGtQVndpWENJN1lXUmtRMjl1WkdsMGFXOXVZV3hzZVNobVpXVmtMRndpZEdsMGJHVmNJaXhjSW5ScGRHeGxYQ0lzWTJocGJHUnpLVHRoWkdSRGIyNWthWFJwYjI1aGJHeDVLR1psWldRc1hDSnNhVzVyWENJc1hDSnNhVzVyWENJc1kyaHBiR1J6S1R0aFpHUkRiMjVrYVhScGIyNWhiR3g1S0dabFpXUXNYQ0prWlhOamNtbHdkR2x2Ymx3aUxGd2laR1Z6WTNKcGNIUnBiMjVjSWl4amFHbHNaSE1wTzJsbUtIUnRjRDFtWlhSamFDaGNJbXhoYzNSQ2RXbHNaRVJoZEdWY0lpeGphR2xzWkhNcEtXWmxaV1F1ZFhCa1lYUmxaRDF1WlhjZ1JHRjBaU2gwYlhBcE8yRmtaRU52Ym1ScGRHbHZibUZzYkhrb1ptVmxaQ3hjSW1GMWRHaHZjbHdpTEZ3aWJXRnVZV2RwYm1kRlpHbDBiM0pjSWl4amFHbHNaSE1zZEhKMVpTazdabVZsWkM1cGRHVnRjejFuWlhSRmJHVnRaVzUwY3loY0ltbDBaVzFjSWl4bVpXVmtVbTl2ZEM1amFHbHNaSEpsYmlrdWJXRndLR1oxYm1OMGFXOXVLR2wwWlcwcGUzWmhjaUJsYm5SeWVUMTdmU3gwYlhBN2FYUmxiVDFwZEdWdExtTm9hV3hrY21WdU8yRmtaRU52Ym1ScGRHbHZibUZzYkhrb1pXNTBjbmtzWENKcFpGd2lMRndpWjNWcFpGd2lMR2wwWlcwcE8yRmtaRU52Ym1ScGRHbHZibUZzYkhrb1pXNTBjbmtzWENKMGFYUnNaVndpTEZ3aWRHbDBiR1ZjSWl4cGRHVnRLVHRoWkdSRGIyNWthWFJwYjI1aGJHeDVLR1Z1ZEhKNUxGd2liR2x1YTF3aUxGd2liR2x1YTF3aUxHbDBaVzBwTzJGa1pFTnZibVJwZEdsdmJtRnNiSGtvWlc1MGNua3NYQ0prWlhOamNtbHdkR2x2Ymx3aUxGd2laR1Z6WTNKcGNIUnBiMjVjSWl4cGRHVnRLVHRwWmloMGJYQTlabVYwWTJnb1hDSndkV0pFWVhSbFhDSXNhWFJsYlNrcFpXNTBjbmt1Y0hWaVJHRjBaVDF1WlhjZ1JHRjBaU2gwYlhBcE8zSmxkSFZ5YmlCbGJuUnllWDBwZlgxMGFHbHpMbVJ2YlQxbVpXVmtPMFJ2YlVoaGJtUnNaWEl1Y0hKdmRHOTBlWEJsTGw5b1lXNWtiR1ZEWVd4c1ltRmpheTVqWVd4c0tIUm9hWE1zWm1WbFpGSnZiM1EvYm5Wc2JEcEZjbkp2Y2loY0ltTnZkV3hrYmlkMElHWnBibVFnY205dmRDQnZaaUJtWldWa1hDSXBLWDA3Ylc5a2RXeGxMbVY0Y0c5eWRITTlSbVZsWkVoaGJtUnNaWEo5TEh0Y0lpNHZhVzVrWlhndWFuTmNJam96Tml4cGJtaGxjbWwwY3pvek9IMWRMRE14T2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHQyWVhJZ1ZHOXJaVzVwZW1WeVBYSmxjWFZwY21Vb1hDSXVMMVJ2YTJWdWFYcGxjaTVxYzF3aUtUdDJZWElnWm05eWJWUmhaM005ZTJsdWNIVjBPblJ5ZFdVc2IzQjBhVzl1T25SeWRXVXNiM0IwWjNKdmRYQTZkSEoxWlN4elpXeGxZM1E2ZEhKMVpTeGlkWFIwYjI0NmRISjFaU3hrWVhSaGJHbHpkRHAwY25WbExIUmxlSFJoY21WaE9uUnlkV1Y5TzNaaGNpQnZjR1Z1U1cxd2JHbGxjME5zYjNObFBYdDBjanA3ZEhJNmRISjFaU3gwYURwMGNuVmxMSFJrT25SeWRXVjlMSFJvT250MGFEcDBjblZsZlN4MFpEcDdkR2hsWVdRNmRISjFaU3gwYURwMGNuVmxMSFJrT25SeWRXVjlMR0p2WkhrNmUyaGxZV1E2ZEhKMVpTeHNhVzVyT25SeWRXVXNjMk55YVhCME9uUnlkV1Y5TEd4cE9udHNhVHAwY25WbGZTeHdPbnR3T25SeWRXVjlMR2d4T250d09uUnlkV1Y5TEdneU9udHdPblJ5ZFdWOUxHZ3pPbnR3T25SeWRXVjlMR2cwT250d09uUnlkV1Y5TEdnMU9udHdPblJ5ZFdWOUxHZzJPbnR3T25SeWRXVjlMSE5sYkdWamREcG1iM0p0VkdGbmN5eHBibkIxZERwbWIzSnRWR0ZuY3l4dmRYUndkWFE2Wm05eWJWUmhaM01zWW5WMGRHOXVPbVp2Y20xVVlXZHpMR1JoZEdGc2FYTjBPbVp2Y20xVVlXZHpMSFJsZUhSaGNtVmhPbVp2Y20xVVlXZHpMRzl3ZEdsdmJqcDdiM0IwYVc5dU9uUnlkV1Y5TEc5d2RHZHliM1Z3T250dmNIUm5jbTkxY0RwMGNuVmxmWDA3ZG1GeUlIWnZhV1JGYkdWdFpXNTBjejE3WDE5d2NtOTBiMTlmT201MWJHd3NZWEpsWVRwMGNuVmxMR0poYzJVNmRISjFaU3hpWVhObFptOXVkRHAwY25WbExHSnlPblJ5ZFdVc1kyOXNPblJ5ZFdVc1kyOXRiV0Z1WkRwMGNuVmxMR1Z0WW1Wa09uUnlkV1VzWm5KaGJXVTZkSEoxWlN4b2NqcDBjblZsTEdsdFp6cDBjblZsTEdsdWNIVjBPblJ5ZFdVc2FYTnBibVJsZURwMGNuVmxMR3RsZVdkbGJqcDBjblZsTEd4cGJtczZkSEoxWlN4dFpYUmhPblJ5ZFdVc2NHRnlZVzA2ZEhKMVpTeHpiM1Z5WTJVNmRISjFaU3gwY21GamF6cDBjblZsTEhkaWNqcDBjblZsTEhCaGRHZzZkSEoxWlN4amFYSmpiR1U2ZEhKMVpTeGxiR3hwY0hObE9uUnlkV1VzYkdsdVpUcDBjblZsTEhKbFkzUTZkSEoxWlN4MWMyVTZkSEoxWlN4emRHOXdPblJ5ZFdVc2NHOXNlV3hwYm1VNmRISjFaU3h3YjJ4NVoyOXVPblJ5ZFdWOU8zWmhjaUJ5WlY5dVlXMWxSVzVrUFM5Y1hITjhYRnd2THp0bWRXNWpkR2x2YmlCUVlYSnpaWElvWTJKekxHOXdkR2x2Ym5NcGUzUm9hWE11WDI5d2RHbHZibk05YjNCMGFXOXVjM3g4ZTMwN2RHaHBjeTVmWTJKelBXTmljM3g4ZTMwN2RHaHBjeTVmZEdGbmJtRnRaVDFjSWx3aU8zUm9hWE11WDJGMGRISnBZbTVoYldVOVhDSmNJanQwYUdsekxsOWhkSFJ5YVdKMllXeDFaVDFjSWx3aU8zUm9hWE11WDJGMGRISnBZbk05Ym5Wc2JEdDBhR2x6TGw5emRHRmphejFiWFR0MGFHbHpMbk4wWVhKMFNXNWtaWGc5TUR0MGFHbHpMbVZ1WkVsdVpHVjRQVzUxYkd3N2RHaHBjeTVmYkc5M1pYSkRZWE5sVkdGblRtRnRaWE05WENKc2IzZGxja05oYzJWVVlXZHpYQ0pwYmlCMGFHbHpMbDl2Y0hScGIyNXpQeUVoZEdocGN5NWZiM0IwYVc5dWN5NXNiM2RsY2tOaGMyVlVZV2R6T2lGMGFHbHpMbDl2Y0hScGIyNXpMbmh0YkUxdlpHVTdkR2hwY3k1ZmJHOTNaWEpEWVhObFFYUjBjbWxpZFhSbFRtRnRaWE05WENKc2IzZGxja05oYzJWQmRIUnlhV0oxZEdWT1lXMWxjMXdpYVc0Z2RHaHBjeTVmYjNCMGFXOXVjejhoSVhSb2FYTXVYMjl3ZEdsdmJuTXViRzkzWlhKRFlYTmxRWFIwY21saWRYUmxUbUZ0WlhNNklYUm9hWE11WDI5d2RHbHZibk11ZUcxc1RXOWtaVHRwWmloMGFHbHpMbDl2Y0hScGIyNXpMbFJ2YTJWdWFYcGxjaWw3Vkc5clpXNXBlbVZ5UFhSb2FYTXVYMjl3ZEdsdmJuTXVWRzlyWlc1cGVtVnlmWFJvYVhNdVgzUnZhMlZ1YVhwbGNqMXVaWGNnVkc5clpXNXBlbVZ5S0hSb2FYTXVYMjl3ZEdsdmJuTXNkR2hwY3lrN2FXWW9kR2hwY3k1ZlkySnpMbTl1Y0dGeWMyVnlhVzVwZENsMGFHbHpMbDlqWW5NdWIyNXdZWEp6WlhKcGJtbDBLSFJvYVhNcGZYSmxjWFZwY21Vb1hDSnBibWhsY21sMGMxd2lLU2hRWVhKelpYSXNjbVZ4ZFdseVpTaGNJbVYyWlc1MGMxd2lLUzVGZG1WdWRFVnRhWFIwWlhJcE8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdVgzVndaR0YwWlZCdmMybDBhVzl1UFdaMWJtTjBhVzl1S0dsdWFYUnBZV3hQWm1aelpYUXBlMmxtS0hSb2FYTXVaVzVrU1c1a1pYZzlQVDF1ZFd4c0tYdHBaaWgwYUdsekxsOTBiMnRsYm1sNlpYSXVYM05sWTNScGIyNVRkR0Z5ZER3OWFXNXBkR2xoYkU5bVpuTmxkQ2w3ZEdocGN5NXpkR0Z5ZEVsdVpHVjRQVEI5Wld4elpYdDBhR2x6TG5OMFlYSjBTVzVrWlhnOWRHaHBjeTVmZEc5clpXNXBlbVZ5TGw5elpXTjBhVzl1VTNSaGNuUXRhVzVwZEdsaGJFOW1abk5sZEgxOVpXeHpaU0IwYUdsekxuTjBZWEowU1c1a1pYZzlkR2hwY3k1bGJtUkpibVJsZUNzeE8zUm9hWE11Wlc1a1NXNWtaWGc5ZEdocGN5NWZkRzlyWlc1cGVtVnlMbWRsZEVGaWMyOXNkWFJsU1c1a1pYZ29LWDA3VUdGeWMyVnlMbkJ5YjNSdmRIbHdaUzV2Ym5SbGVIUTlablZ1WTNScGIyNG9aR0YwWVNsN2RHaHBjeTVmZFhCa1lYUmxVRzl6YVhScGIyNG9NU2s3ZEdocGN5NWxibVJKYm1SbGVDMHRPMmxtS0hSb2FYTXVYMk5pY3k1dmJuUmxlSFFwZEdocGN5NWZZMkp6TG05dWRHVjRkQ2hrWVhSaEtYMDdVR0Z5YzJWeUxuQnliM1J2ZEhsd1pTNXZibTl3Wlc1MFlXZHVZVzFsUFdaMWJtTjBhVzl1S0c1aGJXVXBlMmxtS0hSb2FYTXVYMnh2ZDJWeVEyRnpaVlJoWjA1aGJXVnpLWHR1WVcxbFBXNWhiV1V1ZEc5TWIzZGxja05oYzJVb0tYMTBhR2x6TGw5MFlXZHVZVzFsUFc1aGJXVTdhV1lvSVhSb2FYTXVYMjl3ZEdsdmJuTXVlRzFzVFc5a1pTWW1ibUZ0WlNCcGJpQnZjR1Z1U1cxd2JHbGxjME5zYjNObEtYdG1iM0lvZG1GeUlHVnNPeWhsYkQxMGFHbHpMbDl6ZEdGamExdDBhR2x6TGw5emRHRmpheTVzWlc1bmRHZ3RNVjBwYVc0Z2IzQmxia2x0Y0d4cFpYTkRiRzl6WlZ0dVlXMWxYVHQwYUdsekxtOXVZMnh2YzJWMFlXY29aV3dwS1R0OWFXWW9kR2hwY3k1ZmIzQjBhVzl1Y3k1NGJXeE5iMlJsZkh3aEtHNWhiV1VnYVc0Z2RtOXBaRVZzWlcxbGJuUnpLU2w3ZEdocGN5NWZjM1JoWTJzdWNIVnphQ2h1WVcxbEtYMXBaaWgwYUdsekxsOWpZbk11YjI1dmNHVnVkR0ZuYm1GdFpTbDBhR2x6TGw5alluTXViMjV2Y0dWdWRHRm5ibUZ0WlNodVlXMWxLVHRwWmloMGFHbHpMbDlqWW5NdWIyNXZjR1Z1ZEdGbktYUm9hWE11WDJGMGRISnBZbk05ZTMxOU8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdWIyNXZjR1Z1ZEdGblpXNWtQV1oxYm1OMGFXOXVLQ2w3ZEdocGN5NWZkWEJrWVhSbFVHOXphWFJwYjI0b01TazdhV1lvZEdocGN5NWZZWFIwY21saWN5bDdhV1lvZEdocGN5NWZZMkp6TG05dWIzQmxiblJoWnlsMGFHbHpMbDlqWW5NdWIyNXZjR1Z1ZEdGbktIUm9hWE11WDNSaFoyNWhiV1VzZEdocGN5NWZZWFIwY21saWN5azdkR2hwY3k1ZllYUjBjbWxpY3oxdWRXeHNmV2xtS0NGMGFHbHpMbDl2Y0hScGIyNXpMbmh0YkUxdlpHVW1KblJvYVhNdVgyTmljeTV2Ym1Oc2IzTmxkR0ZuSmlaMGFHbHpMbDkwWVdkdVlXMWxJR2x1SUhadmFXUkZiR1Z0Wlc1MGN5bDdkR2hwY3k1ZlkySnpMbTl1WTJ4dmMyVjBZV2NvZEdocGN5NWZkR0ZuYm1GdFpTbDlkR2hwY3k1ZmRHRm5ibUZ0WlQxY0lsd2lmVHRRWVhKelpYSXVjSEp2ZEc5MGVYQmxMbTl1WTJ4dmMyVjBZV2M5Wm5WdVkzUnBiMjRvYm1GdFpTbDdkR2hwY3k1ZmRYQmtZWFJsVUc5emFYUnBiMjRvTVNrN2FXWW9kR2hwY3k1ZmJHOTNaWEpEWVhObFZHRm5UbUZ0WlhNcGUyNWhiV1U5Ym1GdFpTNTBiMHh2ZDJWeVEyRnpaU2dwZldsbUtIUm9hWE11WDNOMFlXTnJMbXhsYm1kMGFDWW1LQ0VvYm1GdFpTQnBiaUIyYjJsa1JXeGxiV1Z1ZEhNcGZIeDBhR2x6TGw5dmNIUnBiMjV6TG5odGJFMXZaR1VwS1h0MllYSWdjRzl6UFhSb2FYTXVYM04wWVdOckxteGhjM1JKYm1SbGVFOW1LRzVoYldVcE8ybG1LSEJ2Y3lFOVBTMHhLWHRwWmloMGFHbHpMbDlqWW5NdWIyNWpiRzl6WlhSaFp5bDdjRzl6UFhSb2FYTXVYM04wWVdOckxteGxibWQwYUMxd2IzTTdkMmhwYkdVb2NHOXpMUzBwZEdocGN5NWZZMkp6TG05dVkyeHZjMlYwWVdjb2RHaHBjeTVmYzNSaFkyc3VjRzl3S0NrcGZXVnNjMlVnZEdocGN5NWZjM1JoWTJzdWJHVnVaM1JvUFhCdmMzMWxiSE5sSUdsbUtHNWhiV1U5UFQxY0luQmNJaVltSVhSb2FYTXVYMjl3ZEdsdmJuTXVlRzFzVFc5a1pTbDdkR2hwY3k1dmJtOXdaVzUwWVdkdVlXMWxLRzVoYldVcE8zUm9hWE11WDJOc2IzTmxRM1Z5Y21WdWRGUmhaeWdwZlgxbGJITmxJR2xtS0NGMGFHbHpMbDl2Y0hScGIyNXpMbmh0YkUxdlpHVW1KaWh1WVcxbFBUMDlYQ0ppY2x3aWZIeHVZVzFsUFQwOVhDSndYQ0lwS1h0MGFHbHpMbTl1YjNCbGJuUmhaMjVoYldVb2JtRnRaU2s3ZEdocGN5NWZZMnh2YzJWRGRYSnlaVzUwVkdGbktDbDlmVHRRWVhKelpYSXVjSEp2ZEc5MGVYQmxMbTl1YzJWc1ptTnNiM05wYm1kMFlXYzlablZ1WTNScGIyNG9LWHRwWmloMGFHbHpMbDl2Y0hScGIyNXpMbmh0YkUxdlpHVjhmSFJvYVhNdVgyOXdkR2x2Ym5NdWNtVmpiMmR1YVhwbFUyVnNaa05zYjNOcGJtY3BlM1JvYVhNdVgyTnNiM05sUTNWeWNtVnVkRlJoWnlncGZXVnNjMlY3ZEdocGN5NXZibTl3Wlc1MFlXZGxibVFvS1gxOU8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdVgyTnNiM05sUTNWeWNtVnVkRlJoWnoxbWRXNWpkR2x2YmlncGUzWmhjaUJ1WVcxbFBYUm9hWE11WDNSaFoyNWhiV1U3ZEdocGN5NXZibTl3Wlc1MFlXZGxibVFvS1R0cFppaDBhR2x6TGw5emRHRmphMXQwYUdsekxsOXpkR0ZqYXk1c1pXNW5kR2d0TVYwOVBUMXVZVzFsS1h0cFppaDBhR2x6TGw5alluTXViMjVqYkc5elpYUmhaeWw3ZEdocGN5NWZZMkp6TG05dVkyeHZjMlYwWVdjb2JtRnRaU2w5ZEdocGN5NWZjM1JoWTJzdWNHOXdLQ2w5ZlR0UVlYSnpaWEl1Y0hKdmRHOTBlWEJsTG05dVlYUjBjbWxpYm1GdFpUMW1kVzVqZEdsdmJpaHVZVzFsS1h0cFppaDBhR2x6TGw5c2IzZGxja05oYzJWQmRIUnlhV0oxZEdWT1lXMWxjeWw3Ym1GdFpUMXVZVzFsTG5SdlRHOTNaWEpEWVhObEtDbDlkR2hwY3k1ZllYUjBjbWxpYm1GdFpUMXVZVzFsZlR0UVlYSnpaWEl1Y0hKdmRHOTBlWEJsTG05dVlYUjBjbWxpWkdGMFlUMW1kVzVqZEdsdmJpaDJZV3gxWlNsN2RHaHBjeTVmWVhSMGNtbGlkbUZzZFdVclBYWmhiSFZsZlR0UVlYSnpaWEl1Y0hKdmRHOTBlWEJsTG05dVlYUjBjbWxpWlc1a1BXWjFibU4wYVc5dUtDbDdhV1lvZEdocGN5NWZZMkp6TG05dVlYUjBjbWxpZFhSbEtYUm9hWE11WDJOaWN5NXZibUYwZEhKcFluVjBaU2gwYUdsekxsOWhkSFJ5YVdKdVlXMWxMSFJvYVhNdVgyRjBkSEpwWW5aaGJIVmxLVHRwWmloMGFHbHpMbDloZEhSeWFXSnpKaVloVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hSb2FYTXVYMkYwZEhKcFluTXNkR2hwY3k1ZllYUjBjbWxpYm1GdFpTa3BlM1JvYVhNdVgyRjBkSEpwWW5OYmRHaHBjeTVmWVhSMGNtbGlibUZ0WlYwOWRHaHBjeTVmWVhSMGNtbGlkbUZzZFdWOWRHaHBjeTVmWVhSMGNtbGlibUZ0WlQxY0lsd2lPM1JvYVhNdVgyRjBkSEpwWW5aaGJIVmxQVndpWENKOU8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdVgyZGxkRWx1YzNSeWRXTjBhVzl1VG1GdFpUMW1kVzVqZEdsdmJpaDJZV3gxWlNsN2RtRnlJR2xrZUQxMllXeDFaUzV6WldGeVkyZ29jbVZmYm1GdFpVVnVaQ2tzYm1GdFpUMXBaSGc4TUQ5MllXeDFaVHAyWVd4MVpTNXpkV0p6ZEhJb01DeHBaSGdwTzJsbUtIUm9hWE11WDJ4dmQyVnlRMkZ6WlZSaFowNWhiV1Z6S1h0dVlXMWxQVzVoYldVdWRHOU1iM2RsY2tOaGMyVW9LWDF5WlhSMWNtNGdibUZ0WlgwN1VHRnljMlZ5TG5CeWIzUnZkSGx3WlM1dmJtUmxZMnhoY21GMGFXOXVQV1oxYm1OMGFXOXVLSFpoYkhWbEtYdHBaaWgwYUdsekxsOWpZbk11YjI1d2NtOWpaWE56YVc1bmFXNXpkSEoxWTNScGIyNHBlM1poY2lCdVlXMWxQWFJvYVhNdVgyZGxkRWx1YzNSeWRXTjBhVzl1VG1GdFpTaDJZV3gxWlNrN2RHaHBjeTVmWTJKekxtOXVjSEp2WTJWemMybHVaMmx1YzNSeWRXTjBhVzl1S0Z3aUlWd2lLMjVoYldVc1hDSWhYQ0lyZG1Gc2RXVXBmWDA3VUdGeWMyVnlMbkJ5YjNSdmRIbHdaUzV2Ym5CeWIyTmxjM05wYm1kcGJuTjBjblZqZEdsdmJqMW1kVzVqZEdsdmJpaDJZV3gxWlNsN2FXWW9kR2hwY3k1ZlkySnpMbTl1Y0hKdlkyVnpjMmx1WjJsdWMzUnlkV04wYVc5dUtYdDJZWElnYm1GdFpUMTBhR2x6TGw5blpYUkpibk4wY25WamRHbHZiazVoYldVb2RtRnNkV1VwTzNSb2FYTXVYMk5pY3k1dmJuQnliMk5sYzNOcGJtZHBibk4wY25WamRHbHZiaWhjSWo5Y0lpdHVZVzFsTEZ3aVAxd2lLM1poYkhWbEtYMTlPMUJoY25ObGNpNXdjbTkwYjNSNWNHVXViMjVqYjIxdFpXNTBQV1oxYm1OMGFXOXVLSFpoYkhWbEtYdDBhR2x6TGw5MWNHUmhkR1ZRYjNOcGRHbHZiaWcwS1R0cFppaDBhR2x6TGw5alluTXViMjVqYjIxdFpXNTBLWFJvYVhNdVgyTmljeTV2Ym1OdmJXMWxiblFvZG1Gc2RXVXBPMmxtS0hSb2FYTXVYMk5pY3k1dmJtTnZiVzFsYm5SbGJtUXBkR2hwY3k1ZlkySnpMbTl1WTI5dGJXVnVkR1Z1WkNncGZUdFFZWEp6WlhJdWNISnZkRzkwZVhCbExtOXVZMlJoZEdFOVpuVnVZM1JwYjI0b2RtRnNkV1VwZTNSb2FYTXVYM1Z3WkdGMFpWQnZjMmwwYVc5dUtERXBPMmxtS0hSb2FYTXVYMjl3ZEdsdmJuTXVlRzFzVFc5a1pYeDhkR2hwY3k1ZmIzQjBhVzl1Y3k1eVpXTnZaMjVwZW1WRFJFRlVRU2w3YVdZb2RHaHBjeTVmWTJKekxtOXVZMlJoZEdGemRHRnlkQ2wwYUdsekxsOWpZbk11YjI1alpHRjBZWE4wWVhKMEtDazdhV1lvZEdocGN5NWZZMkp6TG05dWRHVjRkQ2wwYUdsekxsOWpZbk11YjI1MFpYaDBLSFpoYkhWbEtUdHBaaWgwYUdsekxsOWpZbk11YjI1alpHRjBZV1Z1WkNsMGFHbHpMbDlqWW5NdWIyNWpaR0YwWVdWdVpDZ3BmV1ZzYzJWN2RHaHBjeTV2Ym1OdmJXMWxiblFvWENKYlEwUkJWRUZiWENJcmRtRnNkV1VyWENKZFhWd2lLWDE5TzFCaGNuTmxjaTV3Y205MGIzUjVjR1V1YjI1bGNuSnZjajFtZFc1amRHbHZiaWhsY25JcGUybG1LSFJvYVhNdVgyTmljeTV2Ym1WeWNtOXlLWFJvYVhNdVgyTmljeTV2Ym1WeWNtOXlLR1Z5Y2lsOU8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdWIyNWxibVE5Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5alluTXViMjVqYkc5elpYUmhaeWw3Wm05eUtIWmhjaUJwUFhSb2FYTXVYM04wWVdOckxteGxibWQwYUR0cFBqQTdkR2hwY3k1ZlkySnpMbTl1WTJ4dmMyVjBZV2NvZEdocGN5NWZjM1JoWTJ0YkxTMXBYU2twTzMxcFppaDBhR2x6TGw5alluTXViMjVsYm1RcGRHaHBjeTVmWTJKekxtOXVaVzVrS0NsOU8xQmhjbk5sY2k1d2NtOTBiM1I1Y0dVdWNtVnpaWFE5Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5alluTXViMjV5WlhObGRDbDBhR2x6TGw5alluTXViMjV5WlhObGRDZ3BPM1JvYVhNdVgzUnZhMlZ1YVhwbGNpNXlaWE5sZENncE8zUm9hWE11WDNSaFoyNWhiV1U5WENKY0lqdDBhR2x6TGw5aGRIUnlhV0p1WVcxbFBWd2lYQ0k3ZEdocGN5NWZZWFIwY21saWN6MXVkV3hzTzNSb2FYTXVYM04wWVdOclBWdGRPMmxtS0hSb2FYTXVYMk5pY3k1dmJuQmhjbk5sY21sdWFYUXBkR2hwY3k1ZlkySnpMbTl1Y0dGeWMyVnlhVzVwZENoMGFHbHpLWDA3VUdGeWMyVnlMbkJ5YjNSdmRIbHdaUzV3WVhKelpVTnZiWEJzWlhSbFBXWjFibU4wYVc5dUtHUmhkR0VwZTNSb2FYTXVjbVZ6WlhRb0tUdDBhR2x6TG1WdVpDaGtZWFJoS1gwN1VHRnljMlZ5TG5CeWIzUnZkSGx3WlM1M2NtbDBaVDFtZFc1amRHbHZiaWhqYUhWdWF5bDdkR2hwY3k1ZmRHOXJaVzVwZW1WeUxuZHlhWFJsS0dOb2RXNXJLWDA3VUdGeWMyVnlMbkJ5YjNSdmRIbHdaUzVsYm1ROVpuVnVZM1JwYjI0b1kyaDFibXNwZTNSb2FYTXVYM1J2YTJWdWFYcGxjaTVsYm1Rb1kyaDFibXNwZlR0UVlYSnpaWEl1Y0hKdmRHOTBlWEJsTG5CaGRYTmxQV1oxYm1OMGFXOXVLQ2w3ZEdocGN5NWZkRzlyWlc1cGVtVnlMbkJoZFhObEtDbDlPMUJoY25ObGNpNXdjbTkwYjNSNWNHVXVjbVZ6ZFcxbFBXWjFibU4wYVc5dUtDbDdkR2hwY3k1ZmRHOXJaVzVwZW1WeUxuSmxjM1Z0WlNncGZUdFFZWEp6WlhJdWNISnZkRzkwZVhCbExuQmhjbk5sUTJoMWJtczlVR0Z5YzJWeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlR0UVlYSnpaWEl1Y0hKdmRHOTBlWEJsTG1SdmJtVTlVR0Z5YzJWeUxuQnliM1J2ZEhsd1pTNWxibVE3Ylc5a2RXeGxMbVY0Y0c5eWRITTlVR0Z5YzJWeWZTeDdYQ0l1TDFSdmEyVnVhWHBsY2k1cWMxd2lPak0wTEdWMlpXNTBjem95T0N4cGJtaGxjbWwwY3pvek9IMWRMRE15T2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHR0YjJSMWJHVXVaWGh3YjNKMGN6MVFjbTk0ZVVoaGJtUnNaWEk3Wm5WdVkzUnBiMjRnVUhKdmVIbElZVzVrYkdWeUtHTmljeWw3ZEdocGN5NWZZMkp6UFdOaWMzeDhlMzE5ZG1GeUlFVldSVTVVVXoxeVpYRjFhWEpsS0Z3aUxpOWNJaWt1UlZaRlRsUlRPMDlpYW1WamRDNXJaWGx6S0VWV1JVNVVVeWt1Wm05eVJXRmphQ2htZFc1amRHbHZiaWh1WVcxbEtYdHBaaWhGVmtWT1ZGTmJibUZ0WlYwOVBUMHdLWHR1WVcxbFBWd2liMjVjSWl0dVlXMWxPMUJ5YjNoNVNHRnVaR3hsY2k1d2NtOTBiM1I1Y0dWYmJtRnRaVjA5Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5alluTmJibUZ0WlYwcGRHaHBjeTVmWTJKelcyNWhiV1ZkS0NsOWZXVnNjMlVnYVdZb1JWWkZUbFJUVzI1aGJXVmRQVDA5TVNsN2JtRnRaVDFjSW05dVhDSXJibUZ0WlR0UWNtOTRlVWhoYm1Sc1pYSXVjSEp2ZEc5MGVYQmxXMjVoYldWZFBXWjFibU4wYVc5dUtHRXBlMmxtS0hSb2FYTXVYMk5pYzF0dVlXMWxYU2wwYUdsekxsOWpZbk5iYm1GdFpWMG9ZU2w5ZldWc2MyVWdhV1lvUlZaRlRsUlRXMjVoYldWZFBUMDlNaWw3Ym1GdFpUMWNJbTl1WENJcmJtRnRaVHRRY205NGVVaGhibVJzWlhJdWNISnZkRzkwZVhCbFcyNWhiV1ZkUFdaMWJtTjBhVzl1S0dFc1lpbDdhV1lvZEdocGN5NWZZMkp6VzI1aGJXVmRLWFJvYVhNdVgyTmljMXR1WVcxbFhTaGhMR0lwZlgxbGJITmxlM1JvY205M0lFVnljbTl5S0Z3aWQzSnZibWNnYm5WdFltVnlJRzltSUdGeVozVnRaVzUwYzF3aUtYMTlLWDBzZTF3aUxpOWNJam96Tm4xZExETXpPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdHRiMlIxYkdVdVpYaHdiM0owY3oxVGRISmxZVzA3ZG1GeUlGQmhjbk5sY2oxeVpYRjFhWEpsS0Z3aUxpOVhjbWwwWVdKc1pWTjBjbVZoYlM1cWMxd2lLVHRtZFc1amRHbHZiaUJUZEhKbFlXMG9iM0IwYVc5dWN5bDdVR0Z5YzJWeUxtTmhiR3dvZEdocGN5eHVaWGNnUTJKektIUm9hWE1wTEc5d2RHbHZibk1wZlhKbGNYVnBjbVVvWENKcGJtaGxjbWwwYzF3aUtTaFRkSEpsWVcwc1VHRnljMlZ5S1R0VGRISmxZVzB1Y0hKdmRHOTBlWEJsTG5KbFlXUmhZbXhsUFhSeWRXVTdablZ1WTNScGIyNGdRMkp6S0hOamIzQmxLWHQwYUdsekxuTmpiM0JsUFhOamIzQmxmWFpoY2lCRlZrVk9WRk05Y21WeGRXbHlaU2hjSWk0dUwxd2lLUzVGVmtWT1ZGTTdUMkpxWldOMExtdGxlWE1vUlZaRlRsUlRLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVLRzVoYldVcGUybG1LRVZXUlU1VVUxdHVZVzFsWFQwOVBUQXBlME5pY3k1d2NtOTBiM1I1Y0dWYlhDSnZibHdpSzI1aGJXVmRQV1oxYm1OMGFXOXVLQ2w3ZEdocGN5NXpZMjl3WlM1bGJXbDBLRzVoYldVcGZYMWxiSE5sSUdsbUtFVldSVTVVVTF0dVlXMWxYVDA5UFRFcGUwTmljeTV3Y205MGIzUjVjR1ZiWENKdmJsd2lLMjVoYldWZFBXWjFibU4wYVc5dUtHRXBlM1JvYVhNdWMyTnZjR1V1WlcxcGRDaHVZVzFsTEdFcGZYMWxiSE5sSUdsbUtFVldSVTVVVTF0dVlXMWxYVDA5UFRJcGUwTmljeTV3Y205MGIzUjVjR1ZiWENKdmJsd2lLMjVoYldWZFBXWjFibU4wYVc5dUtHRXNZaWw3ZEdocGN5NXpZMjl3WlM1bGJXbDBLRzVoYldVc1lTeGlLWDE5Wld4elpYdDBhSEp2ZHlCRmNuSnZjaWhjSW5keWIyNW5JRzUxYldKbGNpQnZaaUJoY21kMWJXVnVkSE1oWENJcGZYMHBmU3g3WENJdUxpOWNJam96Tml4Y0lpNHZWM0pwZEdGaWJHVlRkSEpsWVcwdWFuTmNJam96TlN4cGJtaGxjbWwwY3pvek9IMWRMRE0wT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHR0YjJSMWJHVXVaWGh3YjNKMGN6MVViMnRsYm1sNlpYSTdkbUZ5SUdSbFkyOWtaVU52WkdWUWIybHVkRDF5WlhGMWFYSmxLRndpWlc1MGFYUnBaWE12YkdsaUwyUmxZMjlrWlY5amIyUmxjRzlwYm5RdWFuTmNJaWtzWlc1MGFYUjVUV0Z3UFhKbGNYVnBjbVVvWENKbGJuUnBkR2xsY3k5dFlYQnpMMlZ1ZEdsMGFXVnpMbXB6YjI1Y0lpa3NiR1ZuWVdONVRXRndQWEpsY1hWcGNtVW9YQ0psYm5ScGRHbGxjeTl0WVhCekwyeGxaMkZqZVM1cWMyOXVYQ0lwTEhodGJFMWhjRDF5WlhGMWFYSmxLRndpWlc1MGFYUnBaWE12YldGd2N5OTRiV3d1YW5OdmJsd2lLU3hwUFRBc1ZFVllWRDFwS3lzc1FrVkdUMUpGWDFSQlIxOU9RVTFGUFdrckt5eEpUbDlVUVVkZlRrRk5SVDFwS3lzc1NVNWZVMFZNUmw5RFRFOVRTVTVIWDFSQlJ6MXBLeXNzUWtWR1QxSkZYME5NVDFOSlRrZGZWRUZIWDA1QlRVVTlhU3NyTEVsT1gwTk1UMU5KVGtkZlZFRkhYMDVCVFVVOWFTc3JMRUZHVkVWU1gwTk1UMU5KVGtkZlZFRkhYMDVCVFVVOWFTc3JMRUpGUms5U1JWOUJWRlJTU1VKVlZFVmZUa0ZOUlQxcEt5c3NTVTVmUVZSVVVrbENWVlJGWDA1QlRVVTlhU3NyTEVGR1ZFVlNYMEZVVkZKSlFsVlVSVjlPUVUxRlBXa3JLeXhDUlVaUFVrVmZRVlJVVWtsQ1ZWUkZYMVpCVEZWRlBXa3JLeXhKVGw5QlZGUlNTVUpWVkVWZlZrRk1WVVZmUkZFOWFTc3JMRWxPWDBGVVZGSkpRbFZVUlY5V1FVeFZSVjlUVVQxcEt5c3NTVTVmUVZSVVVrbENWVlJGWDFaQlRGVkZYMDVSUFdrckt5eENSVVpQVWtWZlJFVkRURUZTUVZSSlQwNDlhU3NyTEVsT1gwUkZRMHhCVWtGVVNVOU9QV2tyS3l4SlRsOVFVazlEUlZOVFNVNUhYMGxPVTFSU1ZVTlVTVTlPUFdrckt5eENSVVpQVWtWZlEwOU5UVVZPVkQxcEt5c3NTVTVmUTA5TlRVVk9WRDFwS3lzc1FVWlVSVkpmUTA5TlRVVk9WRjh4UFdrckt5eEJSbFJGVWw5RFQwMU5SVTVVWHpJOWFTc3JMRUpGUms5U1JWOURSRUZVUVY4eFBXa3JLeXhDUlVaUFVrVmZRMFJCVkVGZk1qMXBLeXNzUWtWR1QxSkZYME5FUVZSQlh6TTlhU3NyTEVKRlJrOVNSVjlEUkVGVVFWODBQV2tyS3l4Q1JVWlBVa1ZmUTBSQlZFRmZOVDFwS3lzc1FrVkdUMUpGWDBORVFWUkJYelk5YVNzckxFbE9YME5FUVZSQlBXa3JLeXhCUmxSRlVsOURSRUZVUVY4eFBXa3JLeXhCUmxSRlVsOURSRUZVUVY4eVBXa3JLeXhDUlVaUFVrVmZVMUJGUTBsQlREMXBLeXNzUWtWR1QxSkZYMU5RUlVOSlFVeGZSVTVFUFdrckt5eENSVVpQVWtWZlUwTlNTVkJVWHpFOWFTc3JMRUpGUms5U1JWOVRRMUpKVUZSZk1qMXBLeXNzUWtWR1QxSkZYMU5EVWtsUVZGOHpQV2tyS3l4Q1JVWlBVa1ZmVTBOU1NWQlVYelE5YVNzckxFSkZSazlTUlY5VFExSkpVRlJmTlQxcEt5c3NRVVpVUlZKZlUwTlNTVkJVWHpFOWFTc3JMRUZHVkVWU1gxTkRVa2xRVkY4eVBXa3JLeXhCUmxSRlVsOVRRMUpKVUZSZk16MXBLeXNzUVVaVVJWSmZVME5TU1ZCVVh6UTlhU3NyTEVGR1ZFVlNYMU5EVWtsUVZGODFQV2tyS3l4Q1JVWlBVa1ZmVTFSWlRFVmZNVDFwS3lzc1FrVkdUMUpGWDFOVVdVeEZYekk5YVNzckxFSkZSazlTUlY5VFZGbE1SVjh6UFdrckt5eENSVVpQVWtWZlUxUlpURVZmTkQxcEt5c3NRVVpVUlZKZlUxUlpURVZmTVQxcEt5c3NRVVpVUlZKZlUxUlpURVZmTWoxcEt5c3NRVVpVUlZKZlUxUlpURVZmTXoxcEt5c3NRVVpVUlZKZlUxUlpURVZmTkQxcEt5c3NRa1ZHVDFKRlgwVk9WRWxVV1QxcEt5c3NRa1ZHVDFKRlgwNVZUVVZTU1VOZlJVNVVTVlJaUFdrckt5eEpUbDlPUVUxRlJGOUZUbFJKVkZrOWFTc3JMRWxPWDA1VlRVVlNTVU5mUlU1VVNWUlpQV2tyS3l4SlRsOUlSVmhmUlU1VVNWUlpQV2tyS3l4cVBUQXNVMUJGUTBsQlRGOU9UMDVGUFdvckt5eFRVRVZEU1VGTVgxTkRVa2xRVkQxcUt5c3NVMUJGUTBsQlRGOVRWRmxNUlQxcUt5czdablZ1WTNScGIyNGdkMmhwZEdWemNHRmpaU2hqS1h0eVpYUjFjbTRnWXowOVBWd2lJRndpZkh4alBUMDlYQ0pjWEc1Y0lueDhZejA5UFZ3aVhGeDBYQ0o4ZkdNOVBUMWNJbHhjWmx3aWZIeGpQVDA5WENKY1hISmNJbjFtZFc1amRHbHZiaUJqYUdGeVlXTjBaWEpUZEdGMFpTaGphR0Z5TEZOVlEwTkZVMU1wZTNKbGRIVnliaUJtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5WTJoaGNpbDBhR2x6TGw5emRHRjBaVDFUVlVORFJWTlRmWDFtZFc1amRHbHZiaUJwWmtWc2MyVlRkR0YwWlNoMWNIQmxjaXhUVlVORFJWTlRMRVpCU1V4VlVrVXBlM1poY2lCc2IzZGxjajExY0hCbGNpNTBiMHh2ZDJWeVEyRnpaU2dwTzJsbUtIVndjR1Z5UFQwOWJHOTNaWElwZTNKbGRIVnliaUJtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5Ykc5M1pYSXBlM1JvYVhNdVgzTjBZWFJsUFZOVlEwTkZVMU45Wld4elpYdDBhR2x6TGw5emRHRjBaVDFHUVVsTVZWSkZPM1JvYVhNdVgybHVaR1Y0TFMxOWZYMWxiSE5sZTNKbGRIVnliaUJtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5Ykc5M1pYSjhmR005UFQxMWNIQmxjaWw3ZEdocGN5NWZjM1JoZEdVOVUxVkRRMFZUVTMxbGJITmxlM1JvYVhNdVgzTjBZWFJsUFVaQlNVeFZVa1U3ZEdocGN5NWZhVzVrWlhndExYMTlmWDFtZFc1amRHbHZiaUJqYjI1emRXMWxVM0JsWTJsaGJFNWhiV1ZEYUdGeUtIVndjR1Z5TEU1RldGUmZVMVJCVkVVcGUzWmhjaUJzYjNkbGNqMTFjSEJsY2k1MGIweHZkMlZ5UTJGelpTZ3BPM0psZEhWeWJpQm1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDliRzkzWlhKOGZHTTlQVDExY0hCbGNpbDdkR2hwY3k1ZmMzUmhkR1U5VGtWWVZGOVRWRUZVUlgxbGJITmxlM1JvYVhNdVgzTjBZWFJsUFVsT1gxUkJSMTlPUVUxRk8zUm9hWE11WDJsdVpHVjRMUzE5ZlgxbWRXNWpkR2x2YmlCVWIydGxibWw2WlhJb2IzQjBhVzl1Y3l4alluTXBlM1JvYVhNdVgzTjBZWFJsUFZSRldGUTdkR2hwY3k1ZlluVm1abVZ5UFZ3aVhDSTdkR2hwY3k1ZmMyVmpkR2x2YmxOMFlYSjBQVEE3ZEdocGN5NWZhVzVrWlhnOU1EdDBhR2x6TGw5aWRXWm1aWEpQWm1aelpYUTlNRHQwYUdsekxsOWlZWE5sVTNSaGRHVTlWRVZZVkR0MGFHbHpMbDl6Y0dWamFXRnNQVk5RUlVOSlFVeGZUazlPUlR0MGFHbHpMbDlqWW5NOVkySnpPM1JvYVhNdVgzSjFibTVwYm1jOWRISjFaVHQwYUdsekxsOWxibVJsWkQxbVlXeHpaVHQwYUdsekxsOTRiV3hOYjJSbFBTRWhLRzl3ZEdsdmJuTW1KbTl3ZEdsdmJuTXVlRzFzVFc5a1pTazdkR2hwY3k1ZlpHVmpiMlJsUlc1MGFYUnBaWE05SVNFb2IzQjBhVzl1Y3lZbWIzQjBhVzl1Y3k1a1pXTnZaR1ZGYm5ScGRHbGxjeWw5Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZVWlhoMFBXWjFibU4wYVc5dUtHTXBlMmxtS0dNOVBUMWNJanhjSWlsN2FXWW9kR2hwY3k1ZmFXNWtaWGcrZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowS1h0MGFHbHpMbDlqWW5NdWIyNTBaWGgwS0hSb2FYTXVYMmRsZEZObFkzUnBiMjRvS1NsOWRHaHBjeTVmYzNSaGRHVTlRa1ZHVDFKRlgxUkJSMTlPUVUxRk8zUm9hWE11WDNObFkzUnBiMjVUZEdGeWREMTBhR2x6TGw5cGJtUmxlSDFsYkhObElHbG1LSFJvYVhNdVgyUmxZMjlrWlVWdWRHbDBhV1Z6SmlaMGFHbHpMbDl6Y0dWamFXRnNQVDA5VTFCRlEwbEJURjlPVDA1RkppWmpQVDA5WENJbVhDSXBlMmxtS0hSb2FYTXVYMmx1WkdWNFBuUm9hWE11WDNObFkzUnBiMjVUZEdGeWRDbDdkR2hwY3k1ZlkySnpMbTl1ZEdWNGRDaDBhR2x6TGw5blpYUlRaV04wYVc5dUtDa3BmWFJvYVhNdVgySmhjMlZUZEdGMFpUMVVSVmhVTzNSb2FYTXVYM04wWVhSbFBVSkZSazlTUlY5RlRsUkpWRms3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNGZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WVVlXZE9ZVzFsUFdaMWJtTjBhVzl1S0dNcGUybG1LR005UFQxY0lpOWNJaWw3ZEdocGN5NWZjM1JoZEdVOVFrVkdUMUpGWDBOTVQxTkpUa2RmVkVGSFgwNUJUVVY5Wld4elpTQnBaaWhqUFQwOVhDSThYQ0lwZTNSb2FYTXVYMk5pY3k1dmJuUmxlSFFvZEdocGN5NWZaMlYwVTJWamRHbHZiaWdwS1R0MGFHbHpMbDl6WldOMGFXOXVVM1JoY25ROWRHaHBjeTVmYVc1a1pYaDlaV3h6WlNCcFppaGpQVDA5WENJK1hDSjhmSFJvYVhNdVgzTndaV05wWVd3aFBUMVRVRVZEU1VGTVgwNVBUa1Y4Zkhkb2FYUmxjM0JoWTJVb1l5a3BlM1JvYVhNdVgzTjBZWFJsUFZSRldGUjlaV3h6WlNCcFppaGpQVDA5WENJaFhDSXBlM1JvYVhNdVgzTjBZWFJsUFVKRlJrOVNSVjlFUlVOTVFWSkJWRWxQVGp0MGFHbHpMbDl6WldOMGFXOXVVM1JoY25ROWRHaHBjeTVmYVc1a1pYZ3JNWDFsYkhObElHbG1LR005UFQxY0lqOWNJaWw3ZEdocGN5NWZjM1JoZEdVOVNVNWZVRkpQUTBWVFUwbE9SMTlKVGxOVVVsVkRWRWxQVGp0MGFHbHpMbDl6WldOMGFXOXVVM1JoY25ROWRHaHBjeTVmYVc1a1pYZ3JNWDFsYkhObGUzUm9hWE11WDNOMFlYUmxQU0YwYUdsekxsOTRiV3hOYjJSbEppWW9ZejA5UFZ3aWMxd2lmSHhqUFQwOVhDSlRYQ0lwUDBKRlJrOVNSVjlUVUVWRFNVRk1Pa2xPWDFSQlIxOU9RVTFGTzNSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZEQxMGFHbHpMbDlwYm1SbGVIMTlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNOMFlYUmxTVzVVWVdkT1lXMWxQV1oxYm1OMGFXOXVLR01wZTJsbUtHTTlQVDFjSWk5Y0lueDhZejA5UFZ3aVBsd2lmSHgzYUdsMFpYTndZV05sS0dNcEtYdDBhR2x6TGw5bGJXbDBWRzlyWlc0b1hDSnZibTl3Wlc1MFlXZHVZVzFsWENJcE8zUm9hWE11WDNOMFlYUmxQVUpGUms5U1JWOUJWRlJTU1VKVlZFVmZUa0ZOUlR0MGFHbHpMbDlwYm1SbGVDMHRmWDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZDWldadmNtVkRiRzl6WldsdVoxUmhaMDVoYldVOVpuVnVZM1JwYjI0b1l5bDdhV1lvZDJocGRHVnpjR0ZqWlNoaktTazdaV3h6WlNCcFppaGpQVDA5WENJK1hDSXBlM1JvYVhNdVgzTjBZWFJsUFZSRldGUjlaV3h6WlNCcFppaDBhR2x6TGw5emNHVmphV0ZzSVQwOVUxQkZRMGxCVEY5T1QwNUZLWHRwWmloalBUMDlYQ0p6WENKOGZHTTlQVDFjSWxOY0lpbDdkR2hwY3k1ZmMzUmhkR1U5UWtWR1QxSkZYMU5RUlVOSlFVeGZSVTVFZldWc2MyVjdkR2hwY3k1ZmMzUmhkR1U5VkVWWVZEdDBhR2x6TGw5cGJtUmxlQzB0ZlgxbGJITmxlM1JvYVhNdVgzTjBZWFJsUFVsT1gwTk1UMU5KVGtkZlZFRkhYMDVCVFVVN2RHaHBjeTVmYzJWamRHbHZibE4wWVhKMFBYUm9hWE11WDJsdVpHVjRmWDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZKYmtOc2IzTmxhVzVuVkdGblRtRnRaVDFtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5WENJK1hDSjhmSGRvYVhSbGMzQmhZMlVvWXlrcGUzUm9hWE11WDJWdGFYUlViMnRsYmloY0ltOXVZMnh2YzJWMFlXZGNJaWs3ZEdocGN5NWZjM1JoZEdVOVFVWlVSVkpmUTB4UFUwbE9SMTlVUVVkZlRrRk5SVHQwYUdsekxsOXBibVJsZUMwdGZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkJablJsY2tOc2IzTmxhVzVuVkdGblRtRnRaVDFtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5WENJK1hDSXBlM1JvYVhNdVgzTjBZWFJsUFZSRldGUTdkR2hwY3k1ZmMyVmpkR2x2YmxOMFlYSjBQWFJvYVhNdVgybHVaR1Y0S3pGOWZUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbDl6ZEdGMFpVSmxabTl5WlVGMGRISnBZblYwWlU1aGJXVTlablZ1WTNScGIyNG9ZeWw3YVdZb1l6MDlQVndpUGx3aUtYdDBhR2x6TGw5alluTXViMjV2Y0dWdWRHRm5aVzVrS0NrN2RHaHBjeTVmYzNSaGRHVTlWRVZZVkR0MGFHbHpMbDl6WldOMGFXOXVVM1JoY25ROWRHaHBjeTVmYVc1a1pYZ3JNWDFsYkhObElHbG1LR005UFQxY0lpOWNJaWw3ZEdocGN5NWZjM1JoZEdVOVNVNWZVMFZNUmw5RFRFOVRTVTVIWDFSQlIzMWxiSE5sSUdsbUtDRjNhR2wwWlhOd1lXTmxLR01wS1h0MGFHbHpMbDl6ZEdGMFpUMUpUbDlCVkZSU1NVSlZWRVZmVGtGTlJUdDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUTlkR2hwY3k1ZmFXNWtaWGg5ZlR0VWIydGxibWw2WlhJdWNISnZkRzkwZVhCbExsOXpkR0YwWlVsdVUyVnNaa05zYjNOcGJtZFVZV2M5Wm5WdVkzUnBiMjRvWXlsN2FXWW9ZejA5UFZ3aVBsd2lLWHQwYUdsekxsOWpZbk11YjI1elpXeG1ZMnh2YzJsdVozUmhaeWdwTzNSb2FYTXVYM04wWVhSbFBWUkZXRlE3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNEt6RjlaV3h6WlNCcFppZ2hkMmhwZEdWemNHRmpaU2hqS1NsN2RHaHBjeTVmYzNSaGRHVTlRa1ZHVDFKRlgwRlVWRkpKUWxWVVJWOU9RVTFGTzNSb2FYTXVYMmx1WkdWNExTMTlmVHRVYjJ0bGJtbDZaWEl1Y0hKdmRHOTBlWEJsTGw5emRHRjBaVWx1UVhSMGNtbGlkWFJsVG1GdFpUMW1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDlYQ0k5WENKOGZHTTlQVDFjSWk5Y0lueDhZejA5UFZ3aVBsd2lmSHgzYUdsMFpYTndZV05sS0dNcEtYdDBhR2x6TGw5alluTXViMjVoZEhSeWFXSnVZVzFsS0hSb2FYTXVYMmRsZEZObFkzUnBiMjRvS1NrN2RHaHBjeTVmYzJWamRHbHZibE4wWVhKMFBTMHhPM1JvYVhNdVgzTjBZWFJsUFVGR1ZFVlNYMEZVVkZKSlFsVlVSVjlPUVUxRk8zUm9hWE11WDJsdVpHVjRMUzE5ZlR0VWIydGxibWw2WlhJdWNISnZkRzkwZVhCbExsOXpkR0YwWlVGbWRHVnlRWFIwY21saWRYUmxUbUZ0WlQxbWRXNWpkR2x2YmloaktYdHBaaWhqUFQwOVhDSTlYQ0lwZTNSb2FYTXVYM04wWVhSbFBVSkZSazlTUlY5QlZGUlNTVUpWVkVWZlZrRk1WVVY5Wld4elpTQnBaaWhqUFQwOVhDSXZYQ0o4ZkdNOVBUMWNJajVjSWlsN2RHaHBjeTVmWTJKekxtOXVZWFIwY21saVpXNWtLQ2s3ZEdocGN5NWZjM1JoZEdVOVFrVkdUMUpGWDBGVVZGSkpRbFZVUlY5T1FVMUZPM1JvYVhNdVgybHVaR1Y0TFMxOVpXeHpaU0JwWmlnaGQyaHBkR1Z6Y0dGalpTaGpLU2w3ZEdocGN5NWZZMkp6TG05dVlYUjBjbWxpWlc1a0tDazdkR2hwY3k1ZmMzUmhkR1U5U1U1ZlFWUlVVa2xDVlZSRlgwNUJUVVU3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNGZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WQmRIUnlhV0oxZEdWV1lXeDFaVDFtZFc1amRHbHZiaWhqS1h0cFppaGpQVDA5SjF3aUp5bDdkR2hwY3k1ZmMzUmhkR1U5U1U1ZlFWUlVVa2xDVlZSRlgxWkJURlZGWDBSUk8zUm9hWE11WDNObFkzUnBiMjVUZEdGeWREMTBhR2x6TGw5cGJtUmxlQ3N4ZldWc2MyVWdhV1lvWXowOVBWd2lKMXdpS1h0MGFHbHpMbDl6ZEdGMFpUMUpUbDlCVkZSU1NVSlZWRVZmVmtGTVZVVmZVMUU3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNEt6RjlaV3h6WlNCcFppZ2hkMmhwZEdWemNHRmpaU2hqS1NsN2RHaHBjeTVmYzNSaGRHVTlTVTVmUVZSVVVrbENWVlJGWDFaQlRGVkZYMDVSTzNSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZEQxMGFHbHpMbDlwYm1SbGVEdDBhR2x6TGw5cGJtUmxlQzB0ZlgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWSmJrRjBkSEpwWW5WMFpWWmhiSFZsUkc5MVlteGxVWFZ2ZEdWelBXWjFibU4wYVc5dUtHTXBlMmxtS0dNOVBUMG5YQ0luS1h0MGFHbHpMbDlsYldsMFZHOXJaVzRvWENKdmJtRjBkSEpwWW1SaGRHRmNJaWs3ZEdocGN5NWZZMkp6TG05dVlYUjBjbWxpWlc1a0tDazdkR2hwY3k1ZmMzUmhkR1U5UWtWR1QxSkZYMEZVVkZKSlFsVlVSVjlPUVUxRmZXVnNjMlVnYVdZb2RHaHBjeTVmWkdWamIyUmxSVzUwYVhScFpYTW1KbU05UFQxY0lpWmNJaWw3ZEdocGN5NWZaVzFwZEZSdmEyVnVLRndpYjI1aGRIUnlhV0prWVhSaFhDSXBPM1JvYVhNdVgySmhjMlZUZEdGMFpUMTBhR2x6TGw5emRHRjBaVHQwYUdsekxsOXpkR0YwWlQxQ1JVWlBVa1ZmUlU1VVNWUlpPM1JvYVhNdVgzTmxZM1JwYjI1VGRHRnlkRDEwYUdsekxsOXBibVJsZUgxOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM04wWVhSbFNXNUJkSFJ5YVdKMWRHVldZV3gxWlZOcGJtZHNaVkYxYjNSbGN6MW1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDlYQ0luWENJcGUzUm9hWE11WDJWdGFYUlViMnRsYmloY0ltOXVZWFIwY21saVpHRjBZVndpS1R0MGFHbHpMbDlqWW5NdWIyNWhkSFJ5YVdKbGJtUW9LVHQwYUdsekxsOXpkR0YwWlQxQ1JVWlBVa1ZmUVZSVVVrbENWVlJGWDA1QlRVVjlaV3h6WlNCcFppaDBhR2x6TGw5a1pXTnZaR1ZGYm5ScGRHbGxjeVltWXowOVBWd2lKbHdpS1h0MGFHbHpMbDlsYldsMFZHOXJaVzRvWENKdmJtRjBkSEpwWW1SaGRHRmNJaWs3ZEdocGN5NWZZbUZ6WlZOMFlYUmxQWFJvYVhNdVgzTjBZWFJsTzNSb2FYTXVYM04wWVhSbFBVSkZSazlTUlY5RlRsUkpWRms3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNGZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkpia0YwZEhKcFluVjBaVlpoYkhWbFRtOVJkVzkwWlhNOVpuVnVZM1JwYjI0b1l5bDdhV1lvZDJocGRHVnpjR0ZqWlNoaktYeDhZejA5UFZ3aVBsd2lLWHQwYUdsekxsOWxiV2wwVkc5clpXNG9YQ0p2Ym1GMGRISnBZbVJoZEdGY0lpazdkR2hwY3k1ZlkySnpMbTl1WVhSMGNtbGlaVzVrS0NrN2RHaHBjeTVmYzNSaGRHVTlRa1ZHVDFKRlgwRlVWRkpKUWxWVVJWOU9RVTFGTzNSb2FYTXVYMmx1WkdWNExTMTlaV3h6WlNCcFppaDBhR2x6TGw5a1pXTnZaR1ZGYm5ScGRHbGxjeVltWXowOVBWd2lKbHdpS1h0MGFHbHpMbDlsYldsMFZHOXJaVzRvWENKdmJtRjBkSEpwWW1SaGRHRmNJaWs3ZEdocGN5NWZZbUZ6WlZOMFlYUmxQWFJvYVhNdVgzTjBZWFJsTzNSb2FYTXVYM04wWVhSbFBVSkZSazlTUlY5RlRsUkpWRms3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNGZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WRVpXTnNZWEpoZEdsdmJqMW1kVzVqZEdsdmJpaGpLWHQwYUdsekxsOXpkR0YwWlQxalBUMDlYQ0piWENJL1FrVkdUMUpGWDBORVFWUkJYekU2WXowOVBWd2lMVndpUDBKRlJrOVNSVjlEVDAxTlJVNVVPa2xPWDBSRlEweEJVa0ZVU1U5T2ZUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbDl6ZEdGMFpVbHVSR1ZqYkdGeVlYUnBiMjQ5Wm5WdVkzUnBiMjRvWXlsN2FXWW9ZejA5UFZ3aVBsd2lLWHQwYUdsekxsOWpZbk11YjI1a1pXTnNZWEpoZEdsdmJpaDBhR2x6TGw5blpYUlRaV04wYVc5dUtDa3BPM1JvYVhNdVgzTjBZWFJsUFZSRldGUTdkR2hwY3k1ZmMyVmpkR2x2YmxOMFlYSjBQWFJvYVhNdVgybHVaR1Y0S3pGOWZUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbDl6ZEdGMFpVbHVVSEp2WTJWemMybHVaMGx1YzNSeWRXTjBhVzl1UFdaMWJtTjBhVzl1S0dNcGUybG1LR005UFQxY0lqNWNJaWw3ZEdocGN5NWZZMkp6TG05dWNISnZZMlZ6YzJsdVoybHVjM1J5ZFdOMGFXOXVLSFJvYVhNdVgyZGxkRk5sWTNScGIyNG9LU2s3ZEdocGN5NWZjM1JoZEdVOVZFVllWRHQwYUdsekxsOXpaV04wYVc5dVUzUmhjblE5ZEdocGN5NWZhVzVrWlhnck1YMTlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNOMFlYUmxRbVZtYjNKbFEyOXRiV1Z1ZEQxbWRXNWpkR2x2YmloaktYdHBaaWhqUFQwOVhDSXRYQ0lwZTNSb2FYTXVYM04wWVhSbFBVbE9YME5QVFUxRlRsUTdkR2hwY3k1ZmMyVmpkR2x2YmxOMFlYSjBQWFJvYVhNdVgybHVaR1Y0S3pGOVpXeHpaWHQwYUdsekxsOXpkR0YwWlQxSlRsOUVSVU5NUVZKQlZFbFBUbjE5TzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsU1c1RGIyMXRaVzUwUFdaMWJtTjBhVzl1S0dNcGUybG1LR005UFQxY0lpMWNJaWwwYUdsekxsOXpkR0YwWlQxQlJsUkZVbDlEVDAxTlJVNVVYekY5TzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsUVdaMFpYSkRiMjF0Wlc1ME1UMW1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDlYQ0l0WENJcGUzUm9hWE11WDNOMFlYUmxQVUZHVkVWU1gwTlBUVTFGVGxSZk1uMWxiSE5sZTNSb2FYTXVYM04wWVhSbFBVbE9YME5QVFUxRlRsUjlmVHRVYjJ0bGJtbDZaWEl1Y0hKdmRHOTBlWEJsTGw5emRHRjBaVUZtZEdWeVEyOXRiV1Z1ZERJOVpuVnVZM1JwYjI0b1l5bDdhV1lvWXowOVBWd2lQbHdpS1h0MGFHbHpMbDlqWW5NdWIyNWpiMjF0Wlc1MEtIUm9hWE11WDJKMVptWmxjaTV6ZFdKemRISnBibWNvZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowTEhSb2FYTXVYMmx1WkdWNExUSXBLVHQwYUdsekxsOXpkR0YwWlQxVVJWaFVPM1JvYVhNdVgzTmxZM1JwYjI1VGRHRnlkRDEwYUdsekxsOXBibVJsZUNzeGZXVnNjMlVnYVdZb1l5RTlQVndpTFZ3aUtYdDBhR2x6TGw5emRHRjBaVDFKVGw5RFQwMU5SVTVVZlgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZEWkdGMFlURTlhV1pGYkhObFUzUmhkR1VvWENKRFhDSXNRa1ZHVDFKRlgwTkVRVlJCWHpJc1NVNWZSRVZEVEVGU1FWUkpUMDRwTzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsUW1WbWIzSmxRMlJoZEdFeVBXbG1SV3h6WlZOMFlYUmxLRndpUkZ3aUxFSkZSazlTUlY5RFJFRlVRVjh6TEVsT1gwUkZRMHhCVWtGVVNVOU9LVHRVYjJ0bGJtbDZaWEl1Y0hKdmRHOTBlWEJsTGw5emRHRjBaVUpsWm05eVpVTmtZWFJoTXoxcFprVnNjMlZUZEdGMFpTaGNJa0ZjSWl4Q1JVWlBVa1ZmUTBSQlZFRmZOQ3hKVGw5RVJVTk1RVkpCVkVsUFRpazdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WRFpHRjBZVFE5YVdaRmJITmxVM1JoZEdVb1hDSlVYQ0lzUWtWR1QxSkZYME5FUVZSQlh6VXNTVTVmUkVWRFRFRlNRVlJKVDA0cE8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM04wWVhSbFFtVm1iM0psUTJSaGRHRTFQV2xtUld4elpWTjBZWFJsS0Z3aVFWd2lMRUpGUms5U1JWOURSRUZVUVY4MkxFbE9YMFJGUTB4QlVrRlVTVTlPS1R0VWIydGxibWw2WlhJdWNISnZkRzkwZVhCbExsOXpkR0YwWlVKbFptOXlaVU5rWVhSaE5qMW1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDlYQ0piWENJcGUzUm9hWE11WDNOMFlYUmxQVWxPWDBORVFWUkJPM1JvYVhNdVgzTmxZM1JwYjI1VGRHRnlkRDEwYUdsekxsOXBibVJsZUNzeGZXVnNjMlY3ZEdocGN5NWZjM1JoZEdVOVNVNWZSRVZEVEVGU1FWUkpUMDQ3ZEdocGN5NWZhVzVrWlhndExYMTlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNOMFlYUmxTVzVEWkdGMFlUMW1kVzVqZEdsdmJpaGpLWHRwWmloalBUMDlYQ0pkWENJcGRHaHBjeTVmYzNSaGRHVTlRVVpVUlZKZlEwUkJWRUZmTVgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQlpuUmxja05rWVhSaE1UMWphR0Z5WVdOMFpYSlRkR0YwWlNoY0lsMWNJaXhCUmxSRlVsOURSRUZVUVY4eUtUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbDl6ZEdGMFpVRm1kR1Z5UTJSaGRHRXlQV1oxYm1OMGFXOXVLR01wZTJsbUtHTTlQVDFjSWo1Y0lpbDdkR2hwY3k1ZlkySnpMbTl1WTJSaGRHRW9kR2hwY3k1ZlluVm1abVZ5TG5OMVluTjBjbWx1WnloMGFHbHpMbDl6WldOMGFXOXVVM1JoY25Rc2RHaHBjeTVmYVc1a1pYZ3RNaWtwTzNSb2FYTXVYM04wWVhSbFBWUkZXRlE3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFhSb2FYTXVYMmx1WkdWNEt6RjlaV3h6WlNCcFppaGpJVDA5WENKZFhDSXBlM1JvYVhNdVgzTjBZWFJsUFVsT1gwTkVRVlJCZlgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZUY0dWamFXRnNQV1oxYm1OMGFXOXVLR01wZTJsbUtHTTlQVDFjSW1OY0lueDhZejA5UFZ3aVExd2lLWHQwYUdsekxsOXpkR0YwWlQxQ1JVWlBVa1ZmVTBOU1NWQlVYekY5Wld4elpTQnBaaWhqUFQwOVhDSjBYQ0o4ZkdNOVBUMWNJbFJjSWlsN2RHaHBjeTVmYzNSaGRHVTlRa1ZHVDFKRlgxTlVXVXhGWHpGOVpXeHpaWHQwYUdsekxsOXpkR0YwWlQxSlRsOVVRVWRmVGtGTlJUdDBhR2x6TGw5cGJtUmxlQzB0ZlgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZUY0dWamFXRnNSVzVrUFdaMWJtTjBhVzl1S0dNcGUybG1LSFJvYVhNdVgzTndaV05wWVd3OVBUMVRVRVZEU1VGTVgxTkRVa2xRVkNZbUtHTTlQVDFjSW1OY0lueDhZejA5UFZ3aVExd2lLU2w3ZEdocGN5NWZjM1JoZEdVOVFVWlVSVkpmVTBOU1NWQlVYekY5Wld4elpTQnBaaWgwYUdsekxsOXpjR1ZqYVdGc1BUMDlVMUJGUTBsQlRGOVRWRmxNUlNZbUtHTTlQVDFjSW5SY0lueDhZejA5UFZ3aVZGd2lLU2w3ZEdocGN5NWZjM1JoZEdVOVFVWlVSVkpmVTFSWlRFVmZNWDFsYkhObElIUm9hWE11WDNOMFlYUmxQVlJGV0ZSOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM04wWVhSbFFtVm1iM0psVTJOeWFYQjBNVDFqYjI1emRXMWxVM0JsWTJsaGJFNWhiV1ZEYUdGeUtGd2lVbHdpTEVKRlJrOVNSVjlUUTFKSlVGUmZNaWs3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZDWldadmNtVlRZM0pwY0hReVBXTnZibk4xYldWVGNHVmphV0ZzVG1GdFpVTm9ZWElvWENKSlhDSXNRa1ZHVDFKRlgxTkRVa2xRVkY4ektUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbDl6ZEdGMFpVSmxabTl5WlZOamNtbHdkRE05WTI5dWMzVnRaVk53WldOcFlXeE9ZVzFsUTJoaGNpaGNJbEJjSWl4Q1JVWlBVa1ZmVTBOU1NWQlVYelFwTzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsUW1WbWIzSmxVMk55YVhCME5EMWpiMjV6ZFcxbFUzQmxZMmxoYkU1aGJXVkRhR0Z5S0Z3aVZGd2lMRUpGUms5U1JWOVRRMUpKVUZSZk5TazdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WVFkzSnBjSFExUFdaMWJtTjBhVzl1S0dNcGUybG1LR005UFQxY0lpOWNJbng4WXowOVBWd2lQbHdpZkh4M2FHbDBaWE53WVdObEtHTXBLWHQwYUdsekxsOXpjR1ZqYVdGc1BWTlFSVU5KUVV4ZlUwTlNTVkJVZlhSb2FYTXVYM04wWVhSbFBVbE9YMVJCUjE5T1FVMUZPM1JvYVhNdVgybHVaR1Y0TFMxOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM04wWVhSbFFXWjBaWEpUWTNKcGNIUXhQV2xtUld4elpWTjBZWFJsS0Z3aVVsd2lMRUZHVkVWU1gxTkRVa2xRVkY4eUxGUkZXRlFwTzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsUVdaMFpYSlRZM0pwY0hReVBXbG1SV3h6WlZOMFlYUmxLRndpU1Z3aUxFRkdWRVZTWDFORFVrbFFWRjh6TEZSRldGUXBPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNOMFlYUmxRV1owWlhKVFkzSnBjSFF6UFdsbVJXeHpaVk4wWVhSbEtGd2lVRndpTEVGR1ZFVlNYMU5EVWtsUVZGODBMRlJGV0ZRcE8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM04wWVhSbFFXWjBaWEpUWTNKcGNIUTBQV2xtUld4elpWTjBZWFJsS0Z3aVZGd2lMRUZHVkVWU1gxTkRVa2xRVkY4MUxGUkZXRlFwTzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsUVdaMFpYSlRZM0pwY0hRMVBXWjFibU4wYVc5dUtHTXBlMmxtS0dNOVBUMWNJajVjSW54OGQyaHBkR1Z6Y0dGalpTaGpLU2w3ZEdocGN5NWZjM0JsWTJsaGJEMVRVRVZEU1VGTVgwNVBUa1U3ZEdocGN5NWZjM1JoZEdVOVNVNWZRMHhQVTBsT1IxOVVRVWRmVGtGTlJUdDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUTlkR2hwY3k1ZmFXNWtaWGd0Tmp0MGFHbHpMbDlwYm1SbGVDMHRmV1ZzYzJVZ2RHaHBjeTVmYzNSaGRHVTlWRVZZVkgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZUZEhsc1pURTlZMjl1YzNWdFpWTndaV05wWVd4T1lXMWxRMmhoY2loY0lsbGNJaXhDUlVaUFVrVmZVMVJaVEVWZk1pazdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkNaV1p2Y21WVGRIbHNaVEk5WTI5dWMzVnRaVk53WldOcFlXeE9ZVzFsUTJoaGNpaGNJa3hjSWl4Q1JVWlBVa1ZmVTFSWlRFVmZNeWs3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZDWldadmNtVlRkSGxzWlRNOVkyOXVjM1Z0WlZOd1pXTnBZV3hPWVcxbFEyaGhjaWhjSWtWY0lpeENSVVpQVWtWZlUxUlpURVZmTkNrN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZUZEhsc1pUUTlablZ1WTNScGIyNG9ZeWw3YVdZb1l6MDlQVndpTDF3aWZIeGpQVDA5WENJK1hDSjhmSGRvYVhSbGMzQmhZMlVvWXlrcGUzUm9hWE11WDNOd1pXTnBZV3c5VTFCRlEwbEJURjlUVkZsTVJYMTBhR2x6TGw5emRHRjBaVDFKVGw5VVFVZGZUa0ZOUlR0MGFHbHpMbDlwYm1SbGVDMHRmVHRVYjJ0bGJtbDZaWEl1Y0hKdmRHOTBlWEJsTGw5emRHRjBaVUZtZEdWeVUzUjViR1V4UFdsbVJXeHpaVk4wWVhSbEtGd2lXVndpTEVGR1ZFVlNYMU5VV1V4Rlh6SXNWRVZZVkNrN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQlpuUmxjbE4wZVd4bE1qMXBaa1ZzYzJWVGRHRjBaU2hjSWt4Y0lpeEJSbFJGVWw5VFZGbE1SVjh6TEZSRldGUXBPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNOMFlYUmxRV1owWlhKVGRIbHNaVE05YVdaRmJITmxVM1JoZEdVb1hDSkZYQ0lzUVVaVVJWSmZVMVJaVEVWZk5DeFVSVmhVS1R0VWIydGxibWw2WlhJdWNISnZkRzkwZVhCbExsOXpkR0YwWlVGbWRHVnlVM1I1YkdVMFBXWjFibU4wYVc5dUtHTXBlMmxtS0dNOVBUMWNJajVjSW54OGQyaHBkR1Z6Y0dGalpTaGpLU2w3ZEdocGN5NWZjM0JsWTJsaGJEMVRVRVZEU1VGTVgwNVBUa1U3ZEdocGN5NWZjM1JoZEdVOVNVNWZRMHhQVTBsT1IxOVVRVWRmVGtGTlJUdDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUTlkR2hwY3k1ZmFXNWtaWGd0TlR0MGFHbHpMbDlwYm1SbGVDMHRmV1ZzYzJVZ2RHaHBjeTVmYzNSaGRHVTlWRVZZVkgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjM1JoZEdWQ1pXWnZjbVZGYm5ScGRIazlhV1pGYkhObFUzUmhkR1VvWENJalhDSXNRa1ZHVDFKRlgwNVZUVVZTU1VOZlJVNVVTVlJaTEVsT1gwNUJUVVZFWDBWT1ZFbFVXU2s3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZmMzUmhkR1ZDWldadmNtVk9kVzFsY21salJXNTBhWFI1UFdsbVJXeHpaVk4wWVhSbEtGd2lXRndpTEVsT1gwaEZXRjlGVGxSSlZGa3NTVTVmVGxWTlJWSkpRMTlGVGxSSlZGa3BPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDNCaGNuTmxUbUZ0WldSRmJuUnBkSGxUZEhKcFkzUTlablZ1WTNScGIyNG9LWHRwWmloMGFHbHpMbDl6WldOMGFXOXVVM1JoY25Rck1UeDBhR2x6TGw5cGJtUmxlQ2w3ZG1GeUlHVnVkR2wwZVQxMGFHbHpMbDlpZFdabVpYSXVjM1ZpYzNSeWFXNW5LSFJvYVhNdVgzTmxZM1JwYjI1VGRHRnlkQ3N4TEhSb2FYTXVYMmx1WkdWNEtTeHRZWEE5ZEdocGN5NWZlRzFzVFc5a1pUOTRiV3hOWVhBNlpXNTBhWFI1VFdGd08ybG1LRzFoY0M1b1lYTlBkMjVRY205d1pYSjBlU2hsYm5ScGRIa3BLWHQwYUdsekxsOWxiV2wwVUdGeWRHbGhiQ2h0WVhCYlpXNTBhWFI1WFNrN2RHaHBjeTVmYzJWamRHbHZibE4wWVhKMFBYUm9hWE11WDJsdVpHVjRLekY5ZlgwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNWZjR0Z5YzJWTVpXZGhZM2xGYm5ScGRIazlablZ1WTNScGIyNG9LWHQyWVhJZ2MzUmhjblE5ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowS3pFc2JHbHRhWFE5ZEdocGN5NWZhVzVrWlhndGMzUmhjblE3YVdZb2JHbHRhWFErTmlsc2FXMXBkRDAyTzNkb2FXeGxLR3hwYldsMFBqMHlLWHQyWVhJZ1pXNTBhWFI1UFhSb2FYTXVYMkoxWm1abGNpNXpkV0p6ZEhJb2MzUmhjblFzYkdsdGFYUXBPMmxtS0d4bFoyRmplVTFoY0M1b1lYTlBkMjVRY205d1pYSjBlU2hsYm5ScGRIa3BLWHQwYUdsekxsOWxiV2wwVUdGeWRHbGhiQ2hzWldkaFkzbE5ZWEJiWlc1MGFYUjVYU2s3ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowS3oxc2FXMXBkQ3N4TzNKbGRIVnlibjFsYkhObGUyeHBiV2wwTFMxOWZYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkpiazVoYldWa1JXNTBhWFI1UFdaMWJtTjBhVzl1S0dNcGUybG1LR005UFQxY0lqdGNJaWw3ZEdocGN5NWZjR0Z5YzJWT1lXMWxaRVZ1ZEdsMGVWTjBjbWxqZENncE8ybG1LSFJvYVhNdVgzTmxZM1JwYjI1VGRHRnlkQ3N4UEhSb2FYTXVYMmx1WkdWNEppWWhkR2hwY3k1ZmVHMXNUVzlrWlNsN2RHaHBjeTVmY0dGeWMyVk1aV2RoWTNsRmJuUnBkSGtvS1gxMGFHbHpMbDl6ZEdGMFpUMTBhR2x6TGw5aVlYTmxVM1JoZEdWOVpXeHpaU0JwWmlnb1l6eGNJbUZjSW54OFl6NWNJbnBjSWlrbUppaGpQRndpUVZ3aWZIeGpQbHdpV2x3aUtTWW1LR004WENJd1hDSjhmR00rWENJNVhDSXBLWHRwWmloMGFHbHpMbDk0Yld4TmIyUmxLVHRsYkhObElHbG1LSFJvYVhNdVgzTmxZM1JwYjI1VGRHRnlkQ3N4UFQwOWRHaHBjeTVmYVc1a1pYZ3BPMlZzYzJVZ2FXWW9kR2hwY3k1ZlltRnpaVk4wWVhSbElUMDlWRVZZVkNsN2FXWW9ZeUU5UFZ3aVBWd2lLWHQwYUdsekxsOXdZWEp6WlU1aGJXVmtSVzUwYVhSNVUzUnlhV04wS0NsOWZXVnNjMlY3ZEdocGN5NWZjR0Z5YzJWTVpXZGhZM2xGYm5ScGRIa29LWDEwYUdsekxsOXpkR0YwWlQxMGFHbHpMbDlpWVhObFUzUmhkR1U3ZEdocGN5NWZhVzVrWlhndExYMTlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDJSbFkyOWtaVTUxYldWeWFXTkZiblJwZEhrOVpuVnVZM1JwYjI0b2IyWm1jMlYwTEdKaGMyVXBlM1poY2lCelpXTjBhVzl1VTNSaGNuUTlkR2hwY3k1ZmMyVmpkR2x2YmxOMFlYSjBLMjltWm5ObGREdHBaaWh6WldOMGFXOXVVM1JoY25RaFBUMTBhR2x6TGw5cGJtUmxlQ2w3ZG1GeUlHVnVkR2wwZVQxMGFHbHpMbDlpZFdabVpYSXVjM1ZpYzNSeWFXNW5LSE5sWTNScGIyNVRkR0Z5ZEN4MGFHbHpMbDlwYm1SbGVDazdkbUZ5SUhCaGNuTmxaRDF3WVhKelpVbHVkQ2hsYm5ScGRIa3NZbUZ6WlNrN2RHaHBjeTVmWlcxcGRGQmhjblJwWVd3b1pHVmpiMlJsUTI5a1pWQnZhVzUwS0hCaGNuTmxaQ2twTzNSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZEQxMGFHbHpMbDlwYm1SbGVIMWxiSE5sZTNSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZEMwdGZYUm9hWE11WDNOMFlYUmxQWFJvYVhNdVgySmhjMlZUZEdGMFpYMDdWRzlyWlc1cGVtVnlMbkJ5YjNSdmRIbHdaUzVmYzNSaGRHVkpiazUxYldWeWFXTkZiblJwZEhrOVpuVnVZM1JwYjI0b1l5bDdhV1lvWXowOVBWd2lPMXdpS1h0MGFHbHpMbDlrWldOdlpHVk9kVzFsY21salJXNTBhWFI1S0RJc01UQXBPM1JvYVhNdVgzTmxZM1JwYjI1VGRHRnlkQ3NyZldWc2MyVWdhV1lvWXp4Y0lqQmNJbng4WXo1Y0lqbGNJaWw3YVdZb0lYUm9hWE11WDNodGJFMXZaR1VwZTNSb2FYTXVYMlJsWTI5a1pVNTFiV1Z5YVdORmJuUnBkSGtvTWl3eE1DbDlaV3h6Wlh0MGFHbHpMbDl6ZEdGMFpUMTBhR2x6TGw5aVlYTmxVM1JoZEdWOWRHaHBjeTVmYVc1a1pYZ3RMWDE5TzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgzTjBZWFJsU1c1SVpYaEZiblJwZEhrOVpuVnVZM1JwYjI0b1l5bDdhV1lvWXowOVBWd2lPMXdpS1h0MGFHbHpMbDlrWldOdlpHVk9kVzFsY21salJXNTBhWFI1S0RNc01UWXBPM1JvYVhNdVgzTmxZM1JwYjI1VGRHRnlkQ3NyZldWc2MyVWdhV1lvS0dNOFhDSmhYQ0o4ZkdNK1hDSm1YQ0lwSmlZb1l6eGNJa0ZjSW54OFl6NWNJa1pjSWlrbUppaGpQRndpTUZ3aWZIeGpQbHdpT1Z3aUtTbDdhV1lvSVhSb2FYTXVYM2h0YkUxdlpHVXBlM1JvYVhNdVgyUmxZMjlrWlU1MWJXVnlhV05GYm5ScGRIa29NeXd4TmlsOVpXeHpaWHQwYUdsekxsOXpkR0YwWlQxMGFHbHpMbDlpWVhObFUzUmhkR1Y5ZEdocGN5NWZhVzVrWlhndExYMTlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDJOc1pXRnVkWEE5Wm5WdVkzUnBiMjRvS1h0cFppaDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUThNQ2w3ZEdocGN5NWZZblZtWm1WeVBWd2lYQ0k3ZEdocGN5NWZhVzVrWlhnOU1EdDBhR2x6TGw5aWRXWm1aWEpQWm1aelpYUXJQWFJvYVhNdVgybHVaR1Y0ZldWc2MyVWdhV1lvZEdocGN5NWZjblZ1Ym1sdVp5bDdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMVVSVmhVS1h0cFppaDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUWhQVDEwYUdsekxsOXBibVJsZUNsN2RHaHBjeTVmWTJKekxtOXVkR1Y0ZENoMGFHbHpMbDlpZFdabVpYSXVjM1ZpYzNSeUtIUm9hWE11WDNObFkzUnBiMjVUZEdGeWRDa3BmWFJvYVhNdVgySjFabVpsY2oxY0lsd2lPM1JvYVhNdVgySjFabVpsY2s5bVpuTmxkQ3M5ZEdocGN5NWZhVzVrWlhnN2RHaHBjeTVmYVc1a1pYZzlNSDFsYkhObElHbG1LSFJvYVhNdVgzTmxZM1JwYjI1VGRHRnlkRDA5UFhSb2FYTXVYMmx1WkdWNEtYdDBhR2x6TGw5aWRXWm1aWEk5WENKY0lqdDBhR2x6TGw5aWRXWm1aWEpQWm1aelpYUXJQWFJvYVhNdVgybHVaR1Y0TzNSb2FYTXVYMmx1WkdWNFBUQjlaV3h6Wlh0MGFHbHpMbDlpZFdabVpYSTlkR2hwY3k1ZlluVm1abVZ5TG5OMVluTjBjaWgwYUdsekxsOXpaV04wYVc5dVUzUmhjblFwTzNSb2FYTXVYMmx1WkdWNExUMTBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUTdkR2hwY3k1ZlluVm1abVZ5VDJabWMyVjBLejEwYUdsekxsOXpaV04wYVc5dVUzUmhjblI5ZEdocGN5NWZjMlZqZEdsdmJsTjBZWEowUFRCOWZUdFViMnRsYm1sNlpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHTm9kVzVyS1h0cFppaDBhR2x6TGw5bGJtUmxaQ2wwYUdsekxsOWpZbk11YjI1bGNuSnZjaWhGY25KdmNpaGNJaTUzY21sMFpTZ3BJR0ZtZEdWeUlHUnZibVVoWENJcEtUdDBhR2x6TGw5aWRXWm1aWElyUFdOb2RXNXJPM1JvYVhNdVgzQmhjbk5sS0NsOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYM0JoY25ObFBXWjFibU4wYVc5dUtDbDdkMmhwYkdVb2RHaHBjeTVmYVc1a1pYZzhkR2hwY3k1ZlluVm1abVZ5TG14bGJtZDBhQ1ltZEdocGN5NWZjblZ1Ym1sdVp5bDdkbUZ5SUdNOWRHaHBjeTVmWW5WbVptVnlMbU5vWVhKQmRDaDBhR2x6TGw5cGJtUmxlQ2s3YVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFVUlZoVUtYdDBhR2x6TGw5emRHRjBaVlJsZUhRb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVKRlJrOVNSVjlVUVVkZlRrRk5SU2w3ZEdocGN5NWZjM1JoZEdWQ1pXWnZjbVZVWVdkT1lXMWxLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUpUbDlVUVVkZlRrRk5SU2w3ZEdocGN5NWZjM1JoZEdWSmJsUmhaMDVoYldVb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVKRlJrOVNSVjlEVEU5VFNVNUhYMVJCUjE5T1FVMUZLWHQwYUdsekxsOXpkR0YwWlVKbFptOXlaVU5zYjNObGFXNW5WR0ZuVG1GdFpTaGpLWDFsYkhObElHbG1LSFJvYVhNdVgzTjBZWFJsUFQwOVNVNWZRMHhQVTBsT1IxOVVRVWRmVGtGTlJTbDdkR2hwY3k1ZmMzUmhkR1ZKYmtOc2IzTmxhVzVuVkdGblRtRnRaU2hqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlRVVpVUlZKZlEweFBVMGxPUjE5VVFVZGZUa0ZOUlNsN2RHaHBjeTVmYzNSaGRHVkJablJsY2tOc2IzTmxhVzVuVkdGblRtRnRaU2hqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlTVTVmVTBWTVJsOURURTlUU1U1SFgxUkJSeWw3ZEdocGN5NWZjM1JoZEdWSmJsTmxiR1pEYkc5emFXNW5WR0ZuS0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFDUlVaUFVrVmZRVlJVVWtsQ1ZWUkZYMDVCVFVVcGUzUm9hWE11WDNOMFlYUmxRbVZtYjNKbFFYUjBjbWxpZFhSbFRtRnRaU2hqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlTVTVmUVZSVVVrbENWVlJGWDA1QlRVVXBlM1JvYVhNdVgzTjBZWFJsU1c1QmRIUnlhV0oxZEdWT1lXMWxLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUJSbFJGVWw5QlZGUlNTVUpWVkVWZlRrRk5SU2w3ZEdocGN5NWZjM1JoZEdWQlpuUmxja0YwZEhKcFluVjBaVTVoYldVb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVKRlJrOVNSVjlCVkZSU1NVSlZWRVZmVmtGTVZVVXBlM1JvYVhNdVgzTjBZWFJsUW1WbWIzSmxRWFIwY21saWRYUmxWbUZzZFdVb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVsT1gwRlVWRkpKUWxWVVJWOVdRVXhWUlY5RVVTbDdkR2hwY3k1ZmMzUmhkR1ZKYmtGMGRISnBZblYwWlZaaGJIVmxSRzkxWW14bFVYVnZkR1Z6S0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFKVGw5QlZGUlNTVUpWVkVWZlZrRk1WVVZmVTFFcGUzUm9hWE11WDNOMFlYUmxTVzVCZEhSeWFXSjFkR1ZXWVd4MVpWTnBibWRzWlZGMWIzUmxjeWhqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlTVTVmUVZSVVVrbENWVlJGWDFaQlRGVkZYMDVSS1h0MGFHbHpMbDl6ZEdGMFpVbHVRWFIwY21saWRYUmxWbUZzZFdWT2IxRjFiM1JsY3loaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UWtWR1QxSkZYMFJGUTB4QlVrRlVTVTlPS1h0MGFHbHpMbDl6ZEdGMFpVSmxabTl5WlVSbFkyeGhjbUYwYVc5dUtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxSlRsOUVSVU5NUVZKQlZFbFBUaWw3ZEdocGN5NWZjM1JoZEdWSmJrUmxZMnhoY21GMGFXOXVLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUpUbDlRVWs5RFJWTlRTVTVIWDBsT1UxUlNWVU5VU1U5T0tYdDBhR2x6TGw5emRHRjBaVWx1VUhKdlkyVnpjMmx1WjBsdWMzUnlkV04wYVc5dUtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxQ1JVWlBVa1ZmUTA5TlRVVk9WQ2w3ZEdocGN5NWZjM1JoZEdWQ1pXWnZjbVZEYjIxdFpXNTBLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUpUbDlEVDAxTlJVNVVLWHQwYUdsekxsOXpkR0YwWlVsdVEyOXRiV1Z1ZENoaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UVVaVVJWSmZRMDlOVFVWT1ZGOHhLWHQwYUdsekxsOXpkR0YwWlVGbWRHVnlRMjl0YldWdWRERW9ZeWw5Wld4elpTQnBaaWgwYUdsekxsOXpkR0YwWlQwOVBVRkdWRVZTWDBOUFRVMUZUbFJmTWlsN2RHaHBjeTVmYzNSaGRHVkJablJsY2tOdmJXMWxiblF5S0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFDUlVaUFVrVmZRMFJCVkVGZk1TbDdkR2hwY3k1ZmMzUmhkR1ZDWldadmNtVkRaR0YwWVRFb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVKRlJrOVNSVjlEUkVGVVFWOHlLWHQwYUdsekxsOXpkR0YwWlVKbFptOXlaVU5rWVhSaE1paGpLWDFsYkhObElHbG1LSFJvYVhNdVgzTjBZWFJsUFQwOVFrVkdUMUpGWDBORVFWUkJYek1wZTNSb2FYTXVYM04wWVhSbFFtVm1iM0psUTJSaGRHRXpLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUNSVVpQVWtWZlEwUkJWRUZmTkNsN2RHaHBjeTVmYzNSaGRHVkNaV1p2Y21WRFpHRjBZVFFvWXlsOVpXeHpaU0JwWmloMGFHbHpMbDl6ZEdGMFpUMDlQVUpGUms5U1JWOURSRUZVUVY4MUtYdDBhR2x6TGw5emRHRjBaVUpsWm05eVpVTmtZWFJoTlNoaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UWtWR1QxSkZYME5FUVZSQlh6WXBlM1JvYVhNdVgzTjBZWFJsUW1WbWIzSmxRMlJoZEdFMktHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxSlRsOURSRUZVUVNsN2RHaHBjeTVmYzNSaGRHVkpia05rWVhSaEtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxQlJsUkZVbDlEUkVGVVFWOHhLWHQwYUdsekxsOXpkR0YwWlVGbWRHVnlRMlJoZEdFeEtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxQlJsUkZVbDlEUkVGVVFWOHlLWHQwYUdsekxsOXpkR0YwWlVGbWRHVnlRMlJoZEdFeUtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxQ1JVWlBVa1ZmVTFCRlEwbEJUQ2w3ZEdocGN5NWZjM1JoZEdWQ1pXWnZjbVZUY0dWamFXRnNLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUNSVVpQVWtWZlUxQkZRMGxCVEY5RlRrUXBlM1JvYVhNdVgzTjBZWFJsUW1WbWIzSmxVM0JsWTJsaGJFVnVaQ2hqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlRa1ZHVDFKRlgxTkRVa2xRVkY4eEtYdDBhR2x6TGw5emRHRjBaVUpsWm05eVpWTmpjbWx3ZERFb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVKRlJrOVNSVjlUUTFKSlVGUmZNaWw3ZEdocGN5NWZjM1JoZEdWQ1pXWnZjbVZUWTNKcGNIUXlLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUNSVVpQVWtWZlUwTlNTVkJVWHpNcGUzUm9hWE11WDNOMFlYUmxRbVZtYjNKbFUyTnlhWEIwTXloaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UWtWR1QxSkZYMU5EVWtsUVZGODBLWHQwYUdsekxsOXpkR0YwWlVKbFptOXlaVk5qY21sd2REUW9ZeWw5Wld4elpTQnBaaWgwYUdsekxsOXpkR0YwWlQwOVBVSkZSazlTUlY5VFExSkpVRlJmTlNsN2RHaHBjeTVmYzNSaGRHVkNaV1p2Y21WVFkzSnBjSFExS0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFCUmxSRlVsOVRRMUpKVUZSZk1TbDdkR2hwY3k1ZmMzUmhkR1ZCWm5SbGNsTmpjbWx3ZERFb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVGR1ZFVlNYMU5EVWtsUVZGOHlLWHQwYUdsekxsOXpkR0YwWlVGbWRHVnlVMk55YVhCME1paGpLWDFsYkhObElHbG1LSFJvYVhNdVgzTjBZWFJsUFQwOVFVWlVSVkpmVTBOU1NWQlVYek1wZTNSb2FYTXVYM04wWVhSbFFXWjBaWEpUWTNKcGNIUXpLR01wZldWc2MyVWdhV1lvZEdocGN5NWZjM1JoZEdVOVBUMUJSbFJGVWw5VFExSkpVRlJmTkNsN2RHaHBjeTVmYzNSaGRHVkJablJsY2xOamNtbHdkRFFvWXlsOVpXeHpaU0JwWmloMGFHbHpMbDl6ZEdGMFpUMDlQVUZHVkVWU1gxTkRVa2xRVkY4MUtYdDBhR2x6TGw5emRHRjBaVUZtZEdWeVUyTnlhWEIwTlNoaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UWtWR1QxSkZYMU5VV1V4Rlh6RXBlM1JvYVhNdVgzTjBZWFJsUW1WbWIzSmxVM1I1YkdVeEtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxQ1JVWlBVa1ZmVTFSWlRFVmZNaWw3ZEdocGN5NWZjM1JoZEdWQ1pXWnZjbVZUZEhsc1pUSW9ZeWw5Wld4elpTQnBaaWgwYUdsekxsOXpkR0YwWlQwOVBVSkZSazlTUlY5VFZGbE1SVjh6S1h0MGFHbHpMbDl6ZEdGMFpVSmxabTl5WlZOMGVXeGxNeWhqS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlRa1ZHVDFKRlgxTlVXVXhGWHpRcGUzUm9hWE11WDNOMFlYUmxRbVZtYjNKbFUzUjViR1UwS0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFCUmxSRlVsOVRWRmxNUlY4eEtYdDBhR2x6TGw5emRHRjBaVUZtZEdWeVUzUjViR1V4S0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFCUmxSRlVsOVRWRmxNUlY4eUtYdDBhR2x6TGw5emRHRjBaVUZtZEdWeVUzUjViR1V5S0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFCUmxSRlVsOVRWRmxNUlY4ektYdDBhR2x6TGw5emRHRjBaVUZtZEdWeVUzUjViR1V6S0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFCUmxSRlVsOVRWRmxNUlY4MEtYdDBhR2x6TGw5emRHRjBaVUZtZEdWeVUzUjViR1UwS0dNcGZXVnNjMlVnYVdZb2RHaHBjeTVmYzNSaGRHVTlQVDFDUlVaUFVrVmZSVTVVU1ZSWktYdDBhR2x6TGw5emRHRjBaVUpsWm05eVpVVnVkR2wwZVNoaktYMWxiSE5sSUdsbUtIUm9hWE11WDNOMFlYUmxQVDA5UWtWR1QxSkZYMDVWVFVWU1NVTmZSVTVVU1ZSWktYdDBhR2x6TGw5emRHRjBaVUpsWm05eVpVNTFiV1Z5YVdORmJuUnBkSGtvWXlsOVpXeHpaU0JwWmloMGFHbHpMbDl6ZEdGMFpUMDlQVWxPWDA1QlRVVkVYMFZPVkVsVVdTbDdkR2hwY3k1ZmMzUmhkR1ZKYms1aGJXVmtSVzUwYVhSNUtHTXBmV1ZzYzJVZ2FXWW9kR2hwY3k1ZmMzUmhkR1U5UFQxSlRsOU9WVTFGVWtsRFgwVk9WRWxVV1NsN2RHaHBjeTVmYzNSaGRHVkpiazUxYldWeWFXTkZiblJwZEhrb1l5bDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVsT1gwaEZXRjlGVGxSSlZGa3BlM1JvYVhNdVgzTjBZWFJsU1c1SVpYaEZiblJwZEhrb1l5bDlaV3h6Wlh0MGFHbHpMbDlqWW5NdWIyNWxjbkp2Y2loRmNuSnZjaWhjSW5WdWEyNXZkMjRnWDNOMFlYUmxYQ0lwTEhSb2FYTXVYM04wWVhSbEtYMTBhR2x6TGw5cGJtUmxlQ3NyZlhSb2FYTXVYMk5zWldGdWRYQW9LWDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1d1lYVnpaVDFtZFc1amRHbHZiaWdwZTNSb2FYTXVYM0oxYm01cGJtYzlabUZzYzJWOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVjbVZ6ZFcxbFBXWjFibU4wYVc5dUtDbDdkR2hwY3k1ZmNuVnVibWx1WnoxMGNuVmxPMmxtS0hSb2FYTXVYMmx1WkdWNFBIUm9hWE11WDJKMVptWmxjaTVzWlc1bmRHZ3BlM1JvYVhNdVgzQmhjbk5sS0NsOWFXWW9kR2hwY3k1ZlpXNWtaV1FwZTNSb2FYTXVYMlpwYm1semFDZ3BmWDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1bGJtUTlablZ1WTNScGIyNG9ZMmgxYm1zcGUybG1LSFJvYVhNdVgyVnVaR1ZrS1hSb2FYTXVYMk5pY3k1dmJtVnljbTl5S0VWeWNtOXlLRndpTG1WdVpDZ3BJR0ZtZEdWeUlHUnZibVVoWENJcEtUdHBaaWhqYUhWdWF5bDBhR2x6TG5keWFYUmxLR05vZFc1cktUdDBhR2x6TGw5bGJtUmxaRDEwY25WbE8ybG1LSFJvYVhNdVgzSjFibTVwYm1jcGRHaHBjeTVmWm1sdWFYTm9LQ2w5TzFSdmEyVnVhWHBsY2k1d2NtOTBiM1I1Y0dVdVgyWnBibWx6YUQxbWRXNWpkR2x2YmlncGUybG1LSFJvYVhNdVgzTmxZM1JwYjI1VGRHRnlkRHgwYUdsekxsOXBibVJsZUNsN2RHaHBjeTVmYUdGdVpHeGxWSEpoYVd4cGJtZEVZWFJoS0NsOWRHaHBjeTVmWTJKekxtOXVaVzVrS0NsOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYMmhoYm1Sc1pWUnlZV2xzYVc1blJHRjBZVDFtZFc1amRHbHZiaWdwZTNaaGNpQmtZWFJoUFhSb2FYTXVYMkoxWm1abGNpNXpkV0p6ZEhJb2RHaHBjeTVmYzJWamRHbHZibE4wWVhKMEtUdHBaaWgwYUdsekxsOXpkR0YwWlQwOVBVbE9YME5FUVZSQmZIeDBhR2x6TGw5emRHRjBaVDA5UFVGR1ZFVlNYME5FUVZSQlh6RjhmSFJvYVhNdVgzTjBZWFJsUFQwOVFVWlVSVkpmUTBSQlZFRmZNaWw3ZEdocGN5NWZZMkp6TG05dVkyUmhkR0VvWkdGMFlTbDlaV3h6WlNCcFppaDBhR2x6TGw5emRHRjBaVDA5UFVsT1gwTlBUVTFGVGxSOGZIUm9hWE11WDNOMFlYUmxQVDA5UVVaVVJWSmZRMDlOVFVWT1ZGOHhmSHgwYUdsekxsOXpkR0YwWlQwOVBVRkdWRVZTWDBOUFRVMUZUbFJmTWlsN2RHaHBjeTVmWTJKekxtOXVZMjl0YldWdWRDaGtZWFJoS1gxbGJITmxJR2xtS0hSb2FYTXVYM04wWVhSbFBUMDlTVTVmVGtGTlJVUmZSVTVVU1ZSWkppWWhkR2hwY3k1ZmVHMXNUVzlrWlNsN2RHaHBjeTVmY0dGeWMyVk1aV2RoWTNsRmJuUnBkSGtvS1R0cFppaDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUThkR2hwY3k1ZmFXNWtaWGdwZTNSb2FYTXVYM04wWVhSbFBYUm9hWE11WDJKaGMyVlRkR0YwWlR0MGFHbHpMbDlvWVc1a2JHVlVjbUZwYkdsdVowUmhkR0VvS1gxOVpXeHpaU0JwWmloMGFHbHpMbDl6ZEdGMFpUMDlQVWxPWDA1VlRVVlNTVU5mUlU1VVNWUlpKaVloZEdocGN5NWZlRzFzVFc5a1pTbDdkR2hwY3k1ZlpHVmpiMlJsVG5WdFpYSnBZMFZ1ZEdsMGVTZ3lMREV3S1R0cFppaDBhR2x6TGw5elpXTjBhVzl1VTNSaGNuUThkR2hwY3k1ZmFXNWtaWGdwZTNSb2FYTXVYM04wWVhSbFBYUm9hWE11WDJKaGMyVlRkR0YwWlR0MGFHbHpMbDlvWVc1a2JHVlVjbUZwYkdsdVowUmhkR0VvS1gxOVpXeHpaU0JwWmloMGFHbHpMbDl6ZEdGMFpUMDlQVWxPWDBoRldGOUZUbFJKVkZrbUppRjBhR2x6TGw5NGJXeE5iMlJsS1h0MGFHbHpMbDlrWldOdlpHVk9kVzFsY21salJXNTBhWFI1S0RNc01UWXBPMmxtS0hSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZER4MGFHbHpMbDlwYm1SbGVDbDdkR2hwY3k1ZmMzUmhkR1U5ZEdocGN5NWZZbUZ6WlZOMFlYUmxPM1JvYVhNdVgyaGhibVJzWlZSeVlXbHNhVzVuUkdGMFlTZ3BmWDFsYkhObElHbG1LSFJvYVhNdVgzTjBZWFJsSVQwOVNVNWZWRUZIWDA1QlRVVW1KblJvYVhNdVgzTjBZWFJsSVQwOVFrVkdUMUpGWDBGVVZGSkpRbFZVUlY5T1FVMUZKaVowYUdsekxsOXpkR0YwWlNFOVBVSkZSazlTUlY5QlZGUlNTVUpWVkVWZlZrRk1WVVVtSm5Sb2FYTXVYM04wWVhSbElUMDlRVVpVUlZKZlFWUlVVa2xDVlZSRlgwNUJUVVVtSm5Sb2FYTXVYM04wWVhSbElUMDlTVTVmUVZSVVVrbENWVlJGWDA1QlRVVW1KblJvYVhNdVgzTjBZWFJsSVQwOVNVNWZRVlJVVWtsQ1ZWUkZYMVpCVEZWRlgxTlJKaVowYUdsekxsOXpkR0YwWlNFOVBVbE9YMEZVVkZKSlFsVlVSVjlXUVV4VlJWOUVVU1ltZEdocGN5NWZjM1JoZEdVaFBUMUpUbDlCVkZSU1NVSlZWRVZmVmtGTVZVVmZUbEVtSm5Sb2FYTXVYM04wWVhSbElUMDlTVTVmUTB4UFUwbE9SMTlVUVVkZlRrRk5SU2w3WEc1MGFHbHpMbDlqWW5NdWIyNTBaWGgwS0dSaGRHRXBmWDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1eVpYTmxkRDFtZFc1amRHbHZiaWdwZTFSdmEyVnVhWHBsY2k1allXeHNLSFJvYVhNc2UzaHRiRTF2WkdVNmRHaHBjeTVmZUcxc1RXOWtaU3hrWldOdlpHVkZiblJwZEdsbGN6cDBhR2x6TGw5a1pXTnZaR1ZGYm5ScGRHbGxjMzBzZEdocGN5NWZZMkp6S1gwN1ZHOXJaVzVwZW1WeUxuQnliM1J2ZEhsd1pTNW5aWFJCWW5OdmJIVjBaVWx1WkdWNFBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlIUm9hWE11WDJKMVptWmxjazltWm5ObGRDdDBhR2x6TGw5cGJtUmxlSDA3Vkc5clpXNXBlbVZ5TG5CeWIzUnZkSGx3WlM1ZloyVjBVMlZqZEdsdmJqMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TGw5aWRXWm1aWEl1YzNWaWMzUnlhVzVuS0hSb2FYTXVYM05sWTNScGIyNVRkR0Z5ZEN4MGFHbHpMbDlwYm1SbGVDbDlPMVJ2YTJWdWFYcGxjaTV3Y205MGIzUjVjR1V1WDJWdGFYUlViMnRsYmoxbWRXNWpkR2x2YmlodVlXMWxLWHQwYUdsekxsOWpZbk5iYm1GdFpWMG9kR2hwY3k1ZloyVjBVMlZqZEdsdmJpZ3BLVHQwYUdsekxsOXpaV04wYVc5dVUzUmhjblE5TFRGOU8xUnZhMlZ1YVhwbGNpNXdjbTkwYjNSNWNHVXVYMlZ0YVhSUVlYSjBhV0ZzUFdaMWJtTjBhVzl1S0haaGJIVmxLWHRwWmloMGFHbHpMbDlpWVhObFUzUmhkR1VoUFQxVVJWaFVLWHQwYUdsekxsOWpZbk11YjI1aGRIUnlhV0prWVhSaEtIWmhiSFZsS1gxbGJITmxlM1JvYVhNdVgyTmljeTV2Ym5SbGVIUW9kbUZzZFdVcGZYMTlMSHRjSW1WdWRHbDBhV1Z6TDJ4cFlpOWtaV052WkdWZlkyOWtaWEJ2YVc1MExtcHpYQ0k2TWpJc1hDSmxiblJwZEdsbGN5OXRZWEJ6TDJWdWRHbDBhV1Z6TG1wemIyNWNJam95TlN4Y0ltVnVkR2wwYVdWekwyMWhjSE12YkdWbllXTjVMbXB6YjI1Y0lqb3lOaXhjSW1WdWRHbDBhV1Z6TDIxaGNITXZlRzFzTG1wemIyNWNJam95TjMxZExETTFPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdHRiMlIxYkdVdVpYaHdiM0owY3oxVGRISmxZVzA3ZG1GeUlGQmhjbk5sY2oxeVpYRjFhWEpsS0Z3aUxpOVFZWEp6WlhJdWFuTmNJaWtzVjNKcGRHRmliR1ZUZEhKbFlXMDljbVZ4ZFdseVpTaGNJbk4wY21WaGJWd2lLUzVYY21sMFlXSnNaWHg4Y21WeGRXbHlaU2hjSW5KbFlXUmhZbXhsTFhOMGNtVmhiVndpS1M1WGNtbDBZV0pzWlN4VGRISnBibWRFWldOdlpHVnlQWEpsY1hWcGNtVW9YQ0p6ZEhKcGJtZGZaR1ZqYjJSbGNsd2lLUzVUZEhKcGJtZEVaV052WkdWeUxFSjFabVpsY2oxeVpYRjFhWEpsS0Z3aVluVm1abVZ5WENJcExrSjFabVpsY2p0bWRXNWpkR2x2YmlCVGRISmxZVzBvWTJKekxHOXdkR2x2Ym5NcGUzWmhjaUJ3WVhKelpYSTlkR2hwY3k1ZmNHRnljMlZ5UFc1bGR5QlFZWEp6WlhJb1kySnpMRzl3ZEdsdmJuTXBPM1poY2lCa1pXTnZaR1Z5UFhSb2FYTXVYMlJsWTI5a1pYSTlibVYzSUZOMGNtbHVaMFJsWTI5a1pYSTdWM0pwZEdGaWJHVlRkSEpsWVcwdVkyRnNiQ2gwYUdsekxIdGtaV052WkdWVGRISnBibWR6T21aaGJITmxmU2s3ZEdocGN5NXZibU5sS0Z3aVptbHVhWE5vWENJc1puVnVZM1JwYjI0b0tYdHdZWEp6WlhJdVpXNWtLR1JsWTI5a1pYSXVaVzVrS0NrcGZTbDljbVZ4ZFdseVpTaGNJbWx1YUdWeWFYUnpYQ0lwS0ZOMGNtVmhiU3hYY21sMFlXSnNaVk4wY21WaGJTazdWM0pwZEdGaWJHVlRkSEpsWVcwdWNISnZkRzkwZVhCbExsOTNjbWwwWlQxbWRXNWpkR2x2YmloamFIVnVheXhsYm1OdlpHbHVaeXhqWWlsN2FXWW9ZMmgxYm1zZ2FXNXpkR0Z1WTJWdlppQkNkV1ptWlhJcFkyaDFibXM5ZEdocGN5NWZaR1ZqYjJSbGNpNTNjbWwwWlNoamFIVnVheWs3ZEdocGN5NWZjR0Z5YzJWeUxuZHlhWFJsS0dOb2RXNXJLVHRqWWlncGZYMHNlMXdpTGk5UVlYSnpaWEl1YW5OY0lqb3pNU3hpZFdabVpYSTZOU3hwYm1obGNtbDBjem96T0N4Y0luSmxZV1JoWW14bExYTjBjbVZoYlZ3aU9qTXNjM1J5WldGdE9qVTFMSE4wY21sdVoxOWtaV052WkdWeU9qVTJmVjBzTXpZNlcyWjFibU4wYVc5dUtISmxjWFZwY21Vc2JXOWtkV3hsTEdWNGNHOXlkSE1wZTNaaGNpQlFZWEp6WlhJOWNtVnhkV2x5WlNoY0lpNHZVR0Z5YzJWeUxtcHpYQ0lwTEVSdmJVaGhibVJzWlhJOWNtVnhkV2x5WlNoY0ltUnZiV2hoYm1Sc1pYSmNJaWs3Wm5WdVkzUnBiMjRnWkdWbWFXNWxVSEp2Y0NodVlXMWxMSFpoYkhWbEtYdGtaV3hsZEdVZ2JXOWtkV3hsTG1WNGNHOXlkSE5iYm1GdFpWMDdiVzlrZFd4bExtVjRjRzl5ZEhOYmJtRnRaVjA5ZG1Gc2RXVTdjbVYwZFhKdUlIWmhiSFZsZlcxdlpIVnNaUzVsZUhCdmNuUnpQWHRRWVhKelpYSTZVR0Z5YzJWeUxGUnZhMlZ1YVhwbGNqcHlaWEYxYVhKbEtGd2lMaTlVYjJ0bGJtbDZaWEl1YW5OY0lpa3NSV3hsYldWdWRGUjVjR1U2Y21WeGRXbHlaU2hjSW1SdmJXVnNaVzFsYm5SMGVYQmxYQ0lwTEVSdmJVaGhibVJzWlhJNlJHOXRTR0Z1Wkd4bGNpeG5aWFFnUm1WbFpFaGhibVJzWlhJb0tYdHlaWFIxY200Z1pHVm1hVzVsVUhKdmNDaGNJa1psWldSSVlXNWtiR1Z5WENJc2NtVnhkV2x5WlNoY0lpNHZSbVZsWkVoaGJtUnNaWEl1YW5OY0lpa3BmU3huWlhRZ1UzUnlaV0Z0S0NsN2NtVjBkWEp1SUdSbFptbHVaVkJ5YjNBb1hDSlRkSEpsWVcxY0lpeHlaWEYxYVhKbEtGd2lMaTlUZEhKbFlXMHVhbk5jSWlrcGZTeG5aWFFnVjNKcGRHRmliR1ZUZEhKbFlXMG9LWHR5WlhSMWNtNGdaR1ZtYVc1bFVISnZjQ2hjSWxkeWFYUmhZbXhsVTNSeVpXRnRYQ0lzY21WeGRXbHlaU2hjSWk0dlYzSnBkR0ZpYkdWVGRISmxZVzB1YW5OY0lpa3BmU3huWlhRZ1VISnZlSGxJWVc1a2JHVnlLQ2w3Y21WMGRYSnVJR1JsWm1sdVpWQnliM0FvWENKUWNtOTRlVWhoYm1Sc1pYSmNJaXh5WlhGMWFYSmxLRndpTGk5UWNtOTRlVWhoYm1Sc1pYSXVhbk5jSWlrcGZTeG5aWFFnUkc5dFZYUnBiSE1vS1h0eVpYUjFjbTRnWkdWbWFXNWxVSEp2Y0NoY0lrUnZiVlYwYVd4elhDSXNjbVZ4ZFdseVpTaGNJbVJ2YlhWMGFXeHpYQ0lwS1gwc1oyVjBJRU52Ykd4bFkzUnBibWRJWVc1a2JHVnlLQ2w3Y21WMGRYSnVJR1JsWm1sdVpWQnliM0FvWENKRGIyeHNaV04wYVc1blNHRnVaR3hsY2x3aUxISmxjWFZwY21Vb1hDSXVMME52Ykd4bFkzUnBibWRJWVc1a2JHVnlMbXB6WENJcEtYMHNSR1ZtWVhWc2RFaGhibVJzWlhJNlJHOXRTR0Z1Wkd4bGNpeG5aWFFnVW5OelNHRnVaR3hsY2lncGUzSmxkSFZ5YmlCa1pXWnBibVZRY205d0tGd2lVbk56U0dGdVpHeGxjbHdpTEhSb2FYTXVSbVZsWkVoaGJtUnNaWElwZlN4d1lYSnpaVVJQVFRwbWRXNWpkR2x2Ymloa1lYUmhMRzl3ZEdsdmJuTXBlM1poY2lCb1lXNWtiR1Z5UFc1bGR5QkViMjFJWVc1a2JHVnlLRzl3ZEdsdmJuTXBPMjVsZHlCUVlYSnpaWElvYUdGdVpHeGxjaXh2Y0hScGIyNXpLUzVsYm1Rb1pHRjBZU2s3Y21WMGRYSnVJR2hoYm1Sc1pYSXVaRzl0ZlN4d1lYSnpaVVpsWldRNlpuVnVZM1JwYjI0b1ptVmxaQ3h2Y0hScGIyNXpLWHQyWVhJZ2FHRnVaR3hsY2oxdVpYY2diVzlrZFd4bExtVjRjRzl5ZEhNdVJtVmxaRWhoYm1Sc1pYSW9iM0IwYVc5dWN5azdibVYzSUZCaGNuTmxjaWhvWVc1a2JHVnlMRzl3ZEdsdmJuTXBMbVZ1WkNobVpXVmtLVHR5WlhSMWNtNGdhR0Z1Wkd4bGNpNWtiMjE5TEdOeVpXRjBaVVJ2YlZOMGNtVmhiVHBtZFc1amRHbHZiaWhqWWl4dmNIUnBiMjV6TEdWc1pXMWxiblJEWWlsN2RtRnlJR2hoYm1Sc1pYSTlibVYzSUVSdmJVaGhibVJzWlhJb1kySXNiM0IwYVc5dWN5eGxiR1Z0Wlc1MFEySXBPM0psZEhWeWJpQnVaWGNnVUdGeWMyVnlLR2hoYm1Sc1pYSXNiM0IwYVc5dWN5bDlMRVZXUlU1VVV6cDdZWFIwY21saWRYUmxPaklzWTJSaGRHRnpkR0Z5ZERvd0xHTmtZWFJoWlc1a09qQXNkR1Y0ZERveExIQnliMk5sYzNOcGJtZHBibk4wY25WamRHbHZiam95TEdOdmJXMWxiblE2TVN4amIyMXRaVzUwWlc1a09qQXNZMnh2YzJWMFlXYzZNU3h2Y0dWdWRHRm5PaklzYjNCbGJuUmhaMjVoYldVNk1TeGxjbkp2Y2pveExHVnVaRG93ZlgxOUxIdGNJaTR2UTI5c2JHVmpkR2x1WjBoaGJtUnNaWEl1YW5OY0lqb3lPU3hjSWk0dlJtVmxaRWhoYm1Sc1pYSXVhbk5jSWpvek1DeGNJaTR2VUdGeWMyVnlMbXB6WENJNk16RXNYQ0l1TDFCeWIzaDVTR0Z1Wkd4bGNpNXFjMXdpT2pNeUxGd2lMaTlUZEhKbFlXMHVhbk5jSWpvek15eGNJaTR2Vkc5clpXNXBlbVZ5TG1welhDSTZNelFzWENJdUwxZHlhWFJoWW14bFUzUnlaV0Z0TG1welhDSTZNelVzWkc5dFpXeGxiV1Z1ZEhSNWNHVTZPU3hrYjIxb1lXNWtiR1Z5T2pFd0xHUnZiWFYwYVd4ek9qRXpmVjBzTXpjNlcyWjFibU4wYVc5dUtISmxjWFZwY21Vc2JXOWtkV3hsTEdWNGNHOXlkSE1wZTJWNGNHOXlkSE11Y21WaFpEMW1kVzVqZEdsdmJpaGlkV1ptWlhJc2IyWm1jMlYwTEdselRFVXNiVXhsYml4dVFubDBaWE1wZTNaaGNpQmxMRzA3ZG1GeUlHVk1aVzQ5YmtKNWRHVnpLamd0YlV4bGJpMHhPM1poY2lCbFRXRjRQU2d4UER4bFRHVnVLUzB4TzNaaGNpQmxRbWxoY3oxbFRXRjRQajR4TzNaaGNpQnVRbWwwY3owdE56dDJZWElnYVQxcGMweEZQMjVDZVhSbGN5MHhPakE3ZG1GeUlHUTlhWE5NUlQ4dE1Ub3hPM1poY2lCelBXSjFabVpsY2x0dlptWnpaWFFyYVYwN2FTczlaRHRsUFhNbUtERThQQzF1UW1sMGN5a3RNVHR6UGo0OUxXNUNhWFJ6TzI1Q2FYUnpLejFsVEdWdU8yWnZjaWc3YmtKcGRITStNRHRsUFdVcU1qVTJLMkoxWm1abGNsdHZabVp6WlhRcmFWMHNhU3M5WkN4dVFtbDBjeTA5T0NsN2ZXMDlaU1lvTVR3OExXNUNhWFJ6S1MweE8yVStQajB0YmtKcGRITTdia0pwZEhNclBXMU1aVzQ3Wm05eUtEdHVRbWwwY3o0d08yMDliU295TlRZclluVm1abVZ5VzI5bVpuTmxkQ3RwWFN4cEt6MWtMRzVDYVhSekxUMDRLWHQ5YVdZb1pUMDlQVEFwZTJVOU1TMWxRbWxoYzMxbGJITmxJR2xtS0dVOVBUMWxUV0Y0S1h0eVpYUjFjbTRnYlQ5T1lVNDZLSE0vTFRFNk1Ta3FTVzVtYVc1cGRIbDlaV3h6Wlh0dFBXMHJUV0YwYUM1d2IzY29NaXh0VEdWdUtUdGxQV1V0WlVKcFlYTjljbVYwZFhKdUtITS9MVEU2TVNrcWJTcE5ZWFJvTG5CdmR5Z3lMR1V0YlV4bGJpbDlPMlY0Y0c5eWRITXVkM0pwZEdVOVpuVnVZM1JwYjI0b1luVm1abVZ5TEhaaGJIVmxMRzltWm5ObGRDeHBjMHhGTEcxTVpXNHNia0o1ZEdWektYdDJZWElnWlN4dExHTTdkbUZ5SUdWTVpXNDlia0o1ZEdWektqZ3RiVXhsYmkweE8zWmhjaUJsVFdGNFBTZ3hQRHhsVEdWdUtTMHhPM1poY2lCbFFtbGhjejFsVFdGNFBqNHhPM1poY2lCeWREMXRUR1Z1UFQwOU1qTS9UV0YwYUM1d2IzY29NaXd0TWpRcExVMWhkR2d1Y0c5M0tESXNMVGMzS1Rvd08zWmhjaUJwUFdselRFVS9NRHB1UW5sMFpYTXRNVHQyWVhJZ1pEMXBjMHhGUHpFNkxURTdkbUZ5SUhNOWRtRnNkV1U4TUh4OGRtRnNkV1U5UFQwd0ppWXhMM1poYkhWbFBEQS9NVG93TzNaaGJIVmxQVTFoZEdndVlXSnpLSFpoYkhWbEtUdHBaaWhwYzA1aFRpaDJZV3gxWlNsOGZIWmhiSFZsUFQwOVNXNW1hVzVwZEhrcGUyMDlhWE5PWVU0b2RtRnNkV1VwUHpFNk1EdGxQV1ZOWVhoOVpXeHpaWHRsUFUxaGRHZ3VabXh2YjNJb1RXRjBhQzVzYjJjb2RtRnNkV1VwTDAxaGRHZ3VURTR5S1R0cFppaDJZV3gxWlNvb1l6MU5ZWFJvTG5CdmR5Z3lMQzFsS1NrOE1TbDdaUzB0TzJNcVBUSjlhV1lvWlN0bFFtbGhjejQ5TVNsN2RtRnNkV1VyUFhKMEwyTjlaV3h6Wlh0MllXeDFaU3M5Y25RcVRXRjBhQzV3YjNjb01pd3hMV1ZDYVdGektYMXBaaWgyWVd4MVpTcGpQajB5S1h0bEt5czdZeTg5TW4xcFppaGxLMlZDYVdGelBqMWxUV0Y0S1h0dFBUQTdaVDFsVFdGNGZXVnNjMlVnYVdZb1pTdGxRbWxoY3o0OU1TbDdiVDBvZG1Gc2RXVXFZeTB4S1NwTllYUm9MbkJ2ZHlneUxHMU1aVzRwTzJVOVpTdGxRbWxoYzMxbGJITmxlMjA5ZG1Gc2RXVXFUV0YwYUM1d2IzY29NaXhsUW1saGN5MHhLU3BOWVhSb0xuQnZkeWd5TEcxTVpXNHBPMlU5TUgxOVptOXlLRHR0VEdWdVBqMDRPMkoxWm1abGNsdHZabVp6WlhRcmFWMDliU1l5TlRVc2FTczlaQ3h0THoweU5UWXNiVXhsYmkwOU9DbDdmV1U5WlR3OGJVeGxibnh0TzJWTVpXNHJQVzFNWlc0N1ptOXlLRHRsVEdWdVBqQTdZblZtWm1WeVcyOW1abk5sZEN0cFhUMWxKakkxTlN4cEt6MWtMR1V2UFRJMU5peGxUR1Z1TFQwNEtYdDlZblZtWm1WeVcyOW1abk5sZEN0cExXUmRmRDF6S2pFeU9IMTlMSHQ5WFN3ek9EcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2FXWW9kSGx3Wlc5bUlFOWlhbVZqZEM1amNtVmhkR1U5UFQxY0ltWjFibU4wYVc5dVhDSXBlMjF2WkhWc1pTNWxlSEJ2Y25SelBXWjFibU4wYVc5dUlHbHVhR1Z5YVhSektHTjBiM0lzYzNWd1pYSkRkRzl5S1h0amRHOXlMbk4xY0dWeVh6MXpkWEJsY2tOMGIzSTdZM1J2Y2k1d2NtOTBiM1I1Y0dVOVQySnFaV04wTG1OeVpXRjBaU2h6ZFhCbGNrTjBiM0l1Y0hKdmRHOTBlWEJsTEh0amIyNXpkSEoxWTNSdmNqcDdkbUZzZFdVNlkzUnZjaXhsYm5WdFpYSmhZbXhsT21aaGJITmxMSGR5YVhSaFlteGxPblJ5ZFdVc1kyOXVabWxuZFhKaFlteGxPblJ5ZFdWOWZTbDlmV1ZzYzJWN2JXOWtkV3hsTG1WNGNHOXlkSE05Wm5WdVkzUnBiMjRnYVc1b1pYSnBkSE1vWTNSdmNpeHpkWEJsY2tOMGIzSXBlMk4wYjNJdWMzVndaWEpmUFhOMWNHVnlRM1J2Y2p0MllYSWdWR1Z0Y0VOMGIzSTlablZ1WTNScGIyNG9LWHQ5TzFSbGJYQkRkRzl5TG5CeWIzUnZkSGx3WlQxemRYQmxja04wYjNJdWNISnZkRzkwZVhCbE8yTjBiM0l1Y0hKdmRHOTBlWEJsUFc1bGR5QlVaVzF3UTNSdmNqdGpkRzl5TG5CeWIzUnZkSGx3WlM1amIyNXpkSEoxWTNSdmNqMWpkRzl5ZlgxOUxIdDlYU3d6T1RwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3Ylc5a2RXeGxMbVY0Y0c5eWRITTlablZ1WTNScGIyNG9iMkpxS1h0eVpYUjFjbTRnYjJKcUlUMXVkV3hzSmlZb2FYTkNkV1ptWlhJb2IySnFLWHg4YVhOVGJHOTNRblZtWm1WeUtHOWlhaWw4ZkNFaGIySnFMbDlwYzBKMVptWmxjaWw5TzJaMWJtTjBhVzl1SUdselFuVm1abVZ5S0c5aWFpbDdjbVYwZFhKdUlTRnZZbW91WTI5dWMzUnlkV04wYjNJbUpuUjVjR1Z2WmlCdlltb3VZMjl1YzNSeWRXTjBiM0l1YVhOQ2RXWm1aWEk5UFQxY0ltWjFibU4wYVc5dVhDSW1KbTlpYWk1amIyNXpkSEoxWTNSdmNpNXBjMEoxWm1abGNpaHZZbW9wZldaMWJtTjBhVzl1SUdselUyeHZkMEoxWm1abGNpaHZZbW9wZTNKbGRIVnliaUIwZVhCbGIyWWdiMkpxTG5KbFlXUkdiRzloZEV4RlBUMDlYQ0ptZFc1amRHbHZibHdpSmlaMGVYQmxiMllnYjJKcUxuTnNhV05sUFQwOVhDSm1kVzVqZEdsdmJsd2lKaVpwYzBKMVptWmxjaWh2WW1vdWMyeHBZMlVvTUN3d0tTbDlmU3g3ZlYwc05EQTZXMloxYm1OMGFXOXVLSEpsY1hWcGNtVXNiVzlrZFd4bExHVjRjRzl5ZEhNcGUzWmhjaUIwYjFOMGNtbHVaejE3ZlM1MGIxTjBjbWx1Wnp0dGIyUjFiR1V1Wlhod2IzSjBjejFCY25KaGVTNXBjMEZ5Y21GNWZIeG1kVzVqZEdsdmJpaGhjbklwZTNKbGRIVnliaUIwYjFOMGNtbHVaeTVqWVd4c0tHRnljaWs5UFZ3aVcyOWlhbVZqZENCQmNuSmhlVjFjSW4xOUxIdDlYU3cwTVRwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3S0daMWJtTjBhVzl1S0hCeWIyTmxjM01wZTF3aWRYTmxJSE4wY21samRGd2lPMmxtS0NGd2NtOWpaWE56TG5abGNuTnBiMjU4ZkhCeWIyTmxjM011ZG1WeWMybHZiaTVwYm1SbGVFOW1LRndpZGpBdVhDSXBQVDA5TUh4OGNISnZZMlZ6Y3k1MlpYSnphVzl1TG1sdVpHVjRUMllvWENKMk1TNWNJaWs5UFQwd0ppWndjbTlqWlhOekxuWmxjbk5wYjI0dWFXNWtaWGhQWmloY0luWXhMamd1WENJcElUMDlNQ2w3Ylc5a2RXeGxMbVY0Y0c5eWRITTlibVY0ZEZScFkydDlaV3h6Wlh0dGIyUjFiR1V1Wlhod2IzSjBjejF3Y205alpYTnpMbTVsZUhSVWFXTnJmV1oxYm1OMGFXOXVJRzVsZUhSVWFXTnJLR1p1TEdGeVp6RXNZWEpuTWl4aGNtY3pLWHRwWmloMGVYQmxiMllnWm00aFBUMWNJbVoxYm1OMGFXOXVYQ0lwZTNSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb0oxd2lZMkZzYkdKaFkydGNJaUJoY21kMWJXVnVkQ0J0ZFhOMElHSmxJR0VnWm5WdVkzUnBiMjRuS1gxMllYSWdiR1Z1UFdGeVozVnRaVzUwY3k1c1pXNW5kR2c3ZG1GeUlHRnlaM01zYVR0emQybDBZMmdvYkdWdUtYdGpZWE5sSURBNlkyRnpaU0F4T25KbGRIVnliaUJ3Y205alpYTnpMbTVsZUhSVWFXTnJLR1p1S1R0allYTmxJREk2Y21WMGRYSnVJSEJ5YjJObGMzTXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdZV1owWlhKVWFXTnJUMjVsS0NsN1ptNHVZMkZzYkNodWRXeHNMR0Z5WnpFcGZTazdZMkZ6WlNBek9uSmxkSFZ5YmlCd2NtOWpaWE56TG01bGVIUlVhV05yS0daMWJtTjBhVzl1SUdGbWRHVnlWR2xqYTFSM2J5Z3BlMlp1TG1OaGJHd29iblZzYkN4aGNtY3hMR0Z5WnpJcGZTazdZMkZ6WlNBME9uSmxkSFZ5YmlCd2NtOWpaWE56TG01bGVIUlVhV05yS0daMWJtTjBhVzl1SUdGbWRHVnlWR2xqYTFSb2NtVmxLQ2w3Wm00dVkyRnNiQ2h1ZFd4c0xHRnlaekVzWVhKbk1peGhjbWN6S1gwcE8yUmxabUYxYkhRNllYSm5jejF1WlhjZ1FYSnlZWGtvYkdWdUxURXBPMms5TUR0M2FHbHNaU2hwUEdGeVozTXViR1Z1WjNSb0tYdGhjbWR6VzJrcksxMDlZWEpuZFcxbGJuUnpXMmxkZlhKbGRIVnliaUJ3Y205alpYTnpMbTVsZUhSVWFXTnJLR1oxYm1OMGFXOXVJR0ZtZEdWeVZHbGpheWdwZTJadUxtRndjR3g1S0c1MWJHd3NZWEpuY3lsOUtYMTlmU2t1WTJGc2JDaDBhR2x6TEhKbGNYVnBjbVVvWENKZmNISnZZMlZ6YzF3aUtTbDlMSHRmY0hKdlkyVnpjem8wTW4xZExEUXlPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdDJZWElnY0hKdlkyVnpjejF0YjJSMWJHVXVaWGh3YjNKMGN6MTdmVHQyWVhJZ1kyRmphR1ZrVTJWMFZHbHRaVzkxZER0MllYSWdZMkZqYUdWa1EyeGxZWEpVYVcxbGIzVjBPMloxYm1OMGFXOXVJR1JsWm1GMWJIUlRaWFJVYVcxdmRYUW9LWHQwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0p6WlhSVWFXMWxiM1YwSUdoaGN5QnViM1FnWW1WbGJpQmtaV1pwYm1Wa1hDSXBmV1oxYm1OMGFXOXVJR1JsWm1GMWJIUkRiR1ZoY2xScGJXVnZkWFFvS1h0MGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKamJHVmhjbFJwYldWdmRYUWdhR0Z6SUc1dmRDQmlaV1Z1SUdSbFptbHVaV1JjSWlsOUtHWjFibU4wYVc5dUtDbDdkSEo1ZTJsbUtIUjVjR1Z2WmlCelpYUlVhVzFsYjNWMFBUMDlYQ0ptZFc1amRHbHZibHdpS1h0allXTm9aV1JUWlhSVWFXMWxiM1YwUFhObGRGUnBiV1Z2ZFhSOVpXeHpaWHRqWVdOb1pXUlRaWFJVYVcxbGIzVjBQV1JsWm1GMWJIUlRaWFJVYVcxdmRYUjlmV05oZEdOb0tHVXBlMk5oWTJobFpGTmxkRlJwYldWdmRYUTlaR1ZtWVhWc2RGTmxkRlJwYlc5MWRIMTBjbmw3YVdZb2RIbHdaVzltSUdOc1pXRnlWR2x0Wlc5MWREMDlQVndpWm5WdVkzUnBiMjVjSWlsN1kyRmphR1ZrUTJ4bFlYSlVhVzFsYjNWMFBXTnNaV0Z5VkdsdFpXOTFkSDFsYkhObGUyTmhZMmhsWkVOc1pXRnlWR2x0Wlc5MWREMWtaV1poZFd4MFEyeGxZWEpVYVcxbGIzVjBmWDFqWVhSamFDaGxLWHRqWVdOb1pXUkRiR1ZoY2xScGJXVnZkWFE5WkdWbVlYVnNkRU5zWldGeVZHbHRaVzkxZEgxOUtTZ3BPMloxYm1OMGFXOXVJSEoxYmxScGJXVnZkWFFvWm5WdUtYdHBaaWhqWVdOb1pXUlRaWFJVYVcxbGIzVjBQVDA5YzJWMFZHbHRaVzkxZENsN2NtVjBkWEp1SUhObGRGUnBiV1Z2ZFhRb1puVnVMREFwZldsbUtDaGpZV05vWldSVFpYUlVhVzFsYjNWMFBUMDlaR1ZtWVhWc2RGTmxkRlJwYlc5MWRIeDhJV05oWTJobFpGTmxkRlJwYldWdmRYUXBKaVp6WlhSVWFXMWxiM1YwS1h0allXTm9aV1JUWlhSVWFXMWxiM1YwUFhObGRGUnBiV1Z2ZFhRN2NtVjBkWEp1SUhObGRGUnBiV1Z2ZFhRb1puVnVMREFwZlhSeWVYdHlaWFIxY200Z1kyRmphR1ZrVTJWMFZHbHRaVzkxZENobWRXNHNNQ2w5WTJGMFkyZ29aU2w3ZEhKNWUzSmxkSFZ5YmlCallXTm9aV1JUWlhSVWFXMWxiM1YwTG1OaGJHd29iblZzYkN4bWRXNHNNQ2w5WTJGMFkyZ29aU2w3Y21WMGRYSnVJR05oWTJobFpGTmxkRlJwYldWdmRYUXVZMkZzYkNoMGFHbHpMR1oxYml3d0tYMTlmV1oxYm1OMGFXOXVJSEoxYmtOc1pXRnlWR2x0Wlc5MWRDaHRZWEpyWlhJcGUybG1LR05oWTJobFpFTnNaV0Z5VkdsdFpXOTFkRDA5UFdOc1pXRnlWR2x0Wlc5MWRDbDdjbVYwZFhKdUlHTnNaV0Z5VkdsdFpXOTFkQ2h0WVhKclpYSXBmV2xtS0NoallXTm9aV1JEYkdWaGNsUnBiV1Z2ZFhROVBUMWtaV1poZFd4MFEyeGxZWEpVYVcxbGIzVjBmSHdoWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwS1NZbVkyeGxZWEpVYVcxbGIzVjBLWHRqWVdOb1pXUkRiR1ZoY2xScGJXVnZkWFE5WTJ4bFlYSlVhVzFsYjNWME8zSmxkSFZ5YmlCamJHVmhjbFJwYldWdmRYUW9iV0Z5YTJWeUtYMTBjbmw3Y21WMGRYSnVJR05oWTJobFpFTnNaV0Z5VkdsdFpXOTFkQ2h0WVhKclpYSXBmV05oZEdOb0tHVXBlM1J5ZVh0eVpYUjFjbTRnWTJGamFHVmtRMnhsWVhKVWFXMWxiM1YwTG1OaGJHd29iblZzYkN4dFlYSnJaWElwZldOaGRHTm9LR1VwZTNKbGRIVnliaUJqWVdOb1pXUkRiR1ZoY2xScGJXVnZkWFF1WTJGc2JDaDBhR2x6TEcxaGNtdGxjaWw5ZlgxMllYSWdjWFZsZFdVOVcxMDdkbUZ5SUdSeVlXbHVhVzVuUFdaaGJITmxPM1poY2lCamRYSnlaVzUwVVhWbGRXVTdkbUZ5SUhGMVpYVmxTVzVrWlhnOUxURTdablZ1WTNScGIyNGdZMnhsWVc1VmNFNWxlSFJVYVdOcktDbDdhV1lvSVdSeVlXbHVhVzVuZkh3aFkzVnljbVZ1ZEZGMVpYVmxLWHR5WlhSMWNtNTlaSEpoYVc1cGJtYzlabUZzYzJVN2FXWW9ZM1Z5Y21WdWRGRjFaWFZsTG14bGJtZDBhQ2w3Y1hWbGRXVTlZM1Z5Y21WdWRGRjFaWFZsTG1OdmJtTmhkQ2h4ZFdWMVpTbDlaV3h6Wlh0eGRXVjFaVWx1WkdWNFBTMHhmV2xtS0hGMVpYVmxMbXhsYm1kMGFDbDdaSEpoYVc1UmRXVjFaU2dwZlgxbWRXNWpkR2x2YmlCa2NtRnBibEYxWlhWbEtDbDdhV1lvWkhKaGFXNXBibWNwZTNKbGRIVnlibjEyWVhJZ2RHbHRaVzkxZEQxeWRXNVVhVzFsYjNWMEtHTnNaV0Z1VlhCT1pYaDBWR2xqYXlrN1pISmhhVzVwYm1jOWRISjFaVHQyWVhJZ2JHVnVQWEYxWlhWbExteGxibWQwYUR0M2FHbHNaU2hzWlc0cGUyTjFjbkpsYm5SUmRXVjFaVDF4ZFdWMVpUdHhkV1YxWlQxYlhUdDNhR2xzWlNnckszRjFaWFZsU1c1a1pYZzhiR1Z1S1h0cFppaGpkWEp5Wlc1MFVYVmxkV1VwZTJOMWNuSmxiblJSZFdWMVpWdHhkV1YxWlVsdVpHVjRYUzV5ZFc0b0tYMTljWFZsZFdWSmJtUmxlRDB0TVR0c1pXNDljWFZsZFdVdWJHVnVaM1JvZldOMWNuSmxiblJSZFdWMVpUMXVkV3hzTzJSeVlXbHVhVzVuUFdaaGJITmxPM0oxYmtOc1pXRnlWR2x0Wlc5MWRDaDBhVzFsYjNWMEtYMXdjbTlqWlhOekxtNWxlSFJVYVdOclBXWjFibU4wYVc5dUtHWjFiaWw3ZG1GeUlHRnlaM005Ym1WM0lFRnljbUY1S0dGeVozVnRaVzUwY3k1c1pXNW5kR2d0TVNrN2FXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFENHhLWHRtYjNJb2RtRnlJR2s5TVR0cFBHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnN2FTc3JLWHRoY21kelcya3RNVjA5WVhKbmRXMWxiblJ6VzJsZGZYMXhkV1YxWlM1d2RYTm9LRzVsZHlCSmRHVnRLR1oxYml4aGNtZHpLU2s3YVdZb2NYVmxkV1V1YkdWdVozUm9QVDA5TVNZbUlXUnlZV2x1YVc1bktYdHlkVzVVYVcxbGIzVjBLR1J5WVdsdVVYVmxkV1VwZlgwN1puVnVZM1JwYjI0Z1NYUmxiU2htZFc0c1lYSnlZWGtwZTNSb2FYTXVablZ1UFdaMWJqdDBhR2x6TG1GeWNtRjVQV0Z5Y21GNWZVbDBaVzB1Y0hKdmRHOTBlWEJsTG5KMWJqMW1kVzVqZEdsdmJpZ3BlM1JvYVhNdVpuVnVMbUZ3Y0d4NUtHNTFiR3dzZEdocGN5NWhjbkpoZVNsOU8zQnliMk5sYzNNdWRHbDBiR1U5WENKaWNtOTNjMlZ5WENJN2NISnZZMlZ6Y3k1aWNtOTNjMlZ5UFhSeWRXVTdjSEp2WTJWemN5NWxiblk5ZTMwN2NISnZZMlZ6Y3k1aGNtZDJQVnRkTzNCeWIyTmxjM011ZG1WeWMybHZiajFjSWx3aU8zQnliMk5sYzNNdWRtVnljMmx2Ym5NOWUzMDdablZ1WTNScGIyNGdibTl2Y0NncGUzMXdjbTlqWlhOekxtOXVQVzV2YjNBN2NISnZZMlZ6Y3k1aFpHUk1hWE4wWlc1bGNqMXViMjl3TzNCeWIyTmxjM011YjI1alpUMXViMjl3TzNCeWIyTmxjM011YjJabVBXNXZiM0E3Y0hKdlkyVnpjeTV5WlcxdmRtVk1hWE4wWlc1bGNqMXViMjl3TzNCeWIyTmxjM011Y21WdGIzWmxRV3hzVEdsemRHVnVaWEp6UFc1dmIzQTdjSEp2WTJWemN5NWxiV2wwUFc1dmIzQTdjSEp2WTJWemN5NWlhVzVrYVc1blBXWjFibU4wYVc5dUtHNWhiV1VwZTNSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSW5CeWIyTmxjM011WW1sdVpHbHVaeUJwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtYQ0lwZlR0d2NtOWpaWE56TG1OM1pEMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJsd2lMMXdpZlR0d2NtOWpaWE56TG1Ob1pHbHlQV1oxYm1OMGFXOXVLR1JwY2lsN2RHaHliM2NnYm1WM0lFVnljbTl5S0Z3aWNISnZZMlZ6Y3k1amFHUnBjaUJwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtYQ0lwZlR0d2NtOWpaWE56TG5WdFlYTnJQV1oxYm1OMGFXOXVLQ2w3Y21WMGRYSnVJREI5ZlN4N2ZWMHNORE02VzJaMWJtTjBhVzl1S0hKbGNYVnBjbVVzYlc5a2RXeGxMR1Y0Y0c5eWRITXBlMjF2WkhWc1pTNWxlSEJ2Y25SelBYSmxjWFZwY21Vb1hDSXVMMnhwWWk5ZmMzUnlaV0Z0WDJSMWNHeGxlQzVxYzF3aUtYMHNlMXdpTGk5c2FXSXZYM04wY21WaGJWOWtkWEJzWlhndWFuTmNJam8wTkgxZExEUTBPbHRtZFc1amRHbHZiaWh5WlhGMWFYSmxMRzF2WkhWc1pTeGxlSEJ2Y25SektYdGNJblZ6WlNCemRISnBZM1JjSWp0MllYSWdiMkpxWldOMFMyVjVjejFQWW1wbFkzUXVhMlY1YzN4OFpuVnVZM1JwYjI0b2IySnFLWHQyWVhJZ2EyVjVjejFiWFR0bWIzSW9kbUZ5SUd0bGVTQnBiaUJ2WW1vcGUydGxlWE11Y0hWemFDaHJaWGtwZlhKbGRIVnliaUJyWlhsemZUdHRiMlIxYkdVdVpYaHdiM0owY3oxRWRYQnNaWGc3ZG1GeUlIQnliMk5sYzNOT1pYaDBWR2xqYXoxeVpYRjFhWEpsS0Z3aWNISnZZMlZ6Y3kxdVpYaDBhV05yTFdGeVozTmNJaWs3ZG1GeUlIVjBhV3c5Y21WeGRXbHlaU2hjSW1OdmNtVXRkWFJwYkMxcGMxd2lLVHQxZEdsc0xtbHVhR1Z5YVhSelBYSmxjWFZwY21Vb1hDSnBibWhsY21sMGMxd2lLVHQyWVhJZ1VtVmhaR0ZpYkdVOWNtVnhkV2x5WlNoY0lpNHZYM04wY21WaGJWOXlaV0ZrWVdKc1pWd2lLVHQyWVhJZ1YzSnBkR0ZpYkdVOWNtVnhkV2x5WlNoY0lpNHZYM04wY21WaGJWOTNjbWwwWVdKc1pWd2lLVHQxZEdsc0xtbHVhR1Z5YVhSektFUjFjR3hsZUN4U1pXRmtZV0pzWlNrN2RtRnlJR3RsZVhNOWIySnFaV04wUzJWNWN5aFhjbWwwWVdKc1pTNXdjbTkwYjNSNWNHVXBPMlp2Y2loMllYSWdkajB3TzNZOGEyVjVjeTVzWlc1bmRHZzdkaXNyS1h0MllYSWdiV1YwYUc5a1BXdGxlWE5iZGwwN2FXWW9JVVIxY0d4bGVDNXdjbTkwYjNSNWNHVmJiV1YwYUc5a1hTbEVkWEJzWlhndWNISnZkRzkwZVhCbFcyMWxkR2h2WkYwOVYzSnBkR0ZpYkdVdWNISnZkRzkwZVhCbFcyMWxkR2h2WkYxOVpuVnVZM1JwYjI0Z1JIVndiR1Y0S0c5d2RHbHZibk1wZTJsbUtDRW9kR2hwY3lCcGJuTjBZVzVqWlc5bUlFUjFjR3hsZUNrcGNtVjBkWEp1SUc1bGR5QkVkWEJzWlhnb2IzQjBhVzl1Y3lrN1VtVmhaR0ZpYkdVdVkyRnNiQ2gwYUdsekxHOXdkR2x2Ym5NcE8xZHlhWFJoWW14bExtTmhiR3dvZEdocGN5eHZjSFJwYjI1ektUdHBaaWh2Y0hScGIyNXpKaVp2Y0hScGIyNXpMbkpsWVdSaFlteGxQVDA5Wm1Gc2MyVXBkR2hwY3k1eVpXRmtZV0pzWlQxbVlXeHpaVHRwWmlodmNIUnBiMjV6SmladmNIUnBiMjV6TG5keWFYUmhZbXhsUFQwOVptRnNjMlVwZEdocGN5NTNjbWwwWVdKc1pUMW1ZV3h6WlR0MGFHbHpMbUZzYkc5M1NHRnNaazl3Wlc0OWRISjFaVHRwWmlodmNIUnBiMjV6SmladmNIUnBiMjV6TG1Gc2JHOTNTR0ZzWms5d1pXNDlQVDFtWVd4elpTbDBhR2x6TG1Gc2JHOTNTR0ZzWms5d1pXNDlabUZzYzJVN2RHaHBjeTV2Ym1ObEtGd2laVzVrWENJc2IyNWxibVFwZldaMWJtTjBhVzl1SUc5dVpXNWtLQ2w3YVdZb2RHaHBjeTVoYkd4dmQwaGhiR1pQY0dWdWZIeDBhR2x6TGw5M2NtbDBZV0pzWlZOMFlYUmxMbVZ1WkdWa0tYSmxkSFZ5Ymp0d2NtOWpaWE56VG1WNGRGUnBZMnNvYjI1RmJtUk9WQ3gwYUdsektYMW1kVzVqZEdsdmJpQnZia1Z1WkU1VUtITmxiR1lwZTNObGJHWXVaVzVrS0NsOVpuVnVZM1JwYjI0Z1ptOXlSV0ZqYUNoNGN5eG1LWHRtYjNJb2RtRnlJR2s5TUN4c1BYaHpMbXhsYm1kMGFEdHBQR3c3YVNzcktYdG1LSGh6VzJsZExHa3BmWDE5TEh0Y0lpNHZYM04wY21WaGJWOXlaV0ZrWVdKc1pWd2lPalEyTEZ3aUxpOWZjM1J5WldGdFgzZHlhWFJoWW14bFhDSTZORGdzWENKamIzSmxMWFYwYVd3dGFYTmNJam8yTEdsdWFHVnlhWFJ6T2pNNExGd2ljSEp2WTJWemN5MXVaWGgwYVdOckxXRnlaM05jSWpvME1YMWRMRFExT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHRjSW5WelpTQnpkSEpwWTNSY0lqdHRiMlIxYkdVdVpYaHdiM0owY3oxUVlYTnpWR2h5YjNWbmFEdDJZWElnVkhKaGJuTm1iM0p0UFhKbGNYVnBjbVVvWENJdUwxOXpkSEpsWVcxZmRISmhibk5tYjNKdFhDSXBPM1poY2lCMWRHbHNQWEpsY1hWcGNtVW9YQ0pqYjNKbExYVjBhV3d0YVhOY0lpazdkWFJwYkM1cGJtaGxjbWwwY3oxeVpYRjFhWEpsS0Z3aWFXNW9aWEpwZEhOY0lpazdkWFJwYkM1cGJtaGxjbWwwY3loUVlYTnpWR2h5YjNWbmFDeFVjbUZ1YzJadmNtMHBPMloxYm1OMGFXOXVJRkJoYzNOVWFISnZkV2RvS0c5d2RHbHZibk1wZTJsbUtDRW9kR2hwY3lCcGJuTjBZVzVqWlc5bUlGQmhjM05VYUhKdmRXZG9LU2x5WlhSMWNtNGdibVYzSUZCaGMzTlVhSEp2ZFdkb0tHOXdkR2x2Ym5NcE8xUnlZVzV6Wm05eWJTNWpZV3hzS0hSb2FYTXNiM0IwYVc5dWN5bDlVR0Z6YzFSb2NtOTFaMmd1Y0hKdmRHOTBlWEJsTGw5MGNtRnVjMlp2Y20wOVpuVnVZM1JwYjI0b1kyaDFibXNzWlc1amIyUnBibWNzWTJJcGUyTmlLRzUxYkd3c1kyaDFibXNwZlgwc2Uxd2lMaTlmYzNSeVpXRnRYM1J5WVc1elptOXliVndpT2pRM0xGd2lZMjl5WlMxMWRHbHNMV2x6WENJNk5peHBibWhsY21sMGN6b3pPSDFkTERRMk9sdG1kVzVqZEdsdmJpaHlaWEYxYVhKbExHMXZaSFZzWlN4bGVIQnZjblJ6S1hzb1puVnVZM1JwYjI0b2NISnZZMlZ6Y3lsN1hDSjFjMlVnYzNSeWFXTjBYQ0k3Ylc5a2RXeGxMbVY0Y0c5eWRITTlVbVZoWkdGaWJHVTdkbUZ5SUhCeWIyTmxjM05PWlhoMFZHbGphejF5WlhGMWFYSmxLRndpY0hKdlkyVnpjeTF1WlhoMGFXTnJMV0Z5WjNOY0lpazdkbUZ5SUdselFYSnlZWGs5Y21WeGRXbHlaU2hjSW1sellYSnlZWGxjSWlrN1VtVmhaR0ZpYkdVdVVtVmhaR0ZpYkdWVGRHRjBaVDFTWldGa1lXSnNaVk4wWVhSbE8zWmhjaUJGUlQxeVpYRjFhWEpsS0Z3aVpYWmxiblJ6WENJcExrVjJaVzUwUlcxcGRIUmxjanQyWVhJZ1JVVnNhWE4wWlc1bGNrTnZkVzUwUFdaMWJtTjBhVzl1S0dWdGFYUjBaWElzZEhsd1pTbDdjbVYwZFhKdUlHVnRhWFIwWlhJdWJHbHpkR1Z1WlhKektIUjVjR1VwTG14bGJtZDBhSDA3ZG1GeUlGTjBjbVZoYlRzb1puVnVZM1JwYjI0b0tYdDBjbmw3VTNSeVpXRnRQWEpsY1hWcGNtVW9YQ0p6ZEZ3aUsxd2ljbVZoYlZ3aUtYMWpZWFJqYUNoZktYdDlabWx1WVd4c2VYdHBaaWdoVTNSeVpXRnRLVk4wY21WaGJUMXlaWEYxYVhKbEtGd2laWFpsYm5SelhDSXBMa1YyWlc1MFJXMXBkSFJsY24xOUtTZ3BPM1poY2lCQ2RXWm1aWEk5Y21WeGRXbHlaU2hjSW1KMVptWmxjbHdpS1M1Q2RXWm1aWEk3ZG1GeUlHSjFabVpsY2xOb2FXMDljbVZ4ZFdseVpTaGNJbUoxWm1abGNpMXphR2x0YzF3aUtUdDJZWElnZFhScGJEMXlaWEYxYVhKbEtGd2lZMjl5WlMxMWRHbHNMV2x6WENJcE8zVjBhV3d1YVc1b1pYSnBkSE05Y21WeGRXbHlaU2hjSW1sdWFHVnlhWFJ6WENJcE8zWmhjaUJrWldKMVoxVjBhV3c5Y21WeGRXbHlaU2hjSW5WMGFXeGNJaWs3ZG1GeUlHUmxZblZuUFhadmFXUWdNRHRwWmloa1pXSjFaMVYwYVd3bUptUmxZblZuVlhScGJDNWtaV0oxWjJ4dlp5bDdaR1ZpZFdjOVpHVmlkV2RWZEdsc0xtUmxZblZuYkc5bktGd2ljM1J5WldGdFhDSXBmV1ZzYzJWN1pHVmlkV2M5Wm5WdVkzUnBiMjRvS1h0OWZYWmhjaUJDZFdabVpYSk1hWE4wUFhKbGNYVnBjbVVvWENJdUwybHVkR1Z5Ym1Gc0wzTjBjbVZoYlhNdlFuVm1abVZ5VEdsemRGd2lLVHQyWVhJZ1UzUnlhVzVuUkdWamIyUmxjanQxZEdsc0xtbHVhR1Z5YVhSektGSmxZV1JoWW14bExGTjBjbVZoYlNrN1puVnVZM1JwYjI0Z2NISmxjR1Z1WkV4cGMzUmxibVZ5S0dWdGFYUjBaWElzWlhabGJuUXNabTRwZTJsbUtIUjVjR1Z2WmlCbGJXbDBkR1Z5TG5CeVpYQmxibVJNYVhOMFpXNWxjajA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdjbVYwZFhKdUlHVnRhWFIwWlhJdWNISmxjR1Z1WkV4cGMzUmxibVZ5S0dWMlpXNTBMR1p1S1gxbGJITmxlMmxtS0NGbGJXbDBkR1Z5TGw5bGRtVnVkSE44ZkNGbGJXbDBkR1Z5TGw5bGRtVnVkSE5iWlhabGJuUmRLV1Z0YVhSMFpYSXViMjRvWlhabGJuUXNabTRwTzJWc2MyVWdhV1lvYVhOQmNuSmhlU2hsYldsMGRHVnlMbDlsZG1WdWRITmJaWFpsYm5SZEtTbGxiV2wwZEdWeUxsOWxkbVZ1ZEhOYlpYWmxiblJkTG5WdWMyaHBablFvWm00cE8yVnNjMlVnWlcxcGRIUmxjaTVmWlhabGJuUnpXMlYyWlc1MFhUMWJabTRzWlcxcGRIUmxjaTVmWlhabGJuUnpXMlYyWlc1MFhWMTlmWFpoY2lCRWRYQnNaWGc3Wm5WdVkzUnBiMjRnVW1WaFpHRmliR1ZUZEdGMFpTaHZjSFJwYjI1ekxITjBjbVZoYlNsN1JIVndiR1Y0UFVSMWNHeGxlSHg4Y21WeGRXbHlaU2hjSWk0dlgzTjBjbVZoYlY5a2RYQnNaWGhjSWlrN2IzQjBhVzl1Y3oxdmNIUnBiMjV6Zkh4N2ZUdDBhR2x6TG05aWFtVmpkRTF2WkdVOUlTRnZjSFJwYjI1ekxtOWlhbVZqZEUxdlpHVTdhV1lvYzNSeVpXRnRJR2x1YzNSaGJtTmxiMllnUkhWd2JHVjRLWFJvYVhNdWIySnFaV04wVFc5a1pUMTBhR2x6TG05aWFtVmpkRTF2WkdWOGZDRWhiM0IwYVc5dWN5NXlaV0ZrWVdKc1pVOWlhbVZqZEUxdlpHVTdkbUZ5SUdoM2JUMXZjSFJwYjI1ekxtaHBaMmhYWVhSbGNrMWhjbXM3ZG1GeUlHUmxabUYxYkhSSWQyMDlkR2hwY3k1dlltcGxZM1JOYjJSbFB6RTJPakUyS2pFd01qUTdkR2hwY3k1b2FXZG9WMkYwWlhKTllYSnJQV2gzYlh4OGFIZHRQVDA5TUQ5b2QyMDZaR1ZtWVhWc2RFaDNiVHQwYUdsekxtaHBaMmhYWVhSbGNrMWhjbXM5Zm41MGFHbHpMbWhwWjJoWFlYUmxjazFoY21zN2RHaHBjeTVpZFdabVpYSTlibVYzSUVKMVptWmxja3hwYzNRN2RHaHBjeTVzWlc1bmRHZzlNRHQwYUdsekxuQnBjR1Z6UFc1MWJHdzdkR2hwY3k1d2FYQmxjME52ZFc1MFBUQTdkR2hwY3k1bWJHOTNhVzVuUFc1MWJHdzdkR2hwY3k1bGJtUmxaRDFtWVd4elpUdDBhR2x6TG1WdVpFVnRhWFIwWldROVptRnNjMlU3ZEdocGN5NXlaV0ZrYVc1blBXWmhiSE5sTzNSb2FYTXVjM2x1WXoxMGNuVmxPM1JvYVhNdWJtVmxaRkpsWVdSaFlteGxQV1poYkhObE8zUm9hWE11WlcxcGRIUmxaRkpsWVdSaFlteGxQV1poYkhObE8zUm9hWE11Y21WaFpHRmliR1ZNYVhOMFpXNXBibWM5Wm1Gc2MyVTdkR2hwY3k1eVpYTjFiV1ZUWTJobFpIVnNaV1E5Wm1Gc2MyVTdkR2hwY3k1a1pXWmhkV3gwUlc1amIyUnBibWM5YjNCMGFXOXVjeTVrWldaaGRXeDBSVzVqYjJScGJtZDhmRndpZFhSbU9Gd2lPM1JvYVhNdWNtRnVUM1YwUFdaaGJITmxPM1JvYVhNdVlYZGhhWFJFY21GcGJqMHdPM1JvYVhNdWNtVmhaR2x1WjAxdmNtVTlabUZzYzJVN2RHaHBjeTVrWldOdlpHVnlQVzUxYkd3N2RHaHBjeTVsYm1OdlpHbHVaejF1ZFd4c08ybG1LRzl3ZEdsdmJuTXVaVzVqYjJScGJtY3BlMmxtS0NGVGRISnBibWRFWldOdlpHVnlLVk4wY21sdVowUmxZMjlrWlhJOWNtVnhkV2x5WlNoY0luTjBjbWx1WjE5a1pXTnZaR1Z5TDF3aUtTNVRkSEpwYm1kRVpXTnZaR1Z5TzNSb2FYTXVaR1ZqYjJSbGNqMXVaWGNnVTNSeWFXNW5SR1ZqYjJSbGNpaHZjSFJwYjI1ekxtVnVZMjlrYVc1bktUdDBhR2x6TG1WdVkyOWthVzVuUFc5d2RHbHZibk11Wlc1amIyUnBibWQ5ZlhaaGNpQkVkWEJzWlhnN1puVnVZM1JwYjI0Z1VtVmhaR0ZpYkdVb2IzQjBhVzl1Y3lsN1JIVndiR1Y0UFVSMWNHeGxlSHg4Y21WeGRXbHlaU2hjSWk0dlgzTjBjbVZoYlY5a2RYQnNaWGhjSWlrN2FXWW9JU2gwYUdseklHbHVjM1JoYm1ObGIyWWdVbVZoWkdGaWJHVXBLWEpsZEhWeWJpQnVaWGNnVW1WaFpHRmliR1VvYjNCMGFXOXVjeWs3ZEdocGN5NWZjbVZoWkdGaWJHVlRkR0YwWlQxdVpYY2dVbVZoWkdGaWJHVlRkR0YwWlNodmNIUnBiMjV6TEhSb2FYTXBPM1JvYVhNdWNtVmhaR0ZpYkdVOWRISjFaVHRwWmlodmNIUnBiMjV6SmlaMGVYQmxiMllnYjNCMGFXOXVjeTV5WldGa1BUMDlYQ0ptZFc1amRHbHZibHdpS1hSb2FYTXVYM0psWVdROWIzQjBhVzl1Y3k1eVpXRmtPMU4wY21WaGJTNWpZV3hzS0hSb2FYTXBmVkpsWVdSaFlteGxMbkJ5YjNSdmRIbHdaUzV3ZFhOb1BXWjFibU4wYVc5dUtHTm9kVzVyTEdWdVkyOWthVzVuS1h0MllYSWdjM1JoZEdVOWRHaHBjeTVmY21WaFpHRmliR1ZUZEdGMFpUdHBaaWdoYzNSaGRHVXViMkpxWldOMFRXOWtaU1ltZEhsd1pXOW1JR05vZFc1clBUMDlYQ0p6ZEhKcGJtZGNJaWw3Wlc1amIyUnBibWM5Wlc1amIyUnBibWQ4ZkhOMFlYUmxMbVJsWm1GMWJIUkZibU52WkdsdVp6dHBaaWhsYm1OdlpHbHVaeUU5UFhOMFlYUmxMbVZ1WTI5a2FXNW5LWHRqYUhWdWF6MWlkV1ptWlhKVGFHbHRMbVp5YjIwb1kyaDFibXNzWlc1amIyUnBibWNwTzJWdVkyOWthVzVuUFZ3aVhDSjlmWEpsZEhWeWJpQnlaV0ZrWVdKc1pVRmtaRU5vZFc1cktIUm9hWE1zYzNSaGRHVXNZMmgxYm1zc1pXNWpiMlJwYm1jc1ptRnNjMlVwZlR0U1pXRmtZV0pzWlM1d2NtOTBiM1I1Y0dVdWRXNXphR2xtZEQxbWRXNWpkR2x2YmloamFIVnVheWw3ZG1GeUlITjBZWFJsUFhSb2FYTXVYM0psWVdSaFlteGxVM1JoZEdVN2NtVjBkWEp1SUhKbFlXUmhZbXhsUVdSa1EyaDFibXNvZEdocGN5eHpkR0YwWlN4amFIVnVheXhjSWx3aUxIUnlkV1VwZlR0U1pXRmtZV0pzWlM1d2NtOTBiM1I1Y0dVdWFYTlFZWFZ6WldROVpuVnVZM1JwYjI0b0tYdHlaWFIxY200Z2RHaHBjeTVmY21WaFpHRmliR1ZUZEdGMFpTNW1iRzkzYVc1blBUMDlabUZzYzJWOU8yWjFibU4wYVc5dUlISmxZV1JoWW14bFFXUmtRMmgxYm1zb2MzUnlaV0Z0TEhOMFlYUmxMR05vZFc1ckxHVnVZMjlrYVc1bkxHRmtaRlJ2Um5KdmJuUXBlM1poY2lCbGNqMWphSFZ1YTBsdWRtRnNhV1FvYzNSaGRHVXNZMmgxYm1zcE8ybG1LR1Z5S1h0emRISmxZVzB1WlcxcGRDaGNJbVZ5Y205eVhDSXNaWElwZldWc2MyVWdhV1lvWTJoMWJtczlQVDF1ZFd4c0tYdHpkR0YwWlM1eVpXRmthVzVuUFdaaGJITmxPMjl1Ulc5bVEyaDFibXNvYzNSeVpXRnRMSE4wWVhSbEtYMWxiSE5sSUdsbUtITjBZWFJsTG05aWFtVmpkRTF2WkdWOGZHTm9kVzVySmlaamFIVnVheTVzWlc1bmRHZytNQ2w3YVdZb2MzUmhkR1V1Wlc1a1pXUW1KaUZoWkdSVWIwWnliMjUwS1h0MllYSWdaVDF1WlhjZ1JYSnliM0lvWENKemRISmxZVzB1Y0hWemFDZ3BJR0ZtZEdWeUlFVlBSbHdpS1R0emRISmxZVzB1WlcxcGRDaGNJbVZ5Y205eVhDSXNaU2w5Wld4elpTQnBaaWh6ZEdGMFpTNWxibVJGYldsMGRHVmtKaVpoWkdSVWIwWnliMjUwS1h0MllYSWdYMlU5Ym1WM0lFVnljbTl5S0Z3aWMzUnlaV0Z0TG5WdWMyaHBablFvS1NCaFpuUmxjaUJsYm1RZ1pYWmxiblJjSWlrN2MzUnlaV0Z0TG1WdGFYUW9YQ0psY25KdmNsd2lMRjlsS1gxbGJITmxlM1poY2lCemEybHdRV1JrTzJsbUtITjBZWFJsTG1SbFkyOWtaWEltSmlGaFpHUlViMFp5YjI1MEppWWhaVzVqYjJScGJtY3BlMk5vZFc1clBYTjBZWFJsTG1SbFkyOWtaWEl1ZDNKcGRHVW9ZMmgxYm1zcE8zTnJhWEJCWkdROUlYTjBZWFJsTG05aWFtVmpkRTF2WkdVbUptTm9kVzVyTG14bGJtZDBhRDA5UFRCOWFXWW9JV0ZrWkZSdlJuSnZiblFwYzNSaGRHVXVjbVZoWkdsdVp6MW1ZV3h6WlR0cFppZ2hjMnRwY0VGa1pDbDdhV1lvYzNSaGRHVXVabXh2ZDJsdVp5WW1jM1JoZEdVdWJHVnVaM1JvUFQwOU1DWW1JWE4wWVhSbExuTjVibU1wZTNOMGNtVmhiUzVsYldsMEtGd2laR0YwWVZ3aUxHTm9kVzVyS1R0emRISmxZVzB1Y21WaFpDZ3dLWDFsYkhObGUzTjBZWFJsTG14bGJtZDBhQ3M5YzNSaGRHVXViMkpxWldOMFRXOWtaVDh4T21Ob2RXNXJMbXhsYm1kMGFEdHBaaWhoWkdSVWIwWnliMjUwS1hOMFlYUmxMbUoxWm1abGNpNTFibk5vYVdaMEtHTm9kVzVyS1R0bGJITmxJSE4wWVhSbExtSjFabVpsY2k1d2RYTm9LR05vZFc1cktUdHBaaWh6ZEdGMFpTNXVaV1ZrVW1WaFpHRmliR1VwWlcxcGRGSmxZV1JoWW14bEtITjBjbVZoYlNsOWZXMWhlV0psVW1WaFpFMXZjbVVvYzNSeVpXRnRMSE4wWVhSbEtYMTlaV3h6WlNCcFppZ2hZV1JrVkc5R2NtOXVkQ2w3YzNSaGRHVXVjbVZoWkdsdVp6MW1ZV3h6WlgxeVpYUjFjbTRnYm1WbFpFMXZjbVZFWVhSaEtITjBZWFJsS1gxbWRXNWpkR2x2YmlCdVpXVmtUVzl5WlVSaGRHRW9jM1JoZEdVcGUzSmxkSFZ5YmlGemRHRjBaUzVsYm1SbFpDWW1LSE4wWVhSbExtNWxaV1JTWldGa1lXSnNaWHg4YzNSaGRHVXViR1Z1WjNSb1BITjBZWFJsTG1ocFoyaFhZWFJsY2sxaGNtdDhmSE4wWVhSbExteGxibWQwYUQwOVBUQXBmVkpsWVdSaFlteGxMbkJ5YjNSdmRIbHdaUzV6WlhSRmJtTnZaR2x1WnoxbWRXNWpkR2x2YmlobGJtTXBlMmxtS0NGVGRISnBibWRFWldOdlpHVnlLVk4wY21sdVowUmxZMjlrWlhJOWNtVnhkV2x5WlNoY0luTjBjbWx1WjE5a1pXTnZaR1Z5TDF3aUtTNVRkSEpwYm1kRVpXTnZaR1Z5TzNSb2FYTXVYM0psWVdSaFlteGxVM1JoZEdVdVpHVmpiMlJsY2oxdVpYY2dVM1J5YVc1blJHVmpiMlJsY2lobGJtTXBPM1JvYVhNdVgzSmxZV1JoWW14bFUzUmhkR1V1Wlc1amIyUnBibWM5Wlc1ak8zSmxkSFZ5YmlCMGFHbHpmVHQyWVhJZ1RVRllYMGhYVFQwNE16ZzROakE0TzJaMWJtTjBhVzl1SUdOdmJYQjFkR1ZPWlhkSWFXZG9WMkYwWlhKTllYSnJLRzRwZTJsbUtHNCtQVTFCV0Y5SVYwMHBlMjQ5VFVGWVgwaFhUWDFsYkhObGUyNHRMVHR1ZkQxdVBqNCtNVHR1ZkQxdVBqNCtNanR1ZkQxdVBqNCtORHR1ZkQxdVBqNCtPRHR1ZkQxdVBqNCtNVFk3YmlzcmZYSmxkSFZ5YmlCdWZXWjFibU4wYVc5dUlHaHZkMDExWTJoVWIxSmxZV1FvYml4emRHRjBaU2w3YVdZb2JqdzlNSHg4YzNSaGRHVXViR1Z1WjNSb1BUMDlNQ1ltYzNSaGRHVXVaVzVrWldRcGNtVjBkWEp1SURBN2FXWW9jM1JoZEdVdWIySnFaV04wVFc5a1pTbHlaWFIxY200Z01UdHBaaWh1SVQwOWJpbDdhV1lvYzNSaGRHVXVabXh2ZDJsdVp5WW1jM1JoZEdVdWJHVnVaM1JvS1hKbGRIVnliaUJ6ZEdGMFpTNWlkV1ptWlhJdWFHVmhaQzVrWVhSaExteGxibWQwYUR0bGJITmxJSEpsZEhWeWJpQnpkR0YwWlM1c1pXNW5kR2g5YVdZb2JqNXpkR0YwWlM1b2FXZG9WMkYwWlhKTllYSnJLWE4wWVhSbExtaHBaMmhYWVhSbGNrMWhjbXM5WTI5dGNIVjBaVTVsZDBocFoyaFhZWFJsY2sxaGNtc29iaWs3YVdZb2JqdzljM1JoZEdVdWJHVnVaM1JvS1hKbGRIVnliaUJ1TzJsbUtDRnpkR0YwWlM1bGJtUmxaQ2w3YzNSaGRHVXVibVZsWkZKbFlXUmhZbXhsUFhSeWRXVTdjbVYwZFhKdUlEQjljbVYwZFhKdUlITjBZWFJsTG14bGJtZDBhSDFTWldGa1lXSnNaUzV3Y205MGIzUjVjR1V1Y21WaFpEMW1kVzVqZEdsdmJpaHVLWHRrWldKMVp5aGNJbkpsWVdSY0lpeHVLVHR1UFhCaGNuTmxTVzUwS0c0c01UQXBPM1poY2lCemRHRjBaVDEwYUdsekxsOXlaV0ZrWVdKc1pWTjBZWFJsTzNaaGNpQnVUM0pwWnoxdU8ybG1LRzRoUFQwd0tYTjBZWFJsTG1WdGFYUjBaV1JTWldGa1lXSnNaVDFtWVd4elpUdHBaaWh1UFQwOU1DWW1jM1JoZEdVdWJtVmxaRkpsWVdSaFlteGxKaVlvYzNSaGRHVXViR1Z1WjNSb1BqMXpkR0YwWlM1b2FXZG9WMkYwWlhKTllYSnJmSHh6ZEdGMFpTNWxibVJsWkNrcGUyUmxZblZuS0Z3aWNtVmhaRG9nWlcxcGRGSmxZV1JoWW14bFhDSXNjM1JoZEdVdWJHVnVaM1JvTEhOMFlYUmxMbVZ1WkdWa0tUdHBaaWh6ZEdGMFpTNXNaVzVuZEdnOVBUMHdKaVp6ZEdGMFpTNWxibVJsWkNsbGJtUlNaV0ZrWVdKc1pTaDBhR2x6S1R0bGJITmxJR1Z0YVhSU1pXRmtZV0pzWlNoMGFHbHpLVHR5WlhSMWNtNGdiblZzYkgxdVBXaHZkMDExWTJoVWIxSmxZV1FvYml4emRHRjBaU2s3YVdZb2JqMDlQVEFtSm5OMFlYUmxMbVZ1WkdWa0tYdHBaaWh6ZEdGMFpTNXNaVzVuZEdnOVBUMHdLV1Z1WkZKbFlXUmhZbXhsS0hSb2FYTXBPM0psZEhWeWJpQnVkV3hzZlhaaGNpQmtiMUpsWVdROWMzUmhkR1V1Ym1WbFpGSmxZV1JoWW14bE8yUmxZblZuS0Z3aWJtVmxaQ0J5WldGa1lXSnNaVndpTEdSdlVtVmhaQ2s3YVdZb2MzUmhkR1V1YkdWdVozUm9QVDA5TUh4OGMzUmhkR1V1YkdWdVozUm9MVzQ4YzNSaGRHVXVhR2xuYUZkaGRHVnlUV0Z5YXlsN1pHOVNaV0ZrUFhSeWRXVTdaR1ZpZFdjb1hDSnNaVzVuZEdnZ2JHVnpjeUIwYUdGdUlIZGhkR1Z5YldGeWExd2lMR1J2VW1WaFpDbDlhV1lvYzNSaGRHVXVaVzVrWldSOGZITjBZWFJsTG5KbFlXUnBibWNwZTJSdlVtVmhaRDFtWVd4elpUdGtaV0oxWnloY0luSmxZV1JwYm1jZ2IzSWdaVzVrWldSY0lpeGtiMUpsWVdRcGZXVnNjMlVnYVdZb1pHOVNaV0ZrS1h0a1pXSjFaeWhjSW1SdklISmxZV1JjSWlrN2MzUmhkR1V1Y21WaFpHbHVaejEwY25WbE8zTjBZWFJsTG5ONWJtTTlkSEoxWlR0cFppaHpkR0YwWlM1c1pXNW5kR2c5UFQwd0tYTjBZWFJsTG01bFpXUlNaV0ZrWVdKc1pUMTBjblZsTzNSb2FYTXVYM0psWVdRb2MzUmhkR1V1YUdsbmFGZGhkR1Z5VFdGeWF5azdjM1JoZEdVdWMzbHVZejFtWVd4elpUdHBaaWdoYzNSaGRHVXVjbVZoWkdsdVp5bHVQV2h2ZDAxMVkyaFViMUpsWVdRb2JrOXlhV2NzYzNSaGRHVXBmWFpoY2lCeVpYUTdhV1lvYmo0d0tYSmxkRDFtY205dFRHbHpkQ2h1TEhOMFlYUmxLVHRsYkhObElISmxkRDF1ZFd4c08ybG1LSEpsZEQwOVBXNTFiR3dwZTNOMFlYUmxMbTVsWldSU1pXRmtZV0pzWlQxMGNuVmxPMjQ5TUgxbGJITmxlM04wWVhSbExteGxibWQwYUMwOWJuMXBaaWh6ZEdGMFpTNXNaVzVuZEdnOVBUMHdLWHRwWmlnaGMzUmhkR1V1Wlc1a1pXUXBjM1JoZEdVdWJtVmxaRkpsWVdSaFlteGxQWFJ5ZFdVN2FXWW9iazl5YVdjaFBUMXVKaVp6ZEdGMFpTNWxibVJsWkNsbGJtUlNaV0ZrWVdKc1pTaDBhR2x6S1gxcFppaHlaWFFoUFQxdWRXeHNLWFJvYVhNdVpXMXBkQ2hjSW1SaGRHRmNJaXh5WlhRcE8zSmxkSFZ5YmlCeVpYUjlPMloxYm1OMGFXOXVJR05vZFc1clNXNTJZV3hwWkNoemRHRjBaU3hqYUhWdWF5bDdkbUZ5SUdWeVBXNTFiR3c3YVdZb0lVSjFabVpsY2k1cGMwSjFabVpsY2loamFIVnVheWttSm5SNWNHVnZaaUJqYUhWdWF5RTlQVndpYzNSeWFXNW5YQ0ltSm1Ob2RXNXJJVDA5Ym5Wc2JDWW1ZMmgxYm1zaFBUMTFibVJsWm1sdVpXUW1KaUZ6ZEdGMFpTNXZZbXBsWTNSTmIyUmxLWHRsY2oxdVpYY2dWSGx3WlVWeWNtOXlLRndpU1c1MllXeHBaQ0J1YjI0dGMzUnlhVzVuTDJKMVptWmxjaUJqYUhWdWExd2lLWDF5WlhSMWNtNGdaWEo5Wm5WdVkzUnBiMjRnYjI1RmIyWkRhSFZ1YXloemRISmxZVzBzYzNSaGRHVXBlMmxtS0hOMFlYUmxMbVZ1WkdWa0tYSmxkSFZ5Ymp0cFppaHpkR0YwWlM1a1pXTnZaR1Z5S1h0MllYSWdZMmgxYm1zOWMzUmhkR1V1WkdWamIyUmxjaTVsYm1Rb0tUdHBaaWhqYUhWdWF5WW1ZMmgxYm1zdWJHVnVaM1JvS1h0emRHRjBaUzVpZFdabVpYSXVjSFZ6YUNoamFIVnVheWs3YzNSaGRHVXViR1Z1WjNSb0t6MXpkR0YwWlM1dlltcGxZM1JOYjJSbFB6RTZZMmgxYm1zdWJHVnVaM1JvZlgxemRHRjBaUzVsYm1SbFpEMTBjblZsTzJWdGFYUlNaV0ZrWVdKc1pTaHpkSEpsWVcwcGZXWjFibU4wYVc5dUlHVnRhWFJTWldGa1lXSnNaU2h6ZEhKbFlXMHBlM1poY2lCemRHRjBaVDF6ZEhKbFlXMHVYM0psWVdSaFlteGxVM1JoZEdVN2MzUmhkR1V1Ym1WbFpGSmxZV1JoWW14bFBXWmhiSE5sTzJsbUtDRnpkR0YwWlM1bGJXbDBkR1ZrVW1WaFpHRmliR1VwZTJSbFluVm5LRndpWlcxcGRGSmxZV1JoWW14bFhDSXNjM1JoZEdVdVpteHZkMmx1WnlrN2MzUmhkR1V1WlcxcGRIUmxaRkpsWVdSaFlteGxQWFJ5ZFdVN2FXWW9jM1JoZEdVdWMzbHVZeWx3Y205alpYTnpUbVY0ZEZScFkyc29aVzFwZEZKbFlXUmhZbXhsWHl4emRISmxZVzBwTzJWc2MyVWdaVzFwZEZKbFlXUmhZbXhsWHloemRISmxZVzBwZlgxbWRXNWpkR2x2YmlCbGJXbDBVbVZoWkdGaWJHVmZLSE4wY21WaGJTbDdaR1ZpZFdjb1hDSmxiV2wwSUhKbFlXUmhZbXhsWENJcE8zTjBjbVZoYlM1bGJXbDBLRndpY21WaFpHRmliR1ZjSWlrN1pteHZkeWh6ZEhKbFlXMHBmV1oxYm1OMGFXOXVJRzFoZVdKbFVtVmhaRTF2Y21Vb2MzUnlaV0Z0TEhOMFlYUmxLWHRwWmlnaGMzUmhkR1V1Y21WaFpHbHVaMDF2Y21VcGUzTjBZWFJsTG5KbFlXUnBibWROYjNKbFBYUnlkV1U3Y0hKdlkyVnpjMDVsZUhSVWFXTnJLRzFoZVdKbFVtVmhaRTF2Y21WZkxITjBjbVZoYlN4emRHRjBaU2w5ZldaMWJtTjBhVzl1SUcxaGVXSmxVbVZoWkUxdmNtVmZLSE4wY21WaGJTeHpkR0YwWlNsN2RtRnlJR3hsYmoxemRHRjBaUzVzWlc1bmRHZzdkMmhwYkdVb0lYTjBZWFJsTG5KbFlXUnBibWNtSmlGemRHRjBaUzVtYkc5M2FXNW5KaVloYzNSaGRHVXVaVzVrWldRbUpuTjBZWFJsTG14bGJtZDBhRHh6ZEdGMFpTNW9hV2RvVjJGMFpYSk5ZWEpyS1h0a1pXSjFaeWhjSW0xaGVXSmxVbVZoWkUxdmNtVWdjbVZoWkNBd1hDSXBPM04wY21WaGJTNXlaV0ZrS0RBcE8ybG1LR3hsYmowOVBYTjBZWFJsTG14bGJtZDBhQ2xpY21WaGF6dGxiSE5sSUd4bGJqMXpkR0YwWlM1c1pXNW5kR2g5YzNSaGRHVXVjbVZoWkdsdVowMXZjbVU5Wm1Gc2MyVjlVbVZoWkdGaWJHVXVjSEp2ZEc5MGVYQmxMbDl5WldGa1BXWjFibU4wYVc5dUtHNHBlM1JvYVhNdVpXMXBkQ2hjSW1WeWNtOXlYQ0lzYm1WM0lFVnljbTl5S0Z3aWJtOTBJR2x0Y0d4bGJXVnVkR1ZrWENJcEtYMDdVbVZoWkdGaWJHVXVjSEp2ZEc5MGVYQmxMbkJwY0dVOVpuVnVZM1JwYjI0b1pHVnpkQ3h3YVhCbFQzQjBjeWw3ZG1GeUlITnlZejEwYUdsek8zWmhjaUJ6ZEdGMFpUMTBhR2x6TGw5eVpXRmtZV0pzWlZOMFlYUmxPM04zYVhSamFDaHpkR0YwWlM1d2FYQmxjME52ZFc1MEtYdGpZWE5sSURBNmMzUmhkR1V1Y0dsd1pYTTlaR1Z6ZER0aWNtVmhhenRqWVhObElERTZjM1JoZEdVdWNHbHdaWE05VzNOMFlYUmxMbkJwY0dWekxHUmxjM1JkTzJKeVpXRnJPMlJsWm1GMWJIUTZjM1JoZEdVdWNHbHdaWE11Y0hWemFDaGtaWE4wS1R0aWNtVmhhMzF6ZEdGMFpTNXdhWEJsYzBOdmRXNTBLejB4TzJSbFluVm5LRndpY0dsd1pTQmpiM1Z1ZEQwbFpDQnZjSFJ6UFNWcVhDSXNjM1JoZEdVdWNHbHdaWE5EYjNWdWRDeHdhWEJsVDNCMGN5azdkbUZ5SUdSdlJXNWtQU2doY0dsd1pVOXdkSE44ZkhCcGNHVlBjSFJ6TG1WdVpDRTlQV1poYkhObEtTWW1aR1Z6ZENFOVBYQnliMk5sYzNNdWMzUmtiM1YwSmlaa1pYTjBJVDA5Y0hKdlkyVnpjeTV6ZEdSbGNuSTdkbUZ5SUdWdVpFWnVQV1J2Ulc1a1AyOXVaVzVrT21Oc1pXRnVkWEE3YVdZb2MzUmhkR1V1Wlc1a1JXMXBkSFJsWkNsd2NtOWpaWE56VG1WNGRGUnBZMnNvWlc1a1JtNHBPMlZzYzJVZ2MzSmpMbTl1WTJVb1hDSmxibVJjSWl4bGJtUkdiaWs3WkdWemRDNXZiaWhjSW5WdWNHbHdaVndpTEc5dWRXNXdhWEJsS1R0bWRXNWpkR2x2YmlCdmJuVnVjR2x3WlNoeVpXRmtZV0pzWlNsN1pHVmlkV2NvWENKdmJuVnVjR2x3WlZ3aUtUdHBaaWh5WldGa1lXSnNaVDA5UFhOeVl5bDdZMnhsWVc1MWNDZ3BmWDFtZFc1amRHbHZiaUJ2Ym1WdVpDZ3BlMlJsWW5WbktGd2liMjVsYm1SY0lpazdaR1Z6ZEM1bGJtUW9LWDEyWVhJZ2IyNWtjbUZwYmoxd2FYQmxUMjVFY21GcGJpaHpjbU1wTzJSbGMzUXViMjRvWENKa2NtRnBibHdpTEc5dVpISmhhVzRwTzNaaGNpQmpiR1ZoYm1Wa1ZYQTlabUZzYzJVN1puVnVZM1JwYjI0Z1kyeGxZVzUxY0NncGUyUmxZblZuS0Z3aVkyeGxZVzUxY0Z3aUtUdGtaWE4wTG5KbGJXOTJaVXhwYzNSbGJtVnlLRndpWTJ4dmMyVmNJaXh2Ym1Oc2IzTmxLVHRrWlhOMExuSmxiVzkyWlV4cGMzUmxibVZ5S0Z3aVptbHVhWE5vWENJc2IyNW1hVzVwYzJncE8yUmxjM1F1Y21WdGIzWmxUR2x6ZEdWdVpYSW9YQ0prY21GcGJsd2lMRzl1WkhKaGFXNHBPMlJsYzNRdWNtVnRiM1psVEdsemRHVnVaWElvWENKbGNuSnZjbHdpTEc5dVpYSnliM0lwTzJSbGMzUXVjbVZ0YjNabFRHbHpkR1Z1WlhJb1hDSjFibkJwY0dWY0lpeHZiblZ1Y0dsd1pTazdjM0pqTG5KbGJXOTJaVXhwYzNSbGJtVnlLRndpWlc1a1hDSXNiMjVsYm1RcE8zTnlZeTV5WlcxdmRtVk1hWE4wWlc1bGNpaGNJbVZ1WkZ3aUxHTnNaV0Z1ZFhBcE8zTnlZeTV5WlcxdmRtVk1hWE4wWlc1bGNpaGNJbVJoZEdGY0lpeHZibVJoZEdFcE8yTnNaV0Z1WldSVmNEMTBjblZsTzJsbUtITjBZWFJsTG1GM1lXbDBSSEpoYVc0bUppZ2haR1Z6ZEM1ZmQzSnBkR0ZpYkdWVGRHRjBaWHg4WkdWemRDNWZkM0pwZEdGaWJHVlRkR0YwWlM1dVpXVmtSSEpoYVc0cEtXOXVaSEpoYVc0b0tYMTJZWElnYVc1amNtVmhjMlZrUVhkaGFYUkVjbUZwYmoxbVlXeHpaVHR6Y21NdWIyNG9YQ0prWVhSaFhDSXNiMjVrWVhSaEtUdG1kVzVqZEdsdmJpQnZibVJoZEdFb1kyaDFibXNwZTJSbFluVm5LRndpYjI1a1lYUmhYQ0lwTzJsdVkzSmxZWE5sWkVGM1lXbDBSSEpoYVc0OVptRnNjMlU3ZG1GeUlISmxkRDFrWlhOMExuZHlhWFJsS0dOb2RXNXJLVHRwWmlobVlXeHpaVDA5UFhKbGRDWW1JV2x1WTNKbFlYTmxaRUYzWVdsMFJISmhhVzRwZTJsbUtDaHpkR0YwWlM1d2FYQmxjME52ZFc1MFBUMDlNU1ltYzNSaGRHVXVjR2x3WlhNOVBUMWtaWE4wZkh4emRHRjBaUzV3YVhCbGMwTnZkVzUwUGpFbUptbHVaR1Y0VDJZb2MzUmhkR1V1Y0dsd1pYTXNaR1Z6ZENraFBUMHRNU2ttSmlGamJHVmhibVZrVlhBcGUyUmxZblZuS0Z3aVptRnNjMlVnZDNKcGRHVWdjbVZ6Y0c5dWMyVXNJSEJoZFhObFhDSXNjM0pqTGw5eVpXRmtZV0pzWlZOMFlYUmxMbUYzWVdsMFJISmhhVzRwTzNOeVl5NWZjbVZoWkdGaWJHVlRkR0YwWlM1aGQyRnBkRVJ5WVdsdUt5czdhVzVqY21WaGMyVmtRWGRoYVhSRWNtRnBiajEwY25WbGZYTnlZeTV3WVhWelpTZ3BmWDFtZFc1amRHbHZiaUJ2Ym1WeWNtOXlLR1Z5S1h0a1pXSjFaeWhjSW05dVpYSnliM0pjSWl4bGNpazdkVzV3YVhCbEtDazdaR1Z6ZEM1eVpXMXZkbVZNYVhOMFpXNWxjaWhjSW1WeWNtOXlYQ0lzYjI1bGNuSnZjaWs3YVdZb1JVVnNhWE4wWlc1bGNrTnZkVzUwS0dSbGMzUXNYQ0psY25KdmNsd2lLVDA5UFRBcFpHVnpkQzVsYldsMEtGd2laWEp5YjNKY0lpeGxjaWw5Y0hKbGNHVnVaRXhwYzNSbGJtVnlLR1JsYzNRc1hDSmxjbkp2Y2x3aUxHOXVaWEp5YjNJcE8yWjFibU4wYVc5dUlHOXVZMnh2YzJVb0tYdGtaWE4wTG5KbGJXOTJaVXhwYzNSbGJtVnlLRndpWm1sdWFYTm9YQ0lzYjI1bWFXNXBjMmdwTzNWdWNHbHdaU2dwZldSbGMzUXViMjVqWlNoY0ltTnNiM05sWENJc2IyNWpiRzl6WlNrN1puVnVZM1JwYjI0Z2IyNW1hVzVwYzJnb0tYdGtaV0oxWnloY0ltOXVabWx1YVhOb1hDSXBPMlJsYzNRdWNtVnRiM1psVEdsemRHVnVaWElvWENKamJHOXpaVndpTEc5dVkyeHZjMlVwTzNWdWNHbHdaU2dwZldSbGMzUXViMjVqWlNoY0ltWnBibWx6YUZ3aUxHOXVabWx1YVhOb0tUdG1kVzVqZEdsdmJpQjFibkJwY0dVb0tYdGtaV0oxWnloY0luVnVjR2x3WlZ3aUtUdHpjbU11ZFc1d2FYQmxLR1JsYzNRcGZXUmxjM1F1WlcxcGRDaGNJbkJwY0dWY0lpeHpjbU1wTzJsbUtDRnpkR0YwWlM1bWJHOTNhVzVuS1h0a1pXSjFaeWhjSW5CcGNHVWdjbVZ6ZFcxbFhDSXBPM055WXk1eVpYTjFiV1VvS1gxeVpYUjFjbTRnWkdWemRIMDdablZ1WTNScGIyNGdjR2x3WlU5dVJISmhhVzRvYzNKaktYdHlaWFIxY200Z1puVnVZM1JwYjI0b0tYdDJZWElnYzNSaGRHVTljM0pqTGw5eVpXRmtZV0pzWlZOMFlYUmxPMlJsWW5WbktGd2ljR2x3WlU5dVJISmhhVzVjSWl4emRHRjBaUzVoZDJGcGRFUnlZV2x1S1R0cFppaHpkR0YwWlM1aGQyRnBkRVJ5WVdsdUtYTjBZWFJsTG1GM1lXbDBSSEpoYVc0dExUdHBaaWh6ZEdGMFpTNWhkMkZwZEVSeVlXbHVQVDA5TUNZbVJVVnNhWE4wWlc1bGNrTnZkVzUwS0hOeVl5eGNJbVJoZEdGY0lpa3BlM04wWVhSbExtWnNiM2RwYm1jOWRISjFaVHRtYkc5M0tITnlZeWw5ZlgxU1pXRmtZV0pzWlM1d2NtOTBiM1I1Y0dVdWRXNXdhWEJsUFdaMWJtTjBhVzl1S0dSbGMzUXBlM1poY2lCemRHRjBaVDEwYUdsekxsOXlaV0ZrWVdKc1pWTjBZWFJsTzJsbUtITjBZWFJsTG5CcGNHVnpRMjkxYm5ROVBUMHdLWEpsZEhWeWJpQjBhR2x6TzJsbUtITjBZWFJsTG5CcGNHVnpRMjkxYm5ROVBUMHhLWHRwWmloa1pYTjBKaVprWlhOMElUMDljM1JoZEdVdWNHbHdaWE1wY21WMGRYSnVJSFJvYVhNN2FXWW9JV1JsYzNRcFpHVnpkRDF6ZEdGMFpTNXdhWEJsY3p0emRHRjBaUzV3YVhCbGN6MXVkV3hzTzNOMFlYUmxMbkJwY0dWelEyOTFiblE5TUR0emRHRjBaUzVtYkc5M2FXNW5QV1poYkhObE8ybG1LR1JsYzNRcFpHVnpkQzVsYldsMEtGd2lkVzV3YVhCbFhDSXNkR2hwY3lrN2NtVjBkWEp1SUhSb2FYTjlhV1lvSVdSbGMzUXBlM1poY2lCa1pYTjBjejF6ZEdGMFpTNXdhWEJsY3p0MllYSWdiR1Z1UFhOMFlYUmxMbkJwY0dWelEyOTFiblE3YzNSaGRHVXVjR2x3WlhNOWJuVnNiRHR6ZEdGMFpTNXdhWEJsYzBOdmRXNTBQVEE3YzNSaGRHVXVabXh2ZDJsdVp6MW1ZV3h6WlR0bWIzSW9kbUZ5SUY5cFBUQTdYMms4YkdWdU8xOXBLeXNwZTJSbGMzUnpXMTlwWFM1bGJXbDBLRndpZFc1d2FYQmxYQ0lzZEdocGN5bDljbVYwZFhKdUlIUm9hWE45ZG1GeUlHazlhVzVrWlhoUFppaHpkR0YwWlM1d2FYQmxjeXhrWlhOMEtUdHBaaWhwUFQwOUxURXBjbVYwZFhKdUlIUm9hWE03YzNSaGRHVXVjR2x3WlhNdWMzQnNhV05sS0drc01TazdjM1JoZEdVdWNHbHdaWE5EYjNWdWRDMDlNVHRwWmloemRHRjBaUzV3YVhCbGMwTnZkVzUwUFQwOU1TbHpkR0YwWlM1d2FYQmxjejF6ZEdGMFpTNXdhWEJsYzFzd1hUdGtaWE4wTG1WdGFYUW9YQ0oxYm5CcGNHVmNJaXgwYUdsektUdHlaWFIxY200Z2RHaHBjMzA3VW1WaFpHRmliR1V1Y0hKdmRHOTBlWEJsTG05dVBXWjFibU4wYVc5dUtHVjJMR1p1S1h0MllYSWdjbVZ6UFZOMGNtVmhiUzV3Y205MGIzUjVjR1V1YjI0dVkyRnNiQ2gwYUdsekxHVjJMR1p1S1R0cFppaGxkajA5UFZ3aVpHRjBZVndpS1h0cFppaDBhR2x6TGw5eVpXRmtZV0pzWlZOMFlYUmxMbVpzYjNkcGJtY2hQVDFtWVd4elpTbDBhR2x6TG5KbGMzVnRaU2dwZldWc2MyVWdhV1lvWlhZOVBUMWNJbkpsWVdSaFlteGxYQ0lwZTNaaGNpQnpkR0YwWlQxMGFHbHpMbDl5WldGa1lXSnNaVk4wWVhSbE8ybG1LQ0Z6ZEdGMFpTNWxibVJGYldsMGRHVmtKaVloYzNSaGRHVXVjbVZoWkdGaWJHVk1hWE4wWlc1cGJtY3BlM04wWVhSbExuSmxZV1JoWW14bFRHbHpkR1Z1YVc1blBYTjBZWFJsTG01bFpXUlNaV0ZrWVdKc1pUMTBjblZsTzNOMFlYUmxMbVZ0YVhSMFpXUlNaV0ZrWVdKc1pUMW1ZV3h6WlR0cFppZ2hjM1JoZEdVdWNtVmhaR2x1WnlsN2NISnZZMlZ6YzA1bGVIUlVhV05yS0c1U1pXRmthVzVuVG1WNGRGUnBZMnNzZEdocGN5bDlaV3h6WlNCcFppaHpkR0YwWlM1c1pXNW5kR2dwZTJWdGFYUlNaV0ZrWVdKc1pTaDBhR2x6TEhOMFlYUmxLWDE5ZlhKbGRIVnliaUJ5WlhOOU8xSmxZV1JoWW14bExuQnliM1J2ZEhsd1pTNWhaR1JNYVhOMFpXNWxjajFTWldGa1lXSnNaUzV3Y205MGIzUjVjR1V1YjI0N1puVnVZM1JwYjI0Z2JsSmxZV1JwYm1kT1pYaDBWR2xqYXloelpXeG1LWHRrWldKMVp5aGNJbkpsWVdSaFlteGxJRzVsZUhSMGFXTnJJSEpsWVdRZ01Gd2lLVHR6Wld4bUxuSmxZV1FvTUNsOVVtVmhaR0ZpYkdVdWNISnZkRzkwZVhCbExuSmxjM1Z0WlQxbWRXNWpkR2x2YmlncGUzWmhjaUJ6ZEdGMFpUMTBhR2x6TGw5eVpXRmtZV0pzWlZOMFlYUmxPMmxtS0NGemRHRjBaUzVtYkc5M2FXNW5LWHRrWldKMVp5aGNJbkpsYzNWdFpWd2lLVHR6ZEdGMFpTNW1iRzkzYVc1blBYUnlkV1U3Y21WemRXMWxLSFJvYVhNc2MzUmhkR1VwZlhKbGRIVnliaUIwYUdsemZUdG1kVzVqZEdsdmJpQnlaWE4xYldVb2MzUnlaV0Z0TEhOMFlYUmxLWHRwWmlnaGMzUmhkR1V1Y21WemRXMWxVMk5vWldSMWJHVmtLWHR6ZEdGMFpTNXlaWE4xYldWVFkyaGxaSFZzWldROWRISjFaVHR3Y205alpYTnpUbVY0ZEZScFkyc29jbVZ6ZFcxbFh5eHpkSEpsWVcwc2MzUmhkR1VwZlgxbWRXNWpkR2x2YmlCeVpYTjFiV1ZmS0hOMGNtVmhiU3h6ZEdGMFpTbDdhV1lvSVhOMFlYUmxMbkpsWVdScGJtY3BlMlJsWW5WbktGd2ljbVZ6ZFcxbElISmxZV1FnTUZ3aUtUdHpkSEpsWVcwdWNtVmhaQ2d3S1gxemRHRjBaUzV5WlhOMWJXVlRZMmhsWkhWc1pXUTlabUZzYzJVN2MzUmhkR1V1WVhkaGFYUkVjbUZwYmowd08zTjBjbVZoYlM1bGJXbDBLRndpY21WemRXMWxYQ0lwTzJac2IzY29jM1J5WldGdEtUdHBaaWh6ZEdGMFpTNW1iRzkzYVc1bkppWWhjM1JoZEdVdWNtVmhaR2x1WnlsemRISmxZVzB1Y21WaFpDZ3dLWDFTWldGa1lXSnNaUzV3Y205MGIzUjVjR1V1Y0dGMWMyVTlablZ1WTNScGIyNG9LWHRrWldKMVp5aGNJbU5oYkd3Z2NHRjFjMlVnWm14dmQybHVaejBsYWx3aUxIUm9hWE11WDNKbFlXUmhZbXhsVTNSaGRHVXVabXh2ZDJsdVp5azdhV1lvWm1Gc2MyVWhQVDEwYUdsekxsOXlaV0ZrWVdKc1pWTjBZWFJsTG1ac2IzZHBibWNwZTJSbFluVm5LRndpY0dGMWMyVmNJaWs3ZEdocGN5NWZjbVZoWkdGaWJHVlRkR0YwWlM1bWJHOTNhVzVuUFdaaGJITmxPM1JvYVhNdVpXMXBkQ2hjSW5CaGRYTmxYQ0lwZlhKbGRIVnliaUIwYUdsemZUdG1kVzVqZEdsdmJpQm1iRzkzS0hOMGNtVmhiU2w3ZG1GeUlITjBZWFJsUFhOMGNtVmhiUzVmY21WaFpHRmliR1ZUZEdGMFpUdGtaV0oxWnloY0ltWnNiM2RjSWl4emRHRjBaUzVtYkc5M2FXNW5LVHQzYUdsc1pTaHpkR0YwWlM1bWJHOTNhVzVuSmlaemRISmxZVzB1Y21WaFpDZ3BJVDA5Ym5Wc2JDbDdmWDFTWldGa1lXSnNaUzV3Y205MGIzUjVjR1V1ZDNKaGNEMW1kVzVqZEdsdmJpaHpkSEpsWVcwcGUzWmhjaUJ6ZEdGMFpUMTBhR2x6TGw5eVpXRmtZV0pzWlZOMFlYUmxPM1poY2lCd1lYVnpaV1E5Wm1Gc2MyVTdkbUZ5SUhObGJHWTlkR2hwY3p0emRISmxZVzB1YjI0b1hDSmxibVJjSWl4bWRXNWpkR2x2YmlncGUyUmxZblZuS0Z3aWQzSmhjSEJsWkNCbGJtUmNJaWs3YVdZb2MzUmhkR1V1WkdWamIyUmxjaVltSVhOMFlYUmxMbVZ1WkdWa0tYdDJZWElnWTJoMWJtczljM1JoZEdVdVpHVmpiMlJsY2k1bGJtUW9LVHRwWmloamFIVnVheVltWTJoMWJtc3ViR1Z1WjNSb0tYTmxiR1l1Y0hWemFDaGphSFZ1YXlsOWMyVnNaaTV3ZFhOb0tHNTFiR3dwZlNrN2MzUnlaV0Z0TG05dUtGd2laR0YwWVZ3aUxHWjFibU4wYVc5dUtHTm9kVzVyS1h0a1pXSjFaeWhjSW5keVlYQndaV1FnWkdGMFlWd2lLVHRwWmloemRHRjBaUzVrWldOdlpHVnlLV05vZFc1clBYTjBZWFJsTG1SbFkyOWtaWEl1ZDNKcGRHVW9ZMmgxYm1zcE8ybG1LSE4wWVhSbExtOWlhbVZqZEUxdlpHVW1KaWhqYUhWdWF6MDlQVzUxYkd4OGZHTm9kVzVyUFQwOWRXNWtaV1pwYm1Wa0tTbHlaWFIxY200N1pXeHpaU0JwWmlnaGMzUmhkR1V1YjJKcVpXTjBUVzlrWlNZbUtDRmphSFZ1YTN4OElXTm9kVzVyTG14bGJtZDBhQ2twY21WMGRYSnVPM1poY2lCeVpYUTljMlZzWmk1d2RYTm9LR05vZFc1cktUdHBaaWdoY21WMEtYdHdZWFZ6WldROWRISjFaVHR6ZEhKbFlXMHVjR0YxYzJVb0tYMTlLVHRtYjNJb2RtRnlJR2tnYVc0Z2MzUnlaV0Z0S1h0cFppaDBhR2x6VzJsZFBUMDlkVzVrWldacGJtVmtKaVowZVhCbGIyWWdjM1J5WldGdFcybGRQVDA5WENKbWRXNWpkR2x2Ymx3aUtYdDBhR2x6VzJsZFBXWjFibU4wYVc5dUtHMWxkR2h2WkNsN2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUhOMGNtVmhiVnR0WlhSb2IyUmRMbUZ3Y0d4NUtITjBjbVZoYlN4aGNtZDFiV1Z1ZEhNcGZYMG9hU2w5ZlhaaGNpQmxkbVZ1ZEhNOVcxd2laWEp5YjNKY0lpeGNJbU5zYjNObFhDSXNYQ0prWlhOMGNtOTVYQ0lzWENKd1lYVnpaVndpTEZ3aWNtVnpkVzFsWENKZE8yWnZja1ZoWTJnb1pYWmxiblJ6TEdaMWJtTjBhVzl1S0dWMktYdHpkSEpsWVcwdWIyNG9aWFlzYzJWc1ppNWxiV2wwTG1KcGJtUW9jMlZzWml4bGRpa3BmU2s3YzJWc1ppNWZjbVZoWkQxbWRXNWpkR2x2YmlodUtYdGtaV0oxWnloY0luZHlZWEJ3WldRZ1gzSmxZV1JjSWl4dUtUdHBaaWh3WVhWelpXUXBlM0JoZFhObFpEMW1ZV3h6WlR0emRISmxZVzB1Y21WemRXMWxLQ2w5ZlR0eVpYUjFjbTRnYzJWc1puMDdVbVZoWkdGaWJHVXVYMlp5YjIxTWFYTjBQV1p5YjIxTWFYTjBPMloxYm1OMGFXOXVJR1p5YjIxTWFYTjBLRzRzYzNSaGRHVXBlMmxtS0hOMFlYUmxMbXhsYm1kMGFEMDlQVEFwY21WMGRYSnVJRzUxYkd3N2RtRnlJSEpsZER0cFppaHpkR0YwWlM1dlltcGxZM1JOYjJSbEtYSmxkRDF6ZEdGMFpTNWlkV1ptWlhJdWMyaHBablFvS1R0bGJITmxJR2xtS0NGdWZIeHVQajF6ZEdGMFpTNXNaVzVuZEdncGUybG1LSE4wWVhSbExtUmxZMjlrWlhJcGNtVjBQWE4wWVhSbExtSjFabVpsY2k1cWIybHVLRndpWENJcE8yVnNjMlVnYVdZb2MzUmhkR1V1WW5WbVptVnlMbXhsYm1kMGFEMDlQVEVwY21WMFBYTjBZWFJsTG1KMVptWmxjaTVvWldGa0xtUmhkR0U3Wld4elpTQnlaWFE5YzNSaGRHVXVZblZtWm1WeUxtTnZibU5oZENoemRHRjBaUzVzWlc1bmRHZ3BPM04wWVhSbExtSjFabVpsY2k1amJHVmhjaWdwZldWc2MyVjdjbVYwUFdaeWIyMU1hWE4wVUdGeWRHbGhiQ2h1TEhOMFlYUmxMbUoxWm1abGNpeHpkR0YwWlM1a1pXTnZaR1Z5S1gxeVpYUjFjbTRnY21WMGZXWjFibU4wYVc5dUlHWnliMjFNYVhOMFVHRnlkR2xoYkNodUxHeHBjM1FzYUdGelUzUnlhVzVuY3lsN2RtRnlJSEpsZER0cFppaHVQR3hwYzNRdWFHVmhaQzVrWVhSaExteGxibWQwYUNsN2NtVjBQV3hwYzNRdWFHVmhaQzVrWVhSaExuTnNhV05sS0RBc2JpazdiR2x6ZEM1b1pXRmtMbVJoZEdFOWJHbHpkQzVvWldGa0xtUmhkR0V1YzJ4cFkyVW9iaWw5Wld4elpTQnBaaWh1UFQwOWJHbHpkQzVvWldGa0xtUmhkR0V1YkdWdVozUm9LWHR5WlhROWJHbHpkQzV6YUdsbWRDZ3BmV1ZzYzJWN2NtVjBQV2hoYzFOMGNtbHVaM00vWTI5d2VVWnliMjFDZFdabVpYSlRkSEpwYm1jb2JpeHNhWE4wS1RwamIzQjVSbkp2YlVKMVptWmxjaWh1TEd4cGMzUXBmWEpsZEhWeWJpQnlaWFI5Wm5WdVkzUnBiMjRnWTI5d2VVWnliMjFDZFdabVpYSlRkSEpwYm1jb2JpeHNhWE4wS1h0MllYSWdjRDFzYVhOMExtaGxZV1E3ZG1GeUlHTTlNVHQyWVhJZ2NtVjBQWEF1WkdGMFlUdHVMVDF5WlhRdWJHVnVaM1JvTzNkb2FXeGxLSEE5Y0M1dVpYaDBLWHQyWVhJZ2MzUnlQWEF1WkdGMFlUdDJZWElnYm1JOWJqNXpkSEl1YkdWdVozUm9QM04wY2k1c1pXNW5kR2c2Ymp0cFppaHVZajA5UFhOMGNpNXNaVzVuZEdncGNtVjBLejF6ZEhJN1pXeHpaU0J5WlhRclBYTjBjaTV6YkdsalpTZ3dMRzRwTzI0dFBXNWlPMmxtS0c0OVBUMHdLWHRwWmlodVlqMDlQWE4wY2k1c1pXNW5kR2dwZXlzcll6dHBaaWh3TG01bGVIUXBiR2x6ZEM1b1pXRmtQWEF1Ym1WNGREdGxiSE5sSUd4cGMzUXVhR1ZoWkQxc2FYTjBMblJoYVd3OWJuVnNiSDFsYkhObGUyeHBjM1F1YUdWaFpEMXdPM0F1WkdGMFlUMXpkSEl1YzJ4cFkyVW9ibUlwZldKeVpXRnJmU3NyWTMxc2FYTjBMbXhsYm1kMGFDMDlZenR5WlhSMWNtNGdjbVYwZldaMWJtTjBhVzl1SUdOdmNIbEdjbTl0UW5WbVptVnlLRzRzYkdsemRDbDdkbUZ5SUhKbGREMWlkV1ptWlhKVGFHbHRMbUZzYkc5alZXNXpZV1psS0c0cE8zWmhjaUJ3UFd4cGMzUXVhR1ZoWkR0MllYSWdZejB4TzNBdVpHRjBZUzVqYjNCNUtISmxkQ2s3YmkwOWNDNWtZWFJoTG14bGJtZDBhRHQzYUdsc1pTaHdQWEF1Ym1WNGRDbDdkbUZ5SUdKMVpqMXdMbVJoZEdFN2RtRnlJRzVpUFc0K1luVm1MbXhsYm1kMGFEOWlkV1l1YkdWdVozUm9PbTQ3WW5WbUxtTnZjSGtvY21WMExISmxkQzVzWlc1bmRHZ3RiaXd3TEc1aUtUdHVMVDF1WWp0cFppaHVQVDA5TUNsN2FXWW9ibUk5UFQxaWRXWXViR1Z1WjNSb0tYc3JLMk03YVdZb2NDNXVaWGgwS1d4cGMzUXVhR1ZoWkQxd0xtNWxlSFE3Wld4elpTQnNhWE4wTG1obFlXUTliR2x6ZEM1MFlXbHNQVzUxYkd4OVpXeHpaWHRzYVhOMExtaGxZV1E5Y0R0d0xtUmhkR0U5WW5WbUxuTnNhV05sS0c1aUtYMWljbVZoYTMwcksyTjliR2x6ZEM1c1pXNW5kR2d0UFdNN2NtVjBkWEp1SUhKbGRIMW1kVzVqZEdsdmJpQmxibVJTWldGa1lXSnNaU2h6ZEhKbFlXMHBlM1poY2lCemRHRjBaVDF6ZEhKbFlXMHVYM0psWVdSaFlteGxVM1JoZEdVN2FXWW9jM1JoZEdVdWJHVnVaM1JvUGpBcGRHaHliM2NnYm1WM0lFVnljbTl5S0NkY0ltVnVaRkpsWVdSaFlteGxLQ2xjSWlCallXeHNaV1FnYjI0Z2JtOXVMV1Z0Y0hSNUlITjBjbVZoYlNjcE8ybG1LQ0Z6ZEdGMFpTNWxibVJGYldsMGRHVmtLWHR6ZEdGMFpTNWxibVJsWkQxMGNuVmxPM0J5YjJObGMzTk9aWGgwVkdsamF5aGxibVJTWldGa1lXSnNaVTVVTEhOMFlYUmxMSE4wY21WaGJTbDlmV1oxYm1OMGFXOXVJR1Z1WkZKbFlXUmhZbXhsVGxRb2MzUmhkR1VzYzNSeVpXRnRLWHRwWmlnaGMzUmhkR1V1Wlc1a1JXMXBkSFJsWkNZbWMzUmhkR1V1YkdWdVozUm9QVDA5TUNsN2MzUmhkR1V1Wlc1a1JXMXBkSFJsWkQxMGNuVmxPM04wY21WaGJTNXlaV0ZrWVdKc1pUMW1ZV3h6WlR0emRISmxZVzB1WlcxcGRDaGNJbVZ1WkZ3aUtYMTlablZ1WTNScGIyNGdabTl5UldGamFDaDRjeXhtS1h0bWIzSW9kbUZ5SUdrOU1DeHNQWGh6TG14bGJtZDBhRHRwUEd3N2FTc3JLWHRtS0hoelcybGRMR2twZlgxbWRXNWpkR2x2YmlCcGJtUmxlRTltS0hoekxIZ3BlMlp2Y2loMllYSWdhVDB3TEd3OWVITXViR1Z1WjNSb08yazhiRHRwS3lzcGUybG1LSGh6VzJsZFBUMDllQ2x5WlhSMWNtNGdhWDF5WlhSMWNtNHRNWDE5S1M1allXeHNLSFJvYVhNc2NtVnhkV2x5WlNoY0lsOXdjbTlqWlhOelhDSXBLWDBzZTF3aUxpOWZjM1J5WldGdFgyUjFjR3hsZUZ3aU9qUTBMRndpTGk5cGJuUmxjbTVoYkM5emRISmxZVzF6TDBKMVptWmxja3hwYzNSY0lqbzBPU3hmY0hKdlkyVnpjem8wTWl4aWRXWm1aWEk2TlN4Y0ltSjFabVpsY2kxemFHbHRjMXdpT2pRc1hDSmpiM0psTFhWMGFXd3RhWE5jSWpvMkxHVjJaVzUwY3pveU9DeHBibWhsY21sMGN6b3pPQ3hwYzJGeWNtRjVPalF3TEZ3aWNISnZZMlZ6Y3kxdVpYaDBhV05yTFdGeVozTmNJam8wTVN4Y0luTjBjbWx1WjE5a1pXTnZaR1Z5TDF3aU9qVTJMSFYwYVd3Nk0zMWRMRFEzT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHRjSW5WelpTQnpkSEpwWTNSY0lqdHRiMlIxYkdVdVpYaHdiM0owY3oxVWNtRnVjMlp2Y20wN2RtRnlJRVIxY0d4bGVEMXlaWEYxYVhKbEtGd2lMaTlmYzNSeVpXRnRYMlIxY0d4bGVGd2lLVHQyWVhJZ2RYUnBiRDF5WlhGMWFYSmxLRndpWTI5eVpTMTFkR2xzTFdselhDSXBPM1YwYVd3dWFXNW9aWEpwZEhNOWNtVnhkV2x5WlNoY0ltbHVhR1Z5YVhSelhDSXBPM1YwYVd3dWFXNW9aWEpwZEhNb1ZISmhibk5tYjNKdExFUjFjR3hsZUNrN1puVnVZM1JwYjI0Z1ZISmhibk5tYjNKdFUzUmhkR1VvYzNSeVpXRnRLWHQwYUdsekxtRm1kR1Z5VkhKaGJuTm1iM0p0UFdaMWJtTjBhVzl1S0dWeUxHUmhkR0VwZTNKbGRIVnliaUJoWm5SbGNsUnlZVzV6Wm05eWJTaHpkSEpsWVcwc1pYSXNaR0YwWVNsOU8zUm9hWE11Ym1WbFpGUnlZVzV6Wm05eWJUMW1ZV3h6WlR0MGFHbHpMblJ5WVc1elptOXliV2x1WnoxbVlXeHpaVHQwYUdsekxuZHlhWFJsWTJJOWJuVnNiRHQwYUdsekxuZHlhWFJsWTJoMWJtczliblZzYkR0MGFHbHpMbmR5YVhSbFpXNWpiMlJwYm1jOWJuVnNiSDFtZFc1amRHbHZiaUJoWm5SbGNsUnlZVzV6Wm05eWJTaHpkSEpsWVcwc1pYSXNaR0YwWVNsN2RtRnlJSFJ6UFhOMGNtVmhiUzVmZEhKaGJuTm1iM0p0VTNSaGRHVTdkSE11ZEhKaGJuTm1iM0p0YVc1blBXWmhiSE5sTzNaaGNpQmpZajEwY3k1M2NtbDBaV05pTzJsbUtDRmpZaWx5WlhSMWNtNGdjM1J5WldGdExtVnRhWFFvWENKbGNuSnZjbHdpTEc1bGR5QkZjbkp2Y2loY0ltNXZJSGR5YVhSbFkySWdhVzRnVkhKaGJuTm1iM0p0SUdOc1lYTnpYQ0lwS1R0MGN5NTNjbWwwWldOb2RXNXJQVzUxYkd3N2RITXVkM0pwZEdWallqMXVkV3hzTzJsbUtHUmhkR0VoUFQxdWRXeHNKaVprWVhSaElUMDlkVzVrWldacGJtVmtLWE4wY21WaGJTNXdkWE5vS0dSaGRHRXBPMk5pS0dWeUtUdDJZWElnY25NOWMzUnlaV0Z0TGw5eVpXRmtZV0pzWlZOMFlYUmxPM0p6TG5KbFlXUnBibWM5Wm1Gc2MyVTdhV1lvY25NdWJtVmxaRkpsWVdSaFlteGxmSHh5Y3k1c1pXNW5kR2c4Y25NdWFHbG5hRmRoZEdWeVRXRnlheWw3YzNSeVpXRnRMbDl5WldGa0tISnpMbWhwWjJoWFlYUmxjazFoY21zcGZYMW1kVzVqZEdsdmJpQlVjbUZ1YzJadmNtMG9iM0IwYVc5dWN5bDdhV1lvSVNoMGFHbHpJR2x1YzNSaGJtTmxiMllnVkhKaGJuTm1iM0p0S1NseVpYUjFjbTRnYm1WM0lGUnlZVzV6Wm05eWJTaHZjSFJwYjI1ektUdEVkWEJzWlhndVkyRnNiQ2gwYUdsekxHOXdkR2x2Ym5NcE8zUm9hWE11WDNSeVlXNXpabTl5YlZOMFlYUmxQVzVsZHlCVWNtRnVjMlp2Y20xVGRHRjBaU2gwYUdsektUdDJZWElnYzNSeVpXRnRQWFJvYVhNN2RHaHBjeTVmY21WaFpHRmliR1ZUZEdGMFpTNXVaV1ZrVW1WaFpHRmliR1U5ZEhKMVpUdDBhR2x6TGw5eVpXRmtZV0pzWlZOMFlYUmxMbk41Ym1NOVptRnNjMlU3YVdZb2IzQjBhVzl1Y3lsN2FXWW9kSGx3Wlc5bUlHOXdkR2x2Ym5NdWRISmhibk5tYjNKdFBUMDlYQ0ptZFc1amRHbHZibHdpS1hSb2FYTXVYM1J5WVc1elptOXliVDF2Y0hScGIyNXpMblJ5WVc1elptOXliVHRwWmloMGVYQmxiMllnYjNCMGFXOXVjeTVtYkhWemFEMDlQVndpWm5WdVkzUnBiMjVjSWlsMGFHbHpMbDltYkhWemFEMXZjSFJwYjI1ekxtWnNkWE5vZlhSb2FYTXViMjVqWlNoY0luQnlaV1pwYm1semFGd2lMR1oxYm1OMGFXOXVLQ2w3YVdZb2RIbHdaVzltSUhSb2FYTXVYMlpzZFhOb1BUMDlYQ0ptZFc1amRHbHZibHdpS1hSb2FYTXVYMlpzZFhOb0tHWjFibU4wYVc5dUtHVnlLWHRrYjI1bEtITjBjbVZoYlN4bGNpbDlLVHRsYkhObElHUnZibVVvYzNSeVpXRnRLWDBwZlZSeVlXNXpabTl5YlM1d2NtOTBiM1I1Y0dVdWNIVnphRDFtZFc1amRHbHZiaWhqYUhWdWF5eGxibU52WkdsdVp5bDdkR2hwY3k1ZmRISmhibk5tYjNKdFUzUmhkR1V1Ym1WbFpGUnlZVzV6Wm05eWJUMW1ZV3h6WlR0eVpYUjFjbTRnUkhWd2JHVjRMbkJ5YjNSdmRIbHdaUzV3ZFhOb0xtTmhiR3dvZEdocGN5eGphSFZ1YXl4bGJtTnZaR2x1WnlsOU8xUnlZVzV6Wm05eWJTNXdjbTkwYjNSNWNHVXVYM1J5WVc1elptOXliVDFtZFc1amRHbHZiaWhqYUhWdWF5eGxibU52WkdsdVp5eGpZaWw3ZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpVG05MElHbHRjR3hsYldWdWRHVmtYQ0lwZlR0VWNtRnVjMlp2Y20wdWNISnZkRzkwZVhCbExsOTNjbWwwWlQxbWRXNWpkR2x2YmloamFIVnVheXhsYm1OdlpHbHVaeXhqWWlsN2RtRnlJSFJ6UFhSb2FYTXVYM1J5WVc1elptOXliVk4wWVhSbE8zUnpMbmR5YVhSbFkySTlZMkk3ZEhNdWQzSnBkR1ZqYUhWdWF6MWphSFZ1YXp0MGN5NTNjbWwwWldWdVkyOWthVzVuUFdWdVkyOWthVzVuTzJsbUtDRjBjeTUwY21GdWMyWnZjbTFwYm1jcGUzWmhjaUJ5Y3oxMGFHbHpMbDl5WldGa1lXSnNaVk4wWVhSbE8ybG1LSFJ6TG01bFpXUlVjbUZ1YzJadmNtMThmSEp6TG01bFpXUlNaV0ZrWVdKc1pYeDhjbk11YkdWdVozUm9QSEp6TG1ocFoyaFhZWFJsY2sxaGNtc3BkR2hwY3k1ZmNtVmhaQ2h5Y3k1b2FXZG9WMkYwWlhKTllYSnJLWDE5TzFSeVlXNXpabTl5YlM1d2NtOTBiM1I1Y0dVdVgzSmxZV1E5Wm5WdVkzUnBiMjRvYmlsN2RtRnlJSFJ6UFhSb2FYTXVYM1J5WVc1elptOXliVk4wWVhSbE8ybG1LSFJ6TG5keWFYUmxZMmgxYm1zaFBUMXVkV3hzSmlaMGN5NTNjbWwwWldOaUppWWhkSE11ZEhKaGJuTm1iM0p0YVc1bktYdDBjeTUwY21GdWMyWnZjbTFwYm1jOWRISjFaVHQwYUdsekxsOTBjbUZ1YzJadmNtMG9kSE11ZDNKcGRHVmphSFZ1YXl4MGN5NTNjbWwwWldWdVkyOWthVzVuTEhSekxtRm1kR1Z5VkhKaGJuTm1iM0p0S1gxbGJITmxlM1J6TG01bFpXUlVjbUZ1YzJadmNtMDlkSEoxWlgxOU8yWjFibU4wYVc5dUlHUnZibVVvYzNSeVpXRnRMR1Z5S1h0cFppaGxjaWx5WlhSMWNtNGdjM1J5WldGdExtVnRhWFFvWENKbGNuSnZjbHdpTEdWeUtUdDJZWElnZDNNOWMzUnlaV0Z0TGw5M2NtbDBZV0pzWlZOMFlYUmxPM1poY2lCMGN6MXpkSEpsWVcwdVgzUnlZVzV6Wm05eWJWTjBZWFJsTzJsbUtIZHpMbXhsYm1kMGFDbDBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSkRZV3hzYVc1bklIUnlZVzV6Wm05eWJTQmtiMjVsSUhkb1pXNGdkM011YkdWdVozUm9JQ0U5SURCY0lpazdhV1lvZEhNdWRISmhibk5tYjNKdGFXNW5LWFJvY205M0lHNWxkeUJGY25KdmNpaGNJa05oYkd4cGJtY2dkSEpoYm5ObWIzSnRJR1J2Ym1VZ2QyaGxiaUJ6ZEdsc2JDQjBjbUZ1YzJadmNtMXBibWRjSWlrN2NtVjBkWEp1SUhOMGNtVmhiUzV3ZFhOb0tHNTFiR3dwZlgwc2Uxd2lMaTlmYzNSeVpXRnRYMlIxY0d4bGVGd2lPalEwTEZ3aVkyOXlaUzExZEdsc0xXbHpYQ0k2Tml4cGJtaGxjbWwwY3pvek9IMWRMRFE0T2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHNvWm5WdVkzUnBiMjRvY0hKdlkyVnpjeWw3WENKMWMyVWdjM1J5YVdOMFhDSTdiVzlrZFd4bExtVjRjRzl5ZEhNOVYzSnBkR0ZpYkdVN2RtRnlJSEJ5YjJObGMzTk9aWGgwVkdsamF6MXlaWEYxYVhKbEtGd2ljSEp2WTJWemN5MXVaWGgwYVdOckxXRnlaM05jSWlrN2RtRnlJR0Z6ZVc1alYzSnBkR1U5SVhCeWIyTmxjM011WW5KdmQzTmxjaVltVzF3aWRqQXVNVEJjSWl4Y0luWXdMamt1WENKZExtbHVaR1Y0VDJZb2NISnZZMlZ6Y3k1MlpYSnphVzl1TG5Oc2FXTmxLREFzTlNrcFBpMHhQM05sZEVsdGJXVmthV0YwWlRwd2NtOWpaWE56VG1WNGRGUnBZMnM3VjNKcGRHRmliR1V1VjNKcGRHRmliR1ZUZEdGMFpUMVhjbWwwWVdKc1pWTjBZWFJsTzNaaGNpQjFkR2xzUFhKbGNYVnBjbVVvWENKamIzSmxMWFYwYVd3dGFYTmNJaWs3ZFhScGJDNXBibWhsY21sMGN6MXlaWEYxYVhKbEtGd2lhVzVvWlhKcGRITmNJaWs3ZG1GeUlHbHVkR1Z5Ym1Gc1ZYUnBiRDE3WkdWd2NtVmpZWFJsT25KbGNYVnBjbVVvWENKMWRHbHNMV1JsY0hKbFkyRjBaVndpS1gwN2RtRnlJRk4wY21WaGJUc29ablZ1WTNScGIyNG9LWHQwY25sN1UzUnlaV0Z0UFhKbGNYVnBjbVVvWENKemRGd2lLMXdpY21WaGJWd2lLWDFqWVhSamFDaGZLWHQ5Wm1sdVlXeHNlWHRwWmlnaFUzUnlaV0Z0S1ZOMGNtVmhiVDF5WlhGMWFYSmxLRndpWlhabGJuUnpYQ0lwTGtWMlpXNTBSVzFwZEhSbGNuMTlLU2dwTzNaaGNpQkNkV1ptWlhJOWNtVnhkV2x5WlNoY0ltSjFabVpsY2x3aUtTNUNkV1ptWlhJN2RtRnlJR0oxWm1abGNsTm9hVzA5Y21WeGRXbHlaU2hjSW1KMVptWmxjaTF6YUdsdGMxd2lLVHQxZEdsc0xtbHVhR1Z5YVhSektGZHlhWFJoWW14bExGTjBjbVZoYlNrN1puVnVZM1JwYjI0Z2JtOXdLQ2w3ZldaMWJtTjBhVzl1SUZkeWFYUmxVbVZ4S0dOb2RXNXJMR1Z1WTI5a2FXNW5MR05pS1h0MGFHbHpMbU5vZFc1clBXTm9kVzVyTzNSb2FYTXVaVzVqYjJScGJtYzlaVzVqYjJScGJtYzdkR2hwY3k1allXeHNZbUZqYXoxallqdDBhR2x6TG01bGVIUTliblZzYkgxMllYSWdSSFZ3YkdWNE8yWjFibU4wYVc5dUlGZHlhWFJoWW14bFUzUmhkR1VvYjNCMGFXOXVjeXh6ZEhKbFlXMHBlMFIxY0d4bGVEMUVkWEJzWlhoOGZISmxjWFZwY21Vb1hDSXVMMTl6ZEhKbFlXMWZaSFZ3YkdWNFhDSXBPMjl3ZEdsdmJuTTliM0IwYVc5dWMzeDhlMzA3ZEdocGN5NXZZbXBsWTNSTmIyUmxQU0VoYjNCMGFXOXVjeTV2WW1wbFkzUk5iMlJsTzJsbUtITjBjbVZoYlNCcGJuTjBZVzVqWlc5bUlFUjFjR3hsZUNsMGFHbHpMbTlpYW1WamRFMXZaR1U5ZEdocGN5NXZZbXBsWTNSTmIyUmxmSHdoSVc5d2RHbHZibk11ZDNKcGRHRmliR1ZQWW1wbFkzUk5iMlJsTzNaaGNpQm9kMjA5YjNCMGFXOXVjeTVvYVdkb1YyRjBaWEpOWVhKck8zWmhjaUJrWldaaGRXeDBTSGR0UFhSb2FYTXViMkpxWldOMFRXOWtaVDh4TmpveE5pb3hNREkwTzNSb2FYTXVhR2xuYUZkaGRHVnlUV0Z5YXoxb2QyMThmR2gzYlQwOVBUQS9hSGR0T21SbFptRjFiSFJJZDIwN2RHaHBjeTVvYVdkb1YyRjBaWEpOWVhKclBYNStkR2hwY3k1b2FXZG9WMkYwWlhKTllYSnJPM1JvYVhNdWJtVmxaRVJ5WVdsdVBXWmhiSE5sTzNSb2FYTXVaVzVrYVc1blBXWmhiSE5sTzNSb2FYTXVaVzVrWldROVptRnNjMlU3ZEdocGN5NW1hVzVwYzJobFpEMW1ZV3h6WlR0MllYSWdibTlFWldOdlpHVTliM0IwYVc5dWN5NWtaV052WkdWVGRISnBibWR6UFQwOVptRnNjMlU3ZEdocGN5NWtaV052WkdWVGRISnBibWR6UFNGdWIwUmxZMjlrWlR0MGFHbHpMbVJsWm1GMWJIUkZibU52WkdsdVp6MXZjSFJwYjI1ekxtUmxabUYxYkhSRmJtTnZaR2x1WjN4OFhDSjFkR1k0WENJN2RHaHBjeTVzWlc1bmRHZzlNRHQwYUdsekxuZHlhWFJwYm1jOVptRnNjMlU3ZEdocGN5NWpiM0pyWldROU1EdDBhR2x6TG5ONWJtTTlkSEoxWlR0MGFHbHpMbUoxWm1abGNsQnliMk5sYzNOcGJtYzlabUZzYzJVN2RHaHBjeTV2Ym5keWFYUmxQV1oxYm1OMGFXOXVLR1Z5S1h0dmJuZHlhWFJsS0hOMGNtVmhiU3hsY2lsOU8zUm9hWE11ZDNKcGRHVmpZajF1ZFd4c08zUm9hWE11ZDNKcGRHVnNaVzQ5TUR0MGFHbHpMbUoxWm1abGNtVmtVbVZ4ZFdWemREMXVkV3hzTzNSb2FYTXViR0Z6ZEVKMVptWmxjbVZrVW1WeGRXVnpkRDF1ZFd4c08zUm9hWE11Y0dWdVpHbHVaMk5pUFRBN2RHaHBjeTV3Y21WbWFXNXBjMmhsWkQxbVlXeHpaVHQwYUdsekxtVnljbTl5UlcxcGRIUmxaRDFtWVd4elpUdDBhR2x6TG1KMVptWmxjbVZrVW1WeGRXVnpkRU52ZFc1MFBUQTdkR2hwY3k1amIzSnJaV1JTWlhGMVpYTjBjMFp5WldVOWJtVjNJRU52Y210bFpGSmxjWFZsYzNRb2RHaHBjeWw5VjNKcGRHRmliR1ZUZEdGMFpTNXdjbTkwYjNSNWNHVXVaMlYwUW5WbVptVnlQV1oxYm1OMGFXOXVJSGR5YVhSaFlteGxVM1JoZEdWSFpYUkNkV1ptWlhJb0tYdDJZWElnWTNWeWNtVnVkRDEwYUdsekxtSjFabVpsY21Wa1VtVnhkV1Z6ZER0MllYSWdiM1YwUFZ0ZE8zZG9hV3hsS0dOMWNuSmxiblFwZTI5MWRDNXdkWE5vS0dOMWNuSmxiblFwTzJOMWNuSmxiblE5WTNWeWNtVnVkQzV1WlhoMGZYSmxkSFZ5YmlCdmRYUjlPeWhtZFc1amRHbHZiaWdwZTNSeWVYdFBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvVjNKcGRHRmliR1ZUZEdGMFpTNXdjbTkwYjNSNWNHVXNYQ0ppZFdabVpYSmNJaXg3WjJWME9tbHVkR1Z5Ym1Gc1ZYUnBiQzVrWlhCeVpXTmhkR1VvWm5WdVkzUnBiMjRvS1h0eVpYUjFjbTRnZEdocGN5NW5aWFJDZFdabVpYSW9LWDBzWENKZmQzSnBkR0ZpYkdWVGRHRjBaUzVpZFdabVpYSWdhWE1nWkdWd2NtVmpZWFJsWkM0Z1ZYTmxJRjkzY21sMFlXSnNaVk4wWVhSbExtZGxkRUoxWm1abGNpQmNJaXRjSW1sdWMzUmxZV1F1WENJcGZTbDlZMkYwWTJnb1h5bDdmWDBwS0NrN2RtRnlJRVIxY0d4bGVEdG1kVzVqZEdsdmJpQlhjbWwwWVdKc1pTaHZjSFJwYjI1ektYdEVkWEJzWlhnOVJIVndiR1Y0Zkh4eVpYRjFhWEpsS0Z3aUxpOWZjM1J5WldGdFgyUjFjR3hsZUZ3aUtUdHBaaWdoS0hSb2FYTWdhVzV6ZEdGdVkyVnZaaUJYY21sMFlXSnNaU2ttSmlFb2RHaHBjeUJwYm5OMFlXNWpaVzltSUVSMWNHeGxlQ2twY21WMGRYSnVJRzVsZHlCWGNtbDBZV0pzWlNodmNIUnBiMjV6S1R0MGFHbHpMbDkzY21sMFlXSnNaVk4wWVhSbFBXNWxkeUJYY21sMFlXSnNaVk4wWVhSbEtHOXdkR2x2Ym5Nc2RHaHBjeWs3ZEdocGN5NTNjbWwwWVdKc1pUMTBjblZsTzJsbUtHOXdkR2x2Ym5NcGUybG1LSFI1Y0dWdlppQnZjSFJwYjI1ekxuZHlhWFJsUFQwOVhDSm1kVzVqZEdsdmJsd2lLWFJvYVhNdVgzZHlhWFJsUFc5d2RHbHZibk11ZDNKcGRHVTdhV1lvZEhsd1pXOW1JRzl3ZEdsdmJuTXVkM0pwZEdWMlBUMDlYQ0ptZFc1amRHbHZibHdpS1hSb2FYTXVYM2R5YVhSbGRqMXZjSFJwYjI1ekxuZHlhWFJsZG4xVGRISmxZVzB1WTJGc2JDaDBhR2x6S1gxWGNtbDBZV0pzWlM1d2NtOTBiM1I1Y0dVdWNHbHdaVDFtZFc1amRHbHZiaWdwZTNSb2FYTXVaVzFwZENoY0ltVnljbTl5WENJc2JtVjNJRVZ5Y205eUtGd2lRMkZ1Ym05MElIQnBjR1VzSUc1dmRDQnlaV0ZrWVdKc1pWd2lLU2w5TzJaMWJtTjBhVzl1SUhkeWFYUmxRV1owWlhKRmJtUW9jM1J5WldGdExHTmlLWHQyWVhJZ1pYSTlibVYzSUVWeWNtOXlLRndpZDNKcGRHVWdZV1owWlhJZ1pXNWtYQ0lwTzNOMGNtVmhiUzVsYldsMEtGd2laWEp5YjNKY0lpeGxjaWs3Y0hKdlkyVnpjMDVsZUhSVWFXTnJLR05pTEdWeUtYMW1kVzVqZEdsdmJpQjJZV3hwWkVOb2RXNXJLSE4wY21WaGJTeHpkR0YwWlN4amFIVnVheXhqWWlsN2RtRnlJSFpoYkdsa1BYUnlkV1U3ZG1GeUlHVnlQV1poYkhObE8ybG1LR05vZFc1clBUMDliblZzYkNsN1pYSTlibVYzSUZSNWNHVkZjbkp2Y2loY0lrMWhlU0J1YjNRZ2QzSnBkR1VnYm5Wc2JDQjJZV3gxWlhNZ2RHOGdjM1J5WldGdFhDSXBmV1ZzYzJVZ2FXWW9JVUoxWm1abGNpNXBjMEoxWm1abGNpaGphSFZ1YXlrbUpuUjVjR1Z2WmlCamFIVnVheUU5UFZ3aWMzUnlhVzVuWENJbUptTm9kVzVySVQwOWRXNWtaV1pwYm1Wa0ppWWhjM1JoZEdVdWIySnFaV04wVFc5a1pTbDdaWEk5Ym1WM0lGUjVjR1ZGY25KdmNpaGNJa2x1ZG1Gc2FXUWdibTl1TFhOMGNtbHVaeTlpZFdabVpYSWdZMmgxYm10Y0lpbDlhV1lvWlhJcGUzTjBjbVZoYlM1bGJXbDBLRndpWlhKeWIzSmNJaXhsY2lrN2NISnZZMlZ6YzA1bGVIUlVhV05yS0dOaUxHVnlLVHQyWVd4cFpEMW1ZV3h6WlgxeVpYUjFjbTRnZG1Gc2FXUjlWM0pwZEdGaWJHVXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFBXWjFibU4wYVc5dUtHTm9kVzVyTEdWdVkyOWthVzVuTEdOaUtYdDJZWElnYzNSaGRHVTlkR2hwY3k1ZmQzSnBkR0ZpYkdWVGRHRjBaVHQyWVhJZ2NtVjBQV1poYkhObE8ybG1LSFI1Y0dWdlppQmxibU52WkdsdVp6MDlQVndpWm5WdVkzUnBiMjVjSWlsN1kySTlaVzVqYjJScGJtYzdaVzVqYjJScGJtYzliblZzYkgxcFppaENkV1ptWlhJdWFYTkNkV1ptWlhJb1kyaDFibXNwS1dWdVkyOWthVzVuUFZ3aVluVm1abVZ5WENJN1pXeHpaU0JwWmlnaFpXNWpiMlJwYm1jcFpXNWpiMlJwYm1jOWMzUmhkR1V1WkdWbVlYVnNkRVZ1WTI5a2FXNW5PMmxtS0hSNWNHVnZaaUJqWWlFOVBWd2lablZ1WTNScGIyNWNJaWxqWWoxdWIzQTdhV1lvYzNSaGRHVXVaVzVrWldRcGQzSnBkR1ZCWm5SbGNrVnVaQ2gwYUdsekxHTmlLVHRsYkhObElHbG1LSFpoYkdsa1EyaDFibXNvZEdocGN5eHpkR0YwWlN4amFIVnVheXhqWWlrcGUxeHVjM1JoZEdVdWNHVnVaR2x1WjJOaUt5czdjbVYwUFhkeWFYUmxUM0pDZFdabVpYSW9kR2hwY3l4emRHRjBaU3hqYUhWdWF5eGxibU52WkdsdVp5eGpZaWw5Y21WMGRYSnVJSEpsZEgwN1YzSnBkR0ZpYkdVdWNISnZkRzkwZVhCbExtTnZjbXM5Wm5WdVkzUnBiMjRvS1h0MllYSWdjM1JoZEdVOWRHaHBjeTVmZDNKcGRHRmliR1ZUZEdGMFpUdHpkR0YwWlM1amIzSnJaV1FySzMwN1YzSnBkR0ZpYkdVdWNISnZkRzkwZVhCbExuVnVZMjl5YXoxbWRXNWpkR2x2YmlncGUzWmhjaUJ6ZEdGMFpUMTBhR2x6TGw5M2NtbDBZV0pzWlZOMFlYUmxPMmxtS0hOMFlYUmxMbU52Y210bFpDbDdjM1JoZEdVdVkyOXlhMlZrTFMwN2FXWW9JWE4wWVhSbExuZHlhWFJwYm1jbUppRnpkR0YwWlM1amIzSnJaV1FtSmlGemRHRjBaUzVtYVc1cGMyaGxaQ1ltSVhOMFlYUmxMbUoxWm1abGNsQnliMk5sYzNOcGJtY21Kbk4wWVhSbExtSjFabVpsY21Wa1VtVnhkV1Z6ZENsamJHVmhja0oxWm1abGNpaDBhR2x6TEhOMFlYUmxLWDE5TzFkeWFYUmhZbXhsTG5CeWIzUnZkSGx3WlM1elpYUkVaV1poZFd4MFJXNWpiMlJwYm1jOVpuVnVZM1JwYjI0Z2MyVjBSR1ZtWVhWc2RFVnVZMjlrYVc1bktHVnVZMjlrYVc1bktYdHBaaWgwZVhCbGIyWWdaVzVqYjJScGJtYzlQVDFjSW5OMGNtbHVaMXdpS1dWdVkyOWthVzVuUFdWdVkyOWthVzVuTG5SdlRHOTNaWEpEWVhObEtDazdhV1lvSVNoYlhDSm9aWGhjSWl4Y0luVjBaamhjSWl4Y0luVjBaaTA0WENJc1hDSmhjMk5wYVZ3aUxGd2lZbWx1WVhKNVhDSXNYQ0ppWVhObE5qUmNJaXhjSW5WamN6SmNJaXhjSW5WamN5MHlYQ0lzWENKMWRHWXhObXhsWENJc1hDSjFkR1l0TVRac1pWd2lMRndpY21GM1hDSmRMbWx1WkdWNFQyWW9LR1Z1WTI5a2FXNW5LMXdpWENJcExuUnZURzkzWlhKRFlYTmxLQ2twUGkweEtTbDBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpVlc1cmJtOTNiaUJsYm1OdlpHbHVaem9nWENJclpXNWpiMlJwYm1jcE8zUm9hWE11WDNkeWFYUmhZbXhsVTNSaGRHVXVaR1ZtWVhWc2RFVnVZMjlrYVc1blBXVnVZMjlrYVc1bk8zSmxkSFZ5YmlCMGFHbHpmVHRtZFc1amRHbHZiaUJrWldOdlpHVkRhSFZ1YXloemRHRjBaU3hqYUhWdWF5eGxibU52WkdsdVp5bDdhV1lvSVhOMFlYUmxMbTlpYW1WamRFMXZaR1VtSm5OMFlYUmxMbVJsWTI5a1pWTjBjbWx1WjNNaFBUMW1ZV3h6WlNZbWRIbHdaVzltSUdOb2RXNXJQVDA5WENKemRISnBibWRjSWlsN1kyaDFibXM5WW5WbVptVnlVMmhwYlM1bWNtOXRLR05vZFc1ckxHVnVZMjlrYVc1bktYMXlaWFIxY200Z1kyaDFibXQ5Wm5WdVkzUnBiMjRnZDNKcGRHVlBja0oxWm1abGNpaHpkSEpsWVcwc2MzUmhkR1VzWTJoMWJtc3NaVzVqYjJScGJtY3NZMklwZTJOb2RXNXJQV1JsWTI5a1pVTm9kVzVyS0hOMFlYUmxMR05vZFc1ckxHVnVZMjlrYVc1bktUdHBaaWhDZFdabVpYSXVhWE5DZFdabVpYSW9ZMmgxYm1zcEtXVnVZMjlrYVc1blBWd2lZblZtWm1WeVhDSTdkbUZ5SUd4bGJqMXpkR0YwWlM1dlltcGxZM1JOYjJSbFB6RTZZMmgxYm1zdWJHVnVaM1JvTzNOMFlYUmxMbXhsYm1kMGFDczliR1Z1TzNaaGNpQnlaWFE5YzNSaGRHVXViR1Z1WjNSb1BITjBZWFJsTG1ocFoyaFhZWFJsY2sxaGNtczdhV1lvSVhKbGRDbHpkR0YwWlM1dVpXVmtSSEpoYVc0OWRISjFaVHRwWmloemRHRjBaUzUzY21sMGFXNW5mSHh6ZEdGMFpTNWpiM0pyWldRcGUzWmhjaUJzWVhOMFBYTjBZWFJsTG14aGMzUkNkV1ptWlhKbFpGSmxjWFZsYzNRN2MzUmhkR1V1YkdGemRFSjFabVpsY21Wa1VtVnhkV1Z6ZEQxdVpYY2dWM0pwZEdWU1pYRW9ZMmgxYm1zc1pXNWpiMlJwYm1jc1kySXBPMmxtS0d4aGMzUXBlMnhoYzNRdWJtVjRkRDF6ZEdGMFpTNXNZWE4wUW5WbVptVnlaV1JTWlhGMVpYTjBmV1ZzYzJWN2MzUmhkR1V1WW5WbVptVnlaV1JTWlhGMVpYTjBQWE4wWVhSbExteGhjM1JDZFdabVpYSmxaRkpsY1hWbGMzUjljM1JoZEdVdVluVm1abVZ5WldSU1pYRjFaWE4wUTI5MWJuUXJQVEY5Wld4elpYdGtiMWR5YVhSbEtITjBjbVZoYlN4emRHRjBaU3htWVd4elpTeHNaVzRzWTJoMWJtc3NaVzVqYjJScGJtY3NZMklwZlhKbGRIVnliaUJ5WlhSOVpuVnVZM1JwYjI0Z1pHOVhjbWwwWlNoemRISmxZVzBzYzNSaGRHVXNkM0pwZEdWMkxHeGxiaXhqYUhWdWF5eGxibU52WkdsdVp5eGpZaWw3YzNSaGRHVXVkM0pwZEdWc1pXNDliR1Z1TzNOMFlYUmxMbmR5YVhSbFkySTlZMkk3YzNSaGRHVXVkM0pwZEdsdVp6MTBjblZsTzNOMFlYUmxMbk41Ym1NOWRISjFaVHRwWmloM2NtbDBaWFlwYzNSeVpXRnRMbDkzY21sMFpYWW9ZMmgxYm1zc2MzUmhkR1V1YjI1M2NtbDBaU2s3Wld4elpTQnpkSEpsWVcwdVgzZHlhWFJsS0dOb2RXNXJMR1Z1WTI5a2FXNW5MSE4wWVhSbExtOXVkM0pwZEdVcE8zTjBZWFJsTG5ONWJtTTlabUZzYzJWOVpuVnVZM1JwYjI0Z2IyNTNjbWwwWlVWeWNtOXlLSE4wY21WaGJTeHpkR0YwWlN4emVXNWpMR1Z5TEdOaUtYc3RMWE4wWVhSbExuQmxibVJwYm1kallqdHBaaWh6ZVc1aktYQnliMk5sYzNOT1pYaDBWR2xqYXloallpeGxjaWs3Wld4elpTQmpZaWhsY2lrN2MzUnlaV0Z0TGw5M2NtbDBZV0pzWlZOMFlYUmxMbVZ5Y205eVJXMXBkSFJsWkQxMGNuVmxPM04wY21WaGJTNWxiV2wwS0Z3aVpYSnliM0pjSWl4bGNpbDlablZ1WTNScGIyNGdiMjUzY21sMFpWTjBZWFJsVlhCa1lYUmxLSE4wWVhSbEtYdHpkR0YwWlM1M2NtbDBhVzVuUFdaaGJITmxPM04wWVhSbExuZHlhWFJsWTJJOWJuVnNiRHR6ZEdGMFpTNXNaVzVuZEdndFBYTjBZWFJsTG5keWFYUmxiR1Z1TzNOMFlYUmxMbmR5YVhSbGJHVnVQVEI5Wm5WdVkzUnBiMjRnYjI1M2NtbDBaU2h6ZEhKbFlXMHNaWElwZTNaaGNpQnpkR0YwWlQxemRISmxZVzB1WDNkeWFYUmhZbXhsVTNSaGRHVTdkbUZ5SUhONWJtTTljM1JoZEdVdWMzbHVZenQyWVhJZ1kySTljM1JoZEdVdWQzSnBkR1ZqWWp0dmJuZHlhWFJsVTNSaGRHVlZjR1JoZEdVb2MzUmhkR1VwTzJsbUtHVnlLVzl1ZDNKcGRHVkZjbkp2Y2loemRISmxZVzBzYzNSaGRHVXNjM2x1WXl4bGNpeGpZaWs3Wld4elpYdDJZWElnWm1sdWFYTm9aV1E5Ym1WbFpFWnBibWx6YUNoemRHRjBaU2s3YVdZb0lXWnBibWx6YUdWa0ppWWhjM1JoZEdVdVkyOXlhMlZrSmlZaGMzUmhkR1V1WW5WbVptVnlVSEp2WTJWemMybHVaeVltYzNSaGRHVXVZblZtWm1WeVpXUlNaWEYxWlhOMEtYdGpiR1ZoY2tKMVptWmxjaWh6ZEhKbFlXMHNjM1JoZEdVcGZXbG1LSE41Ym1NcGUyRnplVzVqVjNKcGRHVW9ZV1owWlhKWGNtbDBaU3h6ZEhKbFlXMHNjM1JoZEdVc1ptbHVhWE5vWldRc1kySXBmV1ZzYzJWN1lXWjBaWEpYY21sMFpTaHpkSEpsWVcwc2MzUmhkR1VzWm1sdWFYTm9aV1FzWTJJcGZYMTlablZ1WTNScGIyNGdZV1owWlhKWGNtbDBaU2h6ZEhKbFlXMHNjM1JoZEdVc1ptbHVhWE5vWldRc1kySXBlMmxtS0NGbWFXNXBjMmhsWkNsdmJuZHlhWFJsUkhKaGFXNG9jM1J5WldGdExITjBZWFJsS1R0emRHRjBaUzV3Wlc1a2FXNW5ZMkl0TFR0allpZ3BPMlpwYm1semFFMWhlV0psS0hOMGNtVmhiU3h6ZEdGMFpTbDlablZ1WTNScGIyNGdiMjUzY21sMFpVUnlZV2x1S0hOMGNtVmhiU3h6ZEdGMFpTbDdhV1lvYzNSaGRHVXViR1Z1WjNSb1BUMDlNQ1ltYzNSaGRHVXVibVZsWkVSeVlXbHVLWHR6ZEdGMFpTNXVaV1ZrUkhKaGFXNDlabUZzYzJVN2MzUnlaV0Z0TG1WdGFYUW9YQ0prY21GcGJsd2lLWDE5Wm5WdVkzUnBiMjRnWTJ4bFlYSkNkV1ptWlhJb2MzUnlaV0Z0TEhOMFlYUmxLWHR6ZEdGMFpTNWlkV1ptWlhKUWNtOWpaWE56YVc1blBYUnlkV1U3ZG1GeUlHVnVkSEo1UFhOMFlYUmxMbUoxWm1abGNtVmtVbVZ4ZFdWemREdHBaaWh6ZEhKbFlXMHVYM2R5YVhSbGRpWW1aVzUwY25rbUptVnVkSEo1TG01bGVIUXBlM1poY2lCc1BYTjBZWFJsTG1KMVptWmxjbVZrVW1WeGRXVnpkRU52ZFc1ME8zWmhjaUJpZFdabVpYSTlibVYzSUVGeWNtRjVLR3dwTzNaaGNpQm9iMnhrWlhJOWMzUmhkR1V1WTI5eWEyVmtVbVZ4ZFdWemRITkdjbVZsTzJodmJHUmxjaTVsYm5SeWVUMWxiblJ5ZVR0MllYSWdZMjkxYm5ROU1EdDNhR2xzWlNobGJuUnllU2w3WW5WbVptVnlXMk52ZFc1MFhUMWxiblJ5ZVR0bGJuUnllVDFsYm5SeWVTNXVaWGgwTzJOdmRXNTBLejB4ZldSdlYzSnBkR1VvYzNSeVpXRnRMSE4wWVhSbExIUnlkV1VzYzNSaGRHVXViR1Z1WjNSb0xHSjFabVpsY2l4Y0lsd2lMR2h2YkdSbGNpNW1hVzVwYzJncE8zTjBZWFJsTG5CbGJtUnBibWRqWWlzck8zTjBZWFJsTG14aGMzUkNkV1ptWlhKbFpGSmxjWFZsYzNROWJuVnNiRHRwWmlob2IyeGtaWEl1Ym1WNGRDbDdjM1JoZEdVdVkyOXlhMlZrVW1WeGRXVnpkSE5HY21WbFBXaHZiR1JsY2k1dVpYaDBPMmh2YkdSbGNpNXVaWGgwUFc1MWJHeDlaV3h6Wlh0emRHRjBaUzVqYjNKclpXUlNaWEYxWlhOMGMwWnlaV1U5Ym1WM0lFTnZjbXRsWkZKbGNYVmxjM1FvYzNSaGRHVXBmWDFsYkhObGUzZG9hV3hsS0dWdWRISjVLWHQyWVhJZ1kyaDFibXM5Wlc1MGNua3VZMmgxYm1zN2RtRnlJR1Z1WTI5a2FXNW5QV1Z1ZEhKNUxtVnVZMjlrYVc1bk8zWmhjaUJqWWoxbGJuUnllUzVqWVd4c1ltRmphenQyWVhJZ2JHVnVQWE4wWVhSbExtOWlhbVZqZEUxdlpHVS9NVHBqYUhWdWF5NXNaVzVuZEdnN1pHOVhjbWwwWlNoemRISmxZVzBzYzNSaGRHVXNabUZzYzJVc2JHVnVMR05vZFc1ckxHVnVZMjlrYVc1bkxHTmlLVHRsYm5SeWVUMWxiblJ5ZVM1dVpYaDBPMmxtS0hOMFlYUmxMbmR5YVhScGJtY3BlMkp5WldGcmZYMXBaaWhsYm5SeWVUMDlQVzUxYkd3cGMzUmhkR1V1YkdGemRFSjFabVpsY21Wa1VtVnhkV1Z6ZEQxdWRXeHNmWE4wWVhSbExtSjFabVpsY21Wa1VtVnhkV1Z6ZEVOdmRXNTBQVEE3YzNSaGRHVXVZblZtWm1WeVpXUlNaWEYxWlhOMFBXVnVkSEo1TzNOMFlYUmxMbUoxWm1abGNsQnliMk5sYzNOcGJtYzlabUZzYzJWOVYzSnBkR0ZpYkdVdWNISnZkRzkwZVhCbExsOTNjbWwwWlQxbWRXNWpkR2x2YmloamFIVnVheXhsYm1OdlpHbHVaeXhqWWlsN1kySW9ibVYzSUVWeWNtOXlLRndpYm05MElHbHRjR3hsYldWdWRHVmtYQ0lwS1gwN1YzSnBkR0ZpYkdVdWNISnZkRzkwZVhCbExsOTNjbWwwWlhZOWJuVnNiRHRYY21sMFlXSnNaUzV3Y205MGIzUjVjR1V1Wlc1a1BXWjFibU4wYVc5dUtHTm9kVzVyTEdWdVkyOWthVzVuTEdOaUtYdDJZWElnYzNSaGRHVTlkR2hwY3k1ZmQzSnBkR0ZpYkdWVGRHRjBaVHRwWmloMGVYQmxiMllnWTJoMWJtczlQVDFjSW1aMWJtTjBhVzl1WENJcGUyTmlQV05vZFc1ck8yTm9kVzVyUFc1MWJHdzdaVzVqYjJScGJtYzliblZzYkgxbGJITmxJR2xtS0hSNWNHVnZaaUJsYm1OdlpHbHVaejA5UFZ3aVpuVnVZM1JwYjI1Y0lpbDdZMkk5Wlc1amIyUnBibWM3Wlc1amIyUnBibWM5Ym5Wc2JIMXBaaWhqYUhWdWF5RTlQVzUxYkd3bUptTm9kVzVySVQwOWRXNWtaV1pwYm1Wa0tYUm9hWE11ZDNKcGRHVW9ZMmgxYm1zc1pXNWpiMlJwYm1jcE8ybG1LSE4wWVhSbExtTnZjbXRsWkNsN2MzUmhkR1V1WTI5eWEyVmtQVEU3ZEdocGN5NTFibU52Y21zb0tYMXBaaWdoYzNSaGRHVXVaVzVrYVc1bkppWWhjM1JoZEdVdVptbHVhWE5vWldRcFpXNWtWM0pwZEdGaWJHVW9kR2hwY3l4emRHRjBaU3hqWWlsOU8yWjFibU4wYVc5dUlHNWxaV1JHYVc1cGMyZ29jM1JoZEdVcGUzSmxkSFZ5YmlCemRHRjBaUzVsYm1ScGJtY21Kbk4wWVhSbExteGxibWQwYUQwOVBUQW1Kbk4wWVhSbExtSjFabVpsY21Wa1VtVnhkV1Z6ZEQwOVBXNTFiR3dtSmlGemRHRjBaUzVtYVc1cGMyaGxaQ1ltSVhOMFlYUmxMbmR5YVhScGJtZDlablZ1WTNScGIyNGdjSEpsWm1sdWFYTm9LSE4wY21WaGJTeHpkR0YwWlNsN2FXWW9JWE4wWVhSbExuQnlaV1pwYm1semFHVmtLWHR6ZEdGMFpTNXdjbVZtYVc1cGMyaGxaRDEwY25WbE8zTjBjbVZoYlM1bGJXbDBLRndpY0hKbFptbHVhWE5vWENJcGZYMW1kVzVqZEdsdmJpQm1hVzVwYzJoTllYbGlaU2h6ZEhKbFlXMHNjM1JoZEdVcGUzWmhjaUJ1WldWa1BXNWxaV1JHYVc1cGMyZ29jM1JoZEdVcE8ybG1LRzVsWldRcGUybG1LSE4wWVhSbExuQmxibVJwYm1kallqMDlQVEFwZTNCeVpXWnBibWx6YUNoemRISmxZVzBzYzNSaGRHVXBPM04wWVhSbExtWnBibWx6YUdWa1BYUnlkV1U3YzNSeVpXRnRMbVZ0YVhRb1hDSm1hVzVwYzJoY0lpbDlaV3h6Wlh0d2NtVm1hVzVwYzJnb2MzUnlaV0Z0TEhOMFlYUmxLWDE5Y21WMGRYSnVJRzVsWldSOVpuVnVZM1JwYjI0Z1pXNWtWM0pwZEdGaWJHVW9jM1J5WldGdExITjBZWFJsTEdOaUtYdHpkR0YwWlM1bGJtUnBibWM5ZEhKMVpUdG1hVzVwYzJoTllYbGlaU2h6ZEhKbFlXMHNjM1JoZEdVcE8ybG1LR05pS1h0cFppaHpkR0YwWlM1bWFXNXBjMmhsWkNsd2NtOWpaWE56VG1WNGRGUnBZMnNvWTJJcE8yVnNjMlVnYzNSeVpXRnRMbTl1WTJVb1hDSm1hVzVwYzJoY0lpeGpZaWw5YzNSaGRHVXVaVzVrWldROWRISjFaVHR6ZEhKbFlXMHVkM0pwZEdGaWJHVTlabUZzYzJWOVpuVnVZM1JwYjI0Z1EyOXlhMlZrVW1WeGRXVnpkQ2h6ZEdGMFpTbDdkbUZ5SUY5MGFHbHpQWFJvYVhNN2RHaHBjeTV1WlhoMFBXNTFiR3c3ZEdocGN5NWxiblJ5ZVQxdWRXeHNPM1JvYVhNdVptbHVhWE5vUFdaMWJtTjBhVzl1S0dWeWNpbDdkbUZ5SUdWdWRISjVQVjkwYUdsekxtVnVkSEo1TzE5MGFHbHpMbVZ1ZEhKNVBXNTFiR3c3ZDJocGJHVW9aVzUwY25rcGUzWmhjaUJqWWoxbGJuUnllUzVqWVd4c1ltRmphenR6ZEdGMFpTNXdaVzVrYVc1blkySXRMVHRqWWlobGNuSXBPMlZ1ZEhKNVBXVnVkSEo1TG01bGVIUjlhV1lvYzNSaGRHVXVZMjl5YTJWa1VtVnhkV1Z6ZEhOR2NtVmxLWHR6ZEdGMFpTNWpiM0pyWldSU1pYRjFaWE4wYzBaeVpXVXVibVY0ZEQxZmRHaHBjMzFsYkhObGUzTjBZWFJsTG1OdmNtdGxaRkpsY1hWbGMzUnpSbkpsWlQxZmRHaHBjMzE5ZlgwcExtTmhiR3dvZEdocGN5eHlaWEYxYVhKbEtGd2lYM0J5YjJObGMzTmNJaWtwZlN4N1hDSXVMMTl6ZEhKbFlXMWZaSFZ3YkdWNFhDSTZORFFzWDNCeWIyTmxjM002TkRJc1luVm1abVZ5T2pVc1hDSmlkV1ptWlhJdGMyaHBiWE5jSWpvMExGd2lZMjl5WlMxMWRHbHNMV2x6WENJNk5peGxkbVZ1ZEhNNk1qZ3NhVzVvWlhKcGRITTZNemdzWENKd2NtOWpaWE56TFc1bGVIUnBZMnN0WVhKbmMxd2lPalF4TEZ3aWRYUnBiQzFrWlhCeVpXTmhkR1ZjSWpvMU4zMWRMRFE1T2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHRjSW5WelpTQnpkSEpwWTNSY0lqdDJZWElnUW5WbVptVnlQWEpsY1hWcGNtVW9YQ0ppZFdabVpYSmNJaWt1UW5WbVptVnlPM1poY2lCaWRXWm1aWEpUYUdsdFBYSmxjWFZwY21Vb1hDSmlkV1ptWlhJdGMyaHBiWE5jSWlrN2JXOWtkV3hsTG1WNGNHOXlkSE05UW5WbVptVnlUR2x6ZER0bWRXNWpkR2x2YmlCQ2RXWm1aWEpNYVhOMEtDbDdkR2hwY3k1b1pXRmtQVzUxYkd3N2RHaHBjeTUwWVdsc1BXNTFiR3c3ZEdocGN5NXNaVzVuZEdnOU1IMUNkV1ptWlhKTWFYTjBMbkJ5YjNSdmRIbHdaUzV3ZFhOb1BXWjFibU4wYVc5dUtIWXBlM1poY2lCbGJuUnllVDE3WkdGMFlUcDJMRzVsZUhRNmJuVnNiSDA3YVdZb2RHaHBjeTVzWlc1bmRHZytNQ2wwYUdsekxuUmhhV3d1Ym1WNGREMWxiblJ5ZVR0bGJITmxJSFJvYVhNdWFHVmhaRDFsYm5SeWVUdDBhR2x6TG5SaGFXdzlaVzUwY25rN0t5dDBhR2x6TG14bGJtZDBhSDA3UW5WbVptVnlUR2x6ZEM1d2NtOTBiM1I1Y0dVdWRXNXphR2xtZEQxbWRXNWpkR2x2YmloMktYdDJZWElnWlc1MGNuazllMlJoZEdFNmRpeHVaWGgwT25Sb2FYTXVhR1ZoWkgwN2FXWW9kR2hwY3k1c1pXNW5kR2c5UFQwd0tYUm9hWE11ZEdGcGJEMWxiblJ5ZVR0MGFHbHpMbWhsWVdROVpXNTBjbms3S3l0MGFHbHpMbXhsYm1kMGFIMDdRblZtWm1WeVRHbHpkQzV3Y205MGIzUjVjR1V1YzJocFpuUTlablZ1WTNScGIyNG9LWHRwWmloMGFHbHpMbXhsYm1kMGFEMDlQVEFwY21WMGRYSnVPM1poY2lCeVpYUTlkR2hwY3k1b1pXRmtMbVJoZEdFN2FXWW9kR2hwY3k1c1pXNW5kR2c5UFQweEtYUm9hWE11YUdWaFpEMTBhR2x6TG5SaGFXdzliblZzYkR0bGJITmxJSFJvYVhNdWFHVmhaRDEwYUdsekxtaGxZV1F1Ym1WNGREc3RMWFJvYVhNdWJHVnVaM1JvTzNKbGRIVnliaUJ5WlhSOU8wSjFabVpsY2t4cGMzUXVjSEp2ZEc5MGVYQmxMbU5zWldGeVBXWjFibU4wYVc5dUtDbDdkR2hwY3k1b1pXRmtQWFJvYVhNdWRHRnBiRDF1ZFd4c08zUm9hWE11YkdWdVozUm9QVEI5TzBKMVptWmxja3hwYzNRdWNISnZkRzkwZVhCbExtcHZhVzQ5Wm5WdVkzUnBiMjRvY3lsN2FXWW9kR2hwY3k1c1pXNW5kR2c5UFQwd0tYSmxkSFZ5Ymx3aVhDSTdkbUZ5SUhBOWRHaHBjeTVvWldGa08zWmhjaUJ5WlhROVhDSmNJaXR3TG1SaGRHRTdkMmhwYkdVb2NEMXdMbTVsZUhRcGUzSmxkQ3M5Y3l0d0xtUmhkR0Y5Y21WMGRYSnVJSEpsZEgwN1FuVm1abVZ5VEdsemRDNXdjbTkwYjNSNWNHVXVZMjl1WTJGMFBXWjFibU4wYVc5dUtHNHBlMmxtS0hSb2FYTXViR1Z1WjNSb1BUMDlNQ2x5WlhSMWNtNGdZblZtWm1WeVUyaHBiUzVoYkd4dll5Z3dLVHRwWmloMGFHbHpMbXhsYm1kMGFEMDlQVEVwY21WMGRYSnVJSFJvYVhNdWFHVmhaQzVrWVhSaE8zWmhjaUJ5WlhROVluVm1abVZ5VTJocGJTNWhiR3h2WTFWdWMyRm1aU2h1UGo0K01DazdkbUZ5SUhBOWRHaHBjeTVvWldGa08zWmhjaUJwUFRBN2QyaHBiR1VvY0NsN2NDNWtZWFJoTG1OdmNIa29jbVYwTEdrcE8ya3JQWEF1WkdGMFlTNXNaVzVuZEdnN2NEMXdMbTVsZUhSOWNtVjBkWEp1SUhKbGRIMTlMSHRpZFdabVpYSTZOU3hjSW1KMVptWmxjaTF6YUdsdGMxd2lPalI5WFN3MU1EcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2JXOWtkV3hsTG1WNGNHOXlkSE05Y21WeGRXbHlaU2hjSWk0dmJHbGlMMTl6ZEhKbFlXMWZjR0Z6YzNSb2NtOTFaMmd1YW5OY0lpbDlMSHRjSWk0dmJHbGlMMTl6ZEhKbFlXMWZjR0Z6YzNSb2NtOTFaMmd1YW5OY0lqbzBOWDFkTERVeE9sdG1kVzVqZEdsdmJpaHlaWEYxYVhKbExHMXZaSFZzWlN4bGVIQnZjblJ6S1hzb1puVnVZM1JwYjI0b2NISnZZMlZ6Y3lsN2RtRnlJRk4wY21WaGJUMW1kVzVqZEdsdmJpZ3BlM1J5ZVh0eVpYUjFjbTRnY21WeGRXbHlaU2hjSW5OMFhDSXJYQ0p5WldGdFhDSXBmV05oZEdOb0tGOHBlMzE5S0NrN1pYaHdiM0owY3oxdGIyUjFiR1V1Wlhod2IzSjBjejF5WlhGMWFYSmxLRndpTGk5c2FXSXZYM04wY21WaGJWOXlaV0ZrWVdKc1pTNXFjMXdpS1R0bGVIQnZjblJ6TGxOMGNtVmhiVDFUZEhKbFlXMThmR1Y0Y0c5eWRITTdaWGh3YjNKMGN5NVNaV0ZrWVdKc1pUMWxlSEJ2Y25Sek8yVjRjRzl5ZEhNdVYzSnBkR0ZpYkdVOWNtVnhkV2x5WlNoY0lpNHZiR2xpTDE5emRISmxZVzFmZDNKcGRHRmliR1V1YW5OY0lpazdaWGh3YjNKMGN5NUVkWEJzWlhnOWNtVnhkV2x5WlNoY0lpNHZiR2xpTDE5emRISmxZVzFmWkhWd2JHVjRMbXB6WENJcE8yVjRjRzl5ZEhNdVZISmhibk5tYjNKdFBYSmxjWFZwY21Vb1hDSXVMMnhwWWk5ZmMzUnlaV0Z0WDNSeVlXNXpabTl5YlM1cWMxd2lLVHRsZUhCdmNuUnpMbEJoYzNOVWFISnZkV2RvUFhKbGNYVnBjbVVvWENJdUwyeHBZaTlmYzNSeVpXRnRYM0JoYzNOMGFISnZkV2RvTG1welhDSXBPMmxtS0NGd2NtOWpaWE56TG1KeWIzZHpaWEltSm5CeWIyTmxjM011Wlc1MkxsSkZRVVJCUWt4RlgxTlVVa1ZCVFQwOVBWd2laR2x6WVdKc1pWd2lKaVpUZEhKbFlXMHBlMjF2WkhWc1pTNWxlSEJ2Y25SelBWTjBjbVZoYlgxOUtTNWpZV3hzS0hSb2FYTXNjbVZ4ZFdseVpTaGNJbDl3Y205alpYTnpYQ0lwS1gwc2Uxd2lMaTlzYVdJdlgzTjBjbVZoYlY5a2RYQnNaWGd1YW5OY0lqbzBOQ3hjSWk0dmJHbGlMMTl6ZEhKbFlXMWZjR0Z6YzNSb2NtOTFaMmd1YW5OY0lqbzBOU3hjSWk0dmJHbGlMMTl6ZEhKbFlXMWZjbVZoWkdGaWJHVXVhbk5jSWpvME5peGNJaTR2YkdsaUwxOXpkSEpsWVcxZmRISmhibk5tYjNKdExtcHpYQ0k2TkRjc1hDSXVMMnhwWWk5ZmMzUnlaV0Z0WDNkeWFYUmhZbXhsTG1welhDSTZORGdzWDNCeWIyTmxjM002TkRKOVhTdzFNanBiWm5WdVkzUnBiMjRvY21WeGRXbHlaU3h0YjJSMWJHVXNaWGh3YjNKMGN5bDdiVzlrZFd4bExtVjRjRzl5ZEhNOWNtVnhkV2x5WlNoY0lpNHZiR2xpTDE5emRISmxZVzFmZEhKaGJuTm1iM0p0TG1welhDSXBmU3g3WENJdUwyeHBZaTlmYzNSeVpXRnRYM1J5WVc1elptOXliUzVxYzF3aU9qUTNmVjBzTlRNNlcyWjFibU4wYVc5dUtISmxjWFZwY21Vc2JXOWtkV3hsTEdWNGNHOXlkSE1wZTIxdlpIVnNaUzVsZUhCdmNuUnpQWEpsY1hWcGNtVW9YQ0l1TDJ4cFlpOWZjM1J5WldGdFgzZHlhWFJoWW14bExtcHpYQ0lwZlN4N1hDSXVMMnhwWWk5ZmMzUnlaV0Z0WDNkeWFYUmhZbXhsTG1welhDSTZORGg5WFN3MU5EcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2JXOWtkV3hsTG1WNGNHOXlkSE05Wm5WdVkzUnBiMjRvYzNSeWFXNW5LWHR5WlhSMWNtNGdjM1J5YVc1bkxuSmxjR3hoWTJVb0wxc3RYRnhjWEY0a0tpcy9MaWdwZkZ0Y1hGMTdmVjB2Wnl4Y0lseGNYRndrSmx3aUtYMTlMSHQ5WFN3MU5UcGJablZ1WTNScGIyNG9jbVZ4ZFdseVpTeHRiMlIxYkdVc1pYaHdiM0owY3lsN2JXOWtkV3hsTG1WNGNHOXlkSE05VTNSeVpXRnRPM1poY2lCRlJUMXlaWEYxYVhKbEtGd2laWFpsYm5SelhDSXBMa1YyWlc1MFJXMXBkSFJsY2p0MllYSWdhVzVvWlhKcGRITTljbVZ4ZFdseVpTaGNJbWx1YUdWeWFYUnpYQ0lwTzJsdWFHVnlhWFJ6S0ZOMGNtVmhiU3hGUlNrN1UzUnlaV0Z0TGxKbFlXUmhZbXhsUFhKbGNYVnBjbVVvWENKeVpXRmtZV0pzWlMxemRISmxZVzB2Y21WaFpHRmliR1V1YW5OY0lpazdVM1J5WldGdExsZHlhWFJoWW14bFBYSmxjWFZwY21Vb1hDSnlaV0ZrWVdKc1pTMXpkSEpsWVcwdmQzSnBkR0ZpYkdVdWFuTmNJaWs3VTNSeVpXRnRMa1IxY0d4bGVEMXlaWEYxYVhKbEtGd2ljbVZoWkdGaWJHVXRjM1J5WldGdEwyUjFjR3hsZUM1cWMxd2lLVHRUZEhKbFlXMHVWSEpoYm5ObWIzSnRQWEpsY1hWcGNtVW9YQ0p5WldGa1lXSnNaUzF6ZEhKbFlXMHZkSEpoYm5ObWIzSnRMbXB6WENJcE8xTjBjbVZoYlM1UVlYTnpWR2h5YjNWbmFEMXlaWEYxYVhKbEtGd2ljbVZoWkdGaWJHVXRjM1J5WldGdEwzQmhjM04wYUhKdmRXZG9MbXB6WENJcE8xTjBjbVZoYlM1VGRISmxZVzA5VTNSeVpXRnRPMloxYm1OMGFXOXVJRk4wY21WaGJTZ3BlMFZGTG1OaGJHd29kR2hwY3lsOVUzUnlaV0Z0TG5CeWIzUnZkSGx3WlM1d2FYQmxQV1oxYm1OMGFXOXVLR1JsYzNRc2IzQjBhVzl1Y3lsN2RtRnlJSE52ZFhKalpUMTBhR2x6TzJaMWJtTjBhVzl1SUc5dVpHRjBZU2hqYUhWdWF5bDdhV1lvWkdWemRDNTNjbWwwWVdKc1pTbDdhV1lvWm1Gc2MyVTlQVDFrWlhOMExuZHlhWFJsS0dOb2RXNXJLU1ltYzI5MWNtTmxMbkJoZFhObEtYdHpiM1Z5WTJVdWNHRjFjMlVvS1gxOWZYTnZkWEpqWlM1dmJpaGNJbVJoZEdGY0lpeHZibVJoZEdFcE8yWjFibU4wYVc5dUlHOXVaSEpoYVc0b0tYdHBaaWh6YjNWeVkyVXVjbVZoWkdGaWJHVW1Kbk52ZFhKalpTNXlaWE4xYldVcGUzTnZkWEpqWlM1eVpYTjFiV1VvS1gxOVpHVnpkQzV2YmloY0ltUnlZV2x1WENJc2IyNWtjbUZwYmlrN2FXWW9JV1JsYzNRdVgybHpVM1JrYVc4bUppZ2hiM0IwYVc5dWMzeDhiM0IwYVc5dWN5NWxibVFoUFQxbVlXeHpaU2twZTNOdmRYSmpaUzV2YmloY0ltVnVaRndpTEc5dVpXNWtLVHR6YjNWeVkyVXViMjRvWENKamJHOXpaVndpTEc5dVkyeHZjMlVwZlhaaGNpQmthV1JQYmtWdVpEMW1ZV3h6WlR0bWRXNWpkR2x2YmlCdmJtVnVaQ2dwZTJsbUtHUnBaRTl1Ulc1a0tYSmxkSFZ5Ymp0a2FXUlBia1Z1WkQxMGNuVmxPMlJsYzNRdVpXNWtLQ2w5Wm5WdVkzUnBiMjRnYjI1amJHOXpaU2dwZTJsbUtHUnBaRTl1Ulc1a0tYSmxkSFZ5Ymp0a2FXUlBia1Z1WkQxMGNuVmxPMmxtS0hSNWNHVnZaaUJrWlhOMExtUmxjM1J5YjNrOVBUMWNJbVoxYm1OMGFXOXVYQ0lwWkdWemRDNWtaWE4wY205NUtDbDlablZ1WTNScGIyNGdiMjVsY25KdmNpaGxjaWw3WTJ4bFlXNTFjQ2dwTzJsbUtFVkZMbXhwYzNSbGJtVnlRMjkxYm5Rb2RHaHBjeXhjSW1WeWNtOXlYQ0lwUFQwOU1DbDdkR2h5YjNjZ1pYSjlmWE52ZFhKalpTNXZiaWhjSW1WeWNtOXlYQ0lzYjI1bGNuSnZjaWs3WkdWemRDNXZiaWhjSW1WeWNtOXlYQ0lzYjI1bGNuSnZjaWs3Wm5WdVkzUnBiMjRnWTJ4bFlXNTFjQ2dwZTNOdmRYSmpaUzV5WlcxdmRtVk1hWE4wWlc1bGNpaGNJbVJoZEdGY0lpeHZibVJoZEdFcE8yUmxjM1F1Y21WdGIzWmxUR2x6ZEdWdVpYSW9YQ0prY21GcGJsd2lMRzl1WkhKaGFXNHBPM052ZFhKalpTNXlaVzF2ZG1WTWFYTjBaVzVsY2loY0ltVnVaRndpTEc5dVpXNWtLVHR6YjNWeVkyVXVjbVZ0YjNabFRHbHpkR1Z1WlhJb1hDSmpiRzl6WlZ3aUxHOXVZMnh2YzJVcE8zTnZkWEpqWlM1eVpXMXZkbVZNYVhOMFpXNWxjaWhjSW1WeWNtOXlYQ0lzYjI1bGNuSnZjaWs3WkdWemRDNXlaVzF2ZG1WTWFYTjBaVzVsY2loY0ltVnljbTl5WENJc2IyNWxjbkp2Y2lrN2MyOTFjbU5sTG5KbGJXOTJaVXhwYzNSbGJtVnlLRndpWlc1a1hDSXNZMnhsWVc1MWNDazdjMjkxY21ObExuSmxiVzkyWlV4cGMzUmxibVZ5S0Z3aVkyeHZjMlZjSWl4amJHVmhiblZ3S1R0a1pYTjBMbkpsYlc5MlpVeHBjM1JsYm1WeUtGd2lZMnh2YzJWY0lpeGpiR1ZoYm5Wd0tYMXpiM1Z5WTJVdWIyNG9YQ0psYm1SY0lpeGpiR1ZoYm5Wd0tUdHpiM1Z5WTJVdWIyNG9YQ0pqYkc5elpWd2lMR05zWldGdWRYQXBPMlJsYzNRdWIyNG9YQ0pqYkc5elpWd2lMR05zWldGdWRYQXBPMlJsYzNRdVpXMXBkQ2hjSW5CcGNHVmNJaXh6YjNWeVkyVXBPM0psZEhWeWJpQmtaWE4wZlgwc2UyVjJaVzUwY3pveU9DeHBibWhsY21sMGN6b3pPQ3hjSW5KbFlXUmhZbXhsTFhOMGNtVmhiUzlrZFhCc1pYZ3Vhbk5jSWpvME15eGNJbkpsWVdSaFlteGxMWE4wY21WaGJTOXdZWE56ZEdoeWIzVm5hQzVxYzF3aU9qVXdMRndpY21WaFpHRmliR1V0YzNSeVpXRnRMM0psWVdSaFlteGxMbXB6WENJNk5URXNYQ0p5WldGa1lXSnNaUzF6ZEhKbFlXMHZkSEpoYm5ObWIzSnRMbXB6WENJNk5USXNYQ0p5WldGa1lXSnNaUzF6ZEhKbFlXMHZkM0pwZEdGaWJHVXVhbk5jSWpvMU0zMWRMRFUyT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHQyWVhJZ1FuVm1abVZ5UFhKbGNYVnBjbVVvWENKaWRXWm1aWEpjSWlrdVFuVm1abVZ5TzNaaGNpQnBjMEoxWm1abGNrVnVZMjlrYVc1blBVSjFabVpsY2k1cGMwVnVZMjlrYVc1bmZIeG1kVzVqZEdsdmJpaGxibU52WkdsdVp5bDdjM2RwZEdOb0tHVnVZMjlrYVc1bkppWmxibU52WkdsdVp5NTBiMHh2ZDJWeVEyRnpaU2dwS1h0allYTmxYQ0pvWlhoY0lqcGpZWE5sWENKMWRHWTRYQ0k2WTJGelpWd2lkWFJtTFRoY0lqcGpZWE5sWENKaGMyTnBhVndpT21OaGMyVmNJbUpwYm1GeWVWd2lPbU5oYzJWY0ltSmhjMlUyTkZ3aU9tTmhjMlZjSW5WamN6SmNJanBqWVhObFhDSjFZM010TWx3aU9tTmhjMlZjSW5WMFpqRTJiR1ZjSWpwallYTmxYQ0oxZEdZdE1UWnNaVndpT21OaGMyVmNJbkpoZDF3aU9uSmxkSFZ5YmlCMGNuVmxPMlJsWm1GMWJIUTZjbVYwZFhKdUlHWmhiSE5sZlgwN1puVnVZM1JwYjI0Z1lYTnpaWEowUlc1amIyUnBibWNvWlc1amIyUnBibWNwZTJsbUtHVnVZMjlrYVc1bkppWWhhWE5DZFdabVpYSkZibU52WkdsdVp5aGxibU52WkdsdVp5a3BlM1JvY205M0lHNWxkeUJGY25KdmNpaGNJbFZ1YTI1dmQyNGdaVzVqYjJScGJtYzZJRndpSzJWdVkyOWthVzVuS1gxOWRtRnlJRk4wY21sdVowUmxZMjlrWlhJOVpYaHdiM0owY3k1VGRISnBibWRFWldOdlpHVnlQV1oxYm1OMGFXOXVLR1Z1WTI5a2FXNW5LWHQwYUdsekxtVnVZMjlrYVc1blBTaGxibU52WkdsdVozeDhYQ0oxZEdZNFhDSXBMblJ2VEc5M1pYSkRZWE5sS0NrdWNtVndiR0ZqWlNndld5MWZYUzhzWENKY0lpazdZWE56WlhKMFJXNWpiMlJwYm1jb1pXNWpiMlJwYm1jcE8zTjNhWFJqYUNoMGFHbHpMbVZ1WTI5a2FXNW5LWHRqWVhObFhDSjFkR1k0WENJNmRHaHBjeTV6ZFhKeWIyZGhkR1ZUYVhwbFBUTTdZbkpsWVdzN1kyRnpaVndpZFdOek1sd2lPbU5oYzJWY0luVjBaakUyYkdWY0lqcDBhR2x6TG5OMWNuSnZaMkYwWlZOcGVtVTlNanQwYUdsekxtUmxkR1ZqZEVsdVkyOXRjR3hsZEdWRGFHRnlQWFYwWmpFMlJHVjBaV04wU1c1amIyMXdiR1YwWlVOb1lYSTdZbkpsWVdzN1kyRnpaVndpWW1GelpUWTBYQ0k2ZEdocGN5NXpkWEp5YjJkaGRHVlRhWHBsUFRNN2RHaHBjeTVrWlhSbFkzUkpibU52YlhCc1pYUmxRMmhoY2oxaVlYTmxOalJFWlhSbFkzUkpibU52YlhCc1pYUmxRMmhoY2p0aWNtVmhhenRrWldaaGRXeDBPblJvYVhNdWQzSnBkR1U5Y0dGemMxUm9jbTkxWjJoWGNtbDBaVHR5WlhSMWNtNTlkR2hwY3k1amFHRnlRblZtWm1WeVBXNWxkeUJDZFdabVpYSW9OaWs3ZEdocGN5NWphR0Z5VW1WalpXbDJaV1E5TUR0MGFHbHpMbU5vWVhKTVpXNW5kR2c5TUgwN1UzUnlhVzVuUkdWamIyUmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVTlablZ1WTNScGIyNG9ZblZtWm1WeUtYdDJZWElnWTJoaGNsTjBjajFjSWx3aU8zZG9hV3hsS0hSb2FYTXVZMmhoY2t4bGJtZDBhQ2w3ZG1GeUlHRjJZV2xzWVdKc1pUMWlkV1ptWlhJdWJHVnVaM1JvUGoxMGFHbHpMbU5vWVhKTVpXNW5kR2d0ZEdocGN5NWphR0Z5VW1WalpXbDJaV1EvZEdocGN5NWphR0Z5VEdWdVozUm9MWFJvYVhNdVkyaGhjbEpsWTJWcGRtVmtPbUoxWm1abGNpNXNaVzVuZEdnN1luVm1abVZ5TG1OdmNIa29kR2hwY3k1amFHRnlRblZtWm1WeUxIUm9hWE11WTJoaGNsSmxZMlZwZG1Wa0xEQXNZWFpoYVd4aFlteGxLVHQwYUdsekxtTm9ZWEpTWldObGFYWmxaQ3M5WVhaaGFXeGhZbXhsTzJsbUtIUm9hWE11WTJoaGNsSmxZMlZwZG1Wa1BIUm9hWE11WTJoaGNreGxibWQwYUNsN2NtVjBkWEp1WENKY0luMWlkV1ptWlhJOVluVm1abVZ5TG5Oc2FXTmxLR0YyWVdsc1lXSnNaU3hpZFdabVpYSXViR1Z1WjNSb0tUdGphR0Z5VTNSeVBYUm9hWE11WTJoaGNrSjFabVpsY2k1emJHbGpaU2d3TEhSb2FYTXVZMmhoY2t4bGJtZDBhQ2t1ZEc5VGRISnBibWNvZEdocGN5NWxibU52WkdsdVp5azdkbUZ5SUdOb1lYSkRiMlJsUFdOb1lYSlRkSEl1WTJoaGNrTnZaR1ZCZENoamFHRnlVM1J5TG14bGJtZDBhQzB4S1R0cFppaGphR0Z5UTI5a1pUNDlOVFV5T1RZbUptTm9ZWEpEYjJSbFBEMDFOak14T1NsN2RHaHBjeTVqYUdGeVRHVnVaM1JvS3oxMGFHbHpMbk4xY25KdloyRjBaVk5wZW1VN1kyaGhjbE4wY2oxY0lsd2lPMk52Ym5ScGJuVmxmWFJvYVhNdVkyaGhjbEpsWTJWcGRtVmtQWFJvYVhNdVkyaGhja3hsYm1kMGFEMHdPMmxtS0dKMVptWmxjaTVzWlc1bmRHZzlQVDB3S1h0eVpYUjFjbTRnWTJoaGNsTjBjbjFpY21WaGEzMTBhR2x6TG1SbGRHVmpkRWx1WTI5dGNHeGxkR1ZEYUdGeUtHSjFabVpsY2lrN2RtRnlJR1Z1WkQxaWRXWm1aWEl1YkdWdVozUm9PMmxtS0hSb2FYTXVZMmhoY2t4bGJtZDBhQ2w3WW5WbVptVnlMbU52Y0hrb2RHaHBjeTVqYUdGeVFuVm1abVZ5TERBc1luVm1abVZ5TG14bGJtZDBhQzEwYUdsekxtTm9ZWEpTWldObGFYWmxaQ3hsYm1RcE8yVnVaQzA5ZEdocGN5NWphR0Z5VW1WalpXbDJaV1I5WTJoaGNsTjBjaXM5WW5WbVptVnlMblJ2VTNSeWFXNW5LSFJvYVhNdVpXNWpiMlJwYm1jc01DeGxibVFwTzNaaGNpQmxibVE5WTJoaGNsTjBjaTVzWlc1bmRHZ3RNVHQyWVhJZ1kyaGhja052WkdVOVkyaGhjbE4wY2k1amFHRnlRMjlrWlVGMEtHVnVaQ2s3YVdZb1kyaGhja052WkdVK1BUVTFNamsySmlaamFHRnlRMjlrWlR3OU5UWXpNVGtwZTNaaGNpQnphWHBsUFhSb2FYTXVjM1Z5Y205bllYUmxVMmw2WlR0MGFHbHpMbU5vWVhKTVpXNW5kR2dyUFhOcGVtVTdkR2hwY3k1amFHRnlVbVZqWldsMlpXUXJQWE5wZW1VN2RHaHBjeTVqYUdGeVFuVm1abVZ5TG1OdmNIa29kR2hwY3k1amFHRnlRblZtWm1WeUxITnBlbVVzTUN4emFYcGxLVHRpZFdabVpYSXVZMjl3ZVNoMGFHbHpMbU5vWVhKQ2RXWm1aWElzTUN3d0xITnBlbVVwTzNKbGRIVnliaUJqYUdGeVUzUnlMbk4xWW5OMGNtbHVaeWd3TEdWdVpDbDljbVYwZFhKdUlHTm9ZWEpUZEhKOU8xTjBjbWx1WjBSbFkyOWtaWEl1Y0hKdmRHOTBlWEJsTG1SbGRHVmpkRWx1WTI5dGNHeGxkR1ZEYUdGeVBXWjFibU4wYVc5dUtHSjFabVpsY2lsN2RtRnlJR2s5WW5WbVptVnlMbXhsYm1kMGFENDlNejh6T21KMVptWmxjaTVzWlc1bmRHZzdabTl5S0R0cFBqQTdhUzB0S1h0MllYSWdZejFpZFdabVpYSmJZblZtWm1WeUxteGxibWQwYUMxcFhUdHBaaWhwUFQweEppWmpQajQxUFQwMktYdDBhR2x6TG1Ob1lYSk1aVzVuZEdnOU1qdGljbVZoYTMxcFppaHBQRDB5SmlaalBqNDBQVDB4TkNsN2RHaHBjeTVqYUdGeVRHVnVaM1JvUFRNN1luSmxZV3Q5YVdZb2FUdzlNeVltWXo0K016MDlNekFwZTNSb2FYTXVZMmhoY2t4bGJtZDBhRDAwTzJKeVpXRnJmWDEwYUdsekxtTm9ZWEpTWldObGFYWmxaRDFwZlR0VGRISnBibWRFWldOdlpHVnlMbkJ5YjNSdmRIbHdaUzVsYm1ROVpuVnVZM1JwYjI0b1luVm1abVZ5S1h0MllYSWdjbVZ6UFZ3aVhDSTdhV1lvWW5WbVptVnlKaVppZFdabVpYSXViR1Z1WjNSb0tYSmxjejEwYUdsekxuZHlhWFJsS0dKMVptWmxjaWs3YVdZb2RHaHBjeTVqYUdGeVVtVmpaV2wyWldRcGUzWmhjaUJqY2oxMGFHbHpMbU5vWVhKU1pXTmxhWFpsWkR0MllYSWdZblZtUFhSb2FYTXVZMmhoY2tKMVptWmxjanQyWVhJZ1pXNWpQWFJvYVhNdVpXNWpiMlJwYm1jN2NtVnpLejFpZFdZdWMyeHBZMlVvTUN4amNpa3VkRzlUZEhKcGJtY29aVzVqS1gxeVpYUjFjbTRnY21WemZUdG1kVzVqZEdsdmJpQndZWE56VkdoeWIzVm5hRmR5YVhSbEtHSjFabVpsY2lsN2NtVjBkWEp1SUdKMVptWmxjaTUwYjFOMGNtbHVaeWgwYUdsekxtVnVZMjlrYVc1bktYMW1kVzVqZEdsdmJpQjFkR1l4TmtSbGRHVmpkRWx1WTI5dGNHeGxkR1ZEYUdGeUtHSjFabVpsY2lsN2RHaHBjeTVqYUdGeVVtVmpaV2wyWldROVluVm1abVZ5TG14bGJtZDBhQ1V5TzNSb2FYTXVZMmhoY2t4bGJtZDBhRDEwYUdsekxtTm9ZWEpTWldObGFYWmxaRDh5T2pCOVpuVnVZM1JwYjI0Z1ltRnpaVFkwUkdWMFpXTjBTVzVqYjIxd2JHVjBaVU5vWVhJb1luVm1abVZ5S1h0MGFHbHpMbU5vWVhKU1pXTmxhWFpsWkQxaWRXWm1aWEl1YkdWdVozUm9KVE03ZEdocGN5NWphR0Z5VEdWdVozUm9QWFJvYVhNdVkyaGhjbEpsWTJWcGRtVmtQek02TUgxOUxIdGlkV1ptWlhJNk5YMWRMRFUzT2x0bWRXNWpkR2x2YmloeVpYRjFhWEpsTEcxdlpIVnNaU3hsZUhCdmNuUnpLWHNvWm5WdVkzUnBiMjRvWjJ4dlltRnNLWHR0YjJSMWJHVXVaWGh3YjNKMGN6MWtaWEJ5WldOaGRHVTdablZ1WTNScGIyNGdaR1Z3Y21WallYUmxLR1p1TEcxelp5bDdhV1lvWTI5dVptbG5LRndpYm05RVpYQnlaV05oZEdsdmJsd2lLU2w3Y21WMGRYSnVJR1p1ZlhaaGNpQjNZWEp1WldROVptRnNjMlU3Wm5WdVkzUnBiMjRnWkdWd2NtVmpZWFJsWkNncGUybG1LQ0YzWVhKdVpXUXBlMmxtS0dOdmJtWnBaeWhjSW5Sb2NtOTNSR1Z3Y21WallYUnBiMjVjSWlrcGUzUm9jbTkzSUc1bGR5QkZjbkp2Y2lodGMyY3BmV1ZzYzJVZ2FXWW9ZMjl1Wm1sbktGd2lkSEpoWTJWRVpYQnlaV05oZEdsdmJsd2lLU2w3WTI5dWMyOXNaUzUwY21GalpTaHRjMmNwZldWc2MyVjdZMjl1YzI5c1pTNTNZWEp1S0cxelp5bDlkMkZ5Ym1Wa1BYUnlkV1Y5Y21WMGRYSnVJR1p1TG1Gd2NHeDVLSFJvYVhNc1lYSm5kVzFsYm5SektYMXlaWFIxY200Z1pHVndjbVZqWVhSbFpIMW1kVzVqZEdsdmJpQmpiMjVtYVdjb2JtRnRaU2w3ZEhKNWUybG1LQ0ZuYkc5aVlXd3ViRzlqWVd4VGRHOXlZV2RsS1hKbGRIVnliaUJtWVd4elpYMWpZWFJqYUNoZktYdHlaWFIxY200Z1ptRnNjMlY5ZG1GeUlIWmhiRDFuYkc5aVlXd3ViRzlqWVd4VGRHOXlZV2RsVzI1aGJXVmRPMmxtS0c1MWJHdzlQWFpoYkNseVpYUjFjbTRnWm1Gc2MyVTdjbVYwZFhKdUlGTjBjbWx1WnloMllXd3BMblJ2VEc5M1pYSkRZWE5sS0NrOVBUMWNJblJ5ZFdWY0luMTlLUzVqWVd4c0tIUm9hWE1zZEhsd1pXOW1JR2RzYjJKaGJDRTlQVndpZFc1a1pXWnBibVZrWENJL1oyeHZZbUZzT25SNWNHVnZaaUJ6Wld4bUlUMDlYQ0oxYm1SbFptbHVaV1JjSWo5elpXeG1PblI1Y0dWdlppQjNhVzVrYjNjaFBUMWNJblZ1WkdWbWFXNWxaRndpUDNkcGJtUnZkenA3ZlNsOUxIdDlYU3cxT0RwYlpuVnVZM1JwYjI0b2NtVnhkV2x5WlN4dGIyUjFiR1VzWlhod2IzSjBjeWw3Ylc5a2RXeGxMbVY0Y0c5eWRITTlaWGgwWlc1a08zWmhjaUJvWVhOUGQyNVFjbTl3WlhKMGVUMVBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1TzJaMWJtTjBhVzl1SUdWNGRHVnVaQ2dwZTNaaGNpQjBZWEpuWlhROWUzMDdabTl5S0haaGNpQnBQVEE3YVR4aGNtZDFiV1Z1ZEhNdWJHVnVaM1JvTzJrckt5bDdkbUZ5SUhOdmRYSmpaVDFoY21kMWJXVnVkSE5iYVYwN1ptOXlLSFpoY2lCclpYa2dhVzRnYzI5MWNtTmxLWHRwWmlob1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITnZkWEpqWlN4clpYa3BLWHQwWVhKblpYUmJhMlY1WFQxemIzVnlZMlZiYTJWNVhYMTlmWEpsZEhWeWJpQjBZWEpuWlhSOWZTeDdmVjE5TEh0OUxGc3hYU2tvTVNsOUtUdGNiaUlzSWlobWRXNWpkR2x2YmlCbEtIUXNiaXh5S1h0bWRXNWpkR2x2YmlCektHOHNkU2w3YVdZb0lXNWJiMTBwZTJsbUtDRjBXMjlkS1h0MllYSWdZVDEwZVhCbGIyWWdjbVZ4ZFdseVpUMDlYQ0ptZFc1amRHbHZibHdpSmlaeVpYRjFhWEpsTzJsbUtDRjFKaVpoS1hKbGRIVnliaUJoS0c4c0lUQXBPMmxtS0drcGNtVjBkWEp1SUdrb2J5d2hNQ2s3ZG1GeUlHWTlibVYzSUVWeWNtOXlLRndpUTJGdWJtOTBJR1pwYm1RZ2JXOWtkV3hsSUNkY0lpdHZLMXdpSjF3aUtUdDBhSEp2ZHlCbUxtTnZaR1U5WENKTlQwUlZURVZmVGs5VVgwWlBWVTVFWENJc1puMTJZWElnYkQxdVcyOWRQWHRsZUhCdmNuUnpPbnQ5ZlR0MFcyOWRXekJkTG1OaGJHd29iQzVsZUhCdmNuUnpMR1oxYm1OMGFXOXVLR1VwZTNaaGNpQnVQWFJiYjExYk1WMWJaVjA3Y21WMGRYSnVJSE1vYmo5dU9tVXBmU3hzTEd3dVpYaHdiM0owY3l4bExIUXNiaXh5S1gxeVpYUjFjbTRnYmx0dlhTNWxlSEJ2Y25SemZYWmhjaUJwUFhSNWNHVnZaaUJ5WlhGMWFYSmxQVDFjSW1aMWJtTjBhVzl1WENJbUpuSmxjWFZwY21VN1ptOXlLSFpoY2lCdlBUQTdienh5TG14bGJtZDBhRHR2S3lzcGN5aHlXMjlkS1R0eVpYUjFjbTRnYzMwcElpd2lKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnWVhWMGFDQTlJSEpsY1hWcGNtVW9KeTR2YkdsaUwyRjFkR2duS1R0Y2JuWmhjaUJvWld4d1pYSnpJRDBnY21WeGRXbHlaU2duTGk5c2FXSXZhR1ZzY0dWeWN5Y3BPMXh1ZG1GeUlGTjNZV2RuWlhKRGJHbGxiblFnUFNCeVpYRjFhWEpsS0NjdUwyeHBZaTlqYkdsbGJuUW5LVHRjYm5aaGNpQmtaWEJ5WldOaGRHbHZibGR5WVhCd1pYSWdQU0JtZFc1amRHbHZiaUFvZFhKc0xDQnZjSFJwYjI1ektTQjdYRzRnSUdobGJIQmxjbk11Ykc5bktDZFVhR2x6SUdseklHUmxjSEpsWTJGMFpXUXNJSFZ6WlNCY0ltNWxkeUJUZDJGbloyVnlRMnhwWlc1MFhDSWdhVzV6ZEdWaFpDNG5LVHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRk4zWVdkblpYSkRiR2xsYm5Rb2RYSnNMQ0J2Y0hScGIyNXpLVHRjYm4wN1hHNWNiaThxSUVobGNtVWdabTl5SUVsRk9DQlRkWEJ3YjNKMElDb3ZYRzVwWmlBb0lVRnljbUY1TG5CeWIzUnZkSGx3WlM1cGJtUmxlRTltS1NCN1hHNGdJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNXBibVJsZUU5bUlEMGdablZ1WTNScGIyNG9iMkpxTENCemRHRnlkQ2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBb2MzUmhjblFnZkh3Z01Da3NJR29nUFNCMGFHbHpMbXhsYm1kMGFEc2dhU0E4SUdvN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE5iYVYwZ1BUMDlJRzlpYWlrZ2V5QnlaWFIxY200Z2FUc2dmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnTFRFN1hHNGdJSDA3WEc1OVhHNWNiaThxSUVobGNtVWdabTl5SUVsRk9DQlRkWEJ3YjNKMElDb3ZYRzVwWmlBb0lWTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRISnBiU2tnZTF4dUlDQlRkSEpwYm1jdWNISnZkRzkwZVhCbExuUnlhVzBnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbVZ3YkdGalpTZ3ZYbHhjY3l0OFhGeHpLeVF2Wnl3Z0p5Y3BPMXh1SUNCOU8xeHVmVnh1WEc0dktpQklaWEpsSUdadmNpQnViMlJsSURFd0xuZ2djM1Z3Y0c5eWRDQXFMMXh1YVdZZ0tDRlRkSEpwYm1jdWNISnZkRzkwZVhCbExtVnVaSE5YYVhSb0tTQjdYRzRnSUZOMGNtbHVaeTV3Y205MGIzUjVjR1V1Wlc1a2MxZHBkR2dnUFNCbWRXNWpkR2x2YmloemRXWm1hWGdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGJtUmxlRTltS0hOMVptWnBlQ3dnZEdocGN5NXNaVzVuZEdnZ0xTQnpkV1ptYVhndWJHVnVaM1JvS1NBaFBUMGdMVEU3WEc0Z0lIMDdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1UzZGhaMmRsY2tOc2FXVnVkRHRjYmx4dVUzZGhaMmRsY2tOc2FXVnVkQzVCY0dsTFpYbEJkWFJvYjNKcGVtRjBhVzl1SUQwZ1lYVjBhQzVCY0dsTFpYbEJkWFJvYjNKcGVtRjBhVzl1TzF4dVUzZGhaMmRsY2tOc2FXVnVkQzVRWVhOemQyOXlaRUYxZEdodmNtbDZZWFJwYjI0Z1BTQmhkWFJvTGxCaGMzTjNiM0prUVhWMGFHOXlhWHBoZEdsdmJqdGNibE4zWVdkblpYSkRiR2xsYm5RdVEyOXZhMmxsUVhWMGFHOXlhWHBoZEdsdmJpQTlJR0YxZEdndVEyOXZhMmxsUVhWMGFHOXlhWHBoZEdsdmJqdGNibE4zWVdkblpYSkRiR2xsYm5RdVUzZGhaMmRsY2tGd2FTQTlJR1JsY0hKbFkyRjBhVzl1VjNKaGNIQmxjanRjYmxOM1lXZG5aWEpEYkdsbGJuUXVVM2RoWjJkbGNrTnNhV1Z1ZENBOUlHUmxjSEpsWTJGMGFXOXVWM0poY0hCbGNqdGNibE4zWVdkblpYSkRiR2xsYm5RdVUyTm9aVzFoVFdGeWEzVndJRDBnY21WeGRXbHlaU2duTGk5c2FXSXZjMk5vWlcxaExXMWhjbXQxY0NjcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ2FHVnNjR1Z5Y3lBOUlISmxjWFZwY21Vb0p5NHZhR1ZzY0dWeWN5Y3BPMXh1ZG1GeUlHSjBiMkVnUFNCeVpYRjFhWEpsS0NkaWRHOWhKeWs3SUM4dklHcHphR2x1ZENCcFoyNXZjbVU2YkdsdVpWeHVkbUZ5SUVOdmIydHBaVXBoY2lBOUlISmxjWFZwY21Vb0oyTnZiMnRwWldwaGNpY3BMa052YjJ0cFpVcGhjanRjYm5aaGNpQmZJRDBnZTF4dUlDQmxZV05vT2lCeVpYRjFhWEpsS0Nkc2IyUmhjMmd0WTI5dGNHRjBMMk52Ykd4bFkzUnBiMjR2WldGamFDY3BMRnh1SUNCcGJtTnNkV1JsY3pvZ2NtVnhkV2x5WlNnbmJHOWtZWE5vTFdOdmJYQmhkQzlqYjJ4c1pXTjBhVzl1TDJsdVkyeDFaR1Z6Snlrc1hHNGdJR2x6VDJKcVpXTjBPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOUFltcGxZM1FuS1N4Y2JpQWdhWE5CY25KaGVUb2djbVZ4ZFdseVpTZ25iRzlrWVhOb0xXTnZiWEJoZEM5c1lXNW5MMmx6UVhKeVlYa25LVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQlRkMkZuWjJWeVFYVjBhRzl5YVhwaGRHbHZibk1nWVhCd2JHbGxjeUIwYUdVZ1kyOXljbVZqZENCaGRYUm9iM0pwZW1GMGFXOXVJSFJ2SUdGdUlHOXdaWEpoZEdsdmJpQmlaV2x1WnlCbGVHVmpkWFJsWkZ4dUlDb3ZYRzUyWVhJZ1UzZGhaMmRsY2tGMWRHaHZjbWw2WVhScGIyNXpJRDBnYlc5a2RXeGxMbVY0Y0c5eWRITXVVM2RoWjJkbGNrRjFkR2h2Y21sNllYUnBiMjV6SUQwZ1puVnVZM1JwYjI0Z0tHRjFkR2g2S1NCN1hHNGdJSFJvYVhNdVlYVjBhSG9nUFNCaGRYUm9laUI4ZkNCN2ZUdGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1FXUmtJR0YxZEdoeklIUnZJSFJvWlNCb1lYTm9YRzRnS2lCWGFXeHNJRzkyWlhKM2NtbDBaU0JoYm5rZ1pYaHBjM1JwYm1kY2JpQXFYRzRnS2k5Y2JsTjNZV2RuWlhKQmRYUm9iM0pwZW1GMGFXOXVjeTV3Y205MGIzUjVjR1V1WVdSa0lEMGdablZ1WTNScGIyNGdLRzVoYldVc0lHRjFkR2dwSUh0Y2JpQWdhV1lvWHk1cGMwOWlhbVZqZENodVlXMWxLU2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR3RsZVNCcGJpQnVZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbUYxZEdoNlcydGxlVjBnUFNCdVlXMWxXMnRsZVYwN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2FXWW9kSGx3Wlc5bUlHNWhiV1VnUFQwOUlDZHpkSEpwYm1jbklDbDdYRzRnSUNBZ2RHaHBjeTVoZFhSb2VsdHVZVzFsWFNBOUlHRjFkR2c3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnWVhWMGFEdGNibjA3WEc1Y2JsTjNZV2RuWlhKQmRYUm9iM0pwZW1GMGFXOXVjeTV3Y205MGIzUjVjR1V1Y21WdGIzWmxJRDBnWm5WdVkzUnBiMjRnS0c1aGJXVXBJSHRjYmlBZ2NtVjBkWEp1SUdSbGJHVjBaU0IwYUdsekxtRjFkR2g2VzI1aGJXVmRPMXh1ZlR0Y2JseHVVM2RoWjJkbGNrRjFkR2h2Y21sNllYUnBiMjV6TG5CeWIzUnZkSGx3WlM1aGNIQnNlU0E5SUdaMWJtTjBhVzl1SUNodlltb3NJSE5sWTNWeWFYUnBaWE1wSUh0Y2JpQWdkbUZ5SUhOMFlYUjFjeUE5SUhSeWRXVTdYRzRnSUhaaGNpQmhjSEJzZVVGc2JDQTlJQ0Z6WldOMWNtbDBhV1Z6TzF4dUlDQjJZWElnWm14aGRIUmxibVZrVTJWamRYSnBkR2xsY3lBOUlGdGRPMXh1WEc0Z0lDOHZJR1poZG05eUlIUm9aU0J2WW1wbFkzUXRiR1YyWld3Z1lYVjBhRzl5YVhwaGRHbHZibk1nYjNabGNpQm5iRzlpWVd4Y2JpQWdkbUZ5SUdGMWRHaDZJRDBnYjJKcUxtTnNhV1Z1ZEVGMWRHaHZjbWw2WVhScGIyNXpJSHg4SUhSb2FYTXVZWFYwYUhvN1hHNWNiaUFnTHk4Z1UyVmpkWEpwZEdsbGN5QmpiM1ZzWkNCaVpTQmJJSHQ5SUYxY2JpQWdYeTVsWVdOb0tITmxZM1Z5YVhScFpYTXNJR1oxYm1OMGFXOXVJQ2h2WW1vc0lHdGxlU2tnZTF4dVhHNGdJQ0FnTHk4Z1RXRnJaU0J6ZFhKbElIZGxJR0ZqWTI5MWJuUWdabTl5SUhObFkzVnlhWFJwWlhNZ1ltVnBibWNnV3lCemRISWdYVnh1SUNBZ0lHbG1LSFI1Y0dWdlppQnJaWGtnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQm1iR0YwZEdWdVpXUlRaV04xY21sMGFXVnpMbkIxYzJnb2EyVjVLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJHYkdGMGRHVnVJR3RsZVhNZ2FXNGdkRzhnYjNWeUlHRnljbUY1WEc0Z0lDQWdYeTVsWVdOb0tHOWlhaXdnWm5WdVkzUnBiMjRnS0haaGJDd2dhMlY1S1NCN1hHNGdJQ0FnSUNCbWJHRjBkR1Z1WldSVFpXTjFjbWwwYVdWekxuQjFjMmdvYTJWNUtUdGNiaUFnSUNCOUtUdGNiaUFnZlNrN1hHNWNiaUFnWHk1bFlXTm9LR0YxZEdoNkxDQm1kVzVqZEdsdmJpQW9ZWFYwYUN3Z1lYVjBhRTVoYldVcElIdGNiaUFnSUNCcFppaGhjSEJzZVVGc2JDQjhmQ0JmTG1sdVkyeDFaR1Z6S0dac1lYUjBaVzVsWkZObFkzVnlhWFJwWlhNc0lHRjFkR2hPWVcxbEtTa2dlMXh1SUNBZ0lDQWdkbUZ5SUc1bGQxTjBZWFIxY3lBOUlHRjFkR2d1WVhCd2JIa29iMkpxS1R0Y2JpQWdJQ0FnSUhOMFlYUjFjeUE5SUhOMFlYUjFjeUFtSmlBaElXNWxkMU4wWVhSMWN6c2dMeThnYkc5bmFXTmhiQ0JQVW5NZ2NtVm5ZWEprYVc1bklITjBZWFIxYzF4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYmlBZ2NtVjBkWEp1SUhOMFlYUjFjenRjYm4wN1hHNWNiaThxS2x4dUlDb2dRWEJwUzJWNVFYVjBhRzl5YVhwaGRHbHZiaUJoYkd4dmQzTWdZU0J4ZFdWeWVTQndZWEpoYlNCdmNpQm9aV0ZrWlhJZ2RHOGdZbVVnYVc1cVpXTjBaV1JjYmlBcUwxeHVkbUZ5SUVGd2FVdGxlVUYxZEdodmNtbDZZWFJwYjI0Z1BTQnRiMlIxYkdVdVpYaHdiM0owY3k1QmNHbExaWGxCZFhSb2IzSnBlbUYwYVc5dUlEMGdablZ1WTNScGIyNGdLRzVoYldVc0lIWmhiSFZsTENCMGVYQmxLU0I3WEc0Z0lIUm9hWE11Ym1GdFpTQTlJRzVoYldVN1hHNGdJSFJvYVhNdWRtRnNkV1VnUFNCMllXeDFaVHRjYmlBZ2RHaHBjeTUwZVhCbElEMGdkSGx3WlR0Y2JuMDdYRzVjYmtGd2FVdGxlVUYxZEdodmNtbDZZWFJwYjI0dWNISnZkRzkwZVhCbExtRndjR3g1SUQwZ1puVnVZM1JwYjI0Z0tHOWlhaWtnZTF4dUlDQnBaaUFvZEdocGN5NTBlWEJsSUQwOVBTQW5jWFZsY25rbktTQjdYRzRnSUNBZ0x5OGdjMlZsSUdsbUlHRnNjbVZoWkhrZ1lYQndiR2xsWkM0Z0lFbG1JSE52TENCa2IyNG5kQ0JrYnlCcGRDQmhaMkZwYmx4dVhHNGdJQ0FnZG1GeUlIRndPMXh1SUNBZ0lHbG1JQ2h2WW1vdWRYSnNMbWx1WkdWNFQyWW9KejhuS1NBK0lEQXBJSHRjYmlBZ0lDQWdJSEZ3SUQwZ2IySnFMblZ5YkM1emRXSnpkSEpwYm1jb2IySnFMblZ5YkM1cGJtUmxlRTltS0NjL0p5a2dLeUF4S1R0Y2JpQWdJQ0FnSUhaaGNpQndZWEowY3lBOUlIRndMbk53YkdsMEtDY21KeWs3WEc0Z0lDQWdJQ0JwWmlod1lYSjBjeUFtSmlCd1lYSjBjeTVzWlc1bmRHZ2dQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lHWnZjaWgyWVhJZ2FTQTlJREE3SUdrZ1BDQndZWEowY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnJkaUE5SUhCaGNuUnpXMmxkTG5Od2JHbDBLQ2M5SnlrN1hHNGdJQ0FnSUNBZ0lDQWdhV1lvYTNZZ0ppWWdhM1l1YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHdDJXekJkSUQwOVBTQjBhR2x6TG01aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnYzJ0cGNDQnBkRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHOWlhaTUxY213dWFXNWtaWGhQWmlnblB5Y3BJRDRnTUNrZ2UxeHVJQ0FnSUNBZ2IySnFMblZ5YkNBOUlHOWlhaTUxY213Z0t5QW5KaWNnS3lCMGFHbHpMbTVoYldVZ0t5QW5QU2NnS3lCMGFHbHpMblpoYkhWbE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J2WW1vdWRYSnNJRDBnYjJKcUxuVnliQ0FySUNjL0p5QXJJSFJvYVhNdWJtRnRaU0FySUNjOUp5QXJJSFJvYVhNdWRtRnNkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMGdaV3h6WlNCcFppQW9kR2hwY3k1MGVYQmxJRDA5UFNBbmFHVmhaR1Z5SnlrZ2UxeHVJQ0FnSUdsbUtIUjVjR1Z2WmlCdlltb3VhR1ZoWkdWeWMxdDBhR2x6TG01aGJXVmRJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdiMkpxTG1obFlXUmxjbk5iZEdocGN5NXVZVzFsWFNBOUlIUm9hWE11ZG1Gc2RXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgxY2JuMDdYRzVjYm5aaGNpQkRiMjlyYVdWQmRYUm9iM0pwZW1GMGFXOXVJRDBnYlc5a2RXeGxMbVY0Y0c5eWRITXVRMjl2YTJsbFFYVjBhRzl5YVhwaGRHbHZiaUE5SUdaMWJtTjBhVzl1SUNoamIyOXJhV1VwSUh0Y2JpQWdkR2hwY3k1amIyOXJhV1VnUFNCamIyOXJhV1U3WEc1OU8xeHVYRzVEYjI5cmFXVkJkWFJvYjNKcGVtRjBhVzl1TG5CeWIzUnZkSGx3WlM1aGNIQnNlU0E5SUdaMWJtTjBhVzl1SUNodlltb3BJSHRjYmlBZ2IySnFMbU52YjJ0cFpVcGhjaUE5SUc5aWFpNWpiMjlyYVdWS1lYSWdmSHdnYm1WM0lFTnZiMnRwWlVwaGNpZ3BPMXh1SUNCdlltb3VZMjl2YTJsbFNtRnlMbk5sZEVOdmIydHBaU2gwYUdsekxtTnZiMnRwWlNrN1hHNWNiaUFnY21WMGRYSnVJSFJ5ZFdVN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZCaGMzTjNiM0prSUVGMWRHaHZjbWw2WVhScGIyNGdhWE1nWVNCaVlYTnBZeUJoZFhSb0lHbHRjR3hsYldWdWRHRjBhVzl1WEc0Z0tpOWNiblpoY2lCUVlYTnpkMjl5WkVGMWRHaHZjbWw2WVhScGIyNGdQU0J0YjJSMWJHVXVaWGh3YjNKMGN5NVFZWE56ZDI5eVpFRjFkR2h2Y21sNllYUnBiMjRnUFNCbWRXNWpkR2x2YmlBb2RYTmxjbTVoYldVc0lIQmhjM04zYjNKa0tTQjdYRzRnSUdsbUlDaGhjbWQxYldWdWRITXViR1Z1WjNSb0lEMDlQU0F6S1NCN1hHNGdJQ0FnYUdWc2NHVnljeTVzYjJjb0oxQmhjM04zYjNKa1FYVjBhRzl5YVhwaGRHbHZiam9nZEdobElGeGNKMjVoYldWY1hDY2dZWEpuZFcxbGJuUWdhR0Z6SUdKbFpXNGdjbVZ0YjNabFpDd2djR0Z6Y3lCdmJteDVJSFZ6WlhKdVlXMWxJR0Z1WkNCd1lYTnpkMjl5WkNjcE8xeHVJQ0FnSUhWelpYSnVZVzFsSUQwZ1lYSm5kVzFsYm5Seld6RmRPMXh1SUNBZ0lIQmhjM04zYjNKa0lEMGdZWEpuZFcxbGJuUnpXekpkTzF4dUlDQjlYRzRnSUhSb2FYTXVkWE5sY201aGJXVWdQU0IxYzJWeWJtRnRaVHRjYmlBZ2RHaHBjeTV3WVhOemQyOXlaQ0E5SUhCaGMzTjNiM0prTzF4dWZUdGNibHh1VUdGemMzZHZjbVJCZFhSb2IzSnBlbUYwYVc5dUxuQnliM1J2ZEhsd1pTNWhjSEJzZVNBOUlHWjFibU4wYVc5dUlDaHZZbW9wSUh0Y2JpQWdhV1lvZEhsd1pXOW1JRzlpYWk1b1pXRmtaWEp6TGtGMWRHaHZjbWw2WVhScGIyNGdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ2IySnFMbWhsWVdSbGNuTXVRWFYwYUc5eWFYcGhkR2x2YmlBOUlDZENZWE5wWXlBbklDc2dZblJ2WVNoMGFHbHpMblZ6WlhKdVlXMWxJQ3NnSnpvbklDc2dkR2hwY3k1d1lYTnpkMjl5WkNrN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RISjFaVHRjYm4wN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCZklEMGdlMXh1SUNCaWFXNWtPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyWjFibU4wYVc5dUwySnBibVFuS1N4Y2JpQWdZMnh2Ym1WRVpXVndPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2WTJ4dmJtVkVaV1Z3Snlrc1hHNGdJR1pwYm1RNklISmxjWFZwY21Vb0oyeHZaR0Z6YUMxamIyMXdZWFF2WTI5c2JHVmpkR2x2Ymk5bWFXNWtKeWtzWEc0Z0lHWnZja1ZoWTJnNklISmxjWFZwY21Vb0oyeHZaR0Z6YUMxamIyMXdZWFF2WTI5c2JHVmpkR2x2Ymk5bWIzSkZZV05vSnlrc1hHNGdJR2x1WkdWNFQyWTZJSEpsY1hWcGNtVW9KMnh2WkdGemFDMWpiMjF3WVhRdllYSnlZWGt2YVc1a1pYaFBaaWNwTEZ4dUlDQnBjMEZ5Y21GNU9pQnlaWEYxYVhKbEtDZHNiMlJoYzJndFkyOXRjR0YwTDJ4aGJtY3ZhWE5CY25KaGVTY3BMRnh1SUNCcGMwOWlhbVZqZERvZ2NtVnhkV2x5WlNnbmJHOWtZWE5vTFdOdmJYQmhkQzlzWVc1bkwybHpUMkpxWldOMEp5a3NYRzRnSUdselJuVnVZM1JwYjI0NklISmxjWFZwY21Vb0oyeHZaR0Z6YUMxamIyMXdZWFF2YkdGdVp5OXBjMFoxYm1OMGFXOXVKeWtzWEc0Z0lHbHpVR3hoYVc1UFltcGxZM1E2SUhKbGNYVnBjbVVvSjJ4dlpHRnphQzFqYjIxd1lYUXZiR0Z1Wnk5cGMxQnNZV2x1VDJKcVpXTjBKeWtzWEc0Z0lHbHpWVzVrWldacGJtVmtPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOVmJtUmxabWx1WldRbktWeHVmVHRjYm5aaGNpQmhkWFJvSUQwZ2NtVnhkV2x5WlNnbkxpOWhkWFJvSnlrN1hHNTJZWElnYUdWc2NHVnljeUE5SUhKbGNYVnBjbVVvSnk0dmFHVnNjR1Z5Y3ljcE8xeHVkbUZ5SUUxdlpHVnNJRDBnY21WeGRXbHlaU2duTGk5MGVYQmxjeTl0YjJSbGJDY3BPMXh1ZG1GeUlFOXdaWEpoZEdsdmJpQTlJSEpsY1hWcGNtVW9KeTR2ZEhsd1pYTXZiM0JsY21GMGFXOXVKeWs3WEc1MllYSWdUM0JsY21GMGFXOXVSM0p2ZFhBZ1BTQnlaWEYxYVhKbEtDY3VMM1I1Y0dWekwyOXdaWEpoZEdsdmJrZHliM1Z3SnlrN1hHNTJZWElnVW1WemIyeDJaWElnUFNCeVpYRjFhWEpsS0NjdUwzSmxjMjlzZG1WeUp5azdYRzUyWVhJZ1UzZGhaMmRsY2toMGRIQWdQU0J5WlhGMWFYSmxLQ2N1TDJoMGRIQW5LVHRjYm5aaGNpQlRkMkZuWjJWeVUzQmxZME52Ym5abGNuUmxjaUE5SUhKbGNYVnBjbVVvSnk0dmMzQmxZeTFqYjI1MlpYSjBaWEluS1R0Y2JuWmhjaUJSSUQwZ2NtVnhkV2x5WlNnbmNTY3BPMXh1WEc0dkx5QlhaU0JvWVhabElIUnZJR3RsWlhBZ2RISmhZMnNnYjJZZ2RHaGxJR1oxYm1OMGFXOXVMM0J5YjNCbGNuUjVJRzVoYldWeklIUnZJR0YyYjJsa0lHTnZiR3hwYzJsdmJuTWdabTl5SUhSaFp5QnVZVzFsY3lCM2FHbGphQ0JoY21VZ2RYTmxaQ0IwYnlCaGJHeHZkeUIwYUdWY2JpOHZJR1p2Ykd4dmQybHVaeUIxYzJGblpUb2dKMk5zYVdWdWRDNTdkR0ZuVG1GdFpYMG5YRzUyWVhJZ2NtVnpaWEoyWldSRGJHbGxiblJVWVdkeklEMGdXMXh1SUNBbllYQnBjeWNzWEc0Z0lDZGhkWFJvYjNKcGVtRjBhVzl1VTJOb1pXMWxKeXhjYmlBZ0oyRjFkR2h2Y21sNllYUnBiMjV6Snl4Y2JpQWdKMkpoYzJWUVlYUm9KeXhjYmlBZ0oySjFhV3hrSnl4Y2JpQWdKMkoxYVd4a1JuSnZiVEZmTVZOd1pXTW5MRnh1SUNBblluVnBiR1JHY205dE1WOHlVM0JsWXljc1hHNGdJQ2RpZFdsc1pFWnliMjFUY0dWakp5eGNiaUFnSjJOc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekp5eGNiaUFnSjJOdmJuWmxjblJKYm1adkp5eGNiaUFnSjJSbFluVm5KeXhjYmlBZ0oyUmxabUYxYkhSRmNuSnZja05oYkd4aVlXTnJKeXhjYmlBZ0oyUmxabUYxYkhSVGRXTmpaWE56UTJGc2JHSmhZMnNuTEZ4dUlDQW5aVzVoWW14bFEyOXZhMmxsY3ljc1hHNGdJQ2RtWVdsc0p5eGNiaUFnSjJaaGFXeDFjbVVuTEZ4dUlDQW5abWx1YVhOb0p5eGNiaUFnSjJobGJIQW5MRnh1SUNBbmFHOXpkQ2NzWEc0Z0lDZHBaRVp5YjIxUGNDY3NYRzRnSUNkcGJtWnZKeXhjYmlBZ0oybHVhWFJwWVd4cGVtVW5MRnh1SUNBbmFYTkNkV2xzZENjc1hHNGdJQ2RwYzFaaGJHbGtKeXhjYmlBZ0oyMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5Y3NYRzRnSUNkdGIyUmxiSE1uTEZ4dUlDQW5iVzlrWld4elFYSnlZWGtuTEZ4dUlDQW5iM0IwYVc5dWN5Y3NYRzRnSUNkd1lYSmhiV1YwWlhKTllXTnlieWNzWEc0Z0lDZHdZWEp6WlZWeWFTY3NYRzRnSUNkd2NtOW5jbVZ6Y3ljc1hHNGdJQ2R5WlhOdmRYSmpaVU52ZFc1MEp5eGNiaUFnSjNOaGJYQnNaVTF2WkdWc2N5Y3NYRzRnSUNkelpXeG1VbVZtYkdWamRDY3NYRzRnSUNkelpYUkRiMjV6YjJ4cFpHRjBaV1JOYjJSbGJITW5MRnh1SUNBbmMzQmxZeWNzWEc0Z0lDZHpkWEJ3YjNKMFpXUlRkV0p0YVhSTlpYUm9iMlJ6Snl4Y2JpQWdKM04zWVdkblpYSlNaWEYxWlhOMFNHVmhaR1Z5Y3ljc1hHNGdJQ2QwWVdkR2NtOXRUR0ZpWld3bkxGeHVJQ0FuZEdsMGJHVW5MRnh1SUNBbmRYSnNKeXhjYmlBZ0ozVnpaVXBSZFdWeWVTY3NYRzRnSUNkcWNYVmxjbmxCYW1GNFEyRmphR1VuWEc1ZE8xeHVMeThnVjJVZ2FHRjJaU0IwYnlCclpXVndJSFJ5WVdOcklHOW1JSFJvWlNCbWRXNWpkR2x2Ymk5d2NtOXdaWEowZVNCdVlXMWxjeUIwYnlCaGRtOXBaQ0JqYjJ4c2FYTnBiMjV6SUdadmNpQjBZV2NnYm1GdFpYTWdkMmhwWTJnZ1lYSmxJSFZ6WldRZ2RHOGdZV3hzYjNjZ2RHaGxYRzR2THlCbWIyeHNiM2RwYm1jZ2RYTmhaMlU2SUNkamJHbGxiblF1WVhCcGN5NTdkR0ZuVG1GdFpYMG5YRzUyWVhJZ2NtVnpaWEoyWldSQmNHbFVZV2R6SUQwZ1cxeHVJQ0FuWVhCcGN5Y3NYRzRnSUNkaGMwTjFjbXduTEZ4dUlDQW5aR1Z6WTNKcGNIUnBiMjRuTEZ4dUlDQW5aWGgwWlhKdVlXeEViMk56Snl4Y2JpQWdKMmhsYkhBbkxGeHVJQ0FuYkdGaVpXd25MRnh1SUNBbmJtRnRaU2NzWEc0Z0lDZHZjR1Z5WVhScGIyNG5MRnh1SUNBbmIzQmxjbUYwYVc5dWN5Y3NYRzRnSUNkdmNHVnlZWFJwYjI1elFYSnlZWGtuTEZ4dUlDQW5jR0YwYUNjc1hHNGdJQ2QwWVdjblhHNWRPMXh1ZG1GeUlITjFjSEJ2Y25SbFpFOXdaWEpoZEdsdmJrMWxkR2h2WkhNZ1BTQmJKMlJsYkdWMFpTY3NJQ2RuWlhRbkxDQW5hR1ZoWkNjc0lDZHZjSFJwYjI1ekp5d2dKM0JoZEdOb0p5d2dKM0J2YzNRbkxDQW5jSFYwSjEwN1hHNTJZWElnVTNkaFoyZGxja05zYVdWdWRDQTlJRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdablZ1WTNScGIyNGdLSFZ5YkN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0IwYUdsekxtRjFkR2h2Y21sNllYUnBiMjV6SUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVoZFhSb2IzSnBlbUYwYVc5dVUyTm9aVzFsSUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTVpWVhObFVHRjBhQ0E5SUc1MWJHdzdYRzRnSUhSb2FYTXVaR1ZpZFdjZ1BTQm1ZV3h6WlR0Y2JpQWdkR2hwY3k1bGJtRmliR1ZEYjI5cmFXVnpJRDBnWm1Gc2MyVTdYRzRnSUhSb2FYTXVhVzVtYnlBOUlHNTFiR3c3WEc0Z0lIUm9hWE11YVhOQ2RXbHNkQ0E5SUdaaGJITmxPMXh1SUNCMGFHbHpMbWx6Vm1Gc2FXUWdQU0JtWVd4elpUdGNiaUFnZEdocGN5NXRiMlJsYkhOQmNuSmhlU0E5SUZ0ZE8xeHVJQ0IwYUdsekxuSmxjMjkxY21ObFEyOTFiblFnUFNBd08xeHVJQ0IwYUdsekxuVnliQ0E5SUc1MWJHdzdYRzRnSUhSb2FYTXVkWE5sU2xGMVpYSjVJRDBnWm1Gc2MyVTdYRzRnSUhSb2FYTXVhbkYxWlhKNVFXcGhlRU5oWTJobElEMGdabUZzYzJVN1hHNGdJSFJvYVhNdWMzZGhaMmRsY2s5aWFtVmpkQ0E5SUh0OU8xeHVJQ0IwYUdsekxtUmxabVZ5Y21Wa1EyeHBaVzUwSUQwZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUhSb2FYTXVZMnhwWlc1MFFYVjBhRzl5YVhwaGRHbHZibk1nUFNCdVpYY2dZWFYwYUM1VGQyRm5aMlZ5UVhWMGFHOXlhWHBoZEdsdmJuTW9LVHRjYmx4dUlDQnBaaUFvZEhsd1pXOW1JSFZ5YkNBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGJtbDBhV0ZzYVhwbEtIVnliQ3dnYjNCMGFXOXVjeWs3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYm4wN1hHNWNibE4zWVdkblpYSkRiR2xsYm5RdWNISnZkRzkwZVhCbExtbHVhWFJwWVd4cGVtVWdQU0JtZFc1amRHbHZiaUFvZFhKc0xDQnZjSFJwYjI1ektTQjdYRzRnSUhSb2FYTXViVzlrWld4eklEMGdlMzA3WEc0Z0lIUm9hWE11YzJGdGNHeGxUVzlrWld4eklEMGdlMzA3WEc1Y2JpQWdhV1lnS0hSNWNHVnZaaUIxY213Z1BUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdkR2hwY3k1MWNtd2dQU0IxY213N1hHNGdJSDBnWld4elpTQnBaaUFvWHk1cGMwOWlhbVZqZENoMWNtd3BLU0I3WEc0Z0lDQWdiM0IwYVc5dWN5QTlJSFZ5YkR0Y2JpQWdJQ0IwYUdsekxuVnliQ0E5SUc5d2RHbHZibk11ZFhKc08xeHVJQ0I5WEc1Y2JpQWdhV1lvZEdocGN5NTFjbXdnSmlZZ2RHaHBjeTUxY213dWFXNWtaWGhQWmlnbmFIUjBjRG9uS1NBOVBUMGdMVEVnSmlZZ2RHaHBjeTUxY213dWFXNWtaWGhQWmlnbmFIUjBjSE02SnlrZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnTHk4Z2JtOGdjSEp2ZEc5amIyd3NJSE52SUhkbElHTmhiaUJ2Ym14NUlIVnpaU0IzYVc1a2IzY2dhV1lnYVhRZ1pYaHBjM1J6WEc0Z0lDQWdhV1lvZEhsd1pXOW1LSGRwYm1SdmR5a2dJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSFI1Y0dWdlppaDNhVzVrYjNjdWJHOWpZWFJwYjI0cElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTUxY213Z1BTQjNhVzVrYjNjdWJHOWpZWFJwYjI0dWIzSnBaMmx1SUNzZ2RHaHBjeTUxY213N1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2IzQjBhVzl1Y3lBOUlHOXdkR2x2Ym5NZ2ZId2dlMzA3WEc0Z0lIUm9hWE11WTJ4cFpXNTBRWFYwYUc5eWFYcGhkR2x2Ym5NdVlXUmtLRzl3ZEdsdmJuTXVZWFYwYUc5eWFYcGhkR2x2Ym5NcE8xeHVJQ0IwYUdsekxuTjNZV2RuWlhKU1pYRjFaWE4wU0dWaFpHVnljeUE5SUc5d2RHbHZibk11YzNkaFoyZGxjbEpsY1hWbGMzUklaV0ZrWlhKeklIeDhJQ2RoY0hCc2FXTmhkR2x2Ymk5cWMyOXVPMk5vWVhKelpYUTlkWFJtTFRnc0tpOHFKenRjYmlBZ2RHaHBjeTVrWldaaGRXeDBVM1ZqWTJWemMwTmhiR3hpWVdOcklEMGdiM0IwYVc5dWN5NWtaV1poZFd4MFUzVmpZMlZ6YzBOaGJHeGlZV05ySUh4OElHNTFiR3c3WEc0Z0lIUm9hWE11WkdWbVlYVnNkRVZ5Y205eVEyRnNiR0poWTJzZ1BTQnZjSFJwYjI1ekxtUmxabUYxYkhSRmNuSnZja05oYkd4aVlXTnJJSHg4SUc1MWJHdzdYRzRnSUhSb2FYTXViVzlrWld4UWNtOXdaWEowZVUxaFkzSnZJRDBnYjNCMGFXOXVjeTV0YjJSbGJGQnliM0JsY25SNVRXRmpjbThnZkh3Z2JuVnNiRHRjYmlBZ2RHaHBjeTVqYjI1dVpXTjBhVzl1UVdkbGJuUWdQU0J2Y0hScGIyNXpMbU52Ym01bFkzUnBiMjVCWjJWdWRDQjhmQ0J1ZFd4c08xeHVJQ0IwYUdsekxuQmhjbUZ0WlhSbGNrMWhZM0p2SUQwZ2IzQjBhVzl1Y3k1d1lYSmhiV1YwWlhKTllXTnlieUI4ZkNCdWRXeHNPMXh1SUNCMGFHbHpMblZ6WlZCeWIyMXBjMlVnUFNCdmNIUnBiMjV6TG5WelpWQnliMjFwYzJVZ2ZId2diblZzYkR0Y2JseHVJQ0F2THlCdmNHVnlZWFJwYjI0Z2NtVnhkV1Z6ZENCMGFXMWxiM1YwSUdSbFptRjFiSFJjYmlBZ2RHaHBjeTUwYVcxbGIzVjBJRDBnYjNCMGFXOXVjeTUwYVcxbGIzVjBJSHg4SUc1MWJHdzdYRzRnSUM4dklHUmxabUYxYkhRZ2RHOGdjbVZ4ZFdWemRDQjBhVzFsYjNWMElIZG9aVzRnYm05MElITndaV05wWm1sbFpGeHVJQ0IwYUdsekxtWmxkR05vVTNCbFkxUnBiV1Z2ZFhRZ1BTQjBlWEJsYjJZZ2IzQjBhVzl1Y3k1bVpYUmphRk53WldOVWFXMWxiM1YwSUNFOVBTQW5kVzVrWldacGJtVmtKeUEvWEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVpsZEdOb1UzQmxZMVJwYldWdmRYUWdPaUJ2Y0hScGIyNXpMblJwYldWdmRYUWdmSHdnYm5Wc2JEdGNibHh1SUNCcFppaDBhR2x6TG5WelpWQnliMjFwYzJVcElIdGNiaUFnSUNCMGFHbHpMbVJsWm1WeWNtVmtRMnhwWlc1MElEMGdVUzVrWldabGNpZ3BPMXh1SUNCOVhHNWNiaUFnYVdZZ0tIUjVjR1Z2WmlCdmNIUnBiMjV6TG5OMVkyTmxjM01nUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQjBhR2x6TG5OMVkyTmxjM01nUFNCdmNIUnBiMjV6TG5OMVkyTmxjM003WEc0Z0lIMWNiaUFnYVdZZ0tHOXdkR2x2Ym5NdWRYTmxTbEYxWlhKNUtTQjdYRzRnSUNBZ2RHaHBjeTUxYzJWS1VYVmxjbmtnUFNCdmNIUnBiMjV6TG5WelpVcFJkV1Z5ZVR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2h2Y0hScGIyNXpMbXB4ZFdWeWVVRnFZWGhEWVdOb1pTa2dlMXh1SUNBZ0lIUm9hWE11YW5GMVpYSjVRV3BoZUVOaFkyaGxJRDBnYjNCMGFXOXVjeTVxY1hWbGNubEJhbUY0UTJGamFHVTdYRzRnSUgxY2JseHVJQ0JwWmlBb2IzQjBhVzl1Y3k1bGJtRmliR1ZEYjI5cmFXVnpLU0I3WEc0Z0lDQWdkR2hwY3k1bGJtRmliR1ZEYjI5cmFXVnpJRDBnYjNCMGFXOXVjeTVsYm1GaWJHVkRiMjlyYVdWek8xeHVJQ0I5WEc1Y2JpQWdkR2hwY3k1dmNIUnBiMjV6SUQwZ2IzQjBhVzl1Y3lCOGZDQjdmVHRjYmx4dUlDQXZMeUJ0WVhsaVpTQmtiMjRuZENCdVpXVmtJSFJvYVhNL1hHNGdJSFJvYVhNdWIzQjBhVzl1Y3k1MGFXMWxiM1YwSUQwZ2RHaHBjeTUwYVcxbGIzVjBPMXh1SUNCMGFHbHpMbTl3ZEdsdmJuTXVabVYwWTJoVGNHVmpWR2x0Wlc5MWRDQTlJSFJvYVhNdVptVjBZMmhUY0dWalZHbHRaVzkxZER0Y2JseHVJQ0IwYUdsekxuTjFjSEJ2Y25SbFpGTjFZbTFwZEUxbGRHaHZaSE1nUFNCdmNIUnBiMjV6TG5OMWNIQnZjblJsWkZOMVltMXBkRTFsZEdodlpITWdmSHdnVzEwN1hHNGdJSFJvYVhNdVptRnBiSFZ5WlNBOUlHOXdkR2x2Ym5NdVptRnBiSFZ5WlNCOGZDQm1kVzVqZEdsdmJpQW9aWEp5S1NCN0lIUm9jbTkzSUdWeWNqc2dmVHRjYmlBZ2RHaHBjeTV3Y205bmNtVnpjeUE5SUc5d2RHbHZibk11Y0hKdlozSmxjM01nZkh3Z1puVnVZM1JwYjI0Z0tDa2dlMzA3WEc0Z0lIUm9hWE11YzNCbFl5QTlJRjh1WTJ4dmJtVkVaV1Z3S0c5d2RHbHZibk11YzNCbFl5azdJQzh2SUVOc2IyNWxJSE52SUhkbElHUnZJRzV2ZENCaGJIUmxjaUIwYUdVZ2NISnZkbWxrWldRZ1pHOWpkVzFsYm5SY2JseHVJQ0JwWmlBb2IzQjBhVzl1Y3k1elkyaGxiV1VwSUh0Y2JpQWdJQ0IwYUdsekxuTmphR1Z0WlNBOUlHOXdkR2x2Ym5NdWMyTm9aVzFsTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSFJvYVhNdWRYTmxVSEp2YldselpTQjhmQ0IwZVhCbGIyWWdiM0IwYVc5dWN5NXpkV05qWlhOeklEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnZEdocGN5NXlaV0ZrZVNBOUlIUnlkV1U3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WW5WcGJHUW9LVHRjYmlBZ2ZWeHVmVHRjYmx4dVUzZGhaMmRsY2tOc2FXVnVkQzV3Y205MGIzUjVjR1V1WW5WcGJHUWdQU0JtZFc1amRHbHZiaUFvYlc5amF5a2dlMXh1SUNCcFppQW9kR2hwY3k1cGMwSjFhV3gwS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQjJZWElnYzJWc1ppQTlJSFJvYVhNN1hHNWNiaUFnYVdZZ0tIUm9hWE11YzNCbFl5a2dlMXh1SUNBZ0lIUm9hWE11Y0hKdlozSmxjM01vSjJabGRHTm9hVzVuSUhKbGMyOTFjbU5sSUd4cGMzUTdJRkJzWldGelpTQjNZV2wwTGljcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lIUm9hWE11Y0hKdlozSmxjM01vSjJabGRHTm9hVzVuSUhKbGMyOTFjbU5sSUd4cGMzUTZJQ2NnS3lCMGFHbHpMblZ5YkNBcklDYzdJRkJzWldGelpTQjNZV2wwTGljcE8xeHVJQ0I5WEc1Y2JpQWdkbUZ5SUc5aWFpQTlJSHRjYmlBZ0lDQjFjMlZLVVhWbGNuazZJSFJvYVhNdWRYTmxTbEYxWlhKNUxGeHVJQ0FnSUdweGRXVnllVUZxWVhoRFlXTm9aVG9nZEdocGN5NXFjWFZsY25sQmFtRjRRMkZqYUdVc1hHNGdJQ0FnWTI5dWJtVmpkR2x2YmtGblpXNTBPaUIwYUdsekxtTnZibTVsWTNScGIyNUJaMlZ1ZEN4Y2JpQWdJQ0JsYm1GaWJHVkRiMjlyYVdWek9pQjBhR2x6TG1WdVlXSnNaVU52YjJ0cFpYTXNYRzRnSUNBZ2RYSnNPaUIwYUdsekxuVnliQ3hjYmlBZ0lDQnRaWFJvYjJRNklDZG5aWFFuTEZ4dUlDQWdJR2hsWVdSbGNuTTZJSHRjYmlBZ0lDQWdJR0ZqWTJWd2REb2dkR2hwY3k1emQyRm5aMlZ5VW1WeGRXVnpkRWhsWVdSbGNuTmNiaUFnSUNCOUxGeHVJQ0FnSUc5dU9pQjdYRzRnSUNBZ0lDQmxjbkp2Y2pvZ1puVnVZM1JwYjI0Z0tISmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoelpXeG1JQ1ltSUhObGJHWXVkWEpzSUNZbUlITmxiR1l1ZFhKc0xuTjFZbk4wY21sdVp5Z3dMQ0EwS1NBaFBUMGdKMmgwZEhBbktTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sYkdZdVptRnBiQ2duVUd4bFlYTmxJSE53WldOcFpua2dkR2hsSUhCeWIzUnZZMjlzSUdadmNpQW5JQ3NnYzJWc1ppNTFjbXdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tISmxjM0J2Ym5ObExtVnljazlpYWlBbUppQW9jbVZ6Y0c5dWMyVXVaWEp5VDJKcUxtTnZaR1VnUFQwOUlDZEZRMDlPVGtGQ1QxSlVSVVFuSUh4OElISmxjM0J2Ym5ObExtVnljazlpYWk1dFpYTnpZV2RsTG1sdVpHVjRUMllvSjNScGJXVnZkWFFuS1NBaFBUMGdMVEVwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxiR1l1Wm1GcGJDZ25VbVZ4ZFdWemRDQjBhVzFsWkNCdmRYUWdZV1owWlhJZ0p5QXJJSE5sYkdZdVptVjBZMmhUY0dWalZHbHRaVzkxZENBcklDZHRjeWNwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tISmxjM0J2Ym5ObExuTjBZWFIxY3lBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpXeG1MbVpoYVd3b0owTmhibHhjSjNRZ2NtVmhaQ0JtY205dElITmxjblpsY2k0Z0lFbDBJRzFoZVNCdWIzUWdhR0YyWlNCMGFHVWdZWEJ3Y205d2NtbGhkR1VnWVdOalpYTnpMV052Ym5SeWIyd3RiM0pwWjJsdUlITmxkSFJwYm1kekxpY3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hKbGMzQnZibk5sTG5OMFlYUjFjeUE5UFQwZ05EQTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhObGJHWXVabUZwYkNnblEyRnVYRnduZENCeVpXRmtJSE4zWVdkblpYSWdTbE5QVGlCbWNtOXRJQ2NnS3lCelpXeG1MblZ5YkNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxiR1l1Wm1GcGJDaHlaWE53YjI1elpTNXpkR0YwZFhNZ0t5QW5JRG9nSnlBcklISmxjM0J2Ym5ObExuTjBZWFIxYzFSbGVIUWdLeUFuSUNjZ0t5QnpaV3htTG5WeWJDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0J5WlhOd2IyNXpaVG9nWm5WdVkzUnBiMjRnS0hKbGMzQXBJSHRjYmx4dUlDQWdJQ0FnSUNCMllYSWdjbVZ6Y0c5dWMyVlBZbW9nUFNCeVpYTndMbTlpYWp0Y2JpQWdJQ0FnSUNBZ2FXWW9JWEpsYzNCdmJuTmxUMkpxS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxiR1l1Wm1GcGJDZ25abUZwYkdWa0lIUnZJSEJoY25ObElFcFRUMDR2V1VGTlRDQnlaWE53YjI1elpTY3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2MyVnNaaTV6ZDJGbloyVnlWbVZ5YzJsdmJpQTlJSEpsYzNCdmJuTmxUMkpxTG5OM1lXZG5aWEpXWlhKemFXOXVPMXh1SUNBZ0lDQWdJQ0J6Wld4bUxuTjNZV2RuWlhKUFltcGxZM1FnUFNCeVpYTndiMjV6WlU5aWFqdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpjRzl1YzJWUFltb3VjM2RoWjJkbGNpQW1KaUJ3WVhKelpVbHVkQ2h5WlhOd2IyNXpaVTlpYWk1emQyRm5aMlZ5S1NBOVBUMGdNaWtnZTF4dUlDQWdJQ0FnSUNBZ0lITmxiR1l1YzNkaFoyZGxjbFpsY25OcGIyNGdQU0J5WlhOd2IyNXpaVTlpYWk1emQyRm5aMlZ5TzF4dVhHNGdJQ0FnSUNBZ0lDQWdibVYzSUZKbGMyOXNkbVZ5S0NrdWNtVnpiMngyWlNoeVpYTndiMjV6WlU5aWFpd2djMlZzWmk1MWNtd3NJSE5sYkdZdVluVnBiR1JHY205dFUzQmxZeXdnYzJWc1ppazdYRzVjYmlBZ0lDQWdJQ0FnSUNCelpXeG1MbWx6Vm1Gc2FXUWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCamIyNTJaWEowWlhJZ1BTQnVaWGNnVTNkaFoyZGxjbE53WldORGIyNTJaWEowWlhJb0tUdGNiaUFnSUNBZ0lDQWdJQ0J6Wld4bUxtOXNaRk4zWVdkblpYSlBZbXBsWTNRZ1BTQnpaV3htTG5OM1lXZG5aWEpQWW1wbFkzUTdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNTJaWEowWlhJdWMyVjBSRzlqZFcxbGJuUmhkR2x2Ymt4dlkyRjBhVzl1S0hObGJHWXVkWEpzS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjUyWlhKMFpYSXVZMjl1ZG1WeWRDaHlaWE53YjI1elpVOWlhaXdnYzJWc1ppNWpiR2xsYm5SQmRYUm9iM0pwZW1GMGFXOXVjeXdnYzJWc1ppNXZjSFJwYjI1ekxDQm1kVzVqZEdsdmJpaHpjR1ZqS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Wld4bUxuTjNZV2RuWlhKUFltcGxZM1FnUFNCemNHVmpPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjNJRkpsYzI5c2RtVnlLQ2t1Y21WemIyeDJaU2h6Y0dWakxDQnpaV3htTG5WeWJDd2djMlZzWmk1aWRXbHNaRVp5YjIxVGNHVmpMQ0J6Wld4bUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhObGJHWXVhWE5XWVd4cFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ0x5OGdiMjVzZVNCelpYUWdkR2x0Wlc5MWRDQjNhR1Z1SUhOd1pXTnBabWxsWkZ4dUlDQnBaaUFvZEdocGN5NW1aWFJqYUZOd1pXTlVhVzFsYjNWMEtTQjdYRzRnSUNBZ2IySnFMblJwYldWdmRYUWdQU0IwYUdsekxtWmxkR05vVTNCbFkxUnBiV1Z2ZFhRN1hHNGdJSDFjYmx4dUlDQnBaaUFvZEdocGN5NXpjR1ZqSUNZbUlIUjVjR1Z2WmlCMGFHbHpMbk53WldNZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdjMlZzWmk1emQyRm5aMlZ5VDJKcVpXTjBJRDBnZEdocGN5NXpjR1ZqTzF4dUlDQWdJSE5sZEZScGJXVnZkWFFvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ2JtVjNJRkpsYzI5c2RtVnlLQ2t1Y21WemIyeDJaU2h6Wld4bUxuTndaV01zSUhObGJHWXVkWEpzTENCelpXeG1MbUoxYVd4a1JuSnZiVk53WldNc0lITmxiR1lwTzF4dUlDQWdJSDBzSURFd0tUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQjBhR2x6TG1Oc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekxtRndjR3g1S0c5aWFpazdYRzVjYmlBZ0lDQnBaaUFvYlc5amF5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhanRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnVaWGNnVTNkaFoyZGxja2gwZEhBb0tTNWxlR1ZqZFhSbEtHOWlhaXdnZEdocGN5NXZjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQW9kR2hwY3k1MWMyVlFjbTl0YVhObEtTQS9JSFJvYVhNdVpHVm1aWEp5WldSRGJHbGxiblF1Y0hKdmJXbHpaU0E2SUhSb2FYTTdYRzU5TzF4dVhHNVRkMkZuWjJWeVEyeHBaVzUwTG5CeWIzUnZkSGx3WlM1aWRXbHNaRVp5YjIxVGNHVmpJRDBnWm5WdVkzUnBiMjRnS0hKbGMzQnZibk5sS1NCN1hHNGdJR2xtSUNoMGFHbHpMbWx6UW5WcGJIUXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUhSb2FYTXVZWEJwY3lBOUlIdDlPMXh1SUNCMGFHbHpMbUZ3YVhOQmNuSmhlU0E5SUZ0ZE8xeHVJQ0IwYUdsekxtSmhjMlZRWVhSb0lEMGdjbVZ6Y0c5dWMyVXVZbUZ6WlZCaGRHZ2dmSHdnSnljN1hHNGdJSFJvYVhNdVkyOXVjM1Z0WlhNZ1BTQnlaWE53YjI1elpTNWpiMjV6ZFcxbGN6dGNiaUFnZEdocGN5NW9iM04wSUQwZ2NtVnpjRzl1YzJVdWFHOXpkQ0I4ZkNBbkp6dGNiaUFnZEdocGN5NXBibVp2SUQwZ2NtVnpjRzl1YzJVdWFXNW1ieUI4ZkNCN2ZUdGNiaUFnZEdocGN5NXdjbTlrZFdObGN5QTlJSEpsYzNCdmJuTmxMbkJ5YjJSMVkyVnpPMXh1SUNCMGFHbHpMbk5qYUdWdFpYTWdQU0J5WlhOd2IyNXpaUzV6WTJobGJXVnpJSHg4SUZ0ZE8xeHVJQ0IwYUdsekxuTmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJuTWdQU0JmTG1Oc2IyNWxSR1ZsY0NoeVpYTndiMjV6WlM1elpXTjFjbWwwZVVSbFptbHVhWFJwYjI1ektUdGNiaUFnZEdocGN5NXpaV04xY21sMGVTQTlJSEpsYzNCdmJuTmxMbk5sWTNWeWFYUjVPMXh1SUNCMGFHbHpMblJwZEd4bElEMGdjbVZ6Y0c5dWMyVXVkR2wwYkdVZ2ZId2dKeWM3WEc1Y2JpQWdkbUZ5SUd0bGVTd2daR1ZtYVc1bFpGUmhaM01nUFNCN2ZTd2dheXdnYkc5allYUnBiMjRzSUhObGJHWWdQU0IwYUdsekxDQnBPMXh1WEc0Z0lHbG1JQ2h5WlhOd2IyNXpaUzVsZUhSbGNtNWhiRVJ2WTNNcElIdGNiaUFnSUNCMGFHbHpMbVY0ZEdWeWJtRnNSRzlqY3lBOUlISmxjM0J2Ym5ObExtVjRkR1Z5Ym1Gc1JHOWpjenRjYmlBZ2ZWeHVYRzRnSUM4dklHeGxaMkZqZVNCemRYQndiM0owWEc0Z0lIUm9hWE11WVhWMGFGTmphR1Z0WlhNZ1BTQjBhR2x6TG5ObFkzVnlhWFI1UkdWbWFXNXBkR2x2Ym5NN1hHNWNiaUFnYVdZb2RHaHBjeTV6WldOMWNtbDBlVVJsWm1sdWFYUnBiMjV6S1NCN1hHNGdJQ0FnWm05eUtHdGxlU0JwYmlCMGFHbHpMbk5sWTNWeWFYUjVSR1ZtYVc1cGRHbHZibk1wSUh0Y2JpQWdJQ0FnSUhaaGNpQnpaV04xY21sMGVVUmxabWx1YVhScGIyNGdQU0IwYUdsekxuTmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJuTmJhMlY1WFR0Y2JpQWdJQ0FnSUhObFkzVnlhWFI1UkdWbWFXNXBkR2x2Ymk1MlpXNWtiM0pGZUhSbGJuTnBiMjV6SUQwZ2UzMDdYRzRnSUNBZ0lDQm1iM0lvZG1GeUlHVjRkQ0JwYmlCelpXTjFjbWwwZVVSbFptbHVhWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdhR1ZzY0dWeWN5NWxlSFJ5WVdOMFJYaDBaVzV6YVc5dWN5aGxlSFFzSUhObFkzVnlhWFI1UkdWbWFXNXBkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hsZUhRZ1BUMDlJQ2R6WTI5d1pYTW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJSE5qYjNCbGN5QTlJSE5sWTNWeWFYUjVSR1ZtYVc1cGRHbHZibHRsZUhSZE8xeHVJQ0FnSUNBZ0lDQWdJR2xtS0hSNWNHVnZaaUJ6WTI5d1pYTWdQVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WTI5d1pYTXVkbVZ1Wkc5eVJYaDBaVzV6YVc5dWN5QTlJSHQ5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdjeUJwYmlCelkyOXdaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdWc2NHVnljeTVsZUhSeVlXTjBSWGgwWlc1emFXOXVjeWh6TENCelkyOXdaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmloekxtbHVaR1Y0VDJZb0ozZ3RKeWtnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWld4bGRHVWdjMk52Y0dWelczTmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvY21WemNHOXVjMlV1ZEdGbmN5a3BJSHRjYmlBZ0lDQmtaV1pwYm1Wa1ZHRm5jeUE5SUh0OU8xeHVYRzRnSUNBZ1ptOXlJQ2hySUQwZ01Ec2dheUE4SUhKbGMzQnZibk5sTG5SaFozTXViR1Z1WjNSb095QnJLeXNwSUh0Y2JpQWdJQ0FnSUhaaGNpQjBJRDBnWHk1amJHOXVaVVJsWlhBb2NtVnpjRzl1YzJVdWRHRm5jMXRyWFNrN1hHNGdJQ0FnSUNCa1pXWnBibVZrVkdGbmMxdDBMbTVoYldWZElEMGdkRHRjYmlBZ0lDQWdJR1p2Y2locElHbHVJSFFwSUh0Y2JpQWdJQ0FnSUNBZ2FXWW9hU0E5UFQwZ0oyVjRkR1Z5Ym1Gc1JHOWpjeWNnSmlZZ2RIbHdaVzltSUhSYmFWMGdQVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdabTl5S0haaGNpQnFJR2x1SUhSYmFWMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHaGxiSEJsY25NdVpYaDBjbUZqZEVWNGRHVnVjMmx2Ym5Nb2Fpd2dkRnRwWFNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdobGJIQmxjbk11WlhoMGNtRmpkRVY0ZEdWdWMybHZibk1vYVN3Z2RDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JseHVJQ0JwWmlBb2RIbHdaVzltSUhSb2FYTXVkWEpzSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lHeHZZMkYwYVc5dUlEMGdkR2hwY3k1d1lYSnpaVlZ5YVNoMGFHbHpMblZ5YkNrN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMGFHbHpMbk5qYUdWdFpTQTlQVDBnSjNWdVpHVm1hVzVsWkNjZ0ppWWdkSGx3Wlc5bUlIUm9hWE11YzJOb1pXMWxjeUE5UFQwZ0ozVnVaR1ZtYVc1bFpDY2dmSHdnZEdocGN5NXpZMmhsYldWekxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCc2IyTmhkR2x2YmlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2RIbHdaVzltS0d4dlkyRjBhVzl1TG5OamFHVnRaU2tnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMk5vWlcxbElEMGdiRzlqWVhScGIyNHVjMk5vWlcxbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWW9kSGx3Wlc5bUlIZHBibVJ2ZHlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2RIbHdaVzltS0hkcGJtUnZkeTVzYjJOaGRHbHZiaWtnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUM4dklIVnpaU0IwYUdVZ2QybHVaRzkzSUhOamFHVnRaVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTmphR1Z0WlNBOUlIZHBibVJ2ZHk1c2IyTmhkR2x2Ymk1d2NtOTBiMk52YkM1eVpYQnNZV05sS0NjNkp5d25KeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elkyaGxiV1VnUFNCc2IyTmhkR2x2Ymk1elkyaGxiV1VnZkh3Z0oyaDBkSEFuTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JSGRwYm1SdmR5QWhQVDBnSjNWdVpHVm1hVzVsWkNjZ0ppWWdkSGx3Wlc5bUtIZHBibVJ2ZHk1c2IyTmhkR2x2YmlrZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIZHBibVJ2ZHk1c2IyTmhkR2x2Ymk1d2NtOTBiMk52YkM1cGJtUmxlRTltS0NkamFISnZiV1V0WlhoMFpXNXphVzl1SnlrZ1BUMDlJREFwSUh0Y2JseDBYSFF2THlCcFppQnBkQ0JwY3lCamFISnZiV1VnYzNkaFoyZGxjaUIxYVNCbGVIUmxibk5wYjI0Z2MyTm9aVzFsSUhSb1pXNGdiR1YwSUhOM1lXZG5aWElnWkc5aklIVnliQ0J6WTJobGJXVWdaR1ZqYVdSbElIUm9aU0J3Y205MGIyTnZiRnh1WEhSY2RIUm9hWE11YzJOb1pXMWxJRDBnYkc5allYUnBiMjR1YzJOb1pXMWxPMXh1WEhSOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCMGFHbHpMbk5qYUdWdFpTQTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lHbG1LSFI1Y0dWdlppQjNhVzVrYjNjZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIUjVjR1Z2WmloM2FXNWtiM2N1Ykc5allYUnBiMjRwSUNFOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNCMllYSWdjMk5vWlcxbElEMGdkMmx1Wkc5M0xteHZZMkYwYVc5dUxuQnliM1J2WTI5c0xuSmxjR3hoWTJVb0p6b25MQ2NuS1R0Y2JpQWdJQ0FnSUNBZ2FXWW9jMk5vWlcxbElEMDlQU0FuYUhSMGNITW5JQ1ltSUhSb2FYTXVjMk5vWlcxbGN5NXBibVJsZUU5bUtITmphR1Z0WlNrZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnWTJGdUozUWdZMkZzYkNCb2RIUndJR1p5YjIwZ2FIUjBjSE1nYzJWeWRtVmtJSEJoWjJVZ2FXNGdZU0JpY205M2MyVnlJVnh1SUNBZ0lDQWdJQ0FnSUdobGJIQmxjbk11Ykc5bktDZERZVzV1YjNRZ1kyRnNiQ0JoSUdoMGRIQWdjMlZ5ZG1WeUlHWnliMjBnYUhSMGNITWdhVzV6YVdSbElHRWdZbkp2ZDNObGNpRW5LVHRjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbk5qYUdWdFpTQTlJQ2RvZEhSd0p6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1LSFJvYVhNdWMyTm9aVzFsY3k1cGJtUmxlRTltS0hOamFHVnRaU2tnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WTJobGJXVWdQU0J6WTJobGJXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZb2RHaHBjeTV6WTJobGJXVnpMbWx1WkdWNFQyWW9KMmgwZEhCekp5a2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbk5qYUdWdFpTQTlJQ2RvZEhSd2N5YzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1elkyaGxiV1VnUFNBbmFIUjBjQ2M3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WTJobGJXVWdQU0IwYUdsekxuTmphR1Z0WlhOYk1GMGdmSHdnYkc5allYUnBiMjR1YzJOb1pXMWxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdkR2hwY3k1b2IzTjBJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5QjhmQ0IwYUdsekxtaHZjM1FnUFQwOUlDY25LU0I3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1FnUFNCc2IyTmhkR2x2Ymk1b2IzTjBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2JHOWpZWFJwYjI0dWNHOXlkQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbWh2YzNRZ1BTQjBhR2x6TG1odmMzUWdLeUFuT2ljZ0t5QnNiMk5oZEdsdmJpNXdiM0owTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0JsYkhObElIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIUm9hWE11YzJOb1pXMWxjeUE5UFQwZ0ozVnVaR1ZtYVc1bFpDY2dmSHdnZEdocGN5NXpZMmhsYldWekxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXpZMmhsYldVZ1BTQW5hSFIwY0NjN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQjBhR2x6TG5OamFHVnRaU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWMyTm9aVzFsSUQwZ2RHaHBjeTV6WTJobGJXVnpXekJkTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhSb2FYTXVaR1ZtYVc1cGRHbHZibk1nUFNCeVpYTndiMjV6WlM1a1pXWnBibWwwYVc5dWN6dGNibHh1SUNCbWIzSWdLR3RsZVNCcGJpQjBhR2x6TG1SbFptbHVhWFJwYjI1ektTQjdYRzRnSUNBZ2RtRnlJRzF2WkdWc0lEMGdibVYzSUUxdlpHVnNLR3RsZVN3Z2RHaHBjeTVrWldacGJtbDBhVzl1YzF0clpYbGRMQ0IwYUdsekxtMXZaR1ZzY3l3Z2RHaHBjeTV0YjJSbGJGQnliM0JsY25SNVRXRmpjbThwTzF4dVhHNGdJQ0FnYVdZZ0tHMXZaR1ZzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbTF2WkdWc2MxdHJaWGxkSUQwZ2JXOWtaV3c3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHk4Z1oyVjBJSEJoZEdoekxDQmpjbVZoZEdVZ1puVnVZM1JwYjI1eklHWnZjaUJsWVdOb0lHOXdaWEpoZEdsdmJrbGtYRzVjYmlBZ0x5OGdRbWx1WkNCb1pXeHdJSFJ2SUNkamJHbGxiblF1WVhCcGN5ZGNiaUFnYzJWc1ppNWhjR2x6TG1obGJIQWdQU0JmTG1KcGJtUW9jMlZzWmk1b1pXeHdMQ0J6Wld4bUtUdGNibHh1SUNCZkxtWnZja1ZoWTJnb2NtVnpjRzl1YzJVdWNHRjBhSE1zSUdaMWJtTjBhVzl1SUNod1lYUm9UMkpxTENCd1lYUm9LU0I3WEc0Z0lDQWdMeThnVDI1c2VTQndjbTlqWlhOeklHRWdjR0YwYUNCcFppQnBkQ2R6SUdGdUlHOWlhbVZqZEZ4dUlDQWdJR2xtSUNnaFh5NXBjMUJzWVdsdVQySnFaV04wS0hCaGRHaFBZbW9wS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdYeTVtYjNKRllXTm9LSE4xY0hCdmNuUmxaRTl3WlhKaGRHbHZiazFsZEdodlpITXNJR1oxYm1OMGFXOXVJQ2h0WlhSb2IyUXBJSHRjYmlBZ0lDQWdJSFpoY2lCdmNHVnlZWFJwYjI0Z1BTQndZWFJvVDJKcVcyMWxkR2h2WkYwN1hHNWNiaUFnSUNBZ0lHbG1JQ2hmTG1selZXNWtaV1pwYm1Wa0tHOXdaWEpoZEdsdmJpa3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1QzQmxjbUYwYVc5dUlHUnZaWE1nYm05MElHVjRhWE4wWEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvSVY4dWFYTlFiR0ZwYms5aWFtVmpkQ2h2Y0dWeVlYUnBiMjRwS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRTl3WlhKaGRHbHZiaUJsZUdsemRITWdZblYwSUdsMElHbHpJRzV2ZENCaGJpQlBjR1Z5WVhScGIyNGdUMkpxWldOMExpQWdVMmx1WTJVZ2RHaHBjeUJwY3lCcGJuWmhiR2xrTENCc2IyY2dhWFF1WEc0Z0lDQWdJQ0FnSUdobGJIQmxjbk11Ykc5bktDZFVhR1VnWEZ3bkp5QXJJRzFsZEdodlpDQXJJQ2RjWENjZ2IzQmxjbUYwYVc5dUlHWnZjaUJjWENjbklDc2djR0YwYUNBcklDZGNYQ2NnY0dGMGFDQnBjeUJ1YjNRZ1lXNGdUM0JsY21GMGFXOXVJRTlpYW1WamRDY3BPMXh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZG1GeUlIUmhaM01nUFNCdmNHVnlZWFJwYjI0dWRHRm5jenRjYmx4dUlDQWdJQ0FnYVdZZ0tGOHVhWE5WYm1SbFptbHVaV1FvZEdGbmN5a2dmSHdnSVY4dWFYTkJjbkpoZVNoMFlXZHpLU0I4ZkNCMFlXZHpMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQjBZV2R6SUQwZ2IzQmxjbUYwYVc5dUxuUmhaM01nUFNCYklDZGtaV1poZFd4MEp5QmRPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0IyWVhJZ2IzQmxjbUYwYVc5dVNXUWdQU0J6Wld4bUxtbGtSbkp2YlU5d0tIQmhkR2dzSUcxbGRHaHZaQ3dnYjNCbGNtRjBhVzl1S1R0Y2JseHVJQ0FnSUNBZ2RtRnlJRzl3WlhKaGRHbHZiazlpYW1WamRDQTlJRzVsZHlCUGNHVnlZWFJwYjI0b2MyVnNaaXhjYmlBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1TG5OamFHVnRaU3hjYmlBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1U1dRc1hHNGdJQ0FnSUNBZ0lHMWxkR2h2WkN4Y2JpQWdJQ0FnSUNBZ2NHRjBhQ3hjYmlBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1TEZ4dUlDQWdJQ0FnSUNCelpXeG1MbVJsWm1sdWFYUnBiMjV6TEZ4dUlDQWdJQ0FnSUNCelpXeG1MbTF2WkdWc2N5eGNiaUFnSUNBZ0lDQWdjMlZzWmk1amJHbGxiblJCZFhSb2IzSnBlbUYwYVc5dWN5azdYRzVjYmlBZ0lDQWdJRzl3WlhKaGRHbHZiazlpYW1WamRDNWpiMjV1WldOMGFXOXVRV2RsYm5RZ1BTQnpaV3htTG1OdmJtNWxZM1JwYjI1QloyVnVkRHRjYmlBZ0lDQWdJRzl3WlhKaGRHbHZiazlpYW1WamRDNTJaVzVrYjNKRmVIUmxibk5wYjI1eklEMGdlMzA3WEc0Z0lDQWdJQ0JtYjNJb2FTQnBiaUJ2Y0dWeVlYUnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2FHVnNjR1Z5Y3k1bGVIUnlZV04wUlhoMFpXNXphVzl1Y3locExDQnZjR1Z5WVhScGIyNVBZbXBsWTNRc0lHOXdaWEpoZEdsdmJsdHBYU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J2Y0dWeVlYUnBiMjVQWW1wbFkzUXVaWGgwWlhKdVlXeEViMk56SUQwZ2IzQmxjbUYwYVc5dUxtVjRkR1Z5Ym1Gc1JHOWpjenRjYmlBZ0lDQWdJR2xtS0c5d1pYSmhkR2x2Yms5aWFtVmpkQzVsZUhSbGNtNWhiRVJ2WTNNcElIdGNiaUFnSUNBZ0lDQWdiM0JsY21GMGFXOXVUMkpxWldOMExtVjRkR1Z5Ym1Gc1JHOWpjeUE5SUY4dVkyeHZibVZFWldWd0tHOXdaWEpoZEdsdmJrOWlhbVZqZEM1bGVIUmxjbTVoYkVSdlkzTXBPMXh1SUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjVQWW1wbFkzUXVaWGgwWlhKdVlXeEViMk56TG5abGJtUnZja1Y0ZEdWdWMybHZibk1nUFNCN2ZUdGNiaUFnSUNBZ0lDQWdabTl5S0drZ2FXNGdiM0JsY21GMGFXOXVUMkpxWldOMExtVjRkR1Z5Ym1Gc1JHOWpjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHaGxiSEJsY25NdVpYaDBjbUZqZEVWNGRHVnVjMmx2Ym5Nb2FTd2diM0JsY21GMGFXOXVUMkpxWldOMExtVjRkR1Z5Ym1Gc1JHOWpjeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdZbWx1WkNCelpXeG1JRzl3WlhKaGRHbHZiaWR6SUdWNFpXTjFkR1VnWTI5dGJXRnVaQ0IwYnlCMGFHVWdZWEJwWEc0Z0lDQWdJQ0JmTG1admNrVmhZMmdvZEdGbmN5d2dablZ1WTNScGIyNGdLSFJoWnlrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWTJ4cFpXNTBVSEp2Y0dWeWRIa2dQU0JmTG1sdVpHVjRUMllvY21WelpYSjJaV1JEYkdsbGJuUlVZV2R6TENCMFlXY3BJRDRnTFRFZ1B5QW5YeWNnS3lCMFlXY2dPaUIwWVdjN1hHNGdJQ0FnSUNBZ0lIWmhjaUJoY0dsUWNtOXdaWEowZVNBOUlGOHVhVzVrWlhoUFppaHlaWE5sY25abFpFRndhVlJoWjNNc0lIUmhaeWtnUGlBdE1TQS9JQ2RmSnlBcklIUmhaeUE2SUhSaFp6dGNiaUFnSUNBZ0lDQWdkbUZ5SUc5d1pYSmhkR2x2YmtkeWIzVndJRDBnYzJWc1psdGpiR2xsYm5SUWNtOXdaWEowZVYwN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0dOc2FXVnVkRkJ5YjNCbGNuUjVJQ0U5UFNCMFlXY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCb1pXeHdaWEp6TG14dlp5Z25WR2hsSUZ4Y0p5Y2dLeUIwWVdjZ0t5QW5YRnduSUhSaFp5QmpiMjVtYkdsamRITWdkMmwwYUNCaElGTjNZV2RuWlhKRGJHbGxiblFnWm5WdVkzUnBiMjR2Y0hKdmNHVnlkSGtnYm1GdFpTNGdJRlZ6WlNCY1hDZGpiR2xsYm5RdUp5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyeHBaVzUwVUhKdmNHVnlkSGtnS3lBblhGd25JRzl5SUZ4Y0oyTnNhV1Z1ZEM1aGNHbHpMaWNnS3lCMFlXY2dLeUFuWEZ3bklHbHVjM1JsWVdRZ2IyWWdYRnduWTJ4cFpXNTBMaWNnS3lCMFlXY2dLeUFuWEZ3bkxpY3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLR0Z3YVZCeWIzQmxjblI1SUNFOVBTQjBZV2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm9aV3h3WlhKekxteHZaeWduVkdobElGeGNKeWNnS3lCMFlXY2dLeUFuWEZ3bklIUmhaeUJqYjI1bWJHbGpkSE1nZDJsMGFDQmhJRk4zWVdkblpYSkRiR2xsYm5RZ2IzQmxjbUYwYVc5dUlHWjFibU4wYVc5dUwzQnliM0JsY25SNUlHNWhiV1V1SUNCVmMyVWdKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKMXhjSjJOc2FXVnVkQzVoY0dsekxpY2dLeUJoY0dsUWNtOXdaWEowZVNBcklDZGNYQ2NnYVc1emRHVmhaQ0J2WmlCY1hDZGpiR2xsYm5RdVlYQnBjeTRuSUNzZ2RHRm5JQ3NnSjF4Y0p5NG5LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hmTG1sdVpHVjRUMllvY21WelpYSjJaV1JCY0dsVVlXZHpMQ0J2Y0dWeVlYUnBiMjVKWkNrZ1BpQXRNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHaGxiSEJsY25NdWJHOW5LQ2RVYUdVZ1hGd25KeUFySUc5d1pYSmhkR2x2Ymtsa0lDc2dKMXhjSnlCdmNHVnlZWFJwYjI1SlpDQmpiMjVtYkdsamRITWdkMmwwYUNCaElGTjNZV2RuWlhKRGJHbGxiblFnYjNCbGNtRjBhVzl1SUNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkbWRXNWpkR2x2Ymk5d2NtOXdaWEowZVNCdVlXMWxMaUFnVlhObElGeGNKMk5zYVdWdWRDNWhjR2x6TGljZ0t5QmhjR2xRY205d1pYSjBlU0FySUNjdVh5Y2dLeUJ2Y0dWeVlYUnBiMjVKWkNBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSjF4Y0p5QnBibk4wWldGa0lHOW1JRnhjSjJOc2FXVnVkQzVoY0dsekxpY2dLeUJoY0dsUWNtOXdaWEowZVNBcklDY3VKeUFySUc5d1pYSmhkR2x2Ymtsa0lDc2dKMXhjSnk0bktUdGNibHh1SUNBZ0lDQWdJQ0FnSUc5d1pYSmhkR2x2Ymtsa0lEMGdKMThuSUNzZ2IzQmxjbUYwYVc5dVNXUTdYRzRnSUNBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1VDJKcVpXTjBMbTVwWTJ0dVlXMWxJRDBnYjNCbGNtRjBhVzl1U1dRN0lDOHZJRk52SUNkamJHbGxiblF1WVhCcGN5NWJkR0ZuWFM1dmNHVnlZWFJwYjI1SlpDNW9aV3h3S0NrZ2QyOXlhM01nY0hKdmNHVnliSGxjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hmTG1selZXNWtaV1pwYm1Wa0tHOXdaWEpoZEdsdmJrZHliM1Z3S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZia2R5YjNWd0lEMGdjMlZzWmx0amJHbGxiblJRY205d1pYSjBlVjBnUFNCelpXeG1MbUZ3YVhOYllYQnBVSEp2Y0dWeWRIbGRJRDBnZTMwN1hHNWNiaUFnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjVIY205MWNDNXZjR1Z5WVhScGIyNXpJRDBnZTMwN1hHNGdJQ0FnSUNBZ0lDQWdiM0JsY21GMGFXOXVSM0p2ZFhBdWJHRmlaV3dnUFNCaGNHbFFjbTl3WlhKMGVUdGNiaUFnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjVIY205MWNDNWhjR2x6SUQwZ2UzMDdYRzVjYmlBZ0lDQWdJQ0FnSUNCMllYSWdkR0ZuUkdWbUlEMGdaR1ZtYVc1bFpGUmhaM05iZEdGblhUdGNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzFWdVpHVm1hVzVsWkNoMFlXZEVaV1lwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjVIY205MWNDNWtaWE5qY21sd2RHbHZiaUE5SUhSaFowUmxaaTVrWlhOamNtbHdkR2x2Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZia2R5YjNWd0xtVjRkR1Z5Ym1Gc1JHOWpjeUE5SUhSaFowUmxaaTVsZUhSbGNtNWhiRVJ2WTNNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjVIY205MWNDNTJaVzVrYjNKRmVIUmxibk5wYjI1eklEMGdkR0ZuUkdWbUxuWmxibVJ2Y2tWNGRHVnVjMmx2Ym5NN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2MyVnNabHRqYkdsbGJuUlFjbTl3WlhKMGVWMHVhR1ZzY0NBOUlGOHVZbWx1WkNoelpXeG1MbWhsYkhBc0lHOXdaWEpoZEdsdmJrZHliM1Z3S1R0Y2JpQWdJQ0FnSUNBZ0lDQnpaV3htTG1Gd2FYTkJjbkpoZVM1d2RYTm9LRzVsZHlCUGNHVnlZWFJwYjI1SGNtOTFjQ2gwWVdjc0lHOXdaWEpoZEdsdmJrZHliM1Z3TG1SbGMyTnlhWEIwYVc5dUxDQnZjR1Z5WVhScGIyNUhjbTkxY0M1bGVIUmxjbTVoYkVSdlkzTXNJRzl3WlhKaGRHbHZiazlpYW1WamRDa3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2IzQmxjbUYwYVc5dVNXUWdQU0J6Wld4bUxtMWhhMlZWYm1seGRXVlBjR1Z5WVhScGIyNUpaQ2h2Y0dWeVlYUnBiMjVKWkN3Z2MyVnNaaTVoY0dselcyRndhVkJ5YjNCbGNuUjVYU2s3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdRbWx1WkNCMFlXY2dhR1ZzY0Z4dUlDQWdJQ0FnSUNCcFppQW9JVjh1YVhOR2RXNWpkR2x2YmlodmNHVnlZWFJwYjI1SGNtOTFjQzVvWld4d0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUc5d1pYSmhkR2x2YmtkeWIzVndMbWhsYkhBZ1BTQmZMbUpwYm1Rb2MyVnNaaTVvWld4d0xDQnZjR1Z5WVhScGIyNUhjbTkxY0NrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0F2THlCaWFXNWtJSFJ2SUhSb1pTQmhjR2x6SUc5aWFtVmpkRnh1SUNBZ0lDQWdJQ0J6Wld4bUxtRndhWE5iWVhCcFVISnZjR1Z5ZEhsZFcyOXdaWEpoZEdsdmJrbGtYU0E5SUc5d1pYSmhkR2x2YmtkeWIzVndXMjl3WlhKaGRHbHZia2xrWFNBOUlGOHVZbWx1WkNodmNHVnlZWFJwYjI1UFltcGxZM1F1WlhobFkzVjBaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmNHVnlZWFJwYjI1UFltcGxZM1FwTzF4dUlDQWdJQ0FnSUNCelpXeG1MbUZ3YVhOYllYQnBVSEp2Y0dWeWRIbGRXMjl3WlhKaGRHbHZia2xrWFM1b1pXeHdJRDBnYjNCbGNtRjBhVzl1UjNKdmRYQmJiM0JsY21GMGFXOXVTV1JkTG1obGJIQWdQU0JmTG1KcGJtUW9iM0JsY21GMGFXOXVUMkpxWldOMExtaGxiSEFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZjR1Z5WVhScGIyNVBZbXBsWTNRcE8xeHVJQ0FnSUNBZ0lDQnpaV3htTG1Gd2FYTmJZWEJwVUhKdmNHVnlkSGxkVzI5d1pYSmhkR2x2Ymtsa1hTNWhjME4xY213Z1BTQnZjR1Z5WVhScGIyNUhjbTkxY0Z0dmNHVnlZWFJwYjI1SlpGMHVZWE5EZFhKc0lEMGdYeTVpYVc1a0tHOXdaWEpoZEdsdmJrOWlhbVZqZEM1aGMwTjFjbXdzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1VDJKcVpXTjBLVHRjYmx4dUlDQWdJQ0FnSUNCdmNHVnlZWFJwYjI1SGNtOTFjQzVoY0dselcyOXdaWEpoZEdsdmJrbGtYU0E5SUc5d1pYSmhkR2x2YmtkeWIzVndMbTl3WlhKaGRHbHZibk5iYjNCbGNtRjBhVzl1U1dSZElEMGdiM0JsY21GMGFXOXVUMkpxWldOME8xeHVYRzRnSUNBZ0lDQWdJQzh2SUd4bFoyRmplU0JWU1NCbVpXRjBkWEpsWEc0Z0lDQWdJQ0FnSUhaaGNpQmhjR2tnUFNCZkxtWnBibVFvYzJWc1ppNWhjR2x6UVhKeVlYa3NJR1oxYm1OMGFXOXVJQ2hoY0drcElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZWEJwTG5SaFp5QTlQVDBnZEdGbk8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZWEJwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZWEJwTG05d1pYSmhkR2x2Ym5OQmNuSmhlUzV3ZFhOb0tHOXdaWEpoZEdsdmJrOWlhbVZqZENrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMHBPMXh1SUNCOUtUdGNibHh1SUNBdkx5QnpiM0owSUhSb1pTQmhjR2x6UVhKeVlYa2dZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQjBZV2R6WEc0Z0lIWmhjaUJ6YjNKMFpXUkJjR2x6SUQwZ1cxMDdYRzRnSUY4dVptOXlSV0ZqYUNoUFltcGxZM1F1YTJWNWN5aGtaV1pwYm1Wa1ZHRm5jeWtzSUdaMWJtTjBhVzl1SUNoMFlXY3BJSHRjYmlBZ0lDQjJZWElnY0c5ek8xeHVJQ0FnSUdadmNpaHdiM01nYVc0Z2MyVnNaaTVoY0dselFYSnlZWGtwSUh0Y2JpQWdJQ0FnSUhaaGNpQmZZWEJwSUQwZ2MyVnNaaTVoY0dselFYSnlZWGxiY0c5elhUdGNiaUFnSUNBZ0lHbG1LRjloY0drZ0ppWWdkR0ZuSUQwOVBTQmZZWEJwTG01aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnYzI5eWRHVmtRWEJwY3k1d2RYTm9LRjloY0drcE8xeHVJQ0FnSUNBZ0lDQnpaV3htTG1Gd2FYTkJjbkpoZVZ0d2IzTmRJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBwTzF4dUlDQXZMeUJoWkdRZ1lXNTVkR2hwYm1jZ2JHVm1kRnh1SUNCZkxtWnZja1ZoWTJnb2MyVnNaaTVoY0dselFYSnlZWGtzSUdaMWJtTjBhVzl1SUNoaGNHa3BJSHRjYmlBZ0lDQnBaaWhoY0drcElIdGNiaUFnSUNBZ0lITnZjblJsWkVGd2FYTXVjSFZ6YUNoaGNHa3BPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNGdJSE5sYkdZdVlYQnBjMEZ5Y21GNUlEMGdjMjl5ZEdWa1FYQnBjenRjYmx4dUlDQmZMbVp2Y2tWaFkyZ29jbVZ6Y0c5dWMyVXVaR1ZtYVc1cGRHbHZibk1zSUdaMWJtTjBhVzl1SUNoa1pXWnBibWwwYVc5dVQySnFMQ0JrWldacGJtbDBhVzl1S1NCN1hHNGdJQ0FnWkdWbWFXNXBkR2x2Yms5aWFpNXBaQ0E5SUdSbFptbHVhWFJwYjI0dWRHOU1iM2RsY2tOaGMyVW9LVHRjYmlBZ0lDQmtaV1pwYm1sMGFXOXVUMkpxTG01aGJXVWdQU0JrWldacGJtbDBhVzl1TzF4dUlDQWdJSE5sYkdZdWJXOWtaV3h6UVhKeVlYa3VjSFZ6YUNoa1pXWnBibWwwYVc5dVQySnFLVHRjYmlBZ2ZTazdYRzVjYmlBZ2RHaHBjeTVwYzBKMWFXeDBJRDBnZEhKMVpUdGNibHh1SUNCcFppQW9kR2hwY3k1MWMyVlFjbTl0YVhObEtTQjdYRzRnSUNBZ2RHaHBjeTVwYzFaaGJHbGtJRDBnZEhKMVpUdGNiaUFnSUNCMGFHbHpMbWx6UW5WcGJIUWdQU0IwY25WbE8xeHVJQ0FnSUhSb2FYTXVaR1ZtWlhKeVpXUkRiR2xsYm5RdWNtVnpiMngyWlNoMGFHbHpLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1SbFptVnljbVZrUTJ4cFpXNTBMbkJ5YjIxcGMyVTdYRzRnSUgxY2JseHVJQ0JwWmlBb2RHaHBjeTV6ZFdOalpYTnpLU0I3WEc0Z0lDQWdkR2hwY3k1emRXTmpaWE56S0NrN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RHaHBjenRjYm4wN1hHNWNibE4zWVdkblpYSkRiR2xsYm5RdWNISnZkRzkwZVhCbExtMWhhMlZWYm1seGRXVlBjR1Z5WVhScGIyNUpaQ0E5SUdaMWJtTjBhVzl1S0c5d1pYSmhkR2x2Ymtsa0xDQmhjR2twSUh0Y2JpQWdkbUZ5SUdOdmRXNTBJRDBnTUR0Y2JpQWdkbUZ5SUc1aGJXVWdQU0J2Y0dWeVlYUnBiMjVKWkR0Y2JseHVJQ0F2THlCdFlXdGxJSFZ1YVhGMVpTQmhZM0p2YzNNZ2RHaHBjeUJ2Y0dWeVlYUnBiMjRnWjNKdmRYQmNiaUFnZDJocGJHVW9kSEoxWlNrZ2UxeHVJQ0FnSUhaaGNpQnRZWFJqYUdWa0lEMGdabUZzYzJVN1hHNGdJQ0FnWHk1bWIzSkZZV05vS0dGd2FTNXZjR1Z5WVhScGIyNXpMQ0JtZFc1amRHbHZiaUFvYjNCbGNtRjBhVzl1S1NCN1hHNGdJQ0FnSUNCcFppaHZjR1Z5WVhScGIyNHVibWxqYTI1aGJXVWdQVDA5SUc1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnYldGMFkyaGxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUNBZ2FXWW9JVzFoZEdOb1pXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVZVzFsTzF4dUlDQWdJSDFjYmlBZ0lDQnVZVzFsSUQwZ2IzQmxjbUYwYVc5dVNXUWdLeUFuWHljZ0t5QmpiM1Z1ZER0Y2JpQWdJQ0JqYjNWdWRDQXJLenRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ2Y0dWeVlYUnBiMjVKWkR0Y2JuMDdYRzVjYmxOM1lXZG5aWEpEYkdsbGJuUXVjSEp2ZEc5MGVYQmxMbkJoY25ObFZYSnBJRDBnWm5WdVkzUnBiMjRnS0hWeWFTa2dlMXh1SUNCMllYSWdkWEpzVUdGeWMyVlNSU0E5SUM5ZUtDZ29LRnRlT2x4Y0x5TmNYRDlkS3pvcFB5Zy9PaWhjWEM5Y1hDOHBLQ2cvT2lnb1cxNDZRRnhjTHlOY1hEOWRLeWtvUHpwY1hEb29XMTQ2UUZ4Y0x5TmNYRDlkS3lrcFB5bEFLVDhvS0Z0ZU9seGNMeU5jWEQ5Y1hGMWNYRnRkSzN4Y1hGdGJYbHhjTDF4Y1hVQWpQMTByWEZ4ZEtTZy9PbHhjT2loYk1DMDVYU3NwS1Q4cEtUOHBQeWsvS0NoY1hDOC9LRDg2VzE1Y1hDOWNYRDhqWFN0Y1hDOHJLU29wS0Z0ZVhGdy9JMTBxS1NrcFB5aGNYRDliWGlOZEt5ay9LU2dqTGlvcFB5ODdYRzRnSUhaaGNpQndZWEowY3lBOUlIVnliRkJoY25ObFVrVXVaWGhsWXloMWNta3BPMXh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnYzJOb1pXMWxPaUJ3WVhKMGMxczBYU0EvSUhCaGNuUnpXelJkTG5KbGNHeGhZMlVvSnpvbkxDY25LU0E2SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JvYjNOME9pQndZWEowYzFzeE1WMHNYRzRnSUNBZ2NHOXlkRG9nY0dGeWRITmJNVEpkTEZ4dUlDQWdJSEJoZEdnNklIQmhjblJ6V3pFMVhWeHVJQ0I5TzF4dWZUdGNibHh1VTNkaFoyZGxja05zYVdWdWRDNXdjbTkwYjNSNWNHVXVhR1ZzY0NBOUlHWjFibU4wYVc5dUlDaGtiMjUwVUhKcGJuUXBJSHRjYmlBZ2RtRnlJRzkxZEhCMWRDQTlJQ2NuTzF4dVhHNGdJR2xtSUNoMGFHbHpJR2x1YzNSaGJtTmxiMllnVTNkaFoyZGxja05zYVdWdWRDa2dlMXh1SUNBZ0lGOHVabTl5UldGamFDaDBhR2x6TG1Gd2FYTXNJR1oxYm1OMGFXOXVJQ2hoY0drc0lHNWhiV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDaGZMbWx6VUd4aGFXNVBZbXBsWTNRb1lYQnBLU2tnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFFnS3owZ0oyOXdaWEpoZEdsdmJuTWdabTl5SUhSb1pTQmNYQ2NuSUNzZ2JtRnRaU0FySUNkY1hDY2dkR0ZuWEZ4dUp6dGNibHh1SUNBZ0lDQWdJQ0JmTG1admNrVmhZMmdvWVhCcExtOXdaWEpoZEdsdmJuTXNJR1oxYm1OMGFXOXVJQ2h2Y0dWeVlYUnBiMjRzSUc1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdmRYUndkWFFnS3owZ0p5QWdLaUFuSUNzZ2JtRnRaU0FySUNjNklDY2dLeUJ2Y0dWeVlYUnBiMjR1YzNWdGJXRnllU0FySUNkY1hHNG5PMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdmU0JsYkhObElHbG1JQ2gwYUdseklHbHVjM1JoYm1ObGIyWWdUM0JsY21GMGFXOXVSM0p2ZFhBZ2ZId2dYeTVwYzFCc1lXbHVUMkpxWldOMEtIUm9hWE1wS1NCN1hHNGdJQ0FnYjNWMGNIVjBJQ3M5SUNkdmNHVnlZWFJwYjI1eklHWnZjaUIwYUdVZ1hGd25KeUFySUhSb2FYTXViR0ZpWld3Z0t5QW5YRnduSUhSaFoxeGNiaWM3WEc1Y2JpQWdJQ0JmTG1admNrVmhZMmdvZEdocGN5NWhjR2x6TENCbWRXNWpkR2x2YmlBb2IzQmxjbUYwYVc5dUxDQnVZVzFsS1NCN1hHNGdJQ0FnSUNCdmRYUndkWFFnS3owZ0p5QWdLaUFuSUNzZ2JtRnRaU0FySUNjNklDY2dLeUJ2Y0dWeVlYUnBiMjR1YzNWdGJXRnllU0FySUNkY1hHNG5PMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHUnZiblJRY21sdWRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdmRYUndkWFE3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYUdWc2NHVnljeTVzYjJjb2IzVjBjSFYwS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ2ZFhSd2RYUTdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpEYkdsbGJuUXVjSEp2ZEc5MGVYQmxMblJoWjBaeWIyMU1ZV0psYkNBOUlHWjFibU4wYVc5dUlDaHNZV0psYkNrZ2UxeHVJQ0J5WlhSMWNtNGdiR0ZpWld3N1hHNTlPMXh1WEc1VGQyRm5aMlZ5UTJ4cFpXNTBMbkJ5YjNSdmRIbHdaUzVwWkVaeWIyMVBjQ0E5SUdaMWJtTjBhVzl1SUNod1lYUm9MQ0JvZEhSd1RXVjBhRzlrTENCdmNDa2dlMXh1SUNCcFppZ2hiM0FnZkh3Z0lXOXdMbTl3WlhKaGRHbHZia2xrS1NCN1hHNGdJQ0FnYjNBZ1BTQnZjQ0I4ZkNCN2ZUdGNiaUFnSUNCdmNDNXZjR1Z5WVhScGIyNUpaQ0E5SUdoMGRIQk5aWFJvYjJRZ0t5QW5YeWNnS3lCd1lYUm9PMXh1SUNCOVhHNGdJSFpoY2lCdmNFbGtJRDBnYjNBdWIzQmxjbUYwYVc5dVNXUXVjbVZ3YkdGalpTZ3ZXMXhjY3lGQUl5UWxYaVlxS0NsZkt6MWNYRnQ3WEZ4ZGZUczZQRDU4TGx4Y0x6OHNYRnhjWENkY0lsd2lMVjB2Wnl3Z0oxOG5LU0I4ZkNBb2NHRjBhQzV6ZFdKemRISnBibWNvTVNrZ0t5QW5YeWNnS3lCb2RIUndUV1YwYUc5a0tUdGNibHh1SUNCdmNFbGtJRDBnYjNCSlpDNXlaWEJzWVdObEtDOG9LRjhwZXpJc2ZTa3ZaeXdnSjE4bktUdGNiaUFnYjNCSlpDQTlJRzl3U1dRdWNtVndiR0ZqWlNndlhpaGZLU292Wnl3Z0p5Y3BPMXh1SUNCdmNFbGtJRDBnYjNCSlpDNXlaWEJzWVdObEtDOG9XMTlkS1Nva0wyY3NJQ2NuS1R0Y2JseHVJQ0J5WlhSMWNtNGdiM0JKWkR0Y2JuMDdYRzVjYmxOM1lXZG5aWEpEYkdsbGJuUXVjSEp2ZEc5MGVYQmxMbk5sZEVodmMzUWdQU0JtZFc1amRHbHZiaUFvYUc5emRDa2dlMXh1SUNCMGFHbHpMbWh2YzNRZ1BTQm9iM04wTzF4dVhHNGdJR2xtS0hSb2FYTXVZWEJwY3lrZ2UxeHVJQ0FnSUY4dVptOXlSV0ZqYUNoMGFHbHpMbUZ3YVhNc0lHWjFibU4wYVc5dUtHRndhU2tnZTF4dUlDQWdJQ0FnYVdZb1lYQnBMbTl3WlhKaGRHbHZibk1wSUh0Y2JpQWdJQ0FnSUNBZ1h5NW1iM0pGWVdOb0tHRndhUzV2Y0dWeVlYUnBiMjV6TENCbWRXNWpkR2x2YmlodmNHVnlZWFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjR1YUc5emRDQTlJR2h2YzNRN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNCOVhHNTlPMXh1WEc1VGQyRm5aMlZ5UTJ4cFpXNTBMbkJ5YjNSdmRIbHdaUzV6WlhSQ1lYTmxVR0YwYUNBOUlHWjFibU4wYVc5dUlDaGlZWE5sVUdGMGFDa2dlMXh1SUNCMGFHbHpMbUpoYzJWUVlYUm9JRDBnWW1GelpWQmhkR2c3WEc1Y2JpQWdhV1lvZEdocGN5NWhjR2x6S1NCN1hHNGdJQ0FnWHk1bWIzSkZZV05vS0hSb2FYTXVZWEJwY3l3Z1puVnVZM1JwYjI0b1lYQnBLU0I3WEc0Z0lDQWdJQ0JwWmloaGNHa3ViM0JsY21GMGFXOXVjeWtnZTF4dUlDQWdJQ0FnSUNCZkxtWnZja1ZoWTJnb1lYQnBMbTl3WlhKaGRHbHZibk1zSUdaMWJtTjBhVzl1S0c5d1pYSmhkR2x2YmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZiaTVpWVhObFVHRjBhQ0E5SUdKaGMyVlFZWFJvTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNiaUFnZlZ4dWZUdGNibHh1VTNkaFoyZGxja05zYVdWdWRDNXdjbTkwYjNSNWNHVXVjMlYwVTJOb1pXMWxjeUE5SUdaMWJtTjBhVzl1SUNoelkyaGxiV1Z6S1NCN1hHNGdJSFJvYVhNdWMyTm9aVzFsY3lBOUlITmphR1Z0WlhNN1hHNWNiaUFnYVdZb2MyTm9aVzFsY3lBbUppQnpZMmhsYldWekxteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQnBaaWgwYUdsekxtRndhWE1wSUh0Y2JpQWdJQ0FnSUY4dVptOXlSV0ZqYUNoMGFHbHpMbUZ3YVhNc0lHWjFibU4wYVc5dUlDaGhjR2twSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0Z3YVM1dmNHVnlZWFJwYjI1ektTQjdYRzRnSUNBZ0lDQWdJQ0FnWHk1bWIzSkZZV05vS0dGd2FTNXZjR1Z5WVhScGIyNXpMQ0JtZFc1amRHbHZiaUFvYjNCbGNtRjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjR1YzJOb1pXMWxJRDBnYzJOb1pXMWxjMXN3WFR0Y2JpQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNVRkMkZuWjJWeVEyeHBaVzUwTG5CeWIzUnZkSGx3WlM1bVlXbHNJRDBnWm5WdVkzUnBiMjRnS0cxbGMzTmhaMlVwSUh0Y2JpQWdhV1lnS0hSb2FYTXVkWE5sVUhKdmJXbHpaU2tnZTF4dUlDQWdJSFJvYVhNdVpHVm1aWEp5WldSRGJHbGxiblF1Y21WcVpXTjBLRzFsYzNOaFoyVXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJsWm1WeWNtVmtRMnhwWlc1MExuQnliMjFwYzJVN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVptRnBiSFZ5WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVtWVdsc2RYSmxLRzFsYzNOaFoyVXBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVptRnBiSFZ5WlNodFpYTnpZV2RsS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc0aUxDSW9ablZ1WTNScGIyNGdLSEJ5YjJObGMzTXBlMXh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1h5QTlJSHRjYmlBZ2FYTlFiR0ZwYms5aWFtVmpkRG9nY21WeGRXbHlaU2duYkc5a1lYTm9MV052YlhCaGRDOXNZVzVuTDJselVHeGhhVzVQWW1wbFkzUW5LU3hjYmlBZ2FXNWtaWGhQWmpvZ2NtVnhkV2x5WlNnbmJHOWtZWE5vTFdOdmJYQmhkQzloY25KaGVTOXBibVJsZUU5bUp5bGNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TGw5ZlltbHVaQ0E5SUdaMWJtTjBhVzl1SUNobWJpd2diV1VwSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtDbDdYRzRnSUNBZ2NtVjBkWEp1SUdadUxtRndjR3g1S0cxbExDQmhjbWQxYldWdWRITXBPMXh1SUNCOU8xeHVmVHRjYmx4dWRtRnlJR3h2WnlBOUlHMXZaSFZzWlM1bGVIQnZjblJ6TG14dlp5QTlJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQXZMeUJQYm14NUlHeHZaeUJwWmlCaGRtRnBiR0ZpYkdVZ1lXNWtJSGRsSjNKbElHNXZkQ0IwWlhOMGFXNW5YRzRnSUdsbUlDaGpiMjV6YjJ4bElDWW1JSEJ5YjJObGMzTXVaVzUyTGs1UFJFVmZSVTVXSUNFOVBTQW5kR1Z6ZENjcElIdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5aEJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXBXekJkS1R0Y2JpQWdmVnh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNdVptRnBiQ0E5SUdaMWJtTjBhVzl1SUNodFpYTnpZV2RsS1NCN1hHNGdJR3h2WnlodFpYTnpZV2RsS1R0Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpMbTl3ZEdsdmJraDBiV3dnUFNCbWRXNWpkR2x2YmlBb2JHRmlaV3dzSUhaaGJIVmxLU0I3WEc0Z0lISmxkSFZ5YmlBblBIUnlQangwWkNCamJHRnpjejFjSW05d2RHbHZiazVoYldWY0lqNG5JQ3NnYkdGaVpXd2dLeUFuT2p3dmRHUStQSFJrUGljZ0t5QjJZV3gxWlNBcklDYzhMM1JrUGp3dmRISStKenRjYm4wN1hHNWNiblpoY2lCeVpYTnZiSFpsVTJOb1pXMWhJRDBnYlc5a2RXeGxMbVY0Y0c5eWRITXVjbVZ6YjJ4MlpWTmphR1Z0WVNBOUlHWjFibU4wYVc5dUlDaHpZMmhsYldFcElIdGNiaUFnYVdZZ0tGOHVhWE5RYkdGcGJrOWlhbVZqZENoelkyaGxiV0V1YzJOb1pXMWhLU2tnZTF4dUlDQWdJSE5qYUdWdFlTQTlJSEpsYzI5c2RtVlRZMmhsYldFb2MyTm9aVzFoTG5OamFHVnRZU2s3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYzJOb1pXMWhPMXh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNdWMybHRjR3hsVW1WbUlEMGdablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCdVlXMWxJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHNWhiV1V1YVc1a1pYaFBaaWduSXk5a1pXWnBibWwwYVc5dWN5OG5LU0E5UFQwZ01Da2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVlXMWxMbk4xWW5OMGNtbHVaeWduSXk5a1pXWnBibWwwYVc5dWN5OG5MbXhsYm1kMGFDazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlHNWhiV1U3WEc0Z0lIMWNibjA3WEc1Y2JpOHFLbHh1SUNvZ2FHVnNjR1Z5SUhSdklISmxiVzkyWlNCbGVIUmxibk5wYjI1eklHRnVaQ0JoWkdRZ2RHaGxiU0IwYnlCaGJpQnZZbXBsWTNSY2JpQXFYRzRnS2lCQWNHRnlZVzBnYTJWNWJtRnRaVnh1SUNvZ1FIQmhjbUZ0SUc5aWFseHVJQ292WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTVsZUhSeVlXTjBSWGgwWlc1emFXOXVjeUE5SUdaMWJtTjBhVzl1SUNoclpYbHVZVzFsTENCdlltb3NJSFpoYkhWbEtTQjdYRzRnSUdsbUtDRnJaWGx1WVcxbElIeDhJQ0Z2WW1vcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNCcFppQW9kSGx3Wlc5bUlHdGxlVzVoYldVZ1BUMDlJQ2R6ZEhKcGJtY25JQ1ltSUd0bGVXNWhiV1V1YVc1a1pYaFBaaWduZUMwbktTQTlQVDBnTUNrZ2UxeHVJQ0FnSUc5aWFpNTJaVzVrYjNKRmVIUmxibk5wYjI1eklEMGdiMkpxTG5abGJtUnZja1Y0ZEdWdWMybHZibk1nZkh3Z2UzMDdYRzRnSUNBZ2FXWW9kbUZzZFdVcElIdGNiaUFnSUNBZ0lHOWlhaTUyWlc1a2IzSkZlSFJsYm5OcGIyNXpXMnRsZVc1aGJXVmRJRDBnZG1Gc2RXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdiMkpxTG5abGJtUnZja1Y0ZEdWdWMybHZibk5iYTJWNWJtRnRaVjBnUFNCdlltcGJhMlY1Ym1GdFpWMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVmU2t1WTJGc2JDaDBhR2x6TEhKbGNYVnBjbVVvSjE5d2NtOWpaWE56SnlrcFhHNHZMeU1nYzI5MWNtTmxUV0Z3Y0dsdVoxVlNURDFrWVhSaE9tRndjR3hwWTJGMGFXOXVMMnB6YjI0N1kyaGhjbk5sZERwMWRHWXRPRHRpWVhObE5qUXNaWGxLTWxwWVNucGhWemwxU1dwdmVreERTbnBpTTFaNVdUSldla2xxY0dKSmJYaHdXV2s1YjFwWGVIZGFXRXA2VEcxd2VrbHNNSE5KYlRWb1lsZFdla2xxY0dKWVUzZHBZbGRHZDJOSGJIVmFNMDFwVDJsSk4xRlZSa0pSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JXbE1RMHB0WVZkNGJFbHFiMmxhTWxaMVdsaEthR1JIVm10TWJYQjZTV2wzYVdNeU9URmpiVTVzVlcwNWRtUkRTVFpKYVVselNXNU9kbVJZU21wYVdFNUVZakkxTUZwWE5UQkphbkJpU1dsa01XTXlWV2RqTTFKNVlWZE9NRXA2ZEdOaWJIaDFaRzFHZVVsR09HZFFVMEkzV0VjMFowbEhiSHBWUjNob1lWYzFVRmx0Y0d4Wk0xRTJTVWhLYkdOWVZuQmpiVlZ2U2pKNGRscEhSbnBoUXpGcVlqSXhkMWxZVVhaaVIwWjFXbms1Y0dNeFFuTlpWMngxVkRKS2NWcFhUakJLZVd0eldFYzBaMGxIYkhWYVIxWTBWREpaTmtsSVNteGpXRlp3WTIxVmIwb3llSFphUjBaNllVTXhhbUl5TVhkWldGRjJXVmhLZVZsWWEzWmhWelZyV2xob1VGcHBZM0JZUnpVNVR6RjRkVmhITlhSaU1sSXhZa2RWZFZwWWFIZGlNMG93WTNrMVpsZ3lTbkJpYlZGblVGTkNiV1JYTldwa1IyeDJZbWxCYjFwdE5ITkpSekZzUzFOQ04xaEhOR2RKU0Vwc1pFaFdlV0pwUW0xa1Z6VnFaRWRzZG1KcFozQmxNWGgxU1VOQlowbElTbXhrU0ZaNVltbENiV0pwTldoalNFSnpaVk5vZEZwVGQyZFpXRXB1WkZjeGJHSnVVbnBMVkhSalltbEJaMlpVZEdOaWJqQTNXRWMxWTJKdVdtaGphVUp6WWpKaloxQlRRblJpTWxJeFlrZFZkVnBZYUhkaU0wb3dZM2sxYzJJeVkyZFFVMEp0WkZjMWFtUkhiSFppYVdkd1NVaDBZMkpwUVdkTWVUaG5WREkxYzJWVFFuTmlNbU5uWVZkWloxbFlXbWhoVjNob1dXMTRiRWxIUm5WYVEwSXpXbE5rZVZwVFFuVmlNMUZuWkVkV2VtUkhiSFZhTVhoMVNVTkNjRnBwUVc5Wk1qbDFZekk1YzFwVFFXMUthVUozWTIwNWFscFlUbnBNYlZaMVpHazFUMVF3VWtaWU1GWlBWbWxCYUZCVU1HZEtNMUpzWXpOUmJrdFRRamRZUnpSblNVTkJaMWt5T1hWak1qbHpXbE0xYzJJeVkyOVJXRXA1V1ZocmRXTklTblprUnprd1pWaENiRXh1VG5OaFYwNXNURzFPYUdKSGQyOVpXRXB1WkZjeGJHSnVVbnBMVm5OM1dGTnJOMWhITkdkSlNERmpZbTR3TjFoSE5XTmliVEYyV2toV2MxcFROV3hsU0VKMlkyNVNla3h0V21oaFYzZG5VRk5DYldSWE5XcGtSMngyWW1sQmIySlhWbnBqTWtadVdsTnJaMlV4ZUhWSlEwSnpZakpqYjJKWFZucGpNa1p1V2xOck4xaEhOVGxQTVhoMVdFYzFkR0l5VWpGaVIxVjFXbGhvZDJJelNqQmplVFYyWTBoU2NHSXlOVWxrUnpGelNVUXdaMXB1Vm5WWk0xSndZakkwWjB0SGVHaFpiVlp6VEVOQ01sbFhlREZhVTJ0blpURjRkVWxEUW5sYVdGSXhZMjAwWjBwNmVEQmphalE0WkVkUloxa3llR2hqTTAwNVdFTktkbU5JVW5CaU1qVlBXVmN4YkZoRFNTdEtlVUZ5U1VkNGFGbHRWbk5KUTNOblNucHZPRXd6VW10UWFuZ3dXa1EwYmtsRGMyZGtiVVp6WkZkVlowdDVRVzVRUXprd1drUTBPRXd6VW5sUWFXTTNXRWMxT1U4eGVIVllSelV5V1ZoSloyTnRWbnBpTW5neVdsWk9hbUZIVm5SWlUwRTVTVWN4ZGxwSVZuTmFVelZzWlVoQ2RtTnVVbnBNYmtwc1l6STVjMlJ0VmxSWk1taHNZbGRGWjFCVFFtMWtWelZxWkVkc2RtSnBRVzlqTWs1dldsY3hhRXRUUWpkWVJ6Um5TVWRzYlVsRGFHWk1iV3g2VlVkNGFHRlhOVkJaYlhCc1dUTlJiMk15VG05YVZ6Rm9URzVPYW1GSFZuUlpVMnR3U1VoMFkySnBRV2RKUTBKNldUSm9iR0pYUldkUVUwSjVXbGhPZG1KSVdteFZNazV2V2xjeGFFdElUbXBoUjFaMFdWTTFlbGt5YUd4aVYwVndUekY0ZFVsRFFqbFlSelZqWW1sQloyTnRWakJrV0VwMVNVaE9hbUZIVm5SWlZIUmpZbTR3TjFoSE5XTmliVEYyV2toV2MxcFROV3hsU0VKMlkyNVNla3h1VG5CaVdFSnpXbFpLYkZwcFFUbEpSMW94WW0xT01HRlhPWFZKUTJoMVdWY3hiRXRUUWpkWVJ6Um5TVWRzYlVsRGFEQmxXRUpzWWpKWloySnRSblJhVTBFNVVGUXdaMG96Vm5WYVIxWnRZVmMxYkZwRFkzQkpTSFJqWW1sQlowbERRbmxhV0ZJeFkyMDBaMkp1Vm5OaVJIUmpZbWxCWjJaV2VIVllSelJuU1Vkc2JVbERhSFZaVnpGc1RHMXNkVnBIVmpSVU1sbHZTbmxOZGxwSFZtMWhWelZ3WkVkc2RtSnVUWFpLZVd0blVGUXdPVWxFUVhCSlNIUmpZbWxCWjBsRFFubGFXRkl4WTIwMFoySnRSblJhVXpWNlpGZEtlbVJJU25CaWJXTnZTbmxOZGxwSFZtMWhWelZ3WkVkc2RtSnVUWFpLZVRWeldsYzFibVJIWjNCUE1YaDFTVU5DT1VsSFZuTmpNbFZuWlRGNGRVbERRV2RKU0Vwc1pFaFdlV0pwUW5WWlZ6RnNUekY0ZFVsRFFqbFlSelU1VHpGNGRWaEhOSFpMYVhCalltbEJjVWxIYUd4aVNFSnNZMmxDTUdKNVFubGFWekYyWkcxVloxcFlhREJhVnpWNllWYzVkV041UW1oaWJWRm5XVmRTYTBsSVVtOWFWekJuWkVjNFoxbFhOR2RpTWtweFdsZE9NRmhITkdkTGJIaDFTVU52WjFGSVFtaGpiVVowU1VkMGJHVlhOV2hpVjFaalltbEJjVWxGUW5kWldFcG9ZbE5DZGxsdGNHTmlhVUZ4VERGNGRXSlhPV3RrVjNoc1RHMVdOR05IT1hsa1NFMTFXbGhvTUdOdFJtcGtSVlkwWkVkV2RXTXliSFppYmsxblVGTkNiV1JYTldwa1IyeDJZbWxCYjJFeVZqVmliVVowV2xOM1oySXlTbkZNUTBJeVdWZDRNVnBUYTJkbE1YaDFTVU5DY0ZwcFoyaGhNbFkxWW0xR2RGcFRRamhtUTBGb1lqSktjVXRUUWpkWVJ6Um5TVU5CWjJOdFZqQmtXRXAxVHpGNGRVbERRamxZUnpWalltbEJaMkZYV1dkTFNGSTFZMGRXZGxwcFFuSmFXR3gxV1ZjeGJFbEVNRGxRVTBGdVl6TlNlV0ZYTlc1S2VVRnRTbWxDY2xwWWJIVlpWekZzVEcxc2RWcEhWalJVTWxsdlNqTm5kRXA1YTJkUVZEQTVTVVJCY0VsSWRHTmlhVUZuU1VOQ2RsbHRiM1ZrYlZaMVdrYzVlVkpZYURCYVZ6VjZZVmM1ZFdONVFUbEpSemxwWVdrMU1scFhOV3RpTTBwR1pVaFNiR0p1VG5CaU1qVjZTVWg0T0VsSWREbFBNWGgxU1VOQlowbEhiRzFMU0Zwb1lraFdiRXRUUWpkWVJ6Um5TVU5CWjBsRFFuWlpiVzkxWkcxV2RWcEhPWGxTV0dnd1dsYzFlbUZYT1hWak1YUnlXbGhzZFZsWE1XeFlVMEU1U1VoYWFHSklWbXhQTVhoMVNVTkJaMGxJTVdOaWFVRm5TVU5DYkdKSVRteEpTSFJqWW1sQlowbERRV2RKUnpscFlXazFNbHBYTld0aU0wcEdaVWhTYkdKdVRuQmlNalY2VnpKMGJHVlhOV2hpVjFaa1NVUXdaMkl5U25GWE1uUnNaVmMxYUdKWFZtUlBNWGgxU1VOQlowbElNV05pYVVGblpsWjRkV1pVYzJsWVdEQTlJaXdpS0daMWJtTjBhVzl1SUNoQ2RXWm1aWElwZTF4dUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdhR1ZzY0dWeWN5QTlJSEpsY1hWcGNtVW9KeTR2YUdWc2NHVnljeWNwTzF4dWRtRnlJSEpsY1hWbGMzUWdQU0J5WlhGMWFYSmxLQ2R6ZFhCbGNtRm5aVzUwSnlrN1hHNTJZWElnYW5ONVlXMXNJRDBnY21WeGRXbHlaU2duYW5NdGVXRnRiQ2NwTzF4dWRtRnlJRjhnUFNCN1hHNGdJR2x6VDJKcVpXTjBPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOUFltcGxZM1FuS1N4Y2JpQWdhMlY1Y3pvZ2NtVnhkV2x5WlNnbmJHOWtZWE5vTFdOdmJYQmhkQzl2WW1wbFkzUXZhMlY1Y3ljcFhHNTlPMXh1WEc0dktseHVJQ29nU2xGMVpYSjVTSFIwY0VOc2FXVnVkQ0JwY3lCaElHeHBaMmgwTFhkbGFXZG9kQ3dnYm05a1pTQnZjaUJpY205M2MyVnlJRWhVVkZBZ1kyeHBaVzUwWEc0Z0tpOWNiblpoY2lCS1VYVmxjbmxJZEhSd1EyeHBaVzUwSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNCMGFHbHpMblI1Y0dVZ1BTQW5TbEYxWlhKNVNIUjBjRU5zYVdWdWRDYzdYRzU5TzF4dVhHNHZLbHh1SUNvZ1UzVndaWEpoWjJWdWRFaDBkSEJEYkdsbGJuUWdhWE1nWVNCc2FXZG9kQzEzWldsbmFIUXNJRzV2WkdVZ2IzSWdZbkp2ZDNObGNpQklWRlJRSUdOc2FXVnVkRnh1SUNvdlhHNTJZWElnVTNWd1pYSmhaMlZ1ZEVoMGRIQkRiR2xsYm5RZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lIUm9hWE11ZEhsd1pTQTlJQ2RUZFhCbGNtRm5aVzUwU0hSMGNFTnNhV1Z1ZENjN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZOM1lXZG5aWEpJZEhSd0lHbHpJR0VnZDNKaGNIQmxjaUJtYjNJZ1pYaGxZM1YwYVc1bklISmxjWFZsYzNSelhHNGdLaTljYm5aaGNpQlRkMkZuWjJWeVNIUjBjQ0E5SUcxdlpIVnNaUzVsZUhCdmNuUnpJRDBnWm5WdVkzUnBiMjRnS0NrZ2UzMDdYRzVjYmxOM1lXZG5aWEpJZEhSd0xuQnliM1J2ZEhsd1pTNWxlR1ZqZFhSbElEMGdablZ1WTNScGIyNGdLRzlpYWl3Z2IzQjBjeWtnZTF4dUlDQjJZWElnWTJ4cFpXNTBPMXh1WEc0Z0lHbG1LRzl3ZEhNZ0ppWWdiM0IwY3k1amJHbGxiblFwSUh0Y2JpQWdJQ0JqYkdsbGJuUWdQU0J2Y0hSekxtTnNhV1Z1ZER0Y2JpQWdmVnh1SUNCbGJITmxJSHRjYmlBZ0lDQmpiR2xsYm5RZ1BTQnVaWGNnVTNWd1pYSmhaMlZ1ZEVoMGRIQkRiR2xsYm5Rb2IzQjBjeWs3WEc0Z0lIMWNiaUFnWTJ4cFpXNTBMbTl3ZEhNZ1BTQnZjSFJ6SUh4OElIdDlPMXh1WEc0Z0lHbG1JQ2h2Y0hSeklDWW1JRzl3ZEhNdWNtVnhkV1Z6ZEVGblpXNTBLU0I3WEc0Z0lDQWdjbVZ4ZFdWemRDQTlJRzl3ZEhNdWNtVnhkV1Z6ZEVGblpXNTBPMXh1SUNCOVhHNWNiaUFnTHk4Z2JHVm5ZV041SUhOMWNIQnZjblJjYmlBZ2RtRnlJR2hoYzBwUmRXVnllU0E5SUdaaGJITmxPMXh1SUNCcFppaDBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJR2xtS0hSNWNHVnZaaUIzYVc1a2IzY3VhbEYxWlhKNUlDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ2FHRnpTbEYxWlhKNUlEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnTHk4Z1QxQlVTVTlPVXlCemRYQndiM0owWEc0Z0lHbG1LRzlpYWk1dFpYUm9iMlF1ZEc5TWIzZGxja05oYzJVb0tTQTlQVDBnSjI5d2RHbHZibk1uSUNZbUlHTnNhV1Z1ZEM1MGVYQmxJRDA5UFNBblUzVndaWEpoWjJWdWRFaDBkSEJEYkdsbGJuUW5LU0I3WEc0Z0lDQWdiRzluS0NkbWIzSmphVzVuSUdwUmRXVnllU0JoY3lCUFVGUkpUMDVUSUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrSUdKNUlGTjFjR1Z5UVdkbGJuUW5LVHRjYmlBZ0lDQnZZbW91ZFhObFNsRjFaWEo1SUQwZ2RISjFaVHRjYmlBZ2ZWeHVJQ0JwWmloMGFHbHpMbWx6U1c1MFpYSnVaWFJGZUhCc2IzSmxjaWdwSUNZbUlDaHZZbW91ZFhObFNsRjFaWEo1SUQwOVBTQm1ZV3h6WlNCOGZDQWhhR0Z6U2xGMVpYSjVJQ2twSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVZ1YzNWd2NHOXlkR1ZrSUdOdmJtWnBaM1Z5WVhScGIyNGhJRXBSZFdWeWVTQnBjeUJ5WlhGMWFYSmxaQ0JpZFhRZ2JtOTBJR0YyWVdsc1lXSnNaU2NwTzF4dUlDQjlYRzRnSUdsbUlDZ29iMkpxSUNZbUlHOWlhaTUxYzJWS1VYVmxjbmtnUFQwOUlIUnlkV1VwSUh4OElIUm9hWE11YVhOSmJuUmxjbTVsZEVWNGNHeHZjbVZ5S0NrZ0ppWWdhR0Z6U2xGMVpYSjVLU0I3WEc0Z0lDQWdZMnhwWlc1MElEMGdibVYzSUVwUmRXVnllVWgwZEhCRGJHbGxiblFvYjNCMGN5azdYRzRnSUgxY2JseHVJQ0IyWVhJZ2MzVmpZMlZ6Y3lBOUlHOWlhaTV2Ymk1eVpYTndiMjV6WlR0Y2JpQWdkbUZ5SUdWeWNtOXlJRDBnYjJKcUxtOXVMbVZ5Y205eU8xeHVYRzRnSUhaaGNpQnlaWEYxWlhOMFNXNTBaWEpqWlhCMGIzSWdQU0JtZFc1amRHbHZiaWhrWVhSaEtTQjdYRzRnSUNBZ2FXWW9iM0IwY3lBbUppQnZjSFJ6TG5KbGNYVmxjM1JKYm5SbGNtTmxjSFJ2Y2lrZ2UxeHVJQ0FnSUNBZ1pHRjBZU0E5SUc5d2RITXVjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlMbUZ3Y0d4NUtHUmhkR0VwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1pHRjBZVHRjYmlBZ2ZUdGNibHh1SUNCMllYSWdjbVZ6Y0c5dWMyVkpiblJsY21ObGNIUnZjaUE5SUdaMWJtTjBhVzl1S0dSaGRHRXBJSHRjYmlBZ0lDQnBaaWh2Y0hSeklDWW1JRzl3ZEhNdWNtVnpjRzl1YzJWSmJuUmxjbU5sY0hSdmNpa2dlMXh1SUNBZ0lDQWdaR0YwWVNBOUlHOXdkSE11Y21WemNHOXVjMlZKYm5SbGNtTmxjSFJ2Y2k1aGNIQnNlU2hrWVhSaExDQmJiMkpxWFNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnpkV05qWlhOektHUmhkR0VwTzF4dUlDQjlPMXh1WEc0Z0lIWmhjaUJsY25KdmNrbHVkR1Z5WTJWd2RHOXlJRDBnWm5WdVkzUnBiMjRvWkdGMFlTa2dlMXh1SUNBZ0lHbG1LRzl3ZEhNZ0ppWWdiM0IwY3k1eVpYTndiMjV6WlVsdWRHVnlZMlZ3ZEc5eUtTQjdYRzRnSUNBZ0lDQmtZWFJoSUQwZ2IzQjBjeTV5WlhOd2IyNXpaVWx1ZEdWeVkyVndkRzl5TG1Gd2NHeDVLR1JoZEdFc0lGdHZZbXBkS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdaWEp5YjNJb1pHRjBZU2s3WEc0Z0lIMDdYRzVjYmlBZ2IySnFMbTl1TG1WeWNtOXlJRDBnWm5WdVkzUnBiMjRvWkdGMFlTa2dlMXh1SUNBZ0lHVnljbTl5U1c1MFpYSmpaWEIwYjNJb1pHRjBZU2s3WEc0Z0lIMDdYRzVjYmlBZ2IySnFMbTl1TG5KbGMzQnZibk5sSUQwZ1puVnVZM1JwYjI0b1pHRjBZU2tnZTF4dUlDQWdJR2xtS0dSaGRHRWdKaVlnWkdGMFlTNXpkR0YwZFhNZ1BqMGdOREF3S1NCN1hHNGdJQ0FnSUNCbGNuSnZja2x1ZEdWeVkyVndkRzl5S0dSaGRHRXBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsYzNCdmJuTmxTVzUwWlhKalpYQjBiM0lvWkdGMFlTazdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dVhHNGdJR2xtSUNoZkxtbHpUMkpxWldOMEtHOWlhaWtnSmlZZ1h5NXBjMDlpYW1WamRDaHZZbW91WW05a2VTa3BJSHRjYmlBZ0lDQXZMeUJ6Y0dWamFXRnNJSEJ5YjJObGMzTnBibWNnWm05eUlHWnBiR1VnZFhCc2IyRmtjeUIyYVdFZ2FuRjFaWEo1WEc0Z0lDQWdhV1lnS0c5aWFpNWliMlI1TG5SNWNHVWdKaVlnYjJKcUxtSnZaSGt1ZEhsd1pTQTlQVDBnSjJadmNtMUVZWFJoSnlsN1hHNGdJQ0FnSUNCcFppaHZjSFJ6TG5WelpVcFJkV1Z5ZVNrZ2UxeHVJQ0FnSUNBZ0lDQnZZbW91WTI5dWRHVnVkRlI1Y0dVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2IySnFMbkJ5YjJObGMzTkVZWFJoSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUdSbGJHVjBaU0J2WW1vdWFHVmhaR1Z5YzFzblEyOXVkR1Z1ZEMxVWVYQmxKMTA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYjJKcUlEMGdjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlLRzlpYWlrZ2ZId2diMkpxTzF4dUlDQnBaaUFvYjJKcUxtSmxabTl5WlZObGJtUXBJSHRjYmlBZ0lDQnZZbW91WW1WbWIzSmxVMlZ1WkNobWRXNWpkR2x2YmloZmIySnFLU0I3WEc0Z0lDQWdJQ0JqYkdsbGJuUXVaWGhsWTNWMFpTaGZiMkpxSUh4OElHOWlhaWs3WEc0Z0lDQWdmU2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnWTJ4cFpXNTBMbVY0WldOMWRHVW9iMkpxS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlBb2IySnFMbVJsWm1WeWNtVmtLU0EvSUc5aWFpNWtaV1psY25KbFpDNXdjbTl0YVhObElEb2diMkpxTzF4dWZUdGNibHh1VTNkaFoyZGxja2gwZEhBdWNISnZkRzkwZVhCbExtbHpTVzUwWlhKdVpYUkZlSEJzYjNKbGNpQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdkbUZ5SUdSbGRHVmpkR1ZrU1VVZ1BTQm1ZV3h6WlR0Y2JseHVJQ0JwWmlBb2RIbHdaVzltSUc1aGRtbG5ZWFJ2Y2lBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NnSmlZZ2JtRjJhV2RoZEc5eUxuVnpaWEpCWjJWdWRDa2dlMXh1SUNBZ0lIWmhjaUJ1WVhZZ1BTQnVZWFpwWjJGMGIzSXVkWE5sY2tGblpXNTBMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNWNiaUFnSUNCcFppQW9ibUYyTG1sdVpHVjRUMllvSjIxemFXVW5LU0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJSFpoY2lCMlpYSnphVzl1SUQwZ2NHRnljMlZKYm5Rb2JtRjJMbk53YkdsMEtDZHRjMmxsSnlsYk1WMHBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RtVnljMmx2YmlBOFBTQTRLU0I3WEc0Z0lDQWdJQ0FnSUdSbGRHVmpkR1ZrU1VVZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJrWlhSbFkzUmxaRWxGTzF4dWZUdGNibHh1U2xGMVpYSjVTSFIwY0VOc2FXVnVkQzV3Y205MGIzUjVjR1V1WlhobFkzVjBaU0E5SUdaMWJtTjBhVzl1SUNodlltb3BJSHRjYmlBZ2RtRnlJR3B4SUQwZ2RHaHBjeTVxVVhWbGNua2dmSHdnS0hSNWNHVnZaaUIzYVc1a2IzY2dJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSGRwYm1SdmR5NXFVWFZsY25rcE8xeHVJQ0IyWVhJZ1kySWdQU0J2WW1vdWIyNDdYRzRnSUhaaGNpQnlaWEYxWlhOMElEMGdiMkpxTzF4dVhHNGdJR2xtS0hSNWNHVnZaaUJxY1NBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NnZkh3Z2FuRWdQVDA5SUdaaGJITmxLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFZibk4xY0hCdmNuUmxaQ0JqYjI1bWFXZDFjbUYwYVc5dUlTQktVWFZsY25rZ2FYTWdjbVZ4ZFdseVpXUWdZblYwSUc1dmRDQmhkbUZwYkdGaWJHVW5LVHRjYmlBZ2ZWeHVYRzRnSUc5aWFpNTBlWEJsSUQwZ2IySnFMbTFsZEdodlpEdGNiaUFnYjJKcUxtTmhZMmhsSUQwZ2IySnFMbXB4ZFdWeWVVRnFZWGhEWVdOb1pUdGNiaUFnYjJKcUxtUmhkR0VnUFNCdlltb3VZbTlrZVR0Y2JpQWdaR1ZzWlhSbElHOWlhaTVxY1hWbGNubEJhbUY0UTJGamFHVTdYRzRnSUdSbGJHVjBaU0J2WW1vdWRYTmxTbEYxWlhKNU8xeHVJQ0JrWld4bGRHVWdiMkpxTG1KdlpIazdYRzVjYmlBZ2IySnFMbU52YlhCc1pYUmxJRDBnWm5WdVkzUnBiMjRnS0hKbGMzQnZibk5sS1NCN1hHNGdJQ0FnZG1GeUlHaGxZV1JsY25NZ1BTQjdmVHRjYmlBZ0lDQjJZWElnYUdWaFpHVnlRWEp5WVhrZ1BTQnlaWE53YjI1elpTNW5aWFJCYkd4U1pYTndiMjV6WlVobFlXUmxjbk1vS1M1emNHeHBkQ2duWEZ4dUp5azdYRzVjYmlBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR2hsWVdSbGNrRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnZEc5VGNHeHBkQ0E5SUdobFlXUmxja0Z5Y21GNVcybGRMblJ5YVcwb0tUdGNibHh1SUNBZ0lDQWdhV1lnS0hSdlUzQnNhWFF1YkdWdVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0IyWVhJZ2MyVndZWEpoZEc5eUlEMGdkRzlUY0d4cGRDNXBibVJsZUU5bUtDYzZKeWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaHpaWEJoY21GMGIzSWdQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJQzh2SUU1aGJXVWdZblYwSUc1dklIWmhiSFZsSUdsdUlIUm9aU0JvWldGa1pYSmNiaUFnSUNBZ0lDQWdhR1ZoWkdWeWMxdDBiMU53YkdsMFhTQTlJRzUxYkd3N1hHNWNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCdVlXMWxJRDBnZEc5VGNHeHBkQzV6ZFdKemRISnBibWNvTUN3Z2MyVndZWEpoZEc5eUtTNTBjbWx0S0NrN1hHNGdJQ0FnSUNCMllYSWdkbUZzZFdVZ1BTQjBiMU53YkdsMExuTjFZbk4wY21sdVp5aHpaWEJoY21GMGIzSWdLeUF4S1M1MGNtbHRLQ2s3WEc1Y2JpQWdJQ0FnSUdobFlXUmxjbk5iYm1GdFpWMGdQU0IyWVd4MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdiM1YwSUQwZ2UxeHVJQ0FnSUNBZ2RYSnNPaUJ5WlhGMVpYTjBMblZ5YkN4Y2JpQWdJQ0FnSUcxbGRHaHZaRG9nY21WeGRXVnpkQzV0WlhSb2IyUXNYRzRnSUNBZ0lDQnpkR0YwZFhNNklISmxjM0J2Ym5ObExuTjBZWFIxY3l4Y2JpQWdJQ0FnSUhOMFlYUjFjMVJsZUhRNklISmxjM0J2Ym5ObExuTjBZWFIxYzFSbGVIUXNYRzRnSUNBZ0lDQmtZWFJoT2lCeVpYTndiMjV6WlM1eVpYTndiMjV6WlZSbGVIUXNYRzRnSUNBZ0lDQm9aV0ZrWlhKek9pQm9aV0ZrWlhKelhHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQjJZWElnY0c5emMybGliR1ZQWW1vZ1BTQWdjbVZ6Y0c5dWMyVXVjbVZ6Y0c5dWMyVktVMDlPSUh4OElHcHplV0Z0YkM1ellXWmxURzloWkNoeVpYTndiMjV6WlM1eVpYTndiMjV6WlZSbGVIUXBPMXh1SUNBZ0lDQWdiM1YwTG05aWFpQTlJQ2gwZVhCbGIyWWdjRzl6YzJsaWJHVlBZbW9nUFQwOUlDZHpkSEpwYm1jbktTQS9JSHQ5SURvZ2NHOXpjMmxpYkdWUFltbzdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pYZ3BJSHRjYmlBZ0lDQWdJQzh2SUdSdklHNXZkQ0J6WlhRZ2IzVjBMbTlpYWx4dUlDQWdJQ0FnYUdWc2NHVnljeTVzYjJjb0ozVnVZV0pzWlNCMGJ5QndZWEp6WlNCS1UwOU9MMWxCVFV3Z1kyOXVkR1Z1ZENjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFa2dZMkZ1SUhSb2NtOTNMQ0J2Y2lCd1lYSnpaU0J1ZFd4c1AxeHVJQ0FnSUc5MWRDNXZZbW9nUFNCdmRYUXViMkpxSUh4OElHNTFiR3c3WEc1Y2JpQWdJQ0JwWmlBb2NtVnpjRzl1YzJVdWMzUmhkSFZ6SUQ0OUlESXdNQ0FtSmlCeVpYTndiMjV6WlM1emRHRjBkWE1nUENBek1EQXBJSHRjYmlBZ0lDQWdJR05pTG5KbGMzQnZibk5sS0c5MWRDazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHlaWE53YjI1elpTNXpkR0YwZFhNZ1BUMDlJREFnZkh3Z0tISmxjM0J2Ym5ObExuTjBZWFIxY3lBK1BTQTBNREFnSmlZZ2NtVnpjRzl1YzJVdWMzUmhkSFZ6SUR3Z05UazVLU2tnZTF4dUlDQWdJQ0FnWTJJdVpYSnliM0lvYjNWMEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR05pTG5KbGMzQnZibk5sS0c5MWRDazdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dVhHNGdJR3B4TG5OMWNIQnZjblF1WTI5eWN5QTlJSFJ5ZFdVN1hHNWNiaUFnY21WMGRYSnVJR3B4TG1GcVlYZ29iMkpxS1R0Y2JuMDdYRzVjYmxOMWNHVnlZV2RsYm5SSWRIUndRMnhwWlc1MExuQnliM1J2ZEhsd1pTNWxlR1ZqZFhSbElEMGdablZ1WTNScGIyNGdLRzlpYWlrZ2UxeHVJQ0IyWVhJZ2JXVjBhRzlrSUQwZ2IySnFMbTFsZEdodlpDNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dUlDQjJZWElnZEdsdFpXOTFkQ0E5SUc5aWFpNTBhVzFsYjNWME8xeHVYRzRnSUdsbUlDaHRaWFJvYjJRZ1BUMDlJQ2RrWld4bGRHVW5LU0I3WEc0Z0lDQWdiV1YwYUc5a0lEMGdKMlJsYkNjN1hHNGdJSDFjYmlBZ2RtRnlJR2hsWVdSbGNuTWdQU0J2WW1vdWFHVmhaR1Z5Y3lCOGZDQjdmVHRjYmx4dUlDQjJZWElnY2lBOUlISmxjWFZsYzNSYmJXVjBhRzlrWFNodlltb3VkWEpzS1R0Y2JseHVJQ0JwWmlBb2IySnFMbU52Ym01bFkzUnBiMjVCWjJWdWRDa2dlMXh1SUNBZ0lISXVZV2RsYm5Rb2IySnFMbU52Ym01bFkzUnBiMjVCWjJWdWRDazdYRzRnSUgxY2JseHVJQ0JwWmlBb2RHbHRaVzkxZENrZ2UxeHVJQ0FnSUhJdWRHbHRaVzkxZENoMGFXMWxiM1YwS1R0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2h2WW1vdVpXNWhZbXhsUTI5dmEybGxjeWtnZTF4dUlDQWdJSEl1ZDJsMGFFTnlaV1JsYm5ScFlXeHpLQ2s3WEc0Z0lIMWNibHh1SUNCMllYSWdZV05qWlhCMElEMGdiMkpxTG1obFlXUmxjbk11UVdOalpYQjBPMXh1WEc0Z0lHbG1LSFJvYVhNdVltbHVZWEo1VW1WeGRXVnpkQ2hoWTJObGNIUXBLU0I3WEc0Z0lDQWdjaTV2YmlnbmNtVnhkV1Z6ZENjc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJR2xtS0hSb2FYTXVlR2h5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZUdoeUxuSmxjM0J2Ym5ObFZIbHdaU0E5SUNkaWJHOWlKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUdsbUtHOWlhaTVpYjJSNUtTQjdYRzRnSUNBZ2FXWW9YeTVwYzA5aWFtVmpkQ2h2WW1vdVltOWtlU2twSUh0Y2JpQWdJQ0FnSUhaaGNpQmpiMjUwWlc1MFZIbHdaU0E5SUc5aWFpNW9aV0ZrWlhKeld5ZERiMjUwWlc1MExWUjVjR1VuWFNCOGZDQW5KenRjYmlBZ0lDQWdJR2xtSUNoamIyNTBaVzUwVkhsd1pTNXBibVJsZUU5bUtDZHRkV3gwYVhCaGNuUXZabTl5YlMxa1lYUmhKeWtnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnWkdWc1pYUmxJR2hsWVdSbGNuTmJKME52Ym5SbGJuUXRWSGx3WlNkZE8xeHVJQ0FnSUNBZ0lDQnBaaWg3ZlM1MGIxTjBjbWx1Wnk1aGNIQnNlU2h2WW1vdVltOWtlU2tnUFQwOUlDZGJiMkpxWldOMElFWnZjbTFFWVhSaFhTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeUxuTmxibVFvYjJKcUxtSnZaSGtwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJyWlhsdVlXMWxMQ0IyWVd4MVpTd2dkanRjYmlBZ0lDQWdJQ0FnSUNCbWIzSWdLR3RsZVc1aGJXVWdhVzRnYjJKcUxtSnZaSGtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdiMkpxTG1KdlpIbGJhMlY1Ym1GdFpWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppaEJjbkpoZVM1cGMwRnljbUY1S0haaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNJb2RpQnBiaUIyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEl1Wm1sbGJHUW9hMlY1Ym1GdFpTd2dkaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlMbVpwWld4a0tHdGxlVzVoYldVc0lIWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tGOHVhWE5QWW1wbFkzUW9iMkpxTG1KdlpIa3BLU0I3WEc0Z0lDQWdJQ0FnSUM4dklHNXZiaUJ0ZFd4MGFYQmhjblF2Wm05eWJTMWtZWFJoWEc0Z0lDQWdJQ0FnSUc5aWFpNWliMlI1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvYjJKcUxtSnZaSGtwTzF4dUlDQWdJQ0FnSUNCeUxuTmxibVFvYjJKcUxtSnZaSGtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUhJdWMyVnVaQ2h2WW1vdVltOWtlU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnZG1GeUlHNWhiV1U3WEc0Z0lHWnZjaUFvYm1GdFpTQnBiaUJvWldGa1pYSnpLU0I3WEc0Z0lDQWdjaTV6WlhRb2JtRnRaU3dnYUdWaFpHVnljMXR1WVcxbFhTazdYRzRnSUgxY2JseHVJQ0JwWmloMGVYQmxiMllnY2k1aWRXWm1aWElnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQnlMbUoxWm1abGNpZ3BPeUF2THlCbWIzSmpaU0J6ZFhCbGNtRm5aVzUwSUhSdklIQnZjSFZzWVhSbElISmxjeTUwWlhoMElIZHBkR2dnZEdobElISmhkeUJ5WlhOd2IyNXpaU0JrWVhSaFhHNGdJSDFjYmx4dUlDQnlMbVZ1WkNobWRXNWpkR2x2YmlBb1pYSnlMQ0J5WlhNcElIdGNiaUFnSUNCeVpYTWdQU0J5WlhNZ2ZId2dlMXh1SUNBZ0lDQWdjM1JoZEhWek9pQXdMRnh1SUNBZ0lDQWdhR1ZoWkdWeWN6b2dlMlZ5Y205eU9pQW5ibThnY21WemNHOXVjMlVnWm5KdmJTQnpaWEoyWlhJbmZWeHVJQ0FnSUgwN1hHNGdJQ0FnZG1GeUlISmxjM0J2Ym5ObElEMGdlMXh1SUNBZ0lDQWdkWEpzT2lCdlltb3VkWEpzTEZ4dUlDQWdJQ0FnYldWMGFHOWtPaUJ2WW1vdWJXVjBhRzlrTEZ4dUlDQWdJQ0FnYUdWaFpHVnljem9nY21WekxtaGxZV1JsY25OY2JpQWdJQ0I5TzF4dUlDQWdJSFpoY2lCallqdGNibHh1SUNBZ0lHbG1JQ2doWlhKeUlDWW1JSEpsY3k1bGNuSnZjaWtnZTF4dUlDQWdJQ0FnWlhKeUlEMGdjbVZ6TG1WeWNtOXlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hsY25JZ0ppWWdiMkpxTG05dUlDWW1JRzlpYWk1dmJpNWxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ2NtVnpjRzl1YzJVdVpYSnlUMkpxSUQwZ1pYSnlPMXh1SUNBZ0lDQWdjbVZ6Y0c5dWMyVXVjM1JoZEhWeklEMGdjbVZ6SUQ4Z2NtVnpMbk4wWVhSMWN5QTZJRFV3TUR0Y2JpQWdJQ0FnSUhKbGMzQnZibk5sTG5OMFlYUjFjMVJsZUhRZ1BTQnlaWE1nUHlCeVpYTXVkR1Y0ZENBNklHVnljaTV0WlhOellXZGxPMXh1SUNBZ0lDQWdhV1lnS0hKbGN5NW9aV0ZrWlhKeklDWW1JSEpsY3k1b1pXRmtaWEp6V3lkamIyNTBaVzUwTFhSNWNHVW5YU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9jbVZ6TG1obFlXUmxjbk5iSjJOdmJuUmxiblF0ZEhsd1pTZGRMbWx1WkdWNFQyWW9KMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5LU0ErUFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGMzQnZibk5sTG05aWFpQTlJRXBUVDA0dWNHRnljMlVvY21WemNHOXVjMlV1YzNSaGRIVnpWR1Y0ZENrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhOd2IyNXpaUzV2WW1vZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZMklnUFNCdlltb3ViMjR1WlhKeWIzSTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHlaWE1nSmlZZ2IySnFMbTl1SUNZbUlHOWlhaTV2Ymk1eVpYTndiMjV6WlNrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEJ2YzNOcFlteGxUMkpxTzF4dVhHNGdJQ0FnSUNBdkx5QkJiSEpsWVdSNUlIQmhjbk5sWkNCaWVTQmllU0J6ZFhCbGNtRm5aVzUwUDF4dUlDQWdJQ0FnYVdZZ0tISmxjeTVpYjJSNUlDWW1JRjh1YTJWNWN5aHlaWE11WW05a2VTa3ViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnSUNCd2IzTnphV0pzWlU5aWFpQTlJSEpsY3k1aWIyUjVPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQndiM056YVdKc1pVOWlhaUE5SUdwemVXRnRiQzV6WVdabFRHOWhaQ2h5WlhNdWRHVjRkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZMkZ1SUhCaGNuTmxJR2x1ZEc4Z1lTQnpkSEpwYm1jdUxpNGdkMmhwWTJnZ2QyVWdaRzl1SjNRZ2JtVmxaQ0J5ZFc1dWFXNW5JR0Z5YjNWdVpDQnBiaUIwYUdVZ2MzbHpkR1Z0WEc0Z0lDQWdJQ0FnSUNBZ2NHOXpjMmxpYkdWUFltb2dQU0FvZEhsd1pXOW1JSEJ2YzNOcFlteGxUMkpxSUQwOVBTQW5jM1J5YVc1bkp5a2dQeUJ1ZFd4c0lEb2djRzl6YzJsaWJHVlBZbW83WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0JvWld4d1pYSnpMbXh2WnlnblkyRnVibTkwSUhCaGNuTmxJRXBUVDA0dldVRk5UQ0JqYjI1MFpXNTBKeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdiblZzYkNCdFpXRnVjeUIzWlNCallXNG5kQ0J3WVhKelpTQnBiblJ2SUc5aWFtVmpkRnh1SUNBZ0lDQWdhV1lvZEhsd1pXOW1JRUoxWm1abGNpQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUppQkNkV1ptWlhJdWFYTkNkV1ptWlhJb2NHOXpjMmxpYkdWUFltb3BLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzQnZibk5sTG1SaGRHRWdQU0J3YjNOemFXSnNaVTlpYWp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhOd2IyNXpaUzV2WW1vZ1BTQW9kSGx3Wlc5bUlIQnZjM05wWW14bFQySnFJRDA5UFNBbmIySnFaV04wSnlrZ1B5QndiM056YVdKc1pVOWlhaUE2SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSEpsYzNCdmJuTmxMbk4wWVhSMWN5QTlJSEpsY3k1emRHRjBkWE03WEc0Z0lDQWdJQ0J5WlhOd2IyNXpaUzV6ZEdGMGRYTlVaWGgwSUQwZ2NtVnpMblJsZUhRN1hHNGdJQ0FnSUNCallpQTlJRzlpYWk1dmJpNXlaWE53YjI1elpUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tISmxjeTU0YUhJZ0ppWWdjbVZ6TG5ob2NpNXlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdjbVZ6Y0c5dWMyVXVaR0YwWVNBOUlISmxjeTU0YUhJdWNtVnpjRzl1YzJVN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2FXWW9JWEpsYzNCdmJuTmxMbVJoZEdFcElIdGNiaUFnSUNBZ0lISmxjM0J2Ym5ObExtUmhkR0VnUFNCeVpYTndiMjV6WlM1emRHRjBkWE5VWlhoME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGpZaWtnZTF4dUlDQWdJQ0FnWTJJb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUgxY2JpQWdmU2s3WEc1OU8xeHVYRzVUZFhCbGNtRm5aVzUwU0hSMGNFTnNhV1Z1ZEM1d2NtOTBiM1I1Y0dVdUlHSnBibUZ5ZVZKbGNYVmxjM1FnUFNCbWRXNWpkR2x2YmlBb1lXTmpaWEIwS1NCN1hHNGdJR2xtS0NGaFkyTmxjSFFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUNndlhtbHRZV2RsTDJrcExuUmxjM1FvWVdOalpYQjBLVnh1SUNBZ0lIeDhJQ2d2WG1Gd2NHeHBZMkYwYVc5dVhGd3ZjR1JtTHlrdWRHVnpkQ2hoWTJObGNIUXBYRzRnSUNBZ2ZId2dLQzllWVhCd2JHbGpZWFJwYjI1Y1hDOXZZM1JsZEMxemRISmxZVzB2S1M1MFpYTjBLR0ZqWTJWd2RDazdYRzU5TzF4dVhHNTlLUzVqWVd4c0tIUm9hWE1zY21WeGRXbHlaU2hjSW1KMVptWmxjbHdpS1M1Q2RXWm1aWElwWEc0dkx5TWdjMjkxY21ObFRXRndjR2x1WjFWU1REMWtZWFJoT21Gd2NHeHBZMkYwYVc5dUwycHpiMjQ3WTJoaGNuTmxkRHAxZEdZdE9EdGlZWE5sTmpRc1pYbEtNbHBZU25waFZ6bDFTV3B2ZWt4RFNucGlNMVo1V1RKV2VrbHFjR0pKYlhod1dXazViMlJJVW5kTWJYQjZTV3d3YzBsdE5XaGlWMVo2U1dwd1lsaFRkMmxpVjBaM1kwZHNkVm96VFdsUGFVazNVVlZHUWxGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSkphWGRwV20xc2MxcFRTVFpKYldSc1ltMVdlVmxZVW14YVF6VnhZM2xKYzBsdVRuWmtXRXBxV2xaS2RtSXpVV2xQYVVscFRFTktlbUl6Vm5sWk1sWjZVVEk1ZFdSSFZuVmtRMGsyVjNsSmJtUllUbXhKU0U0d1kyMXNhbVJEWXpkWVJ6VmpZbTVhYUdOcFFtOWFWM2gzV2xoS2VrbEVNR2RqYlZaNFpGZHNlVnBUWjI1TWFUbHZXbGQ0ZDFwWVNucEtlV3MzV0VjMU1sbFlTV2RqYlZaNFpGZFdlbVJEUVRsSlNFcHNZMWhXY0dOdFZXOUtNMDR4WTBkV2VWbFhaR3hpYmxGdVMxUjBZMkp1V21oamFVSnhZek5zYUdKWGQyZFFVMEo1V2xoR01XRllTbXhMUTJSeFkza3hOVmxYTVhOS2VXczNXRWMxTWxsWVNXZFllVUU1U1VoMFkySnBRV2RoV0U1UVdXMXdiRmt6VVRaSlNFcHNZMWhXY0dOdFZXOUtNbmgyV2tkR2VtRkRNV3BpTWpGM1dWaFJkbUpIUm5WYWVUbHdZekE1YVdGdFZtcGtRMk53VEVaNGRVbERRbkphV0d4NlQybENlVnBZUmpGaFdFcHNTME5rYzJJeVVtaGpNbWQwV1RJNWRHTkhSakJNTWpscFlXMVdhbVJET1hKYVdHeDZTbmxzWTJKdU1EZFlSelZqWW1rNGNWaEhOR2RMYVVKTFZWaFdiR051YkVsa1NGSjNVVEo0Y0ZwWE5UQkpSMng2U1VkRloySkhiRzVoU0ZGMFpESldjRm95YURCTVEwSjFZakpTYkVsSE9YbEpSMHA1WWpOa2VscFlTV2RUUmxKVlZVTkNhbUpIYkd4aWJsSmpZbWxCY1V3eGVIVmtiVVo1U1VWd1VtUlhWbmxsVldnd1pFaENSR0pIYkd4aWJsRm5VRk5DYldSWE5XcGtSMngyWW1sQmIwdFRRamRZUnpSblNVaFNiMkZZVFhWa1NHeDNXbE5CT1VsRFpFdFZXRlpzWTI1c1NXUklVbmRSTW5od1dsYzFNRXA2ZEdOaWJqQTNXRWMxWTJKcE9IRllSelJuUzJsQ1ZHUllRbXhqYlVadVdsYzFNRk5JVWpCalJVNXpZVmRXZFdSRFFuQmplVUpvU1VkNGNGb3lhREJNV0dSc1lWZGtiMlJEZDJkaWJUbHJXbE5DZG1OcFFtbGpiVGt6WXpKV2VVbEZhRlZXUmtGbldUSjRjRnBYTlRCWVJ6Um5TMms1WTJKdVdtaGphVUpVWkZoQ2JHTnRSbTVhVnpVd1UwaFNNR05GVG5OaFYxWjFaRU5CT1VsSFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMlJIYUhCamVUVXdaVmhDYkVsRU1HZEtNVTR4WTBkV2VWbFhaR3hpYmxKSlpFaFNkMUV5ZUhCYVZ6VXdTbnAwWTJKdU1EZFlSelZqWW1rNGNVdHNlSFZKUTI5blZUTmthRm95Wkd4amEyZ3daRWhCWjJGWVRXZFpVMEl6WTIxR2QyTkhWbmxKUjFwMlkybENiR1ZIVm1wa1dGSndZbTFqWjJOdFZuaGtWMVo2WkVoT1kySnBRWEZNTVhoMVpHMUdlVWxHVGpOWlYyUnVXbGhLU1dSSVVuZEpSREJuWWxjNWEyUlhlR3hNYlZZMFkwYzVlV1JJVFdkUVUwSnRaRmMxYW1SSGJIWmlhVUZ2UzFOQ04yWlVkR05pYkhoMVZUTmthRm95Wkd4amEyZ3daRWhCZFdOSVNuWmtSemt3WlZoQ2JFeHRWalJhVjA0eFpFZFZaMUJUUW0xa1Z6VnFaRWRzZG1KcFFXOWlNa3B4VEVOQ2RtTklVbnBMVTBJM1dFYzBaMGxJV21oamFVSnFZa2RzYkdKdVVUZFlSelZqWW1sQloyRlhXVzlpTTBJd1kzbEJiVXBwUW5aalNGSjZURzFPYzJGWFZuVmtRMnRuWlRGNGRVbERRV2RKUjA1ellWZFdkV1JEUVRsSlJ6bDNaRWhOZFZreWVIQmFWelV3VHpGNGRVbERRamxZUnpSblNVZFdjMk15VldkbE1YaDFTVU5CWjBsSFRuTmhWMVoxWkVOQk9VbEhOV3hrZVVKVVpGaENiR050Um01YVZ6VXdVMGhTTUdORlRuTmhWMVoxWkVOb2RtTklVbnBMVkhSalltbEJaMlpXZUhWSlEwSnFZa2RzYkdKdVVYVmlNMEl3WTNsQk9VbEhPWGRrU0UxblpraDNaMlV6TURkWVJ6VmpZbWxCWjJGWFdXZExSemwzWkVoTlowcHBXV2RpTTBJd1kzazFlVnBZUmpGYVdFNHdVVmRrYkdKdVVYQkpTSFJqWW1sQlowbERRbmxhV0VZeFdsaE9NRWxFTUdkaU0wSXdZM2sxZVZwWVJqRmFXRTR3VVZka2JHSnVVVGRZUnpSblNVZ3hZMkpzZUhWSlEwRjJUSGxDYzFwWFpHaFpNMnRuWXpOV2QyTkhPWGxrUm5oMVNVTkNNbGxZU1dkaFIwWjZVMnhHTVZwWVNqVkpSREJuV20xR2MyTXlWVGRZUnpSblNVZHNiVXRJVWpWalIxWjJXbWxDTTJGWE5XdGlNMk5uU1ZRd09VbERaREZpYlZKc1dtMXNkVnBYVVc1TFUwSTNXRWMwWjBsRFFXZGhWMWx2WkVoc2QxcFhPVzFKU0dSd1ltMVNkbVI1TlhGVldGWnNZMjVyWjBsVU1EbEpRMlF4WW0xU2JGcHRiSFZhVjFGdVMxTkNOMWhITkdkSlEwRm5TVU5DYjFsWVRrdFZXRlpzWTI1cloxQlRRakJqYmxac1R6RjRkVWxEUVdkSlNERmpZbWxCWjJaV2VIVkpRMEYyVEhsQ1VGVkdVa3BVTURWVVNVaE9NV05JUW5aamJsSmpZbWxCWjJGWFdXOWlNa3B4VEcweGJHUkhhSFphUXpVd1lqQjRkbVF5Vm5sUk1rWjZXbE5uY0VsRU1EbFFVMEZ1WWpOQ01HRlhPWFZqZVdOblNtbFpaMWt5ZUhCYVZ6VXdURzVTTldOSFZXZFFWREE1U1VOa1ZHUllRbXhqYlVadVdsYzFNRk5JVWpCalJVNXpZVmRXZFdSRFkzQkpTSFJqWW1sQlowbERRbk5pTW1OdlNqSmFkbU50VG5CaWJXTm5ZV3hHTVZwWVNqVkpSMFo2U1VVNVVWWkZiRkJVYkUxbldWaEtiRWxITlhaa1EwSjZaRmhDZDJJelNqQmFWMUZuV1c1cloxVXpWbmRhV0VwQ1dqSldkV1JEWTNCUE1YaDFTVU5CWjBsSE9XbGhhVFV4WXpKV1MxVllWbXhqYm10blVGTkNNR051Vm14UE1YaDFTVU5DT1ZoSE5HZEpSMnh0UzBoU2IyRllUWFZoV0U1S1ltNVNiR050Tld4a1JWWTBZMGQ0ZG1OdFZubExRMnRuU21sWlowdEhPV2xoYVRVeFl6SldTMVZZVm14amJtdG5VRlF3T1VsSFdtaGlTRTVzU1VoNE9FbERSbTlaV0U1TFZWaFdiR051YTJkTFUydG5aVEY0ZFVsRFFXZEpTRkp2WTIwNU0wbEhOV3hrZVVKR1kyNUtkbU5wWjI1V1Z6VjZaRmhDZDJJelNqQmFWMUZuV1RJNWRWcHRiRzVrV0Vwb1pFZHNkbUpwUldkVGJFWXhXbGhLTlVsSGJIcEpTRXBzWTFoV2NHTnRWbXRKUjBveFpFTkNkV0l6VVdkWldGcG9ZVmQ0YUZsdGVHeEtlV3MzV0VjMFowbElNV05pYVVGbllWZFpaMHREYUhaWmJXOW5TbWxaWjJJeVNuRk1ibFo2V2xWd1VtUlhWbmxsVTBFNVVGUXdaMlJJU2pGYVUydG5aa2gzWjJSSGFIQmplVFZ3WXpCc2RXUkhWbmxpYlZZd1VsaG9kMkpIT1hsYVdFbHZTMU5CYlVwcFFtOVpXRTVMVlZoV2JHTnVhM0JKU0hSalltbEJaMGxEUW1waVIyeHNZbTVSWjFCVFFuVmFXR05uVTJ4R01WcFlTalZUU0ZJd1kwVk9jMkZYVm5Wa1EyaDJZMGhTZWt0VWRHTmlhVUZuWmxaNGRWaEhOR2RKU0Zwb1kybENlbVJYVG1wYVdFNTZTVVF3WjJJeVNuRk1iVGwxVEc1S2JHTXpRblppYms1c1R6RjRkVWxEUWpKWldFbG5XbGhLZVdJelNXZFFVMEoyV1cxdmRXSXlOSFZhV0VwNVlqTkpOMWhITldOaWFVRm5aRzFHZVVsSVNteGpXRlpzWXpOU1NtSnVVbXhqYlU1c1kwaFNkbU5wUVRsSlIxb3hZbTFPTUdGWE9YVkxSMUpvWkVkRmNFbElkR05pYVVGblNVTkNjRnBwYUhaalNGSjZTVU5aYlVsSE9YZGtTRTExWTIxV2VHUlhWbnBrUld4MVpFZFdlVmt5Vm5ka1J6bDVTMU5DTjFoSE5HZEpRMEZuU1VOQ2ExbFlVbWhKUkRCbllqTkNNR041TlhsYVdFWXhXbGhPTUZOWE5UQmFXRXBxV2xoQ01HSXpTWFZaV0VKM1lraHJiMXBIUmpCWlUyczNXRWMwWjBsRFFXZG1WbmgxU1VOQlowbElTbXhrU0ZaNVltbENhMWxZVW1oUE1YaDFTVU5DT1U4eGVIVllSelJuU1VoYWFHTnBRbmxhV0U1M1lqSTFlbHBWYkhWa1IxWjVXVEpXZDJSSE9YbEpSREJuV201V2RWa3pVbkJpTWpSdldrZEdNRmxUYTJkbE1YaDFTVU5CWjBsSGJHMUxSemwzWkVoTlowcHBXV2RpTTBJd1kzazFlVnBZVG5kaU1qVjZXbFZzZFdSSFZubFpNbFozWkVjNWVVdFRRamRZUnpSblNVTkJaMGxEUW10WldGSm9TVVF3WjJJelFqQmplVFY1V2xoT2QySXlOWHBhVld4MVpFZFdlVmt5Vm5ka1J6bDVURzFHZDJOSGVEVkxSMUpvWkVkRmMwbEdkSFpaYlhCa1MxUjBZMkpwUVdkSlEwSTVXRWMwWjBsRFFXZGpiVll3WkZoS2RVbElUakZaTWs1c1l6Tk5iMXBIUmpCWlUyczNXRWMwWjBsSU1EZFlSelZqWW1sQloyUnRSbmxKUjFaNVkyMDVlVk5YTlRCYVdFcHFXbGhDTUdJelNXZFFVMEp0WkZjMWFtUkhiSFppYVdocldWaFNhRXRUUWpkWVJ6Um5TVU5CWjJGWFdXOWlNMEl3WTNsQmJVcHBRblpqU0ZKNlRHNUtiR016UW5aaWJrNXNVMWMxTUZwWVNtcGFXRUl3WWpOSmNFbElkR05pYVVGblNVTkJaMGxIVW1oa1IwVm5VRk5DZG1OSVVucE1ia3BzWXpOQ2RtSnVUbXhUVnpVd1dsaEthbHBZUWpCaU0wbDFXVmhDZDJKSWEyOWFSMFl3V1ZOM1oxY3lPV2xoYkRCd1R6RjRkVWxEUVdkSlNERmpZbWxCWjBsRFFteGpia3AyWTJsb2ExbFlVbWhMVkhSalltbEJaMlpVZEdOaWJIaDFTVU5DZGxsdGIzVmlNalIxV2xoS2VXSXpTV2RRVTBKdFpGYzFhbVJIYkhaaWFXaHJXVmhTYUV0VFFqZFlSelJuU1VOQloxcFlTbmxpTTBwS1ltNVNiR050VG14alNGSjJZMmxvYTFsWVVtaExWSFJqWW1sQloyWlVkR05pYkhoMVNVTkNkbGx0YjNWaU1qUjFZMjFXZW1OSE9YVmpNbFZuVUZOQ2JXUlhOV3BrUjJ4MlltbG9hMWxZVW1oTFUwSTNXRWMwWjBsRFFXZGhWMWx2V2tkR01GbFRRVzFLYVVKcldWaFNhRXh1VGpCWldGSXhZM2xCSzFCVFFUQk5SRUZ3U1VoMFkySnBRV2RKUTBGblNVZFdlV050T1hsVFZ6VXdXbGhLYWxwWVFqQmlNMGx2V2tkR01GbFRhemRZUnpSblNVTkJaMlpXZUhWSlEwRm5TVWRXYzJNeVZXZGxNWGgxU1VOQlowbERRV2RqYlZaNlkwYzVkV015VmtwaWJsSnNZMjFPYkdOSVVuWmphV2hyV1ZoU2FFdFVkR05pYVVGblNVTkNPVmhITkdkSlNEQTNXRWMxWTJKcFFXZGhWMWxuUzBZNGRXRllUbEJaYlhCc1dUTlJiMkl5U25GTFUwRnRTbWxDWmt4dGJIcFVNa3B4V2xkT01FdEhPV2xoYVRWcFlqSlNOVXRUYTJkbE1YaDFTVU5CWjBsRE9IWkpTRTUzV2xkT2NGbFhkMmRqU0VwMldUSldlbU15YkhWYWVVSnRZak5KWjFwdGJITmFVMEl4WTBkNGRsbFhVbnBKU0Zwd1dWTkNjV05ZVm14amJteGpZbWxCWjBsRFFuQmFhVUZ2WWpKS2NVeHRTblphU0d0MVpFaHNkMXBUUVcxS2FVSjJXVzF2ZFZsdE9XdGxVelV3WlZoQ2JFbEVNRGxRVTBGdVdtMDVlV0pWVW1oa1IwVnVTMWgwWTJKcFFXZEpRMEZuU1Vkc2JVdEhPWGRrU0UxMVpGaE9iRk5zUmpGYVdFbzFTMU5DTjFoSE5HZEpRMEZuU1VOQlowbEhPV2xoYVRWcVlqSTFNRnBYTlRCV1NHeDNXbE5CT1VsSFdtaGlTRTVzVHpGNGRVbERRV2RKUTBGblNVTkNkbGx0YjNWalNFcDJXVEpXZW1Nd1VtaGtSMFZuVUZOQ2JWbFhlSHBhVkhSalltbEJaMGxEUVdkSlEwRm5Xa2RXYzFwWVVteEpSemxwWVdrMWIxcFhSbXRhV0VwNlYzbGtSR0l5TlRCYVZ6VXdURlpTTldOSFZXNVlWSFJqWW1sQlowbERRV2RKU0RGalltbEJaMGxEUWpsWVJ6Um5TVWd4WTJKc2VIVkpRMEoyV1cxdloxQlRRbmxhV0VZeFdsaE9NRk5YTlRCYVdFcHFXbGhDTUdJelNXOWlNa3B4UzFOQ09HWkRRblpaYlc4M1dFYzBaMGxIYkcxSlEyaDJXVzF2ZFZsdFZtMWlNMHBzVlRKV2RWcERhMmRsTVhoMVNVTkJaMGxIT1dsaGFUVnBXbGRhZG1OdFZsUmFWelZyUzBkYU1XSnRUakJoVnpsMVMwWTVkbGx0YjNCSlNIUmpZbWxCWjBsRFFXZEpSMDV6WVZkV2RXUkROV3hsUjFacVpGaFNiRXRHT1haWmJXOW5aa2gzWjJJeVNuRkxWSFJqWW1sQlowbERRamxMVkhSalltbEJaMlpUUW14aVNFNXNTVWgwWTJKcFFXZEpRMEpxWWtkc2JHSnVVWFZhV0doc1dUTldNRnBUYUhaWmJXOXdUekY0ZFVsRFFqbFlSelZqWW1sQloyTnRWakJrV0VwMVNVTm9kbGx0YjNWYVIxWnRXbGhLZVZwWFVYQkpSRGhuWWpKS2NVeHRVbXhhYlZaNVkyMVdhMHh1UW5saU1qRndZekpWWjA5cFFuWlpiVzgzV0VjMU9VOHhlSFZZUnpWVVpESkdibG95Vm5sVFNGSXdZME0xZDJOdE9UQmlNMUkxWTBkVmRXRllUa3BpYmxKc1kyMDFiR1JGVmpSalIzaDJZMjFXZVVsRU1HZGFibFoxV1ROU2NHSXlOR2RMUTJ0blpURjRkVWxEUWpKWldFbG5Xa2RXTUZwWFRqQmFWMUpLVWxOQk9VbEhXbWhpU0U1c1R6RjRkVmhITkdkSlIyeHRTVU5vTUdWWVFteGlNbGxuWW0xR01tRlhaR2hrUnpsNVNVTkZPVkJUUVc1a1Z6VnJXbGRhY0dKdFZtdEtlVUZ0U21sQ2RWbFlXbkJhTWtZd1lqTkpkV1JZVG14amEwWnVXbGMxTUV0VFFqZFlSelJuU1VOQloyUnRSbmxKUnpWb1pHbEJPVWxITldoa2JXeHVXVmhTZG1OcE5URmpNbFo1VVZka2JHSnVVWFZrUnpsTllqTmtiR05yVG1oak1sVnZTMVIwWTJKc2VIVkpRMEZuU1Vkc2JVbERhSFZaV0ZsMVlWYzFhMXBZYUZCYWFXZHVZbGhPY0ZwVFkzQkpRMFU1VUZOQmRFMVRhMmRsTVhoMVNVTkJaMGxEUVdka2JVWjVTVWhhYkdOdVRuQmlNalJuVUZOQ2QxbFlTbnBhVld4MVpFTm9kVmxZV1hWak0wSnpZVmhSYjBveU1YcGhWMVZ1UzFaemVGaFRhemRZUnpWalltbEJaMGxEUVdkSlIyeHRTVU5vTWxwWVNucGhWemwxU1VSM09VbEVaM0JKU0hSalltbEJaMGxEUVdkSlEwRm5Xa2RXTUZwWFRqQmFWMUpLVWxOQk9VbElVbmxrVjFVM1dFYzBaMGxEUVdkSlEwSTVXRWMwWjBsRFFXZG1WbmgxU1VOQ09WaEhOV05pYVVGblkyMVdNR1JZU25WSlIxSnNaRWRXYW1SSFZtdFRWVlUzV0VjMU9VOHhlSFZZUnpWTFZWaFdiR051YkVsa1NGSjNVVEo0Y0ZwWE5UQk1ia0o1WWpOU2RtUkliSGRhVXpWc1pVZFdhbVJZVW14SlJEQm5XbTVXZFZrelVuQmlNalJuUzBjNWFXRnBhMmRsTVhoMVNVTkNNbGxZU1dkaGJrVm5VRk5DTUdGSGJIcE1iWEJTWkZkV2VXVlRRamhtUTBGdlpFaHNkMXBYT1cxSlNHUndZbTFTZG1SNVFXaFFWREJuU2pOV2RWcEhWbTFoVnpWc1drTmpaMHBwV1dka01teDFXa2M1TTB4dGNGSmtWMVo1WlZOck4xaEhOR2RKU0Zwb1kybENhbGxwUVRsSlJ6bHBZV2sxZG1KcWRHTmlhVUZuWkcxR2VVbElTbXhqV0Zac1l6TlJaMUJUUW5aWmJXODNXRWMxWTJKcFFXZGhWMWx2WkVoc2QxcFhPVzFKUjNCNFNVUXdPVkJUUVc1a1Z6VnJXbGRhY0dKdFZtdEtlVUk0WmtOQ2NXTlRRVGxRVkRCbldtMUdjMk15VlhCSlNIUmpZbWxCWjBsRFFqQmhTRXAyWkhsQ2RWcFlZMmRTV0VwNVlqTkpiMG94Vm5Wak0xWjNZMGM1ZVdSSFZtdEpSMDUyWW0xYWNGb3pWbmxaV0ZKd1lqSTBhRWxGY0ZKa1YxWjVaVk5DY0dONVFubGFXRVl4WVZoS2JGcERRbWxrV0ZGblltMDVNRWxIUmpKWlYyeHpXVmRLYzFwVFkzQlBNWGgxU1VOQ09WaEhOV05pYVVGbllqSktjVXh1VWpWalIxVm5VRk5DZGxsdGIzVmlWMVl3WVVjNWEwOHhlSFZKUTBKMldXMXZkVmt5Um1waFIxVm5VRk5DZGxsdGIzVmhia1l4V2xoS05WRlhjR2hsUlU1b1dUSm9iRTh4ZUhWSlEwSjJXVzF2ZFZwSFJqQlpVMEU1U1VjNWFXRnBOV2xpTWxJMVR6RjRkVWxEUW10YVYzaHNaRWRWWjJJeVNuRk1iWEI0WkZkV2VXVlZSbkZaV0doRVdWZE9iMXBVZEdOaWFVRm5Xa2RXYzFwWVVteEpSemxwWVdrMU1XTXlWa3RWV0Zac1kyNXJOMWhITkdkSlIxSnNZa2RXTUZwVFFuWlpiVzkxV1cwNWEyVlVkR05pYkhoMVNVTkNkbGx0YjNWWk1qbDBZMGQ0YkdSSFZXZFFVMEp0WkZjMWFtUkhiSFppYVVGdlkyMVdlbU5IT1hWak1sVndTVWgwWTJKcFFXZEpRMEl5V1ZoSloyRkhWbWhhUjFaNVkzbEJPVWxJZERsUE1YaDFTVU5CWjBsSVdtaGphVUp2V2xkR2ExcFlTa0pqYmtwb1pWTkJPVWxJU214ak0wSjJZbTVPYkV4dFpHeGtSVVp6WWtaS2JHTXpRblppYms1c1UwZFdhRnBIVm5samVXZHdURzVPZDJKSGJEQkxRMlJqV0VjMGJrdFVkR05pYkhoMVNVTkJaMGxIV25aamFVRnZaRzFHZVVsSGEyZFFVMEYzVDNsQ2NFbEVkMmRoUjFab1drZFdlVkZZU25sWldHdDFZa2RXZFZvelVtOVBlVUp3UzNsemNFbElkR05pYVVGblNVTkJaMGxJV21oamFVSXdZakZPZDJKSGJEQkpSREJuWVVkV2FGcEhWbmxSV0VwNVdWaHNZbUZXTUhWa1NFcHdZbE5uY0U4eGVIVllSelJuU1VOQlowbERRbkJhYVVGdlpFYzVWR05IZUhCa1F6VnpXbGMxYm1SSFoyZFFWREE1U1VSQmNFbElkR05pYVVGblNVTkJaMGxEUVdkWk1qbDFaRWRzZFdSWFZUZFlSelJuU1VOQlowbERRamxZUnpWalltbEJaMGxEUVdkSlNGcG9ZMmxDZWxwWVFtaGpiVVl3WWpOSloxQlRRakJpTVU1M1lrZHNNRXh0YkhWYVIxWTBWREpaYjBwNmIyNUxWSFJqWW14NGRVbERRV2RKUTBGbllWZFpaMHRJVG14alIwWjVXVmhTZG1OcFFUbFFWREJuVEZSRmNFbElkR05pYVVGblNVTkJaMGxEUVdkTWVUaG5WRzFHZEZwVFFtbGtXRkZuWW0wNFoyUnRSbk5rVjFWbllWYzBaMlJIYUd4SlIyaHNXVmRTYkdOc2VIVkpRMEZuU1VOQlowbERRbTlhVjBacldsaEtlbGN6VW5aVk0wSnpZVmhTWkVsRU1HZGlibFp6WWtSMFkySnNlSFZKUTBGblNVTkJaMGxEUW1waU1qVXdZVmMxTVZwVWRHTmlhVUZuU1VOQlowbElNV05pYkhoMVNVTkJaMGxEUVdka2JVWjVTVWMxYUdKWFZXZFFVMEl3WWpGT2QySkhiREJNYms0eFdXNU9NR050YkhWYWVXZDNURU5DZWxwWVFtaGpiVVl3WWpOSmNFeHVVbmxoVnpCdlMxUjBZMkpwUVdkSlEwRm5TVWhhYUdOcFFqSlpWM2d4V2xOQk9VbElVblpWTTBKellWaFJkV016Vm1sak0xSjVZVmMxYmt0SVRteGpSMFo1V1ZoU2RtTnBRWEpKUkVWd1RHNVNlV0ZYTUc5TFZIUmpZbXg0ZFVsRFFXZEpRMEZuWVVkV2FGcEhWbmxqTVhSMVdWY3hiRmhUUVRsSlNGcG9Za2hXYkU4eGVIVkpRMEZuU1VneFkySnNlSFZKUTBGblNVaGFhR05wUW5aa1dGRm5VRk5DTjFoSE5HZEpRMEZuU1VOQ01XTnRkelpKU0Vwc1kxaFdiR016VVhWa1dFcHpURVo0ZFVsRFFXZEpRMEZuWWxkV01HRkhPV3RQYVVKNVdsaEdNVnBZVGpCTWJURnNaRWRvZGxwRGVHTmlhVUZuU1VOQlowbElUakJaV0ZJeFkzcHZaMk50Vm5walJ6bDFZekpWZFdNelVtaGtTRlo2VEVaNGRVbERRV2RKUTBGbll6TlNhR1JJVm5wV1IxWTBaRVJ2WjJOdFZucGpSemwxWXpKVmRXTXpVbWhrU0ZaNlZrZFdOR1JEZUdOaWFVRm5TVU5CWjBsSFVtaGtSMFUyU1VoS2JHTXpRblppYms1c1RHNUtiR016UW5aaWJrNXNWa2RXTkdSRGVHTmlhVUZuU1VOQlowbEhhR3haVjFKc1kyNU5Oa2xIYUd4WlYxSnNZMjVPWTJKcFFXZEpRMEk1VHpGNGRWaEhOR2RKUTBGblpFaEtOVWxJZEdOaWFVRm5TVU5CWjBsSVdtaGphVUozWWpOT2VtRlhTbk5hVlRscFlXbEJPVWxEUW5sYVdFNTNZakkxZWxwVE5YbGFXRTUzWWpJMWVscFZjRlJVTURSblpraDNaMkZ1VGpWWlZ6RnpURzVPYUZwdFZrMWlNa1pyUzBoS2JHTXpRblppYms1c1RHNUtiR016UW5aaWJrNXNWa2RXTkdSRGF6ZFlSelJuU1VOQlowbERRblprV0ZGMVlqSktjVWxFTUdkTFNGSTFZMGRXZGxwcFFuZGlNMDU2WVZkS2MxcFZPV2xoYVVFNVVGUXdaMG96VGpCamJXeDFXbmxqY0VsRU9HZGxNekJuVDJsQ2QySXpUbnBoVjBweldsVTVhV0ZxZEdOaWFVRm5TVU5DT1VsSFRtaGtSMDV2U1VOb2JHVkRhMmRsTVhoMVNVTkJaMGxEUVdkTWVUaG5Xa2M0WjJKdE9UQkpTRTVzWkVOQ2RtUllVWFZpTWtweFdFYzBaMGxEUVdkSlEwSnZXbGQ0ZDFwWVNucE1iWGgyV25sbmJtUlhOV2haYlhoc1NVaFNka2xJUW1oamJrNXNTVVZ3VkZRd05IWlhWVVpPVkVOQ2FtSXlOVEJhVnpVd1NubHJOMWhITkdkSlEwRm5abFo0ZFZoSE5HZEpRMEZuVEhrNFoxTlRRbXBaVnpSblpFZG9lV0l6WTNOSlJ6bDVTVWhDYUdOdVRteEpSelV4WWtkM0wxaEhOR2RKUTBGbllqTldNRXh0T1dsaGFVRTVTVWM1TVdSRE5YWlpiVzluWmtoM1oySnVWbk5pUkhSallteDRkVWxEUVdkSlIyeHRTVU5vZVZwWVRuZGlNalY2V2xNMWVtUkhSakJrV0UxblVHb3daMDFxUVhkSlExbHRTVWhLYkdNelFuWmliazVzVEc1T01GbFlVakZqZVVFNFNVUk5kMDFEYTJkbE1YaDFTVU5CWjBsRFFXZFpNa2wxWTIxV2VtTkhPWFZqTWxWdllqTldNRXRVZEdOaWFVRm5TVU5DT1VsSFZuTmpNbFZuWVZkWlowdElTbXhqTTBKMlltNU9iRXh1VGpCWldGSXhZM2xCT1ZCVU1HZE5RMEk0WmtOQmIyTnRWbnBqUnpsMVl6SlZkV016VW1oa1NGWjZTVVEwT1VsRVVYZE5RMEZ0U21sQ2VWcFlUbmRpTWpWNldsTTFlbVJIUmpCa1dFMW5VRU5CTVU5VWEzQkxVMEkzV0VjMFowbERRV2RKUTBKcVdXazFiR051U25aamFXaDJaRmhSY0U4eGVIVkpRMEZuU1Vnd1oxcFhlSHBhVTBJM1dFYzBaMGxEUVdkSlEwSjVXbGhTTVdOdE5HZFpNa2wxWTIxV2VtTkhPWFZqTWxWdllqTldNRXRVZEdOaWFVRm5TVU5DT1ZoSE5HZEpTREEzV0VjMVkySnBRV2RoYmtWMVl6TldkMk5IT1hsa1F6VnFZak5LZWtsRU1HZGtTRW94V2xSMFkySnNlSFZKUTBKNVdsaFNNV050TkdkaGJrVjFXVmR3YUdWRGFIWlpiVzl3VHpGNGRXWlVkR05pYkhoMVZUTldkMXBZU21oYU1sWjFaRVZvTUdSSVFrUmlSMnhzWW01UmRXTklTblprUnprd1pWaENiRXh0VmpSYVYwNHhaRWRWWjFCVFFtMWtWelZxWkVkc2RtSnBRVzlpTWtweFMxTkNOMWhITkdkSlNGcG9ZMmxDZEZwWVVtOWlNbEZuVUZOQ2RsbHRiM1ZpVjFZd1lVYzVhMHh1VW5aVVJ6a3pXbGhLUkZsWVRteExRMnMzV0VjMFowbElXbWhqYVVJd1lWY3hiR0l6VmpCSlJEQm5ZakpLY1V4dVVuQmlWMVoyWkZoUk4xaEhOV05pYVVGbllWZFpaMHRITVd4a1IyaDJXa05CT1ZCVU1HZEtNbEpzWWtkV01GcFRZM0JKU0hSalltbEJaMGxEUW5SYVdGSnZZakpSWjFCVFFXNWFSMVp6U25wMFkySnBRV2RtVm5oMVNVTkNNbGxZU1dkaFIxWm9Xa2RXZVdONVFUbEpSemxwWVdrMWIxcFhSbXRhV0VwNlNVaDRPRWxJZERsUE1YaDFXRWMwWjBsSVdtaGphVUo1U1VRd1oyTnRWbmhrVjFaNlpFWjBkRnBZVW05aU1sSmtTMGM1YVdGcE5URmpiWGR3VHpGNGRWaEhOR2RKUjJ4dFNVTm9kbGx0YjNWWk1qbDFZbTFXYW1SSGJIWmlhMFp1V2xjMU1FdFRRamRZUnpSblNVTkJaMk5wTldoYU1sWjFaRU5vZGxsdGIzVlpNamwxWW0xV2FtUkhiSFppYTBadVdsYzFNRXRVZEdOaWFVRm5abFo0ZFZoSE5HZEpSMnh0U1VOb01HRlhNV3hpTTFZd1MxTkNOMWhITkdkSlEwRm5ZMmsxTUdGWE1XeGlNMVl3UzBoU2NHSlhWblprV0ZGd1R6RjRkVWxEUWpsWVJ6VmpZbWxCWjJGWFdXZExSemxwWVdrMWJHSnRSbWxpUjFaRVlqSTVjbUZYVm5wTFUwSTNXRWMwWjBsRFFXZGphVFV6WVZoU2IxRXpTbXhhUjFaMVpFZHNhR0pJVFc5TFZIUmpZbWxCWjJaV2VIVllSelJuU1VoYWFHTnBRbWhaTWs1c1kwaFJaMUJUUW5aWmJXOTFZVWRXYUZwSFZubGplVFZDV1RKT2JHTklVVGRZUnpWalltbEJaMkZYV1c5a1IyaHdZM2sxYVdGWE5XaGpibXhUV2xoR01WcFlUakJMUjBacVdUSldkMlJEYTNCSlNIUmpZbWxCWjBsRFFubE1iVGwxUzBOa2VWcFlSakZhV0U0d1NubDNaMXB1Vm5WWk0xSndZakkwWjB0RGEyZGxNWGgxU1VOQlowbERRV2RoVjFsdlpFZG9jR041TlRSaFNFbHdTVWgwWTJKcFFXZEpRMEZuU1VOQloyUkhhSEJqZVRVMFlVaEpkV050Vm5walJ6bDFZekpXVldWWVFteEpSREJuU2pKS2MySXlTVzVQTVhoMVNVTkJaMGxEUVdkbVZuaDFTVU5CWjBsSU1IQlBNWGgxU1VOQ09WaEhOV05pYVVGbllWZFpiMkl5U25GTWJVcDJXa2hyY0VsSWRHTmlhVUZuU1VOQ2NGcHBhR1pNYld4NlZESktjVnBYVGpCTFJ6bHBZV2sxYVdJeVVqVkxVMnRuWlRGNGRVbERRV2RKUTBGblpHMUdlVWxIVG5aaWJsSnNZbTVTVldWWVFteEpSREJuWWpKS2NVeHRhR3haVjFKc1kyNU9Za293VG5aaWJsSnNZbTVSZEZaSWJIZGFVMlJrU1VoNE9FbERZMjVQTVhoMVNVTkJaMGxEUVdkaFYxbG5TMGRPZG1KdVVteGlibEpWWlZoQ2JFeHRiSFZhUjFZMFZESlpiMG95TVRGaVNGSndZMGRHZVdSRE9XMWlNMHAwVEZkU2FHUkhSVzVMVTBFNVVGUXdaMDFEYTJkbE1YaDFTVU5CWjBsRFFXZEpRMEpyV2xkNGJHUkhWV2RoUjFab1drZFdlV014YzI1Uk1qbDFaRWRXZFdSRE1WVmxXRUpzU2pFd04xaEhOR2RKUTBGblNVTkJaMGxIYkcxTFNIUTVURzVTZGxVelVubGhWelZ1VEcxR2QyTkhlRFZMUnpscFlXazFhV0l5VWpWTFUwRTVVRlF3WjBveGRIWlpiWEJzV1ROUloxSnRPWGxpVlZKb1pFZEdaRXA1YTJkbE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VoSmRXTXlWblZhUTJoMldXMXZkVmx0T1d0bFUyczNXRWMwWjBsRFFXZEpRMEZuU1VneFkySnBRV2RKUTBGblNVTkJaMXBYZUhwYVUwSTNXRWMwWjBsRFFXZEpRMEZuU1VOQloyUnRSbmxKUjNSc1pWYzFhR0pYVlhOSlNGcG9Za2hXYkV4RFFqSlBNWGgxU1VOQlowbERRV2RKUTBGblNVZGFkbU5wUVc5aE1sWTFZbTFHZEZwVFFuQmlhVUoyV1cxdmRWbHRPV3RsVTJ0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGtiVVp6WkZkVloxQlRRblpaYlc5MVdXMDVhMlZXZEhKYVdHeDFXVmN4YkZoVWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVZHNiVXRGUm5samJVWTFURzFzZWxGWVNubFpXR3R2WkcxR2MyUlhWWEJMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpSMXAyWTJsb01rbEhiSFZKU0Zwb1lraFdiRXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RqYVRWdFlWZFdjMXBEYUhKYVdHeDFXVmN4YkV4RFFqSkxWSFJqWW1sQlowbERRV2RKUTBGblNVTkJaMGxEUVdkbVZuaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloyWldlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5XbGQ0ZWxwVFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkJaMGxJU1hWYWJXeHNZa2RSYjJFeVZqVmliVVowV2xOM1oyUnRSbk5rVjFWd1R6RjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZG1WbmgxU1VOQlowbERRV2RKUTBGblNVZ3hZMkpwUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1VOQloyWldlSFZKUTBGblNVTkJaMXBYZUhwYVUwSndXbWxCYjFoNU5YQmpNRGxwWVcxV2FtUkRhSFpaYlc5MVdXMDVhMlZUYTNCSlNIUmpZbWxCWjBsRFFXZEpRMEZuVEhrNFoySnRPWFZKUnpFeFlraFNjR05IUm5sa1F6bHRZak5LZEV4WFVtaGtSMFpqWW1sQlowbERRV2RKUTBGbllqSktjVXh0U25aYVNHdG5VRk5DUzFVd09VOU1iazR3WTIxc2RWb3liRzFsVTJoMldXMXZkVmx0T1d0bFUyczNXRWMwWjBsRFFXZEpRMEZuU1VoSmRXTXlWblZhUTJoMldXMXZkVmx0T1d0bFUyczNXRWMwWjBsRFFXZEpRMEk1V0VjMFowbERRV2RtVm5oMVNVTkJaMGxIVm5Oak1sVm5aVEY0ZFVsRFFXZEpRMEZuWTJrMWVscFhOV3RMUnpscFlXazFhV0l5VWpWTFZIUmpZbWxCWjBsRFFqbFlSelJuU1VneFkySnNlSFZKUTBJeVdWaEpaMkp0Um5SYVZIUmpZbWxCWjFwdE9YbEpRMmgxV1ZjeGJFbEhiSFZKUjJoc1dWZFNiR051VFhCSlNIUmpZbWxCWjBsRFFubE1iazVzWkVOb2RWbFhNV3hNUTBKdldsZEdhMXBZU25wWE1qVm9ZbGRXWkV0VWRHTmlhVUZuWmxaNGRWaEhOR2RKUjJ4dFMwaFNOV05IVm5aYWFVSjVURzFLTVZwdFdteGphVUU1VUZRd1owb3lXakZpYlU0d1lWYzVkVXA1YTJkbE1YaDFTVU5CWjBsSVNYVlpibFp0V20xV2VVdERhemRKUXpoMlNVZGFkbU50VG14SlNFNHhZMGRXZVZsWFpHeGlibEZuWkVjNFoyTkhPWGRrVjNob1pFZFZaMk50Vm5wTWJsSnNaVWhSWjJReWJEQmhRMEl3WVVkVloyTnRSak5KU0Vwc1l6TkNkbUp1VG14SlIxSm9aRWRHWTJKcFFXZG1WbmgxV0VjMFowbElTWFZhVnpWclMwZGFNV0p0VGpCaFZ6bDFTVU5vYkdOdVNYTkpTRXBzWTNscloyVXhlSFZKUTBGblNVaEtiR041UVRsSlNFcHNZM2xDT0daRFFqZFlSelJuU1VOQlowbERRbnBrUjBZd1pGaE5Oa2xFUVhOWVJ6Um5TVU5CWjBsRFFtOWFWMFpyV2xoS2VrOXBRamRhV0VwNVlqTkpOa2xEWkhWaWVVSjVXbGhPZDJJeU5YcGFVMEp0WTIwNWRFbElUbXhqYmxwc1kybGtPVmhITkdkSlEwRm5abFIwWTJKcFFXZEpRMEl5V1ZoSloyTnRWbnBqUnpsMVl6SlZaMUJUUWpkWVJ6Um5TVU5CWjBsRFFqRmpiWGMyU1VjNWFXRnBOVEZqYlhkeldFYzBaMGxEUVdkSlEwSjBXbGhTYjJJeVVUWkpSemxwWVdrMWRGcFlVbTlpTWxGeldFYzBaMGxEUVdkSlEwSnZXbGRHYTFwWVNucFBhVUo1V2xoTmRXRkhWbWhhUjFaNVl6RjRkVWxEUVdkSlNEQTNXRWMwWjBsRFFXZGtiVVo1U1VkT2FVOHhlSFZZUnpSblNVTkJaMkZYV1dkTFEwWnNZMjVKWjBwcFdXZGpiVlo2VEcxV2VXTnRPWGxMVTBJM1dFYzBaMGxEUVdkSlEwSnNZMjVKWjFCVFFubGFXRTExV2xoS2VXSXpTVGRZUnpSblNVTkJaMlpXZUhWWVJ6Um5TVU5CWjJGWFdXZExSMVo1WTJsQmJVcHBRblpaYlc5MVlqSTBaMHBwV1dkaU1rcHhURzA1ZFV4dFZubGpiVGw1UzFOQ04xaEhOR2RKUTBGblNVTkNlVnBZVG5kaU1qVjZXbE0xYkdOdVNsQlpiVzluVUZOQ2JHTnVTVGRZUnpSblNVTkJaMGxEUW5sYVdFNTNZakkxZWxwVE5YcGtSMFl3WkZoTloxQlRRbmxhV0UxblVIbENlVnBZVFhWak0xSm9aRWhXZWtsRWIyZE9WRUYzVHpGNGRVbERRV2RKUTBGblkyMVdlbU5IT1hWak1sVjFZek5TYUdSSVZucFdSMVkwWkVOQk9VbElTbXhqZVVFdlNVaEtiR041TlRCYVdHZ3dTVVJ2WjFwWVNubE1iVEZzWXpOT2FGb3lWVGRZUnpSblNVTkJaMGxEUW5CYWFVRnZZMjFXZWt4dGFHeFpWMUpzWTI1TlowcHBXV2RqYlZaNlRHMW9iRmxYVW14amJrNWlTakpPZG1KdVVteGlibEYwWkVoc2QxcFRaR1JMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVWRzYlVsRGFIbGFXRTExWVVkV2FGcEhWbmxqTVhOdVdUSTVkV1JIVm5Wa1F6RXdaVmhDYkVveE1IVmhWelZyV2xob1VGcHBaMjVaV0VKM1lrZHNhbGxZVW5CaU1qUjJZVzVPZG1KcFkzQkpSRFE1U1VSQmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwSXdZMjVyWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblkyMVdlbU5IT1hWak1sVjFZakpLY1VsRU1HZFRiRTVRVkdrMWQxbFlTbnBhVTJoNVdsaE9kMkl5TlhwYVV6VjZaRWRHTUdSWVRsVmFXR2d3UzFSMFkySnBRV2RKUTBGblNVTkJaMGxEUWpsWVJ6Um5TVU5CWjBsRFFXZEpRMEZuV1RKR01Ga3laMmRMUjFWd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpTRXBzWXpOQ2RtSnVUbXhNYlRscFlXbEJPVWxITlRGaVIzYzNXRWMwWjBsRFFXZEpRMEZuU1VOQloyWldlSFZKUTBGblNVTkJaMGxEUWpsWVJ6Um5TVU5CWjBsRFFqbFlSelJuU1VOQlowbERRbXBaYVVFNVNVYzVhV0ZwTlhaaWFUVnNZMjVLZG1OcWRHTmlhVUZuU1VOQ09VbEhWbk5qTWxWbllWZFpaMHRJU214amVVRnRTbWxDZGxsdGIzVmlNalJuU21sWloySXlTbkZNYlRsMVRHNUtiR016UW5aaWJrNXNTMU5DTjFoSE5HZEpRMEZuU1VOQ01sbFlTV2RqUnpsNll6SnNhV0pIVmxCWmJXODNXRWMxWTJKcFFXZEpRMEZuU1VNNGRrbEZSbk5qYlZab1draHJaMk5IUm5sak1sWnJTVWRLTlVsSFNqVkpTRTR4WTBkV2VWbFhaR3hpYmxFdldFYzBaMGxEUVdkSlEwSndXbWxCYjJOdFZucE1iVXAyV2toclowcHBXV2RZZVRWeVdsaHNla3RJU214amVUVnBZakpTTlV0VE5YTmFWelZ1WkVkbloxQnBRWGRMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVWhDZG1NelRuQlpiWGhzVkRKS2NVbEVNR2RqYlZaNlRHMUtkbHBJYXpkWVJ6Um5TVU5CWjBsRFFqbEpSMVp6WXpKVloyVXhlSFZKUTBGblNVTkJaMGxEUWpCamJtdG5aVEY0ZFVsRFFXZEpRMEZuU1VOQlowbElRblpqTTA1d1dXMTRiRlF5U25GSlJEQm5ZVzVPTlZsWE1YTk1iazVvV20xV1RXSXlSbXRMU0Vwc1kzazFNRnBZYURCTFZIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQmRreDVRbXBaVnpSblkwZEdlV015VldkaFZ6VXdZbmxDYUVsSVRqQmpiV3gxV25rMGRVeHBRak5oUjJ4cVlVTkNNMXBUUW10aU1qUnVaRU5DZFZwWFZtdEpTRW94WW0wMWNHSnRZMmRaV0VwMlpGYzFhMGxIYkhWSlNGSnZXbE5DZW1WWVRqQmFWekZqWW1sQlowbERRV2RKUTBGblNVTkNkMkl6VG5waFYwcHpXbFU1YVdGcFFUbEpRMmd3WlZoQ2JHSXlXV2RqUnpsNll6SnNhV0pIVmxCWmJXOW5VRlF3T1VsRFpIcGtTRXB3WW0xamJrdFRRUzlKUnpVeFlrZDNaMDlwUW5kaU0wNTZZVmRLYzFwVk9XbGhhblJqWW1sQlowbERRV2RKUTBGblpsTkNhbGxZVW1waFEwRnZXbE5yWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUjJoc1lraENiR051VFhWaVJ6bHVTME5rYWxsWE5YVmlNMUZuWTBkR2VXTXlWV2RUYkU1UVZHazVXbEZWTVUxSlIwNTJZbTVTYkdKdVVXNUxWSFJqWW1sQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5abFo0ZFZoSE5HZEpRMEZuU1VOQmRreDVRblZrVjNoelNVY3hiRmxYTlhwSlNHUnNTVWRPYUdKcFpEQkpTRUpvWTI1T2JFbEhiSFZrUnpobllqSktjVnBYVGpCWVJ6Um5TVU5CWjBsRFFuQmFhV2d3WlZoQ2JHSXlXV2RSYmxadFdtMVdlVWxFTURsUVUwRnVXbTVXZFZrelVuQmlNalJ1U1VOWmJVbEZTakZhYlZwc1kyazFjR013U2pGYWJWcHNZMmxvZDJJelRucGhWMHB6V2xVNWFXRnBhM0JKU0hSalltbEJaMGxEUVdkSlEwRm5ZMjFXZW1OSE9YVmpNbFYxV2tkR01GbFRRVGxKU0VKMll6Tk9jRmx0ZUd4VU1rcHhUekY0ZFVsRFFXZEpRMEZuWmxaNGRVbERRV2RKUTBGbldsZDRlbHBUUWpkWVJ6Um5TVU5CWjBsRFFXZEpTRXBzWXpOQ2RtSnVUbXhNYlRscFlXbEJPVWxEYURCbFdFSnNZakpaWjJOSE9YcGpNbXhwWWtkV1VGbHRiMmRRVkRBNVNVTmtkbGx0Y0d4Wk0xRnVTMU5CTDBsSVFuWmpNMDV3V1cxNGJGUXlTbkZKUkc5blltNVdjMkpFZEdOaWFVRm5TVU5CWjBsSU1XTmliSGgxU1VOQlowbERRV2RqYlZaNlkwYzVkV015VlhWak0xSm9aRWhXZWtsRU1HZGpiVlo2VEc1T01GbFlVakZqZW5SalltbEJaMGxEUVdkSlNFcHNZek5DZG1KdVRteE1iazR3V1ZoU01XTXhVbXhsU0ZGblVGTkNlVnBZVFhWa1IxWTBaRVIwWTJKcFFXZEpRMEZuU1VkT2FVbEVNR2RpTWtweFRHMDVkVXh1U214ak0wSjJZbTVPYkU4eGVIVkpRMEZuU1VneFkySnBRV2RKUTBKd1dtbEJiMk50Vm5wTWJtaHZZMmxCYlVwcFFubGFXRTExWlVkb2VVeHVTbXhqTTBKMlltNU9iRXRUUWpkWVJ6Um5TVU5CWjBsRFFubGFXRTUzWWpJMWVscFROV3RaV0ZKb1NVUXdaMk50Vm5wTWJtaHZZMmsxZVZwWVRuZGlNalY2V2xSMFkySnBRV2RKUTBJNVdFYzBaMGxEUVdkYVYzaDZXbE5DY0ZwcFoyaGpiVlo2WTBjNWRXTXlWWFZhUjBZd1dWTnJaMlV4ZUhWSlEwRm5TVU5CWjJOdFZucGpSemwxWXpKVmRWcEhSakJaVTBFNVNVaEtiR016UW5aaWJrNXNURzVPTUZsWVVqRmpNVkpzWlVoUk4xaEhOR2RKUTBGblpsWjRkVmhITkdkSlEwRm5ZVmRaWjB0SFRtbExVMEkzV0VjMFowbERRV2RKUTBKcVdXbG9lVnBZVG5kaU1qVjZXbE5yTjFoSE5HZEpRMEZuWmxaNGRVbERRamxMVkhSalltNHdOMWhITldOaWJFNHhZMGRXZVZsWFpHeGlibEpKWkVoU2QxRXllSEJhVnpVd1RHNUNlV0l6VW5aa1NHeDNXbE0wWjFsdGJIVlpXRW8xVlcxV2VHUlhWbnBrUTBFNVNVZGFNV0p0VGpCaFZ6bDFTVU5vYUZreVRteGpTRkZ3U1VoMFkySnBRV2RoVjFsdlNWZEdhbGt5Vm5ka1EydG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRbTFaVjNoNldsUjBZMkpwUVdkbVZuaDFTVU5DZVZwWVVqRmpiVFJuUzBNNVpXRlhNV2hhTWxWMllWTnJkV1JIVm5wa1EyaG9XVEpPYkdOSVVYQllSelJuU1VOQloyWklkMmRMUXpsbFdWaENkMkpIYkdwWldGSndZakkxWTFoRE9YZGFSMWwyUzFNMU1GcFlUakJMUjBacVdUSldkMlJEYkdOaWFVRm5TVU5DT0daRFFXOU1NVFZvWTBoQ2MyRlhUbWhrUjJ4MllteDRZMHd5T1dwa1IxWXdURmhPTUdOdFZtaGlVemh3VEc1U2JHTXpVVzlaVjA1cVdsaENNRXRVZEdOaWJqQTNXRWMwYVZoWU1EMGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCVGQyRm5aMlZ5U0hSMGNDQTlJSEpsY1hWcGNtVW9KeTR2YUhSMGNDY3BPMXh1ZG1GeUlGOGdQU0I3WEc0Z0lHbHpUMkpxWldOME9pQnlaWEYxYVhKbEtDZHNiMlJoYzJndFkyOXRjR0YwTDJ4aGJtY3ZhWE5QWW1wbFkzUW5LU3hjYmlBZ1kyeHZibVZFWldWd09pQnlaWEYxYVhKbEtDZHNiMlJoYzJndFkyOXRjR0YwTDJ4aGJtY3ZZMnh2Ym1WRVpXVndKeWtzWEc0Z0lHbHpRWEp5WVhrNklISmxjWFZwY21Vb0oyeHZaR0Z6YUMxamIyMXdZWFF2YkdGdVp5OXBjMEZ5Y21GNUp5a3NYRzRnSUdselUzUnlhVzVuT2lCeVpYRjFhWEpsS0Nkc2IyUmhjMmd0WTI5dGNHRjBMMnhoYm1jdmFYTlRkSEpwYm1jbktWeHVmVHRjYmx4dVhHNHZLaXBjYmlBcUlGSmxjMjlzZG1WeklHRWdjM0JsWXlkeklISmxiVzkwWlNCeVpXWmxjbVZ1WTJWelhHNGdLaTljYm5aaGNpQlNaWE52YkhabGNpQTlJRzF2WkhWc1pTNWxlSEJ2Y25SeklEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQjBhR2x6TG1aaGFXeGxaRlZ5YkhNZ1BTQmJYVHRjYmlBZ2RHaHBjeTV5WlhOdmJIWmxja05oWTJobElEMGdlMzA3WEc0Z0lIUm9hWE11Y0dWdVpHbHVaMVZ5YkhNZ1BTQjdmVHRjYm4wN1hHNWNibEpsYzI5c2RtVnlMbkJ5YjNSdmRIbHdaUzV3Y205alpYTnpRV3hzVDJZZ1BTQm1kVzVqZEdsdmJpaHliMjkwTENCdVlXMWxMQ0JrWldacGJtbDBhVzl1TENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0J6Y0dWaktTQjdYRzRnSUhaaGNpQnBMQ0JzYjJOaGRHbHZiaXdnY0hKdmNHVnlkSGs3WEc1Y2JpQWdaR1ZtYVc1cGRHbHZibHNuZUMxeVpYTnZiSFpsWkMxbWNtOXRKMTBnUFNCYklDY2pMMlJsWm1sdWFYUnBiMjV6THljZ0t5QnVZVzFsSUYwN1hHNGdJSFpoY2lCaGJHeFBaaUE5SUdSbFptbHVhWFJwYjI0dVlXeHNUMlk3WEc0Z0lDOHZJSFJvWlNCeVpXWnpJR2R2SUdacGNuTjBYRzRnSUdGc2JFOW1Mbk52Y25Rb1puVnVZM1JwYjI0b1lTd2dZaWtnZTF4dUlDQWdJR2xtS0dFdUpISmxaaUFtSmlCaUxpUnlaV1lwSUhzZ2NtVjBkWEp1SURBN0lIMWNiaUFnSUNCbGJITmxJR2xtS0dFdUpISmxaaWtnZXlCeVpYUjFjbTRnTFRFN0lIMWNiaUFnSUNCbGJITmxJSHNnY21WMGRYSnVJREU3SUgxY2JpQWdmU2s3WEc0Z0lHWnZjaUFvYVNBOUlEQTdJR2tnUENCaGJHeFBaaTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUhCeWIzQmxjblI1SUQwZ1lXeHNUMlpiYVYwN1hHNGdJQ0FnYkc5allYUnBiMjRnUFNBbkwyUmxabWx1YVhScGIyNXpMeWNnS3lCdVlXMWxJQ3NnSnk5aGJHeFBaaWM3WEc0Z0lDQWdkR2hwY3k1eVpYTnZiSFpsU1c1c2FXNWxLSEp2YjNRc0lITndaV01zSUhCeWIzQmxjblI1TENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0JzYjJOaGRHbHZiaWs3WEc0Z0lIMWNibjA3WEc1Y2JsSmxjMjlzZG1WeUxuQnliM1J2ZEhsd1pTNXlaWE52YkhabElEMGdablZ1WTNScGIyNGdLSE53WldNc0lHRnlaekVzSUdGeVp6SXNJR0Z5WnpNcElIdGNiaUFnZEdocGN5NXpjR1ZqSUQwZ2MzQmxZenRjYmlBZ2RtRnlJSEp2YjNRZ1BTQmhjbWN4TENCallXeHNZbUZqYXlBOUlHRnlaeklzSUhOamIzQmxJRDBnWVhKbk15d2diM0IwY3lBOUlIdDlMQ0JzYjJOaGRHbHZiaXdnYVR0Y2JpQWdhV1lvZEhsd1pXOW1JR0Z5WnpFZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0J5YjI5MElEMGdiblZzYkR0Y2JpQWdJQ0JqWVd4c1ltRmpheUE5SUdGeVp6RTdYRzRnSUNBZ2MyTnZjR1VnUFNCaGNtY3lPMXh1SUNCOVhHNGdJSFpoY2lCZmNtOXZkQ0E5SUhKdmIzUXNJRzF2WkdWc1RtRnRaVHRjYmlBZ2RHaHBjeTV6WTI5d1pTQTlJQ2h6WTI5d1pTQjhmQ0IwYUdsektUdGNiaUFnZEdocGN5NXBkR1Z5WVhScGIyNGdQU0IwYUdsekxtbDBaWEpoZEdsdmJpQjhmQ0F3TzF4dVhHNGdJR2xtS0hSb2FYTXVjMk52Y0dVdWIzQjBhVzl1Y3lBbUppQjBhR2x6TG5OamIzQmxMbTl3ZEdsdmJuTXVjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlLWHRjYmlBZ0lDQnZjSFJ6TG5KbGNYVmxjM1JKYm5SbGNtTmxjSFJ2Y2lBOUlIUm9hWE11YzJOdmNHVXViM0IwYVc5dWN5NXlaWEYxWlhOMFNXNTBaWEpqWlhCMGIzSTdYRzRnSUgxY2JseHVJQ0JwWmloMGFHbHpMbk5qYjNCbExtOXdkR2x2Ym5NZ0ppWWdkR2hwY3k1elkyOXdaUzV2Y0hScGIyNXpMbkpsYzNCdmJuTmxTVzUwWlhKalpYQjBiM0lwZTF4dUlDQWdJRzl3ZEhNdWNtVnpjRzl1YzJWSmJuUmxjbU5sY0hSdmNpQTlJSFJvYVhNdWMyTnZjR1V1YjNCMGFXOXVjeTV5WlhOd2IyNXpaVWx1ZEdWeVkyVndkRzl5TzF4dUlDQjlYRzVjYmlBZ2RtRnlJRzVoYldVc0lIQmhkR2dzSUhCeWIzQmxjblI1TENCd2NtOXdaWEowZVU1aGJXVXNJSEJoY21GdFpYUmxjaXdnWkc5dVpTd2dZMjkxYm5SbGNqdGNiaUFnZG1GeUlIQnliMk5sYzNObFpFTmhiR3h6SUQwZ01Dd2djbVZ6YjJ4MlpXUlNaV1p6SUQwZ2UzMHNJSFZ1Y21WemIyeDJaV1JTWldaeklEMGdlMzA3WEc0Z0lIWmhjaUJ5WlhOdmJIVjBhVzl1VkdGaWJHVWdQU0JiWFRzZ0x5OGdjM1J2Y21VZ2IySnFaV04wY3lCbWIzSWdaR1Z5WldabGNtVnVZMmx1WjF4dVhHNGdJSE53WldNdVpHVm1hVzVwZEdsdmJuTWdQU0J6Y0dWakxtUmxabWx1YVhScGIyNXpJSHg4SUh0OU8xeHVJQ0F2THlCa1pXWnBibWwwYVc5dWMxeHVJQ0JtYjNJZ0tHNWhiV1VnYVc0Z2MzQmxZeTVrWldacGJtbDBhVzl1Y3lrZ2UxeHVJQ0FnSUhaaGNpQmtaV1pwYm1sMGFXOXVJRDBnYzNCbFl5NWtaV1pwYm1sMGFXOXVjMXR1WVcxbFhUdGNiaUFnSUNCcFppaGtaV1pwYm1sMGFXOXVMaVJ5WldZcElIdGNiaUFnSUNBZ0lIUm9hWE11Y21WemIyeDJaVWx1YkdsdVpTaHliMjkwTENCemNHVmpMQ0JrWldacGJtbDBhVzl1TENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0JrWldacGJtbDBhVzl1S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNCbWIzSWdLSEJ5YjNCbGNuUjVUbUZ0WlNCcGJpQmtaV1pwYm1sMGFXOXVMbkJ5YjNCbGNuUnBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ2NISnZjR1Z5ZEhrZ1BTQmtaV1pwYm1sMGFXOXVMbkJ5YjNCbGNuUnBaWE5iY0hKdmNHVnlkSGxPWVcxbFhUdGNiaUFnSUNBZ0lDQWdhV1lnS0Y4dWFYTkJjbkpoZVNod2NtOXdaWEowZVM1aGJHeFBaaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG5CeWIyTmxjM05CYkd4UFppaHliMjkwTENCdVlXMWxMQ0J3Y205d1pYSjBlU3dnY21WemIyeDFkR2x2YmxSaFlteGxMQ0IxYm5KbGMyOXNkbVZrVW1WbWN5d2djM0JsWXlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1eVpYTnZiSFpsVkc4b2NtOXZkQ3dnY0hKdmNHVnlkSGtzSUhKbGMyOXNkWFJwYjI1VVlXSnNaU3dnSnk5a1pXWnBibWwwYVc5dWN5Y3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaGtaV1pwYm1sMGFXOXVMbUZzYkU5bUtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNISnZZMlZ6YzBGc2JFOW1LSEp2YjNRc0lHNWhiV1VzSUdSbFptbHVhWFJwYjI0c0lISmxjMjlzZFhScGIyNVVZV0pzWlN3Z2RXNXlaWE52YkhabFpGSmxabk1zSUhOd1pXTXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUhOb1lYSmxaQ0J3WVhKaGJXVjBaWEp6WEc0Z0lITndaV011Y0dGeVlXMWxkR1Z5Y3lBOUlITndaV011Y0dGeVlXMWxkR1Z5Y3lCOGZDQjdmVHRjYmlBZ1ptOXlLRzVoYldVZ2FXNGdjM0JsWXk1d1lYSmhiV1YwWlhKektTQjdYRzRnSUNBZ2NHRnlZVzFsZEdWeUlEMGdjM0JsWXk1d1lYSmhiV1YwWlhKelcyNWhiV1ZkTzF4dUlDQWdJR2xtSUNod1lYSmhiV1YwWlhJdWFXNGdQVDA5SUNkaWIyUjVKeUFtSmlCd1lYSmhiV1YwWlhJdWMyTm9aVzFoS1NCN1hHNGdJQ0FnSUNCcFppaGZMbWx6UVhKeVlYa29jR0Z5WVcxbGRHVnlMbk5qYUdWdFlTNWhiR3hQWmlrcElIdGNiaUFnSUNBZ0lDQWdMeThnYlc5MlpTQjBieUJoSUdSbFptbHVhWFJwYjI1Y2JpQWdJQ0FnSUNBZ2JXOWtaV3hPWVcxbElEMGdKMmx1YkdsdVpWOXRiMlJsYkNjN1hHNGdJQ0FnSUNBZ0lIWmhjaUJmYm1GdFpTQTlJRzF2WkdWc1RtRnRaVHRjYmlBZ0lDQWdJQ0FnWkc5dVpTQTlJR1poYkhObE95QmpiM1Z1ZEdWeUlEMGdNRHRjYmlBZ0lDQWdJQ0FnZDJocGJHVW9JV1J2Ym1VcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmloMGVYQmxiMllnYzNCbFl5NWtaV1pwYm1sMGFXOXVjMXRmYm1GdFpWMGdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2IyNWxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQmZibUZ0WlNBOUlHMXZaR1ZzVG1GdFpTQXJJQ2RmSnlBcklHTnZkVzUwWlhJN1hHNGdJQ0FnSUNBZ0lDQWdZMjkxYm5SbGNpQXJLenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCemNHVmpMbVJsWm1sdWFYUnBiMjV6VzE5dVlXMWxYU0E5SUhzZ1lXeHNUMlk2SUhCaGNtRnRaWFJsY2k1elkyaGxiV0V1WVd4c1QyWWdmVHRjYmlBZ0lDQWdJQ0FnWkdWc1pYUmxJSEJoY21GdFpYUmxjaTV6WTJobGJXRXVZV3hzVDJZN1hHNGdJQ0FnSUNBZ0lIQmhjbUZ0WlhSbGNpNXpZMmhsYldFdUpISmxaaUE5SUNjakwyUmxabWx1YVhScGIyNXpMeWNnS3lCZmJtRnRaVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdjbTlqWlhOelFXeHNUMllvY205dmRDd2dYMjVoYldVc0lITndaV011WkdWbWFXNXBkR2x2Ym5OYlgyNWhiV1ZkTENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0J6Y0dWaktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbkpsYzI5c2RtVlVieWh5YjI5MExDQndZWEpoYldWMFpYSXVjMk5vWlcxaExDQnlaWE52YkhWMGFXOXVWR0ZpYkdVc0lHeHZZMkYwYVc5dUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jR0Z5WVcxbGRHVnlMaVJ5WldZcElIdGNiaUFnSUNBZ0lDOHZJSEJoY21GdFpYUmxjaUJ5WldabGNtVnVZMlZjYmlBZ0lDQWdJSFJvYVhNdWNtVnpiMngyWlVsdWJHbHVaU2h5YjI5MExDQnpjR1ZqTENCd1lYSmhiV1YwWlhJc0lISmxjMjlzZFhScGIyNVVZV0pzWlN3Z2RXNXlaWE52YkhabFpGSmxabk1zSUhCaGNtRnRaWFJsY2k0a2NtVm1LVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2THlCdmNHVnlZWFJwYjI1elhHNGdJR1p2Y2lBb2JtRnRaU0JwYmlCemNHVmpMbkJoZEdoektTQjdYRzRnSUNBZ2RtRnlJRzFsZEdodlpDd2diM0JsY21GMGFXOXVMQ0J5WlhOd2IyNXpaVU52WkdVN1hHNGdJQ0FnY0dGMGFDQTlJSE53WldNdWNHRjBhSE5iYm1GdFpWMDdYRzVjYmlBZ0lDQnBaaWgwZVhCbGIyWWdjR0YwYUNBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JXVjBhRzlrSUdsdUlIQmhkR2dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdiM0JsY21GMGFXOXVJSEpsWm1WeVpXNWpaVnh1SUNBZ0lDQWdJQ0JwWmlBb2JXVjBhRzlrSUQwOVBTQW5KSEpsWmljcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCc2IyTmhkR2x2YmlBOUlIQmhkR2hiYldWMGFHOWtYVHRjYmlBZ0lDQWdJQ0FnSUNCc2IyTmhkR2x2YmlBOUlDY3ZjR0YwYUhNbklDc2dibUZ0WlR0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG5KbGMyOXNkbVZKYm14cGJtVW9jbTl2ZEN3Z2MzQmxZeXdnY0dGMGFDd2djbVZ6YjJ4MWRHbHZibFJoWW14bExDQjFibkpsYzI5c2RtVmtVbVZtY3l3Z2JHOWpZWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZiaUE5SUhCaGRHaGJiV1YwYUc5a1hUdGNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ2MyaGhjbVZrVUdGeVlXMWxkR1Z5Y3lBOUlIQmhkR2d1Y0dGeVlXMWxkR1Z5Y3lCOGZDQmJYVHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdjR0Z5WVcxbGRHVnljeUE5SUc5d1pYSmhkR2x2Ymk1d1lYSmhiV1YwWlhKeklIeDhJRnRkTzF4dVhHNGdJQ0FnSUNBZ0lDQWdjMmhoY21Wa1VHRnlZVzFsZEdWeWN5NW1iM0pGWVdOb0tHWjFibU4wYVc5dUtIQmhjbUZ0WlhSbGNpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NHRnlZVzFsZEdWeWN5NTFibk5vYVdaMEtIQmhjbUZ0WlhSbGNpazdYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2JXVjBhRzlrSUNFOVBTQW5jR0Z5WVcxbGRHVnljeWNnSmlZZ1h5NXBjMDlpYW1WamRDaHZjR1Z5WVhScGIyNHBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnZjR1Z5WVhScGIyNHVjR0Z5WVcxbGRHVnljeUE5SUc5d1pYSmhkR2x2Ymk1d1lYSmhiV1YwWlhKeklIeDhJSEJoY21GdFpYUmxjbk03WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnWm05eUlDaHBJR2x1SUhCaGNtRnRaWFJsY25NcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCaGNtRnRaWFJsY2lBOUlIQmhjbUZ0WlhSbGNuTmJhVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNiMk5oZEdsdmJpQTlJQ2N2Y0dGMGFITW5JQ3NnYm1GdFpTQXJJQ2N2SnlBcklHMWxkR2h2WkNBcklDY3ZjR0Z5WVcxbGRHVnljeWM3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNod1lYSmhiV1YwWlhJdWFXNGdQVDA5SUNkaWIyUjVKeUFtSmlCd1lYSmhiV1YwWlhJdWMyTm9aVzFoS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGZMbWx6UVhKeVlYa29jR0Z5WVcxbGRHVnlMbk5qYUdWdFlTNWhiR3hQWmlrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJ0YjNabElIUnZJR0VnWkdWbWFXNXBkR2x2Ymx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxdlpHVnNUbUZ0WlNBOUlDZHBibXhwYm1WZmJXOWtaV3duTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1aGJXVWdQU0J0YjJSbGJFNWhiV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkc5dVpTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZkVzUwWlhJZ1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDZ2haRzl1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ6Y0dWakxtUmxabWx1YVhScGIyNXpXMjVoYldWZElEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WVcxbElEMGdiVzlrWld4T1lXMWxJQ3NnSjE4bklDc2dZMjkxYm5SbGNqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052ZFc1MFpYSXJLenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNCbFl5NWtaV1pwYm1sMGFXOXVjMXR1WVcxbFhTQTlJSHRoYkd4UFpqb2djR0Z5WVcxbGRHVnlMbk5qYUdWdFlTNWhiR3hQWm4wN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnNaWFJsSUhCaGNtRnRaWFJsY2k1elkyaGxiV0V1WVd4c1QyWTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjR0Z5WVcxbGRHVnlMbk5qYUdWdFlTNGtjbVZtSUQwZ0p5TXZaR1ZtYVc1cGRHbHZibk12SnlBcklHNWhiV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXdjbTlqWlhOelFXeHNUMllvY205dmRDd2dibUZ0WlN3Z2MzQmxZeTVrWldacGJtbDBhVzl1YzF0dVlXMWxYU3dnY21WemIyeDFkR2x2YmxSaFlteGxMQ0IxYm5KbGMyOXNkbVZrVW1WbWN5d2djM0JsWXlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1eVpYTnZiSFpsVkc4b2NtOXZkQ3dnY0dGeVlXMWxkR1Z5TG5OamFHVnRZU3dnY21WemIyeDFkR2x2YmxSaFlteGxMQ0JzYjJOaGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEJoY21GdFpYUmxjaTRrY21WbUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJSEJoY21GdFpYUmxjaUJ5WldabGNtVnVZMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1eVpYTnZiSFpsU1c1c2FXNWxLSEp2YjNRc0lITndaV01zSUhCaGNtRnRaWFJsY2l3Z2NtVnpiMngxZEdsdmJsUmhZbXhsTENCMWJuSmxjMjlzZG1Wa1VtVm1jeXdnY0dGeVlXMWxkR1Z5TGlSeVpXWXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lHWnZjaUFvY21WemNHOXVjMlZEYjJSbElHbHVJRzl3WlhKaGRHbHZiaTV5WlhOd2IyNXpaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpYTndiMjV6WlNBOUlHOXdaWEpoZEdsdmJpNXlaWE53YjI1elpYTmJjbVZ6Y0c5dWMyVkRiMlJsWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h2WTJGMGFXOXVJRDBnSnk5d1lYUm9jeWNnS3lCdVlXMWxJQ3NnSnk4bklDc2diV1YwYUc5a0lDc2dKeTl5WlhOd2IyNXpaWE12SnlBcklISmxjM0J2Ym5ObFEyOWtaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0Y4dWFYTlBZbXBsWTNRb2NtVnpjRzl1YzJVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5WlhOd2IyNXpaUzRrY21WbUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnY21WemNHOXVjMlVnY21WbVpYSmxibU5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXlaWE52YkhabFNXNXNhVzVsS0hKdmIzUXNJSE53WldNc0lISmxjM0J2Ym5ObExDQnlaWE52YkhWMGFXOXVWR0ZpYkdVc0lIVnVjbVZ6YjJ4MlpXUlNaV1p6TENCc2IyTmhkR2x2YmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM0J2Ym5ObExuTmphR1Z0WVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ5WlhOd2IyNXpaVTlpYWlBOUlISmxjM0J2Ym5ObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hmTG1selFYSnlZWGtvY21WemNHOXVjMlZQWW1vdWMyTm9aVzFoTG1Gc2JFOW1LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiVzkyWlNCMGJ5QmhJR1JsWm1sdWFYUnBiMjVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxdlpHVnNUbUZ0WlNBOUlDZHBibXhwYm1WZmJXOWtaV3duTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JtRnRaU0E5SUcxdlpHVnNUbUZ0WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUnZibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmRXNTBaWElnUFNBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tDRmtiMjVsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYzNCbFl5NWtaV1pwYm1sMGFXOXVjMXR1WVcxbFhTQTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2IyNWxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WVcxbElEMGdiVzlrWld4T1lXMWxJQ3NnSjE4bklDc2dZMjkxYm5SbGNqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5MWJuUmxjaXNyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM0JsWXk1a1pXWnBibWwwYVc5dWMxdHVZVzFsWFNBOUlIdGhiR3hQWmpvZ2NtVnpjRzl1YzJWUFltb3VjMk5vWlcxaExtRnNiRTltZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxiR1YwWlNCeVpYTndiMjV6WlU5aWFpNXpZMmhsYldFdVlXeHNUMlk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXeGxkR1VnY21WemNHOXVjMlZQWW1vdWMyTm9aVzFoTG5SNWNHVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhOd2IyNXpaVTlpYWk1elkyaGxiV0V1SkhKbFppQTlJQ2NqTDJSbFptbHVhWFJwYjI1ekx5Y2dLeUJ1WVcxbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1d2NtOWpaWE56UVd4c1QyWW9jbTl2ZEN3Z2JtRnRaU3dnYzNCbFl5NWtaV1pwYm1sMGFXOXVjMXR1WVcxbFhTd2djbVZ6YjJ4MWRHbHZibFJoWW14bExDQjFibkpsYzI5c2RtVmtVbVZtY3l3Z2MzQmxZeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0NkaGNuSmhlU2NnUFQwOUlISmxjM0J2Ym5ObFQySnFMbk5qYUdWdFlTNTBlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemNHOXVjMlZQWW1vdWMyTm9aVzFoTG1sMFpXMXpJQ1ltSUhKbGMzQnZibk5sVDJKcUxuTmphR1Z0WVM1cGRHVnRjeTRrY21WbUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklISmxjM0J2Ym5ObElISmxabVZ5Wlc1alpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuSmxjMjlzZG1WSmJteHBibVVvY205dmRDd2djM0JsWXl3Z2NtVnpjRzl1YzJWUFltb3VjMk5vWlcxaExtbDBaVzF6TENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0JzYjJOaGRHbHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV5WlhOdmJIWmxWRzhvY205dmRDd2djbVZ6Y0c5dWMyVXVjMk5vWlcxaExDQnlaWE52YkhWMGFXOXVWR0ZpYkdVc0lHeHZZMkYwYVc5dUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQzh2SUdOc1pXRnlJSFJvWlcwZ2IzVjBJSFJ2SUdGMmIybGtJRzExYkhScGNHeGxJSEpsYzI5c2RYUnBiMjV6WEc0Z0lDQWdJQ0J3WVhSb0xuQmhjbUZ0WlhSbGNuTWdQU0JiWFR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCMllYSWdaWGh3WldOMFpXUkRZV3hzY3lBOUlEQXNJSFJ2VW1WemIyeDJaU0E5SUZ0ZE8xeHVJQ0F2THlCcFppQjBhR1VnY205dmRDQnBjeUJ6WVcxbElHRnpJRzlpYWx0cFhTNXliMjkwSUhkbElHTmhiaUJ5WlhOdmJIWmxJR3h2WTJGc2JIbGNiaUFnZG1GeUlHRnNiQ0E5SUhKbGMyOXNkWFJwYjI1VVlXSnNaVHRjYmx4dUlDQjJZWElnY0dGeWRITTdYRzRnSUdadmNpaHBJRDBnTURzZ2FTQThJR0ZzYkM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lIWmhjaUJoSUQwZ1lXeHNXMmxkTzF4dUlDQWdJR2xtS0hKdmIzUWdQVDA5SUdFdWNtOXZkQ2tnZTF4dUlDQWdJQ0FnYVdZb1lTNXlaWE52YkhabFFYTWdQVDA5SUNkeVpXWW5LU0I3WEc0Z0lDQWdJQ0FnSUM4dklISmxjMjlzZG1VZ1lXNTVJSEJoZEdnZ2QyRnNhMmx1WjF4dUlDQWdJQ0FnSUNCMllYSWdhbTlwYm1Wa0lEMGdLQ2hoTG5KdmIzUWdmSHdnSnljcElDc2dKeThuSUNzZ1lTNXJaWGtwTG5Od2JHbDBLQ2N2SnlrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ1YjNKdFlXeHBlbVZrSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJSFpoY2lCMWNtd2dQU0FuSnp0Y2JpQWdJQ0FnSUNBZ2RtRnlJR3M3WEc1Y2JpQWdJQ0FnSUNBZ2FXWW9ZUzVyWlhrdWFXNWtaWGhQWmlnbkxpNHZKeWtnUGowZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdadmNpaDJZWElnYWlBOUlEQTdJR29nUENCcWIybHVaV1F1YkdWdVozUm9PeUJxS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUtHcHZhVzVsWkZ0cVhTQTlQVDBnSnk0dUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnViM0p0WVd4cGVtVmtJRDBnYm05eWJXRnNhWHBsWkM1emJHbGpaU2d3TENCdWIzSnRZV3hwZW1Wa0xteGxibWQwYUMweEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCdWIzSnRZV3hwZW1Wa0xuQjFjMmdvYW05cGJtVmtXMnBkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdabTl5S0dzZ1BTQXdPeUJySUR3Z2JtOXliV0ZzYVhwbFpDNXNaVzVuZEdnN0lHc2dLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtS0dzZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSFZ5YkNBclBTQW5MeWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCMWNtd2dLejBnYm05eWJXRnNhWHBsWkZ0clhUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdkMlVnYm05M0lHaGhkbVVnZEc4Z2NtVnRiM1JsSUhKbGMyOXNkbVVnZEdocGN5QmlaV05oZFhObElIUm9aU0J3WVhSb0lHaGhjeUJqYUdGdVoyVmtYRzRnSUNBZ0lDQWdJQ0FnWVM1eWIyOTBJRDBnZFhKc08xeHVJQ0FnSUNBZ0lDQWdJSFJ2VW1WemIyeDJaUzV3ZFhOb0tHRXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhCaGNuUnpJRDBnWVM1clpYa3VjM0JzYVhRb0p5TW5LVHRjYmlBZ0lDQWdJQ0FnSUNCcFppaHdZWEowY3k1c1pXNW5kR2dnUFQwOUlESXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1LSEJoY25Seld6QmRMbWx1WkdWNFQyWW9KMmgwZEhBNkp5a2dQVDA5SURBZ2ZId2djR0Z5ZEhOYk1GMHVhVzVrWlhoUFppZ25hSFIwY0hNNkp5a2dQVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1lTNXliMjkwSUQwZ2NHRnlkSE5iTUYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNiMk5oZEdsdmJpQTlJSEJoY25Seld6RmRMbk53YkdsMEtDY3ZKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnY2p0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeklEMGdjM0JsWXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2locklEMGdNRHNnYXlBOElHeHZZMkYwYVc5dUxteGxibWQwYURzZ2F5c3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCd1lYSjBJRDBnYkc5allYUnBiMjViYTEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtIQmhjblFnSVQwOUlDY25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY3lBOUlITmJjR0Z5ZEYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9kSGx3Wlc5bUlITWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5SUQwZ2N6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvY2lBOVBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QnRkWE4wSUhKbGMyOXNkbVVnZEdocGN5QjBiMjljYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkRzlTWlhOdmJIWmxMbkIxYzJnb1lTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dFdWNtVnpiMngyWlVGeklEMDlQU0FuYVc1c2FXNWxKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1LR0V1YTJWNUlDWW1JR0V1YTJWNUxtbHVaR1Y0VDJZb0p5TW5LU0E5UFQwZ0xURWdKaVlnWVM1clpYa3VZMmhoY2tGMEtEQXBJQ0U5UFNBbkx5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR2hoYm1Sc1pTQnlaV3hoZEdsMlpTQnpZMmhsYldGY2JpQWdJQ0FnSUNBZ0lDQWdJSEJoY25SeklEMGdZUzV5YjI5MExuTndiR2wwS0Njdkp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2IyTmhkR2x2YmlBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlLR2tnUFNBd095QnBJRHdnY0dGeWRITXViR1Z1WjNSb0lDMGdNVHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHZZMkYwYVc5dUlDczlJSEJoY25SelcybGRJQ3NnSnk4bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdiRzlqWVhScGIyNGdLejBnWVM1clpYazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaExuSnZiM1FnUFNCc2IyTmhkR2x2Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0V1Ykc5allYUnBiMjRnUFNBbkp6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2RHOVNaWE52YkhabExuQjFjMmdvWVNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQjBiMUpsYzI5c2RtVXVjSFZ6YUNoaEtUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ1pYaHdaV04wWldSRFlXeHNjeUE5SUhSdlVtVnpiMngyWlM1c1pXNW5kR2c3WEc1Y2JpQWdMeThnY21WemIyeDJaU0JoYm5sMGFHbHVaeUIwYUdGMElHbHpJR3h2WTJGc1hHNWNiaUFnZG1GeUlHeHZZMnNnUFNCN2ZUdGNiaUFnWm05eUtIWmhjaUJwYVNBOUlEQTdJR2xwSUR3Z2RHOVNaWE52YkhabExteGxibWQwYURzZ2FXa3JLeWtnZTF4dUlDQWdJQ2htZFc1amRHbHZiaWhwZEdWdExDQnpjR1ZqTENCelpXeG1MQ0JzYjJOckxDQnBhU2tnZTF4dUlDQWdJQ0FnYVdZb0lXbDBaVzB1Y205dmRDQjhmQ0JwZEdWdExuSnZiM1FnUFQwOUlISnZiM1FwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdiRzlqWVd3Z2NtVnpiMngyWlZ4dUlDQWdJQ0FnSUNCelpXeG1MbkpsYzI5c2RtVkpkR1Z0S0hOd1pXTXNJRjl5YjI5MExDQnlaWE52YkhWMGFXOXVWR0ZpYkdVc0lISmxjMjlzZG1Wa1VtVm1jeXdnZFc1eVpYTnZiSFpsWkZKbFpuTXNJR2wwWlcwcE8xeHVJQ0FnSUNBZ0lDQndjbTlqWlhOelpXUkRZV3hzY3lBclBTQXhPMXh1WEc0Z0lDQWdJQ0FnSUdsbUtIQnliMk5sYzNObFpFTmhiR3h6SUQwOVBTQmxlSEJsWTNSbFpFTmhiR3h6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZzWmk1bWFXNXBjMmdvYzNCbFl5d2djbTl2ZEN3Z2NtVnpiMngxZEdsdmJsUmhZbXhsTENCeVpYTnZiSFpsWkZKbFpuTXNJSFZ1Y21WemIyeDJaV1JTWldaekxDQmpZV3hzWW1GamF5d2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnYVdZb2MyVnNaaTVtWVdsc1pXUlZjbXh6TG1sdVpHVjRUMllvYVhSbGJTNXliMjkwS1NBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJRzlpYWlBOUlIdGNiaUFnSUNBZ0lDQWdJQ0IxYzJWS1VYVmxjbms2SUdaaGJITmxMQ0FnTHk4Z1ZFOUVUMXh1SUNBZ0lDQWdJQ0FnSUhWeWJEb2dhWFJsYlM1eWIyOTBMRnh1SUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRG9nSjJkbGRDY3NYRzRnSUNBZ0lDQWdJQ0FnYUdWaFpHVnljem9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZV05qWlhCME9pQnpaV3htTG5OamIzQmxMbk4zWVdkblpYSlNaWEYxWlhOMFNHVmhaR1Z5Y3lCOGZDQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpZGNiaUFnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lHOXVPaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2pvZ1puVnVZM1JwYjI0Z0tHVnljbTl5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeWIyTmxjM05sWkVOaGJHeHpJQ3M5SURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1Ykc5bktDZG1ZV2xzWldRZ2RYSnNPaUFuSUNzZ2IySnFMblZ5YkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhObGJHWXVabUZwYkdWa1ZYSnNjeTV3ZFhOb0tHOWlhaTUxY213cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iRzlqYXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxiR1YwWlNCc2IyTnJXMmwwWlcwdWNtOXZkRjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkVzV5WlhOdmJIWmxaRkpsWm5OYmFYUmxiUzVyWlhsZElEMGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEp2YjNRNklHbDBaVzB1Y205dmRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNiMk5oZEdsdmJqb2dhWFJsYlM1c2IyTmhkR2x2Ymx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHdjbTlqWlhOelpXUkRZV3hzY3lBOVBUMGdaWGh3WldOMFpXUkRZV3hzY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxiR1l1Wm1sdWFYTm9LSE53WldNc0lGOXliMjkwTENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhKbGMyOXNkbVZrVW1WbWN5d2dkVzV5WlhOdmJIWmxaRkpsWm5Nc0lHTmhiR3hpWVdOcktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN3Z0lDOHZJR3B6YUdsdWRDQnBaMjV2Y21VNmJHbHVaVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVnpjRzl1YzJVNklHWjFibU4wYVc5dUlDaHlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnYzNkaFoyZGxjaUE5SUhKbGMzQnZibk5sTG05aWFqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3h2WTJzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2JHOWphMXRwZEdWdExuSnZiM1JkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoelpXeG1MbkpsYzI5c2RtVnlRMkZqYUdVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpaV3htTG5KbGMyOXNkbVZ5UTJGamFHVmJhWFJsYlM1eWIyOTBYU0E5SUhOM1lXZG5aWEk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjMlZzWmk1eVpYTnZiSFpsU1hSbGJTaHpkMkZuWjJWeUxDQnBkR1Z0TG5KdmIzUXNJSEpsYzI5c2RYUnBiMjVVWVdKc1pTd2djbVZ6YjJ4MlpXUlNaV1p6TENCMWJuSmxjMjlzZG1Wa1VtVm1jeXdnYVhSbGJTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIQnliMk5sYzNObFpFTmhiR3h6SUNzOUlERTdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hCeWIyTmxjM05sWkVOaGJHeHpJRDA5UFNCbGVIQmxZM1JsWkVOaGJHeHpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJWc1ppNW1hVzVwYzJnb2MzQmxZeXdnWDNKdmIzUXNJSEpsYzI5c2RYUnBiMjVVWVdKc1pTd2djbVZ6YjJ4MlpXUlNaV1p6TENCMWJuSmxjMjlzZG1Wa1VtVm1jeXdnWTJGc2JHSmhZMnNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlNBdkx5QnFjMmhwYm5RZ2FXZHViM0psT214cGJtVmNiaUFnSUNBZ0lDQWdmVHRjYmx4dUlDQWdJQ0FnSUNBdkx5QmhjSEJzZVNCMGFXMWxiM1YwSUc5dWJIa2dkMmhsYmlCemNHVmphV1pwWldSY2JpQWdJQ0FnSUNBZ2FXWWdLSE5qYjNCbElDWW1JSE5qYjNCbExtWmxkR05vVTNCbFkxUnBiV1Z2ZFhRcElIdGNiaUFnSUNBZ0lDQWdJQ0J2WW1vdWRHbHRaVzkxZENBOUlITmpiM0JsTG1abGRHTm9VM0JsWTFScGJXVnZkWFE3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnBaaUFvYzJOdmNHVWdKaVlnYzJOdmNHVXVZMnhwWlc1MFFYVjBhRzl5YVhwaGRHbHZibk1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpZMjl3WlM1amJHbGxiblJCZFhSb2IzSnBlbUYwYVc5dWN5NWhjSEJzZVNodlltb3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0tHWjFibU4wYVc5dUlIZGhhWFJHYjNKVmJteHZZMnNvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlYwVkdsdFpXOTFkQ2htZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc2IyTnJXMjlpYWk1MWNteGRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSGRoYVhSR2IzSlZibXh2WTJzb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZMkZqYUdWa0lEMGdjMlZzWmk1eVpYTnZiSFpsY2tOaFkyaGxXMjlpYWk1MWNteGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWHk1cGMwOWlhbVZqZENoallXTm9aV1FwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IySnFMbTl1TG5KbGMzQnZibk5sS0h0dlltbzZJR05oWTJobFpIMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4dlkydGJiMkpxTG5WeWJGMGdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHNWxkeUJUZDJGbloyVnlTSFIwY0NncExtVjRaV04xZEdVb2IySnFMQ0J2Y0hSektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lIMHNJREFwTzF4dUlDQWdJQ0FnSUNCOUtTZ3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjSEp2WTJWemMyVmtRMkZzYkhNZ0t6MGdNVHRjYmlBZ0lDQWdJQ0FnZFc1eVpYTnZiSFpsWkZKbFpuTmJhWFJsYlM1clpYbGRJRDBnZTF4dUlDQWdJQ0FnSUNBZ0lISnZiM1E2SUdsMFpXMHVjbTl2ZEN4Y2JpQWdJQ0FnSUNBZ0lDQnNiMk5oZEdsdmJqb2dhWFJsYlM1c2IyTmhkR2x2Ymx4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKdlkyVnpjMlZrUTJGc2JITWdQVDA5SUdWNGNHVmpkR1ZrUTJGc2JITXBJSHRjYmlBZ0lDQWdJQ0FnSUNCelpXeG1MbVpwYm1semFDaHpjR1ZqTENCZmNtOXZkQ3dnY21WemIyeDFkR2x2YmxSaFlteGxMQ0J5WlhOdmJIWmxaRkpsWm5Nc0lIVnVjbVZ6YjJ4MlpXUlNaV1p6TENCallXeHNZbUZqYXlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtIUnZVbVZ6YjJ4MlpWdHBhVjBzSUhOd1pXTXNJSFJvYVhNc0lHeHZZMnNzSUdscEtTazdYRzRnSUgxY2JseHVJQ0JwWmlBb1QySnFaV04wTG10bGVYTW9kRzlTWlhOdmJIWmxLUzVzWlc1bmRHZ2dQVDA5SURBcElIdGNiaUFnSUNCMGFHbHpMbVpwYm1semFDaHpjR1ZqTENCZmNtOXZkQ3dnY21WemIyeDFkR2x2YmxSaFlteGxMQ0J5WlhOdmJIWmxaRkpsWm5Nc0lIVnVjbVZ6YjJ4MlpXUlNaV1p6TENCallXeHNZbUZqYXlrN1hHNGdJSDFjYm4wN1hHNWNibEpsYzI5c2RtVnlMbkJ5YjNSdmRIbHdaUzV5WlhOdmJIWmxTWFJsYlNBOUlHWjFibU4wYVc5dUtITndaV01zSUhKdmIzUXNJSEpsYzI5c2RYUnBiMjVVWVdKc1pTd2djbVZ6YjJ4MlpXUlNaV1p6TENCMWJuSmxjMjlzZG1Wa1VtVm1jeXdnYVhSbGJTa2dlMXh1SUNCMllYSWdjR0YwYUNBOUlHbDBaVzB1Ykc5allYUnBiMjQ3WEc0Z0lIWmhjaUJzYjJOaGRHbHZiaUE5SUhOd1pXTXNJSEJoY25SeklEMGdjR0YwYUM1emNHeHBkQ2duTHljcE8xeHVJQ0JwWmlod1lYUm9JQ0U5UFNBbkp5a2dlMXh1SUNBZ0lHWnZjaUFvZG1GeUlHb2dQU0F3T3lCcUlEd2djR0Z5ZEhNdWJHVnVaM1JvT3lCcUt5c3BJSHRjYmlBZ0lDQWdJSFpoY2lCelpXZHRaVzUwSUQwZ2NHRnlkSE5iYWwwN1hHNGdJQ0FnSUNCcFppQW9jMlZuYldWdWRDNXBibVJsZUU5bUtDZCtNU2NwSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnSUNCelpXZHRaVzUwSUQwZ2NHRnlkSE5iYWwwdWNtVndiR0ZqWlNndmZqQXZaeXdnSjM0bktTNXlaWEJzWVdObEtDOStNUzluTENBbkx5Y3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2MyVm5iV1Z1ZEM1amFHRnlRWFFvTUNrZ0lUMDlJQ2N2SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSE5sWjIxbGJuUWdQU0FuTHljZ0t5QnpaV2R0Wlc1ME8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR3h2WTJGMGFXOXVJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5QjhmQ0JzYjJOaGRHbHZiaUE5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoelpXZHRaVzUwSUQwOVBTQW5KeUFtSmlCcUlEMDlQU0FvY0dGeWRITXViR1Z1WjNSb0lDMGdNU2tnSmlZZ2NHRnlkSE11YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQnNiMk5oZEdsdmJpQTlJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tITmxaMjFsYm5RdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0JzYjJOaGRHbHZiaUE5SUd4dlkyRjBhVzl1VzNObFoyMWxiblJkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0IyWVhJZ2NtVnpiMngyWldRZ1BTQnBkR1Z0TG10bGVUdGNiaUFnY0dGeWRITWdQU0JwZEdWdExtdGxlUzV6Y0d4cGRDZ25MeWNwTzF4dUlDQjJZWElnY21WemIyeDJaV1JPWVcxbElEMGdjR0Z5ZEhOYmNHRnlkSE11YkdWdVozUm9MVEZkTzF4dVhHNGdJR2xtS0hKbGMyOXNkbVZrVG1GdFpTNXBibVJsZUU5bUtDY2pKeWtnUGowZ01Da2dlMXh1SUNBZ0lISmxjMjlzZG1Wa1RtRnRaU0E5SUhKbGMyOXNkbVZrVG1GdFpTNXpjR3hwZENnbkl5Y3BXekZkTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR3h2WTJGMGFXOXVJQ0U5UFNCdWRXeHNJQ1ltSUhSNWNHVnZaaUJzYjJOaGRHbHZiaUFoUFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQnlaWE52YkhabFpGSmxabk5iY21WemIyeDJaV1JkSUQwZ2UxeHVJQ0FnSUNBZ2JtRnRaVG9nY21WemIyeDJaV1JPWVcxbExGeHVJQ0FnSUNBZ2IySnFPaUJzYjJOaGRHbHZiaXhjYmlBZ0lDQWdJR3RsZVRvZ2FYUmxiUzVyWlhrc1hHNGdJQ0FnSUNCeWIyOTBPaUJwZEdWdExuSnZiM1JjYmlBZ0lDQjlPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFZ1Y21WemIyeDJaV1JTWldaelczSmxjMjlzZG1Wa1hTQTlJSHRjYmlBZ0lDQWdJSEp2YjNRNklHbDBaVzB1Y205dmRDeGNiaUFnSUNBZ0lHeHZZMkYwYVc5dU9pQnBkR1Z0TG14dlkyRjBhVzl1WEc0Z0lDQWdmVHRjYmlBZ2ZWeHVmVHRjYmx4dVVtVnpiMngyWlhJdWNISnZkRzkwZVhCbExtWnBibWx6YUNBOUlHWjFibU4wYVc5dUlDaHpjR1ZqTENCeWIyOTBMQ0J5WlhOdmJIVjBhVzl1VkdGaWJHVXNJSEpsYzI5c2RtVmtVbVZtY3l3Z2RXNXlaWE52YkhabFpGSmxabk1zSUdOaGJHeGlZV05yTENCc2IyTmhiRkpsYzI5c2RtVXBJSHRjYmlBZ0x5OGdkMkZzYXlCeVpYTnZiSFYwYVc5dUlIUmhZbXhsSUdGdVpDQnlaWEJzWVdObElIZHBkR2dnY21WemIyeDJaV1FnY21WbWMxeHVJQ0IyWVhJZ2NtVm1MQ0JoWW5NN1hHNGdJR1p2Y2lBb2NtVm1JR2x1SUhKbGMyOXNkWFJwYjI1VVlXSnNaU2tnZTF4dUlDQWdJSFpoY2lCcGRHVnRJRDBnY21WemIyeDFkR2x2YmxSaFlteGxXM0psWmwwN1hHNWNiaUFnSUNCMllYSWdhMlY1SUQwZ2FYUmxiUzVyWlhrN1hHNGdJQ0FnZG1GeUlISmxjMjlzZG1Wa1ZHOGdQU0J5WlhOdmJIWmxaRkpsWm5OYmEyVjVYVHRjYmlBZ0lDQnBaaUFvY21WemIyeDJaV1JVYnlrZ2UxeHVJQ0FnSUNBZ2MzQmxZeTVrWldacGJtbDBhVzl1Y3lBOUlITndaV011WkdWbWFXNXBkR2x2Ym5NZ2ZId2dlMzA3WEc0Z0lDQWdJQ0JwWmlBb2FYUmxiUzV5WlhOdmJIWmxRWE1nUFQwOUlDZHlaV1luS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hzYjJOaGJGSmxjMjlzZG1VZ0lUMDlJSFJ5ZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCa2IyNG5kQ0J5WlhSaGFXNGdjbTl2ZENCbWIzSWdiRzlqWVd3Z1pHVm1hVzVwZEdsdmJuTmNiaUFnSUNBZ0lDQWdJQ0JtYjNJZ0tHdGxlU0JwYmlCeVpYTnZiSFpsWkZSdkxtOWlhaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZV0p6SUQwZ2RHaHBjeTV5WlhSaGFXNVNiMjkwS0d0bGVTd2djbVZ6YjJ4MlpXUlVieTV2WW1wYmEyVjVYU3dnYVhSbGJTNXliMjkwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsYzI5c2RtVmtWRzh1YjJKcVcydGxlVjBnUFNCaFluTTdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lITndaV011WkdWbWFXNXBkR2x2Ym5OYmNtVnpiMngyWldSVWJ5NXVZVzFsWFNBOUlISmxjMjlzZG1Wa1ZHOHViMkpxTzF4dUlDQWdJQ0FnSUNCcGRHVnRMbTlpYWk0a2NtVm1JRDBnSnlNdlpHVm1hVzVwZEdsdmJuTXZKeUFySUhKbGMyOXNkbVZrVkc4dWJtRnRaVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvYVhSbGJTNXlaWE52YkhabFFYTWdQVDA5SUNkcGJteHBibVVuS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUIwWVhKblpYUlBZbW9nUFNCcGRHVnRMbTlpYWp0Y2JpQWdJQ0FnSUNBZ2RHRnlaMlYwVDJKcVd5ZDRMWEpsYzI5c2RtVmtMV1p5YjIwblhTQTlJRnNnYVhSbGJTNXJaWGtnWFR0Y2JpQWdJQ0FnSUNBZ1pHVnNaWFJsSUhSaGNtZGxkRTlpYWk0a2NtVm1PMXh1WEc0Z0lDQWdJQ0FnSUdadmNpQW9hMlY1SUdsdUlISmxjMjlzZG1Wa1ZHOHViMkpxS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZV0p6SUQwZ2NtVnpiMngyWldSVWJ5NXZZbXBiYTJWNVhUdGNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHNiMk5oYkZKbGMyOXNkbVVnSVQwOUlIUnlkV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUdSdmJpZDBJSEpsZEdGcGJpQnliMjkwSUdadmNpQnNiMk5oYkNCa1pXWnBibWwwYVc5dWMxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdKeklEMGdkR2hwY3k1eVpYUmhhVzVTYjI5MEtHdGxlU3dnY21WemIyeDJaV1JVYnk1dlltcGJhMlY1WFN3Z2FYUmxiUzV5YjI5MEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2RHRnlaMlYwVDJKcVcydGxlVjBnUFNCaFluTTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JpQWdkbUZ5SUdWNGFYTjBhVzVuVlc1eVpYTnZiSFpsWkNBOUlIUm9hWE11WTI5MWJuUlZibkpsYzI5c2RtVmtVbVZtY3loemNHVmpLVHRjYmx4dUlDQnBaaWhsZUdsemRHbHVaMVZ1Y21WemIyeDJaV1FnUFQwOUlEQWdmSHdnZEdocGN5NXBkR1Z5WVhScGIyNGdQaUExS1NCN1hHNGdJQ0FnZEdocGN5NXlaWE52YkhabFFXeHNUMllvYzNCbFl5NWtaV1pwYm1sMGFXOXVjeWs3WEc0Z0lDQWdkR2hwY3k1eVpYTnZiSFpsY2tOaFkyaGxJRDBnYm5Wc2JEdGNiaUFnSUNCallXeHNZbUZqYXk1allXeHNLSFJvYVhNdWMyTnZjR1VzSUhOd1pXTXNJSFZ1Y21WemIyeDJaV1JTWldaektUdGNiaUFnZlZ4dUlDQmxiSE5sSUh0Y2JpQWdJQ0IwYUdsekxtbDBaWEpoZEdsdmJpQXJQU0F4TzF4dUlDQWdJSFJvYVhNdWNtVnpiMngyWlNoemNHVmpMQ0J5YjI5MExDQmpZV3hzWW1GamF5d2dkR2hwY3k1elkyOXdaU2s3WEc0Z0lIMWNibjA3WEc1Y2JsSmxjMjlzZG1WeUxuQnliM1J2ZEhsd1pTNWpiM1Z1ZEZWdWNtVnpiMngyWldSU1pXWnpJRDBnWm5WdVkzUnBiMjRvYzNCbFl5a2dlMXh1SUNCMllYSWdhVHRjYmlBZ2RtRnlJSEpsWm5NZ1BTQjBhR2x6TG1kbGRGSmxabk1vYzNCbFl5azdYRzRnSUhaaGNpQnJaWGx6SUQwZ1cxMDdYRzRnSUhaaGNpQjFibkpsYzI5c2RtVmtTMlY1Y3lBOUlGdGRPMXh1SUNCbWIzSW9hU0JwYmlCeVpXWnpLU0I3WEc0Z0lDQWdhV1lvYVM1cGJtUmxlRTltS0Njakp5a2dQVDA5SURBcElIdGNiaUFnSUNBZ0lHdGxlWE11Y0hWemFDaHBMbk4xWW5OMGNtbHVaeWd4S1NrN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RXNXlaWE52YkhabFpFdGxlWE11Y0hWemFDaHBLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2THlCMlpYSnBabmtnY0c5emMybGliR1VnYTJWNWMxeHVJQ0JtYjNJZ0tHa2dQU0F3T3lCcElEd2dhMlY1Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lIWmhjaUJ3WVhKMElEMGdhMlY1YzF0cFhUdGNiaUFnSUNCMllYSWdjR0Z5ZEhNZ1BTQndZWEowTG5Od2JHbDBLQ2N2SnlrN1hHNGdJQ0FnZG1GeUlHOWlhaUE5SUhOd1pXTTdYRzVjYmlBZ0lDQm1iM0lnS0haaGNpQnJJRDBnTURzZ2F5QThJSEJoY25SekxteGxibWQwYURzZ2F5c3JLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2EyVjVJRDBnY0dGeWRITmJhMTA3WEc0Z0lDQWdJQ0JwWmloclpYa2dJVDA5SUNjbktTQjdYRzRnSUNBZ0lDQWdJRzlpYWlBOUlHOWlhbHRyWlhsZE8xeHVJQ0FnSUNBZ0lDQnBaaWgwZVhCbGIyWWdiMkpxSUQwOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIVnVjbVZ6YjJ4MlpXUkxaWGx6TG5CMWMyZ29jR0Z5ZENrN1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUhWdWNtVnpiMngyWldSTFpYbHpMbXhsYm1kMGFEdGNibjA3WEc1Y2JsSmxjMjlzZG1WeUxuQnliM1J2ZEhsd1pTNW5aWFJTWldaeklEMGdablZ1WTNScGIyNG9jM0JsWXl3Z2IySnFLU0I3WEc0Z0lHOWlhaUE5SUc5aWFpQjhmQ0J6Y0dWak8xeHVJQ0IyWVhJZ2IzVjBjSFYwSUQwZ2UzMDdYRzRnSUdadmNpaDJZWElnYTJWNUlHbHVJRzlpYWlrZ2UxeHVJQ0FnSUdsbUlDZ2hiMkpxTG1oaGMwOTNibEJ5YjNCbGNuUjVLR3RsZVNrcElIdGNiaUFnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUgxY2JpQWdJQ0IyWVhJZ2FYUmxiU0E5SUc5aWFsdHJaWGxkTzF4dUlDQWdJR2xtS0d0bGVTQTlQVDBnSnlSeVpXWW5JQ1ltSUhSNWNHVnZaaUJwZEdWdElEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJQ0FnYjNWMGNIVjBXMmwwWlcxZElEMGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCcFppaGZMbWx6VDJKcVpXTjBLR2wwWlcwcEtTQjdYRzRnSUNBZ0lDQjJZWElnYnlBOUlIUm9hWE11WjJWMFVtVm1jeWhwZEdWdEtUdGNiaUFnSUNBZ0lHWnZjaWgyWVhJZ2F5QnBiaUJ2S1NCN1hHNGdJQ0FnSUNBZ0lHOTFkSEIxZEZ0clhTQTlJRzUxYkd3N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ2ZFhSd2RYUTdYRzU5TzF4dVhHNW1kVzVqZEdsdmJpQnpjR3hwZEZWeWJDaDFjbXdwSUh0Y2JpQWdkbUZ5SUhKbGMzVnNkQ0E5SUh0OU8xeHVJQ0IyWVhJZ2NISnZkRzhnUFNBdlcyRXRlbDByT2x4Y0wxeGNMeTlwTG1WNFpXTW9kWEpzS1R0Y2JpQWdhV1lnS0hCeWIzUnZLU0I3WEc0Z0lDQWdjbVZ6ZFd4MExuQnliM1J2SUQwZ2NISnZkRzliTUYwdWMyeHBZMlVvTUN3Z0xUTXBPMXh1SUNBZ0lIVnliQ0E5SUhWeWJDNXpiR2xqWlNoeVpYTjFiSFF1Y0hKdmRHOHViR1Z1WjNSb0lDc2dNU2s3WEc0Z0lIMWNiaUFnYVdZZ0tIVnliQzV6YkdsalpTZ3dMQ0F5S1NBOVBUMGdKeTh2SnlrZ2UxeHVJQ0FnSUhKbGMzVnNkQzVrYjIxaGFXNGdQU0IxY213dWMyeHBZMlVvTWlrdWMzQnNhWFFvSnk4bktWc3dYVHRjYmlBZ0lDQjFjbXdnUFNCMWNtd3VjMnhwWTJVb01pQXJJSEpsYzNWc2RDNWtiMjFoYVc0dWJHVnVaM1JvS1R0Y2JpQWdmVnh1SUNCMllYSWdjQ0E5SUhWeWJDNXpjR3hwZENnbkl5Y3BPMXh1SUNCcFppQW9jRnN3WFM1c1pXNW5kR2dwSUh0Y2JpQWdJQ0J5WlhOMWJIUXVjR0YwYUNBOUlIQmJNRjA3WEc0Z0lIMWNiaUFnYVdZZ0tIQXViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJSEpsYzNWc2RDNW1jbUZuYldWdWRDQTlJSEF1YzJ4cFkyVW9NU2t1YW05cGJpZ25JeWNwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIVnVjM0JzYVhSVmNtd29kWEpzS1NCN1hHNGdJSFpoY2lCeVpYTjFiSFFnUFNCMWNtd3VjR0YwYUR0Y2JpQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2NtVnpkV3gwSUQwZ0p5YzdYRzRnSUgxY2JpQWdhV1lnS0hWeWJDNW1jbUZuYldWdWRDQWhQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnY21WemRXeDBJQ3M5SUNjakp5QXJJSFZ5YkM1bWNtRm5iV1Z1ZER0Y2JpQWdmVnh1SUNCcFppQW9kWEpzTG1SdmJXRnBiaUFoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2FXWWdLSEpsYzNWc2RDNXpiR2xqWlNnd0xDQXhLU0E5UFQwZ0p5OG5LU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0J5WlhOMWJIUXVjMnhwWTJVb01TazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGMzVnNkQ0E5SUNjdkx5Y2dLeUIxY213dVpHOXRZV2x1SUNzZ0p5OG5JQ3NnY21WemRXeDBPMXh1SUNBZ0lHbG1JQ2gxY213dWNISnZkRzhnSVQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MElEMGdkWEpzTG5CeWIzUnZJQ3NnSnpvbklDc2djbVZ6ZFd4ME8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnY21WemRXeDBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnFiMmx1VlhKc0tHSmhjMlVzSUhKbGJDa2dlMXh1SUNCMllYSWdjbVZzYzNBZ1BTQnpjR3hwZEZWeWJDaHlaV3dwTzF4dUlDQnBaaUFvY21Wc2MzQXVaRzl0WVdsdUlDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZzTzF4dUlDQjlYRzRnSUhaaGNpQnlaWE4xYkhRZ1BTQnpjR3hwZEZWeWJDaGlZWE5sS1R0Y2JpQWdhV1lnS0hKbGJITndMbkJoZEdnZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJQzh2SUdOb1lXNW5aU0J2Ym14NUlHWnlZV2R0Wlc1MElIQmhjblJjYmlBZ0lDQnlaWE4xYkhRdVpuSmhaMjFsYm5RZ1BTQnlaV3h6Y0M1bWNtRm5iV1Z1ZER0Y2JpQWdmU0JsYkhObElHbG1JQ2h5Wld4emNDNXdZWFJvTG5Oc2FXTmxLREFzSURFcElEMDlQU0FuTHljcElIdGNiaUFnSUNBdkx5QnlaV3hoZEdsMlpTQjBieUJrYjIxaGFXNWNiaUFnSUNCeVpYTjFiSFF1Y0dGMGFDQTlJSEpsYkhOd0xuQmhkR2c3WEc0Z0lDQWdjbVZ6ZFd4MExtWnlZV2R0Wlc1MElEMGdjbVZzYzNBdVpuSmhaMjFsYm5RN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ0x5OGdjbVZzWVhScGRtVWdkRzhnY0dGMGFGeHVJQ0FnSUhaaGNpQndZWFJvSUQwZ2NtVnpkV3gwTG5CaGRHZ2dQVDA5SUhWdVpHVm1hVzVsWkNBL0lGdGRJRG9nY21WemRXeDBMbkJoZEdndWMzQnNhWFFvSnk4bktUdGNiaUFnSUNCMllYSWdjbVZzY0dGMGFDQTlJSEpsYkhOd0xuQmhkR2d1YzNCc2FYUW9KeThuS1R0Y2JpQWdJQ0JwWmlBb2NHRjBhQzVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJSEJoZEdndWNHOXdLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lIZG9hV3hsSUNoeVpXeHdZWFJvV3pCZElEMDlQU0FuTGk0bklIeDhJSEpsYkhCaGRHaGJNRjBnUFQwOUlDY3VKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tISmxiSEJoZEdoYk1GMGdQVDA5SUNjdUxpY3BJSHRjYmlBZ0lDQWdJQ0FnY0dGMGFDNXdiM0FvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGJIQmhkR2d1YzJocFpuUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVnpkV3gwTG5CaGRHZ2dQU0J3WVhSb0xtTnZibU5oZENoeVpXeHdZWFJvS1M1cWIybHVLQ2N2SnlrN1hHNGdJQ0FnY21WemRXeDBMbVp5WVdkdFpXNTBJRDBnY21Wc2MzQXVabkpoWjIxbGJuUTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlIVnVjM0JzYVhSVmNtd29jbVZ6ZFd4MEtUdGNibjFjYmx4dVVtVnpiMngyWlhJdWNISnZkRzkwZVhCbExuSmxkR0ZwYmxKdmIzUWdQU0JtZFc1amRHbHZiaWh2Y21sblMyVjVMQ0J2WW1vc0lISnZiM1FwSUh0Y2JpQWdMeThnZDJGc2F5QnZZbXBsWTNRZ1lXNWtJR3h2YjJzZ1ptOXlJSEpsYkdGMGFYWmxJQ1J5WldaelhHNGdJR2xtS0Y4dWFYTlBZbXBsWTNRb2IySnFLU2tnZTF4dUlDQWdJR1p2Y2loMllYSWdhMlY1SUdsdUlHOWlhaWtnZTF4dUlDQWdJQ0FnZG1GeUlHbDBaVzBnUFNCdlltcGJhMlY1WFR0Y2JpQWdJQ0FnSUdsbUlDaHJaWGtnUFQwOUlDY2tjbVZtSnlBbUppQjBlWEJsYjJZZ2FYUmxiU0E5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lDQWdiMkpxVzJ0bGVWMGdQU0JxYjJsdVZYSnNLSEp2YjNRc0lHbDBaVzBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWld4elpTQnBaaUFvWHk1cGMwOWlhbVZqZENocGRHVnRLU2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbkpsZEdGcGJsSnZiM1FvYTJWNUxDQnBkR1Z0TENCeWIyOTBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JpQWdaV3h6WlNCcFppaGZMbWx6VTNSeWFXNW5LRzlpYWlrZ0ppWWdiM0pwWjB0bGVTQTlQVDBnSnlSeVpXWW5LU0I3WEc0Z0lDQWdiMkpxSUQwZ2FtOXBibFZ5YkNoeWIyOTBMQ0J2WW1vcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdlltbzdYRzU5TzF4dVhHNHZLaXBjYmlBcUlHbHRiV1ZrYVdGMFpXeDVJR2x1TFd4cGJtVnpJR3h2WTJGc0lISmxabk1zSUhGMVpYVmxjeUJ5WlcxdmRHVWdjbVZtYzF4dUlDb2dabTl5SUdsdWJHbHVaU0J5WlhOdmJIVjBhVzl1WEc0Z0tpOWNibEpsYzI5c2RtVnlMbkJ5YjNSdmRIbHdaUzV5WlhOdmJIWmxTVzVzYVc1bElEMGdablZ1WTNScGIyNGdLSEp2YjNRc0lITndaV01zSUhCeWIzQmxjblI1TENCeVpYTnZiSFYwYVc5dVZHRmliR1VzSUhWdWNtVnpiMngyWldSU1pXWnpMQ0JzYjJOaGRHbHZiaWtnZTF4dUlDQjJZWElnYTJWNUlEMGdjSEp2Y0dWeWRIa3VKSEpsWml3Z2NtVm1JRDBnY0hKdmNHVnlkSGt1SkhKbFppd2dhU3dnY0N3Z2NESXNJSEp6TzF4dUlDQjJZWElnY205dmRGUnlhVzF0WldRZ1BTQm1ZV3h6WlR0Y2JseHVJQ0J5YjI5MElEMGdjbTl2ZENCOGZDQW5KenNnTHk4Z1IzVmhjbVFnWVdkaGFXNXpkQ0F1YzNCc2FYUXVJRUJtWldobmRYa3NJSGx2ZFNkc2JDQnVaV1ZrSUhSdklHTm9aV05ySUdsbUlIUm9hWE1nYkc5bmFXTWdabWwwYzF4dUlDQXZMeUJOYjNKbElHbHRjRzl5WVc1MGJIa2dhWE1nYUc5M0lHUnZJSGRsSUdkeVlXTmxablZzYkhrZ2FHRnVaR3hsSUhKbGJHRjBhWFpsSUhWeWJITXNJSGRvWlc0Z2NISnZkbWxrWldRZ2FuVnpkQ0JoSUNkemNHVmpKeXdnYm05MElHRWdKM1Z5YkNjZ1AxeHVYRzRnSUdsbUlDaHlaV1lwSUh0Y2JpQWdJQ0JwWmloeVpXWXVhVzVrWlhoUFppZ25MaTR2SnlrZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUM4dklISmxjMlYwSUhKdmIzUmNiaUFnSUNBZ0lIQWdQU0J5WldZdWMzQnNhWFFvSnk0dUx5Y3BPMXh1SUNBZ0lDQWdjRElnUFNCeWIyOTBMbk53YkdsMEtDY3ZKeWs3WEc0Z0lDQWdJQ0J5WldZZ1BTQW5KenRjYmlBZ0lDQWdJR1p2Y2locElEMGdNRHNnYVNBOElIQXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWW9jRnRwWFNBOVBUMGdKeWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQndNaUE5SUhBeUxuTnNhV05sS0RBc0lIQXlMbXhsYm1kMGFDMHhLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpXWWdLejBnY0Z0cFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbTl2ZENBOUlDY25PMXh1SUNBZ0lDQWdabTl5S0drZ1BTQXdPeUJwSUR3Z2NESXViR1Z1WjNSb0lDMGdNVHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR2xtS0drZ1BpQXdLU0I3SUhKdmIzUWdLejBnSnk4bk95QjlYRzRnSUNBZ0lDQWdJSEp2YjNRZ0t6MGdjREpiYVYwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeWIyOTBWSEpwYlcxbFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0hKbFppNXBibVJsZUU5bUtDY2pKeWtnUGowZ01Da2dlMXh1SUNBZ0lDQWdhV1lvY21WbUxtbHVaR1Y0VDJZb0p5OG5LU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0J5Y3lBOUlISmxaaTV6Y0d4cGRDZ25JeWNwTzF4dUlDQWdJQ0FnSUNCd0lDQTlJSEp2YjNRdWMzQnNhWFFvSnk4dkp5azdYRzRnSUNBZ0lDQWdJSEF5SUQwZ2NGc3hYUzV6Y0d4cGRDZ25MeWNwTzF4dUlDQWdJQ0FnSUNCeWIyOTBJRDBnY0Zzd1hTQXJJQ2N2THljZ0t5QndNbHN3WFNBcklISnpXekJkTzF4dUlDQWdJQ0FnSUNCc2IyTmhkR2x2YmlBOUlISnpXekZkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEp6SUQwZ2NtVm1Mbk53YkdsMEtDY2pKeWs3WEc0Z0lDQWdJQ0FnSUdsbUtISnpXekJkSUNFOVBTQW5KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIQXlJRDBnY205dmRDNXpjR3hwZENnbkx5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUhBeUlEMGdjREl1YzJ4cFkyVW9NQ3dnY0RJdWJHVnVaM1JvSUMwZ01TazdYRzRnSUNBZ0lDQWdJQ0FnYVdZb0lYSnZiM1JVY21sdGJXVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnliMjkwSUQwZ0p5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcklEMGdNRHNnYXlBOElIQXlMbXhsYm1kMGFEc2dheXNyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtHc2dQaUF3S1NCN0lISnZiM1FnS3owZ0p5OG5PeUI5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEp2YjNRZ0t6MGdjREpiYTEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSEp2YjNRZ0t6MGdKeThuSUNzZ2NtVm1Mbk53YkdsMEtDY2pKeWxiTUYwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdiRzlqWVhScGIyNGdQU0J5YzFzeFhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tISmxaaTVwYm1SbGVFOW1LQ2RvZEhSd09pY3BJRDA5UFNBd0lIeDhJSEpsWmk1cGJtUmxlRTltS0Nkb2RIUndjem9uS1NBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnYVdZb2NtVm1MbWx1WkdWNFQyWW9KeU1uS1NBK1BTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhKdmIzUWdQU0J5WldZdWMzQnNhWFFvSnlNbktWc3dYVHRjYmlBZ0lDQWdJQ0FnYkc5allYUnBiMjRnUFNCeVpXWXVjM0JzYVhRb0p5TW5LVnN4WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5YjI5MElEMGdjbVZtTzF4dUlDQWdJQ0FnSUNCc2IyTmhkR2x2YmlBOUlDY25PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVZ6YjJ4MWRHbHZibFJoWW14bExuQjFjMmdvZTI5aWFqb2djSEp2Y0dWeWRIa3NJSEpsYzI5c2RtVkJjem9nSjJsdWJHbHVaU2NzSUhKdmIzUTZJSEp2YjNRc0lHdGxlVG9nYTJWNUxDQnNiMk5oZEdsdmJqb2diRzlqWVhScGIyNTlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEpsWmk1cGJtUmxlRTltS0Njakp5a2dQVDA5SURBcElIdGNiaUFnSUNBZ0lHeHZZMkYwYVc5dUlEMGdjbVZtTG5Od2JHbDBLQ2NqSnlsYk1WMDdYRzRnSUNBZ0lDQnlaWE52YkhWMGFXOXVWR0ZpYkdVdWNIVnphQ2g3YjJKcU9pQndjbTl3WlhKMGVTd2djbVZ6YjJ4MlpVRnpPaUFuYVc1c2FXNWxKeXdnY205dmREb2djbTl2ZEN3Z2EyVjVPaUJyWlhrc0lHeHZZMkYwYVc5dU9pQnNiMk5oZEdsdmJuMHBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jbVZtTG1sdVpHVjRUMllvSnk4bktTQTlQVDBnTUNBbUppQnlaV1l1YVc1a1pYaFBaaWduSXljcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2JHOWpZWFJwYjI0Z1BTQnlaV1k3WEc0Z0lDQWdJQ0IyWVhJZ2JXRjBZMmhsY3lBOUlISnZiM1F1YldGMFkyZ29MMTVvZEhSd2N6OWNYRHBjWEM5Y1hDOG9XMTVjWEM4L0kxMHJLU2cvT2x0Y1hDOC9JMTE4SkNrdmFTazdYRzRnSUNBZ0lDQnBaaWh0WVhSamFHVnpLU0I3WEc0Z0lDQWdJQ0FnSUhKdmIzUWdQU0J0WVhSamFHVnpXekJkSUNzZ2NtVm1Mbk4xWW5OMGNtbHVaeWd4S1R0Y2JpQWdJQ0FnSUNBZ2JHOWpZWFJwYjI0Z1BTQW5KenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsYzI5c2RYUnBiMjVVWVdKc1pTNXdkWE5vS0h0dlltbzZJSEJ5YjNCbGNuUjVMQ0J5WlhOdmJIWmxRWE02SUNkcGJteHBibVVuTENCeWIyOTBPaUJ5YjI5MExDQnJaWGs2SUd0bGVTd2diRzlqWVhScGIyNDZJR3h2WTJGMGFXOXVmU2s3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnY21WemIyeDFkR2x2YmxSaFlteGxMbkIxYzJnb2UyOWlham9nY0hKdmNHVnlkSGtzSUhKbGMyOXNkbVZCY3pvZ0oybHViR2x1WlNjc0lISnZiM1E2SUhKdmIzUXNJR3RsZVRvZ2EyVjVMQ0JzYjJOaGRHbHZiam9nYkc5allYUnBiMjU5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnWld4elpTQnBaaUFvY0hKdmNHVnlkSGt1ZEhsd1pTQTlQVDBnSjJGeWNtRjVKeWtnZTF4dUlDQWdJSFJvYVhNdWNtVnpiMngyWlZSdktISnZiM1FzSUhCeWIzQmxjblI1TG1sMFpXMXpMQ0J5WlhOdmJIVjBhVzl1VkdGaWJHVXNJR3h2WTJGMGFXOXVLVHRjYmlBZ2ZWeHVmVHRjYmx4dVVtVnpiMngyWlhJdWNISnZkRzkwZVhCbExuSmxjMjlzZG1WVWJ5QTlJR1oxYm1OMGFXOXVJQ2h5YjI5MExDQndjbTl3WlhKMGVTd2djbVZ6YjJ4MWRHbHZibFJoWW14bExDQnNiMk5oZEdsdmJpa2dlMXh1SUNCMllYSWdjM0FzSUdrN1hHNGdJSFpoY2lCeVpXWWdQU0J3Y205d1pYSjBlUzRrY21WbU8xeHVJQ0IyWVhJZ2JISnZiM1FnUFNCeWIyOTBPMXh1SUNCcFppQW9LSFI1Y0dWdlppQnlaV1lnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0FtSmlBb2NtVm1JQ0U5UFNCdWRXeHNLU2tnZTF4dUlDQWdJR2xtS0hKbFppNXBibVJsZUU5bUtDY2pKeWtnUGowZ01Da2dlMXh1SUNBZ0lDQWdkbUZ5SUhCaGNuUnpJRDBnY21WbUxuTndiR2wwS0Njakp5azdYRzVjYmlBZ0lDQWdJQzh2SUNNdlpHVm1hVzVwZEdsdmJuTXZabTl2WEc0Z0lDQWdJQ0F2THlCbWIyOHVhbk52YmlNdlltRnlYRzRnSUNBZ0lDQnBaaWh3WVhKMGMxc3dYU0FtSmlCeVpXWXVhVzVrWlhoUFppZ25MeWNwSUQwOVBTQXdLU0I3WEc1Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdWc2MyVWdhV1lvY0dGeWRITmJNRjBnSmlZZ0tIQmhjblJ6V3pCZExtbHVaR1Y0VDJZb0oyaDBkSEE2SnlrZ1BUMDlJREFnZkh3Z2NHRnlkSE5iTUYwdWFXNWtaWGhQWmlnbmFIUjBjSE02SnlrZ1BUMDlJREFwS1NCN1hHNGdJQ0FnSUNBZ0lHeHliMjkwSUQwZ2NHRnlkSE5iTUYwN1hHNGdJQ0FnSUNBZ0lISmxaaUE5SUhCaGNuUnpXekZkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWld4elpTQnBaaWh3WVhKMGMxc3dYU0FtSmlCd1lYSjBjMXN3WFM1c1pXNW5kR2dnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUhKbGJHRjBhWFpsSUdacGJHVmNiaUFnSUNBZ0lDQWdjM0FnUFNCeWIyOTBMbk53YkdsMEtDY3ZKeWs3WEc0Z0lDQWdJQ0FnSUd4eWIyOTBJRDBnSnljN1hHNGdJQ0FnSUNBZ0lHWnZjaWhwSUQwZ01Ec2dhU0E4SUhOd0xteGxibWQwYUNBdElERTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR3h5YjI5MElDczlJSE53VzJsZElDc2dKeThuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHeHliMjkwSUNzOUlIQmhjblJ6V3pCZE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1pXeHpaU0I3WEc1Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2JHOWpZWFJwYjI0Z1BTQndZWEowYzFzeFhUdGNiaUFnSUNCOVhHNGdJQ0FnWld4elpTQnBaaUFvY21WbUxtbHVaR1Y0VDJZb0oyaDBkSEE2SnlrZ1BUMDlJREFnZkh3Z2NtVm1MbWx1WkdWNFQyWW9KMmgwZEhCek9pY3BJRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQnNjbTl2ZENBOUlISmxaanRjYmlBZ0lDQWdJR3h2WTJGMGFXOXVJRDBnSnljN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdjbVZzWVhScGRtVWdabWxzWlZ4dUlDQWdJQ0FnYzNBZ1BTQnliMjkwTG5Od2JHbDBLQ2N2SnlrN1hHNGdJQ0FnSUNCc2NtOXZkQ0E5SUNjbk8xeHVJQ0FnSUNBZ1ptOXlLR2tnUFNBd095QnBJRHdnYzNBdWJHVnVaM1JvSUMwZ01Uc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHeHliMjkwSUNzOUlITndXMmxkSUNzZ0p5OG5PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdiSEp2YjNRZ0t6MGdjbVZtTzF4dUlDQWdJQ0FnYkc5allYUnBiMjRnUFNBbkp6dGNiaUFnSUNCOVhHNGdJQ0FnY21WemIyeDFkR2x2YmxSaFlteGxMbkIxYzJnb2UxeHVJQ0FnSUNBZ2IySnFPaUJ3Y205d1pYSjBlU3dnY21WemIyeDJaVUZ6T2lBbmNtVm1KeXdnY205dmREb2diSEp2YjNRc0lHdGxlVG9nY21WbUxDQnNiMk5oZEdsdmJqb2diRzlqWVhScGIyNWNiaUFnSUNCOUtUdGNiaUFnZlNCbGJITmxJR2xtSUNod2NtOXdaWEowZVM1MGVYQmxJRDA5UFNBbllYSnlZWGtuS1NCN1hHNGdJQ0FnZG1GeUlHbDBaVzF6SUQwZ2NISnZjR1Z5ZEhrdWFYUmxiWE03WEc0Z0lDQWdkR2hwY3k1eVpYTnZiSFpsVkc4b2NtOXZkQ3dnYVhSbGJYTXNJSEpsYzI5c2RYUnBiMjVVWVdKc1pTd2diRzlqWVhScGIyNHBPMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR2xtS0hCeWIzQmxjblI1SUNZbUlDaHdjbTl3WlhKMGVTNXdjbTl3WlhKMGFXVnpJSHg4SUhCeWIzQmxjblI1TG1Ga1pHbDBhVzl1WVd4UWNtOXdaWEowYVdWektTa2dlMXh1SUNBZ0lDQWdkbUZ5SUc1aGJXVWdQU0IwYUdsekxuVnVhWEYxWlU1aGJXVW9KMmx1YkdsdVpWOXRiMlJsYkNjcE8xeHVJQ0FnSUNBZ2FXWWdLSEJ5YjNCbGNuUjVMblJwZEd4bEtTQjdYRzRnSUNBZ0lDQWdJRzVoYldVZ1BTQjBhR2x6TG5WdWFYRjFaVTVoYldVb2NISnZjR1Z5ZEhrdWRHbDBiR1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWkdWc1pYUmxJSEJ5YjNCbGNuUjVMblJwZEd4bE8xeHVJQ0FnSUNBZ2RHaHBjeTV6Y0dWakxtUmxabWx1YVhScGIyNXpXMjVoYldWZElEMGdYeTVqYkc5dVpVUmxaWEFvY0hKdmNHVnlkSGtwTzF4dUlDQWdJQ0FnY0hKdmNHVnlkSGt1SkhKbFppQTlJQ2NqTDJSbFptbHVhWFJwYjI1ekx5Y2dLeUJ1WVcxbE8xeHVJQ0FnSUNBZ1pHVnNaWFJsSUhCeWIzQmxjblI1TG5SNWNHVTdYRzRnSUNBZ0lDQmtaV3hsZEdVZ2NISnZjR1Z5ZEhrdWNISnZjR1Z5ZEdsbGN6dGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibEpsYzI5c2RtVnlMbkJ5YjNSdmRIbHdaUzUxYm1seGRXVk9ZVzFsSUQwZ1puVnVZM1JwYjI0b1ltRnpaU2tnZTF4dUlDQjJZWElnYm1GdFpTQTlJR0poYzJVN1hHNGdJSFpoY2lCamIzVnVkQ0E5SURBN1hHNGdJSGRvYVd4bEtIUnlkV1VwSUh0Y2JpQWdJQ0JwWmlnaFh5NXBjMDlpYW1WamRDaDBhR2x6TG5Od1pXTXVaR1ZtYVc1cGRHbHZibk5iYm1GdFpWMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdibUZ0WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdibUZ0WlNBOUlHSmhjMlVnS3lBblh5Y2dLeUJqYjNWdWREdGNiaUFnSUNCamIzVnVkQ3NyTzF4dUlDQjlYRzU5TzF4dVhHNVNaWE52YkhabGNpNXdjbTkwYjNSNWNHVXVjbVZ6YjJ4MlpVRnNiRTltSUQwZ1puVnVZM1JwYjI0b2MzQmxZeXdnYjJKcUxDQmtaWEIwYUNrZ2UxeHVJQ0JrWlhCMGFDQTlJR1JsY0hSb0lIeDhJREE3WEc0Z0lHOWlhaUE5SUc5aWFpQjhmQ0J6Y0dWak8xeHVJQ0IyWVhJZ2JtRnRaVHRjYmlBZ1ptOXlLSFpoY2lCclpYa2dhVzRnYjJKcUtTQjdYRzRnSUNBZ2FXWWdLQ0Z2WW1vdWFHRnpUM2R1VUhKdmNHVnlkSGtvYTJWNUtTa2dlMXh1SUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQnBkR1Z0SUQwZ2IySnFXMnRsZVYwN1hHNGdJQ0FnYVdZb2FYUmxiU0E5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnblUzZGhaMmRsY2lBeUxqQWdaRzlsY3lCdWIzUWdjM1Z3Y0c5eWRDQnVkV3hzSUhSNWNHVnpJQ2duSUNzZ2IySnFJQ3NnSnlrdUlDQlRaV1VnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDNOM1lXZG5aWEl0WVhCcEwzTjNZV2RuWlhJdGMzQmxZeTlwYzNOMVpYTXZNakk1TGljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmloMGVYQmxiMllnYVhSbGJTQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ6YjJ4MlpVRnNiRTltS0hOd1pXTXNJR2wwWlcwc0lHUmxjSFJvSUNzZ01TazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUtHbDBaVzBnSmlZZ2RIbHdaVzltSUdsMFpXMHVZV3hzVDJZZ0lUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNCMllYSWdZV3hzVDJZZ1BTQnBkR1Z0TG1Gc2JFOW1PMXh1SUNBZ0lDQWdhV1lvWHk1cGMwRnljbUY1S0dGc2JFOW1LU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdiM1YwY0hWMElEMGdYeTVqYkc5dVpVUmxaWEFvYVhSbGJTazdYRzRnSUNBZ0lDQWdJR1JsYkdWMFpTQnZkWFJ3ZFhRdVlXeHNUMlk3WEc1Y2JpQWdJQ0FnSUNBZ2IzVjBjSFYwV3lkNExXTnZiWEJ2YzJWa0oxMGdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR2wwWlcxYkozZ3RjbVZ6YjJ4MlpXUXRabkp2YlNkZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzkxZEhCMWRGc25lQzF5WlhOdmJIWmxaQzFtY205dEoxMGdQU0JwZEdWdFd5ZDRMWEpsYzI5c2RtVmtMV1p5YjIwblhUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdadmNpaDJZWElnYVNBOUlEQTdJR2tnUENCaGJHeFBaaTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCamIyMXdiMjVsYm5RZ1BTQmhiR3hQWmx0cFhUdGNiaUFnSUNBZ0lDQWdJQ0IyWVhJZ2MyOTFjbU5sSUQwZ0ozTmxiR1luTzF4dUlDQWdJQ0FnSUNBZ0lHbG1LSFI1Y0dWdlppQmpiMjF3YjI1bGJuUmJKM2d0Y21WemIyeDJaV1F0Wm5KdmJTZGRJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyOTFjbU5sSUQwZ1kyOXRjRzl1Wlc1MFd5ZDRMWEpsYzI5c2RtVmtMV1p5YjIwblhWc3dYVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JtYjNJb2RtRnlJSEJoY25RZ2FXNGdZMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaWdoYjNWMGNIVjBMbWhoYzA5M2JsQnliM0JsY25SNUtIQmhjblFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUc5MWRIQjFkRnR3WVhKMFhTQTlJRjh1WTJ4dmJtVkVaV1Z3S0dOdmJYQnZibVZ1ZEZ0d1lYSjBYU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0hCaGNuUWdQVDA5SUNkd2NtOXdaWEowYVdWekp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lodVlXMWxJR2x1SUc5MWRIQjFkRnR3WVhKMFhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjNWMGNIVjBXM0JoY25SZFcyNWhiV1ZkV3lkNExYSmxjMjlzZG1Wa0xXWnliMjBuWFNBOUlITnZkWEpqWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlod1lYSjBJRDA5UFNBbmNISnZjR1Z5ZEdsbGN5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2NISnZjR1Z5ZEdsbGN5QTlJR052YlhCdmJtVnVkRnR3WVhKMFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lvYm1GdFpTQnBiaUJ3Y205d1pYSjBhV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZkWFJ3ZFhRdWNISnZjR1Z5ZEdsbGMxdHVZVzFsWFNBOUlGOHVZMnh2Ym1WRVpXVndLSEJ5YjNCbGNuUnBaWE5iYm1GdFpWMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlISmxjMjlzZG1Wa1JuSnZiU0E5SUhCeWIzQmxjblJwWlhOYmJtRnRaVjFiSjNndGNtVnpiMngyWldRdFpuSnZiU2RkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnlaWE52YkhabFpFWnliMjBnUFQwOUlDZDFibVJsWm1sdVpXUW5JSHg4SUhKbGMyOXNkbVZrUm5KdmJTQTlQVDBnSjNObGJHWW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjMjlzZG1Wa1JuSnZiU0E5SUhOdmRYSmpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOTFkSEIxZEM1d2NtOXdaWEowYVdWelcyNWhiV1ZkV3lkNExYSmxjMjlzZG1Wa0xXWnliMjBuWFNBOUlISmxjMjlzZG1Wa1JuSnZiVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppaHdZWEowSUQwOVBTQW5jbVZ4ZFdseVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2JXVnlaMlVnSmlCa1pXUjFjQ0IwYUdVZ2NtVnhkV2x5WldRZ1lYSnlZWGxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ1lTQTlJRzkxZEhCMWRDNXlaWEYxYVhKbFpDNWpiMjVqWVhRb1kyOXRjRzl1Wlc1MFczQmhjblJkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbWIzSW9kbUZ5SUdzZ1BTQXdPeUJySUR3Z1lTNXNaVzVuZEdnN0lDc3JheWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlLSFpoY2lCcUlEMGdheUFySURFN0lHb2dQQ0JoTG14bGJtZDBhRHNnS3l0cUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtHRmJhMTBnUFQwOUlHRmJhbDBwSUhzZ1lTNXpjR3hwWTJVb2FpMHRMQ0F4S1RzZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2ZFhSd2RYUXVjbVZ4ZFdseVpXUWdQU0JoTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWW9jR0Z5ZENBOVBUMGdKM2d0Y21WemIyeDJaV1F0Wm5KdmJTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2ZFhSd2RYUmJKM2d0Y21WemIyeDJaV1F0Wm5KdmJTZGRMbkIxYzJnb2MyOTFjbU5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJVVDBSUE9pQnVaV1ZrSUhSdklHMWxjbWRsSUhSb2FYTWdjSEp2Y0dWeWRIbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJqYjI1emIyeGxMbXh2WnlnbmQyaGhkQ0IwYnlCa2J5QjNhWFJvSUNjZ0t5QndZWEowS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHOWlhbHRyWlhsZElEMGdiM1YwY0hWME8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlR0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUVobGJIQmxjbk1nUFNCeVpYRjFhWEpsS0NjdUwyaGxiSEJsY25NbktUdGNibHh1ZG1GeUlGOGdQU0I3WEc0Z0lHbHpVR3hoYVc1UFltcGxZM1E2SUhKbGNYVnBjbVVvSjJ4dlpHRnphQzFqYjIxd1lYUXZiR0Z1Wnk5cGMxQnNZV2x1VDJKcVpXTjBKeWtzWEc0Z0lHbHpWVzVrWldacGJtVmtPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhOVmJtUmxabWx1WldRbktTeGNiaUFnYVhOQmNuSmhlVG9nY21WeGRXbHlaU2duYkc5a1lYTm9MV052YlhCaGRDOXNZVzVuTDJselFYSnlZWGtuS1N4Y2JpQWdhWE5QWW1wbFkzUTZJSEpsY1hWcGNtVW9KMnh2WkdGemFDMWpiMjF3WVhRdmJHRnVaeTlwYzA5aWFtVmpkQ2NwTEZ4dUlDQnBjMFZ0Y0hSNU9pQnlaWEYxYVhKbEtDZHNiMlJoYzJndFkyOXRjR0YwTDJ4aGJtY3ZhWE5GYlhCMGVTY3BMRnh1SUNCdFlYQTZJSEpsY1hWcGNtVW9KMnh2WkdGemFDMWpiMjF3WVhRdlkyOXNiR1ZqZEdsdmJpOXRZWEFuS1N4Y2JpQWdhVzVrWlhoUFpqb2djbVZ4ZFdseVpTZ25iRzlrWVhOb0xXTnZiWEJoZEM5aGNuSmhlUzlwYm1SbGVFOW1KeWtzWEc0Z0lHTnNiMjVsUkdWbGNEb2djbVZ4ZFdseVpTZ25iRzlrWVhOb0xXTnZiWEJoZEM5c1lXNW5MMk5zYjI1bFJHVmxjQ2NwTEZ4dUlDQnJaWGx6T2lCeVpYRjFhWEpsS0Nkc2IyUmhjMmd0WTI5dGNHRjBMMjlpYW1WamRDOXJaWGx6Snlrc1hHNGdJR1p2Y2tWaFkyZzZJSEpsY1hWcGNtVW9KMnh2WkdGemFDMWpiMjF3WVhRdlkyOXNiR1ZqZEdsdmJpOW1iM0pGWVdOb0p5bGNibjA3WEc1Y2JuWmhjaUJ2Y0hScGIyNUlkRzFzSUQwZ2JXOWtkV3hsTG1WNGNHOXlkSE11YjNCMGFXOXVTSFJ0YkNBOUlHWjFibU4wYVc5dUlDQW9iR0ZpWld3c0lIWmhiSFZsS1NCN1hHNGdJSEpsZEhWeWJpQW5QSFJ5UGp4MFpDQmpiR0Z6Y3oxY0ltOXdkR2x2Yms1aGJXVmNJajRuSUNzZ2JHRmlaV3dnS3lBbk9qd3ZkR1ErUEhSa1BpY2dLeUIyWVd4MVpTQXJJQ2M4TDNSa1Bqd3ZkSEkrSnp0Y2JuMDdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpMblI1Y0dWR2NtOXRTbk52YmxOamFHVnRZU0E5SUdaMWJtTjBhVzl1SUNoMGVYQmxMQ0JtYjNKdFlYUXBJSHRjYmlBZ2RtRnlJSE4wY2p0Y2JseHVJQ0JwWmlBb2RIbHdaU0E5UFQwZ0oybHVkR1ZuWlhJbklDWW1JR1p2Y20xaGRDQTlQVDBnSjJsdWRETXlKeWtnZTF4dUlDQWdJSE4wY2lBOUlDZHBiblJsWjJWeUp6dGNiaUFnZlNCbGJITmxJR2xtSUNoMGVYQmxJRDA5UFNBbmFXNTBaV2RsY2ljZ0ppWWdabTl5YldGMElEMDlQU0FuYVc1ME5qUW5LU0I3WEc0Z0lDQWdjM1J5SUQwZ0oyeHZibWNuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2RwYm5SbFoyVnlKeUFtSmlCMGVYQmxiMllnWm05eWJXRjBJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lITjBjaUE5SUNkc2IyNW5KenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5QW1KaUJtYjNKdFlYUWdQVDA5SUNka1lYUmxMWFJwYldVbktTQjdYRzRnSUNBZ2MzUnlJRDBnSjJSaGRHVXRkR2x0WlNjN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjNOMGNtbHVaeWNnSmlZZ1ptOXliV0YwSUQwOVBTQW5aR0YwWlNjcElIdGNiaUFnSUNCemRISWdQU0FuWkdGMFpTYzdYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oyNTFiV0psY2ljZ0ppWWdabTl5YldGMElEMDlQU0FuWm14dllYUW5LU0I3WEc0Z0lDQWdjM1J5SUQwZ0oyWnNiMkYwSnp0Y2JpQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYm5WdFltVnlKeUFtSmlCbWIzSnRZWFFnUFQwOUlDZGtiM1ZpYkdVbktTQjdYRzRnSUNBZ2MzUnlJRDBnSjJSdmRXSnNaU2M3WEc0Z0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMjUxYldKbGNpY2dKaVlnZEhsd1pXOW1JR1p2Y20xaGRDQTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNCemRISWdQU0FuWkc5MVlteGxKenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5ZbTl2YkdWaGJpY3BJSHRjYmlBZ0lDQnpkSElnUFNBblltOXZiR1ZoYmljN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0J6ZEhJZ1BTQW5jM1J5YVc1bkp6dGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnpkSEk3WEc1OU8xeHVYRzUyWVhJZ1oyVjBVM1J5YVc1blUybG5ibUYwZFhKbElEMGdiVzlrZFd4bExtVjRjRzl5ZEhNdVoyVjBVM1J5YVc1blUybG5ibUYwZFhKbElEMGdablZ1WTNScGIyNGdLRzlpYWl3Z1ltRnpaVU52YlhCdmJtVnVkQ2tnZTF4dUlDQjJZWElnYzNSeUlEMGdKeWM3WEc1Y2JpQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdUpISmxaaUFoUFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQnpkSElnS3owZ1NHVnNjR1Z5Y3k1emFXMXdiR1ZTWldZb2IySnFMaVJ5WldZcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJ2WW1vdWRIbHdaU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQnpkSElnS3owZ0oyOWlhbVZqZENjN1hHNGdJSDBnWld4elpTQnBaaUFvYjJKcUxuUjVjR1VnUFQwOUlDZGhjbkpoZVNjcElIdGNiaUFnSUNCcFppQW9ZbUZ6WlVOdmJYQnZibVZ1ZENrZ2UxeHVJQ0FnSUNBZ2MzUnlJQ3M5SUdkbGRGTjBjbWx1WjFOcFoyNWhkSFZ5WlNnb2IySnFMbWwwWlcxeklIeDhJRzlpYWk0a2NtVm1JSHg4SUh0OUtTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhOMGNpQXJQU0FuUVhKeVlYbGJKenRjYmlBZ0lDQWdJSE4wY2lBclBTQm5aWFJUZEhKcGJtZFRhV2R1WVhSMWNtVW9LRzlpYWk1cGRHVnRjeUI4ZkNCdlltb3VKSEpsWmlCOGZDQjdmU2twTzF4dUlDQWdJQ0FnYzNSeUlDczlJQ2RkSnp0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9iMkpxTG5SNWNHVWdQVDA5SUNkcGJuUmxaMlZ5SnlBbUppQnZZbW91Wm05eWJXRjBJRDA5UFNBbmFXNTBNekluS1NCN1hHNGdJQ0FnYzNSeUlDczlJQ2RwYm5SbFoyVnlKenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHZZbW91ZEhsd1pTQTlQVDBnSjJsdWRHVm5aWEluSUNZbUlHOWlhaTVtYjNKdFlYUWdQVDA5SUNkcGJuUTJOQ2NwSUh0Y2JpQWdJQ0J6ZEhJZ0t6MGdKMnh2Ym1jbk8xeHVJQ0I5SUdWc2MyVWdhV1lnS0c5aWFpNTBlWEJsSUQwOVBTQW5hVzUwWldkbGNpY2dKaVlnZEhsd1pXOW1JRzlpYWk1bWIzSnRZWFFnUFQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdjM1J5SUNzOUlDZHNiMjVuSnp0Y2JpQWdmU0JsYkhObElHbG1JQ2h2WW1vdWRIbHdaU0E5UFQwZ0ozTjBjbWx1WnljZ0ppWWdiMkpxTG1admNtMWhkQ0E5UFQwZ0oyUmhkR1V0ZEdsdFpTY3BJSHRjYmlBZ0lDQnpkSElnS3owZ0oyUmhkR1V0ZEdsdFpTYzdYRzRnSUgwZ1pXeHpaU0JwWmlBb2IySnFMblI1Y0dVZ1BUMDlJQ2R6ZEhKcGJtY25JQ1ltSUc5aWFpNW1iM0p0WVhRZ1BUMDlJQ2RrWVhSbEp5a2dlMXh1SUNBZ0lITjBjaUFyUFNBblpHRjBaU2M3WEc0Z0lIMGdaV3h6WlNCcFppQW9iMkpxTG5SNWNHVWdQVDA5SUNkemRISnBibWNuSUNZbUlIUjVjR1Z2WmlCdlltb3VabTl5YldGMElEMDlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUhOMGNpQXJQU0FuYzNSeWFXNW5KenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHZZbW91ZEhsd1pTQTlQVDBnSjI1MWJXSmxjaWNnSmlZZ2IySnFMbVp2Y20xaGRDQTlQVDBnSjJac2IyRjBKeWtnZTF4dUlDQWdJSE4wY2lBclBTQW5abXh2WVhRbk8xeHVJQ0I5SUdWc2MyVWdhV1lnS0c5aWFpNTBlWEJsSUQwOVBTQW5iblZ0WW1WeUp5QW1KaUJ2WW1vdVptOXliV0YwSUQwOVBTQW5aRzkxWW14bEp5a2dlMXh1SUNBZ0lITjBjaUFyUFNBblpHOTFZbXhsSnp0Y2JpQWdmU0JsYkhObElHbG1JQ2h2WW1vdWRIbHdaU0E5UFQwZ0oyNTFiV0psY2ljZ0ppWWdkSGx3Wlc5bUlHOWlhaTVtYjNKdFlYUWdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ2MzUnlJQ3M5SUNka2IzVmliR1VuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLRzlpYWk1MGVYQmxJRDA5UFNBblltOXZiR1ZoYmljcElIdGNiaUFnSUNCemRISWdLejBnSjJKdmIyeGxZVzRuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLRzlpYWk0a2NtVm1LU0I3WEc0Z0lDQWdjM1J5SUNzOUlFaGxiSEJsY25NdWMybHRjR3hsVW1WbUtHOWlhaTRrY21WbUtUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnpkSElnS3owZ2IySnFMblI1Y0dVN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2MzUnlPMXh1ZlR0Y2JseHVkbUZ5SUhOamFHVnRZVlJ2U2xOUFRpQTlJRzF2WkhWc1pTNWxlSEJ2Y25SekxuTmphR1Z0WVZSdlNsTlBUaUE5SUdaMWJtTjBhVzl1SUNoelkyaGxiV0VzSUcxdlpHVnNjeXdnYlc5a1pXeHpWRzlKWjI1dmNtVXNJRzF2WkdWc1VISnZjR1Z5ZEhsTllXTnlieWtnZTF4dUlDQXZMeUJTWlhOdmJIWmxJSFJvWlNCelkyaGxiV0VnS0VoaGJtUnNaU0J1WlhOMFpXUWdjMk5vWlcxaGN5bGNiaUFnYzJOb1pXMWhJRDBnU0dWc2NHVnljeTV5WlhOdmJIWmxVMk5vWlcxaEtITmphR1Z0WVNrN1hHNWNiaUFnYVdZb2RIbHdaVzltSUcxdlpHVnNVSEp2Y0dWeWRIbE5ZV055YnlBaFBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJRzF2WkdWc1VISnZjR1Z5ZEhsTllXTnlieUE5SUdaMWJtTjBhVzl1S0hCeWIzQXBlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDaHdjbTl3SUh4OElIdDlLUzVrWldaaGRXeDBPMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0J0YjJSbGJITlViMGxuYm05eVpUMGdiVzlrWld4elZHOUpaMjV2Y21VZ2ZId2dlMzA3WEc1Y2JpQWdkbUZ5SUhSNWNHVWdQU0J6WTJobGJXRXVkSGx3WlNCOGZDQW5iMkpxWldOMEp6dGNiaUFnZG1GeUlHWnZjbTFoZENBOUlITmphR1Z0WVM1bWIzSnRZWFE3WEc0Z0lIWmhjaUJ0YjJSbGJEdGNiaUFnZG1GeUlHOTFkSEIxZER0Y2JseHVJQ0JwWmlBb0lWOHVhWE5WYm1SbFptbHVaV1FvYzJOb1pXMWhMbVY0WVcxd2JHVXBLU0I3WEc0Z0lDQWdiM1YwY0hWMElEMGdjMk5vWlcxaExtVjRZVzF3YkdVN1hHNGdJSDBnWld4elpTQnBaaUFvWHk1cGMxVnVaR1ZtYVc1bFpDaHpZMmhsYldFdWFYUmxiWE1wSUNZbUlGOHVhWE5CY25KaGVTaHpZMmhsYldFdVpXNTFiU2twSUh0Y2JpQWdJQ0J2ZFhSd2RYUWdQU0J6WTJobGJXRXVaVzUxYlZzd1hUdGNiaUFnZlZ4dVhHNGdJR2xtSUNoZkxtbHpWVzVrWldacGJtVmtLRzkxZEhCMWRDa3BJSHRjYmlBZ0lDQnBaaUFvYzJOb1pXMWhMaVJ5WldZcElIdGNiaUFnSUNBZ0lHMXZaR1ZzSUQwZ2JXOWtaV3h6VzBobGJIQmxjbk11YzJsdGNHeGxVbVZtS0hOamFHVnRZUzRrY21WbUtWMDdYRzVjYmlBZ0lDQWdJR2xtSUNnaFh5NXBjMVZ1WkdWbWFXNWxaQ2h0YjJSbGJDa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tGOHVhWE5WYm1SbFptbHVaV1FvYlc5a1pXeHpWRzlKWjI1dmNtVmJiVzlrWld3dWJtRnRaVjBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiVzlrWld4elZHOUpaMjV2Y21WYmJXOWtaV3d1Ym1GdFpWMGdQU0J0YjJSbGJEdGNiaUFnSUNBZ0lDQWdJQ0J2ZFhSd2RYUWdQU0J6WTJobGJXRlViMHBUVDA0b2JXOWtaV3d1WkdWbWFXNXBkR2x2Yml3Z2JXOWtaV3h6TENCdGIyUmxiSE5VYjBsbmJtOXlaU3dnYlc5a1pXeFFjbTl3WlhKMGVVMWhZM0p2S1R0Y2JpQWdJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2JXOWtaV3h6Vkc5SloyNXZjbVZiYlc5a1pXd3VibUZ0WlYwN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0cxdlpHVnNMblI1Y0dVZ1BUMDlJQ2RoY25KaGVTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHOTFkSEIxZENBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnZkWFJ3ZFhRZ1BTQjdmVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tDRmZMbWx6Vlc1a1pXWnBibVZrS0hOamFHVnRZUzVrWldaaGRXeDBLU2tnZTF4dUlDQWdJQ0FnYjNWMGNIVjBJRDBnYzJOb1pXMWhMbVJsWm1GMWJIUTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdhV1lnS0dadmNtMWhkQ0E5UFQwZ0oyUmhkR1V0ZEdsdFpTY3BJSHRjYmlBZ0lDQWdJQ0FnYjNWMGNIVjBJRDBnYm1WM0lFUmhkR1VvS1M1MGIwbFRUMU4wY21sdVp5Z3BPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2htYjNKdFlYUWdQVDA5SUNka1lYUmxKeWtnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFFnUFNCdVpYY2dSR0YwWlNncExuUnZTVk5QVTNSeWFXNW5LQ2t1YzNCc2FYUW9KMVFuS1Zzd1hUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHOTFkSEIxZENBOUlDZHpkSEpwYm1jbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oybHVkR1ZuWlhJbktTQjdYRzRnSUNBZ0lDQnZkWFJ3ZFhRZ1BTQXdPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMjUxYldKbGNpY3BJSHRjYmlBZ0lDQWdJRzkxZEhCMWRDQTlJREF1TUR0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVWdQVDA5SUNkaWIyOXNaV0Z1SnlrZ2UxeHVJQ0FnSUNBZ2IzVjBjSFYwSUQwZ2RISjFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdJQ0J2ZFhSd2RYUWdQU0I3ZlR0Y2JseHVJQ0FnSUNBZ1h5NW1iM0pGWVdOb0tITmphR1Z0WVM1d2NtOXdaWEowYVdWekxDQm1kVzVqZEdsdmJpQW9jSEp2Y0dWeWRIa3NJRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOUWNtOXdaWEowZVNBOUlGOHVZMnh2Ym1WRVpXVndLSEJ5YjNCbGNuUjVLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5QkJiR3h2ZHlCdFlXTnlieUIwYnlCelpYUWdkR2hsSUdSbFptRjFiSFFnZG1Gc2RXVmNiaUFnSUNBZ0lDQWdZMUJ5YjNCbGNuUjVMbVJsWm1GMWJIUWdQU0J0YjJSbGJGQnliM0JsY25SNVRXRmpjbThvY0hKdmNHVnlkSGtwTzF4dVhHNGdJQ0FnSUNBZ0lHOTFkSEIxZEZ0dVlXMWxYU0E5SUhOamFHVnRZVlJ2U2xOUFRpaGpVSEp2Y0dWeWRIa3NJRzF2WkdWc2N5d2diVzlrWld4elZHOUpaMjV2Y21Vc0lHMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5azdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2RoY25KaGVTY3BJSHRjYmlBZ0lDQWdJRzkxZEhCMWRDQTlJRnRkTzF4dVhHNGdJQ0FnSUNCcFppQW9YeTVwYzBGeWNtRjVLSE5qYUdWdFlTNXBkR1Z0Y3lrcElIdGNiaUFnSUNBZ0lDQWdYeTVtYjNKRllXTm9LSE5qYUdWdFlTNXBkR1Z0Y3l3Z1puVnVZM1JwYjI0Z0tHbDBaVzBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnZkWFJ3ZFhRdWNIVnphQ2h6WTJobGJXRlViMHBUVDA0b2FYUmxiU3dnYlc5a1pXeHpMQ0J0YjJSbGJITlViMGxuYm05eVpTd2diVzlrWld4UWNtOXdaWEowZVUxaFkzSnZLU2s3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGZMbWx6VUd4aGFXNVBZbXBsWTNRb2MyTm9aVzFoTG1sMFpXMXpLU2tnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFF1Y0hWemFDaHpZMmhsYldGVWIwcFRUMDRvYzJOb1pXMWhMbWwwWlcxekxDQnRiMlJsYkhNc0lHMXZaR1ZzYzFSdlNXZHViM0psTENCdGIyUmxiRkJ5YjNCbGNuUjVUV0ZqY204cEtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9YeTVwYzFWdVpHVm1hVzVsWkNoelkyaGxiV0V1YVhSbGJYTXBLU0I3WEc0Z0lDQWdJQ0FnSUc5MWRIQjFkQzV3ZFhOb0tIdDlLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRWhsYkhCbGNuTXViRzluS0NkQmNuSmhlU0IwZVhCbFhGd25jeUJjWENkcGRHVnRjMXhjSnlCd2NtOXdaWEowZVNCcGN5QnViM1FnWVc0Z1lYSnlZWGtnYjNJZ1lXNGdiMkpxWldOMExDQmpZVzV1YjNRZ2NISnZZMlZ6Y3ljcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdmRYUndkWFE3WEc1OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5NXpZMmhsYldGVWIwaFVUVXdnUFdaMWJtTjBhVzl1SUNodVlXMWxMQ0J6WTJobGJXRXNJRzF2WkdWc2N5d2diVzlrWld4UWNtOXdaWEowZVUxaFkzSnZLU0I3WEc0Z0lIWmhjaUJ6ZEhKdmJtZFBjR1Z1SUQwZ0p6eHpjR0Z1SUdOc1lYTnpQVndpYzNSeWIyNW5YQ0krSnp0Y2JpQWdkbUZ5SUhOMGNtOXVaME5zYjNObElEMGdKend2YzNCaGJqNG5PMXh1WEc0Z0lDOHZJRUZzYkc5M0lHWnZjaUJwWjI1dmNtbHVaeUIwYUdVZ0oyNWhiV1VuSUdGeVozVnRaVzUwTGk0dUxpQnphR2xtZEdsdVp5QjBhR1VnY21WemRGeHVJQ0JwWmloZkxtbHpUMkpxWldOMEtHRnlaM1Z0Wlc1MGMxc3dYU2twSUh0Y2JpQWdJQ0J1WVcxbElEMGdkbTlwWkNBd08xeHVJQ0FnSUhOamFHVnRZU0E5SUdGeVozVnRaVzUwYzFzd1hUdGNiaUFnSUNCdGIyUmxiSE1nUFNCaGNtZDFiV1Z1ZEhOYk1WMDdYRzRnSUNBZ2JXOWtaV3hRY205d1pYSjBlVTFoWTNKdklEMGdZWEpuZFcxbGJuUnpXekpkTzF4dUlDQjlYRzVjYmlBZ2JXOWtaV3h6SUQwZ2JXOWtaV3h6SUh4OElIdDlPMXh1WEc0Z0lDOHZJRkpsYzI5c2RtVWdkR2hsSUhOamFHVnRZU0FvU0dGdVpHeGxJRzVsYzNSbFpDQnpZMmhsYldGektWeHVJQ0J6WTJobGJXRWdQU0JJWld4d1pYSnpMbkpsYzI5c2RtVlRZMmhsYldFb2MyTm9aVzFoS1R0Y2JseHVJQ0F2THlCU1pYUjFjbTRnWm05eUlHVnRjSFI1SUc5aWFtVmpkRnh1SUNCcFppaGZMbWx6Ulcxd2RIa29jMk5vWlcxaEtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCemRISnZibWRQY0dWdUlDc2dKMFZ0Y0hSNUp5QXJJSE4wY205dVowTnNiM05sTzF4dUlDQjlYRzVjYmlBZ0x5OGdSR1Z5WldabGNtVnVZMlVnSkhKbFppQm1jbTl0SUNkdGIyUmxiSE1uWEc0Z0lHbG1LSFI1Y0dWdlppQnpZMmhsYldFdUpISmxaaUE5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNCdVlXMWxJRDBnU0dWc2NHVnljeTV6YVcxd2JHVlNaV1lvYzJOb1pXMWhMaVJ5WldZcE8xeHVJQ0FnSUhOamFHVnRZU0E5SUcxdlpHVnNjMXR1WVcxbFhUdGNiaUFnSUNCcFppaDBlWEJsYjJZZ2MyTm9aVzFoSUQwOVBTQW5kVzVrWldacGJtVmtKeWxjYmlBZ0lDQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2MzUnliMjVuVDNCbGJpQXJJRzVoYldVZ0t5QW5JR2x6SUc1dmRDQmtaV1pwYm1Wa0lTY2dLeUJ6ZEhKdmJtZERiRzl6WlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCcFppaDBlWEJsYjJZZ2JtRnRaU0FoUFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNCdVlXMWxJRDBnYzJOb1pXMWhMblJwZEd4bElIeDhJQ2RKYm14cGJtVWdUVzlrWld3bk8xeHVJQ0I5WEc1Y2JpQWdMeThnU1dZZ2QyVWdZWEpsSUdFZ1RXOWtaV3dnYjJKcVpXTjBMaTR1SUdGa2FuVnpkQ0JoWTJOdmNtUnBibWRzZVZ4dUlDQnBaaWh6WTJobGJXRXVaR1ZtYVc1cGRHbHZiaWtnZTF4dUlDQWdJSE5qYUdWdFlTQTlJSE5qYUdWdFlTNWtaV1pwYm1sMGFXOXVPMXh1SUNCOVhHNWNiaUFnYVdZb2RIbHdaVzltSUcxdlpHVnNVSEp2Y0dWeWRIbE5ZV055YnlBaFBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJRzF2WkdWc1VISnZjR1Z5ZEhsTllXTnlieUE5SUdaMWJtTjBhVzl1S0hCeWIzQXBlMXh1SUNBZ0lDQWdjbVYwZFhKdUlDaHdjbTl3SUh4OElIdDlLUzVrWldaaGRXeDBPMXh1SUNBZ0lIMDdYRzRnSUgxY2JseHVJQ0IyWVhJZ2NtVm1aWEpsYm1ObGN5QTlJSHQ5TzF4dUlDQjJZWElnYzJWbGJrMXZaR1ZzY3lBOUlGdGRPMXh1SUNCMllYSWdhVzVzYVc1bFRXOWtaV3h6SUQwZ01EdGNibHh1WEc1Y2JpQWdMeThnUjJWdVpYSmhkR1VnWTNWeWNtVnVkQ0JJVkUxTVhHNGdJSFpoY2lCb2RHMXNJRDBnY0hKdlkyVnpjMDF2WkdWc0tITmphR1Z0WVN3Z2JtRnRaU2s3WEc1Y2JpQWdMeThnUjJWdVpYSmhkR1VnY21WbVpYSmxibU5sY3lCSVZFMU1YRzRnSUhkb2FXeGxJQ2hmTG10bGVYTW9jbVZtWlhKbGJtTmxjeWt1YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUM4cUlHcHphR2x1ZENCcFoyNXZjbVU2YzNSaGNuUWdLaTljYmlBZ0lDQmZMbVp2Y2tWaFkyZ29jbVZtWlhKbGJtTmxjeXdnWm5WdVkzUnBiMjRnS0hOamFHVnRZU3dnYm1GdFpTa2dlMXh1SUNBZ0lDQWdkbUZ5SUhObFpXNU5iMlJsYkNBOUlGOHVhVzVrWlhoUFppaHpaV1Z1VFc5a1pXeHpMQ0J1WVcxbEtTQStJQzB4TzF4dVhHNGdJQ0FnSUNCa1pXeGxkR1VnY21WbVpYSmxibU5sYzF0dVlXMWxYVHRjYmx4dUlDQWdJQ0FnYVdZZ0tDRnpaV1Z1VFc5a1pXd3BJSHRjYmlBZ0lDQWdJQ0FnYzJWbGJrMXZaR1ZzY3k1d2RYTm9LRzVoYldVcE8xeHVYRzRnSUNBZ0lDQWdJR2gwYld3Z0t6MGdKenhpY2lBdlBpY2dLeUJ3Y205alpYTnpUVzlrWld3b2MyTm9aVzFoTENCdVlXMWxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ0lDQXZLaUJxYzJocGJuUWdhV2R1YjNKbE9tVnVaQ0FxTDF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdoMGJXdzdYRzVjYmlBZ0x5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1Y2JpQWdablZ1WTNScGIyNGdZV1JrVW1WbVpYSmxibU5sS0hOamFHVnRZU3dnYm1GdFpTd2djMnRwY0ZKbFppa2dlMXh1SUNBZ0lIWmhjaUJ0YjJSbGJFNWhiV1VnUFNCdVlXMWxPMXh1SUNBZ0lIWmhjaUJ0YjJSbGJEdGNibHh1SUNBZ0lHbG1JQ2h6WTJobGJXRXVKSEpsWmlrZ2UxeHVJQ0FnSUNBZ2JXOWtaV3hPWVcxbElEMGdjMk5vWlcxaExuUnBkR3hsSUh4OElFaGxiSEJsY25NdWMybHRjR3hsVW1WbUtITmphR1Z0WVM0a2NtVm1LVHRjYmlBZ0lDQWdJRzF2WkdWc0lEMGdiVzlrWld4elcyMXZaR1ZzVG1GdFpWMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGZMbWx6Vlc1a1pXWnBibVZrS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0J0YjJSbGJFNWhiV1VnUFNCelkyaGxiV0V1ZEdsMGJHVWdmSHdnSjBsdWJHbHVaU0JOYjJSbGJDQW5JQ3NnS0NzcmFXNXNhVzVsVFc5a1pXeHpLVHRjYmlBZ0lDQWdJRzF2WkdWc0lEMGdlMlJsWm1sdWFYUnBiMjQ2SUhOamFHVnRZWDA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hOcmFYQlNaV1lnSVQwOUlIUnlkV1VwSUh0Y2JpQWdJQ0FnSUhKbFptVnlaVzVqWlhOYmJXOWtaV3hPWVcxbFhTQTlJRjh1YVhOVmJtUmxabWx1WldRb2JXOWtaV3dwSUQ4Z2UzMGdPaUJ0YjJSbGJDNWtaV1pwYm1sMGFXOXVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCdGIyUmxiRTVoYldVN1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQndjbWx0YVhScGRtVlViMGhVVFV3b2MyTm9aVzFoS1NCN1hHNGdJQ0FnZG1GeUlHaDBiV3dnUFNBblBITndZVzRnWTJ4aGMzTTlYQ0p3Y205d1ZIbHdaVndpUGljN1hHNGdJQ0FnZG1GeUlIUjVjR1VnUFNCelkyaGxiV0V1ZEhsd1pTQjhmQ0FuYjJKcVpXTjBKenRjYmx4dUlDQWdJR2xtSUNoelkyaGxiV0V1SkhKbFppa2dlMXh1SUNBZ0lDQWdhSFJ0YkNBclBTQmhaR1JTWldabGNtVnVZMlVvYzJOb1pXMWhMQ0JJWld4d1pYSnpMbk5wYlhCc1pWSmxaaWh6WTJobGJXRXVKSEpsWmlrcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oyOWlhbVZqZENjcElIdGNiaUFnSUNBZ0lHbG1JQ2doWHk1cGMxVnVaR1ZtYVc1bFpDaHpZMmhsYldFdWNISnZjR1Z5ZEdsbGN5a3BJSHRjYmlBZ0lDQWdJQ0FnYUhSdGJDQXJQU0JoWkdSU1pXWmxjbVZ1WTJVb2MyTm9aVzFoS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdoMGJXd2dLejBnSjI5aWFtVmpkQ2M3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuWVhKeVlYa25LU0I3WEc0Z0lDQWdJQ0JvZEcxc0lDczlJQ2RCY25KaGVWc25PMXh1WEc0Z0lDQWdJQ0JwWmlBb1h5NXBjMEZ5Y21GNUtITmphR1Z0WVM1cGRHVnRjeWtwSUh0Y2JpQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNCZkxtMWhjQ2h6WTJobGJXRXVhWFJsYlhNc0lHRmtaRkpsWm1WeVpXNWpaU2t1YW05cGJpZ25MQ2NwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoZkxtbHpVR3hoYVc1UFltcGxZM1FvYzJOb1pXMWhMbWwwWlcxektTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMVZ1WkdWbWFXNWxaQ2h6WTJobGJXRXVhWFJsYlhNdUpISmxaaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvSVY4dWFYTlZibVJsWm1sdVpXUW9jMk5vWlcxaExtbDBaVzF6TG5SNWNHVXBJQ1ltSUY4dWFXNWtaWGhQWmloYkoyRnljbUY1Snl3Z0oyOWlhbVZqZENkZExDQnpZMmhsYldFdWFYUmxiWE11ZEhsd1pTa2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUhOamFHVnRZUzVwZEdWdGN5NTBlWEJsTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JvZEcxc0lDczlJR0ZrWkZKbFptVnlaVzVqWlNoelkyaGxiV0V1YVhSbGJYTXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlHRmtaRkpsWm1WeVpXNWpaU2h6WTJobGJXRXVhWFJsYlhNc0lFaGxiSEJsY25NdWMybHRjR3hsVW1WbUtITmphR1Z0WVM1cGRHVnRjeTRrY21WbUtTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRWhsYkhCbGNuTXViRzluS0NkQmNuSmhlU0IwZVhCbFhGd25jeUJjWENkcGRHVnRjMXhjSnlCelkyaGxiV0VnYVhNZ2JtOTBJR0Z1SUdGeWNtRjVJRzl5SUdGdUlHOWlhbVZqZEN3Z1kyRnVibTkwSUhCeWIyTmxjM01uS1R0Y2JpQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNBbmIySnFaV04wSnp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FIUnRiQ0FyUFNBblhTYzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdoMGJXd2dLejBnYzJOb1pXMWhMblI1Y0dVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYUhSdGJDQXJQU0FuUEM5emNHRnVQaWM3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdhSFJ0YkR0Y2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlIQnlhVzFwZEdsMlpWUnZUM0IwYVc5dWMwaFVUVXdvYzJOb1pXMWhMQ0JvZEcxc0tTQjdYRzRnSUNBZ2RtRnlJRzl3ZEdsdmJuTWdQU0FuSnp0Y2JpQWdJQ0IyWVhJZ2RIbHdaU0E5SUhOamFHVnRZUzUwZVhCbElIeDhJQ2R2WW1wbFkzUW5PMXh1SUNBZ0lIWmhjaUJwYzBGeWNtRjVJRDBnZEhsd1pTQTlQVDBnSjJGeWNtRjVKenRjYmx4dUlDQWdJR2xtSUNocGMwRnljbUY1S1NCN1hHNGdJQ0FnSUNCcFppQW9YeTVwYzFCc1lXbHVUMkpxWldOMEtITmphR1Z0WVM1cGRHVnRjeWtnSmlZZ0lWOHVhWE5WYm1SbFptbHVaV1FvYzJOb1pXMWhMbWwwWlcxekxuUjVjR1VwS1NCN1hHNGdJQ0FnSUNBZ0lIUjVjR1VnUFNCelkyaGxiV0V1YVhSbGJYTXVkSGx3WlR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhSNWNHVWdQU0FuYjJKcVpXTjBKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSVY4dWFYTlZibVJsWm1sdVpXUW9jMk5vWlcxaExtUmxabUYxYkhRcEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1eklDczlJRzl3ZEdsdmJraDBiV3dvSjBSbFptRjFiSFFuTENCelkyaGxiV0V1WkdWbVlYVnNkQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjM2RwZEdOb0lDaDBlWEJsS1NCN1hHNGdJQ0FnWTJGelpTQW5jM1J5YVc1bkp6cGNiaUFnSUNBZ0lHbG1JQ2h6WTJobGJXRXViV2x1VEdWdVozUm9LU0I3WEc0Z0lDQWdJQ0FnSUc5d2RHbHZibk1nS3owZ2IzQjBhVzl1U0hSdGJDZ25UV2x1TGlCTVpXNW5kR2duTENCelkyaGxiV0V1YldsdVRHVnVaM1JvS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLSE5qYUdWdFlTNXRZWGhNWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVjeUFyUFNCdmNIUnBiMjVJZEcxc0tDZE5ZWGd1SUV4bGJtZDBhQ2NzSUhOamFHVnRZUzV0WVhoTVpXNW5kR2dwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jMk5vWlcxaExuQmhkSFJsY200cElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5QXJQU0J2Y0hScGIyNUlkRzFzS0NkU1pXY3VJRVY0Y0M0bkxDQnpZMmhsYldFdWNHRjBkR1Z5YmlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkcGJuUmxaMlZ5SnpwY2JpQWdJQ0JqWVhObElDZHVkVzFpWlhJbk9seHVJQ0FnSUNBZ2FXWWdLSE5qYUdWdFlTNXRhVzVwYlhWdEtTQjdYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdLejBnYjNCMGFXOXVTSFJ0YkNnblRXbHVMaUJXWVd4MVpTY3NJSE5qYUdWdFlTNXRhVzVwYlhWdEtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hOamFHVnRZUzVsZUdOc2RYTnBkbVZOYVc1cGJYVnRLU0I3WEc0Z0lDQWdJQ0FnSUc5d2RHbHZibk1nS3owZ2IzQjBhVzl1U0hSdGJDZ25SWGhqYkhWemFYWmxJRTFwYmk0bkxDQW5kSEoxWlNjcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvYzJOb1pXMWhMbTFoZUdsdGRXMHBJSHRjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVjeUFyUFNCdmNIUnBiMjVJZEcxc0tDZE5ZWGd1SUZaaGJIVmxKeXdnYzJOb1pXMWhMbTFoZUdsdGRXMHBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2MyTm9aVzFoTG1WNFkyeDFjMmwyWlUxaGVHbHRkVzBwSUh0Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBclBTQnZjSFJwYjI1SWRHMXNLQ2RGZUdOc2RYTnBkbVVnVFdGNExpY3NJQ2QwY25WbEp5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoelkyaGxiV0V1YlhWc2RHbHdiR1ZQWmlrZ2UxeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1eklDczlJRzl3ZEdsdmJraDBiV3dvSjAxMWJIUnBjR3hsSUU5bUp5d2djMk5vWlcxaExtMTFiSFJwY0d4bFQyWXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hWE5CY25KaGVTa2dlMXh1SUNBZ0lDQWdhV1lnS0hOamFHVnRZUzV0YVc1SmRHVnRjeWtnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6SUNzOUlHOXdkR2x2YmtoMGJXd29KMDFwYmk0Z1NYUmxiWE1uTENCelkyaGxiV0V1YldsdVNYUmxiWE1wTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jMk5vWlcxaExtMWhlRWwwWlcxektTQjdYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdLejBnYjNCMGFXOXVTSFJ0YkNnblRXRjRMaUJKZEdWdGN5Y3NJSE5qYUdWdFlTNXRZWGhKZEdWdGN5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoelkyaGxiV0V1ZFc1cGNYVmxTWFJsYlhNcElIdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5QXJQU0J2Y0hScGIyNUlkRzFzS0NkVmJtbHhkV1VnU1hSbGJYTW5MQ0FuZEhKMVpTY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2MyTm9aVzFoTG1OdmJHeGxZM1JwYjI1R2IzSnRZWFFwSUh0Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBclBTQnZjSFJwYjI1SWRHMXNLQ2REYjJ4c0xpQkdiM0p0WVhRbkxDQnpZMmhsYldFdVkyOXNiR1ZqZEdsdmJrWnZjbTFoZENrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tGOHVhWE5WYm1SbFptbHVaV1FvYzJOb1pXMWhMbWwwWlcxektTa2dlMXh1SUNBZ0lDQWdhV1lnS0Y4dWFYTkJjbkpoZVNoelkyaGxiV0V1Wlc1MWJTa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHVnVkVzFUZEhKcGJtYzdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1VnUFQwOUlDZHVkVzFpWlhJbklIeDhJSFI1Y0dVZ1BUMDlJQ2RwYm5SbFoyVnlKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHVnVkVzFUZEhKcGJtY2dQU0J6WTJobGJXRXVaVzUxYlM1cWIybHVLQ2NzSUNjcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJR1Z1ZFcxVGRISnBibWNnUFNBblhDSW5JQ3NnYzJOb1pXMWhMbVZ1ZFcwdWFtOXBiaWduWENJc0lGd2lKeWtnS3lBblhDSW5PMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBclBTQnZjSFJwYjI1SWRHMXNLQ2RGYm5WdEp5d2daVzUxYlZOMGNtbHVaeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUNBZ2FIUnRiQ0E5SUNjOGMzQmhiaUJqYkdGemN6MWNJbkJ5YjNCWGNtRndYQ0krSnlBcklHaDBiV3dnS3lBblBIUmhZbXhsSUdOc1lYTnpQVndpYjNCMGFXOXVjMWR5WVhCd1pYSmNJajQ4ZEhJK1BIUm9JR052YkhOd1lXNDlYQ0l5WENJK0p5QXJJSFI1Y0dVZ0t5QW5QQzkwYUQ0OEwzUnlQaWNnS3lCdmNIUnBiMjV6SUNzZ0p6d3ZkR0ZpYkdVK1BDOXpjR0Z1UGljN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJR2gwYld3N1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQndjbTlqWlhOelRXOWtaV3dvYzJOb1pXMWhMQ0J1WVcxbEtTQjdYRzRnSUNBZ2RtRnlJSFI1Y0dVZ1BTQnpZMmhsYldFdWRIbHdaU0I4ZkNBbmIySnFaV04wSnp0Y2JpQWdJQ0IyWVhJZ2FYTkJjbkpoZVNBOUlITmphR1Z0WVM1MGVYQmxJRDA5UFNBbllYSnlZWGtuTzF4dUlDQWdJSFpoY2lCb2RHMXNJRDBnYzNSeWIyNW5UM0JsYmlBcklHNWhiV1VnS3lBbklDY2dLeUFvYVhOQmNuSmhlU0EvSUNkYkp5QTZJQ2Q3SnlrZ0t5QnpkSEp2Ym1kRGJHOXpaVHRjYmx4dUlDQWdJR2xtSUNodVlXMWxLU0I3WEc0Z0lDQWdJQ0J6WldWdVRXOWtaV3h6TG5CMWMyZ29ibUZ0WlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHbHpRWEp5WVhrcElIdGNiaUFnSUNBZ0lHbG1JQ2hmTG1selFYSnlZWGtvYzJOb1pXMWhMbWwwWlcxektTa2dlMXh1SUNBZ0lDQWdJQ0JvZEcxc0lDczlJQ2M4WkdsMlBpY2dLeUJmTG0xaGNDaHpZMmhsYldFdWFYUmxiWE1zSUdaMWJtTjBhVzl1SUNocGRHVnRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJSFI1Y0dVZ1BTQnBkR1Z0TG5SNWNHVWdmSHdnSjI5aWFtVmpkQ2M3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWHk1cGMxVnVaR1ZtYVc1bFpDaHBkR1Z0TGlSeVpXWXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWHk1cGJtUmxlRTltS0ZzbllYSnlZWGtuTENBbmIySnFaV04wSjEwc0lIUjVjR1VwSUQ0Z0xURXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVWdQVDA5SUNkdlltcGxZM1FuSUNZbUlGOHVhWE5WYm1SbFptbHVaV1FvYVhSbGJTNXdjbTl3WlhKMGFXVnpLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuYjJKcVpXTjBKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXUmtVbVZtWlhKbGJtTmxLR2wwWlcwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISnBiV2wwYVhabFZHOVBjSFJwYjI1elNGUk5UQ2hwZEdWdExDQjBlWEJsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRmtaRkpsWm1WeVpXNWpaU2hwZEdWdExDQklaV3h3WlhKekxuTnBiWEJzWlZKbFppaHBkR1Z0TGlSeVpXWXBLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBMbXB2YVc0b0p5dzhMMlJwZGo0OFpHbDJQaWNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoZkxtbHpVR3hoYVc1UFltcGxZM1FvYzJOb1pXMWhMbWwwWlcxektTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMVZ1WkdWbWFXNWxaQ2h6WTJobGJXRXVhWFJsYlhNdUpISmxaaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWHk1cGJtUmxlRTltS0ZzbllYSnlZWGtuTENBbmIySnFaV04wSjEwc0lITmphR1Z0WVM1cGRHVnRjeTUwZVhCbElIeDhJQ2R2WW1wbFkzUW5LU0ErSUMweEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9LRjh1YVhOVmJtUmxabWx1WldRb2MyTm9aVzFoTG1sMFpXMXpMblI1Y0dVcElIeDhJSE5qYUdWdFlTNXBkR1Z0Y3k1MGVYQmxJRDA5UFNBbmIySnFaV04wSnlrZ0ppWWdYeTVwYzFWdVpHVm1hVzVsWkNoelkyaGxiV0V1YVhSbGJYTXVjSEp2Y0dWeWRHbGxjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuUEdScGRqNXZZbXBsWTNROEwyUnBkajRuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNBblBHUnBkajRuSUNzZ1lXUmtVbVZtWlhKbGJtTmxLSE5qYUdWdFlTNXBkR1Z0Y3lrZ0t5QW5QQzlrYVhZK0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuUEdScGRqNG5JQ3NnY0hKcGJXbDBhWFpsVkc5UGNIUnBiMjV6U0ZSTlRDaHpZMmhsYldFdWFYUmxiWE1zSUhOamFHVnRZUzVwZEdWdGN5NTBlWEJsS1NBcklDYzhMMlJwZGo0bk8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjOFpHbDJQaWNnS3lCaFpHUlNaV1psY21WdVkyVW9jMk5vWlcxaExtbDBaVzF6TENCSVpXeHdaWEp6TG5OcGJYQnNaVkpsWmloelkyaGxiV0V1YVhSbGJYTXVKSEpsWmlrcElDc2dKend2WkdsMlBpYzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJRWhsYkhCbGNuTXViRzluS0NkQmNuSmhlU0IwZVhCbFhGd25jeUJjWENkcGRHVnRjMXhjSnlCd2NtOXdaWEowZVNCcGN5QnViM1FnWVc0Z1lYSnlZWGtnYjNJZ1lXNGdiMkpxWldOMExDQmpZVzV1YjNRZ2NISnZZMlZ6Y3ljcE8xeHVJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlDYzhaR2wyUG05aWFtVmpkRHd2WkdsMlBpYzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdsbUlDaHpZMmhsYldFdUpISmxaaWtnZTF4dUlDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjOFpHbDJQaWNnS3lCaFpHUlNaV1psY21WdVkyVW9jMk5vWlcxaExDQnVZVzFsS1NBcklDYzhMMlJwZGo0bk8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMUJzWVdsdVQySnFaV04wS0hOamFHVnRZUzV3Y205d1pYSjBhV1Z6S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCamIyNTBaVzUwY3lBOUlGOHViV0Z3S0hOamFHVnRZUzV3Y205d1pYSjBhV1Z6TENCbWRXNWpkR2x2YmlBb2NISnZjR1Z5ZEhrc0lHNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCd2NtOXdaWEowZVVselVtVnhkV2x5WldRZ1BTQW9YeTVwYm1SbGVFOW1LSE5qYUdWdFlTNXlaWEYxYVhKbFpDd2dibUZ0WlNrZ1BqMGdNQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWTFCeWIzQmxjblI1SUQwZ1h5NWpiRzl1WlVSbFpYQW9jSEp2Y0dWeWRIa3BPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnY21WeGRXbHlaV1JEYkdGemN5QTlJSEJ5YjNCbGNuUjVTWE5TWlhGMWFYSmxaQ0EvSUNkeVpYRjFhWEpsWkNjZ09pQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJvZEcxc0lEMGdKenh6Y0dGdUlHTnNZWE56UFZ3aWNISnZjRTVoYldVZ0p5QXJJSEpsY1hWcGNtVmtRMnhoYzNNZ0t5QW5YQ0krSnlBcklHNWhiV1VnS3lBblBDOXpjR0Z1UGlBb0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnRiMlJsYkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCd2NtOXdSR1Z6WTNKcGNIUnBiMjQ3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUVGc2JHOTNJRzFoWTNKdklIUnZJSE5sZENCMGFHVWdaR1ZtWVhWc2RDQjJZV3gxWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMUJ5YjNCbGNuUjVMbVJsWm1GMWJIUWdQU0J0YjJSbGJGQnliM0JsY25SNVRXRmpjbThvWTFCeWIzQmxjblI1S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1VtVnpiMngyWlNCMGFHVWdjMk5vWlcxaElDaElZVzVrYkdVZ2JtVnpkR1ZrSUhOamFHVnRZWE1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpVSEp2Y0dWeWRIa2dQU0JJWld4d1pYSnpMbkpsYzI5c2RtVlRZMmhsYldFb1kxQnliM0JsY25SNUtUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZjRVJsYzJOeWFYQjBhVzl1SUQwZ2NISnZjR1Z5ZEhrdVpHVnpZM0pwY0hScGIyNGdmSHdnWTFCeWIzQmxjblI1TG1SbGMyTnlhWEIwYVc5dU8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QlhaU0J1WldWa0lIUnZJR2hoYm1Sc1pTQndjbTl3WlhKMGVTQnlaV1psY21WdVkyVnpJSFJ2SUhCeWFXMXBkR2wyWlhNZ0tFbHpjM1ZsSURNek9TbGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzFWdVpHVm1hVzVsWkNoalVISnZjR1Z5ZEhrdUpISmxaaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYlc5a1pXd2dQU0J0YjJSbGJITmJTR1ZzY0dWeWN5NXphVzF3YkdWU1pXWW9ZMUJ5YjNCbGNuUjVMaVJ5WldZcFhUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVY4dWFYTlZibVJsWm1sdVpXUW9iVzlrWld3cElDWW1JRjh1YVc1a1pYaFBaaWhiZFc1a1pXWnBibVZrTENBbllYSnlZWGtuTENBbmIySnFaV04wSjEwc0lHMXZaR1ZzTG1SbFptbHVhWFJwYjI0dWRIbHdaU2tnUFQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1ZYTmxJSEpsWm1WeVpXNWpaV1FnYzJOb1pXMWhYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMUJ5YjNCbGNuUjVJRDBnU0dWc2NHVnljeTV5WlhOdmJIWmxVMk5vWlcxaEtHMXZaR1ZzTG1SbFptbHVhWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2gwYld3Z0t6MGdjSEpwYldsMGFYWmxWRzlJVkUxTUtHTlFjbTl3WlhKMGVTazdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1LQ0Z3Y205d1pYSjBlVWx6VW1WeGRXbHlaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuTENBOGMzQmhiaUJqYkdGemN6MWNJbkJ5YjNCUGNIUkxaWGxjSWo1dmNIUnBiMjVoYkR3dmMzQmhiajRuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaWh3Y205d1pYSjBlUzV5WldGa1QyNXNlU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdoMGJXd2dLejBnSnl3Z1BITndZVzRnWTJ4aGMzTTlYQ0p3Y205d1VtVmhaRTl1YkhsY0lqNXlaV0ZrSUc5dWJIazhMM053WVc0K0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuS1NjN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzFWdVpHVm1hVzVsWkNod2NtOXdSR1Z6WTNKcGNIUnBiMjRwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdoMGJXd2dLejBnSnpvZ0p5QXJJQ2M4YzNCaGJpQmpiR0Z6Y3oxY0luQnliM0JFWlhOalhDSStKeUFySUhCeWIzQkVaWE5qY21sd2RHbHZiaUFySUNjOEwzTndZVzQrSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOUWNtOXdaWEowZVM1bGJuVnRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2gwYld3Z0t6MGdKeUE5SUR4emNHRnVJR05zWVhOelBWd2ljSEp2Y0ZaaGJITmNJajViWEZ3bkp5QXJJR05RY205d1pYSjBlUzVsYm5WdExtcHZhVzRvSjF4Y0p5d2dYRnduSnlrZ0t5QW5YRnduWFR3dmMzQmhiajRuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p6eGthWFluSUNzZ0tIQnliM0JsY25SNUxuSmxZV1JQYm14NUlEOGdKeUJqYkdGemN6MWNJbkpsWVdSUGJteDVYQ0luSURvZ0p5Y3BJQ3NnSno0bklDc2djSEpwYldsMGFYWmxWRzlQY0hScGIyNXpTRlJOVENoalVISnZjR1Z5ZEhrc0lHaDBiV3dwTzF4dUlDQWdJQ0FnSUNBZ0lIMHBMbXB2YVc0b0p5dzhMMlJwZGo0bktUdGNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjUwWlc1MGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNCamIyNTBaVzUwY3lBcklDYzhMMlJwZGo0bk8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuUEdScGRqNG5JQ3NnY0hKcGJXbDBhWFpsVkc5UGNIUnBiMjV6U0ZSTlRDaHpZMmhsYldFc0lIUjVjR1VwSUNzZ0p6d3ZaR2wyUGljN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJR2gwYld3Z0t5QnpkSEp2Ym1kUGNHVnVJQ3NnS0dselFYSnlZWGtnUHlBblhTY2dPaUFuZlNjcElDc2djM1J5YjI1blEyeHZjMlU3WEc0Z0lIMWNibjA3SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdVM2RoWjJkbGNraDBkSEFnUFNCeVpYRjFhWEpsS0NjdUwyaDBkSEFuS1R0Y2JuWmhjaUJmSUQwZ2UxeHVJQ0JwYzA5aWFtVmpkRG9nY21WeGRXbHlaU2duYkc5a1lYTm9MV052YlhCaGRDOXNZVzVuTDJselQySnFaV04wSnlsY2JuMDdYRzVjYm5aaGNpQlRkMkZuWjJWeVUzQmxZME52Ym5abGNuUmxjaUE5SUcxdlpIVnNaUzVsZUhCdmNuUnpJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0IwYUdsekxtVnljbTl5Y3lBOUlGdGRPMXh1SUNCMGFHbHpMbmRoY201cGJtZHpJRDBnVzEwN1hHNGdJSFJvYVhNdWJXOWtaV3hOWVhBZ1BTQjdmVHRjYm4wN1hHNWNibE4zWVdkblpYSlRjR1ZqUTI5dWRtVnlkR1Z5TG5CeWIzUnZkSGx3WlM1elpYUkViMk4xYldWdWRHRjBhVzl1VEc5allYUnBiMjRnUFNCbWRXNWpkR2x2YmlBb2JHOWpZWFJwYjI0cElIdGNiaUFnZEdocGN5NWtiMk5NYjJOaGRHbHZiaUE5SUd4dlkyRjBhVzl1TzF4dWZUdGNibHh1THlvcVhHNGdLaUJqYjI1MlpYSjBjeUJoSUhKbGMyOTFjbU5sSUd4cGMzUnBibWNnVDFJZ1lYQnBJR1JsWTJ4aGNtRjBhVzl1WEc0Z0tpb3ZYRzVUZDJGbloyVnlVM0JsWTBOdmJuWmxjblJsY2k1d2NtOTBiM1I1Y0dVdVkyOXVkbVZ5ZENBOUlHWjFibU4wYVc5dUlDaHZZbW9zSUdOc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekxDQnZjSFJ6TENCallXeHNZbUZqYXlrZ2UxeHVJQ0F2THlCdWIzUWdZU0IyWVd4cFpDQnpjR1ZqWEc0Z0lHbG1LQ0Z2WW1vZ2ZId2dJVUZ5Y21GNUxtbHpRWEp5WVhrb2IySnFMbUZ3YVhNcEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVabWx1YVhOb0tHTmhiR3hpWVdOckxDQnVkV3hzS1R0Y2JpQWdmVnh1SUNCMGFHbHpMbU5zYVdWdWRFRjFkR2h2Y21sNllYUnBiMjV6SUQwZ1kyeHBaVzUwUVhWMGFHOXlhWHBoZEdsdmJuTTdYRzVjYmlBZ0x5OGdZM0psWVhSbElHRWdibVYzSUhOM1lXZG5aWElnYjJKcVpXTjBJSFJ2SUhKbGRIVnlibHh1SUNCMllYSWdjM2RoWjJkbGNpQTlJSHNnYzNkaFoyZGxjam9nSnpJdU1DY2dmVHRjYmx4dUlDQnpkMkZuWjJWeUxtOXlhV2RwYm1Gc1ZtVnljMmx2YmlBOUlHOWlhaTV6ZDJGbloyVnlWbVZ5YzJsdmJqdGNibHh1SUNBdkx5QmhaR1FnZEdobElHbHVabTljYmlBZ2RHaHBjeTVoY0dsSmJtWnZLRzlpYWl3Z2MzZGhaMmRsY2lrN1hHNWNiaUFnTHk4Z1lXUmtJSE5sWTNWeWFYUjVJR1JsWm1sdWFYUnBiMjV6WEc0Z0lIUm9hWE11YzJWamRYSnBkSGxFWldacGJtbDBhVzl1Y3lodlltb3NJSE4zWVdkblpYSXBPMXh1WEc0Z0lDOHZJSFJoYTJVZ1ltRnpaVkJoZEdnZ2FXNTBieUJoWTJOdmRXNTBYRzRnSUdsbUlDaHZZbW91WW1GelpWQmhkR2dwSUh0Y2JpQWdJQ0IwYUdsekxuTmxkRVJ2WTNWdFpXNTBZWFJwYjI1TWIyTmhkR2x2Ymlodlltb3VZbUZ6WlZCaGRHZ3BPMXh1SUNCOVhHNWNiaUFnTHk4Z2MyVmxJR2xtSUhSb2FYTWdhWE1nWVNCemFXNW5iR1V0Wm1sc1pTQnpkMkZuWjJWeUlHUmxabWx1YVhScGIyNWNiaUFnZG1GeUlHbHpVMmx1WjJ4bFJtbHNaVk4zWVdkblpYSWdQU0JtWVd4elpUdGNiaUFnZG1GeUlHazdYRzRnSUdadmNpaHBJRDBnTURzZ2FTQThJRzlpYWk1aGNHbHpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnZG1GeUlHRndhU0E5SUc5aWFpNWhjR2x6VzJsZE8xeHVJQ0FnSUdsbUtFRnljbUY1TG1selFYSnlZWGtvWVhCcExtOXdaWEpoZEdsdmJuTXBLU0I3WEc0Z0lDQWdJQ0JwYzFOcGJtZHNaVVpwYkdWVGQyRm5aMlZ5SUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdhV1lvYVhOVGFXNW5iR1ZHYVd4bFUzZGhaMmRsY2lrZ2UxeHVJQ0FnSUhSb2FYTXVaR1ZqYkdGeVlYUnBiMjRvYjJKcUxDQnpkMkZuWjJWeUtUdGNiaUFnSUNCMGFHbHpMbVpwYm1semFDaGpZV3hzWW1GamF5d2djM2RoWjJkbGNpazdYRzRnSUgxY2JpQWdaV3h6WlNCN1hHNGdJQ0FnZEdocGN5NXlaWE52ZFhKalpVeHBjM1JwYm1jb2IySnFMQ0J6ZDJGbloyVnlMQ0J2Y0hSekxDQmpZV3hzWW1GamF5azdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpUY0dWalEyOXVkbVZ5ZEdWeUxuQnliM1J2ZEhsd1pTNWtaV05zWVhKaGRHbHZiaUE5SUdaMWJtTjBhVzl1S0c5aWFpd2djM2RoWjJkbGNpa2dlMXh1SUNCMllYSWdibUZ0WlN3Z2FTd2djQ3dnY0c5ek8xeHVJQ0JwWmlnaGIySnFMbUZ3YVhNcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNCcFppQW9iMkpxTG1KaGMyVlFZWFJvTG1sdVpHVjRUMllvSjJoMGRIQTZMeThuS1NBOVBUMGdNQ2tnZTF4dUlDQWdJSEFnUFNCdlltb3VZbUZ6WlZCaGRHZ3VjM1ZpYzNSeWFXNW5LQ2RvZEhSd09pOHZKeTVzWlc1bmRHZ3BPMXh1SUNBZ0lIQnZjeUE5SUhBdWFXNWtaWGhQWmlnbkx5Y3BPMXh1SUNBZ0lHbG1JQ2h3YjNNZ1BpQXdLU0I3WEc0Z0lDQWdJQ0J6ZDJGbloyVnlMbWh2YzNRZ1BTQndMbk4xWW5OMGNtbHVaeWd3TENCd2IzTXBPMXh1SUNBZ0lDQWdjM2RoWjJkbGNpNWlZWE5sVUdGMGFDQTlJSEF1YzNWaWMzUnlhVzVuS0hCdmN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdjM2RoWjJkbGNpNW9iM04wSUQwZ2NEdGNiaUFnSUNBZ0lITjNZV2RuWlhJdVltRnpaVkJoZEdnZ1BTQW5MeWM3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tHOWlhaTVpWVhObFVHRjBhQzVwYm1SbGVFOW1LQ2RvZEhSd2N6b3ZMeWNwSUQwOVBTQXdLU0I3WEc0Z0lDQWdjQ0E5SUc5aWFpNWlZWE5sVUdGMGFDNXpkV0p6ZEhKcGJtY29KMmgwZEhCek9pOHZKeTVzWlc1bmRHZ3BPMXh1SUNBZ0lIQnZjeUE5SUhBdWFXNWtaWGhQWmlnbkx5Y3BPMXh1SUNBZ0lHbG1JQ2h3YjNNZ1BpQXdLU0I3WEc0Z0lDQWdJQ0J6ZDJGbloyVnlMbWh2YzNRZ1BTQndMbk4xWW5OMGNtbHVaeWd3TENCd2IzTXBPMXh1SUNBZ0lDQWdjM2RoWjJkbGNpNWlZWE5sVUdGMGFDQTlJSEF1YzNWaWMzUnlhVzVuS0hCdmN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdjM2RoWjJkbGNpNW9iM04wSUQwZ2NEdGNiaUFnSUNBZ0lITjNZV2RuWlhJdVltRnpaVkJoZEdnZ1BTQW5MeWM3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSE4zWVdkblpYSXVZbUZ6WlZCaGRHZ2dQU0J2WW1vdVltRnpaVkJoZEdnN1hHNGdJSDFjYmx4dUlDQjJZWElnY21WemIzVnlZMlZNWlhabGJFRjFkR2c3WEc0Z0lHbG1LRzlpYWk1aGRYUm9iM0pwZW1GMGFXOXVjeWtnZTF4dUlDQWdJSEpsYzI5MWNtTmxUR1YyWld4QmRYUm9JRDBnYjJKcUxtRjFkR2h2Y21sNllYUnBiMjV6TzF4dUlDQjlYRzRnSUdsbUtHOWlhaTVqYjI1emRXMWxjeWtnZTF4dUlDQWdJSE4zWVdkblpYSXVZMjl1YzNWdFpYTWdQU0J2WW1vdVkyOXVjM1Z0WlhNN1hHNGdJSDFjYmlBZ2FXWW9iMkpxTG5CeWIyUjFZMlZ6S1NCN1hHNGdJQ0FnYzNkaFoyZGxjaTV3Y205a2RXTmxjeUE5SUc5aWFpNXdjbTlrZFdObGN6dGNiaUFnZlZ4dVhHNGdJQzh2SUdKMWFXeGtJR0VnYldGd2NHbHVaeUJ2WmlCcFpDQjBieUJ1WVcxbElHWnZjaUF4TGpBZ2JXOWtaV3dnY21WemIyeDFkR2x2Ym5OY2JpQWdhV1lvWHk1cGMwOWlhbVZqZENodlltb3BLU0I3WEc0Z0lDQWdabTl5S0c1aGJXVWdhVzRnYjJKcUxtMXZaR1ZzY3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR1Y0YVhOMGFXNW5UVzlrWld3Z1BTQnZZbW91Ylc5a1pXeHpXMjVoYldWZE8xeHVJQ0FnSUNBZ2RtRnlJR3RsZVNBOUlDaGxlR2x6ZEdsdVowMXZaR1ZzTG1sa0lIeDhJRzVoYldVcE8xeHVJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJFMWhjRnRyWlhsZElEMGdibUZ0WlR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCbWIzSW9hU0E5SURBN0lHa2dQQ0J2WW1vdVlYQnBjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUhaaGNpQmhjR2tnUFNCdlltb3VZWEJwYzF0cFhUdGNiaUFnSUNCMllYSWdjR0YwYUNBOUlHRndhUzV3WVhSb08xeHVJQ0FnSUhaaGNpQnZjR1Z5WVhScGIyNXpJRDBnWVhCcExtOXdaWEpoZEdsdmJuTTdYRzRnSUNBZ2RHaHBjeTV2Y0dWeVlYUnBiMjV6S0hCaGRHZ3NJRzlpYWk1eVpYTnZkWEpqWlZCaGRHZ3NJRzl3WlhKaGRHbHZibk1zSUhKbGMyOTFjbU5sVEdWMlpXeEJkWFJvTENCemQyRm5aMlZ5S1R0Y2JpQWdmVnh1WEc0Z0lIWmhjaUJ0YjJSbGJITWdQU0J2WW1vdWJXOWtaV3h6SUh4OElIdDlPMXh1SUNCMGFHbHpMbTF2WkdWc2N5aHRiMlJsYkhNc0lITjNZV2RuWlhJcE8xeHVmVHRjYmx4dVUzZGhaMmRsY2xOd1pXTkRiMjUyWlhKMFpYSXVjSEp2ZEc5MGVYQmxMbTF2WkdWc2N5QTlJR1oxYm1OMGFXOXVLRzlpYWl3Z2MzZGhaMmRsY2lrZ2UxeHVJQ0JwWmlnaFh5NXBjMDlpYW1WamRDaHZZbW9wS1NCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNGdJSFpoY2lCdVlXMWxPMXh1WEc0Z0lITjNZV2RuWlhJdVpHVm1hVzVwZEdsdmJuTWdQU0J6ZDJGbloyVnlMbVJsWm1sdWFYUnBiMjV6SUh4OElIdDlPMXh1SUNCbWIzSW9ibUZ0WlNCcGJpQnZZbW9wSUh0Y2JpQWdJQ0IyWVhJZ1pYaHBjM1JwYm1kTmIyUmxiQ0E5SUc5aWFsdHVZVzFsWFR0Y2JpQWdJQ0IyWVhJZ1gzSmxjWFZwY21Wa0lEMGdXMTA3WEc0Z0lDQWdkbUZ5SUhOamFHVnRZU0E5SUhzZ2NISnZjR1Z5ZEdsbGN6b2dlMzE5TzF4dUlDQWdJSFpoY2lCd2NtOXdaWEowZVU1aGJXVTdYRzRnSUNBZ1ptOXlLSEJ5YjNCbGNuUjVUbUZ0WlNCcGJpQmxlR2x6ZEdsdVowMXZaR1ZzTG5CeWIzQmxjblJwWlhNcElIdGNiaUFnSUNBZ0lIWmhjaUJsZUdsemRHbHVaMUJ5YjNCbGNuUjVJRDBnWlhocGMzUnBibWROYjJSbGJDNXdjbTl3WlhKMGFXVnpXM0J5YjNCbGNuUjVUbUZ0WlYwN1hHNGdJQ0FnSUNCMllYSWdjSEp2Y0dWeWRIa2dQU0I3ZlR0Y2JpQWdJQ0FnSUhSb2FYTXVaR0YwWVZSNWNHVW9aWGhwYzNScGJtZFFjbTl3WlhKMGVTd2djSEp2Y0dWeWRIa3BPMXh1SUNBZ0lDQWdhV1lvWlhocGMzUnBibWRRY205d1pYSjBlUzVrWlhOamNtbHdkR2x2YmlrZ2UxeHVJQ0FnSUNBZ0lDQndjbTl3WlhKMGVTNWtaWE5qY21sd2RHbHZiaUE5SUdWNGFYTjBhVzVuVUhKdmNHVnlkSGt1WkdWelkzSnBjSFJwYjI0N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppaGxlR2x6ZEdsdVoxQnliM0JsY25SNVd5ZGxiblZ0SjEwcElIdGNiaUFnSUNBZ0lDQWdjSEp2Y0dWeWRIbGJKMlZ1ZFcwblhTQTlJR1Y0YVhOMGFXNW5VSEp2Y0dWeWRIbGJKMlZ1ZFcwblhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1LSFI1Y0dWdlppQmxlR2x6ZEdsdVoxQnliM0JsY25SNUxuSmxjWFZwY21Wa0lEMDlQU0FuWW05dmJHVmhiaWNnSmlZZ1pYaHBjM1JwYm1kUWNtOXdaWEowZVM1eVpYRjFhWEpsWkNBOVBUMGdkSEoxWlNrZ2UxeHVJQ0FnSUNBZ0lDQmZjbVZ4ZFdseVpXUXVjSFZ6YUNod2NtOXdaWEowZVU1aGJXVXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lvZEhsd1pXOW1JR1Y0YVhOMGFXNW5VSEp2Y0dWeWRIa3VjbVZ4ZFdseVpXUWdQVDA5SUNkemRISnBibWNuSUNZbUlHVjRhWE4wYVc1blVISnZjR1Z5ZEhrdWNtVnhkV2x5WldRZ1BUMDlJQ2QwY25WbEp5a2dlMXh1SUNBZ0lDQWdJQ0JmY21WeGRXbHlaV1F1Y0hWemFDaHdjbTl3WlhKMGVVNWhiV1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYzJOb1pXMWhMbkJ5YjNCbGNuUnBaWE5iY0hKdmNHVnlkSGxPWVcxbFhTQTlJSEJ5YjNCbGNuUjVPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaGZjbVZ4ZFdseVpXUXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnYzJOb1pXMWhMbkpsY1hWcGNtVmtJRDBnWDNKbGNYVnBjbVZrTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnpZMmhsYldFdWNtVnhkV2x5WldRZ1BTQmxlR2x6ZEdsdVowMXZaR1ZzTG5KbGNYVnBjbVZrTzF4dUlDQWdJSDFjYmlBZ0lDQnpkMkZuWjJWeUxtUmxabWx1YVhScGIyNXpXMjVoYldWZElEMGdjMk5vWlcxaE8xeHVJQ0I5WEc1OU8xeHVYRzVUZDJGbloyVnlVM0JsWTBOdmJuWmxjblJsY2k1d2NtOTBiM1I1Y0dVdVpYaDBjbUZqZEZSaFp5QTlJR1oxYm1OMGFXOXVLSEpsYzI5MWNtTmxVR0YwYUNrZ2UxeHVJQ0IyWVhJZ2NHRjBhRk4wY21sdVp5QTlJSEpsYzI5MWNtTmxVR0YwYUNCOGZDQW5aR1ZtWVhWc2RDYzdYRzRnSUdsbUtIQmhkR2hUZEhKcGJtY3VhVzVrWlhoUFppZ25hSFIwY0RvbktTQTlQVDBnTUNCOGZDQndZWFJvVTNSeWFXNW5MbWx1WkdWNFQyWW9KMmgwZEhCek9pY3BJRDA5UFNBd0tTQjdYRzRnSUNBZ2NHRjBhRk4wY21sdVp5QTlJSEJoZEdoVGRISnBibWN1YzNCc2FYUW9XeWN2SjEwcE8xeHVJQ0FnSUhCaGRHaFRkSEpwYm1jZ1BTQndZWFJvVTNSeWFXNW5XM0JoZEdoVGRISnBibWN1YkdWdVozUm9JQzB4WFM1emRXSnpkSEpwYm1jb0tUdGNiaUFnZlZ4dUlDQnBaaWh3WVhSb1UzUnlhVzVuTG1WdVpITlhhWFJvS0NjdWFuTnZiaWNwS1NCN1hHNGdJQ0FnY0dGMGFGTjBjbWx1WnlBOUlIQmhkR2hUZEhKcGJtY3VjM1ZpYzNSeWFXNW5LREFzSUhCaGRHaFRkSEpwYm1jdWJHVnVaM1JvSUMwZ0p5NXFjMjl1Snk1c1pXNW5kR2dwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ3WVhSb1UzUnlhVzVuTG5KbGNHeGhZMlVvSnk4bkxDY25LVHRjYm4wN1hHNWNibE4zWVdkblpYSlRjR1ZqUTI5dWRtVnlkR1Z5TG5CeWIzUnZkSGx3WlM1dmNHVnlZWFJwYjI1eklEMGdablZ1WTNScGIyNG9jR0YwYUN3Z2NtVnpiM1Z5WTJWUVlYUm9MQ0J2WW1vc0lISmxjMjkxY21ObFRHVjJaV3hCZFhSb0xDQnpkMkZuWjJWeUtTQjdYRzRnSUdsbUtDRkJjbkpoZVM1cGMwRnljbUY1S0c5aWFpa3BJSHRjYmlBZ0lDQnlaWFIxY200N1hHNGdJSDFjYmlBZ2RtRnlJR2s3WEc1Y2JpQWdhV1lvSVhOM1lXZG5aWEl1Y0dGMGFITXBJSHRjYmlBZ0lDQnpkMkZuWjJWeUxuQmhkR2h6SUQwZ2UzMDdYRzRnSUgxY2JseHVJQ0IyWVhJZ2NHRjBhRTlpYWlBOUlITjNZV2RuWlhJdWNHRjBhSE5iY0dGMGFGMGdmSHdnZTMwN1hHNGdJSFpoY2lCMFlXY2dQU0IwYUdsekxtVjRkSEpoWTNSVVlXY29jbVZ6YjNWeVkyVlFZWFJvS1R0Y2JpQWdjM2RoWjJkbGNpNTBZV2R6SUQwZ2MzZGhaMmRsY2k1MFlXZHpJSHg4SUZ0ZE8xeHVJQ0IyWVhJZ2JXRjBZMmhsWkNBOUlHWmhiSE5sTzF4dUlDQm1iM0lvYVNBOUlEQTdJR2tnUENCemQyRm5aMlZ5TG5SaFozTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0IyWVhJZ2RHRm5UMkpxWldOMElEMGdjM2RoWjJkbGNpNTBZV2R6VzJsZE8xeHVJQ0FnSUdsbUtIUmhaMDlpYW1WamRDNXVZVzFsSUQwOVBTQjBZV2NwSUh0Y2JpQWdJQ0FnSUcxaGRHTm9aV1FnUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnBaaWdoYldGMFkyaGxaQ2tnZTF4dUlDQWdJSE4zWVdkblpYSXVkR0ZuY3k1d2RYTm9LSHR1WVcxbE9pQjBZV2Q5S1R0Y2JpQWdmVnh1WEc0Z0lHWnZjaWhwSUQwZ01Ec2dhU0E4SUc5aWFpNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJSFpoY2lCbGVHbHpkR2x1WjA5d1pYSmhkR2x2YmlBOUlHOWlhbHRwWFR0Y2JpQWdJQ0IyWVhJZ2JXVjBhRzlrSUQwZ0tHVjRhWE4wYVc1blQzQmxjbUYwYVc5dUxtMWxkR2h2WkNCOGZDQmxlR2x6ZEdsdVowOXdaWEpoZEdsdmJpNW9kSFJ3VFdWMGFHOWtLUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUhaaGNpQnZjR1Z5WVhScGIyNGdQU0I3ZEdGbmN6b2dXM1JoWjExOU8xeHVJQ0FnSUhaaGNpQmxlR2x6ZEdsdVowRjFkR2h2Y21sNllYUnBiMjV6SUQwZ1pYaHBjM1JwYm1kUGNHVnlZWFJwYjI0dVlYVjBhRzl5YVhwaGRHbHZibk03WEc1Y2JpQWdJQ0JwWmlobGVHbHpkR2x1WjBGMWRHaHZjbWw2WVhScGIyNXpJQ1ltSUU5aWFtVmpkQzVyWlhsektHVjRhWE4wYVc1blFYVjBhRzl5YVhwaGRHbHZibk1wTG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdaWGhwYzNScGJtZEJkWFJvYjNKcGVtRjBhVzl1Y3lBOUlISmxjMjkxY21ObFRHVjJaV3hCZFhSb08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUtIUjVjR1Z2WmlCbGVHbHpkR2x1WjBGMWRHaHZjbWw2WVhScGIyNXpJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhOamIzQmxjMDlpYW1WamREdGNiaUFnSUNBZ0lHWnZjaWgyWVhJZ2EyVjVJR2x1SUdWNGFYTjBhVzVuUVhWMGFHOXlhWHBoZEdsdmJuTXBJSHRjYmlBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1TG5ObFkzVnlhWFI1SUQwZ2IzQmxjbUYwYVc5dUxuTmxZM1Z5YVhSNUlIeDhJRnRkTzF4dUlDQWdJQ0FnSUNCMllYSWdjMk52Y0dWeklEMGdaWGhwYzNScGJtZEJkWFJvYjNKcGVtRjBhVzl1YzF0clpYbGRPMXh1SUNBZ0lDQWdJQ0JwWmloelkyOXdaWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnYzJWamRYSnBkSGxUWTI5d1pYTWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQm1iM0lvZG1GeUlHb2dhVzRnYzJOdmNHVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaV04xY21sMGVWTmpiM0JsY3k1d2RYTm9LSE5qYjNCbGMxdHFYUzV6WTI5d1pTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lITmpiM0JsYzA5aWFtVmpkQ0E5SUh0OU8xeHVJQ0FnSUNBZ0lDQWdJSE5qYjNCbGMwOWlhbVZqZEZ0clpYbGRJRDBnYzJWamRYSnBkSGxUWTI5d1pYTTdYRzRnSUNBZ0lDQWdJQ0FnYjNCbGNtRjBhVzl1TG5ObFkzVnlhWFI1TG5CMWMyZ29jMk52Y0dWelQySnFaV04wS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpZMjl3WlhOUFltcGxZM1FnUFNCN2ZUdGNiaUFnSUNBZ0lDQWdJQ0J6WTI5d1pYTlBZbXBsWTNSYmEyVjVYU0E5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZiaTV6WldOMWNtbDBlUzV3ZFhOb0tITmpiM0JsYzA5aWFtVmpkQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlobGVHbHpkR2x1WjA5d1pYSmhkR2x2Ymk1amIyNXpkVzFsY3lrZ2UxeHVJQ0FnSUNBZ2IzQmxjbUYwYVc5dUxtTnZibk4xYldWeklEMGdaWGhwYzNScGJtZFBjR1Z5WVhScGIyNHVZMjl1YzNWdFpYTTdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdhV1lvYzNkaFoyZGxjaTVqYjI1emRXMWxjeWtnZTF4dUlDQWdJQ0FnYjNCbGNtRjBhVzl1TG1OdmJuTjFiV1Z6SUQwZ2MzZGhaMmRsY2k1amIyNXpkVzFsY3p0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lvWlhocGMzUnBibWRQY0dWeVlYUnBiMjR1Y0hKdlpIVmpaWE1wSUh0Y2JpQWdJQ0FnSUc5d1pYSmhkR2x2Ymk1d2NtOWtkV05sY3lBOUlHVjRhWE4wYVc1blQzQmxjbUYwYVc5dUxuQnliMlIxWTJWek8xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElHbG1LSE4zWVdkblpYSXVjSEp2WkhWalpYTXBJSHRjYmlBZ0lDQWdJRzl3WlhKaGRHbHZiaTV3Y205a2RXTmxjeUE5SUhOM1lXZG5aWEl1Y0hKdlpIVmpaWE03WEc0Z0lDQWdmVnh1SUNBZ0lHbG1LR1Y0YVhOMGFXNW5UM0JsY21GMGFXOXVMbk4xYlcxaGNua3BJSHRjYmlBZ0lDQWdJRzl3WlhKaGRHbHZiaTV6ZFcxdFlYSjVJRDBnWlhocGMzUnBibWRQY0dWeVlYUnBiMjR1YzNWdGJXRnllVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWW9aWGhwYzNScGJtZFBjR1Z5WVhScGIyNHVibTkwWlhNcElIdGNiaUFnSUNBZ0lHOXdaWEpoZEdsdmJpNWtaWE5qY21sd2RHbHZiaUE5SUdWNGFYTjBhVzVuVDNCbGNtRjBhVzl1TG01dmRHVnpPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaGxlR2x6ZEdsdVowOXdaWEpoZEdsdmJpNXVhV05yYm1GdFpTa2dlMXh1SUNBZ0lDQWdiM0JsY21GMGFXOXVMbTl3WlhKaGRHbHZia2xrSUQwZ1pYaHBjM1JwYm1kUGNHVnlZWFJwYjI0dWJtbGphMjVoYldVN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0dWNGFYTjBhVzVuVDNCbGNtRjBhVzl1TG1SbGNISmxZMkYwWldRcElIdGNiaUFnSUNBZ0lHOXdaWEpoZEdsdmJpNWtaWEJ5WldOaGRHVmtJRDBnWlhocGMzUnBibWRQY0dWeVlYUnBiMjR1WkdWd2NtVmpZWFJsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtRjFkR2h2Y21sNllYUnBiMjV6S0dWNGFYTjBhVzVuUVhWMGFHOXlhWHBoZEdsdmJuTXNJSE4zWVdkblpYSXBPMXh1SUNBZ0lIUm9hWE11Y0dGeVlXMWxkR1Z5Y3lodmNHVnlZWFJwYjI0c0lHVjRhWE4wYVc1blQzQmxjbUYwYVc5dUxuQmhjbUZ0WlhSbGNuTXNJSE4zWVdkblpYSXBPMXh1SUNBZ0lIUm9hWE11Y21WemNHOXVjMlZOWlhOellXZGxjeWh2Y0dWeVlYUnBiMjRzSUdWNGFYTjBhVzVuVDNCbGNtRjBhVzl1TENCemQyRm5aMlZ5S1R0Y2JseHVJQ0FnSUhCaGRHaFBZbXBiYldWMGFHOWtYU0E5SUc5d1pYSmhkR2x2Ymp0Y2JpQWdmVnh1WEc0Z0lITjNZV2RuWlhJdWNHRjBhSE5iY0dGMGFGMGdQU0J3WVhSb1QySnFPMXh1ZlR0Y2JseHVVM2RoWjJkbGNsTndaV05EYjI1MlpYSjBaWEl1Y0hKdmRHOTBlWEJsTG5KbGMzQnZibk5sVFdWemMyRm5aWE1nUFNCbWRXNWpkR2x2YmlodmNHVnlZWFJwYjI0c0lHVjRhWE4wYVc1blQzQmxjbUYwYVc5dUtTQjdYRzRnSUdsbUtDRmZMbWx6VDJKcVpXTjBLR1Y0YVhOMGFXNW5UM0JsY21GMGFXOXVLU2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQXZMeUJpZFdsc1pDQmtaV1poZFd4MElISmxjM0J2Ym5ObElHWnliMjBnZEdobElHOXdaWEpoZEdsdmJpQW9NUzU0S1Z4dUlDQjJZWElnWkdWbVlYVnNkRkpsYzNCdmJuTmxJRDBnZTMwN1hHNGdJSFJvYVhNdVpHRjBZVlI1Y0dVb1pYaHBjM1JwYm1kUGNHVnlZWFJwYjI0c0lHUmxabUYxYkhSU1pYTndiMjV6WlNrN1hHNGdJQzh2SUZSUFJFODZJR3h2YjJzZ2FXNTBieUIwYUdVZ2NtVmhiQ0J3Y205aWJHVnRJRzltSUhKbGJtUmxjbWx1WnlCeVpYTndiMjV6WlhNZ2FXNGdjM2RoWjJkbGNpMTFhVnh1SUNBdkx5QXVMaTR1YzJodmRXeGtJSEpsY0c5dWMyVlVlWEJsSUdoaGRtVWdZVzRnYVcxd2JHbGphWFFnYzJOb1pXMWhQMXh1SUNCcFppZ2haR1ZtWVhWc2RGSmxjM0J2Ym5ObExuTmphR1Z0WVNBbUppQmtaV1poZFd4MFVtVnpjRzl1YzJVdWRIbHdaU2tnZTF4dUlDQWdJR1JsWm1GMWJIUlNaWE53YjI1elpTQTlJSHR6WTJobGJXRTZJR1JsWm1GMWJIUlNaWE53YjI1elpYMDdYRzRnSUgxY2JseHVJQ0J2Y0dWeVlYUnBiMjR1Y21WemNHOXVjMlZ6SUQwZ2IzQmxjbUYwYVc5dUxuSmxjM0J2Ym5ObGN5QjhmQ0I3ZlR0Y2JseHVJQ0F2THlCbmNtRmlJR1p5YjIwZ2NtVnpjRzl1YzJWTlpYTnpZV2RsY3lBb01TNHlLVnh1SUNCMllYSWdhR0Z6TWpBd0lEMGdabUZzYzJVN1hHNGdJR2xtS0VGeWNtRjVMbWx6UVhKeVlYa29aWGhwYzNScGJtZFBjR1Z5WVhScGIyNHVjbVZ6Y0c5dWMyVk5aWE56WVdkbGN5a3BJSHRjYmlBZ0lDQjJZWElnYVR0Y2JpQWdJQ0IyWVhJZ1pYaHBjM1JwYm1kU1pYTndiMjV6WlhNZ1BTQmxlR2x6ZEdsdVowOXdaWEpoZEdsdmJpNXlaWE53YjI1elpVMWxjM05oWjJWek8xeHVJQ0FnSUdadmNpaHBJRDBnTURzZ2FTQThJR1Y0YVhOMGFXNW5VbVZ6Y0c5dWMyVnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCMllYSWdaWGhwYzNScGJtZFNaWE53YjI1elpTQTlJR1Y0YVhOMGFXNW5VbVZ6Y0c5dWMyVnpXMmxkTzF4dUlDQWdJQ0FnZG1GeUlISmxjM0J2Ym5ObElEMGdleUJrWlhOamNtbHdkR2x2YmpvZ1pYaHBjM1JwYm1kU1pYTndiMjV6WlM1dFpYTnpZV2RsSUgwN1hHNGdJQ0FnSUNCcFppaGxlR2x6ZEdsdVoxSmxjM0J2Ym5ObExtTnZaR1VnUFQwOUlESXdNQ2tnZTF4dUlDQWdJQ0FnSUNCb1lYTXlNREFnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdMeThnUTI5dWRtVnlkQ0J5WlhOd2IyNXpaVTF2WkdWc0lDMCtJSE5qYUdWdFlYc2tjbVZtT2lCeVpYTndiMjV6WlUxdlpHVnNmVnh1SUNBZ0lDQWdhV1lvWlhocGMzUnBibWRTWlhOd2IyNXpaUzV5WlhOd2IyNXpaVTF2WkdWc0tTQjdYRzRnSUNBZ0lDQWdJSEpsYzNCdmJuTmxMbk5qYUdWdFlTQTlJSHNuSkhKbFppYzZJQ2NqTDJSbFptbHVhWFJwYjI1ekx5Y2dLeUJsZUdsemRHbHVaMUpsYzNCdmJuTmxMbkpsYzNCdmJuTmxUVzlrWld4OU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2IzQmxjbUYwYVc5dUxuSmxjM0J2Ym5ObGMxc25KeUFySUdWNGFYTjBhVzVuVW1WemNHOXVjMlV1WTI5a1pWMGdQU0J5WlhOd2IyNXpaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JwWmlob1lYTXlNREFwSUh0Y2JpQWdJQ0J2Y0dWeVlYUnBiMjR1Y21WemNHOXVjMlZ6V3lka1pXWmhkV3gwSjEwZ1BTQmtaV1poZFd4MFVtVnpjRzl1YzJVN1hHNGdJSDFjYmlBZ1pXeHpaU0I3WEc0Z0lDQWdiM0JsY21GMGFXOXVMbkpsYzNCdmJuTmxjMXNuTWpBd0oxMGdQU0JrWldaaGRXeDBVbVZ6Y0c5dWMyVTdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpUY0dWalEyOXVkbVZ5ZEdWeUxuQnliM1J2ZEhsd1pTNWhkWFJvYjNKcGVtRjBhVzl1Y3lBOUlHWjFibU4wYVc5dUtHOWlhaWtnZTF4dUlDQXZMeUJVVDBSUFhHNGdJR2xtS0NGZkxtbHpUMkpxWldOMEtHOWlhaWtwSUh0Y2JpQWdJQ0J5WlhSMWNtNDdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpUY0dWalEyOXVkbVZ5ZEdWeUxuQnliM1J2ZEhsd1pTNXdZWEpoYldWMFpYSnpJRDBnWm5WdVkzUnBiMjRvYjNCbGNtRjBhVzl1TENCdlltb3BJSHRjYmlBZ2FXWW9JVUZ5Y21GNUxtbHpRWEp5WVhrb2IySnFLU2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQjJZWElnYVR0Y2JpQWdabTl5S0drZ1BTQXdPeUJwSUR3Z2IySnFMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnZG1GeUlHVjRhWE4wYVc1blVHRnlZVzFsZEdWeUlEMGdiMkpxVzJsZE8xeHVJQ0FnSUhaaGNpQndZWEpoYldWMFpYSWdQU0I3ZlR0Y2JpQWdJQ0J3WVhKaGJXVjBaWEl1Ym1GdFpTQTlJR1Y0YVhOMGFXNW5VR0Z5WVcxbGRHVnlMbTVoYldVN1hHNGdJQ0FnY0dGeVlXMWxkR1Z5TG1SbGMyTnlhWEIwYVc5dUlEMGdaWGhwYzNScGJtZFFZWEpoYldWMFpYSXVaR1Z6WTNKcGNIUnBiMjQ3WEc0Z0lDQWdjR0Z5WVcxbGRHVnlMbkpsY1hWcGNtVmtJRDBnWlhocGMzUnBibWRRWVhKaGJXVjBaWEl1Y21WeGRXbHlaV1E3WEc0Z0lDQWdjR0Z5WVcxbGRHVnlMbWx1SUQwZ1pYaHBjM1JwYm1kUVlYSmhiV1YwWlhJdWNHRnlZVzFVZVhCbE8xeHVYRzRnSUNBZ0x5OGdjR1Z5SUNNeE5qaGNiaUFnSUNCcFppaHdZWEpoYldWMFpYSXVhVzRnUFQwOUlDZGliMlI1SnlrZ2UxeHVJQ0FnSUNBZ2NHRnlZVzFsZEdWeUxtNWhiV1VnUFNBblltOWtlU2M3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1LSEJoY21GdFpYUmxjaTVwYmlBOVBUMGdKMlp2Y20wbktTQjdYRzRnSUNBZ0lDQndZWEpoYldWMFpYSXVhVzRnUFNBblptOXliVVJoZEdFbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUtHVjRhWE4wYVc1blVHRnlZVzFsZEdWeUxtVnVkVzBwSUh0Y2JpQWdJQ0FnSUhCaGNtRnRaWFJsY2k1bGJuVnRJRDBnWlhocGMzUnBibWRRWVhKaGJXVjBaWEl1Wlc1MWJUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppaGxlR2x6ZEdsdVoxQmhjbUZ0WlhSbGNpNWhiR3h2ZDAxMWJIUnBjR3hsSUQwOVBTQjBjblZsSUh4OElHVjRhWE4wYVc1blVHRnlZVzFsZEdWeUxtRnNiRzkzVFhWc2RHbHdiR1VnUFQwOUlDZDBjblZsSnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2x1Ym1WeVZIbHdaU0E5SUh0OU8xeHVJQ0FnSUNBZ2RHaHBjeTVrWVhSaFZIbHdaU2hsZUdsemRHbHVaMUJoY21GdFpYUmxjaXdnYVc1dVpYSlVlWEJsS1R0Y2JpQWdJQ0FnSUhCaGNtRnRaWFJsY2k1MGVYQmxJRDBnSjJGeWNtRjVKenRjYmlBZ0lDQWdJSEJoY21GdFpYUmxjaTVwZEdWdGN5QTlJR2x1Ym1WeVZIbHdaVHRjYmx4dUlDQWdJQ0FnYVdZb1pYaHBjM1JwYm1kUVlYSmhiV1YwWlhJdVlXeHNiM2RoWW14bFZtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJoZGlBOUlHVjRhWE4wYVc1blVHRnlZVzFsZEdWeUxtRnNiRzkzWVdKc1pWWmhiSFZsY3p0Y2JpQWdJQ0FnSUNBZ2FXWW9ZWFl1ZG1Gc2RXVlVlWEJsSUQwOVBTQW5URWxUVkNjcElIdGNiaUFnSUNBZ0lDQWdJQ0J3WVhKaGJXVjBaWEpiSjJWdWRXMG5YU0E5SUdGMkxuWmhiSFZsY3p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11WkdGMFlWUjVjR1VvWlhocGMzUnBibWRRWVhKaGJXVjBaWElzSUhCaGNtRnRaWFJsY2lrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0hSNWNHVnZaaUJsZUdsemRHbHVaMUJoY21GdFpYUmxjaTVrWldaaGRXeDBWbUZzZFdVZ0lUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNCd1lYSmhiV1YwWlhJdVpHVm1ZWFZzZENBOUlHVjRhWE4wYVc1blVHRnlZVzFsZEdWeUxtUmxabUYxYkhSV1lXeDFaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnZjR1Z5WVhScGIyNHVjR0Z5WVcxbGRHVnljeUE5SUc5d1pYSmhkR2x2Ymk1d1lYSmhiV1YwWlhKeklIeDhJRnRkTzF4dUlDQWdJRzl3WlhKaGRHbHZiaTV3WVhKaGJXVjBaWEp6TG5CMWMyZ29jR0Z5WVcxbGRHVnlLVHRjYmlBZ2ZWeHVmVHRjYmx4dVUzZGhaMmRsY2xOd1pXTkRiMjUyWlhKMFpYSXVjSEp2ZEc5MGVYQmxMbVJoZEdGVWVYQmxJRDBnWm5WdVkzUnBiMjRvYzI5MWNtTmxMQ0IwWVhKblpYUXBJSHRjYmlBZ2FXWW9JVjh1YVhOUFltcGxZM1FvYzI5MWNtTmxLU2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dVhHNGdJR2xtS0hOdmRYSmpaUzV0YVc1cGJYVnRLU0I3WEc0Z0lDQWdkR0Z5WjJWMExtMXBibWx0ZFcwZ1BTQnpiM1Z5WTJVdWJXbHVhVzExYlR0Y2JpQWdmVnh1SUNCcFppaHpiM1Z5WTJVdWJXRjRhVzExYlNrZ2UxeHVJQ0FnSUhSaGNtZGxkQzV0WVhocGJYVnRJRDBnYzI5MWNtTmxMbTFoZUdsdGRXMDdYRzRnSUgxY2JpQWdhV1lnS0hOdmRYSmpaUzVtYjNKdFlYUXBJSHRjYmlBZ0lDQjBZWEpuWlhRdVptOXliV0YwSUQwZ2MyOTFjbU5sTG1admNtMWhkRHRjYmlBZ2ZWeHVYRzRnSUM4dklHUmxabUYxYkhRZ1kyRnVJR0psSUNkbVlXeHpaU2RjYmlBZ2FXWW9kSGx3Wlc5bUlITnZkWEpqWlM1a1pXWmhkV3gwVm1Gc2RXVWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ2RHRnlaMlYwTG1SbFptRjFiSFFnUFNCemIzVnlZMlV1WkdWbVlYVnNkRlpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdwemIyNVRZMmhsYldGVWVYQmxJRDBnZEdocGN5NTBiMHB6YjI1VFkyaGxiV0VvYzI5MWNtTmxLVHRjYmlBZ2FXWW9hbk52YmxOamFHVnRZVlI1Y0dVcElIdGNiaUFnSUNCMFlYSm5aWFFnUFNCMFlYSm5aWFFnZkh3Z2UzMDdYRzRnSUNBZ2FXWW9hbk52YmxOamFHVnRZVlI1Y0dVdWRIbHdaU2tnZTF4dUlDQWdJQ0FnZEdGeVoyVjBMblI1Y0dVZ1BTQnFjMjl1VTJOb1pXMWhWSGx3WlM1MGVYQmxPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaHFjMjl1VTJOb1pXMWhWSGx3WlM1bWIzSnRZWFFwSUh0Y2JpQWdJQ0FnSUhSaGNtZGxkQzVtYjNKdFlYUWdQU0JxYzI5dVUyTm9aVzFoVkhsd1pTNW1iM0p0WVhRN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0dwemIyNVRZMmhsYldGVWVYQmxMaVJ5WldZcElIdGNiaUFnSUNBZ0lIUmhjbWRsZEM1elkyaGxiV0VnUFNCN0pISmxaam9nYW5OdmJsTmphR1Z0WVZSNWNHVXVKSEpsWm4wN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0dwemIyNVRZMmhsYldGVWVYQmxMbWwwWlcxektTQjdYRzRnSUNBZ0lDQjBZWEpuWlhRdWFYUmxiWE1nUFNCcWMyOXVVMk5vWlcxaFZIbHdaUzVwZEdWdGN6dGNiaUFnSUNCOVhHNGdJSDFjYm4wN1hHNWNibE4zWVdkblpYSlRjR1ZqUTI5dWRtVnlkR1Z5TG5CeWIzUnZkSGx3WlM1MGIwcHpiMjVUWTJobGJXRWdQU0JtZFc1amRHbHZiaWh6YjNWeVkyVXBJSHRjYmlBZ2FXWW9JWE52ZFhKalpTa2dlMXh1SUNBZ0lISmxkSFZ5YmlBbmIySnFaV04wSnp0Y2JpQWdmVnh1SUNCMllYSWdaR1YwWldOMFpXUlVlWEJsSUQwZ0tITnZkWEpqWlM1MGVYQmxJSHg4SUhOdmRYSmpaUzVrWVhSaFZIbHdaU0I4ZkNCemIzVnlZMlV1Y21WemNHOXVjMlZEYkdGemN5QjhmQ0FuSnlrN1hHNGdJSFpoY2lCc1kxUjVjR1VnUFNCa1pYUmxZM1JsWkZSNWNHVXVkRzlNYjNkbGNrTmhjMlVvS1R0Y2JpQWdkbUZ5SUdadmNtMWhkQ0E5SUNoemIzVnlZMlV1Wm05eWJXRjBJSHg4SUNjbktTNTBiMHh2ZDJWeVEyRnpaU2dwTzF4dVhHNGdJR2xtS0d4alZIbHdaUzVwYm1SbGVFOW1LQ2RzYVhOMFd5Y3BJRDA5UFNBd0tTQjdYRzRnSUNBZ2RtRnlJR2x1Ym1WeVZIbHdaU0E5SUdSbGRHVmpkR1ZrVkhsd1pTNXpkV0p6ZEhKcGJtY29OU3dnWkdWMFpXTjBaV1JVZVhCbExteGxibWQwYUNBdElERXBPMXh1SUNBZ0lIWmhjaUJxYzI5dVZIbHdaU0E5SUhSb2FYTXVkRzlLYzI5dVUyTm9aVzFoS0h0MGVYQmxPaUJwYm01bGNsUjVjR1Y5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdlM1I1Y0dVNklDZGhjbkpoZVNjc0lHbDBaVzF6T2lCcWMyOXVWSGx3WlgwN1hHNGdJSDBnWld4elpTQnBaaWhzWTFSNWNHVWdQVDA5SUNkcGJuUW5JSHg4SUNoc1kxUjVjR1VnUFQwOUlDZHBiblJsWjJWeUp5QW1KaUJtYjNKdFlYUWdQVDA5SUNkcGJuUXpNaWNwS1NCN1hHNGdJQ0FnZTNKbGRIVnliaUI3ZEhsd1pUb2dKMmx1ZEdWblpYSW5MQ0JtYjNKdFlYUTZJQ2RwYm5Rek1pZDlPMzFjYmlBZ2ZTQmxiSE5sSUdsbUtHeGpWSGx3WlNBOVBUMGdKMnh2Ym1jbklIeDhJQ2hzWTFSNWNHVWdQVDA5SUNkcGJuUmxaMlZ5SnlBbUppQm1iM0p0WVhRZ1BUMDlJQ2RwYm5RMk5DY3BLU0I3WEc0Z0lDQWdlM0psZEhWeWJpQjdkSGx3WlRvZ0oybHVkR1ZuWlhJbkxDQm1iM0p0WVhRNklDZHBiblEyTkNkOU8zMWNiaUFnZlNCbGJITmxJR2xtS0d4alZIbHdaU0E5UFQwZ0oybHVkR1ZuWlhJbktTQjdYRzRnSUNBZ2UzSmxkSFZ5YmlCN2RIbHdaVG9nSjJsdWRHVm5aWEluTENCbWIzSnRZWFE2SUNkcGJuUTJOQ2Q5TzMxY2JpQWdmU0JsYkhObElHbG1LR3hqVkhsd1pTQTlQVDBnSjJac2IyRjBKeUI4ZkNBb2JHTlVlWEJsSUQwOVBTQW5iblZ0WW1WeUp5QW1KaUJtYjNKdFlYUWdQVDA5SUNkbWJHOWhkQ2NwS1NCN1hHNGdJQ0FnZTNKbGRIVnliaUI3ZEhsd1pUb2dKMjUxYldKbGNpY3NJR1p2Y20xaGREb2dKMlpzYjJGMEozMDdmVnh1SUNCOUlHVnNjMlVnYVdZb2JHTlVlWEJsSUQwOVBTQW5aRzkxWW14bEp5QjhmQ0FvYkdOVWVYQmxJRDA5UFNBbmJuVnRZbVZ5SnlBbUppQm1iM0p0WVhRZ1BUMDlJQ2RrYjNWaWJHVW5LU2tnZTF4dUlDQWdJSHR5WlhSMWNtNGdlM1I1Y0dVNklDZHVkVzFpWlhJbkxDQm1iM0p0WVhRNklDZGtiM1ZpYkdVbmZUdDlYRzRnSUgwZ1pXeHpaU0JwWmlnb2JHTlVlWEJsSUQwOVBTQW5jM1J5YVc1bkp5QW1KaUJtYjNKdFlYUWdQVDA5SUNka1lYUmxMWFJwYldVbktTQjhmQ0FvYkdOVWVYQmxJRDA5UFNBblpHRjBaU2NwS1NCN1hHNGdJQ0FnZTNKbGRIVnliaUI3ZEhsd1pUb2dKM04wY21sdVp5Y3NJR1p2Y20xaGREb2dKMlJoZEdVdGRHbHRaU2Q5TzMxY2JpQWdmU0JsYkhObElHbG1LR3hqVkhsd1pTQTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0I3Y21WMGRYSnVJSHQwZVhCbE9pQW5jM1J5YVc1bkozMDdmVnh1SUNCOUlHVnNjMlVnYVdZb2JHTlVlWEJsSUQwOVBTQW5abWxzWlNjcElIdGNiaUFnSUNCN2NtVjBkWEp1SUh0MGVYQmxPaUFuWm1sc1pTZDlPMzFjYmlBZ2ZTQmxiSE5sSUdsbUtHeGpWSGx3WlNBOVBUMGdKMkp2YjJ4bFlXNG5LU0I3WEc0Z0lDQWdlM0psZEhWeWJpQjdkSGx3WlRvZ0oySnZiMnhsWVc0bmZUdDlYRzRnSUgwZ1pXeHpaU0JwWmloc1kxUjVjR1VnUFQwOUlDZGliMjlzWldGdUp5a2dlMXh1SUNBZ0lIdHlaWFIxY200Z2UzUjVjR1U2SUNkaWIyOXNaV0Z1SjMwN2ZWeHVJQ0I5SUdWc2MyVWdhV1lvYkdOVWVYQmxJRDA5UFNBbllYSnlZWGtuSUh4OElHeGpWSGx3WlNBOVBUMGdKMnhwYzNRbktTQjdYRzRnSUNBZ2FXWW9jMjkxY21ObExtbDBaVzF6S1NCN1hHNGdJQ0FnSUNCMllYSWdhWFFnUFNCMGFHbHpMblJ2U25OdmJsTmphR1Z0WVNoemIzVnlZMlV1YVhSbGJYTXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIdDBlWEJsT2lBbllYSnlZWGtuTENCcGRHVnRjem9nYVhSOU8xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCN2RIbHdaVG9nSjJGeWNtRjVKeXdnYVhSbGJYTTZJSHQwZVhCbE9pQW5iMkpxWldOMEozMTlPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtS0hOdmRYSmpaUzRrY21WbUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhza2NtVm1PaUIwYUdsekxtMXZaR1ZzVFdGd1czTnZkWEpqWlM0a2NtVm1YU0EvSUNjakwyUmxabWx1YVhScGIyNXpMeWNnS3lCMGFHbHpMbTF2WkdWc1RXRndXM052ZFhKalpTNGtjbVZtWFNBNklITnZkWEpqWlM0a2NtVm1mVHRjYmlBZ2ZTQmxiSE5sSUdsbUtHeGpWSGx3WlNBOVBUMGdKM1p2YVdRbklIeDhJR3hqVkhsd1pTQTlQVDBnSnljcElIdGNiaUFnSUNCN2NtVjBkWEp1SUh0OU8zMWNiaUFnZlNCbGJITmxJR2xtSUNoMGFHbHpMbTF2WkdWc1RXRndXM052ZFhKalpTNTBlWEJsWFNrZ2UxeHVJQ0FnSUM4dklFbG1JSFJvYVhNZ1lTQnRiMlJsYkNCMWMybHVaeUJnZEhsd1pXQWdhVzV6ZEdWaFpDQnZaaUJnSkhKbFptQXNJSFJvWVhRbmN5Qm1hVzVsTGx4dUlDQWdJSEpsZEhWeWJpQjdKSEpsWmpvZ0p5TXZaR1ZtYVc1cGRHbHZibk12SnlBcklIUm9hWE11Ylc5a1pXeE5ZWEJiYzI5MWNtTmxMblI1Y0dWZGZUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQXZMeUJWYm10dWIzZHVJRzF2WkdWc0lIUjVjR1VnYjNJZ0oyOWlhbVZqZENjc0lIQmhjM01nYVhRZ1lXeHZibWN1WEc0Z0lDQWdjbVYwZFhKdUlIdDBlWEJsT2lCemIzVnlZMlV1ZEhsd1pYMDdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpUY0dWalEyOXVkbVZ5ZEdWeUxuQnliM1J2ZEhsd1pTNXlaWE52ZFhKalpVeHBjM1JwYm1jZ1BTQm1kVzVqZEdsdmJpaHZZbW9zSUhOM1lXZG5aWElzSUc5d2RITXNJR05oYkd4aVlXTnJLU0I3WEc0Z0lIWmhjaUJwTzF4dUlDQjJZWElnY0hKdlkyVnpjMlZrUTI5MWJuUWdQU0F3T3lBZ0lDOHZJR3B6YUdsdWRDQnBaMjV2Y21VNmJHbHVaVnh1SUNCMllYSWdjMlZzWmlBOUlIUm9hWE03SUNBZ0lDQWdJQ0FnSUM4dklHcHphR2x1ZENCcFoyNXZjbVU2YkdsdVpWeHVJQ0IyWVhJZ1pYaHdaV04wWldSRGIzVnVkQ0E5SUc5aWFpNWhjR2x6TG14bGJtZDBhRHRjYmlBZ2RtRnlJRjl6ZDJGbloyVnlJRDBnYzNkaFoyZGxjanNnSUNBdkx5QnFjMmhwYm5RZ2FXZHViM0psT214cGJtVmNiaUFnZG1GeUlGOXZjSFJ6SUQwZ2UzMDdYRzVjYmlBZ2FXWW9iM0IwY3lBbUppQnZjSFJ6TG5KbGNYVmxjM1JKYm5SbGNtTmxjSFJ2Y2lsN1hHNGdJQ0FnWDI5d2RITXVjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlJRDBnYjNCMGN5NXlaWEYxWlhOMFNXNTBaWEpqWlhCMGIzSTdYRzRnSUgxY2JseHVJQ0JwWmlodmNIUnpJQ1ltSUc5d2RITXVjbVZ6Y0c5dWMyVkpiblJsY21ObGNIUnZjaWw3WEc0Z0lDQWdYMjl3ZEhNdWNtVnpjRzl1YzJWSmJuUmxjbU5sY0hSdmNpQTlJRzl3ZEhNdWNtVnpjRzl1YzJWSmJuUmxjbU5sY0hSdmNqdGNiaUFnZlZ4dVhHNGdJSFpoY2lCemQyRm5aMlZ5VW1WeGRXVnpkRWhsWVdSbGNuTWdQU0FuWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWM3WEc1Y2JpQWdhV1lvYjNCMGN5QW1KaUJ2Y0hSekxuTjNZV2RuWlhKU1pYRjFaWE4wU0dWaFpHVnljeWtnZTF4dUlDQWdJSE4zWVdkblpYSlNaWEYxWlhOMFNHVmhaR1Z5Y3lBOUlHOXdkSE11YzNkaFoyZGxjbEpsY1hWbGMzUklaV0ZrWlhKek8xeHVJQ0I5WEc1Y2JpQWdhV1lvWlhod1pXTjBaV1JEYjNWdWRDQTlQVDBnTUNrZ2UxeHVJQ0FnSUhSb2FYTXVabWx1YVhOb0tHTmhiR3hpWVdOckxDQnpkMkZuWjJWeUtUdGNiaUFnZlZ4dVhHNGdJR1p2Y2locElEMGdNRHNnYVNBOElHVjRjR1ZqZEdWa1EyOTFiblE3SUdrckt5a2dlMXh1SUNBZ0lIWmhjaUJoY0drZ1BTQnZZbW91WVhCcGMxdHBYVHRjYmlBZ0lDQjJZWElnY0dGMGFDQTlJR0Z3YVM1d1lYUm9PMXh1SUNBZ0lIWmhjaUJoWW5OdmJIVjBaVkJoZEdnZ1BTQjBhR2x6TG1kbGRFRmljMjlzZFhSbFVHRjBhQ2h2WW1vdWMzZGhaMmRsY2xabGNuTnBiMjRzSUhSb2FYTXVaRzlqVEc5allYUnBiMjRzSUhCaGRHZ3BPMXh1WEc0Z0lDQWdhV1lvWVhCcExtUmxjMk55YVhCMGFXOXVLU0I3WEc0Z0lDQWdJQ0J6ZDJGbloyVnlMblJoWjNNZ1BTQnpkMkZuWjJWeUxuUmhaM01nZkh3Z1cxMDdYRzRnSUNBZ0lDQnpkMkZuWjJWeUxuUmhaM011Y0hWemFDaDdYRzRnSUNBZ0lDQWdJRzVoYldVZ09pQjBhR2x6TG1WNGRISmhZM1JVWVdjb1lYQnBMbkJoZEdncExGeHVJQ0FnSUNBZ0lDQmtaWE5qY21sd2RHbHZiaUE2SUdGd2FTNWtaWE5qY21sd2RHbHZiaUI4ZkNBbkoxeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhaaGNpQm9kSFJ3SUQwZ2UxeHVJQ0FnSUNBZ2RYSnNPaUJoWW5OdmJIVjBaVkJoZEdnc1hHNGdJQ0FnSUNCb1pXRmtaWEp6T2lCN0lHRmpZMlZ3ZERvZ2MzZGhaMmRsY2xKbGNYVmxjM1JJWldGa1pYSnpJSDBzWEc0Z0lDQWdJQ0J2YmpvZ2UzMHNYRzRnSUNBZ0lDQnRaWFJvYjJRNklDZG5aWFFuTEZ4dUlDQWdJQ0FnZEdsdFpXOTFkRG9nYjNCMGN5NTBhVzFsYjNWMFhHNGdJQ0FnZlR0Y2JpQWdJQ0F2S2lCcWMyaHBiblFnYVdkdWIzSmxPbk4wWVhKMElDb3ZYRzRnSUNBZ2FIUjBjQzV2Ymk1eVpYTndiMjV6WlNBOUlHWjFibU4wYVc5dUtHUmhkR0VwSUh0Y2JpQWdJQ0FnSUhCeWIyTmxjM05sWkVOdmRXNTBJQ3M5SURFN1hHNGdJQ0FnSUNCMllYSWdiMkpxSUQwZ1pHRjBZUzV2WW1vN1hHNGdJQ0FnSUNCcFppaHZZbW9wSUh0Y2JpQWdJQ0FnSUNBZ2MyVnNaaTVrWldOc1lYSmhkR2x2Ymlodlltb3NJRjl6ZDJGbloyVnlLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtS0hCeWIyTmxjM05sWkVOdmRXNTBJRDA5UFNCbGVIQmxZM1JsWkVOdmRXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhObGJHWXVabWx1YVhOb0tHTmhiR3hpWVdOckxDQmZjM2RoWjJkbGNpazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZUdGNiaUFnSUNCb2RIUndMbTl1TG1WeWNtOXlJRDBnWm5WdVkzUnBiMjRvWkdGMFlTa2dlMXh1SUNBZ0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2loa1lYUmhLVHRjYmlBZ0lDQWdJSEJ5YjJObGMzTmxaRU52ZFc1MElDczlJREU3WEc0Z0lDQWdJQ0JwWmlod2NtOWpaWE56WldSRGIzVnVkQ0E5UFQwZ1pYaHdaV04wWldSRGIzVnVkQ2tnZTF4dUlDQWdJQ0FnSUNCelpXeG1MbVpwYm1semFDaGpZV3hzWW1GamF5d2dYM04zWVdkblpYSXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzRnSUNBZ0x5b2dhbk5vYVc1MElHbG5ibTl5WlRwbGJtUWdLaTljYmx4dUlDQWdJR2xtS0hSb2FYTXVZMnhwWlc1MFFYVjBhRzl5YVhwaGRHbHZibk1nSmlZZ2RIbHdaVzltSUhSb2FYTXVZMnhwWlc1MFFYVjBhRzl5YVhwaGRHbHZibk11WVhCd2JIa2dQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJ4cFpXNTBRWFYwYUc5eWFYcGhkR2x2Ym5NdVlYQndiSGtvYUhSMGNDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JtVjNJRk4zWVdkblpYSklkSFJ3S0NrdVpYaGxZM1YwWlNob2RIUndMQ0JmYjNCMGN5azdYRzRnSUgxY2JuMDdYRzVjYmxOM1lXZG5aWEpUY0dWalEyOXVkbVZ5ZEdWeUxuQnliM1J2ZEhsd1pTNW5aWFJCWW5OdmJIVjBaVkJoZEdnZ1BTQm1kVzVqZEdsdmJpaDJaWEp6YVc5dUxDQmtiMk5NYjJOaGRHbHZiaXdnY0dGMGFDa2dJSHRjYmlBZ2FXWW9kbVZ5YzJsdmJpQTlQVDBnSnpFdU1DY3BJSHRjYmlBZ0lDQnBaaWhrYjJOTWIyTmhkR2x2Ymk1bGJtUnpWMmwwYUNnbkxtcHpiMjRuS1NrZ2UxeHVJQ0FnSUNBZ0x5OGdaMlYwSUhKdmIzUWdjR0YwYUZ4dUlDQWdJQ0FnZG1GeUlIQnZjeUE5SUdSdlkweHZZMkYwYVc5dUxteGhjM1JKYm1SbGVFOW1LQ2N2SnlrN1hHNGdJQ0FnSUNCcFppaHdiM01nUGlBd0tTQjdYRzRnSUNBZ0lDQWdJR1J2WTB4dlkyRjBhVzl1SUQwZ1pHOWpURzlqWVhScGIyNHVjM1ZpYzNSeWFXNW5LREFzSUhCdmN5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdkbUZ5SUd4dlkyRjBhVzl1SUQwZ1pHOWpURzlqWVhScGIyNDdYRzRnSUdsbUtIQmhkR2d1YVc1a1pYaFBaaWduYUhSMGNEb25LU0E5UFQwZ01DQjhmQ0J3WVhSb0xtbHVaR1Y0VDJZb0oyaDBkSEJ6T2ljcElEMDlQU0F3S1NCN1hHNGdJQ0FnYkc5allYUnBiMjRnUFNCd1lYUm9PMXh1SUNCOVhHNGdJR1ZzYzJVZ2UxeHVJQ0FnSUdsbUtHUnZZMHh2WTJGMGFXOXVMbVZ1WkhOWGFYUm9LQ2N2SnlrcElIdGNiaUFnSUNBZ0lHeHZZMkYwYVc5dUlEMGdaRzlqVEc5allYUnBiMjR1YzNWaWMzUnlhVzVuS0RBc0lHUnZZMHh2WTJGMGFXOXVMbXhsYm1kMGFDQXRJREVwTzF4dUlDQWdJSDFjYmlBZ0lDQnNiMk5oZEdsdmJpQXJQU0J3WVhSb08xeHVJQ0I5WEc0Z0lHeHZZMkYwYVc5dUlEMGdiRzlqWVhScGIyNHVjbVZ3YkdGalpTZ25lMlp2Y20xaGRIMG5MQ0FuYW5OdmJpY3BPMXh1SUNCeVpYUjFjbTRnYkc5allYUnBiMjQ3WEc1OU8xeHVYRzVUZDJGbloyVnlVM0JsWTBOdmJuWmxjblJsY2k1d2NtOTBiM1I1Y0dVdWMyVmpkWEpwZEhsRVpXWnBibWwwYVc5dWN5QTlJR1oxYm1OMGFXOXVLRzlpYWl3Z2MzZGhaMmRsY2lrZ2UxeHVJQ0JwWmlodlltb3VZWFYwYUc5eWFYcGhkR2x2Ym5NcElIdGNiaUFnSUNCMllYSWdibUZ0WlR0Y2JpQWdJQ0JtYjNJb2JtRnRaU0JwYmlCdlltb3VZWFYwYUc5eWFYcGhkR2x2Ym5NcElIdGNiaUFnSUNBZ0lIWmhjaUJwYzFaaGJHbGtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjJZWElnYzJWamRYSnBkSGxFWldacGJtbDBhVzl1SUQwZ2UxeHVJQ0FnSUNBZ0lDQjJaVzVrYjNKRmVIUmxibk5wYjI1ek9pQjdmVnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQWdJSFpoY2lCa1pXWnBibWwwYVc5dUlEMGdiMkpxTG1GMWRHaHZjbWw2WVhScGIyNXpXMjVoYldWZE8xeHVJQ0FnSUNBZ2FXWW9aR1ZtYVc1cGRHbHZiaTUwZVhCbElEMDlQU0FuWVhCcFMyVjVKeWtnZTF4dUlDQWdJQ0FnSUNCelpXTjFjbWwwZVVSbFptbHVhWFJwYjI0dWRIbHdaU0E5SUNkaGNHbExaWGtuTzF4dUlDQWdJQ0FnSUNCelpXTjFjbWwwZVVSbFptbHVhWFJwYjI0dWFXNGdQU0JrWldacGJtbDBhVzl1TG5CaGMzTkJjenRjYmlBZ0lDQWdJQ0FnYzJWamRYSnBkSGxFWldacGJtbDBhVzl1TG01aGJXVWdQU0JrWldacGJtbDBhVzl1TG10bGVXNWhiV1VnZkh3Z2JtRnRaVHRjYmlBZ0lDQWdJQ0FnYVhOV1lXeHBaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmxiSE5sSUdsbUtHUmxabWx1YVhScGIyNHVkSGx3WlNBOVBUMGdKMkpoYzJsalFYVjBhQ2NwSUh0Y2JpQWdJQ0FnSUNBZ2MyVmpkWEpwZEhsRVpXWnBibWwwYVc5dUxuUjVjR1VnUFNBblltRnphV05CZFhSb0p6dGNiaUFnSUNBZ0lDQWdhWE5XWVd4cFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCbGJITmxJR2xtS0dSbFptbHVhWFJwYjI0dWRIbHdaU0E5UFQwZ0oyOWhkWFJvTWljcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdWNGFYTjBhVzVuVTJOdmNHVnpJRDBnWkdWbWFXNXBkR2x2Ymk1elkyOXdaWE1nZkh3Z1cxMDdYRzRnSUNBZ0lDQWdJSFpoY2lCelkyOXdaWE1nUFNCN2ZUdGNiaUFnSUNBZ0lDQWdkbUZ5SUdrN1hHNGdJQ0FnSUNBZ0lHWnZjaWhwSUdsdUlHVjRhWE4wYVc1blUyTnZjR1Z6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUhOamIzQmxJRDBnWlhocGMzUnBibWRUWTI5d1pYTmJhVjA3WEc0Z0lDQWdJQ0FnSUNBZ2MyTnZjR1Z6VzNOamIzQmxMbk5qYjNCbFhTQTlJSE5qYjNCbExtUmxjMk55YVhCMGFXOXVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhObFkzVnlhWFI1UkdWbWFXNXBkR2x2Ymk1MGVYQmxJRDBnSjI5aGRYUm9NaWM3WEc0Z0lDQWdJQ0FnSUdsbUtHa2dQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZqZFhKcGRIbEVaV1pwYm1sMGFXOXVMbk5qYjNCbGN5QTlJSE5qYjNCbGN6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmloa1pXWnBibWwwYVc5dUxtZHlZVzUwVkhsd1pYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppaGtaV1pwYm1sMGFXOXVMbWR5WVc1MFZIbHdaWE11YVcxd2JHbGphWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCcGJYQnNhV05wZENBOUlHUmxabWx1YVhScGIyNHVaM0poYm5SVWVYQmxjeTVwYlhCc2FXTnBkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJpNW1iRzkzSUQwZ0oybHRjR3hwWTJsMEp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhObFkzVnlhWFI1UkdWbWFXNXBkR2x2Ymk1aGRYUm9iM0pwZW1GMGFXOXVWWEpzSUQwZ2FXMXdiR2xqYVhRdWJHOW5hVzVGYm1Sd2IybHVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHpWbUZzYVdRZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0F2S2lCcWMyaHBiblFnYVdkdWIzSmxPbk4wWVhKMElDb3ZYRzRnSUNBZ0lDQWdJQ0FnYVdZb1pHVm1hVzVwZEdsdmJpNW5jbUZ1ZEZSNWNHVnpXeWRoZFhSb2IzSnBlbUYwYVc5dVgyTnZaR1VuWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZb0lYTmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJpNW1iRzkzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklHTmhibTV2ZENCelpYUWdhV1lnWm14dmR5QnBjeUJoYkhKbFlXUjVJR1JsWm1sdVpXUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR0YxZEdoRGIyUmxJRDBnWkdWbWFXNXBkR2x2Ymk1bmNtRnVkRlI1Y0dWeld5ZGhkWFJvYjNKcGVtRjBhVzl1WDJOdlpHVW5YVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjMlZqZFhKcGRIbEVaV1pwYm1sMGFXOXVMbVpzYjNjZ1BTQW5ZV05qWlhOelEyOWtaU2M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSE5sWTNWeWFYUjVSR1ZtYVc1cGRHbHZiaTVoZFhSb2IzSnBlbUYwYVc5dVZYSnNJRDBnWVhWMGFFTnZaR1V1ZEc5clpXNVNaWEYxWlhOMFJXNWtjRzlwYm5RdWRYSnNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnpaV04xY21sMGVVUmxabWx1YVhScGIyNHVkRzlyWlc1VmNtd2dQU0JoZFhSb1EyOWtaUzUwYjJ0bGJrVnVaSEJ2YVc1MExuVnliRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhWE5XWVd4cFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQzhxSUdwemFHbHVkQ0JwWjI1dmNtVTZaVzVrSUNvdlhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1LR2x6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnYzNkaFoyZGxjaTV6WldOMWNtbDBlVVJsWm1sdWFYUnBiMjV6SUQwZ2MzZGhaMmRsY2k1elpXTjFjbWwwZVVSbFptbHVhWFJwYjI1eklIeDhJSHQ5TzF4dUlDQWdJQ0FnSUNCemQyRm5aMlZ5TG5ObFkzVnlhWFI1UkdWbWFXNXBkR2x2Ym5OYmJtRnRaVjBnUFNCelpXTjFjbWwwZVVSbFptbHVhWFJwYjI0N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzU5TzF4dVhHNVRkMkZuWjJWeVUzQmxZME52Ym5abGNuUmxjaTV3Y205MGIzUjVjR1V1WVhCcFNXNW1ieUE5SUdaMWJtTjBhVzl1S0c5aWFpd2djM2RoWjJkbGNpa2dlMXh1SUNBdkx5QnBibVp2SUhObFkzUnBiMjVjYmlBZ2FXWW9iMkpxTG1sdVptOHBJSHRjYmlBZ0lDQjJZWElnYVc1bWJ5QTlJRzlpYWk1cGJtWnZPMXh1SUNBZ0lITjNZV2RuWlhJdWFXNW1ieUE5SUh0OU8xeHVYRzRnSUNBZ2FXWW9hVzVtYnk1amIyNTBZV04wS1NCN1hHNGdJQ0FnSUNCemQyRm5aMlZ5TG1sdVptOHVZMjl1ZEdGamRDQTlJSHQ5TzF4dUlDQWdJQ0FnYzNkaFoyZGxjaTVwYm1adkxtTnZiblJoWTNRdVpXMWhhV3dnUFNCcGJtWnZMbU52Ym5SaFkzUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUtHbHVabTh1WkdWelkzSnBjSFJwYjI0cElIdGNiaUFnSUNBZ0lITjNZV2RuWlhJdWFXNW1ieTVrWlhOamNtbHdkR2x2YmlBOUlHbHVabTh1WkdWelkzSnBjSFJwYjI0N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0dsdVptOHVkR2wwYkdVcElIdGNiaUFnSUNBZ0lITjNZV2RuWlhJdWFXNW1ieTUwYVhSc1pTQTlJR2x1Wm04dWRHbDBiR1U3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1LR2x1Wm04dWRHVnliWE5QWmxObGNuWnBZMlZWY213cElIdGNiaUFnSUNBZ0lITjNZV2RuWlhJdWFXNW1ieTUwWlhKdGMwOW1VMlZ5ZG1salpTQTlJR2x1Wm04dWRHVnliWE5QWmxObGNuWnBZMlZWY213N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtS0dsdVptOHViR2xqWlc1elpTQjhmQ0JwYm1adkxteHBZMlZ1YzJWVmNtd3BJSHRjYmlBZ0lDQWdJSE4zWVdkblpYSXViR2xqWlc1elpTQTlJSHQ5TzF4dUlDQWdJQ0FnYVdZb2FXNW1ieTVzYVdObGJuTmxLU0I3WEc0Z0lDQWdJQ0FnSUhOM1lXZG5aWEl1YkdsalpXNXpaUzV1WVcxbElEMGdhVzVtYnk1c2FXTmxibk5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZb2FXNW1ieTVzYVdObGJuTmxWWEpzS1NCN1hHNGdJQ0FnSUNBZ0lITjNZV2RuWlhJdWJHbGpaVzV6WlM1MWNtd2dQU0JwYm1adkxteHBZMlZ1YzJWVmNtdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHVnNjMlVnZTF4dUlDQWdJSFJvYVhNdWQyRnlibWx1WjNNdWNIVnphQ2duYldsemMybHVaeUJwYm1adklITmxZM1JwYjI0bktUdGNiaUFnZlZ4dWZUdGNibHh1VTNkaFoyZGxjbE53WldORGIyNTJaWEowWlhJdWNISnZkRzkwZVhCbExtWnBibWx6YUNBOUlHWjFibU4wYVc5dUlDaGpZV3hzWW1GamF5d2diMkpxS1NCN1hHNGdJR05oYkd4aVlXTnJLRzlpYWlrN1hHNTlPMXh1SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdiRzluSUQwZ2NtVnhkV2x5WlNnbkxpNHZhR1ZzY0dWeWN5Y3BMbXh2Wnp0Y2JuWmhjaUJmSUQwZ2UxeHVJQ0JwYzFCc1lXbHVUMkpxWldOME9pQnlaWEYxYVhKbEtDZHNiMlJoYzJndFkyOXRjR0YwTDJ4aGJtY3ZhWE5RYkdGcGJrOWlhbVZqZENjcExGeHVJQ0JwYzFOMGNtbHVaem9nY21WeGRXbHlaU2duYkc5a1lYTm9MV052YlhCaGRDOXNZVzVuTDJselUzUnlhVzVuSnlrc1hHNTlPMXh1WEc1MllYSWdVMk5vWlcxaFRXRnlhM1Z3SUQwZ2NtVnhkV2x5WlNnbkxpNHZjMk5vWlcxaExXMWhjbXQxY0M1cWN5Y3BPMXh1ZG1GeUlHcHplV0Z0YkNBOUlISmxjWFZwY21Vb0oycHpMWGxoYld3bktUdGNibHh1ZG1GeUlFMXZaR1ZzSUQwZ2JXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbWRXNWpkR2x2YmlBb2JtRnRaU3dnWkdWbWFXNXBkR2x2Yml3Z2JXOWtaV3h6TENCdGIyUmxiRkJ5YjNCbGNuUjVUV0ZqY204cElIdGNiaUFnZEdocGN5NWtaV1pwYm1sMGFXOXVJRDBnWkdWbWFXNXBkR2x2YmlCOGZDQjdmVHRjYmlBZ2RHaHBjeTVwYzBGeWNtRjVJRDBnWkdWbWFXNXBkR2x2Ymk1MGVYQmxJRDA5UFNBbllYSnlZWGtuTzF4dUlDQjBhR2x6TG0xdlpHVnNjeUE5SUcxdlpHVnNjeUI4ZkNCN2ZUdGNiaUFnZEdocGN5NXVZVzFsSUQwZ2JtRnRaU0I4ZkNCa1pXWnBibWwwYVc5dUxuUnBkR3hsSUh4OElDZEpibXhwYm1VZ1RXOWtaV3duTzF4dUlDQjBhR2x6TG0xdlpHVnNVSEp2Y0dWeWRIbE5ZV055YnlBOUlHMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5QjhmQ0JtZFc1amRHbHZiaUFvY0hKdmNHVnlkSGtwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjSEp2Y0dWeWRIa3VaR1ZtWVhWc2REdGNiaUFnZlR0Y2JseHVJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JuMDdYRzVjYmk4dklFNXZkR1VoSUNCVWFHbHpJR1oxYm1OMGFXOXVJSGRwYkd3Z1ltVWdjbVZ0YjNabFpDQnBiaUF5TGpJdWVDRmNiazF2WkdWc0xuQnliM1J2ZEhsd1pTNWpjbVZoZEdWS1UwOU9VMkZ0Y0d4bElEMGdUVzlrWld3dWNISnZkRzkwZVhCbExtZGxkRk5oYlhCc1pWWmhiSFZsSUQwZ1puVnVZM1JwYjI0Z0tHMXZaR1ZzYzFSdlNXZHViM0psS1NCN1hHNGdJRzF2WkdWc2MxUnZTV2R1YjNKbElEMGdiVzlrWld4elZHOUpaMjV2Y21VZ2ZId2dlMzA3WEc1Y2JpQWdiVzlrWld4elZHOUpaMjV2Y21WYmRHaHBjeTV1WVcxbFhTQTlJSFJvYVhNN1hHNWNiaUFnTHk4Z1VtVnpjRzl1YzJVZ2MzVndjRzl5ZEZ4dUlDQnBaaUFvZEdocGN5NWxlR0Z0Y0d4bGN5QW1KaUJmTG1selVHeGhhVzVQWW1wbFkzUW9kR2hwY3k1bGVHRnRjR3hsY3lrZ0ppWWdkR2hwY3k1bGVHRnRjR3hsYzFzbllYQndiR2xqWVhScGIyNHZhbk52YmlkZEtTQjdYRzRnSUNBZ2RHaHBjeTVrWldacGJtbDBhVzl1TG1WNFlXMXdiR1VnUFNCMGFHbHpMbVY0WVcxd2JHVnpXeWRoY0hCc2FXTmhkR2x2Ymk5cWMyOXVKMTA3WEc1Y2JpQWdJQ0JwWmlBb1h5NXBjMU4wY21sdVp5aDBhR2x6TG1SbFptbHVhWFJwYjI0dVpYaGhiWEJzWlNrcElIdGNiaUFnSUNBZ0lIUm9hWE11WkdWbWFXNXBkR2x2Ymk1bGVHRnRjR3hsSUQwZ2FuTjVZVzFzTG5OaFptVk1iMkZrS0hSb2FYTXVaR1ZtYVc1cGRHbHZiaTVsZUdGdGNHeGxLVHRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0JwWmlBb0lYUm9hWE11WkdWbWFXNXBkR2x2Ymk1bGVHRnRjR3hsS1NCN1hHNGdJQ0FnZEdocGN5NWtaV1pwYm1sMGFXOXVMbVY0WVcxd2JHVWdQU0IwYUdsekxtVjRZVzF3YkdWek8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlGTmphR1Z0WVUxaGNtdDFjQzV6WTJobGJXRlViMHBUVDA0b2RHaHBjeTVrWldacGJtbDBhVzl1TENCMGFHbHpMbTF2WkdWc2N5d2diVzlrWld4elZHOUpaMjV2Y21Vc0lIUm9hWE11Ylc5a1pXeFFjbTl3WlhKMGVVMWhZM0p2S1R0Y2JuMDdYRzVjYmsxdlpHVnNMbkJ5YjNSdmRIbHdaUzVuWlhSTmIyTnJVMmxuYm1GMGRYSmxJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0J5WlhSMWNtNGdVMk5vWlcxaFRXRnlhM1Z3TG5OamFHVnRZVlJ2U0ZSTlRDaDBhR2x6TG01aGJXVXNJSFJvYVhNdVpHVm1hVzVwZEdsdmJpd2dkR2hwY3k1dGIyUmxiSE1zSUhSb2FYTXViVzlrWld4UWNtOXdaWEowZVUxaFkzSnZLVHRjYm4wN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCZklEMGdlMXh1SUNCamJHOXVaVVJsWlhBNklISmxjWFZwY21Vb0oyeHZaR0Z6YUMxamIyMXdZWFF2YkdGdVp5OWpiRzl1WlVSbFpYQW5LU3hjYmlBZ2FYTlZibVJsWm1sdVpXUTZJSEpsY1hWcGNtVW9KMnh2WkdGemFDMWpiMjF3WVhRdmJHRnVaeTlwYzFWdVpHVm1hVzVsWkNjcExGeHVJQ0JwYzBWdGNIUjVPaUJ5WlhGMWFYSmxLQ2RzYjJSaGMyZ3RZMjl0Y0dGMEwyeGhibWN2YVhORmJYQjBlU2NwTEZ4dUlDQnBjMDlpYW1WamREb2djbVZ4ZFdseVpTZ25iRzlrWVhOb0xXTnZiWEJoZEM5c1lXNW5MMmx6VDJKcVpXTjBKeWxjYm4wN1hHNTJZWElnYUdWc2NHVnljeUE5SUhKbGNYVnBjbVVvSnk0dUwyaGxiSEJsY25NbktUdGNiblpoY2lCTmIyUmxiQ0E5SUhKbGNYVnBjbVVvSnk0dmJXOWtaV3duS1R0Y2JuWmhjaUJUZDJGbloyVnlTSFIwY0NBOUlISmxjWFZwY21Vb0p5NHVMMmgwZEhBbktUdGNiblpoY2lCUklEMGdjbVZ4ZFdseVpTZ25jU2NwTzF4dVhHNTJZWElnVDNCbGNtRjBhVzl1SUQwZ2JXOWtkV3hsTG1WNGNHOXlkSE1nUFNCbWRXNWpkR2x2YmlBb2NHRnlaVzUwTENCelkyaGxiV1VzSUc5d1pYSmhkR2x2Ymtsa0xDQm9kSFJ3VFdWMGFHOWtMQ0J3WVhSb0xDQmhjbWR6TENCa1pXWnBibWwwYVc5dWN5d2diVzlrWld4ekxDQmpiR2xsYm5SQmRYUm9iM0pwZW1GMGFXOXVjeWtnZTF4dUlDQjJZWElnWlhKeWIzSnpJRDBnVzEwN1hHNWNiaUFnY0dGeVpXNTBJRDBnY0dGeVpXNTBJSHg4SUh0OU8xeHVJQ0JoY21keklEMGdZWEpuY3lCOGZDQjdmVHRjYmx4dUlDQnBaaWh3WVhKbGJuUWdKaVlnY0dGeVpXNTBMbTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQjBhR2x6TG1Oc2FXVnVkQ0E5SUhCaGNtVnVkQzV2Y0hScGIyNXpMbU5zYVdWdWRDQjhmQ0J1ZFd4c08xeHVJQ0FnSUhSb2FYTXVjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlJRDBnY0dGeVpXNTBMbTl3ZEdsdmJuTXVjbVZ4ZFdWemRFbHVkR1Z5WTJWd2RHOXlJSHg4SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTV5WlhOd2IyNXpaVWx1ZEdWeVkyVndkRzl5SUQwZ2NHRnlaVzUwTG05d2RHbHZibk11Y21WemNHOXVjMlZKYm5SbGNtTmxjSFJ2Y2lCOGZDQnVkV3hzTzF4dUlDQWdJSFJvYVhNdWNtVnhkV1Z6ZEVGblpXNTBJRDBnY0dGeVpXNTBMbTl3ZEdsdmJuTXVjbVZ4ZFdWemRFRm5aVzUwTzF4dUlDQjlYRzRnSUhSb2FYTXVZWFYwYUc5eWFYcGhkR2x2Ym5NZ1BTQmhjbWR6TG5ObFkzVnlhWFI1TzF4dUlDQjBhR2x6TG1KaGMyVlFZWFJvSUQwZ2NHRnlaVzUwTG1KaGMyVlFZWFJvSUh4OElDY3ZKenRjYmlBZ2RHaHBjeTVqYkdsbGJuUkJkWFJvYjNKcGVtRjBhVzl1Y3lBOUlHTnNhV1Z1ZEVGMWRHaHZjbWw2WVhScGIyNXpPMXh1SUNCMGFHbHpMbU52Ym5OMWJXVnpJRDBnWVhKbmN5NWpiMjV6ZFcxbGN5QjhmQ0J3WVhKbGJuUXVZMjl1YzNWdFpYTWdmSHdnV3lkaGNIQnNhV05oZEdsdmJpOXFjMjl1SjEwN1hHNGdJSFJvYVhNdWNISnZaSFZqWlhNZ1BTQmhjbWR6TG5CeWIyUjFZMlZ6SUh4OElIQmhjbVZ1ZEM1d2NtOWtkV05sY3lCOGZDQmJKMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5YVHRjYmlBZ2RHaHBjeTVrWlhCeVpXTmhkR1ZrSUQwZ1lYSm5jeTVrWlhCeVpXTmhkR1ZrTzF4dUlDQjBhR2x6TG1SbGMyTnlhWEIwYVc5dUlEMGdZWEpuY3k1a1pYTmpjbWx3ZEdsdmJqdGNiaUFnZEdocGN5NW9iM04wSUQwZ2NHRnlaVzUwTG1odmMzUTdYRzRnSUhSb2FYTXViV1YwYUc5a0lEMGdLR2gwZEhCTlpYUm9iMlFnZkh3Z1pYSnliM0p6TG5CMWMyZ29KMDl3WlhKaGRHbHZiaUFuSUNzZ2IzQmxjbUYwYVc5dVNXUWdLeUFuSUdseklHMXBjM05wYm1jZ2JXVjBhRzlrTGljcEtUdGNiaUFnZEdocGN5NXRiMlJsYkhNZ1BTQnRiMlJsYkhNZ2ZId2dlMzA3WEc0Z0lIUm9hWE11Ym1samEyNWhiV1VnUFNBb2IzQmxjbUYwYVc5dVNXUWdmSHdnWlhKeWIzSnpMbkIxYzJnb0owOXdaWEpoZEdsdmJuTWdiWFZ6ZENCb1lYWmxJR0VnYm1samEyNWhiV1V1SnlrcE8xeHVJQ0IwYUdsekxtOXdaWEpoZEdsdmJpQTlJR0Z5WjNNN1hHNGdJSFJvYVhNdWIzQmxjbUYwYVc5dWN5QTlJSHQ5TzF4dUlDQjBhR2x6TG5CaGNtRnRaWFJsY25NZ1BTQmhjbWR6SUNFOVBTQnVkV3hzSUQ4Z0tHRnlaM011Y0dGeVlXMWxkR1Z5Y3lCOGZDQmJYU2tnT2lCN2ZUdGNiaUFnZEdocGN5NXdZWEpsYm5RZ1BTQndZWEpsYm5RN1hHNGdJSFJvYVhNdWNHRjBhQ0E5SUNod1lYUm9JSHg4SUdWeWNtOXljeTV3ZFhOb0tDZFBjR1Z5WVhScGIyNGdKeUFySUhSb2FYTXVibWxqYTI1aGJXVWdLeUFuSUdseklHMXBjM05wYm1jZ2NHRjBhQzRuS1NrN1hHNGdJSFJvYVhNdWNtVnpjRzl1YzJWeklEMGdLR0Z5WjNNdWNtVnpjRzl1YzJWeklIeDhJSHQ5S1R0Y2JpQWdkR2hwY3k1elkyaGxiV1VnUFNCelkyaGxiV1VnZkh3Z2NHRnlaVzUwTG5OamFHVnRaU0I4ZkNBbmFIUjBjQ2M3WEc0Z0lIUm9hWE11YzJOb1pXMWxjeUE5SUdGeVozTXVjMk5vWlcxbGN5QjhmQ0J3WVhKbGJuUXVjMk5vWlcxbGN6dGNiaUFnZEdocGN5NXpaV04xY21sMGVTQTlJR0Z5WjNNdWMyVmpkWEpwZEhrZ2ZId2djR0Z5Wlc1MExuTmxZM1Z5YVhSNU8xeHVJQ0IwYUdsekxuTjFiVzFoY25rZ1BTQmhjbWR6TG5OMWJXMWhjbmtnZkh3Z0p5YzdYRzRnSUhSb2FYTXVkR2x0Wlc5MWRDQTlJSEJoY21WdWRDNTBhVzFsYjNWME8xeHVJQ0IwYUdsekxuUjVjR1VnUFNCdWRXeHNPMXh1SUNCMGFHbHpMblZ6WlVwUmRXVnllU0E5SUhCaGNtVnVkQzUxYzJWS1VYVmxjbms3WEc0Z0lIUm9hWE11YW5GMVpYSjVRV3BoZUVOaFkyaGxJRDBnY0dGeVpXNTBMbXB4ZFdWeWVVRnFZWGhEWVdOb1pUdGNiaUFnZEdocGN5NWxibUZpYkdWRGIyOXJhV1Z6SUQwZ2NHRnlaVzUwTG1WdVlXSnNaVU52YjJ0cFpYTTdYRzVjYmlBZ2RtRnlJR3RsZVR0Y2JseHVJQ0JwWmlnaGRHaHBjeTVvYjNOMEtTQjdYRzRnSUNBZ2FXWW9kSGx3Wlc5bUlIZHBibVJ2ZHlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVhRzl6ZENBOUlIZHBibVJ2ZHk1c2IyTmhkR2x2Ymk1b2IzTjBPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQ0E5SUNkc2IyTmhiR2h2YzNRbk8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCMGFHbHpMbkJoY21GdFpYUmxjazFoWTNKdklEMGdjR0Z5Wlc1MExuQmhjbUZ0WlhSbGNrMWhZM0p2SUh4OElHWjFibU4wYVc5dUlDaHZjR1Z5WVhScGIyNHNJSEJoY21GdFpYUmxjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQndZWEpoYldWMFpYSXVaR1ZtWVhWc2REdGNiaUFnZlR0Y2JseHVJQ0IwYUdsekxtbHViR2x1WlUxdlpHVnNjeUE5SUZ0ZE8xeHVYRzRnSUdsbUtIUm9hWE11WW1GelpWQmhkR2dnSVQwOUlDY3ZKeUFtSmlCMGFHbHpMbUpoYzJWUVlYUm9Mbk5zYVdObEtDMHhLU0E5UFQwZ0p5OG5LU0I3WEc0Z0lDQWdkR2hwY3k1aVlYTmxVR0YwYUNBOUlIUm9hWE11WW1GelpWQmhkR2d1YzJ4cFkyVW9NQ3dnTFRFcE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0hSNWNHVnZaaUIwYUdsekxtUmxjSEpsWTJGMFpXUWdQVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnYzNkcGRHTm9LSFJvYVhNdVpHVndjbVZqWVhSbFpDNTBiMHh2ZDJWeVEyRnpaU2dwS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2QwY25WbEp6b2dZMkZ6WlNBbmVXVnpKem9nWTJGelpTQW5NU2M2SUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVrWlhCeVpXTmhkR1ZrSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR05oYzJVZ0oyWmhiSE5sSnpvZ1kyRnpaU0FuYm04bk9pQmpZWE5sSUNjd0p6b2dZMkZ6WlNCdWRXeHNPaUI3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR1Z3Y21WallYUmxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdaR1ZtWVhWc2REb2dkR2hwY3k1a1pYQnlaV05oZEdWa0lEMGdRbTl2YkdWaGJpaDBhR2x6TG1SbGNISmxZMkYwWldRcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIWmhjaUJwTENCdGIyUmxiRHRjYmx4dUlDQnBaaUFvWkdWbWFXNXBkR2x2Ym5NcElIdGNiaUFnSUNBdkx5QmhaR1FnZEc4Z1oyeHZZbUZzSUcxdlpHVnNjMXh1SUNBZ0lHWnZjaUFvYTJWNUlHbHVJR1JsWm1sdWFYUnBiMjV6S1NCN1hHNGdJQ0FnSUNCdGIyUmxiQ0E5SUc1bGR5Qk5iMlJsYkNoclpYa3NJR1JsWm1sdWFYUnBiMjV6VzJ0bGVWMHNJSFJvYVhNdWJXOWtaV3h6TENCd1lYSmxiblF1Ylc5a1pXeFFjbTl3WlhKMGVVMWhZM0p2S1R0Y2JseHVJQ0FnSUNBZ2FXWWdLRzF2WkdWc0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWJXOWtaV3h6VzJ0bGVWMGdQU0J0YjJSbGJEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmlBZ1pXeHpaU0I3WEc0Z0lDQWdaR1ZtYVc1cGRHbHZibk1nUFNCN2ZUdGNiaUFnZlZ4dVhHNGdJR1p2Y2lBb2FTQTlJREE3SUdrZ1BDQjBhR2x6TG5CaGNtRnRaWFJsY25NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQjJZWElnWkN3Z2NHRnlZVzBnUFNCMGFHbHpMbkJoY21GdFpYUmxjbk5iYVYwN1hHNWNiaUFnSUNBdkx5QkJiR3h2ZHlCdFlXTnlieUIwYnlCelpYUWdkR2hsSUdSbFptRjFiSFFnZG1Gc2RXVmNiaUFnSUNCd1lYSmhiUzVrWldaaGRXeDBJRDBnZEdocGN5NXdZWEpoYldWMFpYSk5ZV055YnloMGFHbHpMQ0J3WVhKaGJTazdYRzVjYmlBZ0lDQnBaaUFvY0dGeVlXMHVkSGx3WlNBOVBUMGdKMkZ5Y21GNUp5a2dlMXh1SUNBZ0lDQWdjR0Z5WVcwdWFYTk1hWE4wSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSEJoY21GdExtRnNiRzkzVFhWc2RHbHdiR1VnUFNCMGNuVmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJwYm01bGNsUjVjR1VnUFNCMGFHbHpMbWRsZEZSNWNHVW9jR0Z5WVcwcE8xeHVYRzRnSUNBZ2FXWWdLR2x1Ym1WeVZIbHdaU0FtSmlCcGJtNWxjbFI1Y0dVdWRHOVRkSEpwYm1jb0tTNTBiMHh2ZDJWeVEyRnpaU2dwSUQwOVBTQW5ZbTl2YkdWaGJpY3BJSHRjYmlBZ0lDQWdJSEJoY21GdExtRnNiRzkzWVdKc1pWWmhiSFZsY3lBOUlIdDlPMXh1SUNBZ0lDQWdjR0Z5WVcwdWFYTk1hWE4wSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSEJoY21GdFd5ZGxiblZ0SjEwZ1BTQmJkSEoxWlN3Z1ptRnNjMlZkT3lBdkx5QjFjMlVnWVdOMGRXRnNJSEJ5YVcxcGRHbDJaWE5jYmlBZ0lDQjlYRzVjYmlBZ0lDQm1iM0lvYTJWNUlHbHVJSEJoY21GdEtTQjdYRzRnSUNBZ0lDQm9aV3h3WlhKekxtVjRkSEpoWTNSRmVIUmxibk5wYjI1ektHdGxlU3dnY0dGeVlXMHBPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaDBlWEJsYjJZZ2NHRnlZVzFiSjNndFpYaGhiWEJzWlNkZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ1pDQTlJSEJoY21GdFd5ZDRMV1Y0WVcxd2JHVW5YVHRjYmlBZ0lDQWdJSEJoY21GdExtUmxabUYxYkhRZ1BTQmtPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaHdZWEpoYlZzbmVDMWxlR0Z0Y0d4bGN5ZGRLU0I3WEc0Z0lDQWdJQ0JrSUQwZ2NHRnlZVzFiSjNndFpYaGhiWEJzWlhNblhTNWtaV1poZFd4ME8xeHVJQ0FnSUNBZ2FXWW9kSGx3Wlc5bUlHUWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJSEJoY21GdExtUmxabUYxYkhRZ1BTQmtPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIWmhjaUJsYm5WdFZtRnNkV1Z6SUQwZ2NHRnlZVzFiSjJWdWRXMG5YU0I4ZkNBb2NHRnlZVzB1YVhSbGJYTWdKaVlnY0dGeVlXMHVhWFJsYlhOYkoyVnVkVzBuWFNrN1hHNWNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHVnVkVzFXWVd4MVpYTWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQjJZWElnYVdRN1hHNWNiaUFnSUNBZ0lIQmhjbUZ0TG1Gc2JHOTNZV0pzWlZaaGJIVmxjeUE5SUh0OU8xeHVJQ0FnSUNBZ2NHRnlZVzB1WVd4c2IzZGhZbXhsVm1Gc2RXVnpMblpoYkhWbGN5QTlJRnRkTzF4dUlDQWdJQ0FnY0dGeVlXMHVZV3hzYjNkaFlteGxWbUZzZFdWekxtUmxjMk55YVhCMGFYWmxWbUZzZFdWeklEMGdXMTA3WEc1Y2JpQWdJQ0FnSUdadmNpQW9hV1FnUFNBd095QnBaQ0E4SUdWdWRXMVdZV3gxWlhNdWJHVnVaM1JvT3lCcFpDc3JLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQjJZV3gxWlNBOUlHVnVkVzFXWVd4MVpYTmJhV1JkTzF4dUlDQWdJQ0FnSUNCMllYSWdhWE5FWldaaGRXeDBJRDBnS0haaGJIVmxJRDA5UFNCd1lYSmhiUzVrWldaaGRXeDBJSHg4SUhaaGJIVmxLeWNuSUQwOVBTQndZWEpoYlM1a1pXWmhkV3gwS1R0Y2JseHVJQ0FnSUNBZ0lDQndZWEpoYlM1aGJHeHZkMkZpYkdWV1lXeDFaWE11ZG1Gc2RXVnpMbkIxYzJnb2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBdkx5QkJiSGRoZVhNZ2FHRjJaU0J6ZEhKcGJtY2dabTl5SUdSbGMyTnlhWEIwYVhabElIWmhiSFZsY3k0dUxpNWNiaUFnSUNBZ0lDQWdjR0Z5WVcwdVlXeHNiM2RoWW14bFZtRnNkV1Z6TG1SbGMyTnlhWEIwYVhabFZtRnNkV1Z6TG5CMWMyZ29lM1poYkhWbElEb2dkbUZzZFdVckp5Y3NJR2x6UkdWbVlYVnNkRG9nYVhORVpXWmhkV3gwZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIQmhjbUZ0TG5SNWNHVWdQVDA5SUNkaGNuSmhlU2NwSUh0Y2JpQWdJQ0FnSUdsdWJtVnlWSGx3WlNBOUlGdHBibTVsY2xSNWNHVmRPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhCaGNtRnRMbUZzYkc5M1lXSnNaVlpoYkhWbGN5QTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lDQWdMeThnWTJGdUozUWdjMmh2ZHlCaGN5QmhJR3hwYzNRZ2FXWWdibThnZG1Gc2RXVnpJSFJ2SUhObGJHVmpkQ0JtY205dFhHNGdJQ0FnSUNBZ0lHUmxiR1YwWlNCd1lYSmhiUzVwYzB4cGMzUTdYRzRnSUNBZ0lDQWdJR1JsYkdWMFpTQndZWEpoYlM1aGJHeHZkMDExYkhScGNHeGxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lIQmhjbUZ0TG0xdlpHVnNVMmxuYm1GMGRYSmxJRDBnZTNSNWNHVTZJR2x1Ym1WeVZIbHdaU3dnWkdWbWFXNXBkR2x2Ym5NNklIUm9hWE11Ylc5a1pXeHpmVHRjYmlBZ0lDQndZWEpoYlM1emFXZHVZWFIxY21VZ1BTQjBhR2x6TG1kbGRFMXZaR1ZzVTJsbmJtRjBkWEpsS0dsdWJtVnlWSGx3WlN3Z2RHaHBjeTV0YjJSbGJITXBMblJ2VTNSeWFXNW5LQ2s3WEc0Z0lDQWdjR0Z5WVcwdWMyRnRjR3hsU2xOUFRpQTlJSFJvYVhNdVoyVjBUVzlrWld4VFlXMXdiR1ZLVTA5T0tHbHVibVZ5Vkhsd1pTd2dkR2hwY3k1dGIyUmxiSE1wTzF4dUlDQWdJSEJoY21GdExuSmxjM0J2Ym5ObFEyeGhjM05UYVdkdVlYUjFjbVVnUFNCd1lYSmhiUzV6YVdkdVlYUjFjbVU3WEc0Z0lIMWNibHh1SUNCMllYSWdhMlY1Ym1GdFpTd2daR1ZtWVhWc2RGSmxjM0J2Ym5ObFEyOWtaU3dnY21WemNHOXVjMlVzSUhKbGMzQnZibk5sY3lBOUlIUm9hWE11Y21WemNHOXVjMlZ6TzF4dVhHNGdJR2xtSUNoeVpYTndiMjV6WlhOYkp6SXdNQ2RkS1NCN1hHNGdJQ0FnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlhOYkp6SXdNQ2RkTzF4dUlDQWdJR1JsWm1GMWJIUlNaWE53YjI1elpVTnZaR1VnUFNBbk1qQXdKenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHlaWE53YjI1elpYTmJKekl3TVNkZEtTQjdYRzRnSUNBZ2NtVnpjRzl1YzJVZ1BTQnlaWE53YjI1elpYTmJKekl3TVNkZE8xeHVJQ0FnSUdSbFptRjFiSFJTWlhOd2IyNXpaVU52WkdVZ1BTQW5NakF4Snp0Y2JpQWdmU0JsYkhObElHbG1JQ2h5WlhOd2IyNXpaWE5iSnpJd01pZGRLU0I3WEc0Z0lDQWdjbVZ6Y0c5dWMyVWdQU0J5WlhOd2IyNXpaWE5iSnpJd01pZGRPMXh1SUNBZ0lHUmxabUYxYkhSU1pYTndiMjV6WlVOdlpHVWdQU0FuTWpBeUp6dGNiaUFnZlNCbGJITmxJR2xtSUNoeVpYTndiMjV6WlhOYkp6SXdNeWRkS1NCN1hHNGdJQ0FnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlhOYkp6SXdNeWRkTzF4dUlDQWdJR1JsWm1GMWJIUlNaWE53YjI1elpVTnZaR1VnUFNBbk1qQXpKenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHlaWE53YjI1elpYTmJKekl3TkNkZEtTQjdYRzRnSUNBZ2NtVnpjRzl1YzJVZ1BTQnlaWE53YjI1elpYTmJKekl3TkNkZE8xeHVJQ0FnSUdSbFptRjFiSFJTWlhOd2IyNXpaVU52WkdVZ1BTQW5NakEwSnp0Y2JpQWdmU0JsYkhObElHbG1JQ2h5WlhOd2IyNXpaWE5iSnpJd05TZGRLU0I3WEc0Z0lDQWdjbVZ6Y0c5dWMyVWdQU0J5WlhOd2IyNXpaWE5iSnpJd05TZGRPMXh1SUNBZ0lHUmxabUYxYkhSU1pYTndiMjV6WlVOdlpHVWdQU0FuTWpBMUp6dGNiaUFnZlNCbGJITmxJR2xtSUNoeVpYTndiMjV6WlhOYkp6SXdOaWRkS1NCN1hHNGdJQ0FnY21WemNHOXVjMlVnUFNCeVpYTndiMjV6WlhOYkp6SXdOaWRkTzF4dUlDQWdJR1JsWm1GMWJIUlNaWE53YjI1elpVTnZaR1VnUFNBbk1qQTJKenRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHlaWE53YjI1elpYTmJKMlJsWm1GMWJIUW5YU2tnZTF4dUlDQWdJSEpsYzNCdmJuTmxJRDBnY21WemNHOXVjMlZ6V3lka1pXWmhkV3gwSjEwN1hHNGdJQ0FnWkdWbVlYVnNkRkpsYzNCdmJuTmxRMjlrWlNBOUlDZGtaV1poZFd4MEp6dGNiaUFnZlZ4dVhHNGdJR1p2Y2loclpYbHVZVzFsSUdsdUlISmxjM0J2Ym5ObGN5a2dlMXh1SUNBZ0lHaGxiSEJsY25NdVpYaDBjbUZqZEVWNGRHVnVjMmx2Ym5Nb2EyVjVibUZ0WlN3Z2NtVnpjRzl1YzJWektUdGNiaUFnSUNCcFppaDBlWEJsYjJZZ2EyVjVibUZ0WlNBOVBUMGdKM04wY21sdVp5Y2dKaVlnYTJWNWJtRnRaUzVwYm1SbGVFOW1LQ2Q0TFNjcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2RtRnlJSEpsYzNCdmJuTmxUMkpxWldOMElEMGdjbVZ6Y0c5dWMyVnpXMnRsZVc1aGJXVmRPMXh1SUNBZ0lDQWdhV1lvZEhsd1pXOW1JSEpsYzNCdmJuTmxUMkpxWldOMElEMDlQU0FuYjJKcVpXTjBKeUFtSmlCMGVYQmxiMllnY21WemNHOXVjMlZQWW1wbFkzUXVhR1ZoWkdWeWN5QTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR2hsWVdSbGNuTWdQU0J5WlhOd2IyNXpaVTlpYW1WamRDNW9aV0ZrWlhKek8xeHVJQ0FnSUNBZ0lDQm1iM0lvZG1GeUlHaGxZV1JsY2s1aGJXVWdhVzRnYUdWaFpHVnljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJvWldGa1pYSWdQU0JvWldGa1pYSnpXMmhsWVdSbGNrNWhiV1ZkTzF4dUlDQWdJQ0FnSUNBZ0lHbG1LSFI1Y0dWdlppQm9aV0ZrWlhJZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lvZG1GeUlHaGxZV1JsY2t0bGVTQnBiaUJvWldGa1pYSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhR1ZzY0dWeWN5NWxlSFJ5WVdOMFJYaDBaVzV6YVc5dWN5aG9aV0ZrWlhKTFpYa3NJR2hsWVdSbGNpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYVdZZ0tISmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ1ptOXlLR3RsZVc1aGJXVWdhVzRnY21WemNHOXVjMlVwSUh0Y2JpQWdJQ0FnSUdobGJIQmxjbk11WlhoMGNtRmpkRVY0ZEdWdWMybHZibk1vYTJWNWJtRnRaU3dnY21WemNHOXVjMlVwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHlaWE53YjI1elpTQW1KaUJ5WlhOd2IyNXpaUzV6WTJobGJXRXBJSHRjYmlBZ0lDQjJZWElnY21WemIyeDJaV1JOYjJSbGJDQTlJSFJvYVhNdWNtVnpiMngyWlUxdlpHVnNLSEpsYzNCdmJuTmxMbk5qYUdWdFlTd2daR1ZtYVc1cGRHbHZibk1wTzF4dUlDQWdJSFpoY2lCemRXTmpaWE56VW1WemNHOXVjMlU3WEc1Y2JpQWdJQ0JrWld4bGRHVWdjbVZ6Y0c5dWMyVnpXMlJsWm1GMWJIUlNaWE53YjI1elpVTnZaR1ZkTzF4dVhHNGdJQ0FnYVdZZ0tISmxjMjlzZG1Wa1RXOWtaV3dwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjM1ZqWTJWemMxSmxjM0J2Ym5ObElEMGdlMzA3WEc0Z0lDQWdJQ0J6ZFdOalpYTnpVbVZ6Y0c5dWMyVWdQU0IwYUdsekxuTjFZMk5sYzNOU1pYTndiMjV6WlZ0a1pXWmhkV3gwVW1WemNHOXVjMlZEYjJSbFhTQTlJSEpsYzI5c2RtVmtUVzlrWld3N1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGNtVnpjRzl1YzJVdWMyTm9aVzFoTG5SNWNHVWdmSHdnY21WemNHOXVjMlV1YzJOb1pXMWhMblI1Y0dVZ1BUMDlJQ2R2WW1wbFkzUW5JSHg4SUhKbGMzQnZibk5sTG5OamFHVnRZUzUwZVhCbElEMDlQU0FuWVhKeVlYa25LU0I3WEc0Z0lDQWdJQ0F2THlCSmJteHBibVVnYlc5a1pXeGNiaUFnSUNBZ0lIUm9hWE11YzNWalkyVnpjMUpsYzNCdmJuTmxJRDBnZTMwN1hHNGdJQ0FnSUNCemRXTmpaWE56VW1WemNHOXVjMlVnUFNCMGFHbHpMbk4xWTJObGMzTlNaWE53YjI1elpWdGtaV1poZFd4MFVtVnpjRzl1YzJWRGIyUmxYU0E5SUc1bGR5Qk5iMlJsYkNoMWJtUmxabWx1WldRc0lISmxjM0J2Ym5ObExuTmphR1Z0WVNCOGZDQjdmU3dnZEdocGN5NXRiMlJsYkhNc0lIQmhjbVZ1ZEM1dGIyUmxiRkJ5YjNCbGNuUjVUV0ZqY204cE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0F2THlCUWNtbHRhWFJwZG1WY2JpQWdJQ0FnSUhSb2FYTXVjM1ZqWTJWemMxSmxjM0J2Ym5ObElEMGdlMzA3WEc0Z0lDQWdJQ0J6ZFdOalpYTnpVbVZ6Y0c5dWMyVWdQU0IwYUdsekxuTjFZMk5sYzNOU1pYTndiMjV6WlZ0a1pXWmhkV3gwVW1WemNHOXVjMlZEYjJSbFhTQTlJSEpsYzNCdmJuTmxMbk5qYUdWdFlUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jM1ZqWTJWemMxSmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ0lDQnpkV05qWlhOelVtVnpjRzl1YzJVdWRtVnVaRzl5UlhoMFpXNXphVzl1Y3lBOUlISmxjM0J2Ym5ObExuWmxibVJ2Y2tWNGRHVnVjMmx2Ym5NN1hHNGdJQ0FnSUNBdkx5QkJkSFJoWTJnZ2NtVnpjRzl1YzJVZ2NISnZjR1Z5ZEdsbGMxeHVJQ0FnSUNBZ2FXWWdLSEpsYzNCdmJuTmxMbVJsYzJOeWFYQjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lITjFZMk5sYzNOU1pYTndiMjV6WlM1a1pYTmpjbWx3ZEdsdmJpQTlJSEpsYzNCdmJuTmxMbVJsYzJOeWFYQjBhVzl1TzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jbVZ6Y0c5dWMyVXVaWGhoYlhCc1pYTXBJSHRjYmlBZ0lDQWdJQ0FnYzNWalkyVnpjMUpsYzNCdmJuTmxMbVY0WVcxd2JHVnpJRDBnY21WemNHOXVjMlV1WlhoaGJYQnNaWE03WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaHlaWE53YjI1elpTNW9aV0ZrWlhKektTQjdYRzRnSUNBZ0lDQWdJSE4xWTJObGMzTlNaWE53YjI1elpTNW9aV0ZrWlhKeklEMGdjbVZ6Y0c5dWMyVXVhR1ZoWkdWeWN6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMblI1Y0dVZ1BTQnlaWE53YjI1elpUdGNiaUFnZlZ4dVhHNGdJR2xtSUNobGNuSnZjbk11YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG5KbGMyOTFjbU5sSUNZbUlIUm9hWE11Y21WemIzVnlZMlV1WVhCcElDWW1JSFJvYVhNdWNtVnpiM1Z5WTJVdVlYQnBMbVpoYVd3cElIdGNiaUFnSUNBZ0lIUm9hWE11Y21WemIzVnlZMlV1WVhCcExtWmhhV3dvWlhKeWIzSnpLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JuMDdYRzVjYms5d1pYSmhkR2x2Ymk1d2NtOTBiM1I1Y0dVdWFYTkVaV1poZFd4MFFYSnlZWGxKZEdWdFZtRnNkV1VnUFNCbWRXNWpkR2x2YmloMllXeDFaU3dnY0dGeVlXMHBJSHRjYmlBZ2FXWWdLSEJoY21GdExtUmxabUYxYkhRZ0ppWWdRWEp5WVhrdWFYTkJjbkpoZVNod1lYSmhiUzVrWldaaGRXeDBLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQndZWEpoYlM1a1pXWmhkV3gwTG1sdVpHVjRUMllvZG1Gc2RXVXBJQ0U5UFNBdE1UdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2RtRnNkV1VnUFQwOUlIQmhjbUZ0TG1SbFptRjFiSFE3WEc1OU8xeHVYRzVQY0dWeVlYUnBiMjR1Y0hKdmRHOTBlWEJsTG1kbGRGUjVjR1VnUFNCbWRXNWpkR2x2YmlBb2NHRnlZVzBwSUh0Y2JpQWdkbUZ5SUhSNWNHVWdQU0J3WVhKaGJTNTBlWEJsTzF4dUlDQjJZWElnWm05eWJXRjBJRDBnY0dGeVlXMHVabTl5YldGME8xeHVJQ0IyWVhJZ2FYTkJjbkpoZVNBOUlHWmhiSE5sTzF4dUlDQjJZWElnYzNSeU8xeHVYRzRnSUdsbUlDaDBlWEJsSUQwOVBTQW5hVzUwWldkbGNpY2dKaVlnWm05eWJXRjBJRDA5UFNBbmFXNTBNekluS1NCN1hHNGdJQ0FnYzNSeUlEMGdKMmx1ZEdWblpYSW5PMXh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZHBiblJsWjJWeUp5QW1KaUJtYjNKdFlYUWdQVDA5SUNkcGJuUTJOQ2NwSUh0Y2JpQWdJQ0J6ZEhJZ1BTQW5iRzl1WnljN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjJsdWRHVm5aWEluS1NCN1hHNGdJQ0FnYzNSeUlEMGdKMmx1ZEdWblpYSW5PMXh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ2FXWWdLR1p2Y20xaGRDQTlQVDBnSjJSaGRHVXRkR2x0WlNjcElIdGNiaUFnSUNBZ0lITjBjaUE5SUNka1lYUmxMWFJwYldVbk8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1ptOXliV0YwSUQwOVBTQW5aR0YwWlNjcElIdGNiaUFnSUNBZ0lITjBjaUE5SUNka1lYUmxKenRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MzUnlJRDBnSjNOMGNtbHVaeWM3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZHVkVzFpWlhJbklDWW1JR1p2Y20xaGRDQTlQVDBnSjJac2IyRjBKeWtnZTF4dUlDQWdJSE4wY2lBOUlDZG1iRzloZENjN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjI1MWJXSmxjaWNnSmlZZ1ptOXliV0YwSUQwOVBTQW5aRzkxWW14bEp5a2dlMXh1SUNBZ0lITjBjaUE5SUNka2IzVmliR1VuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2R1ZFcxaVpYSW5LU0I3WEc0Z0lDQWdjM1J5SUQwZ0oyUnZkV0pzWlNjN1hHNGdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjJKdmIyeGxZVzRuS1NCN1hHNGdJQ0FnYzNSeUlEMGdKMkp2YjJ4bFlXNG5PMXh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZGhjbkpoZVNjcElIdGNiaUFnSUNCcGMwRnljbUY1SUQwZ2RISjFaVHRjYmx4dUlDQWdJR2xtSUNod1lYSmhiUzVwZEdWdGN5a2dlMXh1SUNBZ0lDQWdjM1J5SUQwZ2RHaHBjeTVuWlhSVWVYQmxLSEJoY21GdExtbDBaVzF6S1R0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMlpwYkdVbktTQjdYRzRnSUNBZ2MzUnlJRDBnSjJacGJHVW5PMXh1SUNCOVhHNWNiaUFnYVdZZ0tIQmhjbUZ0TGlSeVpXWXBJSHRjYmlBZ0lDQnpkSElnUFNCb1pXeHdaWEp6TG5OcGJYQnNaVkpsWmlod1lYSmhiUzRrY21WbUtUdGNiaUFnZlZ4dVhHNGdJSFpoY2lCelkyaGxiV0VnUFNCd1lYSmhiUzV6WTJobGJXRTdYRzVjYmlBZ2FXWWdLSE5qYUdWdFlTa2dlMXh1SUNBZ0lIWmhjaUJ5WldZZ1BTQnpZMmhsYldFdUpISmxaanRjYmx4dUlDQWdJR2xtSUNoeVpXWXBJSHRjYmlBZ0lDQWdJSEpsWmlBOUlHaGxiSEJsY25NdWMybHRjR3hsVW1WbUtISmxaaWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaHBjMEZ5Y21GNUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmJJSEpsWmlCZE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbFpqdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1NXWWdhVzVzYVc1bElITmphR1Z0WVN3Z2QyVWdZV1JrSUdsMElHOTFjaUJwYm5SbGNtRnNJR2hoYzJnZ0xUNGdkMmhwWTJnZ1oybDJaWE1nZFhNZ2FYUW5jeUJKUkNBb2FXNTBLVnh1SUNBZ0lDQWdhV1lvYzJOb1pXMWhMblI1Y0dVZ1BUMDlJQ2R2WW1wbFkzUW5LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtRmtaRWx1YkdsdVpVMXZaR1ZzS0hOamFHVnRZU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1blpYUlVlWEJsS0hOamFHVnRZU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJR2xtSUNocGMwRnljbUY1S1NCN1hHNGdJQ0FnY21WMGRYSnVJRnNnYzNSeUlGMDdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlITjBjanRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCaFpHUnpJR0Z1SUdsdWJHbHVaU0J6WTJobGJXRWdLRzF2WkdWc0tTQjBieUJoSUdoaGMyZ3NJSGRvWlhKbElIZGxJR05oYmlCeVpXWWdhWFFnYkdGMFpYSmNiaUFxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J6WTJobGJXRWdZU0J6WTJobGJXRmNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnZEdobElFbEVJRzltSUhSb1pTQnpZMmhsYldFZ1ltVnBibWNnWVdSa1pXUXNJRzl5SUc1MWJHeGNiaUFxS2k5Y2JrOXdaWEpoZEdsdmJpNXdjbTkwYjNSNWNHVXVZV1JrU1c1c2FXNWxUVzlrWld3Z1BTQm1kVzVqZEdsdmJpQW9jMk5vWlcxaEtTQjdYRzRnSUhaaGNpQnNaVzRnUFNCMGFHbHpMbWx1YkdsdVpVMXZaR1ZzY3k1c1pXNW5kR2c3WEc0Z0lIWmhjaUJ0YjJSbGJDQTlJSFJvYVhNdWNtVnpiMngyWlUxdlpHVnNLSE5qYUdWdFlTd2dlMzBwTzF4dUlDQnBaaWh0YjJSbGJDa2dlMXh1SUNBZ0lIUm9hWE11YVc1c2FXNWxUVzlrWld4ekxuQjFjMmdvYlc5a1pXd3BPMXh1SUNBZ0lISmxkSFZ5YmlBblNXNXNhVzVsSUUxdlpHVnNJQ2NyYkdWdU95QXZMeUJ5WlhSMWNtNGdjM1J5YVc1bklISmxaaUJ2WmlCMGFHVWdhVzVzYVc1bElHMXZaR1ZzSUNoMWMyVmtJSGRwZEdnZ0kyZGxkRWx1YkdsdVpVMXZaR1ZzS1Z4dUlDQjlYRzRnSUhKbGRIVnliaUJ1ZFd4c095QXZMeUJ5WlhCdmNuUWdaWEp5YjNKelAxeHVmVHRjYmx4dUx5b3FYRzRnS2lCblpYUnpJSFJvWlNCcGJuUmxjbTVoYkNCeVpXWWdkRzhnWVc0Z2FXNXNhVzVsSUcxdlpHVnNYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYVc1c2FXNWxYM04wY2lCaElITjBjbWx1WnlCeVpXWmxjbVZ1WTJVZ2RHOGdZVzRnYVc1c2FXNWxJRzF2WkdWc1hHNGdLaUJBY21WMGRYSnVJSHROYjJSbGJIMGdkR2hsSUcxdlpHVnNJR0psYVc1bklISmxabVZ5Wlc1alpXUXVJRTl5SUc1MWJHeGNiaUFxS2k5Y2JrOXdaWEpoZEdsdmJpNXdjbTkwYjNSNWNHVXVaMlYwU1c1c2FXNWxUVzlrWld3Z1BTQm1kVzVqZEdsdmJpaHBibXhwYm1WVGRISXBJSHRjYmlBZ2FXWW9MMTVKYm14cGJtVWdUVzlrWld3Z1hGeGtLeVF2TG5SbGMzUW9hVzVzYVc1bFUzUnlLU2tnZTF4dUlDQWdJSFpoY2lCcFpDQTlJSEJoY25ObFNXNTBLR2x1YkdsdVpWTjBjaTV6ZFdKemRISW9KMGx1YkdsdVpTQk5iMlJsYkNjdWJHVnVaM1JvS1M1MGNtbHRLQ2tzTVRBcE95QXZMMXh1SUNBZ0lIWmhjaUJ0YjJSbGJDQTlJSFJvYVhNdWFXNXNhVzVsVFc5a1pXeHpXMmxrWFR0Y2JpQWdJQ0J5WlhSMWNtNGdiVzlrWld3N1hHNGdJSDFjYmlBZ0x5OGdTU2R0SUhKbGRIVnlibWx1WnlCdWRXeHNJR2hsY21Vc0lITm9iM1ZzWkNCSklISmhkR2hsY2lCMGFISnZkeUJoYmlCbGNuSnZjajljYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5TzF4dVhHNVBjR1Z5WVhScGIyNHVjSEp2ZEc5MGVYQmxMbkpsYzI5c2RtVk5iMlJsYkNBOUlHWjFibU4wYVc5dUlDaHpZMmhsYldFc0lHUmxabWx1YVhScGIyNXpLU0I3WEc0Z0lHbG1JQ2gwZVhCbGIyWWdjMk5vWlcxaExpUnlaV1lnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdkbUZ5SUhKbFppQTlJSE5qYUdWdFlTNGtjbVZtTzF4dVhHNGdJQ0FnYVdZZ0tISmxaaTVwYm1SbGVFOW1LQ2NqTDJSbFptbHVhWFJwYjI1ekx5Y3BJRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQnlaV1lnUFNCeVpXWXVjM1ZpYzNSeWFXNW5LQ2NqTDJSbFptbHVhWFJwYjI1ekx5Y3ViR1Z1WjNSb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9aR1ZtYVc1cGRHbHZibk5iY21WbVhTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJOYjJSbGJDaHlaV1lzSUdSbFptbHVhWFJwYjI1elczSmxabDBzSUhSb2FYTXViVzlrWld4ekxDQjBhR2x6TG5CaGNtVnVkQzV0YjJSbGJGQnliM0JsY25SNVRXRmpjbThwTzF4dUlDQWdJSDFjYmlBZ0x5OGdjMk5vWlcxaElHMTFjM1FnWVhRZ2JHVmhjM1FnWW1VZ1lXNGdiMkpxWldOMElIUnZJR2RsZENCeVpYTnZiSFpsWkNCMGJ5QmhiaUJwYm14cGJtVWdUVzlrWld4Y2JpQWdmU0JsYkhObElHbG1JQ2h6WTJobGJXRWdKaVlnZEhsd1pXOW1JSE5qYUdWdFlTQTlQVDBnSjI5aWFtVmpkQ2NnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJQ2h6WTJobGJXRXVkSGx3WlNBOVBUMGdKMjlpYW1WamRDY2dmSHdnWHk1cGMxVnVaR1ZtYVc1bFpDaHpZMmhsYldFdWRIbHdaU2twS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCTmIyUmxiQ2gxYm1SbFptbHVaV1FzSUhOamFHVnRZU3dnZEdocGN5NXRiMlJsYkhNc0lIUm9hWE11Y0dGeVpXNTBMbTF2WkdWc1VISnZjR1Z5ZEhsTllXTnlieWs3WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYm5Wc2JEdGNibjA3WEc1Y2JrOXdaWEpoZEdsdmJpNXdjbTkwYjNSNWNHVXVhR1ZzY0NBOUlHWjFibU4wYVc5dUlDaGtiMjUwVUhKcGJuUXBJSHRjYmlBZ2RtRnlJRzkxZENBOUlIUm9hWE11Ym1samEyNWhiV1VnS3lBbk9pQW5JQ3NnZEdocGN5NXpkVzF0WVhKNUlDc2dKMXhjYmljN1hHNWNiaUFnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCMGFHbHpMbkJoY21GdFpYUmxjbk11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNCMllYSWdjR0Z5WVcwZ1BTQjBhR2x6TG5CaGNtRnRaWFJsY25OYmFWMDdYRzRnSUNBZ2RtRnlJSFI1Y0dWSmJtWnZJRDBnY0dGeVlXMHVjMmxuYm1GMGRYSmxPMXh1WEc0Z0lDQWdiM1YwSUNzOUlDZGNYRzRnSUNvZ0p5QXJJSEJoY21GdExtNWhiV1VnS3lBbklDZ25JQ3NnZEhsd1pVbHVabThnS3lBbktUb2dKeUFySUhCaGNtRnRMbVJsYzJOeWFYQjBhVzl1TzF4dUlDQjlYRzVjYmlBZ2FXWWdLSFI1Y0dWdlppQmtiMjUwVUhKcGJuUWdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ2FHVnNjR1Z5Y3k1c2IyY29iM1YwS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdmRYUTdYRzU5TzF4dVhHNVBjR1Z5WVhScGIyNHVjSEp2ZEc5MGVYQmxMbWRsZEUxdlpHVnNVMmxuYm1GMGRYSmxJRDBnWm5WdVkzUnBiMjRnS0hSNWNHVXNJR1JsWm1sdWFYUnBiMjV6S1NCN1hHNGdJSFpoY2lCcGMxQnlhVzFwZEdsMlpTd2diR2x6ZEZSNWNHVTdYRzVjYmlBZ2FXWWdLSFI1Y0dVZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVNrZ2UxeHVJQ0FnSUd4cGMzUlVlWEJsSUQwZ2RISjFaVHRjYmlBZ0lDQjBlWEJsSUQwZ2RIbHdaVnN3WFR0Y2JpQWdmVnh1WEc0Z0lDOHZJRU52Ym5abGNuUWdkVzVrWldacGJtVmtJSFJ2SUhOMGNtbHVaeUJ2WmlBbmRXNWtaV1pwYm1Wa0oxeHVJQ0JwWmlBb2RIbHdaVzltSUhSNWNHVWdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ2RIbHdaU0E5SUNkMWJtUmxabWx1WldRbk8xeHVJQ0FnSUdselVISnBiV2wwYVhabElEMGdkSEoxWlR0Y2JseHVJQ0I5SUdWc2MyVWdhV1lnS0dSbFptbHVhWFJwYjI1elczUjVjR1ZkS1h0Y2JpQWdJQ0F2THlCaElHMXZaR1ZzSUdSbFppQmxlR2x6ZEhNL1hHNGdJQ0FnZEhsd1pTQTlJR1JsWm1sdWFYUnBiMjV6VzNSNWNHVmRPeUF2S2lCTmIyUmxiQ0FxTDF4dUlDQWdJR2x6VUhKcGJXbDBhWFpsSUQwZ1ptRnNjMlU3WEc1Y2JpQWdmU0JsYkhObElHbG1JQ2gwYUdsekxtZGxkRWx1YkdsdVpVMXZaR1ZzS0hSNWNHVXBLU0I3WEc0Z0lDQWdkSGx3WlNBOUlIUm9hWE11WjJWMFNXNXNhVzVsVFc5a1pXd29kSGx3WlNrN0lDOHFJRTF2WkdWc0lDb3ZYRzRnSUNBZ2FYTlFjbWx0YVhScGRtVWdQU0JtWVd4elpUdGNibHh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJQzh2SUZkbElHUmxabUYxYkhRZ2RHOGdjSEpwYldsMGFYWmxYRzRnSUNBZ2FYTlFjbWx0YVhScGRtVWdQU0IwY25WbE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dselVISnBiV2wwYVhabEtTQjdYRzRnSUNBZ2FXWWdLR3hwYzNSVWVYQmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMEZ5Y21GNVd5Y2dLeUIwZVhCbElDc2dKMTBuTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RIbHdaUzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJSDFjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0JwWmlBb2JHbHpkRlI1Y0dVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBblFYSnlZWGxiSnlBcklIUjVjR1V1WjJWMFRXOWphMU5wWjI1aGRIVnlaU2dwSUNzZ0oxMG5PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEhsd1pTNW5aWFJOYjJOclUybG5ibUYwZFhKbEtDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVQY0dWeVlYUnBiMjR1Y0hKdmRHOTBlWEJsTG5OMWNIQnZjblJJWldGa1pYSlFZWEpoYlhNZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lISmxkSFZ5YmlCMGNuVmxPMXh1ZlR0Y2JseHVUM0JsY21GMGFXOXVMbkJ5YjNSdmRIbHdaUzV6ZFhCd2IzSjBaV1JUZFdKdGFYUk5aWFJvYjJSeklEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVhKbGJuUXVjM1Z3Y0c5eWRHVmtVM1ZpYldsMFRXVjBhRzlrY3p0Y2JuMDdYRzVjYms5d1pYSmhkR2x2Ymk1d2NtOTBiM1I1Y0dVdVoyVjBTR1ZoWkdWeVVHRnlZVzF6SUQwZ1puVnVZM1JwYjI0Z0tHRnlaM01wSUh0Y2JpQWdkbUZ5SUdobFlXUmxjbk1nUFNCMGFHbHpMbk5sZEVOdmJuUmxiblJVZVhCbGN5aGhjbWR6TENCN2ZTazdYRzRnSUhaaGNpQm9aV0ZrWlhKUVlYSmhiWE5DZVV4dmQyVnlRMkZ6WlNBOUlIdDlPMXh1WEc0Z0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2dkR2hwY3k1d1lYSmhiV1YwWlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdkbUZ5SUhCaGNtRnRJRDBnZEdocGN5NXdZWEpoYldWMFpYSnpXMmxkTzF4dVhHNGdJQ0FnYVdZZ0tIQmhjbUZ0TG1sdUlEMDlQU0FuYUdWaFpHVnlKeWtnZTF4dUlDQWdJQ0FnYUdWaFpHVnlVR0Z5WVcxelFubE1iM2RsY2tOaGMyVmJjR0Z5WVcwdWJtRnRaUzUwYjB4dmQyVnlRMkZ6WlNncFhTQTlJSEJoY21GdE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHWnZjaUFvZG1GeUlHRnlaeUJwYmlCaGNtZHpLU0I3WEc0Z0lDQWdkbUZ5SUdobFlXUmxjbEJoY21GdElEMGdhR1ZoWkdWeVVHRnlZVzF6UW5sTWIzZGxja05oYzJWYllYSm5MblJ2VEc5M1pYSkRZWE5sS0NsZE8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2FHVmhaR1Z5VUdGeVlXMGdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQjJZWElnZG1Gc2RXVWdQU0JoY21kelcyRnlaMTA3WEc1Y2JpQWdJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0haaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUhaaGJIVmxMblJ2VTNSeWFXNW5LQ2s3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdobFlXUmxjbk5iYUdWaFpHVnlVR0Z5WVcwdWJtRnRaVjBnUFNCMllXeDFaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdhR1ZoWkdWeWN6dGNibjA3WEc1Y2JrOXdaWEpoZEdsdmJpNXdjbTkwYjNSNWNHVXVkWEpzYVdaNUlEMGdablZ1WTNScGIyNGdLR0Z5WjNNc0lHMWhjMnRRWVhOemQyOXlaSE1wSUh0Y2JpQWdkbUZ5SUdadmNtMVFZWEpoYlhNZ1BTQjdmVHRjYmlBZ2RtRnlJSEpsY1hWbGMzUlZjbXdnUFNCMGFHbHpMbkJoZEdndWNtVndiR0ZqWlNndkl5NHFMeXdnSnljcE95QXZMeUJ5WlcxdmRtVWdWVkpNSUdaeVlXZHRaVzUwWEc0Z0lIWmhjaUJ4ZFdWeWVYTjBjbWx1WnlBOUlDY25PeUF2THlCbmNtRmlJSEJoY21GdGN5Qm1jbTl0SUhSb1pTQmhjbWR6TENCaWRXbHNaQ0IwYUdVZ2NYVmxjbmx6ZEhKcGJtY2dZV3h2Ym1jZ2RHaGxJSGRoZVZ4dVhHNGdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnZEdocGN5NXdZWEpoYldWMFpYSnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnZG1GeUlIQmhjbUZ0SUQwZ2RHaHBjeTV3WVhKaGJXVjBaWEp6VzJsZE8xeHVYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmhjbWR6VzNCaGNtRnRMbTVoYldWZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2x6VUdGemMzZHZjbVE3WEc0Z0lDQWdJQ0JwWmlod1lYSmhiUzUwZVhCbElEMDlQU0FuYzNSeWFXNW5KeUFtSmlCd1lYSmhiUzVtYjNKdFlYUWdQVDA5SUNkd1lYTnpkMjl5WkNjZ0ppWWdiV0Z6YTFCaGMzTjNiM0prY3lrZ2UxeHVJQ0FnSUNBZ0lDQnBjMUJoYzNOM2IzSmtJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hCaGNtRnRMbWx1SUQwOVBTQW5jR0YwYUNjcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhKbFp5QTlJRzVsZHlCU1pXZEZlSEFvSjF4Y2V5Y2dLeUJ3WVhKaGJTNXVZVzFsSUNzZ0oxeGNmU2NzSUNkbmFTY3BPMXh1SUNBZ0lDQWdJQ0IyWVhJZ2RtRnNkV1VnUFNCaGNtZHpXM0JoY21GdExtNWhiV1ZkTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtIWmhiSFZsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdkR2hwY3k1bGJtTnZaR1ZRWVhSb1EyOXNiR1ZqZEdsdmJpaHdZWEpoYlM1amIyeHNaV04wYVc5dVJtOXliV0YwTENCd1lYSmhiUzV1WVcxbExDQjJZV3gxWlN3Z2FYTlFZWE56ZDI5eVpDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZb0tIUjVjR1Z2Wmlod1lYSmhiVnNuZUMxbGMyTmhjR1VuWFNrZ1BUMDlJQ2QxYm1SbFptbHVaV1FuS1NCOGZDQW9jR0Z5WVcxYkozZ3RaWE5qWVhCbEoxMGdQVDA5SUhSeWRXVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIUm9hWE11Wlc1amIyUmxVR0YwYUZCaGNtRnRLSFpoYkhWbExDQnBjMUJoYzNOM2IzSmtLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J5WlhGMVpYTjBWWEpzSUQwZ2NtVnhkV1Z6ZEZWeWJDNXlaWEJzWVdObEtISmxaeXdnZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h3WVhKaGJTNXBiaUE5UFQwZ0ozRjFaWEo1SnlBbUppQjBlWEJsYjJZZ1lYSm5jMXR3WVhKaGJTNXVZVzFsWFNBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEYxWlhKNWMzUnlhVzVuSUQwOVBTQW5KeUFtSmlCeVpYRjFaWE4wVlhKc0xtbHVaR1Y0VDJZb0p6OG5LU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0J4ZFdWeWVYTjBjbWx1WnlBclBTQW5QeWM3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NYVmxjbmx6ZEhKcGJtY2dLejBnSnlZbk8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCd1lYSmhiUzVqYjJ4c1pXTjBhVzl1Um05eWJXRjBJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQnhjQ0E5SUdGeVozTmJjR0Z5WVcwdWJtRnRaVjA3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaHhjQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEYxWlhKNWMzUnlhVzVuSUNzOUlIUm9hWE11Wlc1amIyUmxVWFZsY25sRGIyeHNaV04wYVc5dUtIQmhjbUZ0TG1OdmJHeGxZM1JwYjI1R2IzSnRZWFFzSUhCaGNtRnRMbTVoYldVc0lIRndMQ0JwYzFCaGMzTjNiM0prS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY1hWbGNubHpkSEpwYm1jZ0t6MGdkR2hwY3k1bGJtTnZaR1ZSZFdWeWVVdGxlU2h3WVhKaGJTNXVZVzFsS1NBcklDYzlKeUFySUhSb2FYTXVaVzVqYjJSbFVYVmxjbmxRWVhKaGJTaGhjbWR6VzNCaGNtRnRMbTVoYldWZExDQnBjMUJoYzNOM2IzSmtLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjWFZsY25semRISnBibWNnS3owZ2RHaHBjeTVsYm1OdlpHVlJkV1Z5ZVV0bGVTaHdZWEpoYlM1dVlXMWxLU0FySUNjOUp5QXJJSFJvYVhNdVpXNWpiMlJsVVhWbGNubFFZWEpoYlNoaGNtZHpXM0JoY21GdExtNWhiV1ZkTENCcGMxQmhjM04zYjNKa0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h3WVhKaGJTNXBiaUE5UFQwZ0oyWnZjbTFFWVhSaEp5a2dlMXh1SUNBZ0lDQWdJQ0JtYjNKdFVHRnlZVzF6VzNCaGNtRnRMbTVoYldWZElEMGdZWEpuYzF0d1lYSmhiUzV1WVcxbFhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZb2NHRnlZVzB1YVc0Z1BUMDlJQ2R4ZFdWeWVTY2dKaVlnZEhsd1pXOW1JR0Z5WjNOYmNHRnlZVzB1Ym1GdFpWMGdQVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSEJoY21GdExtRnNiRzkzUlcxd2RIbFdZV3gxWlNBOVBUMGdkSEoxWlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEYxWlhKNWMzUnlhVzVuSUQwOVBTQW5KeUFtSmlCeVpYRjFaWE4wVlhKc0xtbHVaR1Y0VDJZb0p6OG5LU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdjWFZsY25semRISnBibWNnS3owZ0p6OG5PMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjWFZsY25semRISnBibWNnS3owZ0p5WW5PMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhCaGNtRnRMbU52Ykd4bFkzUnBiMjVHYjNKdFlYUWdJVDA5SUNkMWJtUmxabWx1WldRbklIeDhJSEJoY21GdExuUjVjR1VnUFQwOUlDZGhjbkpoZVNjcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhGd08xeHVJQ0FnSUNBZ0lDQjJZWElnWTI5c2JHVmpkR2x2YmtadmNtMWhkQ0E5SUhCaGNtRnRMbU52Ykd4bFkzUnBiMjVHYjNKdFlYUWdmSHdnSjIxMWJIUnBKenRjYmx4dUlDQWdJQ0FnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoeGNDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeGRXVnllWE4wY21sdVp5QXJQU0IwYUdsekxtVnVZMjlrWlZGMVpYSjVRMjlzYkdWamRHbHZiaWhqYjJ4c1pXTjBhVzl1Um05eWJXRjBMQ0J3WVhKaGJTNXVZVzFsTENCeGNDd2dhWE5RWVhOemQyOXlaQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NYVmxjbmx6ZEhKcGJtY2dLejBnZEdocGN5NWxibU52WkdWUmRXVnllVU52Ykd4bFkzUnBiMjRvWTI5c2JHVmpkR2x2YmtadmNtMWhkQ3dnY0dGeVlXMHVibUZ0WlN3Z1czRndYU3dnYVhOUVlYTnpkMjl5WkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIRjFaWEo1YzNSeWFXNW5JQ3M5SUhSb2FYTXVaVzVqYjJSbFVYVmxjbmxMWlhrb2NHRnlZVzB1Ym1GdFpTa2dLeUFuUFNjZ0t5QjBhR2x6TG1WdVkyOWtaVkYxWlhKNVVHRnlZVzBvSnljc0lHbHpVR0Z6YzNkdmNtUXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSFpoY2lCMWNtd2dQU0IwYUdsekxuTmphR1Z0WlNBcklDYzZMeThuSUNzZ2RHaHBjeTVvYjNOME8xeHVYRzRnSUdsbUlDaDBhR2x6TG1KaGMyVlFZWFJvSUNFOVBTQW5MeWNwSUh0Y2JpQWdJQ0IxY213Z0t6MGdkR2hwY3k1aVlYTmxVR0YwYUR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnZFhKc0lDc2djbVZ4ZFdWemRGVnliQ0FySUhGMVpYSjVjM1J5YVc1bk8xeHVmVHRjYmx4dVQzQmxjbUYwYVc5dUxuQnliM1J2ZEhsd1pTNW5aWFJOYVhOemFXNW5VR0Z5WVcxeklEMGdablZ1WTNScGIyNGdLR0Z5WjNNcElIdGNiaUFnZG1GeUlHMXBjM05wYm1kUVlYSmhiWE1nUFNCYlhUc2dMeThnWTJobFkyc2djbVZ4ZFdseVpXUWdjR0Z5WVcxekxDQjBjbUZqYXlCMGFHVWdiMjVsY3lCMGFHRjBJR0Z5WlNCdGFYTnphVzVuWEc0Z0lIWmhjaUJwTzF4dVhHNGdJR1p2Y2lBb2FTQTlJREE3SUdrZ1BDQjBhR2x6TG5CaGNtRnRaWFJsY25NdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQjJZWElnY0dGeVlXMGdQU0IwYUdsekxuQmhjbUZ0WlhSbGNuTmJhVjA3WEc1Y2JpQWdJQ0JwWmlBb2NHRnlZVzB1Y21WeGRXbHlaV1FnUFQwOUlIUnlkV1VwSUh0Y2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lYSm5jMXR3WVhKaGJTNXVZVzFsWFNBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ2JXbHpjMmx1WjFCaGNtRnRjeUE5SUhCaGNtRnRMbTVoYldVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUcxcGMzTnBibWRRWVhKaGJYTTdYRzU5TzF4dVhHNVBjR1Z5WVhScGIyNHVjSEp2ZEc5MGVYQmxMbWRsZEVKdlpIa2dQU0JtZFc1amRHbHZiaUFvYUdWaFpHVnljeXdnWVhKbmN5d2diM0IwY3lrZ2UxeHVJQ0IyWVhJZ1ptOXliVkJoY21GdGN5QTlJSHQ5TENCb1lYTkdiM0p0VUdGeVlXMXpMQ0J3WVhKaGJTd2dZbTlrZVN3Z2EyVjVMQ0IyWVd4MVpTd2dhR0Z6UW05a2VTQTlJR1poYkhObE8xeHVYRzRnSUM4dklHeHZiMnNnWVhRZ1pXRmphQ0J3WVhKaGJTQmhibVFnY0hWMElHWnZjbTBnY0dGeVlXMXpJR2x1SUdGdUlHOWlhbVZqZEZ4dUlDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJSFJvYVhNdWNHRnlZVzFsZEdWeWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJSEJoY21GdElEMGdkR2hwY3k1d1lYSmhiV1YwWlhKelcybGRPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZWEpuYzF0d1lYSmhiUzV1WVcxbFhTQWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lIWmhjaUJwYzFCaGMzTjNiM0prTzF4dUlDQWdJQ0FnYVdZb2NHRnlZVzB1ZEhsd1pTQTlQVDBnSjNOMGNtbHVaeWNnSmlZZ2NHRnlZVzB1Wm05eWJXRjBJRDA5UFNBbmNHRnpjM2R2Y21RbktTQjdYRzRnSUNBZ0lDQWdJR2x6VUdGemMzZHZjbVFnUFNBbmNHRnpjM2R2Y21Rbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSEJoY21GdExtbHVJRDA5UFNBblltOWtlU2NwSUh0Y2JpQWdJQ0FnSUNBZ1ltOWtlU0E5SUdGeVozTmJjR0Z5WVcwdWJtRnRaVjA3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hCaGNtRnRMbWx1SUQwOVBTQW5abTl5YlVSaGRHRW5LU0I3WEc0Z0lDQWdJQ0FnSUdadmNtMVFZWEpoYlhOYmNHRnlZVzB1Ym1GdFpWMGdQU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NHRnlZVzA2SUhCaGNtRnRMRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUJoY21kelczQmhjbUZ0TG01aGJXVmRMRnh1SUNBZ0lDQWdJQ0FnSUhCaGMzTjNiM0prT2lCcGMxQmhjM04zYjNKa1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJR2hoYzBadmNtMVFZWEpoYlhNZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUdsbUtIQmhjbUZ0TG1sdUlEMDlQU0FuWW05a2VTY3BJSHRjYmlBZ0lDQWdJQ0FnYUdGelFtOWtlU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeThnYVdZZ1ltOWtlU0JwY3lCdWRXeHNJR0Z1WkNCb1lYTkNiMlI1SUdseklIUnlkV1VzSUVGT1JDQmhJRXBUVDA0Z1ltOWtlU0JwY3lCeVpYRjFaWE4wWldRc0lITmxibVFnWlcxd2RIa2dlMzFjYmlBZ2FXWW9hR0Z6UW05a2VTQW1KaUIwZVhCbGIyWWdZbTlrZVNBOVBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0IyWVhJZ1kyOXVkR1Z1ZEZSNWNHVWdQU0JvWldGa1pYSnpXeWREYjI1MFpXNTBMVlI1Y0dVblhUdGNiaUFnSUNCcFppaGpiMjUwWlc1MFZIbHdaU0FtSmlCamIyNTBaVzUwVkhsd1pTNXBibVJsZUU5bUtDZGhjSEJzYVdOaGRHbHZiaTlxYzI5dUp5a2dQVDA5SURBcElIdGNiaUFnSUNBZ0lHSnZaSGtnUFNBbmUzMG5PMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSFpoY2lCcGMwMTFiSFJwVUdGeWRDQTlJR1poYkhObE8xeHVJQ0JwWmlob1pXRmtaWEp6V3lkRGIyNTBaVzUwTFZSNWNHVW5YU0FtSmlCb1pXRmtaWEp6V3lkRGIyNTBaVzUwTFZSNWNHVW5YUzVwYm1SbGVFOW1LQ2R0ZFd4MGFYQmhjblF2Wm05eWJTMWtZWFJoSnlrZ1BqMGdNQ2tnZTF4dUlDQWdJR2x6VFhWc2RHbFFZWEowSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4dklHaGhibVJzWlNCbWIzSnRJSEJoY21GdGMxeHVJQ0JwWmlBb2FHRnpSbTl5YlZCaGNtRnRjeUFtSmlBaGFYTk5kV3gwYVZCaGNuUXBJSHRjYmlBZ0lDQjJZWElnWlc1amIyUmxaQ0E5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hyWlhrZ2FXNGdabTl5YlZCaGNtRnRjeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMGdQU0JtYjNKdFVHRnlZVzF6VzJ0bGVWMHVjR0Z5WVcwN1hHNGdJQ0FnSUNCMllXeDFaU0E5SUdadmNtMVFZWEpoYlhOYmEyVjVYUzUyWVd4MVpUdGNiaUFnSUNBZ0lIWmhjaUJ3WVhOemQyOXlaRHRjYmx4dUlDQWdJQ0FnYVdZb2IzQjBjeUFtSmlCdmNIUnpMbTFoYzJ0UVlYTnpkMjl5WkhNcElIdGNiaUFnSUNBZ0lDQWdjR0Z6YzNkdmNtUWdQU0JtYjNKdFVHRnlZVzF6VzJ0bGVWMHVjR0Z6YzNkdmNtUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGxibU52WkdWa0lDRTlQU0FuSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWlc1amIyUmxaQ0FyUFNBbkppYzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lHVnVZMjlrWldRZ0t6MGdkR2hwY3k1bGJtTnZaR1ZSZFdWeWVVTnZiR3hsWTNScGIyNG9jR0Z5WVcwdVkyOXNiR1ZqZEdsdmJrWnZjbTFoZEN3Z2EyVjVMQ0IyWVd4MVpTd2djR0Z6YzNkdmNtUXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGxibU52WkdWa0lDRTlQU0FuSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWlc1amIyUmxaQ0FyUFNBbkppYzdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdaVzVqYjJSbFpDQXJQU0JsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvYTJWNUtTQXJJQ2M5SnlBcklHMWhjMnNvWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0haaGJIVmxLU3dnY0dGemMzZHZjbVFwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWW05a2VTQTlJR1Z1WTI5a1pXUTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2FYTk5kV3gwYVZCaGNuUXBJSHRjYmlBZ0lDQjJZWElnWW05a2VWQmhjbUZ0TzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnUm05eWJVUmhkR0VnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJR0p2WkhsUVlYSmhiU0E5SUc1bGR5QkdiM0p0UkdGMFlTZ3BPMXh1WEc0Z0lDQWdJQ0JpYjJSNVVHRnlZVzB1ZEhsd1pTQTlJQ2RtYjNKdFJHRjBZU2M3WEc1Y2JpQWdJQ0FnSUdadmNpQW9hMlY1SUdsdUlHWnZjbTFRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnY0dGeVlXMGdQU0JtYjNKdFVHRnlZVzF6VzJ0bGVWMHVjR0Z5WVcwN1hHNGdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ1lYSm5jMXRyWlhsZE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZb2UzMHVkRzlUZEhKcGJtY3VZWEJ3Ykhrb2RtRnNkV1VwSUQwOVBTQW5XMjlpYW1WamRDQkdhV3hsWFNjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKdlpIbFFZWEpoYlM1aGNIQmxibVFvYTJWNUxDQjJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0haaGJIVmxMblI1Y0dVZ1BUMDlJQ2RtYVd4bEp5QW1KaUIyWVd4MVpTNTJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWW05a2VWQmhjbUZ0TG1Gd2NHVnVaQ2hyWlhrc0lIWmhiSFZsTG5aaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29kbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LSEJoY21GdExtTnZiR3hsWTNScGIyNUdiM0p0WVhRZ1BUMDlJQ2R0ZFd4MGFTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNVVHRnlZVzB1WkdWc1pYUmxLR3RsZVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlLSFpoY2lCMklHbHVJSFpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNVVHRnlZVzB1WVhCd1pXNWtLR3RsZVN3Z2RtRnNkV1ZiZGwwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNVVHRnlZVzB1WVhCd1pXNWtLR3RsZVN3Z2RHaHBjeTVsYm1OdlpHVlJkV1Z5ZVVOdmJHeGxZM1JwYjI0b2NHRnlZVzB1WTI5c2JHVmpkR2x2YmtadmNtMWhkQ3dnYTJWNUxDQjJZV3gxWlNrdWMzQnNhWFFvSnowbktTNXpiR2xqWlNneEtTNXFiMmx1S0NjOUp5a3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1ltOWtlVkJoY21GdExtRndjR1Z1WkNoclpYa3NJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR0p2WkhrZ1BTQmliMlI1VUdGeVlXMDdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdZbTlrZVZCaGNtRnRJRDBnZTMwN1hHNGdJQ0FnSUNCbWIzSWdLR3RsZVNCcGJpQm1iM0p0VUdGeVlXMXpLU0I3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxJRDBnWVhKbmMxdHJaWGxkTzF4dUlDQWdJQ0FnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnWkdWc2FXMWxkR1Z5TzF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJtYjNKdFlYUWdQU0J3WVhKaGJTNWpiMnhzWldOMGFXOXVSbTl5YldGMElIeDhJQ2R0ZFd4MGFTYzdYRzRnSUNBZ0lDQWdJQ0FnYVdZb1ptOXliV0YwSUQwOVBTQW5jM04ySnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWc2FXMWxkR1Z5SUQwZ0p5QW5PMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUtHWnZjbTFoZENBOVBUMGdKM0JwY0dWekp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHVnNhVzFsZEdWeUlEMGdKM3duTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JsYkhObElHbG1LR1p2Y20xaGRDQTlQVDBnSjNSemRpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHUmxiR2x0WlhSbGNpQTlJQ2RjWEhRbk8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtS0dadmNtMWhkQ0E5UFQwZ0oyMTFiSFJwSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWW05a2VWQmhjbUZ0VzJ0bGVWMGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JsYkdsdFpYUmxjaUE5SUNjc0p6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJR1JoZEdFN1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdVdVptOXlSV0ZqYUNobWRXNWpkR2x2YmloMktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppaGtZWFJoS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdSaGRHRWdLejBnWkdWc2FXMWxkR1Z5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdSaGRHRWdLejBnZGp0Y2JpQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNCaWIyUjVVR0Z5WVcxYmEyVjVYU0E5SUdSaGRHRTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnWW05a2VWQmhjbUZ0VzJ0bGVWMGdQU0IyWVd4MVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdZbTlrZVNBOUlHSnZaSGxRWVhKaGJUdGNiaUFnSUNCOVhHNGdJQ0FnYUdWaFpHVnljMXNuUTI5dWRHVnVkQzFVZVhCbEoxMGdQU0FuYlhWc2RHbHdZWEowTDJadmNtMHRaR0YwWVNjN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z1ltOWtlVHRjYm4wN1hHNWNiaThxS2x4dUlDb2daMlYwY3lCellXMXdiR1VnY21WemNHOXVjMlVnWm05eUlHRWdjMmx1WjJ4bElHOXdaWEpoZEdsdmJseHVJQ29xTDF4dVQzQmxjbUYwYVc5dUxuQnliM1J2ZEhsd1pTNW5aWFJOYjJSbGJGTmhiWEJzWlVwVFQwNGdQU0JtZFc1amRHbHZiaUFvZEhsd1pTd2diVzlrWld4ektTQjdYRzRnSUhaaGNpQnNhWE4wVkhsd1pTd2djMkZ0Y0d4bFNuTnZiaXdnYVc1dVpYSlVlWEJsTzF4dUlDQnRiMlJsYkhNZ1BTQnRiMlJsYkhNZ2ZId2dlMzA3WEc1Y2JpQWdiR2x6ZEZSNWNHVWdQU0FvZEhsd1pTQnBibk4wWVc1alpXOW1JRUZ5Y21GNUtUdGNiaUFnYVc1dVpYSlVlWEJsSUQwZ2JHbHpkRlI1Y0dVZ1B5QjBlWEJsV3pCZElEb2dkSGx3WlR0Y2JseHVJQ0JwWmlodGIyUmxiSE5iYVc1dVpYSlVlWEJsWFNrZ2UxeHVJQ0FnSUhOaGJYQnNaVXB6YjI0Z1BTQnRiMlJsYkhOYmFXNXVaWEpVZVhCbFhTNWpjbVZoZEdWS1UwOU9VMkZ0Y0d4bEtDazdYRzRnSUgwZ1pXeHpaU0JwWmlBb2RHaHBjeTVuWlhSSmJteHBibVZOYjJSbGJDaHBibTVsY2xSNWNHVXBLWHRjYmlBZ0lDQnpZVzF3YkdWS2MyOXVJRDBnZEdocGN5NW5aWFJKYm14cGJtVk5iMlJsYkNocGJtNWxjbFI1Y0dVcExtTnlaV0YwWlVwVFQwNVRZVzF3YkdVb0tUc2dMeThnYldGNUlISmxkSFZ5YmlCdWRXeHNMQ0JwWmlCMGVYQmxJR2x6YmlkMElHTnZjbkpsWTNSY2JpQWdmVnh1WEc1Y2JpQWdhV1lnS0hOaGJYQnNaVXB6YjI0cElIdGNiaUFnSUNCellXMXdiR1ZLYzI5dUlEMGdiR2x6ZEZSNWNHVWdQeUJiYzJGdGNHeGxTbk52YmwwZ09pQnpZVzF3YkdWS2MyOXVPMXh1WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ6WVcxd2JHVktjMjl1SUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlITmhiWEJzWlVwemIyNDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGZMbWx6VDJKcVpXTjBLSE5oYlhCc1pVcHpiMjRwS1NCN1hHNGdJQ0FnSUNCMllYSWdkQ0E5SUhOaGJYQnNaVXB6YjI0N1hHNWNiaUFnSUNBZ0lHbG1JQ2h6WVcxd2JHVktjMjl1SUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtnSmlZZ2MyRnRjR3hsU25OdmJpNXNaVzVuZEdnZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUhRZ1BTQnpZVzF3YkdWS2MyOXVXekJkTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9kQzV1YjJSbFRtRnRaU0FtSmlCMGVYQmxiMllnZENBOVBUMGdKMDV2WkdVbktTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCNGJXeFRkSEpwYm1jZ1BTQnVaWGNnV0UxTVUyVnlhV0ZzYVhwbGNpZ3BMbk5sY21saGJHbDZaVlJ2VTNSeWFXNW5LSFFwTzF4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVp2Y20xaGRGaHRiQ2g0Yld4VGRISnBibWNwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRXBUVDA0dWMzUnlhVzVuYVdaNUtITmhiWEJzWlVwemIyNHNJRzUxYkd3c0lESXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYzJGdGNHeGxTbk52Ymp0Y2JpQWdJQ0I5WEc0Z0lIMWNibjA3WEc1Y2JpOHFLbHh1SUNvZ2JHVm5ZV041SUdKcGJtUnBibWRjYmlBcUtpOWNiazl3WlhKaGRHbHZiaTV3Y205MGIzUjVjR1V1Wkc4Z1BTQm1kVzVqZEdsdmJpQW9ZWEpuY3l3Z2IzQjBjeXdnWTJGc2JHSmhZMnNzSUdWeWNtOXlMQ0J3WVhKbGJuUXBJSHRjYmlBZ2NtVjBkWEp1SUhSb2FYTXVaWGhsWTNWMFpTaGhjbWR6TENCdmNIUnpMQ0JqWVd4c1ltRmpheXdnWlhKeWIzSXNJSEJoY21WdWRDazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlHVjRaV04xZEdWeklHRnVJRzl3WlhKaGRHbHZibHh1SUNvcUwxeHVUM0JsY21GMGFXOXVMbkJ5YjNSdmRIbHdaUzVsZUdWamRYUmxJRDBnWm5WdVkzUnBiMjRnS0dGeVp6RXNJR0Z5WnpJc0lHRnlaek1zSUdGeVp6UXNJSEJoY21WdWRDa2dlMXh1SUNCMllYSWdZWEpuY3lBOUlHRnlaekVnZkh3Z2UzMDdYRzRnSUhaaGNpQnZjSFJ6SUQwZ2UzMHNJSE4xWTJObGMzTXNJR1Z5Y205eUxDQmtaV1psY25KbFpDd2dkR2x0Wlc5MWREdGNibHh1SUNCcFppQW9YeTVwYzA5aWFtVmpkQ2hoY21jeUtTa2dlMXh1SUNBZ0lHOXdkSE1nUFNCaGNtY3lPMXh1SUNBZ0lITjFZMk5sYzNNZ1BTQmhjbWN6TzF4dUlDQWdJR1Z5Y205eUlEMGdZWEpuTkR0Y2JpQWdmVnh1WEc0Z0lIUnBiV1Z2ZFhRZ1BTQjBlWEJsYjJZZ2IzQjBjeTUwYVcxbGIzVjBJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5QS9JRzl3ZEhNdWRHbHRaVzkxZENBNklIUm9hWE11ZEdsdFpXOTFkRHRjYmx4dUlDQnBaaWgwYUdsekxtTnNhV1Z1ZENrZ2UxeHVJQ0FnSUc5d2RITXVZMnhwWlc1MElEMGdkR2hwY3k1amJHbGxiblE3WEc0Z0lIMWNibHh1SUNCcFppaDBhR2x6TG5KbGNYVmxjM1JCWjJWdWRDa2dlMXh1SUNBZ0lHOXdkSE11Y21WeGRXVnpkRUZuWlc1MElEMGdkR2hwY3k1eVpYRjFaWE4wUVdkbGJuUTdYRzRnSUgxY2JseHVJQ0F2THlCaFpHUWdkR2hsSUhKbGNYVmxjM1FnYVc1MFpYSmpaWEIwYjNJZ1puSnZiU0J3WVhKbGJuUXNJR2xtSUc1dmJtVWdjMlZ1ZENCbWNtOXRJR05zYVdWdWRGeHVJQ0JwWmlnaGIzQjBjeTV5WlhGMVpYTjBTVzUwWlhKalpYQjBiM0lnSmlZZ2RHaHBjeTV5WlhGMVpYTjBTVzUwWlhKalpYQjBiM0lnS1NCN1hHNGdJQ0FnYjNCMGN5NXlaWEYxWlhOMFNXNTBaWEpqWlhCMGIzSWdQU0IwYUdsekxuSmxjWFZsYzNSSmJuUmxjbU5sY0hSdmNpQTdYRzRnSUgxY2JseHVJQ0JwWmlnaGIzQjBjeTV5WlhOd2IyNXpaVWx1ZEdWeVkyVndkRzl5SUNZbUlIUm9hWE11Y21WemNHOXVjMlZKYm5SbGNtTmxjSFJ2Y2lrZ2UxeHVJQ0FnSUc5d2RITXVjbVZ6Y0c5dWMyVkpiblJsY21ObGNIUnZjaUE5SUhSb2FYTXVjbVZ6Y0c5dWMyVkpiblJsY21ObGNIUnZjanRjYmlBZ2ZWeHVYRzRnSUdsbUlDaDBlWEJsYjJZZ1lYSm5NaUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lITjFZMk5sYzNNZ1BTQmhjbWN5TzF4dUlDQWdJR1Z5Y205eUlEMGdZWEpuTXp0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2gwYUdsekxuQmhjbVZ1ZEM1MWMyVlFjbTl0YVhObEtTQjdYRzRnSUNBZ1pHVm1aWEp5WldRZ1BTQlJMbVJsWm1WeUtDazdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjM1ZqWTJWemN5QTlJQ2h6ZFdOalpYTnpJSHg4SUhSb2FYTXVjR0Z5Wlc1MExtUmxabUYxYkhSVGRXTmpaWE56UTJGc2JHSmhZMnNnZkh3Z2FHVnNjR1Z5Y3k1c2IyY3BPMXh1SUNBZ0lHVnljbTl5SUQwZ0tHVnljbTl5SUh4OElIUm9hWE11Y0dGeVpXNTBMbVJsWm1GMWJIUkZjbkp2Y2tOaGJHeGlZV05ySUh4OElHaGxiSEJsY25NdWJHOW5LVHRjYmlBZ2ZWeHVYRzRnSUdsbUlDaDBlWEJsYjJZZ2IzQjBjeTUxYzJWS1VYVmxjbmtnUFQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdiM0IwY3k1MWMyVktVWFZsY25rZ1BTQjBhR2x6TG5WelpVcFJkV1Z5ZVR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2gwZVhCbGIyWWdiM0IwY3k1cWNYVmxjbmxCYW1GNFEyRmphR1VnUFQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdiM0IwY3k1cWNYVmxjbmxCYW1GNFEyRmphR1VnUFNCMGFHbHpMbXB4ZFdWeWVVRnFZWGhEWVdOb1pUdGNiaUFnZlZ4dVhHNGdJR2xtSUNoMGVYQmxiMllnYjNCMGN5NWxibUZpYkdWRGIyOXJhV1Z6SUQwOVBTQW5kVzVrWldacGJtVmtKeWtnZTF4dUlDQWdJRzl3ZEhNdVpXNWhZbXhsUTI5dmEybGxjeUE5SUhSb2FYTXVaVzVoWW14bFEyOXZhMmxsY3p0Y2JpQWdmVnh1WEc0Z0lIWmhjaUJ0YVhOemFXNW5VR0Z5WVcxeklEMGdkR2hwY3k1blpYUk5hWE56YVc1blVHRnlZVzF6S0dGeVozTXBPMXh1WEc0Z0lHbG1JQ2h0YVhOemFXNW5VR0Z5WVcxekxteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQjJZWElnYldWemMyRm5aU0E5SUNkdGFYTnphVzVuSUhKbGNYVnBjbVZrSUhCaGNtRnRjem9nSnlBcklHMXBjM05wYm1kUVlYSmhiWE03WEc1Y2JpQWdJQ0JvWld4d1pYSnpMbVpoYVd3b2JXVnpjMkZuWlNrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1d1lYSmxiblF1ZFhObFVISnZiV2x6WlNrZ2UxeHVJQ0FnSUNBZ1pHVm1aWEp5WldRdWNtVnFaV04wS0cxbGMzTmhaMlVwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR1JsWm1WeWNtVmtMbkJ5YjIxcGMyVTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdWeWNtOXlLRzFsYzNOaFoyVXNJSEJoY21WdWRDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2UzMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdGc2JFaGxZV1JsY25NZ1BTQjBhR2x6TG1kbGRFaGxZV1JsY2xCaGNtRnRjeWhoY21kektUdGNiaUFnZG1GeUlHTnZiblJsYm5SVWVYQmxTR1ZoWkdWeWN5QTlJSFJvYVhNdWMyVjBRMjl1ZEdWdWRGUjVjR1Z6S0dGeVozTXNJRzl3ZEhNcE8xeHVJQ0IyWVhJZ2FHVmhaR1Z5Y3lBOUlIdDlMQ0JoZEhSeWJtRnRaVHRjYmx4dUlDQm1iM0lnS0dGMGRISnVZVzFsSUdsdUlHRnNiRWhsWVdSbGNuTXBJSHNnYUdWaFpHVnljMXRoZEhSeWJtRnRaVjBnUFNCaGJHeElaV0ZrWlhKelcyRjBkSEp1WVcxbFhUc2dmVnh1SUNCbWIzSWdLR0YwZEhKdVlXMWxJR2x1SUdOdmJuUmxiblJVZVhCbFNHVmhaR1Z5Y3lrZ2V5Qm9aV0ZrWlhKelcyRjBkSEp1WVcxbFhTQTlJR052Ym5SbGJuUlVlWEJsU0dWaFpHVnljMXRoZEhSeWJtRnRaVjA3SUgxY2JseHVJQ0IyWVhJZ1ltOWtlU0E5SUhSb2FYTXVaMlYwUW05a2VTaGpiMjUwWlc1MFZIbHdaVWhsWVdSbGNuTXNJR0Z5WjNNc0lHOXdkSE1wTzF4dUlDQjJZWElnZFhKc0lEMGdkR2hwY3k1MWNteHBabmtvWVhKbmN5d2diM0IwY3k1dFlYTnJVR0Z6YzNkdmNtUnpLVHRjYmx4dUlDQnBaaWgxY213dWFXNWtaWGhQWmlnbkxudG1iM0p0WVhSOUp5a2dQaUF3S1NCN1hHNGdJQ0FnYVdZb2FHVmhaR1Z5Y3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR1p2Y20xaGRDQTlJR2hsWVdSbGNuTXVRV05qWlhCMElIeDhJR2hsWVdSbGNuTXVZV05qWlhCME8xeHVJQ0FnSUNBZ2FXWW9abTl5YldGMElDWW1JR1p2Y20xaGRDNXBibVJsZUU5bUtDZHFjMjl1SnlrZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUhWeWJDQTlJSFZ5YkM1eVpYQnNZV05sS0NjdWUyWnZjbTFoZEgwbkxDQW5MbXB6YjI0bktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHVnNjMlVnYVdZb1ptOXliV0YwSUNZbUlHWnZjbTFoZEM1cGJtUmxlRTltS0NkNGJXd25LU0ErSURBcElIdGNiaUFnSUNBZ0lDQWdkWEpzSUQwZ2RYSnNMbkpsY0d4aFkyVW9KeTU3Wm05eWJXRjBmU2NzSUNjdWVHMXNKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnZG1GeUlHOWlhaUE5SUh0Y2JpQWdJQ0IxY213NklIVnliQ3hjYmlBZ0lDQnRaWFJvYjJRNklIUm9hWE11YldWMGFHOWtMblJ2VlhCd1pYSkRZWE5sS0Nrc1hHNGdJQ0FnWW05a2VUb2dZbTlrZVN4Y2JpQWdJQ0JsYm1GaWJHVkRiMjlyYVdWek9pQnZjSFJ6TG1WdVlXSnNaVU52YjJ0cFpYTXNYRzRnSUNBZ2RYTmxTbEYxWlhKNU9pQnZjSFJ6TG5WelpVcFJkV1Z5ZVN4Y2JpQWdJQ0JxY1hWbGNubEJhbUY0UTJGamFHVTZJRzl3ZEhNdWFuRjFaWEo1UVdwaGVFTmhZMmhsTEZ4dUlDQWdJR1JsWm1WeWNtVmtPaUJrWldabGNuSmxaQ3hjYmlBZ0lDQm9aV0ZrWlhKek9pQm9aV0ZrWlhKekxGeHVJQ0FnSUdOc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ek9pQnZjSFJ6TG1Oc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekxGeHVJQ0FnSUc5d1pYSmhkR2x2YmpvZ2RHaHBjeXhjYmlBZ0lDQmpiMjV1WldOMGFXOXVRV2RsYm5RNklIUm9hWE11WTI5dWJtVmpkR2x2YmtGblpXNTBMRnh1SUNBZ0lHOXVPaUI3WEc0Z0lDQWdJQ0J5WlhOd2IyNXpaVG9nWm5WdVkzUnBiMjRnS0hKbGMzQnZibk5sS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrWldabGNuSmxaQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHUmxabVZ5Y21Wa0xuSmxjMjlzZG1Vb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmtaV1psY25KbFpDNXdjbTl0YVhObE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpkV05qWlhOektISmxjM0J2Ym5ObExDQndZWEpsYm5RcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdaWEp5YjNJNklHWjFibU4wYVc5dUlDaHlaWE53YjI1elpTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHVm1aWEp5WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0JrWldabGNuSmxaQzV5WldwbFkzUW9jbVZ6Y0c5dWMyVXBPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrWldabGNuSmxaQzV3Y205dGFYTmxPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJsY25KdmNpaHlaWE53YjI1elpTd2djR0Z5Wlc1MEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlR0Y2JseHVJQ0JwWmlBb2RHbHRaVzkxZENrZ2UxeHVJQ0FnSUc5aWFpNTBhVzFsYjNWMElEMGdkR2x0Wlc5MWREdGNiaUFnZlZ4dVhHNGdJSFJvYVhNdVkyeHBaVzUwUVhWMGFHOXlhWHBoZEdsdmJuTXVZWEJ3Ykhrb2IySnFMQ0IwYUdsekxtOXdaWEpoZEdsdmJpNXpaV04xY21sMGVTazdYRzRnSUdsbUlDaHZjSFJ6TG0xdlkyc2dQVDA5SUhSeWRXVXBJSHRjYmlBZ0lDQnBaaWh2Y0hSekxuSmxjWFZsYzNSSmJuUmxjbU5sY0hSdmNpa2dlMXh1SUNBZ0lDQWdiM0IwY3k1eVpYRjFaWE4wU1c1MFpYSmpaWEIwYjNJdVlYQndiSGtvYjJKcUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzlpYWp0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGTjNZV2RuWlhKSWRIUndLQ2t1WlhobFkzVjBaU2h2WW1vc0lHOXdkSE1wTzF4dUlDQjlYRzU5TzF4dVhHNW1kVzVqZEdsdmJpQnBkR1Z0UW5sUWNtbHZjbWwwZVNoamIyd3NJR2wwWlcxUWNtbHZjbWwwZVNrZ2UxeHVYRzRnSUM4dklFNXZJSEJ5YVc5eWFYUnBaWE0vSUhKbGRIVnliaUJtYVhKemRDNHVMbHh1SUNCcFppaGZMbWx6Ulcxd2RIa29hWFJsYlZCeWFXOXlhWFI1S1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqYjJ4Yk1GMDdYRzRnSUgxY2JseHVJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Dd2diR1Z1SUQwZ2FYUmxiVkJ5YVc5eWFYUjVMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dhU3NyS1NCN1hHNGdJQ0FnYVdZb1kyOXNMbWx1WkdWNFQyWW9hWFJsYlZCeWFXOXlhWFI1VzJsZEtTQStJQzB4S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhSbGJWQnlhVzl5YVhSNVcybGRPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzh2SUU5MGFHVnlkMmx6WlNCeVpYUjFjbTRnWm1seWMzUmNiaUFnY21WMGRYSnVJR052YkZzd1hUdGNibjFjYmx4dVQzQmxjbUYwYVc5dUxuQnliM1J2ZEhsd1pTNXpaWFJEYjI1MFpXNTBWSGx3WlhNZ1BTQm1kVzVqZEdsdmJpQW9ZWEpuY3l3Z2IzQjBjeWtnZTF4dUlDQXZMeUJrWldaaGRXeDBJSFI1Y0dWY2JpQWdkbUZ5SUdGc2JFUmxabWx1WldSUVlYSmhiWE1nUFNCMGFHbHpMbkJoY21GdFpYUmxjbk03WEc0Z0lIWmhjaUJpYjJSNU8xeHVJQ0IyWVhJZ1kyOXVjM1Z0WlhNZ1BTQmhjbWR6TG5CaGNtRnRaWFJsY2tOdmJuUmxiblJVZVhCbElIeDhJR2wwWlcxQ2VWQnlhVzl5YVhSNUtIUm9hWE11WTI5dWMzVnRaWE1zSUZzbllYQndiR2xqWVhScGIyNHZhbk52Ymljc0lDZGhjSEJzYVdOaGRHbHZiaTk1WVcxc0oxMHBPMXh1SUNCMllYSWdZV05qWlhCMGN5QTlJRzl3ZEhNdWNtVnpjRzl1YzJWRGIyNTBaVzUwVkhsd1pTQjhmQ0JwZEdWdFFubFFjbWx2Y21sMGVTaDBhR2x6TG5CeWIyUjFZMlZ6TENCYkoyRndjR3hwWTJGMGFXOXVMMnB6YjI0bkxDQW5ZWEJ3YkdsallYUnBiMjR2ZVdGdGJDZGRLVHRjYmlBZ2RtRnlJR1JsWm1sdVpXUkdhV3hsVUdGeVlXMXpJRDBnVzEwN1hHNGdJSFpoY2lCa1pXWnBibVZrUm05eWJWQmhjbUZ0Y3lBOUlGdGRPMXh1SUNCMllYSWdhR1ZoWkdWeWN5QTlJSHQ5TzF4dUlDQjJZWElnYVR0Y2JseHVJQ0F2THlCblpYUWdjR0Z5WVcxeklHWnliMjBnZEdobElHOXdaWEpoZEdsdmJpQmhibVFnYzJWMElIUm9aVzBnYVc0Z1pHVm1hVzVsWkVacGJHVlFZWEpoYlhNc0lHUmxabWx1WldSR2IzSnRVR0Z5WVcxekxDQm9aV0ZrWlhKelhHNGdJR1p2Y2lBb2FTQTlJREE3SUdrZ1BDQmhiR3hFWldacGJtVmtVR0Z5WVcxekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdkbUZ5SUhCaGNtRnRJRDBnWVd4c1JHVm1hVzVsWkZCaGNtRnRjMXRwWFR0Y2JseHVJQ0FnSUdsbUlDaHdZWEpoYlM1cGJpQTlQVDBnSjJadmNtMUVZWFJoSnlrZ2UxeHVJQ0FnSUNBZ2FXWWdLSEJoY21GdExuUjVjR1VnUFQwOUlDZG1hV3hsSnlrZ2UxeHVJQ0FnSUNBZ0lDQmtaV1pwYm1Wa1JtbHNaVkJoY21GdGN5NXdkWE5vS0hCaGNtRnRLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR1JsWm1sdVpXUkdiM0p0VUdGeVlXMXpMbkIxYzJnb2NHRnlZVzBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvY0dGeVlXMHVhVzRnUFQwOUlDZG9aV0ZrWlhJbklDWW1JRzl3ZEhNcElIdGNiaUFnSUNBZ0lIWmhjaUJyWlhrZ1BTQndZWEpoYlM1dVlXMWxPMXh1SUNBZ0lDQWdkbUZ5SUdobFlXUmxjbFpoYkhWbElEMGdiM0IwYzF0d1lYSmhiUzV1WVcxbFhUdGNibHh1SUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ2Y0hSelczQmhjbUZ0TG01aGJXVmRJQ0U5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdJQ0JvWldGa1pYSnpXMnRsZVYwZ1BTQm9aV0ZrWlhKV1lXeDFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJoY21GdExtbHVJRDA5UFNBblltOWtlU2NnSmlZZ2RIbHdaVzltSUdGeVozTmJjR0Z5WVcwdWJtRnRaVjBnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0JpYjJSNUlEMGdZWEpuYzF0d1lYSmhiUzV1WVcxbFhUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZMeUJwWmlCMGFHVnlaU2R6SUdFZ1ltOWtlU3dnYm1WbFpDQjBieUJ6WlhRZ2RHaGxJR052Ym5OMWJXVnpJR2hsWVdSbGNpQjJhV0VnY21WeGRXVnpkRU52Ym5SbGJuUlVlWEJsWEc0Z0lIWmhjaUJvWVhOQ2IyUjVJRDBnWW05a2VTQjhmQ0JrWldacGJtVmtSbWxzWlZCaGNtRnRjeTVzWlc1bmRHZ2dmSHdnWkdWbWFXNWxaRVp2Y20xUVlYSmhiWE11YkdWdVozUm9PMXh1SUNCcFppQW9kR2hwY3k1dFpYUm9iMlFnUFQwOUlDZHdiM04wSnlCOGZDQjBhR2x6TG0xbGRHaHZaQ0E5UFQwZ0ozQjFkQ2NnZkh3Z2RHaHBjeTV0WlhSb2IyUWdQVDA5SUNkd1lYUmphQ2NnZkh4Y2JpQWdJQ0FnSUNnb2RHaHBjeTV0WlhSb2IyUWdQVDA5SUNka1pXeGxkR1VuSUh4OElIUm9hWE11YldWMGFHOWtJRDA5UFNBbloyVjBKeWtnSmlZZ2FHRnpRbTlrZVNrcElIdGNiaUFnSUNCcFppQW9iM0IwY3k1eVpYRjFaWE4wUTI5dWRHVnVkRlI1Y0dVcElIdGNiaUFnSUNBZ0lHTnZibk4xYldWeklEMGdiM0IwY3k1eVpYRjFaWE4wUTI5dWRHVnVkRlI1Y0dVN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2SUdsbUlHRnVlU0JtYjNKdElIQmhjbUZ0Y3l3Z1kyOXVkR1Z1ZENCMGVYQmxJRzExYzNRZ1ltVWdjMlYwWEc0Z0lDQWdhV1lnS0dSbFptbHVaV1JHYjNKdFVHRnlZVzF6TG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lHTnZibk4xYldWeklEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdhV1lnS0c5d2RITXVjbVZ4ZFdWemRFTnZiblJsYm5SVWVYQmxLU0I3SUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRzkyWlhKeWFXUmxJR2xtSUhObGRGeHVJQ0FnSUNBZ0lDQmpiMjV6ZFcxbGN5QTlJRzl3ZEhNdWNtVnhkV1Z6ZEVOdmJuUmxiblJVZVhCbE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGtaV1pwYm1Wa1JtbHNaVkJoY21GdGN5NXNaVzVuZEdnZ1BpQXdLU0I3SUM4dklHbG1JR0VnWm1sc1pTd2diWFZ6ZENCaVpTQnRkV3gwYVhCaGNuUXZabTl5YlMxa1lYUmhYRzRnSUNBZ0lDQWdJR052Ym5OMWJXVnpJRDBnSjIxMWJIUnBjR0Z5ZEM5bWIzSnRMV1JoZEdFbk8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVkyOXVjM1Z0WlhNZ0ppWWdkR2hwY3k1amIyNXpkVzFsY3k1c1pXNW5kR2dnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RYTmxJSFJvWlNCamIyNXpkVzFsY3lCelpYUjBhVzVuWEc0Z0lDQWdJQ0FnSUNBZ1ptOXlLSFpoY2lCaklHbHVJSFJvYVhNdVkyOXVjM1Z0WlhNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQmphR3NnUFNCMGFHbHpMbU52Ym5OMWJXVnpXMk5kTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvWTJockxtbHVaR1Y0VDJZb0oyRndjR3hwWTJGMGFXOXVMM2d0ZDNkM0xXWnZjbTB0ZFhKc1pXNWpiMlJsWkNjcElEMDlQU0F3SUh4OElHTm9heTVwYm1SbGVFOW1LQ2R0ZFd4MGFYQmhjblF2Wm05eWJTMWtZWFJoSnlrZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzVnRaWE1nUFNCamFHczdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JwWmloMGVYQmxiMllnWTI5dWMzVnRaWE1nUFQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUM4dklHUmxabUYxYkhRZ2RHOGdlQzEzZDNjdFpuSnZiUzExY214bGJtTnZaR1ZrWEc0Z0lDQWdJQ0FnSUdOdmJuTjFiV1Z6SUQwZ0oyRndjR3hwWTJGMGFXOXVMM2d0ZDNkM0xXWnZjbTB0ZFhKc1pXNWpiMlJsWkNjN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzRnSUdWc2MyVWdlMXh1SUNBZ0lHTnZibk4xYldWeklEMGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hqYjI1emRXMWxjeUFtSmlCMGFHbHpMbU52Ym5OMWJXVnpLU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMjl1YzNWdFpYTXVhVzVrWlhoUFppaGpiMjV6ZFcxbGN5a2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQm9aV3h3WlhKekxteHZaeWduYzJWeWRtVnlJR1J2WlhOdVhGd25kQ0JqYjI1emRXMWxJQ2NnS3lCamIyNXpkVzFsY3lBcklDY3NJSFJ5ZVNBbklDc2dTbE5QVGk1emRISnBibWRwWm5rb2RHaHBjeTVqYjI1emRXMWxjeWtwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDZ2hkR2hwY3k1dFlYUmphR1Z6UVdOalpYQjBLR0ZqWTJWd2RITXBLU0I3WEc0Z0lDQWdhR1ZzY0dWeWN5NXNiMmNvSjNObGNuWmxjaUJqWVc1Y1hDZDBJSEJ5YjJSMVkyVWdKeUFySUdGalkyVndkSE1wTzF4dUlDQjlYRzVjYmlBZ2FXWWdLQ2hqYjI1emRXMWxjeUFtSmlCaWIyUjVJQ0U5UFNBbkp5a2dmSHdnS0dOdmJuTjFiV1Z6SUQwOVBTQW5ZWEJ3YkdsallYUnBiMjR2ZUMxM2QzY3RabTl5YlMxMWNteGxibU52WkdWa0p5a3BJSHRjYmlBZ0lDQm9aV0ZrWlhKeld5ZERiMjUwWlc1MExWUjVjR1VuWFNBOUlHTnZibk4xYldWek8xeHVJQ0I5WEc0Z0lHVnNjMlVnYVdZb2RHaHBjeTVqYjI1emRXMWxjeUFtSmlCMGFHbHpMbU52Ym5OMWJXVnpMbXhsYm1kMGFDQStJREFnSmlZZ2RHaHBjeTVqYjI1emRXMWxjMXN3WFNBOVBUMGdKMkZ3Y0d4cFkyRjBhVzl1TDNndGQzZDNMV1p2Y20wdGRYSnNaVzVqYjJSbFpDY3BJSHRjYmlBZ0lDQm9aV0ZrWlhKeld5ZERiMjUwWlc1MExWUjVjR1VuWFNBOUlIUm9hWE11WTI5dWMzVnRaWE5iTUYwN1hHNGdJSDFjYmx4dUlDQnBaaUFvWVdOalpYQjBjeWtnZTF4dUlDQWdJR2hsWVdSbGNuTXVRV05qWlhCMElEMGdZV05qWlhCMGN6dGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQm9aV0ZrWlhKek8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUhSeWRXVWdhV1lnZEdobElISmxjWFZsYzNRZ1lXTmpaWEIwY3lCb1pXRmtaWElnYldGMFkyaGxjeUJoYm5sMGFHbHVaeUJwYmlCMGFHbHpMbkJ5YjJSMVkyVnpMbHh1SUNvZ0lFbG1JSFJvYVhNdWNISnZaSFZqWlhNZ1kyOXVkR0ZwYm5NZ0tpQXZJQ29zSUdsbmJtOXlaU0IwYUdVZ1lXTmpaWEIwSUdobFlXUmxjaTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuUFgwZ1lXTmpaWEIwY3lCVWFHVWdZMnhwWlc1MElISmxjWFZsYzNRZ1lXTmpaWEIwSUdobFlXUmxjaTVjYmlBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OVhHNGdLaTljYms5d1pYSmhkR2x2Ymk1d2NtOTBiM1I1Y0dVdWJXRjBZMmhsYzBGalkyVndkQ0E5SUdaMWJtTjBhVzl1S0dGalkyVndkSE1wSUh0Y2JpQWdMeThnYm04Z1lXTmpaWEIwY3lCdmNpQndjbTlrZFdObGN5d2dibThnY0hKdllteGxiU0ZjYmlBZ2FXWWdLQ0ZoWTJObGNIUnpJSHg4SUNGMGFHbHpMbkJ5YjJSMVkyVnpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSFJvYVhNdWNISnZaSFZqWlhNdWFXNWtaWGhQWmloaFkyTmxjSFJ6S1NBaFBUMGdMVEVnZkh3Z2RHaHBjeTV3Y205a2RXTmxjeTVwYm1SbGVFOW1LQ2NxTHlvbktTQWhQVDBnTFRFN1hHNTlPMXh1WEc1UGNHVnlZWFJwYjI0dWNISnZkRzkwZVhCbExtRnpRM1Z5YkNBOUlHWjFibU4wYVc5dUlDaGhjbWR6TVN3Z1lYSm5jeklwSUh0Y2JpQWdkbUZ5SUc5d2RITWdQU0I3Ylc5amF6b2dkSEoxWlN3Z2JXRnphMUJoYzNOM2IzSmtjem9nZEhKMVpYMDdYRzRnSUdsbUlDaDBlWEJsYjJZZ1lYSm5jeklnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ1lYSm5TMlY1SUdsdUlHRnlaM015S1NCN1hHNGdJQ0FnSUNCdmNIUnpXMkZ5WjB0bGVWMGdQU0JoY21kek1sdGhjbWRMWlhsZE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCMllYSWdiMkpxSUQwZ2RHaHBjeTVsZUdWamRYUmxLR0Z5WjNNeExDQnZjSFJ6S1R0Y2JseHVJQ0IwYUdsekxtTnNhV1Z1ZEVGMWRHaHZjbWw2WVhScGIyNXpMbUZ3Y0d4NUtHOWlhaXdnZEdocGN5NXZjR1Z5WVhScGIyNHVjMlZqZFhKcGRIa3BPMXh1WEc0Z0lIWmhjaUJ5WlhOMWJIUnpJRDBnVzEwN1hHNWNiaUFnY21WemRXeDBjeTV3ZFhOb0tDY3RXQ0FuSUNzZ2RHaHBjeTV0WlhSb2IyUXVkRzlWY0hCbGNrTmhjMlVvS1NrN1hHNWNiaUFnYVdZZ0tIUjVjR1Z2WmlCdlltb3VhR1ZoWkdWeWN5QWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNCMllYSWdhMlY1TzF4dVhHNGdJQ0FnWm05eUlDaHJaWGtnYVc0Z2IySnFMbWhsWVdSbGNuTXBJSHRjYmlBZ0lDQWdJSFpoY2lCMllXeDFaU0E5SUc5aWFpNW9aV0ZrWlhKelcydGxlVjA3WEc0Z0lDQWdJQ0JwWmloMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkemRISnBibWNuS1h0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCMllXeDFaUzV5WlhCc1lXTmxLQzljWENjdlp5d2dKMXhjWEZ4MU1EQXlOeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WemRXeDBjeTV3ZFhOb0tDY3RMV2hsWVdSbGNpQmNYQ2NuSUNzZ2EyVjVJQ3NnSnpvZ0p5QXJJSFpoYkhWbElDc2dKMXhjSnljcE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCMllYSWdhWE5HYjNKdFJHRjBZU0E5SUdaaGJITmxPMXh1SUNCMllYSWdhWE5OZFd4MGFYQmhjblFnUFNCbVlXeHpaVHRjYmx4dUlDQjJZWElnZEhsd1pTQTlJRzlpYWk1b1pXRmtaWEp6V3lkRGIyNTBaVzUwTFZSNWNHVW5YVHRjYmlBZ2FXWW9kSGx3WlNBbUppQjBlWEJsTG1sdVpHVjRUMllvSjJGd2NHeHBZMkYwYVc5dUwzZ3RkM2QzTFdadmNtMHRkWEpzWlc1amIyUmxaQ2NwSUQwOVBTQXdLU0I3WEc0Z0lDQWdhWE5HYjNKdFJHRjBZU0E5SUhSeWRXVTdYRzRnSUgxY2JpQWdaV3h6WlNCcFppQW9kSGx3WlNBbUppQjBlWEJsTG1sdVpHVjRUMllvSjIxMWJIUnBjR0Z5ZEM5bWIzSnRMV1JoZEdFbktTQTlQVDBnTUNrZ2UxeHVJQ0FnSUdselJtOXliVVJoZEdFZ1BTQjBjblZsTzF4dUlDQWdJR2x6VFhWc2RHbHdZWEowSUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUdsbUlDaHZZbW91WW05a2VTa2dlMXh1SUNBZ0lIWmhjaUJpYjJSNU8xeHVJQ0FnSUdsbUlDaGZMbWx6VDJKcVpXTjBLRzlpYWk1aWIyUjVLU2tnZTF4dUlDQWdJQ0FnYVdZb2FYTk5kV3gwYVhCaGNuUXBJSHRjYmlBZ0lDQWdJQ0FnYVhOTmRXeDBhWEJoY25RZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBdkx5QmhaR1FnZEdobElHWnZjbTBnWkdGMFlWeHVJQ0FnSUNBZ0lDQm1iM0lvZG1GeUlHa2dQU0F3T3lCcElEd2dkR2hwY3k1d1lYSmhiV1YwWlhKekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnlJSEJoY21GdFpYUmxjaUE5SUhSb2FYTXVjR0Z5WVcxbGRHVnljMXRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQnBaaWh3WVhKaGJXVjBaWEl1YVc0Z1BUMDlJQ2RtYjNKdFJHRjBZU2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFltOWtlU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNUlEMGdKeWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ3WVhKaGJWWmhiSFZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lvZEhsd1pXOW1JRVp2Y20xRVlYUmhJRDA5UFNBblpuVnVZM1JwYjI0bklDWW1JRzlpYWk1aWIyUjVJR2x1YzNSaGJtTmxiMllnUm05eWJVUmhkR0VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGeVlXMVdZV3gxWlNBOUlHOWlhaTVpYjJSNUxtZGxkRUZzYkNod1lYSmhiV1YwWlhJdWJtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjR0Z5WVcxV1lXeDFaU0E5SUc5aWFpNWliMlI1VzNCaGNtRnRaWFJsY2k1dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHdZWEpoYlZaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNod1lYSmhiV1YwWlhJdWRIbHdaU0E5UFQwZ0oyWnBiR1VuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9jR0Z5WVcxV1lXeDFaUzV1WVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNUlDczlJQ2N0UmlBbklDc2djR0Z5WVcxbGRHVnlMbTVoYldVZ0t5QW5QVUJjSWljZ0t5QndZWEpoYlZaaGJIVmxMbTVoYldVZ0t5QW5YQ0lnSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0VGeWNtRjVMbWx6UVhKeVlYa29jR0Z5WVcxV1lXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LSEJoY21GdFpYUmxjaTVqYjJ4c1pXTjBhVzl1Um05eWJXRjBJRDA5UFNBbmJYVnNkR2tuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1p2Y2loMllYSWdkaUJwYmlCd1lYSmhiVlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ltOWtlU0FyUFNBbkxVWWdKeUFySUhSb2FYTXVaVzVqYjJSbFVYVmxjbmxMWlhrb2NHRnlZVzFsZEdWeUxtNWhiV1VwSUNzZ0p6MG5JQ3NnYldGemF5aHdZWEpoYlZaaGJIVmxXM1pkTENCd1lYSmhiV1YwWlhJdVptOXliV0YwS1NBcklDY2dKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKdlpIa2dLejBnSnkxR0lDY2dLeUIwYUdsekxtVnVZMjlrWlZGMVpYSjVRMjlzYkdWamRHbHZiaWh3WVhKaGJXVjBaWEl1WTI5c2JHVmpkR2x2YmtadmNtMWhkQ3dnY0dGeVlXMWxkR1Z5TG01aGJXVXNJRzFoYzJzb2NHRnlZVzFXWVd4MVpTd2djR0Z5WVcxbGRHVnlMbVp2Y20xaGRDa3BJQ3NnSnlBbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpYjJSNUlDczlJQ2N0UmlBbklDc2dkR2hwY3k1bGJtTnZaR1ZSZFdWeWVVdGxlU2h3WVhKaGJXVjBaWEl1Ym1GdFpTa2dLeUFuUFNjZ0t5QnRZWE5yS0hCaGNtRnRWbUZzZFdVc0lIQmhjbUZ0WlhSbGNpNW1iM0p0WVhRcElDc2dKeUFuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWW9JV0p2WkhrcElIdGNiaUFnSUNBZ0lDQWdZbTlrZVNBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0c5aWFpNWliMlI1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZbTlrZVNBOUlHOWlhaTVpYjJSNU8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlCbGMyTmhjR1VnUUNBOVBpQWxOREFzSUNjZ1BUNGdKVEkzWEc0Z0lDQWdZbTlrZVNBOUlHSnZaSGt1Y21Wd2JHRmpaU2d2WEZ3bkwyY3NJQ2NsTWpjbktTNXlaWEJzWVdObEtDOWNYRzR2Wnl3Z0p5QmNYRnhjSUZ4Y2JpQW5LVHRjYmx4dUlDQWdJR2xtS0NGcGMwWnZjbTFFWVhSaEtTQjdYRzRnSUNBZ0lDQXZMeUJsYzJOaGNHVWdKaUE5UGlBbE1qWmNiaUFnSUNBZ0lHSnZaSGtnUFNCaWIyUjVMbkpsY0d4aFkyVW9MeVl2Wnl3Z0p5VXlOaWNwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaWhwYzAxMWJIUnBjR0Z5ZENrZ2UxeHVJQ0FnSUNBZ2NtVnpkV3gwY3k1d2RYTm9LR0p2WkhrcE8xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lISmxjM1ZzZEhNdWNIVnphQ2duTFdRZ1hGd25KeUFySUdKdlpIa3VjbVZ3YkdGalpTZ3ZRQzluTENBbkpUUXdKeWtnS3lBblhGd25KeWs3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJQ2RqZFhKc0lDY2dLeUFvY21WemRXeDBjeTVxYjJsdUtDY2dKeWtwSUNzZ0p5QmNYQ2NuSUNzZ2IySnFMblZ5YkNBcklDZGNYQ2NuTzF4dWZUdGNibHh1VDNCbGNtRjBhVzl1TG5CeWIzUnZkSGx3WlM1bGJtTnZaR1ZRWVhSb1EyOXNiR1ZqZEdsdmJpQTlJR1oxYm1OMGFXOXVJQ2gwZVhCbExDQnVZVzFsTENCMllXeDFaU3dnYldGemExQmhjM04zYjNKa2N5a2dlMXh1SUNCMllYSWdaVzVqYjJSbFpDQTlJQ2NuTzF4dUlDQjJZWElnYVR0Y2JpQWdkbUZ5SUhObGNHRnlZWFJ2Y2lBOUlDY25PMXh1WEc0Z0lHbG1JQ2gwZVhCbElEMDlQU0FuYzNOMkp5a2dlMXh1SUNBZ0lITmxjR0Z5WVhSdmNpQTlJQ2NsTWpBbk8xeHVJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVWdQVDA5SUNkMGMzWW5LU0I3WEc0Z0lDQWdjMlZ3WVhKaGRHOXlJRDBnSnlVd09TYzdYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozQnBjR1Z6SnlrZ2UxeHVJQ0FnSUhObGNHRnlZWFJ2Y2lBOUlDZDhKenRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J6WlhCaGNtRjBiM0lnUFNBbkxDYzdYRzRnSUgxY2JseHVJQ0JtYjNJZ0tHa2dQU0F3T3lCcElEd2dkbUZzZFdVdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQnBaaUFvYVNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnWlc1amIyUmxaQ0E5SUhSb2FYTXVaVzVqYjJSbFVYVmxjbmxRWVhKaGJTaDJZV3gxWlZ0cFhTd2diV0Z6YTFCaGMzTjNiM0prY3lrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR1Z1WTI5a1pXUWdLejBnYzJWd1lYSmhkRzl5SUNzZ2RHaHBjeTVsYm1OdlpHVlJkV1Z5ZVZCaGNtRnRLSFpoYkhWbFcybGRMQ0J0WVhOclVHRnpjM2R2Y21SektUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z1pXNWpiMlJsWkR0Y2JuMDdYRzVjYms5d1pYSmhkR2x2Ymk1d2NtOTBiM1I1Y0dVdVpXNWpiMlJsVVhWbGNubERiMnhzWldOMGFXOXVJRDBnWm5WdVkzUnBiMjRnS0hSNWNHVXNJRzVoYldVc0lIWmhiSFZsTENCdFlYTnJVR0Z6YzNkdmNtUnpLU0I3WEc0Z0lIWmhjaUJsYm1OdlpHVmtJRDBnSnljN1hHNGdJSFpoY2lCcE8xeHVYRzRnSUhSNWNHVWdQU0IwZVhCbElIeDhJQ2RrWldaaGRXeDBKenRjYmlBZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2RrWldaaGRXeDBKeUI4ZkNCMGVYQmxJRDA5UFNBbmJYVnNkR2tuS1NCN1hHNGdJQ0FnWm05eUlDaHBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb2FTQStJREFwSUh0bGJtTnZaR1ZrSUNzOUlDY21KenQ5WEc1Y2JpQWdJQ0FnSUdWdVkyOWtaV1FnS3owZ2RHaHBjeTVsYm1OdlpHVlJkV1Z5ZVV0bGVTaHVZVzFsS1NBcklDYzlKeUFySUcxaGMyc29kR2hwY3k1bGJtTnZaR1ZSZFdWeWVWQmhjbUZ0S0haaGJIVmxXMmxkS1N3Z2JXRnphMUJoYzNOM2IzSmtjeWs3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFpoY2lCelpYQmhjbUYwYjNJZ1BTQW5KenRjYmx4dUlDQWdJR2xtSUNoMGVYQmxJRDA5UFNBblkzTjJKeWtnZTF4dUlDQWdJQ0FnYzJWd1lYSmhkRzl5SUQwZ0p5d25PMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKM056ZGljcElIdGNiaUFnSUNBZ0lITmxjR0Z5WVhSdmNpQTlJQ2NsTWpBbk8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozUnpkaWNwSUh0Y2JpQWdJQ0FnSUhObGNHRnlZWFJ2Y2lBOUlDY2xNRGtuTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjNCcGNHVnpKeWtnZTF4dUlDQWdJQ0FnYzJWd1lYSmhkRzl5SUQwZ0ozd25PMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMkp5WVdOclpYUnpKeWtnZTF4dUlDQWdJQ0FnWm05eUlDaHBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBJQ0U5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnWlc1amIyUmxaQ0FyUFNBbkppYzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWlc1amIyUmxaQ0FyUFNCMGFHbHpMbVZ1WTI5a1pWRjFaWEo1UzJWNUtHNWhiV1VwSUNzZ0oxdGRQU2NnS3lCdFlYTnJLSFJvYVhNdVpXNWpiMlJsVVhWbGNubFFZWEpoYlNoMllXeDFaVnRwWFNrc0lHMWhjMnRRWVhOemQyOXlaSE1wTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoelpYQmhjbUYwYjNJZ0lUMDlJQ2NuS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR2tnUFNBd095QnBJRHdnZG1Gc2RXVXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2tnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbGJtTnZaR1ZrSUQwZ2RHaHBjeTVsYm1OdlpHVlJkV1Z5ZVV0bGVTaHVZVzFsS1NBcklDYzlKeUFySUhSb2FYTXVaVzVqYjJSbFVYVmxjbmxRWVhKaGJTaDJZV3gxWlZ0cFhTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnWlc1amIyUmxaQ0FyUFNCelpYQmhjbUYwYjNJZ0t5QjBhR2x6TG1WdVkyOWtaVkYxWlhKNVVHRnlZVzBvZG1Gc2RXVmJhVjBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdWdVkyOWtaV1E3WEc1OU8xeHVYRzVQY0dWeVlYUnBiMjR1Y0hKdmRHOTBlWEJsTG1WdVkyOWtaVkYxWlhKNVMyVjVJRDBnWm5WdVkzUnBiMjRnS0dGeVp5a2dlMXh1SUNCeVpYUjFjbTRnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0dGeVp5bGNiaUFnSUNBZ0lDNXlaWEJzWVdObEtDY2xOVUluTENkYkp5a3VjbVZ3YkdGalpTZ25KVFZFSnl3Z0oxMG5LUzV5WlhCc1lXTmxLQ2NsTWpRbkxDQW5KQ2NwTzF4dWZUdGNibHh1VDNCbGNtRjBhVzl1TG5CeWIzUnZkSGx3WlM1bGJtTnZaR1ZSZFdWeWVWQmhjbUZ0SUQwZ1puVnVZM1JwYjI0Z0tHRnlaeXdnYldGemExQmhjM04zYjNKa2N5a2dlMXh1SUNCcFppaHRZWE5yVUdGemMzZHZjbVJ6S1NCN1hHNGdJQ0FnY21WMGRYSnVJRndpS2lvcUtpb3FYQ0k3WEc0Z0lIMWNiaUFnYVdZb1lYSm5JQ0U5UFNCMWJtUmxabWx1WldRZ0ppWWdZWEpuSUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1Z1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ2hoY21jcE8xeHVJQ0I5WEc0Z0lHVnNjMlVnZTF4dUlDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ2ZWeHVmVHRjYmx4dUx5b3FYRzRnS2lCVVQwUlBJSEpsZG1semFYUXNJRzFwWjJoMElHNXZkQ0IzWVc1MElIUnZJR3hsWVhabElDY3ZKMXh1SUNvcUwxeHVUM0JsY21GMGFXOXVMbkJ5YjNSdmRIbHdaUzVsYm1OdlpHVlFZWFJvVUdGeVlXMGdQU0JtZFc1amRHbHZiaUFvY0dGMGFGQmhjbUZ0TENCdFlYTnJVR0Z6YzNkdmNtUnpLU0I3WEc0Z0lISmxkSFZ5YmlCbGJtTnZaR1ZWVWtsRGIyMXdiMjVsYm5Rb2NHRjBhRkJoY21GdExDQnRZWE5yVUdGemMzZHZjbVJ6S1R0Y2JuMDdYRzVjYm5aaGNpQnRZWE5ySUQwZ1puVnVZM1JwYjI0b2RtRnNkV1VzSUdadmNtMWhkQ2tnZTF4dUlDQnBaaWgwZVhCbGIyWWdabTl5YldGMElEMDlQU0FuYzNSeWFXNW5KeUFtSmlCbWIzSnRZWFFnUFQwOUlDZHdZWE56ZDI5eVpDY3BJSHRjYmlBZ0lDQnlaWFIxY200Z0p5b3FLaW9xS2ljN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1ZlZ4dUlpd2lKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVDNCbGNtRjBhVzl1UjNKdmRYQWdQU0J0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1oxYm1OMGFXOXVJQ2gwWVdjc0lHUmxjMk55YVhCMGFXOXVMQ0JsZUhSbGNtNWhiRVJ2WTNNc0lHOXdaWEpoZEdsdmJpa2dlMXh1SUNCMGFHbHpMbVJsYzJOeWFYQjBhVzl1SUQwZ1pHVnpZM0pwY0hScGIyNDdYRzRnSUhSb2FYTXVaWGgwWlhKdVlXeEViMk56SUQwZ1pYaDBaWEp1WVd4RWIyTnpPMXh1SUNCMGFHbHpMbTVoYldVZ1BTQjBZV2M3WEc0Z0lIUm9hWE11YjNCbGNtRjBhVzl1SUQwZ2IzQmxjbUYwYVc5dU8xeHVJQ0IwYUdsekxtOXdaWEpoZEdsdmJuTkJjbkpoZVNBOUlGdGRPMXh1SUNCMGFHbHpMbkJoZEdnZ1BTQjBZV2M3WEc0Z0lIUm9hWE11ZEdGbklEMGdkR0ZuTzF4dWZUdGNibHh1VDNCbGNtRjBhVzl1UjNKdmRYQXVjSEp2ZEc5MGVYQmxMbk52Y25RZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc1Y2JuMDdYRzVjYmlJc0lpOHZJSE5vYVcwZ1ptOXlJSFZ6YVc1bklIQnliMk5sYzNNZ2FXNGdZbkp2ZDNObGNseHVYRzUyWVhJZ2NISnZZMlZ6Y3lBOUlHMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2UzMDdYRzUyWVhJZ2NYVmxkV1VnUFNCYlhUdGNiblpoY2lCa2NtRnBibWx1WnlBOUlHWmhiSE5sTzF4dVhHNW1kVzVqZEdsdmJpQmtjbUZwYmxGMVpYVmxLQ2tnZTF4dUlDQWdJR2xtSUNoa2NtRnBibWx1WnlrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dUlDQWdJR1J5WVdsdWFXNW5JRDBnZEhKMVpUdGNiaUFnSUNCMllYSWdZM1Z5Y21WdWRGRjFaWFZsTzF4dUlDQWdJSFpoY2lCc1pXNGdQU0J4ZFdWMVpTNXNaVzVuZEdnN1hHNGdJQ0FnZDJocGJHVW9iR1Z1S1NCN1hHNGdJQ0FnSUNBZ0lHTjFjbkpsYm5SUmRXVjFaU0E5SUhGMVpYVmxPMXh1SUNBZ0lDQWdJQ0J4ZFdWMVpTQTlJRnRkTzF4dUlDQWdJQ0FnSUNCMllYSWdhU0E5SUMweE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb0t5dHBJRHdnYkdWdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamRYSnlaVzUwVVhWbGRXVmJhVjBvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnNaVzRnUFNCeGRXVjFaUzVzWlc1bmRHZzdYRzRnSUNBZ2ZWeHVJQ0FnSUdSeVlXbHVhVzVuSUQwZ1ptRnNjMlU3WEc1OVhHNXdjbTlqWlhOekxtNWxlSFJVYVdOcklEMGdablZ1WTNScGIyNGdLR1oxYmlrZ2UxeHVJQ0FnSUhGMVpYVmxMbkIxYzJnb1puVnVLVHRjYmlBZ0lDQnBaaUFvSVdSeVlXbHVhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lITmxkRlJwYldWdmRYUW9aSEpoYVc1UmRXVjFaU3dnTUNrN1hHNGdJQ0FnZlZ4dWZUdGNibHh1Y0hKdlkyVnpjeTUwYVhSc1pTQTlJQ2RpY205M2MyVnlKenRjYm5CeWIyTmxjM011WW5KdmQzTmxjaUE5SUhSeWRXVTdYRzV3Y205alpYTnpMbVZ1ZGlBOUlIdDlPMXh1Y0hKdlkyVnpjeTVoY21kMklEMGdXMTA3WEc1d2NtOWpaWE56TG5abGNuTnBiMjRnUFNBbkp6c2dMeThnWlcxd2RIa2djM1J5YVc1bklIUnZJR0YyYjJsa0lISmxaMlY0Y0NCcGMzTjFaWE5jYm5CeWIyTmxjM011ZG1WeWMybHZibk1nUFNCN2ZUdGNibHh1Wm5WdVkzUnBiMjRnYm05dmNDZ3BJSHQ5WEc1Y2JuQnliMk5sYzNNdWIyNGdQU0J1YjI5d08xeHVjSEp2WTJWemN5NWhaR1JNYVhOMFpXNWxjaUE5SUc1dmIzQTdYRzV3Y205alpYTnpMbTl1WTJVZ1BTQnViMjl3TzF4dWNISnZZMlZ6Y3k1dlptWWdQU0J1YjI5d08xeHVjSEp2WTJWemN5NXlaVzF2ZG1WTWFYTjBaVzVsY2lBOUlHNXZiM0E3WEc1d2NtOWpaWE56TG5KbGJXOTJaVUZzYkV4cGMzUmxibVZ5Y3lBOUlHNXZiM0E3WEc1d2NtOWpaWE56TG1WdGFYUWdQU0J1YjI5d08xeHVYRzV3Y205alpYTnpMbUpwYm1ScGJtY2dQU0JtZFc1amRHbHZiaUFvYm1GdFpTa2dlMXh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmNISnZZMlZ6Y3k1aWFXNWthVzVuSUdseklHNXZkQ0J6ZFhCd2IzSjBaV1FuS1R0Y2JuMDdYRzVjYmk4dklGUlBSRThvYzJoMGVXeHRZVzRwWEc1d2NtOWpaWE56TG1OM1pDQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUNjdkp5QjlPMXh1Y0hKdlkyVnpjeTVqYUdScGNpQTlJR1oxYm1OMGFXOXVJQ2hrYVhJcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjNCeWIyTmxjM011WTJoa2FYSWdhWE1nYm05MElITjFjSEJ2Y25SbFpDY3BPMXh1ZlR0Y2JuQnliMk5sYzNNdWRXMWhjMnNnUFNCbWRXNWpkR2x2YmlncElIc2djbVYwZFhKdUlEQTdJSDA3WEc0aUxDSW9ablZ1WTNScGIyNGdLRUoxWm1abGNpbDdYRzRvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0JjSW5WelpTQnpkSEpwWTNSY0lqdGNibHh1SUNCbWRXNWpkR2x2YmlCaWRHOWhLSE4wY2lrZ2UxeHVJQ0FnSUhaaGNpQmlkV1ptWlhKY2JpQWdJQ0FnSUR0Y2JseHVJQ0FnSUdsbUlDaHpkSElnYVc1emRHRnVZMlZ2WmlCQ2RXWm1aWElwSUh0Y2JpQWdJQ0FnSUdKMVptWmxjaUE5SUhOMGNqdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWW5WbVptVnlJRDBnYm1WM0lFSjFabVpsY2loemRISXVkRzlUZEhKcGJtY29LU3dnSjJKcGJtRnllU2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQmlkV1ptWlhJdWRHOVRkSEpwYm1jb0oySmhjMlUyTkNjcE8xeHVJQ0I5WEc1Y2JpQWdiVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmlkRzloTzF4dWZTZ3BLVHRjYmx4dWZTa3VZMkZzYkNoMGFHbHpMSEpsY1hWcGNtVW9YQ0ppZFdabVpYSmNJaWt1UW5WbVptVnlLVnh1THk4aklITnZkWEpqWlUxaGNIQnBibWRWVWt3OVpHRjBZVHBoY0hCc2FXTmhkR2x2Ymk5cWMyOXVPMk5vWVhKelpYUTZkWFJtTFRnN1ltRnpaVFkwTEdWNVNqSmFXRXA2WVZjNWRVbHFiM3BNUTBwNllqTldlVmt5Vm5wSmFuQmlTVzAxZGxwSFZtWmlWemxyWkZkNGJHTjVPV2xrUnpsb1RESnNkVnBIVmpSTWJYQjZTV3d3YzBsdE5XaGlWMVo2U1dwd1lsaFRkMmxpVjBaM1kwZHNkVm96VFdsUGFVazNVVlZHUWxGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlRTWE5KYlZwd1lrZFZhVTlwU201YVZ6VnNZMjFHTUZwWFVYVmhiazFwVEVOS2VtSXpWbmxaTWxaVFlqSTVNRWxxYjJsSmFYZHBZekk1TVdOdFRteGpNRTUyWW01U2JHSnVVV2xQYkhOcFMwZGFNV0p0VGpCaFZ6bDFTVU5uY0VsSWRHTmlhVUZuV0VOS01XTXlWV2RqTTFKNVlWZE9NRmhEU1RkWVJ6VmpZbWxCWjFwdVZuVlpNMUp3WWpJMFoxbHVVblpaVTJoNlpFaEpjRWxJZEdOaWFVRm5TVU5DTWxsWVNXZFpibFp0V20xV2VWaEhOR2RKUTBGblNVTkJOMWhITldOaWFVRm5TVU5DY0ZwcFFXOWpNMUo1U1Vkc2RXTXpVbWhpYlU1c1lqSlpaMUZ1Vm0xYWJWWjVTMU5DTjFoSE5HZEpRMEZuU1VOQ2FXUlhXbTFhV0VsblVGTkNlbVJJU1RkWVJ6Um5TVU5CWjJaVFFteGlTRTVzU1VoMFkySnBRV2RKUTBGblNVZEtNVnB0V214amFVRTVTVWMxYkdSNVFrTmtWMXB0V2xoSmIyTXpVbmxNYmxKMlZUTlNlV0ZYTlc1TFEydHpTVU5rYVdGWE5XaGpibXR1UzFSMFkySnBRV2RKUTBJNVdFYzFZMkpwUVdkSlEwSjVXbGhTTVdOdE5HZFpibFp0V20xV2VVeHVVblpWTTFKNVlWYzFia3REWkdsWldFNXNUbXBSYmt0VWRHTmlhVUZuWmxaNGRWaEhOR2RKUnpGMldraFdjMXBUTld4bFNFSjJZMjVTZWtsRU1HZFpibEoyV1ZSMFkySnVNRzlMVTJzM1dFYzBhVmhZTUQwaUxDSXZLaUZjYmlBcUlGUm9aU0JpZFdabVpYSWdiVzlrZFd4bElHWnliMjBnYm05a1pTNXFjeXdnWm05eUlIUm9aU0JpY205M2MyVnlMbHh1SUNwY2JpQXFJRUJoZFhSb2IzSWdJQ0JHWlhKdmMzTWdRV0p2ZFd0b1lXUnBhbVZvSUR4bVpYSnZjM05BWm1WeWIzTnpMbTl5Wno0Z1BHaDBkSEE2THk5bVpYSnZjM011YjNKblBseHVJQ29nUUd4cFkyVnVjMlVnSUUxSlZGeHVJQ292WEc1Y2JuWmhjaUJpWVhObE5qUWdQU0J5WlhGMWFYSmxLQ2RpWVhObE5qUXRhbk1uS1Z4dWRtRnlJR2xsWldVM05UUWdQU0J5WlhGMWFYSmxLQ2RwWldWbE56VTBKeWxjYm5aaGNpQnBjMEZ5Y21GNUlEMGdjbVZ4ZFdseVpTZ25hWE10WVhKeVlYa25LVnh1WEc1bGVIQnZjblJ6TGtKMVptWmxjaUE5SUVKMVptWmxjbHh1Wlhod2IzSjBjeTVUYkc5M1FuVm1abVZ5SUQwZ1UyeHZkMEoxWm1abGNseHVaWGh3YjNKMGN5NUpUbE5RUlVOVVgwMUJXRjlDV1ZSRlV5QTlJRFV3WEc1Q2RXWm1aWEl1Y0c5dmJGTnBlbVVnUFNBNE1Ua3lJQzh2SUc1dmRDQjFjMlZrSUdKNUlIUm9hWE1nYVcxd2JHVnRaVzUwWVhScGIyNWNibHh1ZG1GeUlISnZiM1JRWVhKbGJuUWdQU0I3ZlZ4dVhHNHZLaXBjYmlBcUlFbG1JR0JDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWR0E2WEc0Z0tpQWdJRDA5UFNCMGNuVmxJQ0FnSUZWelpTQlZhVzUwT0VGeWNtRjVJR2x0Y0d4bGJXVnVkR0YwYVc5dUlDaG1ZWE4wWlhOMEtWeHVJQ29nSUNBOVBUMGdabUZzYzJVZ0lDQlZjMlVnVDJKcVpXTjBJR2x0Y0d4bGJXVnVkR0YwYVc5dUlDaHRiM04wSUdOdmJYQmhkR2xpYkdVc0lHVjJaVzRnU1VVMktWeHVJQ3BjYmlBcUlFSnliM2R6WlhKeklIUm9ZWFFnYzNWd2NHOXlkQ0IwZVhCbFpDQmhjbkpoZVhNZ1lYSmxJRWxGSURFd0t5d2dSbWx5WldadmVDQTBLeXdnUTJoeWIyMWxJRGNyTENCVFlXWmhjbWtnTlM0eEt5eGNiaUFxSUU5d1pYSmhJREV4TGpZckxDQnBUMU1nTkM0eUt5NWNiaUFxWEc0Z0tpQkVkV1VnZEc4Z2RtRnlhVzkxY3lCaWNtOTNjMlZ5SUdKMVozTXNJSE52YldWMGFXMWxjeUIwYUdVZ1QySnFaV04wSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJSGRwYkd3Z1ltVWdkWE5sWkNCbGRtVnVYRzRnS2lCM2FHVnVJSFJvWlNCaWNtOTNjMlZ5SUhOMWNIQnZjblJ6SUhSNWNHVmtJR0Z5Y21GNWN5NWNiaUFxWEc0Z0tpQk9iM1JsT2x4dUlDcGNiaUFxSUNBZ0xTQkdhWEpsWm05NElEUXRNamtnYkdGamEzTWdjM1Z3Y0c5eWRDQm1iM0lnWVdSa2FXNW5JRzVsZHlCd2NtOXdaWEowYVdWeklIUnZJR0JWYVc1ME9FRnljbUY1WUNCcGJuTjBZVzVqWlhNc1hHNGdLaUFnSUNBZ1UyVmxPaUJvZEhSd2N6b3ZMMkoxWjNwcGJHeGhMbTF2ZW1sc2JHRXViM0puTDNOb2IzZGZZblZuTG1ObmFUOXBaRDAyT1RVME16Z3VYRzRnS2x4dUlDb2dJQ0F0SUZOaFptRnlhU0ExTFRjZ2JHRmphM01nYzNWd2NHOXlkQ0JtYjNJZ1kyaGhibWRwYm1jZ2RHaGxJR0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbU52Ym5OMGNuVmpkRzl5WUNCd2NtOXdaWEowZVZ4dUlDb2dJQ0FnSUc5dUlHOWlhbVZqZEhNdVhHNGdLbHh1SUNvZ0lDQXRJRU5vY205dFpTQTVMVEV3SUdseklHMXBjM05wYm1jZ2RHaGxJR0JVZVhCbFpFRnljbUY1TG5CeWIzUnZkSGx3WlM1emRXSmhjbkpoZVdBZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ0lDQXRJRWxGTVRBZ2FHRnpJR0VnWW5KdmEyVnVJR0JVZVhCbFpFRnljbUY1TG5CeWIzUnZkSGx3WlM1emRXSmhjbkpoZVdBZ1puVnVZM1JwYjI0Z2QyaHBZMmdnY21WMGRYSnVjeUJoY25KaGVYTWdiMlpjYmlBcUlDQWdJQ0JwYm1OdmNuSmxZM1FnYkdWdVozUm9JR2x1SUhOdmJXVWdjMmwwZFdGMGFXOXVjeTVjYmx4dUlDb2dWMlVnWkdWMFpXTjBJSFJvWlhObElHSjFaMmQ1SUdKeWIzZHpaWEp6SUdGdVpDQnpaWFFnWUVKMVptWmxjaTVVV1ZCRlJGOUJVbEpCV1Y5VFZWQlFUMUpVWUNCMGJ5QmdabUZzYzJWZ0lITnZJSFJvWlhsY2JpQXFJR2RsZENCMGFHVWdUMkpxWldOMElHbHRjR3hsYldWdWRHRjBhVzl1TENCM2FHbGphQ0JwY3lCemJHOTNaWElnWW5WMElHSmxhR0YyWlhNZ1kyOXljbVZqZEd4NUxseHVJQ292WEc1Q2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNBOUlDaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lHWjFibU4wYVc5dUlFSmhjaUFvS1NCN2ZWeHVJQ0IwY25rZ2UxeHVJQ0FnSUhaaGNpQmhjbklnUFNCdVpYY2dWV2x1ZERoQmNuSmhlU2d4S1Z4dUlDQWdJR0Z5Y2k1bWIyOGdQU0JtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlBME1pQjlYRzRnSUNBZ1lYSnlMbU52Ym5OMGNuVmpkRzl5SUQwZ1FtRnlYRzRnSUNBZ2NtVjBkWEp1SUdGeWNpNW1iMjhvS1NBOVBUMGdORElnSmlZZ0x5OGdkSGx3WldRZ1lYSnlZWGtnYVc1emRHRnVZMlZ6SUdOaGJpQmlaU0JoZFdkdFpXNTBaV1JjYmlBZ0lDQWdJQ0FnWVhKeUxtTnZibk4wY25WamRHOXlJRDA5UFNCQ1lYSWdKaVlnTHk4Z1kyOXVjM1J5ZFdOMGIzSWdZMkZ1SUdKbElITmxkRnh1SUNBZ0lDQWdJQ0IwZVhCbGIyWWdZWEp5TG5OMVltRnljbUY1SUQwOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUM4dklHTm9jbTl0WlNBNUxURXdJR3hoWTJzZ1lITjFZbUZ5Y21GNVlGeHVJQ0FnSUNBZ0lDQmhjbkl1YzNWaVlYSnlZWGtvTVN3Z01Ta3VZbmwwWlV4bGJtZDBhQ0E5UFQwZ01DQXZMeUJwWlRFd0lHaGhjeUJpY205clpXNGdZSE4xWW1GeWNtRjVZRnh1SUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxYRzRnSUgxY2JuMHBLQ2xjYmx4dVpuVnVZM1JwYjI0Z2EwMWhlRXhsYm1kMGFDQW9LU0I3WEc0Z0lISmxkSFZ5YmlCQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkZ4dUlDQWdJRDhnTUhnM1ptWm1abVptWmx4dUlDQWdJRG9nTUhnelptWm1abVptWmx4dWZWeHVYRzR2S2lwY2JpQXFJRU5zWVhOek9pQkNkV1ptWlhKY2JpQXFJRDA5UFQwOVBUMDlQVDA5UFQxY2JpQXFYRzRnS2lCVWFHVWdRblZtWm1WeUlHTnZibk4wY25WamRHOXlJSEpsZEhWeWJuTWdhVzV6ZEdGdVkyVnpJRzltSUdCVmFXNTBPRUZ5Y21GNVlDQjBhR0YwSUdGeVpTQmhkV2R0Wlc1MFpXUmNiaUFxSUhkcGRHZ2dablZ1WTNScGIyNGdjSEp2Y0dWeWRHbGxjeUJtYjNJZ1lXeHNJSFJvWlNCdWIyUmxJR0JDZFdabVpYSmdJRUZRU1NCbWRXNWpkR2x2Ym5NdUlGZGxJSFZ6WlZ4dUlDb2dZRlZwYm5RNFFYSnlZWGxnSUhOdklIUm9ZWFFnYzNGMVlYSmxJR0p5WVdOclpYUWdibTkwWVhScGIyNGdkMjl5YTNNZ1lYTWdaWGh3WldOMFpXUWdMUzBnYVhRZ2NtVjBkWEp1YzF4dUlDb2dZU0J6YVc1bmJHVWdiMk4wWlhRdVhHNGdLbHh1SUNvZ1Fua2dZWFZuYldWdWRHbHVaeUIwYUdVZ2FXNXpkR0Z1WTJWekxDQjNaU0JqWVc0Z1lYWnZhV1FnYlc5a2FXWjVhVzVuSUhSb1pTQmdWV2x1ZERoQmNuSmhlV0JjYmlBcUlIQnliM1J2ZEhsd1pTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1FuVm1abVZ5SUNoaGNtY3BJSHRjYmlBZ2FXWWdLQ0VvZEdocGN5QnBibk4wWVc1alpXOW1JRUoxWm1abGNpa3BJSHRjYmlBZ0lDQXZMeUJCZG05cFpDQm5iMmx1WnlCMGFISnZkV2RvSUdGdUlFRnlaM1Z0Wlc1MGMwRmtZWEIwYjNKVWNtRnRjRzlzYVc1bElHbHVJSFJvWlNCamIyMXRiMjRnWTJGelpTNWNiaUFnSUNCcFppQW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQStJREVwSUhKbGRIVnliaUJ1WlhjZ1FuVm1abVZ5S0dGeVp5d2dZWEpuZFcxbGJuUnpXekZkS1Z4dUlDQWdJSEpsZEhWeWJpQnVaWGNnUW5WbVptVnlLR0Z5WnlsY2JpQWdmVnh1WEc0Z0lIUm9hWE11YkdWdVozUm9JRDBnTUZ4dUlDQjBhR2x6TG5CaGNtVnVkQ0E5SUhWdVpHVm1hVzVsWkZ4dVhHNGdJQzh2SUVOdmJXMXZiaUJqWVhObExseHVJQ0JwWmlBb2RIbHdaVzltSUdGeVp5QTlQVDBnSjI1MWJXSmxjaWNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabkp2YlU1MWJXSmxjaWgwYUdsekxDQmhjbWNwWEc0Z0lIMWNibHh1SUNBdkx5QlRiR2xuYUhSc2VTQnNaWE56SUdOdmJXMXZiaUJqWVhObExseHVJQ0JwWmlBb2RIbHdaVzltSUdGeVp5QTlQVDBnSjNOMGNtbHVaeWNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabkp2YlZOMGNtbHVaeWgwYUdsekxDQmhjbWNzSUdGeVozVnRaVzUwY3k1c1pXNW5kR2dnUGlBeElEOGdZWEpuZFcxbGJuUnpXekZkSURvZ0ozVjBaamduS1Z4dUlDQjlYRzVjYmlBZ0x5OGdWVzUxYzNWaGJDNWNiaUFnY21WMGRYSnVJR1p5YjIxUFltcGxZM1FvZEdocGN5d2dZWEpuS1Z4dWZWeHVYRzVtZFc1amRHbHZiaUJtY205dFRuVnRZbVZ5SUNoMGFHRjBMQ0JzWlc1bmRHZ3BJSHRjYmlBZ2RHaGhkQ0E5SUdGc2JHOWpZWFJsS0hSb1lYUXNJR3hsYm1kMGFDQThJREFnUHlBd0lEb2dZMmhsWTJ0bFpDaHNaVzVuZEdncElId2dNQ2xjYmlBZ2FXWWdLQ0ZDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ2tnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lIUm9ZWFJiYVYwZ1BTQXdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCMGFHRjBYRzU5WEc1Y2JtWjFibU4wYVc5dUlHWnliMjFUZEhKcGJtY2dLSFJvWVhRc0lITjBjbWx1Wnl3Z1pXNWpiMlJwYm1jcElIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCbGJtTnZaR2x1WnlBaFBUMGdKM04wY21sdVp5Y2dmSHdnWlc1amIyUnBibWNnUFQwOUlDY25LU0JsYm1OdlpHbHVaeUE5SUNkMWRHWTRKMXh1WEc0Z0lDOHZJRUZ6YzNWdGNIUnBiMjQ2SUdKNWRHVk1aVzVuZEdnb0tTQnlaWFIxY200Z2RtRnNkV1VnYVhNZ1lXeDNZWGx6SUR3Z2EwMWhlRXhsYm1kMGFDNWNiaUFnZG1GeUlHeGxibWQwYUNBOUlHSjVkR1ZNWlc1bmRHZ29jM1J5YVc1bkxDQmxibU52WkdsdVp5a2dmQ0F3WEc0Z0lIUm9ZWFFnUFNCaGJHeHZZMkYwWlNoMGFHRjBMQ0JzWlc1bmRHZ3BYRzVjYmlBZ2RHaGhkQzUzY21sMFpTaHpkSEpwYm1jc0lHVnVZMjlrYVc1bktWeHVJQ0J5WlhSMWNtNGdkR2hoZEZ4dWZWeHVYRzVtZFc1amRHbHZiaUJtY205dFQySnFaV04wSUNoMGFHRjBMQ0J2WW1wbFkzUXBJSHRjYmlBZ2FXWWdLRUoxWm1abGNpNXBjMEoxWm1abGNpaHZZbXBsWTNRcEtTQnlaWFIxY200Z1puSnZiVUoxWm1abGNpaDBhR0YwTENCdlltcGxZM1FwWEc1Y2JpQWdhV1lnS0dselFYSnlZWGtvYjJKcVpXTjBLU2tnY21WMGRYSnVJR1p5YjIxQmNuSmhlU2gwYUdGMExDQnZZbXBsWTNRcFhHNWNiaUFnYVdZZ0tHOWlhbVZqZENBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnbmJYVnpkQ0J6ZEdGeWRDQjNhWFJvSUc1MWJXSmxjaXdnWW5WbVptVnlMQ0JoY25KaGVTQnZjaUJ6ZEhKcGJtY25LVnh1SUNCOVhHNWNiaUFnYVdZZ0tIUjVjR1Z2WmlCQmNuSmhlVUoxWm1abGNpQWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNCcFppQW9iMkpxWldOMExtSjFabVpsY2lCcGJuTjBZVzVqWlc5bUlFRnljbUY1UW5WbVptVnlLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabkp2YlZSNWNHVmtRWEp5WVhrb2RHaGhkQ3dnYjJKcVpXTjBLVnh1SUNBZ0lIMWNiaUFnSUNCcFppQW9iMkpxWldOMElHbHVjM1JoYm1ObGIyWWdRWEp5WVhsQ2RXWm1aWElwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtY205dFFYSnlZWGxDZFdabVpYSW9kR2hoZEN3Z2IySnFaV04wS1Z4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHZZbXBsWTNRdWJHVnVaM1JvS1NCeVpYUjFjbTRnWm5KdmJVRnljbUY1VEdsclpTaDBhR0YwTENCdlltcGxZM1FwWEc1Y2JpQWdjbVYwZFhKdUlHWnliMjFLYzI5dVQySnFaV04wS0hSb1lYUXNJRzlpYW1WamRDbGNibjFjYmx4dVpuVnVZM1JwYjI0Z1puSnZiVUoxWm1abGNpQW9kR2hoZEN3Z1luVm1abVZ5S1NCN1hHNGdJSFpoY2lCc1pXNW5kR2dnUFNCamFHVmphMlZrS0dKMVptWmxjaTVzWlc1bmRHZ3BJSHdnTUZ4dUlDQjBhR0YwSUQwZ1lXeHNiMk5oZEdVb2RHaGhkQ3dnYkdWdVozUm9LVnh1SUNCaWRXWm1aWEl1WTI5d2VTaDBhR0YwTENBd0xDQXdMQ0JzWlc1bmRHZ3BYRzRnSUhKbGRIVnliaUIwYUdGMFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdaeWIyMUJjbkpoZVNBb2RHaGhkQ3dnWVhKeVlYa3BJSHRjYmlBZ2RtRnlJR3hsYm1kMGFDQTlJR05vWldOclpXUW9ZWEp5WVhrdWJHVnVaM1JvS1NCOElEQmNiaUFnZEdoaGRDQTlJR0ZzYkc5allYUmxLSFJvWVhRc0lHeGxibWQwYUNsY2JpQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJR2tnS3owZ01Ta2dlMXh1SUNBZ0lIUm9ZWFJiYVYwZ1BTQmhjbkpoZVZ0cFhTQW1JREkxTlZ4dUlDQjlYRzRnSUhKbGRIVnliaUIwYUdGMFhHNTlYRzVjYmk4dklFUjFjR3hwWTJGMFpTQnZaaUJtY205dFFYSnlZWGtvS1NCMGJ5QnJaV1Z3SUdaeWIyMUJjbkpoZVNncElHMXZibTl0YjNKd2FHbGpMbHh1Wm5WdVkzUnBiMjRnWm5KdmJWUjVjR1ZrUVhKeVlYa2dLSFJvWVhRc0lHRnljbUY1S1NCN1hHNGdJSFpoY2lCc1pXNW5kR2dnUFNCamFHVmphMlZrS0dGeWNtRjVMbXhsYm1kMGFDa2dmQ0F3WEc0Z0lIUm9ZWFFnUFNCaGJHeHZZMkYwWlNoMGFHRjBMQ0JzWlc1bmRHZ3BYRzRnSUM4dklGUnlkVzVqWVhScGJtY2dkR2hsSUdWc1pXMWxiblJ6SUdseklIQnliMkpoWW14NUlHNXZkQ0IzYUdGMElIQmxiM0JzWlNCbGVIQmxZM1FnWm5KdmJTQjBlWEJsWkZ4dUlDQXZMeUJoY25KaGVYTWdkMmwwYUNCQ1dWUkZVMTlRUlZKZlJVeEZUVVZPVkNBK0lERWdZblYwSUdsMEozTWdZMjl0Y0dGMGFXSnNaU0IzYVhSb0lIUm9aU0JpWldoaGRtbHZjbHh1SUNBdkx5QnZaaUIwYUdVZ2IyeGtJRUoxWm1abGNpQmpiMjV6ZEhKMVkzUnZjaTVjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnNaVzVuZEdnN0lHa2dLejBnTVNrZ2UxeHVJQ0FnSUhSb1lYUmJhVjBnUFNCaGNuSmhlVnRwWFNBbUlESTFOVnh1SUNCOVhHNGdJSEpsZEhWeWJpQjBhR0YwWEc1OVhHNWNibVoxYm1OMGFXOXVJR1p5YjIxQmNuSmhlVUoxWm1abGNpQW9kR2hoZEN3Z1lYSnlZWGtwSUh0Y2JpQWdhV1lnS0VKMVptWmxjaTVVV1ZCRlJGOUJVbEpCV1Y5VFZWQlFUMUpVS1NCN1hHNGdJQ0FnTHk4Z1VtVjBkWEp1SUdGdUlHRjFaMjFsYm5SbFpDQmdWV2x1ZERoQmNuSmhlV0FnYVc1emRHRnVZMlVzSUdadmNpQmlaWE4wSUhCbGNtWnZjbTFoYm1ObFhHNGdJQ0FnWVhKeVlYa3VZbmwwWlV4bGJtZDBhRnh1SUNBZ0lIUm9ZWFFnUFNCQ2RXWm1aWEl1WDJGMVoyMWxiblFvYm1WM0lGVnBiblE0UVhKeVlYa29ZWEp5WVhrcEtWeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDOHZJRVpoYkd4aVlXTnJPaUJTWlhSMWNtNGdZVzRnYjJKcVpXTjBJR2x1YzNSaGJtTmxJRzltSUhSb1pTQkNkV1ptWlhJZ1kyeGhjM05jYmlBZ0lDQjBhR0YwSUQwZ1puSnZiVlI1Y0dWa1FYSnlZWGtvZEdoaGRDd2dibVYzSUZWcGJuUTRRWEp5WVhrb1lYSnlZWGtwS1Z4dUlDQjlYRzRnSUhKbGRIVnliaUIwYUdGMFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdaeWIyMUJjbkpoZVV4cGEyVWdLSFJvWVhRc0lHRnljbUY1S1NCN1hHNGdJSFpoY2lCc1pXNW5kR2dnUFNCamFHVmphMlZrS0dGeWNtRjVMbXhsYm1kMGFDa2dmQ0F3WEc0Z0lIUm9ZWFFnUFNCaGJHeHZZMkYwWlNoMGFHRjBMQ0JzWlc1bmRHZ3BYRzRnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z2JHVnVaM1JvT3lCcElDczlJREVwSUh0Y2JpQWdJQ0IwYUdGMFcybGRJRDBnWVhKeVlYbGJhVjBnSmlBeU5UVmNiaUFnZlZ4dUlDQnlaWFIxY200Z2RHaGhkRnh1ZlZ4dVhHNHZMeUJFWlhObGNtbGhiR2w2WlNCN0lIUjVjR1U2SUNkQ2RXWm1aWEluTENCa1lYUmhPaUJiTVN3eUxETXNMaTR1WFNCOUlHbHVkRzhnWVNCQ2RXWm1aWElnYjJKcVpXTjBMbHh1THk4Z1VtVjBkWEp1Y3lCaElIcGxjbTh0YkdWdVozUm9JR0oxWm1abGNpQm1iM0lnYVc1d2RYUnpJSFJvWVhRZ1pHOXVKM1FnWTI5dVptOXliU0IwYnlCMGFHVWdjM0JsWXk1Y2JtWjFibU4wYVc5dUlHWnliMjFLYzI5dVQySnFaV04wSUNoMGFHRjBMQ0J2WW1wbFkzUXBJSHRjYmlBZ2RtRnlJR0Z5Y21GNVhHNGdJSFpoY2lCc1pXNW5kR2dnUFNBd1hHNWNiaUFnYVdZZ0tHOWlhbVZqZEM1MGVYQmxJRDA5UFNBblFuVm1abVZ5SnlBbUppQnBjMEZ5Y21GNUtHOWlhbVZqZEM1a1lYUmhLU2tnZTF4dUlDQWdJR0Z5Y21GNUlEMGdiMkpxWldOMExtUmhkR0ZjYmlBZ0lDQnNaVzVuZEdnZ1BTQmphR1ZqYTJWa0tHRnljbUY1TG14bGJtZDBhQ2tnZkNBd1hHNGdJSDFjYmlBZ2RHaGhkQ0E5SUdGc2JHOWpZWFJsS0hSb1lYUXNJR3hsYm1kMGFDbGNibHh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ2FTQXJQU0F4S1NCN1hHNGdJQ0FnZEdoaGRGdHBYU0E5SUdGeWNtRjVXMmxkSUNZZ01qVTFYRzRnSUgxY2JpQWdjbVYwZFhKdUlIUm9ZWFJjYm4xY2JseHVablZ1WTNScGIyNGdZV3hzYjJOaGRHVWdLSFJvWVhRc0lHeGxibWQwYUNrZ2UxeHVJQ0JwWmlBb1FuVm1abVZ5TGxSWlVFVkVYMEZTVWtGWlgxTlZVRkJQVWxRcElIdGNiaUFnSUNBdkx5QlNaWFIxY200Z1lXNGdZWFZuYldWdWRHVmtJR0JWYVc1ME9FRnljbUY1WUNCcGJuTjBZVzVqWlN3Z1ptOXlJR0psYzNRZ2NHVnlabTl5YldGdVkyVmNiaUFnSUNCMGFHRjBJRDBnUW5WbVptVnlMbDloZFdkdFpXNTBLRzVsZHlCVmFXNTBPRUZ5Y21GNUtHeGxibWQwYUNrcFhHNGdJSDBnWld4elpTQjdYRzRnSUNBZ0x5OGdSbUZzYkdKaFkyczZJRkpsZEhWeWJpQmhiaUJ2WW1wbFkzUWdhVzV6ZEdGdVkyVWdiMllnZEdobElFSjFabVpsY2lCamJHRnpjMXh1SUNBZ0lIUm9ZWFF1YkdWdVozUm9JRDBnYkdWdVozUm9YRzRnSUNBZ2RHaGhkQzVmYVhOQ2RXWm1aWElnUFNCMGNuVmxYRzRnSUgxY2JseHVJQ0IyWVhJZ1puSnZiVkJ2YjJ3Z1BTQnNaVzVuZEdnZ0lUMDlJREFnSmlZZ2JHVnVaM1JvSUR3OUlFSjFabVpsY2k1d2IyOXNVMmw2WlNBK1BqNGdNVnh1SUNCcFppQW9abkp2YlZCdmIyd3BJSFJvWVhRdWNHRnlaVzUwSUQwZ2NtOXZkRkJoY21WdWRGeHVYRzRnSUhKbGRIVnliaUIwYUdGMFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOb1pXTnJaV1FnS0d4bGJtZDBhQ2tnZTF4dUlDQXZMeUJPYjNSbE9pQmpZVzV1YjNRZ2RYTmxJR0JzWlc1bmRHZ2dQQ0JyVFdGNFRHVnVaM1JvWUNCb1pYSmxJR0psWTJGMWMyVWdkR2hoZENCbVlXbHNjeUIzYUdWdVhHNGdJQzh2SUd4bGJtZDBhQ0JwY3lCT1lVNGdLSGRvYVdOb0lHbHpJRzkwYUdWeWQybHpaU0JqYjJWeVkyVmtJSFJ2SUhwbGNtOHVLVnh1SUNCcFppQW9iR1Z1WjNSb0lENDlJR3ROWVhoTVpXNW5kR2dvS1NrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtDZEJkSFJsYlhCMElIUnZJR0ZzYkc5allYUmxJRUoxWm1abGNpQnNZWEpuWlhJZ2RHaGhiaUJ0WVhocGJYVnRJQ2NnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNkemFYcGxPaUF3ZUNjZ0t5QnJUV0Y0VEdWdVozUm9LQ2t1ZEc5VGRISnBibWNvTVRZcElDc2dKeUJpZVhSbGN5Y3BYRzRnSUgxY2JpQWdjbVYwZFhKdUlHeGxibWQwYUNCOElEQmNibjFjYmx4dVpuVnVZM1JwYjI0Z1UyeHZkMEoxWm1abGNpQW9jM1ZpYW1WamRDd2daVzVqYjJScGJtY3BJSHRjYmlBZ2FXWWdLQ0VvZEdocGN5QnBibk4wWVc1alpXOW1JRk5zYjNkQ2RXWm1aWElwS1NCeVpYUjFjbTRnYm1WM0lGTnNiM2RDZFdabVpYSW9jM1ZpYW1WamRDd2daVzVqYjJScGJtY3BYRzVjYmlBZ2RtRnlJR0oxWmlBOUlHNWxkeUJDZFdabVpYSW9jM1ZpYW1WamRDd2daVzVqYjJScGJtY3BYRzRnSUdSbGJHVjBaU0JpZFdZdWNHRnlaVzUwWEc0Z0lISmxkSFZ5YmlCaWRXWmNibjFjYmx4dVFuVm1abVZ5TG1selFuVm1abVZ5SUQwZ1puVnVZM1JwYjI0Z2FYTkNkV1ptWlhJZ0tHSXBJSHRjYmlBZ2NtVjBkWEp1SUNFaEtHSWdJVDBnYm5Wc2JDQW1KaUJpTGw5cGMwSjFabVpsY2lsY2JuMWNibHh1UW5WbVptVnlMbU52YlhCaGNtVWdQU0JtZFc1amRHbHZiaUJqYjIxd1lYSmxJQ2hoTENCaUtTQjdYRzRnSUdsbUlDZ2hRblZtWm1WeUxtbHpRblZtWm1WeUtHRXBJSHg4SUNGQ2RXWm1aWEl1YVhOQ2RXWm1aWElvWWlrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZEJjbWQxYldWdWRITWdiWFZ6ZENCaVpTQkNkV1ptWlhKekp5bGNiaUFnZlZ4dVhHNGdJR2xtSUNoaElEMDlQU0JpS1NCeVpYUjFjbTRnTUZ4dVhHNGdJSFpoY2lCNElEMGdZUzVzWlc1bmRHaGNiaUFnZG1GeUlIa2dQU0JpTG14bGJtZDBhRnh1WEc0Z0lIWmhjaUJwSUQwZ01GeHVJQ0IyWVhJZ2JHVnVJRDBnVFdGMGFDNXRhVzRvZUN3Z2VTbGNiaUFnZDJocGJHVWdLR2tnUENCc1pXNHBJSHRjYmlBZ0lDQnBaaUFvWVZ0cFhTQWhQVDBnWWx0cFhTa2dZbkpsWVd0Y2JseHVJQ0FnSUNzcmFWeHVJQ0I5WEc1Y2JpQWdhV1lnS0drZ0lUMDlJR3hsYmlrZ2UxeHVJQ0FnSUhnZ1BTQmhXMmxkWEc0Z0lDQWdlU0E5SUdKYmFWMWNiaUFnZlZ4dVhHNGdJR2xtSUNoNElEd2dlU2tnY21WMGRYSnVJQzB4WEc0Z0lHbG1JQ2g1SUR3Z2VDa2djbVYwZFhKdUlERmNiaUFnY21WMGRYSnVJREJjYm4xY2JseHVRblZtWm1WeUxtbHpSVzVqYjJScGJtY2dQU0JtZFc1amRHbHZiaUJwYzBWdVkyOWthVzVuSUNobGJtTnZaR2x1WnlrZ2UxeHVJQ0J6ZDJsMFkyZ2dLRk4wY21sdVp5aGxibU52WkdsdVp5a3VkRzlNYjNkbGNrTmhjMlVvS1NrZ2UxeHVJQ0FnSUdOaGMyVWdKMmhsZUNjNlhHNGdJQ0FnWTJGelpTQW5kWFJtT0NjNlhHNGdJQ0FnWTJGelpTQW5kWFJtTFRnbk9seHVJQ0FnSUdOaGMyVWdKMkZ6WTJscEp6cGNiaUFnSUNCallYTmxJQ2RpYVc1aGNua25PbHh1SUNBZ0lHTmhjMlVnSjJKaGMyVTJOQ2M2WEc0Z0lDQWdZMkZ6WlNBbmNtRjNKenBjYmlBZ0lDQmpZWE5sSUNkMVkzTXlKenBjYmlBZ0lDQmpZWE5sSUNkMVkzTXRNaWM2WEc0Z0lDQWdZMkZ6WlNBbmRYUm1NVFpzWlNjNlhHNGdJQ0FnWTJGelpTQW5kWFJtTFRFMmJHVW5PbHh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1ZjYmlBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxYRzRnSUgxY2JuMWNibHh1UW5WbVptVnlMbU52Ym1OaGRDQTlJR1oxYm1OMGFXOXVJR052Ym1OaGRDQW9iR2x6ZEN3Z2JHVnVaM1JvS1NCN1hHNGdJR2xtSUNnaGFYTkJjbkpoZVNoc2FYTjBLU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnbmJHbHpkQ0JoY21kMWJXVnVkQ0J0ZFhOMElHSmxJR0Z1SUVGeWNtRjVJRzltSUVKMVptWmxjbk11SnlsY2JseHVJQ0JwWmlBb2JHbHpkQzVzWlc1bmRHZ2dQVDA5SURBcElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lFSjFabVpsY2lnd0tWeHVJQ0I5WEc1Y2JpQWdkbUZ5SUdsY2JpQWdhV1lnS0d4bGJtZDBhQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2JHVnVaM1JvSUQwZ01GeHVJQ0FnSUdadmNpQW9hU0E5SURBN0lHa2dQQ0JzYVhOMExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JzWlc1bmRHZ2dLejBnYkdsemRGdHBYUzVzWlc1bmRHaGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQjJZWElnWW5WbUlEMGdibVYzSUVKMVptWmxjaWhzWlc1bmRHZ3BYRzRnSUhaaGNpQndiM01nUFNBd1hHNGdJR1p2Y2lBb2FTQTlJREE3SUdrZ1BDQnNhWE4wTG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ2RtRnlJR2wwWlcwZ1BTQnNhWE4wVzJsZFhHNGdJQ0FnYVhSbGJTNWpiM0I1S0dKMVppd2djRzl6S1Z4dUlDQWdJSEJ2Y3lBclBTQnBkR1Z0TG14bGJtZDBhRnh1SUNCOVhHNGdJSEpsZEhWeWJpQmlkV1pjYm4xY2JseHVablZ1WTNScGIyNGdZbmwwWlV4bGJtZDBhQ0FvYzNSeWFXNW5MQ0JsYm1OdlpHbHVaeWtnZTF4dUlDQnBaaUFvZEhsd1pXOW1JSE4wY21sdVp5QWhQVDBnSjNOMGNtbHVaeWNwSUhOMGNtbHVaeUE5SUNjbklDc2djM1J5YVc1blhHNWNiaUFnZG1GeUlHeGxiaUE5SUhOMGNtbHVaeTVzWlc1bmRHaGNiaUFnYVdZZ0tHeGxiaUE5UFQwZ01Da2djbVYwZFhKdUlEQmNibHh1SUNBdkx5QlZjMlVnWVNCbWIzSWdiRzl2Y0NCMGJ5QmhkbTlwWkNCeVpXTjFjbk5wYjI1Y2JpQWdkbUZ5SUd4dmQyVnlaV1JEWVhObElEMGdabUZzYzJWY2JpQWdabTl5SUNnN095a2dlMXh1SUNBZ0lITjNhWFJqYUNBb1pXNWpiMlJwYm1jcElIdGNiaUFnSUNBZ0lHTmhjMlVnSjJGelkybHBKenBjYmlBZ0lDQWdJR05oYzJVZ0oySnBibUZ5ZVNjNlhHNGdJQ0FnSUNBdkx5QkVaWEJ5WldOaGRHVmtYRzRnSUNBZ0lDQmpZWE5sSUNkeVlYY25PbHh1SUNBZ0lDQWdZMkZ6WlNBbmNtRjNjeWM2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJzWlc1Y2JpQWdJQ0FnSUdOaGMyVWdKM1YwWmpnbk9seHVJQ0FnSUNBZ1kyRnpaU0FuZFhSbUxUZ25PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkWFJtT0ZSdlFubDBaWE1vYzNSeWFXNW5LUzVzWlc1bmRHaGNiaUFnSUNBZ0lHTmhjMlVnSjNWamN6SW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRXTnpMVEluT2x4dUlDQWdJQ0FnWTJGelpTQW5kWFJtTVRac1pTYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMWRHWXRNVFpzWlNjNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCc1pXNGdLaUF5WEc0Z0lDQWdJQ0JqWVhObElDZG9aWGduT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYkdWdUlENCtQaUF4WEc0Z0lDQWdJQ0JqWVhObElDZGlZWE5sTmpRbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ltRnpaVFkwVkc5Q2VYUmxjeWh6ZEhKcGJtY3BMbXhsYm1kMGFGeHVJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ2FXWWdLR3h2ZDJWeVpXUkRZWE5sS1NCeVpYUjFjbTRnZFhSbU9GUnZRbmwwWlhNb2MzUnlhVzVuS1M1c1pXNW5kR2dnTHk4Z1lYTnpkVzFsSUhWMFpqaGNiaUFnSUNBZ0lDQWdaVzVqYjJScGJtY2dQU0FvSnljZ0t5QmxibU52WkdsdVp5a3VkRzlNYjNkbGNrTmhjMlVvS1Z4dUlDQWdJQ0FnSUNCc2IzZGxjbVZrUTJGelpTQTlJSFJ5ZFdWY2JpQWdJQ0I5WEc0Z0lIMWNibjFjYmtKMVptWmxjaTVpZVhSbFRHVnVaM1JvSUQwZ1lubDBaVXhsYm1kMGFGeHVYRzR2THlCd2NtVXRjMlYwSUdadmNpQjJZV3gxWlhNZ2RHaGhkQ0J0WVhrZ1pYaHBjM1FnYVc0Z2RHaGxJR1oxZEhWeVpWeHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXNaVzVuZEdnZ1BTQjFibVJsWm1sdVpXUmNia0oxWm1abGNpNXdjbTkwYjNSNWNHVXVjR0Z5Wlc1MElEMGdkVzVrWldacGJtVmtYRzVjYm1aMWJtTjBhVzl1SUhOc2IzZFViMU4wY21sdVp5QW9aVzVqYjJScGJtY3NJSE4wWVhKMExDQmxibVFwSUh0Y2JpQWdkbUZ5SUd4dmQyVnlaV1JEWVhObElEMGdabUZzYzJWY2JseHVJQ0J6ZEdGeWRDQTlJSE4wWVhKMElId2dNRnh1SUNCbGJtUWdQU0JsYm1RZ1BUMDlJSFZ1WkdWbWFXNWxaQ0I4ZkNCbGJtUWdQVDA5SUVsdVptbHVhWFI1SUQ4Z2RHaHBjeTVzWlc1bmRHZ2dPaUJsYm1RZ2ZDQXdYRzVjYmlBZ2FXWWdLQ0ZsYm1OdlpHbHVaeWtnWlc1amIyUnBibWNnUFNBbmRYUm1PQ2RjYmlBZ2FXWWdLSE4wWVhKMElEd2dNQ2tnYzNSaGNuUWdQU0F3WEc0Z0lHbG1JQ2hsYm1RZ1BpQjBhR2x6TG14bGJtZDBhQ2tnWlc1a0lEMGdkR2hwY3k1c1pXNW5kR2hjYmlBZ2FXWWdLR1Z1WkNBOFBTQnpkR0Z5ZENrZ2NtVjBkWEp1SUNjblhHNWNiaUFnZDJocGJHVWdLSFJ5ZFdVcElIdGNiaUFnSUNCemQybDBZMmdnS0dWdVkyOWthVzVuS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2RvWlhnbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FHVjRVMnhwWTJVb2RHaHBjeXdnYzNSaGNuUXNJR1Z1WkNsY2JseHVJQ0FnSUNBZ1kyRnpaU0FuZFhSbU9DYzZYRzRnSUNBZ0lDQmpZWE5sSUNkMWRHWXRPQ2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIxZEdZNFUyeHBZMlVvZEdocGN5d2djM1JoY25Rc0lHVnVaQ2xjYmx4dUlDQWdJQ0FnWTJGelpTQW5ZWE5qYVdrbk9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lYTmphV2xUYkdsalpTaDBhR2x6TENCemRHRnlkQ3dnWlc1a0tWeHVYRzRnSUNBZ0lDQmpZWE5sSUNkaWFXNWhjbmtuT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWW1sdVlYSjVVMnhwWTJVb2RHaHBjeXdnYzNSaGNuUXNJR1Z1WkNsY2JseHVJQ0FnSUNBZ1kyRnpaU0FuWW1GelpUWTBKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0poYzJVMk5GTnNhV05sS0hSb2FYTXNJSE4wWVhKMExDQmxibVFwWEc1Y2JpQWdJQ0FnSUdOaGMyVWdKM1ZqY3pJbk9seHVJQ0FnSUNBZ1kyRnpaU0FuZFdOekxUSW5PbHh1SUNBZ0lDQWdZMkZ6WlNBbmRYUm1NVFpzWlNjNlhHNGdJQ0FnSUNCallYTmxJQ2QxZEdZdE1UWnNaU2M2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIxZEdZeE5teGxVMnhwWTJVb2RHaHBjeXdnYzNSaGNuUXNJR1Z1WkNsY2JseHVJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ2FXWWdLR3h2ZDJWeVpXUkRZWE5sS1NCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtDZFZibXR1YjNkdUlHVnVZMjlrYVc1bk9pQW5JQ3NnWlc1amIyUnBibWNwWEc0Z0lDQWdJQ0FnSUdWdVkyOWthVzVuSUQwZ0tHVnVZMjlrYVc1bklDc2dKeWNwTG5SdlRHOTNaWEpEWVhObEtDbGNiaUFnSUNBZ0lDQWdiRzkzWlhKbFpFTmhjMlVnUFNCMGNuVmxYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNWNia0oxWm1abGNpNXdjbTkwYjNSNWNHVXVkRzlUZEhKcGJtY2dQU0JtZFc1amRHbHZiaUIwYjFOMGNtbHVaeUFvS1NCN1hHNGdJSFpoY2lCc1pXNW5kR2dnUFNCMGFHbHpMbXhsYm1kMGFDQjhJREJjYmlBZ2FXWWdLR3hsYm1kMGFDQTlQVDBnTUNrZ2NtVjBkWEp1SUNjblhHNGdJR2xtSUNoaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUQwOVBTQXdLU0J5WlhSMWNtNGdkWFJtT0ZOc2FXTmxLSFJvYVhNc0lEQXNJR3hsYm1kMGFDbGNiaUFnY21WMGRYSnVJSE5zYjNkVWIxTjBjbWx1Wnk1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdVpYRjFZV3h6SUQwZ1puVnVZM1JwYjI0Z1pYRjFZV3h6SUNoaUtTQjdYRzRnSUdsbUlDZ2hRblZtWm1WeUxtbHpRblZtWm1WeUtHSXBLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkQmNtZDFiV1Z1ZENCdGRYTjBJR0psSUdFZ1FuVm1abVZ5SnlsY2JpQWdhV1lnS0hSb2FYTWdQVDA5SUdJcElISmxkSFZ5YmlCMGNuVmxYRzRnSUhKbGRIVnliaUJDZFdabVpYSXVZMjl0Y0dGeVpTaDBhR2x6TENCaUtTQTlQVDBnTUZ4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbWx1YzNCbFkzUWdQU0JtZFc1amRHbHZiaUJwYm5Od1pXTjBJQ2dwSUh0Y2JpQWdkbUZ5SUhOMGNpQTlJQ2NuWEc0Z0lIWmhjaUJ0WVhnZ1BTQmxlSEJ2Y25SekxrbE9VMUJGUTFSZlRVRllYMEpaVkVWVFhHNGdJR2xtSUNoMGFHbHpMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0J6ZEhJZ1BTQjBhR2x6TG5SdlUzUnlhVzVuS0Nkb1pYZ25MQ0F3TENCdFlYZ3BMbTFoZEdOb0tDOHVleko5TDJjcExtcHZhVzRvSnlBbktWeHVJQ0FnSUdsbUlDaDBhR2x6TG14bGJtZDBhQ0ErSUcxaGVDa2djM1J5SUNzOUlDY2dMaTR1SUNkY2JpQWdmVnh1SUNCeVpYUjFjbTRnSnp4Q2RXWm1aWElnSnlBcklITjBjaUFySUNjK0oxeHVmVnh1WEc1Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG1OdmJYQmhjbVVnUFNCbWRXNWpkR2x2YmlCamIyMXdZWEpsSUNoaUtTQjdYRzRnSUdsbUlDZ2hRblZtWm1WeUxtbHpRblZtWm1WeUtHSXBLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkQmNtZDFiV1Z1ZENCdGRYTjBJR0psSUdFZ1FuVm1abVZ5SnlsY2JpQWdhV1lnS0hSb2FYTWdQVDA5SUdJcElISmxkSFZ5YmlBd1hHNGdJSEpsZEhWeWJpQkNkV1ptWlhJdVkyOXRjR0Z5WlNoMGFHbHpMQ0JpS1Z4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbWx1WkdWNFQyWWdQU0JtZFc1amRHbHZiaUJwYm1SbGVFOW1JQ2gyWVd3c0lHSjVkR1ZQWm1aelpYUXBJSHRjYmlBZ2FXWWdLR0o1ZEdWUFptWnpaWFFnUGlBd2VEZG1abVptWm1abUtTQmllWFJsVDJabWMyVjBJRDBnTUhnM1ptWm1abVptWmx4dUlDQmxiSE5sSUdsbUlDaGllWFJsVDJabWMyVjBJRHdnTFRCNE9EQXdNREF3TURBcElHSjVkR1ZQWm1aelpYUWdQU0F0TUhnNE1EQXdNREF3TUZ4dUlDQmllWFJsVDJabWMyVjBJRDQrUFNBd1hHNWNiaUFnYVdZZ0tIUm9hWE11YkdWdVozUm9JRDA5UFNBd0tTQnlaWFIxY200Z0xURmNiaUFnYVdZZ0tHSjVkR1ZQWm1aelpYUWdQajBnZEdocGN5NXNaVzVuZEdncElISmxkSFZ5YmlBdE1WeHVYRzRnSUM4dklFNWxaMkYwYVhabElHOW1abk5sZEhNZ2MzUmhjblFnWm5KdmJTQjBhR1VnWlc1a0lHOW1JSFJvWlNCaWRXWm1aWEpjYmlBZ2FXWWdLR0o1ZEdWUFptWnpaWFFnUENBd0tTQmllWFJsVDJabWMyVjBJRDBnVFdGMGFDNXRZWGdvZEdocGN5NXNaVzVuZEdnZ0t5QmllWFJsVDJabWMyVjBMQ0F3S1Z4dVhHNGdJR2xtSUNoMGVYQmxiMllnZG1Gc0lEMDlQU0FuYzNSeWFXNW5KeWtnZTF4dUlDQWdJR2xtSUNoMllXd3ViR1Z1WjNSb0lEMDlQU0F3S1NCeVpYUjFjbTRnTFRFZ0x5OGdjM0JsWTJsaGJDQmpZWE5sT2lCc2IyOXJhVzVuSUdadmNpQmxiWEIwZVNCemRISnBibWNnWVd4M1lYbHpJR1poYVd4elhHNGdJQ0FnY21WMGRYSnVJRk4wY21sdVp5NXdjbTkwYjNSNWNHVXVhVzVrWlhoUFppNWpZV3hzS0hSb2FYTXNJSFpoYkN3Z1lubDBaVTltWm5ObGRDbGNiaUFnZlZ4dUlDQnBaaUFvUW5WbVptVnlMbWx6UW5WbVptVnlLSFpoYkNrcElIdGNiaUFnSUNCeVpYUjFjbTRnWVhKeVlYbEpibVJsZUU5bUtIUm9hWE1zSUhaaGJDd2dZbmwwWlU5bVpuTmxkQ2xjYmlBZ2ZWeHVJQ0JwWmlBb2RIbHdaVzltSUhaaGJDQTlQVDBnSjI1MWJXSmxjaWNwSUh0Y2JpQWdJQ0JwWmlBb1FuVm1abVZ5TGxSWlVFVkVYMEZTVWtGWlgxTlZVRkJQVWxRZ0ppWWdWV2x1ZERoQmNuSmhlUzV3Y205MGIzUjVjR1V1YVc1a1pYaFBaaUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlGVnBiblE0UVhKeVlYa3VjSEp2ZEc5MGVYQmxMbWx1WkdWNFQyWXVZMkZzYkNoMGFHbHpMQ0IyWVd3c0lHSjVkR1ZQWm1aelpYUXBYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJoY25KaGVVbHVaR1Y0VDJZb2RHaHBjeXdnV3lCMllXd2dYU3dnWW5sMFpVOW1abk5sZENsY2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlHRnljbUY1U1c1a1pYaFBaaUFvWVhKeUxDQjJZV3dzSUdKNWRHVlBabVp6WlhRcElIdGNiaUFnSUNCMllYSWdabTkxYm1SSmJtUmxlQ0E5SUMweFhHNGdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR0o1ZEdWUFptWnpaWFFnS3lCcElEd2dZWEp5TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvWVhKeVcySjVkR1ZQWm1aelpYUWdLeUJwWFNBOVBUMGdkbUZzVzJadmRXNWtTVzVrWlhnZ1BUMDlJQzB4SUQ4Z01DQTZJR2tnTFNCbWIzVnVaRWx1WkdWNFhTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptOTFibVJKYm1SbGVDQTlQVDBnTFRFcElHWnZkVzVrU1c1a1pYZ2dQU0JwWEc0Z0lDQWdJQ0FnSUdsbUlDaHBJQzBnWm05MWJtUkpibVJsZUNBcklERWdQVDA5SUhaaGJDNXNaVzVuZEdncElISmxkSFZ5YmlCaWVYUmxUMlptYzJWMElDc2dabTkxYm1SSmJtUmxlRnh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdabTkxYm1SSmJtUmxlQ0E5SUMweFhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQXRNVnh1SUNCOVhHNWNiaUFnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnbmRtRnNJRzExYzNRZ1ltVWdjM1J5YVc1bkxDQnVkVzFpWlhJZ2IzSWdRblZtWm1WeUp5bGNibjFjYmx4dUx5OGdZR2RsZEdBZ2FYTWdaR1Z3Y21WallYUmxaRnh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzVuWlhRZ1BTQm1kVzVqZEdsdmJpQm5aWFFnS0c5bVpuTmxkQ2tnZTF4dUlDQmpiMjV6YjJ4bExteHZaeWduTG1kbGRDZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlFRmpZMlZ6Y3lCMWMybHVaeUJoY25KaGVTQnBibVJsZUdWeklHbHVjM1JsWVdRdUp5bGNiaUFnY21WMGRYSnVJSFJvYVhNdWNtVmhaRlZKYm5RNEtHOW1abk5sZENsY2JuMWNibHh1THk4Z1lITmxkR0FnYVhNZ1pHVndjbVZqWVhSbFpGeHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXpaWFFnUFNCbWRXNWpkR2x2YmlCelpYUWdLSFlzSUc5bVpuTmxkQ2tnZTF4dUlDQmpiMjV6YjJ4bExteHZaeWduTG5ObGRDZ3BJR2x6SUdSbGNISmxZMkYwWldRdUlFRmpZMlZ6Y3lCMWMybHVaeUJoY25KaGVTQnBibVJsZUdWeklHbHVjM1JsWVdRdUp5bGNiaUFnY21WMGRYSnVJSFJvYVhNdWQzSnBkR1ZWU1c1ME9DaDJMQ0J2Wm1aelpYUXBYRzU5WEc1Y2JtWjFibU4wYVc5dUlHaGxlRmR5YVhSbElDaGlkV1lzSUhOMGNtbHVaeXdnYjJabWMyVjBMQ0JzWlc1bmRHZ3BJSHRjYmlBZ2IyWm1jMlYwSUQwZ1RuVnRZbVZ5S0c5bVpuTmxkQ2tnZkh3Z01GeHVJQ0IyWVhJZ2NtVnRZV2x1YVc1bklEMGdZblZtTG14bGJtZDBhQ0F0SUc5bVpuTmxkRnh1SUNCcFppQW9JV3hsYm1kMGFDa2dlMXh1SUNBZ0lHeGxibWQwYUNBOUlISmxiV0ZwYm1sdVoxeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lHeGxibWQwYUNBOUlFNTFiV0psY2loc1pXNW5kR2dwWEc0Z0lDQWdhV1lnS0d4bGJtZDBhQ0ErSUhKbGJXRnBibWx1WnlrZ2UxeHVJQ0FnSUNBZ2JHVnVaM1JvSUQwZ2NtVnRZV2x1YVc1blhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5OGdiWFZ6ZENCaVpTQmhiaUJsZG1WdUlHNTFiV0psY2lCdlppQmthV2RwZEhOY2JpQWdkbUZ5SUhOMGNreGxiaUE5SUhOMGNtbHVaeTVzWlc1bmRHaGNiaUFnYVdZZ0tITjBja3hsYmlBbElESWdJVDA5SURBcElIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblNXNTJZV3hwWkNCb1pYZ2djM1J5YVc1bkp5bGNibHh1SUNCcFppQW9iR1Z1WjNSb0lENGdjM1J5VEdWdUlDOGdNaWtnZTF4dUlDQWdJR3hsYm1kMGFDQTlJSE4wY2t4bGJpQXZJREpjYmlBZ2ZWeHVJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ2RtRnlJSEJoY25ObFpDQTlJSEJoY25ObFNXNTBLSE4wY21sdVp5NXpkV0p6ZEhJb2FTQXFJRElzSURJcExDQXhOaWxjYmlBZ0lDQnBaaUFvYVhOT1lVNG9jR0Z5YzJWa0tTa2dkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEpiblpoYkdsa0lHaGxlQ0J6ZEhKcGJtY25LVnh1SUNBZ0lHSjFabHR2Wm1aelpYUWdLeUJwWFNBOUlIQmhjbk5sWkZ4dUlDQjlYRzRnSUhKbGRIVnliaUJwWEc1OVhHNWNibVoxYm1OMGFXOXVJSFYwWmpoWGNtbDBaU0FvWW5WbUxDQnpkSEpwYm1jc0lHOW1abk5sZEN3Z2JHVnVaM1JvS1NCN1hHNGdJSEpsZEhWeWJpQmliR2wwUW5WbVptVnlLSFYwWmpoVWIwSjVkR1Z6S0hOMGNtbHVaeXdnWW5WbUxteGxibWQwYUNBdElHOW1abk5sZENrc0lHSjFaaXdnYjJabWMyVjBMQ0JzWlc1bmRHZ3BYRzU5WEc1Y2JtWjFibU4wYVc5dUlHRnpZMmxwVjNKcGRHVWdLR0oxWml3Z2MzUnlhVzVuTENCdlptWnpaWFFzSUd4bGJtZDBhQ2tnZTF4dUlDQnlaWFIxY200Z1lteHBkRUoxWm1abGNpaGhjMk5wYVZSdlFubDBaWE1vYzNSeWFXNW5LU3dnWW5WbUxDQnZabVp6WlhRc0lHeGxibWQwYUNsY2JuMWNibHh1Wm5WdVkzUnBiMjRnWW1sdVlYSjVWM0pwZEdVZ0tHSjFaaXdnYzNSeWFXNW5MQ0J2Wm1aelpYUXNJR3hsYm1kMGFDa2dlMXh1SUNCeVpYUjFjbTRnWVhOamFXbFhjbWwwWlNoaWRXWXNJSE4wY21sdVp5d2diMlptYzJWMExDQnNaVzVuZEdncFhHNTlYRzVjYm1aMWJtTjBhVzl1SUdKaGMyVTJORmR5YVhSbElDaGlkV1lzSUhOMGNtbHVaeXdnYjJabWMyVjBMQ0JzWlc1bmRHZ3BJSHRjYmlBZ2NtVjBkWEp1SUdKc2FYUkNkV1ptWlhJb1ltRnpaVFkwVkc5Q2VYUmxjeWh6ZEhKcGJtY3BMQ0JpZFdZc0lHOW1abk5sZEN3Z2JHVnVaM1JvS1Z4dWZWeHVYRzVtZFc1amRHbHZiaUIxWTNNeVYzSnBkR1VnS0dKMVppd2djM1J5YVc1bkxDQnZabVp6WlhRc0lHeGxibWQwYUNrZ2UxeHVJQ0J5WlhSMWNtNGdZbXhwZEVKMVptWmxjaWgxZEdZeE5teGxWRzlDZVhSbGN5aHpkSEpwYm1jc0lHSjFaaTVzWlc1bmRHZ2dMU0J2Wm1aelpYUXBMQ0JpZFdZc0lHOW1abk5sZEN3Z2JHVnVaM1JvS1Z4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbElEMGdablZ1WTNScGIyNGdkM0pwZEdVZ0tITjBjbWx1Wnl3Z2IyWm1jMlYwTENCc1pXNW5kR2dzSUdWdVkyOWthVzVuS1NCN1hHNGdJQzh2SUVKMVptWmxjaU4zY21sMFpTaHpkSEpwYm1jcFhHNGdJR2xtSUNodlptWnpaWFFnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lHVnVZMjlrYVc1bklEMGdKM1YwWmpnblhHNGdJQ0FnYkdWdVozUm9JRDBnZEdocGN5NXNaVzVuZEdoY2JpQWdJQ0J2Wm1aelpYUWdQU0F3WEc0Z0lDOHZJRUoxWm1abGNpTjNjbWwwWlNoemRISnBibWNzSUdWdVkyOWthVzVuS1Z4dUlDQjlJR1ZzYzJVZ2FXWWdLR3hsYm1kMGFDQTlQVDBnZFc1a1pXWnBibVZrSUNZbUlIUjVjR1Z2WmlCdlptWnpaWFFnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ1pXNWpiMlJwYm1jZ1BTQnZabVp6WlhSY2JpQWdJQ0JzWlc1bmRHZ2dQU0IwYUdsekxteGxibWQwYUZ4dUlDQWdJRzltWm5ObGRDQTlJREJjYmlBZ0x5OGdRblZtWm1WeUkzZHlhWFJsS0hOMGNtbHVaeXdnYjJabWMyVjBXeXdnYkdWdVozUm9YVnNzSUdWdVkyOWthVzVuWFNsY2JpQWdmU0JsYkhObElHbG1JQ2hwYzBacGJtbDBaU2h2Wm1aelpYUXBLU0I3WEc0Z0lDQWdiMlptYzJWMElEMGdiMlptYzJWMElId2dNRnh1SUNBZ0lHbG1JQ2hwYzBacGJtbDBaU2hzWlc1bmRHZ3BLU0I3WEc0Z0lDQWdJQ0JzWlc1bmRHZ2dQU0JzWlc1bmRHZ2dmQ0F3WEc0Z0lDQWdJQ0JwWmlBb1pXNWpiMlJwYm1jZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnWlc1amIyUnBibWNnUFNBbmRYUm1PQ2RjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1pXNWpiMlJwYm1jZ1BTQnNaVzVuZEdoY2JpQWdJQ0FnSUd4bGJtZDBhQ0E5SUhWdVpHVm1hVzVsWkZ4dUlDQWdJSDFjYmlBZ0x5OGdiR1ZuWVdONUlIZHlhWFJsS0hOMGNtbHVaeXdnWlc1amIyUnBibWNzSUc5bVpuTmxkQ3dnYkdWdVozUm9LU0F0SUhKbGJXOTJaU0JwYmlCMk1DNHhNMXh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFpoY2lCemQyRndJRDBnWlc1amIyUnBibWRjYmlBZ0lDQmxibU52WkdsdVp5QTlJRzltWm5ObGRGeHVJQ0FnSUc5bVpuTmxkQ0E5SUd4bGJtZDBhQ0I4SURCY2JpQWdJQ0JzWlc1bmRHZ2dQU0J6ZDJGd1hHNGdJSDFjYmx4dUlDQjJZWElnY21WdFlXbHVhVzVuSUQwZ2RHaHBjeTVzWlc1bmRHZ2dMU0J2Wm1aelpYUmNiaUFnYVdZZ0tHeGxibWQwYUNBOVBUMGdkVzVrWldacGJtVmtJSHg4SUd4bGJtZDBhQ0ErSUhKbGJXRnBibWx1WnlrZ2JHVnVaM1JvSUQwZ2NtVnRZV2x1YVc1blhHNWNiaUFnYVdZZ0tDaHpkSEpwYm1jdWJHVnVaM1JvSUQ0Z01DQW1KaUFvYkdWdVozUm9JRHdnTUNCOGZDQnZabVp6WlhRZ1BDQXdLU2tnZkh3Z2IyWm1jMlYwSUQ0Z2RHaHBjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dVbUZ1WjJWRmNuSnZjaWduWVhSMFpXMXdkQ0IwYnlCM2NtbDBaU0J2ZFhSemFXUmxJR0oxWm1abGNpQmliM1Z1WkhNbktWeHVJQ0I5WEc1Y2JpQWdhV1lnS0NGbGJtTnZaR2x1WnlrZ1pXNWpiMlJwYm1jZ1BTQW5kWFJtT0NkY2JseHVJQ0IyWVhJZ2JHOTNaWEpsWkVOaGMyVWdQU0JtWVd4elpWeHVJQ0JtYjNJZ0tEczdLU0I3WEc0Z0lDQWdjM2RwZEdOb0lDaGxibU52WkdsdVp5a2dlMXh1SUNBZ0lDQWdZMkZ6WlNBbmFHVjRKenBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2hsZUZkeWFYUmxLSFJvYVhNc0lITjBjbWx1Wnl3Z2IyWm1jMlYwTENCc1pXNW5kR2dwWEc1Y2JpQWdJQ0FnSUdOaGMyVWdKM1YwWmpnbk9seHVJQ0FnSUNBZ1kyRnpaU0FuZFhSbUxUZ25PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkWFJtT0ZkeWFYUmxLSFJvYVhNc0lITjBjbWx1Wnl3Z2IyWm1jMlYwTENCc1pXNW5kR2dwWEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMkZ6WTJscEp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnpZMmxwVjNKcGRHVW9kR2hwY3l3Z2MzUnlhVzVuTENCdlptWnpaWFFzSUd4bGJtZDBhQ2xjYmx4dUlDQWdJQ0FnWTJGelpTQW5ZbWx1WVhKNUp6cGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHSnBibUZ5ZVZkeWFYUmxLSFJvYVhNc0lITjBjbWx1Wnl3Z2IyWm1jMlYwTENCc1pXNW5kR2dwWEc1Y2JpQWdJQ0FnSUdOaGMyVWdKMkpoYzJVMk5DYzZYRzRnSUNBZ0lDQWdJQzh2SUZkaGNtNXBibWM2SUcxaGVFeGxibWQwYUNCdWIzUWdkR0ZyWlc0Z2FXNTBieUJoWTJOdmRXNTBJR2x1SUdKaGMyVTJORmR5YVhSbFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaVlYTmxOalJYY21sMFpTaDBhR2x6TENCemRISnBibWNzSUc5bVpuTmxkQ3dnYkdWdVozUm9LVnh1WEc0Z0lDQWdJQ0JqWVhObElDZDFZM015SnpwY2JpQWdJQ0FnSUdOaGMyVWdKM1ZqY3kweUp6cGNiaUFnSUNBZ0lHTmhjMlVnSjNWMFpqRTJiR1VuT2x4dUlDQWdJQ0FnWTJGelpTQW5kWFJtTFRFMmJHVW5PbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkV056TWxkeWFYUmxLSFJvYVhNc0lITjBjbWx1Wnl3Z2IyWm1jMlYwTENCc1pXNW5kR2dwWEc1Y2JpQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUdsbUlDaHNiM2RsY21Wa1EyRnpaU2tnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnblZXNXJibTkzYmlCbGJtTnZaR2x1WnpvZ0p5QXJJR1Z1WTI5a2FXNW5LVnh1SUNBZ0lDQWdJQ0JsYm1OdlpHbHVaeUE5SUNnbkp5QXJJR1Z1WTI5a2FXNW5LUzUwYjB4dmQyVnlRMkZ6WlNncFhHNGdJQ0FnSUNBZ0lHeHZkMlZ5WldSRFlYTmxJRDBnZEhKMVpWeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dVhHNUNkV1ptWlhJdWNISnZkRzkwZVhCbExuUnZTbE5QVGlBOUlHWjFibU4wYVc5dUlIUnZTbE5QVGlBb0tTQjdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdkSGx3WlRvZ0owSjFabVpsY2ljc1hHNGdJQ0FnWkdGMFlUb2dRWEp5WVhrdWNISnZkRzkwZVhCbExuTnNhV05sTG1OaGJHd29kR2hwY3k1ZllYSnlJSHg4SUhSb2FYTXNJREFwWEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1ltRnpaVFkwVTJ4cFkyVWdLR0oxWml3Z2MzUmhjblFzSUdWdVpDa2dlMXh1SUNCcFppQW9jM1JoY25RZ1BUMDlJREFnSmlZZ1pXNWtJRDA5UFNCaWRXWXViR1Z1WjNSb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUdKaGMyVTJOQzVtY205dFFubDBaVUZ5Y21GNUtHSjFaaWxjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZbUZ6WlRZMExtWnliMjFDZVhSbFFYSnlZWGtvWW5WbUxuTnNhV05sS0hOMFlYSjBMQ0JsYm1RcEtWeHVJQ0I5WEc1OVhHNWNibVoxYm1OMGFXOXVJSFYwWmpoVGJHbGpaU0FvWW5WbUxDQnpkR0Z5ZEN3Z1pXNWtLU0I3WEc0Z0lHVnVaQ0E5SUUxaGRHZ3ViV2x1S0dKMVppNXNaVzVuZEdnc0lHVnVaQ2xjYmlBZ2RtRnlJSEpsY3lBOUlGdGRYRzVjYmlBZ2RtRnlJR2tnUFNCemRHRnlkRnh1SUNCM2FHbHNaU0FvYVNBOElHVnVaQ2tnZTF4dUlDQWdJSFpoY2lCbWFYSnpkRUo1ZEdVZ1BTQmlkV1piYVYxY2JpQWdJQ0IyWVhJZ1kyOWtaVkJ2YVc1MElEMGdiblZzYkZ4dUlDQWdJSFpoY2lCaWVYUmxjMUJsY2xObGNYVmxibU5sSUQwZ0tHWnBjbk4wUW5sMFpTQStJREI0UlVZcElEOGdORnh1SUNBZ0lDQWdPaUFvWm1seWMzUkNlWFJsSUQ0Z01IaEVSaWtnUHlBelhHNGdJQ0FnSUNBNklDaG1hWEp6ZEVKNWRHVWdQaUF3ZUVKR0tTQS9JREpjYmlBZ0lDQWdJRG9nTVZ4dVhHNGdJQ0FnYVdZZ0tHa2dLeUJpZVhSbGMxQmxjbE5sY1hWbGJtTmxJRHc5SUdWdVpDa2dlMXh1SUNBZ0lDQWdkbUZ5SUhObFkyOXVaRUo1ZEdVc0lIUm9hWEprUW5sMFpTd2dabTkxY25Sb1FubDBaU3dnZEdWdGNFTnZaR1ZRYjJsdWRGeHVYRzRnSUNBZ0lDQnpkMmwwWTJnZ0tHSjVkR1Z6VUdWeVUyVnhkV1Z1WTJVcElIdGNiaUFnSUNBZ0lDQWdZMkZ6WlNBeE9seHVJQ0FnSUNBZ0lDQWdJR2xtSUNobWFYSnpkRUo1ZEdVZ1BDQXdlRGd3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjJSbFVHOXBiblFnUFNCbWFYSnpkRUo1ZEdWY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXdGNiaUFnSUNBZ0lDQWdZMkZ6WlNBeU9seHVJQ0FnSUNBZ0lDQWdJSE5sWTI5dVpFSjVkR1VnUFNCaWRXWmJhU0FySURGZFhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NoelpXTnZibVJDZVhSbElDWWdNSGhETUNrZ1BUMDlJREI0T0RBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSbGJYQkRiMlJsVUc5cGJuUWdQU0FvWm1seWMzUkNlWFJsSUNZZ01IZ3hSaWtnUER3Z01IZzJJSHdnS0hObFkyOXVaRUo1ZEdVZ0ppQXdlRE5HS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSbGJYQkRiMlJsVUc5cGJuUWdQaUF3ZURkR0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZaR1ZRYjJsdWRDQTlJSFJsYlhCRGIyUmxVRzlwYm5SY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdZbkpsWVd0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0F6T2x4dUlDQWdJQ0FnSUNBZ0lITmxZMjl1WkVKNWRHVWdQU0JpZFdaYmFTQXJJREZkWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjbVJDZVhSbElEMGdZblZtVzJrZ0t5QXlYVnh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ29jMlZqYjI1a1FubDBaU0FtSURCNFF6QXBJRDA5UFNBd2VEZ3dJQ1ltSUNoMGFHbHlaRUo1ZEdVZ0ppQXdlRU13S1NBOVBUMGdNSGc0TUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdWdGNFTnZaR1ZRYjJsdWRDQTlJQ2htYVhKemRFSjVkR1VnSmlBd2VFWXBJRHc4SURCNFF5QjhJQ2h6WldOdmJtUkNlWFJsSUNZZ01IZ3pSaWtnUER3Z01IZzJJSHdnS0hSb2FYSmtRbmwwWlNBbUlEQjRNMFlwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdWdGNFTnZaR1ZRYjJsdWRDQStJREI0TjBaR0lDWW1JQ2gwWlcxd1EyOWtaVkJ2YVc1MElEd2dNSGhFT0RBd0lIeDhJSFJsYlhCRGIyUmxVRzlwYm5RZ1BpQXdlRVJHUmtZcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZaR1ZRYjJsdWRDQTlJSFJsYlhCRGIyUmxVRzlwYm5SY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdZbkpsWVd0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0EwT2x4dUlDQWdJQ0FnSUNBZ0lITmxZMjl1WkVKNWRHVWdQU0JpZFdaYmFTQXJJREZkWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjbVJDZVhSbElEMGdZblZtVzJrZ0t5QXlYVnh1SUNBZ0lDQWdJQ0FnSUdadmRYSjBhRUo1ZEdVZ1BTQmlkV1piYVNBcklETmRYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tDaHpaV052Ym1SQ2VYUmxJQ1lnTUhoRE1Da2dQVDA5SURCNE9EQWdKaVlnS0hSb2FYSmtRbmwwWlNBbUlEQjRRekFwSUQwOVBTQXdlRGd3SUNZbUlDaG1iM1Z5ZEdoQ2VYUmxJQ1lnTUhoRE1Da2dQVDA5SURCNE9EQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUmxiWEJEYjJSbFVHOXBiblFnUFNBb1ptbHljM1JDZVhSbElDWWdNSGhHS1NBOFBDQXdlREV5SUh3Z0tITmxZMjl1WkVKNWRHVWdKaUF3ZUROR0tTQThQQ0F3ZUVNZ2ZDQW9kR2hwY21SQ2VYUmxJQ1lnTUhnelJpa2dQRHdnTUhnMklId2dLR1p2ZFhKMGFFSjVkR1VnSmlBd2VETkdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJsYlhCRGIyUmxVRzlwYm5RZ1BpQXdlRVpHUmtZZ0ppWWdkR1Z0Y0VOdlpHVlFiMmx1ZENBOElEQjRNVEV3TURBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZaR1ZRYjJsdWRDQTlJSFJsYlhCRGIyUmxVRzlwYm5SY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHTnZaR1ZRYjJsdWRDQTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdMeThnZDJVZ1pHbGtJRzV2ZENCblpXNWxjbUYwWlNCaElIWmhiR2xrSUdOdlpHVlFiMmx1ZENCemJ5QnBibk5sY25RZ1lWeHVJQ0FnSUNBZ0x5OGdjbVZ3YkdGalpXMWxiblFnWTJoaGNpQW9WU3RHUmtaRUtTQmhibVFnWVdSMllXNWpaU0J2Ym14NUlERWdZbmwwWlZ4dUlDQWdJQ0FnWTI5a1pWQnZhVzUwSUQwZ01IaEdSa1pFWEc0Z0lDQWdJQ0JpZVhSbGMxQmxjbE5sY1hWbGJtTmxJRDBnTVZ4dUlDQWdJSDBnWld4elpTQnBaaUFvWTI5a1pWQnZhVzUwSUQ0Z01IaEdSa1pHS1NCN1hHNGdJQ0FnSUNBdkx5QmxibU52WkdVZ2RHOGdkWFJtTVRZZ0tITjFjbkp2WjJGMFpTQndZV2x5SUdSaGJtTmxLVnh1SUNBZ0lDQWdZMjlrWlZCdmFXNTBJQzA5SURCNE1UQXdNREJjYmlBZ0lDQWdJSEpsY3k1d2RYTm9LR052WkdWUWIybHVkQ0ErUGo0Z01UQWdKaUF3ZUROR1JpQjhJREI0UkRnd01DbGNiaUFnSUNBZ0lHTnZaR1ZRYjJsdWRDQTlJREI0UkVNd01DQjhJR052WkdWUWIybHVkQ0FtSURCNE0wWkdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVnpMbkIxYzJnb1kyOWtaVkJ2YVc1MEtWeHVJQ0FnSUdrZ0t6MGdZbmwwWlhOUVpYSlRaWEYxWlc1alpWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHUmxZMjlrWlVOdlpHVlFiMmx1ZEhOQmNuSmhlU2h5WlhNcFhHNTlYRzVjYmk4dklFSmhjMlZrSUc5dUlHaDBkSEE2THk5emRHRmphMjkyWlhKbWJHOTNMbU52YlM5aEx6SXlOelEzTWpjeUx6WTRNRGMwTWl3Z2RHaGxJR0p5YjNkelpYSWdkMmwwYUZ4dUx5OGdkR2hsSUd4dmQyVnpkQ0JzYVcxcGRDQnBjeUJEYUhKdmJXVXNJSGRwZEdnZ01IZ3hNREF3TUNCaGNtZHpMbHh1THk4Z1YyVWdaMjhnTVNCdFlXZHVhWFIxWkdVZ2JHVnpjeXdnWm05eUlITmhabVYwZVZ4dWRtRnlJRTFCV0Y5QlVrZFZUVVZPVkZOZlRFVk9SMVJJSUQwZ01IZ3hNREF3WEc1Y2JtWjFibU4wYVc5dUlHUmxZMjlrWlVOdlpHVlFiMmx1ZEhOQmNuSmhlU0FvWTI5a1pWQnZhVzUwY3lrZ2UxeHVJQ0IyWVhJZ2JHVnVJRDBnWTI5a1pWQnZhVzUwY3k1c1pXNW5kR2hjYmlBZ2FXWWdLR3hsYmlBOFBTQk5RVmhmUVZKSFZVMUZUbFJUWDB4RlRrZFVTQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlRkSEpwYm1jdVpuSnZiVU5vWVhKRGIyUmxMbUZ3Y0d4NUtGTjBjbWx1Wnl3Z1kyOWtaVkJ2YVc1MGN5a2dMeThnWVhadmFXUWdaWGgwY21FZ2MyeHBZMlVvS1Z4dUlDQjlYRzVjYmlBZ0x5OGdSR1ZqYjJSbElHbHVJR05vZFc1cmN5QjBieUJoZG05cFpDQmNJbU5oYkd3Z2MzUmhZMnNnYzJsNlpTQmxlR05sWldSbFpGd2lMbHh1SUNCMllYSWdjbVZ6SUQwZ0p5ZGNiaUFnZG1GeUlHa2dQU0F3WEc0Z0lIZG9hV3hsSUNocElEd2diR1Z1S1NCN1hHNGdJQ0FnY21WeklDczlJRk4wY21sdVp5NW1jbTl0UTJoaGNrTnZaR1V1WVhCd2JIa29YRzRnSUNBZ0lDQlRkSEpwYm1jc1hHNGdJQ0FnSUNCamIyUmxVRzlwYm5SekxuTnNhV05sS0drc0lHa2dLejBnVFVGWVgwRlNSMVZOUlU1VVUxOU1SVTVIVkVncFhHNGdJQ0FnS1Z4dUlDQjlYRzRnSUhKbGRIVnliaUJ5WlhOY2JuMWNibHh1Wm5WdVkzUnBiMjRnWVhOamFXbFRiR2xqWlNBb1luVm1MQ0J6ZEdGeWRDd2daVzVrS1NCN1hHNGdJSFpoY2lCeVpYUWdQU0FuSjF4dUlDQmxibVFnUFNCTllYUm9MbTFwYmloaWRXWXViR1Z1WjNSb0xDQmxibVFwWEc1Y2JpQWdabTl5SUNoMllYSWdhU0E5SUhOMFlYSjBPeUJwSUR3Z1pXNWtPeUJwS3lzcElIdGNiaUFnSUNCeVpYUWdLejBnVTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoaWRXWmJhVjBnSmlBd2VEZEdLVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWFJjYm4xY2JseHVablZ1WTNScGIyNGdZbWx1WVhKNVUyeHBZMlVnS0dKMVppd2djM1JoY25Rc0lHVnVaQ2tnZTF4dUlDQjJZWElnY21WMElEMGdKeWRjYmlBZ1pXNWtJRDBnVFdGMGFDNXRhVzRvWW5WbUxteGxibWQwYUN3Z1pXNWtLVnh1WEc0Z0lHWnZjaUFvZG1GeUlHa2dQU0J6ZEdGeWREc2dhU0E4SUdWdVpEc2dhU3NyS1NCN1hHNGdJQ0FnY21WMElDczlJRk4wY21sdVp5NW1jbTl0UTJoaGNrTnZaR1VvWW5WbVcybGRLVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWFJjYm4xY2JseHVablZ1WTNScGIyNGdhR1Y0VTJ4cFkyVWdLR0oxWml3Z2MzUmhjblFzSUdWdVpDa2dlMXh1SUNCMllYSWdiR1Z1SUQwZ1luVm1MbXhsYm1kMGFGeHVYRzRnSUdsbUlDZ2hjM1JoY25RZ2ZId2djM1JoY25RZ1BDQXdLU0J6ZEdGeWRDQTlJREJjYmlBZ2FXWWdLQ0ZsYm1RZ2ZId2daVzVrSUR3Z01DQjhmQ0JsYm1RZ1BpQnNaVzRwSUdWdVpDQTlJR3hsYmx4dVhHNGdJSFpoY2lCdmRYUWdQU0FuSjF4dUlDQm1iM0lnS0haaGNpQnBJRDBnYzNSaGNuUTdJR2tnUENCbGJtUTdJR2tyS3lrZ2UxeHVJQ0FnSUc5MWRDQXJQU0IwYjBobGVDaGlkV1piYVYwcFhHNGdJSDFjYmlBZ2NtVjBkWEp1SUc5MWRGeHVmVnh1WEc1bWRXNWpkR2x2YmlCMWRHWXhObXhsVTJ4cFkyVWdLR0oxWml3Z2MzUmhjblFzSUdWdVpDa2dlMXh1SUNCMllYSWdZbmwwWlhNZ1BTQmlkV1l1YzJ4cFkyVW9jM1JoY25Rc0lHVnVaQ2xjYmlBZ2RtRnlJSEpsY3lBOUlDY25YRzRnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1lubDBaWE11YkdWdVozUm9PeUJwSUNzOUlESXBJSHRjYmlBZ0lDQnlaWE1nS3owZ1UzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGllWFJsYzF0cFhTQXJJR0o1ZEdWelcya2dLeUF4WFNBcUlESTFOaWxjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6WEc1OVhHNWNia0oxWm1abGNpNXdjbTkwYjNSNWNHVXVjMnhwWTJVZ1BTQm1kVzVqZEdsdmJpQnpiR2xqWlNBb2MzUmhjblFzSUdWdVpDa2dlMXh1SUNCMllYSWdiR1Z1SUQwZ2RHaHBjeTVzWlc1bmRHaGNiaUFnYzNSaGNuUWdQU0IrZm5OMFlYSjBYRzRnSUdWdVpDQTlJR1Z1WkNBOVBUMGdkVzVrWldacGJtVmtJRDhnYkdWdUlEb2dmbjVsYm1SY2JseHVJQ0JwWmlBb2MzUmhjblFnUENBd0tTQjdYRzRnSUNBZ2MzUmhjblFnS3owZ2JHVnVYRzRnSUNBZ2FXWWdLSE4wWVhKMElEd2dNQ2tnYzNSaGNuUWdQU0F3WEc0Z0lIMGdaV3h6WlNCcFppQW9jM1JoY25RZ1BpQnNaVzRwSUh0Y2JpQWdJQ0J6ZEdGeWRDQTlJR3hsYmx4dUlDQjlYRzVjYmlBZ2FXWWdLR1Z1WkNBOElEQXBJSHRjYmlBZ0lDQmxibVFnS3owZ2JHVnVYRzRnSUNBZ2FXWWdLR1Z1WkNBOElEQXBJR1Z1WkNBOUlEQmNiaUFnZlNCbGJITmxJR2xtSUNobGJtUWdQaUJzWlc0cElIdGNiaUFnSUNCbGJtUWdQU0JzWlc1Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hsYm1RZ1BDQnpkR0Z5ZENrZ1pXNWtJRDBnYzNSaGNuUmNibHh1SUNCMllYSWdibVYzUW5WbVhHNGdJR2xtSUNoQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNrZ2UxeHVJQ0FnSUc1bGQwSjFaaUE5SUVKMVptWmxjaTVmWVhWbmJXVnVkQ2gwYUdsekxuTjFZbUZ5Y21GNUtITjBZWEowTENCbGJtUXBLVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJSFpoY2lCemJHbGpaVXhsYmlBOUlHVnVaQ0F0SUhOMFlYSjBYRzRnSUNBZ2JtVjNRblZtSUQwZ2JtVjNJRUoxWm1abGNpaHpiR2xqWlV4bGJpd2dkVzVrWldacGJtVmtLVnh1SUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2djMnhwWTJWTVpXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JtVjNRblZtVzJsZElEMGdkR2hwYzF0cElDc2djM1JoY25SZFhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2FXWWdLRzVsZDBKMVppNXNaVzVuZEdncElHNWxkMEoxWmk1d1lYSmxiblFnUFNCMGFHbHpMbkJoY21WdWRDQjhmQ0IwYUdselhHNWNiaUFnY21WMGRYSnVJRzVsZDBKMVpseHVmVnh1WEc0dktseHVJQ29nVG1WbFpDQjBieUJ0WVd0bElITjFjbVVnZEdoaGRDQmlkV1ptWlhJZ2FYTnVKM1FnZEhKNWFXNW5JSFJ2SUhkeWFYUmxJRzkxZENCdlppQmliM1Z1WkhNdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdOb1pXTnJUMlptYzJWMElDaHZabVp6WlhRc0lHVjRkQ3dnYkdWdVozUm9LU0I3WEc0Z0lHbG1JQ2dvYjJabWMyVjBJQ1VnTVNrZ0lUMDlJREFnZkh3Z2IyWm1jMlYwSUR3Z01Da2dkR2h5YjNjZ2JtVjNJRkpoYm1kbFJYSnliM0lvSjI5bVpuTmxkQ0JwY3lCdWIzUWdkV2x1ZENjcFhHNGdJR2xtSUNodlptWnpaWFFnS3lCbGVIUWdQaUJzWlc1bmRHZ3BJSFJvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0NkVWNubHBibWNnZEc4Z1lXTmpaWE56SUdKbGVXOXVaQ0JpZFdabVpYSWdiR1Z1WjNSb0p5bGNibjFjYmx4dVFuVm1abVZ5TG5CeWIzUnZkSGx3WlM1eVpXRmtWVWx1ZEV4RklEMGdablZ1WTNScGIyNGdjbVZoWkZWSmJuUk1SU0FvYjJabWMyVjBMQ0JpZVhSbFRHVnVaM1JvTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0J2Wm1aelpYUWdQU0J2Wm1aelpYUWdmQ0F3WEc0Z0lHSjVkR1ZNWlc1bmRHZ2dQU0JpZVhSbFRHVnVaM1JvSUh3Z01GeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQmphR1ZqYTA5bVpuTmxkQ2h2Wm1aelpYUXNJR0o1ZEdWTVpXNW5kR2dzSUhSb2FYTXViR1Z1WjNSb0tWeHVYRzRnSUhaaGNpQjJZV3dnUFNCMGFHbHpXMjltWm5ObGRGMWNiaUFnZG1GeUlHMTFiQ0E5SURGY2JpQWdkbUZ5SUdrZ1BTQXdYRzRnSUhkb2FXeGxJQ2dySzJrZ1BDQmllWFJsVEdWdVozUm9JQ1ltSUNodGRXd2dLajBnTUhneE1EQXBLU0I3WEc0Z0lDQWdkbUZzSUNzOUlIUm9hWE5iYjJabWMyVjBJQ3NnYVYwZ0tpQnRkV3hjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUIyWVd4Y2JuMWNibHh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzV5WldGa1ZVbHVkRUpGSUQwZ1puVnVZM1JwYjI0Z2NtVmhaRlZKYm5SQ1JTQW9iMlptYzJWMExDQmllWFJsVEdWdVozUm9MQ0J1YjBGemMyVnlkQ2tnZTF4dUlDQnZabVp6WlhRZ1BTQnZabVp6WlhRZ2ZDQXdYRzRnSUdKNWRHVk1aVzVuZEdnZ1BTQmllWFJsVEdWdVozUm9JSHdnTUZ4dUlDQnBaaUFvSVc1dlFYTnpaWEowS1NCN1hHNGdJQ0FnWTJobFkydFBabVp6WlhRb2IyWm1jMlYwTENCaWVYUmxUR1Z1WjNSb0xDQjBhR2x6TG14bGJtZDBhQ2xjYmlBZ2ZWeHVYRzRnSUhaaGNpQjJZV3dnUFNCMGFHbHpXMjltWm5ObGRDQXJJQzB0WW5sMFpVeGxibWQwYUYxY2JpQWdkbUZ5SUcxMWJDQTlJREZjYmlBZ2QyaHBiR1VnS0dKNWRHVk1aVzVuZEdnZ1BpQXdJQ1ltSUNodGRXd2dLajBnTUhneE1EQXBLU0I3WEc0Z0lDQWdkbUZzSUNzOUlIUm9hWE5iYjJabWMyVjBJQ3NnTFMxaWVYUmxUR1Z1WjNSb1hTQXFJRzExYkZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhaaGJGeHVmVnh1WEc1Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5KbFlXUlZTVzUwT0NBOUlHWjFibU4wYVc5dUlISmxZV1JWU1c1ME9DQW9iMlptYzJWMExDQnViMEZ6YzJWeWRDa2dlMXh1SUNCcFppQW9JVzV2UVhOelpYSjBLU0JqYUdWamEwOW1abk5sZENodlptWnpaWFFzSURFc0lIUm9hWE11YkdWdVozUm9LVnh1SUNCeVpYUjFjbTRnZEdocGMxdHZabVp6WlhSZFhHNTlYRzVjYmtKMVptWmxjaTV3Y205MGIzUjVjR1V1Y21WaFpGVkpiblF4Tmt4RklEMGdablZ1WTNScGIyNGdjbVZoWkZWSmJuUXhOa3hGSUNodlptWnpaWFFzSUc1dlFYTnpaWEowS1NCN1hHNGdJR2xtSUNnaGJtOUJjM05sY25RcElHTm9aV05yVDJabWMyVjBLRzltWm5ObGRDd2dNaXdnZEdocGN5NXNaVzVuZEdncFhHNGdJSEpsZEhWeWJpQjBhR2x6VzI5bVpuTmxkRjBnZkNBb2RHaHBjMXR2Wm1aelpYUWdLeUF4WFNBOFBDQTRLVnh1ZlZ4dVhHNUNkV1ptWlhJdWNISnZkRzkwZVhCbExuSmxZV1JWU1c1ME1UWkNSU0E5SUdaMWJtTjBhVzl1SUhKbFlXUlZTVzUwTVRaQ1JTQW9iMlptYzJWMExDQnViMEZ6YzJWeWRDa2dlMXh1SUNCcFppQW9JVzV2UVhOelpYSjBLU0JqYUdWamEwOW1abk5sZENodlptWnpaWFFzSURJc0lIUm9hWE11YkdWdVozUm9LVnh1SUNCeVpYUjFjbTRnS0hSb2FYTmJiMlptYzJWMFhTQThQQ0E0S1NCOElIUm9hWE5iYjJabWMyVjBJQ3NnTVYxY2JuMWNibHh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzV5WldGa1ZVbHVkRE15VEVVZ1BTQm1kVzVqZEdsdmJpQnlaV0ZrVlVsdWRETXlURVVnS0c5bVpuTmxkQ3dnYm05QmMzTmxjblFwSUh0Y2JpQWdhV1lnS0NGdWIwRnpjMlZ5ZENrZ1kyaGxZMnRQWm1aelpYUW9iMlptYzJWMExDQTBMQ0IwYUdsekxteGxibWQwYUNsY2JseHVJQ0J5WlhSMWNtNGdLQ2gwYUdselcyOW1abk5sZEYwcElIeGNiaUFnSUNBZ0lDaDBhR2x6VzI5bVpuTmxkQ0FySURGZElEdzhJRGdwSUh4Y2JpQWdJQ0FnSUNoMGFHbHpXMjltWm5ObGRDQXJJREpkSUR3OElERTJLU2tnSzF4dUlDQWdJQ0FnS0hSb2FYTmJiMlptYzJWMElDc2dNMTBnS2lBd2VERXdNREF3TURBcFhHNTlYRzVjYmtKMVptWmxjaTV3Y205MGIzUjVjR1V1Y21WaFpGVkpiblF6TWtKRklEMGdablZ1WTNScGIyNGdjbVZoWkZWSmJuUXpNa0pGSUNodlptWnpaWFFzSUc1dlFYTnpaWEowS1NCN1hHNGdJR2xtSUNnaGJtOUJjM05sY25RcElHTm9aV05yVDJabWMyVjBLRzltWm5ObGRDd2dOQ3dnZEdocGN5NXNaVzVuZEdncFhHNWNiaUFnY21WMGRYSnVJQ2gwYUdselcyOW1abk5sZEYwZ0tpQXdlREV3TURBd01EQXBJQ3RjYmlBZ0lDQW9LSFJvYVhOYmIyWm1jMlYwSUNzZ01WMGdQRHdnTVRZcElIeGNiaUFnSUNBb2RHaHBjMXR2Wm1aelpYUWdLeUF5WFNBOFBDQTRLU0I4WEc0Z0lDQWdkR2hwYzF0dlptWnpaWFFnS3lBelhTbGNibjFjYmx4dVFuVm1abVZ5TG5CeWIzUnZkSGx3WlM1eVpXRmtTVzUwVEVVZ1BTQm1kVzVqZEdsdmJpQnlaV0ZrU1c1MFRFVWdLRzltWm5ObGRDd2dZbmwwWlV4bGJtZDBhQ3dnYm05QmMzTmxjblFwSUh0Y2JpQWdiMlptYzJWMElEMGdiMlptYzJWMElId2dNRnh1SUNCaWVYUmxUR1Z1WjNSb0lEMGdZbmwwWlV4bGJtZDBhQ0I4SURCY2JpQWdhV1lnS0NGdWIwRnpjMlZ5ZENrZ1kyaGxZMnRQWm1aelpYUW9iMlptYzJWMExDQmllWFJsVEdWdVozUm9MQ0IwYUdsekxteGxibWQwYUNsY2JseHVJQ0IyWVhJZ2RtRnNJRDBnZEdocGMxdHZabVp6WlhSZFhHNGdJSFpoY2lCdGRXd2dQU0F4WEc0Z0lIWmhjaUJwSUQwZ01GeHVJQ0IzYUdsc1pTQW9LeXRwSUR3Z1lubDBaVXhsYm1kMGFDQW1KaUFvYlhWc0lDbzlJREI0TVRBd0tTa2dlMXh1SUNBZ0lIWmhiQ0FyUFNCMGFHbHpXMjltWm5ObGRDQXJJR2xkSUNvZ2JYVnNYRzRnSUgxY2JpQWdiWFZzSUNvOUlEQjRPREJjYmx4dUlDQnBaaUFvZG1Gc0lENDlJRzExYkNrZ2RtRnNJQzA5SUUxaGRHZ3VjRzkzS0RJc0lEZ2dLaUJpZVhSbFRHVnVaM1JvS1Z4dVhHNGdJSEpsZEhWeWJpQjJZV3hjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1MFFrVWdQU0JtZFc1amRHbHZiaUJ5WldGa1NXNTBRa1VnS0c5bVpuTmxkQ3dnWW5sMFpVeGxibWQwYUN3Z2JtOUJjM05sY25RcElIdGNiaUFnYjJabWMyVjBJRDBnYjJabWMyVjBJSHdnTUZ4dUlDQmllWFJsVEdWdVozUm9JRDBnWW5sMFpVeGxibWQwYUNCOElEQmNiaUFnYVdZZ0tDRnViMEZ6YzJWeWRDa2dZMmhsWTJ0UFptWnpaWFFvYjJabWMyVjBMQ0JpZVhSbFRHVnVaM1JvTENCMGFHbHpMbXhsYm1kMGFDbGNibHh1SUNCMllYSWdhU0E5SUdKNWRHVk1aVzVuZEdoY2JpQWdkbUZ5SUcxMWJDQTlJREZjYmlBZ2RtRnlJSFpoYkNBOUlIUm9hWE5iYjJabWMyVjBJQ3NnTFMxcFhWeHVJQ0IzYUdsc1pTQW9hU0ErSURBZ0ppWWdLRzExYkNBcVBTQXdlREV3TUNrcElIdGNiaUFnSUNCMllXd2dLejBnZEdocGMxdHZabVp6WlhRZ0t5QXRMV2xkSUNvZ2JYVnNYRzRnSUgxY2JpQWdiWFZzSUNvOUlEQjRPREJjYmx4dUlDQnBaaUFvZG1Gc0lENDlJRzExYkNrZ2RtRnNJQzA5SUUxaGRHZ3VjRzkzS0RJc0lEZ2dLaUJpZVhSbFRHVnVaM1JvS1Z4dVhHNGdJSEpsZEhWeWJpQjJZV3hjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1ME9DQTlJR1oxYm1OMGFXOXVJSEpsWVdSSmJuUTRJQ2h2Wm1aelpYUXNJRzV2UVhOelpYSjBLU0I3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJUMlptYzJWMEtHOW1abk5sZEN3Z01Td2dkR2hwY3k1c1pXNW5kR2dwWEc0Z0lHbG1JQ2doS0hSb2FYTmJiMlptYzJWMFhTQW1JREI0T0RBcEtTQnlaWFIxY200Z0tIUm9hWE5iYjJabWMyVjBYU2xjYmlBZ2NtVjBkWEp1SUNnb01IaG1aaUF0SUhSb2FYTmJiMlptYzJWMFhTQXJJREVwSUNvZ0xURXBYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWNtVmhaRWx1ZERFMlRFVWdQU0JtZFc1amRHbHZiaUJ5WldGa1NXNTBNVFpNUlNBb2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQmphR1ZqYTA5bVpuTmxkQ2h2Wm1aelpYUXNJRElzSUhSb2FYTXViR1Z1WjNSb0tWeHVJQ0IyWVhJZ2RtRnNJRDBnZEdocGMxdHZabVp6WlhSZElId2dLSFJvYVhOYmIyWm1jMlYwSUNzZ01WMGdQRHdnT0NsY2JpQWdjbVYwZFhKdUlDaDJZV3dnSmlBd2VEZ3dNREFwSUQ4Z2RtRnNJSHdnTUhoR1JrWkdNREF3TUNBNklIWmhiRnh1ZlZ4dVhHNUNkV1ptWlhJdWNISnZkRzkwZVhCbExuSmxZV1JKYm5ReE5rSkZJRDBnWm5WdVkzUnBiMjRnY21WaFpFbHVkREUyUWtVZ0tHOW1abk5sZEN3Z2JtOUJjM05sY25RcElIdGNiaUFnYVdZZ0tDRnViMEZ6YzJWeWRDa2dZMmhsWTJ0UFptWnpaWFFvYjJabWMyVjBMQ0F5TENCMGFHbHpMbXhsYm1kMGFDbGNiaUFnZG1GeUlIWmhiQ0E5SUhSb2FYTmJiMlptYzJWMElDc2dNVjBnZkNBb2RHaHBjMXR2Wm1aelpYUmRJRHc4SURncFhHNGdJSEpsZEhWeWJpQW9kbUZzSUNZZ01IZzRNREF3S1NBL0lIWmhiQ0I4SURCNFJrWkdSakF3TURBZ09pQjJZV3hjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrU1c1ME16Sk1SU0E5SUdaMWJtTjBhVzl1SUhKbFlXUkpiblF6TWt4RklDaHZabVp6WlhRc0lHNXZRWE56WlhKMEtTQjdYRzRnSUdsbUlDZ2hibTlCYzNObGNuUXBJR05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3dnTkN3Z2RHaHBjeTVzWlc1bmRHZ3BYRzVjYmlBZ2NtVjBkWEp1SUNoMGFHbHpXMjltWm5ObGRGMHBJSHhjYmlBZ0lDQW9kR2hwYzF0dlptWnpaWFFnS3lBeFhTQThQQ0E0S1NCOFhHNGdJQ0FnS0hSb2FYTmJiMlptYzJWMElDc2dNbDBnUER3Z01UWXBJSHhjYmlBZ0lDQW9kR2hwYzF0dlptWnpaWFFnS3lBelhTQThQQ0F5TkNsY2JuMWNibHh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzV5WldGa1NXNTBNekpDUlNBOUlHWjFibU4wYVc5dUlISmxZV1JKYm5Rek1rSkZJQ2h2Wm1aelpYUXNJRzV2UVhOelpYSjBLU0I3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJUMlptYzJWMEtHOW1abk5sZEN3Z05Dd2dkR2hwY3k1c1pXNW5kR2dwWEc1Y2JpQWdjbVYwZFhKdUlDaDBhR2x6VzI5bVpuTmxkRjBnUER3Z01qUXBJSHhjYmlBZ0lDQW9kR2hwYzF0dlptWnpaWFFnS3lBeFhTQThQQ0F4TmlrZ2ZGeHVJQ0FnSUNoMGFHbHpXMjltWm5ObGRDQXJJREpkSUR3OElEZ3BJSHhjYmlBZ0lDQW9kR2hwYzF0dlptWnpaWFFnS3lBelhTbGNibjFjYmx4dVFuVm1abVZ5TG5CeWIzUnZkSGx3WlM1eVpXRmtSbXh2WVhSTVJTQTlJR1oxYm1OMGFXOXVJSEpsWVdSR2JHOWhkRXhGSUNodlptWnpaWFFzSUc1dlFYTnpaWEowS1NCN1hHNGdJR2xtSUNnaGJtOUJjM05sY25RcElHTm9aV05yVDJabWMyVjBLRzltWm5ObGRDd2dOQ3dnZEdocGN5NXNaVzVuZEdncFhHNGdJSEpsZEhWeWJpQnBaV1ZsTnpVMExuSmxZV1FvZEdocGN5d2diMlptYzJWMExDQjBjblZsTENBeU15d2dOQ2xjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrUm14dllYUkNSU0E5SUdaMWJtTjBhVzl1SUhKbFlXUkdiRzloZEVKRklDaHZabVp6WlhRc0lHNXZRWE56WlhKMEtTQjdYRzRnSUdsbUlDZ2hibTlCYzNObGNuUXBJR05vWldOclQyWm1jMlYwS0c5bVpuTmxkQ3dnTkN3Z2RHaHBjeTVzWlc1bmRHZ3BYRzRnSUhKbGRIVnliaUJwWldWbE56VTBMbkpsWVdRb2RHaHBjeXdnYjJabWMyVjBMQ0JtWVd4elpTd2dNak1zSURRcFhHNTlYRzVjYmtKMVptWmxjaTV3Y205MGIzUjVjR1V1Y21WaFpFUnZkV0pzWlV4RklEMGdablZ1WTNScGIyNGdjbVZoWkVSdmRXSnNaVXhGSUNodlptWnpaWFFzSUc1dlFYTnpaWEowS1NCN1hHNGdJR2xtSUNnaGJtOUJjM05sY25RcElHTm9aV05yVDJabWMyVjBLRzltWm5ObGRDd2dPQ3dnZEdocGN5NXNaVzVuZEdncFhHNGdJSEpsZEhWeWJpQnBaV1ZsTnpVMExuSmxZV1FvZEdocGN5d2diMlptYzJWMExDQjBjblZsTENBMU1pd2dPQ2xjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNXlaV0ZrUkc5MVlteGxRa1VnUFNCbWRXNWpkR2x2YmlCeVpXRmtSRzkxWW14bFFrVWdLRzltWm5ObGRDd2dibTlCYzNObGNuUXBJSHRjYmlBZ2FXWWdLQ0Z1YjBGemMyVnlkQ2tnWTJobFkydFBabVp6WlhRb2IyWm1jMlYwTENBNExDQjBhR2x6TG14bGJtZDBhQ2xjYmlBZ2NtVjBkWEp1SUdsbFpXVTNOVFF1Y21WaFpDaDBhR2x6TENCdlptWnpaWFFzSUdaaGJITmxMQ0ExTWl3Z09DbGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnRKYm5RZ0tHSjFaaXdnZG1Gc2RXVXNJRzltWm5ObGRDd2daWGgwTENCdFlYZ3NJRzFwYmlrZ2UxeHVJQ0JwWmlBb0lVSjFabVpsY2k1cGMwSjFabVpsY2loaWRXWXBLU0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NkaWRXWm1aWElnYlhWemRDQmlaU0JoSUVKMVptWmxjaUJwYm5OMFlXNWpaU2NwWEc0Z0lHbG1JQ2gyWVd4MVpTQStJRzFoZUNCOGZDQjJZV3gxWlNBOElHMXBiaWtnZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb0ozWmhiSFZsSUdseklHOTFkQ0J2WmlCaWIzVnVaSE1uS1Z4dUlDQnBaaUFvYjJabWMyVjBJQ3NnWlhoMElENGdZblZtTG14bGJtZDBhQ2tnZEdoeWIzY2dibVYzSUZKaGJtZGxSWEp5YjNJb0oybHVaR1Y0SUc5MWRDQnZaaUJ5WVc1blpTY3BYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZWU1c1MFRFVWdQU0JtZFc1amRHbHZiaUIzY21sMFpWVkpiblJNUlNBb2RtRnNkV1VzSUc5bVpuTmxkQ3dnWW5sMFpVeGxibWQwYUN3Z2JtOUJjM05sY25RcElIdGNiaUFnZG1Gc2RXVWdQU0FyZG1Gc2RXVmNiaUFnYjJabWMyVjBJRDBnYjJabWMyVjBJSHdnTUZ4dUlDQmllWFJsVEdWdVozUm9JRDBnWW5sMFpVeGxibWQwYUNCOElEQmNiaUFnYVdZZ0tDRnViMEZ6YzJWeWRDa2dZMmhsWTJ0SmJuUW9kR2hwY3l3Z2RtRnNkV1VzSUc5bVpuTmxkQ3dnWW5sMFpVeGxibWQwYUN3Z1RXRjBhQzV3YjNjb01pd2dPQ0FxSUdKNWRHVk1aVzVuZEdncExDQXdLVnh1WEc0Z0lIWmhjaUJ0ZFd3Z1BTQXhYRzRnSUhaaGNpQnBJRDBnTUZ4dUlDQjBhR2x6VzI5bVpuTmxkRjBnUFNCMllXeDFaU0FtSURCNFJrWmNiaUFnZDJocGJHVWdLQ3NyYVNBOElHSjVkR1ZNWlc1bmRHZ2dKaVlnS0cxMWJDQXFQU0F3ZURFd01Da3BJSHRjYmlBZ0lDQjBhR2x6VzI5bVpuTmxkQ0FySUdsZElEMGdLSFpoYkhWbElDOGdiWFZzS1NBbUlEQjRSa1pjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ2Wm1aelpYUWdLeUJpZVhSbFRHVnVaM1JvWEc1OVhHNWNia0oxWm1abGNpNXdjbTkwYjNSNWNHVXVkM0pwZEdWVlNXNTBRa1VnUFNCbWRXNWpkR2x2YmlCM2NtbDBaVlZKYm5SQ1JTQW9kbUZzZFdVc0lHOW1abk5sZEN3Z1lubDBaVXhsYm1kMGFDd2dibTlCYzNObGNuUXBJSHRjYmlBZ2RtRnNkV1VnUFNBcmRtRnNkV1ZjYmlBZ2IyWm1jMlYwSUQwZ2IyWm1jMlYwSUh3Z01GeHVJQ0JpZVhSbFRHVnVaM1JvSUQwZ1lubDBaVXhsYm1kMGFDQjhJREJjYmlBZ2FXWWdLQ0Z1YjBGemMyVnlkQ2tnWTJobFkydEpiblFvZEdocGN5d2dkbUZzZFdVc0lHOW1abk5sZEN3Z1lubDBaVXhsYm1kMGFDd2dUV0YwYUM1d2IzY29NaXdnT0NBcUlHSjVkR1ZNWlc1bmRHZ3BMQ0F3S1Z4dVhHNGdJSFpoY2lCcElEMGdZbmwwWlV4bGJtZDBhQ0F0SURGY2JpQWdkbUZ5SUcxMWJDQTlJREZjYmlBZ2RHaHBjMXR2Wm1aelpYUWdLeUJwWFNBOUlIWmhiSFZsSUNZZ01IaEdSbHh1SUNCM2FHbHNaU0FvTFMxcElENDlJREFnSmlZZ0tHMTFiQ0FxUFNBd2VERXdNQ2twSUh0Y2JpQWdJQ0IwYUdselcyOW1abk5sZENBcklHbGRJRDBnS0haaGJIVmxJQzhnYlhWc0tTQW1JREI0UmtaY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdlptWnpaWFFnS3lCaWVYUmxUR1Z1WjNSb1hHNTlYRzVjYmtKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVlZTVzUwT0NBOUlHWjFibU4wYVc5dUlIZHlhWFJsVlVsdWREZ2dLSFpoYkhWbExDQnZabVp6WlhRc0lHNXZRWE56WlhKMEtTQjdYRzRnSUhaaGJIVmxJRDBnSzNaaGJIVmxYRzRnSUc5bVpuTmxkQ0E5SUc5bVpuTmxkQ0I4SURCY2JpQWdhV1lnS0NGdWIwRnpjMlZ5ZENrZ1kyaGxZMnRKYm5Rb2RHaHBjeXdnZG1Gc2RXVXNJRzltWm5ObGRDd2dNU3dnTUhobVppd2dNQ2xjYmlBZ2FXWWdLQ0ZDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ2tnZG1Gc2RXVWdQU0JOWVhSb0xtWnNiMjl5S0haaGJIVmxLVnh1SUNCMGFHbHpXMjltWm5ObGRGMGdQU0IyWVd4MVpWeHVJQ0J5WlhSMWNtNGdiMlptYzJWMElDc2dNVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnZZbXBsWTNSWGNtbDBaVlZKYm5ReE5pQW9ZblZtTENCMllXeDFaU3dnYjJabWMyVjBMQ0JzYVhSMGJHVkZibVJwWVc0cElIdGNiaUFnYVdZZ0tIWmhiSFZsSUR3Z01Da2dkbUZzZFdVZ1BTQXdlR1ptWm1ZZ0t5QjJZV3gxWlNBcklERmNiaUFnWm05eUlDaDJZWElnYVNBOUlEQXNJR29nUFNCTllYUm9MbTFwYmloaWRXWXViR1Z1WjNSb0lDMGdiMlptYzJWMExDQXlLVHNnYVNBOElHbzdJR2tyS3lrZ2UxeHVJQ0FnSUdKMVpsdHZabVp6WlhRZ0t5QnBYU0E5SUNoMllXeDFaU0FtSUNnd2VHWm1JRHc4SUNnNElDb2dLR3hwZEhSc1pVVnVaR2xoYmlBL0lHa2dPaUF4SUMwZ2FTa3BLU2tnUGo0K1hHNGdJQ0FnSUNBb2JHbDBkR3hsUlc1a2FXRnVJRDhnYVNBNklERWdMU0JwS1NBcUlEaGNiaUFnZlZ4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFZVbHVkREUyVEVVZ1BTQm1kVzVqZEdsdmJpQjNjbWwwWlZWSmJuUXhOa3hGSUNoMllXeDFaU3dnYjJabWMyVjBMQ0J1YjBGemMyVnlkQ2tnZTF4dUlDQjJZV3gxWlNBOUlDdDJZV3gxWlZ4dUlDQnZabVp6WlhRZ1BTQnZabVp6WlhRZ2ZDQXdYRzRnSUdsbUlDZ2hibTlCYzNObGNuUXBJR05vWldOclNXNTBLSFJvYVhNc0lIWmhiSFZsTENCdlptWnpaWFFzSURJc0lEQjRabVptWml3Z01DbGNiaUFnYVdZZ0tFSjFabVpsY2k1VVdWQkZSRjlCVWxKQldWOVRWVkJRVDFKVUtTQjdYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUmRJRDBnZG1Gc2RXVmNiaUFnSUNCMGFHbHpXMjltWm5ObGRDQXJJREZkSUQwZ0tIWmhiSFZsSUQ0K1BpQTRLVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJRzlpYW1WamRGZHlhWFJsVlVsdWRERTJLSFJvYVhNc0lIWmhiSFZsTENCdlptWnpaWFFzSUhSeWRXVXBYRzRnSUgxY2JpQWdjbVYwZFhKdUlHOW1abk5sZENBcklESmNibjFjYmx4dVFuVm1abVZ5TG5CeWIzUnZkSGx3WlM1M2NtbDBaVlZKYm5ReE5rSkZJRDBnWm5WdVkzUnBiMjRnZDNKcGRHVlZTVzUwTVRaQ1JTQW9kbUZzZFdVc0lHOW1abk5sZEN3Z2JtOUJjM05sY25RcElIdGNiaUFnZG1Gc2RXVWdQU0FyZG1Gc2RXVmNiaUFnYjJabWMyVjBJRDBnYjJabWMyVjBJSHdnTUZ4dUlDQnBaaUFvSVc1dlFYTnpaWEowS1NCamFHVmphMGx1ZENoMGFHbHpMQ0IyWVd4MVpTd2diMlptYzJWMExDQXlMQ0F3ZUdabVptWXNJREFwWEc0Z0lHbG1JQ2hDZFdabVpYSXVWRmxRUlVSZlFWSlNRVmxmVTFWUVVFOVNWQ2tnZTF4dUlDQWdJSFJvYVhOYmIyWm1jMlYwWFNBOUlDaDJZV3gxWlNBK1BqNGdPQ2xjYmlBZ0lDQjBhR2x6VzI5bVpuTmxkQ0FySURGZElEMGdkbUZzZFdWY2JpQWdmU0JsYkhObElIdGNiaUFnSUNCdlltcGxZM1JYY21sMFpWVkpiblF4TmloMGFHbHpMQ0IyWVd4MVpTd2diMlptYzJWMExDQm1ZV3h6WlNsY2JpQWdmVnh1SUNCeVpYUjFjbTRnYjJabWMyVjBJQ3NnTWx4dWZWeHVYRzVtZFc1amRHbHZiaUJ2WW1wbFkzUlhjbWwwWlZWSmJuUXpNaUFvWW5WbUxDQjJZV3gxWlN3Z2IyWm1jMlYwTENCc2FYUjBiR1ZGYm1ScFlXNHBJSHRjYmlBZ2FXWWdLSFpoYkhWbElEd2dNQ2tnZG1Gc2RXVWdQU0F3ZUdabVptWm1abVptSUNzZ2RtRnNkV1VnS3lBeFhHNGdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnFJRDBnVFdGMGFDNXRhVzRvWW5WbUxteGxibWQwYUNBdElHOW1abk5sZEN3Z05DazdJR2tnUENCcU95QnBLeXNwSUh0Y2JpQWdJQ0JpZFdaYmIyWm1jMlYwSUNzZ2FWMGdQU0FvZG1Gc2RXVWdQajQrSUNoc2FYUjBiR1ZGYm1ScFlXNGdQeUJwSURvZ015QXRJR2twSUNvZ09Da2dKaUF3ZUdabVhHNGdJSDFjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlZWSmJuUXpNa3hGSUQwZ1puVnVZM1JwYjI0Z2QzSnBkR1ZWU1c1ME16Sk1SU0FvZG1Gc2RXVXNJRzltWm5ObGRDd2dibTlCYzNObGNuUXBJSHRjYmlBZ2RtRnNkV1VnUFNBcmRtRnNkV1ZjYmlBZ2IyWm1jMlYwSUQwZ2IyWm1jMlYwSUh3Z01GeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQmphR1ZqYTBsdWRDaDBhR2x6TENCMllXeDFaU3dnYjJabWMyVjBMQ0EwTENBd2VHWm1abVptWm1abUxDQXdLVnh1SUNCcFppQW9RblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBJSHRjYmlBZ0lDQjBhR2x6VzI5bVpuTmxkQ0FySUROZElEMGdLSFpoYkhWbElENCtQaUF5TkNsY2JpQWdJQ0IwYUdselcyOW1abk5sZENBcklESmRJRDBnS0haaGJIVmxJRDQrUGlBeE5pbGNiaUFnSUNCMGFHbHpXMjltWm5ObGRDQXJJREZkSUQwZ0tIWmhiSFZsSUQ0K1BpQTRLVnh1SUNBZ0lIUm9hWE5iYjJabWMyVjBYU0E5SUhaaGJIVmxYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdiMkpxWldOMFYzSnBkR1ZWU1c1ME16SW9kR2hwY3l3Z2RtRnNkV1VzSUc5bVpuTmxkQ3dnZEhKMVpTbGNiaUFnZlZ4dUlDQnlaWFIxY200Z2IyWm1jMlYwSUNzZ05GeHVmVnh1WEc1Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG5keWFYUmxWVWx1ZERNeVFrVWdQU0JtZFc1amRHbHZiaUIzY21sMFpWVkpiblF6TWtKRklDaDJZV3gxWlN3Z2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0IyWVd4MVpTQTlJQ3QyWVd4MVpWeHVJQ0J2Wm1aelpYUWdQU0J2Wm1aelpYUWdmQ0F3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJTVzUwS0hSb2FYTXNJSFpoYkhWbExDQnZabVp6WlhRc0lEUXNJREI0Wm1abVptWm1abVlzSURBcFhHNGdJR2xtSUNoQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNrZ2UxeHVJQ0FnSUhSb2FYTmJiMlptYzJWMFhTQTlJQ2gyWVd4MVpTQStQajRnTWpRcFhHNGdJQ0FnZEdocGMxdHZabVp6WlhRZ0t5QXhYU0E5SUNoMllXeDFaU0ErUGo0Z01UWXBYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUWdLeUF5WFNBOUlDaDJZV3gxWlNBK1BqNGdPQ2xjYmlBZ0lDQjBhR2x6VzI5bVpuTmxkQ0FySUROZElEMGdkbUZzZFdWY2JpQWdmU0JsYkhObElIdGNiaUFnSUNCdlltcGxZM1JYY21sMFpWVkpiblF6TWloMGFHbHpMQ0IyWVd4MVpTd2diMlptYzJWMExDQm1ZV3h6WlNsY2JpQWdmVnh1SUNCeVpYUjFjbTRnYjJabWMyVjBJQ3NnTkZ4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBURVVnUFNCbWRXNWpkR2x2YmlCM2NtbDBaVWx1ZEV4RklDaDJZV3gxWlN3Z2IyWm1jMlYwTENCaWVYUmxUR1Z1WjNSb0xDQnViMEZ6YzJWeWRDa2dlMXh1SUNCMllXeDFaU0E5SUN0MllXeDFaVnh1SUNCdlptWnpaWFFnUFNCdlptWnpaWFFnZkNBd1hHNGdJR2xtSUNnaGJtOUJjM05sY25RcElIdGNiaUFnSUNCMllYSWdiR2x0YVhRZ1BTQk5ZWFJvTG5CdmR5Z3lMQ0E0SUNvZ1lubDBaVXhsYm1kMGFDQXRJREVwWEc1Y2JpQWdJQ0JqYUdWamEwbHVkQ2gwYUdsekxDQjJZV3gxWlN3Z2IyWm1jMlYwTENCaWVYUmxUR1Z1WjNSb0xDQnNhVzFwZENBdElERXNJQzFzYVcxcGRDbGNiaUFnZlZ4dVhHNGdJSFpoY2lCcElEMGdNRnh1SUNCMllYSWdiWFZzSUQwZ01WeHVJQ0IyWVhJZ2MzVmlJRDBnZG1Gc2RXVWdQQ0F3SUQ4Z01TQTZJREJjYmlBZ2RHaHBjMXR2Wm1aelpYUmRJRDBnZG1Gc2RXVWdKaUF3ZUVaR1hHNGdJSGRvYVd4bElDZ3JLMmtnUENCaWVYUmxUR1Z1WjNSb0lDWW1JQ2h0ZFd3Z0tqMGdNSGd4TURBcEtTQjdYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUWdLeUJwWFNBOUlDZ29kbUZzZFdVZ0x5QnRkV3dwSUQ0K0lEQXBJQzBnYzNWaUlDWWdNSGhHUmx4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUc5bVpuTmxkQ0FySUdKNWRHVk1aVzVuZEdoY2JuMWNibHh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzUzY21sMFpVbHVkRUpGSUQwZ1puVnVZM1JwYjI0Z2QzSnBkR1ZKYm5SQ1JTQW9kbUZzZFdVc0lHOW1abk5sZEN3Z1lubDBaVXhsYm1kMGFDd2dibTlCYzNObGNuUXBJSHRjYmlBZ2RtRnNkV1VnUFNBcmRtRnNkV1ZjYmlBZ2IyWm1jMlYwSUQwZ2IyWm1jMlYwSUh3Z01GeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQjdYRzRnSUNBZ2RtRnlJR3hwYldsMElEMGdUV0YwYUM1d2IzY29NaXdnT0NBcUlHSjVkR1ZNWlc1bmRHZ2dMU0F4S1Z4dVhHNGdJQ0FnWTJobFkydEpiblFvZEdocGN5d2dkbUZzZFdVc0lHOW1abk5sZEN3Z1lubDBaVXhsYm1kMGFDd2diR2x0YVhRZ0xTQXhMQ0F0YkdsdGFYUXBYRzRnSUgxY2JseHVJQ0IyWVhJZ2FTQTlJR0o1ZEdWTVpXNW5kR2dnTFNBeFhHNGdJSFpoY2lCdGRXd2dQU0F4WEc0Z0lIWmhjaUJ6ZFdJZ1BTQjJZV3gxWlNBOElEQWdQeUF4SURvZ01GeHVJQ0IwYUdselcyOW1abk5sZENBcklHbGRJRDBnZG1Gc2RXVWdKaUF3ZUVaR1hHNGdJSGRvYVd4bElDZ3RMV2tnUGowZ01DQW1KaUFvYlhWc0lDbzlJREI0TVRBd0tTa2dlMXh1SUNBZ0lIUm9hWE5iYjJabWMyVjBJQ3NnYVYwZ1BTQW9LSFpoYkhWbElDOGdiWFZzS1NBK1BpQXdLU0F0SUhOMVlpQW1JREI0UmtaY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdlptWnpaWFFnS3lCaWVYUmxUR1Z1WjNSb1hHNTlYRzVjYmtKMVptWmxjaTV3Y205MGIzUjVjR1V1ZDNKcGRHVkpiblE0SUQwZ1puVnVZM1JwYjI0Z2QzSnBkR1ZKYm5RNElDaDJZV3gxWlN3Z2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0IyWVd4MVpTQTlJQ3QyWVd4MVpWeHVJQ0J2Wm1aelpYUWdQU0J2Wm1aelpYUWdmQ0F3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJTVzUwS0hSb2FYTXNJSFpoYkhWbExDQnZabVp6WlhRc0lERXNJREI0TjJZc0lDMHdlRGd3S1Z4dUlDQnBaaUFvSVVKMVptWmxjaTVVV1ZCRlJGOUJVbEpCV1Y5VFZWQlFUMUpVS1NCMllXeDFaU0E5SUUxaGRHZ3VabXh2YjNJb2RtRnNkV1VwWEc0Z0lHbG1JQ2gyWVd4MVpTQThJREFwSUhaaGJIVmxJRDBnTUhobVppQXJJSFpoYkhWbElDc2dNVnh1SUNCMGFHbHpXMjltWm5ObGRGMGdQU0IyWVd4MVpWeHVJQ0J5WlhSMWNtNGdiMlptYzJWMElDc2dNVnh1ZlZ4dVhHNUNkV1ptWlhJdWNISnZkRzkwZVhCbExuZHlhWFJsU1c1ME1UWk1SU0E5SUdaMWJtTjBhVzl1SUhkeWFYUmxTVzUwTVRaTVJTQW9kbUZzZFdVc0lHOW1abk5sZEN3Z2JtOUJjM05sY25RcElIdGNiaUFnZG1Gc2RXVWdQU0FyZG1Gc2RXVmNiaUFnYjJabWMyVjBJRDBnYjJabWMyVjBJSHdnTUZ4dUlDQnBaaUFvSVc1dlFYTnpaWEowS1NCamFHVmphMGx1ZENoMGFHbHpMQ0IyWVd4MVpTd2diMlptYzJWMExDQXlMQ0F3ZURkbVptWXNJQzB3ZURnd01EQXBYRzRnSUdsbUlDaENkV1ptWlhJdVZGbFFSVVJmUVZKU1FWbGZVMVZRVUU5U1ZDa2dlMXh1SUNBZ0lIUm9hWE5iYjJabWMyVjBYU0E5SUhaaGJIVmxYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUWdLeUF4WFNBOUlDaDJZV3gxWlNBK1BqNGdPQ2xjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J2WW1wbFkzUlhjbWwwWlZWSmJuUXhOaWgwYUdsekxDQjJZV3gxWlN3Z2IyWm1jMlYwTENCMGNuVmxLVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnZabVp6WlhRZ0t5QXlYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZKYm5ReE5rSkZJRDBnWm5WdVkzUnBiMjRnZDNKcGRHVkpiblF4TmtKRklDaDJZV3gxWlN3Z2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0IyWVd4MVpTQTlJQ3QyWVd4MVpWeHVJQ0J2Wm1aelpYUWdQU0J2Wm1aelpYUWdmQ0F3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJTVzUwS0hSb2FYTXNJSFpoYkhWbExDQnZabVp6WlhRc0lESXNJREI0TjJabVppd2dMVEI0T0RBd01DbGNiaUFnYVdZZ0tFSjFabVpsY2k1VVdWQkZSRjlCVWxKQldWOVRWVkJRVDFKVUtTQjdYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUmRJRDBnS0haaGJIVmxJRDQrUGlBNEtWeHVJQ0FnSUhSb2FYTmJiMlptYzJWMElDc2dNVjBnUFNCMllXeDFaVnh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJRzlpYW1WamRGZHlhWFJsVlVsdWRERTJLSFJvYVhNc0lIWmhiSFZsTENCdlptWnpaWFFzSUdaaGJITmxLVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnZabVp6WlhRZ0t5QXlYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZKYm5Rek1reEZJRDBnWm5WdVkzUnBiMjRnZDNKcGRHVkpiblF6TWt4RklDaDJZV3gxWlN3Z2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0IyWVd4MVpTQTlJQ3QyWVd4MVpWeHVJQ0J2Wm1aelpYUWdQU0J2Wm1aelpYUWdmQ0F3WEc0Z0lHbG1JQ2doYm05QmMzTmxjblFwSUdOb1pXTnJTVzUwS0hSb2FYTXNJSFpoYkhWbExDQnZabVp6WlhRc0lEUXNJREI0TjJabVptWm1abVlzSUMwd2VEZ3dNREF3TURBd0tWeHVJQ0JwWmlBb1FuVm1abVZ5TGxSWlVFVkVYMEZTVWtGWlgxTlZVRkJQVWxRcElIdGNiaUFnSUNCMGFHbHpXMjltWm5ObGRGMGdQU0IyWVd4MVpWeHVJQ0FnSUhSb2FYTmJiMlptYzJWMElDc2dNVjBnUFNBb2RtRnNkV1VnUGo0K0lEZ3BYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUWdLeUF5WFNBOUlDaDJZV3gxWlNBK1BqNGdNVFlwWEc0Z0lDQWdkR2hwYzF0dlptWnpaWFFnS3lBelhTQTlJQ2gyWVd4MVpTQStQajRnTWpRcFhHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2IySnFaV04wVjNKcGRHVlZTVzUwTXpJb2RHaHBjeXdnZG1Gc2RXVXNJRzltWm5ObGRDd2dkSEoxWlNsY2JpQWdmVnh1SUNCeVpYUjFjbTRnYjJabWMyVjBJQ3NnTkZ4dWZWeHVYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbmR5YVhSbFNXNTBNekpDUlNBOUlHWjFibU4wYVc5dUlIZHlhWFJsU1c1ME16SkNSU0FvZG1Gc2RXVXNJRzltWm5ObGRDd2dibTlCYzNObGNuUXBJSHRjYmlBZ2RtRnNkV1VnUFNBcmRtRnNkV1ZjYmlBZ2IyWm1jMlYwSUQwZ2IyWm1jMlYwSUh3Z01GeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQmphR1ZqYTBsdWRDaDBhR2x6TENCMllXeDFaU3dnYjJabWMyVjBMQ0EwTENBd2VEZG1abVptWm1abUxDQXRNSGc0TURBd01EQXdNQ2xjYmlBZ2FXWWdLSFpoYkhWbElEd2dNQ2tnZG1Gc2RXVWdQU0F3ZUdabVptWm1abVptSUNzZ2RtRnNkV1VnS3lBeFhHNGdJR2xtSUNoQ2RXWm1aWEl1VkZsUVJVUmZRVkpTUVZsZlUxVlFVRTlTVkNrZ2UxeHVJQ0FnSUhSb2FYTmJiMlptYzJWMFhTQTlJQ2gyWVd4MVpTQStQajRnTWpRcFhHNGdJQ0FnZEdocGMxdHZabVp6WlhRZ0t5QXhYU0E5SUNoMllXeDFaU0ErUGo0Z01UWXBYRzRnSUNBZ2RHaHBjMXR2Wm1aelpYUWdLeUF5WFNBOUlDaDJZV3gxWlNBK1BqNGdPQ2xjYmlBZ0lDQjBhR2x6VzI5bVpuTmxkQ0FySUROZElEMGdkbUZzZFdWY2JpQWdmU0JsYkhObElIdGNiaUFnSUNCdlltcGxZM1JYY21sMFpWVkpiblF6TWloMGFHbHpMQ0IyWVd4MVpTd2diMlptYzJWMExDQm1ZV3h6WlNsY2JpQWdmVnh1SUNCeVpYUjFjbTRnYjJabWMyVjBJQ3NnTkZ4dWZWeHVYRzVtZFc1amRHbHZiaUJqYUdWamEwbEZSVVUzTlRRZ0tHSjFaaXdnZG1Gc2RXVXNJRzltWm5ObGRDd2daWGgwTENCdFlYZ3NJRzFwYmlrZ2UxeHVJQ0JwWmlBb2RtRnNkV1VnUGlCdFlYZ2dmSHdnZG1Gc2RXVWdQQ0J0YVc0cElIUm9jbTkzSUc1bGR5QlNZVzVuWlVWeWNtOXlLQ2QyWVd4MVpTQnBjeUJ2ZFhRZ2IyWWdZbTkxYm1Sekp5bGNiaUFnYVdZZ0tHOW1abk5sZENBcklHVjRkQ0ErSUdKMVppNXNaVzVuZEdncElIUm9jbTkzSUc1bGR5QlNZVzVuWlVWeWNtOXlLQ2RwYm1SbGVDQnZkWFFnYjJZZ2NtRnVaMlVuS1Z4dUlDQnBaaUFvYjJabWMyVjBJRHdnTUNrZ2RHaHliM2NnYm1WM0lGSmhibWRsUlhKeWIzSW9KMmx1WkdWNElHOTFkQ0J2WmlCeVlXNW5aU2NwWEc1OVhHNWNibVoxYm1OMGFXOXVJSGR5YVhSbFJteHZZWFFnS0dKMVppd2dkbUZzZFdVc0lHOW1abk5sZEN3Z2JHbDBkR3hsUlc1a2FXRnVMQ0J1YjBGemMyVnlkQ2tnZTF4dUlDQnBaaUFvSVc1dlFYTnpaWEowS1NCN1hHNGdJQ0FnWTJobFkydEpSVVZGTnpVMEtHSjFaaXdnZG1Gc2RXVXNJRzltWm5ObGRDd2dOQ3dnTXk0ME1ESTRNak0wTmpZek9EVXlPRGcyWlNzek9Dd2dMVE11TkRBeU9ESXpORFkyTXpnMU1qZzRObVVyTXpncFhHNGdJSDFjYmlBZ2FXVmxaVGMxTkM1M2NtbDBaU2hpZFdZc0lIWmhiSFZsTENCdlptWnpaWFFzSUd4cGRIUnNaVVZ1WkdsaGJpd2dNak1zSURRcFhHNGdJSEpsZEhWeWJpQnZabVp6WlhRZ0t5QTBYRzU5WEc1Y2JrSjFabVpsY2k1d2NtOTBiM1I1Y0dVdWQzSnBkR1ZHYkc5aGRFeEZJRDBnWm5WdVkzUnBiMjRnZDNKcGRHVkdiRzloZEV4RklDaDJZV3gxWlN3Z2IyWm1jMlYwTENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0J5WlhSMWNtNGdkM0pwZEdWR2JHOWhkQ2gwYUdsekxDQjJZV3gxWlN3Z2IyWm1jMlYwTENCMGNuVmxMQ0J1YjBGemMyVnlkQ2xjYm4xY2JseHVRblZtWm1WeUxuQnliM1J2ZEhsd1pTNTNjbWwwWlVac2IyRjBRa1VnUFNCbWRXNWpkR2x2YmlCM2NtbDBaVVpzYjJGMFFrVWdLSFpoYkhWbExDQnZabVp6WlhRc0lHNXZRWE56WlhKMEtTQjdYRzRnSUhKbGRIVnliaUIzY21sMFpVWnNiMkYwS0hSb2FYTXNJSFpoYkhWbExDQnZabVp6WlhRc0lHWmhiSE5sTENCdWIwRnpjMlZ5ZENsY2JuMWNibHh1Wm5WdVkzUnBiMjRnZDNKcGRHVkViM1ZpYkdVZ0tHSjFaaXdnZG1Gc2RXVXNJRzltWm5ObGRDd2diR2wwZEd4bFJXNWthV0Z1TENCdWIwRnpjMlZ5ZENrZ2UxeHVJQ0JwWmlBb0lXNXZRWE56WlhKMEtTQjdYRzRnSUNBZ1kyaGxZMnRKUlVWRk56VTBLR0oxWml3Z2RtRnNkV1VzSUc5bVpuTmxkQ3dnT0N3Z01TNDNPVGMyT1RNeE16UTROakl6TVRVM1JTc3pNRGdzSUMweExqYzVOelk1TXpFek5EZzJNak14TlRkRkt6TXdPQ2xjYmlBZ2ZWeHVJQ0JwWldWbE56VTBMbmR5YVhSbEtHSjFaaXdnZG1Gc2RXVXNJRzltWm5ObGRDd2diR2wwZEd4bFJXNWthV0Z1TENBMU1pd2dPQ2xjYmlBZ2NtVjBkWEp1SUc5bVpuTmxkQ0FySURoY2JuMWNibHh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzUzY21sMFpVUnZkV0pzWlV4RklEMGdablZ1WTNScGIyNGdkM0pwZEdWRWIzVmliR1ZNUlNBb2RtRnNkV1VzSUc5bVpuTmxkQ3dnYm05QmMzTmxjblFwSUh0Y2JpQWdjbVYwZFhKdUlIZHlhWFJsUkc5MVlteGxLSFJvYVhNc0lIWmhiSFZsTENCdlptWnpaWFFzSUhSeWRXVXNJRzV2UVhOelpYSjBLVnh1ZlZ4dVhHNUNkV1ptWlhJdWNISnZkRzkwZVhCbExuZHlhWFJsUkc5MVlteGxRa1VnUFNCbWRXNWpkR2x2YmlCM2NtbDBaVVJ2ZFdKc1pVSkZJQ2gyWVd4MVpTd2diMlptYzJWMExDQnViMEZ6YzJWeWRDa2dlMXh1SUNCeVpYUjFjbTRnZDNKcGRHVkViM1ZpYkdVb2RHaHBjeXdnZG1Gc2RXVXNJRzltWm5ObGRDd2dabUZzYzJVc0lHNXZRWE56WlhKMEtWeHVmVnh1WEc0dkx5QmpiM0I1S0hSaGNtZGxkRUoxWm1abGNpd2dkR0Z5WjJWMFUzUmhjblE5TUN3Z2MyOTFjbU5sVTNSaGNuUTlNQ3dnYzI5MWNtTmxSVzVrUFdKMVptWmxjaTVzWlc1bmRHZ3BYRzVDZFdabVpYSXVjSEp2ZEc5MGVYQmxMbU52Y0hrZ1BTQm1kVzVqZEdsdmJpQmpiM0I1SUNoMFlYSm5aWFFzSUhSaGNtZGxkRk4wWVhKMExDQnpkR0Z5ZEN3Z1pXNWtLU0I3WEc0Z0lHbG1JQ2doYzNSaGNuUXBJSE4wWVhKMElEMGdNRnh1SUNCcFppQW9JV1Z1WkNBbUppQmxibVFnSVQwOUlEQXBJR1Z1WkNBOUlIUm9hWE11YkdWdVozUm9YRzRnSUdsbUlDaDBZWEpuWlhSVGRHRnlkQ0ErUFNCMFlYSm5aWFF1YkdWdVozUm9LU0IwWVhKblpYUlRkR0Z5ZENBOUlIUmhjbWRsZEM1c1pXNW5kR2hjYmlBZ2FXWWdLQ0YwWVhKblpYUlRkR0Z5ZENrZ2RHRnlaMlYwVTNSaGNuUWdQU0F3WEc0Z0lHbG1JQ2hsYm1RZ1BpQXdJQ1ltSUdWdVpDQThJSE4wWVhKMEtTQmxibVFnUFNCemRHRnlkRnh1WEc0Z0lDOHZJRU52Y0hrZ01DQmllWFJsY3pzZ2QyVW5jbVVnWkc5dVpWeHVJQ0JwWmlBb1pXNWtJRDA5UFNCemRHRnlkQ2tnY21WMGRYSnVJREJjYmlBZ2FXWWdLSFJoY21kbGRDNXNaVzVuZEdnZ1BUMDlJREFnZkh3Z2RHaHBjeTVzWlc1bmRHZ2dQVDA5SURBcElISmxkSFZ5YmlBd1hHNWNiaUFnTHk4Z1JtRjBZV3dnWlhKeWIzSWdZMjl1WkdsMGFXOXVjMXh1SUNCcFppQW9kR0Z5WjJWMFUzUmhjblFnUENBd0tTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lGSmhibWRsUlhKeWIzSW9KM1JoY21kbGRGTjBZWEowSUc5MWRDQnZaaUJpYjNWdVpITW5LVnh1SUNCOVhHNGdJR2xtSUNoemRHRnlkQ0E4SURBZ2ZId2djM1JoY25RZ1BqMGdkR2hwY3k1c1pXNW5kR2dwSUhSb2NtOTNJRzVsZHlCU1lXNW5aVVZ5Y205eUtDZHpiM1Z5WTJWVGRHRnlkQ0J2ZFhRZ2IyWWdZbTkxYm1Sekp5bGNiaUFnYVdZZ0tHVnVaQ0E4SURBcElIUm9jbTkzSUc1bGR5QlNZVzVuWlVWeWNtOXlLQ2R6YjNWeVkyVkZibVFnYjNWMElHOW1JR0p2ZFc1a2N5Y3BYRzVjYmlBZ0x5OGdRWEpsSUhkbElHOXZZajljYmlBZ2FXWWdLR1Z1WkNBK0lIUm9hWE11YkdWdVozUm9LU0JsYm1RZ1BTQjBhR2x6TG14bGJtZDBhRnh1SUNCcFppQW9kR0Z5WjJWMExteGxibWQwYUNBdElIUmhjbWRsZEZOMFlYSjBJRHdnWlc1a0lDMGdjM1JoY25RcElIdGNiaUFnSUNCbGJtUWdQU0IwWVhKblpYUXViR1Z1WjNSb0lDMGdkR0Z5WjJWMFUzUmhjblFnS3lCemRHRnlkRnh1SUNCOVhHNWNiaUFnZG1GeUlHeGxiaUE5SUdWdVpDQXRJSE4wWVhKMFhHNGdJSFpoY2lCcFhHNWNiaUFnYVdZZ0tIUm9hWE1nUFQwOUlIUmhjbWRsZENBbUppQnpkR0Z5ZENBOElIUmhjbWRsZEZOMFlYSjBJQ1ltSUhSaGNtZGxkRk4wWVhKMElEd2daVzVrS1NCN1hHNGdJQ0FnTHk4Z1pHVnpZMlZ1WkdsdVp5QmpiM0I1SUdaeWIyMGdaVzVrWEc0Z0lDQWdabTl5SUNocElEMGdiR1Z1SUMwZ01Uc2dhU0ErUFNBd095QnBMUzBwSUh0Y2JpQWdJQ0FnSUhSaGNtZGxkRnRwSUNzZ2RHRnlaMlYwVTNSaGNuUmRJRDBnZEdocGMxdHBJQ3NnYzNSaGNuUmRYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0d4bGJpQThJREV3TURBZ2ZId2dJVUoxWm1abGNpNVVXVkJGUkY5QlVsSkJXVjlUVlZCUVQxSlVLU0I3WEc0Z0lDQWdMeThnWVhOalpXNWthVzVuSUdOdmNIa2dabkp2YlNCemRHRnlkRnh1SUNBZ0lHWnZjaUFvYVNBOUlEQTdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2RHRnlaMlYwVzJrZ0t5QjBZWEpuWlhSVGRHRnlkRjBnUFNCMGFHbHpXMmtnS3lCemRHRnlkRjFjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdkR0Z5WjJWMExsOXpaWFFvZEdocGN5NXpkV0poY25KaGVTaHpkR0Z5ZEN3Z2MzUmhjblFnS3lCc1pXNHBMQ0IwWVhKblpYUlRkR0Z5ZENsY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCc1pXNWNibjFjYmx4dUx5OGdabWxzYkNoMllXeDFaU3dnYzNSaGNuUTlNQ3dnWlc1a1BXSjFabVpsY2k1c1pXNW5kR2dwWEc1Q2RXWm1aWEl1Y0hKdmRHOTBlWEJsTG1acGJHd2dQU0JtZFc1amRHbHZiaUJtYVd4c0lDaDJZV3gxWlN3Z2MzUmhjblFzSUdWdVpDa2dlMXh1SUNCcFppQW9JWFpoYkhWbEtTQjJZV3gxWlNBOUlEQmNiaUFnYVdZZ0tDRnpkR0Z5ZENrZ2MzUmhjblFnUFNBd1hHNGdJR2xtSUNnaFpXNWtLU0JsYm1RZ1BTQjBhR2x6TG14bGJtZDBhRnh1WEc0Z0lHbG1JQ2hsYm1RZ1BDQnpkR0Z5ZENrZ2RHaHliM2NnYm1WM0lGSmhibWRsUlhKeWIzSW9KMlZ1WkNBOElITjBZWEowSnlsY2JseHVJQ0F2THlCR2FXeHNJREFnWW5sMFpYTTdJSGRsSjNKbElHUnZibVZjYmlBZ2FXWWdLR1Z1WkNBOVBUMGdjM1JoY25RcElISmxkSFZ5Ymx4dUlDQnBaaUFvZEdocGN5NXNaVzVuZEdnZ1BUMDlJREFwSUhKbGRIVnlibHh1WEc0Z0lHbG1JQ2h6ZEdGeWRDQThJREFnZkh3Z2MzUmhjblFnUGowZ2RHaHBjeTVzWlc1bmRHZ3BJSFJvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0NkemRHRnlkQ0J2ZFhRZ2IyWWdZbTkxYm1Sekp5bGNiaUFnYVdZZ0tHVnVaQ0E4SURBZ2ZId2daVzVrSUQ0Z2RHaHBjeTVzWlc1bmRHZ3BJSFJvY205M0lHNWxkeUJTWVc1blpVVnljbTl5S0NkbGJtUWdiM1YwSUc5bUlHSnZkVzVrY3ljcFhHNWNiaUFnZG1GeUlHbGNiaUFnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0E5UFQwZ0oyNTFiV0psY2ljcElIdGNiaUFnSUNCbWIzSWdLR2tnUFNCemRHRnlkRHNnYVNBOElHVnVaRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjBhR2x6VzJsZElEMGdkbUZzZFdWY2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnZG1GeUlHSjVkR1Z6SUQwZ2RYUm1PRlJ2UW5sMFpYTW9kbUZzZFdVdWRHOVRkSEpwYm1jb0tTbGNiaUFnSUNCMllYSWdiR1Z1SUQwZ1lubDBaWE11YkdWdVozUm9YRzRnSUNBZ1ptOXlJQ2hwSUQwZ2MzUmhjblE3SUdrZ1BDQmxibVE3SUdrckt5a2dlMXh1SUNBZ0lDQWdkR2hwYzF0cFhTQTlJR0o1ZEdWelcya2dKU0JzWlc1ZFhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhSb2FYTmNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ2JtVjNJR0JCY25KaGVVSjFabVpsY21BZ2QybDBhQ0IwYUdVZ0ttTnZjR2xsWkNvZ2JXVnRiM0o1SUc5bUlIUm9aU0JpZFdabVpYSWdhVzV6ZEdGdVkyVXVYRzRnS2lCQlpHUmxaQ0JwYmlCT2IyUmxJREF1TVRJdUlFOXViSGtnWVhaaGFXeGhZbXhsSUdsdUlHSnliM2R6WlhKeklIUm9ZWFFnYzNWd2NHOXlkQ0JCY25KaGVVSjFabVpsY2k1Y2JpQXFMMXh1UW5WbVptVnlMbkJ5YjNSdmRIbHdaUzUwYjBGeWNtRjVRblZtWm1WeUlEMGdablZ1WTNScGIyNGdkRzlCY25KaGVVSjFabVpsY2lBb0tTQjdYRzRnSUdsbUlDaDBlWEJsYjJZZ1ZXbHVkRGhCY25KaGVTQWhQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNCcFppQW9RblZtWm1WeUxsUlpVRVZFWDBGU1VrRlpYMU5WVUZCUFVsUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW9ibVYzSUVKMVptWmxjaWgwYUdsektTa3VZblZtWm1WeVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoY2lCaWRXWWdQU0J1WlhjZ1ZXbHVkRGhCY25KaGVTaDBhR2x6TG14bGJtZDBhQ2xjYmlBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNaVzRnUFNCaWRXWXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBJQ3M5SURFcElIdGNiaUFnSUNBZ0lDQWdZblZtVzJsZElEMGdkR2hwYzF0cFhWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdKMVppNWlkV1ptWlhKY2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2lnblFuVm1abVZ5TG5SdlFYSnlZWGxDZFdabVpYSWdibTkwSUhOMWNIQnZjblJsWkNCcGJpQjBhR2x6SUdKeWIzZHpaWEluS1Z4dUlDQjlYRzU5WEc1Y2JpOHZJRWhGVEZCRlVpQkdWVTVEVkVsUFRsTmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmx4dWRtRnlJRUpRSUQwZ1FuVm1abVZ5TG5CeWIzUnZkSGx3WlZ4dVhHNHZLaXBjYmlBcUlFRjFaMjFsYm5RZ1lTQlZhVzUwT0VGeWNtRjVJQ3BwYm5OMFlXNWpaU29nS0c1dmRDQjBhR1VnVldsdWREaEJjbkpoZVNCamJHRnpjeUVwSUhkcGRHZ2dRblZtWm1WeUlHMWxkR2h2WkhOY2JpQXFMMXh1UW5WbVptVnlMbDloZFdkdFpXNTBJRDBnWm5WdVkzUnBiMjRnWDJGMVoyMWxiblFnS0dGeWNpa2dlMXh1SUNCaGNuSXVZMjl1YzNSeWRXTjBiM0lnUFNCQ2RXWm1aWEpjYmlBZ1lYSnlMbDlwYzBKMVptWmxjaUE5SUhSeWRXVmNibHh1SUNBdkx5QnpZWFpsSUhKbFptVnlaVzVqWlNCMGJ5QnZjbWxuYVc1aGJDQlZhVzUwT0VGeWNtRjVJSE5sZENCdFpYUm9iMlFnWW1WbWIzSmxJRzkyWlhKM2NtbDBhVzVuWEc0Z0lHRnljaTVmYzJWMElEMGdZWEp5TG5ObGRGeHVYRzRnSUM4dklHUmxjSEpsWTJGMFpXUmNiaUFnWVhKeUxtZGxkQ0E5SUVKUUxtZGxkRnh1SUNCaGNuSXVjMlYwSUQwZ1FsQXVjMlYwWEc1Y2JpQWdZWEp5TG5keWFYUmxJRDBnUWxBdWQzSnBkR1ZjYmlBZ1lYSnlMblJ2VTNSeWFXNW5JRDBnUWxBdWRHOVRkSEpwYm1kY2JpQWdZWEp5TG5SdlRHOWpZV3hsVTNSeWFXNW5JRDBnUWxBdWRHOVRkSEpwYm1kY2JpQWdZWEp5TG5SdlNsTlBUaUE5SUVKUUxuUnZTbE5QVGx4dUlDQmhjbkl1WlhGMVlXeHpJRDBnUWxBdVpYRjFZV3h6WEc0Z0lHRnljaTVqYjIxd1lYSmxJRDBnUWxBdVkyOXRjR0Z5WlZ4dUlDQmhjbkl1YVc1a1pYaFBaaUE5SUVKUUxtbHVaR1Y0VDJaY2JpQWdZWEp5TG1OdmNIa2dQU0JDVUM1amIzQjVYRzRnSUdGeWNpNXpiR2xqWlNBOUlFSlFMbk5zYVdObFhHNGdJR0Z5Y2k1eVpXRmtWVWx1ZEV4RklEMGdRbEF1Y21WaFpGVkpiblJNUlZ4dUlDQmhjbkl1Y21WaFpGVkpiblJDUlNBOUlFSlFMbkpsWVdSVlNXNTBRa1ZjYmlBZ1lYSnlMbkpsWVdSVlNXNTBPQ0E5SUVKUUxuSmxZV1JWU1c1ME9GeHVJQ0JoY25JdWNtVmhaRlZKYm5ReE5reEZJRDBnUWxBdWNtVmhaRlZKYm5ReE5reEZYRzRnSUdGeWNpNXlaV0ZrVlVsdWRERTJRa1VnUFNCQ1VDNXlaV0ZrVlVsdWRERTJRa1ZjYmlBZ1lYSnlMbkpsWVdSVlNXNTBNekpNUlNBOUlFSlFMbkpsWVdSVlNXNTBNekpNUlZ4dUlDQmhjbkl1Y21WaFpGVkpiblF6TWtKRklEMGdRbEF1Y21WaFpGVkpiblF6TWtKRlhHNGdJR0Z5Y2k1eVpXRmtTVzUwVEVVZ1BTQkNVQzV5WldGa1NXNTBURVZjYmlBZ1lYSnlMbkpsWVdSSmJuUkNSU0E5SUVKUUxuSmxZV1JKYm5SQ1JWeHVJQ0JoY25JdWNtVmhaRWx1ZERnZ1BTQkNVQzV5WldGa1NXNTBPRnh1SUNCaGNuSXVjbVZoWkVsdWRERTJURVVnUFNCQ1VDNXlaV0ZrU1c1ME1UWk1SVnh1SUNCaGNuSXVjbVZoWkVsdWRERTJRa1VnUFNCQ1VDNXlaV0ZrU1c1ME1UWkNSVnh1SUNCaGNuSXVjbVZoWkVsdWRETXlURVVnUFNCQ1VDNXlaV0ZrU1c1ME16Sk1SVnh1SUNCaGNuSXVjbVZoWkVsdWRETXlRa1VnUFNCQ1VDNXlaV0ZrU1c1ME16SkNSVnh1SUNCaGNuSXVjbVZoWkVac2IyRjBURVVnUFNCQ1VDNXlaV0ZrUm14dllYUk1SVnh1SUNCaGNuSXVjbVZoWkVac2IyRjBRa1VnUFNCQ1VDNXlaV0ZrUm14dllYUkNSVnh1SUNCaGNuSXVjbVZoWkVSdmRXSnNaVXhGSUQwZ1FsQXVjbVZoWkVSdmRXSnNaVXhGWEc0Z0lHRnljaTV5WldGa1JHOTFZbXhsUWtVZ1BTQkNVQzV5WldGa1JHOTFZbXhsUWtWY2JpQWdZWEp5TG5keWFYUmxWVWx1ZERnZ1BTQkNVQzUzY21sMFpWVkpiblE0WEc0Z0lHRnljaTUzY21sMFpWVkpiblJNUlNBOUlFSlFMbmR5YVhSbFZVbHVkRXhGWEc0Z0lHRnljaTUzY21sMFpWVkpiblJDUlNBOUlFSlFMbmR5YVhSbFZVbHVkRUpGWEc0Z0lHRnljaTUzY21sMFpWVkpiblF4Tmt4RklEMGdRbEF1ZDNKcGRHVlZTVzUwTVRaTVJWeHVJQ0JoY25JdWQzSnBkR1ZWU1c1ME1UWkNSU0E5SUVKUUxuZHlhWFJsVlVsdWRERTJRa1ZjYmlBZ1lYSnlMbmR5YVhSbFZVbHVkRE15VEVVZ1BTQkNVQzUzY21sMFpWVkpiblF6TWt4RlhHNGdJR0Z5Y2k1M2NtbDBaVlZKYm5Rek1rSkZJRDBnUWxBdWQzSnBkR1ZWU1c1ME16SkNSVnh1SUNCaGNuSXVkM0pwZEdWSmJuUk1SU0E5SUVKUUxuZHlhWFJsU1c1MFRFVmNiaUFnWVhKeUxuZHlhWFJsU1c1MFFrVWdQU0JDVUM1M2NtbDBaVWx1ZEVKRlhHNGdJR0Z5Y2k1M2NtbDBaVWx1ZERnZ1BTQkNVQzUzY21sMFpVbHVkRGhjYmlBZ1lYSnlMbmR5YVhSbFNXNTBNVFpNUlNBOUlFSlFMbmR5YVhSbFNXNTBNVFpNUlZ4dUlDQmhjbkl1ZDNKcGRHVkpiblF4TmtKRklEMGdRbEF1ZDNKcGRHVkpiblF4TmtKRlhHNGdJR0Z5Y2k1M2NtbDBaVWx1ZERNeVRFVWdQU0JDVUM1M2NtbDBaVWx1ZERNeVRFVmNiaUFnWVhKeUxuZHlhWFJsU1c1ME16SkNSU0E5SUVKUUxuZHlhWFJsU1c1ME16SkNSVnh1SUNCaGNuSXVkM0pwZEdWR2JHOWhkRXhGSUQwZ1FsQXVkM0pwZEdWR2JHOWhkRXhGWEc0Z0lHRnljaTUzY21sMFpVWnNiMkYwUWtVZ1BTQkNVQzUzY21sMFpVWnNiMkYwUWtWY2JpQWdZWEp5TG5keWFYUmxSRzkxWW14bFRFVWdQU0JDVUM1M2NtbDBaVVJ2ZFdKc1pVeEZYRzRnSUdGeWNpNTNjbWwwWlVSdmRXSnNaVUpGSUQwZ1FsQXVkM0pwZEdWRWIzVmliR1ZDUlZ4dUlDQmhjbkl1Wm1sc2JDQTlJRUpRTG1acGJHeGNiaUFnWVhKeUxtbHVjM0JsWTNRZ1BTQkNVQzVwYm5Od1pXTjBYRzRnSUdGeWNpNTBiMEZ5Y21GNVFuVm1abVZ5SUQwZ1FsQXVkRzlCY25KaGVVSjFabVpsY2x4dVhHNGdJSEpsZEhWeWJpQmhjbkpjYm4xY2JseHVkbUZ5SUVsT1ZrRk1TVVJmUWtGVFJUWTBYMUpGSUQwZ0wxdGVLMXhjTHpBdE9VRXRXbUV0ZWkxZlhTOW5YRzVjYm1aMWJtTjBhVzl1SUdKaGMyVTJOR05zWldGdUlDaHpkSElwSUh0Y2JpQWdMeThnVG05a1pTQnpkSEpwY0hNZ2IzVjBJR2x1ZG1Gc2FXUWdZMmhoY21GamRHVnljeUJzYVd0bElGeGNiaUJoYm1RZ1hGeDBJR1p5YjIwZ2RHaGxJSE4wY21sdVp5d2dZbUZ6WlRZMExXcHpJR1J2WlhNZ2JtOTBYRzRnSUhOMGNpQTlJSE4wY21sdVozUnlhVzBvYzNSeUtTNXlaWEJzWVdObEtFbE9Wa0ZNU1VSZlFrRlRSVFkwWDFKRkxDQW5KeWxjYmlBZ0x5OGdUbTlrWlNCamIyNTJaWEowY3lCemRISnBibWR6SUhkcGRHZ2diR1Z1WjNSb0lEd2dNaUIwYnlBbkoxeHVJQ0JwWmlBb2MzUnlMbXhsYm1kMGFDQThJRElwSUhKbGRIVnliaUFuSjF4dUlDQXZMeUJPYjJSbElHRnNiRzkzY3lCbWIzSWdibTl1TFhCaFpHUmxaQ0JpWVhObE5qUWdjM1J5YVc1bmN5QW9iV2x6YzJsdVp5QjBjbUZwYkdsdVp5QTlQVDBwTENCaVlYTmxOalF0YW5NZ1pHOWxjeUJ1YjNSY2JpQWdkMmhwYkdVZ0tITjBjaTVzWlc1bmRHZ2dKU0EwSUNFOVBTQXdLU0I3WEc0Z0lDQWdjM1J5SUQwZ2MzUnlJQ3NnSnowblhHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOMGNseHVmVnh1WEc1bWRXNWpkR2x2YmlCemRISnBibWQwY21sdElDaHpkSElwSUh0Y2JpQWdhV1lnS0hOMGNpNTBjbWx0S1NCeVpYUjFjbTRnYzNSeUxuUnlhVzBvS1Z4dUlDQnlaWFIxY200Z2MzUnlMbkpsY0d4aFkyVW9MMTVjWEhNcmZGeGNjeXNrTDJjc0lDY25LVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQjBiMGhsZUNBb2Jpa2dlMXh1SUNCcFppQW9iaUE4SURFMktTQnlaWFIxY200Z0p6QW5JQ3NnYmk1MGIxTjBjbWx1WnlneE5pbGNiaUFnY21WMGRYSnVJRzR1ZEc5VGRISnBibWNvTVRZcFhHNTlYRzVjYm1aMWJtTjBhVzl1SUhWMFpqaFViMEo1ZEdWeklDaHpkSEpwYm1jc0lIVnVhWFJ6S1NCN1hHNGdJSFZ1YVhSeklEMGdkVzVwZEhNZ2ZId2dTVzVtYVc1cGRIbGNiaUFnZG1GeUlHTnZaR1ZRYjJsdWRGeHVJQ0IyWVhJZ2JHVnVaM1JvSUQwZ2MzUnlhVzVuTG14bGJtZDBhRnh1SUNCMllYSWdiR1ZoWkZOMWNuSnZaMkYwWlNBOUlHNTFiR3hjYmlBZ2RtRnlJR0o1ZEdWeklEMGdXMTFjYmx4dUlDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJR3hsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWTI5a1pWQnZhVzUwSUQwZ2MzUnlhVzVuTG1Ob1lYSkRiMlJsUVhRb2FTbGNibHh1SUNBZ0lDOHZJR2x6SUhOMWNuSnZaMkYwWlNCamIyMXdiMjVsYm5SY2JpQWdJQ0JwWmlBb1kyOWtaVkJ2YVc1MElENGdNSGhFTjBaR0lDWW1JR052WkdWUWIybHVkQ0E4SURCNFJUQXdNQ2tnZTF4dUlDQWdJQ0FnTHk4Z2JHRnpkQ0JqYUdGeUlIZGhjeUJoSUd4bFlXUmNiaUFnSUNBZ0lHbG1JQ2doYkdWaFpGTjFjbkp2WjJGMFpTa2dlMXh1SUNBZ0lDQWdJQ0F2THlCdWJ5QnNaV0ZrSUhsbGRGeHVJQ0FnSUNBZ0lDQnBaaUFvWTI5a1pWQnZhVzUwSUQ0Z01IaEVRa1pHS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnZFc1bGVIQmxZM1JsWkNCMGNtRnBiRnh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ29kVzVwZEhNZ0xUMGdNeWtnUGlBdE1Ta2dZbmwwWlhNdWNIVnphQ2d3ZUVWR0xDQXdlRUpHTENBd2VFSkVLVnh1SUNBZ0lDQWdJQ0FnSUdOdmJuUnBiblZsWEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2FTQXJJREVnUFQwOUlHeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUhWdWNHRnBjbVZrSUd4bFlXUmNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0tIVnVhWFJ6SUMwOUlETXBJRDRnTFRFcElHSjVkR1Z6TG5CMWMyZ29NSGhGUml3Z01IaENSaXdnTUhoQ1JDbGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVnh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdkbUZzYVdRZ2JHVmhaRnh1SUNBZ0lDQWdJQ0JzWldGa1UzVnljbTluWVhSbElEMGdZMjlrWlZCdmFXNTBYRzVjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1ZjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z01pQnNaV0ZrY3lCcGJpQmhJSEp2ZDF4dUlDQWdJQ0FnYVdZZ0tHTnZaR1ZRYjJsdWRDQThJREI0UkVNd01Da2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0tIVnVhWFJ6SUMwOUlETXBJRDRnTFRFcElHSjVkR1Z6TG5CMWMyZ29NSGhGUml3Z01IaENSaXdnTUhoQ1JDbGNiaUFnSUNBZ0lDQWdiR1ZoWkZOMWNuSnZaMkYwWlNBOUlHTnZaR1ZRYjJsdWRGeHVJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpWeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQXZMeUIyWVd4cFpDQnpkWEp5YjJkaGRHVWdjR0ZwY2x4dUlDQWdJQ0FnWTI5a1pWQnZhVzUwSUQwZ2JHVmhaRk4xY25KdloyRjBaU0F0SURCNFJEZ3dNQ0E4UENBeE1DQjhJR052WkdWUWIybHVkQ0F0SURCNFJFTXdNQ0I4SURCNE1UQXdNREJjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLR3hsWVdSVGRYSnliMmRoZEdVcElIdGNiaUFnSUNBZ0lDOHZJSFpoYkdsa0lHSnRjQ0JqYUdGeUxDQmlkWFFnYkdGemRDQmphR0Z5SUhkaGN5QmhJR3hsWVdSY2JpQWdJQ0FnSUdsbUlDZ29kVzVwZEhNZ0xUMGdNeWtnUGlBdE1Ta2dZbmwwWlhNdWNIVnphQ2d3ZUVWR0xDQXdlRUpHTENBd2VFSkVLVnh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxZV1JUZFhKeWIyZGhkR1VnUFNCdWRXeHNYRzVjYmlBZ0lDQXZMeUJsYm1OdlpHVWdkWFJtT0Z4dUlDQWdJR2xtSUNoamIyUmxVRzlwYm5RZ1BDQXdlRGd3S1NCN1hHNGdJQ0FnSUNCcFppQW9LSFZ1YVhSeklDMDlJREVwSUR3Z01Da2dZbkpsWVd0Y2JpQWdJQ0FnSUdKNWRHVnpMbkIxYzJnb1kyOWtaVkJ2YVc1MEtWeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOWtaVkJ2YVc1MElEd2dNSGc0TURBcElIdGNiaUFnSUNBZ0lHbG1JQ2dvZFc1cGRITWdMVDBnTWlrZ1BDQXdLU0JpY21WaGExeHVJQ0FnSUNBZ1lubDBaWE11Y0hWemFDaGNiaUFnSUNBZ0lDQWdZMjlrWlZCdmFXNTBJRDQrSURCNE5pQjhJREI0UXpBc1hHNGdJQ0FnSUNBZ0lHTnZaR1ZRYjJsdWRDQW1JREI0TTBZZ2ZDQXdlRGd3WEc0Z0lDQWdJQ0FwWEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hqYjJSbFVHOXBiblFnUENBd2VERXdNREF3S1NCN1hHNGdJQ0FnSUNCcFppQW9LSFZ1YVhSeklDMDlJRE1wSUR3Z01Da2dZbkpsWVd0Y2JpQWdJQ0FnSUdKNWRHVnpMbkIxYzJnb1hHNGdJQ0FnSUNBZ0lHTnZaR1ZRYjJsdWRDQStQaUF3ZUVNZ2ZDQXdlRVV3TEZ4dUlDQWdJQ0FnSUNCamIyUmxVRzlwYm5RZ1BqNGdNSGcySUNZZ01IZ3pSaUI4SURCNE9EQXNYRzRnSUNBZ0lDQWdJR052WkdWUWIybHVkQ0FtSURCNE0wWWdmQ0F3ZURnd1hHNGdJQ0FnSUNBcFhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoamIyUmxVRzlwYm5RZ1BDQXdlREV4TURBd01Da2dlMXh1SUNBZ0lDQWdhV1lnS0NoMWJtbDBjeUF0UFNBMEtTQThJREFwSUdKeVpXRnJYRzRnSUNBZ0lDQmllWFJsY3k1d2RYTm9LRnh1SUNBZ0lDQWdJQ0JqYjJSbFVHOXBiblFnUGo0Z01IZ3hNaUI4SURCNFJqQXNYRzRnSUNBZ0lDQWdJR052WkdWUWIybHVkQ0ErUGlBd2VFTWdKaUF3ZUROR0lId2dNSGc0TUN4Y2JpQWdJQ0FnSUNBZ1kyOWtaVkJ2YVc1MElENCtJREI0TmlBbUlEQjRNMFlnZkNBd2VEZ3dMRnh1SUNBZ0lDQWdJQ0JqYjJSbFVHOXBiblFnSmlBd2VETkdJSHdnTUhnNE1GeHVJQ0FnSUNBZ0tWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMGx1ZG1Gc2FXUWdZMjlrWlNCd2IybHVkQ2NwWEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJR0o1ZEdWelhHNTlYRzVjYm1aMWJtTjBhVzl1SUdGelkybHBWRzlDZVhSbGN5QW9jM1J5S1NCN1hHNGdJSFpoY2lCaWVYUmxRWEp5WVhrZ1BTQmJYVnh1SUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElITjBjaTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUM4dklFNXZaR1VuY3lCamIyUmxJSE5sWlcxeklIUnZJR0psSUdSdmFXNW5JSFJvYVhNZ1lXNWtJRzV2ZENBbUlEQjROMFl1TGx4dUlDQWdJR0o1ZEdWQmNuSmhlUzV3ZFhOb0tITjBjaTVqYUdGeVEyOWtaVUYwS0drcElDWWdNSGhHUmlsY2JpQWdmVnh1SUNCeVpYUjFjbTRnWW5sMFpVRnljbUY1WEc1OVhHNWNibVoxYm1OMGFXOXVJSFYwWmpFMmJHVlViMEo1ZEdWeklDaHpkSElzSUhWdWFYUnpLU0I3WEc0Z0lIWmhjaUJqTENCb2FTd2diRzljYmlBZ2RtRnlJR0o1ZEdWQmNuSmhlU0E5SUZ0ZFhHNGdJR1p2Y2lBb2RtRnlJR2tnUFNBd095QnBJRHdnYzNSeUxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdhV1lnS0NoMWJtbDBjeUF0UFNBeUtTQThJREFwSUdKeVpXRnJYRzVjYmlBZ0lDQmpJRDBnYzNSeUxtTm9ZWEpEYjJSbFFYUW9hU2xjYmlBZ0lDQm9hU0E5SUdNZ1BqNGdPRnh1SUNBZ0lHeHZJRDBnWXlBbElESTFObHh1SUNBZ0lHSjVkR1ZCY25KaGVTNXdkWE5vS0d4dktWeHVJQ0FnSUdKNWRHVkJjbkpoZVM1d2RYTm9LR2hwS1Z4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdKNWRHVkJjbkpoZVZ4dWZWeHVYRzVtZFc1amRHbHZiaUJpWVhObE5qUlViMEo1ZEdWeklDaHpkSElwSUh0Y2JpQWdjbVYwZFhKdUlHSmhjMlUyTkM1MGIwSjVkR1ZCY25KaGVTaGlZWE5sTmpSamJHVmhiaWh6ZEhJcEtWeHVmVnh1WEc1bWRXNWpkR2x2YmlCaWJHbDBRblZtWm1WeUlDaHpjbU1zSUdSemRDd2diMlptYzJWMExDQnNaVzVuZEdncElIdGNiaUFnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCc1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHbG1JQ2dvYVNBcklHOW1abk5sZENBK1BTQmtjM1F1YkdWdVozUm9LU0I4ZkNBb2FTQStQU0J6Y21NdWJHVnVaM1JvS1NrZ1luSmxZV3RjYmlBZ0lDQmtjM1JiYVNBcklHOW1abk5sZEYwZ1BTQnpjbU5iYVYxY2JpQWdmVnh1SUNCeVpYUjFjbTRnYVZ4dWZWeHVJaXdpZG1GeUlHeHZiMnQxY0NBOUlDZEJRa05FUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldtRmlZMlJsWm1kb2FXcHJiRzF1YjNCeGNuTjBkWFozZUhsNk1ERXlNelExTmpjNE9Tc3ZKenRjYmx4dU95aG1kVzVqZEdsdmJpQW9aWGh3YjNKMGN5a2dlMXh1WEhRbmRYTmxJSE4wY21samRDYzdYRzVjYmlBZ2RtRnlJRUZ5Y2lBOUlDaDBlWEJsYjJZZ1ZXbHVkRGhCY25KaGVTQWhQVDBnSjNWdVpHVm1hVzVsWkNjcFhHNGdJQ0FnUHlCVmFXNTBPRUZ5Y21GNVhHNGdJQ0FnT2lCQmNuSmhlVnh1WEc1Y2RIWmhjaUJRVEZWVElDQWdQU0FuS3ljdVkyaGhja052WkdWQmRDZ3dLVnh1WEhSMllYSWdVMHhCVTBnZ0lEMGdKeThuTG1Ob1lYSkRiMlJsUVhRb01DbGNibHgwZG1GeUlFNVZUVUpGVWlBOUlDY3dKeTVqYUdGeVEyOWtaVUYwS0RBcFhHNWNkSFpoY2lCTVQxZEZVaUFnUFNBbllTY3VZMmhoY2tOdlpHVkJkQ2d3S1Z4dVhIUjJZWElnVlZCUVJWSWdJRDBnSjBFbkxtTm9ZWEpEYjJSbFFYUW9NQ2xjYmx4MGRtRnlJRkJNVlZOZlZWSk1YMU5CUmtVZ1BTQW5MU2N1WTJoaGNrTnZaR1ZCZENnd0tWeHVYSFIyWVhJZ1UweEJVMGhmVlZKTVgxTkJSa1VnUFNBblh5Y3VZMmhoY2tOdlpHVkJkQ2d3S1Z4dVhHNWNkR1oxYm1OMGFXOXVJR1JsWTI5a1pTQW9aV3gwS1NCN1hHNWNkRngwZG1GeUlHTnZaR1VnUFNCbGJIUXVZMmhoY2tOdlpHVkJkQ2d3S1Z4dVhIUmNkR2xtSUNoamIyUmxJRDA5UFNCUVRGVlRJSHg4WEc1Y2RGeDBJQ0FnSUdOdlpHVWdQVDA5SUZCTVZWTmZWVkpNWDFOQlJrVXBYRzVjZEZ4MFhIUnlaWFIxY200Z05qSWdMeThnSnlzblhHNWNkRngwYVdZZ0tHTnZaR1VnUFQwOUlGTk1RVk5JSUh4OFhHNWNkRngwSUNBZ0lHTnZaR1VnUFQwOUlGTk1RVk5JWDFWU1RGOVRRVVpGS1Z4dVhIUmNkRngwY21WMGRYSnVJRFl6SUM4dklDY3ZKMXh1WEhSY2RHbG1JQ2hqYjJSbElEd2dUbFZOUWtWU0tWeHVYSFJjZEZ4MGNtVjBkWEp1SUMweElDOHZibThnYldGMFkyaGNibHgwWEhScFppQW9ZMjlrWlNBOElFNVZUVUpGVWlBcklERXdLVnh1WEhSY2RGeDBjbVYwZFhKdUlHTnZaR1VnTFNCT1ZVMUNSVklnS3lBeU5pQXJJREkyWEc1Y2RGeDBhV1lnS0dOdlpHVWdQQ0JWVUZCRlVpQXJJREkyS1Z4dVhIUmNkRngwY21WMGRYSnVJR052WkdVZ0xTQlZVRkJGVWx4dVhIUmNkR2xtSUNoamIyUmxJRHdnVEU5WFJWSWdLeUF5TmlsY2JseDBYSFJjZEhKbGRIVnliaUJqYjJSbElDMGdURTlYUlZJZ0t5QXlObHh1WEhSOVhHNWNibHgwWm5WdVkzUnBiMjRnWWpZMFZHOUNlWFJsUVhKeVlYa2dLR0kyTkNrZ2UxeHVYSFJjZEhaaGNpQnBMQ0JxTENCc0xDQjBiWEFzSUhCc1lXTmxTRzlzWkdWeWN5d2dZWEp5WEc1Y2JseDBYSFJwWmlBb1lqWTBMbXhsYm1kMGFDQWxJRFFnUGlBd0tTQjdYRzVjZEZ4MFhIUjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owbHVkbUZzYVdRZ2MzUnlhVzVuTGlCTVpXNW5kR2dnYlhWemRDQmlaU0JoSUcxMWJIUnBjR3hsSUc5bUlEUW5LVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJSFJvWlNCdWRXMWlaWElnYjJZZ1pYRjFZV3dnYzJsbmJuTWdLSEJzWVdObElHaHZiR1JsY25NcFhHNWNkRngwTHk4Z2FXWWdkR2hsY21VZ1lYSmxJSFIzYnlCd2JHRmpaV2h2YkdSbGNuTXNJSFJvWVc0Z2RHaGxJSFIzYnlCamFHRnlZV04wWlhKeklHSmxabTl5WlNCcGRGeHVYSFJjZEM4dklISmxjSEpsYzJWdWRDQnZibVVnWW5sMFpWeHVYSFJjZEM4dklHbG1JSFJvWlhKbElHbHpJRzl1YkhrZ2IyNWxMQ0IwYUdWdUlIUm9aU0IwYUhKbFpTQmphR0Z5WVdOMFpYSnpJR0psWm05eVpTQnBkQ0J5WlhCeVpYTmxiblFnTWlCaWVYUmxjMXh1WEhSY2RDOHZJSFJvYVhNZ2FYTWdhblZ6ZENCaElHTm9aV0Z3SUdoaFkyc2dkRzhnYm05MElHUnZJR2x1WkdWNFQyWWdkSGRwWTJWY2JseDBYSFIyWVhJZ2JHVnVJRDBnWWpZMExteGxibWQwYUZ4dVhIUmNkSEJzWVdObFNHOXNaR1Z5Y3lBOUlDYzlKeUE5UFQwZ1lqWTBMbU5vWVhKQmRDaHNaVzRnTFNBeUtTQS9JRElnT2lBblBTY2dQVDA5SUdJMk5DNWphR0Z5UVhRb2JHVnVJQzBnTVNrZ1B5QXhJRG9nTUZ4dVhHNWNkRngwTHk4Z1ltRnpaVFkwSUdseklEUXZNeUFySUhWd0lIUnZJSFIzYnlCamFHRnlZV04wWlhKeklHOW1JSFJvWlNCdmNtbG5hVzVoYkNCa1lYUmhYRzVjZEZ4MFlYSnlJRDBnYm1WM0lFRnljaWhpTmpRdWJHVnVaM1JvSUNvZ015QXZJRFFnTFNCd2JHRmpaVWh2YkdSbGNuTXBYRzVjYmx4MFhIUXZMeUJwWmlCMGFHVnlaU0JoY21VZ2NHeGhZMlZvYjJ4a1pYSnpMQ0J2Ym14NUlHZGxkQ0IxY0NCMGJ5QjBhR1VnYkdGemRDQmpiMjF3YkdWMFpTQTBJR05vWVhKelhHNWNkRngwYkNBOUlIQnNZV05sU0c5c1pHVnljeUErSURBZ1B5QmlOalF1YkdWdVozUm9JQzBnTkNBNklHSTJOQzVzWlc1bmRHaGNibHh1WEhSY2RIWmhjaUJNSUQwZ01GeHVYRzVjZEZ4MFpuVnVZM1JwYjI0Z2NIVnphQ0FvZGlrZ2UxeHVYSFJjZEZ4MFlYSnlXMHdySzEwZ1BTQjJYRzVjZEZ4MGZWeHVYRzVjZEZ4MFptOXlJQ2hwSUQwZ01Dd2dhaUE5SURBN0lHa2dQQ0JzT3lCcElDczlJRFFzSUdvZ0t6MGdNeWtnZTF4dVhIUmNkRngwZEcxd0lEMGdLR1JsWTI5a1pTaGlOalF1WTJoaGNrRjBLR2twS1NBOFBDQXhPQ2tnZkNBb1pHVmpiMlJsS0dJMk5DNWphR0Z5UVhRb2FTQXJJREVwS1NBOFBDQXhNaWtnZkNBb1pHVmpiMlJsS0dJMk5DNWphR0Z5UVhRb2FTQXJJRElwS1NBOFBDQTJLU0I4SUdSbFkyOWtaU2hpTmpRdVkyaGhja0YwS0drZ0t5QXpLU2xjYmx4MFhIUmNkSEIxYzJnb0tIUnRjQ0FtSURCNFJrWXdNREF3S1NBK1BpQXhOaWxjYmx4MFhIUmNkSEIxYzJnb0tIUnRjQ0FtSURCNFJrWXdNQ2tnUGo0Z09DbGNibHgwWEhSY2RIQjFjMmdvZEcxd0lDWWdNSGhHUmlsY2JseDBYSFI5WEc1Y2JseDBYSFJwWmlBb2NHeGhZMlZJYjJ4a1pYSnpJRDA5UFNBeUtTQjdYRzVjZEZ4MFhIUjBiWEFnUFNBb1pHVmpiMlJsS0dJMk5DNWphR0Z5UVhRb2FTa3BJRHc4SURJcElId2dLR1JsWTI5a1pTaGlOalF1WTJoaGNrRjBLR2tnS3lBeEtTa2dQajRnTkNsY2JseDBYSFJjZEhCMWMyZ29kRzF3SUNZZ01IaEdSaWxjYmx4MFhIUjlJR1ZzYzJVZ2FXWWdLSEJzWVdObFNHOXNaR1Z5Y3lBOVBUMGdNU2tnZTF4dVhIUmNkRngwZEcxd0lEMGdLR1JsWTI5a1pTaGlOalF1WTJoaGNrRjBLR2twS1NBOFBDQXhNQ2tnZkNBb1pHVmpiMlJsS0dJMk5DNWphR0Z5UVhRb2FTQXJJREVwS1NBOFBDQTBLU0I4SUNoa1pXTnZaR1VvWWpZMExtTm9ZWEpCZENocElDc2dNaWtwSUQ0K0lESXBYRzVjZEZ4MFhIUndkWE5vS0NoMGJYQWdQajRnT0NrZ0ppQXdlRVpHS1Z4dVhIUmNkRngwY0hWemFDaDBiWEFnSmlBd2VFWkdLVnh1WEhSY2RIMWNibHh1WEhSY2RISmxkSFZ5YmlCaGNuSmNibHgwZlZ4dVhHNWNkR1oxYm1OMGFXOXVJSFZwYm5RNFZHOUNZWE5sTmpRZ0tIVnBiblE0S1NCN1hHNWNkRngwZG1GeUlHa3NYRzVjZEZ4MFhIUmxlSFJ5WVVKNWRHVnpJRDBnZFdsdWREZ3ViR1Z1WjNSb0lDVWdNeXdnTHk4Z2FXWWdkMlVnYUdGMlpTQXhJR0o1ZEdVZ2JHVm1kQ3dnY0dGa0lESWdZbmwwWlhOY2JseDBYSFJjZEc5MWRIQjFkQ0E5SUZ3aVhDSXNYRzVjZEZ4MFhIUjBaVzF3TENCc1pXNW5kR2hjYmx4dVhIUmNkR1oxYm1OMGFXOXVJR1Z1WTI5a1pTQW9iblZ0S1NCN1hHNWNkRngwWEhSeVpYUjFjbTRnYkc5dmEzVndMbU5vWVhKQmRDaHVkVzBwWEc1Y2RGeDBmVnh1WEc1Y2RGeDBablZ1WTNScGIyNGdkSEpwY0d4bGRGUnZRbUZ6WlRZMElDaHVkVzBwSUh0Y2JseDBYSFJjZEhKbGRIVnliaUJsYm1OdlpHVW9iblZ0SUQ0K0lERTRJQ1lnTUhnelJpa2dLeUJsYm1OdlpHVW9iblZ0SUQ0K0lERXlJQ1lnTUhnelJpa2dLeUJsYm1OdlpHVW9iblZ0SUQ0K0lEWWdKaUF3ZUROR0tTQXJJR1Z1WTI5a1pTaHVkVzBnSmlBd2VETkdLVnh1WEhSY2RIMWNibHh1WEhSY2RDOHZJR2R2SUhSb2NtOTFaMmdnZEdobElHRnljbUY1SUdWMlpYSjVJSFJvY21WbElHSjVkR1Z6TENCM1pTZHNiQ0JrWldGc0lIZHBkR2dnZEhKaGFXeHBibWNnYzNSMVptWWdiR0YwWlhKY2JseDBYSFJtYjNJZ0tHa2dQU0F3TENCc1pXNW5kR2dnUFNCMWFXNTBPQzVzWlc1bmRHZ2dMU0JsZUhSeVlVSjVkR1Z6T3lCcElEd2diR1Z1WjNSb095QnBJQ3M5SURNcElIdGNibHgwWEhSY2RIUmxiWEFnUFNBb2RXbHVkRGhiYVYwZ1BEd2dNVFlwSUNzZ0tIVnBiblE0VzJrZ0t5QXhYU0E4UENBNEtTQXJJQ2gxYVc1ME9GdHBJQ3NnTWwwcFhHNWNkRngwWEhSdmRYUndkWFFnS3owZ2RISnBjR3hsZEZSdlFtRnpaVFkwS0hSbGJYQXBYRzVjZEZ4MGZWeHVYRzVjZEZ4MEx5OGdjR0ZrSUhSb1pTQmxibVFnZDJsMGFDQjZaWEp2Y3l3Z1luVjBJRzFoYTJVZ2MzVnlaU0IwYnlCdWIzUWdabTl5WjJWMElIUm9aU0JsZUhSeVlTQmllWFJsYzF4dVhIUmNkSE4zYVhSamFDQW9aWGgwY21GQ2VYUmxjeWtnZTF4dVhIUmNkRngwWTJGelpTQXhPbHh1WEhSY2RGeDBYSFIwWlcxd0lEMGdkV2x1ZERoYmRXbHVkRGd1YkdWdVozUm9JQzBnTVYxY2JseDBYSFJjZEZ4MGIzVjBjSFYwSUNzOUlHVnVZMjlrWlNoMFpXMXdJRDQrSURJcFhHNWNkRngwWEhSY2RHOTFkSEIxZENBclBTQmxibU52WkdVb0tIUmxiWEFnUER3Z05Da2dKaUF3ZUROR0tWeHVYSFJjZEZ4MFhIUnZkWFJ3ZFhRZ0t6MGdKejA5SjF4dVhIUmNkRngwWEhSaWNtVmhhMXh1WEhSY2RGeDBZMkZ6WlNBeU9seHVYSFJjZEZ4MFhIUjBaVzF3SUQwZ0tIVnBiblE0VzNWcGJuUTRMbXhsYm1kMGFDQXRJREpkSUR3OElEZ3BJQ3NnS0hWcGJuUTRXM1ZwYm5RNExteGxibWQwYUNBdElERmRLVnh1WEhSY2RGeDBYSFJ2ZFhSd2RYUWdLejBnWlc1amIyUmxLSFJsYlhBZ1BqNGdNVEFwWEc1Y2RGeDBYSFJjZEc5MWRIQjFkQ0FyUFNCbGJtTnZaR1VvS0hSbGJYQWdQajRnTkNrZ0ppQXdlRE5HS1Z4dVhIUmNkRngwWEhSdmRYUndkWFFnS3owZ1pXNWpiMlJsS0NoMFpXMXdJRHc4SURJcElDWWdNSGd6UmlsY2JseDBYSFJjZEZ4MGIzVjBjSFYwSUNzOUlDYzlKMXh1WEhSY2RGeDBYSFJpY21WaGExeHVYSFJjZEgxY2JseHVYSFJjZEhKbGRIVnliaUJ2ZFhSd2RYUmNibHgwZlZ4dVhHNWNkR1Y0Y0c5eWRITXVkRzlDZVhSbFFYSnlZWGtnUFNCaU5qUlViMEo1ZEdWQmNuSmhlVnh1WEhSbGVIQnZjblJ6TG1aeWIyMUNlWFJsUVhKeVlYa2dQU0IxYVc1ME9GUnZRbUZ6WlRZMFhHNTlLSFI1Y0dWdlppQmxlSEJ2Y25SeklEMDlQU0FuZFc1a1pXWnBibVZrSnlBL0lDaDBhR2x6TG1KaGMyVTJOR3B6SUQwZ2UzMHBJRG9nWlhod2IzSjBjeWtwWEc0aUxDSmxlSEJ2Y25SekxuSmxZV1FnUFNCbWRXNWpkR2x2YmlBb1luVm1abVZ5TENCdlptWnpaWFFzSUdselRFVXNJRzFNWlc0c0lHNUNlWFJsY3lrZ2UxeHVJQ0IyWVhJZ1pTd2diVnh1SUNCMllYSWdaVXhsYmlBOUlHNUNlWFJsY3lBcUlEZ2dMU0J0VEdWdUlDMGdNVnh1SUNCMllYSWdaVTFoZUNBOUlDZ3hJRHc4SUdWTVpXNHBJQzBnTVZ4dUlDQjJZWElnWlVKcFlYTWdQU0JsVFdGNElENCtJREZjYmlBZ2RtRnlJRzVDYVhSeklEMGdMVGRjYmlBZ2RtRnlJR2tnUFNCcGMweEZJRDhnS0c1Q2VYUmxjeUF0SURFcElEb2dNRnh1SUNCMllYSWdaQ0E5SUdselRFVWdQeUF0TVNBNklERmNiaUFnZG1GeUlITWdQU0JpZFdabVpYSmJiMlptYzJWMElDc2dhVjFjYmx4dUlDQnBJQ3M5SUdSY2JseHVJQ0JsSUQwZ2N5QW1JQ2dvTVNBOFBDQW9MVzVDYVhSektTa2dMU0F4S1Z4dUlDQnpJRDQrUFNBb0xXNUNhWFJ6S1Z4dUlDQnVRbWwwY3lBclBTQmxUR1Z1WEc0Z0lHWnZjaUFvT3lCdVFtbDBjeUErSURBN0lHVWdQU0JsSUNvZ01qVTJJQ3NnWW5WbVptVnlXMjltWm5ObGRDQXJJR2xkTENCcElDczlJR1FzSUc1Q2FYUnpJQzA5SURncElIdDlYRzVjYmlBZ2JTQTlJR1VnSmlBb0tERWdQRHdnS0MxdVFtbDBjeWtwSUMwZ01TbGNiaUFnWlNBK1BqMGdLQzF1UW1sMGN5bGNiaUFnYmtKcGRITWdLejBnYlV4bGJseHVJQ0JtYjNJZ0tEc2dia0pwZEhNZ1BpQXdPeUJ0SUQwZ2JTQXFJREkxTmlBcklHSjFabVpsY2x0dlptWnpaWFFnS3lCcFhTd2dhU0FyUFNCa0xDQnVRbWwwY3lBdFBTQTRLU0I3ZlZ4dVhHNGdJR2xtSUNobElEMDlQU0F3S1NCN1hHNGdJQ0FnWlNBOUlERWdMU0JsUW1saGMxeHVJQ0I5SUdWc2MyVWdhV1lnS0dVZ1BUMDlJR1ZOWVhncElIdGNiaUFnSUNCeVpYUjFjbTRnYlNBL0lFNWhUaUE2SUNnb2N5QS9JQzB4SURvZ01Ta2dLaUJKYm1acGJtbDBlU2xjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J0SUQwZ2JTQXJJRTFoZEdndWNHOTNLRElzSUcxTVpXNHBYRzRnSUNBZ1pTQTlJR1VnTFNCbFFtbGhjMXh1SUNCOVhHNGdJSEpsZEhWeWJpQW9jeUEvSUMweElEb2dNU2tnS2lCdElDb2dUV0YwYUM1d2IzY29NaXdnWlNBdElHMU1aVzRwWEc1OVhHNWNibVY0Y0c5eWRITXVkM0pwZEdVZ1BTQm1kVzVqZEdsdmJpQW9ZblZtWm1WeUxDQjJZV3gxWlN3Z2IyWm1jMlYwTENCcGMweEZMQ0J0VEdWdUxDQnVRbmwwWlhNcElIdGNiaUFnZG1GeUlHVXNJRzBzSUdOY2JpQWdkbUZ5SUdWTVpXNGdQU0J1UW5sMFpYTWdLaUE0SUMwZ2JVeGxiaUF0SURGY2JpQWdkbUZ5SUdWTllYZ2dQU0FvTVNBOFBDQmxUR1Z1S1NBdElERmNiaUFnZG1GeUlHVkNhV0Z6SUQwZ1pVMWhlQ0ErUGlBeFhHNGdJSFpoY2lCeWRDQTlJQ2h0VEdWdUlEMDlQU0F5TXlBL0lFMWhkR2d1Y0c5M0tESXNJQzB5TkNrZ0xTQk5ZWFJvTG5CdmR5Z3lMQ0F0TnpjcElEb2dNQ2xjYmlBZ2RtRnlJR2tnUFNCcGMweEZJRDhnTUNBNklDaHVRbmwwWlhNZ0xTQXhLVnh1SUNCMllYSWdaQ0E5SUdselRFVWdQeUF4SURvZ0xURmNiaUFnZG1GeUlITWdQU0IyWVd4MVpTQThJREFnZkh3Z0tIWmhiSFZsSUQwOVBTQXdJQ1ltSURFZ0x5QjJZV3gxWlNBOElEQXBJRDhnTVNBNklEQmNibHh1SUNCMllXeDFaU0E5SUUxaGRHZ3VZV0p6S0haaGJIVmxLVnh1WEc0Z0lHbG1JQ2hwYzA1aFRpaDJZV3gxWlNrZ2ZId2dkbUZzZFdVZ1BUMDlJRWx1Wm1sdWFYUjVLU0I3WEc0Z0lDQWdiU0E5SUdselRtRk9LSFpoYkhWbEtTQS9JREVnT2lBd1hHNGdJQ0FnWlNBOUlHVk5ZWGhjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0JsSUQwZ1RXRjBhQzVtYkc5dmNpaE5ZWFJvTG14dlp5aDJZV3gxWlNrZ0x5Qk5ZWFJvTGt4T01pbGNiaUFnSUNCcFppQW9kbUZzZFdVZ0tpQW9ZeUE5SUUxaGRHZ3VjRzkzS0RJc0lDMWxLU2tnUENBeEtTQjdYRzRnSUNBZ0lDQmxMUzFjYmlBZ0lDQWdJR01nS2owZ01seHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb1pTQXJJR1ZDYVdGeklENDlJREVwSUh0Y2JpQWdJQ0FnSUhaaGJIVmxJQ3M5SUhKMElDOGdZMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMllXeDFaU0FyUFNCeWRDQXFJRTFoZEdndWNHOTNLRElzSURFZ0xTQmxRbWxoY3lsY2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0haaGJIVmxJQ29nWXlBK1BTQXlLU0I3WEc0Z0lDQWdJQ0JsS3l0Y2JpQWdJQ0FnSUdNZ0x6MGdNbHh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hsSUNzZ1pVSnBZWE1nUGowZ1pVMWhlQ2tnZTF4dUlDQWdJQ0FnYlNBOUlEQmNiaUFnSUNBZ0lHVWdQU0JsVFdGNFhHNGdJQ0FnZlNCbGJITmxJR2xtSUNobElDc2daVUpwWVhNZ1BqMGdNU2tnZTF4dUlDQWdJQ0FnYlNBOUlDaDJZV3gxWlNBcUlHTWdMU0F4S1NBcUlFMWhkR2d1Y0c5M0tESXNJRzFNWlc0cFhHNGdJQ0FnSUNCbElEMGdaU0FySUdWQ2FXRnpYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUcwZ1BTQjJZV3gxWlNBcUlFMWhkR2d1Y0c5M0tESXNJR1ZDYVdGeklDMGdNU2tnS2lCTllYUm9MbkJ2ZHlneUxDQnRUR1Z1S1Z4dUlDQWdJQ0FnWlNBOUlEQmNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQm1iM0lnS0RzZ2JVeGxiaUErUFNBNE95QmlkV1ptWlhKYmIyWm1jMlYwSUNzZ2FWMGdQU0J0SUNZZ01IaG1aaXdnYVNBclBTQmtMQ0J0SUM4OUlESTFOaXdnYlV4bGJpQXRQU0E0S1NCN2ZWeHVYRzRnSUdVZ1BTQW9aU0E4UENCdFRHVnVLU0I4SUcxY2JpQWdaVXhsYmlBclBTQnRUR1Z1WEc0Z0lHWnZjaUFvT3lCbFRHVnVJRDRnTURzZ1luVm1abVZ5VzI5bVpuTmxkQ0FySUdsZElEMGdaU0FtSURCNFptWXNJR2tnS3owZ1pDd2daU0F2UFNBeU5UWXNJR1ZNWlc0Z0xUMGdPQ2tnZTMxY2JseHVJQ0JpZFdabVpYSmJiMlptYzJWMElDc2dhU0F0SUdSZElIdzlJSE1nS2lBeE1qaGNibjFjYmlJc0lseHVMeW9xWEc0Z0tpQnBjMEZ5Y21GNVhHNGdLaTljYmx4dWRtRnlJR2x6UVhKeVlYa2dQU0JCY25KaGVTNXBjMEZ5Y21GNU8xeHVYRzR2S2lwY2JpQXFJSFJ2VTNSeWFXNW5YRzRnS2k5Y2JseHVkbUZ5SUhOMGNpQTlJRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVkRzlUZEhKcGJtYzdYRzVjYmk4cUtseHVJQ29nVjJobGRHaGxjaUJ2Y2lCdWIzUWdkR2hsSUdkcGRtVnVJR0IyWVd4Z1hHNGdLaUJwY3lCaGJpQmhjbkpoZVM1Y2JpQXFYRzRnS2lCbGVHRnRjR3hsT2x4dUlDcGNiaUFxSUNBZ0lDQWdJQ0JwYzBGeWNtRjVLRnRkS1R0Y2JpQXFJQ0FnSUNBZ0lDQXZMeUErSUhSeWRXVmNiaUFxSUNBZ0lDQWdJQ0JwYzBGeWNtRjVLR0Z5WjNWdFpXNTBjeWs3WEc0Z0tpQWdJQ0FnSUNBZ0x5OGdQaUJtWVd4elpWeHVJQ29nSUNBZ0lDQWdJR2x6UVhKeVlYa29KeWNwTzF4dUlDb2dJQ0FnSUNBZ0lDOHZJRDRnWm1Gc2MyVmNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyMXBlR1ZrZlNCMllXeGNiaUFxSUVCeVpYUjFjbTRnZTJKdmIyeDlYRzRnS2k5Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnBjMEZ5Y21GNUlIeDhJR1oxYm1OMGFXOXVJQ2gyWVd3cElIdGNiaUFnY21WMGRYSnVJQ0VoSUhaaGJDQW1KaUFuVzI5aWFtVmpkQ0JCY25KaGVWMG5JRDA5SUhOMGNpNWpZV3hzS0haaGJDazdYRzU5TzF4dUlpd2lMeW9nYW5Ob2FXNTBJRzV2WkdVNklIUnlkV1VnS2k5Y2JpaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdYQ0oxYzJVZ2MzUnlhV04wWENJN1hHNWNiaUFnSUNCbWRXNWpkR2x2YmlCRGIyOXJhV1ZCWTJObGMzTkpibVp2S0dSdmJXRnBiaXdnY0dGMGFDd2djMlZqZFhKbExDQnpZM0pwY0hRcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTWdhVzV6ZEdGdVkyVnZaaUJEYjI5cmFXVkJZMk5sYzNOSmJtWnZLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1SdmJXRnBiaUE5SUdSdmJXRnBiaUI4ZkNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQmhkR2dnUFNCd1lYUm9JSHg4SUZ3aUwxd2lPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WldOMWNtVWdQU0FoSVhObFkzVnlaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YzJOeWFYQjBJRDBnSVNGelkzSnBjSFE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFTnZiMnRwWlVGalkyVnpjMGx1Wm04b1pHOXRZV2x1TENCd1lYUm9MQ0J6WldOMWNtVXNJSE5qY21sd2RDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdWNGNHOXlkSE11UTI5dmEybGxRV05qWlhOelNXNW1ieUE5SUVOdmIydHBaVUZqWTJWemMwbHVabTg3WEc1Y2JpQWdJQ0JtZFc1amRHbHZiaUJEYjI5cmFXVW9ZMjl2YTJsbGMzUnlMQ0J5WlhGMVpYTjBYMlJ2YldGcGJpd2djbVZ4ZFdWemRGOXdZWFJvS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjI5cmFXVnpkSElnYVc1emRHRnVZMlZ2WmlCRGIyOXJhV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmpiMjlyYVdWemRISTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE1nYVc1emRHRnVZMlZ2WmlCRGIyOXJhV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJtRnRaU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMblpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVpYaHdhWEpoZEdsdmJsOWtZWFJsSUQwZ1NXNW1hVzVwZEhrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQmhkR2dnUFNCVGRISnBibWNvY21WeGRXVnpkRjl3WVhSb0lIeDhJRndpTDF3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVaWGh3YkdsamFYUmZjR0YwYUNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1a2IyMWhhVzRnUFNCeVpYRjFaWE4wWDJSdmJXRnBiaUI4ZkNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVsZUhCc2FXTnBkRjlrYjIxaGFXNGdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjMlZqZFhKbElEMGdabUZzYzJVN0lDOHZhRzkzSUhSdklHUmxabWx1WlNCa1pXWmhkV3gwUDF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1dWIzTmpjbWx3ZENBOUlHWmhiSE5sT3lBdkwyaDBkSEJ2Ym14NVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyOXZhMmxsYzNSeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1d1lYSnpaU2hqYjI5cmFXVnpkSElzSUhKbGNYVmxjM1JmWkc5dFlXbHVMQ0J5WlhGMVpYTjBYM0JoZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QkRiMjlyYVdVb1kyOXZhMmxsYzNSeUxDQnlaWEYxWlhOMFgyUnZiV0ZwYml3Z2NtVnhkV1Z6ZEY5d1lYUm9LVHRjYmlBZ0lDQjlYRzRnSUNBZ1pYaHdiM0owY3k1RGIyOXJhV1VnUFNCRGIyOXJhV1U3WEc1Y2JpQWdJQ0JEYjI5cmFXVXVjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5JRDBnWm5WdVkzUnBiMjRnZEc5VGRISnBibWNvS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ6ZEhJZ1BTQmJkR2hwY3k1dVlXMWxJQ3NnWENJOVhDSWdLeUIwYUdsekxuWmhiSFZsWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpYaHdhWEpoZEdsdmJsOWtZWFJsSUNFOVBTQkpibVpwYm1sMGVTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUnlMbkIxYzJnb1hDSmxlSEJwY21WelBWd2lJQ3NnS0c1bGR5QkVZWFJsS0hSb2FYTXVaWGh3YVhKaGRHbHZibDlrWVhSbEtTa3VkRzlIVFZSVGRISnBibWNvS1NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVaRzl0WVdsdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCemRISXVjSFZ6YUNoY0ltUnZiV0ZwYmoxY0lpQXJJSFJvYVhNdVpHOXRZV2x1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXdZWFJvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEhJdWNIVnphQ2hjSW5CaGRHZzlYQ0lnS3lCMGFHbHpMbkJoZEdncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbk5sWTNWeVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUnlMbkIxYzJnb1hDSnpaV04xY21WY0lpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11Ym05elkzSnBjSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wY2k1d2RYTm9LRndpYUhSMGNHOXViSGxjSWlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlITjBjaTVxYjJsdUtGd2lPeUJjSWlrN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUVOdmIydHBaUzV3Y205MGIzUjVjR1V1ZEc5V1lXeDFaVk4wY21sdVp5QTlJR1oxYm1OMGFXOXVJSFJ2Vm1Gc2RXVlRkSEpwYm1jb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG01aGJXVWdLeUJjSWoxY0lpQXJJSFJvYVhNdWRtRnNkV1U3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJSFpoY2lCamIyOXJhV1ZmYzNSeVgzTndiR2wwZEdWeUlEMGdMMXM2WFNnL1BWeGNjeXBiWVMxNlFTMWFNQzA1WDF4Y0xWMHJYRnh6S2xzOVhTa3ZaenRjYmlBZ0lDQkRiMjlyYVdVdWNISnZkRzkwZVhCbExuQmhjbk5sSUQwZ1puVnVZM1JwYjI0Z2NHRnljMlVvYzNSeUxDQnlaWEYxWlhOMFgyUnZiV0ZwYml3Z2NtVnhkV1Z6ZEY5d1lYUm9LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6SUdsdWMzUmhibU5sYjJZZ1EyOXZhMmxsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2NHRnlkSE1nUFNCemRISXVjM0JzYVhRb1hDSTdYQ0lwTG1acGJIUmxjaWhtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNFaGRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NHRnBjaUE5SUhCaGNuUnpXekJkTG0xaGRHTm9LQzhvVzE0OVhTc3BQU2hiWEZ4elhGeFRYU29wTHlrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyVjVJRDBnY0dGcGNsc3hYU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpTQTlJSEJoYVhKYk1sMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Ym1GdFpTQTlJR3RsZVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWRtRnNkV1VnUFNCMllXeDFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNocElEMGdNVHNnYVNBOElIQmhjblJ6TG14bGJtZDBhRHNnYVNBclBTQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGcGNpQTlJSEJoY25SelcybGRMbTFoZEdOb0tDOG9XMTQ5WFNzcEtEODZQU2hiWEZ4elhGeFRYU29wS1Q4dktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGtnUFNCd1lXbHlXekZkTG5SeWFXMG9LUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2NHRnBjbHN5WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0d0bGVTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSm9kSFJ3YjI1c2VWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTV2YzJOeWFYQjBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltVjRjR2x5WlhOY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWxlSEJwY21GMGFXOXVYMlJoZEdVZ1BTQjJZV3gxWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdUblZ0WW1WeUtFUmhkR1V1Y0dGeWMyVW9kbUZzZFdVcEtTQTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnU1c1bWFXNXBkSGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0p3WVhSb1hDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjR0YwYUNBOUlIWmhiSFZsSUQ5Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlM1MGNtbHRLQ2tnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGd2lYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Wlhod2JHbGphWFJmY0dGMGFDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKa2IyMWhhVzVjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1a2IyMWhhVzRnUFNCMllXeDFaU0EvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1V1ZEhKcGJTZ3BJRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY0lsd2lPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVY0Y0d4cFkybDBYMlJ2YldGcGJpQTlJQ0VoZEdocGN5NWtiMjFoYVc0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKelpXTjFjbVZjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1elpXTjFjbVVnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doZEdocGN5NWxlSEJzYVdOcGRGOXdZWFJvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJoZEdnZ1BTQnlaWEYxWlhOMFgzQmhkR2dnZkh3Z1hDSXZYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdVpYaHdiR2xqYVhSZlpHOXRZV2x1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVJ2YldGcGJpQTlJSEpsY1hWbGMzUmZaRzl0WVdsdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRU52YjJ0cFpTZ3BMbkJoY25ObEtITjBjaXdnY21WeGRXVnpkRjlrYjIxaGFXNHNJSEpsY1hWbGMzUmZjR0YwYUNrN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUVOdmIydHBaUzV3Y205MGIzUjVjR1V1YldGMFkyaGxjeUE5SUdaMWJtTjBhVzl1SUcxaGRHTm9aWE1vWVdOalpYTnpYMmx1Wm04cElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVibTl6WTNKcGNIUWdKaVlnWVdOalpYTnpYMmx1Wm04dWMyTnlhWEIwSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WldOMWNtVWdKaVlnSVdGalkyVnpjMTlwYm1adkxuTmxZM1Z5WlNCOGZGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDRjBhR2x6TG1OdmJHeHBaR1Z6VjJsMGFDaGhZMk5sYzNOZmFXNW1ieWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdRMjl2YTJsbExuQnliM1J2ZEhsd1pTNWpiMnhzYVdSbGMxZHBkR2dnUFNCbWRXNWpkR2x2YmlCamIyeHNhV1JsYzFkcGRHZ29ZV05qWlhOelgybHVabThwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2gwYUdsekxuQmhkR2dnSmlZZ0lXRmpZMlZ6YzE5cGJtWnZMbkJoZEdncElIeDhJQ2gwYUdsekxtUnZiV0ZwYmlBbUppQWhZV05qWlhOelgybHVabTh1Wkc5dFlXbHVLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuQmhkR2dnSmlZZ1lXTmpaWE56WDJsdVptOHVjR0YwYUM1cGJtUmxlRTltS0hSb2FYTXVjR0YwYUNrZ0lUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWxlSEJzYVdOcGRGOXdZWFJvSUNZbUlHRmpZMlZ6YzE5cGJtWnZMbkJoZEdndWFXNWtaWGhQWmlnZ2RHaHBjeTV3WVhSb0lDa2dJVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFpoY2lCaFkyTmxjM05mWkc5dFlXbHVJRDBnWVdOalpYTnpYMmx1Wm04dVpHOXRZV2x1SUNZbUlHRmpZMlZ6YzE5cGJtWnZMbVJ2YldGcGJpNXlaWEJzWVdObEtDOWVXMXhjTGwwdkxDY25LVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiMnRwWlY5a2IyMWhhVzRnUFNCMGFHbHpMbVJ2YldGcGJpQW1KaUIwYUdsekxtUnZiV0ZwYmk1eVpYQnNZV05sS0M5ZVcxeGNMbDB2TENjbktUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmIydHBaVjlrYjIxaGFXNGdQVDA5SUdGalkyVnpjMTlrYjIxaGFXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjlyYVdWZlpHOXRZV2x1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE11Wlhod2JHbGphWFJmWkc5dFlXbHVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE95QXZMeUIzWlNCaGJISmxZV1I1SUdOb1pXTnJaV1FnYVdZZ2RHaGxJR1J2YldGcGJuTWdkMlZ5WlNCbGVHRmpkR3g1SUhSb1pTQnpZVzFsWEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkMmxzWkdOaGNtUWdQU0JoWTJObGMzTmZaRzl0WVdsdUxtbHVaR1Y0VDJZb1kyOXZhMmxsWDJSdmJXRnBiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZDJsc1pHTmhjbVFnUFQwOUlDMHhJSHg4SUhkcGJHUmpZWEprSUNFOVBTQmhZMk5sYzNOZlpHOXRZV2x1TG14bGJtZDBhQ0F0SUdOdmIydHBaVjlrYjIxaGFXNHViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdaMWJtTjBhVzl1SUVOdmIydHBaVXBoY2lncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmIydHBaWE1zSUdOdmIydHBaWE5mYkdsemRDd2dZMjlzYkdsa1lXSnNaVjlqYjI5cmFXVTdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpJR2x1YzNSaGJtTmxiMllnUTI5dmEybGxTbUZ5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI5cmFXVnpJRDBnVDJKcVpXTjBMbU55WldGMFpTaHVkV3hzS1RzZ0x5OXVZVzFsT2lCYlEyOXZhMmxsWFZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuTmxkRU52YjJ0cFpTQTlJR1oxYm1OMGFXOXVJSE5sZEVOdmIydHBaU2hqYjI5cmFXVXNJSEpsY1hWbGMzUmZaRzl0WVdsdUxDQnlaWEYxWlhOMFgzQmhkR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdjbVZ0YjNabExDQnBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YjJ0cFpTQTlJRzVsZHlCRGIyOXJhV1VvWTI5dmEybGxMQ0J5WlhGMVpYTjBYMlJ2YldGcGJpd2djbVZ4ZFdWemRGOXdZWFJvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkwwUmxiR1YwWlNCMGFHVWdZMjl2YTJsbElHbG1JSFJvWlNCelpYUWdhWE1nY0dGemRDQjBhR1VnWTNWeWNtVnVkQ0IwYVcxbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnRiM1psSUQwZ1kyOXZhMmxsTG1WNGNHbHlZWFJwYjI1ZlpHRjBaU0E4UFNCRVlYUmxMbTV2ZHlncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjI5cmFXVnpXMk52YjJ0cFpTNXVZVzFsWFNBaFBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiMnRwWlhOZmJHbHpkQ0E5SUdOdmIydHBaWE5iWTI5dmEybGxMbTVoYldWZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tHa2dQU0F3T3lCcElEd2dZMjl2YTJsbGMxOXNhWE4wTG14bGJtZDBhRHNnYVNBclBTQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4c2FXUmhZbXhsWDJOdmIydHBaU0E5SUdOdmIydHBaWE5mYkdsemRGdHBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyeHNhV1JoWW14bFgyTnZiMnRwWlM1amIyeHNhV1JsYzFkcGRHZ29ZMjl2YTJsbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaVzF2ZG1VcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXZhMmxsYzE5c2FYTjBMbk53YkdsalpTaHBMQ0F4S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTnZiMnRwWlhOZmJHbHpkQzVzWlc1bmRHZ2dQVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsYkdWMFpTQmpiMjlyYVdWelcyTnZiMnRwWlM1dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YjJ0cFpYTmZiR2x6ZEZ0cFhTQTlJR052YjJ0cFpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMjl2YTJsbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5WlcxdmRtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyOXJhV1Z6WDJ4cGMzUXVjSFZ6YUNoamIyOXJhV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXZhMmxsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ0YjNabEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl2YTJsbGMxdGpiMjlyYVdVdWJtRnRaVjBnUFNCYlkyOXZhMmxsWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWTI5dmEybGxjMXRqYjI5cmFXVXVibUZ0WlYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdMeTl5WlhSMWNtNXpJR0VnWTI5dmEybGxYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbWRsZEVOdmIydHBaU0E5SUdaMWJtTjBhVzl1SUdkbGRFTnZiMnRwWlNoamIyOXJhV1ZmYm1GdFpTd2dZV05qWlhOelgybHVabThwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZMjl2YTJsbExDQnBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YjJ0cFpYTmZiR2x6ZENBOUlHTnZiMnRwWlhOYlkyOXZhMmxsWDI1aGJXVmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFkyOXZhMmxsYzE5c2FYTjBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hwSUQwZ01Ec2dhU0E4SUdOdmIydHBaWE5mYkdsemRDNXNaVzVuZEdnN0lHa2dLejBnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI5cmFXVWdQU0JqYjI5cmFXVnpYMnhwYzNSYmFWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjlyYVdVdVpYaHdhWEpoZEdsdmJsOWtZWFJsSUR3OUlFUmhkR1V1Ym05M0tDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyOXJhV1Z6WDJ4cGMzUXViR1Z1WjNSb0lEMDlQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZzWlhSbElHTnZiMnRwWlhOYlkyOXZhMmxsTG01aGJXVmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyOXZhMmxsTG0xaGRHTm9aWE1vWVdOalpYTnpYMmx1Wm04cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXZhMmxsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dmNtVjBkWEp1Y3lCaElHeHBjM1FnYjJZZ1kyOXZhMmxsYzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1blpYUkRiMjlyYVdWeklEMGdablZ1WTNScGIyNGdaMlYwUTI5dmEybGxjeWhoWTJObGMzTmZhVzVtYnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ0WVhSamFHVnpJRDBnVzEwc0lHTnZiMnRwWlY5dVlXMWxMQ0JqYjI5cmFXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyOXJhV1ZmYm1GdFpTQnBiaUJqYjI5cmFXVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiMnRwWlNBOUlIUm9hWE11WjJWMFEyOXZhMmxsS0dOdmIydHBaVjl1WVcxbExDQmhZMk5sYzNOZmFXNW1ieWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjI5cmFXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoZEdOb1pYTXVjSFZ6YUNoamIyOXJhV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoZEdOb1pYTXVkRzlUZEhKcGJtY2dQU0JtZFc1amRHbHZiaUIwYjFOMGNtbHVaeWdwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMWhkR05vWlhNdWFtOXBiaWhjSWpwY0lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0WVhSamFHVnpMblJ2Vm1Gc2RXVlRkSEpwYm1jZ1BTQm1kVzVqZEdsdmJpQjBiMVpoYkhWbFUzUnlhVzVuS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiV0YwWTJobGN5NXRZWEFvWm5WdVkzUnBiMjRnS0dNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCakxuUnZWbUZzZFdWVGRISnBibWNvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2t1YW05cGJpZ25PeWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxaGRHTm9aWE03WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFTnZiMnRwWlVwaGNpZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCbGVIQnZjblJ6TGtOdmIydHBaVXBoY2lBOUlFTnZiMnRwWlVwaGNqdGNibHh1SUNBZ0lDOHZjbVYwZFhKdWN5QnNhWE4wSUc5bUlHTnZiMnRwWlhNZ2RHaGhkQ0IzWlhKbElITmxkQ0JqYjNKeVpXTjBiSGt1SUVOdmIydHBaWE1nZEdoaGRDQmhjbVVnWlhod2FYSmxaQ0JoYm1RZ2NtVnRiM1psWkNCaGNtVWdibTkwSUhKbGRIVnlibVZrTGx4dUlDQWdJRU52YjJ0cFpVcGhjaTV3Y205MGIzUjVjR1V1YzJWMFEyOXZhMmxsY3lBOUlHWjFibU4wYVc5dUlITmxkRU52YjJ0cFpYTW9ZMjl2YTJsbGN5d2djbVZ4ZFdWemRGOWtiMjFoYVc0c0lISmxjWFZsYzNSZmNHRjBhQ2tnZTF4dUlDQWdJQ0FnSUNCamIyOXJhV1Z6SUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2hqYjI5cmFXVnpLU0EvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dmEybGxjeUE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dmEybGxjeTV6Y0d4cGRDaGpiMjlyYVdWZmMzUnlYM053YkdsMGRHVnlLVHRjYmlBZ0lDQWdJQ0FnZG1GeUlITjFZMk5sYzNObWRXd2dQU0JiWFN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjlyYVdVN1hHNGdJQ0FnSUNBZ0lHTnZiMnRwWlhNZ1BTQmpiMjlyYVdWekxtMWhjQ2htZFc1amRHbHZiaWhwZEdWdEtYdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1EyOXZhMmxsS0dsMFpXMHNJSEpsY1hWbGMzUmZaRzl0WVdsdUxDQnlaWEYxWlhOMFgzQmhkR2dwTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdabTl5SUNocElEMGdNRHNnYVNBOElHTnZiMnRwWlhNdWJHVnVaM1JvT3lCcElDczlJREVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052YjJ0cFpTQTlJR052YjJ0cFpYTmJhVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXpaWFJEYjI5cmFXVW9ZMjl2YTJsbExDQnlaWEYxWlhOMFgyUnZiV0ZwYml3Z2NtVnhkV1Z6ZEY5d1lYUm9LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMVkyTmxjM05tZFd3dWNIVnphQ2hqYjI5cmFXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnpkV05qWlhOelpuVnNPMXh1SUNBZ0lIMDdYRzU5S0NrcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzVjYm5aaGNpQjVZVzFzSUQwZ2NtVnhkV2x5WlNnbkxpOXNhV0l2YW5NdGVXRnRiQzVxY3ljcE8xeHVYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnZVdGdGJEdGNiaUlzSWlkMWMyVWdjM1J5YVdOMEp6dGNibHh1WEc1MllYSWdiRzloWkdWeUlEMGdjbVZ4ZFdseVpTZ25MaTlxY3kxNVlXMXNMMnh2WVdSbGNpY3BPMXh1ZG1GeUlHUjFiWEJsY2lBOUlISmxjWFZwY21Vb0p5NHZhbk10ZVdGdGJDOWtkVzF3WlhJbktUdGNibHh1WEc1bWRXNWpkR2x2YmlCa1pYQnlaV05oZEdWa0tHNWhiV1VwSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owWjFibU4wYVc5dUlDY2dLeUJ1WVcxbElDc2dKeUJwY3lCa1pYQnlaV05oZEdWa0lHRnVaQ0JqWVc1dWIzUWdZbVVnZFhObFpDNG5LVHRjYmlBZ2ZUdGNibjFjYmx4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3k1VWVYQmxJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEMGdjbVZ4ZFdseVpTZ25MaTlxY3kxNVlXMXNMM1I1Y0dVbktUdGNibTF2WkhWc1pTNWxlSEJ2Y25SekxsTmphR1Z0WVNBZ0lDQWdJQ0FnSUNBZ0lDQWdQU0J5WlhGMWFYSmxLQ2N1TDJwekxYbGhiV3d2YzJOb1pXMWhKeWs3WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTVHUVVsTVUwRkdSVjlUUTBoRlRVRWdJQ0FnSUQwZ2NtVnhkV2x5WlNnbkxpOXFjeTE1WVcxc0wzTmphR1Z0WVM5bVlXbHNjMkZtWlNjcE8xeHViVzlrZFd4bExtVjRjRzl5ZEhNdVNsTlBUbDlUUTBoRlRVRWdJQ0FnSUNBZ0lDQTlJSEpsY1hWcGNtVW9KeTR2YW5NdGVXRnRiQzl6WTJobGJXRXZhbk52YmljcE8xeHViVzlrZFd4bExtVjRjRzl5ZEhNdVEwOVNSVjlUUTBoRlRVRWdJQ0FnSUNBZ0lDQTlJSEpsY1hWcGNtVW9KeTR2YW5NdGVXRnRiQzl6WTJobGJXRXZZMjl5WlNjcE8xeHViVzlrZFd4bExtVjRjRzl5ZEhNdVJFVkdRVlZNVkY5VFFVWkZYMU5EU0VWTlFTQTlJSEpsY1hWcGNtVW9KeTR2YW5NdGVXRnRiQzl6WTJobGJXRXZaR1ZtWVhWc2RGOXpZV1psSnlrN1hHNXRiMlIxYkdVdVpYaHdiM0owY3k1RVJVWkJWVXhVWDBaVlRFeGZVME5JUlUxQklEMGdjbVZ4ZFdseVpTZ25MaTlxY3kxNVlXMXNMM05qYUdWdFlTOWtaV1poZFd4MFgyWjFiR3duS1R0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TG14dllXUWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BTQnNiMkZrWlhJdWJHOWhaRHRjYm0xdlpIVnNaUzVsZUhCdmNuUnpMbXh2WVdSQmJHd2dJQ0FnSUNBZ0lDQWdJQ0FnUFNCc2IyRmtaWEl1Ykc5aFpFRnNiRHRjYm0xdlpIVnNaUzVsZUhCdmNuUnpMbk5oWm1WTWIyRmtJQ0FnSUNBZ0lDQWdJQ0FnUFNCc2IyRmtaWEl1YzJGbVpVeHZZV1E3WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTV6WVdabFRHOWhaRUZzYkNBZ0lDQWdJQ0FnSUQwZ2JHOWhaR1Z5TG5OaFptVk1iMkZrUVd4c08xeHViVzlrZFd4bExtVjRjRzl5ZEhNdVpIVnRjQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTlJR1IxYlhCbGNpNWtkVzF3TzF4dWJXOWtkV3hsTG1WNGNHOXlkSE11YzJGbVpVUjFiWEFnSUNBZ0lDQWdJQ0FnSUNBOUlHUjFiWEJsY2k1ellXWmxSSFZ0Y0R0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TGxsQlRVeEZlR05sY0hScGIyNGdJQ0FnSUNBZ1BTQnlaWEYxYVhKbEtDY3VMMnB6TFhsaGJXd3ZaWGhqWlhCMGFXOXVKeWs3WEc1Y2JpOHZJRVJsY0hKbFkyRjBaV1FnYzJOb1pXMWhJRzVoYldWeklHWnliMjBnU2xNdFdVRk5UQ0F5TGpBdWVGeHViVzlrZFd4bExtVjRjRzl5ZEhNdVRVbE9TVTFCVEY5VFEwaEZUVUVnUFNCeVpYRjFhWEpsS0NjdUwycHpMWGxoYld3dmMyTm9aVzFoTDJaaGFXeHpZV1psSnlrN1hHNXRiMlIxYkdVdVpYaHdiM0owY3k1VFFVWkZYMU5EU0VWTlFTQWdJQ0E5SUhKbGNYVnBjbVVvSnk0dmFuTXRlV0Z0YkM5elkyaGxiV0V2WkdWbVlYVnNkRjl6WVdabEp5azdYRzV0YjJSMWJHVXVaWGh3YjNKMGN5NUVSVVpCVlV4VVgxTkRTRVZOUVNBOUlISmxjWFZwY21Vb0p5NHZhbk10ZVdGdGJDOXpZMmhsYldFdlpHVm1ZWFZzZEY5bWRXeHNKeWs3WEc1Y2JpOHZJRVJsY0hKbFkyRjBaV1FnWm5WdVkzUnBiMjV6SUdaeWIyMGdTbE10V1VGTlRDQXhMbmd1ZUZ4dWJXOWtkV3hsTG1WNGNHOXlkSE11YzJOaGJpQWdJQ0FnSUNBZ0lDQWdQU0JrWlhCeVpXTmhkR1ZrS0NkelkyRnVKeWs3WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTV3WVhKelpTQWdJQ0FnSUNBZ0lDQTlJR1JsY0hKbFkyRjBaV1FvSjNCaGNuTmxKeWs3WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTVqYjIxd2IzTmxJQ0FnSUNBZ0lDQTlJR1JsY0hKbFkyRjBaV1FvSjJOdmJYQnZjMlVuS1R0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TG1Ga1pFTnZibk4wY25WamRHOXlJRDBnWkdWd2NtVmpZWFJsWkNnbllXUmtRMjl1YzNSeWRXTjBiM0luS1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVYRzVtZFc1amRHbHZiaUJwYzA1dmRHaHBibWNvYzNWaWFtVmpkQ2tnZTF4dUlDQnlaWFIxY200Z0tIUjVjR1Z2WmlCemRXSnFaV04wSUQwOVBTQW5kVzVrWldacGJtVmtKeWtnZkh3Z0tITjFZbXBsWTNRZ1BUMDlJRzUxYkd3cE8xeHVmVnh1WEc1Y2JtWjFibU4wYVc5dUlHbHpUMkpxWldOMEtITjFZbXBsWTNRcElIdGNiaUFnY21WMGRYSnVJQ2gwZVhCbGIyWWdjM1ZpYW1WamRDQTlQVDBnSjI5aWFtVmpkQ2NwSUNZbUlDaHpkV0pxWldOMElDRTlQU0J1ZFd4c0tUdGNibjFjYmx4dVhHNW1kVzVqZEdsdmJpQjBiMEZ5Y21GNUtITmxjWFZsYm1ObEtTQjdYRzRnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0hObGNYVmxibU5sS1NrZ2NtVjBkWEp1SUhObGNYVmxibU5sTzF4dUlDQmxiSE5sSUdsbUlDaHBjMDV2ZEdocGJtY29jMlZ4ZFdWdVkyVXBLU0J5WlhSMWNtNGdXMTA3WEc1Y2JpQWdjbVYwZFhKdUlGc2djMlZ4ZFdWdVkyVWdYVHRjYm4xY2JseHVYRzVtZFc1amRHbHZiaUJsZUhSbGJtUW9kR0Z5WjJWMExDQnpiM1Z5WTJVcElIdGNiaUFnZG1GeUlHbHVaR1Y0TENCc1pXNW5kR2dzSUd0bGVTd2djMjkxY21ObFMyVjVjenRjYmx4dUlDQnBaaUFvYzI5MWNtTmxLU0I3WEc0Z0lDQWdjMjkxY21ObFMyVjVjeUE5SUU5aWFtVmpkQzVyWlhsektITnZkWEpqWlNrN1hHNWNiaUFnSUNCbWIzSWdLR2x1WkdWNElEMGdNQ3dnYkdWdVozUm9JRDBnYzI5MWNtTmxTMlY1Y3k1c1pXNW5kR2c3SUdsdVpHVjRJRHdnYkdWdVozUm9PeUJwYm1SbGVDQXJQU0F4S1NCN1hHNGdJQ0FnSUNCclpYa2dQU0J6YjNWeVkyVkxaWGx6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJSFJoY21kbGRGdHJaWGxkSUQwZ2MyOTFjbU5sVzJ0bGVWMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIUmhjbWRsZER0Y2JuMWNibHh1WEc1bWRXNWpkR2x2YmlCeVpYQmxZWFFvYzNSeWFXNW5MQ0JqYjNWdWRDa2dlMXh1SUNCMllYSWdjbVZ6ZFd4MElEMGdKeWNzSUdONVkyeGxPMXh1WEc0Z0lHWnZjaUFvWTNsamJHVWdQU0F3T3lCamVXTnNaU0E4SUdOdmRXNTBPeUJqZVdOc1pTQXJQU0F4S1NCN1hHNGdJQ0FnY21WemRXeDBJQ3M5SUhOMGNtbHVaenRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JseHVablZ1WTNScGIyNGdhWE5PWldkaGRHbDJaVnBsY204b2JuVnRZbVZ5S1NCN1hHNGdJSEpsZEhWeWJpQW9iblZ0WW1WeUlEMDlQU0F3S1NBbUppQW9UblZ0WW1WeUxrNUZSMEZVU1ZaRlgwbE9Sa2xPU1ZSWklEMDlQU0F4SUM4Z2JuVnRZbVZ5S1R0Y2JuMWNibHh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeTVwYzA1dmRHaHBibWNnSUNBZ0lDQTlJR2x6VG05MGFHbHVaenRjYm0xdlpIVnNaUzVsZUhCdmNuUnpMbWx6VDJKcVpXTjBJQ0FnSUNBZ0lEMGdhWE5QWW1wbFkzUTdYRzV0YjJSMWJHVXVaWGh3YjNKMGN5NTBiMEZ5Y21GNUlDQWdJQ0FnSUNBOUlIUnZRWEp5WVhrN1hHNXRiMlIxYkdVdVpYaHdiM0owY3k1eVpYQmxZWFFnSUNBZ0lDQWdJQ0E5SUhKbGNHVmhkRHRjYm0xdlpIVnNaUzVsZUhCdmNuUnpMbWx6VG1WbllYUnBkbVZhWlhKdklEMGdhWE5PWldkaGRHbDJaVnBsY204N1hHNXRiMlIxYkdVdVpYaHdiM0owY3k1bGVIUmxibVFnSUNBZ0lDQWdJQ0E5SUdWNGRHVnVaRHRjYmlJc0lpZDFjMlVnYzNSeWFXTjBKenRjYmx4dUx5cGxjMnhwYm5RdFpHbHpZV0pzWlNCdWJ5MTFjMlV0WW1WbWIzSmxMV1JsWm1sdVpTb3ZYRzVjYm5aaGNpQmpiMjF0YjI0Z0lDQWdJQ0FnSUNBZ0lDQWdJRDBnY21WeGRXbHlaU2duTGk5amIyMXRiMjRuS1R0Y2JuWmhjaUJaUVUxTVJYaGpaWEIwYVc5dUlDQWdJQ0FnSUQwZ2NtVnhkV2x5WlNnbkxpOWxlR05sY0hScGIyNG5LVHRjYm5aaGNpQkVSVVpCVlV4VVgwWlZURXhmVTBOSVJVMUJJRDBnY21WeGRXbHlaU2duTGk5elkyaGxiV0V2WkdWbVlYVnNkRjltZFd4c0p5azdYRzUyWVhJZ1JFVkdRVlZNVkY5VFFVWkZYMU5EU0VWTlFTQTlJSEpsY1hWcGNtVW9KeTR2YzJOb1pXMWhMMlJsWm1GMWJIUmZjMkZtWlNjcE8xeHVYRzUyWVhJZ1gzUnZVM1J5YVc1bklDQWdJQ0FnSUQwZ1QySnFaV04wTG5CeWIzUnZkSGx3WlM1MGIxTjBjbWx1Wnp0Y2JuWmhjaUJmYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNU8xeHVYRzUyWVhJZ1EwaEJVbDlVUVVJZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOUlEQjRNRGs3SUM4cUlGUmhZaUFxTDF4dWRtRnlJRU5JUVZKZlRFbE9SVjlHUlVWRUlDQWdJQ0FnSUNBZ0lDQWdQU0F3ZURCQk95QXZLaUJNUmlBcUwxeHVkbUZ5SUVOSVFWSmZVMUJCUTBVZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUFNBd2VESXdPeUF2S2lCVGNHRmpaU0FxTDF4dWRtRnlJRU5JUVZKZlJWaERURUZOUVZSSlQwNGdJQ0FnSUNBZ0lDQWdQU0F3ZURJeE95QXZLaUFoSUNvdlhHNTJZWElnUTBoQlVsOUVUMVZDVEVWZlVWVlBWRVVnSUNBZ0lDQWdJQ0E5SURCNE1qSTdJQzhxSUZ3aUlDb3ZYRzUyWVhJZ1EwaEJVbDlUU0VGU1VDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOUlEQjRNak03SUM4cUlDTWdLaTljYm5aaGNpQkRTRUZTWDFCRlVrTkZUbFFnSUNBZ0lDQWdJQ0FnSUNBZ0lEMGdNSGd5TlRzZ0x5b2dKU0FxTDF4dWRtRnlJRU5JUVZKZlFVMVFSVkpUUVU1RUlDQWdJQ0FnSUNBZ0lDQWdQU0F3ZURJMk95QXZLaUFtSUNvdlhHNTJZWElnUTBoQlVsOVRTVTVIVEVWZlVWVlBWRVVnSUNBZ0lDQWdJQ0E5SURCNE1qYzdJQzhxSUNjZ0tpOWNiblpoY2lCRFNFRlNYMEZUVkVWU1NWTkxJQ0FnSUNBZ0lDQWdJQ0FnSUQwZ01IZ3lRVHNnTHlvZ0tpQXFMMXh1ZG1GeUlFTklRVkpmUTA5TlRVRWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BTQXdlREpET3lBdktpQXNJQ292WEc1MllYSWdRMGhCVWw5TlNVNVZVeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTlJREI0TWtRN0lDOHFJQzBnS2k5Y2JuWmhjaUJEU0VGU1gwTlBURTlPSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRDBnTUhnelFUc2dMeW9nT2lBcUwxeHVkbUZ5SUVOSVFWSmZSMUpGUVZSRlVsOVVTRUZPSUNBZ0lDQWdJQ0FnUFNBd2VETkZPeUF2S2lBK0lDb3ZYRzUyWVhJZ1EwaEJVbDlSVlVWVFZFbFBUaUFnSUNBZ0lDQWdJQ0FnSUNBOUlEQjRNMFk3SUM4cUlEOGdLaTljYm5aaGNpQkRTRUZTWDBOUFRVMUZVa05KUVV4ZlFWUWdJQ0FnSUNBZ0lEMGdNSGcwTURzZ0x5b2dRQ0FxTDF4dWRtRnlJRU5JUVZKZlRFVkdWRjlUVVZWQlVrVmZRbEpCUTB0RlZDQWdQU0F3ZURWQ095QXZLaUJiSUNvdlhHNTJZWElnUTBoQlVsOVNTVWRJVkY5VFVWVkJVa1ZmUWxKQlEwdEZWQ0E5SURCNE5VUTdJQzhxSUYwZ0tpOWNiblpoY2lCRFNFRlNYMGRTUVZaRlgwRkRRMFZPVkNBZ0lDQWdJQ0FnSUQwZ01IZzJNRHNnTHlvZ1lDQXFMMXh1ZG1GeUlFTklRVkpmVEVWR1ZGOURWVkpNV1Y5Q1VrRkRTMFZVSUNBZ1BTQXdlRGRDT3lBdktpQjdJQ292WEc1MllYSWdRMGhCVWw5V1JWSlVTVU5CVEY5TVNVNUZJQ0FnSUNBZ0lDQTlJREI0TjBNN0lDOHFJSHdnS2k5Y2JuWmhjaUJEU0VGU1gxSkpSMGhVWDBOVlVreFpYMEpTUVVOTFJWUWdJRDBnTUhnM1JEc2dMeW9nZlNBcUwxeHVYRzUyWVhJZ1JWTkRRVkJGWDFORlVWVkZUa05GVXlBOUlIdDlPMXh1WEc1RlUwTkJVRVZmVTBWUlZVVk9RMFZUV3pCNE1EQmRJQ0FnUFNBblhGeGNYREFuTzF4dVJWTkRRVkJGWDFORlVWVkZUa05GVTFzd2VEQTNYU0FnSUQwZ0oxeGNYRnhoSnp0Y2JrVlRRMEZRUlY5VFJWRlZSVTVEUlZOYk1IZ3dPRjBnSUNBOUlDZGNYRnhjWWljN1hHNUZVME5CVUVWZlUwVlJWVVZPUTBWVFd6QjRNRGxkSUNBZ1BTQW5YRnhjWEhRbk8xeHVSVk5EUVZCRlgxTkZVVlZGVGtORlUxc3dlREJCWFNBZ0lEMGdKMXhjWEZ4dUp6dGNia1ZUUTBGUVJWOVRSVkZWUlU1RFJWTmJNSGd3UWwwZ0lDQTlJQ2RjWEZ4Y2RpYzdYRzVGVTBOQlVFVmZVMFZSVlVWT1EwVlRXekI0TUVOZElDQWdQU0FuWEZ4Y1hHWW5PMXh1UlZORFFWQkZYMU5GVVZWRlRrTkZVMXN3ZURCRVhTQWdJRDBnSjF4Y1hGeHlKenRjYmtWVFEwRlFSVjlUUlZGVlJVNURSVk5iTUhneFFsMGdJQ0E5SUNkY1hGeGNaU2M3WEc1RlUwTkJVRVZmVTBWUlZVVk9RMFZUV3pCNE1qSmRJQ0FnUFNBblhGeGNYRndpSnp0Y2JrVlRRMEZRUlY5VFJWRlZSVTVEUlZOYk1IZzFRMTBnSUNBOUlDZGNYRnhjWEZ4Y1hDYzdYRzVGVTBOQlVFVmZVMFZSVlVWT1EwVlRXekI0T0RWZElDQWdQU0FuWEZ4Y1hFNG5PMXh1UlZORFFWQkZYMU5GVVZWRlRrTkZVMXN3ZUVFd1hTQWdJRDBnSjF4Y1hGeGZKenRjYmtWVFEwRlFSVjlUUlZGVlJVNURSVk5iTUhneU1ESTRYU0E5SUNkY1hGeGNUQ2M3WEc1RlUwTkJVRVZmVTBWUlZVVk9RMFZUV3pCNE1qQXlPVjBnUFNBblhGeGNYRkFuTzF4dVhHNTJZWElnUkVWUVVrVkRRVlJGUkY5Q1QwOU1SVUZPVTE5VFdVNVVRVmdnUFNCYlhHNGdJQ2Q1Snl3Z0oxa25MQ0FuZVdWekp5d2dKMWxsY3ljc0lDZFpSVk1uTENBbmIyNG5MQ0FuVDI0bkxDQW5UMDRuTEZ4dUlDQW5iaWNzSUNkT0p5d2dKMjV2Snl3Z0owNXZKeXdnSjA1UEp5d2dKMjltWmljc0lDZFBabVluTENBblQwWkdKMXh1WFR0Y2JseHVablZ1WTNScGIyNGdZMjl0Y0dsc1pWTjBlV3hsVFdGd0tITmphR1Z0WVN3Z2JXRndLU0I3WEc0Z0lIWmhjaUJ5WlhOMWJIUXNJR3RsZVhNc0lHbHVaR1Y0TENCc1pXNW5kR2dzSUhSaFp5d2djM1I1YkdVc0lIUjVjR1U3WEc1Y2JpQWdhV1lnS0cxaGNDQTlQVDBnYm5Wc2JDa2djbVYwZFhKdUlIdDlPMXh1WEc0Z0lISmxjM1ZzZENBOUlIdDlPMXh1SUNCclpYbHpJRDBnVDJKcVpXTjBMbXRsZVhNb2JXRndLVHRjYmx4dUlDQm1iM0lnS0dsdVpHVjRJRDBnTUN3Z2JHVnVaM1JvSUQwZ2EyVjVjeTVzWlc1bmRHZzdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQXhLU0I3WEc0Z0lDQWdkR0ZuSUQwZ2EyVjVjMXRwYm1SbGVGMDdYRzRnSUNBZ2MzUjViR1VnUFNCVGRISnBibWNvYldGd1czUmhaMTBwTzF4dVhHNGdJQ0FnYVdZZ0tIUmhaeTV6YkdsalpTZ3dMQ0F5S1NBOVBUMGdKeUVoSnlrZ2UxeHVJQ0FnSUNBZ2RHRm5JRDBnSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T2ljZ0t5QjBZV2N1YzJ4cFkyVW9NaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkSGx3WlNBOUlITmphR1Z0WVM1amIyMXdhV3hsWkZSNWNHVk5ZWEJiZEdGblhUdGNibHh1SUNBZ0lHbG1JQ2gwZVhCbElDWW1JRjlvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hSNWNHVXVjM1I1YkdWQmJHbGhjMlZ6TENCemRIbHNaU2twSUh0Y2JpQWdJQ0FnSUhOMGVXeGxJRDBnZEhsd1pTNXpkSGxzWlVGc2FXRnpaWE5iYzNSNWJHVmRPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxjM1ZzZEZ0MFlXZGRJRDBnYzNSNWJHVTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCbGJtTnZaR1ZJWlhnb1kyaGhjbUZqZEdWeUtTQjdYRzRnSUhaaGNpQnpkSEpwYm1jc0lHaGhibVJzWlN3Z2JHVnVaM1JvTzF4dVhHNGdJSE4wY21sdVp5QTlJR05vWVhKaFkzUmxjaTUwYjFOMGNtbHVaeWd4TmlrdWRHOVZjSEJsY2tOaGMyVW9LVHRjYmx4dUlDQnBaaUFvWTJoaGNtRmpkR1Z5SUR3OUlEQjRSa1lwSUh0Y2JpQWdJQ0JvWVc1a2JHVWdQU0FuZUNjN1hHNGdJQ0FnYkdWdVozUm9JRDBnTWp0Y2JpQWdmU0JsYkhObElHbG1JQ2hqYUdGeVlXTjBaWElnUEQwZ01IaEdSa1pHS1NCN1hHNGdJQ0FnYUdGdVpHeGxJRDBnSjNVbk8xeHVJQ0FnSUd4bGJtZDBhQ0E5SURRN1hHNGdJSDBnWld4elpTQnBaaUFvWTJoaGNtRmpkR1Z5SUR3OUlEQjRSa1pHUmtaR1JrWXBJSHRjYmlBZ0lDQm9ZVzVrYkdVZ1BTQW5WU2M3WEc0Z0lDQWdiR1Z1WjNSb0lEMGdPRHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnV1VGTlRFVjRZMlZ3ZEdsdmJpZ25ZMjlrWlNCd2IybHVkQ0IzYVhSb2FXNGdZU0J6ZEhKcGJtY2diV0Y1SUc1dmRDQmlaU0JuY21WaGRHVnlJSFJvWVc0Z01IaEdSa1pHUmtaR1JpY3BPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJQ2RjWEZ4Y0p5QXJJR2hoYm1Sc1pTQXJJR052YlcxdmJpNXlaWEJsWVhRb0p6QW5MQ0JzWlc1bmRHZ2dMU0J6ZEhKcGJtY3ViR1Z1WjNSb0tTQXJJSE4wY21sdVp6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z1UzUmhkR1VvYjNCMGFXOXVjeWtnZTF4dUlDQjBhR2x6TG5OamFHVnRZU0FnSUNBZ0lDQTlJRzl3ZEdsdmJuTmJKM05qYUdWdFlTZGRJSHg4SUVSRlJrRlZURlJmUmxWTVRGOVRRMGhGVFVFN1hHNGdJSFJvYVhNdWFXNWtaVzUwSUNBZ0lDQWdJRDBnVFdGMGFDNXRZWGdvTVN3Z0tHOXdkR2x2Ym5OYkoybHVaR1Z1ZENkZElIeDhJRElwS1R0Y2JpQWdkR2hwY3k1emEybHdTVzUyWVd4cFpDQWdQU0J2Y0hScGIyNXpXeWR6YTJsd1NXNTJZV3hwWkNkZElIeDhJR1poYkhObE8xeHVJQ0IwYUdsekxtWnNiM2RNWlhabGJDQWdJQ0E5SUNoamIyMXRiMjR1YVhOT2IzUm9hVzVuS0c5d2RHbHZibk5iSjJac2IzZE1aWFpsYkNkZEtTQS9JQzB4SURvZ2IzQjBhVzl1YzFzblpteHZkMHhsZG1Wc0oxMHBPMXh1SUNCMGFHbHpMbk4wZVd4bFRXRndJQ0FnSUNBOUlHTnZiWEJwYkdWVGRIbHNaVTFoY0NoMGFHbHpMbk5qYUdWdFlTd2diM0IwYVc5dWMxc25jM1I1YkdWekoxMGdmSHdnYm5Wc2JDazdYRzRnSUhSb2FYTXVjMjl5ZEV0bGVYTWdJQ0FnSUQwZ2IzQjBhVzl1YzFzbmMyOXlkRXRsZVhNblhTQjhmQ0JtWVd4elpUdGNiaUFnZEdocGN5NXNhVzVsVjJsa2RHZ2dJQ0FnUFNCdmNIUnBiMjV6V3lkc2FXNWxWMmxrZEdnblhTQjhmQ0E0TUR0Y2JpQWdkR2hwY3k1dWIxSmxabk1nSUNBZ0lDQWdQU0J2Y0hScGIyNXpXeWR1YjFKbFpuTW5YU0I4ZkNCbVlXeHpaVHRjYmlBZ2RHaHBjeTV1YjBOdmJYQmhkRTF2WkdVZ1BTQnZjSFJwYjI1eld5ZHViME52YlhCaGRFMXZaR1VuWFNCOGZDQm1ZV3h6WlR0Y2JseHVJQ0IwYUdsekxtbHRjR3hwWTJsMFZIbHdaWE1nUFNCMGFHbHpMbk5qYUdWdFlTNWpiMjF3YVd4bFpFbHRjR3hwWTJsME8xeHVJQ0IwYUdsekxtVjRjR3hwWTJsMFZIbHdaWE1nUFNCMGFHbHpMbk5qYUdWdFlTNWpiMjF3YVd4bFpFVjRjR3hwWTJsME8xeHVYRzRnSUhSb2FYTXVkR0ZuSUQwZ2JuVnNiRHRjYmlBZ2RHaHBjeTV5WlhOMWJIUWdQU0FuSnp0Y2JseHVJQ0IwYUdsekxtUjFjR3hwWTJGMFpYTWdQU0JiWFR0Y2JpQWdkR2hwY3k1MWMyVmtSSFZ3YkdsallYUmxjeUE5SUc1MWJHdzdYRzU5WEc1Y2JpOHZJRWx1WkdWdWRITWdaWFpsY25rZ2JHbHVaU0JwYmlCaElITjBjbWx1Wnk0Z1JXMXdkSGtnYkdsdVpYTWdLRnhjYmlCdmJteDVLU0JoY21VZ2JtOTBJR2x1WkdWdWRHVmtMbHh1Wm5WdVkzUnBiMjRnYVc1a1pXNTBVM1J5YVc1bktITjBjbWx1Wnl3Z2MzQmhZMlZ6S1NCN1hHNGdJSFpoY2lCcGJtUWdQU0JqYjIxdGIyNHVjbVZ3WldGMEtDY2dKeXdnYzNCaFkyVnpLU3hjYmlBZ0lDQWdJSEJ2YzJsMGFXOXVJRDBnTUN4Y2JpQWdJQ0FnSUc1bGVIUWdQU0F0TVN4Y2JpQWdJQ0FnSUhKbGMzVnNkQ0E5SUNjbkxGeHVJQ0FnSUNBZ2JHbHVaU3hjYmlBZ0lDQWdJR3hsYm1kMGFDQTlJSE4wY21sdVp5NXNaVzVuZEdnN1hHNWNiaUFnZDJocGJHVWdLSEJ2YzJsMGFXOXVJRHdnYkdWdVozUm9LU0I3WEc0Z0lDQWdibVY0ZENBOUlITjBjbWx1Wnk1cGJtUmxlRTltS0NkY1hHNG5MQ0J3YjNOcGRHbHZiaWs3WEc0Z0lDQWdhV1lnS0c1bGVIUWdQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQnNhVzVsSUQwZ2MzUnlhVzVuTG5Oc2FXTmxLSEJ2YzJsMGFXOXVLVHRjYmlBZ0lDQWdJSEJ2YzJsMGFXOXVJRDBnYkdWdVozUm9PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCc2FXNWxJRDBnYzNSeWFXNW5Mbk5zYVdObEtIQnZjMmwwYVc5dUxDQnVaWGgwSUNzZ01TazdYRzRnSUNBZ0lDQndiM05wZEdsdmJpQTlJRzVsZUhRZ0t5QXhPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hzYVc1bExteGxibWQwYUNBbUppQnNhVzVsSUNFOVBTQW5YRnh1SnlrZ2NtVnpkV3gwSUNzOUlHbHVaRHRjYmx4dUlDQWdJSEpsYzNWc2RDQXJQU0JzYVc1bE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWjJWdVpYSmhkR1ZPWlhoMFRHbHVaU2h6ZEdGMFpTd2diR1YyWld3cElIdGNiaUFnY21WMGRYSnVJQ2RjWEc0bklDc2dZMjl0Ylc5dUxuSmxjR1ZoZENnbklDY3NJSE4wWVhSbExtbHVaR1Z1ZENBcUlHeGxkbVZzS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnZEdWemRFbHRjR3hwWTJsMFVtVnpiMngyYVc1bktITjBZWFJsTENCemRISXBJSHRjYmlBZ2RtRnlJR2x1WkdWNExDQnNaVzVuZEdnc0lIUjVjR1U3WEc1Y2JpQWdabTl5SUNocGJtUmxlQ0E5SURBc0lHeGxibWQwYUNBOUlITjBZWFJsTG1sdGNHeHBZMmwwVkhsd1pYTXViR1Z1WjNSb095QnBibVJsZUNBOElHeGxibWQwYURzZ2FXNWtaWGdnS3owZ01Ta2dlMXh1SUNBZ0lIUjVjR1VnUFNCemRHRjBaUzVwYlhCc2FXTnBkRlI1Y0dWelcybHVaR1Y0WFR0Y2JseHVJQ0FnSUdsbUlDaDBlWEJsTG5KbGMyOXNkbVVvYzNSeUtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY21WMGRYSnVJR1poYkhObE8xeHVmVnh1WEc0dkx5QmJNek5kSUhNdGQyaHBkR1VnT2pvOUlITXRjM0JoWTJVZ2ZDQnpMWFJoWWx4dVpuVnVZM1JwYjI0Z2FYTlhhR2wwWlhOd1lXTmxLR01wSUh0Y2JpQWdjbVYwZFhKdUlHTWdQVDA5SUVOSVFWSmZVMUJCUTBVZ2ZId2dZeUE5UFQwZ1EwaEJVbDlVUVVJN1hHNTlYRzVjYmk4dklGSmxkSFZ5Ym5NZ2RISjFaU0JwWmlCMGFHVWdZMmhoY21GamRHVnlJR05oYmlCaVpTQndjbWx1ZEdWa0lIZHBkR2h2ZFhRZ1pYTmpZWEJwYm1jdVhHNHZMeUJHY205dElGbEJUVXdnTVM0eU9pQmNJbUZ1ZVNCaGJHeHZkMlZrSUdOb1lYSmhZM1JsY25NZ2EyNXZkMjRnZEc4Z1ltVWdibTl1TFhCeWFXNTBZV0pzWlZ4dUx5OGdjMmh2ZFd4a0lHRnNjMjhnWW1VZ1pYTmpZWEJsWkM0Z1cwaHZkMlYyWlhJc1hTQlVhR2x6SUdsemJ1S0FtWFFnYldGdVpHRjBiM0o1WENKY2JpOHZJRVJsY21sMlpXUWdabkp2YlNCdVlpMWphR0Z5SUMwZ1hGeDBJQzBnSTNnNE5TQXRJQ040UVRBZ0xTQWplREl3TWpnZ0xTQWplREl3TWprdVhHNW1kVzVqZEdsdmJpQnBjMUJ5YVc1MFlXSnNaU2hqS1NCN1hHNGdJSEpsZEhWeWJpQWdLREI0TURBd01qQWdQRDBnWXlBbUppQmpJRHc5SURCNE1EQXdNRGRGS1Z4dUlDQWdJQ0FnZkh3Z0tDZ3dlREF3TUVFeElEdzlJR01nSmlZZ1l5QThQU0F3ZURBd1JEZEdSaWtnSmlZZ1l5QWhQVDBnTUhneU1ESTRJQ1ltSUdNZ0lUMDlJREI0TWpBeU9TbGNiaUFnSUNBZ0lIeDhJQ2dvTUhnd1JUQXdNQ0E4UFNCaklDWW1JR01nUEQwZ01IZ3dNRVpHUmtRcElDWW1JR01nSVQwOUlEQjRSa1ZHUmlBdktpQkNUMDBnS2k4cFhHNGdJQ0FnSUNCOGZDQWdLREI0TVRBd01EQWdQRDBnWXlBbUppQmpJRHc5SURCNE1UQkdSa1pHS1R0Y2JuMWNibHh1THk4Z1UybHRjR3hwWm1sbFpDQjBaWE4wSUdadmNpQjJZV3gxWlhNZ1lXeHNiM2RsWkNCaFpuUmxjaUIwYUdVZ1ptbHljM1FnWTJoaGNtRmpkR1Z5SUdsdUlIQnNZV2x1SUhOMGVXeGxMbHh1Wm5WdVkzUnBiMjRnYVhOUWJHRnBibE5oWm1Vb1l5a2dlMXh1SUNBdkx5QlZjMlZ6SUdFZ2MzVmljMlYwSUc5bUlHNWlMV05vWVhJZ0xTQmpMV1pzYjNjdGFXNWthV05oZEc5eUlDMGdYQ0k2WENJZ0xTQmNJaU5jSWx4dUlDQXZMeUIzYUdWeVpTQnVZaTFqYUdGeUlEbzZQU0JqTFhCeWFXNTBZV0pzWlNBdElHSXRZMmhoY2lBdElHTXRZbmwwWlMxdmNtUmxjaTF0WVhKckxseHVJQ0J5WlhSMWNtNGdhWE5RY21sdWRHRmliR1VvWXlrZ0ppWWdZeUFoUFQwZ01IaEdSVVpHWEc0Z0lDQWdMeThnTFNCakxXWnNiM2N0YVc1a2FXTmhkRzl5WEc0Z0lDQWdKaVlnWXlBaFBUMGdRMGhCVWw5RFQwMU5RVnh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmVEVWR1ZGOVRVVlZCVWtWZlFsSkJRMHRGVkZ4dUlDQWdJQ1ltSUdNZ0lUMDlJRU5JUVZKZlVrbEhTRlJmVTFGVlFWSkZYMEpTUVVOTFJWUmNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMHhGUmxSZlExVlNURmxmUWxKQlEwdEZWRnh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmVWtsSFNGUmZRMVZTVEZsZlFsSkJRMHRGVkZ4dUlDQWdJQzh2SUMwZ1hDSTZYQ0lnTFNCY0lpTmNJbHh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmUTA5TVQwNWNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMU5JUVZKUU8xeHVmVnh1WEc0dkx5QlRhVzF3YkdsbWFXVmtJSFJsYzNRZ1ptOXlJSFpoYkhWbGN5QmhiR3h2ZDJWa0lHRnpJSFJvWlNCbWFYSnpkQ0JqYUdGeVlXTjBaWElnYVc0Z2NHeGhhVzRnYzNSNWJHVXVYRzVtZFc1amRHbHZiaUJwYzFCc1lXbHVVMkZtWlVacGNuTjBLR01wSUh0Y2JpQWdMeThnVlhObGN5QmhJSE4xWW5ObGRDQnZaaUJ1Y3kxamFHRnlJQzBnWXkxcGJtUnBZMkYwYjNKY2JpQWdMeThnZDJobGNtVWdibk10WTJoaGNpQTlJRzVpTFdOb1lYSWdMU0J6TFhkb2FYUmxMbHh1SUNCeVpYUjFjbTRnYVhOUWNtbHVkR0ZpYkdVb1l5a2dKaVlnWXlBaFBUMGdNSGhHUlVaR1hHNGdJQ0FnSmlZZ0lXbHpWMmhwZEdWemNHRmpaU2hqS1NBdkx5QXRJSE10ZDJocGRHVmNiaUFnSUNBdkx5QXRJQ2hqTFdsdVpHbGpZWFJ2Y2lBNk9qMWNiaUFnSUNBdkx5RGlnSnd0NG9DZElId2c0b0NjUCtLQW5TQjhJT0tBbkRyaWdKMGdmQ0RpZ0p3czRvQ2RJSHdnNG9DY1crS0FuU0I4SU9LQW5GM2lnSjBnZkNEaWdKeDc0b0NkSUh3ZzRvQ2NmZUtBblZ4dUlDQWdJQ1ltSUdNZ0lUMDlJRU5JUVZKZlRVbE9WVk5jYmlBZ0lDQW1KaUJqSUNFOVBTQkRTRUZTWDFGVlJWTlVTVTlPWEc0Z0lDQWdKaVlnWXlBaFBUMGdRMGhCVWw5RFQweFBUbHh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmUTA5TlRVRmNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMHhGUmxSZlUxRlZRVkpGWDBKU1FVTkxSVlJjYmlBZ0lDQW1KaUJqSUNFOVBTQkRTRUZTWDFKSlIwaFVYMU5SVlVGU1JWOUNVa0ZEUzBWVVhHNGdJQ0FnSmlZZ1l5QWhQVDBnUTBoQlVsOU1SVVpVWDBOVlVreFpYMEpTUVVOTFJWUmNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMUpKUjBoVVgwTlZVa3haWDBKU1FVTkxSVlJjYmlBZ0lDQXZMeUI4SU9LQW5DUGlnSjBnZkNEaWdKd200b0NkSUh3ZzRvQ2NLdUtBblNCOElPS0FuQ0hpZ0owZ2ZDRGlnSng4NG9DZElId2c0b0NjUHVLQW5TQjhJT0tBbkNmaWdKMGdmQ0RpZ0p4Y0l1S0FuVnh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmVTBoQlVsQmNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMEZOVUVWU1UwRk9SRnh1SUNBZ0lDWW1JR01nSVQwOUlFTklRVkpmUVZOVVJWSkpVMHRjYmlBZ0lDQW1KaUJqSUNFOVBTQkRTRUZTWDBWWVEweEJUVUZVU1U5T1hHNGdJQ0FnSmlZZ1l5QWhQVDBnUTBoQlVsOVdSVkpVU1VOQlRGOU1TVTVGWEc0Z0lDQWdKaVlnWXlBaFBUMGdRMGhCVWw5SFVrVkJWRVZTWDFSSVFVNWNiaUFnSUNBbUppQmpJQ0U5UFNCRFNFRlNYMU5KVGtkTVJWOVJWVTlVUlZ4dUlDQWdJQ1ltSUdNZ0lUMDlJRU5JUVZKZlJFOVZRa3hGWDFGVlQxUkZYRzRnSUNBZ0x5OGdmQ0RpZ0p3bDRvQ2RJSHdnNG9DY1FPS0FuU0I4SU9LQW5HRGlnSjBwWEc0Z0lDQWdKaVlnWXlBaFBUMGdRMGhCVWw5UVJWSkRSVTVVWEc0Z0lDQWdKaVlnWXlBaFBUMGdRMGhCVWw5RFQwMU5SVkpEU1VGTVgwRlVYRzRnSUNBZ0ppWWdZeUFoUFQwZ1EwaEJVbDlIVWtGV1JWOUJRME5GVGxRN1hHNTlYRzVjYm5aaGNpQlRWRmxNUlY5UVRFRkpUaUFnSUQwZ01TeGNiaUFnSUNCVFZGbE1SVjlUU1U1SFRFVWdJRDBnTWl4Y2JpQWdJQ0JUVkZsTVJWOU1TVlJGVWtGTUlEMGdNeXhjYmlBZ0lDQlRWRmxNUlY5R1QweEVSVVFnSUQwZ05DeGNiaUFnSUNCVFZGbE1SVjlFVDFWQ1RFVWdJRDBnTlR0Y2JseHVMeThnUkdWMFpYSnRhVzVsY3lCM2FHbGphQ0J6WTJGc1lYSWdjM1I1YkdWeklHRnlaU0J3YjNOemFXSnNaU0JoYm1RZ2NtVjBkWEp1Y3lCMGFHVWdjSEpsWm1WeWNtVmtJSE4wZVd4bExseHVMeThnYkdsdVpWZHBaSFJvSUQwZ0xURWdQVDRnYm04Z2JHbHRhWFF1WEc0dkx5QlFjbVV0WTI5dVpHbDBhVzl1Y3pvZ2MzUnlMbXhsYm1kMGFDQStJREF1WEc0dkx5QlFiM04wTFdOdmJtUnBkR2x2Ym5NNlhHNHZMeUFnSUNCVFZGbE1SVjlRVEVGSlRpQnZjaUJUVkZsTVJWOVRTVTVIVEVVZ1BUNGdibThnWEZ4dUlHRnlaU0JwYmlCMGFHVWdjM1J5YVc1bkxseHVMeThnSUNBZ1UxUlpURVZmVEVsVVJWSkJUQ0E5UGlCdWJ5QnNhVzVsY3lCaGNtVWdjM1ZwZEdGaWJHVWdabTl5SUdadmJHUnBibWNnS0c5eUlHeHBibVZYYVdSMGFDQnBjeUF0TVNrdVhHNHZMeUFnSUNCVFZGbE1SVjlHVDB4RVJVUWdQVDRnWVNCc2FXNWxJRDRnYkdsdVpWZHBaSFJvSUdGdVpDQmpZVzRnWW1VZ1ptOXNaR1ZrSUNoaGJtUWdiR2x1WlZkcFpIUm9JQ0U5SUMweEtTNWNibVoxYm1OMGFXOXVJR05vYjI5elpWTmpZV3hoY2xOMGVXeGxLSE4wY21sdVp5d2djMmx1WjJ4bFRHbHVaVTl1Ykhrc0lHbHVaR1Z1ZEZCbGNreGxkbVZzTENCc2FXNWxWMmxrZEdnc0lIUmxjM1JCYldKcFozVnZkWE5VZVhCbEtTQjdYRzRnSUhaaGNpQnBPMXh1SUNCMllYSWdZMmhoY2p0Y2JpQWdkbUZ5SUdoaGMweHBibVZDY21WaGF5QTlJR1poYkhObE8xeHVJQ0IyWVhJZ2FHRnpSbTlzWkdGaWJHVk1hVzVsSUQwZ1ptRnNjMlU3SUM4dklHOXViSGtnWTJobFkydGxaQ0JwWmlCemFHOTFiR1JVY21GamExZHBaSFJvWEc0Z0lIWmhjaUJ6YUc5MWJHUlVjbUZqYTFkcFpIUm9JRDBnYkdsdVpWZHBaSFJvSUNFOVBTQXRNVHRjYmlBZ2RtRnlJSEJ5WlhacGIzVnpUR2x1WlVKeVpXRnJJRDBnTFRFN0lDOHZJR052ZFc1MElIUm9aU0JtYVhKemRDQnNhVzVsSUdOdmNuSmxZM1JzZVZ4dUlDQjJZWElnY0d4aGFXNGdQU0JwYzFCc1lXbHVVMkZtWlVacGNuTjBLSE4wY21sdVp5NWphR0Z5UTI5a1pVRjBLREFwS1Z4dUlDQWdJQ0FnSUNBZ0lDWW1JQ0ZwYzFkb2FYUmxjM0JoWTJVb2MzUnlhVzVuTG1Ob1lYSkRiMlJsUVhRb2MzUnlhVzVuTG14bGJtZDBhQ0F0SURFcEtUdGNibHh1SUNCcFppQW9jMmx1WjJ4bFRHbHVaVTl1YkhrcElIdGNiaUFnSUNBdkx5QkRZWE5sT2lCdWJ5QmliRzlqYXlCemRIbHNaWE11WEc0Z0lDQWdMeThnUTJobFkyc2dabTl5SUdScGMyRnNiRzkzWldRZ1kyaGhjbUZqZEdWeWN5QjBieUJ5ZFd4bElHOTFkQ0J3YkdGcGJpQmhibVFnYzJsdVoyeGxMbHh1SUNBZ0lHWnZjaUFvYVNBOUlEQTdJR2tnUENCemRISnBibWN1YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lHTm9ZWElnUFNCemRISnBibWN1WTJoaGNrTnZaR1ZCZENocEtUdGNiaUFnSUNBZ0lHbG1JQ2doYVhOUWNtbHVkR0ZpYkdVb1kyaGhjaWtwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZOVVdVeEZYMFJQVlVKTVJUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIQnNZV2x1SUQwZ2NHeGhhVzRnSmlZZ2FYTlFiR0ZwYmxOaFptVW9ZMmhoY2lrN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUM4dklFTmhjMlU2SUdKc2IyTnJJSE4wZVd4bGN5QndaWEp0YVhSMFpXUXVYRzRnSUNBZ1ptOXlJQ2hwSUQwZ01Ec2dhU0E4SUhOMGNtbHVaeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyaGhjaUE5SUhOMGNtbHVaeTVqYUdGeVEyOWtaVUYwS0drcE8xeHVJQ0FnSUNBZ2FXWWdLR05vWVhJZ1BUMDlJRU5JUVZKZlRFbE9SVjlHUlVWRUtTQjdYRzRnSUNBZ0lDQWdJR2hoYzB4cGJtVkNjbVZoYXlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUM4dklFTm9aV05ySUdsbUlHRnVlU0JzYVc1bElHTmhiaUJpWlNCbWIyeGtaV1F1WEc0Z0lDQWdJQ0FnSUdsbUlDaHphRzkxYkdSVWNtRmphMWRwWkhSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYUdGelJtOXNaR0ZpYkdWTWFXNWxJRDBnYUdGelJtOXNaR0ZpYkdWTWFXNWxJSHg4WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJHYjJ4a1lXSnNaU0JzYVc1bElEMGdkRzl2SUd4dmJtY3NJR0Z1WkNCdWIzUWdiVzl5WlMxcGJtUmxiblJsWkM1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2hwSUMwZ2NISmxkbWx2ZFhOTWFXNWxRbkpsWVdzZ0xTQXhJRDRnYkdsdVpWZHBaSFJvSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnYzNSeWFXNW5XM0J5WlhacGIzVnpUR2x1WlVKeVpXRnJJQ3NnTVYwZ0lUMDlJQ2NnSnlrN1hHNGdJQ0FnSUNBZ0lDQWdjSEpsZG1sdmRYTk1hVzVsUW5KbFlXc2dQU0JwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDRnBjMUJ5YVc1MFlXSnNaU2hqYUdGeUtTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdVMVJaVEVWZlJFOVZRa3hGTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY0d4aGFXNGdQU0J3YkdGcGJpQW1KaUJwYzFCc1lXbHVVMkZtWlNoamFHRnlLVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5OGdhVzRnWTJGelpTQjBhR1VnWlc1a0lHbHpJRzFwYzNOcGJtY2dZU0JjWEc1Y2JpQWdJQ0JvWVhOR2IyeGtZV0pzWlV4cGJtVWdQU0JvWVhOR2IyeGtZV0pzWlV4cGJtVWdmSHdnS0hOb2IzVnNaRlJ5WVdOclYybGtkR2dnSmlaY2JpQWdJQ0FnSUNocElDMGdjSEpsZG1sdmRYTk1hVzVsUW5KbFlXc2dMU0F4SUQ0Z2JHbHVaVmRwWkhSb0lDWW1YRzRnSUNBZ0lDQWdjM1J5YVc1blczQnlaWFpwYjNWelRHbHVaVUp5WldGcklDc2dNVjBnSVQwOUlDY2dKeWtwTzF4dUlDQjlYRzRnSUM4dklFRnNkR2h2ZFdkb0lHVjJaWEo1SUhOMGVXeGxJR05oYmlCeVpYQnlaWE5sYm5RZ1hGeHVJSGRwZEdodmRYUWdaWE5qWVhCcGJtY3NJSEJ5WldabGNpQmliRzlqYXlCemRIbHNaWE5jYmlBZ0x5OGdabTl5SUcxMWJIUnBiR2x1WlN3Z2MybHVZMlVnZEdobGVTZHlaU0J0YjNKbElISmxZV1JoWW14bElHRnVaQ0IwYUdWNUlHUnZiaWQwSUdGa1pDQmxiWEIwZVNCc2FXNWxjeTVjYmlBZ0x5OGdRV3h6YnlCd2NtVm1aWElnWm05c1pHbHVaeUJoSUhOMWNHVnlMV3h2Ym1jZ2JHbHVaUzVjYmlBZ2FXWWdLQ0ZvWVhOTWFXNWxRbkpsWVdzZ0ppWWdJV2hoYzBadmJHUmhZbXhsVEdsdVpTa2dlMXh1SUNBZ0lDOHZJRk4wY21sdVozTWdhVzUwWlhKd2NtVjBZV0pzWlNCaGN5QmhibTkwYUdWeUlIUjVjR1VnYUdGMlpTQjBieUJpWlNCeGRXOTBaV1E3WEc0Z0lDQWdMeThnWlM1bkxpQjBhR1VnYzNSeWFXNW5JQ2QwY25WbEp5QjJjeTRnZEdobElHSnZiMnhsWVc0Z2RISjFaUzVjYmlBZ0lDQnlaWFIxY200Z2NHeGhhVzRnSmlZZ0lYUmxjM1JCYldKcFozVnZkWE5VZVhCbEtITjBjbWx1WnlsY2JpQWdJQ0FnSUQ4Z1UxUlpURVZmVUV4QlNVNGdPaUJUVkZsTVJWOVRTVTVIVEVVN1hHNGdJSDFjYmlBZ0x5OGdSV1JuWlNCallYTmxPaUJpYkc5amF5QnBibVJsYm5SaGRHbHZiaUJwYm1ScFkyRjBiM0lnWTJGdUlHOXViSGtnYUdGMlpTQnZibVVnWkdsbmFYUXVYRzRnSUdsbUlDaHpkSEpwYm1kYk1GMGdQVDA5SUNjZ0p5QW1KaUJwYm1SbGJuUlFaWEpNWlhabGJDQStJRGtwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdVMVJaVEVWZlJFOVZRa3hGTzF4dUlDQjlYRzRnSUM4dklFRjBJSFJvYVhNZ2NHOXBiblFnZDJVZ2EyNXZkeUJpYkc5amF5QnpkSGxzWlhNZ1lYSmxJSFpoYkdsa0xseHVJQ0F2THlCUWNtVm1aWElnYkdsMFpYSmhiQ0J6ZEhsc1pTQjFibXhsYzNNZ2QyVWdkMkZ1ZENCMGJ5Qm1iMnhrTGx4dUlDQnlaWFIxY200Z2FHRnpSbTlzWkdGaWJHVk1hVzVsSUQ4Z1UxUlpURVZmUms5TVJFVkVJRG9nVTFSWlRFVmZURWxVUlZKQlREdGNibjFjYmx4dUx5OGdUbTkwWlRvZ2JHbHVaU0JpY21WaGEybHVaeTltYjJ4a2FXNW5JR2x6SUdsdGNHeGxiV1Z1ZEdWa0lHWnZjaUJ2Ym14NUlIUm9aU0JtYjJ4a1pXUWdjM1I1YkdVdVhHNHZMeUJPUWk0Z1YyVWdaSEp2Y0NCMGFHVWdiR0Z6ZENCMGNtRnBiR2x1WnlCdVpYZHNhVzVsSUNocFppQmhibmtwSUc5bUlHRWdjbVYwZFhKdVpXUWdZbXh2WTJzZ2MyTmhiR0Z5WEc0dkx5QWdjMmx1WTJVZ2RHaGxJR1IxYlhCbGNpQmhaR1J6SUdsMGN5QnZkMjRnYm1WM2JHbHVaUzRnVkdocGN5QmhiSGRoZVhNZ2QyOXlhM002WEc0dkx5QWdJQ0RpZ0tJZ1RtOGdaVzVrYVc1bklHNWxkMnhwYm1VZ1BUNGdkVzVoWm1abFkzUmxaRHNnWVd4eVpXRmtlU0IxYzJsdVp5QnpkSEpwY0NCY0lpMWNJaUJqYUc5dGNHbHVaeTVjYmk4dklDQWdJT0tBb2lCRmJtUnBibWNnYm1WM2JHbHVaU0FnSUNBOVBpQnlaVzF2ZG1Wa0lIUm9aVzRnY21WemRHOXlaV1F1WEc0dkx5QWdTVzF3YjNKMFlXNTBiSGtzSUhSb2FYTWdhMlZsY0hNZ2RHaGxJRndpSzF3aUlHTm9iMjF3SUdsdVpHbGpZWFJ2Y2lCbWNtOXRJR2RoYVc1cGJtY2dZVzRnWlhoMGNtRWdiR2x1WlM1Y2JtWjFibU4wYVc5dUlIZHlhWFJsVTJOaGJHRnlLSE4wWVhSbExDQnpkSEpwYm1jc0lHeGxkbVZzTENCcGMydGxlU2tnZTF4dUlDQnpkR0YwWlM1a2RXMXdJRDBnS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCcFppQW9jM1J5YVc1bkxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRndpSnlkY0lqdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tDRnpkR0YwWlM1dWIwTnZiWEJoZEUxdlpHVWdKaVpjYmlBZ0lDQWdJQ0FnUkVWUVVrVkRRVlJGUkY5Q1QwOU1SVUZPVTE5VFdVNVVRVmd1YVc1a1pYaFBaaWh6ZEhKcGJtY3BJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlGd2lKMXdpSUNzZ2MzUnlhVzVuSUNzZ1hDSW5YQ0k3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkbUZ5SUdsdVpHVnVkQ0E5SUhOMFlYUmxMbWx1WkdWdWRDQXFJRTFoZEdndWJXRjRLREVzSUd4bGRtVnNLVHNnTHk4Z2JtOGdNQzFwYm1SbGJuUWdjMk5oYkdGeWMxeHVJQ0FnSUM4dklFRnpJR2x1WkdWdWRHRjBhVzl1SUdkbGRITWdaR1ZsY0dWeUxDQnNaWFFnZEdobElIZHBaSFJvSUdSbFkzSmxZWE5sSUcxdmJtOTBiMjVwWTJGc2JIbGNiaUFnSUNBdkx5QjBieUIwYUdVZ2JHOTNaWElnWW05MWJtUWdiV2x1S0hOMFlYUmxMbXhwYm1WWGFXUjBhQ3dnTkRBcExseHVJQ0FnSUM4dklFNXZkR1VnZEdoaGRDQjBhR2x6SUdsdGNHeHBaWE5jYmlBZ0lDQXZMeUFnYzNSaGRHVXViR2x1WlZkcFpIUm9JT0tKcENBME1DQXJJSE4wWVhSbExtbHVaR1Z1ZERvZ2QybGtkR2dnYVhNZ1ptbDRaV1FnWVhRZ2RHaGxJR3h2ZDJWeUlHSnZkVzVrTGx4dUlDQWdJQzh2SUNCemRHRjBaUzVzYVc1bFYybGtkR2dnUGlBME1DQXJJSE4wWVhSbExtbHVaR1Z1ZERvZ2QybGtkR2dnWkdWamNtVmhjMlZ6SUhWdWRHbHNJSFJvWlNCc2IzZGxjaUJpYjNWdVpDNWNiaUFnSUNBdkx5QlVhR2x6SUdKbGFHRjJaWE1nWW1WMGRHVnlJSFJvWVc0Z1lTQmpiMjV6ZEdGdWRDQnRhVzVwYlhWdElIZHBaSFJvSUhkb2FXTm9JR1JwYzJGc2JHOTNjeUJ1WVhKeWIzZGxjaUJ2Y0hScGIyNXpMRnh1SUNBZ0lDOHZJRzl5SUdGdUlHbHVaR1Z1ZENCMGFISmxjMmh2YkdRZ2QyaHBZMmdnWTJGMWMyVnpJSFJvWlNCM2FXUjBhQ0IwYnlCemRXUmtaVzVzZVNCcGJtTnlaV0Z6WlM1Y2JpQWdJQ0IyWVhJZ2JHbHVaVmRwWkhSb0lEMGdjM1JoZEdVdWJHbHVaVmRwWkhSb0lEMDlQU0F0TVZ4dUlDQWdJQ0FnUHlBdE1TQTZJRTFoZEdndWJXRjRLRTFoZEdndWJXbHVLSE4wWVhSbExteHBibVZYYVdSMGFDd2dOREFwTENCemRHRjBaUzVzYVc1bFYybGtkR2dnTFNCcGJtUmxiblFwTzF4dVhHNGdJQ0FnTHk4Z1YybDBhRzkxZENCcmJtOTNhVzVuSUdsbUlHdGxlWE1nWVhKbElHbHRjR3hwWTJsMEwyVjRjR3hwWTJsMExDQmhjM04xYldVZ2FXMXdiR2xqYVhRZ1ptOXlJSE5oWm1WMGVTNWNiaUFnSUNCMllYSWdjMmx1WjJ4bFRHbHVaVTl1YkhrZ1BTQnBjMnRsZVZ4dUlDQWdJQ0FnTHk4Z1RtOGdZbXh2WTJzZ2MzUjViR1Z6SUdsdUlHWnNiM2NnYlc5a1pTNWNiaUFnSUNBZ0lIeDhJQ2h6ZEdGMFpTNW1iRzkzVEdWMlpXd2dQaUF0TVNBbUppQnNaWFpsYkNBK1BTQnpkR0YwWlM1bWJHOTNUR1YyWld3cE8xeHVJQ0FnSUdaMWJtTjBhVzl1SUhSbGMzUkJiV0pwWjNWcGRIa29jM1J5YVc1bktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHVnpkRWx0Y0d4cFkybDBVbVZ6YjJ4MmFXNW5LSE4wWVhSbExDQnpkSEpwYm1jcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhOM2FYUmphQ0FvWTJodmIzTmxVMk5oYkdGeVUzUjViR1VvYzNSeWFXNW5MQ0J6YVc1bmJHVk1hVzVsVDI1c2VTd2djM1JoZEdVdWFXNWtaVzUwTENCc2FXNWxWMmxrZEdnc0lIUmxjM1JCYldKcFozVnBkSGtwS1NCN1hHNGdJQ0FnSUNCallYTmxJRk5VV1V4RlgxQk1RVWxPT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYzNSeWFXNW5PMXh1SUNBZ0lDQWdZMkZ6WlNCVFZGbE1SVjlUU1U1SFRFVTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmNJaWRjSWlBcklITjBjbWx1Wnk1eVpYQnNZV05sS0M4bkwyY3NJRndpSnlkY0lpa2dLeUJjSWlkY0lqdGNiaUFnSUNBZ0lHTmhjMlVnVTFSWlRFVmZURWxVUlZKQlREcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDZDhKeUFySUdKc2IyTnJTR1ZoWkdWeUtITjBjbWx1Wnl3Z2MzUmhkR1V1YVc1a1pXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNzZ1pISnZjRVZ1WkdsdVowNWxkMnhwYm1Vb2FXNWtaVzUwVTNSeWFXNW5LSE4wY21sdVp5d2dhVzVrWlc1MEtTazdYRzRnSUNBZ0lDQmpZWE5sSUZOVVdVeEZYMFpQVEVSRlJEcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDYytKeUFySUdKc2IyTnJTR1ZoWkdWeUtITjBjbWx1Wnl3Z2MzUmhkR1V1YVc1a1pXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNzZ1pISnZjRVZ1WkdsdVowNWxkMnhwYm1Vb2FXNWtaVzUwVTNSeWFXNW5LR1p2YkdSVGRISnBibWNvYzNSeWFXNW5MQ0JzYVc1bFYybGtkR2dwTENCcGJtUmxiblFwS1R0Y2JpQWdJQ0FnSUdOaGMyVWdVMVJaVEVWZlJFOVZRa3hGT2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnSjF3aUp5QXJJR1Z6WTJGd1pWTjBjbWx1WnloemRISnBibWNzSUd4cGJtVlhhV1IwYUNrZ0t5QW5YQ0luTzF4dUlDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZsQlRVeEZlR05sY0hScGIyNG9KMmx0Y0c5emMybGliR1VnWlhKeWIzSTZJR2x1ZG1Gc2FXUWdjMk5oYkdGeUlITjBlV3hsSnlrN1hHNGdJQ0FnZlZ4dUlDQjlLQ2twTzF4dWZWeHVYRzR2THlCUWNtVXRZMjl1WkdsMGFXOXVjem9nYzNSeWFXNW5JR2x6SUhaaGJHbGtJR1p2Y2lCaElHSnNiMk5ySUhOallXeGhjaXdnTVNBOFBTQnBibVJsYm5SUVpYSk1aWFpsYkNBOFBTQTVMbHh1Wm5WdVkzUnBiMjRnWW14dlkydElaV0ZrWlhJb2MzUnlhVzVuTENCcGJtUmxiblJRWlhKTVpYWmxiQ2tnZTF4dUlDQjJZWElnYVc1a1pXNTBTVzVrYVdOaGRHOXlJRDBnS0hOMGNtbHVaMXN3WFNBOVBUMGdKeUFuS1NBL0lGTjBjbWx1WnlocGJtUmxiblJRWlhKTVpYWmxiQ2tnT2lBbkp6dGNibHh1SUNBdkx5QnViM1JsSUhSb1pTQnpjR1ZqYVdGc0lHTmhjMlU2SUhSb1pTQnpkSEpwYm1jZ0oxeGNiaWNnWTI5MWJuUnpJR0Z6SUdFZ1hDSjBjbUZwYkdsdVoxd2lJR1Z0Y0hSNUlHeHBibVV1WEc0Z0lIWmhjaUJqYkdsd0lEMGdJQ0FnSUNBZ0lDQWdjM1J5YVc1blczTjBjbWx1Wnk1c1pXNW5kR2dnTFNBeFhTQTlQVDBnSjF4Y2JpYzdYRzRnSUhaaGNpQnJaV1Z3SUQwZ1kyeHBjQ0FtSmlBb2MzUnlhVzVuVzNOMGNtbHVaeTVzWlc1bmRHZ2dMU0F5WFNBOVBUMGdKMXhjYmljZ2ZId2djM1J5YVc1bklEMDlQU0FuWEZ4dUp5azdYRzRnSUhaaGNpQmphRzl0Y0NBOUlHdGxaWEFnUHlBbkt5Y2dPaUFvWTJ4cGNDQS9JQ2NuSURvZ0p5MG5LVHRjYmx4dUlDQnlaWFIxY200Z2FXNWtaVzUwU1c1a2FXTmhkRzl5SUNzZ1kyaHZiWEFnS3lBblhGeHVKenRjYm4xY2JseHVMeThnS0ZObFpTQjBhR1VnYm05MFpTQm1iM0lnZDNKcGRHVlRZMkZzWVhJdUtWeHVablZ1WTNScGIyNGdaSEp2Y0VWdVpHbHVaMDVsZDJ4cGJtVW9jM1J5YVc1bktTQjdYRzRnSUhKbGRIVnliaUJ6ZEhKcGJtZGJjM1J5YVc1bkxteGxibWQwYUNBdElERmRJRDA5UFNBblhGeHVKeUEvSUhOMGNtbHVaeTV6YkdsalpTZ3dMQ0F0TVNrZ09pQnpkSEpwYm1jN1hHNTlYRzVjYmk4dklFNXZkR1U2SUdFZ2JHOXVaeUJzYVc1bElIZHBkR2h2ZFhRZ1lTQnpkV2wwWVdKc1pTQmljbVZoYXlCd2IybHVkQ0IzYVd4c0lHVjRZMlZsWkNCMGFHVWdkMmxrZEdnZ2JHbHRhWFF1WEc0dkx5QlFjbVV0WTI5dVpHbDBhVzl1Y3pvZ1pYWmxjbmtnWTJoaGNpQnBiaUJ6ZEhJZ2FYTlFjbWx1ZEdGaWJHVXNJSE4wY2k1c1pXNW5kR2dnUGlBd0xDQjNhV1IwYUNBK0lEQXVYRzVtZFc1amRHbHZiaUJtYjJ4a1UzUnlhVzVuS0hOMGNtbHVaeXdnZDJsa2RHZ3BJSHRjYmlBZ0x5OGdTVzRnWm05c1pHVmtJSE4wZVd4bExDQWtheVFnWTI5dWMyVmpkWFJwZG1VZ2JtVjNiR2x1WlhNZ2IzVjBjSFYwSUdGeklDUnJLekVrSUc1bGQyeHBibVZ6NG9DVVhHNGdJQzh2SUhWdWJHVnpjeUIwYUdWNUozSmxJR0psWm05eVpTQnZjaUJoWm5SbGNpQmhJRzF2Y21VdGFXNWtaVzUwWldRZ2JHbHVaU3dnYjNJZ1lYUWdkR2hsSUhabGNubGNiaUFnTHk4Z1ltVm5hVzV1YVc1bklHOXlJR1Z1WkN3Z2FXNGdkMmhwWTJnZ1kyRnpaU0FrYXlRZ2JXRndjeUIwYnlBa2F5UXVYRzRnSUM4dklGUm9aWEpsWm05eVpTd2djR0Z5YzJVZ1pXRmphQ0JqYUhWdWF5QmhjeUJ1Wlhkc2FXNWxLSE1wSUdadmJHeHZkMlZrSUdKNUlHRWdZMjl1ZEdWdWRDQnNhVzVsTGx4dUlDQjJZWElnYkdsdVpWSmxJRDBnTHloY1hHNHJLU2hiWGx4Y2JsMHFLUzluTzF4dVhHNGdJQzh2SUdacGNuTjBJR3hwYm1VZ0tIQnZjM05wWW14NUlHRnVJR1Z0Y0hSNUlHeHBibVVwWEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0FvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhaaGNpQnVaWGgwVEVZZ1BTQnpkSEpwYm1jdWFXNWtaWGhQWmlnblhGeHVKeWs3WEc0Z0lDQWdibVY0ZEV4R0lEMGdibVY0ZEV4R0lDRTlQU0F0TVNBL0lHNWxlSFJNUmlBNklITjBjbWx1Wnk1c1pXNW5kR2c3WEc0Z0lDQWdiR2x1WlZKbExteGhjM1JKYm1SbGVDQTlJRzVsZUhSTVJqdGNiaUFnSUNCeVpYUjFjbTRnWm05c1pFeHBibVVvYzNSeWFXNW5Mbk5zYVdObEtEQXNJRzVsZUhSTVJpa3NJSGRwWkhSb0tUdGNiaUFnZlNncEtUdGNiaUFnTHk4Z1NXWWdkMlVnYUdGMlpXNG5kQ0J5WldGamFHVmtJSFJvWlNCbWFYSnpkQ0JqYjI1MFpXNTBJR3hwYm1VZ2VXVjBMQ0JrYjI0bmRDQmhaR1FnWVc0Z1pYaDBjbUVnWEZ4dUxseHVJQ0IyWVhJZ2NISmxkazF2Y21WSmJtUmxiblJsWkNBOUlITjBjbWx1WjFzd1hTQTlQVDBnSjF4Y2JpY2dmSHdnYzNSeWFXNW5XekJkSUQwOVBTQW5JQ2M3WEc0Z0lIWmhjaUJ0YjNKbFNXNWtaVzUwWldRN1hHNWNiaUFnTHk4Z2NtVnpkQ0J2WmlCMGFHVWdiR2x1WlhOY2JpQWdkbUZ5SUcxaGRHTm9PMXh1SUNCM2FHbHNaU0FvS0cxaGRHTm9JRDBnYkdsdVpWSmxMbVY0WldNb2MzUnlhVzVuS1NrcElIdGNiaUFnSUNCMllYSWdjSEpsWm1sNElEMGdiV0YwWTJoYk1WMHNJR3hwYm1VZ1BTQnRZWFJqYUZzeVhUdGNiaUFnSUNCdGIzSmxTVzVrWlc1MFpXUWdQU0FvYkdsdVpWc3dYU0E5UFQwZ0p5QW5LVHRjYmlBZ0lDQnlaWE4xYkhRZ0t6MGdjSEpsWm1sNFhHNGdJQ0FnSUNBcklDZ2hjSEpsZGsxdmNtVkpibVJsYm5SbFpDQW1KaUFoYlc5eVpVbHVaR1Z1ZEdWa0lDWW1JR3hwYm1VZ0lUMDlJQ2NuWEc0Z0lDQWdJQ0FnSUQ4Z0oxeGNiaWNnT2lBbkp5bGNiaUFnSUNBZ0lDc2dabTlzWkV4cGJtVW9iR2x1WlN3Z2QybGtkR2dwTzF4dUlDQWdJSEJ5WlhaTmIzSmxTVzVrWlc1MFpXUWdQU0J0YjNKbFNXNWtaVzUwWldRN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzR2THlCSGNtVmxaSGtnYkdsdVpTQmljbVZoYTJsdVp5NWNiaTh2SUZCcFkydHpJSFJvWlNCc2IyNW5aWE4wSUd4cGJtVWdkVzVrWlhJZ2RHaGxJR3hwYldsMElHVmhZMmdnZEdsdFpTeGNiaTh2SUc5MGFHVnlkMmx6WlNCelpYUjBiR1Z6SUdadmNpQjBhR1VnYzJodmNuUmxjM1FnYkdsdVpTQnZkbVZ5SUhSb1pTQnNhVzFwZEM1Y2JpOHZJRTVDTGlCTmIzSmxMV2x1WkdWdWRHVmtJR3hwYm1WeklDcGpZVzV1YjNRcUlHSmxJR1p2YkdSbFpDd2dZWE1nZEdoaGRDQjNiM1ZzWkNCaFpHUWdZVzRnWlhoMGNtRWdYRnh1TGx4dVpuVnVZM1JwYjI0Z1ptOXNaRXhwYm1Vb2JHbHVaU3dnZDJsa2RHZ3BJSHRjYmlBZ2FXWWdLR3hwYm1VZ1BUMDlJQ2NuSUh4OElHeHBibVZiTUYwZ1BUMDlJQ2NnSnlrZ2NtVjBkWEp1SUd4cGJtVTdYRzVjYmlBZ0x5OGdVMmx1WTJVZ1lTQnRiM0psTFdsdVpHVnVkR1ZrSUd4cGJtVWdZV1JrY3lCaElGeGNiaXdnWW5KbFlXdHpJR05oYmlkMElHSmxJR1p2Ykd4dmQyVmtJR0o1SUdFZ2MzQmhZMlV1WEc0Z0lIWmhjaUJpY21WaGExSmxJRDBnTHlCYlhpQmRMMmM3SUM4dklHNXZkR1U2SUhSb1pTQnRZWFJqYUNCcGJtUmxlQ0IzYVd4c0lHRnNkMkY1Y3lCaVpTQThQU0JzWlc1bmRHZ3RNaTVjYmlBZ2RtRnlJRzFoZEdOb08xeHVJQ0F2THlCemRHRnlkQ0JwY3lCaGJpQnBibU5zZFhOcGRtVWdhVzVrWlhndUlHVnVaQ3dnWTNWeWNpd2dZVzVrSUc1bGVIUWdZWEpsSUdWNFkyeDFjMmwyWlM1Y2JpQWdkbUZ5SUhOMFlYSjBJRDBnTUN3Z1pXNWtMQ0JqZFhKeUlEMGdNQ3dnYm1WNGRDQTlJREE3WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0FuSnp0Y2JseHVJQ0F2THlCSmJuWmhjbWxoYm5Sek9pQXdJRHc5SUhOMFlYSjBJRHc5SUd4bGJtZDBhQzB4TGx4dUlDQXZMeUFnSURBZ1BEMGdZM1Z5Y2lBOFBTQnVaWGgwSUR3OUlHMWhlQ2d3TENCc1pXNW5kR2d0TWlrdUlHTjFjbklnTFNCemRHRnlkQ0E4UFNCM2FXUjBhQzVjYmlBZ0x5OGdTVzV6YVdSbElIUm9aU0JzYjI5d09seHVJQ0F2THlBZ0lFRWdiV0YwWTJnZ2FXMXdiR2xsY3lCc1pXNW5kR2dnUGowZ01pd2djMjhnWTNWeWNpQmhibVFnYm1WNGRDQmhjbVVnUEQwZ2JHVnVaM1JvTFRJdVhHNGdJSGRvYVd4bElDZ29iV0YwWTJnZ1BTQmljbVZoYTFKbExtVjRaV01vYkdsdVpTa3BLU0I3WEc0Z0lDQWdibVY0ZENBOUlHMWhkR05vTG1sdVpHVjRPMXh1SUNBZ0lDOHZJRzFoYVc1MFlXbHVJR2x1ZG1GeWFXRnVkRG9nWTNWeWNpQXRJSE4wWVhKMElEdzlJSGRwWkhSb1hHNGdJQ0FnYVdZZ0tHNWxlSFFnTFNCemRHRnlkQ0ErSUhkcFpIUm9LU0I3WEc0Z0lDQWdJQ0JsYm1RZ1BTQW9ZM1Z5Y2lBK0lITjBZWEowS1NBL0lHTjFjbklnT2lCdVpYaDBPeUF2THlCa1pYSnBkbVVnWlc1a0lEdzlJR3hsYm1kMGFDMHlYRzRnSUNBZ0lDQnlaWE4xYkhRZ0t6MGdKMXhjYmljZ0t5QnNhVzVsTG5Oc2FXTmxLSE4wWVhKMExDQmxibVFwTzF4dUlDQWdJQ0FnTHk4Z2MydHBjQ0IwYUdVZ2MzQmhZMlVnZEdoaGRDQjNZWE1nYjNWMGNIVjBJR0Z6SUZ4Y2JseHVJQ0FnSUNBZ2MzUmhjblFnUFNCbGJtUWdLeUF4T3lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdaR1Z5YVhabElITjBZWEowSUR3OUlHeGxibWQwYUMweFhHNGdJQ0FnZlZ4dUlDQWdJR04xY25JZ1BTQnVaWGgwTzF4dUlDQjlYRzVjYmlBZ0x5OGdRbmtnZEdobElHbHVkbUZ5YVdGdWRITXNJSE4wWVhKMElEdzlJR3hsYm1kMGFDMHhMQ0J6YnlCMGFHVnlaU0JwY3lCemIyMWxkR2hwYm1jZ2JHVm1kQ0J2ZG1WeUxseHVJQ0F2THlCSmRDQnBjeUJsYVhSb1pYSWdkR2hsSUhkb2IyeGxJSE4wY21sdVp5QnZjaUJoSUhCaGNuUWdjM1JoY25ScGJtY2dabkp2YlNCdWIyNHRkMmhwZEdWemNHRmpaUzVjYmlBZ2NtVnpkV3gwSUNzOUlDZGNYRzRuTzF4dUlDQXZMeUJKYm5ObGNuUWdZU0JpY21WaGF5QnBaaUIwYUdVZ2NtVnRZV2x1WkdWeUlHbHpJSFJ2YnlCc2IyNW5JR0Z1WkNCMGFHVnlaU0JwY3lCaElHSnlaV0ZySUdGMllXbHNZV0pzWlM1Y2JpQWdhV1lnS0d4cGJtVXViR1Z1WjNSb0lDMGdjM1JoY25RZ1BpQjNhV1IwYUNBbUppQmpkWEp5SUQ0Z2MzUmhjblFwSUh0Y2JpQWdJQ0J5WlhOMWJIUWdLejBnYkdsdVpTNXpiR2xqWlNoemRHRnlkQ3dnWTNWeWNpa2dLeUFuWEZ4dUp5QXJJR3hwYm1VdWMyeHBZMlVvWTNWeWNpQXJJREVwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCc2FXNWxMbk5zYVdObEtITjBZWEowS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCeVpYTjFiSFF1YzJ4cFkyVW9NU2s3SUM4dklHUnliM0FnWlhoMGNtRWdYRnh1SUdwdmFXNWxjbHh1ZlZ4dVhHNHZMeUJGYzJOaGNHVnpJR0VnWkc5MVlteGxMWEYxYjNSbFpDQnpkSEpwYm1jdVhHNW1kVzVqZEdsdmJpQmxjMk5oY0dWVGRISnBibWNvYzNSeWFXNW5LU0I3WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0FuSnp0Y2JpQWdkbUZ5SUdOb1lYSTdYRzRnSUhaaGNpQmxjMk5oY0dWVFpYRTdYRzVjYmlBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnpkSEpwYm1jdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQmphR0Z5SUQwZ2MzUnlhVzVuTG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ1pYTmpZWEJsVTJWeElEMGdSVk5EUVZCRlgxTkZVVlZGVGtORlUxdGphR0Z5WFR0Y2JpQWdJQ0J5WlhOMWJIUWdLejBnSVdWelkyRndaVk5sY1NBbUppQnBjMUJ5YVc1MFlXSnNaU2hqYUdGeUtWeHVJQ0FnSUNBZ1B5QnpkSEpwYm1kYmFWMWNiaUFnSUNBZ0lEb2daWE5qWVhCbFUyVnhJSHg4SUdWdVkyOWtaVWhsZUNoamFHRnlLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIZHlhWFJsUm14dmQxTmxjWFZsYm1ObEtITjBZWFJsTENCc1pYWmxiQ3dnYjJKcVpXTjBLU0I3WEc0Z0lIWmhjaUJmY21WemRXeDBJRDBnSnljc1hHNGdJQ0FnSUNCZmRHRm5JQ0FnSUQwZ2MzUmhkR1V1ZEdGbkxGeHVJQ0FnSUNBZ2FXNWtaWGdzWEc0Z0lDQWdJQ0JzWlc1bmRHZzdYRzVjYmlBZ1ptOXlJQ2hwYm1SbGVDQTlJREFzSUd4bGJtZDBhQ0E5SUc5aWFtVmpkQzVzWlc1bmRHZzdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQXhLU0I3WEc0Z0lDQWdMeThnVjNKcGRHVWdiMjVzZVNCMllXeHBaQ0JsYkdWdFpXNTBjeTVjYmlBZ0lDQnBaaUFvZDNKcGRHVk9iMlJsS0hOMFlYUmxMQ0JzWlhabGJDd2diMkpxWldOMFcybHVaR1Y0WFN3Z1ptRnNjMlVzSUdaaGJITmxLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHbHVaR1Y0SUNFOVBTQXdLU0JmY21WemRXeDBJQ3M5SUNjc0lDYzdYRzRnSUNBZ0lDQmZjbVZ6ZFd4MElDczlJSE4wWVhSbExtUjFiWEE3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYzNSaGRHVXVkR0ZuSUQwZ1gzUmhaenRjYmlBZ2MzUmhkR1V1WkhWdGNDQTlJQ2RiSnlBcklGOXlaWE4xYkhRZ0t5QW5YU2M3WEc1OVhHNWNibVoxYm1OMGFXOXVJSGR5YVhSbFFteHZZMnRUWlhGMVpXNWpaU2h6ZEdGMFpTd2diR1YyWld3c0lHOWlhbVZqZEN3Z1kyOXRjR0ZqZENrZ2UxeHVJQ0IyWVhJZ1gzSmxjM1ZzZENBOUlDY25MRnh1SUNBZ0lDQWdYM1JoWnlBZ0lDQTlJSE4wWVhSbExuUmhaeXhjYmlBZ0lDQWdJR2x1WkdWNExGeHVJQ0FnSUNBZ2JHVnVaM1JvTzF4dVhHNGdJR1p2Y2lBb2FXNWtaWGdnUFNBd0xDQnNaVzVuZEdnZ1BTQnZZbXBsWTNRdWJHVnVaM1JvT3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ2dLejBnTVNrZ2UxeHVJQ0FnSUM4dklGZHlhWFJsSUc5dWJIa2dkbUZzYVdRZ1pXeGxiV1Z1ZEhNdVhHNGdJQ0FnYVdZZ0tIZHlhWFJsVG05a1pTaHpkR0YwWlN3Z2JHVjJaV3dnS3lBeExDQnZZbXBsWTNSYmFXNWtaWGhkTENCMGNuVmxMQ0IwY25WbEtTa2dlMXh1SUNBZ0lDQWdhV1lnS0NGamIyMXdZV04wSUh4OElHbHVaR1Y0SUNFOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUY5eVpYTjFiSFFnS3owZ1oyVnVaWEpoZEdWT1pYaDBUR2x1WlNoemRHRjBaU3dnYkdWMlpXd3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdYM0psYzNWc2RDQXJQU0FuTFNBbklDc2djM1JoZEdVdVpIVnRjRHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J6ZEdGMFpTNTBZV2NnUFNCZmRHRm5PMXh1SUNCemRHRjBaUzVrZFcxd0lEMGdYM0psYzNWc2RDQjhmQ0FuVzEwbk95QXZMeUJGYlhCMGVTQnpaWEYxWlc1alpTQnBaaUJ1YnlCMllXeHBaQ0IyWVd4MVpYTXVYRzU5WEc1Y2JtWjFibU4wYVc5dUlIZHlhWFJsUm14dmQwMWhjSEJwYm1jb2MzUmhkR1VzSUd4bGRtVnNMQ0J2WW1wbFkzUXBJSHRjYmlBZ2RtRnlJRjl5WlhOMWJIUWdJQ0FnSUNBZ1BTQW5KeXhjYmlBZ0lDQWdJRjkwWVdjZ0lDQWdJQ0FnSUNBZ1BTQnpkR0YwWlM1MFlXY3NYRzRnSUNBZ0lDQnZZbXBsWTNSTFpYbE1hWE4wSUQwZ1QySnFaV04wTG10bGVYTW9iMkpxWldOMEtTeGNiaUFnSUNBZ0lHbHVaR1Y0TEZ4dUlDQWdJQ0FnYkdWdVozUm9MRnh1SUNBZ0lDQWdiMkpxWldOMFMyVjVMRnh1SUNBZ0lDQWdiMkpxWldOMFZtRnNkV1VzWEc0Z0lDQWdJQ0J3WVdseVFuVm1abVZ5TzF4dVhHNGdJR1p2Y2lBb2FXNWtaWGdnUFNBd0xDQnNaVzVuZEdnZ1BTQnZZbXBsWTNSTFpYbE1hWE4wTG14bGJtZDBhRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNElDczlJREVwSUh0Y2JpQWdJQ0J3WVdseVFuVm1abVZ5SUQwZ0p5YzdYRzVjYmlBZ0lDQnBaaUFvYVc1a1pYZ2dJVDA5SURBcElIQmhhWEpDZFdabVpYSWdLejBnSnl3Z0p6dGNibHh1SUNBZ0lHOWlhbVZqZEV0bGVTQTlJRzlpYW1WamRFdGxlVXhwYzNSYmFXNWtaWGhkTzF4dUlDQWdJRzlpYW1WamRGWmhiSFZsSUQwZ2IySnFaV04wVzI5aWFtVmpkRXRsZVYwN1hHNWNiaUFnSUNCcFppQW9JWGR5YVhSbFRtOWtaU2h6ZEdGMFpTd2diR1YyWld3c0lHOWlhbVZqZEV0bGVTd2dabUZzYzJVc0lHWmhiSE5sS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0lDOHZJRk5yYVhBZ2RHaHBjeUJ3WVdseUlHSmxZMkYxYzJVZ2IyWWdhVzUyWVd4cFpDQnJaWGs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hOMFlYUmxMbVIxYlhBdWJHVnVaM1JvSUQ0Z01UQXlOQ2tnY0dGcGNrSjFabVpsY2lBclBTQW5QeUFuTzF4dVhHNGdJQ0FnY0dGcGNrSjFabVpsY2lBclBTQnpkR0YwWlM1a2RXMXdJQ3NnSnpvZ0p6dGNibHh1SUNBZ0lHbG1JQ2doZDNKcGRHVk9iMlJsS0hOMFlYUmxMQ0JzWlhabGJDd2diMkpxWldOMFZtRnNkV1VzSUdaaGJITmxMQ0JtWVd4elpTa3BJSHRjYmlBZ0lDQWdJR052Ym5ScGJuVmxPeUF2THlCVGEybHdJSFJvYVhNZ2NHRnBjaUJpWldOaGRYTmxJRzltSUdsdWRtRnNhV1FnZG1Gc2RXVXVYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NHRnBja0oxWm1abGNpQXJQU0J6ZEdGMFpTNWtkVzF3TzF4dVhHNGdJQ0FnTHk4Z1FtOTBhQ0JyWlhrZ1lXNWtJSFpoYkhWbElHRnlaU0IyWVd4cFpDNWNiaUFnSUNCZmNtVnpkV3gwSUNzOUlIQmhhWEpDZFdabVpYSTdYRzRnSUgxY2JseHVJQ0J6ZEdGMFpTNTBZV2NnUFNCZmRHRm5PMXh1SUNCemRHRjBaUzVrZFcxd0lEMGdKM3NuSUNzZ1gzSmxjM1ZzZENBcklDZDlKenRjYm4xY2JseHVablZ1WTNScGIyNGdkM0pwZEdWQ2JHOWphMDFoY0hCcGJtY29jM1JoZEdVc0lHeGxkbVZzTENCdlltcGxZM1FzSUdOdmJYQmhZM1FwSUh0Y2JpQWdkbUZ5SUY5eVpYTjFiSFFnSUNBZ0lDQWdQU0FuSnl4Y2JpQWdJQ0FnSUY5MFlXY2dJQ0FnSUNBZ0lDQWdQU0J6ZEdGMFpTNTBZV2NzWEc0Z0lDQWdJQ0J2WW1wbFkzUkxaWGxNYVhOMElEMGdUMkpxWldOMExtdGxlWE1vYjJKcVpXTjBLU3hjYmlBZ0lDQWdJR2x1WkdWNExGeHVJQ0FnSUNBZ2JHVnVaM1JvTEZ4dUlDQWdJQ0FnYjJKcVpXTjBTMlY1TEZ4dUlDQWdJQ0FnYjJKcVpXTjBWbUZzZFdVc1hHNGdJQ0FnSUNCbGVIQnNhV05wZEZCaGFYSXNYRzRnSUNBZ0lDQndZV2x5UW5WbVptVnlPMXh1WEc0Z0lDOHZJRUZzYkc5M0lITnZjblJwYm1jZ2EyVjVjeUJ6YnlCMGFHRjBJSFJvWlNCdmRYUndkWFFnWm1sc1pTQnBjeUJrWlhSbGNtMXBibWx6ZEdsalhHNGdJR2xtSUNoemRHRjBaUzV6YjNKMFMyVjVjeUE5UFQwZ2RISjFaU2tnZTF4dUlDQWdJQzh2SUVSbFptRjFiSFFnYzI5eWRHbHVaMXh1SUNBZ0lHOWlhbVZqZEV0bGVVeHBjM1F1YzI5eWRDZ3BPMXh1SUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCemRHRjBaUzV6YjNKMFMyVjVjeUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lDOHZJRU4xYzNSdmJTQnpiM0owSUdaMWJtTjBhVzl1WEc0Z0lDQWdiMkpxWldOMFMyVjVUR2x6ZEM1emIzSjBLSE4wWVhSbExuTnZjblJMWlhsektUdGNiaUFnZlNCbGJITmxJR2xtSUNoemRHRjBaUzV6YjNKMFMyVjVjeWtnZTF4dUlDQWdJQzh2SUZOdmJXVjBhR2x1WnlCcGN5QjNjbTl1WjF4dUlDQWdJSFJvY205M0lHNWxkeUJaUVUxTVJYaGpaWEIwYVc5dUtDZHpiM0owUzJWNWN5QnRkWE4wSUdKbElHRWdZbTl2YkdWaGJpQnZjaUJoSUdaMWJtTjBhVzl1SnlrN1hHNGdJSDFjYmx4dUlDQm1iM0lnS0dsdVpHVjRJRDBnTUN3Z2JHVnVaM1JvSUQwZ2IySnFaV04wUzJWNVRHbHpkQzVzWlc1bmRHZzdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQXhLU0I3WEc0Z0lDQWdjR0ZwY2tKMVptWmxjaUE5SUNjbk8xeHVYRzRnSUNBZ2FXWWdLQ0ZqYjIxd1lXTjBJSHg4SUdsdVpHVjRJQ0U5UFNBd0tTQjdYRzRnSUNBZ0lDQndZV2x5UW5WbVptVnlJQ3M5SUdkbGJtVnlZWFJsVG1WNGRFeHBibVVvYzNSaGRHVXNJR3hsZG1Wc0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCdlltcGxZM1JMWlhrZ1BTQnZZbXBsWTNSTFpYbE1hWE4wVzJsdVpHVjRYVHRjYmlBZ0lDQnZZbXBsWTNSV1lXeDFaU0E5SUc5aWFtVmpkRnR2WW1wbFkzUkxaWGxkTzF4dVhHNGdJQ0FnYVdZZ0tDRjNjbWwwWlU1dlpHVW9jM1JoZEdVc0lHeGxkbVZzSUNzZ01Td2diMkpxWldOMFMyVjVMQ0IwY25WbExDQjBjblZsTENCMGNuVmxLU2tnZTF4dUlDQWdJQ0FnWTI5dWRHbHVkV1U3SUM4dklGTnJhWEFnZEdocGN5QndZV2x5SUdKbFkyRjFjMlVnYjJZZ2FXNTJZV3hwWkNCclpYa3VYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1pYaHdiR2xqYVhSUVlXbHlJRDBnS0hOMFlYUmxMblJoWnlBaFBUMGdiblZzYkNBbUppQnpkR0YwWlM1MFlXY2dJVDA5SUNjL0p5a2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb2MzUmhkR1V1WkhWdGNDQW1KaUJ6ZEdGMFpTNWtkVzF3TG14bGJtZDBhQ0ErSURFd01qUXBPMXh1WEc0Z0lDQWdhV1lnS0dWNGNHeHBZMmwwVUdGcGNpa2dlMXh1SUNBZ0lDQWdhV1lnS0hOMFlYUmxMbVIxYlhBZ0ppWWdRMGhCVWw5TVNVNUZYMFpGUlVRZ1BUMDlJSE4wWVhSbExtUjFiWEF1WTJoaGNrTnZaR1ZCZENnd0tTa2dlMXh1SUNBZ0lDQWdJQ0J3WVdseVFuVm1abVZ5SUNzOUlDYy9KenRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEJoYVhKQ2RXWm1aWElnS3owZ0p6OGdKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQndZV2x5UW5WbVptVnlJQ3M5SUhOMFlYUmxMbVIxYlhBN1hHNWNiaUFnSUNCcFppQW9aWGh3YkdsamFYUlFZV2x5S1NCN1hHNGdJQ0FnSUNCd1lXbHlRblZtWm1WeUlDczlJR2RsYm1WeVlYUmxUbVY0ZEV4cGJtVW9jM1JoZEdVc0lHeGxkbVZzS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYZHlhWFJsVG05a1pTaHpkR0YwWlN3Z2JHVjJaV3dnS3lBeExDQnZZbXBsWTNSV1lXeDFaU3dnZEhKMVpTd2daWGh3YkdsamFYUlFZV2x5S1NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN0lDOHZJRk5yYVhBZ2RHaHBjeUJ3WVdseUlHSmxZMkYxYzJVZ2IyWWdhVzUyWVd4cFpDQjJZV3gxWlM1Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2MzUmhkR1V1WkhWdGNDQW1KaUJEU0VGU1gweEpUa1ZmUmtWRlJDQTlQVDBnYzNSaGRHVXVaSFZ0Y0M1amFHRnlRMjlrWlVGMEtEQXBLU0I3WEc0Z0lDQWdJQ0J3WVdseVFuVm1abVZ5SUNzOUlDYzZKenRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NHRnBja0oxWm1abGNpQXJQU0FuT2lBbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhCaGFYSkNkV1ptWlhJZ0t6MGdjM1JoZEdVdVpIVnRjRHRjYmx4dUlDQWdJQzh2SUVKdmRHZ2dhMlY1SUdGdVpDQjJZV3gxWlNCaGNtVWdkbUZzYVdRdVhHNGdJQ0FnWDNKbGMzVnNkQ0FyUFNCd1lXbHlRblZtWm1WeU8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdVdWRHRm5JRDBnWDNSaFp6dGNiaUFnYzNSaGRHVXVaSFZ0Y0NBOUlGOXlaWE4xYkhRZ2ZId2dKM3Q5SnpzZ0x5OGdSVzF3ZEhrZ2JXRndjR2x1WnlCcFppQnVieUIyWVd4cFpDQndZV2x5Y3k1Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWkdWMFpXTjBWSGx3WlNoemRHRjBaU3dnYjJKcVpXTjBMQ0JsZUhCc2FXTnBkQ2tnZTF4dUlDQjJZWElnWDNKbGMzVnNkQ3dnZEhsd1pVeHBjM1FzSUdsdVpHVjRMQ0JzWlc1bmRHZ3NJSFI1Y0dVc0lITjBlV3hsTzF4dVhHNGdJSFI1Y0dWTWFYTjBJRDBnWlhod2JHbGphWFFnUHlCemRHRjBaUzVsZUhCc2FXTnBkRlI1Y0dWeklEb2djM1JoZEdVdWFXMXdiR2xqYVhSVWVYQmxjenRjYmx4dUlDQm1iM0lnS0dsdVpHVjRJRDBnTUN3Z2JHVnVaM1JvSUQwZ2RIbHdaVXhwYzNRdWJHVnVaM1JvT3lCcGJtUmxlQ0E4SUd4bGJtZDBhRHNnYVc1a1pYZ2dLejBnTVNrZ2UxeHVJQ0FnSUhSNWNHVWdQU0IwZVhCbFRHbHpkRnRwYm1SbGVGMDdYRzVjYmlBZ0lDQnBaaUFvS0hSNWNHVXVhVzV6ZEdGdVkyVlBaaUFnZkh3Z2RIbHdaUzV3Y21Wa2FXTmhkR1VwSUNZbVhHNGdJQ0FnSUNBZ0lDZ2hkSGx3WlM1cGJuTjBZVzVqWlU5bUlIeDhJQ2dvZEhsd1pXOW1JRzlpYW1WamRDQTlQVDBnSjI5aWFtVmpkQ2NwSUNZbUlDaHZZbXBsWTNRZ2FXNXpkR0Z1WTJWdlppQjBlWEJsTG1sdWMzUmhibU5sVDJZcEtTa2dKaVpjYmlBZ0lDQWdJQ0FnS0NGMGVYQmxMbkJ5WldScFkyRjBaU0FnZkh3Z2RIbHdaUzV3Y21Wa2FXTmhkR1VvYjJKcVpXTjBLU2twSUh0Y2JseHVJQ0FnSUNBZ2MzUmhkR1V1ZEdGbklEMGdaWGh3YkdsamFYUWdQeUIwZVhCbExuUmhaeUE2SUNjL0p6dGNibHh1SUNBZ0lDQWdhV1lnS0hSNWNHVXVjbVZ3Y21WelpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhOMGVXeGxJRDBnYzNSaGRHVXVjM1I1YkdWTllYQmJkSGx3WlM1MFlXZGRJSHg4SUhSNWNHVXVaR1ZtWVhWc2RGTjBlV3hsTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hmZEc5VGRISnBibWN1WTJGc2JDaDBlWEJsTG5KbGNISmxjMlZ1ZENrZ1BUMDlJQ2RiYjJKcVpXTjBJRVoxYm1OMGFXOXVYU2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmZjbVZ6ZFd4MElEMGdkSGx3WlM1eVpYQnlaWE5sYm5Rb2IySnFaV04wTENCemRIbHNaU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1gyaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29kSGx3WlM1eVpYQnlaWE5sYm5Rc0lITjBlV3hsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJRjl5WlhOMWJIUWdQU0IwZVhCbExuSmxjSEpsYzJWdWRGdHpkSGxzWlYwb2IySnFaV04wTENCemRIbHNaU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGbEJUVXhGZUdObGNIUnBiMjRvSnlFOEp5QXJJSFI1Y0dVdWRHRm5JQ3NnSno0Z2RHRm5JSEpsYzI5c2RtVnlJR0ZqWTJWd2RITWdibTkwSUZ3aUp5QXJJSE4wZVd4bElDc2dKMXdpSUhOMGVXeGxKeWs3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnpkR0YwWlM1a2RXMXdJRDBnWDNKbGMzVnNkRHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdaaGJITmxPMXh1ZlZ4dVhHNHZMeUJUWlhKcFlXeHBlbVZ6SUdCdlltcGxZM1JnSUdGdVpDQjNjbWwwWlhNZ2FYUWdkRzhnWjJ4dlltRnNJR0J5WlhOMWJIUmdMbHh1THk4Z1VtVjBkWEp1Y3lCMGNuVmxJRzl1SUhOMVkyTmxjM01zSUc5eUlHWmhiSE5sSUc5dUlHbHVkbUZzYVdRZ2IySnFaV04wTGx4dUx5OWNibVoxYm1OMGFXOXVJSGR5YVhSbFRtOWtaU2h6ZEdGMFpTd2diR1YyWld3c0lHOWlhbVZqZEN3Z1lteHZZMnNzSUdOdmJYQmhZM1FzSUdsemEyVjVLU0I3WEc0Z0lITjBZWFJsTG5SaFp5QTlJRzUxYkd3N1hHNGdJSE4wWVhSbExtUjFiWEFnUFNCdlltcGxZM1E3WEc1Y2JpQWdhV1lnS0NGa1pYUmxZM1JVZVhCbEtITjBZWFJsTENCdlltcGxZM1FzSUdaaGJITmxLU2tnZTF4dUlDQWdJR1JsZEdWamRGUjVjR1VvYzNSaGRHVXNJRzlpYW1WamRDd2dkSEoxWlNrN1hHNGdJSDFjYmx4dUlDQjJZWElnZEhsd1pTQTlJRjkwYjFOMGNtbHVaeTVqWVd4c0tITjBZWFJsTG1SMWJYQXBPMXh1WEc0Z0lHbG1JQ2hpYkc5amF5a2dlMXh1SUNBZ0lHSnNiMk5ySUQwZ0tITjBZWFJsTG1ac2IzZE1aWFpsYkNBOElEQWdmSHdnYzNSaGRHVXVabXh2ZDB4bGRtVnNJRDRnYkdWMlpXd3BPMXh1SUNCOVhHNWNiaUFnZG1GeUlHOWlhbVZqZEU5eVFYSnlZWGtnUFNCMGVYQmxJRDA5UFNBblcyOWlhbVZqZENCUFltcGxZM1JkSnlCOGZDQjBlWEJsSUQwOVBTQW5XMjlpYW1WamRDQkJjbkpoZVYwbkxGeHVJQ0FnSUNBZ1pIVndiR2xqWVhSbFNXNWtaWGdzWEc0Z0lDQWdJQ0JrZFhCc2FXTmhkR1U3WEc1Y2JpQWdhV1lnS0c5aWFtVmpkRTl5UVhKeVlYa3BJSHRjYmlBZ0lDQmtkWEJzYVdOaGRHVkpibVJsZUNBOUlITjBZWFJsTG1SMWNHeHBZMkYwWlhNdWFXNWtaWGhQWmlodlltcGxZM1FwTzF4dUlDQWdJR1IxY0d4cFkyRjBaU0E5SUdSMWNHeHBZMkYwWlVsdVpHVjRJQ0U5UFNBdE1UdGNiaUFnZlZ4dVhHNGdJR2xtSUNnb2MzUmhkR1V1ZEdGbklDRTlQU0J1ZFd4c0lDWW1JSE4wWVhSbExuUmhaeUFoUFQwZ0p6OG5LU0I4ZkNCa2RYQnNhV05oZEdVZ2ZId2dLSE4wWVhSbExtbHVaR1Z1ZENBaFBUMGdNaUFtSmlCc1pYWmxiQ0ErSURBcEtTQjdYRzRnSUNBZ1kyOXRjR0ZqZENBOUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR1IxY0d4cFkyRjBaU0FtSmlCemRHRjBaUzUxYzJWa1JIVndiR2xqWVhSbGMxdGtkWEJzYVdOaGRHVkpibVJsZUYwcElIdGNiaUFnSUNCemRHRjBaUzVrZFcxd0lEMGdKeXB5WldaZkp5QXJJR1IxY0d4cFkyRjBaVWx1WkdWNE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lHbG1JQ2h2WW1wbFkzUlBja0Z5Y21GNUlDWW1JR1IxY0d4cFkyRjBaU0FtSmlBaGMzUmhkR1V1ZFhObFpFUjFjR3hwWTJGMFpYTmJaSFZ3YkdsallYUmxTVzVrWlhoZEtTQjdYRzRnSUNBZ0lDQnpkR0YwWlM1MWMyVmtSSFZ3YkdsallYUmxjMXRrZFhCc2FXTmhkR1ZKYm1SbGVGMGdQU0IwY25WbE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RIbHdaU0E5UFQwZ0oxdHZZbXBsWTNRZ1QySnFaV04wWFNjcElIdGNiaUFnSUNBZ0lHbG1JQ2hpYkc5amF5QW1KaUFvVDJKcVpXTjBMbXRsZVhNb2MzUmhkR1V1WkhWdGNDa3ViR1Z1WjNSb0lDRTlQU0F3S1NrZ2UxeHVJQ0FnSUNBZ0lDQjNjbWwwWlVKc2IyTnJUV0Z3Y0dsdVp5aHpkR0YwWlN3Z2JHVjJaV3dzSUhOMFlYUmxMbVIxYlhBc0lHTnZiWEJoWTNRcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWkhWd2JHbGpZWFJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEdVdVpIVnRjQ0E5SUNjbWNtVm1YeWNnS3lCa2RYQnNhV05oZEdWSmJtUmxlQ0FySUhOMFlYUmxMbVIxYlhBN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIZHlhWFJsUm14dmQwMWhjSEJwYm1jb2MzUmhkR1VzSUd4bGRtVnNMQ0J6ZEdGMFpTNWtkVzF3S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1IxY0d4cFkyRjBaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lITjBZWFJsTG1SMWJYQWdQU0FuSm5KbFpsOG5JQ3NnWkhWd2JHbGpZWFJsU1c1a1pYZ2dLeUFuSUNjZ0t5QnpkR0YwWlM1a2RXMXdPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuVzI5aWFtVmpkQ0JCY25KaGVWMG5LU0I3WEc0Z0lDQWdJQ0JwWmlBb1lteHZZMnNnSmlZZ0tITjBZWFJsTG1SMWJYQXViR1Z1WjNSb0lDRTlQU0F3S1NrZ2UxeHVJQ0FnSUNBZ0lDQjNjbWwwWlVKc2IyTnJVMlZ4ZFdWdVkyVW9jM1JoZEdVc0lHeGxkbVZzTENCemRHRjBaUzVrZFcxd0xDQmpiMjF3WVdOMEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dSMWNHeHBZMkYwWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSE4wWVhSbExtUjFiWEFnUFNBbkpuSmxabDhuSUNzZ1pIVndiR2xqWVhSbFNXNWtaWGdnS3lCemRHRjBaUzVrZFcxd08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjNjbWwwWlVac2IzZFRaWEYxWlc1alpTaHpkR0YwWlN3Z2JHVjJaV3dzSUhOMFlYUmxMbVIxYlhBcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWkhWd2JHbGpZWFJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEdVdVpIVnRjQ0E5SUNjbWNtVm1YeWNnS3lCa2RYQnNhV05oZEdWSmJtUmxlQ0FySUNjZ0p5QXJJSE4wWVhSbExtUjFiWEE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVWdQVDA5SUNkYmIySnFaV04wSUZOMGNtbHVaMTBuS1NCN1hHNGdJQ0FnSUNCcFppQW9jM1JoZEdVdWRHRm5JQ0U5UFNBblB5Y3BJSHRjYmlBZ0lDQWdJQ0FnZDNKcGRHVlRZMkZzWVhJb2MzUmhkR1VzSUhOMFlYUmxMbVIxYlhBc0lHeGxkbVZzTENCcGMydGxlU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHbG1JQ2h6ZEdGMFpTNXphMmx3U1c1MllXeHBaQ2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGbEJUVXhGZUdObGNIUnBiMjRvSjNWdVlXTmpaWEIwWVdKc1pTQnJhVzVrSUc5bUlHRnVJRzlpYW1WamRDQjBieUJrZFcxd0lDY2dLeUIwZVhCbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jM1JoZEdVdWRHRm5JQ0U5UFNCdWRXeHNJQ1ltSUhOMFlYUmxMblJoWnlBaFBUMGdKejhuS1NCN1hHNGdJQ0FnSUNCemRHRjBaUzVrZFcxd0lEMGdKeUU4SnlBcklITjBZWFJsTG5SaFp5QXJJQ2MrSUNjZ0t5QnpkR0YwWlM1a2RXMXdPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQjBjblZsTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJuWlhSRWRYQnNhV05oZEdWU1pXWmxjbVZ1WTJWektHOWlhbVZqZEN3Z2MzUmhkR1VwSUh0Y2JpQWdkbUZ5SUc5aWFtVmpkSE1nUFNCYlhTeGNiaUFnSUNBZ0lHUjFjR3hwWTJGMFpYTkpibVJsZUdWeklEMGdXMTBzWEc0Z0lDQWdJQ0JwYm1SbGVDeGNiaUFnSUNBZ0lHeGxibWQwYUR0Y2JseHVJQ0JwYm5Od1pXTjBUbTlrWlNodlltcGxZM1FzSUc5aWFtVmpkSE1zSUdSMWNHeHBZMkYwWlhOSmJtUmxlR1Z6S1R0Y2JseHVJQ0JtYjNJZ0tHbHVaR1Y0SUQwZ01Dd2diR1Z1WjNSb0lEMGdaSFZ3YkdsallYUmxjMGx1WkdWNFpYTXViR1Z1WjNSb095QnBibVJsZUNBOElHeGxibWQwYURzZ2FXNWtaWGdnS3owZ01Ta2dlMXh1SUNBZ0lITjBZWFJsTG1SMWNHeHBZMkYwWlhNdWNIVnphQ2h2WW1wbFkzUnpXMlIxY0d4cFkyRjBaWE5KYm1SbGVHVnpXMmx1WkdWNFhWMHBPMXh1SUNCOVhHNGdJSE4wWVhSbExuVnpaV1JFZFhCc2FXTmhkR1Z6SUQwZ2JtVjNJRUZ5Y21GNUtHeGxibWQwYUNrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdsdWMzQmxZM1JPYjJSbEtHOWlhbVZqZEN3Z2IySnFaV04wY3l3Z1pIVndiR2xqWVhSbGMwbHVaR1Y0WlhNcElIdGNiaUFnZG1GeUlHOWlhbVZqZEV0bGVVeHBjM1FzWEc0Z0lDQWdJQ0JwYm1SbGVDeGNiaUFnSUNBZ0lHeGxibWQwYUR0Y2JseHVJQ0JwWmlBb2IySnFaV04wSUNFOVBTQnVkV3hzSUNZbUlIUjVjR1Z2WmlCdlltcGxZM1FnUFQwOUlDZHZZbXBsWTNRbktTQjdYRzRnSUNBZ2FXNWtaWGdnUFNCdlltcGxZM1J6TG1sdVpHVjRUMllvYjJKcVpXTjBLVHRjYmlBZ0lDQnBaaUFvYVc1a1pYZ2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQnBaaUFvWkhWd2JHbGpZWFJsYzBsdVpHVjRaWE11YVc1a1pYaFBaaWhwYm1SbGVDa2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJR1IxY0d4cFkyRjBaWE5KYm1SbGVHVnpMbkIxYzJnb2FXNWtaWGdwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnZZbXBsWTNSekxuQjFjMmdvYjJKcVpXTjBLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvYjJKcVpXTjBLU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR2x1WkdWNElEMGdNQ3dnYkdWdVozUm9JRDBnYjJKcVpXTjBMbXhsYm1kMGFEc2dhVzVrWlhnZ1BDQnNaVzVuZEdnN0lHbHVaR1Y0SUNzOUlERXBJSHRjYmlBZ0lDQWdJQ0FnSUNCcGJuTndaV04wVG05a1pTaHZZbXBsWTNSYmFXNWtaWGhkTENCdlltcGxZM1J6TENCa2RYQnNhV05oZEdWelNXNWtaWGhsY3lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHOWlhbVZqZEV0bGVVeHBjM1FnUFNCUFltcGxZM1F1YTJWNWN5aHZZbXBsWTNRcE8xeHVYRzRnSUNBZ0lDQWdJR1p2Y2lBb2FXNWtaWGdnUFNBd0xDQnNaVzVuZEdnZ1BTQnZZbXBsWTNSTFpYbE1hWE4wTG14bGJtZDBhRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNElDczlJREVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBibk53WldOMFRtOWtaU2h2WW1wbFkzUmJiMkpxWldOMFMyVjVUR2x6ZEZ0cGJtUmxlRjFkTENCdlltcGxZM1J6TENCa2RYQnNhV05oZEdWelNXNWtaWGhsY3lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdaSFZ0Y0NocGJuQjFkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQnZjSFJwYjI1eklEMGdiM0IwYVc5dWN5QjhmQ0I3ZlR0Y2JseHVJQ0IyWVhJZ2MzUmhkR1VnUFNCdVpYY2dVM1JoZEdVb2IzQjBhVzl1Y3lrN1hHNWNiaUFnYVdZZ0tDRnpkR0YwWlM1dWIxSmxabk1wSUdkbGRFUjFjR3hwWTJGMFpWSmxabVZ5Wlc1alpYTW9hVzV3ZFhRc0lITjBZWFJsS1R0Y2JseHVJQ0JwWmlBb2QzSnBkR1ZPYjJSbEtITjBZWFJsTENBd0xDQnBibkIxZEN3Z2RISjFaU3dnZEhKMVpTa3BJSEpsZEhWeWJpQnpkR0YwWlM1a2RXMXdJQ3NnSjF4Y2JpYzdYRzVjYmlBZ2NtVjBkWEp1SUNjbk8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCellXWmxSSFZ0Y0NocGJuQjFkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQnlaWFIxY200Z1pIVnRjQ2hwYm5CMWRDd2dZMjl0Ylc5dUxtVjRkR1Z1WkNoN0lITmphR1Z0WVRvZ1JFVkdRVlZNVkY5VFFVWkZYMU5EU0VWTlFTQjlMQ0J2Y0hScGIyNXpLU2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SekxtUjFiWEFnSUNBZ0lEMGdaSFZ0Y0R0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TG5OaFptVkVkVzF3SUQwZ2MyRm1aVVIxYlhBN1hHNGlMQ0l2THlCWlFVMU1JR1Z5Y205eUlHTnNZWE56TGlCb2RIUndPaTh2YzNSaFkydHZkbVZ5Wm14dmR5NWpiMjB2Y1hWbGMzUnBiMjV6THpnME5UZzVPRFJjYmk4dlhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JtWjFibU4wYVc5dUlGbEJUVXhGZUdObGNIUnBiMjRvY21WaGMyOXVMQ0J0WVhKcktTQjdYRzRnSUM4dklGTjFjR1Z5SUdOdmJuTjBjblZqZEc5eVhHNGdJRVZ5Y205eUxtTmhiR3dvZEdocGN5azdYRzVjYmlBZ0x5OGdTVzVqYkhWa1pTQnpkR0ZqYXlCMGNtRmpaU0JwYmlCbGNuSnZjaUJ2WW1wbFkzUmNiaUFnYVdZZ0tFVnljbTl5TG1OaGNIUjFjbVZUZEdGamExUnlZV05sS1NCN1hHNGdJQ0FnTHk4Z1EyaHliMjFsSUdGdVpDQk9iMlJsU2xOY2JpQWdJQ0JGY25KdmNpNWpZWEIwZFhKbFUzUmhZMnRVY21GalpTaDBhR2x6TENCMGFHbHpMbU52Ym5OMGNuVmpkRzl5S1R0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNBdkx5QkdSaXdnU1VVZ01UQXJJR0Z1WkNCVFlXWmhjbWtnTmlzdUlFWmhiR3hpWVdOcklHWnZjaUJ2ZEdobGNuTmNiaUFnSUNCMGFHbHpMbk4wWVdOcklEMGdLRzVsZHlCRmNuSnZjaWdwS1M1emRHRmpheUI4ZkNBbkp6dGNiaUFnZlZ4dVhHNGdJSFJvYVhNdWJtRnRaU0E5SUNkWlFVMU1SWGhqWlhCMGFXOXVKenRjYmlBZ2RHaHBjeTV5WldGemIyNGdQU0J5WldGemIyNDdYRzRnSUhSb2FYTXViV0Z5YXlBOUlHMWhjbXM3WEc0Z0lIUm9hWE11YldWemMyRm5aU0E5SUNoMGFHbHpMbkpsWVhOdmJpQjhmQ0FuS0hWdWEyNXZkMjRnY21WaGMyOXVLU2NwSUNzZ0tIUm9hWE11YldGeWF5QS9JQ2NnSnlBcklIUm9hWE11YldGeWF5NTBiMU4wY21sdVp5Z3BJRG9nSnljcE8xeHVmVnh1WEc1Y2JpOHZJRWx1YUdWeWFYUWdabkp2YlNCRmNuSnZjbHh1V1VGTlRFVjRZMlZ3ZEdsdmJpNXdjbTkwYjNSNWNHVWdQU0JQWW1wbFkzUXVZM0psWVhSbEtFVnljbTl5TG5CeWIzUnZkSGx3WlNrN1hHNVpRVTFNUlhoalpYQjBhVzl1TG5CeWIzUnZkSGx3WlM1amIyNXpkSEoxWTNSdmNpQTlJRmxCVFV4RmVHTmxjSFJwYjI0N1hHNWNibHh1V1VGTlRFVjRZMlZ3ZEdsdmJpNXdjbTkwYjNSNWNHVXVkRzlUZEhKcGJtY2dQU0JtZFc1amRHbHZiaUIwYjFOMGNtbHVaeWhqYjIxd1lXTjBLU0I3WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0IwYUdsekxtNWhiV1VnS3lBbk9pQW5PMXh1WEc0Z0lISmxjM1ZzZENBclBTQjBhR2x6TG5KbFlYTnZiaUI4ZkNBbktIVnVhMjV2ZDI0Z2NtVmhjMjl1S1NjN1hHNWNiaUFnYVdZZ0tDRmpiMjF3WVdOMElDWW1JSFJvYVhNdWJXRnlheWtnZTF4dUlDQWdJSEpsYzNWc2RDQXJQU0FuSUNjZ0t5QjBhR2x6TG0xaGNtc3VkRzlUZEhKcGJtY29LVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5TzF4dVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdXVUZOVEVWNFkyVndkR2x2Ymp0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVMeXBsYzJ4cGJuUXRaR2x6WVdKc1pTQnRZWGd0YkdWdUxHNXZMWFZ6WlMxaVpXWnZjbVV0WkdWbWFXNWxLaTljYmx4dWRtRnlJR052YlcxdmJpQWdJQ0FnSUNBZ0lDQWdJQ0FnUFNCeVpYRjFhWEpsS0NjdUwyTnZiVzF2YmljcE8xeHVkbUZ5SUZsQlRVeEZlR05sY0hScGIyNGdJQ0FnSUNBZ1BTQnlaWEYxYVhKbEtDY3VMMlY0WTJWd2RHbHZiaWNwTzF4dWRtRnlJRTFoY21zZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUFNCeVpYRjFhWEpsS0NjdUwyMWhjbXNuS1R0Y2JuWmhjaUJFUlVaQlZVeFVYMU5CUmtWZlUwTklSVTFCSUQwZ2NtVnhkV2x5WlNnbkxpOXpZMmhsYldFdlpHVm1ZWFZzZEY5ellXWmxKeWs3WEc1MllYSWdSRVZHUVZWTVZGOUdWVXhNWDFORFNFVk5RU0E5SUhKbGNYVnBjbVVvSnk0dmMyTm9aVzFoTDJSbFptRjFiSFJmWm5Wc2JDY3BPMXh1WEc1Y2JuWmhjaUJmYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxMbWhoYzA5M2JsQnliM0JsY25SNU8xeHVYRzVjYm5aaGNpQkRUMDVVUlZoVVgwWk1UMWRmU1U0Z0lDQTlJREU3WEc1MllYSWdRMDlPVkVWWVZGOUdURTlYWDA5VlZDQWdQU0F5TzF4dWRtRnlJRU5QVGxSRldGUmZRa3hQUTB0ZlNVNGdJRDBnTXp0Y2JuWmhjaUJEVDA1VVJWaFVYMEpNVDBOTFgwOVZWQ0E5SURRN1hHNWNibHh1ZG1GeUlFTklUMDFRU1U1SFgwTk1TVkFnSUQwZ01UdGNiblpoY2lCRFNFOU5VRWxPUjE5VFZGSkpVQ0E5SURJN1hHNTJZWElnUTBoUFRWQkpUa2RmUzBWRlVDQWdQU0F6TzF4dVhHNWNiblpoY2lCUVFWUlVSVkpPWDA1UFRsOVFVa2xPVkVGQ1RFVWdJQ0FnSUNBZ0lDQTlJQzliWEZ4NE1EQXRYRng0TURoY1hIZ3dRbHhjZURCRFhGeDRNRVV0WEZ4NE1VWmNYSGczUmkxY1hIZzRORnhjZURnMkxWeGNlRGxHWEZ4MVJrWkdSVnhjZFVaR1JrWmRmRnRjWEhWRU9EQXdMVnhjZFVSQ1JrWmRLRDhoVzF4Y2RVUkRNREF0WEZ4MVJFWkdSbDBwZkNnL09sdGVYRngxUkRnd01DMWNYSFZFUWtaR1hYeGVLVnRjWEhWRVF6QXdMVnhjZFVSR1JrWmRMenRjYm5aaGNpQlFRVlJVUlZKT1gwNVBUbDlCVTBOSlNWOU1TVTVGWDBKU1JVRkxVeUE5SUM5YlhGeDRPRFZjWEhVeU1ESTRYRngxTWpBeU9WMHZPMXh1ZG1GeUlGQkJWRlJGVWs1ZlJreFBWMTlKVGtSSlEwRlVUMUpUSUNBZ0lDQWdJRDBnTDFzc1hGeGJYRnhkWEZ4N1hGeDlYUzg3WEc1MllYSWdVRUZVVkVWU1RsOVVRVWRmU0VGT1JFeEZJQ0FnSUNBZ0lDQWdJQ0FnUFNBdlhpZy9PaUY4SVNGOElWdGhMWHBjWEMxZEt5RXBKQzlwTzF4dWRtRnlJRkJCVkZSRlVrNWZWRUZIWDFWU1NTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUQwZ0wxNG9Qem9oZkZ0ZUxGeGNXMXhjWFZ4Y2UxeGNmVjBwS0Q4NkpWc3dMVGxoTFdaZGV6SjlmRnN3TFRsaExYcGNYQzBqTzF4Y0wxeGNQenBBSmoxY1hDdGNYQ1FzWDF4Y0xpRitYRndxSjF4Y0tGeGNLVnhjVzF4Y1hWMHBLaVF2YVR0Y2JseHVYRzVtZFc1amRHbHZiaUJwYzE5RlQwd29ZeWtnZTF4dUlDQnlaWFIxY200Z0tHTWdQVDA5SURCNE1FRXZLaUJNUmlBcUx5a2dmSHdnS0dNZ1BUMDlJREI0TUVRdktpQkRVaUFxTHlrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdselgxZElTVlJGWDFOUVFVTkZLR01wSUh0Y2JpQWdjbVYwZFhKdUlDaGpJRDA5UFNBd2VEQTVMeW9nVkdGaUlDb3ZLU0I4ZkNBb1l5QTlQVDBnTUhneU1DOHFJRk53WVdObElDb3ZLVHRjYm4xY2JseHVablZ1WTNScGIyNGdhWE5mVjFOZlQxSmZSVTlNS0dNcElIdGNiaUFnY21WMGRYSnVJQ2hqSUQwOVBTQXdlREE1THlvZ1ZHRmlJQ292S1NCOGZGeHVJQ0FnSUNBZ0lDQWdLR01nUFQwOUlEQjRNakF2S2lCVGNHRmpaU0FxTHlrZ2ZIeGNiaUFnSUNBZ0lDQWdJQ2hqSUQwOVBTQXdlREJCTHlvZ1RFWWdLaThwSUh4OFhHNGdJQ0FnSUNBZ0lDQW9ZeUE5UFQwZ01IZ3dSQzhxSUVOU0lDb3ZLVHRjYm4xY2JseHVablZ1WTNScGIyNGdhWE5mUmt4UFYxOUpUa1JKUTBGVVQxSW9ZeWtnZTF4dUlDQnlaWFIxY200Z1l5QTlQVDBnTUhneVF5OHFJQ3dnS2k4Z2ZIeGNiaUFnSUNBZ0lDQWdJR01nUFQwOUlEQjROVUl2S2lCYklDb3ZJSHg4WEc0Z0lDQWdJQ0FnSUNCaklEMDlQU0F3ZURWRUx5b2dYU0FxTHlCOGZGeHVJQ0FnSUNBZ0lDQWdZeUE5UFQwZ01IZzNRaThxSUhzZ0tpOGdmSHhjYmlBZ0lDQWdJQ0FnSUdNZ1BUMDlJREI0TjBRdktpQjlJQ292TzF4dWZWeHVYRzVtZFc1amRHbHZiaUJtY205dFNHVjRRMjlrWlNoaktTQjdYRzRnSUhaaGNpQnNZenRjYmx4dUlDQnBaaUFvS0RCNE16QXZLaUF3SUNvdklEdzlJR01wSUNZbUlDaGpJRHc5SURCNE16a3ZLaUE1SUNvdktTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCaklDMGdNSGd6TUR0Y2JpQWdmVnh1WEc0Z0lDOHFaWE5zYVc1MExXUnBjMkZpYkdVZ2JtOHRZbWwwZDJselpTb3ZYRzRnSUd4aklEMGdZeUI4SURCNE1qQTdYRzVjYmlBZ2FXWWdLQ2d3ZURZeEx5b2dZU0FxTHlBOFBTQnNZeWtnSmlZZ0tHeGpJRHc5SURCNE5qWXZLaUJtSUNvdktTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCc1l5QXRJREI0TmpFZ0t5QXhNRHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUF0TVR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWlhOallYQmxaRWhsZUV4bGJpaGpLU0I3WEc0Z0lHbG1JQ2hqSUQwOVBTQXdlRGM0THlvZ2VDQXFMeWtnZXlCeVpYUjFjbTRnTWpzZ2ZWeHVJQ0JwWmlBb1l5QTlQVDBnTUhnM05TOHFJSFVnS2k4cElIc2djbVYwZFhKdUlEUTdJSDFjYmlBZ2FXWWdLR01nUFQwOUlEQjROVFV2S2lCVklDb3ZLU0I3SUhKbGRIVnliaUE0T3lCOVhHNGdJSEpsZEhWeWJpQXdPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQm1jbTl0UkdWamFXMWhiRU52WkdVb1l5a2dlMXh1SUNCcFppQW9LREI0TXpBdktpQXdJQ292SUR3OUlHTXBJQ1ltSUNoaklEdzlJREI0TXprdktpQTVJQ292S1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJqSUMwZ01IZ3pNRHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUF0TVR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYzJsdGNHeGxSWE5qWVhCbFUyVnhkV1Z1WTJVb1l5a2dlMXh1SUNCeVpYUjFjbTRnS0dNZ1BUMDlJREI0TXpBdktpQXdJQ292S1NBL0lDZGNYSGd3TUNjZ09seHVJQ0FnSUNBZ0lDQW9ZeUE5UFQwZ01IZzJNUzhxSUdFZ0tpOHBJRDhnSjF4Y2VEQTNKeUE2WEc0Z0lDQWdJQ0FnSUNoaklEMDlQU0F3ZURZeUx5b2dZaUFxTHlrZ1B5QW5YRng0TURnbklEcGNiaUFnSUNBZ0lDQWdLR01nUFQwOUlEQjROelF2S2lCMElDb3ZLU0EvSUNkY1hIZ3dPU2NnT2x4dUlDQWdJQ0FnSUNBb1l5QTlQVDBnTUhnd09TOHFJRlJoWWlBcUx5a2dQeUFuWEZ4NE1Ea25JRHBjYmlBZ0lDQWdJQ0FnS0dNZ1BUMDlJREI0TmtVdktpQnVJQ292S1NBL0lDZGNYSGd3UVNjZ09seHVJQ0FnSUNBZ0lDQW9ZeUE5UFQwZ01IZzNOaThxSUhZZ0tpOHBJRDhnSjF4Y2VEQkNKeUE2WEc0Z0lDQWdJQ0FnSUNoaklEMDlQU0F3ZURZMkx5b2daaUFxTHlrZ1B5QW5YRng0TUVNbklEcGNiaUFnSUNBZ0lDQWdLR01nUFQwOUlEQjROekl2S2lCeUlDb3ZLU0EvSUNkY1hIZ3dSQ2NnT2x4dUlDQWdJQ0FnSUNBb1l5QTlQVDBnTUhnMk5TOHFJR1VnS2k4cElEOGdKMXhjZURGQ0p5QTZYRzRnSUNBZ0lDQWdJQ2hqSUQwOVBTQXdlREl3THlvZ1UzQmhZMlVnS2k4cElEOGdKeUFuSURwY2JpQWdJQ0FnSUNBZ0tHTWdQVDA5SURCNE1qSXZLaUJjSWlBcUx5a2dQeUFuWEZ4NE1qSW5JRHBjYmlBZ0lDQWdJQ0FnS0dNZ1BUMDlJREI0TWtZdktpQXZJQ292S1NBL0lDY3ZKeUE2WEc0Z0lDQWdJQ0FnSUNoaklEMDlQU0F3ZURWREx5b2dYRndnS2k4cElEOGdKMXhjZURWREp5QTZYRzRnSUNBZ0lDQWdJQ2hqSUQwOVBTQXdlRFJGTHlvZ1RpQXFMeWtnUHlBblhGeDRPRFVuSURwY2JpQWdJQ0FnSUNBZ0tHTWdQVDA5SURCNE5VWXZLaUJmSUNvdktTQS9JQ2RjWEhoQk1DY2dPbHh1SUNBZ0lDQWdJQ0FvWXlBOVBUMGdNSGcwUXk4cUlFd2dLaThwSUQ4Z0oxeGNkVEl3TWpnbklEcGNiaUFnSUNBZ0lDQWdLR01nUFQwOUlEQjROVEF2S2lCUUlDb3ZLU0EvSUNkY1hIVXlNREk1SnlBNklDY25PMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmphR0Z5Um5KdmJVTnZaR1Z3YjJsdWRDaGpLU0I3WEc0Z0lHbG1JQ2hqSUR3OUlEQjRSa1pHUmlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJUZEhKcGJtY3Vabkp2YlVOb1lYSkRiMlJsS0dNcE8xeHVJQ0I5WEc0Z0lDOHZJRVZ1WTI5a1pTQlZWRVl0TVRZZ2MzVnljbTluWVhSbElIQmhhWEpjYmlBZ0x5OGdhSFIwY0hNNkx5OWxiaTUzYVd0cGNHVmthV0V1YjNKbkwzZHBhMmt2VlZSR0xURTJJME52WkdWZmNHOXBiblJ6WDFVdU1rSXdNVEF3TURCZmRHOWZWUzR5UWpFd1JrWkdSbHh1SUNCeVpYUjFjbTRnVTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNnb0tHTWdMU0F3ZURBeE1EQXdNQ2tnUGo0Z01UQXBJQ3NnTUhoRU9EQXdMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb0tHTWdMU0F3ZURBeE1EQXdNQ2tnSmlBd2VEQXpSa1lwSUNzZ01IaEVRekF3S1R0Y2JuMWNibHh1ZG1GeUlITnBiWEJzWlVWelkyRndaVU5vWldOcklEMGdibVYzSUVGeWNtRjVLREkxTmlrN0lDOHZJR2x1ZEdWblpYSXNJR1p2Y2lCbVlYTjBJR0ZqWTJWemMxeHVkbUZ5SUhOcGJYQnNaVVZ6WTJGd1pVMWhjQ0E5SUc1bGR5QkJjbkpoZVNneU5UWXBPMXh1Wm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENBeU5UWTdJR2tyS3lrZ2UxeHVJQ0J6YVcxd2JHVkZjMk5oY0dWRGFHVmphMXRwWFNBOUlITnBiWEJzWlVWelkyRndaVk5sY1hWbGJtTmxLR2twSUQ4Z01TQTZJREE3WEc0Z0lITnBiWEJzWlVWelkyRndaVTFoY0Z0cFhTQTlJSE5wYlhCc1pVVnpZMkZ3WlZObGNYVmxibU5sS0drcE8xeHVmVnh1WEc1Y2JtWjFibU4wYVc5dUlGTjBZWFJsS0dsdWNIVjBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lIUm9hWE11YVc1d2RYUWdQU0JwYm5CMWREdGNibHh1SUNCMGFHbHpMbVpwYkdWdVlXMWxJQ0E5SUc5d2RHbHZibk5iSjJacGJHVnVZVzFsSjEwZ0lIeDhJRzUxYkd3N1hHNGdJSFJvYVhNdWMyTm9aVzFoSUNBZ0lEMGdiM0IwYVc5dWMxc25jMk5vWlcxaEoxMGdJQ0FnZkh3Z1JFVkdRVlZNVkY5R1ZVeE1YMU5EU0VWTlFUdGNiaUFnZEdocGN5NXZibGRoY201cGJtY2dQU0J2Y0hScGIyNXpXeWR2YmxkaGNtNXBibWNuWFNCOGZDQnVkV3hzTzF4dUlDQjBhR2x6TG14bFoyRmplU0FnSUNBOUlHOXdkR2x2Ym5OYkoyeGxaMkZqZVNkZElDQWdJSHg4SUdaaGJITmxPMXh1SUNCMGFHbHpMbXB6YjI0Z0lDQWdJQ0E5SUc5d2RHbHZibk5iSjJwemIyNG5YU0FnSUNBZ0lIeDhJR1poYkhObE8xeHVJQ0IwYUdsekxteHBjM1JsYm1WeUlDQTlJRzl3ZEdsdmJuTmJKMnhwYzNSbGJtVnlKMTBnSUh4OElHNTFiR3c3WEc1Y2JpQWdkR2hwY3k1cGJYQnNhV05wZEZSNWNHVnpJRDBnZEdocGN5NXpZMmhsYldFdVkyOXRjR2xzWldSSmJYQnNhV05wZER0Y2JpQWdkR2hwY3k1MGVYQmxUV0Z3SUNBZ0lDQWdJRDBnZEdocGN5NXpZMmhsYldFdVkyOXRjR2xzWldSVWVYQmxUV0Z3TzF4dVhHNGdJSFJvYVhNdWJHVnVaM1JvSUNBZ0lDQTlJR2x1Y0hWMExteGxibWQwYUR0Y2JpQWdkR2hwY3k1d2IzTnBkR2x2YmlBZ0lEMGdNRHRjYmlBZ2RHaHBjeTVzYVc1bElDQWdJQ0FnSUQwZ01EdGNiaUFnZEdocGN5NXNhVzVsVTNSaGNuUWdJRDBnTUR0Y2JpQWdkR2hwY3k1c2FXNWxTVzVrWlc1MElEMGdNRHRjYmx4dUlDQjBhR2x6TG1SdlkzVnRaVzUwY3lBOUlGdGRPMXh1WEc0Z0lDOHFYRzRnSUhSb2FYTXVkbVZ5YzJsdmJqdGNiaUFnZEdocGN5NWphR1ZqYTB4cGJtVkNjbVZoYTNNN1hHNGdJSFJvYVhNdWRHRm5UV0Z3TzF4dUlDQjBhR2x6TG1GdVkyaHZjazFoY0R0Y2JpQWdkR2hwY3k1MFlXYzdYRzRnSUhSb2FYTXVZVzVqYUc5eU8xeHVJQ0IwYUdsekxtdHBibVE3WEc0Z0lIUm9hWE11Y21WemRXeDBPeW92WEc1Y2JuMWNibHh1WEc1bWRXNWpkR2x2YmlCblpXNWxjbUYwWlVWeWNtOXlLSE4wWVhSbExDQnRaWE56WVdkbEtTQjdYRzRnSUhKbGRIVnliaUJ1WlhjZ1dVRk5URVY0WTJWd2RHbHZiaWhjYmlBZ0lDQnRaWE56WVdkbExGeHVJQ0FnSUc1bGR5Qk5ZWEpyS0hOMFlYUmxMbVpwYkdWdVlXMWxMQ0J6ZEdGMFpTNXBibkIxZEN3Z2MzUmhkR1V1Y0c5emFYUnBiMjRzSUhOMFlYUmxMbXhwYm1Vc0lDaHpkR0YwWlM1d2IzTnBkR2x2YmlBdElITjBZWFJsTG14cGJtVlRkR0Z5ZENrcEtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2RHaHliM2RGY25KdmNpaHpkR0YwWlN3Z2JXVnpjMkZuWlNrZ2UxeHVJQ0IwYUhKdmR5Qm5aVzVsY21GMFpVVnljbTl5S0hOMFlYUmxMQ0J0WlhOellXZGxLVHRjYm4xY2JseHVablZ1WTNScGIyNGdkR2h5YjNkWFlYSnVhVzVuS0hOMFlYUmxMQ0J0WlhOellXZGxLU0I3WEc0Z0lHbG1JQ2h6ZEdGMFpTNXZibGRoY201cGJtY3BJSHRjYmlBZ0lDQnpkR0YwWlM1dmJsZGhjbTVwYm1jdVkyRnNiQ2h1ZFd4c0xDQm5aVzVsY21GMFpVVnljbTl5S0hOMFlYUmxMQ0J0WlhOellXZGxLU2s3WEc0Z0lIMWNibjFjYmx4dVhHNTJZWElnWkdseVpXTjBhWFpsU0dGdVpHeGxjbk1nUFNCN1hHNWNiaUFnV1VGTlREb2dablZ1WTNScGIyNGdhR0Z1Wkd4bFdXRnRiRVJwY21WamRHbDJaU2h6ZEdGMFpTd2dibUZ0WlN3Z1lYSm5jeWtnZTF4dVhHNGdJQ0FnZG1GeUlHMWhkR05vTENCdFlXcHZjaXdnYldsdWIzSTdYRzVjYmlBZ0lDQnBaaUFvYzNSaGRHVXVkbVZ5YzJsdmJpQWhQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2h5YjNkRmNuSnZjaWh6ZEdGMFpTd2dKMlIxY0d4cFkyRjBhVzl1SUc5bUlDVlpRVTFNSUdScGNtVmpkR2wyWlNjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGhjbWR6TG14bGJtZDBhQ0FoUFQwZ01Ta2dlMXh1SUNBZ0lDQWdkR2h5YjNkRmNuSnZjaWh6ZEdGMFpTd2dKMWxCVFV3Z1pHbHlaV04wYVhabElHRmpZMlZ3ZEhNZ1pYaGhZM1JzZVNCdmJtVWdZWEpuZFcxbGJuUW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnRZWFJqYUNBOUlDOWVLRnN3TFRsZEt5bGNYQzRvV3pBdE9WMHJLU1F2TG1WNFpXTW9ZWEpuYzFzd1hTazdYRzVjYmlBZ0lDQnBaaUFvYldGMFkyZ2dQVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSFJvY205M1JYSnliM0lvYzNSaGRHVXNJQ2RwYkd3dFptOXliV1ZrSUdGeVozVnRaVzUwSUc5bUlIUm9aU0JaUVUxTUlHUnBjbVZqZEdsMlpTY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHMWhhbTl5SUQwZ2NHRnljMlZKYm5Rb2JXRjBZMmhiTVYwc0lERXdLVHRjYmlBZ0lDQnRhVzV2Y2lBOUlIQmhjbk5sU1c1MEtHMWhkR05vV3pKZExDQXhNQ2s3WEc1Y2JpQWdJQ0JwWmlBb2JXRnFiM0lnSVQwOUlERXBJSHRjYmlBZ0lDQWdJSFJvY205M1JYSnliM0lvYzNSaGRHVXNJQ2QxYm1GalkyVndkR0ZpYkdVZ1dVRk5UQ0IyWlhKemFXOXVJRzltSUhSb1pTQmtiMk4xYldWdWRDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lITjBZWFJsTG5abGNuTnBiMjRnUFNCaGNtZHpXekJkTzF4dUlDQWdJSE4wWVhSbExtTm9aV05yVEdsdVpVSnlaV0ZyY3lBOUlDaHRhVzV2Y2lBOElESXBPMXh1WEc0Z0lDQWdhV1lnS0cxcGJtOXlJQ0U5UFNBeElDWW1JRzFwYm05eUlDRTlQU0F5S1NCN1hHNGdJQ0FnSUNCMGFISnZkMWRoY201cGJtY29jM1JoZEdVc0lDZDFibk4xY0hCdmNuUmxaQ0JaUVUxTUlIWmxjbk5wYjI0Z2IyWWdkR2hsSUdSdlkzVnRaVzUwSnlrN1hHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lGUkJSem9nWm5WdVkzUnBiMjRnYUdGdVpHeGxWR0ZuUkdseVpXTjBhWFpsS0hOMFlYUmxMQ0J1WVcxbExDQmhjbWR6S1NCN1hHNWNiaUFnSUNCMllYSWdhR0Z1Wkd4bExDQndjbVZtYVhnN1hHNWNiaUFnSUNCcFppQW9ZWEpuY3k1c1pXNW5kR2dnSVQwOUlESXBJSHRjYmlBZ0lDQWdJSFJvY205M1JYSnliM0lvYzNSaGRHVXNJQ2RVUVVjZ1pHbHlaV04wYVhabElHRmpZMlZ3ZEhNZ1pYaGhZM1JzZVNCMGQyOGdZWEpuZFcxbGJuUnpKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhR0Z1Wkd4bElEMGdZWEpuYzFzd1hUdGNiaUFnSUNCd2NtVm1hWGdnUFNCaGNtZHpXekZkTzF4dVhHNGdJQ0FnYVdZZ0tDRlFRVlJVUlZKT1gxUkJSMTlJUVU1RVRFVXVkR1Z6ZENob1lXNWtiR1VwS1NCN1hHNGdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmFXeHNMV1p2Y20xbFpDQjBZV2NnYUdGdVpHeGxJQ2htYVhKemRDQmhjbWQxYldWdWRDa2diMllnZEdobElGUkJSeUJrYVhKbFkzUnBkbVVuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1gyaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM1JoZEdVdWRHRm5UV0Z3TENCb1lXNWtiR1VwS1NCN1hHNGdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmRHaGxjbVVnYVhNZ1lTQndjbVYyYVc5MWMyeDVJR1JsWTJ4aGNtVmtJSE4xWm1acGVDQm1iM0lnWENJbklDc2dhR0Z1Wkd4bElDc2dKMXdpSUhSaFp5Qm9ZVzVrYkdVbktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JVkJCVkZSRlVrNWZWRUZIWDFWU1NTNTBaWE4wS0hCeVpXWnBlQ2twSUh0Y2JpQWdJQ0FnSUhSb2NtOTNSWEp5YjNJb2MzUmhkR1VzSUNkcGJHd3RabTl5YldWa0lIUmhaeUJ3Y21WbWFYZ2dLSE5sWTI5dVpDQmhjbWQxYldWdWRDa2diMllnZEdobElGUkJSeUJrYVhKbFkzUnBkbVVuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J6ZEdGMFpTNTBZV2ROWVhCYmFHRnVaR3hsWFNBOUlIQnlaV1pwZUR0Y2JpQWdmVnh1ZlR0Y2JseHVYRzVtZFc1amRHbHZiaUJqWVhCMGRYSmxVMlZuYldWdWRDaHpkR0YwWlN3Z2MzUmhjblFzSUdWdVpDd2dZMmhsWTJ0S2MyOXVLU0I3WEc0Z0lIWmhjaUJmY0c5emFYUnBiMjRzSUY5c1pXNW5kR2dzSUY5amFHRnlZV04wWlhJc0lGOXlaWE4xYkhRN1hHNWNiaUFnYVdZZ0tITjBZWEowSUR3Z1pXNWtLU0I3WEc0Z0lDQWdYM0psYzNWc2RDQTlJSE4wWVhSbExtbHVjSFYwTG5Oc2FXTmxLSE4wWVhKMExDQmxibVFwTzF4dVhHNGdJQ0FnYVdZZ0tHTm9aV05yU25OdmJpa2dlMXh1SUNBZ0lDQWdabTl5SUNoZmNHOXphWFJwYjI0Z1BTQXdMQ0JmYkdWdVozUm9JRDBnWDNKbGMzVnNkQzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUY5d2IzTnBkR2x2YmlBOElGOXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lDQWdJRjl3YjNOcGRHbHZiaUFyUFNBeEtTQjdYRzRnSUNBZ0lDQWdJRjlqYUdGeVlXTjBaWElnUFNCZmNtVnpkV3gwTG1Ob1lYSkRiMlJsUVhRb1gzQnZjMmwwYVc5dUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0NFb1gyTm9ZWEpoWTNSbGNpQTlQVDBnTUhnd09TQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQW9NSGd5TUNBOFBTQmZZMmhoY21GamRHVnlJQ1ltSUY5amFHRnlZV04wWlhJZ1BEMGdNSGd4TUVaR1JrWXBLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZGxlSEJsWTNSbFpDQjJZV3hwWkNCS1UwOU9JR05vWVhKaFkzUmxjaWNwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoUVFWUlVSVkpPWDA1UFRsOVFVa2xPVkVGQ1RFVXVkR1Z6ZENoZmNtVnpkV3gwS1NrZ2UxeHVJQ0FnSUNBZ2RHaHliM2RGY25KdmNpaHpkR0YwWlN3Z0ozUm9aU0J6ZEhKbFlXMGdZMjl1ZEdGcGJuTWdibTl1TFhCeWFXNTBZV0pzWlNCamFHRnlZV04wWlhKekp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2MzUmhkR1V1Y21WemRXeDBJQ3M5SUY5eVpYTjFiSFE3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2JXVnlaMlZOWVhCd2FXNW5jeWh6ZEdGMFpTd2daR1Z6ZEdsdVlYUnBiMjRzSUhOdmRYSmpaU3dnYjNabGNuSnBaR0ZpYkdWTFpYbHpLU0I3WEc0Z0lIWmhjaUJ6YjNWeVkyVkxaWGx6TENCclpYa3NJR2x1WkdWNExDQnhkV0Z1ZEdsMGVUdGNibHh1SUNCcFppQW9JV052YlcxdmJpNXBjMDlpYW1WamRDaHpiM1Z5WTJVcEtTQjdYRzRnSUNBZ2RHaHliM2RGY25KdmNpaHpkR0YwWlN3Z0oyTmhibTV2ZENCdFpYSm5aU0J0WVhCd2FXNW5jenNnZEdobElIQnliM1pwWkdWa0lITnZkWEpqWlNCdlltcGxZM1FnYVhNZ2RXNWhZMk5sY0hSaFlteGxKeWs3WEc0Z0lIMWNibHh1SUNCemIzVnlZMlZMWlhseklEMGdUMkpxWldOMExtdGxlWE1vYzI5MWNtTmxLVHRjYmx4dUlDQm1iM0lnS0dsdVpHVjRJRDBnTUN3Z2NYVmhiblJwZEhrZ1BTQnpiM1Z5WTJWTFpYbHpMbXhsYm1kMGFEc2dhVzVrWlhnZ1BDQnhkV0Z1ZEdsMGVUc2dhVzVrWlhnZ0t6MGdNU2tnZTF4dUlDQWdJR3RsZVNBOUlITnZkWEpqWlV0bGVYTmJhVzVrWlhoZE8xeHVYRzRnSUNBZ2FXWWdLQ0ZmYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNoa1pYTjBhVzVoZEdsdmJpd2dhMlY1S1NrZ2UxeHVJQ0FnSUNBZ1pHVnpkR2x1WVhScGIyNWJhMlY1WFNBOUlITnZkWEpqWlZ0clpYbGRPMXh1SUNBZ0lDQWdiM1psY25KcFpHRmliR1ZMWlhselcydGxlVjBnUFNCMGNuVmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJ6ZEc5eVpVMWhjSEJwYm1kUVlXbHlLSE4wWVhSbExDQmZjbVZ6ZFd4MExDQnZkbVZ5Y21sa1lXSnNaVXRsZVhNc0lHdGxlVlJoWnl3Z2EyVjVUbTlrWlN3Z2RtRnNkV1ZPYjJSbEtTQjdYRzRnSUhaaGNpQnBibVJsZUN3Z2NYVmhiblJwZEhrN1hHNWNiaUFnYTJWNVRtOWtaU0E5SUZOMGNtbHVaeWhyWlhsT2IyUmxLVHRjYmx4dUlDQnBaaUFvWDNKbGMzVnNkQ0E5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJRjl5WlhOMWJIUWdQU0I3ZlR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hyWlhsVVlXY2dQVDA5SUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwdFpYSm5aU2NwSUh0Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2gyWVd4MVpVNXZaR1VwS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR2x1WkdWNElEMGdNQ3dnY1hWaGJuUnBkSGtnUFNCMllXeDFaVTV2WkdVdWJHVnVaM1JvT3lCcGJtUmxlQ0E4SUhGMVlXNTBhWFI1T3lCcGJtUmxlQ0FyUFNBeEtTQjdYRzRnSUNBZ0lDQWdJRzFsY21kbFRXRndjR2x1WjNNb2MzUmhkR1VzSUY5eVpYTjFiSFFzSUhaaGJIVmxUbTlrWlZ0cGJtUmxlRjBzSUc5MlpYSnlhV1JoWW14bFMyVjVjeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHMWxjbWRsVFdGd2NHbHVaM01vYzNSaGRHVXNJRjl5WlhOMWJIUXNJSFpoYkhWbFRtOWtaU3dnYjNabGNuSnBaR0ZpYkdWTFpYbHpLVHRjYmlBZ0lDQjlYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdhV1lnS0NGemRHRjBaUzVxYzI5dUlDWW1YRzRnSUNBZ0lDQWdJQ0ZmYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNodmRtVnljbWxrWVdKc1pVdGxlWE1zSUd0bGVVNXZaR1VwSUNZbVhHNGdJQ0FnSUNBZ0lGOW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRjl5WlhOMWJIUXNJR3RsZVU1dlpHVXBLU0I3WEc0Z0lDQWdJQ0IwYUhKdmQwVnljbTl5S0hOMFlYUmxMQ0FuWkhWd2JHbGpZWFJsWkNCdFlYQndhVzVuSUd0bGVTY3BPMXh1SUNBZ0lIMWNiaUFnSUNCZmNtVnpkV3gwVzJ0bGVVNXZaR1ZkSUQwZ2RtRnNkV1ZPYjJSbE8xeHVJQ0FnSUdSbGJHVjBaU0J2ZG1WeWNtbGtZV0pzWlV0bGVYTmJhMlY1VG05a1pWMDdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdYM0psYzNWc2REdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVmhaRXhwYm1WQ2NtVmhheWh6ZEdGMFpTa2dlMXh1SUNCMllYSWdZMmc3WEc1Y2JpQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLSE4wWVhSbExuQnZjMmwwYVc5dUtUdGNibHh1SUNCcFppQW9ZMmdnUFQwOUlEQjRNRUV2S2lCTVJpQXFMeWtnZTF4dUlDQWdJSE4wWVhSbExuQnZjMmwwYVc5dUt5czdYRzRnSUgwZ1pXeHpaU0JwWmlBb1kyZ2dQVDA5SURCNE1FUXZLaUJEVWlBcUx5a2dlMXh1SUNBZ0lITjBZWFJsTG5CdmMybDBhVzl1S3lzN1hHNGdJQ0FnYVdZZ0tITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNHBJRDA5UFNBd2VEQkJMeW9nVEVZZ0tpOHBJSHRjYmlBZ0lDQWdJSE4wWVhSbExuQnZjMmwwYVc5dUt5czdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZGhJR3hwYm1VZ1luSmxZV3NnYVhNZ1pYaHdaV04wWldRbktUdGNiaUFnZlZ4dVhHNGdJSE4wWVhSbExteHBibVVnS3owZ01UdGNiaUFnYzNSaGRHVXViR2x1WlZOMFlYSjBJRDBnYzNSaGRHVXVjRzl6YVhScGIyNDdYRzU5WEc1Y2JtWjFibU4wYVc5dUlITnJhWEJUWlhCaGNtRjBhVzl1VTNCaFkyVW9jM1JoZEdVc0lHRnNiRzkzUTI5dGJXVnVkSE1zSUdOb1pXTnJTVzVrWlc1MEtTQjdYRzRnSUhaaGNpQnNhVzVsUW5KbFlXdHpJRDBnTUN4Y2JpQWdJQ0FnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdkMmhwYkdVZ0tHTm9JQ0U5UFNBd0tTQjdYRzRnSUNBZ2QyaHBiR1VnS0dselgxZElTVlJGWDFOUVFVTkZLR05vS1NrZ2UxeHVJQ0FnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtDc3JjM1JoZEdVdWNHOXphWFJwYjI0cE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGhiR3h2ZDBOdmJXMWxiblJ6SUNZbUlHTm9JRDA5UFNBd2VESXpMeW9nSXlBcUx5a2dlMXh1SUNBZ0lDQWdaRzhnZTF4dUlDQWdJQ0FnSUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb0t5dHpkR0YwWlM1d2IzTnBkR2x2YmlrN1hHNGdJQ0FnSUNCOUlIZG9hV3hsSUNoamFDQWhQVDBnTUhnd1FTOHFJRXhHSUNvdklDWW1JR05vSUNFOVBTQXdlREJFTHlvZ1ExSWdLaThnSmlZZ1kyZ2dJVDA5SURBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHBjMTlGVDB3b1kyZ3BLU0I3WEc0Z0lDQWdJQ0J5WldGa1RHbHVaVUp5WldGcktITjBZWFJsS1R0Y2JseHVJQ0FnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JpQWdJQ0FnSUd4cGJtVkNjbVZoYTNNckt6dGNiaUFnSUNBZ0lITjBZWFJsTG14cGJtVkpibVJsYm5RZ1BTQXdPMXh1WEc0Z0lDQWdJQ0IzYUdsc1pTQW9ZMmdnUFQwOUlEQjRNakF2S2lCVGNHRmpaU0FxTHlrZ2UxeHVJQ0FnSUNBZ0lDQnpkR0YwWlM1c2FXNWxTVzVrWlc1MEt5czdYRzRnSUNBZ0lDQWdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2dySzNOMFlYUmxMbkJ2YzJsMGFXOXVLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYVdZZ0tHTm9aV05yU1c1a1pXNTBJQ0U5UFNBdE1TQW1KaUJzYVc1bFFuSmxZV3R6SUNFOVBTQXdJQ1ltSUhOMFlYUmxMbXhwYm1WSmJtUmxiblFnUENCamFHVmphMGx1WkdWdWRDa2dlMXh1SUNBZ0lIUm9jbTkzVjJGeWJtbHVaeWh6ZEdGMFpTd2dKMlJsWm1samFXVnVkQ0JwYm1SbGJuUmhkR2x2YmljcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHeHBibVZDY21WaGEzTTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIUmxjM1JFYjJOMWJXVnVkRk5sY0dGeVlYUnZjaWh6ZEdGMFpTa2dlMXh1SUNCMllYSWdYM0J2YzJsMGFXOXVJRDBnYzNSaGRHVXVjRzl6YVhScGIyNHNYRzRnSUNBZ0lDQmphRHRjYmx4dUlDQmphQ0E5SUhOMFlYUmxMbWx1Y0hWMExtTm9ZWEpEYjJSbFFYUW9YM0J2YzJsMGFXOXVLVHRjYmx4dUlDQXZMeUJEYjI1a2FYUnBiMjRnYzNSaGRHVXVjRzl6YVhScGIyNGdQVDA5SUhOMFlYUmxMbXhwYm1WVGRHRnlkQ0JwY3lCMFpYTjBaV1JjYmlBZ0x5OGdhVzRnY0dGeVpXNTBJRzl1SUdWaFkyZ2dZMkZzYkN3Z1ptOXlJR1ZtWm1samFXVnVZM2t1SUU1dklHNWxaV1J6SUhSdklIUmxjM1FnYUdWeVpTQmhaMkZwYmk1Y2JpQWdhV1lnS0NoamFDQTlQVDBnTUhneVJDOHFJQzBnS2k4Z2ZId2dZMmdnUFQwOUlEQjRNa1V2S2lBdUlDb3ZLU0FtSmx4dUlDQWdJQ0FnWTJnZ1BUMDlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb1gzQnZjMmwwYVc5dUlDc2dNU2tnSmlaY2JpQWdJQ0FnSUdOb0lEMDlQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtGOXdiM05wZEdsdmJpQXJJRElwS1NCN1hHNWNiaUFnSUNCZmNHOXphWFJwYjI0Z0t6MGdNenRjYmx4dUlDQWdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2hmY0c5emFYUnBiMjRwTzF4dVhHNGdJQ0FnYVdZZ0tHTm9JRDA5UFNBd0lIeDhJR2x6WDFkVFgwOVNYMFZQVENoamFDa3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJtWVd4elpUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2QzSnBkR1ZHYjJ4a1pXUk1hVzVsY3loemRHRjBaU3dnWTI5MWJuUXBJSHRjYmlBZ2FXWWdLR052ZFc1MElEMDlQU0F4S1NCN1hHNGdJQ0FnYzNSaGRHVXVjbVZ6ZFd4MElDczlJQ2NnSnp0Y2JpQWdmU0JsYkhObElHbG1JQ2hqYjNWdWRDQStJREVwSUh0Y2JpQWdJQ0J6ZEdGMFpTNXlaWE4xYkhRZ0t6MGdZMjl0Ylc5dUxuSmxjR1ZoZENnblhGeHVKeXdnWTI5MWJuUWdMU0F4S1R0Y2JpQWdmVnh1ZlZ4dVhHNWNibVoxYm1OMGFXOXVJSEpsWVdSUWJHRnBibE5qWVd4aGNpaHpkR0YwWlN3Z2JtOWtaVWx1WkdWdWRDd2dkMmwwYUdsdVJteHZkME52Ykd4bFkzUnBiMjRwSUh0Y2JpQWdkbUZ5SUhCeVpXTmxaR2x1Wnl4Y2JpQWdJQ0FnSUdadmJHeHZkMmx1Wnl4Y2JpQWdJQ0FnSUdOaGNIUjFjbVZUZEdGeWRDeGNiaUFnSUNBZ0lHTmhjSFIxY21WRmJtUXNYRzRnSUNBZ0lDQm9ZWE5RWlc1a2FXNW5RMjl1ZEdWdWRDeGNiaUFnSUNBZ0lGOXNhVzVsTEZ4dUlDQWdJQ0FnWDJ4cGJtVlRkR0Z5ZEN4Y2JpQWdJQ0FnSUY5c2FXNWxTVzVrWlc1MExGeHVJQ0FnSUNBZ1gydHBibVFnUFNCemRHRjBaUzVyYVc1a0xGeHVJQ0FnSUNBZ1gzSmxjM1ZzZENBOUlITjBZWFJsTG5KbGMzVnNkQ3hjYmlBZ0lDQWdJR05vTzF4dVhHNGdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2h6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzVjYmlBZ2FXWWdLR2x6WDFkVFgwOVNYMFZQVENoamFDa2dJQ0FnSUNCOGZGeHVJQ0FnSUNBZ2FYTmZSa3hQVjE5SlRrUkpRMEZVVDFJb1kyZ3BJSHg4WEc0Z0lDQWdJQ0JqYUNBOVBUMGdNSGd5TXk4cUlDTWdLaThnSUNBZ2ZIeGNiaUFnSUNBZ0lHTm9JRDA5UFNBd2VESTJMeW9nSmlBcUx5QWdJQ0I4ZkZ4dUlDQWdJQ0FnWTJnZ1BUMDlJREI0TWtFdktpQXFJQ292SUNBZ0lIeDhYRzRnSUNBZ0lDQmphQ0E5UFQwZ01IZ3lNUzhxSUNFZ0tpOGdJQ0FnZkh4Y2JpQWdJQ0FnSUdOb0lEMDlQU0F3ZURkREx5b2dmQ0FxTHlBZ0lDQjhmRnh1SUNBZ0lDQWdZMmdnUFQwOUlEQjRNMFV2S2lBK0lDb3ZJQ0FnSUh4OFhHNGdJQ0FnSUNCamFDQTlQVDBnTUhneU55OHFJQ2NnS2k4Z0lDQWdmSHhjYmlBZ0lDQWdJR05vSUQwOVBTQXdlREl5THlvZ1hDSWdLaThnSUNBZ2ZIeGNiaUFnSUNBZ0lHTm9JRDA5UFNBd2VESTFMeW9nSlNBcUx5QWdJQ0I4ZkZ4dUlDQWdJQ0FnWTJnZ1BUMDlJREI0TkRBdktpQkFJQ292SUNBZ0lIeDhYRzRnSUNBZ0lDQmphQ0E5UFQwZ01IZzJNQzhxSUdBZ0tpOHBJSHRjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMWNibHh1SUNCcFppQW9ZMmdnUFQwOUlEQjRNMFl2S2lBL0lDb3ZJSHg4SUdOb0lEMDlQU0F3ZURKRUx5b2dMU0FxTHlrZ2UxeHVJQ0FnSUdadmJHeHZkMmx1WnlBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNGdLeUF4S1R0Y2JseHVJQ0FnSUdsbUlDaHBjMTlYVTE5UFVsOUZUMHdvWm05c2JHOTNhVzVuS1NCOGZGeHVJQ0FnSUNBZ0lDQjNhWFJvYVc1R2JHOTNRMjlzYkdWamRHbHZiaUFtSmlCcGMxOUdURTlYWDBsT1JFbERRVlJQVWlobWIyeHNiM2RwYm1jcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnYzNSaGRHVXVhMmx1WkNBOUlDZHpZMkZzWVhJbk8xeHVJQ0J6ZEdGMFpTNXlaWE4xYkhRZ1BTQW5KenRjYmlBZ1kyRndkSFZ5WlZOMFlYSjBJRDBnWTJGd2RIVnlaVVZ1WkNBOUlITjBZWFJsTG5CdmMybDBhVzl1TzF4dUlDQm9ZWE5RWlc1a2FXNW5RMjl1ZEdWdWRDQTlJR1poYkhObE8xeHVYRzRnSUhkb2FXeGxJQ2hqYUNBaFBUMGdNQ2tnZTF4dUlDQWdJR2xtSUNoamFDQTlQVDBnTUhnelFTOHFJRG9nS2k4cElIdGNiaUFnSUNBZ0lHWnZiR3h2ZDJsdVp5QTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb2MzUmhkR1V1Y0c5emFYUnBiMjRnS3lBeEtUdGNibHh1SUNBZ0lDQWdhV1lnS0dselgxZFRYMDlTWDBWUFRDaG1iMnhzYjNkcGJtY3BJSHg4WEc0Z0lDQWdJQ0FnSUNBZ2QybDBhR2x1Um14dmQwTnZiR3hsWTNScGIyNGdKaVlnYVhOZlJreFBWMTlKVGtSSlEwRlVUMUlvWm05c2JHOTNhVzVuS1NrZ2UxeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyZ2dQVDA5SURCNE1qTXZLaUFqSUNvdktTQjdYRzRnSUNBZ0lDQndjbVZqWldScGJtY2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1SUMwZ01TazdYRzVjYmlBZ0lDQWdJR2xtSUNocGMxOVhVMTlQVWw5RlQwd29jSEpsWTJWa2FXNW5LU2tnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJSDBnWld4elpTQnBaaUFvS0hOMFlYUmxMbkJ2YzJsMGFXOXVJRDA5UFNCemRHRjBaUzVzYVc1bFUzUmhjblFnSmlZZ2RHVnpkRVJ2WTNWdFpXNTBVMlZ3WVhKaGRHOXlLSE4wWVhSbEtTa2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRwZEdocGJrWnNiM2REYjJ4c1pXTjBhVzl1SUNZbUlHbHpYMFpNVDFkZlNVNUVTVU5CVkU5U0tHTm9LU2tnZTF4dUlDQWdJQ0FnWW5KbFlXczdYRzVjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLR2x6WDBWUFRDaGphQ2twSUh0Y2JpQWdJQ0FnSUY5c2FXNWxJRDBnYzNSaGRHVXViR2x1WlR0Y2JpQWdJQ0FnSUY5c2FXNWxVM1JoY25RZ1BTQnpkR0YwWlM1c2FXNWxVM1JoY25RN1hHNGdJQ0FnSUNCZmJHbHVaVWx1WkdWdWRDQTlJSE4wWVhSbExteHBibVZKYm1SbGJuUTdYRzRnSUNBZ0lDQnphMmx3VTJWd1lYSmhkR2x2YmxOd1lXTmxLSE4wWVhSbExDQm1ZV3h6WlN3Z0xURXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2MzUmhkR1V1YkdsdVpVbHVaR1Z1ZENBK1BTQnViMlJsU1c1a1pXNTBLU0I3WEc0Z0lDQWdJQ0FnSUdoaGMxQmxibVJwYm1kRGIyNTBaVzUwSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0hOMFlYUmxMbkJ2YzJsMGFXOXVLVHRjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpTNXdiM05wZEdsdmJpQTlJR05oY0hSMWNtVkZibVE3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxMbXhwYm1VZ1BTQmZiR2x1WlR0Y2JpQWdJQ0FnSUNBZ2MzUmhkR1V1YkdsdVpWTjBZWEowSUQwZ1gyeHBibVZUZEdGeWREdGNiaUFnSUNBZ0lDQWdjM1JoZEdVdWJHbHVaVWx1WkdWdWRDQTlJRjlzYVc1bFNXNWtaVzUwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYUdGelVHVnVaR2x1WjBOdmJuUmxiblFwSUh0Y2JpQWdJQ0FnSUdOaGNIUjFjbVZUWldkdFpXNTBLSE4wWVhSbExDQmpZWEIwZFhKbFUzUmhjblFzSUdOaGNIUjFjbVZGYm1Rc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUhkeWFYUmxSbTlzWkdWa1RHbHVaWE1vYzNSaGRHVXNJSE4wWVhSbExteHBibVVnTFNCZmJHbHVaU2s3WEc0Z0lDQWdJQ0JqWVhCMGRYSmxVM1JoY25RZ1BTQmpZWEIwZFhKbFJXNWtJRDBnYzNSaGRHVXVjRzl6YVhScGIyNDdYRzRnSUNBZ0lDQm9ZWE5RWlc1a2FXNW5RMjl1ZEdWdWRDQTlJR1poYkhObE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hhWE5mVjBoSlZFVmZVMUJCUTBVb1kyZ3BLU0I3WEc0Z0lDQWdJQ0JqWVhCMGRYSmxSVzVrSUQwZ2MzUmhkR1V1Y0c5emFYUnBiMjRnS3lBeE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENnckszTjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JpQWdmVnh1WEc0Z0lHTmhjSFIxY21WVFpXZHRaVzUwS0hOMFlYUmxMQ0JqWVhCMGRYSmxVM1JoY25Rc0lHTmhjSFIxY21WRmJtUXNJR1poYkhObEtUdGNibHh1SUNCcFppQW9jM1JoZEdVdWNtVnpkV3gwS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJSDFjYmx4dUlDQnpkR0YwWlM1cmFXNWtJRDBnWDJ0cGJtUTdYRzRnSUhOMFlYUmxMbkpsYzNWc2RDQTlJRjl5WlhOMWJIUTdYRzRnSUhKbGRIVnliaUJtWVd4elpUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVmhaRk5wYm1kc1pWRjFiM1JsWkZOallXeGhjaWh6ZEdGMFpTd2dibTlrWlVsdVpHVnVkQ2tnZTF4dUlDQjJZWElnWTJnc1hHNGdJQ0FnSUNCallYQjBkWEpsVTNSaGNuUXNJR05oY0hSMWNtVkZibVE3WEc1Y2JpQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLSE4wWVhSbExuQnZjMmwwYVc5dUtUdGNibHh1SUNCcFppQW9ZMmdnSVQwOUlEQjRNamN2S2lBbklDb3ZLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR1V1YTJsdVpDQTlJQ2R6WTJGc1lYSW5PMXh1SUNCemRHRjBaUzV5WlhOMWJIUWdQU0FuSnp0Y2JpQWdjM1JoZEdVdWNHOXphWFJwYjI0ckt6dGNiaUFnWTJGd2RIVnlaVk4wWVhKMElEMGdZMkZ3ZEhWeVpVVnVaQ0E5SUhOMFlYUmxMbkJ2YzJsMGFXOXVPMXh1WEc0Z0lIZG9hV3hsSUNnb1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1NrZ0lUMDlJREFwSUh0Y2JpQWdJQ0JwWmlBb1kyZ2dQVDA5SURCNE1qY3ZLaUFuSUNvdktTQjdYRzRnSUNBZ0lDQmpZWEIwZFhKbFUyVm5iV1Z1ZENoemRHRjBaU3dnWTJGd2RIVnlaVk4wWVhKMExDQnpkR0YwWlM1d2IzTnBkR2x2Yml3Z2RISjFaU2s3WEc0Z0lDQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaGphQ0E5UFQwZ01IZ3lOeThxSUNjZ0tpOHBJSHRjYmlBZ0lDQWdJQ0FnWTJGd2RIVnlaVk4wWVhKMElEMGdZMkZ3ZEhWeVpVVnVaQ0E5SUhOMFlYUmxMbkJ2YzJsMGFXOXVPMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpTNXdiM05wZEdsdmJpc3JPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dselgwVlBUQ2hqYUNrcElIdGNiaUFnSUNBZ0lHTmhjSFIxY21WVFpXZHRaVzUwS0hOMFlYUmxMQ0JqWVhCMGRYSmxVM1JoY25Rc0lHTmhjSFIxY21WRmJtUXNJSFJ5ZFdVcE8xeHVJQ0FnSUNBZ2QzSnBkR1ZHYjJ4a1pXUk1hVzVsY3loemRHRjBaU3dnYzJ0cGNGTmxjR0Z5WVhScGIyNVRjR0ZqWlNoemRHRjBaU3dnWm1Gc2MyVXNJRzV2WkdWSmJtUmxiblFwS1R0Y2JpQWdJQ0FnSUdOaGNIUjFjbVZUZEdGeWRDQTlJR05oY0hSMWNtVkZibVFnUFNCemRHRjBaUzV3YjNOcGRHbHZianRjYmx4dUlDQWdJSDBnWld4elpTQnBaaUFvYzNSaGRHVXVjRzl6YVhScGIyNGdQVDA5SUhOMFlYUmxMbXhwYm1WVGRHRnlkQ0FtSmlCMFpYTjBSRzlqZFcxbGJuUlRaWEJoY21GMGIzSW9jM1JoZEdVcEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZDBWeWNtOXlLSE4wWVhSbExDQW5kVzVsZUhCbFkzUmxaQ0JsYm1RZ2IyWWdkR2hsSUdSdlkzVnRaVzUwSUhkcGRHaHBiaUJoSUhOcGJtZHNaU0J4ZFc5MFpXUWdjMk5oYkdGeUp5azdYRzVjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MzUmhkR1V1Y0c5emFYUnBiMjRyS3p0Y2JpQWdJQ0FnSUdOaGNIUjFjbVZGYm1RZ1BTQnpkR0YwWlM1d2IzTnBkR2x2Ymp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmRXNWxlSEJsWTNSbFpDQmxibVFnYjJZZ2RHaGxJSE4wY21WaGJTQjNhWFJvYVc0Z1lTQnphVzVuYkdVZ2NYVnZkR1ZrSUhOallXeGhjaWNwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJ5WldGa1JHOTFZbXhsVVhWdmRHVmtVMk5oYkdGeUtITjBZWFJsTENCdWIyUmxTVzVrWlc1MEtTQjdYRzRnSUhaaGNpQmpZWEIwZFhKbFUzUmhjblFzWEc0Z0lDQWdJQ0JqWVhCMGRYSmxSVzVrTEZ4dUlDQWdJQ0FnYUdWNFRHVnVaM1JvTEZ4dUlDQWdJQ0FnYUdWNFVtVnpkV3gwTEZ4dUlDQWdJQ0FnZEcxd0xGeHVJQ0FnSUNBZ1kyZzdYRzVjYmlBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JseHVJQ0JwWmlBb1kyZ2dJVDA5SURCNE1qSXZLaUJjSWlBcUx5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUmxMbXRwYm1RZ1BTQW5jMk5oYkdGeUp6dGNiaUFnYzNSaGRHVXVjbVZ6ZFd4MElEMGdKeWM3WEc0Z0lITjBZWFJsTG5CdmMybDBhVzl1S3lzN1hHNGdJR05oY0hSMWNtVlRkR0Z5ZENBOUlHTmhjSFIxY21WRmJtUWdQU0J6ZEdGMFpTNXdiM05wZEdsdmJqdGNibHh1SUNCM2FHbHNaU0FvS0dOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaWtwSUNFOVBTQXdLU0I3WEc0Z0lDQWdhV1lnS0dOb0lEMDlQU0F3ZURJeUx5b2dYQ0lnS2k4cElIdGNiaUFnSUNBZ0lHTmhjSFIxY21WVFpXZHRaVzUwS0hOMFlYUmxMQ0JqWVhCMGRYSmxVM1JoY25Rc0lITjBZWFJsTG5CdmMybDBhVzl1TENCMGNuVmxLVHRjYmlBZ0lDQWdJSE4wWVhSbExuQnZjMmwwYVc5dUt5czdYRzRnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmx4dUlDQWdJSDBnWld4elpTQnBaaUFvWTJnZ1BUMDlJREI0TlVNdktpQmNYQ0FxTHlrZ2UxeHVJQ0FnSUNBZ1kyRndkSFZ5WlZObFoyMWxiblFvYzNSaGRHVXNJR05oY0hSMWNtVlRkR0Z5ZEN3Z2MzUmhkR1V1Y0c5emFYUnBiMjRzSUhSeWRXVXBPMXh1SUNBZ0lDQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLQ3NyYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2FYTmZSVTlNS0dOb0tTa2dlMXh1SUNBZ0lDQWdJQ0J6YTJsd1UyVndZWEpoZEdsdmJsTndZV05sS0hOMFlYUmxMQ0JtWVd4elpTd2dibTlrWlVsdVpHVnVkQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHpvZ2NtVjNiM0pySUhSdklHbHViR2x1WlNCbWJpQjNhWFJvSUc1dklIUjVjR1VnWTJGemREOWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMmdnUENBeU5UWWdKaVlnYzJsdGNHeGxSWE5qWVhCbFEyaGxZMnRiWTJoZEtTQjdYRzRnSUNBZ0lDQWdJSE4wWVhSbExuSmxjM1ZzZENBclBTQnphVzF3YkdWRmMyTmhjR1ZOWVhCYlkyaGRPMXh1SUNBZ0lDQWdJQ0J6ZEdGMFpTNXdiM05wZEdsdmJpc3JPMXh1WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0NoMGJYQWdQU0JsYzJOaGNHVmtTR1Y0VEdWdUtHTm9LU2tnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJR2hsZUV4bGJtZDBhQ0E5SUhSdGNEdGNiaUFnSUNBZ0lDQWdhR1Y0VW1WemRXeDBJRDBnTUR0Y2JseHVJQ0FnSUNBZ0lDQm1iM0lnS0RzZ2FHVjRUR1Z1WjNSb0lENGdNRHNnYUdWNFRHVnVaM1JvTFMwcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvS0hSdGNDQTlJR1p5YjIxSVpYaERiMlJsS0dOb0tTa2dQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYUdWNFVtVnpkV3gwSUQwZ0tHaGxlRkpsYzNWc2RDQThQQ0EwS1NBcklIUnRjRHRjYmx4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmQwVnljbTl5S0hOMFlYUmxMQ0FuWlhod1pXTjBaV1FnYUdWNFlXUmxZMmx0WVd3Z1kyaGhjbUZqZEdWeUp5azdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjM1JoZEdVdWNtVnpkV3gwSUNzOUlHTm9ZWEpHY205dFEyOWtaWEJ2YVc1MEtHaGxlRkpsYzNWc2RDazdYRzVjYmlBZ0lDQWdJQ0FnYzNSaGRHVXVjRzl6YVhScGIyNHJLenRjYmx4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzZEZjbkp2Y2loemRHRjBaU3dnSjNWdWEyNXZkMjRnWlhOallYQmxJSE5sY1hWbGJtTmxKeWs3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOaGNIUjFjbVZUZEdGeWRDQTlJR05oY0hSMWNtVkZibVFnUFNCemRHRjBaUzV3YjNOcGRHbHZianRjYmx4dUlDQWdJSDBnWld4elpTQnBaaUFvYVhOZlJVOU1LR05vS1NrZ2UxeHVJQ0FnSUNBZ1kyRndkSFZ5WlZObFoyMWxiblFvYzNSaGRHVXNJR05oY0hSMWNtVlRkR0Z5ZEN3Z1kyRndkSFZ5WlVWdVpDd2dkSEoxWlNrN1hHNGdJQ0FnSUNCM2NtbDBaVVp2YkdSbFpFeHBibVZ6S0hOMFlYUmxMQ0J6YTJsd1UyVndZWEpoZEdsdmJsTndZV05sS0hOMFlYUmxMQ0JtWVd4elpTd2dibTlrWlVsdVpHVnVkQ2twTzF4dUlDQWdJQ0FnWTJGd2RIVnlaVk4wWVhKMElEMGdZMkZ3ZEhWeVpVVnVaQ0E5SUhOMFlYUmxMbkJ2YzJsMGFXOXVPMXh1WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h6ZEdGMFpTNXdiM05wZEdsdmJpQTlQVDBnYzNSaGRHVXViR2x1WlZOMFlYSjBJQ1ltSUhSbGMzUkViMk4xYldWdWRGTmxjR0Z5WVhSdmNpaHpkR0YwWlNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZDFibVY0Y0dWamRHVmtJR1Z1WkNCdlppQjBhR1VnWkc5amRXMWxiblFnZDJsMGFHbHVJR0VnWkc5MVlteGxJSEYxYjNSbFpDQnpZMkZzWVhJbktUdGNibHh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemRHRjBaUzV3YjNOcGRHbHZiaXNyTzF4dUlDQWdJQ0FnWTJGd2RIVnlaVVZ1WkNBOUlITjBZWFJsTG5CdmMybDBhVzl1TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhSb2NtOTNSWEp5YjNJb2MzUmhkR1VzSUNkMWJtVjRjR1ZqZEdWa0lHVnVaQ0J2WmlCMGFHVWdjM1J5WldGdElIZHBkR2hwYmlCaElHUnZkV0pzWlNCeGRXOTBaV1FnYzJOaGJHRnlKeWs3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsWVdSR2JHOTNRMjlzYkdWamRHbHZiaWh6ZEdGMFpTd2dibTlrWlVsdVpHVnVkQ2tnZTF4dUlDQjJZWElnY21WaFpFNWxlSFFnUFNCMGNuVmxMRnh1SUNBZ0lDQWdYMnhwYm1Vc1hHNGdJQ0FnSUNCZmRHRm5JQ0FnSUNBOUlITjBZWFJsTG5SaFp5eGNiaUFnSUNBZ0lGOXlaWE4xYkhRc1hHNGdJQ0FnSUNCZllXNWphRzl5SUNBOUlITjBZWFJsTG1GdVkyaHZjaXhjYmlBZ0lDQWdJR1p2Ykd4dmQybHVaeXhjYmlBZ0lDQWdJSFJsY20xcGJtRjBiM0lzWEc0Z0lDQWdJQ0JwYzFCaGFYSXNYRzRnSUNBZ0lDQnBjMFY0Y0d4cFkybDBVR0ZwY2l4Y2JpQWdJQ0FnSUdselRXRndjR2x1Wnl4Y2JpQWdJQ0FnSUc5MlpYSnlhV1JoWW14bFMyVjVjeUE5SUh0OUxGeHVJQ0FnSUNBZ2EyVjVUbTlrWlN4Y2JpQWdJQ0FnSUd0bGVWUmhaeXhjYmlBZ0lDQWdJSFpoYkhWbFRtOWtaU3hjYmlBZ0lDQWdJR05vTzF4dVhHNGdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2h6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzVjYmlBZ2FXWWdLR05vSUQwOVBTQXdlRFZDTHlvZ1d5QXFMeWtnZTF4dUlDQWdJSFJsY20xcGJtRjBiM0lnUFNBd2VEVkVPeThxSUYwZ0tpOWNiaUFnSUNCcGMwMWhjSEJwYm1jZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JmY21WemRXeDBJRDBnVzEwN1hHNGdJSDBnWld4elpTQnBaaUFvWTJnZ1BUMDlJREI0TjBJdktpQjdJQ292S1NCN1hHNGdJQ0FnZEdWeWJXbHVZWFJ2Y2lBOUlEQjROMFE3THlvZ2ZTQXFMMXh1SUNBZ0lHbHpUV0Z3Y0dsdVp5QTlJSFJ5ZFdVN1hHNGdJQ0FnWDNKbGMzVnNkQ0E5SUh0OU8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUdsbUlDaHpkR0YwWlM1aGJtTm9iM0lnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J6ZEdGMFpTNWhibU5vYjNKTllYQmJjM1JoZEdVdVlXNWphRzl5WFNBOUlGOXlaWE4xYkhRN1hHNGdJSDFjYmx4dUlDQmphQ0E5SUhOMFlYUmxMbWx1Y0hWMExtTm9ZWEpEYjJSbFFYUW9LeXR6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzVjYmlBZ2QyaHBiR1VnS0dOb0lDRTlQU0F3S1NCN1hHNGdJQ0FnYzJ0cGNGTmxjR0Z5WVhScGIyNVRjR0ZqWlNoemRHRjBaU3dnZEhKMVpTd2dibTlrWlVsdVpHVnVkQ2s3WEc1Y2JpQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1WEc0Z0lDQWdhV1lnS0dOb0lEMDlQU0IwWlhKdGFXNWhkRzl5S1NCN1hHNGdJQ0FnSUNCemRHRjBaUzV3YjNOcGRHbHZiaXNyTzF4dUlDQWdJQ0FnYzNSaGRHVXVkR0ZuSUQwZ1gzUmhaenRjYmlBZ0lDQWdJSE4wWVhSbExtRnVZMmh2Y2lBOUlGOWhibU5vYjNJN1hHNGdJQ0FnSUNCemRHRjBaUzVyYVc1a0lEMGdhWE5OWVhCd2FXNW5JRDhnSjIxaGNIQnBibWNuSURvZ0ozTmxjWFZsYm1ObEp6dGNiaUFnSUNBZ0lITjBZWFJsTG5KbGMzVnNkQ0E5SUY5eVpYTjFiSFE3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0NGeVpXRmtUbVY0ZENrZ2UxeHVJQ0FnSUNBZ2RHaHliM2RGY25KdmNpaHpkR0YwWlN3Z0oyMXBjM05sWkNCamIyMXRZU0JpWlhSM1pXVnVJR1pzYjNjZ1kyOXNiR1ZqZEdsdmJpQmxiblJ5YVdWekp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2EyVjVWR0ZuSUQwZ2EyVjVUbTlrWlNBOUlIWmhiSFZsVG05a1pTQTlJRzUxYkd3N1hHNGdJQ0FnYVhOUVlXbHlJRDBnYVhORmVIQnNhV05wZEZCaGFYSWdQU0JtWVd4elpUdGNibHh1SUNBZ0lHbG1JQ2hqYUNBOVBUMGdNSGd6Umk4cUlEOGdLaThwSUh0Y2JpQWdJQ0FnSUdadmJHeHZkMmx1WnlBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNGdLeUF4S1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR2x6WDFkVFgwOVNYMFZQVENobWIyeHNiM2RwYm1jcEtTQjdYRzRnSUNBZ0lDQWdJR2x6VUdGcGNpQTlJR2x6Ulhod2JHbGphWFJRWVdseUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2MzUmhkR1V1Y0c5emFYUnBiMjRyS3p0Y2JpQWdJQ0FnSUNBZ2MydHBjRk5sY0dGeVlYUnBiMjVUY0dGalpTaHpkR0YwWlN3Z2RISjFaU3dnYm05a1pVbHVaR1Z1ZENrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWDJ4cGJtVWdQU0J6ZEdGMFpTNXNhVzVsTzF4dUlDQWdJR052YlhCdmMyVk9iMlJsS0hOMFlYUmxMQ0J1YjJSbFNXNWtaVzUwTENCRFQwNVVSVmhVWDBaTVQxZGZTVTRzSUdaaGJITmxMQ0IwY25WbEtUdGNiaUFnSUNCclpYbFVZV2NnUFNCemRHRjBaUzUwWVdjN1hHNGdJQ0FnYTJWNVRtOWtaU0E5SUhOMFlYUmxMbkpsYzNWc2REdGNiaUFnSUNCemEybHdVMlZ3WVhKaGRHbHZibE53WVdObEtITjBZWFJsTENCMGNuVmxMQ0J1YjJSbFNXNWtaVzUwS1R0Y2JseHVJQ0FnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdJQ0JwWmlBb0tHbHpSWGh3YkdsamFYUlFZV2x5SUh4OElITjBZWFJsTG14cGJtVWdQVDA5SUY5c2FXNWxLU0FtSmlCamFDQTlQVDBnTUhnelFTOHFJRG9nS2k4cElIdGNiaUFnSUNBZ0lHbHpVR0ZwY2lBOUlIUnlkV1U3WEc0Z0lDQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3WEc0Z0lDQWdJQ0J6YTJsd1UyVndZWEpoZEdsdmJsTndZV05sS0hOMFlYUmxMQ0IwY25WbExDQnViMlJsU1c1a1pXNTBLVHRjYmlBZ0lDQWdJR052YlhCdmMyVk9iMlJsS0hOMFlYUmxMQ0J1YjJSbFNXNWtaVzUwTENCRFQwNVVSVmhVWDBaTVQxZGZTVTRzSUdaaGJITmxMQ0IwY25WbEtUdGNiaUFnSUNBZ0lIWmhiSFZsVG05a1pTQTlJSE4wWVhSbExuSmxjM1ZzZER0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FYTk5ZWEJ3YVc1bktTQjdYRzRnSUNBZ0lDQnpkRzl5WlUxaGNIQnBibWRRWVdseUtITjBZWFJsTENCZmNtVnpkV3gwTENCdmRtVnljbWxrWVdKc1pVdGxlWE1zSUd0bGVWUmhaeXdnYTJWNVRtOWtaU3dnZG1Gc2RXVk9iMlJsS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dselVHRnBjaWtnZTF4dUlDQWdJQ0FnWDNKbGMzVnNkQzV3ZFhOb0tITjBiM0psVFdGd2NHbHVaMUJoYVhJb2MzUmhkR1VzSUc1MWJHd3NJRzkyWlhKeWFXUmhZbXhsUzJWNWN5d2dhMlY1VkdGbkxDQnJaWGxPYjJSbExDQjJZV3gxWlU1dlpHVXBLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1gzSmxjM1ZzZEM1d2RYTm9LR3RsZVU1dlpHVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lITnJhWEJUWlhCaGNtRjBhVzl1VTNCaFkyVW9jM1JoZEdVc0lIUnlkV1VzSUc1dlpHVkpibVJsYm5RcE8xeHVYRzRnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JseHVJQ0FnSUdsbUlDaGphQ0E5UFQwZ01IZ3lReThxSUN3Z0tpOHBJSHRjYmlBZ0lDQWdJSEpsWVdST1pYaDBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lHTm9JRDBnYzNSaGRHVXVhVzV3ZFhRdVkyaGhja052WkdWQmRDZ3JLM04wWVhSbExuQnZjMmwwYVc5dUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WaFpFNWxlSFFnUFNCbVlXeHpaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0IwYUhKdmQwVnljbTl5S0hOMFlYUmxMQ0FuZFc1bGVIQmxZM1JsWkNCbGJtUWdiMllnZEdobElITjBjbVZoYlNCM2FYUm9hVzRnWVNCbWJHOTNJR052Ykd4bFkzUnBiMjRuS1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21WaFpFSnNiMk5yVTJOaGJHRnlLSE4wWVhSbExDQnViMlJsU1c1a1pXNTBLU0I3WEc0Z0lIWmhjaUJqWVhCMGRYSmxVM1JoY25Rc1hHNGdJQ0FnSUNCbWIyeGthVzVuTEZ4dUlDQWdJQ0FnWTJodmJYQnBibWNnSUNBZ0lDQWdQU0JEU0U5TlVFbE9SMTlEVEVsUUxGeHVJQ0FnSUNBZ1pHbGtVbVZoWkVOdmJuUmxiblFnUFNCbVlXeHpaU3hjYmlBZ0lDQWdJR1JsZEdWamRHVmtTVzVrWlc1MElEMGdabUZzYzJVc1hHNGdJQ0FnSUNCMFpYaDBTVzVrWlc1MElDQWdJQ0E5SUc1dlpHVkpibVJsYm5Rc1hHNGdJQ0FnSUNCbGJYQjBlVXhwYm1WeklDQWdJQ0E5SURBc1hHNGdJQ0FnSUNCaGRFMXZjbVZKYm1SbGJuUmxaQ0E5SUdaaGJITmxMRnh1SUNBZ0lDQWdkRzF3TEZ4dUlDQWdJQ0FnWTJnN1hHNWNiaUFnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0hOMFlYUmxMbkJ2YzJsMGFXOXVLVHRjYmx4dUlDQnBaaUFvWTJnZ1BUMDlJREI0TjBNdktpQjhJQ292S1NCN1hHNGdJQ0FnWm05c1pHbHVaeUE5SUdaaGJITmxPMXh1SUNCOUlHVnNjMlVnYVdZZ0tHTm9JRDA5UFNBd2VETkZMeW9nUGlBcUx5a2dlMXh1SUNBZ0lHWnZiR1JwYm1jZ1BTQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dVhHNGdJSE4wWVhSbExtdHBibVFnUFNBbmMyTmhiR0Z5Snp0Y2JpQWdjM1JoZEdVdWNtVnpkV3gwSUQwZ0p5YzdYRzVjYmlBZ2QyaHBiR1VnS0dOb0lDRTlQU0F3S1NCN1hHNGdJQ0FnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dVhHNGdJQ0FnYVdZZ0tHTm9JRDA5UFNBd2VESkNMeW9nS3lBcUx5QjhmQ0JqYUNBOVBUMGdNSGd5UkM4cUlDMGdLaThwSUh0Y2JpQWdJQ0FnSUdsbUlDaERTRTlOVUVsT1IxOURURWxRSUQwOVBTQmphRzl0Y0dsdVp5a2dlMXh1SUNBZ0lDQWdJQ0JqYUc5dGNHbHVaeUE5SUNoamFDQTlQVDBnTUhneVFpOHFJQ3NnS2k4cElEOGdRMGhQVFZCSlRrZGZTMFZGVUNBNklFTklUMDFRU1U1SFgxTlVVa2xRTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzZEZjbkp2Y2loemRHRjBaU3dnSjNKbGNHVmhkQ0J2WmlCaElHTm9iMjF3YVc1bklHMXZaR1VnYVdSbGJuUnBabWxsY2ljcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ29kRzF3SUQwZ1puSnZiVVJsWTJsdFlXeERiMlJsS0dOb0tTa2dQajBnTUNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJ0Y0NBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBblltRmtJR1Y0Y0d4cFkybDBJR2x1WkdWdWRHRjBhVzl1SUhkcFpIUm9JRzltSUdFZ1lteHZZMnNnYzJOaGJHRnlPeUJwZENCallXNXViM1FnWW1VZ2JHVnpjeUIwYUdGdUlHOXVaU2NwTzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNnaFpHVjBaV04wWldSSmJtUmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2RHVjRkRWx1WkdWdWRDQTlJRzV2WkdWSmJtUmxiblFnS3lCMGJYQWdMU0F4TzF4dUlDQWdJQ0FnSUNCa1pYUmxZM1JsWkVsdVpHVnVkQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhSEp2ZDBWeWNtOXlLSE4wWVhSbExDQW5jbVZ3WldGMElHOW1JR0Z1SUdsdVpHVnVkR0YwYVc5dUlIZHBaSFJvSUdsa1pXNTBhV1pwWlhJbktUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JwWmlBb2FYTmZWMGhKVkVWZlUxQkJRMFVvWTJncEtTQjdYRzRnSUNBZ1pHOGdleUJqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3SUgxY2JpQWdJQ0IzYUdsc1pTQW9hWE5mVjBoSlZFVmZVMUJCUTBVb1kyZ3BLVHRjYmx4dUlDQWdJR2xtSUNoamFDQTlQVDBnTUhneU15OHFJQ01nS2k4cElIdGNiaUFnSUNBZ0lHUnZJSHNnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwT3lCOVhHNGdJQ0FnSUNCM2FHbHNaU0FvSVdselgwVlBUQ2hqYUNrZ0ppWWdLR05vSUNFOVBTQXdLU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnZDJocGJHVWdLR05vSUNFOVBTQXdLU0I3WEc0Z0lDQWdjbVZoWkV4cGJtVkNjbVZoYXloemRHRjBaU2s3WEc0Z0lDQWdjM1JoZEdVdWJHbHVaVWx1WkdWdWRDQTlJREE3WEc1Y2JpQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1WEc0Z0lDQWdkMmhwYkdVZ0tDZ2haR1YwWldOMFpXUkpibVJsYm5RZ2ZId2djM1JoZEdVdWJHbHVaVWx1WkdWdWRDQThJSFJsZUhSSmJtUmxiblFwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ2hqYUNBOVBUMGdNSGd5TUM4cUlGTndZV05sSUNvdktTa2dlMXh1SUNBZ0lDQWdjM1JoZEdVdWJHbHVaVWx1WkdWdWRDc3JPMXh1SUNBZ0lDQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLQ3NyYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doWkdWMFpXTjBaV1JKYm1SbGJuUWdKaVlnYzNSaGRHVXViR2x1WlVsdVpHVnVkQ0ErSUhSbGVIUkpibVJsYm5RcElIdGNiaUFnSUNBZ0lIUmxlSFJKYm1SbGJuUWdQU0J6ZEdGMFpTNXNhVzVsU1c1a1pXNTBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYzE5RlQwd29ZMmdwS1NCN1hHNGdJQ0FnSUNCbGJYQjBlVXhwYm1Wekt5czdYRzRnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QkZibVFnYjJZZ2RHaGxJSE5qWVd4aGNpNWNiaUFnSUNCcFppQW9jM1JoZEdVdWJHbHVaVWx1WkdWdWRDQThJSFJsZUhSSmJtUmxiblFwSUh0Y2JseHVJQ0FnSUNBZ0x5OGdVR1Z5Wm05eWJTQjBhR1VnWTJodmJYQnBibWN1WEc0Z0lDQWdJQ0JwWmlBb1kyaHZiWEJwYm1jZ1BUMDlJRU5JVDAxUVNVNUhYMHRGUlZBcElIdGNiaUFnSUNBZ0lDQWdjM1JoZEdVdWNtVnpkV3gwSUNzOUlHTnZiVzF2Ymk1eVpYQmxZWFFvSjF4Y2JpY3NJR1JwWkZKbFlXUkRiMjUwWlc1MElEOGdNU0FySUdWdGNIUjVUR2x1WlhNZ09pQmxiWEIwZVV4cGJtVnpLVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJodmJYQnBibWNnUFQwOUlFTklUMDFRU1U1SFgwTk1TVkFwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1JwWkZKbFlXUkRiMjUwWlc1MEtTQjdJQzh2SUdrdVpTNGdiMjVzZVNCcFppQjBhR1VnYzJOaGJHRnlJR2x6SUc1dmRDQmxiWEIwZVM1Y2JpQWdJQ0FnSUNBZ0lDQnpkR0YwWlM1eVpYTjFiSFFnS3owZ0oxeGNiaWM3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdRbkpsWVdzZ2RHaHBjeUJnZDJocGJHVmdJR041WTJ4bElHRnVaQ0JuYnlCMGJ5QjBhR1VnWm5WdVkybDBiMjRuY3lCbGNHbHNiMmQxWlM1Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRVp2YkdSbFpDQnpkSGxzWlRvZ2RYTmxJR1poYm1ONUlISjFiR1Z6SUhSdklHaGhibVJzWlNCc2FXNWxJR0p5WldGcmN5NWNiaUFnSUNCcFppQW9abTlzWkdsdVp5a2dlMXh1WEc0Z0lDQWdJQ0F2THlCTWFXNWxjeUJ6ZEdGeWRHbHVaeUIzYVhSb0lIZG9hWFJsSUhOd1lXTmxJR05vWVhKaFkzUmxjbk1nS0cxdmNtVXRhVzVrWlc1MFpXUWdiR2x1WlhNcElHRnlaU0J1YjNRZ1ptOXNaR1ZrTGx4dUlDQWdJQ0FnYVdZZ0tHbHpYMWRJU1ZSRlgxTlFRVU5GS0dOb0tTa2dlMXh1SUNBZ0lDQWdJQ0JoZEUxdmNtVkpibVJsYm5SbFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDOHZJR1Y0WTJWd2RDQm1iM0lnZEdobElHWnBjbk4wSUdOdmJuUmxiblFnYkdsdVpTQW9ZMll1SUVWNFlXMXdiR1VnT0M0eEtWeHVJQ0FnSUNBZ0lDQnpkR0YwWlM1eVpYTjFiSFFnS3owZ1kyOXRiVzl1TG5KbGNHVmhkQ2duWEZ4dUp5d2daR2xrVW1WaFpFTnZiblJsYm5RZ1B5QXhJQ3NnWlcxd2RIbE1hVzVsY3lBNklHVnRjSFI1VEdsdVpYTXBPMXh1WEc0Z0lDQWdJQ0F2THlCRmJtUWdiMllnYlc5eVpTMXBibVJsYm5SbFpDQmliRzlqYXk1Y2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1lYUk5iM0psU1c1a1pXNTBaV1FwSUh0Y2JpQWdJQ0FnSUNBZ1lYUk5iM0psU1c1a1pXNTBaV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnYzNSaGRHVXVjbVZ6ZFd4MElDczlJR052YlcxdmJpNXlaWEJsWVhRb0oxeGNiaWNzSUdWdGNIUjVUR2x1WlhNZ0t5QXhLVHRjYmx4dUlDQWdJQ0FnTHk4Z1NuVnpkQ0J2Ym1VZ2JHbHVaU0JpY21WaGF5QXRJSEJsY21ObGFYWmxJR0Z6SUhSb1pTQnpZVzFsSUd4cGJtVXVYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR1Z0Y0hSNVRHbHVaWE1nUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHUnBaRkpsWVdSRGIyNTBaVzUwS1NCN0lDOHZJR2t1WlM0Z2IyNXNlU0JwWmlCM1pTQm9ZWFpsSUdGc2NtVmhaSGtnY21WaFpDQnpiMjFsSUhOallXeGhjaUJqYjI1MFpXNTBMbHh1SUNBZ0lDQWdJQ0FnSUhOMFlYUmxMbkpsYzNWc2RDQXJQU0FuSUNjN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdMeThnVTJWMlpYSmhiQ0JzYVc1bElHSnlaV0ZyY3lBdElIQmxjbU5sYVhabElHRnpJR1JwWm1abGNtVnVkQ0JzYVc1bGN5NWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lITjBZWFJsTG5KbGMzVnNkQ0FyUFNCamIyMXRiMjR1Y21Wd1pXRjBLQ2RjWEc0bkxDQmxiWEIwZVV4cGJtVnpLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQzh2SUV4cGRHVnlZV3dnYzNSNWJHVTZJR3AxYzNRZ1lXUmtJR1Y0WVdOMElHNTFiV0psY2lCdlppQnNhVzVsSUdKeVpXRnJjeUJpWlhSM1pXVnVJR052Ym5SbGJuUWdiR2x1WlhNdVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQzh2SUV0bFpYQWdZV3hzSUd4cGJtVWdZbkpsWVd0eklHVjRZMlZ3ZENCMGFHVWdhR1ZoWkdWeUlHeHBibVVnWW5KbFlXc3VYRzRnSUNBZ0lDQnpkR0YwWlM1eVpYTjFiSFFnS3owZ1kyOXRiVzl1TG5KbGNHVmhkQ2duWEZ4dUp5d2daR2xrVW1WaFpFTnZiblJsYm5RZ1B5QXhJQ3NnWlcxd2RIbE1hVzVsY3lBNklHVnRjSFI1VEdsdVpYTXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHUnBaRkpsWVdSRGIyNTBaVzUwSUQwZ2RISjFaVHRjYmlBZ0lDQmtaWFJsWTNSbFpFbHVaR1Z1ZENBOUlIUnlkV1U3WEc0Z0lDQWdaVzF3ZEhsTWFXNWxjeUE5SURBN1hHNGdJQ0FnWTJGd2RIVnlaVk4wWVhKMElEMGdjM1JoZEdVdWNHOXphWFJwYjI0N1hHNWNiaUFnSUNCM2FHbHNaU0FvSVdselgwVlBUQ2hqYUNrZ0ppWWdLR05vSUNFOVBTQXdLU2tnZTF4dUlDQWdJQ0FnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR05oY0hSMWNtVlRaV2R0Wlc1MEtITjBZWFJsTENCallYQjBkWEpsVTNSaGNuUXNJSE4wWVhSbExuQnZjMmwwYVc5dUxDQm1ZV3h6WlNrN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RISjFaVHRjYm4xY2JseHVablZ1WTNScGIyNGdjbVZoWkVKc2IyTnJVMlZ4ZFdWdVkyVW9jM1JoZEdVc0lHNXZaR1ZKYm1SbGJuUXBJSHRjYmlBZ2RtRnlJRjlzYVc1bExGeHVJQ0FnSUNBZ1gzUmhaeUFnSUNBZ0lEMGdjM1JoZEdVdWRHRm5MRnh1SUNBZ0lDQWdYMkZ1WTJodmNpQWdJRDBnYzNSaGRHVXVZVzVqYUc5eUxGeHVJQ0FnSUNBZ1gzSmxjM1ZzZENBZ0lEMGdXMTBzWEc0Z0lDQWdJQ0JtYjJ4c2IzZHBibWNzWEc0Z0lDQWdJQ0JrWlhSbFkzUmxaQ0FnUFNCbVlXeHpaU3hjYmlBZ0lDQWdJR05vTzF4dVhHNGdJR2xtSUNoemRHRjBaUzVoYm1Ob2IzSWdJVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQnpkR0YwWlM1aGJtTm9iM0pOWVhCYmMzUmhkR1V1WVc1amFHOXlYU0E5SUY5eVpYTjFiSFE3WEc0Z0lIMWNibHh1SUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb2MzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dVhHNGdJSGRvYVd4bElDaGphQ0FoUFQwZ01Da2dlMXh1WEc0Z0lDQWdhV1lnS0dOb0lDRTlQU0F3ZURKRUx5b2dMU0FxTHlrZ2UxeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabTlzYkc5M2FXNW5JRDBnYzNSaGRHVXVhVzV3ZFhRdVkyaGhja052WkdWQmRDaHpkR0YwWlM1d2IzTnBkR2x2YmlBcklERXBPMXh1WEc0Z0lDQWdhV1lnS0NGcGMxOVhVMTlQVWw5RlQwd29abTlzYkc5M2FXNW5LU2tnZTF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1pHVjBaV04wWldRZ1BTQjBjblZsTzF4dUlDQWdJSE4wWVhSbExuQnZjMmwwYVc5dUt5czdYRzVjYmlBZ0lDQnBaaUFvYzJ0cGNGTmxjR0Z5WVhScGIyNVRjR0ZqWlNoemRHRjBaU3dnZEhKMVpTd2dMVEVwS1NCN1hHNGdJQ0FnSUNCcFppQW9jM1JoZEdVdWJHbHVaVWx1WkdWdWRDQThQU0J1YjJSbFNXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lGOXlaWE4xYkhRdWNIVnphQ2h1ZFd4c0tUdGNiaUFnSUNBZ0lDQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLSE4wWVhSbExuQnZjMmwwYVc5dUtUdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1gyeHBibVVnUFNCemRHRjBaUzVzYVc1bE8xeHVJQ0FnSUdOdmJYQnZjMlZPYjJSbEtITjBZWFJsTENCdWIyUmxTVzVrWlc1MExDQkRUMDVVUlZoVVgwSk1UME5MWDBsT0xDQm1ZV3h6WlN3Z2RISjFaU2s3WEc0Z0lDQWdYM0psYzNWc2RDNXdkWE5vS0hOMFlYUmxMbkpsYzNWc2RDazdYRzRnSUNBZ2MydHBjRk5sY0dGeVlYUnBiMjVUY0dGalpTaHpkR0YwWlN3Z2RISjFaU3dnTFRFcE8xeHVYRzRnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JseHVJQ0FnSUdsbUlDZ29jM1JoZEdVdWJHbHVaU0E5UFQwZ1gyeHBibVVnZkh3Z2MzUmhkR1V1YkdsdVpVbHVaR1Z1ZENBK0lHNXZaR1ZKYm1SbGJuUXBJQ1ltSUNoamFDQWhQVDBnTUNrcElIdGNiaUFnSUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZGlZV1FnYVc1a1pXNTBZWFJwYjI0Z2IyWWdZU0J6WlhGMVpXNWpaU0JsYm5SeWVTY3BPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jM1JoZEdVdWJHbHVaVWx1WkdWdWRDQThJRzV2WkdWSmJtUmxiblFwSUh0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR2xtSUNoa1pYUmxZM1JsWkNrZ2UxeHVJQ0FnSUhOMFlYUmxMblJoWnlBOUlGOTBZV2M3WEc0Z0lDQWdjM1JoZEdVdVlXNWphRzl5SUQwZ1gyRnVZMmh2Y2p0Y2JpQWdJQ0J6ZEdGMFpTNXJhVzVrSUQwZ0ozTmxjWFZsYm1ObEp6dGNiaUFnSUNCemRHRjBaUzV5WlhOMWJIUWdQU0JmY21WemRXeDBPMXh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21WaFpFSnNiMk5yVFdGd2NHbHVaeWh6ZEdGMFpTd2dibTlrWlVsdVpHVnVkQ3dnWm14dmQwbHVaR1Z1ZENrZ2UxeHVJQ0IyWVhJZ1ptOXNiRzkzYVc1bkxGeHVJQ0FnSUNBZ1lXeHNiM2REYjIxd1lXTjBMRnh1SUNBZ0lDQWdYMnhwYm1Vc1hHNGdJQ0FnSUNCZmRHRm5JQ0FnSUNBZ0lDQWdJRDBnYzNSaGRHVXVkR0ZuTEZ4dUlDQWdJQ0FnWDJGdVkyaHZjaUFnSUNBZ0lDQTlJSE4wWVhSbExtRnVZMmh2Y2l4Y2JpQWdJQ0FnSUY5eVpYTjFiSFFnSUNBZ0lDQWdQU0I3ZlN4Y2JpQWdJQ0FnSUc5MlpYSnlhV1JoWW14bFMyVjVjeUE5SUh0OUxGeHVJQ0FnSUNBZ2EyVjVWR0ZuSUNBZ0lDQWdJQ0E5SUc1MWJHd3NYRzRnSUNBZ0lDQnJaWGxPYjJSbElDQWdJQ0FnSUQwZ2JuVnNiQ3hjYmlBZ0lDQWdJSFpoYkhWbFRtOWtaU0FnSUNBZ1BTQnVkV3hzTEZ4dUlDQWdJQ0FnWVhSRmVIQnNhV05wZEV0bGVTQTlJR1poYkhObExGeHVJQ0FnSUNBZ1pHVjBaV04wWldRZ0lDQWdJQ0E5SUdaaGJITmxMRnh1SUNBZ0lDQWdZMmc3WEc1Y2JpQWdhV1lnS0hOMFlYUmxMbUZ1WTJodmNpQWhQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lITjBZWFJsTG1GdVkyaHZjazFoY0Z0emRHRjBaUzVoYm1Ob2IzSmRJRDBnWDNKbGMzVnNkRHRjYmlBZ2ZWeHVYRzRnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdkMmhwYkdVZ0tHTm9JQ0U5UFNBd0tTQjdYRzRnSUNBZ1ptOXNiRzkzYVc1bklEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaUFySURFcE8xeHVJQ0FnSUY5c2FXNWxJRDBnYzNSaGRHVXViR2x1WlRzZ0x5OGdVMkYyWlNCMGFHVWdZM1Z5Y21WdWRDQnNhVzVsTGx4dVhHNGdJQ0FnTHk5Y2JpQWdJQ0F2THlCRmVIQnNhV05wZENCdWIzUmhkR2x2YmlCallYTmxMaUJVYUdWeVpTQmhjbVVnZEhkdklITmxjR0Z5WVhSbElHSnNiMk5yY3pwY2JpQWdJQ0F2THlCbWFYSnpkQ0JtYjNJZ2RHaGxJR3RsZVNBb1pHVnViM1JsWkNCaWVTQmNJajljSWlrZ1lXNWtJSE5sWTI5dVpDQm1iM0lnZEdobElIWmhiSFZsSUNoa1pXNXZkR1ZrSUdKNUlGd2lPbHdpS1Z4dUlDQWdJQzh2WEc0Z0lDQWdhV1lnS0NoamFDQTlQVDBnTUhnelJpOHFJRDhnS2k4Z2ZId2dZMmdnUFQwOUlEQjRNMEV2S2lBNklDb3ZLU0FtSmlCcGMxOVhVMTlQVWw5RlQwd29abTlzYkc5M2FXNW5LU2tnZTF4dVhHNGdJQ0FnSUNCcFppQW9ZMmdnUFQwOUlEQjRNMFl2S2lBL0lDb3ZLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhkRVY0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjM1J2Y21WTllYQndhVzVuVUdGcGNpaHpkR0YwWlN3Z1gzSmxjM1ZzZEN3Z2IzWmxjbkpwWkdGaWJHVkxaWGx6TENCclpYbFVZV2NzSUd0bGVVNXZaR1VzSUc1MWJHd3BPMXh1SUNBZ0lDQWdJQ0FnSUd0bGVWUmhaeUE5SUd0bGVVNXZaR1VnUFNCMllXeDFaVTV2WkdVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdaR1YwWldOMFpXUWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQmhkRVY0Y0d4cFkybDBTMlY1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnWVd4c2IzZERiMjF3WVdOMElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGhkRVY0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDOHZJR2t1WlM0Z01IZ3pRUzhxSURvZ0tpOGdQVDA5SUdOb1lYSmhZM1JsY2lCaFpuUmxjaUIwYUdVZ1pYaHdiR2xqYVhRZ2EyVjVMbHh1SUNBZ0lDQWdJQ0JoZEVWNGNHeHBZMmwwUzJWNUlEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lHRnNiRzkzUTI5dGNHRmpkQ0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvY205M1JYSnliM0lvYzNSaGRHVXNJQ2RwYm1OdmJYQnNaWFJsSUdWNGNHeHBZMmwwSUcxaGNIQnBibWNnY0dGcGNqc2dZU0JyWlhrZ2JtOWtaU0JwY3lCdGFYTnpaV1FuS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2MzUmhkR1V1Y0c5emFYUnBiMjRnS3owZ01UdGNiaUFnSUNBZ0lHTm9JRDBnWm05c2JHOTNhVzVuTzF4dVhHNGdJQ0FnTHk5Y2JpQWdJQ0F2THlCSmJYQnNhV05wZENCdWIzUmhkR2x2YmlCallYTmxMaUJHYkc5M0xYTjBlV3hsSUc1dlpHVWdZWE1nZEdobElHdGxlU0JtYVhKemRDd2dkR2hsYmlCY0lqcGNJaXdnWVc1a0lIUm9aU0IyWVd4MVpTNWNiaUFnSUNBdkwxeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXRjRzl6WlU1dlpHVW9jM1JoZEdVc0lHWnNiM2RKYm1SbGJuUXNJRU5QVGxSRldGUmZSa3hQVjE5UFZWUXNJR1poYkhObExDQjBjblZsS1NrZ2UxeHVYRzRnSUNBZ0lDQnBaaUFvYzNSaGRHVXViR2x1WlNBOVBUMGdYMnhwYm1VcElIdGNiaUFnSUNBZ0lDQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLSE4wWVhSbExuQnZjMmwwYVc5dUtUdGNibHh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hWE5mVjBoSlZFVmZVMUJCUTBVb1kyZ3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtDc3JjM1JoZEdVdWNHOXphWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBd2VETkJMeW9nT2lBcUx5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENnckszTjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYTmZWMU5mVDFKZlJVOU1LR05vS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzZEZjbkp2Y2loemRHRjBaU3dnSjJFZ2QyaHBkR1Z6Y0dGalpTQmphR0Z5WVdOMFpYSWdhWE1nWlhod1pXTjBaV1FnWVdaMFpYSWdkR2hsSUd0bGVTMTJZV3gxWlNCelpYQmhjbUYwYjNJZ2QybDBhR2x1SUdFZ1lteHZZMnNnYldGd2NHbHVaeWNwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGhkRVY0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEc5eVpVMWhjSEJwYm1kUVlXbHlLSE4wWVhSbExDQmZjbVZ6ZFd4MExDQnZkbVZ5Y21sa1lXSnNaVXRsZVhNc0lHdGxlVlJoWnl3Z2EyVjVUbTlrWlN3Z2JuVnNiQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnJaWGxVWVdjZ1BTQnJaWGxPYjJSbElEMGdkbUZzZFdWT2IyUmxJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQmtaWFJsWTNSbFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdZWFJGZUhCc2FXTnBkRXRsZVNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lHRnNiRzkzUTI5dGNHRmpkQ0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0FnSUd0bGVWUmhaeUE5SUhOMFlYUmxMblJoWnp0Y2JpQWdJQ0FnSUNBZ0lDQnJaWGxPYjJSbElEMGdjM1JoZEdVdWNtVnpkV3gwTzF4dVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9aR1YwWldOMFpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBblkyRnVJRzV2ZENCeVpXRmtJR0Z1SUdsdGNHeHBZMmwwSUcxaGNIQnBibWNnY0dGcGNqc2dZU0JqYjJ4dmJpQnBjeUJ0YVhOelpXUW5LVHRjYmx4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lITjBZWFJsTG5SaFp5QTlJRjkwWVdjN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEdVdVlXNWphRzl5SUQwZ1gyRnVZMmh2Y2p0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHNnTHk4Z1MyVmxjQ0IwYUdVZ2NtVnpkV3gwSUc5bUlHQmpiMjF3YjNObFRtOWtaV0F1WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGtaWFJsWTNSbFpDa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmQwVnljbTl5S0hOMFlYUmxMQ0FuWTJGdUlHNXZkQ0J5WldGa0lHRWdZbXh2WTJzZ2JXRndjR2x1WnlCbGJuUnllVHNnWVNCdGRXeDBhV3hwYm1VZ2EyVjVJRzFoZVNCdWIzUWdZbVVnWVc0Z2FXMXdiR2xqYVhRZ2EyVjVKeWs3WEc1Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxMblJoWnlBOUlGOTBZV2M3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxMbUZ1WTJodmNpQTlJRjloYm1Ob2IzSTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsT3lBdkx5QkxaV1Z3SUhSb1pTQnlaWE4xYkhRZ2IyWWdZR052YlhCdmMyVk9iMlJsWUM1Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JpY21WaGF6c2dMeThnVW1WaFpHbHVaeUJwY3lCa2IyNWxMaUJIYnlCMGJ5QjBhR1VnWlhCcGJHOW5kV1V1WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeTljYmlBZ0lDQXZMeUJEYjIxdGIyNGdjbVZoWkdsdVp5QmpiMlJsSUdadmNpQmliM1JvSUdWNGNHeHBZMmwwSUdGdVpDQnBiWEJzYVdOcGRDQnViM1JoZEdsdmJuTXVYRzRnSUNBZ0x5OWNiaUFnSUNCcFppQW9jM1JoZEdVdWJHbHVaU0E5UFQwZ1gyeHBibVVnZkh3Z2MzUmhkR1V1YkdsdVpVbHVaR1Z1ZENBK0lHNXZaR1ZKYm1SbGJuUXBJSHRjYmlBZ0lDQWdJR2xtSUNoamIyMXdiM05sVG05a1pTaHpkR0YwWlN3Z2JtOWtaVWx1WkdWdWRDd2dRMDlPVkVWWVZGOUNURTlEUzE5UFZWUXNJSFJ5ZFdVc0lHRnNiRzkzUTI5dGNHRmpkQ2twSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0YwUlhod2JHbGphWFJMWlhrcElIdGNiaUFnSUNBZ0lDQWdJQ0JyWlhsT2IyUmxJRDBnYzNSaGRHVXVjbVZ6ZFd4ME8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoYkhWbFRtOWtaU0E5SUhOMFlYUmxMbkpsYzNWc2REdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb0lXRjBSWGh3YkdsamFYUkxaWGtwSUh0Y2JpQWdJQ0FnSUNBZ2MzUnZjbVZOWVhCd2FXNW5VR0ZwY2loemRHRjBaU3dnWDNKbGMzVnNkQ3dnYjNabGNuSnBaR0ZpYkdWTFpYbHpMQ0JyWlhsVVlXY3NJR3RsZVU1dlpHVXNJSFpoYkhWbFRtOWtaU2s3WEc0Z0lDQWdJQ0FnSUd0bGVWUmhaeUE5SUd0bGVVNXZaR1VnUFNCMllXeDFaVTV2WkdVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCemEybHdVMlZ3WVhKaGRHbHZibE53WVdObEtITjBZWFJsTENCMGNuVmxMQ0F0TVNrN1hHNGdJQ0FnSUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb2MzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoemRHRjBaUzVzYVc1bFNXNWtaVzUwSUQ0Z2JtOWtaVWx1WkdWdWRDQW1KaUFvWTJnZ0lUMDlJREFwS1NCN1hHNGdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBblltRmtJR2x1WkdWdWRHRjBhVzl1SUc5bUlHRWdiV0Z3Y0dsdVp5QmxiblJ5ZVNjcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2MzUmhkR1V1YkdsdVpVbHVaR1Z1ZENBOElHNXZaR1ZKYm1SbGJuUXBJSHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHZYRzRnSUM4dklFVndhV3h2WjNWbExseHVJQ0F2TDF4dVhHNGdJQzh2SUZOd1pXTnBZV3dnWTJGelpUb2diR0Z6ZENCdFlYQndhVzVuSjNNZ2JtOWtaU0JqYjI1MFlXbHVjeUJ2Ym14NUlIUm9aU0JyWlhrZ2FXNGdaWGh3YkdsamFYUWdibTkwWVhScGIyNHVYRzRnSUdsbUlDaGhkRVY0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnYzNSdmNtVk5ZWEJ3YVc1blVHRnBjaWh6ZEdGMFpTd2dYM0psYzNWc2RDd2diM1psY25KcFpHRmliR1ZMWlhsekxDQnJaWGxVWVdjc0lHdGxlVTV2WkdVc0lHNTFiR3dwTzF4dUlDQjlYRzVjYmlBZ0x5OGdSWGh3YjNObElIUm9aU0J5WlhOMWJIUnBibWNnYldGd2NHbHVaeTVjYmlBZ2FXWWdLR1JsZEdWamRHVmtLU0I3WEc0Z0lDQWdjM1JoZEdVdWRHRm5JRDBnWDNSaFp6dGNiaUFnSUNCemRHRjBaUzVoYm1Ob2IzSWdQU0JmWVc1amFHOXlPMXh1SUNBZ0lITjBZWFJsTG10cGJtUWdQU0FuYldGd2NHbHVaeWM3WEc0Z0lDQWdjM1JoZEdVdWNtVnpkV3gwSUQwZ1gzSmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCa1pYUmxZM1JsWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21WaFpGUmhaMUJ5YjNCbGNuUjVLSE4wWVhSbEtTQjdYRzRnSUhaaGNpQmZjRzl6YVhScGIyNHNYRzRnSUNBZ0lDQnBjMVpsY21KaGRHbHRJRDBnWm1Gc2MyVXNYRzRnSUNBZ0lDQnBjMDVoYldWa0lDQWdJRDBnWm1Gc2MyVXNYRzRnSUNBZ0lDQjBZV2RJWVc1a2JHVXNYRzRnSUNBZ0lDQjBZV2RPWVcxbExGeHVJQ0FnSUNBZ1kyZzdYRzVjYmlBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtITjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JseHVJQ0JwWmlBb1kyZ2dJVDA5SURCNE1qRXZLaUFoSUNvdktTQnlaWFIxY200Z1ptRnNjMlU3WEc1Y2JpQWdhV1lnS0hOMFlYUmxMblJoWnlBaFBUMGdiblZzYkNrZ2UxeHVJQ0FnSUhSb2NtOTNSWEp5YjNJb2MzUmhkR1VzSUNka2RYQnNhV05oZEdsdmJpQnZaaUJoSUhSaFp5QndjbTl3WlhKMGVTY3BPMXh1SUNCOVhHNWNiaUFnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dVhHNGdJR2xtSUNoamFDQTlQVDBnTUhnelF5OHFJRHdnS2k4cElIdGNiaUFnSUNCcGMxWmxjbUpoZEdsdElEMGdkSEoxWlR0Y2JpQWdJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3WEc1Y2JpQWdmU0JsYkhObElHbG1JQ2hqYUNBOVBUMGdNSGd5TVM4cUlDRWdLaThwSUh0Y2JpQWdJQ0JwYzA1aGJXVmtJRDBnZEhKMVpUdGNiaUFnSUNCMFlXZElZVzVrYkdVZ1BTQW5JU0VuTzF4dUlDQWdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2dySzNOMFlYUmxMbkJ2YzJsMGFXOXVLVHRjYmx4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhSaFowaGhibVJzWlNBOUlDY2hKenRjYmlBZ2ZWeHVYRzRnSUY5d2IzTnBkR2x2YmlBOUlITjBZWFJsTG5CdmMybDBhVzl1TzF4dVhHNGdJR2xtSUNocGMxWmxjbUpoZEdsdEtTQjdYRzRnSUNBZ1pHOGdleUJqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3SUgxY2JpQWdJQ0IzYUdsc1pTQW9ZMmdnSVQwOUlEQWdKaVlnWTJnZ0lUMDlJREI0TTBVdktpQStJQ292S1R0Y2JseHVJQ0FnSUdsbUlDaHpkR0YwWlM1d2IzTnBkR2x2YmlBOElITjBZWFJsTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnZEdGblRtRnRaU0E5SUhOMFlYUmxMbWx1Y0hWMExuTnNhV05sS0Y5d2IzTnBkR2x2Yml3Z2MzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dUlDQWdJQ0FnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhSEp2ZDBWeWNtOXlLSE4wWVhSbExDQW5kVzVsZUhCbFkzUmxaQ0JsYm1RZ2IyWWdkR2hsSUhOMGNtVmhiU0IzYVhSb2FXNGdZU0IyWlhKaVlYUnBiU0IwWVdjbktUdGNiaUFnSUNCOVhHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2QyaHBiR1VnS0dOb0lDRTlQU0F3SUNZbUlDRnBjMTlYVTE5UFVsOUZUMHdvWTJncEtTQjdYRzVjYmlBZ0lDQWdJR2xtSUNoamFDQTlQVDBnTUhneU1TOHFJQ0VnS2k4cElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGMwNWhiV1ZrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR0ZuU0dGdVpHeGxJRDBnYzNSaGRHVXVhVzV3ZFhRdWMyeHBZMlVvWDNCdmMybDBhVzl1SUMwZ01Td2djM1JoZEdVdWNHOXphWFJwYjI0Z0t5QXhLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doVUVGVVZFVlNUbDlVUVVkZlNFRk9SRXhGTG5SbGMzUW9kR0ZuU0dGdVpHeGxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNkRmNuSnZjaWh6ZEdGMFpTd2dKMjVoYldWa0lIUmhaeUJvWVc1a2JHVWdZMkZ1Ym05MElHTnZiblJoYVc0Z2MzVmphQ0JqYUdGeVlXTjBaWEp6SnlrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2FYTk9ZVzFsWkNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ1gzQnZjMmwwYVc5dUlEMGdjM1JoZEdVdWNHOXphWFJwYjI0Z0t5QXhPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNSWEp5YjNJb2MzUmhkR1VzSUNkMFlXY2djM1ZtWm1sNElHTmhibTV2ZENCamIyNTBZV2x1SUdWNFkyeGhiV0YwYVc5dUlHMWhjbXR6SnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdZMmdnUFNCemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLQ3NyYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUmhaMDVoYldVZ1BTQnpkR0YwWlM1cGJuQjFkQzV6YkdsalpTaGZjRzl6YVhScGIyNHNJSE4wWVhSbExuQnZjMmwwYVc5dUtUdGNibHh1SUNBZ0lHbG1JQ2hRUVZSVVJWSk9YMFpNVDFkZlNVNUVTVU5CVkU5U1V5NTBaWE4wS0hSaFowNWhiV1VwS1NCN1hHNGdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmRHRm5JSE4xWm1acGVDQmpZVzV1YjNRZ1kyOXVkR0ZwYmlCbWJHOTNJR2x1WkdsallYUnZjaUJqYUdGeVlXTjBaWEp6SnlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2FXWWdLSFJoWjA1aGJXVWdKaVlnSVZCQlZGUkZVazVmVkVGSFgxVlNTUzUwWlhOMEtIUmhaMDVoYldVcEtTQjdYRzRnSUNBZ2RHaHliM2RGY25KdmNpaHpkR0YwWlN3Z0ozUmhaeUJ1WVcxbElHTmhibTV2ZENCamIyNTBZV2x1SUhOMVkyZ2dZMmhoY21GamRHVnljem9nSnlBcklIUmhaMDVoYldVcE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0dselZtVnlZbUYwYVcwcElIdGNiaUFnSUNCemRHRjBaUzUwWVdjZ1BTQjBZV2RPWVcxbE8xeHVYRzRnSUgwZ1pXeHpaU0JwWmlBb1gyaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29jM1JoZEdVdWRHRm5UV0Z3TENCMFlXZElZVzVrYkdVcEtTQjdYRzRnSUNBZ2MzUmhkR1V1ZEdGbklEMGdjM1JoZEdVdWRHRm5UV0Z3VzNSaFowaGhibVJzWlYwZ0t5QjBZV2RPWVcxbE8xeHVYRzRnSUgwZ1pXeHpaU0JwWmlBb2RHRm5TR0Z1Wkd4bElEMDlQU0FuSVNjcElIdGNiaUFnSUNCemRHRjBaUzUwWVdjZ1BTQW5JU2NnS3lCMFlXZE9ZVzFsTzF4dVhHNGdJSDBnWld4elpTQnBaaUFvZEdGblNHRnVaR3hsSUQwOVBTQW5JU0VuS1NCN1hHNGdJQ0FnYzNSaGRHVXVkR0ZuSUQwZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9pY2dLeUIwWVdkT1lXMWxPMXh1WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnZEdoeWIzZEZjbkp2Y2loemRHRjBaU3dnSjNWdVpHVmpiR0Z5WldRZ2RHRm5JR2hoYm1Sc1pTQmNJaWNnS3lCMFlXZElZVzVrYkdVZ0t5QW5YQ0luS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCMGNuVmxPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnlaV0ZrUVc1amFHOXlVSEp2Y0dWeWRIa29jM1JoZEdVcElIdGNiaUFnZG1GeUlGOXdiM05wZEdsdmJpeGNiaUFnSUNBZ0lHTm9PMXh1WEc0Z0lHTm9JRDBnYzNSaGRHVXVhVzV3ZFhRdVkyaGhja052WkdWQmRDaHpkR0YwWlM1d2IzTnBkR2x2YmlrN1hHNWNiaUFnYVdZZ0tHTm9JQ0U5UFNBd2VESTJMeW9nSmlBcUx5a2djbVYwZFhKdUlHWmhiSE5sTzF4dVhHNGdJR2xtSUNoemRHRjBaUzVoYm1Ob2IzSWdJVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQjBhSEp2ZDBWeWNtOXlLSE4wWVhSbExDQW5aSFZ3YkdsallYUnBiMjRnYjJZZ1lXNGdZVzVqYUc5eUlIQnliM0JsY25SNUp5azdYRzRnSUgxY2JseHVJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvS3l0emRHRjBaUzV3YjNOcGRHbHZiaWs3WEc0Z0lGOXdiM05wZEdsdmJpQTlJSE4wWVhSbExuQnZjMmwwYVc5dU8xeHVYRzRnSUhkb2FXeGxJQ2hqYUNBaFBUMGdNQ0FtSmlBaGFYTmZWMU5mVDFKZlJVOU1LR05vS1NBbUppQWhhWE5mUmt4UFYxOUpUa1JKUTBGVVQxSW9ZMmdwS1NCN1hHNGdJQ0FnWTJnZ1BTQnpkR0YwWlM1cGJuQjFkQzVqYUdGeVEyOWtaVUYwS0NzcmMzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSE4wWVhSbExuQnZjMmwwYVc5dUlEMDlQU0JmY0c5emFYUnBiMjRwSUh0Y2JpQWdJQ0IwYUhKdmQwVnljbTl5S0hOMFlYUmxMQ0FuYm1GdFpTQnZaaUJoYmlCaGJtTm9iM0lnYm05a1pTQnRkWE4wSUdOdmJuUmhhVzRnWVhRZ2JHVmhjM1FnYjI1bElHTm9ZWEpoWTNSbGNpY3BPMXh1SUNCOVhHNWNiaUFnYzNSaGRHVXVZVzVqYUc5eUlEMGdjM1JoZEdVdWFXNXdkWFF1YzJ4cFkyVW9YM0J2YzJsMGFXOXVMQ0J6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzRnSUhKbGRIVnliaUIwY25WbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCeVpXRmtRV3hwWVhNb2MzUmhkR1VwSUh0Y2JpQWdkbUZ5SUY5d2IzTnBkR2x2Yml3Z1lXeHBZWE1zWEc0Z0lDQWdJQ0JqYUR0Y2JseHVJQ0JqYUNBOUlITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNHBPMXh1WEc0Z0lHbG1JQ2hqYUNBaFBUMGdNSGd5UVM4cUlDb2dLaThwSUhKbGRIVnliaUJtWVd4elpUdGNibHh1SUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb0t5dHpkR0YwWlM1d2IzTnBkR2x2YmlrN1hHNGdJRjl3YjNOcGRHbHZiaUE5SUhOMFlYUmxMbkJ2YzJsMGFXOXVPMXh1WEc0Z0lIZG9hV3hsSUNoamFDQWhQVDBnTUNBbUppQWhhWE5mVjFOZlQxSmZSVTlNS0dOb0tTQW1KaUFoYVhOZlJreFBWMTlKVGtSSlEwRlVUMUlvWTJncEtTQjdYRzRnSUNBZ1kyZ2dQU0J6ZEdGMFpTNXBibkIxZEM1amFHRnlRMjlrWlVGMEtDc3JjM1JoZEdVdWNHOXphWFJwYjI0cE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0hOMFlYUmxMbkJ2YzJsMGFXOXVJRDA5UFNCZmNHOXphWFJwYjI0cElIdGNiaUFnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmJtRnRaU0J2WmlCaGJpQmhiR2xoY3lCdWIyUmxJRzExYzNRZ1kyOXVkR0ZwYmlCaGRDQnNaV0Z6ZENCdmJtVWdZMmhoY21GamRHVnlKeWs3WEc0Z0lIMWNibHh1SUNCaGJHbGhjeUE5SUhOMFlYUmxMbWx1Y0hWMExuTnNhV05sS0Y5d2IzTnBkR2x2Yml3Z2MzUmhkR1V1Y0c5emFYUnBiMjRwTzF4dVhHNGdJR2xtSUNnaGMzUmhkR1V1WVc1amFHOXlUV0Z3TG1oaGMwOTNibEJ5YjNCbGNuUjVLR0ZzYVdGektTa2dlMXh1SUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZDFibWxrWlc1MGFXWnBaV1FnWVd4cFlYTWdYQ0luSUNzZ1lXeHBZWE1nS3lBblhDSW5LVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUmxMbkpsYzNWc2RDQTlJSE4wWVhSbExtRnVZMmh2Y2sxaGNGdGhiR2xoYzEwN1hHNGdJSE5yYVhCVFpYQmhjbUYwYVc5dVUzQmhZMlVvYzNSaGRHVXNJSFJ5ZFdVc0lDMHhLVHRjYmlBZ2NtVjBkWEp1SUhSeWRXVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnZiWEJ2YzJWT2IyUmxLSE4wWVhSbExDQndZWEpsYm5SSmJtUmxiblFzSUc1dlpHVkRiMjUwWlhoMExDQmhiR3h2ZDFSdlUyVmxheXdnWVd4c2IzZERiMjF3WVdOMEtTQjdYRzRnSUhaaGNpQmhiR3h2ZDBKc2IyTnJVM1I1YkdWekxGeHVJQ0FnSUNBZ1lXeHNiM2RDYkc5amExTmpZV3hoY25Nc1hHNGdJQ0FnSUNCaGJHeHZkMEpzYjJOclEyOXNiR1ZqZEdsdmJuTXNYRzRnSUNBZ0lDQnBibVJsYm5SVGRHRjBkWE1nUFNBeExDQXZMeUF4T2lCMGFHbHpQbkJoY21WdWRDd2dNRG9nZEdocGN6MXdZWEpsYm5Rc0lDMHhPaUIwYUdselBIQmhjbVZ1ZEZ4dUlDQWdJQ0FnWVhST1pYZE1hVzVsSUNBOUlHWmhiSE5sTEZ4dUlDQWdJQ0FnYUdGelEyOXVkR1Z1ZENBOUlHWmhiSE5sTEZ4dUlDQWdJQ0FnZEhsd1pVbHVaR1Y0TEZ4dUlDQWdJQ0FnZEhsd1pWRjFZVzUwYVhSNUxGeHVJQ0FnSUNBZ2RIbHdaU3hjYmlBZ0lDQWdJR1pzYjNkSmJtUmxiblFzWEc0Z0lDQWdJQ0JpYkc5amEwbHVaR1Z1ZER0Y2JseHVJQ0JwWmlBb2MzUmhkR1V1YkdsemRHVnVaWElnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J6ZEdGMFpTNXNhWE4wWlc1bGNpZ25iM0JsYmljc0lITjBZWFJsS1R0Y2JpQWdmVnh1WEc0Z0lITjBZWFJsTG5SaFp5QWdJQ0E5SUc1MWJHdzdYRzRnSUhOMFlYUmxMbUZ1WTJodmNpQTlJRzUxYkd3N1hHNGdJSE4wWVhSbExtdHBibVFnSUNBOUlHNTFiR3c3WEc0Z0lITjBZWFJsTG5KbGMzVnNkQ0E5SUc1MWJHdzdYRzVjYmlBZ1lXeHNiM2RDYkc5amExTjBlV3hsY3lBOUlHRnNiRzkzUW14dlkydFRZMkZzWVhKeklEMGdZV3hzYjNkQ2JHOWphME52Ykd4bFkzUnBiMjV6SUQxY2JpQWdJQ0JEVDA1VVJWaFVYMEpNVDBOTFgwOVZWQ0E5UFQwZ2JtOWtaVU52Ym5SbGVIUWdmSHhjYmlBZ0lDQkRUMDVVUlZoVVgwSk1UME5MWDBsT0lDQTlQVDBnYm05a1pVTnZiblJsZUhRN1hHNWNiaUFnYVdZZ0tHRnNiRzkzVkc5VFpXVnJLU0I3WEc0Z0lDQWdhV1lnS0hOcmFYQlRaWEJoY21GMGFXOXVVM0JoWTJVb2MzUmhkR1VzSUhSeWRXVXNJQzB4S1NrZ2UxeHVJQ0FnSUNBZ1lYUk9aWGRNYVc1bElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ2FXWWdLSE4wWVhSbExteHBibVZKYm1SbGJuUWdQaUJ3WVhKbGJuUkpibVJsYm5RcElIdGNiaUFnSUNBZ0lDQWdhVzVrWlc1MFUzUmhkSFZ6SUQwZ01UdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9jM1JoZEdVdWJHbHVaVWx1WkdWdWRDQTlQVDBnY0dGeVpXNTBTVzVrWlc1MEtTQjdYRzRnSUNBZ0lDQWdJR2x1WkdWdWRGTjBZWFIxY3lBOUlEQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSE4wWVhSbExteHBibVZKYm1SbGJuUWdQQ0J3WVhKbGJuUkpibVJsYm5RcElIdGNiaUFnSUNBZ0lDQWdhVzVrWlc1MFUzUmhkSFZ6SUQwZ0xURTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdhV1lnS0dsdVpHVnVkRk4wWVhSMWN5QTlQVDBnTVNrZ2UxeHVJQ0FnSUhkb2FXeGxJQ2h5WldGa1ZHRm5VSEp2Y0dWeWRIa29jM1JoZEdVcElIeDhJSEpsWVdSQmJtTm9iM0pRY205d1pYSjBlU2h6ZEdGMFpTa3BJSHRjYmlBZ0lDQWdJR2xtSUNoemEybHdVMlZ3WVhKaGRHbHZibE53WVdObEtITjBZWFJsTENCMGNuVmxMQ0F0TVNrcElIdGNiaUFnSUNBZ0lDQWdZWFJPWlhkTWFXNWxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdZV3hzYjNkQ2JHOWphME52Ykd4bFkzUnBiMjV6SUQwZ1lXeHNiM2RDYkc5amExTjBlV3hsY3p0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvYzNSaGRHVXViR2x1WlVsdVpHVnVkQ0ErSUhCaGNtVnVkRWx1WkdWdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdVpHVnVkRk4wWVhSMWN5QTlJREU3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2MzUmhkR1V1YkdsdVpVbHVaR1Z1ZENBOVBUMGdjR0Z5Wlc1MFNXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhVzVrWlc1MFUzUmhkSFZ6SUQwZ01EdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2h6ZEdGMFpTNXNhVzVsU1c1a1pXNTBJRHdnY0dGeVpXNTBTVzVrWlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVc1a1pXNTBVM1JoZEhWeklEMGdMVEU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdGc2JHOTNRbXh2WTJ0RGIyeHNaV04wYVc5dWN5QTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHbG1JQ2hoYkd4dmQwSnNiMk5yUTI5c2JHVmpkR2x2Ym5NcElIdGNiaUFnSUNCaGJHeHZkMEpzYjJOclEyOXNiR1ZqZEdsdmJuTWdQU0JoZEU1bGQweHBibVVnZkh3Z1lXeHNiM2REYjIxd1lXTjBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHbHVaR1Z1ZEZOMFlYUjFjeUE5UFQwZ01TQjhmQ0JEVDA1VVJWaFVYMEpNVDBOTFgwOVZWQ0E5UFQwZ2JtOWtaVU52Ym5SbGVIUXBJSHRjYmlBZ0lDQnBaaUFvUTA5T1ZFVllWRjlHVEU5WFgwbE9JRDA5UFNCdWIyUmxRMjl1ZEdWNGRDQjhmQ0JEVDA1VVJWaFVYMFpNVDFkZlQxVlVJRDA5UFNCdWIyUmxRMjl1ZEdWNGRDa2dlMXh1SUNBZ0lDQWdabXh2ZDBsdVpHVnVkQ0E5SUhCaGNtVnVkRWx1WkdWdWREdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWm14dmQwbHVaR1Z1ZENBOUlIQmhjbVZ1ZEVsdVpHVnVkQ0FySURFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWW14dlkydEpibVJsYm5RZ1BTQnpkR0YwWlM1d2IzTnBkR2x2YmlBdElITjBZWFJsTG14cGJtVlRkR0Z5ZER0Y2JseHVJQ0FnSUdsbUlDaHBibVJsYm5SVGRHRjBkWE1nUFQwOUlERXBJSHRjYmlBZ0lDQWdJR2xtSUNoaGJHeHZkMEpzYjJOclEyOXNiR1ZqZEdsdmJuTWdKaVpjYmlBZ0lDQWdJQ0FnSUNBb2NtVmhaRUpzYjJOclUyVnhkV1Z1WTJVb2MzUmhkR1VzSUdKc2IyTnJTVzVrWlc1MEtTQjhmRnh1SUNBZ0lDQWdJQ0FnSUNCeVpXRmtRbXh2WTJ0TllYQndhVzVuS0hOMFlYUmxMQ0JpYkc5amEwbHVaR1Z1ZEN3Z1pteHZkMGx1WkdWdWRDa3BJSHg4WEc0Z0lDQWdJQ0FnSUNBZ2NtVmhaRVpzYjNkRGIyeHNaV04wYVc5dUtITjBZWFJsTENCbWJHOTNTVzVrWlc1MEtTa2dlMXh1SUNBZ0lDQWdJQ0JvWVhORGIyNTBaVzUwSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnb1lXeHNiM2RDYkc5amExTmpZV3hoY25NZ0ppWWdjbVZoWkVKc2IyTnJVMk5oYkdGeUtITjBZWFJsTENCbWJHOTNTVzVrWlc1MEtTa2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxZV1JUYVc1bmJHVlJkVzkwWldSVFkyRnNZWElvYzNSaGRHVXNJR1pzYjNkSmJtUmxiblFwSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WldGa1JHOTFZbXhsVVhWdmRHVmtVMk5oYkdGeUtITjBZWFJsTENCbWJHOTNTVzVrWlc1MEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdoaGMwTnZiblJsYm5RZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9jbVZoWkVGc2FXRnpLSE4wWVhSbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdoaGMwTnZiblJsYm5RZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hOMFlYUmxMblJoWnlBaFBUMGdiblZzYkNCOGZDQnpkR0YwWlM1aGJtTm9iM0lnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M1JYSnliM0lvYzNSaGRHVXNJQ2RoYkdsaGN5QnViMlJsSUhOb2IzVnNaQ0J1YjNRZ2FHRjJaU0JoYm5rZ2NISnZjR1Z5ZEdsbGN5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEpsWVdSUWJHRnBibE5qWVd4aGNpaHpkR0YwWlN3Z1pteHZkMGx1WkdWdWRDd2dRMDlPVkVWWVZGOUdURTlYWDBsT0lEMDlQU0J1YjJSbFEyOXVkR1Y0ZENrcElIdGNiaUFnSUNBZ0lDQWdJQ0JvWVhORGIyNTBaVzUwSUQwZ2RISjFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h6ZEdGMFpTNTBZV2NnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVhSbExuUmhaeUE5SUNjL0p6dGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnBaaUFvYzNSaGRHVXVZVzVqYUc5eUlDRTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRHVXVZVzVqYUc5eVRXRndXM04wWVhSbExtRnVZMmh2Y2wwZ1BTQnpkR0YwWlM1eVpYTjFiSFE3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dsdVpHVnVkRk4wWVhSMWN5QTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0x5OGdVM0JsWTJsaGJDQmpZWE5sT2lCaWJHOWpheUJ6WlhGMVpXNWpaWE1nWVhKbElHRnNiRzkzWldRZ2RHOGdhR0YyWlNCellXMWxJR2x1WkdWdWRHRjBhVzl1SUd4bGRtVnNJR0Z6SUhSb1pTQndZWEpsYm5RdVhHNGdJQ0FnSUNBdkx5Qm9kSFJ3T2k4dmQzZDNMbmxoYld3dWIzSm5MM053WldNdk1TNHlMM053WldNdWFIUnRiQ05wWkRJM09UazNPRFJjYmlBZ0lDQWdJR2hoYzBOdmJuUmxiblFnUFNCaGJHeHZkMEpzYjJOclEyOXNiR1ZqZEdsdmJuTWdKaVlnY21WaFpFSnNiMk5yVTJWeGRXVnVZMlVvYzNSaGRHVXNJR0pzYjJOclNXNWtaVzUwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCcFppQW9jM1JoZEdVdWRHRm5JQ0U5UFNCdWRXeHNJQ1ltSUhOMFlYUmxMblJoWnlBaFBUMGdKeUVuS1NCN1hHNGdJQ0FnYVdZZ0tITjBZWFJsTG5SaFp5QTlQVDBnSno4bktTQjdYRzRnSUNBZ0lDQm1iM0lnS0hSNWNHVkpibVJsZUNBOUlEQXNJSFI1Y0dWUmRXRnVkR2wwZVNBOUlITjBZWFJsTG1sdGNHeHBZMmwwVkhsd1pYTXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0IwZVhCbFNXNWtaWGdnUENCMGVYQmxVWFZoYm5ScGRIazdYRzRnSUNBZ0lDQWdJQ0FnSUhSNWNHVkpibVJsZUNBclBTQXhLU0I3WEc0Z0lDQWdJQ0FnSUhSNWNHVWdQU0J6ZEdGMFpTNXBiWEJzYVdOcGRGUjVjR1Z6VzNSNWNHVkpibVJsZUYwN1hHNWNiaUFnSUNBZ0lDQWdMeThnU1cxd2JHbGphWFFnY21WemIyeDJhVzVuSUdseklHNXZkQ0JoYkd4dmQyVmtJR1p2Y2lCdWIyNHRjMk5oYkdGeUlIUjVjR1Z6TENCaGJtUWdKejhuWEc0Z0lDQWdJQ0FnSUM4dklHNXZiaTF6Y0dWamFXWnBZeUIwWVdjZ2FYTWdiMjVzZVNCaGMzTnBaMjVsWkNCMGJ5QndiR0ZwYmlCelkyRnNZWEp6TGlCVGJ5d2dhWFFnYVhOdUozUmNiaUFnSUNBZ0lDQWdMeThnYm1WbFpHVmtJSFJ2SUdOb1pXTnJJR1p2Y2lBbmEybHVaQ2NnWTI5dVptOXliV2wwZVM1Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pTNXlaWE52YkhabEtITjBZWFJsTG5KbGMzVnNkQ2twSUhzZ0x5OGdZSE4wWVhSbExuSmxjM1ZzZEdBZ2RYQmtZWFJsWkNCcGJpQnlaWE52YkhabGNpQnBaaUJ0WVhSamFHVmtYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRHVXVjbVZ6ZFd4MElEMGdkSGx3WlM1amIyNXpkSEoxWTNRb2MzUmhkR1V1Y21WemRXeDBLVHRjYmlBZ0lDQWdJQ0FnSUNCemRHRjBaUzUwWVdjZ1BTQjBlWEJsTG5SaFp6dGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2MzUmhkR1V1WVc1amFHOXlJQ0U5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkR0YwWlM1aGJtTm9iM0pOWVhCYmMzUmhkR1V1WVc1amFHOXlYU0E5SUhOMFlYUmxMbkpsYzNWc2REdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0Y5b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tITjBZWFJsTG5SNWNHVk5ZWEFzSUhOMFlYUmxMblJoWnlrcElIdGNiaUFnSUNBZ0lIUjVjR1VnUFNCemRHRjBaUzUwZVhCbFRXRndXM04wWVhSbExuUmhaMTA3WEc1Y2JpQWdJQ0FnSUdsbUlDaHpkR0YwWlM1eVpYTjFiSFFnSVQwOUlHNTFiR3dnSmlZZ2RIbHdaUzVyYVc1a0lDRTlQU0J6ZEdGMFpTNXJhVzVrS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZDFibUZqWTJWd2RHRmliR1VnYm05a1pTQnJhVzVrSUdadmNpQWhQQ2NnS3lCemRHRjBaUzUwWVdjZ0t5QW5QaUIwWVdjN0lHbDBJSE5vYjNWc1pDQmlaU0JjSWljZ0t5QjBlWEJsTG10cGJtUWdLeUFuWENJc0lHNXZkQ0JjSWljZ0t5QnpkR0YwWlM1cmFXNWtJQ3NnSjF3aUp5azdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNnaGRIbHdaUzV5WlhOdmJIWmxLSE4wWVhSbExuSmxjM1ZzZENrcElIc2dMeThnWUhOMFlYUmxMbkpsYzNWc2RHQWdkWEJrWVhSbFpDQnBiaUJ5WlhOdmJIWmxjaUJwWmlCdFlYUmphR1ZrWEc0Z0lDQWdJQ0FnSUhSb2NtOTNSWEp5YjNJb2MzUmhkR1VzSUNkallXNXViM1FnY21WemIyeDJaU0JoSUc1dlpHVWdkMmwwYUNBaFBDY2dLeUJ6ZEdGMFpTNTBZV2NnS3lBblBpQmxlSEJzYVdOcGRDQjBZV2NuS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxMbkpsYzNWc2RDQTlJSFI1Y0dVdVkyOXVjM1J5ZFdOMEtITjBZWFJsTG5KbGMzVnNkQ2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHpkR0YwWlM1aGJtTm9iM0lnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpkR0YwWlM1aGJtTm9iM0pOWVhCYmMzUmhkR1V1WVc1amFHOXlYU0E5SUhOMFlYUmxMbkpsYzNWc2REdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFISnZkMFZ5Y205eUtITjBZWFJsTENBbmRXNXJibTkzYmlCMFlXY2dJVHduSUNzZ2MzUmhkR1V1ZEdGbklDc2dKejRuS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCcFppQW9jM1JoZEdVdWJHbHpkR1Z1WlhJZ0lUMDlJRzUxYkd3cElIdGNiaUFnSUNCemRHRjBaUzVzYVhOMFpXNWxjaWduWTJ4dmMyVW5MQ0J6ZEdGMFpTazdYRzRnSUgxY2JpQWdjbVYwZFhKdUlITjBZWFJsTG5SaFp5QWhQVDBnYm5Wc2JDQjhmQ0FnYzNSaGRHVXVZVzVqYUc5eUlDRTlQU0J1ZFd4c0lIeDhJR2hoYzBOdmJuUmxiblE3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsWVdSRWIyTjFiV1Z1ZENoemRHRjBaU2tnZTF4dUlDQjJZWElnWkc5amRXMWxiblJUZEdGeWRDQTlJSE4wWVhSbExuQnZjMmwwYVc5dUxGeHVJQ0FnSUNBZ1gzQnZjMmwwYVc5dUxGeHVJQ0FnSUNBZ1pHbHlaV04wYVhabFRtRnRaU3hjYmlBZ0lDQWdJR1JwY21WamRHbDJaVUZ5WjNNc1hHNGdJQ0FnSUNCb1lYTkVhWEpsWTNScGRtVnpJRDBnWm1Gc2MyVXNYRzRnSUNBZ0lDQmphRHRjYmx4dUlDQnpkR0YwWlM1MlpYSnphVzl1SUQwZ2JuVnNiRHRjYmlBZ2MzUmhkR1V1WTJobFkydE1hVzVsUW5KbFlXdHpJRDBnYzNSaGRHVXViR1ZuWVdONU8xeHVJQ0J6ZEdGMFpTNTBZV2ROWVhBZ1BTQjdmVHRjYmlBZ2MzUmhkR1V1WVc1amFHOXlUV0Z3SUQwZ2UzMDdYRzVjYmlBZ2QyaHBiR1VnS0NoamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb2MzUmhkR1V1Y0c5emFYUnBiMjRwS1NBaFBUMGdNQ2tnZTF4dUlDQWdJSE5yYVhCVFpYQmhjbUYwYVc5dVUzQmhZMlVvYzNSaGRHVXNJSFJ5ZFdVc0lDMHhLVHRjYmx4dUlDQWdJR05vSUQwZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2h6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzVjYmlBZ0lDQnBaaUFvYzNSaGRHVXViR2x1WlVsdVpHVnVkQ0ErSURBZ2ZId2dZMmdnSVQwOUlEQjRNalV2S2lBbElDb3ZLU0I3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCb1lYTkVhWEpsWTNScGRtVnpJRDBnZEhKMVpUdGNiaUFnSUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb0t5dHpkR0YwWlM1d2IzTnBkR2x2YmlrN1hHNGdJQ0FnWDNCdmMybDBhVzl1SUQwZ2MzUmhkR1V1Y0c5emFYUnBiMjQ3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9ZMmdnSVQwOUlEQWdKaVlnSVdselgxZFRYMDlTWDBWUFRDaGphQ2twSUh0Y2JpQWdJQ0FnSUdOb0lEMGdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENnckszTjBZWFJsTG5CdmMybDBhVzl1S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JrYVhKbFkzUnBkbVZPWVcxbElEMGdjM1JoZEdVdWFXNXdkWFF1YzJ4cFkyVW9YM0J2YzJsMGFXOXVMQ0J6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzRnSUNBZ1pHbHlaV04wYVhabFFYSm5jeUE5SUZ0ZE8xeHVYRzRnSUNBZ2FXWWdLR1JwY21WamRHbDJaVTVoYldVdWJHVnVaM1JvSUR3Z01Ta2dlMXh1SUNBZ0lDQWdkR2h5YjNkRmNuSnZjaWh6ZEdGMFpTd2dKMlJwY21WamRHbDJaU0J1WVcxbElHMTFjM1FnYm05MElHSmxJR3hsYzNNZ2RHaGhiaUJ2Ym1VZ1kyaGhjbUZqZEdWeUlHbHVJR3hsYm1kMGFDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIZG9hV3hsSUNoamFDQWhQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2QyaHBiR1VnS0dselgxZElTVlJGWDFOUVFVTkZLR05vS1NrZ2UxeHVJQ0FnSUNBZ0lDQmphQ0E5SUhOMFlYUmxMbWx1Y0hWMExtTm9ZWEpEYjJSbFFYUW9LeXR6ZEdGMFpTNXdiM05wZEdsdmJpazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoamFDQTlQVDBnTUhneU15OHFJQ01nS2k4cElIdGNiaUFnSUNBZ0lDQWdaRzhnZXlCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb0t5dHpkR0YwWlM1d2IzTnBkR2x2YmlrN0lIMWNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tHTm9JQ0U5UFNBd0lDWW1JQ0ZwYzE5RlQwd29ZMmdwS1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaHBjMTlGVDB3b1kyZ3BLU0JpY21WaGF6dGNibHh1SUNBZ0lDQWdYM0J2YzJsMGFXOXVJRDBnYzNSaGRHVXVjRzl6YVhScGIyNDdYRzVjYmlBZ0lDQWdJSGRvYVd4bElDaGphQ0FoUFQwZ01DQW1KaUFoYVhOZlYxTmZUMUpmUlU5TUtHTm9LU2tnZTF4dUlDQWdJQ0FnSUNCamFDQTlJSE4wWVhSbExtbHVjSFYwTG1Ob1lYSkRiMlJsUVhRb0t5dHpkR0YwWlM1d2IzTnBkR2x2YmlrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHUnBjbVZqZEdsMlpVRnlaM011Y0hWemFDaHpkR0YwWlM1cGJuQjFkQzV6YkdsalpTaGZjRzl6YVhScGIyNHNJSE4wWVhSbExuQnZjMmwwYVc5dUtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR05vSUNFOVBTQXdLU0J5WldGa1RHbHVaVUp5WldGcktITjBZWFJsS1R0Y2JseHVJQ0FnSUdsbUlDaGZhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hrYVhKbFkzUnBkbVZJWVc1a2JHVnljeXdnWkdseVpXTjBhWFpsVG1GdFpTa3BJSHRjYmlBZ0lDQWdJR1JwY21WamRHbDJaVWhoYm1Sc1pYSnpXMlJwY21WamRHbDJaVTVoYldWZEtITjBZWFJsTENCa2FYSmxZM1JwZG1WT1lXMWxMQ0JrYVhKbFkzUnBkbVZCY21kektUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdoeWIzZFhZWEp1YVc1bktITjBZWFJsTENBbmRXNXJibTkzYmlCa2IyTjFiV1Z1ZENCa2FYSmxZM1JwZG1VZ1hDSW5JQ3NnWkdseVpXTjBhWFpsVG1GdFpTQXJJQ2RjSWljcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lITnJhWEJUWlhCaGNtRjBhVzl1VTNCaFkyVW9jM1JoZEdVc0lIUnlkV1VzSUMweEtUdGNibHh1SUNCcFppQW9jM1JoZEdVdWJHbHVaVWx1WkdWdWRDQTlQVDBnTUNBbUpseHVJQ0FnSUNBZ2MzUmhkR1V1YVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2h6ZEdGMFpTNXdiM05wZEdsdmJpa2dJQ0FnSUQwOVBTQXdlREpFTHlvZ0xTQXFMeUFtSmx4dUlDQWdJQ0FnYzNSaGRHVXVhVzV3ZFhRdVkyaGhja052WkdWQmRDaHpkR0YwWlM1d2IzTnBkR2x2YmlBcklERXBJRDA5UFNBd2VESkVMeW9nTFNBcUx5QW1KbHh1SUNBZ0lDQWdjM1JoZEdVdWFXNXdkWFF1WTJoaGNrTnZaR1ZCZENoemRHRjBaUzV3YjNOcGRHbHZiaUFySURJcElEMDlQU0F3ZURKRUx5b2dMU0FxTHlrZ2UxeHVJQ0FnSUhOMFlYUmxMbkJ2YzJsMGFXOXVJQ3M5SURNN1hHNGdJQ0FnYzJ0cGNGTmxjR0Z5WVhScGIyNVRjR0ZqWlNoemRHRjBaU3dnZEhKMVpTd2dMVEVwTzF4dVhHNGdJSDBnWld4elpTQnBaaUFvYUdGelJHbHlaV04wYVhabGN5a2dlMXh1SUNBZ0lIUm9jbTkzUlhKeWIzSW9jM1JoZEdVc0lDZGthWEpsWTNScGRtVnpJR1Z1WkNCdFlYSnJJR2x6SUdWNGNHVmpkR1ZrSnlrN1hHNGdJSDFjYmx4dUlDQmpiMjF3YjNObFRtOWtaU2h6ZEdGMFpTd2djM1JoZEdVdWJHbHVaVWx1WkdWdWRDQXRJREVzSUVOUFRsUkZXRlJmUWt4UFEwdGZUMVZVTENCbVlXeHpaU3dnZEhKMVpTazdYRzRnSUhOcmFYQlRaWEJoY21GMGFXOXVVM0JoWTJVb2MzUmhkR1VzSUhSeWRXVXNJQzB4S1R0Y2JseHVJQ0JwWmlBb2MzUmhkR1V1WTJobFkydE1hVzVsUW5KbFlXdHpJQ1ltWEc0Z0lDQWdJQ0JRUVZSVVJWSk9YMDVQVGw5QlUwTkpTVjlNU1U1RlgwSlNSVUZMVXk1MFpYTjBLSE4wWVhSbExtbHVjSFYwTG5Oc2FXTmxLR1J2WTNWdFpXNTBVM1JoY25Rc0lITjBZWFJsTG5CdmMybDBhVzl1S1NrcElIdGNiaUFnSUNCMGFISnZkMWRoY201cGJtY29jM1JoZEdVc0lDZHViMjR0UVZORFNVa2diR2x1WlNCaWNtVmhhM01nWVhKbElHbHVkR1Z5Y0hKbGRHVmtJR0Z6SUdOdmJuUmxiblFuS1R0Y2JpQWdmVnh1WEc0Z0lITjBZWFJsTG1SdlkzVnRaVzUwY3k1d2RYTm9LSE4wWVhSbExuSmxjM1ZzZENrN1hHNWNiaUFnYVdZZ0tITjBZWFJsTG5CdmMybDBhVzl1SUQwOVBTQnpkR0YwWlM1c2FXNWxVM1JoY25RZ0ppWWdkR1Z6ZEVSdlkzVnRaVzUwVTJWd1lYSmhkRzl5S0hOMFlYUmxLU2tnZTF4dVhHNGdJQ0FnYVdZZ0tITjBZWFJsTG1sdWNIVjBMbU5vWVhKRGIyUmxRWFFvYzNSaGRHVXVjRzl6YVhScGIyNHBJRDA5UFNBd2VESkZMeW9nTGlBcUx5a2dlMXh1SUNBZ0lDQWdjM1JoZEdVdWNHOXphWFJwYjI0Z0t6MGdNenRjYmlBZ0lDQWdJSE5yYVhCVFpYQmhjbUYwYVc5dVUzQmhZMlVvYzNSaGRHVXNJSFJ5ZFdVc0lDMHhLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlBZ2FXWWdLSE4wWVhSbExuQnZjMmwwYVc5dUlEd2dLSE4wWVhSbExteGxibWQwYUNBdElERXBLU0I3WEc0Z0lDQWdkR2h5YjNkRmNuSnZjaWh6ZEdGMFpTd2dKMlZ1WkNCdlppQjBhR1VnYzNSeVpXRnRJRzl5SUdFZ1pHOWpkVzFsYm5RZ2MyVndZWEpoZEc5eUlHbHpJR1Y0Y0dWamRHVmtKeWs3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVPMXh1SUNCOVhHNTlYRzVjYmx4dVpuVnVZM1JwYjI0Z2JHOWhaRVJ2WTNWdFpXNTBjeWhwYm5CMWRDd2diM0IwYVc5dWN5a2dlMXh1SUNCcGJuQjFkQ0E5SUZOMGNtbHVaeWhwYm5CMWRDazdYRzRnSUc5d2RHbHZibk1nUFNCdmNIUnBiMjV6SUh4OElIdDlPMXh1WEc0Z0lHbG1JQ2hwYm5CMWRDNXNaVzVuZEdnZ0lUMDlJREFwSUh0Y2JseHVJQ0FnSUM4dklFRmtaQ0IwWVdsc2FXNW5JR0JjWEc1Z0lHbG1JRzV2ZENCbGVHbHpkSE5jYmlBZ0lDQnBaaUFvYVc1d2RYUXVZMmhoY2tOdlpHVkJkQ2hwYm5CMWRDNXNaVzVuZEdnZ0xTQXhLU0FoUFQwZ01IZ3dRUzhxSUV4R0lDb3ZJQ1ltWEc0Z0lDQWdJQ0FnSUdsdWNIVjBMbU5vWVhKRGIyUmxRWFFvYVc1d2RYUXViR1Z1WjNSb0lDMGdNU2tnSVQwOUlEQjRNRVF2S2lCRFVpQXFMeWtnZTF4dUlDQWdJQ0FnYVc1d2RYUWdLejBnSjF4Y2JpYzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdVM1J5YVhBZ1FrOU5YRzRnSUNBZ2FXWWdLR2x1Y0hWMExtTm9ZWEpEYjJSbFFYUW9NQ2tnUFQwOUlEQjRSa1ZHUmlrZ2UxeHVJQ0FnSUNBZ2FXNXdkWFFnUFNCcGJuQjFkQzV6YkdsalpTZ3hLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0IyWVhJZ2MzUmhkR1VnUFNCdVpYY2dVM1JoZEdVb2FXNXdkWFFzSUc5d2RHbHZibk1wTzF4dVhHNGdJQzh2SUZWelpTQXdJR0Z6SUhOMGNtbHVaeUIwWlhKdGFXNWhkRzl5TGlCVWFHRjBJSE5wWjI1cFptbGpZVzUwYkhrZ2MybHRjR3hwWm1sbGN5QmliM1Z1WkhNZ1kyaGxZMnN1WEc0Z0lITjBZWFJsTG1sdWNIVjBJQ3M5SUNkY1hEQW5PMXh1WEc0Z0lIZG9hV3hsSUNoemRHRjBaUzVwYm5CMWRDNWphR0Z5UTI5a1pVRjBLSE4wWVhSbExuQnZjMmwwYVc5dUtTQTlQVDBnTUhneU1DOHFJRk53WVdObElDb3ZLU0I3WEc0Z0lDQWdjM1JoZEdVdWJHbHVaVWx1WkdWdWRDQXJQU0F4TzF4dUlDQWdJSE4wWVhSbExuQnZjMmwwYVc5dUlDczlJREU3WEc0Z0lIMWNibHh1SUNCM2FHbHNaU0FvYzNSaGRHVXVjRzl6YVhScGIyNGdQQ0FvYzNSaGRHVXViR1Z1WjNSb0lDMGdNU2twSUh0Y2JpQWdJQ0J5WldGa1JHOWpkVzFsYm5Rb2MzUmhkR1VwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhOMFlYUmxMbVJ2WTNWdFpXNTBjenRjYm4xY2JseHVYRzVtZFc1amRHbHZiaUJzYjJGa1FXeHNLR2x1Y0hWMExDQnBkR1Z5WVhSdmNpd2diM0IwYVc5dWN5a2dlMXh1SUNCMllYSWdaRzlqZFcxbGJuUnpJRDBnYkc5aFpFUnZZM1Z0Wlc1MGN5aHBibkIxZEN3Z2IzQjBhVzl1Y3lrc0lHbHVaR1Y0TENCc1pXNW5kR2c3WEc1Y2JpQWdabTl5SUNocGJtUmxlQ0E5SURBc0lHeGxibWQwYUNBOUlHUnZZM1Z0Wlc1MGN5NXNaVzVuZEdnN0lHbHVaR1Y0SUR3Z2JHVnVaM1JvT3lCcGJtUmxlQ0FyUFNBeEtTQjdYRzRnSUNBZ2FYUmxjbUYwYjNJb1pHOWpkVzFsYm5SelcybHVaR1Y0WFNrN1hHNGdJSDFjYm4xY2JseHVYRzVtZFc1amRHbHZiaUJzYjJGa0tHbHVjSFYwTENCdmNIUnBiMjV6S1NCN1hHNGdJSFpoY2lCa2IyTjFiV1Z1ZEhNZ1BTQnNiMkZrUkc5amRXMWxiblJ6S0dsdWNIVjBMQ0J2Y0hScGIyNXpLVHRjYmx4dUlDQnBaaUFvWkc5amRXMWxiblJ6TG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDOHFaWE5zYVc1MExXUnBjMkZpYkdVZ2JtOHRkVzVrWldacGJtVmtLaTljYmlBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0I5SUdWc2MyVWdhV1lnS0dSdlkzVnRaVzUwY3k1c1pXNW5kR2dnUFQwOUlERXBJSHRjYmlBZ0lDQnlaWFIxY200Z1pHOWpkVzFsYm5Seld6QmRPMXh1SUNCOVhHNGdJSFJvY205M0lHNWxkeUJaUVUxTVJYaGpaWEIwYVc5dUtDZGxlSEJsWTNSbFpDQmhJSE5wYm1kc1pTQmtiMk4xYldWdWRDQnBiaUIwYUdVZ2MzUnlaV0Z0TENCaWRYUWdabTkxYm1RZ2JXOXlaU2NwTzF4dWZWeHVYRzVjYm1aMWJtTjBhVzl1SUhOaFptVk1iMkZrUVd4c0tHbHVjSFYwTENCdmRYUndkWFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdiRzloWkVGc2JDaHBibkIxZEN3Z2IzVjBjSFYwTENCamIyMXRiMjR1WlhoMFpXNWtLSHNnYzJOb1pXMWhPaUJFUlVaQlZVeFVYMU5CUmtWZlUwTklSVTFCSUgwc0lHOXdkR2x2Ym5NcEtUdGNibjFjYmx4dVhHNW1kVzVqZEdsdmJpQnpZV1psVEc5aFpDaHBibkIxZEN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0J5WlhSMWNtNGdiRzloWkNocGJuQjFkQ3dnWTI5dGJXOXVMbVY0ZEdWdVpDaDdJSE5qYUdWdFlUb2dSRVZHUVZWTVZGOVRRVVpGWDFORFNFVk5RU0I5TENCdmNIUnBiMjV6S1NrN1hHNTlYRzVjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE11Ykc5aFpFRnNiQ0FnSUNBZ1BTQnNiMkZrUVd4c08xeHViVzlrZFd4bExtVjRjRzl5ZEhNdWJHOWhaQ0FnSUNBZ0lDQWdQU0JzYjJGa08xeHViVzlrZFd4bExtVjRjRzl5ZEhNdWMyRm1aVXh2WVdSQmJHd2dQU0J6WVdabFRHOWhaRUZzYkR0Y2JtMXZaSFZzWlM1bGVIQnZjblJ6TG5OaFptVk1iMkZrSUNBZ0lEMGdjMkZtWlV4dllXUTdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmx4dWRtRnlJR052YlcxdmJpQTlJSEpsY1hWcGNtVW9KeTR2WTI5dGJXOXVKeWs3WEc1Y2JseHVablZ1WTNScGIyNGdUV0Z5YXlodVlXMWxMQ0JpZFdabVpYSXNJSEJ2YzJsMGFXOXVMQ0JzYVc1bExDQmpiMngxYlc0cElIdGNiaUFnZEdocGN5NXVZVzFsSUNBZ0lDQTlJRzVoYldVN1hHNGdJSFJvYVhNdVluVm1abVZ5SUNBZ1BTQmlkV1ptWlhJN1hHNGdJSFJvYVhNdWNHOXphWFJwYjI0Z1BTQndiM05wZEdsdmJqdGNiaUFnZEdocGN5NXNhVzVsSUNBZ0lDQTlJR3hwYm1VN1hHNGdJSFJvYVhNdVkyOXNkVzF1SUNBZ1BTQmpiMngxYlc0N1hHNTlYRzVjYmx4dVRXRnlheTV3Y205MGIzUjVjR1V1WjJWMFUyNXBjSEJsZENBOUlHWjFibU4wYVc5dUlHZGxkRk51YVhCd1pYUW9hVzVrWlc1MExDQnRZWGhNWlc1bmRHZ3BJSHRjYmlBZ2RtRnlJR2hsWVdRc0lITjBZWEowTENCMFlXbHNMQ0JsYm1Rc0lITnVhWEJ3WlhRN1hHNWNiaUFnYVdZZ0tDRjBhR2x6TG1KMVptWmxjaWtnY21WMGRYSnVJRzUxYkd3N1hHNWNiaUFnYVc1a1pXNTBJRDBnYVc1a1pXNTBJSHg4SURRN1hHNGdJRzFoZUV4bGJtZDBhQ0E5SUcxaGVFeGxibWQwYUNCOGZDQTNOVHRjYmx4dUlDQm9aV0ZrSUQwZ0p5YzdYRzRnSUhOMFlYSjBJRDBnZEdocGN5NXdiM05wZEdsdmJqdGNibHh1SUNCM2FHbHNaU0FvYzNSaGNuUWdQaUF3SUNZbUlDZGNYSGd3TUZ4Y2NseGNibHhjZURnMVhGeDFNakF5T0Z4Y2RUSXdNamtuTG1sdVpHVjRUMllvZEdocGN5NWlkV1ptWlhJdVkyaGhja0YwS0hOMFlYSjBJQzBnTVNrcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUhOMFlYSjBJQzA5SURFN1hHNGdJQ0FnYVdZZ0tIUm9hWE11Y0c5emFYUnBiMjRnTFNCemRHRnlkQ0ErSUNodFlYaE1aVzVuZEdnZ0x5QXlJQzBnTVNrcElIdGNiaUFnSUNBZ0lHaGxZV1FnUFNBbklDNHVMaUFuTzF4dUlDQWdJQ0FnYzNSaGNuUWdLejBnTlR0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSFJoYVd3Z1BTQW5KenRjYmlBZ1pXNWtJRDBnZEdocGN5NXdiM05wZEdsdmJqdGNibHh1SUNCM2FHbHNaU0FvWlc1a0lEd2dkR2hwY3k1aWRXWm1aWEl1YkdWdVozUm9JQ1ltSUNkY1hIZ3dNRnhjY2x4Y2JseGNlRGcxWEZ4MU1qQXlPRnhjZFRJd01qa25MbWx1WkdWNFQyWW9kR2hwY3k1aWRXWm1aWEl1WTJoaGNrRjBLR1Z1WkNrcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUdWdVpDQXJQU0F4TzF4dUlDQWdJR2xtSUNobGJtUWdMU0IwYUdsekxuQnZjMmwwYVc5dUlENGdLRzFoZUV4bGJtZDBhQ0F2SURJZ0xTQXhLU2tnZTF4dUlDQWdJQ0FnZEdGcGJDQTlJQ2NnTGk0dUlDYzdYRzRnSUNBZ0lDQmxibVFnTFQwZ05UdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhOdWFYQndaWFFnUFNCMGFHbHpMbUoxWm1abGNpNXpiR2xqWlNoemRHRnlkQ3dnWlc1a0tUdGNibHh1SUNCeVpYUjFjbTRnWTI5dGJXOXVMbkpsY0dWaGRDZ25JQ2NzSUdsdVpHVnVkQ2tnS3lCb1pXRmtJQ3NnYzI1cGNIQmxkQ0FySUhSaGFXd2dLeUFuWEZ4dUp5QXJYRzRnSUNBZ0lDQWdJQ0JqYjIxdGIyNHVjbVZ3WldGMEtDY2dKeXdnYVc1a1pXNTBJQ3NnZEdocGN5NXdiM05wZEdsdmJpQXRJSE4wWVhKMElDc2dhR1ZoWkM1c1pXNW5kR2dwSUNzZ0oxNG5PMXh1ZlR0Y2JseHVYRzVOWVhKckxuQnliM1J2ZEhsd1pTNTBiMU4wY21sdVp5QTlJR1oxYm1OMGFXOXVJSFJ2VTNSeWFXNW5LR052YlhCaFkzUXBJSHRjYmlBZ2RtRnlJSE51YVhCd1pYUXNJSGRvWlhKbElEMGdKeWM3WEc1Y2JpQWdhV1lnS0hSb2FYTXVibUZ0WlNrZ2UxeHVJQ0FnSUhkb1pYSmxJQ3M5SUNkcGJpQmNJaWNnS3lCMGFHbHpMbTVoYldVZ0t5QW5YQ0lnSnp0Y2JpQWdmVnh1WEc0Z0lIZG9aWEpsSUNzOUlDZGhkQ0JzYVc1bElDY2dLeUFvZEdocGN5NXNhVzVsSUNzZ01Ta2dLeUFuTENCamIyeDFiVzRnSnlBcklDaDBhR2x6TG1OdmJIVnRiaUFySURFcE8xeHVYRzRnSUdsbUlDZ2hZMjl0Y0dGamRDa2dlMXh1SUNBZ0lITnVhWEJ3WlhRZ1BTQjBhR2x6TG1kbGRGTnVhWEJ3WlhRb0tUdGNibHh1SUNBZ0lHbG1JQ2h6Ym1sd2NHVjBLU0I3WEc0Z0lDQWdJQ0IzYUdWeVpTQXJQU0FuT2x4Y2JpY2dLeUJ6Ym1sd2NHVjBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQjNhR1Z5WlR0Y2JuMDdYRzVjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCTllYSnJPMXh1SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc0dkttVnpiR2x1ZEMxa2FYTmhZbXhsSUcxaGVDMXNaVzRxTDF4dVhHNTJZWElnWTI5dGJXOXVJQ0FnSUNBZ0lDQTlJSEpsY1hWcGNtVW9KeTR2WTI5dGJXOXVKeWs3WEc1MllYSWdXVUZOVEVWNFkyVndkR2x2YmlBOUlISmxjWFZwY21Vb0p5NHZaWGhqWlhCMGFXOXVKeWs3WEc1MllYSWdWSGx3WlNBZ0lDQWdJQ0FnSUNBOUlISmxjWFZwY21Vb0p5NHZkSGx3WlNjcE8xeHVYRzVjYm1aMWJtTjBhVzl1SUdOdmJYQnBiR1ZNYVhOMEtITmphR1Z0WVN3Z2JtRnRaU3dnY21WemRXeDBLU0I3WEc0Z0lIWmhjaUJsZUdOc2RXUmxJRDBnVzEwN1hHNWNiaUFnYzJOb1pXMWhMbWx1WTJ4MVpHVXVabTl5UldGamFDaG1kVzVqZEdsdmJpQW9hVzVqYkhWa1pXUlRZMmhsYldFcElIdGNiaUFnSUNCeVpYTjFiSFFnUFNCamIyMXdhV3hsVEdsemRDaHBibU5zZFdSbFpGTmphR1Z0WVN3Z2JtRnRaU3dnY21WemRXeDBLVHRjYmlBZ2ZTazdYRzVjYmlBZ2MyTm9aVzFoVzI1aGJXVmRMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLR04xY25KbGJuUlVlWEJsS1NCN1hHNGdJQ0FnY21WemRXeDBMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLSEJ5WlhacGIzVnpWSGx3WlN3Z2NISmxkbWx2ZFhOSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIQnlaWFpwYjNWelZIbHdaUzUwWVdjZ1BUMDlJR04xY25KbGJuUlVlWEJsTG5SaFp5a2dlMXh1SUNBZ0lDQWdJQ0JsZUdOc2RXUmxMbkIxYzJnb2NISmxkbWx2ZFhOSmJtUmxlQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J5WlhOMWJIUXVjSFZ6YUNoamRYSnlaVzUwVkhsd1pTazdYRzRnSUgwcE8xeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUXVabWxzZEdWeUtHWjFibU4wYVc5dUlDaDBlWEJsTENCcGJtUmxlQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmxlR05zZFdSbExtbHVaR1Y0VDJZb2FXNWtaWGdwSUQwOVBTQXRNVHRjYmlBZ2ZTazdYRzU5WEc1Y2JseHVablZ1WTNScGIyNGdZMjl0Y0dsc1pVMWhjQ2d2S2lCc2FYTjBjeTR1TGlBcUx5a2dlMXh1SUNCMllYSWdjbVZ6ZFd4MElEMGdlMzBzSUdsdVpHVjRMQ0JzWlc1bmRHZzdYRzVjYmlBZ1puVnVZM1JwYjI0Z1kyOXNiR1ZqZEZSNWNHVW9kSGx3WlNrZ2UxeHVJQ0FnSUhKbGMzVnNkRnQwZVhCbExuUmhaMTBnUFNCMGVYQmxPMXh1SUNCOVhHNWNiaUFnWm05eUlDaHBibVJsZUNBOUlEQXNJR3hsYm1kMGFDQTlJR0Z5WjNWdFpXNTBjeTVzWlc1bmRHZzdJR2x1WkdWNElEd2diR1Z1WjNSb095QnBibVJsZUNBclBTQXhLU0I3WEc0Z0lDQWdZWEpuZFcxbGJuUnpXMmx1WkdWNFhTNW1iM0pGWVdOb0tHTnZiR3hsWTNSVWVYQmxLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JseHVablZ1WTNScGIyNGdVMk5vWlcxaEtHUmxabWx1YVhScGIyNHBJSHRjYmlBZ2RHaHBjeTVwYm1Oc2RXUmxJQ0E5SUdSbFptbHVhWFJwYjI0dWFXNWpiSFZrWlNBZ2ZId2dXMTA3WEc0Z0lIUm9hWE11YVcxd2JHbGphWFFnUFNCa1pXWnBibWwwYVc5dUxtbHRjR3hwWTJsMElIeDhJRnRkTzF4dUlDQjBhR2x6TG1WNGNHeHBZMmwwSUQwZ1pHVm1hVzVwZEdsdmJpNWxlSEJzYVdOcGRDQjhmQ0JiWFR0Y2JseHVJQ0IwYUdsekxtbHRjR3hwWTJsMExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tIUjVjR1VwSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaUzVzYjJGa1MybHVaQ0FtSmlCMGVYQmxMbXh2WVdSTGFXNWtJQ0U5UFNBbmMyTmhiR0Z5SnlrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGbEJUVXhGZUdObGNIUnBiMjRvSjFSb1pYSmxJR2x6SUdFZ2JtOXVMWE5qWVd4aGNpQjBlWEJsSUdsdUlIUm9aU0JwYlhCc2FXTnBkQ0JzYVhOMElHOW1JR0VnYzJOb1pXMWhMaUJKYlhCc2FXTnBkQ0J5WlhOdmJIWnBibWNnYjJZZ2MzVmphQ0IwZVhCbGN5QnBjeUJ1YjNRZ2MzVndjRzl5ZEdWa0xpY3BPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNWNiaUFnZEdocGN5NWpiMjF3YVd4bFpFbHRjR3hwWTJsMElEMGdZMjl0Y0dsc1pVeHBjM1FvZEdocGN5d2dKMmx0Y0d4cFkybDBKeXdnVzEwcE8xeHVJQ0IwYUdsekxtTnZiWEJwYkdWa1JYaHdiR2xqYVhRZ1BTQmpiMjF3YVd4bFRHbHpkQ2gwYUdsekxDQW5aWGh3YkdsamFYUW5MQ0JiWFNrN1hHNGdJSFJvYVhNdVkyOXRjR2xzWldSVWVYQmxUV0Z3SUNBOUlHTnZiWEJwYkdWTllYQW9kR2hwY3k1amIyMXdhV3hsWkVsdGNHeHBZMmwwTENCMGFHbHpMbU52YlhCcGJHVmtSWGh3YkdsamFYUXBPMXh1ZlZ4dVhHNWNibE5qYUdWdFlTNUVSVVpCVlV4VUlEMGdiblZzYkR0Y2JseHVYRzVUWTJobGJXRXVZM0psWVhSbElEMGdablZ1WTNScGIyNGdZM0psWVhSbFUyTm9aVzFoS0NrZ2UxeHVJQ0IyWVhJZ2MyTm9aVzFoY3l3Z2RIbHdaWE03WEc1Y2JpQWdjM2RwZEdOb0lDaGhjbWQxYldWdWRITXViR1Z1WjNSb0tTQjdYRzRnSUNBZ1kyRnpaU0F4T2x4dUlDQWdJQ0FnYzJOb1pXMWhjeUE5SUZOamFHVnRZUzVFUlVaQlZVeFVPMXh1SUNBZ0lDQWdkSGx3WlhNZ1BTQmhjbWQxYldWdWRITmJNRjA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNibHh1SUNBZ0lHTmhjMlVnTWpwY2JpQWdJQ0FnSUhOamFHVnRZWE1nUFNCaGNtZDFiV1Z1ZEhOYk1GMDdYRzRnSUNBZ0lDQjBlWEJsY3lBOUlHRnlaM1Z0Wlc1MGMxc3hYVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCWlFVMU1SWGhqWlhCMGFXOXVLQ2RYY205dVp5QnVkVzFpWlhJZ2IyWWdZWEpuZFcxbGJuUnpJR1p2Y2lCVFkyaGxiV0V1WTNKbFlYUmxJR1oxYm1OMGFXOXVKeWs3WEc0Z0lIMWNibHh1SUNCelkyaGxiV0Z6SUQwZ1kyOXRiVzl1TG5SdlFYSnlZWGtvYzJOb1pXMWhjeWs3WEc0Z0lIUjVjR1Z6SUQwZ1kyOXRiVzl1TG5SdlFYSnlZWGtvZEhsd1pYTXBPMXh1WEc0Z0lHbG1JQ2doYzJOb1pXMWhjeTVsZG1WeWVTaG1kVzVqZEdsdmJpQW9jMk5vWlcxaEtTQjdJSEpsZEhWeWJpQnpZMmhsYldFZ2FXNXpkR0Z1WTJWdlppQlRZMmhsYldFN0lIMHBLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRmxCVFV4RmVHTmxjSFJwYjI0b0oxTndaV05wWm1sbFpDQnNhWE4wSUc5bUlITjFjR1Z5SUhOamFHVnRZWE1nS0c5eUlHRWdjMmx1WjJ4bElGTmphR1Z0WVNCdlltcGxZM1FwSUdOdmJuUmhhVzV6SUdFZ2JtOXVMVk5qYUdWdFlTQnZZbXBsWTNRdUp5azdYRzRnSUgxY2JseHVJQ0JwWmlBb0lYUjVjR1Z6TG1WMlpYSjVLR1oxYm1OMGFXOXVJQ2gwZVhCbEtTQjdJSEpsZEhWeWJpQjBlWEJsSUdsdWMzUmhibU5sYjJZZ1ZIbHdaVHNnZlNrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1dVRk5URVY0WTJWd2RHbHZiaWduVTNCbFkybG1hV1ZrSUd4cGMzUWdiMllnV1VGTlRDQjBlWEJsY3lBb2IzSWdZU0J6YVc1bmJHVWdWSGx3WlNCdlltcGxZM1FwSUdOdmJuUmhhVzV6SUdFZ2JtOXVMVlI1Y0dVZ2IySnFaV04wTGljcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlHNWxkeUJUWTJobGJXRW9lMXh1SUNBZ0lHbHVZMngxWkdVNklITmphR1Z0WVhNc1hHNGdJQ0FnWlhod2JHbGphWFE2SUhSNWNHVnpYRzRnSUgwcE8xeHVmVHRjYmx4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlGTmphR1Z0WVR0Y2JpSXNJaTh2SUZOMFlXNWtZWEprSUZsQlRVd25jeUJEYjNKbElITmphR1Z0WVM1Y2JpOHZJR2gwZEhBNkx5OTNkM2N1ZVdGdGJDNXZjbWN2YzNCbFl5OHhMakl2YzNCbFl5NW9kRzFzSTJsa01qZ3dORGt5TTF4dUx5OWNiaTh2SUU1UFZFVTZJRXBUTFZsQlRVd2daRzlsY3lCdWIzUWdjM1Z3Y0c5eWRDQnpZMmhsYldFdGMzQmxZMmxtYVdNZ2RHRm5JSEpsYzI5c2RYUnBiMjRnY21WemRISnBZM1JwYjI1ekxseHVMeThnVTI4c0lFTnZjbVVnYzJOb1pXMWhJR2hoY3lCdWJ5QmthWE4wYVc1amRHbHZibk1nWm5KdmJTQktVMDlPSUhOamFHVnRZU0JwY3lCS1V5MVpRVTFNTGx4dVhHNWNiaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVYRzUyWVhJZ1UyTm9aVzFoSUQwZ2NtVnhkV2x5WlNnbkxpNHZjMk5vWlcxaEp5azdYRzVjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCdVpYY2dVMk5vWlcxaEtIdGNiaUFnYVc1amJIVmtaVG9nVzF4dUlDQWdJSEpsY1hWcGNtVW9KeTR2YW5OdmJpY3BYRzRnSUYxY2JuMHBPMXh1SWl3aUx5OGdTbE10V1VGTlRDZHpJR1JsWm1GMWJIUWdjMk5vWlcxaElHWnZjaUJnYkc5aFpHQWdablZ1WTNScGIyNHVYRzR2THlCSmRDQnBjeUJ1YjNRZ1pHVnpZM0pwWW1Wa0lHbHVJSFJvWlNCWlFVMU1JSE53WldOcFptbGpZWFJwYjI0dVhHNHZMMXh1THk4Z1ZHaHBjeUJ6WTJobGJXRWdhWE1nWW1GelpXUWdiMjRnU2xNdFdVRk5UQ2R6SUdSbFptRjFiSFFnYzJGbVpTQnpZMmhsYldFZ1lXNWtJR2x1WTJ4MVpHVnpYRzR2THlCS1lYWmhVMk55YVhCMExYTndaV05wWm1saklIUjVjR1Z6T2lBaElXcHpMM1Z1WkdWbWFXNWxaQ3dnSVNGcWN5OXlaV2RsZUhBZ1lXNWtJQ0VoYW5NdlpuVnVZM1JwYjI0dVhHNHZMMXh1THk4Z1FXeHpieUIwYUdseklITmphR1Z0WVNCcGN5QjFjMlZrSUdGeklHUmxabUYxYkhRZ1ltRnpaU0J6WTJobGJXRWdZWFFnWUZOamFHVnRZUzVqY21WaGRHVmdJR1oxYm1OMGFXOXVMbHh1WEc1Y2JpZDFjMlVnYzNSeWFXTjBKenRjYmx4dVhHNTJZWElnVTJOb1pXMWhJRDBnY21WeGRXbHlaU2duTGk0dmMyTm9aVzFoSnlrN1hHNWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JUWTJobGJXRXVSRVZHUVZWTVZDQTlJRzVsZHlCVFkyaGxiV0VvZTF4dUlDQnBibU5zZFdSbE9pQmJYRzRnSUNBZ2NtVnhkV2x5WlNnbkxpOWtaV1poZFd4MFgzTmhabVVuS1Z4dUlDQmRMRnh1SUNCbGVIQnNhV05wZERvZ1cxeHVJQ0FnSUhKbGNYVnBjbVVvSnk0dUwzUjVjR1V2YW5NdmRXNWtaV1pwYm1Wa0p5a3NYRzRnSUNBZ2NtVnhkV2x5WlNnbkxpNHZkSGx3WlM5cWN5OXlaV2RsZUhBbktTeGNiaUFnSUNCeVpYRjFhWEpsS0NjdUxpOTBlWEJsTDJwekwyWjFibU4wYVc5dUp5bGNiaUFnWFZ4dWZTazdYRzRpTENJdkx5QktVeTFaUVUxTUozTWdaR1ZtWVhWc2RDQnpZMmhsYldFZ1ptOXlJR0J6WVdabFRHOWhaR0FnWm5WdVkzUnBiMjR1WEc0dkx5QkpkQ0JwY3lCdWIzUWdaR1Z6WTNKcFltVmtJR2x1SUhSb1pTQlpRVTFNSUhOd1pXTnBabWxqWVhScGIyNHVYRzR2TDF4dUx5OGdWR2hwY3lCelkyaGxiV0VnYVhNZ1ltRnpaV1FnYjI0Z2MzUmhibVJoY21RZ1dVRk5UQ2R6SUVOdmNtVWdjMk5vWlcxaElHRnVaQ0JwYm1Oc2RXUmxjeUJ0YjNOMElHOW1YRzR2THlCbGVIUnlZU0IwZVhCbGN5QmtaWE5qY21saVpXUWdZWFFnV1VGTlRDQjBZV2NnY21Wd2IzTnBkRzl5ZVM0Z0tHaDBkSEE2THk5NVlXMXNMbTl5Wnk5MGVYQmxMeWxjYmx4dVhHNG5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JseHVkbUZ5SUZOamFHVnRZU0E5SUhKbGNYVnBjbVVvSnk0dUwzTmphR1Z0WVNjcE8xeHVYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYm1WM0lGTmphR1Z0WVNoN1hHNGdJR2x1WTJ4MVpHVTZJRnRjYmlBZ0lDQnlaWEYxYVhKbEtDY3VMMk52Y21VbktWeHVJQ0JkTEZ4dUlDQnBiWEJzYVdOcGREb2dXMXh1SUNBZ0lISmxjWFZwY21Vb0p5NHVMM1I1Y0dVdmRHbHRaWE4wWVcxd0p5a3NYRzRnSUNBZ2NtVnhkV2x5WlNnbkxpNHZkSGx3WlM5dFpYSm5aU2NwWEc0Z0lGMHNYRzRnSUdWNGNHeHBZMmwwT2lCYlhHNGdJQ0FnY21WeGRXbHlaU2duTGk0dmRIbHdaUzlpYVc1aGNua25LU3hjYmlBZ0lDQnlaWEYxYVhKbEtDY3VMaTkwZVhCbEwyOXRZWEFuS1N4Y2JpQWdJQ0J5WlhGMWFYSmxLQ2N1TGk5MGVYQmxMM0JoYVhKekp5a3NYRzRnSUNBZ2NtVnhkV2x5WlNnbkxpNHZkSGx3WlM5elpYUW5LVnh1SUNCZFhHNTlLVHRjYmlJc0lpOHZJRk4wWVc1a1lYSmtJRmxCVFV3bmN5QkdZV2xzYzJGbVpTQnpZMmhsYldFdVhHNHZMeUJvZEhSd09pOHZkM2QzTG5saGJXd3ViM0puTDNOd1pXTXZNUzR5TDNOd1pXTXVhSFJ0YkNOcFpESTRNREl6TkRaY2JseHVYRzRuZFhObElITjBjbWxqZENjN1hHNWNibHh1ZG1GeUlGTmphR1Z0WVNBOUlISmxjWFZwY21Vb0p5NHVMM05qYUdWdFlTY3BPMXh1WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2JtVjNJRk5qYUdWdFlTaDdYRzRnSUdWNGNHeHBZMmwwT2lCYlhHNGdJQ0FnY21WeGRXbHlaU2duTGk0dmRIbHdaUzl6ZEhJbktTeGNiaUFnSUNCeVpYRjFhWEpsS0NjdUxpOTBlWEJsTDNObGNTY3BMRnh1SUNBZ0lISmxjWFZwY21Vb0p5NHVMM1I1Y0dVdmJXRndKeWxjYmlBZ1hWeHVmU2s3WEc0aUxDSXZMeUJUZEdGdVpHRnlaQ0JaUVUxTUozTWdTbE5QVGlCelkyaGxiV0V1WEc0dkx5Qm9kSFJ3T2k4dmQzZDNMbmxoYld3dWIzSm5MM053WldNdk1TNHlMM053WldNdWFIUnRiQ05wWkRJNE1ETXlNekZjYmk4dlhHNHZMeUJPVDFSRk9pQktVeTFaUVUxTUlHUnZaWE1nYm05MElITjFjSEJ2Y25RZ2MyTm9aVzFoTFhOd1pXTnBabWxqSUhSaFp5QnlaWE52YkhWMGFXOXVJSEpsYzNSeWFXTjBhVzl1Y3k1Y2JpOHZJRk52TENCMGFHbHpJSE5qYUdWdFlTQnBjeUJ1YjNRZ2MzVmphQ0J6ZEhKcFkzUWdZWE1nWkdWbWFXNWxaQ0JwYmlCMGFHVWdXVUZOVENCemNHVmphV1pwWTJGMGFXOXVMbHh1THk4Z1NYUWdZV3hzYjNkeklHNTFiV0psY25NZ2FXNGdZbWx1WVhKNUlHNXZkR0ZwYjI0c0lIVnpaU0JnVG5Wc2JHQWdZVzVrSUdCT1ZVeE1ZQ0JoY3lCZ2JuVnNiR0FzSUdWMFl5NWNibHh1WEc0bmRYTmxJSE4wY21samRDYzdYRzVjYmx4dWRtRnlJRk5qYUdWdFlTQTlJSEpsY1hWcGNtVW9KeTR1TDNOamFHVnRZU2NwTzF4dVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdibVYzSUZOamFHVnRZU2g3WEc0Z0lHbHVZMngxWkdVNklGdGNiaUFnSUNCeVpYRjFhWEpsS0NjdUwyWmhhV3h6WVdabEp5bGNiaUFnWFN4Y2JpQWdhVzF3YkdsamFYUTZJRnRjYmlBZ0lDQnlaWEYxYVhKbEtDY3VMaTkwZVhCbEwyNTFiR3duS1N4Y2JpQWdJQ0J5WlhGMWFYSmxLQ2N1TGk5MGVYQmxMMkp2YjJ3bktTeGNiaUFnSUNCeVpYRjFhWEpsS0NjdUxpOTBlWEJsTDJsdWRDY3BMRnh1SUNBZ0lISmxjWFZwY21Vb0p5NHVMM1I1Y0dVdlpteHZZWFFuS1Z4dUlDQmRYRzU5S1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZsQlRVeEZlR05sY0hScGIyNGdQU0J5WlhGMWFYSmxLQ2N1TDJWNFkyVndkR2x2YmljcE8xeHVYRzUyWVhJZ1ZGbFFSVjlEVDA1VFZGSlZRMVJQVWw5UFVGUkpUMDVUSUQwZ1cxeHVJQ0FuYTJsdVpDY3NYRzRnSUNkeVpYTnZiSFpsSnl4Y2JpQWdKMk52Ym5OMGNuVmpkQ2NzWEc0Z0lDZHBibk4wWVc1alpVOW1KeXhjYmlBZ0ozQnlaV1JwWTJGMFpTY3NYRzRnSUNkeVpYQnlaWE5sYm5RbkxGeHVJQ0FuWkdWbVlYVnNkRk4wZVd4bEp5eGNiaUFnSjNOMGVXeGxRV3hwWVhObGN5ZGNibDA3WEc1Y2JuWmhjaUJaUVUxTVgwNVBSRVZmUzBsT1JGTWdQU0JiWEc0Z0lDZHpZMkZzWVhJbkxGeHVJQ0FuYzJWeGRXVnVZMlVuTEZ4dUlDQW5iV0Z3Y0dsdVp5ZGNibDA3WEc1Y2JtWjFibU4wYVc5dUlHTnZiWEJwYkdWVGRIbHNaVUZzYVdGelpYTW9iV0Z3S1NCN1hHNGdJSFpoY2lCeVpYTjFiSFFnUFNCN2ZUdGNibHh1SUNCcFppQW9iV0Z3SUNFOVBTQnVkV3hzS1NCN1hHNGdJQ0FnVDJKcVpXTjBMbXRsZVhNb2JXRndLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2h6ZEhsc1pTa2dlMXh1SUNBZ0lDQWdiV0Z3VzNOMGVXeGxYUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hoYkdsaGN5a2dlMXh1SUNBZ0lDQWdJQ0J5WlhOMWJIUmJVM1J5YVc1bktHRnNhV0Z6S1YwZ1BTQnpkSGxzWlR0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnVkhsd1pTaDBZV2NzSUc5d2RHbHZibk1wSUh0Y2JpQWdiM0IwYVc5dWN5QTlJRzl3ZEdsdmJuTWdmSHdnZTMwN1hHNWNiaUFnVDJKcVpXTjBMbXRsZVhNb2IzQjBhVzl1Y3lrdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlBb2JtRnRaU2tnZTF4dUlDQWdJR2xtSUNoVVdWQkZYME5QVGxOVVVsVkRWRTlTWDA5UVZFbFBUbE11YVc1a1pYaFBaaWh1WVcxbEtTQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QlpRVTFNUlhoalpYQjBhVzl1S0NkVmJtdHViM2R1SUc5d2RHbHZiaUJjSWljZ0t5QnVZVzFsSUNzZ0oxd2lJR2x6SUcxbGRDQnBiaUJrWldacGJtbDBhVzl1SUc5bUlGd2lKeUFySUhSaFp5QXJJQ2RjSWlCWlFVMU1JSFI1Y0dVdUp5azdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVJQ0F2THlCVVQwUlBPaUJCWkdRZ2RHRm5JR1p2Y20xaGRDQmphR1ZqYXk1Y2JpQWdkR2hwY3k1MFlXY2dJQ0FnSUNBZ0lDQWdQU0IwWVdjN1hHNGdJSFJvYVhNdWEybHVaQ0FnSUNBZ0lDQWdJRDBnYjNCMGFXOXVjMXNuYTJsdVpDZGRJQ0FnSUNBZ0lDQWdmSHdnYm5Wc2JEdGNiaUFnZEdocGN5NXlaWE52YkhabElDQWdJQ0FnUFNCdmNIUnBiMjV6V3lkeVpYTnZiSFpsSjEwZ0lDQWdJQ0I4ZkNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBjblZsT3lCOU8xeHVJQ0IwYUdsekxtTnZibk4wY25WamRDQWdJQ0E5SUc5d2RHbHZibk5iSjJOdmJuTjBjblZqZENkZElDQWdJSHg4SUdaMWJtTjBhVzl1SUNoa1lYUmhLU0I3SUhKbGRIVnliaUJrWVhSaE95QjlPMXh1SUNCMGFHbHpMbWx1YzNSaGJtTmxUMllnSUNBOUlHOXdkR2x2Ym5OYkoybHVjM1JoYm1ObFQyWW5YU0FnSUh4OElHNTFiR3c3WEc0Z0lIUm9hWE11Y0hKbFpHbGpZWFJsSUNBZ0lEMGdiM0IwYVc5dWMxc25jSEpsWkdsallYUmxKMTBnSUNBZ2ZId2diblZzYkR0Y2JpQWdkR2hwY3k1eVpYQnlaWE5sYm5RZ0lDQWdQU0J2Y0hScGIyNXpXeWR5WlhCeVpYTmxiblFuWFNBZ0lDQjhmQ0J1ZFd4c08xeHVJQ0IwYUdsekxtUmxabUYxYkhSVGRIbHNaU0E5SUc5d2RHbHZibk5iSjJSbFptRjFiSFJUZEhsc1pTZGRJSHg4SUc1MWJHdzdYRzRnSUhSb2FYTXVjM1I1YkdWQmJHbGhjMlZ6SUQwZ1kyOXRjR2xzWlZOMGVXeGxRV3hwWVhObGN5aHZjSFJwYjI1eld5ZHpkSGxzWlVGc2FXRnpaWE1uWFNCOGZDQnVkV3hzS1R0Y2JseHVJQ0JwWmlBb1dVRk5URjlPVDBSRlgwdEpUa1JUTG1sdVpHVjRUMllvZEdocGN5NXJhVzVrS1NBOVBUMGdMVEVwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnV1VGTlRFVjRZMlZ3ZEdsdmJpZ25WVzVyYm05M2JpQnJhVzVrSUZ3aUp5QXJJSFJvYVhNdWEybHVaQ0FySUNkY0lpQnBjeUJ6Y0dWamFXWnBaV1FnWm05eUlGd2lKeUFySUhSaFp5QXJJQ2RjSWlCWlFVMU1JSFI1Y0dVdUp5azdYRzRnSUgxY2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JVZVhCbE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzR2S21WemJHbHVkQzFrYVhOaFlteGxJRzV2TFdKcGRIZHBjMlVxTDF4dVhHNTJZWElnVG05a1pVSjFabVpsY2p0Y2JseHVkSEo1SUh0Y2JpQWdMeThnUVNCMGNtbGpheUJtYjNJZ1luSnZkM05sY21sbWFXVmtJSFpsY25OcGIyNHNJSFJ2SUc1dmRDQnBibU5zZFdSbElHQkNkV1ptWlhKZ0lITm9hVzFjYmlBZ2RtRnlJRjl5WlhGMWFYSmxJRDBnY21WeGRXbHlaVHRjYmlBZ1RtOWtaVUoxWm1abGNpQTlJRjl5WlhGMWFYSmxLQ2RpZFdabVpYSW5LUzVDZFdabVpYSTdYRzU5SUdOaGRHTm9JQ2hmWHlrZ2UzMWNibHh1ZG1GeUlGUjVjR1VnSUNBZ0lDQWdQU0J5WlhGMWFYSmxLQ2N1TGk5MGVYQmxKeWs3WEc1Y2JseHVMeThnV3lBMk5Dd2dOalVzSURZMklGMGdMVDRnV3lCd1lXUmthVzVuTENCRFVpd2dURVlnWFZ4dWRtRnlJRUpCVTBVMk5GOU5RVkFnUFNBblFVSkRSRVZHUjBoSlNrdE1UVTVQVUZGU1UxUlZWbGRZV1ZwaFltTmtaV1puYUdscWEyeHRibTl3Y1hKemRIVjJkM2g1ZWpBeE1qTTBOVFkzT0Rrckx6MWNYRzVjWEhJbk8xeHVYRzVjYm1aMWJtTjBhVzl1SUhKbGMyOXNkbVZaWVcxc1FtbHVZWEo1S0dSaGRHRXBJSHRjYmlBZ2FXWWdLR1JoZEdFZ1BUMDlJRzUxYkd3cElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQjJZWElnWTI5a1pTd2dhV1I0TENCaWFYUnNaVzRnUFNBd0xDQnRZWGdnUFNCa1lYUmhMbXhsYm1kMGFDd2diV0Z3SUQwZ1FrRlRSVFkwWDAxQlVEdGNibHh1SUNBdkx5QkRiMjUyWlhKMElHOXVaU0JpZVNCdmJtVXVYRzRnSUdadmNpQW9hV1I0SUQwZ01Ec2dhV1I0SUR3Z2JXRjRPeUJwWkhnckt5a2dlMXh1SUNBZ0lHTnZaR1VnUFNCdFlYQXVhVzVrWlhoUFppaGtZWFJoTG1Ob1lYSkJkQ2hwWkhncEtUdGNibHh1SUNBZ0lDOHZJRk5yYVhBZ1ExSXZURVpjYmlBZ0lDQnBaaUFvWTI5a1pTQStJRFkwS1NCamIyNTBhVzUxWlR0Y2JseHVJQ0FnSUM4dklFWmhhV3dnYjI0Z2FXeHNaV2RoYkNCamFHRnlZV04wWlhKelhHNGdJQ0FnYVdZZ0tHTnZaR1VnUENBd0tTQnlaWFIxY200Z1ptRnNjMlU3WEc1Y2JpQWdJQ0JpYVhSc1pXNGdLejBnTmp0Y2JpQWdmVnh1WEc0Z0lDOHZJRWxtSUhSb1pYSmxJR0Z5WlNCaGJua2dZbWwwY3lCc1pXWjBMQ0J6YjNWeVkyVWdkMkZ6SUdOdmNuSjFjSFJsWkZ4dUlDQnlaWFIxY200Z0tHSnBkR3hsYmlBbElEZ3BJRDA5UFNBd08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCamIyNXpkSEoxWTNSWllXMXNRbWx1WVhKNUtHUmhkR0VwSUh0Y2JpQWdkbUZ5SUdsa2VDd2dkR0ZwYkdKcGRITXNYRzRnSUNBZ0lDQnBibkIxZENBOUlHUmhkR0V1Y21Wd2JHRmpaU2d2VzF4Y2NseGNiajFkTDJjc0lDY25LU3dnTHk4Z2NtVnRiM1psSUVOU0wweEdJQ1lnY0dGa1pHbHVaeUIwYnlCemFXMXdiR2xtZVNCelkyRnVYRzRnSUNBZ0lDQnRZWGdnUFNCcGJuQjFkQzVzWlc1bmRHZ3NYRzRnSUNBZ0lDQnRZWEFnUFNCQ1FWTkZOalJmVFVGUUxGeHVJQ0FnSUNBZ1ltbDBjeUE5SURBc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCYlhUdGNibHh1SUNBdkx5QkRiMnhzWldOMElHSjVJRFlxTkNCaWFYUnpJQ2d6SUdKNWRHVnpLVnh1WEc0Z0lHWnZjaUFvYVdSNElEMGdNRHNnYVdSNElEd2diV0Y0T3lCcFpIZ3JLeWtnZTF4dUlDQWdJR2xtSUNnb2FXUjRJQ1VnTkNBOVBUMGdNQ2tnSmlZZ2FXUjRLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUXVjSFZ6YUNnb1ltbDBjeUErUGlBeE5pa2dKaUF3ZUVaR0tUdGNiaUFnSUNBZ0lISmxjM1ZzZEM1d2RYTm9LQ2hpYVhSeklENCtJRGdwSUNZZ01IaEdSaWs3WEc0Z0lDQWdJQ0J5WlhOMWJIUXVjSFZ6YUNoaWFYUnpJQ1lnTUhoR1JpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1ltbDBjeUE5SUNoaWFYUnpJRHc4SURZcElId2diV0Z3TG1sdVpHVjRUMllvYVc1d2RYUXVZMmhoY2tGMEtHbGtlQ2twTzF4dUlDQjlYRzVjYmlBZ0x5OGdSSFZ0Y0NCMFlXbHNYRzVjYmlBZ2RHRnBiR0pwZEhNZ1BTQW9iV0Y0SUNVZ05Da2dLaUEyTzF4dVhHNGdJR2xtSUNoMFlXbHNZbWwwY3lBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsYzNWc2RDNXdkWE5vS0NoaWFYUnpJRDQrSURFMktTQW1JREI0UmtZcE8xeHVJQ0FnSUhKbGMzVnNkQzV3ZFhOb0tDaGlhWFJ6SUQ0K0lEZ3BJQ1lnTUhoR1JpazdYRzRnSUNBZ2NtVnpkV3gwTG5CMWMyZ29ZbWwwY3lBbUlEQjRSa1lwTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFJoYVd4aWFYUnpJRDA5UFNBeE9Da2dlMXh1SUNBZ0lISmxjM1ZzZEM1d2RYTm9LQ2hpYVhSeklENCtJREV3S1NBbUlEQjRSa1lwTzF4dUlDQWdJSEpsYzNWc2RDNXdkWE5vS0NoaWFYUnpJRDQrSURJcElDWWdNSGhHUmlrN1hHNGdJSDBnWld4elpTQnBaaUFvZEdGcGJHSnBkSE1nUFQwOUlERXlLU0I3WEc0Z0lDQWdjbVZ6ZFd4MExuQjFjMmdvS0dKcGRITWdQajRnTkNrZ0ppQXdlRVpHS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRmR5WVhBZ2FXNTBieUJDZFdabVpYSWdabTl5SUU1dlpHVktVeUJoYm1RZ2JHVmhkbVVnUVhKeVlYa2dabTl5SUdKeWIzZHpaWEpjYmlBZ2FXWWdLRTV2WkdWQ2RXWm1aWElwSUhKbGRIVnliaUJ1WlhjZ1RtOWtaVUoxWm1abGNpaHlaWE4xYkhRcE8xeHVYRzRnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxjSEpsYzJWdWRGbGhiV3hDYVc1aGNua29iMkpxWldOMElDOHFMQ0J6ZEhsc1pTb3ZLU0I3WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0FuSnl3Z1ltbDBjeUE5SURBc0lHbGtlQ3dnZEdGcGJDeGNiaUFnSUNBZ0lHMWhlQ0E5SUc5aWFtVmpkQzVzWlc1bmRHZ3NYRzRnSUNBZ0lDQnRZWEFnUFNCQ1FWTkZOalJmVFVGUU8xeHVYRzRnSUM4dklFTnZiblpsY25RZ1pYWmxjbmtnZEdoeVpXVWdZbmwwWlhNZ2RHOGdOQ0JCVTBOSlNTQmphR0Z5WVdOMFpYSnpMbHh1WEc0Z0lHWnZjaUFvYVdSNElEMGdNRHNnYVdSNElEd2diV0Y0T3lCcFpIZ3JLeWtnZTF4dUlDQWdJR2xtSUNnb2FXUjRJQ1VnTXlBOVBUMGdNQ2tnSmlZZ2FXUjRLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUWdLejBnYldGd1d5aGlhWFJ6SUQ0K0lERTRLU0FtSURCNE0wWmRPMXh1SUNBZ0lDQWdjbVZ6ZFd4MElDczlJRzFoY0Zzb1ltbDBjeUErUGlBeE1pa2dKaUF3ZUROR1hUdGNiaUFnSUNBZ0lISmxjM1ZzZENBclBTQnRZWEJiS0dKcGRITWdQajRnTmlrZ0ppQXdlRE5HWFR0Y2JpQWdJQ0FnSUhKbGMzVnNkQ0FyUFNCdFlYQmJZbWwwY3lBbUlEQjRNMFpkTzF4dUlDQWdJSDFjYmx4dUlDQWdJR0pwZEhNZ1BTQW9ZbWwwY3lBOFBDQTRLU0FySUc5aWFtVmpkRnRwWkhoZE8xeHVJQ0I5WEc1Y2JpQWdMeThnUkhWdGNDQjBZV2xzWEc1Y2JpQWdkR0ZwYkNBOUlHMWhlQ0FsSURNN1hHNWNiaUFnYVdZZ0tIUmhhV3dnUFQwOUlEQXBJSHRjYmlBZ0lDQnlaWE4xYkhRZ0t6MGdiV0Z3V3loaWFYUnpJRDQrSURFNEtTQW1JREI0TTBaZE8xeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCdFlYQmJLR0pwZEhNZ1BqNGdNVElwSUNZZ01IZ3pSbDA3WEc0Z0lDQWdjbVZ6ZFd4MElDczlJRzFoY0Zzb1ltbDBjeUErUGlBMktTQW1JREI0TTBaZE8xeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCdFlYQmJZbWwwY3lBbUlEQjRNMFpkTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSFJoYVd3Z1BUMDlJRElwSUh0Y2JpQWdJQ0J5WlhOMWJIUWdLejBnYldGd1d5aGlhWFJ6SUQ0K0lERXdLU0FtSURCNE0wWmRPMXh1SUNBZ0lISmxjM1ZzZENBclBTQnRZWEJiS0dKcGRITWdQajRnTkNrZ0ppQXdlRE5HWFR0Y2JpQWdJQ0J5WlhOMWJIUWdLejBnYldGd1d5aGlhWFJ6SUR3OElESXBJQ1lnTUhnelJsMDdYRzRnSUNBZ2NtVnpkV3gwSUNzOUlHMWhjRnMyTkYwN1hHNGdJSDBnWld4elpTQnBaaUFvZEdGcGJDQTlQVDBnTVNrZ2UxeHVJQ0FnSUhKbGMzVnNkQ0FyUFNCdFlYQmJLR0pwZEhNZ1BqNGdNaWtnSmlBd2VETkdYVHRjYmlBZ0lDQnlaWE4xYkhRZ0t6MGdiV0Z3V3loaWFYUnpJRHc4SURRcElDWWdNSGd6UmwwN1hHNGdJQ0FnY21WemRXeDBJQ3M5SUcxaGNGczJORjA3WEc0Z0lDQWdjbVZ6ZFd4MElDczlJRzFoY0ZzMk5GMDdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCcGMwSnBibUZ5ZVNodlltcGxZM1FwSUh0Y2JpQWdjbVYwZFhKdUlFNXZaR1ZDZFdabVpYSWdKaVlnVG05a1pVSjFabVpsY2k1cGMwSjFabVpsY2lodlltcGxZM1FwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRzVsZHlCVWVYQmxLQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanBpYVc1aGNua25MQ0I3WEc0Z0lHdHBibVE2SUNkelkyRnNZWEluTEZ4dUlDQnlaWE52YkhabE9pQnlaWE52YkhabFdXRnRiRUpwYm1GeWVTeGNiaUFnWTI5dWMzUnlkV04wT2lCamIyNXpkSEoxWTNSWllXMXNRbWx1WVhKNUxGeHVJQ0J3Y21Wa2FXTmhkR1U2SUdselFtbHVZWEo1TEZ4dUlDQnlaWEJ5WlhObGJuUTZJSEpsY0hKbGMyVnVkRmxoYld4Q2FXNWhjbmxjYm4wcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1ZIbHdaU0E5SUhKbGNYVnBjbVVvSnk0dUwzUjVjR1VuS1R0Y2JseHVablZ1WTNScGIyNGdjbVZ6YjJ4MlpWbGhiV3hDYjI5c1pXRnVLR1JoZEdFcElIdGNiaUFnYVdZZ0tHUmhkR0VnUFQwOUlHNTFiR3dwSUhKbGRIVnliaUJtWVd4elpUdGNibHh1SUNCMllYSWdiV0Y0SUQwZ1pHRjBZUzVzWlc1bmRHZzdYRzVjYmlBZ2NtVjBkWEp1SUNodFlYZ2dQVDA5SURRZ0ppWWdLR1JoZEdFZ1BUMDlJQ2QwY25WbEp5QjhmQ0JrWVhSaElEMDlQU0FuVkhKMVpTY2dmSHdnWkdGMFlTQTlQVDBnSjFSU1ZVVW5LU2tnZkh4Y2JpQWdJQ0FnSUNBZ0lDaHRZWGdnUFQwOUlEVWdKaVlnS0dSaGRHRWdQVDA5SUNkbVlXeHpaU2NnZkh3Z1pHRjBZU0E5UFQwZ0owWmhiSE5sSnlCOGZDQmtZWFJoSUQwOVBTQW5Sa0ZNVTBVbktTazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnZibk4wY25WamRGbGhiV3hDYjI5c1pXRnVLR1JoZEdFcElIdGNiaUFnY21WMGRYSnVJR1JoZEdFZ1BUMDlJQ2QwY25WbEp5QjhmRnh1SUNBZ0lDQWdJQ0FnWkdGMFlTQTlQVDBnSjFSeWRXVW5JSHg4WEc0Z0lDQWdJQ0FnSUNCa1lYUmhJRDA5UFNBblZGSlZSU2M3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2x6UW05dmJHVmhiaWh2WW1wbFkzUXBJSHRjYmlBZ2NtVjBkWEp1SUU5aWFtVmpkQzV3Y205MGIzUjVjR1V1ZEc5VGRISnBibWN1WTJGc2JDaHZZbXBsWTNRcElEMDlQU0FuVzI5aWFtVmpkQ0JDYjI5c1pXRnVYU2M3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdibVYzSUZSNWNHVW9KM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbUp2YjJ3bkxDQjdYRzRnSUd0cGJtUTZJQ2R6WTJGc1lYSW5MRnh1SUNCeVpYTnZiSFpsT2lCeVpYTnZiSFpsV1dGdGJFSnZiMnhsWVc0c1hHNGdJR052Ym5OMGNuVmpkRG9nWTI5dWMzUnlkV04wV1dGdGJFSnZiMnhsWVc0c1hHNGdJSEJ5WldScFkyRjBaVG9nYVhOQ2IyOXNaV0Z1TEZ4dUlDQnlaWEJ5WlhObGJuUTZJSHRjYmlBZ0lDQnNiM2RsY21OaGMyVTZJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXBJSHNnY21WMGRYSnVJRzlpYW1WamRDQS9JQ2QwY25WbEp5QTZJQ2RtWVd4elpTYzdJSDBzWEc0Z0lDQWdkWEJ3WlhKallYTmxPaUJtZFc1amRHbHZiaUFvYjJKcVpXTjBLU0I3SUhKbGRIVnliaUJ2WW1wbFkzUWdQeUFuVkZKVlJTY2dPaUFuUmtGTVUwVW5PeUI5TEZ4dUlDQWdJR05oYldWc1kyRnpaVG9nWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ2tnZXlCeVpYUjFjbTRnYjJKcVpXTjBJRDhnSjFSeWRXVW5JRG9nSjBaaGJITmxKenNnZlZ4dUlDQjlMRnh1SUNCa1pXWmhkV3gwVTNSNWJHVTZJQ2RzYjNkbGNtTmhjMlVuWEc1OUtUdGNiaUlzSWlkMWMyVWdjM1J5YVdOMEp6dGNibHh1ZG1GeUlHTnZiVzF2YmlBOUlISmxjWFZwY21Vb0p5NHVMMk52YlcxdmJpY3BPMXh1ZG1GeUlGUjVjR1VnSUNBOUlISmxjWFZwY21Vb0p5NHVMM1I1Y0dVbktUdGNibHh1ZG1GeUlGbEJUVXhmUmt4UFFWUmZVRUZVVkVWU1RpQTlJRzVsZHlCU1pXZEZlSEFvWEc0Z0lDZGVLRDg2V3kwclhUOG9QenBiTUMwNVhWc3dMVGxmWFNvcFhGeGNYQzViTUMwNVgxMHFLRDg2VzJWRlhWc3RLMTFiTUMwNVhTc3BQeWNnSzF4dUlDQW5mRnhjWEZ3dVd6QXRPVjlkS3lnL09sdGxSVjFiTFN0ZFd6QXRPVjByS1Q4bklDdGNiaUFnSjN4YkxTdGRQMXN3TFRsZFd6QXRPVjlkS2lnL09qcGJNQzAxWFQ5Yk1DMDVYU2tyWEZ4Y1hDNWJNQzA1WDEwcUp5QXJYRzRnSUNkOFd5MHJYVDljWEZ4Y0xpZy9PbWx1Wm54SmJtWjhTVTVHS1NjZ0sxeHVJQ0FuZkZ4Y1hGd3VLRDg2Ym1GdWZFNWhUbnhPUVU0cEtTUW5LVHRjYmx4dVpuVnVZM1JwYjI0Z2NtVnpiMngyWlZsaGJXeEdiRzloZENoa1lYUmhLU0I3WEc0Z0lHbG1JQ2hrWVhSaElEMDlQU0J1ZFd4c0tTQnlaWFIxY200Z1ptRnNjMlU3WEc1Y2JpQWdhV1lnS0NGWlFVMU1YMFpNVDBGVVgxQkJWRlJGVWs0dWRHVnpkQ2hrWVhSaEtTa2djbVYwZFhKdUlHWmhiSE5sTzF4dVhHNGdJSEpsZEhWeWJpQjBjblZsTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJqYjI1emRISjFZM1JaWVcxc1JteHZZWFFvWkdGMFlTa2dlMXh1SUNCMllYSWdkbUZzZFdVc0lITnBaMjRzSUdKaGMyVXNJR1JwWjJsMGN6dGNibHh1SUNCMllXeDFaU0FnUFNCa1lYUmhMbkpsY0d4aFkyVW9MMTh2Wnl3Z0p5Y3BMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNGdJSE5wWjI0Z0lDQTlJSFpoYkhWbFd6QmRJRDA5UFNBbkxTY2dQeUF0TVNBNklERTdYRzRnSUdScFoybDBjeUE5SUZ0ZE8xeHVYRzRnSUdsbUlDZ25LeTBuTG1sdVpHVjRUMllvZG1Gc2RXVmJNRjBwSUQ0OUlEQXBJSHRjYmlBZ0lDQjJZV3gxWlNBOUlIWmhiSFZsTG5Oc2FXTmxLREVwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSFpoYkhWbElEMDlQU0FuTG1sdVppY3BJSHRjYmlBZ0lDQnlaWFIxY200Z0tITnBaMjRnUFQwOUlERXBJRDhnVG5WdFltVnlMbEJQVTBsVVNWWkZYMGxPUmtsT1NWUlpJRG9nVG5WdFltVnlMazVGUjBGVVNWWkZYMGxPUmtsT1NWUlpPMXh1WEc0Z0lIMGdaV3h6WlNCcFppQW9kbUZzZFdVZ1BUMDlJQ2N1Ym1GdUp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCT1lVNDdYRzVjYmlBZ2ZTQmxiSE5sSUdsbUlDaDJZV3gxWlM1cGJtUmxlRTltS0NjNkp5a2dQajBnTUNrZ2UxeHVJQ0FnSUhaaGJIVmxMbk53YkdsMEtDYzZKeWt1Wm05eVJXRmphQ2htZFc1amRHbHZiaUFvZGlrZ2UxeHVJQ0FnSUNBZ1pHbG5hWFJ6TG5WdWMyaHBablFvY0dGeWMyVkdiRzloZENoMkxDQXhNQ2twTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnZG1Gc2RXVWdQU0F3TGpBN1hHNGdJQ0FnWW1GelpTQTlJREU3WEc1Y2JpQWdJQ0JrYVdkcGRITXVabTl5UldGamFDaG1kVzVqZEdsdmJpQW9aQ2tnZTF4dUlDQWdJQ0FnZG1Gc2RXVWdLejBnWkNBcUlHSmhjMlU3WEc0Z0lDQWdJQ0JpWVhObElDbzlJRFl3TzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSE5wWjI0Z0tpQjJZV3gxWlR0Y2JseHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXZHVJQ29nY0dGeWMyVkdiRzloZENoMllXeDFaU3dnTVRBcE8xeHVmVnh1WEc1Y2JuWmhjaUJUUTBsRlRsUkpSa2xEWDFkSlZFaFBWVlJmUkU5VUlEMGdMMTViTFN0ZFAxc3dMVGxkSzJVdk8xeHVYRzVtZFc1amRHbHZiaUJ5WlhCeVpYTmxiblJaWVcxc1JteHZZWFFvYjJKcVpXTjBMQ0J6ZEhsc1pTa2dlMXh1SUNCMllYSWdjbVZ6TzF4dVhHNGdJR2xtSUNocGMwNWhUaWh2WW1wbFkzUXBLU0I3WEc0Z0lDQWdjM2RwZEdOb0lDaHpkSGxzWlNrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuYkc5M1pYSmpZWE5sSnpvZ2NtVjBkWEp1SUNjdWJtRnVKenRjYmlBZ0lDQWdJR05oYzJVZ0ozVndjR1Z5WTJGelpTYzZJSEpsZEhWeWJpQW5MazVCVGljN1hHNGdJQ0FnSUNCallYTmxJQ2RqWVcxbGJHTmhjMlVuT2lCeVpYUjFjbTRnSnk1T1lVNG5PMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNoT2RXMWlaWEl1VUU5VFNWUkpWa1ZmU1U1R1NVNUpWRmtnUFQwOUlHOWlhbVZqZENrZ2UxeHVJQ0FnSUhOM2FYUmphQ0FvYzNSNWJHVXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0oyeHZkMlZ5WTJGelpTYzZJSEpsZEhWeWJpQW5MbWx1WmljN1hHNGdJQ0FnSUNCallYTmxJQ2QxY0hCbGNtTmhjMlVuT2lCeVpYUjFjbTRnSnk1SlRrWW5PMXh1SUNBZ0lDQWdZMkZ6WlNBblkyRnRaV3hqWVhObEp6b2djbVYwZFhKdUlDY3VTVzVtSnp0Y2JpQWdJQ0I5WEc0Z0lIMGdaV3h6WlNCcFppQW9UblZ0WW1WeUxrNUZSMEZVU1ZaRlgwbE9Sa2xPU1ZSWklEMDlQU0J2WW1wbFkzUXBJSHRjYmlBZ0lDQnpkMmwwWTJnZ0tITjBlV3hsS1NCN1hHNGdJQ0FnSUNCallYTmxJQ2RzYjNkbGNtTmhjMlVuT2lCeVpYUjFjbTRnSnkwdWFXNW1KenRjYmlBZ0lDQWdJR05oYzJVZ0ozVndjR1Z5WTJGelpTYzZJSEpsZEhWeWJpQW5MUzVKVGtZbk8xeHVJQ0FnSUNBZ1kyRnpaU0FuWTJGdFpXeGpZWE5sSnpvZ2NtVjBkWEp1SUNjdExrbHVaaWM3WEc0Z0lDQWdmVnh1SUNCOUlHVnNjMlVnYVdZZ0tHTnZiVzF2Ymk1cGMwNWxaMkYwYVhabFdtVnlieWh2WW1wbFkzUXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlDY3RNQzR3Snp0Y2JpQWdmVnh1WEc0Z0lISmxjeUE5SUc5aWFtVmpkQzUwYjFOMGNtbHVaeWd4TUNrN1hHNWNiaUFnTHk4Z1NsTWdjM1J5YVc1bmFXWnBaWElnWTJGdUlHSjFhV3hrSUhOamFXVnVkR2xtYVdNZ1ptOXliV0YwSUhkcGRHaHZkWFFnWkc5MGN6b2dOV1V0TVRBd0xGeHVJQ0F2THlCM2FHbHNaU0JaUVUxTUlISmxjWFZ5WlhNZ1pHOTBPaUExTG1VdE1UQXdMaUJHYVhnZ2FYUWdkMmwwYUNCemFXMXdiR1VnYUdGamExeHVYRzRnSUhKbGRIVnliaUJUUTBsRlRsUkpSa2xEWDFkSlZFaFBWVlJmUkU5VUxuUmxjM1FvY21WektTQS9JSEpsY3k1eVpYQnNZV05sS0NkbEp5d2dKeTVsSnlrZ09pQnlaWE03WEc1OVhHNWNibVoxYm1OMGFXOXVJR2x6Um14dllYUW9iMkpxWldOMEtTQjdYRzRnSUhKbGRIVnliaUFvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzUwYjFOMGNtbHVaeTVqWVd4c0tHOWlhbVZqZENrZ1BUMDlJQ2RiYjJKcVpXTjBJRTUxYldKbGNsMG5LU0FtSmx4dUlDQWdJQ0FnSUNBZ0tHOWlhbVZqZENBbElERWdJVDA5SURBZ2ZId2dZMjl0Ylc5dUxtbHpUbVZuWVhScGRtVmFaWEp2S0c5aWFtVmpkQ2twTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRzVsZHlCVWVYQmxLQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanBtYkc5aGRDY3NJSHRjYmlBZ2EybHVaRG9nSjNOallXeGhjaWNzWEc0Z0lISmxjMjlzZG1VNklISmxjMjlzZG1WWllXMXNSbXh2WVhRc1hHNGdJR052Ym5OMGNuVmpkRG9nWTI5dWMzUnlkV04wV1dGdGJFWnNiMkYwTEZ4dUlDQndjbVZrYVdOaGRHVTZJR2x6Um14dllYUXNYRzRnSUhKbGNISmxjMlZ1ZERvZ2NtVndjbVZ6Wlc1MFdXRnRiRVpzYjJGMExGeHVJQ0JrWldaaGRXeDBVM1I1YkdVNklDZHNiM2RsY21OaGMyVW5YRzU5S1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUdOdmJXMXZiaUE5SUhKbGNYVnBjbVVvSnk0dUwyTnZiVzF2YmljcE8xeHVkbUZ5SUZSNWNHVWdJQ0E5SUhKbGNYVnBjbVVvSnk0dUwzUjVjR1VuS1R0Y2JseHVablZ1WTNScGIyNGdhWE5JWlhoRGIyUmxLR01wSUh0Y2JpQWdjbVYwZFhKdUlDZ29NSGd6TUM4cUlEQWdLaThnUEQwZ1l5a2dKaVlnS0dNZ1BEMGdNSGd6T1M4cUlEa2dLaThwS1NCOGZGeHVJQ0FnSUNBZ0lDQWdLQ2d3ZURReEx5b2dRU0FxTHlBOFBTQmpLU0FtSmlBb1l5QThQU0F3ZURRMkx5b2dSaUFxTHlrcElIeDhYRzRnSUNBZ0lDQWdJQ0FvS0RCNE5qRXZLaUJoSUNvdklEdzlJR01wSUNZbUlDaGpJRHc5SURCNE5qWXZLaUJtSUNvdktTazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHbHpUMk4wUTI5a1pTaGpLU0I3WEc0Z0lISmxkSFZ5YmlBb0tEQjRNekF2S2lBd0lDb3ZJRHc5SUdNcElDWW1JQ2hqSUR3OUlEQjRNemN2S2lBM0lDb3ZLU2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2x6UkdWalEyOWtaU2hqS1NCN1hHNGdJSEpsZEhWeWJpQW9LREI0TXpBdktpQXdJQ292SUR3OUlHTXBJQ1ltSUNoaklEdzlJREI0TXprdktpQTVJQ292S1NrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGMyOXNkbVZaWVcxc1NXNTBaV2RsY2loa1lYUmhLU0I3WEc0Z0lHbG1JQ2hrWVhSaElEMDlQU0J1ZFd4c0tTQnlaWFIxY200Z1ptRnNjMlU3WEc1Y2JpQWdkbUZ5SUcxaGVDQTlJR1JoZEdFdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnYVc1a1pYZ2dQU0F3TEZ4dUlDQWdJQ0FnYUdGelJHbG5hWFJ6SUQwZ1ptRnNjMlVzWEc0Z0lDQWdJQ0JqYUR0Y2JseHVJQ0JwWmlBb0lXMWhlQ2tnY21WMGRYSnVJR1poYkhObE8xeHVYRzRnSUdOb0lEMGdaR0YwWVZ0cGJtUmxlRjA3WEc1Y2JpQWdMeThnYzJsbmJseHVJQ0JwWmlBb1kyZ2dQVDA5SUNjdEp5QjhmQ0JqYUNBOVBUMGdKeXNuS1NCN1hHNGdJQ0FnWTJnZ1BTQmtZWFJoV3lzcmFXNWtaWGhkTzF4dUlDQjlYRzVjYmlBZ2FXWWdLR05vSUQwOVBTQW5NQ2NwSUh0Y2JpQWdJQ0F2THlBd1hHNGdJQ0FnYVdZZ0tHbHVaR1Y0SUNzZ01TQTlQVDBnYldGNEtTQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQmphQ0E5SUdSaGRHRmJLeXRwYm1SbGVGMDdYRzVjYmlBZ0lDQXZMeUJpWVhObElESXNJR0poYzJVZ09Dd2dZbUZ6WlNBeE5seHVYRzRnSUNBZ2FXWWdLR05vSUQwOVBTQW5ZaWNwSUh0Y2JpQWdJQ0FnSUM4dklHSmhjMlVnTWx4dUlDQWdJQ0FnYVc1a1pYZ3JLenRjYmx4dUlDQWdJQ0FnWm05eUlDZzdJR2x1WkdWNElEd2diV0Y0T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNBZ0lHTm9JRDBnWkdGMFlWdHBibVJsZUYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUNBOVBUMGdKMThuS1NCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR05vSUNFOVBTQW5NQ2NnSmlZZ1kyZ2dJVDA5SUNjeEp5a2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCb1lYTkVhV2RwZEhNZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR2hoYzBScFoybDBjenRjYmlBZ0lDQjlYRzVjYmx4dUlDQWdJR2xtSUNoamFDQTlQVDBnSjNnbktTQjdYRzRnSUNBZ0lDQXZMeUJpWVhObElERTJYRzRnSUNBZ0lDQnBibVJsZUNzck8xeHVYRzRnSUNBZ0lDQm1iM0lnS0RzZ2FXNWtaWGdnUENCdFlYZzdJR2x1WkdWNEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWTJnZ1BTQmtZWFJoVzJsdVpHVjRYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBblh5Y3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXbHpTR1Y0UTI5a1pTaGtZWFJoTG1Ob1lYSkRiMlJsUVhRb2FXNWtaWGdwS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0JvWVhORWFXZHBkSE1nUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlHaGhjMFJwWjJsMGN6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmlZWE5sSURoY2JpQWdJQ0JtYjNJZ0tEc2dhVzVrWlhnZ1BDQnRZWGc3SUdsdVpHVjRLeXNwSUh0Y2JpQWdJQ0FnSUdOb0lEMGdaR0YwWVZ0cGJtUmxlRjA3WEc0Z0lDQWdJQ0JwWmlBb1kyZ2dQVDA5SUNkZkp5a2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQnBaaUFvSVdselQyTjBRMjlrWlNoa1lYUmhMbU5vWVhKRGIyUmxRWFFvYVc1a1pYZ3BLU2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2FHRnpSR2xuYVhSeklEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHaGhjMFJwWjJsMGN6dGNiaUFnZlZ4dVhHNGdJQzh2SUdKaGMyVWdNVEFnS0dWNFkyVndkQ0F3S1NCdmNpQmlZWE5sSURZd1hHNWNiaUFnWm05eUlDZzdJR2x1WkdWNElEd2diV0Y0T3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnWTJnZ1BTQmtZWFJoVzJsdVpHVjRYVHRjYmlBZ0lDQnBaaUFvWTJnZ1BUMDlJQ2RmSnlrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnYVdZZ0tHTm9JRDA5UFNBbk9pY3BJR0p5WldGck8xeHVJQ0FnSUdsbUlDZ2hhWE5FWldORGIyUmxLR1JoZEdFdVkyaGhja052WkdWQmRDaHBibVJsZUNrcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1SUNBZ0lHaGhjMFJwWjJsMGN5QTlJSFJ5ZFdVN1hHNGdJSDFjYmx4dUlDQnBaaUFvSVdoaGMwUnBaMmwwY3lrZ2NtVjBkWEp1SUdaaGJITmxPMXh1WEc0Z0lDOHZJR2xtSUNGaVlYTmxOakFnTFNCa2IyNWxPMXh1SUNCcFppQW9ZMmdnSVQwOUlDYzZKeWtnY21WMGRYSnVJSFJ5ZFdVN1hHNWNiaUFnTHk4Z1ltRnpaVFl3SUdGc2JXOXpkQ0J1YjNRZ2RYTmxaQ3dnYm04Z2JtVmxaSE1nZEc4Z2IzQjBhVzFwZW1WY2JpQWdjbVYwZFhKdUlDOWVLRHBiTUMwMVhUOWJNQzA1WFNrckpDOHVkR1Z6ZENoa1lYUmhMbk5zYVdObEtHbHVaR1Y0S1NrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdOdmJuTjBjblZqZEZsaGJXeEpiblJsWjJWeUtHUmhkR0VwSUh0Y2JpQWdkbUZ5SUhaaGJIVmxJRDBnWkdGMFlTd2djMmxuYmlBOUlERXNJR05vTENCaVlYTmxMQ0JrYVdkcGRITWdQU0JiWFR0Y2JseHVJQ0JwWmlBb2RtRnNkV1V1YVc1a1pYaFBaaWduWHljcElDRTlQU0F0TVNrZ2UxeHVJQ0FnSUhaaGJIVmxJRDBnZG1Gc2RXVXVjbVZ3YkdGalpTZ3ZYeTluTENBbkp5azdYRzRnSUgxY2JseHVJQ0JqYUNBOUlIWmhiSFZsV3pCZE8xeHVYRzRnSUdsbUlDaGphQ0E5UFQwZ0p5MG5JSHg4SUdOb0lEMDlQU0FuS3ljcElIdGNiaUFnSUNCcFppQW9ZMmdnUFQwOUlDY3RKeWtnYzJsbmJpQTlJQzB4TzF4dUlDQWdJSFpoYkhWbElEMGdkbUZzZFdVdWMyeHBZMlVvTVNrN1hHNGdJQ0FnWTJnZ1BTQjJZV3gxWlZzd1hUdGNiaUFnZlZ4dVhHNGdJR2xtSUNoMllXeDFaU0E5UFQwZ0p6QW5LU0J5WlhSMWNtNGdNRHRjYmx4dUlDQnBaaUFvWTJnZ1BUMDlJQ2N3SnlrZ2UxeHVJQ0FnSUdsbUlDaDJZV3gxWlZzeFhTQTlQVDBnSjJJbktTQnlaWFIxY200Z2MybG5iaUFxSUhCaGNuTmxTVzUwS0haaGJIVmxMbk5zYVdObEtESXBMQ0F5S1R0Y2JpQWdJQ0JwWmlBb2RtRnNkV1ZiTVYwZ1BUMDlJQ2Q0SnlrZ2NtVjBkWEp1SUhOcFoyNGdLaUJ3WVhKelpVbHVkQ2gyWVd4MVpTd2dNVFlwTzF4dUlDQWdJSEpsZEhWeWJpQnphV2R1SUNvZ2NHRnljMlZKYm5Rb2RtRnNkV1VzSURncE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0haaGJIVmxMbWx1WkdWNFQyWW9Kem9uS1NBaFBUMGdMVEVwSUh0Y2JpQWdJQ0IyWVd4MVpTNXpjR3hwZENnbk9pY3BMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLSFlwSUh0Y2JpQWdJQ0FnSUdScFoybDBjeTUxYm5Ob2FXWjBLSEJoY25ObFNXNTBLSFlzSURFd0tTazdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQjJZV3gxWlNBOUlEQTdYRzRnSUNBZ1ltRnpaU0E5SURFN1hHNWNiaUFnSUNCa2FXZHBkSE11Wm05eVJXRmphQ2htZFc1amRHbHZiaUFvWkNrZ2UxeHVJQ0FnSUNBZ2RtRnNkV1VnS3owZ0tHUWdLaUJpWVhObEtUdGNiaUFnSUNBZ0lHSmhjMlVnS2owZ05qQTdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2MybG5iaUFxSUhaaGJIVmxPMXh1WEc0Z0lIMWNibHh1SUNCeVpYUjFjbTRnYzJsbmJpQXFJSEJoY25ObFNXNTBLSFpoYkhWbExDQXhNQ2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2x6U1c1MFpXZGxjaWh2WW1wbFkzUXBJSHRjYmlBZ2NtVjBkWEp1SUNoUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTG1OaGJHd29iMkpxWldOMEtTa2dQVDA5SUNkYmIySnFaV04wSUU1MWJXSmxjbDBuSUNZbVhHNGdJQ0FnSUNBZ0lDQW9iMkpxWldOMElDVWdNU0E5UFQwZ01DQW1KaUFoWTI5dGJXOXVMbWx6VG1WbllYUnBkbVZhWlhKdktHOWlhbVZqZENrcE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUc1bGR5QlVlWEJsS0NkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwcGJuUW5MQ0I3WEc0Z0lHdHBibVE2SUNkelkyRnNZWEluTEZ4dUlDQnlaWE52YkhabE9pQnlaWE52YkhabFdXRnRiRWx1ZEdWblpYSXNYRzRnSUdOdmJuTjBjblZqZERvZ1kyOXVjM1J5ZFdOMFdXRnRiRWx1ZEdWblpYSXNYRzRnSUhCeVpXUnBZMkYwWlRvZ2FYTkpiblJsWjJWeUxGeHVJQ0J5WlhCeVpYTmxiblE2SUh0Y2JpQWdJQ0JpYVc1aGNuazZJQ0FnSUNBZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZENrZ2V5QnlaWFIxY200Z0p6QmlKeUFySUc5aWFtVmpkQzUwYjFOMGNtbHVaeWd5S1RzZ2ZTeGNiaUFnSUNCdlkzUmhiRG9nSUNBZ0lDQWdablZ1WTNScGIyNGdLRzlpYW1WamRDa2dleUJ5WlhSMWNtNGdKekFuSUNBcklHOWlhbVZqZEM1MGIxTjBjbWx1WnlnNEtUc2dmU3hjYmlBZ0lDQmtaV05wYldGc09pQWdJQ0FnWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ2tnZXlCeVpYUjFjbTRnSUNBZ0lDQWdJRzlpYW1WamRDNTBiMU4wY21sdVp5Z3hNQ2s3SUgwc1hHNGdJQ0FnYUdWNFlXUmxZMmx0WVd3NklHWjFibU4wYVc5dUlDaHZZbXBsWTNRcElIc2djbVYwZFhKdUlDY3dlQ2NnS3lCdlltcGxZM1F1ZEc5VGRISnBibWNvTVRZcExuUnZWWEJ3WlhKRFlYTmxLQ2s3SUgxY2JpQWdmU3hjYmlBZ1pHVm1ZWFZzZEZOMGVXeGxPaUFuWkdWamFXMWhiQ2NzWEc0Z0lITjBlV3hsUVd4cFlYTmxjem9nZTF4dUlDQWdJR0pwYm1GeWVUb2dJQ0FnSUNCYklESXNJQ0FuWW1sdUp5QmRMRnh1SUNBZ0lHOWpkR0ZzT2lBZ0lDQWdJQ0JiSURnc0lDQW5iMk4wSnlCZExGeHVJQ0FnSUdSbFkybHRZV3c2SUNBZ0lDQmJJREV3TENBblpHVmpKeUJkTEZ4dUlDQWdJR2hsZUdGa1pXTnBiV0ZzT2lCYklERTJMQ0FuYUdWNEp5QmRYRzRnSUgxY2JuMHBPMXh1SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1MllYSWdaWE53Y21sdFlUdGNibHh1THk4Z1FuSnZkM05sY21sbWFXVmtJSFpsY25OcGIyNGdaRzlsY3lCdWIzUWdhR0YyWlNCbGMzQnlhVzFoWEc0dkwxeHVMeThnTVM0Z1JtOXlJRzV2WkdVdWFuTWdhblZ6ZENCeVpYRjFhWEpsSUcxdlpIVnNaU0JoY3lCa1pYQnpYRzR2THlBeUxpQkdiM0lnWW5KdmQzTmxjaUIwY25rZ2RHOGdjbVZ4ZFdseVpTQnRkV1IxYkdVZ2RtbGhJR1Y0ZEdWeWJtRnNJRUZOUkNCemVYTjBaVzB1WEc0dkx5QWdJQ0JKWmlCdWIzUWdabTkxYm1RZ0xTQjBjbmtnZEc4Z1ptRnNiR0poWTJzZ2RHOGdkMmx1Wkc5M0xtVnpjSEpwYldFdUlFbG1JRzV2ZEZ4dUx5OGdJQ0FnWm05MWJtUWdkRzl2SUMwZ2RHaGxiaUJtWVdsc0lIUnZJSEJoY25ObExseHVMeTljYm5SeWVTQjdYRzRnSUM4dklIZHZjbXRoY205MWJtUWdkRzhnWlhoamJIVmtaU0J3WVdOcllXZGxJR1p5YjIwZ1luSnZkM05sY21sbWVTQnNhWE4wTGx4dUlDQjJZWElnWDNKbGNYVnBjbVVnUFNCeVpYRjFhWEpsTzF4dUlDQmxjM0J5YVcxaElEMGdYM0psY1hWcGNtVW9KMlZ6Y0hKcGJXRW5LVHRjYm4wZ1kyRjBZMmdnS0Y4cElIdGNiaUFnTHlwbmJHOWlZV3dnZDJsdVpHOTNJQ292WEc0Z0lHbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ1pYTndjbWx0WVNBOUlIZHBibVJ2ZHk1bGMzQnlhVzFoTzF4dWZWeHVYRzUyWVhJZ1ZIbHdaU0E5SUhKbGNYVnBjbVVvSnk0dUx5NHVMM1I1Y0dVbktUdGNibHh1Wm5WdVkzUnBiMjRnY21WemIyeDJaVXBoZG1GelkzSnBjSFJHZFc1amRHbHZiaWhrWVhSaEtTQjdYRzRnSUdsbUlDaGtZWFJoSUQwOVBTQnVkV3hzS1NCeVpYUjFjbTRnWm1Gc2MyVTdYRzVjYmlBZ2RISjVJSHRjYmlBZ0lDQjJZWElnYzI5MWNtTmxJRDBnSnlnbklDc2daR0YwWVNBcklDY3BKeXhjYmlBZ0lDQWdJQ0FnWVhOMElDQWdJRDBnWlhOd2NtbHRZUzV3WVhKelpTaHpiM1Z5WTJVc0lIc2djbUZ1WjJVNklIUnlkV1VnZlNrN1hHNWNiaUFnSUNCcFppQW9ZWE4wTG5SNWNHVWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0U5UFNBblVISnZaM0poYlNjZ0lDQWdJQ0FnSUNBZ0lDQWdmSHhjYmlBZ0lDQWdJQ0FnWVhOMExtSnZaSGt1YkdWdVozUm9JQ0FnSUNBZ0lDQWdJQ0FnSUNFOVBTQXhJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZkh4Y2JpQWdJQ0FnSUNBZ1lYTjBMbUp2WkhsYk1GMHVkSGx3WlNBZ0lDQWdJQ0FnSUNBZ0lDRTlQU0FuUlhod2NtVnpjMmx2YmxOMFlYUmxiV1Z1ZENjZ2ZIeGNiaUFnSUNBZ0lDQWdZWE4wTG1KdlpIbGJNRjB1Wlhod2NtVnpjMmx2Ymk1MGVYQmxJQ0U5UFNBblJuVnVZM1JwYjI1RmVIQnlaWE56YVc5dUp5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR05oZEdOb0lDaGxjbklwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdZMjl1YzNSeWRXTjBTbUYyWVhOamNtbHdkRVoxYm1OMGFXOXVLR1JoZEdFcElIdGNiaUFnTHlwcWMyeHBiblFnWlhacGJEcDBjblZsS2k5Y2JseHVJQ0IyWVhJZ2MyOTFjbU5sSUQwZ0p5Z25JQ3NnWkdGMFlTQXJJQ2NwSnl4Y2JpQWdJQ0FnSUdGemRDQWdJQ0E5SUdWemNISnBiV0V1Y0dGeWMyVW9jMjkxY21ObExDQjdJSEpoYm1kbE9pQjBjblZsSUgwcExGeHVJQ0FnSUNBZ2NHRnlZVzF6SUQwZ1cxMHNYRzRnSUNBZ0lDQmliMlI1TzF4dVhHNGdJR2xtSUNoaGMzUXVkSGx3WlNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lUMDlJQ2RRY205bmNtRnRKeUFnSUNBZ0lDQWdJQ0FnSUNCOGZGeHVJQ0FnSUNBZ1lYTjBMbUp2WkhrdWJHVnVaM1JvSUNBZ0lDQWdJQ0FnSUNBZ0lDRTlQU0F4SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZIeGNiaUFnSUNBZ0lHRnpkQzVpYjJSNVd6QmRMblI1Y0dVZ0lDQWdJQ0FnSUNBZ0lDQWhQVDBnSjBWNGNISmxjM05wYjI1VGRHRjBaVzFsYm5RbklIeDhYRzRnSUNBZ0lDQmhjM1F1WW05a2VWc3dYUzVsZUhCeVpYTnphVzl1TG5SNWNHVWdJVDA5SUNkR2RXNWpkR2x2YmtWNGNISmxjM05wYjI0bktTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkR1lXbHNaV1FnZEc4Z2NtVnpiMngyWlNCbWRXNWpkR2x2YmljcE8xeHVJQ0I5WEc1Y2JpQWdZWE4wTG1KdlpIbGJNRjB1Wlhod2NtVnpjMmx2Ymk1d1lYSmhiWE11Wm05eVJXRmphQ2htZFc1amRHbHZiaUFvY0dGeVlXMHBJSHRjYmlBZ0lDQndZWEpoYlhNdWNIVnphQ2h3WVhKaGJTNXVZVzFsS1R0Y2JpQWdmU2s3WEc1Y2JpQWdZbTlrZVNBOUlHRnpkQzVpYjJSNVd6QmRMbVY0Y0hKbGMzTnBiMjR1WW05a2VTNXlZVzVuWlR0Y2JseHVJQ0F2THlCRmMzQnlhVzFoSjNNZ2NtRnVaMlZ6SUdsdVkyeDFaR1VnZEdobElHWnBjbk4wSUNkN0p5QmhibVFnZEdobElHeGhjM1FnSjMwbklHTm9ZWEpoWTNSbGNuTWdiMjVjYmlBZ0x5OGdablZ1WTNScGIyNGdaWGh3Y21WemMybHZibk11SUZOdklHTjFkQ0IwYUdWdElHOTFkQzVjYmlBZ0x5cGxjMnhwYm5RdFpHbHpZV0pzWlNCdWJ5MXVaWGN0Wm5WdVl5b3ZYRzRnSUhKbGRIVnliaUJ1WlhjZ1JuVnVZM1JwYjI0b2NHRnlZVzF6TENCemIzVnlZMlV1YzJ4cFkyVW9ZbTlrZVZzd1hTQXJJREVzSUdKdlpIbGJNVjBnTFNBeEtTazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxjSEpsYzJWdWRFcGhkbUZ6WTNKcGNIUkdkVzVqZEdsdmJpaHZZbXBsWTNRZ0x5b3NJSE4wZVd4bEtpOHBJSHRjYmlBZ2NtVjBkWEp1SUc5aWFtVmpkQzUwYjFOMGNtbHVaeWdwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJwYzBaMWJtTjBhVzl1S0c5aWFtVmpkQ2tnZTF4dUlDQnlaWFIxY200Z1QySnFaV04wTG5CeWIzUnZkSGx3WlM1MGIxTjBjbWx1Wnk1allXeHNLRzlpYW1WamRDa2dQVDA5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNjN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYm1WM0lGUjVjR1VvSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T21wekwyWjFibU4wYVc5dUp5d2dlMXh1SUNCcmFXNWtPaUFuYzJOaGJHRnlKeXhjYmlBZ2NtVnpiMngyWlRvZ2NtVnpiMngyWlVwaGRtRnpZM0pwY0hSR2RXNWpkR2x2Yml4Y2JpQWdZMjl1YzNSeWRXTjBPaUJqYjI1emRISjFZM1JLWVhaaGMyTnlhWEIwUm5WdVkzUnBiMjRzWEc0Z0lIQnlaV1JwWTJGMFpUb2dhWE5HZFc1amRHbHZiaXhjYmlBZ2NtVndjbVZ6Wlc1ME9pQnlaWEJ5WlhObGJuUktZWFpoYzJOeWFYQjBSblZ1WTNScGIyNWNibjBwTzF4dUlpd2lKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVkhsd1pTQTlJSEpsY1hWcGNtVW9KeTR1THk0dUwzUjVjR1VuS1R0Y2JseHVablZ1WTNScGIyNGdjbVZ6YjJ4MlpVcGhkbUZ6WTNKcGNIUlNaV2RGZUhBb1pHRjBZU2tnZTF4dUlDQnBaaUFvWkdGMFlTQTlQVDBnYm5Wc2JDa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQnBaaUFvWkdGMFlTNXNaVzVuZEdnZ1BUMDlJREFwSUhKbGRIVnliaUJtWVd4elpUdGNibHh1SUNCMllYSWdjbVZuWlhod0lEMGdaR0YwWVN4Y2JpQWdJQ0FnSUhSaGFXd2dJQ0E5SUM5Y1hDOG9XMmRwYlYwcUtTUXZMbVY0WldNb1pHRjBZU2tzWEc0Z0lDQWdJQ0J0YjJScFptbGxjbk1nUFNBbkp6dGNibHh1SUNBdkx5QnBaaUJ5WldkbGVIQWdjM1JoY25SeklIZHBkR2dnSnk4bklHbDBJR05oYmlCb1lYWmxJRzF2WkdsbWFXVnljeUJoYm1RZ2JYVnpkQ0JpWlNCd2NtOXdaWEpzZVNCamJHOXpaV1JjYmlBZ0x5OGdZQzltYjI4dloybHRZQ0F0SUcxdlpHbG1hV1Z5Y3lCMFlXbHNJR05oYmlCaVpTQnRZWGhwYlhWdElETWdZMmhoY25OY2JpQWdhV1lnS0hKbFoyVjRjRnN3WFNBOVBUMGdKeThuS1NCN1hHNGdJQ0FnYVdZZ0tIUmhhV3dwSUcxdlpHbG1hV1Z5Y3lBOUlIUmhhV3hiTVYwN1hHNWNiaUFnSUNCcFppQW9iVzlrYVdacFpYSnpMbXhsYm1kMGFDQStJRE1wSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBdkx5QnBaaUJsZUhCeVpYTnphVzl1SUhOMFlYSjBjeUIzYVhSb0lDOHNJR2x6SUhOb2IzVnNaQ0JpWlNCd2NtOXdaWEpzZVNCMFpYSnRhVzVoZEdWa1hHNGdJQ0FnYVdZZ0tISmxaMlY0Y0Z0eVpXZGxlSEF1YkdWdVozUm9JQzBnYlc5a2FXWnBaWEp6TG14bGJtZDBhQ0F0SURGZElDRTlQU0FuTHljcElISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUIwY25WbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCamIyNXpkSEoxWTNSS1lYWmhjMk55YVhCMFVtVm5SWGh3S0dSaGRHRXBJSHRjYmlBZ2RtRnlJSEpsWjJWNGNDQTlJR1JoZEdFc1hHNGdJQ0FnSUNCMFlXbHNJQ0FnUFNBdlhGd3ZLRnRuYVcxZEtpa2tMeTVsZUdWaktHUmhkR0VwTEZ4dUlDQWdJQ0FnYlc5a2FXWnBaWEp6SUQwZ0p5YzdYRzVjYmlBZ0x5OGdZQzltYjI4dloybHRZQ0F0SUhSaGFXd2dZMkZ1SUdKbElHMWhlR2x0ZFcwZ05DQmphR0Z5YzF4dUlDQnBaaUFvY21WblpYaHdXekJkSUQwOVBTQW5MeWNwSUh0Y2JpQWdJQ0JwWmlBb2RHRnBiQ2tnYlc5a2FXWnBaWEp6SUQwZ2RHRnBiRnN4WFR0Y2JpQWdJQ0J5WldkbGVIQWdQU0J5WldkbGVIQXVjMnhwWTJVb01Td2djbVZuWlhod0xteGxibWQwYUNBdElHMXZaR2xtYVdWeWN5NXNaVzVuZEdnZ0xTQXhLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUJ1WlhjZ1VtVm5SWGh3S0hKbFoyVjRjQ3dnYlc5a2FXWnBaWEp6S1R0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21Wd2NtVnpaVzUwU21GMllYTmpjbWx3ZEZKbFowVjRjQ2h2WW1wbFkzUWdMeW9zSUhOMGVXeGxLaThwSUh0Y2JpQWdkbUZ5SUhKbGMzVnNkQ0E5SUNjdkp5QXJJRzlpYW1WamRDNXpiM1Z5WTJVZ0t5QW5MeWM3WEc1Y2JpQWdhV1lnS0c5aWFtVmpkQzVuYkc5aVlXd3BJSEpsYzNWc2RDQXJQU0FuWnljN1hHNGdJR2xtSUNodlltcGxZM1F1YlhWc2RHbHNhVzVsS1NCeVpYTjFiSFFnS3owZ0oyMG5PMXh1SUNCcFppQW9iMkpxWldOMExtbG5ibTl5WlVOaGMyVXBJSEpsYzNWc2RDQXJQU0FuYVNjN1hHNWNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2FYTlNaV2RGZUhBb2IySnFaV04wS1NCN1hHNGdJSEpsZEhWeWJpQlBZbXBsWTNRdWNISnZkRzkwZVhCbExuUnZVM1J5YVc1bkxtTmhiR3dvYjJKcVpXTjBLU0E5UFQwZ0oxdHZZbXBsWTNRZ1VtVm5SWGh3WFNjN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYm1WM0lGUjVjR1VvSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T21wekwzSmxaMlY0Y0Njc0lIdGNiaUFnYTJsdVpEb2dKM05qWVd4aGNpY3NYRzRnSUhKbGMyOXNkbVU2SUhKbGMyOXNkbVZLWVhaaGMyTnlhWEIwVW1WblJYaHdMRnh1SUNCamIyNXpkSEoxWTNRNklHTnZibk4wY25WamRFcGhkbUZ6WTNKcGNIUlNaV2RGZUhBc1hHNGdJSEJ5WldScFkyRjBaVG9nYVhOU1pXZEZlSEFzWEc0Z0lISmxjSEpsYzJWdWREb2djbVZ3Y21WelpXNTBTbUYyWVhOamNtbHdkRkpsWjBWNGNGeHVmU2s3WEc0aUxDSW5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JuWmhjaUJVZVhCbElEMGdjbVZ4ZFdseVpTZ25MaTR2TGk0dmRIbHdaU2NwTzF4dVhHNW1kVzVqZEdsdmJpQnlaWE52YkhabFNtRjJZWE5qY21sd2RGVnVaR1ZtYVc1bFpDZ3BJSHRjYmlBZ2NtVjBkWEp1SUhSeWRXVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnZibk4wY25WamRFcGhkbUZ6WTNKcGNIUlZibVJsWm1sdVpXUW9LU0I3WEc0Z0lDOHFaWE5zYVc1MExXUnBjMkZpYkdVZ2JtOHRkVzVrWldacGJtVmtLaTljYmlBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnY21Wd2NtVnpaVzUwU21GMllYTmpjbWx3ZEZWdVpHVm1hVzVsWkNncElIdGNiaUFnY21WMGRYSnVJQ2NuTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJwYzFWdVpHVm1hVzVsWkNodlltcGxZM1FwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCdlltcGxZM1FnUFQwOUlDZDFibVJsWm1sdVpXUW5PMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHNWxkeUJVZVhCbEtDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcHFjeTkxYm1SbFptbHVaV1FuTENCN1hHNGdJR3RwYm1RNklDZHpZMkZzWVhJbkxGeHVJQ0J5WlhOdmJIWmxPaUJ5WlhOdmJIWmxTbUYyWVhOamNtbHdkRlZ1WkdWbWFXNWxaQ3hjYmlBZ1kyOXVjM1J5ZFdOME9pQmpiMjV6ZEhKMVkzUktZWFpoYzJOeWFYQjBWVzVrWldacGJtVmtMRnh1SUNCd2NtVmthV05oZEdVNklHbHpWVzVrWldacGJtVmtMRnh1SUNCeVpYQnlaWE5sYm5RNklISmxjSEpsYzJWdWRFcGhkbUZ6WTNKcGNIUlZibVJsWm1sdVpXUmNibjBwTzF4dUlpd2lKM1Z6WlNCemRISnBZM1FuTzF4dVhHNTJZWElnVkhsd1pTQTlJSEpsY1hWcGNtVW9KeTR1TDNSNWNHVW5LVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCdVpYY2dWSGx3WlNnbmRHRm5PbmxoYld3dWIzSm5MREl3TURJNmJXRndKeXdnZTF4dUlDQnJhVzVrT2lBbmJXRndjR2x1Wnljc1hHNGdJR052Ym5OMGNuVmpkRG9nWm5WdVkzUnBiMjRnS0dSaGRHRXBJSHNnY21WMGRYSnVJR1JoZEdFZ0lUMDlJRzUxYkd3Z1B5QmtZWFJoSURvZ2UzMDdJSDFjYm4wcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzUyWVhJZ1ZIbHdaU0E5SUhKbGNYVnBjbVVvSnk0dUwzUjVjR1VuS1R0Y2JseHVablZ1WTNScGIyNGdjbVZ6YjJ4MlpWbGhiV3hOWlhKblpTaGtZWFJoS1NCN1hHNGdJSEpsZEhWeWJpQmtZWFJoSUQwOVBTQW5QRHduSUh4OElHUmhkR0VnUFQwOUlHNTFiR3c3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdibVYzSUZSNWNHVW9KM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbTFsY21kbEp5d2dlMXh1SUNCcmFXNWtPaUFuYzJOaGJHRnlKeXhjYmlBZ2NtVnpiMngyWlRvZ2NtVnpiMngyWlZsaGJXeE5aWEpuWlZ4dWZTazdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlVlWEJsSUQwZ2NtVnhkV2x5WlNnbkxpNHZkSGx3WlNjcE8xeHVYRzVtZFc1amRHbHZiaUJ5WlhOdmJIWmxXV0Z0YkU1MWJHd29aR0YwWVNrZ2UxeHVJQ0JwWmlBb1pHRjBZU0E5UFQwZ2JuVnNiQ2tnY21WMGRYSnVJSFJ5ZFdVN1hHNWNiaUFnZG1GeUlHMWhlQ0E5SUdSaGRHRXViR1Z1WjNSb08xeHVYRzRnSUhKbGRIVnliaUFvYldGNElEMDlQU0F4SUNZbUlHUmhkR0VnUFQwOUlDZCtKeWtnZkh4Y2JpQWdJQ0FnSUNBZ0lDaHRZWGdnUFQwOUlEUWdKaVlnS0dSaGRHRWdQVDA5SUNkdWRXeHNKeUI4ZkNCa1lYUmhJRDA5UFNBblRuVnNiQ2NnZkh3Z1pHRjBZU0E5UFQwZ0owNVZURXduS1NrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdOdmJuTjBjblZqZEZsaGJXeE9kV3hzS0NrZ2UxeHVJQ0J5WlhSMWNtNGdiblZzYkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYVhOT2RXeHNLRzlpYW1WamRDa2dlMXh1SUNCeVpYUjFjbTRnYjJKcVpXTjBJRDA5UFNCdWRXeHNPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHNWxkeUJVZVhCbEtDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcHVkV3hzSnl3Z2UxeHVJQ0JyYVc1a09pQW5jMk5oYkdGeUp5eGNiaUFnY21WemIyeDJaVG9nY21WemIyeDJaVmxoYld4T2RXeHNMRnh1SUNCamIyNXpkSEoxWTNRNklHTnZibk4wY25WamRGbGhiV3hPZFd4c0xGeHVJQ0J3Y21Wa2FXTmhkR1U2SUdselRuVnNiQ3hjYmlBZ2NtVndjbVZ6Wlc1ME9pQjdYRzRnSUNBZ1kyRnViMjVwWTJGc09pQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUFuZmljN0lDQWdJSDBzWEc0Z0lDQWdiRzkzWlhKallYTmxPaUJtZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlBbmJuVnNiQ2M3SUgwc1hHNGdJQ0FnZFhCd1pYSmpZWE5sT2lCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQW5UbFZNVENjN0lIMHNYRzRnSUNBZ1kyRnRaV3hqWVhObE9pQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUFuVG5Wc2JDYzdJSDFjYmlBZ2ZTeGNiaUFnWkdWbVlYVnNkRk4wZVd4bE9pQW5iRzkzWlhKallYTmxKMXh1ZlNrN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCVWVYQmxJRDBnY21WeGRXbHlaU2duTGk0dmRIbHdaU2NwTzF4dVhHNTJZWElnWDJoaGMwOTNibEJ5YjNCbGNuUjVJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVUdGNiblpoY2lCZmRHOVRkSEpwYm1jZ0lDQWdJQ0FnUFNCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTzF4dVhHNW1kVzVqZEdsdmJpQnlaWE52YkhabFdXRnRiRTl0WVhBb1pHRjBZU2tnZTF4dUlDQnBaaUFvWkdGMFlTQTlQVDBnYm5Wc2JDa2djbVYwZFhKdUlIUnlkV1U3WEc1Y2JpQWdkbUZ5SUc5aWFtVmpkRXRsZVhNZ1BTQmJYU3dnYVc1a1pYZ3NJR3hsYm1kMGFDd2djR0ZwY2l3Z2NHRnBja3RsZVN3Z2NHRnBja2hoYzB0bGVTeGNiaUFnSUNBZ0lHOWlhbVZqZENBOUlHUmhkR0U3WEc1Y2JpQWdabTl5SUNocGJtUmxlQ0E5SURBc0lHeGxibWQwYUNBOUlHOWlhbVZqZEM1c1pXNW5kR2c3SUdsdVpHVjRJRHdnYkdWdVozUm9PeUJwYm1SbGVDQXJQU0F4S1NCN1hHNGdJQ0FnY0dGcGNpQTlJRzlpYW1WamRGdHBibVJsZUYwN1hHNGdJQ0FnY0dGcGNraGhjMHRsZVNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnYVdZZ0tGOTBiMU4wY21sdVp5NWpZV3hzS0hCaGFYSXBJQ0U5UFNBblcyOWlhbVZqZENCUFltcGxZM1JkSnlrZ2NtVjBkWEp1SUdaaGJITmxPMXh1WEc0Z0lDQWdabTl5SUNod1lXbHlTMlY1SUdsdUlIQmhhWElwSUh0Y2JpQWdJQ0FnSUdsbUlDaGZhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h3WVdseUxDQndZV2x5UzJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYQmhhWEpJWVhOTFpYa3BJSEJoYVhKSVlYTkxaWGtnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0JsYkhObElISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSVhCaGFYSklZWE5MWlhrcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJR2xtSUNodlltcGxZM1JMWlhsekxtbHVaR1Y0VDJZb2NHRnBja3RsZVNrZ1BUMDlJQzB4S1NCdlltcGxZM1JMWlhsekxuQjFjMmdvY0dGcGNrdGxlU2s3WEc0Z0lDQWdaV3h6WlNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWTI5dWMzUnlkV04wV1dGdGJFOXRZWEFvWkdGMFlTa2dlMXh1SUNCeVpYUjFjbTRnWkdGMFlTQWhQVDBnYm5Wc2JDQS9JR1JoZEdFZ09pQmJYVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnVaWGNnVkhsd1pTZ25kR0ZuT25saGJXd3ViM0puTERJd01ESTZiMjFoY0Njc0lIdGNiaUFnYTJsdVpEb2dKM05sY1hWbGJtTmxKeXhjYmlBZ2NtVnpiMngyWlRvZ2NtVnpiMngyWlZsaGJXeFBiV0Z3TEZ4dUlDQmpiMjV6ZEhKMVkzUTZJR052Ym5OMGNuVmpkRmxoYld4UGJXRndYRzU5S1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVkbUZ5SUZSNWNHVWdQU0J5WlhGMWFYSmxLQ2N1TGk5MGVYQmxKeWs3WEc1Y2JuWmhjaUJmZEc5VGRISnBibWNnUFNCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTzF4dVhHNW1kVzVqZEdsdmJpQnlaWE52YkhabFdXRnRiRkJoYVhKektHUmhkR0VwSUh0Y2JpQWdhV1lnS0dSaGRHRWdQVDA5SUc1MWJHd3BJSEpsZEhWeWJpQjBjblZsTzF4dVhHNGdJSFpoY2lCcGJtUmxlQ3dnYkdWdVozUm9MQ0J3WVdseUxDQnJaWGx6TENCeVpYTjFiSFFzWEc0Z0lDQWdJQ0J2WW1wbFkzUWdQU0JrWVhSaE8xeHVYRzRnSUhKbGMzVnNkQ0E5SUc1bGR5QkJjbkpoZVNodlltcGxZM1F1YkdWdVozUm9LVHRjYmx4dUlDQm1iM0lnS0dsdVpHVjRJRDBnTUN3Z2JHVnVaM1JvSUQwZ2IySnFaV04wTG14bGJtZDBhRHNnYVc1a1pYZ2dQQ0JzWlc1bmRHZzdJR2x1WkdWNElDczlJREVwSUh0Y2JpQWdJQ0J3WVdseUlEMGdiMkpxWldOMFcybHVaR1Y0WFR0Y2JseHVJQ0FnSUdsbUlDaGZkRzlUZEhKcGJtY3VZMkZzYkNod1lXbHlLU0FoUFQwZ0oxdHZZbXBsWTNRZ1QySnFaV04wWFNjcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJR3RsZVhNZ1BTQlBZbXBsWTNRdWEyVjVjeWh3WVdseUtUdGNibHh1SUNBZ0lHbG1JQ2hyWlhsekxteGxibWQwYUNBaFBUMGdNU2tnY21WMGRYSnVJR1poYkhObE8xeHVYRzRnSUNBZ2NtVnpkV3gwVzJsdVpHVjRYU0E5SUZzZ2EyVjVjMXN3WFN3Z2NHRnBjbHRyWlhseld6QmRYU0JkTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhSeWRXVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnZibk4wY25WamRGbGhiV3hRWVdseWN5aGtZWFJoS1NCN1hHNGdJR2xtSUNoa1lYUmhJRDA5UFNCdWRXeHNLU0J5WlhSMWNtNGdXMTA3WEc1Y2JpQWdkbUZ5SUdsdVpHVjRMQ0JzWlc1bmRHZ3NJSEJoYVhJc0lHdGxlWE1zSUhKbGMzVnNkQ3hjYmlBZ0lDQWdJRzlpYW1WamRDQTlJR1JoZEdFN1hHNWNiaUFnY21WemRXeDBJRDBnYm1WM0lFRnljbUY1S0c5aWFtVmpkQzVzWlc1bmRHZ3BPMXh1WEc0Z0lHWnZjaUFvYVc1a1pYZ2dQU0F3TENCc1pXNW5kR2dnUFNCdlltcGxZM1F1YkdWdVozUm9PeUJwYm1SbGVDQThJR3hsYm1kMGFEc2dhVzVrWlhnZ0t6MGdNU2tnZTF4dUlDQWdJSEJoYVhJZ1BTQnZZbXBsWTNSYmFXNWtaWGhkTzF4dVhHNGdJQ0FnYTJWNWN5QTlJRTlpYW1WamRDNXJaWGx6S0hCaGFYSXBPMXh1WEc0Z0lDQWdjbVZ6ZFd4MFcybHVaR1Y0WFNBOUlGc2dhMlY1YzFzd1hTd2djR0ZwY2x0clpYbHpXekJkWFNCZE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0J1WlhjZ1ZIbHdaU2duZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2Y0dGcGNuTW5MQ0I3WEc0Z0lHdHBibVE2SUNkelpYRjFaVzVqWlNjc1hHNGdJSEpsYzI5c2RtVTZJSEpsYzI5c2RtVlpZVzFzVUdGcGNuTXNYRzRnSUdOdmJuTjBjblZqZERvZ1kyOXVjM1J5ZFdOMFdXRnRiRkJoYVhKelhHNTlLVHRjYmlJc0lpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRlI1Y0dVZ1BTQnlaWEYxYVhKbEtDY3VMaTkwZVhCbEp5azdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYm1WM0lGUjVjR1VvSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T25ObGNTY3NJSHRjYmlBZ2EybHVaRG9nSjNObGNYVmxibU5sSnl4Y2JpQWdZMjl1YzNSeWRXTjBPaUJtZFc1amRHbHZiaUFvWkdGMFlTa2dleUJ5WlhSMWNtNGdaR0YwWVNBaFBUMGdiblZzYkNBL0lHUmhkR0VnT2lCYlhUc2dmVnh1ZlNrN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiblpoY2lCVWVYQmxJRDBnY21WeGRXbHlaU2duTGk0dmRIbHdaU2NwTzF4dVhHNTJZWElnWDJoaGMwOTNibEJ5YjNCbGNuUjVJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVUdGNibHh1Wm5WdVkzUnBiMjRnY21WemIyeDJaVmxoYld4VFpYUW9aR0YwWVNrZ2UxeHVJQ0JwWmlBb1pHRjBZU0E5UFQwZ2JuVnNiQ2tnY21WMGRYSnVJSFJ5ZFdVN1hHNWNiaUFnZG1GeUlHdGxlU3dnYjJKcVpXTjBJRDBnWkdGMFlUdGNibHh1SUNCbWIzSWdLR3RsZVNCcGJpQnZZbXBsWTNRcElIdGNiaUFnSUNCcFppQW9YMmhoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvYjJKcVpXTjBMQ0JyWlhrcEtTQjdYRzRnSUNBZ0lDQnBaaUFvYjJKcVpXTjBXMnRsZVYwZ0lUMDlJRzUxYkd3cElISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWTI5dWMzUnlkV04wV1dGdGJGTmxkQ2hrWVhSaEtTQjdYRzRnSUhKbGRIVnliaUJrWVhSaElDRTlQU0J1ZFd4c0lEOGdaR0YwWVNBNklIdDlPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHNWxkeUJVZVhCbEtDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcHpaWFFuTENCN1hHNGdJR3RwYm1RNklDZHRZWEJ3YVc1bkp5eGNiaUFnY21WemIyeDJaVG9nY21WemIyeDJaVmxoYld4VFpYUXNYRzRnSUdOdmJuTjBjblZqZERvZ1kyOXVjM1J5ZFdOMFdXRnRiRk5sZEZ4dWZTazdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYm5aaGNpQlVlWEJsSUQwZ2NtVnhkV2x5WlNnbkxpNHZkSGx3WlNjcE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRzVsZHlCVWVYQmxLQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanB6ZEhJbkxDQjdYRzRnSUd0cGJtUTZJQ2R6WTJGc1lYSW5MRnh1SUNCamIyNXpkSEoxWTNRNklHWjFibU4wYVc5dUlDaGtZWFJoS1NCN0lISmxkSFZ5YmlCa1lYUmhJQ0U5UFNCdWRXeHNJRDhnWkdGMFlTQTZJQ2NuT3lCOVhHNTlLVHRjYmlJc0lpZDFjMlVnYzNSeWFXTjBKenRjYmx4dWRtRnlJRlI1Y0dVZ1BTQnlaWEYxYVhKbEtDY3VMaTkwZVhCbEp5azdYRzVjYm5aaGNpQlpRVTFNWDBSQlZFVmZVa1ZIUlZoUUlEMGdibVYzSUZKbFowVjRjQ2hjYmlBZ0oxNG9XekF0T1YxYk1DMDVYVnN3TFRsZFd6QXRPVjBwSnlBZ0lDQWdJQ0FnSUNBcklDOHZJRnN4WFNCNVpXRnlYRzRnSUNjdEtGc3dMVGxkV3pBdE9WMHBKeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS3lBdkx5QmJNbDBnYlc5dWRHaGNiaUFnSnkwb1d6QXRPVjFiTUMwNVhTa2tKeWs3SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklGc3pYU0JrWVhsY2JseHVkbUZ5SUZsQlRVeGZWRWxOUlZOVVFVMVFYMUpGUjBWWVVDQTlJRzVsZHlCU1pXZEZlSEFvWEc0Z0lDZGVLRnN3TFRsZFd6QXRPVjFiTUMwNVhWc3dMVGxkS1NjZ0lDQWdJQ0FnSUNBZ0t5QXZMeUJiTVYwZ2VXVmhjbHh1SUNBbkxTaGJNQzA1WFZzd0xUbGRQeWtuSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNzZ0x5OGdXekpkSUcxdmJuUm9YRzRnSUNjdEtGc3dMVGxkV3pBdE9WMC9LU2NnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS3lBdkx5QmJNMTBnWkdGNVhHNGdJQ2NvUHpwYlZIUmRmRnNnWEZ4Y1hIUmRLeWtuSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FySUM4dklDNHVMbHh1SUNBbktGc3dMVGxkV3pBdE9WMC9LU2NnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNzZ0x5OGdXelJkSUdodmRYSmNiaUFnSnpvb1d6QXRPVjFiTUMwNVhTa25JQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FySUM4dklGczFYU0J0YVc1MWRHVmNiaUFnSnpvb1d6QXRPVjFiTUMwNVhTa25JQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FySUM4dklGczJYU0J6WldOdmJtUmNiaUFnSnlnL09seGNYRnd1S0Zzd0xUbGRLaWtwUHljZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNzZ0x5OGdXemRkSUdaeVlXTjBhVzl1WEc0Z0lDY29QenBiSUZ4Y1hGeDBYU29vV253b1d5MHJYU2tvV3pBdE9WMWJNQzA1WFQ4cEp5QXJJQzh2SUZzNFhTQjBlaUJiT1YwZ2RIcGZjMmxuYmlCYk1UQmRJSFI2WDJodmRYSmNiaUFnSnlnL09qb29XekF0T1YxYk1DMDVYU2twUHlrcFB5UW5LVHNnSUNBZ0lDQWdJQ0FnSUM4dklGc3hNVjBnZEhwZmJXbHVkWFJsWEc1Y2JtWjFibU4wYVc5dUlISmxjMjlzZG1WWllXMXNWR2x0WlhOMFlXMXdLR1JoZEdFcElIdGNiaUFnYVdZZ0tHUmhkR0VnUFQwOUlHNTFiR3dwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnYVdZZ0tGbEJUVXhmUkVGVVJWOVNSVWRGV0ZBdVpYaGxZeWhrWVhSaEtTQWhQVDBnYm5Wc2JDa2djbVYwZFhKdUlIUnlkV1U3WEc0Z0lHbG1JQ2haUVUxTVgxUkpUVVZUVkVGTlVGOVNSVWRGV0ZBdVpYaGxZeWhrWVhSaEtTQWhQVDBnYm5Wc2JDa2djbVYwZFhKdUlIUnlkV1U3WEc0Z0lISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JseHVablZ1WTNScGIyNGdZMjl1YzNSeWRXTjBXV0Z0YkZScGJXVnpkR0Z0Y0Noa1lYUmhLU0I3WEc0Z0lIWmhjaUJ0WVhSamFDd2dlV1ZoY2l3Z2JXOXVkR2dzSUdSaGVTd2dhRzkxY2l3Z2JXbHVkWFJsTENCelpXTnZibVFzSUdaeVlXTjBhVzl1SUQwZ01DeGNiaUFnSUNBZ0lHUmxiSFJoSUQwZ2JuVnNiQ3dnZEhwZmFHOTFjaXdnZEhwZmJXbHVkWFJsTENCa1lYUmxPMXh1WEc0Z0lHMWhkR05vSUQwZ1dVRk5URjlFUVZSRlgxSkZSMFZZVUM1bGVHVmpLR1JoZEdFcE8xeHVJQ0JwWmlBb2JXRjBZMmdnUFQwOUlHNTFiR3dwSUcxaGRHTm9JRDBnV1VGTlRGOVVTVTFGVTFSQlRWQmZVa1ZIUlZoUUxtVjRaV01vWkdGMFlTazdYRzVjYmlBZ2FXWWdLRzFoZEdOb0lEMDlQU0J1ZFd4c0tTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owUmhkR1VnY21WemIyeDJaU0JsY25KdmNpY3BPMXh1WEc0Z0lDOHZJRzFoZEdOb09pQmJNVjBnZVdWaGNpQmJNbDBnYlc5dWRHZ2dXek5kSUdSaGVWeHVYRzRnSUhsbFlYSWdQU0FyS0cxaGRHTm9XekZkS1R0Y2JpQWdiVzl1ZEdnZ1BTQXJLRzFoZEdOb1d6SmRLU0F0SURFN0lDOHZJRXBUSUcxdmJuUm9JSE4wWVhKMGN5QjNhWFJvSURCY2JpQWdaR0Y1SUQwZ0t5aHRZWFJqYUZzelhTazdYRzVjYmlBZ2FXWWdLQ0Z0WVhSamFGczBYU2tnZXlBdkx5QnVieUJvYjNWeVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCRVlYUmxLRVJoZEdVdVZWUkRLSGxsWVhJc0lHMXZiblJvTENCa1lYa3BLVHRjYmlBZ2ZWeHVYRzRnSUM4dklHMWhkR05vT2lCYk5GMGdhRzkxY2lCYk5WMGdiV2x1ZFhSbElGczJYU0J6WldOdmJtUWdXemRkSUdaeVlXTjBhVzl1WEc1Y2JpQWdhRzkxY2lBOUlDc29iV0YwWTJoYk5GMHBPMXh1SUNCdGFXNTFkR1VnUFNBcktHMWhkR05vV3pWZEtUdGNiaUFnYzJWamIyNWtJRDBnS3lodFlYUmphRnMyWFNrN1hHNWNiaUFnYVdZZ0tHMWhkR05vV3pkZEtTQjdYRzRnSUNBZ1puSmhZM1JwYjI0Z1BTQnRZWFJqYUZzM1hTNXpiR2xqWlNnd0xDQXpLVHRjYmlBZ0lDQjNhR2xzWlNBb1puSmhZM1JwYjI0dWJHVnVaM1JvSUR3Z015a2dleUF2THlCdGFXeHNhUzF6WldOdmJtUnpYRzRnSUNBZ0lDQm1jbUZqZEdsdmJpQXJQU0FuTUNjN1hHNGdJQ0FnZlZ4dUlDQWdJR1p5WVdOMGFXOXVJRDBnSzJaeVlXTjBhVzl1TzF4dUlDQjlYRzVjYmlBZ0x5OGdiV0YwWTJnNklGczRYU0IwZWlCYk9WMGdkSHBmYzJsbmJpQmJNVEJkSUhSNlgyaHZkWElnV3pFeFhTQjBlbDl0YVc1MWRHVmNibHh1SUNCcFppQW9iV0YwWTJoYk9WMHBJSHRjYmlBZ0lDQjBlbDlvYjNWeUlEMGdLeWh0WVhSamFGc3hNRjBwTzF4dUlDQWdJSFI2WDIxcGJuVjBaU0E5SUNzb2JXRjBZMmhiTVRGZElIeDhJREFwTzF4dUlDQWdJR1JsYkhSaElEMGdLSFI2WDJodmRYSWdLaUEyTUNBcklIUjZYMjFwYm5WMFpTa2dLaUEyTURBd01Ec2dMeThnWkdWc2RHRWdhVzRnYldsc2FTMXpaV052Ym1SelhHNGdJQ0FnYVdZZ0tHMWhkR05vV3psZElEMDlQU0FuTFNjcElHUmxiSFJoSUQwZ0xXUmxiSFJoTzF4dUlDQjlYRzVjYmlBZ1pHRjBaU0E5SUc1bGR5QkVZWFJsS0VSaGRHVXVWVlJES0hsbFlYSXNJRzF2Ym5Sb0xDQmtZWGtzSUdodmRYSXNJRzFwYm5WMFpTd2djMlZqYjI1a0xDQm1jbUZqZEdsdmJpa3BPMXh1WEc0Z0lHbG1JQ2hrWld4MFlTa2daR0YwWlM1elpYUlVhVzFsS0dSaGRHVXVaMlYwVkdsdFpTZ3BJQzBnWkdWc2RHRXBPMXh1WEc0Z0lISmxkSFZ5YmlCa1lYUmxPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnlaWEJ5WlhObGJuUlpZVzFzVkdsdFpYTjBZVzF3S0c5aWFtVmpkQ0F2S2l3Z2MzUjViR1VxTHlrZ2UxeHVJQ0J5WlhSMWNtNGdiMkpxWldOMExuUnZTVk5QVTNSeWFXNW5LQ2s3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdibVYzSUZSNWNHVW9KM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPblJwYldWemRHRnRjQ2NzSUh0Y2JpQWdhMmx1WkRvZ0ozTmpZV3hoY2ljc1hHNGdJSEpsYzI5c2RtVTZJSEpsYzI5c2RtVlpZVzFzVkdsdFpYTjBZVzF3TEZ4dUlDQmpiMjV6ZEhKMVkzUTZJR052Ym5OMGNuVmpkRmxoYld4VWFXMWxjM1JoYlhBc1hHNGdJR2x1YzNSaGJtTmxUMlk2SUVSaGRHVXNYRzRnSUhKbGNISmxjMlZ1ZERvZ2NtVndjbVZ6Wlc1MFdXRnRiRlJwYldWemRHRnRjRnh1ZlNrN1hHNGlMQ0oyWVhJZ1ltRnpaVWx1WkdWNFQyWWdQU0J5WlhGMWFYSmxLQ2N1TGk5cGJuUmxjbTVoYkM5aVlYTmxTVzVrWlhoUFppY3BMRnh1SUNBZ0lHSnBibUZ5ZVVsdVpHVjRJRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dlltbHVZWEo1U1c1a1pYZ25LVHRjYmx4dUx5b2dUbUYwYVhabElHMWxkR2h2WkNCeVpXWmxjbVZ1WTJWeklHWnZjaUIwYUc5elpTQjNhWFJvSUhSb1pTQnpZVzFsSUc1aGJXVWdZWE1nYjNSb1pYSWdZR3h2WkdGemFHQWdiV1YwYUc5a2N5NGdLaTljYm5aaGNpQnVZWFJwZG1WTllYZ2dQU0JOWVhSb0xtMWhlRHRjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCcGJtUmxlQ0JoZENCM2FHbGphQ0IwYUdVZ1ptbHljM1FnYjJOamRYSnlaVzVqWlNCdlppQmdkbUZzZFdWZ0lHbHpJR1p2ZFc1a0lHbHVJR0JoY25KaGVXQmNiaUFxSUhWemFXNW5JRnRnVTJGdFpWWmhiSFZsV21WeWIyQmRLR2gwZEhBNkx5OWxZMjFoTFdsdWRHVnlibUYwYVc5dVlXd3ViM0puTDJWamJXRXRNall5THpZdU1DOGpjMlZqTFhOaGJXVjJZV3gxWlhwbGNtOHBYRzRnS2lCbWIzSWdaWEYxWVd4cGRIa2dZMjl0Y0dGeWFYTnZibk11SUVsbUlHQm1jbTl0U1c1a1pYaGdJR2x6SUc1bFoyRjBhWFpsTENCcGRDZHpJSFZ6WldRZ1lYTWdkR2hsSUc5bVpuTmxkRnh1SUNvZ1puSnZiU0IwYUdVZ1pXNWtJRzltSUdCaGNuSmhlV0F1SUVsbUlHQmhjbkpoZVdBZ2FYTWdjMjl5ZEdWa0lIQnliM1pwWkdsdVp5QmdkSEoxWldBZ1ptOXlJR0JtY205dFNXNWtaWGhnWEc0Z0tpQndaWEptYjNKdGN5QmhJR1poYzNSbGNpQmlhVzVoY25rZ2MyVmhjbU5vTGx4dUlDcGNiaUFxSUVCemRHRjBhV05jYmlBcUlFQnRaVzFpWlhKUFppQmZYRzRnS2lCQVkyRjBaV2R2Y25rZ1FYSnlZWGxjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUdGeWNtRjVJRlJvWlNCaGNuSmhlU0IwYnlCelpXRnlZMmd1WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbElGUm9aU0IyWVd4MVpTQjBieUJ6WldGeVkyZ2dabTl5TGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZHNTFiV0psY24wZ1cyWnliMjFKYm1SbGVEMHdYU0JVYUdVZ2FXNWtaWGdnZEc4Z2MyVmhjbU5vSUdaeWIyMGdiM0lnWUhSeWRXVmdYRzRnS2lBZ2RHOGdjR1Z5Wm05eWJTQmhJR0pwYm1GeWVTQnpaV0Z5WTJnZ2IyNGdZU0J6YjNKMFpXUWdZWEp5WVhrdVhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlmU0JTWlhSMWNtNXpJSFJvWlNCcGJtUmxlQ0J2WmlCMGFHVWdiV0YwWTJobFpDQjJZV3gxWlN3Z1pXeHpaU0JnTFRGZ0xseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcVhHNGdLaUJmTG1sdVpHVjRUMllvV3pFc0lESXNJREVzSURKZExDQXlLVHRjYmlBcUlDOHZJRDArSURGY2JpQXFYRzRnS2lBdkx5QjFjMmx1WnlCZ1puSnZiVWx1WkdWNFlGeHVJQ29nWHk1cGJtUmxlRTltS0ZzeExDQXlMQ0F4TENBeVhTd2dNaXdnTWlrN1hHNGdLaUF2THlBOVBpQXpYRzRnS2x4dUlDb2dMeThnY0dWeVptOXliV2x1WnlCaElHSnBibUZ5ZVNCelpXRnlZMmhjYmlBcUlGOHVhVzVrWlhoUFppaGJNU3dnTVN3Z01pd2dNbDBzSURJc0lIUnlkV1VwTzF4dUlDb2dMeThnUFQ0Z01seHVJQ292WEc1bWRXNWpkR2x2YmlCcGJtUmxlRTltS0dGeWNtRjVMQ0IyWVd4MVpTd2dabkp2YlVsdVpHVjRLU0I3WEc0Z0lIWmhjaUJzWlc1bmRHZ2dQU0JoY25KaGVTQS9JR0Z5Y21GNUxteGxibWQwYUNBNklEQTdYRzRnSUdsbUlDZ2hiR1Z1WjNSb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUMweE8xeHVJQ0I5WEc0Z0lHbG1JQ2gwZVhCbGIyWWdabkp2YlVsdVpHVjRJRDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0FnWm5KdmJVbHVaR1Y0SUQwZ1puSnZiVWx1WkdWNElEd2dNQ0EvSUc1aGRHbDJaVTFoZUNoc1pXNW5kR2dnS3lCbWNtOXRTVzVrWlhnc0lEQXBJRG9nWm5KdmJVbHVaR1Y0TzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR1p5YjIxSmJtUmxlQ2tnZTF4dUlDQWdJSFpoY2lCcGJtUmxlQ0E5SUdKcGJtRnllVWx1WkdWNEtHRnljbUY1TENCMllXeDFaU2s3WEc0Z0lDQWdhV1lnS0dsdVpHVjRJRHdnYkdWdVozUm9JQ1ltWEc0Z0lDQWdJQ0FnSUNoMllXeDFaU0E5UFQwZ2RtRnNkV1VnUHlBb2RtRnNkV1VnUFQwOUlHRnljbUY1VzJsdVpHVjRYU2tnT2lBb1lYSnlZWGxiYVc1a1pYaGRJQ0U5UFNCaGNuSmhlVnRwYm1SbGVGMHBLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1WkdWNE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdMVEU3WEc0Z0lIMWNiaUFnY21WMGRYSnVJR0poYzJWSmJtUmxlRTltS0dGeWNtRjVMQ0IyWVd4MVpTd2dabkp2YlVsdVpHVjRJSHg4SURBcE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdsdVpHVjRUMlk3WEc0aUxDSXZLaXBjYmlBcUlFZGxkSE1nZEdobElHeGhjM1FnWld4bGJXVnVkQ0J2WmlCZ1lYSnlZWGxnTGx4dUlDcGNiaUFxSUVCemRHRjBhV05jYmlBcUlFQnRaVzFpWlhKUFppQmZYRzRnS2lCQVkyRjBaV2R2Y25rZ1FYSnlZWGxjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUdGeWNtRjVJRlJvWlNCaGNuSmhlU0IwYnlCeGRXVnllUzVjYmlBcUlFQnlaWFIxY201eklIc3FmU0JTWlhSMWNtNXpJSFJvWlNCc1lYTjBJR1ZzWlcxbGJuUWdiMllnWUdGeWNtRjVZQzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLbHh1SUNvZ1h5NXNZWE4wS0ZzeExDQXlMQ0F6WFNrN1hHNGdLaUF2THlBOVBpQXpYRzRnS2k5Y2JtWjFibU4wYVc5dUlHeGhjM1FvWVhKeVlYa3BJSHRjYmlBZ2RtRnlJR3hsYm1kMGFDQTlJR0Z5Y21GNUlEOGdZWEp5WVhrdWJHVnVaM1JvSURvZ01EdGNiaUFnY21WMGRYSnVJR3hsYm1kMGFDQS9JR0Z5Y21GNVcyeGxibWQwYUNBdElERmRJRG9nZFc1a1pXWnBibVZrTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR3hoYzNRN1hHNGlMQ0oyWVhJZ1RHRjZlVmR5WVhCd1pYSWdQU0J5WlhGMWFYSmxLQ2N1TGk5cGJuUmxjbTVoYkM5TVlYcDVWM0poY0hCbGNpY3BMRnh1SUNBZ0lFeHZaR0Z6YUZkeVlYQndaWElnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOU1iMlJoYzJoWGNtRndjR1Z5Snlrc1hHNGdJQ0FnWW1GelpVeHZaR0Z6YUNBOUlISmxjWFZwY21Vb0p5NHVMMmx1ZEdWeWJtRnNMMkpoYzJWTWIyUmhjMmduS1N4Y2JpQWdJQ0JwYzBGeWNtRjVJRDBnY21WeGRXbHlaU2duTGk0dmJHRnVaeTlwYzBGeWNtRjVKeWtzWEc0Z0lDQWdhWE5QWW1wbFkzUk1hV3RsSUQwZ2NtVnhkV2x5WlNnbkxpNHZhVzUwWlhKdVlXd3ZhWE5QWW1wbFkzUk1hV3RsSnlrc1hHNGdJQ0FnZDNKaGNIQmxja05zYjI1bElEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2ZDNKaGNIQmxja05zYjI1bEp5azdYRzVjYmk4cUtpQlZjMlZrSUdadmNpQnVZWFJwZG1VZ2JXVjBhRzlrSUhKbFptVnlaVzVqWlhNdUlDb3ZYRzUyWVhJZ2IySnFaV04wVUhKdmRHOGdQU0JQWW1wbFkzUXVjSEp2ZEc5MGVYQmxPMXh1WEc0dktpb2dWWE5sWkNCMGJ5QmphR1ZqYXlCdlltcGxZM1J6SUdadmNpQnZkMjRnY0hKdmNHVnlkR2xsY3k0Z0tpOWNiblpoY2lCb1lYTlBkMjVRY205d1pYSjBlU0E5SUc5aWFtVmpkRkJ5YjNSdkxtaGhjMDkzYmxCeWIzQmxjblI1TzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQmdiRzlrWVhOb1lDQnZZbXBsWTNRZ2QyaHBZMmdnZDNKaGNITWdZSFpoYkhWbFlDQjBieUJsYm1GaWJHVWdhVzF3YkdsamFYUWdZMmhoYVc1cGJtY3VYRzRnS2lCTlpYUm9iMlJ6SUhSb1lYUWdiM0JsY21GMFpTQnZiaUJoYm1RZ2NtVjBkWEp1SUdGeWNtRjVjeXdnWTI5c2JHVmpkR2x2Ym5Nc0lHRnVaQ0JtZFc1amRHbHZibk1nWTJGdVhHNGdLaUJpWlNCamFHRnBibVZrSUhSdloyVjBhR1Z5TGlCTlpYUm9iMlJ6SUhSb1lYUWdjbVYwY21sbGRtVWdZU0J6YVc1bmJHVWdkbUZzZFdVZ2IzSWdiV0Y1SUhKbGRIVnliaUJoWEc0Z0tpQndjbWx0YVhScGRtVWdkbUZzZFdVZ2QybHNiQ0JoZFhSdmJXRjBhV05oYkd4NUlHVnVaQ0IwYUdVZ1kyaGhhVzRnY21WMGRYSnVhVzVuSUhSb1pTQjFibmR5WVhCd1pXUmNiaUFxSUhaaGJIVmxMaUJGZUhCc2FXTnBkQ0JqYUdGcGJtbHVaeUJ0WVhrZ1ltVWdaVzVoWW14bFpDQjFjMmx1WnlCZ1h5NWphR0ZwYm1BdUlGUm9aU0JsZUdWamRYUnBiMjRnYjJaY2JpQXFJR05vWVdsdVpXUWdiV1YwYUc5a2N5QnBjeUJzWVhwNUxDQjBhR0YwSUdsekxDQmxlR1ZqZFhScGIyNGdhWE1nWkdWbVpYSnlaV1FnZFc1MGFXd2dZRjhqZG1Gc2RXVmdYRzRnS2lCcGN5QnBiWEJzYVdOcGRHeDVJRzl5SUdWNGNHeHBZMmwwYkhrZ1kyRnNiR1ZrTGx4dUlDcGNiaUFxSUV4aGVua2daWFpoYkhWaGRHbHZiaUJoYkd4dmQzTWdjMlYyWlhKaGJDQnRaWFJvYjJSeklIUnZJSE4xY0hCdmNuUWdjMmh2Y25SamRYUWdablZ6YVc5dUxpQlRhRzl5ZEdOMWRGeHVJQ29nWm5WemFXOXVJR2x6SUdGdUlHOXdkR2x0YVhwaGRHbHZiaUJ6ZEhKaGRHVm5lU0IzYUdsamFDQnRaWEpuWlNCcGRHVnlZWFJsWlNCallXeHNjenNnZEdocGN5QmpZVzRnYUdWc2NGeHVJQ29nZEc4Z1lYWnZhV1FnZEdobElHTnlaV0YwYVc5dUlHOW1JR2x1ZEdWeWJXVmthV0YwWlNCa1lYUmhJSE4wY25WamRIVnlaWE1nWVc1a0lHZHlaV0YwYkhrZ2NtVmtkV05sSUhSb1pWeHVJQ29nYm5WdFltVnlJRzltSUdsMFpYSmhkR1ZsSUdWNFpXTjFkR2x2Ym5NdVhHNGdLbHh1SUNvZ1EyaGhhVzVwYm1jZ2FYTWdjM1Z3Y0c5eWRHVmtJR2x1SUdOMWMzUnZiU0JpZFdsc1pITWdZWE1nYkc5dVp5QmhjeUIwYUdVZ1lGOGpkbUZzZFdWZ0lHMWxkR2h2WkNCcGMxeHVJQ29nWkdseVpXTjBiSGtnYjNJZ2FXNWthWEpsWTNSc2VTQnBibU5zZFdSbFpDQnBiaUIwYUdVZ1luVnBiR1F1WEc0Z0tseHVJQ29nU1c0Z1lXUmthWFJwYjI0Z2RHOGdiRzlrWVhOb0lHMWxkR2h2WkhNc0lIZHlZWEJ3WlhKeklHaGhkbVVnWUVGeWNtRjVZQ0JoYm1RZ1lGTjBjbWx1WjJBZ2JXVjBhRzlrY3k1Y2JpQXFYRzRnS2lCVWFHVWdkM0poY0hCbGNpQmdRWEp5WVhsZ0lHMWxkR2h2WkhNZ1lYSmxPbHh1SUNvZ1lHTnZibU5oZEdBc0lHQnFiMmx1WUN3Z1lIQnZjR0FzSUdCd2RYTm9ZQ3dnWUhKbGRtVnljMlZnTENCZ2MyaHBablJnTENCZ2MyeHBZMlZnTENCZ2MyOXlkR0FzWEc0Z0tpQmdjM0JzYVdObFlDd2dZVzVrSUdCMWJuTm9hV1owWUZ4dUlDcGNiaUFxSUZSb1pTQjNjbUZ3Y0dWeUlHQlRkSEpwYm1kZ0lHMWxkR2h2WkhNZ1lYSmxPbHh1SUNvZ1lISmxjR3hoWTJWZ0lHRnVaQ0JnYzNCc2FYUmdYRzRnS2x4dUlDb2dWR2hsSUhkeVlYQndaWElnYldWMGFHOWtjeUIwYUdGMElITjFjSEJ2Y25RZ2MyaHZjblJqZFhRZ1puVnphVzl1SUdGeVpUcGNiaUFxSUdCamIyMXdZV04wWUN3Z1lHUnliM0JnTENCZ1pISnZjRkpwWjJoMFlDd2dZR1J5YjNCU2FXZG9kRmRvYVd4bFlDd2dZR1J5YjNCWGFHbHNaV0FzSUdCbWFXeDBaWEpnTEZ4dUlDb2dZR1pwY25OMFlDd2dZR2x1YVhScFlXeGdMQ0JnYkdGemRHQXNJR0J0WVhCZ0xDQmdjR3gxWTJ0Z0xDQmdjbVZxWldOMFlDd2dZSEpsYzNSZ0xDQmdjbVYyWlhKelpXQXNYRzRnS2lCZ2MyeHBZMlZnTENCZ2RHRnJaV0FzSUdCMFlXdGxVbWxuYUhSZ0xDQmdkR0ZyWlZKcFoyaDBWMmhwYkdWZ0xDQmdkR0ZyWlZkb2FXeGxZQ3dnWUhSdlFYSnlZWGxnTEZ4dUlDb2dZVzVrSUdCM2FHVnlaV0JjYmlBcVhHNGdLaUJVYUdVZ1kyaGhhVzVoWW14bElIZHlZWEJ3WlhJZ2JXVjBhRzlrY3lCaGNtVTZYRzRnS2lCZ1lXWjBaWEpnTENCZ1lYSjVZQ3dnWUdGemMybG5ibUFzSUdCaGRHQXNJR0JpWldadmNtVmdMQ0JnWW1sdVpHQXNJR0JpYVc1a1FXeHNZQ3dnWUdKcGJtUkxaWGxnTEZ4dUlDb2dZR05oYkd4aVlXTnJZQ3dnWUdOb1lXbHVZQ3dnWUdOb2RXNXJZQ3dnWUdOdmJXMXBkR0FzSUdCamIyMXdZV04wWUN3Z1lHTnZibU5oZEdBc0lHQmpiMjV6ZEdGdWRHQXNYRzRnS2lCZ1kyOTFiblJDZVdBc0lHQmpjbVZoZEdWZ0xDQmdZM1Z5Y25sZ0xDQmdaR1ZpYjNWdVkyVmdMQ0JnWkdWbVlYVnNkSE5nTENCZ1pHVm1ZWFZzZEhORVpXVndZQ3hjYmlBcUlHQmtaV1psY21Bc0lHQmtaV3hoZVdBc0lHQmthV1ptWlhKbGJtTmxZQ3dnWUdSeWIzQmdMQ0JnWkhKdmNGSnBaMmgwWUN3Z1lHUnliM0JTYVdkb2RGZG9hV3hsWUN4Y2JpQXFJR0JrY205d1YyaHBiR1ZnTENCZ1ptbHNiR0FzSUdCbWFXeDBaWEpnTENCZ1pteGhkSFJsYm1Bc0lHQm1iR0YwZEdWdVJHVmxjR0FzSUdCbWJHOTNZQ3dnWUdac2IzZFNhV2RvZEdBc1hHNGdLaUJnWm05eVJXRmphR0FzSUdCbWIzSkZZV05vVW1sbmFIUmdMQ0JnWm05eVNXNWdMQ0JnWm05eVNXNVNhV2RvZEdBc0lHQm1iM0pQZDI1Z0xDQmdabTl5VDNkdVVtbG5hSFJnTEZ4dUlDb2dZR1oxYm1OMGFXOXVjMkFzSUdCbmNtOTFjRUo1WUN3Z1lHbHVaR1Y0UW5sZ0xDQmdhVzVwZEdsaGJHQXNJR0JwYm5SbGNuTmxZM1JwYjI1Z0xDQmdhVzUyWlhKMFlDeGNiaUFxSUdCcGJuWnZhMlZnTENCZ2EyVjVjMkFzSUdCclpYbHpTVzVnTENCZ2JXRndZQ3dnWUcxaGNFdGxlWE5nTENCZ2JXRndWbUZzZFdWellDd2dZRzFoZEdOb1pYTmdMRnh1SUNvZ1lHMWhkR05vWlhOUWNtOXdaWEowZVdBc0lHQnRaVzF2YVhwbFlDd2dZRzFsY21kbFlDd2dZRzFsZEdodlpHQXNJR0J0WlhSb2IyUlBabUFzSUdCdGFYaHBibUFzWEc0Z0tpQmdiVzlrUVhKbmMyQXNJR0J1WldkaGRHVmdMQ0JnYjIxcGRHQXNJR0J2Ym1ObFlDd2dZSEJoYVhKellDd2dZSEJoY25ScFlXeGdMQ0JnY0dGeWRHbGhiRkpwWjJoMFlDeGNiaUFxSUdCd1lYSjBhWFJwYjI1Z0xDQmdjR2xqYTJBc0lHQndiR0Z1ZEdBc0lHQndiSFZqYTJBc0lHQndjbTl3WlhKMGVXQXNJR0J3Y205d1pYSjBlVTltWUN3Z1lIQjFiR3hnTEZ4dUlDb2dZSEIxYkd4QmRHQXNJR0J3ZFhOb1lDd2dZSEpoYm1kbFlDd2dZSEpsWVhKbllDd2dZSEpsYW1WamRHQXNJR0J5WlcxdmRtVmdMQ0JnY21WemRHQXNJR0J5WlhOMFVHRnlZVzFnTEZ4dUlDb2dZSEpsZG1WeWMyVmdMQ0JnYzJWMFlDd2dZSE5vZFdabWJHVmdMQ0JnYzJ4cFkyVmdMQ0JnYzI5eWRHQXNJR0J6YjNKMFFubGdMQ0JnYzI5eWRFSjVRV3hzWUN4Y2JpQXFJR0J6YjNKMFFubFBjbVJsY21Bc0lHQnpjR3hwWTJWZ0xDQmdjM0J5WldGa1lDd2dZSFJoYTJWZ0xDQmdkR0ZyWlZKcFoyaDBZQ3dnWUhSaGEyVlNhV2RvZEZkb2FXeGxZQ3hjYmlBcUlHQjBZV3RsVjJocGJHVmdMQ0JnZEdGd1lDd2dZSFJvY205MGRHeGxZQ3dnWUhSb2NuVmdMQ0JnZEdsdFpYTmdMQ0JnZEc5QmNuSmhlV0FzSUdCMGIxQnNZV2x1VDJKcVpXTjBZQ3hjYmlBcUlHQjBjbUZ1YzJadmNtMWdMQ0JnZFc1cGIyNWdMQ0JnZFc1cGNXQXNJR0IxYm5Ob2FXWjBZQ3dnWUhWdWVtbHdZQ3dnWUhWdWVtbHdWMmwwYUdBc0lHQjJZV3gxWlhOZ0xGeHVJQ29nWUhaaGJIVmxjMGx1WUN3Z1lIZG9aWEpsWUN3Z1lIZHBkR2h2ZFhSZ0xDQmdkM0poY0dBc0lHQjRiM0pnTENCZ2VtbHdZQ3dnWUhwcGNFOWlhbVZqZEdBc0lHQjZhWEJYYVhSb1lGeHVJQ3BjYmlBcUlGUm9aU0IzY21Gd2NHVnlJRzFsZEdodlpITWdkR2hoZENCaGNtVWdLaXB1YjNRcUtpQmphR0ZwYm1GaWJHVWdZbmtnWkdWbVlYVnNkQ0JoY21VNlhHNGdLaUJnWVdSa1lDd2dZR0YwZEdWdGNIUmdMQ0JnWTJGdFpXeERZWE5sWUN3Z1lHTmhjR2wwWVd4cGVtVmdMQ0JnWTJWcGJHQXNJR0JqYkc5dVpXQXNJR0JqYkc5dVpVUmxaWEJnTEZ4dUlDb2dZR1JsWW5WeWNtQXNJR0JsYm1SelYybDBhR0FzSUdCbGMyTmhjR1ZnTENCZ1pYTmpZWEJsVW1WblJYaHdZQ3dnWUdWMlpYSjVZQ3dnWUdacGJtUmdMQ0JnWm1sdVpFbHVaR1Y0WUN4Y2JpQXFJR0JtYVc1a1MyVjVZQ3dnWUdacGJtUk1ZWE4wWUN3Z1lHWnBibVJNWVhOMFNXNWtaWGhnTENCZ1ptbHVaRXhoYzNSTFpYbGdMQ0JnWm1sdVpGZG9aWEpsWUN3Z1lHWnBjbk4wWUN4Y2JpQXFJR0JtYkc5dmNtQXNJR0JuWlhSZ0xDQmdaM1JnTENCZ1ozUmxZQ3dnWUdoaGMyQXNJR0JwWkdWdWRHbDBlV0FzSUdCcGJtTnNkV1JsYzJBc0lHQnBibVJsZUU5bVlDeGNiaUFxSUdCcGJsSmhibWRsWUN3Z1lHbHpRWEpuZFcxbGJuUnpZQ3dnWUdselFYSnlZWGxnTENCZ2FYTkNiMjlzWldGdVlDd2dZR2x6UkdGMFpXQXNJR0JwYzBWc1pXMWxiblJnTEZ4dUlDb2dZR2x6Ulcxd2RIbGdMQ0JnYVhORmNYVmhiR0FzSUdCcGMwVnljbTl5WUN3Z1lHbHpSbWx1YVhSbFlDQmdhWE5HZFc1amRHbHZibUFzSUdCcGMwMWhkR05vWUN4Y2JpQXFJR0JwYzA1aGRHbDJaV0FzSUdCcGMwNWhUbUFzSUdCcGMwNTFiR3hnTENCZ2FYTk9kVzFpWlhKZ0xDQmdhWE5QWW1wbFkzUmdMQ0JnYVhOUWJHRnBiazlpYW1WamRHQXNYRzRnS2lCZ2FYTlNaV2RGZUhCZ0xDQmdhWE5UZEhKcGJtZGdMQ0JnYVhOVmJtUmxabWx1WldSZ0xDQmdhWE5VZVhCbFpFRnljbUY1WUN3Z1lHcHZhVzVnTENCZ2EyVmlZV0pEWVhObFlDeGNiaUFxSUdCc1lYTjBZQ3dnWUd4aGMzUkpibVJsZUU5bVlDd2dZR3gwWUN3Z1lHeDBaV0FzSUdCdFlYaGdMQ0JnYldsdVlDd2dZRzV2UTI5dVpteHBZM1JnTENCZ2JtOXZjR0FzWEc0Z0tpQmdibTkzWUN3Z1lIQmhaR0FzSUdCd1lXUk1aV1owWUN3Z1lIQmhaRkpwWjJoMFlDd2dZSEJoY25ObFNXNTBZQ3dnWUhCdmNHQXNJR0J5WVc1a2IyMWdMQ0JnY21Wa2RXTmxZQ3hjYmlBcUlHQnlaV1IxWTJWU2FXZG9kR0FzSUdCeVpYQmxZWFJnTENCZ2NtVnpkV3gwWUN3Z1lISnZkVzVrWUN3Z1lISjFia2x1UTI5dWRHVjRkR0FzSUdCemFHbG1kR0FzSUdCemFYcGxZQ3hjYmlBcUlHQnpibUZyWlVOaGMyVmdMQ0JnYzI5dFpXQXNJR0J6YjNKMFpXUkpibVJsZUdBc0lHQnpiM0owWldSTVlYTjBTVzVrWlhoZ0xDQmdjM1JoY25SRFlYTmxZQ3hjYmlBcUlHQnpkR0Z5ZEhOWGFYUm9ZQ3dnWUhOMWJXQXNJR0IwWlcxd2JHRjBaV0FzSUdCMGNtbHRZQ3dnWUhSeWFXMU1aV1owWUN3Z1lIUnlhVzFTYVdkb2RHQXNJR0IwY25WdVkyQXNYRzRnS2lCZ2RXNWxjMk5oY0dWZ0xDQmdkVzVwY1hWbFNXUmdMQ0JnZG1Gc2RXVmdMQ0JoYm1RZ1lIZHZjbVJ6WUZ4dUlDcGNiaUFxSUZSb1pTQjNjbUZ3Y0dWeUlHMWxkR2h2WkNCZ2MyRnRjR3hsWUNCM2FXeHNJSEpsZEhWeWJpQmhJSGR5WVhCd1pXUWdkbUZzZFdVZ2QyaGxiaUJnYm1BZ2FYTWdjSEp2ZG1sa1pXUXNYRzRnS2lCdmRHaGxjbmRwYzJVZ1lXNGdkVzUzY21Gd2NHVmtJSFpoYkhWbElHbHpJSEpsZEhWeWJtVmtMbHh1SUNwY2JpQXFJRUJ1WVcxbElGOWNiaUFxSUVCamIyNXpkSEoxWTNSdmNseHVJQ29nUUdOaGRHVm5iM0o1SUVOb1lXbHVYRzRnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUZSb1pTQjJZV3gxWlNCMGJ5QjNjbUZ3SUdsdUlHRWdZR3h2WkdGemFHQWdhVzV6ZEdGdVkyVXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1QySnFaV04wZlNCU1pYUjFjbTV6SUhSb1pTQnVaWGNnWUd4dlpHRnphR0FnZDNKaGNIQmxjaUJwYm5OMFlXNWpaUzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLbHh1SUNvZ2RtRnlJSGR5WVhCd1pXUWdQU0JmS0ZzeExDQXlMQ0F6WFNrN1hHNGdLbHh1SUNvZ0x5OGdjbVYwZFhKdWN5QmhiaUIxYm5keVlYQndaV1FnZG1Gc2RXVmNiaUFxSUhkeVlYQndaV1F1Y21Wa2RXTmxLR1oxYm1OMGFXOXVLSFJ2ZEdGc0xDQnVLU0I3WEc0Z0tpQWdJSEpsZEhWeWJpQjBiM1JoYkNBcklHNDdYRzRnS2lCOUtUdGNiaUFxSUM4dklEMCtJRFpjYmlBcVhHNGdLaUF2THlCeVpYUjFjbTV6SUdFZ2QzSmhjSEJsWkNCMllXeDFaVnh1SUNvZ2RtRnlJSE54ZFdGeVpYTWdQU0IzY21Gd2NHVmtMbTFoY0NobWRXNWpkR2x2YmlodUtTQjdYRzRnS2lBZ0lISmxkSFZ5YmlCdUlDb2dianRjYmlBcUlIMHBPMXh1SUNwY2JpQXFJRjh1YVhOQmNuSmhlU2h6Y1hWaGNtVnpLVHRjYmlBcUlDOHZJRDArSUdaaGJITmxYRzRnS2x4dUlDb2dYeTVwYzBGeWNtRjVLSE54ZFdGeVpYTXVkbUZzZFdVb0tTazdYRzRnS2lBdkx5QTlQaUIwY25WbFhHNGdLaTljYm1aMWJtTjBhVzl1SUd4dlpHRnphQ2gyWVd4MVpTa2dlMXh1SUNCcFppQW9hWE5QWW1wbFkzUk1hV3RsS0haaGJIVmxLU0FtSmlBaGFYTkJjbkpoZVNoMllXeDFaU2tnSmlZZ0lTaDJZV3gxWlNCcGJuTjBZVzVqWlc5bUlFeGhlbmxYY21Gd2NHVnlLU2tnZTF4dUlDQWdJR2xtSUNoMllXeDFaU0JwYm5OMFlXNWpaVzltSUV4dlpHRnphRmR5WVhCd1pYSXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0doaGMwOTNibEJ5YjNCbGNuUjVMbU5oYkd3b2RtRnNkV1VzSUNkZlgyTm9ZV2x1WDE4bktTQW1KaUJvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0haaGJIVmxMQ0FuWDE5M2NtRndjR1ZrWDE4bktTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIZHlZWEJ3WlhKRGJHOXVaU2gyWVd4MVpTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdVpYY2dURzlrWVhOb1YzSmhjSEJsY2loMllXeDFaU2s3WEc1OVhHNWNiaTh2SUVWdWMzVnlaU0IzY21Gd2NHVnljeUJoY21VZ2FXNXpkR0Z1WTJWeklHOW1JR0JpWVhObFRHOWtZWE5vWUM1Y2JteHZaR0Z6YUM1d2NtOTBiM1I1Y0dVZ1BTQmlZWE5sVEc5a1lYTm9MbkJ5YjNSdmRIbHdaVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCc2IyUmhjMmc3WEc0aUxDSnRiMlIxYkdVdVpYaHdiM0owY3lBOUlISmxjWFZwY21Vb0p5NHZabTl5UldGamFDY3BPMXh1SWl3aWRtRnlJR0poYzJWRllXTm9JRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dlltRnpaVVZoWTJnbktTeGNiaUFnSUNCamNtVmhkR1ZHYVc1a0lEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2WTNKbFlYUmxSbWx1WkNjcE8xeHVYRzR2S2lwY2JpQXFJRWwwWlhKaGRHVnpJRzkyWlhJZ1pXeGxiV1Z1ZEhNZ2IyWWdZR052Ykd4bFkzUnBiMjVnTENCeVpYUjFjbTVwYm1jZ2RHaGxJR1pwY25OMElHVnNaVzFsYm5SY2JpQXFJR0J3Y21Wa2FXTmhkR1ZnSUhKbGRIVnlibk1nZEhKMWRHaDVJR1p2Y2k0Z1ZHaGxJSEJ5WldScFkyRjBaU0JwY3lCaWIzVnVaQ0IwYnlCZ2RHaHBjMEZ5WjJBZ1lXNWtYRzRnS2lCcGJuWnZhMlZrSUhkcGRHZ2dkR2h5WldVZ1lYSm5kVzFsYm5Sek9pQW9kbUZzZFdVc0lHbHVaR1Y0Zkd0bGVTd2dZMjlzYkdWamRHbHZiaWt1WEc0Z0tseHVJQ29nU1dZZ1lTQndjbTl3WlhKMGVTQnVZVzFsSUdseklIQnliM1pwWkdWa0lHWnZjaUJnY0hKbFpHbGpZWFJsWUNCMGFHVWdZM0psWVhSbFpDQmdYeTV3Y205d1pYSjBlV0JjYmlBcUlITjBlV3hsSUdOaGJHeGlZV05ySUhKbGRIVnlibk1nZEdobElIQnliM0JsY25SNUlIWmhiSFZsSUc5bUlIUm9aU0JuYVhabGJpQmxiR1Z0Wlc1MExseHVJQ3BjYmlBcUlFbG1JR0VnZG1Gc2RXVWdhWE1nWVd4emJ5QndjbTkyYVdSbFpDQm1iM0lnWUhSb2FYTkJjbWRnSUhSb1pTQmpjbVZoZEdWa0lHQmZMbTFoZEdOb1pYTlFjbTl3WlhKMGVXQmNiaUFxSUhOMGVXeGxJR05oYkd4aVlXTnJJSEpsZEhWeWJuTWdZSFJ5ZFdWZ0lHWnZjaUJsYkdWdFpXNTBjeUIwYUdGMElHaGhkbVVnWVNCdFlYUmphR2x1WnlCd2NtOXdaWEowZVZ4dUlDb2dkbUZzZFdVc0lHVnNjMlVnWUdaaGJITmxZQzVjYmlBcVhHNGdLaUJKWmlCaGJpQnZZbXBsWTNRZ2FYTWdjSEp2ZG1sa1pXUWdabTl5SUdCd2NtVmthV05oZEdWZ0lIUm9aU0JqY21WaGRHVmtJR0JmTG0xaGRHTm9aWE5nSUhOMGVXeGxYRzRnS2lCallXeHNZbUZqYXlCeVpYUjFjbTV6SUdCMGNuVmxZQ0JtYjNJZ1pXeGxiV1Z1ZEhNZ2RHaGhkQ0JvWVhabElIUm9aU0J3Y205d1pYSjBhV1Z6SUc5bUlIUm9aU0JuYVhabGJseHVJQ29nYjJKcVpXTjBMQ0JsYkhObElHQm1ZV3h6WldBdVhHNGdLbHh1SUNvZ1FITjBZWFJwWTF4dUlDb2dRRzFsYldKbGNrOW1JRjljYmlBcUlFQmhiR2xoY3lCa1pYUmxZM1JjYmlBcUlFQmpZWFJsWjI5eWVTQkRiMnhzWldOMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmRTlpYW1WamRIeHpkSEpwYm1kOUlHTnZiR3hsWTNScGIyNGdWR2hsSUdOdmJHeGxZM1JwYjI0Z2RHOGdjMlZoY21Ob0xseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibnhQWW1wbFkzUjhjM1J5YVc1bmZTQmJjSEpsWkdsallYUmxQVjh1YVdSbGJuUnBkSGxkSUZSb1pTQm1kVzVqZEdsdmJpQnBiblp2YTJWa1hHNGdLaUFnY0dWeUlHbDBaWEpoZEdsdmJpNWNiaUFxSUVCd1lYSmhiU0I3S24wZ1czUm9hWE5CY21kZElGUm9aU0JnZEdocGMyQWdZbWx1WkdsdVp5QnZaaUJnY0hKbFpHbGpZWFJsWUM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHNxZlNCU1pYUjFjbTV6SUhSb1pTQnRZWFJqYUdWa0lHVnNaVzFsYm5Rc0lHVnNjMlVnWUhWdVpHVm1hVzVsWkdBdVhHNGdLaUJBWlhoaGJYQnNaVnh1SUNwY2JpQXFJSFpoY2lCMWMyVnljeUE5SUZ0Y2JpQXFJQ0FnZXlBbmRYTmxjaWM2SUNkaVlYSnVaWGtuTENBZ0oyRm5aU2M2SURNMkxDQW5ZV04wYVhabEp6b2dkSEoxWlNCOUxGeHVJQ29nSUNCN0lDZDFjMlZ5SnpvZ0oyWnlaV1FuTENBZ0lDQW5ZV2RsSnpvZ05EQXNJQ2RoWTNScGRtVW5PaUJtWVd4elpTQjlMRnh1SUNvZ0lDQjdJQ2QxYzJWeUp6b2dKM0JsWW1Kc1pYTW5MQ0FuWVdkbEp6b2dNU3dnSUNkaFkzUnBkbVVuT2lCMGNuVmxJSDFjYmlBcUlGMDdYRzRnS2x4dUlDb2dYeTV5WlhOMWJIUW9YeTVtYVc1a0tIVnpaWEp6TENCbWRXNWpkR2x2YmloamFISXBJSHRjYmlBcUlDQWdjbVYwZFhKdUlHTm9jaTVoWjJVZ1BDQTBNRHRjYmlBcUlIMHBMQ0FuZFhObGNpY3BPMXh1SUNvZ0x5OGdQVDRnSjJKaGNtNWxlU2RjYmlBcVhHNGdLaUF2THlCMWMybHVaeUIwYUdVZ1lGOHViV0YwWTJobGMyQWdZMkZzYkdKaFkyc2djMmh2Y25Sb1lXNWtYRzRnS2lCZkxuSmxjM1ZzZENoZkxtWnBibVFvZFhObGNuTXNJSHNnSjJGblpTYzZJREVzSUNkaFkzUnBkbVVuT2lCMGNuVmxJSDBwTENBbmRYTmxjaWNwTzF4dUlDb2dMeThnUFQ0Z0ozQmxZbUpzWlhNblhHNGdLbHh1SUNvZ0x5OGdkWE5wYm1jZ2RHaGxJR0JmTG0xaGRHTm9aWE5RY205d1pYSjBlV0FnWTJGc2JHSmhZMnNnYzJodmNuUm9ZVzVrWEc0Z0tpQmZMbkpsYzNWc2RDaGZMbVpwYm1Rb2RYTmxjbk1zSUNkaFkzUnBkbVVuTENCbVlXeHpaU2tzSUNkMWMyVnlKeWs3WEc0Z0tpQXZMeUE5UGlBblpuSmxaQ2RjYmlBcVhHNGdLaUF2THlCMWMybHVaeUIwYUdVZ1lGOHVjSEp2Y0dWeWRIbGdJR05oYkd4aVlXTnJJSE5vYjNKMGFHRnVaRnh1SUNvZ1h5NXlaWE4xYkhRb1h5NW1hVzVrS0hWelpYSnpMQ0FuWVdOMGFYWmxKeWtzSUNkMWMyVnlKeWs3WEc0Z0tpQXZMeUE5UGlBblltRnlibVY1SjF4dUlDb3ZYRzUyWVhJZ1ptbHVaQ0E5SUdOeVpXRjBaVVpwYm1Rb1ltRnpaVVZoWTJncE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR1pwYm1RN1hHNGlMQ0oyWVhJZ1lYSnlZWGxGWVdOb0lEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2WVhKeVlYbEZZV05vSnlrc1hHNGdJQ0FnWW1GelpVVmhZMmdnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWlZWE5sUldGamFDY3BMRnh1SUNBZ0lHTnlaV0YwWlVadmNrVmhZMmdnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWpjbVZoZEdWR2IzSkZZV05vSnlrN1hHNWNiaThxS2x4dUlDb2dTWFJsY21GMFpYTWdiM1psY2lCbGJHVnRaVzUwY3lCdlppQmdZMjlzYkdWamRHbHZibUFnYVc1MmIydHBibWNnWUdsMFpYSmhkR1ZsWUNCbWIzSWdaV0ZqYUNCbGJHVnRaVzUwTGx4dUlDb2dWR2hsSUdCcGRHVnlZWFJsWldBZ2FYTWdZbTkxYm1RZ2RHOGdZSFJvYVhOQmNtZGdJR0Z1WkNCcGJuWnZhMlZrSUhkcGRHZ2dkR2h5WldVZ1lYSm5kVzFsYm5Sek9seHVJQ29nS0haaGJIVmxMQ0JwYm1SbGVIeHJaWGtzSUdOdmJHeGxZM1JwYjI0cExpQkpkR1Z5WVhSbFpTQm1kVzVqZEdsdmJuTWdiV0Y1SUdWNGFYUWdhWFJsY21GMGFXOXVJR1ZoY214NVhHNGdLaUJpZVNCbGVIQnNhV05wZEd4NUlISmxkSFZ5Ym1sdVp5QmdabUZzYzJWZ0xseHVJQ3BjYmlBcUlDb3FUbTkwWlRvcUtpQkJjeUIzYVhSb0lHOTBhR1Z5SUZ3aVEyOXNiR1ZqZEdsdmJuTmNJaUJ0WlhSb2IyUnpMQ0J2WW1wbFkzUnpJSGRwZEdnZ1lTQmNJbXhsYm1kMGFGd2lJSEJ5YjNCbGNuUjVYRzRnS2lCaGNtVWdhWFJsY21GMFpXUWdiR2xyWlNCaGNuSmhlWE11SUZSdklHRjJiMmxrSUhSb2FYTWdZbVZvWVhacGIzSWdZRjh1Wm05eVNXNWdJRzl5SUdCZkxtWnZjazkzYm1CY2JpQXFJRzFoZVNCaVpTQjFjMlZrSUdadmNpQnZZbXBsWTNRZ2FYUmxjbUYwYVc5dUxseHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFZV3hwWVhNZ1pXRmphRnh1SUNvZ1FHTmhkR1ZuYjNKNUlFTnZiR3hsWTNScGIyNWNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDhUMkpxWldOMGZITjBjbWx1WjMwZ1kyOXNiR1ZqZEdsdmJpQlVhR1VnWTI5c2JHVmpkR2x2YmlCMGJ5QnBkR1Z5WVhSbElHOTJaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmJhWFJsY21GMFpXVTlYeTVwWkdWdWRHbDBlVjBnVkdobElHWjFibU4wYVc5dUlHbHVkbTlyWldRZ2NHVnlJR2wwWlhKaGRHbHZiaTVjYmlBcUlFQndZWEpoYlNCN0tuMGdXM1JvYVhOQmNtZGRJRlJvWlNCZ2RHaHBjMkFnWW1sdVpHbHVaeUJ2WmlCZ2FYUmxjbUYwWldWZ0xseHVJQ29nUUhKbGRIVnlibk1nZTBGeWNtRjVmRTlpYW1WamRIeHpkSEpwYm1kOUlGSmxkSFZ5Ym5NZ1lHTnZiR3hsWTNScGIyNWdMbHh1SUNvZ1FHVjRZVzF3YkdWY2JpQXFYRzRnS2lCZktGc3hMQ0F5WFNrdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlodUtTQjdYRzRnS2lBZ0lHTnZibk52YkdVdWJHOW5LRzRwTzF4dUlDb2dmU2t1ZG1Gc2RXVW9LVHRjYmlBcUlDOHZJRDArSUd4dlozTWdaV0ZqYUNCMllXeDFaU0JtY205dElHeGxablFnZEc4Z2NtbG5hSFFnWVc1a0lISmxkSFZ5Ym5NZ2RHaGxJR0Z5Y21GNVhHNGdLbHh1SUNvZ1h5NW1iM0pGWVdOb0tIc2dKMkVuT2lBeExDQW5ZaWM2SURJZ2ZTd2dablZ1WTNScGIyNG9iaXdnYTJWNUtTQjdYRzRnS2lBZ0lHTnZibk52YkdVdWJHOW5LRzRzSUd0bGVTazdYRzRnS2lCOUtUdGNiaUFxSUM4dklEMCtJR3h2WjNNZ1pXRmphQ0IyWVd4MVpTMXJaWGtnY0dGcGNpQmhibVFnY21WMGRYSnVjeUIwYUdVZ2IySnFaV04wSUNocGRHVnlZWFJwYjI0Z2IzSmtaWElnYVhNZ2JtOTBJR2QxWVhKaGJuUmxaV1FwWEc0Z0tpOWNiblpoY2lCbWIzSkZZV05vSUQwZ1kzSmxZWFJsUm05eVJXRmphQ2hoY25KaGVVVmhZMmdzSUdKaGMyVkZZV05vS1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm1iM0pGWVdOb08xeHVJaXdpZG1GeUlHSmhjMlZKYm1SbGVFOW1JRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dlltRnpaVWx1WkdWNFQyWW5LU3hjYmlBZ0lDQm5aWFJNWlc1bmRHZ2dQU0J5WlhGMWFYSmxLQ2N1TGk5cGJuUmxjbTVoYkM5blpYUk1aVzVuZEdnbktTeGNiaUFnSUNCcGMwRnljbUY1SUQwZ2NtVnhkV2x5WlNnbkxpNHZiR0Z1Wnk5cGMwRnljbUY1Snlrc1hHNGdJQ0FnYVhOSmRHVnlZWFJsWlVOaGJHd2dQU0J5WlhGMWFYSmxLQ2N1TGk5cGJuUmxjbTVoYkM5cGMwbDBaWEpoZEdWbFEyRnNiQ2NwTEZ4dUlDQWdJR2x6VEdWdVozUm9JRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dmFYTk1aVzVuZEdnbktTeGNiaUFnSUNCcGMxTjBjbWx1WnlBOUlISmxjWFZwY21Vb0p5NHVMMnhoYm1jdmFYTlRkSEpwYm1jbktTeGNiaUFnSUNCMllXeDFaWE1nUFNCeVpYRjFhWEpsS0NjdUxpOXZZbXBsWTNRdmRtRnNkV1Z6SnlrN1hHNWNiaThxSUU1aGRHbDJaU0J0WlhSb2IyUWdjbVZtWlhKbGJtTmxjeUJtYjNJZ2RHaHZjMlVnZDJsMGFDQjBhR1VnYzJGdFpTQnVZVzFsSUdGeklHOTBhR1Z5SUdCc2IyUmhjMmhnSUcxbGRHaHZaSE11SUNvdlhHNTJZWElnYm1GMGFYWmxUV0Y0SUQwZ1RXRjBhQzV0WVhnN1hHNWNiaThxS2x4dUlDb2dRMmhsWTJ0eklHbG1JR0IwWVhKblpYUmdJR2x6SUdsdUlHQmpiMnhzWldOMGFXOXVZQ0IxYzJsdVoxeHVJQ29nVzJCVFlXMWxWbUZzZFdWYVpYSnZZRjBvYUhSMGNEb3ZMMlZqYldFdGFXNTBaWEp1WVhScGIyNWhiQzV2Y21jdlpXTnRZUzB5TmpJdk5pNHdMeU56WldNdGMyRnRaWFpoYkhWbGVtVnlieWxjYmlBcUlHWnZjaUJsY1hWaGJHbDBlU0JqYjIxd1lYSnBjMjl1Y3k0Z1NXWWdZR1p5YjIxSmJtUmxlR0FnYVhNZ2JtVm5ZWFJwZG1Vc0lHbDBKM01nZFhObFpDQmhjeUIwYUdVZ2IyWm1jMlYwWEc0Z0tpQm1jbTl0SUhSb1pTQmxibVFnYjJZZ1lHTnZiR3hsWTNScGIyNWdMbHh1SUNwY2JpQXFJRUJ6ZEdGMGFXTmNiaUFxSUVCdFpXMWlaWEpQWmlCZlhHNGdLaUJBWVd4cFlYTWdZMjl1ZEdGcGJuTXNJR2x1WTJ4MVpHVmNiaUFxSUVCallYUmxaMjl5ZVNCRGIyeHNaV04wYVc5dVhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZFOWlhbVZqZEh4emRISnBibWQ5SUdOdmJHeGxZM1JwYjI0Z1ZHaGxJR052Ykd4bFkzUnBiMjRnZEc4Z2MyVmhjbU5vTGx4dUlDb2dRSEJoY21GdElIc3FmU0IwWVhKblpYUWdWR2hsSUhaaGJIVmxJSFJ2SUhObFlYSmphQ0JtYjNJdVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXMlp5YjIxSmJtUmxlRDB3WFNCVWFHVWdhVzVrWlhnZ2RHOGdjMlZoY21Ob0lHWnliMjB1WEc0Z0tpQkFjR0Z5WVcwdElIdFBZbXBsWTNSOUlGdG5kV0Z5WkYwZ1JXNWhZbXhsY3lCMWMyVWdZWE1nWVNCallXeHNZbUZqYXlCbWIzSWdablZ1WTNScGIyNXpJR3hwYTJVZ1lGOHVjbVZrZFdObFlDNWNiaUFxSUVCeVpYUjFjbTV6SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCaElHMWhkR05vYVc1bklHVnNaVzFsYm5RZ2FYTWdabTkxYm1Rc0lHVnNjMlVnWUdaaGJITmxZQzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLbHh1SUNvZ1h5NXBibU5zZFdSbGN5aGJNU3dnTWl3Z00xMHNJREVwTzF4dUlDb2dMeThnUFQ0Z2RISjFaVnh1SUNwY2JpQXFJRjh1YVc1amJIVmtaWE1vV3pFc0lESXNJRE5kTENBeExDQXlLVHRjYmlBcUlDOHZJRDArSUdaaGJITmxYRzRnS2x4dUlDb2dYeTVwYm1Oc2RXUmxjeWg3SUNkMWMyVnlKem9nSjJaeVpXUW5MQ0FuWVdkbEp6b2dOREFnZlN3Z0oyWnlaV1FuS1R0Y2JpQXFJQzh2SUQwK0lIUnlkV1ZjYmlBcVhHNGdLaUJmTG1sdVkyeDFaR1Z6S0Nkd1pXSmliR1Z6Snl3Z0oyVmlKeWs3WEc0Z0tpQXZMeUE5UGlCMGNuVmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHVZMngxWkdWektHTnZiR3hsWTNScGIyNHNJSFJoY21kbGRDd2dabkp2YlVsdVpHVjRMQ0JuZFdGeVpDa2dlMXh1SUNCMllYSWdiR1Z1WjNSb0lEMGdZMjlzYkdWamRHbHZiaUEvSUdkbGRFeGxibWQwYUNoamIyeHNaV04wYVc5dUtTQTZJREE3WEc0Z0lHbG1JQ2doYVhOTVpXNW5kR2dvYkdWdVozUm9LU2tnZTF4dUlDQWdJR052Ykd4bFkzUnBiMjRnUFNCMllXeDFaWE1vWTI5c2JHVmpkR2x2YmlrN1hHNGdJQ0FnYkdWdVozUm9JRDBnWTI5c2JHVmpkR2x2Ymk1c1pXNW5kR2c3WEc0Z0lIMWNiaUFnYVdZZ0tIUjVjR1Z2WmlCbWNtOXRTVzVrWlhnZ0lUMGdKMjUxYldKbGNpY2dmSHdnS0dkMVlYSmtJQ1ltSUdselNYUmxjbUYwWldWRFlXeHNLSFJoY21kbGRDd2dabkp2YlVsdVpHVjRMQ0JuZFdGeVpDa3BLU0I3WEc0Z0lDQWdabkp2YlVsdVpHVjRJRDBnTUR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCbWNtOXRTVzVrWlhnZ1BTQm1jbTl0U1c1a1pYZ2dQQ0F3SUQ4Z2JtRjBhWFpsVFdGNEtHeGxibWQwYUNBcklHWnliMjFKYm1SbGVDd2dNQ2tnT2lBb1puSnZiVWx1WkdWNElIeDhJREFwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUFvZEhsd1pXOW1JR052Ykd4bFkzUnBiMjRnUFQwZ0ozTjBjbWx1WnljZ2ZId2dJV2x6UVhKeVlYa29ZMjlzYkdWamRHbHZiaWtnSmlZZ2FYTlRkSEpwYm1jb1kyOXNiR1ZqZEdsdmJpa3BYRzRnSUNBZ1B5QW9abkp2YlVsdVpHVjRJRHc5SUd4bGJtZDBhQ0FtSmlCamIyeHNaV04wYVc5dUxtbHVaR1Y0VDJZb2RHRnlaMlYwTENCbWNtOXRTVzVrWlhncElENGdMVEVwWEc0Z0lDQWdPaUFvSVNGc1pXNW5kR2dnSmlZZ1ltRnpaVWx1WkdWNFQyWW9ZMjlzYkdWamRHbHZiaXdnZEdGeVoyVjBMQ0JtY205dFNXNWtaWGdwSUQ0Z0xURXBPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHbHVZMngxWkdWek8xeHVJaXdpZG1GeUlHRnljbUY1VFdGd0lEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2WVhKeVlYbE5ZWEFuS1N4Y2JpQWdJQ0JpWVhObFEyRnNiR0poWTJzZ1BTQnlaWEYxYVhKbEtDY3VMaTlwYm5SbGNtNWhiQzlpWVhObFEyRnNiR0poWTJzbktTeGNiaUFnSUNCaVlYTmxUV0Z3SUQwZ2NtVnhkV2x5WlNnbkxpNHZhVzUwWlhKdVlXd3ZZbUZ6WlUxaGNDY3BMRnh1SUNBZ0lHbHpRWEp5WVhrZ1BTQnlaWEYxYVhKbEtDY3VMaTlzWVc1bkwybHpRWEp5WVhrbktUdGNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0Z1SUdGeWNtRjVJRzltSUhaaGJIVmxjeUJpZVNCeWRXNXVhVzVuSUdWaFkyZ2daV3hsYldWdWRDQnBiaUJnWTI5c2JHVmpkR2x2Ym1BZ2RHaHliM1ZuYUZ4dUlDb2dZR2wwWlhKaGRHVmxZQzRnVkdobElHQnBkR1Z5WVhSbFpXQWdhWE1nWW05MWJtUWdkRzhnWUhSb2FYTkJjbWRnSUdGdVpDQnBiblp2YTJWa0lIZHBkR2dnZEdoeVpXVmNiaUFxSUdGeVozVnRaVzUwY3pvZ0tIWmhiSFZsTENCcGJtUmxlSHhyWlhrc0lHTnZiR3hsWTNScGIyNHBMbHh1SUNwY2JpQXFJRWxtSUdFZ2NISnZjR1Z5ZEhrZ2JtRnRaU0JwY3lCd2NtOTJhV1JsWkNCbWIzSWdZR2wwWlhKaGRHVmxZQ0IwYUdVZ1kzSmxZWFJsWkNCZ1h5NXdjbTl3WlhKMGVXQmNiaUFxSUhOMGVXeGxJR05oYkd4aVlXTnJJSEpsZEhWeWJuTWdkR2hsSUhCeWIzQmxjblI1SUhaaGJIVmxJRzltSUhSb1pTQm5hWFpsYmlCbGJHVnRaVzUwTGx4dUlDcGNiaUFxSUVsbUlHRWdkbUZzZFdVZ2FYTWdZV3h6YnlCd2NtOTJhV1JsWkNCbWIzSWdZSFJvYVhOQmNtZGdJSFJvWlNCamNtVmhkR1ZrSUdCZkxtMWhkR05vWlhOUWNtOXdaWEowZVdCY2JpQXFJSE4wZVd4bElHTmhiR3hpWVdOcklISmxkSFZ5Ym5NZ1lIUnlkV1ZnSUdadmNpQmxiR1Z0Wlc1MGN5QjBhR0YwSUdoaGRtVWdZU0J0WVhSamFHbHVaeUJ3Y205d1pYSjBlVnh1SUNvZ2RtRnNkV1VzSUdWc2MyVWdZR1poYkhObFlDNWNiaUFxWEc0Z0tpQkpaaUJoYmlCdlltcGxZM1FnYVhNZ2NISnZkbWxrWldRZ1ptOXlJR0JwZEdWeVlYUmxaV0FnZEdobElHTnlaV0YwWldRZ1lGOHViV0YwWTJobGMyQWdjM1I1YkdWY2JpQXFJR05oYkd4aVlXTnJJSEpsZEhWeWJuTWdZSFJ5ZFdWZ0lHWnZjaUJsYkdWdFpXNTBjeUIwYUdGMElHaGhkbVVnZEdobElIQnliM0JsY25ScFpYTWdiMllnZEdobElHZHBkbVZ1WEc0Z0tpQnZZbXBsWTNRc0lHVnNjMlVnWUdaaGJITmxZQzVjYmlBcVhHNGdLaUJOWVc1NUlHeHZaR0Z6YUNCdFpYUm9iMlJ6SUdGeVpTQm5kV0Z5WkdWa0lIUnZJSGR2Y21zZ1lYTWdhWFJsY21GMFpXVnpJR1p2Y2lCdFpYUm9iMlJ6SUd4cGEyVmNiaUFxSUdCZkxtVjJaWEo1WUN3Z1lGOHVabWxzZEdWeVlDd2dZRjh1YldGd1lDd2dZRjh1YldGd1ZtRnNkV1Z6WUN3Z1lGOHVjbVZxWldOMFlDd2dZVzVrSUdCZkxuTnZiV1ZnTGx4dUlDcGNiaUFxSUZSb1pTQm5kV0Z5WkdWa0lHMWxkR2h2WkhNZ1lYSmxPbHh1SUNvZ1lHRnllV0FzSUdCallXeHNZbUZqYTJBc0lHQmphSFZ1YTJBc0lHQmpiRzl1WldBc0lHQmpjbVZoZEdWZ0xDQmdZM1Z5Y25sZ0xDQmdZM1Z5Y25sU2FXZG9kR0FzWEc0Z0tpQmdaSEp2Y0dBc0lHQmtjbTl3VW1sbmFIUmdMQ0JnWlhabGNubGdMQ0JnWm1sc2JHQXNJR0JtYkdGMGRHVnVZQ3dnWUdsdWRtVnlkR0FzSUdCdFlYaGdMQ0JnYldsdVlDeGNiaUFxSUdCd1lYSnpaVWx1ZEdBc0lHQnpiR2xqWldBc0lHQnpiM0owUW5sZ0xDQmdkR0ZyWldBc0lHQjBZV3RsVW1sbmFIUmdMQ0JnZEdWdGNHeGhkR1ZnTENCZ2RISnBiV0FzWEc0Z0tpQmdkSEpwYlV4bFpuUmdMQ0JnZEhKcGJWSnBaMmgwWUN3Z1lIUnlkVzVqWUN3Z1lISmhibVJ2YldBc0lHQnlZVzVuWldBc0lHQnpZVzF3YkdWZ0xDQmdjMjl0WldBc1hHNGdLaUJnYzNWdFlDd2dZSFZ1YVhGZ0xDQmhibVFnWUhkdmNtUnpZRnh1SUNwY2JpQXFJRUJ6ZEdGMGFXTmNiaUFxSUVCdFpXMWlaWEpQWmlCZlhHNGdLaUJBWVd4cFlYTWdZMjlzYkdWamRGeHVJQ29nUUdOaGRHVm5iM0o1SUVOdmJHeGxZM1JwYjI1Y2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOFQySnFaV04wZkhOMGNtbHVaMzBnWTI5c2JHVmpkR2x2YmlCVWFHVWdZMjlzYkdWamRHbHZiaUIwYnlCcGRHVnlZWFJsSUc5MlpYSXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZkU5aWFtVmpkSHh6ZEhKcGJtZDlJRnRwZEdWeVlYUmxaVDFmTG1sa1pXNTBhWFI1WFNCVWFHVWdablZ1WTNScGIyNGdhVzUyYjJ0bFpGeHVJQ29nSUhCbGNpQnBkR1Z5WVhScGIyNHVYRzRnS2lCQWNHRnlZVzBnZXlwOUlGdDBhR2x6UVhKblhTQlVhR1VnWUhSb2FYTmdJR0pwYm1ScGJtY2diMllnWUdsMFpYSmhkR1ZsWUM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnYm1WM0lHMWhjSEJsWkNCaGNuSmhlUzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLbHh1SUNvZ1puVnVZM1JwYjI0Z2RHbHRaWE5VYUhKbFpTaHVLU0I3WEc0Z0tpQWdJSEpsZEhWeWJpQnVJQ29nTXp0Y2JpQXFJSDFjYmlBcVhHNGdLaUJmTG0xaGNDaGJNU3dnTWwwc0lIUnBiV1Z6VkdoeVpXVXBPMXh1SUNvZ0x5OGdQVDRnV3pNc0lEWmRYRzRnS2x4dUlDb2dYeTV0WVhBb2V5QW5ZU2M2SURFc0lDZGlKem9nTWlCOUxDQjBhVzFsYzFSb2NtVmxLVHRjYmlBcUlDOHZJRDArSUZzekxDQTJYU0FvYVhSbGNtRjBhVzl1SUc5eVpHVnlJR2x6SUc1dmRDQm5kV0Z5WVc1MFpXVmtLVnh1SUNwY2JpQXFJSFpoY2lCMWMyVnljeUE5SUZ0Y2JpQXFJQ0FnZXlBbmRYTmxjaWM2SUNkaVlYSnVaWGtuSUgwc1hHNGdLaUFnSUhzZ0ozVnpaWEluT2lBblpuSmxaQ2NnZlZ4dUlDb2dYVHRjYmlBcVhHNGdLaUF2THlCMWMybHVaeUIwYUdVZ1lGOHVjSEp2Y0dWeWRIbGdJR05oYkd4aVlXTnJJSE5vYjNKMGFHRnVaRnh1SUNvZ1h5NXRZWEFvZFhObGNuTXNJQ2QxYzJWeUp5azdYRzRnS2lBdkx5QTlQaUJiSjJKaGNtNWxlU2NzSUNkbWNtVmtKMTFjYmlBcUwxeHVablZ1WTNScGIyNGdiV0Z3S0dOdmJHeGxZM1JwYjI0c0lHbDBaWEpoZEdWbExDQjBhR2x6UVhKbktTQjdYRzRnSUhaaGNpQm1kVzVqSUQwZ2FYTkJjbkpoZVNoamIyeHNaV04wYVc5dUtTQS9JR0Z5Y21GNVRXRndJRG9nWW1GelpVMWhjRHRjYmlBZ2FYUmxjbUYwWldVZ1BTQmlZWE5sUTJGc2JHSmhZMnNvYVhSbGNtRjBaV1VzSUhSb2FYTkJjbWNzSURNcE8xeHVJQ0J5WlhSMWNtNGdablZ1WXloamIyeHNaV04wYVc5dUxDQnBkR1Z5WVhSbFpTazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2JXRndPMXh1SWl3aWRtRnlJR2RsZEU1aGRHbDJaU0E5SUhKbGNYVnBjbVVvSnk0dUwybHVkR1Z5Ym1Gc0wyZGxkRTVoZEdsMlpTY3BPMXh1WEc0dktpQk9ZWFJwZG1VZ2JXVjBhRzlrSUhKbFptVnlaVzVqWlhNZ1ptOXlJSFJvYjNObElIZHBkR2dnZEdobElITmhiV1VnYm1GdFpTQmhjeUJ2ZEdobGNpQmdiRzlrWVhOb1lDQnRaWFJvYjJSekxpQXFMMXh1ZG1GeUlHNWhkR2wyWlU1dmR5QTlJR2RsZEU1aGRHbDJaU2hFWVhSbExDQW5ibTkzSnlrN1hHNWNiaThxS2x4dUlDb2dSMlYwY3lCMGFHVWdiblZ0WW1WeUlHOW1JRzFwYkd4cGMyVmpiMjVrY3lCMGFHRjBJR2hoZG1VZ1pXeGhjSE5sWkNCemFXNWpaU0IwYUdVZ1ZXNXBlQ0JsY0c5amFGeHVJQ29nS0RFZ1NtRnVkV0Z5ZVNBeE9UY3dJREF3T2pBd09qQXdJRlZVUXlrdVhHNGdLbHh1SUNvZ1FITjBZWFJwWTF4dUlDb2dRRzFsYldKbGNrOW1JRjljYmlBcUlFQmpZWFJsWjI5eWVTQkVZWFJsWEc0Z0tpQkFaWGhoYlhCc1pWeHVJQ3BjYmlBcUlGOHVaR1ZtWlhJb1puVnVZM1JwYjI0b2MzUmhiWEFwSUh0Y2JpQXFJQ0FnWTI5dWMyOXNaUzVzYjJjb1h5NXViM2NvS1NBdElITjBZVzF3S1R0Y2JpQXFJSDBzSUY4dWJtOTNLQ2twTzF4dUlDb2dMeThnUFQ0Z2JHOW5jeUIwYUdVZ2JuVnRZbVZ5SUc5bUlHMXBiR3hwYzJWamIyNWtjeUJwZENCMGIyOXJJR1p2Y2lCMGFHVWdaR1ZtWlhKeVpXUWdablZ1WTNScGIyNGdkRzhnWW1VZ2FXNTJiMnRsWkZ4dUlDb3ZYRzUyWVhJZ2JtOTNJRDBnYm1GMGFYWmxUbTkzSUh4OElHWjFibU4wYVc5dUtDa2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lFUmhkR1VvS1M1blpYUlVhVzFsS0NrN1hHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUc1dmR6dGNiaUlzSW5aaGNpQmpjbVZoZEdWWGNtRndjR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpNHZhVzUwWlhKdVlXd3ZZM0psWVhSbFYzSmhjSEJsY2ljcExGeHVJQ0FnSUhKbGNHeGhZMlZJYjJ4a1pYSnpJRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dmNtVndiR0ZqWlVodmJHUmxjbk1uS1N4Y2JpQWdJQ0J5WlhOMFVHRnlZVzBnUFNCeVpYRjFhWEpsS0NjdUwzSmxjM1JRWVhKaGJTY3BPMXh1WEc0dktpb2dWWE5sWkNCMGJ5QmpiMjF3YjNObElHSnBkRzFoYzJ0eklHWnZjaUIzY21Gd2NHVnlJRzFsZEdGa1lYUmhMaUFxTDF4dWRtRnlJRUpKVGtSZlJreEJSeUE5SURFc1hHNGdJQ0FnVUVGU1ZFbEJURjlHVEVGSElEMGdNekk3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaElHWjFibU4wYVc5dUlIUm9ZWFFnYVc1MmIydGxjeUJnWm5WdVkyQWdkMmwwYUNCMGFHVWdZSFJvYVhOZ0lHSnBibVJwYm1jZ2IyWWdZSFJvYVhOQmNtZGdYRzRnS2lCaGJtUWdjSEpsY0dWdVpITWdZVzU1SUdGa1pHbDBhVzl1WVd3Z1lGOHVZbWx1WkdBZ1lYSm5kVzFsYm5SeklIUnZJSFJvYjNObElIQnliM1pwWkdWa0lIUnZJSFJvWlZ4dUlDb2dZbTkxYm1RZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ1ZHaGxJR0JmTG1KcGJtUXVjR3hoWTJWb2IyeGtaWEpnSUhaaGJIVmxMQ0IzYUdsamFDQmtaV1poZFd4MGN5QjBieUJnWDJBZ2FXNGdiVzl1YjJ4cGRHaHBZeUJpZFdsc1pITXNYRzRnS2lCdFlYa2dZbVVnZFhObFpDQmhjeUJoSUhCc1lXTmxhRzlzWkdWeUlHWnZjaUJ3WVhKMGFXRnNiSGtnWVhCd2JHbGxaQ0JoY21kMWJXVnVkSE11WEc0Z0tseHVJQ29nS2lwT2IzUmxPaW9xSUZWdWJHbHJaU0J1WVhScGRtVWdZRVoxYm1OMGFXOXVJMkpwYm1SZ0lIUm9hWE1nYldWMGFHOWtJR1J2WlhNZ2JtOTBJSE5sZENCMGFHVWdYQ0pzWlc1bmRHaGNJbHh1SUNvZ2NISnZjR1Z5ZEhrZ2IyWWdZbTkxYm1RZ1puVnVZM1JwYjI1ekxseHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFZMkYwWldkdmNua2dSblZ1WTNScGIyNWNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUdaMWJtTWdWR2hsSUdaMWJtTjBhVzl1SUhSdklHSnBibVF1WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSFJvYVhOQmNtY2dWR2hsSUdCMGFHbHpZQ0JpYVc1a2FXNW5JRzltSUdCbWRXNWpZQzVjYmlBcUlFQndZWEpoYlNCN0xpNHVLbjBnVzNCaGNuUnBZV3h6WFNCVWFHVWdZWEpuZFcxbGJuUnpJSFJ2SUdKbElIQmhjblJwWVd4c2VTQmhjSEJzYVdWa0xseHVJQ29nUUhKbGRIVnlibk1nZTBaMWJtTjBhVzl1ZlNCU1pYUjFjbTV6SUhSb1pTQnVaWGNnWW05MWJtUWdablZ1WTNScGIyNHVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUhaaGNpQm5jbVZsZENBOUlHWjFibU4wYVc5dUtHZHlaV1YwYVc1bkxDQndkVzVqZEhWaGRHbHZiaWtnZTF4dUlDb2dJQ0J5WlhSMWNtNGdaM0psWlhScGJtY2dLeUFuSUNjZ0t5QjBhR2x6TG5WelpYSWdLeUJ3ZFc1amRIVmhkR2x2Ymp0Y2JpQXFJSDA3WEc0Z0tseHVJQ29nZG1GeUlHOWlhbVZqZENBOUlIc2dKM1Z6WlhJbk9pQW5abkpsWkNjZ2ZUdGNiaUFxWEc0Z0tpQjJZWElnWW05MWJtUWdQU0JmTG1KcGJtUW9aM0psWlhRc0lHOWlhbVZqZEN3Z0oyaHBKeWs3WEc0Z0tpQmliM1Z1WkNnbklTY3BPMXh1SUNvZ0x5OGdQVDRnSjJocElHWnlaV1FoSjF4dUlDcGNiaUFxSUM4dklIVnphVzVuSUhCc1lXTmxhRzlzWkdWeWMxeHVJQ29nZG1GeUlHSnZkVzVrSUQwZ1h5NWlhVzVrS0dkeVpXVjBMQ0J2WW1wbFkzUXNJRjhzSUNjaEp5azdYRzRnS2lCaWIzVnVaQ2duYUdrbktUdGNiaUFxSUM4dklEMCtJQ2RvYVNCbWNtVmtJU2RjYmlBcUwxeHVkbUZ5SUdKcGJtUWdQU0J5WlhOMFVHRnlZVzBvWm5WdVkzUnBiMjRvWm5WdVl5d2dkR2hwYzBGeVp5d2djR0Z5ZEdsaGJITXBJSHRjYmlBZ2RtRnlJR0pwZEcxaGMyc2dQU0JDU1U1RVgwWk1RVWM3WEc0Z0lHbG1JQ2h3WVhKMGFXRnNjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQjJZWElnYUc5c1pHVnljeUE5SUhKbGNHeGhZMlZJYjJ4a1pYSnpLSEJoY25ScFlXeHpMQ0JpYVc1a0xuQnNZV05sYUc5c1pHVnlLVHRjYmlBZ0lDQmlhWFJ0WVhOcklIdzlJRkJCVWxSSlFVeGZSa3hCUnp0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWTNKbFlYUmxWM0poY0hCbGNpaG1kVzVqTENCaWFYUnRZWE5yTENCMGFHbHpRWEpuTENCd1lYSjBhV0ZzY3l3Z2FHOXNaR1Z5Y3lrN1hHNTlLVHRjYmx4dUx5OGdRWE56YVdkdUlHUmxabUYxYkhRZ2NHeGhZMlZvYjJ4a1pYSnpMbHh1WW1sdVpDNXdiR0ZqWldodmJHUmxjaUE5SUh0OU8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR0pwYm1RN1hHNGlMQ0l2S2lvZ1ZYTmxaQ0JoY3lCMGFHVWdZRlI1Y0dWRmNuSnZjbUFnYldWemMyRm5aU0JtYjNJZ1hDSkdkVzVqZEdsdmJuTmNJaUJ0WlhSb2IyUnpMaUFxTDF4dWRtRnlJRVpWVGtOZlJWSlNUMUpmVkVWWVZDQTlJQ2RGZUhCbFkzUmxaQ0JoSUdaMWJtTjBhVzl1Snp0Y2JseHVMeW9nVG1GMGFYWmxJRzFsZEdodlpDQnlaV1psY21WdVkyVnpJR1p2Y2lCMGFHOXpaU0IzYVhSb0lIUm9aU0J6WVcxbElHNWhiV1VnWVhNZ2IzUm9aWElnWUd4dlpHRnphR0FnYldWMGFHOWtjeTRnS2k5Y2JuWmhjaUJ1WVhScGRtVk5ZWGdnUFNCTllYUm9MbTFoZUR0Y2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdablZ1WTNScGIyNGdkR2hoZENCcGJuWnZhMlZ6SUdCbWRXNWpZQ0IzYVhSb0lIUm9aU0JnZEdocGMyQWdZbWx1WkdsdVp5QnZaaUIwYUdWY2JpQXFJR055WldGMFpXUWdablZ1WTNScGIyNGdZVzVrSUdGeVozVnRaVzUwY3lCbWNtOXRJR0J6ZEdGeWRHQWdZVzVrSUdKbGVXOXVaQ0J3Y205MmFXUmxaQ0JoY3lCaGJpQmhjbkpoZVM1Y2JpQXFYRzRnS2lBcUtrNXZkR1U2S2lvZ1ZHaHBjeUJ0WlhSb2IyUWdhWE1nWW1GelpXUWdiMjRnZEdobElGdHlaWE4wSUhCaGNtRnRaWFJsY2wwb2FIUjBjSE02THk5a1pYWmxiRzl3WlhJdWJXOTZhV3hzWVM1dmNtY3ZWMlZpTDBwaGRtRlRZM0pwY0hRdlVtVm1aWEpsYm1ObEwwWjFibU4wYVc5dWN5OXlaWE4wWDNCaGNtRnRaWFJsY25NcExseHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFZMkYwWldkdmNua2dSblZ1WTNScGIyNWNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUdaMWJtTWdWR2hsSUdaMWJtTjBhVzl1SUhSdklHRndjR3g1SUdFZ2NtVnpkQ0J3WVhKaGJXVjBaWElnZEc4dVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXM04wWVhKMFBXWjFibU11YkdWdVozUm9MVEZkSUZSb1pTQnpkR0Z5ZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnY21WemRDQndZWEpoYldWMFpYSXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1JuVnVZM1JwYjI1OUlGSmxkSFZ5Ym5NZ2RHaGxJRzVsZHlCbWRXNWpkR2x2Ymk1Y2JpQXFJRUJsZUdGdGNHeGxYRzRnS2x4dUlDb2dkbUZ5SUhOaGVTQTlJRjh1Y21WemRGQmhjbUZ0S0daMWJtTjBhVzl1S0hkb1lYUXNJRzVoYldWektTQjdYRzRnS2lBZ0lISmxkSFZ5YmlCM2FHRjBJQ3NnSnlBbklDc2dYeTVwYm1sMGFXRnNLRzVoYldWektTNXFiMmx1S0Njc0lDY3BJQ3RjYmlBcUlDQWdJQ0FvWHk1emFYcGxLRzVoYldWektTQStJREVnUHlBbkxDQW1JQ2NnT2lBbkp5a2dLeUJmTG14aGMzUW9ibUZ0WlhNcE8xeHVJQ29nZlNrN1hHNGdLbHh1SUNvZ2MyRjVLQ2RvWld4c2J5Y3NJQ2RtY21Wa0p5d2dKMkpoY201bGVTY3NJQ2R3WldKaWJHVnpKeWs3WEc0Z0tpQXZMeUE5UGlBbmFHVnNiRzhnWm5KbFpDd2dZbUZ5Ym1WNUxDQW1JSEJsWW1Kc1pYTW5YRzRnS2k5Y2JtWjFibU4wYVc5dUlISmxjM1JRWVhKaGJTaG1kVzVqTENCemRHRnlkQ2tnZTF4dUlDQnBaaUFvZEhsd1pXOW1JR1oxYm1NZ0lUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJVZVhCbFJYSnliM0lvUmxWT1ExOUZVbEpQVWw5VVJWaFVLVHRjYmlBZ2ZWeHVJQ0J6ZEdGeWRDQTlJRzVoZEdsMlpVMWhlQ2h6ZEdGeWRDQTlQVDBnZFc1a1pXWnBibVZrSUQ4Z0tHWjFibU11YkdWdVozUm9JQzBnTVNrZ09pQW9LM04wWVhKMElIeDhJREFwTENBd0tUdGNiaUFnY21WMGRYSnVJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJSFpoY2lCaGNtZHpJRDBnWVhKbmRXMWxiblJ6TEZ4dUlDQWdJQ0FnSUNCcGJtUmxlQ0E5SUMweExGeHVJQ0FnSUNBZ0lDQnNaVzVuZEdnZ1BTQnVZWFJwZG1WTllYZ29ZWEpuY3k1c1pXNW5kR2dnTFNCemRHRnlkQ3dnTUNrc1hHNGdJQ0FnSUNBZ0lISmxjM1FnUFNCQmNuSmhlU2hzWlc1bmRHZ3BPMXh1WEc0Z0lDQWdkMmhwYkdVZ0tDc3JhVzVrWlhnZ1BDQnNaVzVuZEdncElIdGNiaUFnSUNBZ0lISmxjM1JiYVc1a1pYaGRJRDBnWVhKbmMxdHpkR0Z5ZENBcklHbHVaR1Y0WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdjM2RwZEdOb0lDaHpkR0Z5ZENrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0F3T2lCeVpYUjFjbTRnWm5WdVl5NWpZV3hzS0hSb2FYTXNJSEpsYzNRcE8xeHVJQ0FnSUNBZ1kyRnpaU0F4T2lCeVpYUjFjbTRnWm5WdVl5NWpZV3hzS0hSb2FYTXNJR0Z5WjNOYk1GMHNJSEpsYzNRcE8xeHVJQ0FnSUNBZ1kyRnpaU0F5T2lCeVpYUjFjbTRnWm5WdVl5NWpZV3hzS0hSb2FYTXNJR0Z5WjNOYk1GMHNJR0Z5WjNOYk1WMHNJSEpsYzNRcE8xeHVJQ0FnSUgxY2JpQWdJQ0IyWVhJZ2IzUm9aWEpCY21keklEMGdRWEp5WVhrb2MzUmhjblFnS3lBeEtUdGNiaUFnSUNCcGJtUmxlQ0E5SUMweE8xeHVJQ0FnSUhkb2FXeGxJQ2dySzJsdVpHVjRJRHdnYzNSaGNuUXBJSHRjYmlBZ0lDQWdJRzkwYUdWeVFYSm5jMXRwYm1SbGVGMGdQU0JoY21kelcybHVaR1Y0WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdiM1JvWlhKQmNtZHpXM04wWVhKMFhTQTlJSEpsYzNRN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1NdVlYQndiSGtvZEdocGN5d2diM1JvWlhKQmNtZHpLVHRjYmlBZ2ZUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCeVpYTjBVR0Z5WVcwN1hHNGlMQ0oyWVhJZ1ltRnpaVU55WldGMFpTQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVTnlaV0YwWlNjcExGeHVJQ0FnSUdKaGMyVk1iMlJoYzJnZ1BTQnlaWEYxYVhKbEtDY3VMMkpoYzJWTWIyUmhjMmduS1R0Y2JseHVMeW9xSUZWelpXUWdZWE1nY21WbVpYSmxibU5sY3lCbWIzSWdZQzFKYm1acGJtbDBlV0FnWVc1a0lHQkpibVpwYm1sMGVXQXVJQ292WEc1MllYSWdVRTlUU1ZSSlZrVmZTVTVHU1U1SlZGa2dQU0JPZFcxaVpYSXVVRTlUU1ZSSlZrVmZTVTVHU1U1SlZGazdYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoSUd4aGVua2dkM0poY0hCbGNpQnZZbXBsWTNRZ2QyaHBZMmdnZDNKaGNITWdZSFpoYkhWbFlDQjBieUJsYm1GaWJHVWdiR0Y2ZVNCbGRtRnNkV0YwYVc5dUxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdleXA5SUhaaGJIVmxJRlJvWlNCMllXeDFaU0IwYnlCM2NtRndMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQk1ZWHA1VjNKaGNIQmxjaWgyWVd4MVpTa2dlMXh1SUNCMGFHbHpMbDlmZDNKaGNIQmxaRjlmSUQwZ2RtRnNkV1U3WEc0Z0lIUm9hWE11WDE5aFkzUnBiMjV6WDE4Z1BTQmJYVHRjYmlBZ2RHaHBjeTVmWDJScGNsOWZJRDBnTVR0Y2JpQWdkR2hwY3k1ZlgyWnBiSFJsY21Wa1gxOGdQU0JtWVd4elpUdGNiaUFnZEdocGN5NWZYMmwwWlhKaGRHVmxjMTlmSUQwZ1cxMDdYRzRnSUhSb2FYTXVYMTkwWVd0bFEyOTFiblJmWHlBOUlGQlBVMGxVU1ZaRlgwbE9Sa2xPU1ZSWk8xeHVJQ0IwYUdsekxsOWZkbWxsZDNOZlh5QTlJRnRkTzF4dWZWeHVYRzVNWVhwNVYzSmhjSEJsY2k1d2NtOTBiM1I1Y0dVZ1BTQmlZWE5sUTNKbFlYUmxLR0poYzJWTWIyUmhjMmd1Y0hKdmRHOTBlWEJsS1R0Y2JreGhlbmxYY21Gd2NHVnlMbkJ5YjNSdmRIbHdaUzVqYjI1emRISjFZM1J2Y2lBOUlFeGhlbmxYY21Gd2NHVnlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUV4aGVubFhjbUZ3Y0dWeU8xeHVJaXdpZG1GeUlHSmhjMlZEY21WaGRHVWdQU0J5WlhGMWFYSmxLQ2N1TDJKaGMyVkRjbVZoZEdVbktTeGNiaUFnSUNCaVlYTmxURzlrWVhOb0lEMGdjbVZ4ZFdseVpTZ25MaTlpWVhObFRHOWtZWE5vSnlrN1hHNWNiaThxS2x4dUlDb2dWR2hsSUdKaGMyVWdZMjl1YzNSeWRXTjBiM0lnWm05eUlHTnlaV0YwYVc1bklHQnNiMlJoYzJoZ0lIZHlZWEJ3WlhJZ2IySnFaV04wY3k1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIc3FmU0IyWVd4MVpTQlVhR1VnZG1Gc2RXVWdkRzhnZDNKaGNDNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzJOb1lXbHVRV3hzWFNCRmJtRmliR1VnWTJoaGFXNXBibWNnWm05eUlHRnNiQ0IzY21Gd2NHVnlJRzFsZEdodlpITXVYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmU0JiWVdOMGFXOXVjejFiWFYwZ1FXTjBhVzl1Y3lCMGJ5QndaV1p2Y20wZ2RHOGdjbVZ6YjJ4MlpTQjBhR1VnZFc1M2NtRndjR1ZrSUhaaGJIVmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQk1iMlJoYzJoWGNtRndjR1Z5S0haaGJIVmxMQ0JqYUdGcGJrRnNiQ3dnWVdOMGFXOXVjeWtnZTF4dUlDQjBhR2x6TGw5ZmQzSmhjSEJsWkY5ZklEMGdkbUZzZFdVN1hHNGdJSFJvYVhNdVgxOWhZM1JwYjI1elgxOGdQU0JoWTNScGIyNXpJSHg4SUZ0ZE8xeHVJQ0IwYUdsekxsOWZZMmhoYVc1Zlh5QTlJQ0VoWTJoaGFXNUJiR3c3WEc1OVhHNWNia3h2WkdGemFGZHlZWEJ3WlhJdWNISnZkRzkwZVhCbElEMGdZbUZ6WlVOeVpXRjBaU2hpWVhObFRHOWtZWE5vTG5CeWIzUnZkSGx3WlNrN1hHNU1iMlJoYzJoWGNtRndjR1Z5TG5CeWIzUnZkSGx3WlM1amIyNXpkSEoxWTNSdmNpQTlJRXh2WkdGemFGZHlZWEJ3WlhJN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdURzlrWVhOb1YzSmhjSEJsY2p0Y2JpSXNJaThxS2x4dUlDb2dRMjl3YVdWeklIUm9aU0IyWVd4MVpYTWdiMllnWUhOdmRYSmpaV0FnZEc4Z1lHRnljbUY1WUM1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ2MyOTFjbU5sSUZSb1pTQmhjbkpoZVNCMGJ5QmpiM0I1SUhaaGJIVmxjeUJtY205dExseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdXMkZ5Y21GNVBWdGRYU0JVYUdVZ1lYSnlZWGtnZEc4Z1kyOXdlU0IyWVd4MVpYTWdkRzh1WEc0Z0tpQkFjbVYwZFhKdWN5QjdRWEp5WVhsOUlGSmxkSFZ5Ym5NZ1lHRnljbUY1WUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVhKeVlYbERiM0I1S0hOdmRYSmpaU3dnWVhKeVlYa3BJSHRjYmlBZ2RtRnlJR2x1WkdWNElEMGdMVEVzWEc0Z0lDQWdJQ0JzWlc1bmRHZ2dQU0J6YjNWeVkyVXViR1Z1WjNSb08xeHVYRzRnSUdGeWNtRjVJSHg4SUNoaGNuSmhlU0E5SUVGeWNtRjVLR3hsYm1kMGFDa3BPMXh1SUNCM2FHbHNaU0FvS3l0cGJtUmxlQ0E4SUd4bGJtZDBhQ2tnZTF4dUlDQWdJR0Z5Y21GNVcybHVaR1Y0WFNBOUlITnZkWEpqWlZ0cGJtUmxlRjA3WEc0Z0lIMWNiaUFnY21WMGRYSnVJR0Z5Y21GNU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdGeWNtRjVRMjl3ZVR0Y2JpSXNJaThxS2x4dUlDb2dRU0J6Y0dWamFXRnNhWHBsWkNCMlpYSnphVzl1SUc5bUlHQmZMbVp2Y2tWaFkyaGdJR1p2Y2lCaGNuSmhlWE1nZDJsMGFHOTFkQ0J6ZFhCd2IzSjBJR1p2Y2lCallXeHNZbUZqYTF4dUlDb2djMmh2Y25Sb1lXNWtjeUJoYm1RZ1lIUm9hWE5nSUdKcGJtUnBibWN1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUdGeWNtRjVJRlJvWlNCaGNuSmhlU0IwYnlCcGRHVnlZWFJsSUc5MlpYSXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCcGRHVnlZWFJsWlNCVWFHVWdablZ1WTNScGIyNGdhVzUyYjJ0bFpDQndaWElnYVhSbGNtRjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJuTWdlMEZ5Y21GNWZTQlNaWFIxY201eklHQmhjbkpoZVdBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdGeWNtRjVSV0ZqYUNoaGNuSmhlU3dnYVhSbGNtRjBaV1VwSUh0Y2JpQWdkbUZ5SUdsdVpHVjRJRDBnTFRFc1hHNGdJQ0FnSUNCc1pXNW5kR2dnUFNCaGNuSmhlUzVzWlc1bmRHZzdYRzVjYmlBZ2QyaHBiR1VnS0NzcmFXNWtaWGdnUENCc1pXNW5kR2dwSUh0Y2JpQWdJQ0JwWmlBb2FYUmxjbUYwWldVb1lYSnlZWGxiYVc1a1pYaGRMQ0JwYm1SbGVDd2dZWEp5WVhrcElEMDlQU0JtWVd4elpTa2dlMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJoY25KaGVUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaGNuSmhlVVZoWTJnN1hHNGlMQ0l2S2lwY2JpQXFJRUVnYzNCbFkybGhiR2w2WldRZ2RtVnljMmx2YmlCdlppQmdYeTV0WVhCZ0lHWnZjaUJoY25KaGVYTWdkMmwwYUc5MWRDQnpkWEJ3YjNKMElHWnZjaUJqWVd4c1ltRmphMXh1SUNvZ2MyaHZjblJvWVc1a2N5QmhibVFnWUhSb2FYTmdJR0pwYm1ScGJtY3VYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDlJR0Z5Y21GNUlGUm9aU0JoY25KaGVTQjBieUJwZEdWeVlYUmxJRzkyWlhJdVhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JwZEdWeVlYUmxaU0JVYUdVZ1puVnVZM1JwYjI0Z2FXNTJiMnRsWkNCd1pYSWdhWFJsY21GMGFXOXVMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UwRnljbUY1ZlNCU1pYUjFjbTV6SUhSb1pTQnVaWGNnYldGd2NHVmtJR0Z5Y21GNUxseHVJQ292WEc1bWRXNWpkR2x2YmlCaGNuSmhlVTFoY0NoaGNuSmhlU3dnYVhSbGNtRjBaV1VwSUh0Y2JpQWdkbUZ5SUdsdVpHVjRJRDBnTFRFc1hHNGdJQ0FnSUNCc1pXNW5kR2dnUFNCaGNuSmhlUzVzWlc1bmRHZ3NYRzRnSUNBZ0lDQnlaWE4xYkhRZ1BTQkJjbkpoZVNoc1pXNW5kR2dwTzF4dVhHNGdJSGRvYVd4bElDZ3JLMmx1WkdWNElEd2diR1Z1WjNSb0tTQjdYRzRnSUNBZ2NtVnpkV3gwVzJsdVpHVjRYU0E5SUdsMFpYSmhkR1ZsS0dGeWNtRjVXMmx1WkdWNFhTd2dhVzVrWlhnc0lHRnljbUY1S1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnY21WemRXeDBPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHRnljbUY1VFdGd08xeHVJaXdpTHlvcVhHNGdLaUJCSUhOd1pXTnBZV3hwZW1Wa0lIWmxjbk5wYjI0Z2IyWWdZRjh1YzI5dFpXQWdabTl5SUdGeWNtRjVjeUIzYVhSb2IzVjBJSE4xY0hCdmNuUWdabTl5SUdOaGJHeGlZV05yWEc0Z0tpQnphRzl5ZEdoaGJtUnpJR0Z1WkNCZ2RHaHBjMkFnWW1sdVpHbHVaeTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnWVhKeVlYa2dWR2hsSUdGeWNtRjVJSFJ2SUdsMFpYSmhkR1VnYjNabGNpNWNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUhCeVpXUnBZMkYwWlNCVWFHVWdablZ1WTNScGIyNGdhVzUyYjJ0bFpDQndaWElnYVhSbGNtRjBhVzl1TGx4dUlDb2dRSEpsZEhWeWJuTWdlMkp2YjJ4bFlXNTlJRkpsZEhWeWJuTWdZSFJ5ZFdWZ0lHbG1JR0Z1ZVNCbGJHVnRaVzUwSUhCaGMzTmxjeUIwYUdVZ2NISmxaR2xqWVhSbElHTm9aV05yTEZ4dUlDb2dJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWVhKeVlYbFRiMjFsS0dGeWNtRjVMQ0J3Y21Wa2FXTmhkR1VwSUh0Y2JpQWdkbUZ5SUdsdVpHVjRJRDBnTFRFc1hHNGdJQ0FnSUNCc1pXNW5kR2dnUFNCaGNuSmhlUzVzWlc1bmRHZzdYRzVjYmlBZ2QyaHBiR1VnS0NzcmFXNWtaWGdnUENCc1pXNW5kR2dwSUh0Y2JpQWdJQ0JwWmlBb2NISmxaR2xqWVhSbEtHRnljbUY1VzJsdVpHVjRYU3dnYVc1a1pYZ3NJR0Z5Y21GNUtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JoY25KaGVWTnZiV1U3WEc0aUxDSjJZWElnWW1GelpVTnZjSGtnUFNCeVpYRjFhWEpsS0NjdUwySmhjMlZEYjNCNUp5a3NYRzRnSUNBZ2EyVjVjeUE5SUhKbGNYVnBjbVVvSnk0dUwyOWlhbVZqZEM5clpYbHpKeWs3WEc1Y2JpOHFLbHh1SUNvZ1ZHaGxJR0poYzJVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1lGOHVZWE56YVdkdVlDQjNhWFJvYjNWMElITjFjSEJ2Y25RZ1ptOXlJR0Z5WjNWdFpXNTBJR3AxWjJkc2FXNW5MRnh1SUNvZ2JYVnNkR2x3YkdVZ2MyOTFjbU5sY3l3Z1lXNWtJR0JqZFhOMGIyMXBlbVZ5WUNCbWRXNWpkR2x2Ym5NdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZZbXBsWTNRZ1ZHaGxJR1JsYzNScGJtRjBhVzl1SUc5aWFtVmpkQzVjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCemIzVnlZMlVnVkdobElITnZkWEpqWlNCdlltcGxZM1F1WEc0Z0tpQkFjbVYwZFhKdWN5QjdUMkpxWldOMGZTQlNaWFIxY201eklHQnZZbXBsWTNSZ0xseHVJQ292WEc1bWRXNWpkR2x2YmlCaVlYTmxRWE56YVdkdUtHOWlhbVZqZEN3Z2MyOTFjbU5sS1NCN1hHNGdJSEpsZEhWeWJpQnpiM1Z5WTJVZ1BUMGdiblZzYkZ4dUlDQWdJRDhnYjJKcVpXTjBYRzRnSUNBZ09pQmlZWE5sUTI5d2VTaHpiM1Z5WTJVc0lHdGxlWE1vYzI5MWNtTmxLU3dnYjJKcVpXTjBLVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmlZWE5sUVhOemFXZHVPMXh1SWl3aWRtRnlJR0poYzJWTllYUmphR1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOWlZWE5sVFdGMFkyaGxjeWNwTEZ4dUlDQWdJR0poYzJWTllYUmphR1Z6VUhKdmNHVnlkSGtnUFNCeVpYRjFhWEpsS0NjdUwySmhjMlZOWVhSamFHVnpVSEp2Y0dWeWRIa25LU3hjYmlBZ0lDQmlhVzVrUTJGc2JHSmhZMnNnUFNCeVpYRjFhWEpsS0NjdUwySnBibVJEWVd4c1ltRmpheWNwTEZ4dUlDQWdJR2xrWlc1MGFYUjVJRDBnY21WeGRXbHlaU2duTGk0dmRYUnBiR2wwZVM5cFpHVnVkR2wwZVNjcExGeHVJQ0FnSUhCeWIzQmxjblI1SUQwZ2NtVnhkV2x5WlNnbkxpNHZkWFJwYkdsMGVTOXdjbTl3WlhKMGVTY3BPMXh1WEc0dktpcGNiaUFxSUZSb1pTQmlZWE5sSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJRzltSUdCZkxtTmhiR3hpWVdOcllDQjNhR2xqYUNCemRYQndiM0owY3lCemNHVmphV1o1YVc1bklIUm9aVnh1SUNvZ2JuVnRZbVZ5SUc5bUlHRnlaM1Z0Wlc1MGN5QjBieUJ3Y205MmFXUmxJSFJ2SUdCbWRXNWpZQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUhzcWZTQmJablZ1WXoxZkxtbGtaVzUwYVhSNVhTQlVhR1VnZG1Gc2RXVWdkRzhnWTI5dWRtVnlkQ0IwYnlCaElHTmhiR3hpWVdOckxseHVJQ29nUUhCaGNtRnRJSHNxZlNCYmRHaHBjMEZ5WjEwZ1ZHaGxJR0IwYUdsellDQmlhVzVrYVc1bklHOW1JR0JtZFc1allDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiWVhKblEyOTFiblJkSUZSb1pTQnVkVzFpWlhJZ2IyWWdZWEpuZFcxbGJuUnpJSFJ2SUhCeWIzWnBaR1VnZEc4Z1lHWjFibU5nTGx4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVmU0JTWlhSMWNtNXpJSFJvWlNCallXeHNZbUZqYXk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWW1GelpVTmhiR3hpWVdOcktHWjFibU1zSUhSb2FYTkJjbWNzSUdGeVowTnZkVzUwS1NCN1hHNGdJSFpoY2lCMGVYQmxJRDBnZEhsd1pXOW1JR1oxYm1NN1hHNGdJR2xtSUNoMGVYQmxJRDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGMwRnlaeUE5UFQwZ2RXNWtaV1pwYm1Wa1hHNGdJQ0FnSUNBL0lHWjFibU5jYmlBZ0lDQWdJRG9nWW1sdVpFTmhiR3hpWVdOcktHWjFibU1zSUhSb2FYTkJjbWNzSUdGeVowTnZkVzUwS1R0Y2JpQWdmVnh1SUNCcFppQW9ablZ1WXlBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJR2xrWlc1MGFYUjVPMXh1SUNCOVhHNGdJR2xtSUNoMGVYQmxJRDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnY21WMGRYSnVJR0poYzJWTllYUmphR1Z6S0daMWJtTXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjBhR2x6UVhKbklEMDlQU0IxYm1SbFptbHVaV1JjYmlBZ0lDQS9JSEJ5YjNCbGNuUjVLR1oxYm1NcFhHNGdJQ0FnT2lCaVlYTmxUV0YwWTJobGMxQnliM0JsY25SNUtHWjFibU1zSUhSb2FYTkJjbWNwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR0poYzJWRFlXeHNZbUZqYXp0Y2JpSXNJblpoY2lCaGNuSmhlVU52Y0hrZ1BTQnlaWEYxYVhKbEtDY3VMMkZ5Y21GNVEyOXdlU2NwTEZ4dUlDQWdJR0Z5Y21GNVJXRmphQ0E5SUhKbGNYVnBjbVVvSnk0dllYSnlZWGxGWVdOb0p5a3NYRzRnSUNBZ1ltRnpaVUZ6YzJsbmJpQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVRnpjMmxuYmljcExGeHVJQ0FnSUdKaGMyVkdiM0pQZDI0Z1BTQnlaWEYxYVhKbEtDY3VMMkpoYzJWR2IzSlBkMjRuS1N4Y2JpQWdJQ0JwYm1sMFEyeHZibVZCY25KaGVTQTlJSEpsY1hWcGNtVW9KeTR2YVc1cGRFTnNiMjVsUVhKeVlYa25LU3hjYmlBZ0lDQnBibWwwUTJ4dmJtVkNlVlJoWnlBOUlISmxjWFZwY21Vb0p5NHZhVzVwZEVOc2IyNWxRbmxVWVdjbktTeGNiaUFnSUNCcGJtbDBRMnh2Ym1WUFltcGxZM1FnUFNCeVpYRjFhWEpsS0NjdUwybHVhWFJEYkc5dVpVOWlhbVZqZENjcExGeHVJQ0FnSUdselFYSnlZWGtnUFNCeVpYRjFhWEpsS0NjdUxpOXNZVzVuTDJselFYSnlZWGtuS1N4Y2JpQWdJQ0JwYzBodmMzUlBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMMmx6U0c5emRFOWlhbVZqZENjcExGeHVJQ0FnSUdselQySnFaV04wSUQwZ2NtVnhkV2x5WlNnbkxpNHZiR0Z1Wnk5cGMwOWlhbVZqZENjcE8xeHVYRzR2S2lvZ1lFOWlhbVZqZENOMGIxTjBjbWx1WjJBZ2NtVnpkV3gwSUhKbFptVnlaVzVqWlhNdUlDb3ZYRzUyWVhJZ1lYSm5jMVJoWnlBOUlDZGJiMkpxWldOMElFRnlaM1Z0Wlc1MGMxMG5MRnh1SUNBZ0lHRnljbUY1VkdGbklEMGdKMXR2WW1wbFkzUWdRWEp5WVhsZEp5eGNiaUFnSUNCaWIyOXNWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbkxGeHVJQ0FnSUdSaGRHVlVZV2NnUFNBblcyOWlhbVZqZENCRVlYUmxYU2NzWEc0Z0lDQWdaWEp5YjNKVVlXY2dQU0FuVzI5aWFtVmpkQ0JGY25KdmNsMG5MRnh1SUNBZ0lHWjFibU5VWVdjZ1BTQW5XMjlpYW1WamRDQkdkVzVqZEdsdmJsMG5MRnh1SUNBZ0lHMWhjRlJoWnlBOUlDZGJiMkpxWldOMElFMWhjRjBuTEZ4dUlDQWdJRzUxYldKbGNsUmhaeUE5SUNkYmIySnFaV04wSUU1MWJXSmxjbDBuTEZ4dUlDQWdJRzlpYW1WamRGUmhaeUE5SUNkYmIySnFaV04wSUU5aWFtVmpkRjBuTEZ4dUlDQWdJSEpsWjJWNGNGUmhaeUE5SUNkYmIySnFaV04wSUZKbFowVjRjRjBuTEZ4dUlDQWdJSE5sZEZSaFp5QTlJQ2RiYjJKcVpXTjBJRk5sZEYwbkxGeHVJQ0FnSUhOMGNtbHVaMVJoWnlBOUlDZGJiMkpxWldOMElGTjBjbWx1WjEwbkxGeHVJQ0FnSUhkbFlXdE5ZWEJVWVdjZ1BTQW5XMjlpYW1WamRDQlhaV0ZyVFdGd1hTYzdYRzVjYm5aaGNpQmhjbkpoZVVKMVptWmxjbFJoWnlBOUlDZGJiMkpxWldOMElFRnljbUY1UW5WbVptVnlYU2NzWEc0Z0lDQWdabXh2WVhRek1sUmhaeUE5SUNkYmIySnFaV04wSUVac2IyRjBNekpCY25KaGVWMG5MRnh1SUNBZ0lHWnNiMkYwTmpSVVlXY2dQU0FuVzI5aWFtVmpkQ0JHYkc5aGREWTBRWEp5WVhsZEp5eGNiaUFnSUNCcGJuUTRWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1NXNTBPRUZ5Y21GNVhTY3NYRzRnSUNBZ2FXNTBNVFpVWVdjZ1BTQW5XMjlpYW1WamRDQkpiblF4TmtGeWNtRjVYU2NzWEc0Z0lDQWdhVzUwTXpKVVlXY2dQU0FuVzI5aWFtVmpkQ0JKYm5Rek1rRnljbUY1WFNjc1hHNGdJQ0FnZFdsdWREaFVZV2NnUFNBblcyOWlhbVZqZENCVmFXNTBPRUZ5Y21GNVhTY3NYRzRnSUNBZ2RXbHVkRGhEYkdGdGNHVmtWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1ZXbHVkRGhEYkdGdGNHVmtRWEp5WVhsZEp5eGNiaUFnSUNCMWFXNTBNVFpVWVdjZ1BTQW5XMjlpYW1WamRDQlZhVzUwTVRaQmNuSmhlVjBuTEZ4dUlDQWdJSFZwYm5Rek1sUmhaeUE5SUNkYmIySnFaV04wSUZWcGJuUXpNa0Z5Y21GNVhTYzdYRzVjYmk4cUtpQlZjMlZrSUhSdklHbGtaVzUwYVdaNUlHQjBiMU4wY21sdVoxUmhaMkFnZG1Gc2RXVnpJSE4xY0hCdmNuUmxaQ0JpZVNCZ1h5NWpiRzl1WldBdUlDb3ZYRzUyWVhJZ1kyeHZibVZoWW14bFZHRm5jeUE5SUh0OU8xeHVZMnh2Ym1WaFlteGxWR0ZuYzF0aGNtZHpWR0ZuWFNBOUlHTnNiMjVsWVdKc1pWUmhaM05iWVhKeVlYbFVZV2RkSUQxY2JtTnNiMjVsWVdKc1pWUmhaM05iWVhKeVlYbENkV1ptWlhKVVlXZGRJRDBnWTJ4dmJtVmhZbXhsVkdGbmMxdGliMjlzVkdGblhTQTlYRzVqYkc5dVpXRmliR1ZVWVdkelcyUmhkR1ZVWVdkZElEMGdZMnh2Ym1WaFlteGxWR0ZuYzF0bWJHOWhkRE15VkdGblhTQTlYRzVqYkc5dVpXRmliR1ZVWVdkelcyWnNiMkYwTmpSVVlXZGRJRDBnWTJ4dmJtVmhZbXhsVkdGbmMxdHBiblE0VkdGblhTQTlYRzVqYkc5dVpXRmliR1ZVWVdkelcybHVkREUyVkdGblhTQTlJR05zYjI1bFlXSnNaVlJoWjNOYmFXNTBNekpVWVdkZElEMWNibU5zYjI1bFlXSnNaVlJoWjNOYmJuVnRZbVZ5VkdGblhTQTlJR05zYjI1bFlXSnNaVlJoWjNOYmIySnFaV04wVkdGblhTQTlYRzVqYkc5dVpXRmliR1ZVWVdkelczSmxaMlY0Y0ZSaFoxMGdQU0JqYkc5dVpXRmliR1ZVWVdkelczTjBjbWx1WjFSaFoxMGdQVnh1WTJ4dmJtVmhZbXhsVkdGbmMxdDFhVzUwT0ZSaFoxMGdQU0JqYkc5dVpXRmliR1ZVWVdkelczVnBiblE0UTJ4aGJYQmxaRlJoWjEwZ1BWeHVZMnh2Ym1WaFlteGxWR0ZuYzF0MWFXNTBNVFpVWVdkZElEMGdZMnh2Ym1WaFlteGxWR0ZuYzF0MWFXNTBNekpVWVdkZElEMGdkSEoxWlR0Y2JtTnNiMjVsWVdKc1pWUmhaM05iWlhKeWIzSlVZV2RkSUQwZ1kyeHZibVZoWW14bFZHRm5jMXRtZFc1alZHRm5YU0E5WEc1amJHOXVaV0ZpYkdWVVlXZHpXMjFoY0ZSaFoxMGdQU0JqYkc5dVpXRmliR1ZVWVdkelczTmxkRlJoWjEwZ1BWeHVZMnh2Ym1WaFlteGxWR0ZuYzF0M1pXRnJUV0Z3VkdGblhTQTlJR1poYkhObE8xeHVYRzR2S2lvZ1ZYTmxaQ0JtYjNJZ2JtRjBhWFpsSUcxbGRHaHZaQ0J5WldabGNtVnVZMlZ6TGlBcUwxeHVkbUZ5SUc5aWFtVmpkRkJ5YjNSdklEMGdUMkpxWldOMExuQnliM1J2ZEhsd1pUdGNibHh1THlvcVhHNGdLaUJWYzJWa0lIUnZJSEpsYzI5c2RtVWdkR2hsSUZ0Z2RHOVRkSEpwYm1kVVlXZGdYU2hvZEhSd09pOHZaV050WVMxcGJuUmxjbTVoZEdsdmJtRnNMbTl5Wnk5bFkyMWhMVEkyTWk4MkxqQXZJM05sWXkxdlltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdmMzUnlhVzVuS1Z4dUlDb2diMllnZG1Gc2RXVnpMbHh1SUNvdlhHNTJZWElnYjJKcVZHOVRkSEpwYm1jZ1BTQnZZbXBsWTNSUWNtOTBieTUwYjFOMGNtbHVaenRjYmx4dUx5b3FYRzRnS2lCVWFHVWdZbUZ6WlNCcGJYQnNaVzFsYm5SaGRHbHZiaUJ2WmlCZ1h5NWpiRzl1WldBZ2QybDBhRzkxZENCemRYQndiM0owSUdadmNpQmhjbWQxYldWdWRDQnFkV2RuYkdsdVoxeHVJQ29nWVc1a0lHQjBhR2x6WUNCaWFXNWthVzVuSUdCamRYTjBiMjFwZW1WeVlDQm1kVzVqZEdsdmJuTXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1VnVkdobElIWmhiSFZsSUhSdklHTnNiMjVsTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJhWE5FWldWd1hTQlRjR1ZqYVdaNUlHRWdaR1ZsY0NCamJHOXVaUzVjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlGdGpkWE4wYjIxcGVtVnlYU0JVYUdVZ1puVnVZM1JwYjI0Z2RHOGdZM1Z6ZEc5dGFYcGxJR05zYjI1cGJtY2dkbUZzZFdWekxseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnRyWlhsZElGUm9aU0JyWlhrZ2IyWWdZSFpoYkhWbFlDNWNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0JiYjJKcVpXTjBYU0JVYUdVZ2IySnFaV04wSUdCMllXeDFaV0FnWW1Wc2IyNW5jeUIwYnk1Y2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlGdHpkR0ZqYTBFOVcxMWRJRlJ5WVdOcmN5QjBjbUYyWlhKelpXUWdjMjkxY21ObElHOWlhbVZqZEhNdVhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZTQmJjM1JoWTJ0Q1BWdGRYU0JCYzNOdlkybGhkR1Z6SUdOc2IyNWxjeUIzYVhSb0lITnZkWEpqWlNCamIzVnVkR1Z5Y0dGeWRITXVYRzRnS2lCQWNtVjBkWEp1Y3lCN0tuMGdVbVYwZFhKdWN5QjBhR1VnWTJ4dmJtVmtJSFpoYkhWbExseHVJQ292WEc1bWRXNWpkR2x2YmlCaVlYTmxRMnh2Ym1Vb2RtRnNkV1VzSUdselJHVmxjQ3dnWTNWemRHOXRhWHBsY2l3Z2EyVjVMQ0J2WW1wbFkzUXNJSE4wWVdOclFTd2djM1JoWTJ0Q0tTQjdYRzRnSUhaaGNpQnlaWE4xYkhRN1hHNGdJR2xtSUNoamRYTjBiMjFwZW1WeUtTQjdYRzRnSUNBZ2NtVnpkV3gwSUQwZ2IySnFaV04wSUQ4Z1kzVnpkRzl0YVhwbGNpaDJZV3gxWlN3Z2EyVjVMQ0J2WW1wbFkzUXBJRG9nWTNWemRHOXRhWHBsY2loMllXeDFaU2s3WEc0Z0lIMWNiaUFnYVdZZ0tISmxjM1ZzZENBaFBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1SUNCcFppQW9JV2x6VDJKcVpXTjBLSFpoYkhWbEtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2FYTkJjbklnUFNCcGMwRnljbUY1S0haaGJIVmxLVHRjYmlBZ2FXWWdLR2x6UVhKeUtTQjdYRzRnSUNBZ2NtVnpkV3gwSUQwZ2FXNXBkRU5zYjI1bFFYSnlZWGtvZG1Gc2RXVXBPMXh1SUNBZ0lHbG1JQ2doYVhORVpXVndLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZWEp5WVhsRGIzQjVLSFpoYkhWbExDQnlaWE4xYkhRcE8xeHVJQ0FnSUgxY2JpQWdmU0JsYkhObElIdGNiaUFnSUNCMllYSWdkR0ZuSUQwZ2IySnFWRzlUZEhKcGJtY3VZMkZzYkNoMllXeDFaU2tzWEc0Z0lDQWdJQ0FnSUdselJuVnVZeUE5SUhSaFp5QTlQU0JtZFc1alZHRm5PMXh1WEc0Z0lDQWdhV1lnS0hSaFp5QTlQU0J2WW1wbFkzUlVZV2NnZkh3Z2RHRm5JRDA5SUdGeVozTlVZV2NnZkh3Z0tHbHpSblZ1WXlBbUppQWhiMkpxWldOMEtTa2dlMXh1SUNBZ0lDQWdhV1lnS0dselNHOXpkRTlpYW1WamRDaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHOWlhbVZqZENBL0lIWmhiSFZsSURvZ2UzMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWE4xYkhRZ1BTQnBibWwwUTJ4dmJtVlBZbXBsWTNRb2FYTkdkVzVqSUQ4Z2UzMGdPaUIyWVd4MVpTazdYRzRnSUNBZ0lDQnBaaUFvSVdselJHVmxjQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWW1GelpVRnpjMmxuYmloeVpYTjFiSFFzSUhaaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdOc2IyNWxZV0pzWlZSaFozTmJkR0ZuWFZ4dUlDQWdJQ0FnSUNBL0lHbHVhWFJEYkc5dVpVSjVWR0ZuS0haaGJIVmxMQ0IwWVdjc0lHbHpSR1ZsY0NsY2JpQWdJQ0FnSUNBZ09pQW9iMkpxWldOMElEOGdkbUZzZFdVZ09pQjdmU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJQzh2SUVOb1pXTnJJR1p2Y2lCamFYSmpkV3hoY2lCeVpXWmxjbVZ1WTJWeklHRnVaQ0J5WlhSMWNtNGdhWFJ6SUdOdmNuSmxjM0J2Ym1ScGJtY2dZMnh2Ym1VdVhHNGdJSE4wWVdOclFTQjhmQ0FvYzNSaFkydEJJRDBnVzEwcE8xeHVJQ0J6ZEdGamEwSWdmSHdnS0hOMFlXTnJRaUE5SUZ0ZEtUdGNibHh1SUNCMllYSWdiR1Z1WjNSb0lEMGdjM1JoWTJ0QkxteGxibWQwYUR0Y2JpQWdkMmhwYkdVZ0tHeGxibWQwYUMwdEtTQjdYRzRnSUNBZ2FXWWdLSE4wWVdOclFWdHNaVzVuZEdoZElEMDlJSFpoYkhWbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2MzUmhZMnRDVzJ4bGJtZDBhRjA3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJQzh2SUVGa1pDQjBhR1VnYzI5MWNtTmxJSFpoYkhWbElIUnZJSFJvWlNCemRHRmpheUJ2WmlCMGNtRjJaWEp6WldRZ2IySnFaV04wY3lCaGJtUWdZWE56YjJOcFlYUmxJR2wwSUhkcGRHZ2dhWFJ6SUdOc2IyNWxMbHh1SUNCemRHRmphMEV1Y0hWemFDaDJZV3gxWlNrN1hHNGdJSE4wWVdOclFpNXdkWE5vS0hKbGMzVnNkQ2s3WEc1Y2JpQWdMeThnVW1WamRYSnphWFpsYkhrZ2NHOXdkV3hoZEdVZ1kyeHZibVVnS0hOMWMyTmxjSFJwWW14bElIUnZJR05oYkd3Z2MzUmhZMnNnYkdsdGFYUnpLUzVjYmlBZ0tHbHpRWEp5SUQ4Z1lYSnlZWGxGWVdOb0lEb2dZbUZ6WlVadmNrOTNiaWtvZG1Gc2RXVXNJR1oxYm1OMGFXOXVLSE4xWWxaaGJIVmxMQ0JyWlhrcElIdGNiaUFnSUNCeVpYTjFiSFJiYTJWNVhTQTlJR0poYzJWRGJHOXVaU2h6ZFdKV1lXeDFaU3dnYVhORVpXVndMQ0JqZFhOMGIyMXBlbVZ5TENCclpYa3NJSFpoYkhWbExDQnpkR0ZqYTBFc0lITjBZV05yUWlrN1hHNGdJSDBwTzF4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR0poYzJWRGJHOXVaVHRjYmlJc0lpOHFLbHh1SUNvZ1EyOXdhV1Z6SUhCeWIzQmxjblJwWlhNZ2IyWWdZSE52ZFhKalpXQWdkRzhnWUc5aWFtVmpkR0F1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCemIzVnlZMlVnVkdobElHOWlhbVZqZENCMGJ5QmpiM0I1SUhCeWIzQmxjblJwWlhNZ1puSnZiUzVjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUhCeWIzQnpJRlJvWlNCd2NtOXdaWEowZVNCdVlXMWxjeUIwYnlCamIzQjVMbHh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUZ0dlltcGxZM1E5ZTMxZElGUm9aU0J2WW1wbFkzUWdkRzhnWTI5d2VTQndjbTl3WlhKMGFXVnpJSFJ2TGx4dUlDb2dRSEpsZEhWeWJuTWdlMDlpYW1WamRIMGdVbVYwZFhKdWN5QmdiMkpxWldOMFlDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1ltRnpaVU52Y0hrb2MyOTFjbU5sTENCd2NtOXdjeXdnYjJKcVpXTjBLU0I3WEc0Z0lHOWlhbVZqZENCOGZDQW9iMkpxWldOMElEMGdlMzBwTzF4dVhHNGdJSFpoY2lCcGJtUmxlQ0E5SUMweExGeHVJQ0FnSUNBZ2JHVnVaM1JvSUQwZ2NISnZjSE11YkdWdVozUm9PMXh1WEc0Z0lIZG9hV3hsSUNncksybHVaR1Y0SUR3Z2JHVnVaM1JvS1NCN1hHNGdJQ0FnZG1GeUlHdGxlU0E5SUhCeWIzQnpXMmx1WkdWNFhUdGNiaUFnSUNCdlltcGxZM1JiYTJWNVhTQTlJSE52ZFhKalpWdHJaWGxkTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ2WW1wbFkzUTdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1ltRnpaVU52Y0hrN1hHNGlMQ0oyWVhJZ2FYTlBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMaTlzWVc1bkwybHpUMkpxWldOMEp5azdYRzVjYmk4cUtseHVJQ29nVkdobElHSmhjMlVnYVcxd2JHVnRaVzUwWVhScGIyNGdiMllnWUY4dVkzSmxZWFJsWUNCM2FYUm9iM1YwSUhOMWNIQnZjblFnWm05eUlHRnpjMmxuYm1sdVoxeHVJQ29nY0hKdmNHVnlkR2xsY3lCMGJ5QjBhR1VnWTNKbFlYUmxaQ0J2WW1wbFkzUXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J3Y205MGIzUjVjR1VnVkdobElHOWlhbVZqZENCMGJ5QnBibWhsY21sMElHWnliMjB1WEc0Z0tpQkFjbVYwZFhKdWN5QjdUMkpxWldOMGZTQlNaWFIxY201eklIUm9aU0J1WlhjZ2IySnFaV04wTGx4dUlDb3ZYRzUyWVhJZ1ltRnpaVU55WldGMFpTQTlJQ2htZFc1amRHbHZiaWdwSUh0Y2JpQWdablZ1WTNScGIyNGdiMkpxWldOMEtDa2dlMzFjYmlBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0hCeWIzUnZkSGx3WlNrZ2UxeHVJQ0FnSUdsbUlDaHBjMDlpYW1WamRDaHdjbTkwYjNSNWNHVXBLU0I3WEc0Z0lDQWdJQ0J2WW1wbFkzUXVjSEp2ZEc5MGVYQmxJRDBnY0hKdmRHOTBlWEJsTzF4dUlDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlHNWxkeUJ2WW1wbFkzUTdYRzRnSUNBZ0lDQnZZbXBsWTNRdWNISnZkRzkwZVhCbElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBJSHg4SUh0OU8xeHVJQ0I5TzF4dWZTZ3BLVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaVlYTmxRM0psWVhSbE8xeHVJaXdpZG1GeUlHSmhjMlZHYjNKUGQyNGdQU0J5WlhGMWFYSmxLQ2N1TDJKaGMyVkdiM0pQZDI0bktTeGNiaUFnSUNCamNtVmhkR1ZDWVhObFJXRmphQ0E5SUhKbGNYVnBjbVVvSnk0dlkzSmxZWFJsUW1GelpVVmhZMmduS1R0Y2JseHVMeW9xWEc0Z0tpQlVhR1VnWW1GelpTQnBiWEJzWlcxbGJuUmhkR2x2YmlCdlppQmdYeTVtYjNKRllXTm9ZQ0IzYVhSb2IzVjBJSE4xY0hCdmNuUWdabTl5SUdOaGJHeGlZV05yWEc0Z0tpQnphRzl5ZEdoaGJtUnpJR0Z1WkNCZ2RHaHBjMkFnWW1sdVpHbHVaeTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWHhQWW1wbFkzUjhjM1J5YVc1bmZTQmpiMnhzWldOMGFXOXVJRlJvWlNCamIyeHNaV04wYVc5dUlIUnZJR2wwWlhKaGRHVWdiM1psY2k1Y2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlJR2wwWlhKaGRHVmxJRlJvWlNCbWRXNWpkR2x2YmlCcGJuWnZhMlZrSUhCbGNpQnBkR1Z5WVhScGIyNHVYRzRnS2lCQWNtVjBkWEp1Y3lCN1FYSnlZWGw4VDJKcVpXTjBmSE4wY21sdVozMGdVbVYwZFhKdWN5QmdZMjlzYkdWamRHbHZibUF1WEc0Z0tpOWNiblpoY2lCaVlYTmxSV0ZqYUNBOUlHTnlaV0YwWlVKaGMyVkZZV05vS0dKaGMyVkdiM0pQZDI0cE8xeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR0poYzJWRllXTm9PMXh1SWl3aUx5b3FYRzRnS2lCVWFHVWdZbUZ6WlNCcGJYQnNaVzFsYm5SaGRHbHZiaUJ2WmlCZ1h5NW1hVzVrWUN3Z1lGOHVabWx1WkV4aGMzUmdMQ0JnWHk1bWFXNWtTMlY1WUN3Z1lXNWtJR0JmTG1acGJtUk1ZWE4wUzJWNVlDeGNiaUFxSUhkcGRHaHZkWFFnYzNWd2NHOXlkQ0JtYjNJZ1kyRnNiR0poWTJzZ2MyaHZjblJvWVc1a2N5QmhibVFnWUhSb2FYTmdJR0pwYm1ScGJtY3NJSGRvYVdOb0lHbDBaWEpoZEdWelhHNGdLaUJ2ZG1WeUlHQmpiMnhzWldOMGFXOXVZQ0IxYzJsdVp5QjBhR1VnY0hKdmRtbGtaV1FnWUdWaFkyaEdkVzVqWUM1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIdEJjbkpoZVh4UFltcGxZM1I4YzNSeWFXNW5mU0JqYjJ4c1pXTjBhVzl1SUZSb1pTQmpiMnhzWldOMGFXOXVJSFJ2SUhObFlYSmphQzVjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlIQnlaV1JwWTJGMFpTQlVhR1VnWm5WdVkzUnBiMjRnYVc1MmIydGxaQ0J3WlhJZ2FYUmxjbUYwYVc5dUxseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWldGamFFWjFibU1nVkdobElHWjFibU4wYVc5dUlIUnZJR2wwWlhKaGRHVWdiM1psY2lCZ1kyOXNiR1ZqZEdsdmJtQXVYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0eVpYUkxaWGxkSUZOd1pXTnBabmtnY21WMGRYSnVhVzVuSUhSb1pTQnJaWGtnYjJZZ2RHaGxJR1p2ZFc1a0lHVnNaVzFsYm5SY2JpQXFJQ0JwYm5OMFpXRmtJRzltSUhSb1pTQmxiR1Z0Wlc1MElHbDBjMlZzWmk1Y2JpQXFJRUJ5WlhSMWNtNXpJSHNxZlNCU1pYUjFjbTV6SUhSb1pTQm1iM1Z1WkNCbGJHVnRaVzUwSUc5eUlHbDBjeUJyWlhrc0lHVnNjMlVnWUhWdVpHVm1hVzVsWkdBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKaGMyVkdhVzVrS0dOdmJHeGxZM1JwYjI0c0lIQnlaV1JwWTJGMFpTd2daV0ZqYUVaMWJtTXNJSEpsZEV0bGVTa2dlMXh1SUNCMllYSWdjbVZ6ZFd4ME8xeHVJQ0JsWVdOb1JuVnVZeWhqYjJ4c1pXTjBhVzl1TENCbWRXNWpkR2x2YmloMllXeDFaU3dnYTJWNUxDQmpiMnhzWldOMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0hCeVpXUnBZMkYwWlNoMllXeDFaU3dnYTJWNUxDQmpiMnhzWldOMGFXOXVLU2tnZTF4dUlDQWdJQ0FnY21WemRXeDBJRDBnY21WMFMyVjVJRDhnYTJWNUlEb2dkbUZzZFdVN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JpWVhObFJtbHVaRHRjYmlJc0lpOHFLbHh1SUNvZ1ZHaGxJR0poYzJVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1lGOHVabWx1WkVsdVpHVjRZQ0JoYm1RZ1lGOHVabWx1WkV4aGMzUkpibVJsZUdBZ2QybDBhRzkxZEZ4dUlDb2djM1Z3Y0c5eWRDQm1iM0lnWTJGc2JHSmhZMnNnYzJodmNuUm9ZVzVrY3lCaGJtUWdZSFJvYVhOZ0lHSnBibVJwYm1jdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlHRnljbUY1SUZSb1pTQmhjbkpoZVNCMGJ5QnpaV0Z5WTJndVhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0J3Y21Wa2FXTmhkR1VnVkdobElHWjFibU4wYVc5dUlHbHVkbTlyWldRZ2NHVnlJR2wwWlhKaGRHbHZiaTVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyWnliMjFTYVdkb2RGMGdVM0JsWTJsbWVTQnBkR1Z5WVhScGJtY2dabkp2YlNCeWFXZG9kQ0IwYnlCc1pXWjBMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UyNTFiV0psY24wZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhnZ2IyWWdkR2hsSUcxaGRHTm9aV1FnZG1Gc2RXVXNJR1ZzYzJVZ1lDMHhZQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZbUZ6WlVacGJtUkpibVJsZUNoaGNuSmhlU3dnY0hKbFpHbGpZWFJsTENCbWNtOXRVbWxuYUhRcElIdGNiaUFnZG1GeUlHeGxibWQwYUNBOUlHRnljbUY1TG14bGJtZDBhQ3hjYmlBZ0lDQWdJR2x1WkdWNElEMGdabkp2YlZKcFoyaDBJRDhnYkdWdVozUm9JRG9nTFRFN1hHNWNiaUFnZDJocGJHVWdLQ2htY205dFVtbG5hSFFnUHlCcGJtUmxlQzB0SURvZ0t5dHBibVJsZUNBOElHeGxibWQwYUNrcElIdGNiaUFnSUNCcFppQW9jSEpsWkdsallYUmxLR0Z5Y21GNVcybHVaR1Y0WFN3Z2FXNWtaWGdzSUdGeWNtRjVLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2x1WkdWNE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnTFRFN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWW1GelpVWnBibVJKYm1SbGVEdGNiaUlzSW5aaGNpQmpjbVZoZEdWQ1lYTmxSbTl5SUQwZ2NtVnhkV2x5WlNnbkxpOWpjbVZoZEdWQ1lYTmxSbTl5SnlrN1hHNWNiaThxS2x4dUlDb2dWR2hsSUdKaGMyVWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2IyWWdZR0poYzJWR2IzSkpibUFnWVc1a0lHQmlZWE5sUm05eVQzZHVZQ0IzYUdsamFDQnBkR1Z5WVhSbGMxeHVJQ29nYjNabGNpQmdiMkpxWldOMFlDQndjbTl3WlhKMGFXVnpJSEpsZEhWeWJtVmtJR0o1SUdCclpYbHpSblZ1WTJBZ2FXNTJiMnRwYm1jZ1lHbDBaWEpoZEdWbFlDQm1iM0pjYmlBcUlHVmhZMmdnY0hKdmNHVnlkSGt1SUVsMFpYSmhkR1ZsSUdaMWJtTjBhVzl1Y3lCdFlYa2daWGhwZENCcGRHVnlZWFJwYjI0Z1pXRnliSGtnWW5rZ1pYaHdiR2xqYVhSc2VWeHVJQ29nY21WMGRYSnVhVzVuSUdCbVlXeHpaV0F1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnBkR1Z5WVhSbElHOTJaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQnBkR1Z5WVhSbFpTQlVhR1VnWm5WdVkzUnBiMjRnYVc1MmIydGxaQ0J3WlhJZ2FYUmxjbUYwYVc5dUxseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnYTJWNWMwWjFibU1nVkdobElHWjFibU4wYVc5dUlIUnZJR2RsZENCMGFHVWdhMlY1Y3lCdlppQmdiMkpxWldOMFlDNWNiaUFxSUVCeVpYUjFjbTV6SUh0UFltcGxZM1I5SUZKbGRIVnlibk1nWUc5aWFtVmpkR0F1WEc0Z0tpOWNiblpoY2lCaVlYTmxSbTl5SUQwZ1kzSmxZWFJsUW1GelpVWnZjaWdwTzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHSmhjMlZHYjNJN1hHNGlMQ0oyWVhJZ1ltRnpaVVp2Y2lBOUlISmxjWFZwY21Vb0p5NHZZbUZ6WlVadmNpY3BMRnh1SUNBZ0lHdGxlWE5KYmlBOUlISmxjWFZwY21Vb0p5NHVMMjlpYW1WamRDOXJaWGx6U1c0bktUdGNibHh1THlvcVhHNGdLaUJVYUdVZ1ltRnpaU0JwYlhCc1pXMWxiblJoZEdsdmJpQnZaaUJnWHk1bWIzSkpibUFnZDJsMGFHOTFkQ0J6ZFhCd2IzSjBJR1p2Y2lCallXeHNZbUZqYTF4dUlDb2djMmh2Y25Sb1lXNWtjeUJoYm1RZ1lIUm9hWE5nSUdKcGJtUnBibWN1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnBkR1Z5WVhSbElHOTJaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQnBkR1Z5WVhSbFpTQlVhR1VnWm5WdVkzUnBiMjRnYVc1MmIydGxaQ0J3WlhJZ2FYUmxjbUYwYVc5dUxseHVJQ29nUUhKbGRIVnlibk1nZTA5aWFtVmpkSDBnVW1WMGRYSnVjeUJnYjJKcVpXTjBZQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZbUZ6WlVadmNrbHVLRzlpYW1WamRDd2dhWFJsY21GMFpXVXBJSHRjYmlBZ2NtVjBkWEp1SUdKaGMyVkdiM0lvYjJKcVpXTjBMQ0JwZEdWeVlYUmxaU3dnYTJWNWMwbHVLVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmlZWE5sUm05eVNXNDdYRzRpTENKMllYSWdZbUZ6WlVadmNpQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVWnZjaWNwTEZ4dUlDQWdJR3RsZVhNZ1BTQnlaWEYxYVhKbEtDY3VMaTl2WW1wbFkzUXZhMlY1Y3ljcE8xeHVYRzR2S2lwY2JpQXFJRlJvWlNCaVlYTmxJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHOW1JR0JmTG1admNrOTNibUFnZDJsMGFHOTFkQ0J6ZFhCd2IzSjBJR1p2Y2lCallXeHNZbUZqYTF4dUlDb2djMmh2Y25Sb1lXNWtjeUJoYm1RZ1lIUm9hWE5nSUdKcGJtUnBibWN1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnBkR1Z5WVhSbElHOTJaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQnBkR1Z5WVhSbFpTQlVhR1VnWm5WdVkzUnBiMjRnYVc1MmIydGxaQ0J3WlhJZ2FYUmxjbUYwYVc5dUxseHVJQ29nUUhKbGRIVnlibk1nZTA5aWFtVmpkSDBnVW1WMGRYSnVjeUJnYjJKcVpXTjBZQzVjYmlBcUwxeHVablZ1WTNScGIyNGdZbUZ6WlVadmNrOTNiaWh2WW1wbFkzUXNJR2wwWlhKaGRHVmxLU0I3WEc0Z0lISmxkSFZ5YmlCaVlYTmxSbTl5S0c5aWFtVmpkQ3dnYVhSbGNtRjBaV1VzSUd0bGVYTXBPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHSmhjMlZHYjNKUGQyNDdYRzRpTENKMllYSWdkRzlQWW1wbFkzUWdQU0J5WlhGMWFYSmxLQ2N1TDNSdlQySnFaV04wSnlrN1hHNWNiaThxS2x4dUlDb2dWR2hsSUdKaGMyVWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2IyWWdZR2RsZEdBZ2QybDBhRzkxZENCemRYQndiM0owSUdadmNpQnpkSEpwYm1jZ2NHRjBhSE5jYmlBcUlHRnVaQ0JrWldaaGRXeDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzlpYW1WamRDQlVhR1VnYjJKcVpXTjBJSFJ2SUhGMVpYSjVMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnY0dGMGFDQlVhR1VnY0dGMGFDQnZaaUIwYUdVZ2NISnZjR1Z5ZEhrZ2RHOGdaMlYwTGx4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdHdZWFJvUzJWNVhTQlVhR1VnYTJWNUlISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIQmhkR2d1WEc0Z0tpQkFjbVYwZFhKdWN5QjdLbjBnVW1WMGRYSnVjeUIwYUdVZ2NtVnpiMngyWldRZ2RtRnNkV1V1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR0poYzJWSFpYUW9iMkpxWldOMExDQndZWFJvTENCd1lYUm9TMlY1S1NCN1hHNGdJR2xtSUNodlltcGxZM1FnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dUlDQnZZbXBsWTNRZ1BTQjBiMDlpYW1WamRDaHZZbXBsWTNRcE8xeHVJQ0JwWmlBb2NHRjBhRXRsZVNBaFBUMGdkVzVrWldacGJtVmtJQ1ltSUhCaGRHaExaWGtnYVc0Z2IySnFaV04wS1NCN1hHNGdJQ0FnY0dGMGFDQTlJRnR3WVhSb1MyVjVYVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2FXNWtaWGdnUFNBd0xGeHVJQ0FnSUNBZ2JHVnVaM1JvSUQwZ2NHRjBhQzVzWlc1bmRHZzdYRzVjYmlBZ2QyaHBiR1VnS0c5aWFtVmpkQ0FoUFNCdWRXeHNJQ1ltSUdsdVpHVjRJRHdnYkdWdVozUm9LU0I3WEc0Z0lDQWdiMkpxWldOMElEMGdkRzlQWW1wbFkzUW9iMkpxWldOMEtWdHdZWFJvVzJsdVpHVjRLeXRkWFR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnS0dsdVpHVjRJQ1ltSUdsdVpHVjRJRDA5SUd4bGJtZDBhQ2tnUHlCdlltcGxZM1FnT2lCMWJtUmxabWx1WldRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWW1GelpVZGxkRHRjYmlJc0luWmhjaUJwYm1SbGVFOW1UbUZPSUQwZ2NtVnhkV2x5WlNnbkxpOXBibVJsZUU5bVRtRk9KeWs3WEc1Y2JpOHFLbHh1SUNvZ1ZHaGxJR0poYzJVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1lGOHVhVzVrWlhoUFptQWdkMmwwYUc5MWRDQnpkWEJ3YjNKMElHWnZjaUJpYVc1aGNua2djMlZoY21Ob1pYTXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDlJR0Z5Y21GNUlGUm9aU0JoY25KaGVTQjBieUJ6WldGeVkyZ3VYRzRnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUZSb1pTQjJZV3gxWlNCMGJ5QnpaV0Z5WTJnZ1ptOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdaeWIyMUpibVJsZUNCVWFHVWdhVzVrWlhnZ2RHOGdjMlZoY21Ob0lHWnliMjB1WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeWZTQlNaWFIxY201eklIUm9aU0JwYm1SbGVDQnZaaUIwYUdVZ2JXRjBZMmhsWkNCMllXeDFaU3dnWld4elpTQmdMVEZnTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJpWVhObFNXNWtaWGhQWmloaGNuSmhlU3dnZG1Gc2RXVXNJR1p5YjIxSmJtUmxlQ2tnZTF4dUlDQnBaaUFvZG1Gc2RXVWdJVDA5SUhaaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbHVaR1Y0VDJaT1lVNG9ZWEp5WVhrc0lHWnliMjFKYm1SbGVDazdYRzRnSUgxY2JpQWdkbUZ5SUdsdVpHVjRJRDBnWm5KdmJVbHVaR1Y0SUMwZ01TeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHRnljbUY1TG14bGJtZDBhRHRjYmx4dUlDQjNhR2xzWlNBb0t5dHBibVJsZUNBOElHeGxibWQwYUNrZ2UxeHVJQ0FnSUdsbUlDaGhjbkpoZVZ0cGJtUmxlRjBnUFQwOUlIWmhiSFZsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVc1a1pYZzdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlBdE1UdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaVlYTmxTVzVrWlhoUFpqdGNiaUlzSW5aaGNpQmlZWE5sU1hORmNYVmhiRVJsWlhBZ1BTQnlaWEYxYVhKbEtDY3VMMkpoYzJWSmMwVnhkV0ZzUkdWbGNDY3BMRnh1SUNBZ0lHbHpUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25MaTR2YkdGdVp5OXBjMDlpYW1WamRDY3BMRnh1SUNBZ0lHbHpUMkpxWldOMFRHbHJaU0E5SUhKbGNYVnBjbVVvSnk0dmFYTlBZbXBsWTNSTWFXdGxKeWs3WEc1Y2JpOHFLbHh1SUNvZ1ZHaGxJR0poYzJVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1lGOHVhWE5GY1hWaGJHQWdkMmwwYUc5MWRDQnpkWEJ3YjNKMElHWnZjaUJnZEdocGMyQWdZbWx1WkdsdVoxeHVJQ29nWUdOMWMzUnZiV2w2WlhKZ0lHWjFibU4wYVc5dWN5NWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaU0JVYUdVZ2RtRnNkV1VnZEc4Z1kyOXRjR0Z5WlM1Y2JpQXFJRUJ3WVhKaGJTQjdLbjBnYjNSb1pYSWdWR2hsSUc5MGFHVnlJSFpoYkhWbElIUnZJR052YlhCaGNtVXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCYlkzVnpkRzl0YVhwbGNsMGdWR2hsSUdaMWJtTjBhVzl1SUhSdklHTjFjM1J2YldsNlpTQmpiMjF3WVhKcGJtY2dkbUZzZFdWekxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYVhOTWIyOXpaVjBnVTNCbFkybG1lU0J3WlhKbWIzSnRhVzVuSUhCaGNuUnBZV3dnWTI5dGNHRnlhWE52Ym5NdVhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZTQmJjM1JoWTJ0QlhTQlVjbUZqYTNNZ2RISmhkbVZ5YzJWa0lHQjJZV3gxWldBZ2IySnFaV04wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlGdHpkR0ZqYTBKZElGUnlZV05yY3lCMGNtRjJaWEp6WldRZ1lHOTBhR1Z5WUNCdlltcGxZM1J6TGx4dUlDb2dRSEpsZEhWeWJuTWdlMkp2YjJ4bFlXNTlJRkpsZEhWeWJuTWdZSFJ5ZFdWZ0lHbG1JSFJvWlNCMllXeDFaWE1nWVhKbElHVnhkV2wyWVd4bGJuUXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWW1GelpVbHpSWEYxWVd3b2RtRnNkV1VzSUc5MGFHVnlMQ0JqZFhOMGIyMXBlbVZ5TENCcGMweHZiM05sTENCemRHRmphMEVzSUhOMFlXTnJRaWtnZTF4dUlDQnBaaUFvZG1Gc2RXVWdQVDA5SUc5MGFHVnlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMWNiaUFnYVdZZ0tIWmhiSFZsSUQwOUlHNTFiR3dnZkh3Z2IzUm9aWElnUFQwZ2JuVnNiQ0I4ZkNBb0lXbHpUMkpxWldOMEtIWmhiSFZsS1NBbUppQWhhWE5QWW1wbFkzUk1hV3RsS0c5MGFHVnlLU2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVZ0lUMDlJSFpoYkhWbElDWW1JRzkwYUdWeUlDRTlQU0J2ZEdobGNqdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1ltRnpaVWx6UlhGMVlXeEVaV1Z3S0haaGJIVmxMQ0J2ZEdobGNpd2dZbUZ6WlVselJYRjFZV3dzSUdOMWMzUnZiV2w2WlhJc0lHbHpURzl2YzJVc0lITjBZV05yUVN3Z2MzUmhZMnRDS1R0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JpWVhObFNYTkZjWFZoYkR0Y2JpSXNJblpoY2lCbGNYVmhiRUZ5Y21GNWN5QTlJSEpsY1hWcGNtVW9KeTR2WlhGMVlXeEJjbkpoZVhNbktTeGNiaUFnSUNCbGNYVmhiRUo1VkdGbklEMGdjbVZ4ZFdseVpTZ25MaTlsY1hWaGJFSjVWR0ZuSnlrc1hHNGdJQ0FnWlhGMVlXeFBZbXBsWTNSeklEMGdjbVZ4ZFdseVpTZ25MaTlsY1hWaGJFOWlhbVZqZEhNbktTeGNiaUFnSUNCcGMwRnljbUY1SUQwZ2NtVnhkV2x5WlNnbkxpNHZiR0Z1Wnk5cGMwRnljbUY1Snlrc1hHNGdJQ0FnYVhOSWIzTjBUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25MaTlwYzBodmMzUlBZbXBsWTNRbktTeGNiaUFnSUNCcGMxUjVjR1ZrUVhKeVlYa2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6Vkhsd1pXUkJjbkpoZVNjcE8xeHVYRzR2S2lvZ1lFOWlhbVZqZENOMGIxTjBjbWx1WjJBZ2NtVnpkV3gwSUhKbFptVnlaVzVqWlhNdUlDb3ZYRzUyWVhJZ1lYSm5jMVJoWnlBOUlDZGJiMkpxWldOMElFRnlaM1Z0Wlc1MGMxMG5MRnh1SUNBZ0lHRnljbUY1VkdGbklEMGdKMXR2WW1wbFkzUWdRWEp5WVhsZEp5eGNiaUFnSUNCdlltcGxZM1JVWVdjZ1BTQW5XMjlpYW1WamRDQlBZbXBsWTNSZEp6dGNibHh1THlvcUlGVnpaV1FnWm05eUlHNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCdlltcGxZM1JRY205MGJ5QTlJRTlpYW1WamRDNXdjbTkwYjNSNWNHVTdYRzVjYmk4cUtpQlZjMlZrSUhSdklHTm9aV05ySUc5aWFtVmpkSE1nWm05eUlHOTNiaUJ3Y205d1pYSjBhV1Z6TGlBcUwxeHVkbUZ5SUdoaGMwOTNibEJ5YjNCbGNuUjVJRDBnYjJKcVpXTjBVSEp2ZEc4dWFHRnpUM2R1VUhKdmNHVnlkSGs3WEc1Y2JpOHFLbHh1SUNvZ1ZYTmxaQ0IwYnlCeVpYTnZiSFpsSUhSb1pTQmJZSFJ2VTNSeWFXNW5WR0ZuWUYwb2FIUjBjRG92TDJWamJXRXRhVzUwWlhKdVlYUnBiMjVoYkM1dmNtY3ZaV050WVMweU5qSXZOaTR3THlOelpXTXRiMkpxWldOMExuQnliM1J2ZEhsd1pTNTBiM04wY21sdVp5bGNiaUFxSUc5bUlIWmhiSFZsY3k1Y2JpQXFMMXh1ZG1GeUlHOWlhbFJ2VTNSeWFXNW5JRDBnYjJKcVpXTjBVSEp2ZEc4dWRHOVRkSEpwYm1jN1hHNWNiaThxS2x4dUlDb2dRU0J6Y0dWamFXRnNhWHBsWkNCMlpYSnphVzl1SUc5bUlHQmlZWE5sU1hORmNYVmhiR0FnWm05eUlHRnljbUY1Y3lCaGJtUWdiMkpxWldOMGN5QjNhR2xqYUNCd1pYSm1iM0p0YzF4dUlDb2daR1ZsY0NCamIyMXdZWEpwYzI5dWN5QmhibVFnZEhKaFkydHpJSFJ5WVhabGNuTmxaQ0J2WW1wbFkzUnpJR1Z1WVdKc2FXNW5JRzlpYW1WamRITWdkMmwwYUNCamFYSmpkV3hoY2x4dUlDb2djbVZtWlhKbGJtTmxjeUIwYnlCaVpTQmpiMjF3WVhKbFpDNWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzlpYW1WamRDQlVhR1VnYjJKcVpXTjBJSFJ2SUdOdmJYQmhjbVV1WEc0Z0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzUm9aWElnVkdobElHOTBhR1Z5SUc5aWFtVmpkQ0IwYnlCamIyMXdZWEpsTGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdaWEYxWVd4R2RXNWpJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QmtaWFJsY20xcGJtVWdaWEYxYVhaaGJHVnVkSE1nYjJZZ2RtRnNkV1Z6TGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdXMk4xYzNSdmJXbDZaWEpkSUZSb1pTQm1kVzVqZEdsdmJpQjBieUJqZFhOMGIyMXBlbVVnWTI5dGNHRnlhVzVuSUc5aWFtVmpkSE11WEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdHBjMHh2YjNObFhTQlRjR1ZqYVdaNUlIQmxjbVp2Y20xcGJtY2djR0Z5ZEdsaGJDQmpiMjF3WVhKcGMyOXVjeTVjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUZ0emRHRmphMEU5VzExZElGUnlZV05yY3lCMGNtRjJaWEp6WldRZ1lIWmhiSFZsWUNCdlltcGxZM1J6TGx4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ1czTjBZV05yUWoxYlhWMGdWSEpoWTJ0eklIUnlZWFpsY25ObFpDQmdiM1JvWlhKZ0lHOWlhbVZqZEhNdVhHNGdLaUJBY21WMGRYSnVjeUI3WW05dmJHVmhibjBnVW1WMGRYSnVjeUJnZEhKMVpXQWdhV1lnZEdobElHOWlhbVZqZEhNZ1lYSmxJR1Z4ZFdsMllXeGxiblFzSUdWc2MyVWdZR1poYkhObFlDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1ltRnpaVWx6UlhGMVlXeEVaV1Z3S0c5aWFtVmpkQ3dnYjNSb1pYSXNJR1Z4ZFdGc1JuVnVZeXdnWTNWemRHOXRhWHBsY2l3Z2FYTk1iMjl6WlN3Z2MzUmhZMnRCTENCemRHRmphMElwSUh0Y2JpQWdkbUZ5SUc5aWFrbHpRWEp5SUQwZ2FYTkJjbkpoZVNodlltcGxZM1FwTEZ4dUlDQWdJQ0FnYjNSb1NYTkJjbklnUFNCcGMwRnljbUY1S0c5MGFHVnlLU3hjYmlBZ0lDQWdJRzlpYWxSaFp5QTlJR0Z5Y21GNVZHRm5MRnh1SUNBZ0lDQWdiM1JvVkdGbklEMGdZWEp5WVhsVVlXYzdYRzVjYmlBZ2FXWWdLQ0Z2WW1wSmMwRnljaWtnZTF4dUlDQWdJRzlpYWxSaFp5QTlJRzlpYWxSdlUzUnlhVzVuTG1OaGJHd29iMkpxWldOMEtUdGNiaUFnSUNCcFppQW9iMkpxVkdGbklEMDlJR0Z5WjNOVVlXY3BJSHRjYmlBZ0lDQWdJRzlpYWxSaFp5QTlJRzlpYW1WamRGUmhaenRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzlpYWxSaFp5QWhQU0J2WW1wbFkzUlVZV2NwSUh0Y2JpQWdJQ0FnSUc5aWFrbHpRWEp5SUQwZ2FYTlVlWEJsWkVGeWNtRjVLRzlpYW1WamRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lHbG1JQ2doYjNSb1NYTkJjbklwSUh0Y2JpQWdJQ0J2ZEdoVVlXY2dQU0J2WW1wVWIxTjBjbWx1Wnk1allXeHNLRzkwYUdWeUtUdGNiaUFnSUNCcFppQW9iM1JvVkdGbklEMDlJR0Z5WjNOVVlXY3BJSHRjYmlBZ0lDQWdJRzkwYUZSaFp5QTlJRzlpYW1WamRGUmhaenRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzkwYUZSaFp5QWhQU0J2WW1wbFkzUlVZV2NwSUh0Y2JpQWdJQ0FnSUc5MGFFbHpRWEp5SUQwZ2FYTlVlWEJsWkVGeWNtRjVLRzkwYUdWeUtUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2RtRnlJRzlpYWtselQySnFJRDBnYjJKcVZHRm5JRDA5SUc5aWFtVmpkRlJoWnlBbUppQWhhWE5JYjNOMFQySnFaV04wS0c5aWFtVmpkQ2tzWEc0Z0lDQWdJQ0J2ZEdoSmMwOWlhaUE5SUc5MGFGUmhaeUE5UFNCdlltcGxZM1JVWVdjZ0ppWWdJV2x6U0c5emRFOWlhbVZqZENodmRHaGxjaWtzWEc0Z0lDQWdJQ0JwYzFOaGJXVlVZV2NnUFNCdlltcFVZV2NnUFQwZ2IzUm9WR0ZuTzF4dVhHNGdJR2xtSUNocGMxTmhiV1ZVWVdjZ0ppWWdJU2h2WW1wSmMwRnljaUI4ZkNCdlltcEpjMDlpYWlrcElIdGNiaUFnSUNCeVpYUjFjbTRnWlhGMVlXeENlVlJoWnlodlltcGxZM1FzSUc5MGFHVnlMQ0J2WW1wVVlXY3BPMXh1SUNCOVhHNGdJR2xtSUNnaGFYTk1iMjl6WlNrZ2UxeHVJQ0FnSUhaaGNpQnZZbXBKYzFkeVlYQndaV1FnUFNCdlltcEpjMDlpYWlBbUppQm9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzlpYW1WamRDd2dKMTlmZDNKaGNIQmxaRjlmSnlrc1hHNGdJQ0FnSUNBZ0lHOTBhRWx6VjNKaGNIQmxaQ0E5SUc5MGFFbHpUMkpxSUNZbUlHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iM1JvWlhJc0lDZGZYM2R5WVhCd1pXUmZYeWNwTzF4dVhHNGdJQ0FnYVdZZ0tHOWlha2x6VjNKaGNIQmxaQ0I4ZkNCdmRHaEpjMWR5WVhCd1pXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmxjWFZoYkVaMWJtTW9iMkpxU1hOWGNtRndjR1ZrSUQ4Z2IySnFaV04wTG5aaGJIVmxLQ2tnT2lCdlltcGxZM1FzSUc5MGFFbHpWM0poY0hCbFpDQS9JRzkwYUdWeUxuWmhiSFZsS0NrZ09pQnZkR2hsY2l3Z1kzVnpkRzl0YVhwbGNpd2dhWE5NYjI5elpTd2djM1JoWTJ0QkxDQnpkR0ZqYTBJcE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCcFppQW9JV2x6VTJGdFpWUmhaeWtnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1SUNBdkx5QkJjM04xYldVZ1kzbGpiR2xqSUhaaGJIVmxjeUJoY21VZ1pYRjFZV3d1WEc0Z0lDOHZJRVp2Y2lCdGIzSmxJR2x1Wm05eWJXRjBhVzl1SUc5dUlHUmxkR1ZqZEdsdVp5QmphWEpqZFd4aGNpQnlaV1psY21WdVkyVnpJSE5sWlNCb2RIUndjem92TDJWek5TNW5hWFJvZFdJdWFXOHZJMHBQTGx4dUlDQnpkR0ZqYTBFZ2ZId2dLSE4wWVdOclFTQTlJRnRkS1R0Y2JpQWdjM1JoWTJ0Q0lIeDhJQ2h6ZEdGamEwSWdQU0JiWFNrN1hHNWNiaUFnZG1GeUlHeGxibWQwYUNBOUlITjBZV05yUVM1c1pXNW5kR2c3WEc0Z0lIZG9hV3hsSUNoc1pXNW5kR2d0TFNrZ2UxeHVJQ0FnSUdsbUlDaHpkR0ZqYTBGYmJHVnVaM1JvWFNBOVBTQnZZbXBsWTNRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCemRHRmphMEpiYkdWdVozUm9YU0E5UFNCdmRHaGxjanRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdMeThnUVdSa0lHQnZZbXBsWTNSZ0lHRnVaQ0JnYjNSb1pYSmdJSFJ2SUhSb1pTQnpkR0ZqYXlCdlppQjBjbUYyWlhKelpXUWdiMkpxWldOMGN5NWNiaUFnYzNSaFkydEJMbkIxYzJnb2IySnFaV04wS1R0Y2JpQWdjM1JoWTJ0Q0xuQjFjMmdvYjNSb1pYSXBPMXh1WEc0Z0lIWmhjaUJ5WlhOMWJIUWdQU0FvYjJKcVNYTkJjbklnUHlCbGNYVmhiRUZ5Y21GNWN5QTZJR1Z4ZFdGc1QySnFaV04wY3lrb2IySnFaV04wTENCdmRHaGxjaXdnWlhGMVlXeEdkVzVqTENCamRYTjBiMjFwZW1WeUxDQnBjMHh2YjNObExDQnpkR0ZqYTBFc0lITjBZV05yUWlrN1hHNWNiaUFnYzNSaFkydEJMbkJ2Y0NncE8xeHVJQ0J6ZEdGamEwSXVjRzl3S0NrN1hHNWNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaVlYTmxTWE5GY1hWaGJFUmxaWEE3WEc0aUxDSjJZWElnWW1GelpVbHpSWEYxWVd3Z1BTQnlaWEYxYVhKbEtDY3VMMkpoYzJWSmMwVnhkV0ZzSnlrc1hHNGdJQ0FnZEc5UFltcGxZM1FnUFNCeVpYRjFhWEpsS0NjdUwzUnZUMkpxWldOMEp5azdYRzVjYmk4cUtseHVJQ29nVkdobElHSmhjMlVnYVcxd2JHVnRaVzUwWVhScGIyNGdiMllnWUY4dWFYTk5ZWFJqYUdBZ2QybDBhRzkxZENCemRYQndiM0owSUdadmNpQmpZV3hzWW1GamExeHVJQ29nYzJodmNuUm9ZVzVrY3lCaGJtUWdZSFJvYVhOZ0lHSnBibVJwYm1jdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZZbXBsWTNRZ1ZHaGxJRzlpYW1WamRDQjBieUJwYm5Od1pXTjBMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnYldGMFkyaEVZWFJoSUZSb1pTQndjbTl3WlhKNUlHNWhiV1Z6TENCMllXeDFaWE1zSUdGdVpDQmpiMjF3WVhKbElHWnNZV2R6SUhSdklHMWhkR05vTGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdXMk4xYzNSdmJXbDZaWEpkSUZSb1pTQm1kVzVqZEdsdmJpQjBieUJqZFhOMGIyMXBlbVVnWTI5dGNHRnlhVzVuSUc5aWFtVmpkSE11WEc0Z0tpQkFjbVYwZFhKdWN5QjdZbTl2YkdWaGJuMGdVbVYwZFhKdWN5QmdkSEoxWldBZ2FXWWdZRzlpYW1WamRHQWdhWE1nWVNCdFlYUmphQ3dnWld4elpTQmdabUZzYzJWZ0xseHVJQ292WEc1bWRXNWpkR2x2YmlCaVlYTmxTWE5OWVhSamFDaHZZbXBsWTNRc0lHMWhkR05vUkdGMFlTd2dZM1Z6ZEc5dGFYcGxjaWtnZTF4dUlDQjJZWElnYVc1a1pYZ2dQU0J0WVhSamFFUmhkR0V1YkdWdVozUm9MRnh1SUNBZ0lDQWdiR1Z1WjNSb0lEMGdhVzVrWlhnc1hHNGdJQ0FnSUNCdWIwTjFjM1J2YldsNlpYSWdQU0FoWTNWemRHOXRhWHBsY2p0Y2JseHVJQ0JwWmlBb2IySnFaV04wSUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdJV3hsYm1kMGFEdGNiaUFnZlZ4dUlDQnZZbXBsWTNRZ1BTQjBiMDlpYW1WamRDaHZZbXBsWTNRcE8xeHVJQ0IzYUdsc1pTQW9hVzVrWlhndExTa2dlMXh1SUNBZ0lIWmhjaUJrWVhSaElEMGdiV0YwWTJoRVlYUmhXMmx1WkdWNFhUdGNiaUFnSUNCcFppQW9LRzV2UTNWemRHOXRhWHBsY2lBbUppQmtZWFJoV3pKZEtWeHVJQ0FnSUNBZ0lDQWdJRDhnWkdGMFlWc3hYU0FoUFQwZ2IySnFaV04wVzJSaGRHRmJNRjFkWEc0Z0lDQWdJQ0FnSUNBZ09pQWhLR1JoZEdGYk1GMGdhVzRnYjJKcVpXTjBLVnh1SUNBZ0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2QyaHBiR1VnS0NzcmFXNWtaWGdnUENCc1pXNW5kR2dwSUh0Y2JpQWdJQ0JrWVhSaElEMGdiV0YwWTJoRVlYUmhXMmx1WkdWNFhUdGNiaUFnSUNCMllYSWdhMlY1SUQwZ1pHRjBZVnN3WFN4Y2JpQWdJQ0FnSUNBZ2IySnFWbUZzZFdVZ1BTQnZZbXBsWTNSYmEyVjVYU3hjYmlBZ0lDQWdJQ0FnYzNKalZtRnNkV1VnUFNCa1lYUmhXekZkTzF4dVhHNGdJQ0FnYVdZZ0tHNXZRM1Z6ZEc5dGFYcGxjaUFtSmlCa1lYUmhXekpkS1NCN1hHNGdJQ0FnSUNCcFppQW9iMkpxVm1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNBbUppQWhLR3RsZVNCcGJpQnZZbXBsWTNRcEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUdOMWMzUnZiV2w2WlhJZ1B5QmpkWE4wYjIxcGVtVnlLRzlpYWxaaGJIVmxMQ0J6Y21OV1lXeDFaU3dnYTJWNUtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQWdJR2xtSUNnaEtISmxjM1ZzZENBOVBUMGdkVzVrWldacGJtVmtJRDhnWW1GelpVbHpSWEYxWVd3b2MzSmpWbUZzZFdVc0lHOWlhbFpoYkhWbExDQmpkWE4wYjIxcGVtVnlMQ0IwY25WbEtTQTZJSEpsYzNWc2RDa3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnZEhKMVpUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaVlYTmxTWE5OWVhSamFEdGNiaUlzSWk4cUtseHVJQ29nVkdobElHWjFibU4wYVc5dUlIZG9iM05sSUhCeWIzUnZkSGx3WlNCaGJHd2dZMmhoYVc1cGJtY2dkM0poY0hCbGNuTWdhVzVvWlhKcGRDQm1jbTl0TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVoxYm1OMGFXOXVJR0poYzJWTWIyUmhjMmdvS1NCN1hHNGdJQzh2SUU1dklHOXdaWEpoZEdsdmJpQndaWEptYjNKdFpXUXVYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1ltRnpaVXh2WkdGemFEdGNiaUlzSW5aaGNpQmlZWE5sUldGamFDQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVVmhZMmduS1N4Y2JpQWdJQ0JwYzBGeWNtRjVUR2xyWlNBOUlISmxjWFZwY21Vb0p5NHZhWE5CY25KaGVVeHBhMlVuS1R0Y2JseHVMeW9xWEc0Z0tpQlVhR1VnWW1GelpTQnBiWEJzWlcxbGJuUmhkR2x2YmlCdlppQmdYeTV0WVhCZ0lIZHBkR2h2ZFhRZ2MzVndjRzl5ZENCbWIzSWdZMkZzYkdKaFkyc2djMmh2Y25Sb1lXNWtjMXh1SUNvZ1lXNWtJR0IwYUdsellDQmlhVzVrYVc1bkxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZFOWlhbVZqZEh4emRISnBibWQ5SUdOdmJHeGxZM1JwYjI0Z1ZHaGxJR052Ykd4bFkzUnBiMjRnZEc4Z2FYUmxjbUYwWlNCdmRtVnlMbHh1SUNvZ1FIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ2FYUmxjbUYwWldVZ1ZHaGxJR1oxYm1OMGFXOXVJR2x1ZG05clpXUWdjR1Z5SUdsMFpYSmhkR2x2Ymk1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnYm1WM0lHMWhjSEJsWkNCaGNuSmhlUzVjYmlBcUwxeHVablZ1WTNScGIyNGdZbUZ6WlUxaGNDaGpiMnhzWldOMGFXOXVMQ0JwZEdWeVlYUmxaU2tnZTF4dUlDQjJZWElnYVc1a1pYZ2dQU0F0TVN4Y2JpQWdJQ0FnSUhKbGMzVnNkQ0E5SUdselFYSnlZWGxNYVd0bEtHTnZiR3hsWTNScGIyNHBJRDhnUVhKeVlYa29ZMjlzYkdWamRHbHZiaTVzWlc1bmRHZ3BJRG9nVzEwN1hHNWNiaUFnWW1GelpVVmhZMmdvWTI5c2JHVmpkR2x2Yml3Z1puVnVZM1JwYjI0b2RtRnNkV1VzSUd0bGVTd2dZMjlzYkdWamRHbHZiaWtnZTF4dUlDQWdJSEpsYzNWc2RGc3JLMmx1WkdWNFhTQTlJR2wwWlhKaGRHVmxLSFpoYkhWbExDQnJaWGtzSUdOdmJHeGxZM1JwYjI0cE8xeHVJQ0I5S1R0Y2JpQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JpWVhObFRXRndPMXh1SWl3aWRtRnlJR0poYzJWSmMwMWhkR05vSUQwZ2NtVnhkV2x5WlNnbkxpOWlZWE5sU1hOTllYUmphQ2NwTEZ4dUlDQWdJR2RsZEUxaGRHTm9SR0YwWVNBOUlISmxjWFZwY21Vb0p5NHZaMlYwVFdGMFkyaEVZWFJoSnlrc1hHNGdJQ0FnZEc5UFltcGxZM1FnUFNCeVpYRjFhWEpsS0NjdUwzUnZUMkpxWldOMEp5azdYRzVjYmk4cUtseHVJQ29nVkdobElHSmhjMlVnYVcxd2JHVnRaVzUwWVhScGIyNGdiMllnWUY4dWJXRjBZMmhsYzJBZ2QyaHBZMmdnWkc5bGN5QnViM1FnWTJ4dmJtVWdZSE52ZFhKalpXQXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J6YjNWeVkyVWdWR2hsSUc5aWFtVmpkQ0J2WmlCd2NtOXdaWEowZVNCMllXeDFaWE1nZEc4Z2JXRjBZMmd1WEc0Z0tpQkFjbVYwZFhKdWN5QjdSblZ1WTNScGIyNTlJRkpsZEhWeWJuTWdkR2hsSUc1bGR5Qm1kVzVqZEdsdmJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1ltRnpaVTFoZEdOb1pYTW9jMjkxY21ObEtTQjdYRzRnSUhaaGNpQnRZWFJqYUVSaGRHRWdQU0JuWlhSTllYUmphRVJoZEdFb2MyOTFjbU5sS1R0Y2JpQWdhV1lnS0cxaGRHTm9SR0YwWVM1c1pXNW5kR2dnUFQwZ01TQW1KaUJ0WVhSamFFUmhkR0ZiTUYxYk1sMHBJSHRjYmlBZ0lDQjJZWElnYTJWNUlEMGdiV0YwWTJoRVlYUmhXekJkV3pCZExGeHVJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlHMWhkR05vUkdGMFlWc3dYVnN4WFR0Y2JseHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWh2WW1wbFkzUXBJSHRjYmlBZ0lDQWdJR2xtSUNodlltcGxZM1FnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnZZbXBsWTNRZ1BTQjBiMDlpYW1WamRDaHZZbXBsWTNRcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5aWFtVmpkRnRyWlhsZElEMDlQU0IyWVd4MVpTQW1KaUFvZG1Gc2RXVWdJVDA5SUhWdVpHVm1hVzVsWkNCOGZDQW9hMlY1SUdsdUlHOWlhbVZqZENrcE8xeHVJQ0FnSUgwN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c5aWFtVmpkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmlZWE5sU1hOTllYUmphQ2h2WW1wbFkzUXNJRzFoZEdOb1JHRjBZU2s3WEc0Z0lIMDdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1ltRnpaVTFoZEdOb1pYTTdYRzRpTENKMllYSWdZbUZ6WlVkbGRDQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVZGxkQ2NwTEZ4dUlDQWdJR0poYzJWSmMwVnhkV0ZzSUQwZ2NtVnhkV2x5WlNnbkxpOWlZWE5sU1hORmNYVmhiQ2NwTEZ4dUlDQWdJR0poYzJWVGJHbGpaU0E5SUhKbGNYVnBjbVVvSnk0dlltRnpaVk5zYVdObEp5a3NYRzRnSUNBZ2FYTkJjbkpoZVNBOUlISmxjWFZwY21Vb0p5NHVMMnhoYm1jdmFYTkJjbkpoZVNjcExGeHVJQ0FnSUdselMyVjVJRDBnY21WeGRXbHlaU2duTGk5cGMwdGxlU2NwTEZ4dUlDQWdJR2x6VTNSeWFXTjBRMjl0Y0dGeVlXSnNaU0E5SUhKbGNYVnBjbVVvSnk0dmFYTlRkSEpwWTNSRGIyMXdZWEpoWW14bEp5a3NYRzRnSUNBZ2JHRnpkQ0E5SUhKbGNYVnBjbVVvSnk0dUwyRnljbUY1TDJ4aGMzUW5LU3hjYmlBZ0lDQjBiMDlpYW1WamRDQTlJSEpsY1hWcGNtVW9KeTR2ZEc5UFltcGxZM1FuS1N4Y2JpQWdJQ0IwYjFCaGRHZ2dQU0J5WlhGMWFYSmxLQ2N1TDNSdlVHRjBhQ2NwTzF4dVhHNHZLaXBjYmlBcUlGUm9aU0JpWVhObElHbHRjR3hsYldWdWRHRjBhVzl1SUc5bUlHQmZMbTFoZEdOb1pYTlFjbTl3WlhKMGVXQWdkMmhwWTJnZ1pHOWxjeUJ1YjNRZ1kyeHZibVVnWUhOeVkxWmhiSFZsWUM1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIQmhkR2dnVkdobElIQmhkR2dnYjJZZ2RHaGxJSEJ5YjNCbGNuUjVJSFJ2SUdkbGRDNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2MzSmpWbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJR052YlhCaGNtVXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1JuVnVZM1JwYjI1OUlGSmxkSFZ5Ym5NZ2RHaGxJRzVsZHlCbWRXNWpkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWW1GelpVMWhkR05vWlhOUWNtOXdaWEowZVNod1lYUm9MQ0J6Y21OV1lXeDFaU2tnZTF4dUlDQjJZWElnYVhOQmNuSWdQU0JwYzBGeWNtRjVLSEJoZEdncExGeHVJQ0FnSUNBZ2FYTkRiMjF0YjI0Z1BTQnBjMHRsZVNod1lYUm9LU0FtSmlCcGMxTjBjbWxqZEVOdmJYQmhjbUZpYkdVb2MzSmpWbUZzZFdVcExGeHVJQ0FnSUNBZ2NHRjBhRXRsZVNBOUlDaHdZWFJvSUNzZ0p5Y3BPMXh1WEc0Z0lIQmhkR2dnUFNCMGIxQmhkR2dvY0dGMGFDazdYRzRnSUhKbGRIVnliaUJtZFc1amRHbHZiaWh2WW1wbFkzUXBJSHRjYmlBZ0lDQnBaaUFvYjJKcVpXTjBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUd0bGVTQTlJSEJoZEdoTFpYazdYRzRnSUNBZ2IySnFaV04wSUQwZ2RHOVBZbXBsWTNRb2IySnFaV04wS1R0Y2JpQWdJQ0JwWmlBb0tHbHpRWEp5SUh4OElDRnBjME52YlcxdmJpa2dKaVlnSVNoclpYa2dhVzRnYjJKcVpXTjBLU2tnZTF4dUlDQWdJQ0FnYjJKcVpXTjBJRDBnY0dGMGFDNXNaVzVuZEdnZ1BUMGdNU0EvSUc5aWFtVmpkQ0E2SUdKaGMyVkhaWFFvYjJKcVpXTjBMQ0JpWVhObFUyeHBZMlVvY0dGMGFDd2dNQ3dnTFRFcEtUdGNiaUFnSUNBZ0lHbG1JQ2h2WW1wbFkzUWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCclpYa2dQU0JzWVhOMEtIQmhkR2dwTzF4dUlDQWdJQ0FnYjJKcVpXTjBJRDBnZEc5UFltcGxZM1FvYjJKcVpXTjBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc5aWFtVmpkRnRyWlhsZElEMDlQU0J6Y21OV1lXeDFaVnh1SUNBZ0lDQWdQeUFvYzNKalZtRnNkV1VnSVQwOUlIVnVaR1ZtYVc1bFpDQjhmQ0FvYTJWNUlHbHVJRzlpYW1WamRDa3BYRzRnSUNBZ0lDQTZJR0poYzJWSmMwVnhkV0ZzS0hOeVkxWmhiSFZsTENCdlltcGxZM1JiYTJWNVhTd2dkVzVrWldacGJtVmtMQ0IwY25WbEtUdGNiaUFnZlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JpWVhObFRXRjBZMmhsYzFCeWIzQmxjblI1TzF4dUlpd2lkbUZ5SUhSdlQySnFaV04wSUQwZ2NtVnhkV2x5WlNnbkxpOTBiMDlpYW1WamRDY3BPMXh1WEc0dktpcGNiaUFxSUZSb1pTQmlZWE5sSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJRzltSUdCZkxuQnliM0JsY25SNVlDQjNhWFJvYjNWMElITjFjSEJ2Y25RZ1ptOXlJR1JsWlhBZ2NHRjBhSE11WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCclpYa2dWR2hsSUd0bGVTQnZaaUIwYUdVZ2NISnZjR1Z5ZEhrZ2RHOGdaMlYwTGx4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVmU0JTWlhSMWNtNXpJSFJvWlNCdVpYY2dablZ1WTNScGIyNHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHSmhjMlZRY205d1pYSjBlU2hyWlhrcElIdGNiaUFnY21WMGRYSnVJR1oxYm1OMGFXOXVLRzlpYW1WamRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdlltcGxZM1FnUFQwZ2JuVnNiQ0EvSUhWdVpHVm1hVzVsWkNBNklIUnZUMkpxWldOMEtHOWlhbVZqZENsYmEyVjVYVHRjYmlBZ2ZUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaVlYTmxVSEp2Y0dWeWRIazdYRzRpTENKMllYSWdZbUZ6WlVkbGRDQTlJSEpsY1hWcGNtVW9KeTR2WW1GelpVZGxkQ2NwTEZ4dUlDQWdJSFJ2VUdGMGFDQTlJSEpsY1hWcGNtVW9KeTR2ZEc5UVlYUm9KeWs3WEc1Y2JpOHFLbHh1SUNvZ1FTQnpjR1ZqYVdGc2FYcGxaQ0IyWlhKemFXOXVJRzltSUdCaVlYTmxVSEp2Y0dWeWRIbGdJSGRvYVdOb0lITjFjSEJ2Y25SeklHUmxaWEFnY0dGMGFITXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDhjM1J5YVc1bmZTQndZWFJvSUZSb1pTQndZWFJvSUc5bUlIUm9aU0J3Y205d1pYSjBlU0IwYnlCblpYUXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1JuVnVZM1JwYjI1OUlGSmxkSFZ5Ym5NZ2RHaGxJRzVsZHlCbWRXNWpkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWW1GelpWQnliM0JsY25SNVJHVmxjQ2h3WVhSb0tTQjdYRzRnSUhaaGNpQndZWFJvUzJWNUlEMGdLSEJoZEdnZ0t5QW5KeWs3WEc0Z0lIQmhkR2dnUFNCMGIxQmhkR2dvY0dGMGFDazdYRzRnSUhKbGRIVnliaUJtZFc1amRHbHZiaWh2WW1wbFkzUXBJSHRjYmlBZ0lDQnlaWFIxY200Z1ltRnpaVWRsZENodlltcGxZM1FzSUhCaGRHZ3NJSEJoZEdoTFpYa3BPMXh1SUNCOU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdKaGMyVlFjbTl3WlhKMGVVUmxaWEE3WEc0aUxDSjJZWElnYVdSbGJuUnBkSGtnUFNCeVpYRjFhWEpsS0NjdUxpOTFkR2xzYVhSNUwybGtaVzUwYVhSNUp5a3NYRzRnSUNBZ2JXVjBZVTFoY0NBOUlISmxjWFZwY21Vb0p5NHZiV1YwWVUxaGNDY3BPMXh1WEc0dktpcGNiaUFxSUZSb1pTQmlZWE5sSUdsdGNHeGxiV1Z1ZEdGMGFXOXVJRzltSUdCelpYUkVZWFJoWUNCM2FYUm9iM1YwSUhOMWNIQnZjblFnWm05eUlHaHZkQ0JzYjI5d0lHUmxkR1ZqZEdsdmJpNWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWm5WdVl5QlVhR1VnWm5WdVkzUnBiMjRnZEc4Z1lYTnpiMk5wWVhSbElHMWxkR0ZrWVhSaElIZHBkR2d1WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJR1JoZEdFZ1ZHaGxJRzFsZEdGa1lYUmhMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UwWjFibU4wYVc5dWZTQlNaWFIxY201eklHQm1kVzVqWUM1Y2JpQXFMMXh1ZG1GeUlHSmhjMlZUWlhSRVlYUmhJRDBnSVcxbGRHRk5ZWEFnUHlCcFpHVnVkR2wwZVNBNklHWjFibU4wYVc5dUtHWjFibU1zSUdSaGRHRXBJSHRjYmlBZ2JXVjBZVTFoY0M1elpYUW9ablZ1WXl3Z1pHRjBZU2s3WEc0Z0lISmxkSFZ5YmlCbWRXNWpPMXh1ZlR0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmlZWE5sVTJWMFJHRjBZVHRjYmlJc0lpOHFLbHh1SUNvZ1ZHaGxJR0poYzJVZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRnYjJZZ1lGOHVjMnhwWTJWZ0lIZHBkR2h2ZFhRZ1lXNGdhWFJsY21GMFpXVWdZMkZzYkNCbmRXRnlaQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnWVhKeVlYa2dWR2hsSUdGeWNtRjVJSFJ2SUhOc2FXTmxMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0emRHRnlkRDB3WFNCVWFHVWdjM1JoY25RZ2NHOXphWFJwYjI0dVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXMlZ1WkQxaGNuSmhlUzVzWlc1bmRHaGRJRlJvWlNCbGJtUWdjRzl6YVhScGIyNHVYRzRnS2lCQWNtVjBkWEp1Y3lCN1FYSnlZWGw5SUZKbGRIVnlibk1nZEdobElITnNhV05sSUc5bUlHQmhjbkpoZVdBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKaGMyVlRiR2xqWlNoaGNuSmhlU3dnYzNSaGNuUXNJR1Z1WkNrZ2UxeHVJQ0IyWVhJZ2FXNWtaWGdnUFNBdE1TeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHRnljbUY1TG14bGJtZDBhRHRjYmx4dUlDQnpkR0Z5ZENBOUlITjBZWEowSUQwOUlHNTFiR3dnUHlBd0lEb2dLQ3R6ZEdGeWRDQjhmQ0F3S1R0Y2JpQWdhV1lnS0hOMFlYSjBJRHdnTUNrZ2UxeHVJQ0FnSUhOMFlYSjBJRDBnTFhOMFlYSjBJRDRnYkdWdVozUm9JRDhnTUNBNklDaHNaVzVuZEdnZ0t5QnpkR0Z5ZENrN1hHNGdJSDFjYmlBZ1pXNWtJRDBnS0dWdVpDQTlQVDBnZFc1a1pXWnBibVZrSUh4OElHVnVaQ0ErSUd4bGJtZDBhQ2tnUHlCc1pXNW5kR2dnT2lBb0syVnVaQ0I4ZkNBd0tUdGNiaUFnYVdZZ0tHVnVaQ0E4SURBcElIdGNiaUFnSUNCbGJtUWdLejBnYkdWdVozUm9PMXh1SUNCOVhHNGdJR3hsYm1kMGFDQTlJSE4wWVhKMElENGdaVzVrSUQ4Z01DQTZJQ2dvWlc1a0lDMGdjM1JoY25RcElENCtQaUF3S1R0Y2JpQWdjM1JoY25RZ1BqNCtQU0F3TzF4dVhHNGdJSFpoY2lCeVpYTjFiSFFnUFNCQmNuSmhlU2hzWlc1bmRHZ3BPMXh1SUNCM2FHbHNaU0FvS3l0cGJtUmxlQ0E4SUd4bGJtZDBhQ2tnZTF4dUlDQWdJSEpsYzNWc2RGdHBibVJsZUYwZ1BTQmhjbkpoZVZ0cGJtUmxlQ0FySUhOMFlYSjBYVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdKaGMyVlRiR2xqWlR0Y2JpSXNJaThxS2x4dUlDb2dRMjl1ZG1WeWRITWdZSFpoYkhWbFlDQjBieUJoSUhOMGNtbHVaeUJwWmlCcGRDZHpJRzV2ZENCdmJtVXVJRUZ1SUdWdGNIUjVJSE4wY21sdVp5QnBjeUJ5WlhSMWNtNWxaRnh1SUNvZ1ptOXlJR0J1ZFd4c1lDQnZjaUJnZFc1a1pXWnBibVZrWUNCMllXeDFaWE11WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJSEJ5YjJObGMzTXVYRzRnS2lCQWNtVjBkWEp1Y3lCN2MzUnlhVzVuZlNCU1pYUjFjbTV6SUhSb1pTQnpkSEpwYm1jdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKaGMyVlViMU4wY21sdVp5aDJZV3gxWlNrZ2UxeHVJQ0J5WlhSMWNtNGdkbUZzZFdVZ1BUMGdiblZzYkNBL0lDY25JRG9nS0haaGJIVmxJQ3NnSnljcE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdKaGMyVlViMU4wY21sdVp6dGNiaUlzSWk4cUtseHVJQ29nVkdobElHSmhjMlVnYVcxd2JHVnRaVzUwWVhScGIyNGdiMllnWUY4dWRtRnNkV1Z6WUNCaGJtUWdZRjh1ZG1Gc2RXVnpTVzVnSUhkb2FXTm9JR055WldGMFpYTWdZVzVjYmlBcUlHRnljbUY1SUc5bUlHQnZZbXBsWTNSZ0lIQnliM0JsY25SNUlIWmhiSFZsY3lCamIzSnlaWE53YjI1a2FXNW5JSFJ2SUhSb1pTQndjbTl3WlhKMGVTQnVZVzFsYzF4dUlDb2diMllnWUhCeWIzQnpZQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5aWFtVmpkQ0JVYUdVZ2IySnFaV04wSUhSdklIRjFaWEo1TGx4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ2NISnZjSE1nVkdobElIQnliM0JsY25SNUlHNWhiV1Z6SUhSdklHZGxkQ0IyWVd4MVpYTWdabTl5TGx4dUlDb2dRSEpsZEhWeWJuTWdlMDlpYW1WamRIMGdVbVYwZFhKdWN5QjBhR1VnWVhKeVlYa2diMllnY0hKdmNHVnlkSGtnZG1Gc2RXVnpMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmlZWE5sVm1Gc2RXVnpLRzlpYW1WamRDd2djSEp2Y0hNcElIdGNiaUFnZG1GeUlHbHVaR1Y0SUQwZ0xURXNYRzRnSUNBZ0lDQnNaVzVuZEdnZ1BTQndjbTl3Y3k1c1pXNW5kR2dzWEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0JCY25KaGVTaHNaVzVuZEdncE8xeHVYRzRnSUhkb2FXeGxJQ2dySzJsdVpHVjRJRHdnYkdWdVozUm9LU0I3WEc0Z0lDQWdjbVZ6ZFd4MFcybHVaR1Y0WFNBOUlHOWlhbVZqZEZ0d2NtOXdjMXRwYm1SbGVGMWRPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWW1GelpWWmhiSFZsY3p0Y2JpSXNJblpoY2lCaWFXNWhjbmxKYm1SbGVFSjVJRDBnY21WeGRXbHlaU2duTGk5aWFXNWhjbmxKYm1SbGVFSjVKeWtzWEc0Z0lDQWdhV1JsYm5ScGRIa2dQU0J5WlhGMWFYSmxLQ2N1TGk5MWRHbHNhWFI1TDJsa1pXNTBhWFI1SnlrN1hHNWNiaThxS2lCVmMyVmtJR0Z6SUhKbFptVnlaVzVqWlhNZ1ptOXlJSFJvWlNCdFlYaHBiWFZ0SUd4bGJtZDBhQ0JoYm1RZ2FXNWtaWGdnYjJZZ1lXNGdZWEp5WVhrdUlDb3ZYRzUyWVhJZ1RVRllYMEZTVWtGWlgweEZUa2RVU0NBOUlEUXlPVFE1TmpjeU9UVXNYRzRnSUNBZ1NFRk1SbDlOUVZoZlFWSlNRVmxmVEVWT1IxUklJRDBnVFVGWVgwRlNVa0ZaWDB4RlRrZFVTQ0ErUGo0Z01UdGNibHh1THlvcVhHNGdLaUJRWlhKbWIzSnRjeUJoSUdKcGJtRnllU0J6WldGeVkyZ2diMllnWUdGeWNtRjVZQ0IwYnlCa1pYUmxjbTFwYm1VZ2RHaGxJR2x1WkdWNElHRjBJSGRvYVdOb0lHQjJZV3gxWldCY2JpQXFJSE5vYjNWc1pDQmlaU0JwYm5ObGNuUmxaQ0JwYm5SdklHQmhjbkpoZVdBZ2FXNGdiM0prWlhJZ2RHOGdiV0ZwYm5SaGFXNGdhWFJ6SUhOdmNuUWdiM0prWlhJdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlHRnljbUY1SUZSb1pTQnpiM0owWldRZ1lYSnlZWGtnZEc4Z2FXNXpjR1ZqZEM1Y2JpQXFJRUJ3WVhKaGJTQjdLbjBnZG1Gc2RXVWdWR2hsSUhaaGJIVmxJSFJ2SUdWMllXeDFZWFJsTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJjbVYwU0dsbmFHVnpkRjBnVTNCbFkybG1lU0J5WlhSMWNtNXBibWNnZEdobElHaHBaMmhsYzNRZ2NYVmhiR2xtYVdWa0lHbHVaR1Y0TGx4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNuMGdVbVYwZFhKdWN5QjBhR1VnYVc1a1pYZ2dZWFFnZDJocFkyZ2dZSFpoYkhWbFlDQnphRzkxYkdRZ1ltVWdhVzV6WlhKMFpXUmNiaUFxSUNCcGJuUnZJR0JoY25KaGVXQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHSnBibUZ5ZVVsdVpHVjRLR0Z5Y21GNUxDQjJZV3gxWlN3Z2NtVjBTR2xuYUdWemRDa2dlMXh1SUNCMllYSWdiRzkzSUQwZ01DeGNiaUFnSUNBZ0lHaHBaMmdnUFNCaGNuSmhlU0EvSUdGeWNtRjVMbXhsYm1kMGFDQTZJR3h2ZHp0Y2JseHVJQ0JwWmlBb2RIbHdaVzltSUhaaGJIVmxJRDA5SUNkdWRXMWlaWEluSUNZbUlIWmhiSFZsSUQwOVBTQjJZV3gxWlNBbUppQm9hV2RvSUR3OUlFaEJURVpmVFVGWVgwRlNVa0ZaWDB4RlRrZFVTQ2tnZTF4dUlDQWdJSGRvYVd4bElDaHNiM2NnUENCb2FXZG9LU0I3WEc0Z0lDQWdJQ0IyWVhJZ2JXbGtJRDBnS0d4dmR5QXJJR2hwWjJncElENCtQaUF4TEZ4dUlDQWdJQ0FnSUNBZ0lHTnZiWEIxZEdWa0lEMGdZWEp5WVhsYmJXbGtYVHRjYmx4dUlDQWdJQ0FnYVdZZ0tDaHlaWFJJYVdkb1pYTjBJRDhnS0dOdmJYQjFkR1ZrSUR3OUlIWmhiSFZsS1NBNklDaGpiMjF3ZFhSbFpDQThJSFpoYkhWbEtTa2dKaVlnWTI5dGNIVjBaV1FnSVQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ2JHOTNJRDBnYldsa0lDc2dNVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2hwWjJnZ1BTQnRhV1E3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCb2FXZG9PMXh1SUNCOVhHNGdJSEpsZEhWeWJpQmlhVzVoY25sSmJtUmxlRUo1S0dGeWNtRjVMQ0IyWVd4MVpTd2dhV1JsYm5ScGRIa3NJSEpsZEVocFoyaGxjM1FwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR0pwYm1GeWVVbHVaR1Y0TzF4dUlpd2lMeW9nVG1GMGFYWmxJRzFsZEdodlpDQnlaV1psY21WdVkyVnpJR1p2Y2lCMGFHOXpaU0IzYVhSb0lIUm9aU0J6WVcxbElHNWhiV1VnWVhNZ2IzUm9aWElnWUd4dlpHRnphR0FnYldWMGFHOWtjeTRnS2k5Y2JuWmhjaUJ1WVhScGRtVkdiRzl2Y2lBOUlFMWhkR2d1Wm14dmIzSXNYRzRnSUNBZ2JtRjBhWFpsVFdsdUlEMGdUV0YwYUM1dGFXNDdYRzVjYmk4cUtpQlZjMlZrSUdGeklISmxabVZ5Wlc1alpYTWdabTl5SUhSb1pTQnRZWGhwYlhWdElHeGxibWQwYUNCaGJtUWdhVzVrWlhnZ2IyWWdZVzRnWVhKeVlYa3VJQ292WEc1MllYSWdUVUZZWDBGU1VrRlpYMHhGVGtkVVNDQTlJRFF5T1RRNU5qY3lPVFVzWEc0Z0lDQWdUVUZZWDBGU1VrRlpYMGxPUkVWWUlEMGdUVUZZWDBGU1VrRlpYMHhGVGtkVVNDQXRJREU3WEc1Y2JpOHFLbHh1SUNvZ1ZHaHBjeUJtZFc1amRHbHZiaUJwY3lCc2FXdGxJR0JpYVc1aGNubEpibVJsZUdBZ1pYaGpaWEIwSUhSb1lYUWdhWFFnYVc1MmIydGxjeUJnYVhSbGNtRjBaV1ZnSUdadmNseHVJQ29nWUhaaGJIVmxZQ0JoYm1RZ1pXRmphQ0JsYkdWdFpXNTBJRzltSUdCaGNuSmhlV0FnZEc4Z1kyOXRjSFYwWlNCMGFHVnBjaUJ6YjNKMElISmhibXRwYm1jdUlGUm9aVnh1SUNvZ2FYUmxjbUYwWldVZ2FYTWdhVzUyYjJ0bFpDQjNhWFJvSUc5dVpTQmhjbWQxYldWdWREc2dLSFpoYkhWbEtTNWNiaUFxWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdZWEp5WVhrZ1ZHaGxJSE52Y25SbFpDQmhjbkpoZVNCMGJ5QnBibk53WldOMExseHVJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaU0JVYUdVZ2RtRnNkV1VnZEc4Z1pYWmhiSFZoZEdVdVhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JwZEdWeVlYUmxaU0JVYUdVZ1puVnVZM1JwYjI0Z2FXNTJiMnRsWkNCd1pYSWdhWFJsY21GMGFXOXVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjBTR2xuYUdWemRGMGdVM0JsWTJsbWVTQnlaWFIxY201cGJtY2dkR2hsSUdocFoyaGxjM1FnY1hWaGJHbG1hV1ZrSUdsdVpHVjRMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UyNTFiV0psY24wZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhnZ1lYUWdkMmhwWTJnZ1lIWmhiSFZsWUNCemFHOTFiR1FnWW1VZ2FXNXpaWEowWldSY2JpQXFJQ0JwYm5SdklHQmhjbkpoZVdBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKcGJtRnllVWx1WkdWNFFua29ZWEp5WVhrc0lIWmhiSFZsTENCcGRHVnlZWFJsWlN3Z2NtVjBTR2xuYUdWemRDa2dlMXh1SUNCMllXeDFaU0E5SUdsMFpYSmhkR1ZsS0haaGJIVmxLVHRjYmx4dUlDQjJZWElnYkc5M0lEMGdNQ3hjYmlBZ0lDQWdJR2hwWjJnZ1BTQmhjbkpoZVNBL0lHRnljbUY1TG14bGJtZDBhQ0E2SURBc1hHNGdJQ0FnSUNCMllXeEpjMDVoVGlBOUlIWmhiSFZsSUNFOVBTQjJZV3gxWlN4Y2JpQWdJQ0FnSUhaaGJFbHpUblZzYkNBOUlIWmhiSFZsSUQwOVBTQnVkV3hzTEZ4dUlDQWdJQ0FnZG1Gc1NYTlZibVJsWmlBOUlIWmhiSFZsSUQwOVBTQjFibVJsWm1sdVpXUTdYRzVjYmlBZ2QyaHBiR1VnS0d4dmR5QThJR2hwWjJncElIdGNiaUFnSUNCMllYSWdiV2xrSUQwZ2JtRjBhWFpsUm14dmIzSW9LR3h2ZHlBcklHaHBaMmdwSUM4Z01pa3NYRzRnSUNBZ0lDQWdJR052YlhCMWRHVmtJRDBnYVhSbGNtRjBaV1VvWVhKeVlYbGJiV2xrWFNrc1hHNGdJQ0FnSUNBZ0lHbHpSR1ZtSUQwZ1kyOXRjSFYwWldRZ0lUMDlJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnYVhOU1pXWnNaWGhwZG1VZ1BTQmpiMjF3ZFhSbFpDQTlQVDBnWTI5dGNIVjBaV1E3WEc1Y2JpQWdJQ0JwWmlBb2RtRnNTWE5PWVU0cElIdGNiaUFnSUNBZ0lIWmhjaUJ6WlhSTWIzY2dQU0JwYzFKbFpteGxlR2wyWlNCOGZDQnlaWFJJYVdkb1pYTjBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kbUZzU1hOT2RXeHNLU0I3WEc0Z0lDQWdJQ0J6WlhSTWIzY2dQU0JwYzFKbFpteGxlR2wyWlNBbUppQnBjMFJsWmlBbUppQW9jbVYwU0dsbmFHVnpkQ0I4ZkNCamIyMXdkWFJsWkNBaFBTQnVkV3hzS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0haaGJFbHpWVzVrWldZcElIdGNiaUFnSUNBZ0lITmxkRXh2ZHlBOUlHbHpVbVZtYkdWNGFYWmxJQ1ltSUNoeVpYUklhV2RvWlhOMElIeDhJR2x6UkdWbUtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHTnZiWEIxZEdWa0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lITmxkRXh2ZHlBOUlHWmhiSE5sTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnpaWFJNYjNjZ1BTQnlaWFJJYVdkb1pYTjBJRDhnS0dOdmJYQjFkR1ZrSUR3OUlIWmhiSFZsS1NBNklDaGpiMjF3ZFhSbFpDQThJSFpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tITmxkRXh2ZHlrZ2UxeHVJQ0FnSUNBZ2JHOTNJRDBnYldsa0lDc2dNVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FHbG5hQ0E5SUcxcFpEdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUc1aGRHbDJaVTFwYmlob2FXZG9MQ0JOUVZoZlFWSlNRVmxmU1U1RVJWZ3BPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHSnBibUZ5ZVVsdVpHVjRRbms3WEc0aUxDSjJZWElnYVdSbGJuUnBkSGtnUFNCeVpYRjFhWEpsS0NjdUxpOTFkR2xzYVhSNUwybGtaVzUwYVhSNUp5azdYRzVjYmk4cUtseHVJQ29nUVNCemNHVmphV0ZzYVhwbFpDQjJaWEp6YVc5dUlHOW1JR0JpWVhObFEyRnNiR0poWTJ0Z0lIZG9hV05vSUc5dWJIa2djM1Z3Y0c5eWRITWdZSFJvYVhOZ0lHSnBibVJwYm1kY2JpQXFJR0Z1WkNCemNHVmphV1o1YVc1bklIUm9aU0J1ZFcxaVpYSWdiMllnWVhKbmRXMWxiblJ6SUhSdklIQnliM1pwWkdVZ2RHOGdZR1oxYm1OZ0xseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JtZFc1aklGUm9aU0JtZFc1amRHbHZiaUIwYnlCaWFXNWtMbHh1SUNvZ1FIQmhjbUZ0SUhzcWZTQjBhR2x6UVhKbklGUm9aU0JnZEdocGMyQWdZbWx1WkdsdVp5QnZaaUJnWm5WdVkyQXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJGeVowTnZkVzUwWFNCVWFHVWdiblZ0WW1WeUlHOW1JR0Z5WjNWdFpXNTBjeUIwYnlCd2NtOTJhV1JsSUhSdklHQm1kVzVqWUM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRHZFc1amRHbHZibjBnVW1WMGRYSnVjeUIwYUdVZ1kyRnNiR0poWTJzdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdKcGJtUkRZV3hzWW1GamF5aG1kVzVqTENCMGFHbHpRWEpuTENCaGNtZERiM1Z1ZENrZ2UxeHVJQ0JwWmlBb2RIbHdaVzltSUdaMWJtTWdJVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJwWkdWdWRHbDBlVHRjYmlBZ2ZWeHVJQ0JwWmlBb2RHaHBjMEZ5WnlBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU03WEc0Z0lIMWNiaUFnYzNkcGRHTm9JQ2hoY21kRGIzVnVkQ2tnZTF4dUlDQWdJR05oYzJVZ01Ub2djbVYwZFhKdUlHWjFibU4wYVc5dUtIWmhiSFZsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm5WdVl5NWpZV3hzS0hSb2FYTkJjbWNzSUhaaGJIVmxLVHRjYmlBZ0lDQjlPMXh1SUNBZ0lHTmhjMlVnTXpvZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0haaGJIVmxMQ0JwYm1SbGVDd2dZMjlzYkdWamRHbHZiaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1oxYm1NdVkyRnNiQ2gwYUdselFYSm5MQ0IyWVd4MVpTd2dhVzVrWlhnc0lHTnZiR3hsWTNScGIyNHBPMXh1SUNBZ0lIMDdYRzRnSUNBZ1kyRnpaU0EwT2lCeVpYUjFjbTRnWm5WdVkzUnBiMjRvWVdOamRXMTFiR0YwYjNJc0lIWmhiSFZsTENCcGJtUmxlQ3dnWTI5c2JHVmpkR2x2YmlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaMWJtTXVZMkZzYkNoMGFHbHpRWEpuTENCaFkyTjFiWFZzWVhSdmNpd2dkbUZzZFdVc0lHbHVaR1Y0TENCamIyeHNaV04wYVc5dUtUdGNiaUFnSUNCOU8xeHVJQ0FnSUdOaGMyVWdOVG9nY21WMGRYSnVJR1oxYm1OMGFXOXVLSFpoYkhWbExDQnZkR2hsY2l3Z2EyVjVMQ0J2WW1wbFkzUXNJSE52ZFhKalpTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWjFibU11WTJGc2JDaDBhR2x6UVhKbkxDQjJZV3gxWlN3Z2IzUm9aWElzSUd0bGVTd2diMkpxWldOMExDQnpiM1Z5WTJVcE8xeHVJQ0FnSUgwN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1akxtRndjR3g1S0hSb2FYTkJjbWNzSUdGeVozVnRaVzUwY3lrN1hHNGdJSDA3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdZbWx1WkVOaGJHeGlZV05yTzF4dUlpd2lLR1oxYm1OMGFXOXVJQ2huYkc5aVlXd3BlMXh1THlvcUlFNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCQmNuSmhlVUoxWm1abGNpQTlJR2RzYjJKaGJDNUJjbkpoZVVKMVptWmxjaXhjYmlBZ0lDQlZhVzUwT0VGeWNtRjVJRDBnWjJ4dlltRnNMbFZwYm5RNFFYSnlZWGs3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaElHTnNiMjVsSUc5bUlIUm9aU0JuYVhabGJpQmhjbkpoZVNCaWRXWm1aWEl1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGxDZFdabVpYSjlJR0oxWm1abGNpQlVhR1VnWVhKeVlYa2dZblZtWm1WeUlIUnZJR05zYjI1bExseHVJQ29nUUhKbGRIVnlibk1nZTBGeWNtRjVRblZtWm1WeWZTQlNaWFIxY201eklIUm9aU0JqYkc5dVpXUWdZWEp5WVhrZ1luVm1abVZ5TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJpZFdabVpYSkRiRzl1WlNoaWRXWm1aWElwSUh0Y2JpQWdkbUZ5SUhKbGMzVnNkQ0E5SUc1bGR5QkJjbkpoZVVKMVptWmxjaWhpZFdabVpYSXVZbmwwWlV4bGJtZDBhQ2tzWEc0Z0lDQWdJQ0IyYVdWM0lEMGdibVYzSUZWcGJuUTRRWEp5WVhrb2NtVnpkV3gwS1R0Y2JseHVJQ0IyYVdWM0xuTmxkQ2h1WlhjZ1ZXbHVkRGhCY25KaGVTaGlkV1ptWlhJcEtUdGNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCaWRXWm1aWEpEYkc5dVpUdGNibHh1ZlNrdVkyRnNiQ2gwYUdsekxIUjVjR1Z2WmlCbmJHOWlZV3dnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnUHlCbmJHOWlZV3dnT2lCMGVYQmxiMllnYzJWc1ppQWhQVDBnWENKMWJtUmxabWx1WldSY0lpQS9JSE5sYkdZZ09pQjBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUQ4Z2QybHVaRzkzSURvZ2UzMHBYRzR2THlNZ2MyOTFjbU5sVFdGd2NHbHVaMVZTVEQxa1lYUmhPbUZ3Y0d4cFkyRjBhVzl1TDJwemIyNDdZMmhoY25ObGREcDFkR1l0T0R0aVlYTmxOalFzWlhsS01scFlTbnBoVnpsMVNXcHZla3hEU25waU0xWjVXVEpXZWtscWNHSkpiVFYyV2tkV1ptSlhPV3RrVjNoc1kzazVjMkl5VW1oak1tZDBXVEk1ZEdOSFJqQk1NbXgxWkVkV2VXSnRSbk5NTWtveFdtMWFiR05yVG5OaU1qVnNURzF3ZWtsc01ITkpiVFZvWWxkV2VrbHFjR0pZVTNkcFlsZEdkMk5IYkhWYU0wMXBUMmxKTjFGVlJrSlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVnBURU5LYldGWGVHeEphbTlwV2pKV2RWcFlTbWhrUjFaclRHMXdla2xwZDJsak1qa3hZMjFPYkZWdE9YWmtRMGsyU1dsSmMwbHVUblprV0VwcVdsaE9SR0l5TlRCYVZ6VXdTV3B3WWtscE9IRkxhVUpQV1ZoU2NHUnRWV2RpVjFZd1lVYzVhMGxJU214YWJWWjVXbGMxYWxwWVRYVkpRMjkyV0VjMU1sbFlTV2RSV0VwNVdWaHNRMlJYV20xYVdFbG5VRk5DYm1KSE9XbFpWM2QxVVZoS2VWbFliRU5rVjFwdFdsaEpjMWhITkdkSlEwRm5WbGRzZFdSRWFFSmpia3BvWlZOQk9VbEhaSE5pTWtwb1lrTTFWbUZYTlRCUFJVWjVZMjFHTlU4eGVIVllSelIyUzJsd1kySnBRWEZKUlU1NVdsZEdNRnBZVFdkWlUwSnFZa2M1ZFZwVFFuWmFhVUl3WVVkVloxb3liREphVnpSbldWaEtlVmxZYTJkWmJsWnRXbTFXZVV4c2VIVkpRM0JqWW1sQmNVbEZRbmRqYld3eVdWaFNiRmhITkdkTGFVSkJZMGRHZVZsWE1HZGxNRVo1WTIxR05WRnVWbTFhYlZaNVpsTkNhV1JYV20xYVdFbG5Wa2RvYkVsSFJubGpiVVkxU1VkS01WcHRXbXhqYVVJd1lubENhbUpIT1hWYVV6VmpZbWxCY1VsRlFubGFXRkl4WTIwMWVrbElkRUpqYmtwb1pWVktNVnB0V214amJqQm5WVzFXTUdSWVNuVmplVUl3WVVkVloxa3llSFppYlZaclNVZEdlV050UmpWSlIwb3hXbTFhYkdOcE5XTmlhVUZ4VERGNGRWcHVWblZaTTFKd1lqSTBaMWx1Vm0xYWJWWjVVVEo0ZG1KdFZXOVpibFp0V20xV2VVdFRRamRZUnpSblNVaGFhR05wUW5sYVdFNHhZa2hSWjFCVFFuVmFXR05uVVZoS2VWbFliRU5rVjFwdFdsaEpiMWx1Vm0xYWJWWjVURzFLTldSSFZrMWFWelZ1WkVkbmNFeEdlSFZKUTBGblNVTkJaMlJ0Ykd4a2VVRTVTVWMxYkdSNVFsWmhWelV3VDBWR2VXTnRSalZMU0Vwc1l6TldjMlJEYXpkWVJ6VmpZbWxCWjJSdGJHeGtlVFY2V2xoUmIySnRWak5KUmxad1ltNVJORkZZU25sWldHdHZXVzVXYlZwdFZubExVMnMzV0VjMFowbElTbXhrU0ZaNVltbENlVnBZVGpGaVNGRTNXRWMxT1ZoSE5XTmliVEYyV2toV2MxcFROV3hsU0VKMlkyNVNla2xFTUdkWmJsWnRXbTFXZVZFeWVIWmliVlUzV0VjMGFWaFlNRDBpTENJdktpQk9ZWFJwZG1VZ2JXVjBhRzlrSUhKbFptVnlaVzVqWlhNZ1ptOXlJSFJvYjNObElIZHBkR2dnZEdobElITmhiV1VnYm1GdFpTQmhjeUJ2ZEdobGNpQmdiRzlrWVhOb1lDQnRaWFJvYjJSekxpQXFMMXh1ZG1GeUlHNWhkR2wyWlUxaGVDQTlJRTFoZEdndWJXRjRPMXh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVc0Z1lYSnlZWGtnZEdoaGRDQnBjeUIwYUdVZ1kyOXRjRzl6YVhScGIyNGdiMllnY0dGeWRHbGhiR3g1SUdGd2NHeHBaV1FnWVhKbmRXMWxiblJ6TEZ4dUlDb2djR3hoWTJWb2IyeGtaWEp6TENCaGJtUWdjSEp2ZG1sa1pXUWdZWEpuZFcxbGJuUnpJR2x1ZEc4Z1lTQnphVzVuYkdVZ1lYSnlZWGtnYjJZZ1lYSm5kVzFsYm5SekxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZFOWlhbVZqZEgwZ1lYSm5jeUJVYUdVZ2NISnZkbWxrWldRZ1lYSm5kVzFsYm5SekxseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdjR0Z5ZEdsaGJITWdWR2hsSUdGeVozVnRaVzUwY3lCMGJ5QndjbVZ3Wlc1a0lIUnZJSFJvYjNObElIQnliM1pwWkdWa0xseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdhRzlzWkdWeWN5QlVhR1VnWUhCaGNuUnBZV3h6WUNCd2JHRmpaV2h2YkdSbGNpQnBibVJsZUdWekxseHVJQ29nUUhKbGRIVnlibk1nZTBGeWNtRjVmU0JTWlhSMWNtNXpJSFJvWlNCdVpYY2dZWEp5WVhrZ2IyWWdZMjl0Y0c5elpXUWdZWEpuZFcxbGJuUnpMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmpiMjF3YjNObFFYSm5jeWhoY21kekxDQndZWEowYVdGc2N5d2dhRzlzWkdWeWN5a2dlMXh1SUNCMllYSWdhRzlzWkdWeWMweGxibWQwYUNBOUlHaHZiR1JsY25NdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnWVhKbmMwbHVaR1Y0SUQwZ0xURXNYRzRnSUNBZ0lDQmhjbWR6VEdWdVozUm9JRDBnYm1GMGFYWmxUV0Y0S0dGeVozTXViR1Z1WjNSb0lDMGdhRzlzWkdWeWMweGxibWQwYUN3Z01Da3NYRzRnSUNBZ0lDQnNaV1owU1c1a1pYZ2dQU0F0TVN4Y2JpQWdJQ0FnSUd4bFpuUk1aVzVuZEdnZ1BTQndZWEowYVdGc2N5NXNaVzVuZEdnc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCQmNuSmhlU2hzWldaMFRHVnVaM1JvSUNzZ1lYSm5jMHhsYm1kMGFDazdYRzVjYmlBZ2QyaHBiR1VnS0NzcmJHVm1kRWx1WkdWNElEd2diR1ZtZEV4bGJtZDBhQ2tnZTF4dUlDQWdJSEpsYzNWc2RGdHNaV1owU1c1a1pYaGRJRDBnY0dGeWRHbGhiSE5iYkdWbWRFbHVaR1Y0WFR0Y2JpQWdmVnh1SUNCM2FHbHNaU0FvS3l0aGNtZHpTVzVrWlhnZ1BDQm9iMnhrWlhKelRHVnVaM1JvS1NCN1hHNGdJQ0FnY21WemRXeDBXMmh2YkdSbGNuTmJZWEpuYzBsdVpHVjRYVjBnUFNCaGNtZHpXMkZ5WjNOSmJtUmxlRjA3WEc0Z0lIMWNiaUFnZDJocGJHVWdLR0Z5WjNOTVpXNW5kR2d0TFNrZ2UxeHVJQ0FnSUhKbGMzVnNkRnRzWldaMFNXNWtaWGdySzEwZ1BTQmhjbWR6VzJGeVozTkpibVJsZUNzclhUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR052YlhCdmMyVkJjbWR6TzF4dUlpd2lMeW9nVG1GMGFYWmxJRzFsZEdodlpDQnlaV1psY21WdVkyVnpJR1p2Y2lCMGFHOXpaU0IzYVhSb0lIUm9aU0J6WVcxbElHNWhiV1VnWVhNZ2IzUm9aWElnWUd4dlpHRnphR0FnYldWMGFHOWtjeTRnS2k5Y2JuWmhjaUJ1WVhScGRtVk5ZWGdnUFNCTllYUm9MbTFoZUR0Y2JseHVMeW9xWEc0Z0tpQlVhR2x6SUdaMWJtTjBhVzl1SUdseklHeHBhMlVnWUdOdmJYQnZjMlZCY21kellDQmxlR05sY0hRZ2RHaGhkQ0IwYUdVZ1lYSm5kVzFsYm5SeklHTnZiWEJ2YzJsMGFXOXVYRzRnS2lCcGN5QjBZV2xzYjNKbFpDQm1iM0lnWUY4dWNHRnlkR2xoYkZKcFoyaDBZQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWHhQWW1wbFkzUjlJR0Z5WjNNZ1ZHaGxJSEJ5YjNacFpHVmtJR0Z5WjNWdFpXNTBjeTVjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUhCaGNuUnBZV3h6SUZSb1pTQmhjbWQxYldWdWRITWdkRzhnWVhCd1pXNWtJSFJ2SUhSb2IzTmxJSEJ5YjNacFpHVmtMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnYUc5c1pHVnljeUJVYUdVZ1lIQmhjblJwWVd4ellDQndiR0ZqWldodmJHUmxjaUJwYm1SbGVHVnpMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UwRnljbUY1ZlNCU1pYUjFjbTV6SUhSb1pTQnVaWGNnWVhKeVlYa2diMllnWTI5dGNHOXpaV1FnWVhKbmRXMWxiblJ6TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJqYjIxd2IzTmxRWEpuYzFKcFoyaDBLR0Z5WjNNc0lIQmhjblJwWVd4ekxDQm9iMnhrWlhKektTQjdYRzRnSUhaaGNpQm9iMnhrWlhKelNXNWtaWGdnUFNBdE1TeGNiaUFnSUNBZ0lHaHZiR1JsY25OTVpXNW5kR2dnUFNCb2IyeGtaWEp6TG14bGJtZDBhQ3hjYmlBZ0lDQWdJR0Z5WjNOSmJtUmxlQ0E5SUMweExGeHVJQ0FnSUNBZ1lYSm5jMHhsYm1kMGFDQTlJRzVoZEdsMlpVMWhlQ2hoY21kekxteGxibWQwYUNBdElHaHZiR1JsY25OTVpXNW5kR2dzSURBcExGeHVJQ0FnSUNBZ2NtbG5hSFJKYm1SbGVDQTlJQzB4TEZ4dUlDQWdJQ0FnY21sbmFIUk1aVzVuZEdnZ1BTQndZWEowYVdGc2N5NXNaVzVuZEdnc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCQmNuSmhlU2hoY21kelRHVnVaM1JvSUNzZ2NtbG5hSFJNWlc1bmRHZ3BPMXh1WEc0Z0lIZG9hV3hsSUNncksyRnlaM05KYm1SbGVDQThJR0Z5WjNOTVpXNW5kR2dwSUh0Y2JpQWdJQ0J5WlhOMWJIUmJZWEpuYzBsdVpHVjRYU0E5SUdGeVozTmJZWEpuYzBsdVpHVjRYVHRjYmlBZ2ZWeHVJQ0IyWVhJZ2IyWm1jMlYwSUQwZ1lYSm5jMGx1WkdWNE8xeHVJQ0IzYUdsc1pTQW9LeXR5YVdkb2RFbHVaR1Y0SUR3Z2NtbG5hSFJNWlc1bmRHZ3BJSHRjYmlBZ0lDQnlaWE4xYkhSYmIyWm1jMlYwSUNzZ2NtbG5hSFJKYm1SbGVGMGdQU0J3WVhKMGFXRnNjMXR5YVdkb2RFbHVaR1Y0WFR0Y2JpQWdmVnh1SUNCM2FHbHNaU0FvS3l0b2IyeGtaWEp6U1c1a1pYZ2dQQ0JvYjJ4a1pYSnpUR1Z1WjNSb0tTQjdYRzRnSUNBZ2NtVnpkV3gwVzI5bVpuTmxkQ0FySUdodmJHUmxjbk5iYUc5c1pHVnljMGx1WkdWNFhWMGdQU0JoY21kelcyRnlaM05KYm1SbGVDc3JYVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdOdmJYQnZjMlZCY21kelVtbG5hSFE3WEc0aUxDSjJZWElnWjJWMFRHVnVaM1JvSUQwZ2NtVnhkV2x5WlNnbkxpOW5aWFJNWlc1bmRHZ25LU3hjYmlBZ0lDQnBjMHhsYm1kMGFDQTlJSEpsY1hWcGNtVW9KeTR2YVhOTVpXNW5kR2duS1N4Y2JpQWdJQ0IwYjA5aWFtVmpkQ0E5SUhKbGNYVnBjbVVvSnk0dmRHOVBZbXBsWTNRbktUdGNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWUdKaGMyVkZZV05vWUNCdmNpQmdZbUZ6WlVWaFkyaFNhV2RvZEdBZ1puVnVZM1JwYjI0dVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlJR1ZoWTJoR2RXNWpJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QnBkR1Z5WVhSbElHOTJaWElnWVNCamIyeHNaV04wYVc5dUxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiWm5KdmJWSnBaMmgwWFNCVGNHVmphV1o1SUdsMFpYSmhkR2x1WnlCbWNtOXRJSEpwWjJoMElIUnZJR3hsWm5RdVhHNGdLaUJBY21WMGRYSnVjeUI3Um5WdVkzUnBiMjU5SUZKbGRIVnlibk1nZEdobElHNWxkeUJpWVhObElHWjFibU4wYVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZDWVhObFJXRmphQ2hsWVdOb1JuVnVZeXdnWm5KdmJWSnBaMmgwS1NCN1hHNGdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpaGpiMnhzWldOMGFXOXVMQ0JwZEdWeVlYUmxaU2tnZTF4dUlDQWdJSFpoY2lCc1pXNW5kR2dnUFNCamIyeHNaV04wYVc5dUlEOGdaMlYwVEdWdVozUm9LR052Ykd4bFkzUnBiMjRwSURvZ01EdGNiaUFnSUNCcFppQW9JV2x6VEdWdVozUm9LR3hsYm1kMGFDa3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmxZV05vUm5WdVl5aGpiMnhzWldOMGFXOXVMQ0JwZEdWeVlYUmxaU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJwYm1SbGVDQTlJR1p5YjIxU2FXZG9kQ0EvSUd4bGJtZDBhQ0E2SUMweExGeHVJQ0FnSUNBZ0lDQnBkR1Z5WVdKc1pTQTlJSFJ2VDJKcVpXTjBLR052Ykd4bFkzUnBiMjRwTzF4dVhHNGdJQ0FnZDJocGJHVWdLQ2htY205dFVtbG5hSFFnUHlCcGJtUmxlQzB0SURvZ0t5dHBibVJsZUNBOElHeGxibWQwYUNrcElIdGNiaUFnSUNBZ0lHbG1JQ2hwZEdWeVlYUmxaU2hwZEdWeVlXSnNaVnRwYm1SbGVGMHNJR2x1WkdWNExDQnBkR1Z5WVdKc1pTa2dQVDA5SUdaaGJITmxLU0I3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWTI5c2JHVmpkR2x2Ymp0Y2JpQWdmVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmpjbVZoZEdWQ1lYTmxSV0ZqYUR0Y2JpSXNJblpoY2lCMGIwOWlhbVZqZENBOUlISmxjWFZwY21Vb0p5NHZkRzlQWW1wbFkzUW5LVHRjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1ltRnpaU0JtZFc1amRHbHZiaUJtYjNJZ1lGOHVabTl5U1c1Z0lHOXlJR0JmTG1admNrbHVVbWxuYUhSZ0xseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRtY205dFVtbG5hSFJkSUZOd1pXTnBabmtnYVhSbGNtRjBhVzVuSUdaeWIyMGdjbWxuYUhRZ2RHOGdiR1ZtZEM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRHZFc1amRHbHZibjBnVW1WMGRYSnVjeUIwYUdVZ2JtVjNJR0poYzJVZ1puVnVZM1JwYjI0dVhHNGdLaTljYm1aMWJtTjBhVzl1SUdOeVpXRjBaVUpoYzJWR2IzSW9abkp2YlZKcFoyaDBLU0I3WEc0Z0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlodlltcGxZM1FzSUdsMFpYSmhkR1ZsTENCclpYbHpSblZ1WXlrZ2UxeHVJQ0FnSUhaaGNpQnBkR1Z5WVdKc1pTQTlJSFJ2VDJKcVpXTjBLRzlpYW1WamRDa3NYRzRnSUNBZ0lDQWdJSEJ5YjNCeklEMGdhMlY1YzBaMWJtTW9iMkpxWldOMEtTeGNiaUFnSUNBZ0lDQWdiR1Z1WjNSb0lEMGdjSEp2Y0hNdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnSUNCcGJtUmxlQ0E5SUdaeWIyMVNhV2RvZENBL0lHeGxibWQwYUNBNklDMHhPMXh1WEc0Z0lDQWdkMmhwYkdVZ0tDaG1jbTl0VW1sbmFIUWdQeUJwYm1SbGVDMHRJRG9nS3l0cGJtUmxlQ0E4SUd4bGJtZDBhQ2twSUh0Y2JpQWdJQ0FnSUhaaGNpQnJaWGtnUFNCd2NtOXdjMXRwYm1SbGVGMDdYRzRnSUNBZ0lDQnBaaUFvYVhSbGNtRjBaV1VvYVhSbGNtRmliR1ZiYTJWNVhTd2dhMlY1TENCcGRHVnlZV0pzWlNrZ1BUMDlJR1poYkhObEtTQjdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiMkpxWldOME8xeHVJQ0I5TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR055WldGMFpVSmhjMlZHYjNJN1hHNGlMQ0lvWm5WdVkzUnBiMjRnS0dkc2IySmhiQ2w3WEc1MllYSWdZM0psWVhSbFEzUnZjbGR5WVhCd1pYSWdQU0J5WlhGMWFYSmxLQ2N1TDJOeVpXRjBaVU4wYjNKWGNtRndjR1Z5SnlrN1hHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QmhJR1oxYm1OMGFXOXVJSFJvWVhRZ2QzSmhjSE1nWUdaMWJtTmdJR0Z1WkNCcGJuWnZhMlZ6SUdsMElIZHBkR2dnZEdobElHQjBhR2x6WUZ4dUlDb2dZbWx1WkdsdVp5QnZaaUJnZEdocGMwRnlaMkF1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWjFibU1nVkdobElHWjFibU4wYVc5dUlIUnZJR0pwYm1RdVhHNGdLaUJBY0dGeVlXMGdleXA5SUZ0MGFHbHpRWEpuWFNCVWFHVWdZSFJvYVhOZ0lHSnBibVJwYm1jZ2IyWWdZR1oxYm1OZ0xseHVJQ29nUUhKbGRIVnlibk1nZTBaMWJtTjBhVzl1ZlNCU1pYUjFjbTV6SUhSb1pTQnVaWGNnWW05MWJtUWdablZ1WTNScGIyNHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHTnlaV0YwWlVKcGJtUlhjbUZ3Y0dWeUtHWjFibU1zSUhSb2FYTkJjbWNwSUh0Y2JpQWdkbUZ5SUVOMGIzSWdQU0JqY21WaGRHVkRkRzl5VjNKaGNIQmxjaWhtZFc1aktUdGNibHh1SUNCbWRXNWpkR2x2YmlCM2NtRndjR1Z5S0NrZ2UxeHVJQ0FnSUhaaGNpQm1iaUE5SUNoMGFHbHpJQ1ltSUhSb2FYTWdJVDA5SUdkc2IySmhiQ0FtSmlCMGFHbHpJR2x1YzNSaGJtTmxiMllnZDNKaGNIQmxjaWtnUHlCRGRHOXlJRG9nWm5WdVl6dGNiaUFnSUNCeVpYUjFjbTRnWm00dVlYQndiSGtvZEdocGMwRnlaeXdnWVhKbmRXMWxiblJ6S1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnZDNKaGNIQmxjanRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmpjbVZoZEdWQ2FXNWtWM0poY0hCbGNqdGNibHh1ZlNrdVkyRnNiQ2gwYUdsekxIUjVjR1Z2WmlCbmJHOWlZV3dnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnUHlCbmJHOWlZV3dnT2lCMGVYQmxiMllnYzJWc1ppQWhQVDBnWENKMWJtUmxabWx1WldSY0lpQS9JSE5sYkdZZ09pQjBlWEJsYjJZZ2QybHVaRzkzSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUQ4Z2QybHVaRzkzSURvZ2UzMHBYRzR2THlNZ2MyOTFjbU5sVFdGd2NHbHVaMVZTVEQxa1lYUmhPbUZ3Y0d4cFkyRjBhVzl1TDJwemIyNDdZMmhoY25ObGREcDFkR1l0T0R0aVlYTmxOalFzWlhsS01scFlTbnBoVnpsMVNXcHZla3hEU25waU0xWjVXVEpXZWtscWNHSkpiVFYyV2tkV1ptSlhPV3RrVjNoc1kzazVjMkl5VW1oak1tZDBXVEk1ZEdOSFJqQk1NbXgxWkVkV2VXSnRSbk5NTWs1NVdsZEdNRnBWU25CaWJWSllZMjFHZDJOSFZubE1iWEI2U1d3d2MwbHROV2hpVjFaNlNXcHdZbGhUZDJsaVYwWjNZMGRzZFZvelRXbFBhVWszVVZWR1FsRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pKYVhkcFdtMXNjMXBUU1RaSmJXUnNZbTFXZVZsWVVteGFRelZ4WTNsSmMwbHVUblprV0VwcVdsWktkbUl6VVdsUGFVbHBURU5LZW1JelZubFpNbFo2VVRJNWRXUkhWblZrUTBrMlYzbEtNbGxZU1dkWk0wcHNXVmhTYkZFelVuWmpiR1I1V1ZoQ2QxcFlTV2RRVTBKNVdsaEdNV0ZZU214TFEyTjFUREpPZVZwWFJqQmFWVTR3WWpOS1dHTnRSbmRqUjFaNVNubHJOMWhITldOaWFUaHhTMng0ZFVsRGIyZFJNMHBzV1ZoU2JHTjVRbWhKUjFveFltMU9NR0ZYT1hWSlNGSnZXVmhSWjJRelNtaGpTRTFuV1VkYU1XSnRUbWRKUjBaMVdrTkNjR0p1V25aaE1sWjZTVWRzTUVsSVpIQmtSMmRuWkVkb2JFbEhRakJoUjJ4NldVWjRkVWxEYjJkWmJXeDFXa2RzZFZwNVFuWmFhVUpuWkVkb2NHTXdSbmxhTWtGMVdFYzBaMHRzZUhWSlEyOW5VVWhDZVdGWVdtaGtSMVpqWW1sQmNVbEZRbmRaV0Vwb1lsTkNOMUp1Vm5WWk0xSndZakkxT1VsSFdqRmliVTFuVmtkb2JFbEhXakZpYlU0d1lWYzVkVWxJVW5aSlIwcHdZbTFSZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RsZVhBNVNVWjBNR0ZIYkhwUldFcHVXRk5DVldGSFZXZFpTRkp2WVZoT1owbEhTbkJpYlZKd1ltMWpaMkl5V1dkWlIxb3hZbTFPWjB4c2VIVkpRMjluVVVoS2JHUklWbmxpYmsxblpUQmFNV0p0VGpCaFZ6bDFabE5DVTFwWVVqRmpiVFY2U1VoU2IxcFRRblZhV0dObldXMDVNV0p0VVdkYWJsWjFXVE5TY0dJeU5IVllSelJuUzJrNVkySnRXakZpYlU0d1lWYzVkVWxIVG5sYVYwWXdXbFZLY0dKdFVsaGpiVVozWTBkV2VVdEhXakZpYlUxelNVaFNiMkZZVGtKamJXTndTVWgwWTJKcFFXZGtiVVo1U1VWT01HSXpTV2RRVTBKcVkyMVdhR1JIVmtSa1J6bDVWak5LYUdOSVFteGphV2h0WkZjMWFrdFVkR05pYkhoMVNVTkNiV1JYTldwa1IyeDJZbWxDTTJOdFJuZGpSMVo1UzBOcloyVXhlSFZKUTBGblNVaGFhR05wUW0xaWFVRTVTVU5vTUdGSGJIcEpRMWx0U1VoU2IyRllUV2RKVkRBNVNVZGtjMkl5U21oaVEwRnRTbWxDTUdGSGJIcEpSMngxWXpOU2FHSnRUbXhpTWxsblpETkthR05JUW14amFXdG5VSGxDUkdSSE9YbEpSRzluV201V2RWbDZkR05pYVVGblNVTkNlVnBZVWpGamJUUm5XbTAwZFZsWVFuZGlTR3R2WkVkb2NHTXdSbmxhZVhkbldWaEtibVJYTVd4aWJsSjZTMVIwWTJKcFFXZG1WbmgxU1VOQ2VWcFlVakZqYlRSblpETkthR05JUW14amFuUmpZbTR4WTJKc2VIVmlWemxyWkZkNGJFeHRWalJqUnpsNVpFaE5aMUJUUW1wamJWWm9aRWRXUTJGWE5XdFdNMHBvWTBoQ2JHTnFkR05pYVVwa1psRTlQU0lzSW5aaGNpQmlZWE5sUTNKbFlYUmxJRDBnY21WeGRXbHlaU2duTGk5aVlYTmxRM0psWVhSbEp5a3NYRzRnSUNBZ2FYTlBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMaTlzWVc1bkwybHpUMkpxWldOMEp5azdYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoSUdaMWJtTjBhVzl1SUhSb1lYUWdjSEp2WkhWalpYTWdZVzRnYVc1emRHRnVZMlVnYjJZZ1lFTjBiM0pnSUhKbFoyRnlaR3hsYzNNZ2IyWmNiaUFxSUhkb1pYUm9aWElnYVhRZ2QyRnpJR2x1ZG05clpXUWdZWE1nY0dGeWRDQnZaaUJoSUdCdVpYZGdJR1Y0Y0hKbGMzTnBiMjRnYjNJZ1lua2dZR05oYkd4Z0lHOXlJR0JoY0hCc2VXQXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUVOMGIzSWdWR2hsSUdOdmJuTjBjblZqZEc5eUlIUnZJSGR5WVhBdVhHNGdLaUJBY21WMGRYSnVjeUI3Um5WdVkzUnBiMjU5SUZKbGRIVnlibk1nZEdobElHNWxkeUIzY21Gd2NHVmtJR1oxYm1OMGFXOXVMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmpjbVZoZEdWRGRHOXlWM0poY0hCbGNpaERkRzl5S1NCN1hHNGdJSEpsZEhWeWJpQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQXZMeUJWYzJVZ1lTQmdjM2RwZEdOb1lDQnpkR0YwWlcxbGJuUWdkRzhnZDI5eWF5QjNhWFJvSUdOc1lYTnpJR052Ym5OMGNuVmpkRzl5Y3k1Y2JpQWdJQ0F2THlCVFpXVWdhSFIwY0RvdkwyVmpiV0V0YVc1MFpYSnVZWFJwYjI1aGJDNXZjbWN2WldOdFlTMHlOakl2Tmk0d0x5TnpaV010WldOdFlYTmpjbWx3ZEMxbWRXNWpkR2x2YmkxdlltcGxZM1J6TFdOaGJHd3RkR2hwYzJGeVozVnRaVzUwTFdGeVozVnRaVzUwYzJ4cGMzUmNiaUFnSUNBdkx5Qm1iM0lnYlc5eVpTQmtaWFJoYVd4ekxseHVJQ0FnSUhaaGNpQmhjbWR6SUQwZ1lYSm5kVzFsYm5Sek8xeHVJQ0FnSUhOM2FYUmphQ0FvWVhKbmN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lHTmhjMlVnTURvZ2NtVjBkWEp1SUc1bGR5QkRkRzl5TzF4dUlDQWdJQ0FnWTJGelpTQXhPaUJ5WlhSMWNtNGdibVYzSUVOMGIzSW9ZWEpuYzFzd1hTazdYRzRnSUNBZ0lDQmpZWE5sSURJNklISmxkSFZ5YmlCdVpYY2dRM1J2Y2loaGNtZHpXekJkTENCaGNtZHpXekZkS1R0Y2JpQWdJQ0FnSUdOaGMyVWdNem9nY21WMGRYSnVJRzVsZHlCRGRHOXlLR0Z5WjNOYk1GMHNJR0Z5WjNOYk1WMHNJR0Z5WjNOYk1sMHBPMXh1SUNBZ0lDQWdZMkZ6WlNBME9pQnlaWFIxY200Z2JtVjNJRU4wYjNJb1lYSm5jMXN3WFN3Z1lYSm5jMXN4WFN3Z1lYSm5jMXN5WFN3Z1lYSm5jMXN6WFNrN1hHNGdJQ0FnSUNCallYTmxJRFU2SUhKbGRIVnliaUJ1WlhjZ1EzUnZjaWhoY21keld6QmRMQ0JoY21keld6RmRMQ0JoY21keld6SmRMQ0JoY21keld6TmRMQ0JoY21keld6UmRLVHRjYmlBZ0lDQWdJR05oYzJVZ05qb2djbVYwZFhKdUlHNWxkeUJEZEc5eUtHRnlaM05iTUYwc0lHRnlaM05iTVYwc0lHRnlaM05iTWwwc0lHRnlaM05iTTEwc0lHRnlaM05iTkYwc0lHRnlaM05iTlYwcE8xeHVJQ0FnSUNBZ1kyRnpaU0EzT2lCeVpYUjFjbTRnYm1WM0lFTjBiM0lvWVhKbmMxc3dYU3dnWVhKbmMxc3hYU3dnWVhKbmMxc3lYU3dnWVhKbmMxc3pYU3dnWVhKbmMxczBYU3dnWVhKbmMxczFYU3dnWVhKbmMxczJYU2s3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUIwYUdselFtbHVaR2x1WnlBOUlHSmhjMlZEY21WaGRHVW9RM1J2Y2k1d2NtOTBiM1I1Y0dVcExGeHVJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQkRkRzl5TG1Gd2NHeDVLSFJvYVhOQ2FXNWthVzVuTENCaGNtZHpLVHRjYmx4dUlDQWdJQzh2SUUxcGJXbGpJSFJvWlNCamIyNXpkSEoxWTNSdmNpZHpJR0J5WlhSMWNtNWdJR0psYUdGMmFXOXlMbHh1SUNBZ0lDOHZJRk5sWlNCb2RIUndjem92TDJWek5TNW5hWFJvZFdJdWFXOHZJM2d4TXk0eUxqSWdabTl5SUcxdmNtVWdaR1YwWVdsc2N5NWNiaUFnSUNCeVpYUjFjbTRnYVhOUFltcGxZM1FvY21WemRXeDBLU0EvSUhKbGMzVnNkQ0E2SUhSb2FYTkNhVzVrYVc1bk8xeHVJQ0I5TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR055WldGMFpVTjBiM0pYY21Gd2NHVnlPMXh1SWl3aWRtRnlJR0poYzJWRFlXeHNZbUZqYXlBOUlISmxjWFZwY21Vb0p5NHZZbUZ6WlVOaGJHeGlZV05ySnlrc1hHNGdJQ0FnWW1GelpVWnBibVFnUFNCeVpYRjFhWEpsS0NjdUwySmhjMlZHYVc1a0p5a3NYRzRnSUNBZ1ltRnpaVVpwYm1SSmJtUmxlQ0E5SUhKbGNYVnBjbVVvSnk0dlltRnpaVVpwYm1SSmJtUmxlQ2NwTEZ4dUlDQWdJR2x6UVhKeVlYa2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6UVhKeVlYa25LVHRjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1lGOHVabWx1WkdBZ2IzSWdZRjh1Wm1sdVpFeGhjM1JnSUdaMWJtTjBhVzl1TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmxZV05vUm5WdVl5QlVhR1VnWm5WdVkzUnBiMjRnZEc4Z2FYUmxjbUYwWlNCdmRtVnlJR0VnWTI5c2JHVmpkR2x2Ymk1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMlp5YjIxU2FXZG9kRjBnVTNCbFkybG1lU0JwZEdWeVlYUnBibWNnWm5KdmJTQnlhV2RvZENCMGJ5QnNaV1owTGx4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVmU0JTWlhSMWNtNXpJSFJvWlNCdVpYY2dabWx1WkNCbWRXNWpkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxSbWx1WkNobFlXTm9SblZ1WXl3Z1puSnZiVkpwWjJoMEtTQjdYRzRnSUhKbGRIVnliaUJtZFc1amRHbHZiaWhqYjJ4c1pXTjBhVzl1TENCd2NtVmthV05oZEdVc0lIUm9hWE5CY21jcElIdGNiaUFnSUNCd2NtVmthV05oZEdVZ1BTQmlZWE5sUTJGc2JHSmhZMnNvY0hKbFpHbGpZWFJsTENCMGFHbHpRWEpuTENBektUdGNiaUFnSUNCcFppQW9hWE5CY25KaGVTaGpiMnhzWldOMGFXOXVLU2tnZTF4dUlDQWdJQ0FnZG1GeUlHbHVaR1Y0SUQwZ1ltRnpaVVpwYm1SSmJtUmxlQ2hqYjJ4c1pXTjBhVzl1TENCd2NtVmthV05oZEdVc0lHWnliMjFTYVdkb2RDazdYRzRnSUNBZ0lDQnlaWFIxY200Z2FXNWtaWGdnUGlBdE1TQS9JR052Ykd4bFkzUnBiMjViYVc1a1pYaGRJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1ltRnpaVVpwYm1Rb1kyOXNiR1ZqZEdsdmJpd2djSEpsWkdsallYUmxMQ0JsWVdOb1JuVnVZeWs3WEc0Z0lIMDdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ1kzSmxZWFJsUm1sdVpEdGNiaUlzSW5aaGNpQmlhVzVrUTJGc2JHSmhZMnNnUFNCeVpYRjFhWEpsS0NjdUwySnBibVJEWVd4c1ltRmpheWNwTEZ4dUlDQWdJR2x6UVhKeVlYa2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6UVhKeVlYa25LVHRjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1puVnVZM1JwYjI0Z1ptOXlJR0JmTG1admNrVmhZMmhnSUc5eUlHQmZMbVp2Y2tWaFkyaFNhV2RvZEdBdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlJR0Z5Y21GNVJuVnVZeUJVYUdVZ1puVnVZM1JwYjI0Z2RHOGdhWFJsY21GMFpTQnZkbVZ5SUdGdUlHRnljbUY1TGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdaV0ZqYUVaMWJtTWdWR2hsSUdaMWJtTjBhVzl1SUhSdklHbDBaWEpoZEdVZ2IzWmxjaUJoSUdOdmJHeGxZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVjeUI3Um5WdVkzUnBiMjU5SUZKbGRIVnlibk1nZEdobElHNWxkeUJsWVdOb0lHWjFibU4wYVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZHYjNKRllXTm9LR0Z5Y21GNVJuVnVZeXdnWldGamFFWjFibU1wSUh0Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtHTnZiR3hsWTNScGIyNHNJR2wwWlhKaGRHVmxMQ0IwYUdselFYSm5LU0I3WEc0Z0lDQWdjbVYwZFhKdUlDaDBlWEJsYjJZZ2FYUmxjbUYwWldVZ1BUMGdKMloxYm1OMGFXOXVKeUFtSmlCMGFHbHpRWEpuSUQwOVBTQjFibVJsWm1sdVpXUWdKaVlnYVhOQmNuSmhlU2hqYjJ4c1pXTjBhVzl1S1NsY2JpQWdJQ0FnSUQ4Z1lYSnlZWGxHZFc1aktHTnZiR3hsWTNScGIyNHNJR2wwWlhKaGRHVmxLVnh1SUNBZ0lDQWdPaUJsWVdOb1JuVnVZeWhqYjJ4c1pXTjBhVzl1TENCaWFXNWtRMkZzYkdKaFkyc29hWFJsY21GMFpXVXNJSFJvYVhOQmNtY3NJRE1wS1R0Y2JpQWdmVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmpjbVZoZEdWR2IzSkZZV05vTzF4dUlpd2lLR1oxYm1OMGFXOXVJQ2huYkc5aVlXd3BlMXh1ZG1GeUlHRnljbUY1UTI5d2VTQTlJSEpsY1hWcGNtVW9KeTR2WVhKeVlYbERiM0I1Snlrc1hHNGdJQ0FnWTI5dGNHOXpaVUZ5WjNNZ1BTQnlaWEYxYVhKbEtDY3VMMk52YlhCdmMyVkJjbWR6Snlrc1hHNGdJQ0FnWTI5dGNHOXpaVUZ5WjNOU2FXZG9kQ0E5SUhKbGNYVnBjbVVvSnk0dlkyOXRjRzl6WlVGeVozTlNhV2RvZENjcExGeHVJQ0FnSUdOeVpXRjBaVU4wYjNKWGNtRndjR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOWpjbVZoZEdWRGRHOXlWM0poY0hCbGNpY3BMRnh1SUNBZ0lHbHpUR0Y2YVdGaWJHVWdQU0J5WlhGMWFYSmxLQ2N1TDJselRHRjZhV0ZpYkdVbktTeGNiaUFnSUNCeVpXOXlaR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOXlaVzl5WkdWeUp5a3NYRzRnSUNBZ2NtVndiR0ZqWlVodmJHUmxjbk1nUFNCeVpYRjFhWEpsS0NjdUwzSmxjR3hoWTJWSWIyeGtaWEp6Snlrc1hHNGdJQ0FnYzJWMFJHRjBZU0E5SUhKbGNYVnBjbVVvSnk0dmMyVjBSR0YwWVNjcE8xeHVYRzR2S2lvZ1ZYTmxaQ0IwYnlCamIyMXdiM05sSUdKcGRHMWhjMnR6SUdadmNpQjNjbUZ3Y0dWeUlHMWxkR0ZrWVhSaExpQXFMMXh1ZG1GeUlFSkpUa1JmUmt4QlJ5QTlJREVzWEc0Z0lDQWdRa2xPUkY5TFJWbGZSa3hCUnlBOUlESXNYRzRnSUNBZ1ExVlNVbGxmUWs5VlRrUmZSa3hCUnlBOUlEUXNYRzRnSUNBZ1ExVlNVbGxmUmt4QlJ5QTlJRGdzWEc0Z0lDQWdRMVZTVWxsZlVrbEhTRlJmUmt4QlJ5QTlJREUyTEZ4dUlDQWdJRkJCVWxSSlFVeGZSa3hCUnlBOUlETXlMRnh1SUNBZ0lGQkJVbFJKUVV4ZlVrbEhTRlJmUmt4QlJ5QTlJRFkwTEZ4dUlDQWdJRUZTV1Y5R1RFRkhJRDBnTVRJNE8xeHVYRzR2S2lCT1lYUnBkbVVnYldWMGFHOWtJSEpsWm1WeVpXNWpaWE1nWm05eUlIUm9iM05sSUhkcGRHZ2dkR2hsSUhOaGJXVWdibUZ0WlNCaGN5QnZkR2hsY2lCZ2JHOWtZWE5vWUNCdFpYUm9iMlJ6TGlBcUwxeHVkbUZ5SUc1aGRHbDJaVTFoZUNBOUlFMWhkR2d1YldGNE8xeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElIZHlZWEJ6SUdCbWRXNWpZQ0JoYm1RZ2FXNTJiMnRsY3lCcGRDQjNhWFJvSUc5d2RHbHZibUZzSUdCMGFHbHpZRnh1SUNvZ1ltbHVaR2x1WnlCdlppd2djR0Z5ZEdsaGJDQmhjSEJzYVdOaGRHbHZiaXdnWVc1a0lHTjFjbko1YVc1bkxseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmSE4wY21sdVozMGdablZ1WXlCVWFHVWdablZ1WTNScGIyNGdiM0lnYldWMGFHOWtJRzVoYldVZ2RHOGdjbVZtWlhKbGJtTmxMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdKcGRHMWhjMnNnVkdobElHSnBkRzFoYzJzZ2IyWWdabXhoWjNNdUlGTmxaU0JnWTNKbFlYUmxWM0poY0hCbGNtQWdabTl5SUcxdmNtVWdaR1YwWVdsc2N5NWNiaUFxSUVCd1lYSmhiU0I3S24wZ1czUm9hWE5CY21kZElGUm9aU0JnZEdocGMyQWdZbWx1WkdsdVp5QnZaaUJnWm5WdVkyQXVYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmU0JiY0dGeWRHbGhiSE5kSUZSb1pTQmhjbWQxYldWdWRITWdkRzhnY0hKbGNHVnVaQ0IwYnlCMGFHOXpaU0J3Y205MmFXUmxaQ0IwYnlCMGFHVWdibVYzSUdaMWJtTjBhVzl1TGx4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ1cyaHZiR1JsY25OZElGUm9aU0JnY0dGeWRHbGhiSE5nSUhCc1lXTmxhRzlzWkdWeUlHbHVaR1Y0WlhNdVhHNGdLaUJBY0dGeVlXMGdlMEZ5Y21GNWZTQmJjR0Z5ZEdsaGJITlNhV2RvZEYwZ1ZHaGxJR0Z5WjNWdFpXNTBjeUIwYnlCaGNIQmxibVFnZEc4Z2RHaHZjMlVnY0hKdmRtbGtaV1FnZEc4Z2RHaGxJRzVsZHlCbWRXNWpkR2x2Ymk1Y2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlGdG9iMnhrWlhKelVtbG5hSFJkSUZSb1pTQmdjR0Z5ZEdsaGJITlNhV2RvZEdBZ2NHeGhZMlZvYjJ4a1pYSWdhVzVrWlhobGN5NWNiaUFxSUVCd1lYSmhiU0I3UVhKeVlYbDlJRnRoY21kUWIzTmRJRlJvWlNCaGNtZDFiV1Z1ZENCd2IzTnBkR2x2Ym5NZ2IyWWdkR2hsSUc1bGR5Qm1kVzVqZEdsdmJpNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiWVhKNVhTQlVhR1VnWVhKcGRIa2dZMkZ3SUc5bUlHQm1kVzVqWUM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJZWEpwZEhsZElGUm9aU0JoY21sMGVTQnZaaUJnWm5WdVkyQXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1JuVnVZM1JwYjI1OUlGSmxkSFZ5Ym5NZ2RHaGxJRzVsZHlCM2NtRndjR1ZrSUdaMWJtTjBhVzl1TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJqY21WaGRHVkllV0p5YVdSWGNtRndjR1Z5S0daMWJtTXNJR0pwZEcxaGMyc3NJSFJvYVhOQmNtY3NJSEJoY25ScFlXeHpMQ0JvYjJ4a1pYSnpMQ0J3WVhKMGFXRnNjMUpwWjJoMExDQm9iMnhrWlhKelVtbG5hSFFzSUdGeVoxQnZjeXdnWVhKNUxDQmhjbWwwZVNrZ2UxeHVJQ0IyWVhJZ2FYTkJjbmtnUFNCaWFYUnRZWE5ySUNZZ1FWSlpYMFpNUVVjc1hHNGdJQ0FnSUNCcGMwSnBibVFnUFNCaWFYUnRZWE5ySUNZZ1FrbE9SRjlHVEVGSExGeHVJQ0FnSUNBZ2FYTkNhVzVrUzJWNUlEMGdZbWwwYldGemF5QW1JRUpKVGtSZlMwVlpYMFpNUVVjc1hHNGdJQ0FnSUNCcGMwTjFjbko1SUQwZ1ltbDBiV0Z6YXlBbUlFTlZVbEpaWDBaTVFVY3NYRzRnSUNBZ0lDQnBjME4xY25KNVFtOTFibVFnUFNCaWFYUnRZWE5ySUNZZ1ExVlNVbGxmUWs5VlRrUmZSa3hCUnl4Y2JpQWdJQ0FnSUdselEzVnljbmxTYVdkb2RDQTlJR0pwZEcxaGMyc2dKaUJEVlZKU1dWOVNTVWRJVkY5R1RFRkhMRnh1SUNBZ0lDQWdRM1J2Y2lBOUlHbHpRbWx1WkV0bGVTQS9JSFZ1WkdWbWFXNWxaQ0E2SUdOeVpXRjBaVU4wYjNKWGNtRndjR1Z5S0daMWJtTXBPMXh1WEc0Z0lHWjFibU4wYVc5dUlIZHlZWEJ3WlhJb0tTQjdYRzRnSUNBZ0x5OGdRWFp2YVdRZ1lHRnlaM1Z0Wlc1MGMyQWdiMkpxWldOMElIVnpaU0JrYVhOeGRXRnNhV1o1YVc1bklHOXdkR2x0YVhwaGRHbHZibk1nWW5sY2JpQWdJQ0F2THlCamIyNTJaWEowYVc1bklHbDBJSFJ2SUdGdUlHRnljbUY1SUdKbFptOXlaU0J3Y205MmFXUnBibWNnYVhRZ2RHOGdiM1JvWlhJZ1puVnVZM1JwYjI1ekxseHVJQ0FnSUhaaGNpQnNaVzVuZEdnZ1BTQmhjbWQxYldWdWRITXViR1Z1WjNSb0xGeHVJQ0FnSUNBZ0lDQnBibVJsZUNBOUlHeGxibWQwYUN4Y2JpQWdJQ0FnSUNBZ1lYSm5jeUE5SUVGeWNtRjVLR3hsYm1kMGFDazdYRzVjYmlBZ0lDQjNhR2xzWlNBb2FXNWtaWGd0TFNrZ2UxeHVJQ0FnSUNBZ1lYSm5jMXRwYm1SbGVGMGdQU0JoY21kMWJXVnVkSE5iYVc1a1pYaGRPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9jR0Z5ZEdsaGJITXBJSHRjYmlBZ0lDQWdJR0Z5WjNNZ1BTQmpiMjF3YjNObFFYSm5jeWhoY21kekxDQndZWEowYVdGc2N5d2dhRzlzWkdWeWN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHdZWEowYVdGc2MxSnBaMmgwS1NCN1hHNGdJQ0FnSUNCaGNtZHpJRDBnWTI5dGNHOXpaVUZ5WjNOU2FXZG9kQ2hoY21kekxDQndZWEowYVdGc2MxSnBaMmgwTENCb2IyeGtaWEp6VW1sbmFIUXBPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9hWE5EZFhKeWVTQjhmQ0JwYzBOMWNuSjVVbWxuYUhRcElIdGNiaUFnSUNBZ0lIWmhjaUJ3YkdGalpXaHZiR1JsY2lBOUlIZHlZWEJ3WlhJdWNHeGhZMlZvYjJ4a1pYSXNYRzRnSUNBZ0lDQWdJQ0FnWVhKbmMwaHZiR1JsY25NZ1BTQnlaWEJzWVdObFNHOXNaR1Z5Y3loaGNtZHpMQ0J3YkdGalpXaHZiR1JsY2lrN1hHNWNiaUFnSUNBZ0lHeGxibWQwYUNBdFBTQmhjbWR6U0c5c1pHVnljeTVzWlc1bmRHZzdYRzRnSUNBZ0lDQnBaaUFvYkdWdVozUm9JRHdnWVhKcGRIa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNWxkMEZ5WjFCdmN5QTlJR0Z5WjFCdmN5QS9JR0Z5Y21GNVEyOXdlU2hoY21kUWIzTXBJRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdibVYzUVhKcGRIa2dQU0J1WVhScGRtVk5ZWGdvWVhKcGRIa2dMU0JzWlc1bmRHZ3NJREFwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdibVYzYzBodmJHUmxjbk1nUFNCcGMwTjFjbko1SUQ4Z1lYSm5jMGh2YkdSbGNuTWdPaUIxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnVaWGRJYjJ4a1pYSnpVbWxuYUhRZ1BTQnBjME4xY25KNUlEOGdkVzVrWldacGJtVmtJRG9nWVhKbmMwaHZiR1JsY25Nc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhkUVlYSjBhV0ZzY3lBOUlHbHpRM1Z5Y25rZ1B5QmhjbWR6SURvZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WM1VHRnlkR2xoYkhOU2FXZG9kQ0E5SUdselEzVnljbmtnUHlCMWJtUmxabWx1WldRZ09pQmhjbWR6TzF4dVhHNGdJQ0FnSUNBZ0lHSnBkRzFoYzJzZ2ZEMGdLR2x6UTNWeWNua2dQeUJRUVZKVVNVRk1YMFpNUVVjZ09pQlFRVkpVU1VGTVgxSkpSMGhVWDBaTVFVY3BPMXh1SUNBZ0lDQWdJQ0JpYVhSdFlYTnJJQ1k5SUg0b2FYTkRkWEp5ZVNBL0lGQkJVbFJKUVV4ZlVrbEhTRlJmUmt4QlJ5QTZJRkJCVWxSSlFVeGZSa3hCUnlrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGcGMwTjFjbko1UW05MWJtUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCaWFYUnRZWE5ySUNZOUlING9Ra2xPUkY5R1RFRkhJSHdnUWtsT1JGOUxSVmxmUmt4QlJ5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZG1GeUlHNWxkMFJoZEdFZ1BTQmJablZ1WXl3Z1ltbDBiV0Z6YXl3Z2RHaHBjMEZ5Wnl3Z2JtVjNVR0Z5ZEdsaGJITXNJRzVsZDNOSWIyeGtaWEp6TENCdVpYZFFZWEowYVdGc2MxSnBaMmgwTENCdVpYZEliMnhrWlhKelVtbG5hSFFzSUc1bGQwRnlaMUJ2Y3l3Z1lYSjVMQ0J1WlhkQmNtbDBlVjBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQmpjbVZoZEdWSWVXSnlhV1JYY21Gd2NHVnlMbUZ3Y0d4NUtIVnVaR1ZtYVc1bFpDd2dibVYzUkdGMFlTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHpUR0Y2YVdGaWJHVW9ablZ1WXlrcElIdGNiaUFnSUNBZ0lDQWdJQ0J6WlhSRVlYUmhLSEpsYzNWc2RDd2dibVYzUkdGMFlTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WemRXeDBMbkJzWVdObGFHOXNaR1Z5SUQwZ2NHeGhZMlZvYjJ4a1pYSTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSFpoY2lCMGFHbHpRbWx1WkdsdVp5QTlJR2x6UW1sdVpDQS9JSFJvYVhOQmNtY2dPaUIwYUdsekxGeHVJQ0FnSUNBZ0lDQm1iaUE5SUdselFtbHVaRXRsZVNBL0lIUm9hWE5DYVc1a2FXNW5XMloxYm1OZElEb2dablZ1WXp0Y2JseHVJQ0FnSUdsbUlDaGhjbWRRYjNNcElIdGNiaUFnSUNBZ0lHRnlaM01nUFNCeVpXOXlaR1Z5S0dGeVozTXNJR0Z5WjFCdmN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHBjMEZ5ZVNBbUppQmhjbmtnUENCaGNtZHpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdZWEpuY3k1c1pXNW5kR2dnUFNCaGNuazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDBhR2x6SUNZbUlIUm9hWE1nSVQwOUlHZHNiMkpoYkNBbUppQjBhR2x6SUdsdWMzUmhibU5sYjJZZ2QzSmhjSEJsY2lrZ2UxeHVJQ0FnSUNBZ1ptNGdQU0JEZEc5eUlIeDhJR055WldGMFpVTjBiM0pYY21Gd2NHVnlLR1oxYm1NcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdabTR1WVhCd2JIa29kR2hwYzBKcGJtUnBibWNzSUdGeVozTXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjNjbUZ3Y0dWeU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdOeVpXRjBaVWg1WW5KcFpGZHlZWEJ3WlhJN1hHNWNibjBwTG1OaGJHd29kR2hwY3l4MGVYQmxiMllnWjJ4dlltRnNJQ0U5UFNCY0luVnVaR1ZtYVc1bFpGd2lJRDhnWjJ4dlltRnNJRG9nZEhsd1pXOW1JSE5sYkdZZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJZ1B5QnpaV3htSURvZ2RIbHdaVzltSUhkcGJtUnZkeUFoUFQwZ1hDSjFibVJsWm1sdVpXUmNJaUEvSUhkcGJtUnZkeUE2SUh0OUtWeHVMeThqSUhOdmRYSmpaVTFoY0hCcGJtZFZVa3c5WkdGMFlUcGhjSEJzYVdOaGRHbHZiaTlxYzI5dU8yTm9ZWEp6WlhRNmRYUm1MVGc3WW1GelpUWTBMR1Y1U2pKYVdFcDZZVmM1ZFVscWIzcE1RMHA2WWpOV2VWa3lWbnBKYW5CaVNXMDFkbHBIVm1aaVZ6bHJaRmQ0YkdONU9YTmlNbEpvWXpKbmRGa3lPWFJqUjBZd1RESnNkV1JIVm5saWJVWnpUREpPZVZwWFJqQmFWV2cxV1c1S2NGcEdaSGxaV0VKM1dsaEpkV0Z1VFdsWVUzZHBZbTFHZEZwWVRXbFBiSFJrVEVOS2RGbFlRbmRoVnpWdVkzbEpOa2xxZEVKUlZVWkNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pKYVhkcFdtMXNjMXBUU1RaSmJXUnNZbTFXZVZsWVVteGFRelZ4WTNsSmMwbHVUblprV0VwcVdsWktkbUl6VVdsUGFVbHBURU5LZW1JelZubFpNbFo2VVRJNWRXUkhWblZrUTBrMlYzbEtNbGxZU1dkWldFcDVXVmhzUkdJelFqVkpSREJuWTIxV2VHUlhiSGxhVTJkdVRHazVhR051U21obFZVNTJZMGhyYmt0VGVHTmlhVUZuU1VOQ2FtSXlNWGRpTTA1c1VWaEtibU41UVRsSlNFcHNZMWhXY0dOdFZXOUtlVFIyV1RJNWRHTkhPWHBhVlVaNVdqTk5ia3RUZUdOaWFVRm5TVU5DYW1JeU1YZGlNMDVzVVZoS2JtTXhTbkJhTW1nd1NVUXdaMk50Vm5oa1YyeDVXbE5uYmt4cE9XcGlNakYzWWpOT2JGRllTbTVqTVVwd1dqSm9NRXA1YTNOWVJ6Um5TVU5CWjFrelNteFpXRkpzVVROU2RtTnNaSGxaV0VKM1dsaEpaMUJUUW5sYVdFWXhZVmhLYkV0RFkzVk1NazU1V2xkR01GcFZUakJpTTBwWVkyMUdkMk5IVm5sS2VXdHpXRWMwWjBsRFFXZGhXRTVOV1Zod2NGbFhTbk5hVTBFNVNVaEtiR05ZVm5CamJWVnZTbmswZG1GWVRrMVpXSEJ3V1ZkS2MxcFRZM0JNUm5oMVNVTkJaMGxJU214aU0wcHJXbGhKWjFCVFFubGFXRVl4WVZoS2JFdERZM1ZNTTBwc1lqTkthMXBZU1c1TFUzaGpZbWxCWjBsRFFubGFXRUp6V1ZkT2JGTkhPWE5hUjFaNVkzbEJPVWxJU214aldGWndZMjFWYjBwNU5IWmpiVlozWWtkR2FscFZhSFppUjFKc1kyNU5ia3RUZUdOaWFVRm5TVU5DZWxwWVVrVlpXRkpvU1VRd1oyTnRWbmhrVjJ4NVdsTm5ia3hwT1hwYVdGSkZXVmhTYUVwNWF6ZFlSelZqWW1rNGNVdHBRbFpqTWxaclNVaFNka2xIVG5aaVdFSjJZekpWWjFsdGJEQmlWMFo2WVROTloxcHRPWGxKU0dSNVdWaENkMXBZU1dkaVYxWXdXVmRTYUdSSFJYVkpRMjkyV0VjMU1sbFlTV2RSYTJ4UFVrWTVSMVJGUmtoSlJEQm5UVk40WTJKcFFXZEpRMEpEVTFVMVJWZ3dkRVpYVmpsSFZFVkdTRWxFTUdkTmFYaGpZbWxCWjBsRFFrUldWa3BUVjFZNVExUXhWazlTUmpsSFZFVkdTRWxFTUdkT1EzaGpZbWxCWjBsRFFrUldWa3BUVjFZNVIxUkZSa2hKUkRCblQwTjRZMkpwUVdkSlEwSkVWbFpLVTFkV09WTlRWV1JKVmtZNVIxUkZSa2hKUkRCblRWUlpjMWhITkdkSlEwRm5WVVZHVTFaRmJFSlVSamxIVkVWR1NFbEVNR2ROZWtseldFYzBaMGxEUVdkVlJVWlRWa1ZzUWxSR09WTlRWV1JKVmtZNVIxUkZSa2hKUkRCblRtcFJjMWhITkdkSlEwRm5VVlpLV2xnd1drMVJWV05uVUZOQmVFMXFaemRZUnpWalltazRjVWxGTldoa1Iyd3lXbE5DZEZwWVVtOWlNbEZuWTIxV2JWcFlTbXhpYlU1c1kzbENiV0l6U1dka1IyaDJZekpWWjJReWJEQmhRMEl3WVVkVloyTXlSblJhVTBKMVdWY3hiRWxIUm5wSlJ6a3dZVWRXZVVsSFFuTmlNbEpvWXpKb1owbEhNV3hrUjJoMldraE5kVWxEYjNaWVJ6VXlXVmhKWjJKdFJqQmhXRnBzVkZkR05FbEVNR2RVVjBZd1lVTTFkRmxZWnpkWVJ6VmpZbWs0Y1V0c2VIVkpRMjluVVROS2JGbFlVbXhqZVVKb1NVZGFNV0p0VGpCaFZ6bDFTVWhTYjFsWVVXZGtNMHBvWTBoTloxbEhXakZpYlU1blNVZEdkVnBEUW5CaWJscDJZVEpXZWtsSGJEQkpTR1J3WkVkbloySXpRakJoVnpsMVdWZDNaMWxJVW05aFdFNW5XRWMwWjB0cFFtbGhWelZyWVZjMWJrbEhPVzFNUTBKM1dWaEtNR0ZYUm5OSlIwWjNZMGQ0Y0ZreVJqQmhWemwxVEVOQ2FHSnRVV2RaTTFaNVkyNXNjR0p0WTNWWVJ6Um5TMng0ZFVsRGIyZFJTRUo1WVZoYWFHUkhWbU5pYVVGeFNVVkNkMWxZU21oaVUwSTNVbTVXZFZrelVuQmlNalU0WXpOU2VXRlhOVzVtVTBKdFpGYzFha2xHVW05YVUwSnRaRmMxYW1SSGJIWmlhVUoyWTJsQ2RGcFlVbTlpTWxGblltMUdkRnBUUWpCaWVVSjVXbGRhYkdOdFZuVlpNbFYxV0VjMFowdHBRa0ZqUjBaNVdWY3daMlV5TlRGaVYwcHNZMjR3WjFsdGJEQmlWMFo2WVhsQ1ZXRkhWV2RaYld3d1lsZEdlbUY1UW5aYWFVSnRZa2RHYm1ONU5HZFZNbFpzU1VkQ2FtTnRWbWhrUjFaWVkyMUdkMk5IVm5sWlEwSnRZak5KWjJKWE9YbGFVMEpyV2xoU2FHRlhlSHBNYkhoMVNVTnZaMUZJUW1oamJVWjBTVWh6Y1daVFFtSmtSMmh3WXpCR2VWb3hNR2RXUjJoc1NVZENNR0ZIYkhwWlEwSnBZVmMxYTJGWE5XNUpSemx0U1VkQ2JXUlhOV3BaUXpWalltbEJjVWxGUW5kWldFcG9ZbE5DTjFGWVNubFpXR3c1U1VaMGQxbFlTakJoVjBaell6RXdaMVpIYUd4SlIwWjVXak5XZEZwWE5UQmplVUl3WW5sQ2QyTnRWbmRhVnpWclNVaFNka2xJVW05aU0wNXNTVWhDZVdJelduQmFSMVpyU1VoU2RrbElVbTlhVTBKMVdsaGpaMXB1Vm5WWk0xSndZakkwZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RsTUVaNVkyMUdOV1pUUW1KaFJ6bHpXa2RXZVdNeE1HZFdSMmhzU1VkQ2QxbFlTakJoVjBaell6SkJaMk5IZUdoWk1sWnZZako0YTFwWVNXZGhWelZyV2xob2JHTjVOV05pYVVGeFNVVkNkMWxZU21oaVUwSTNVVmhLZVZsWWJEbEpSblIzV1ZoS01HRlhSbk5qTVVwd1dqSm9NRmhUUWxWaFIxVm5XVmhLYm1SWE1XeGlibEo2U1VoU2RrbEhSbmRqUjFaMVdrTkNNR0o1UWpCaFJ6bDZXbE5DZDJOdE9USmhWMUpzV2tOQ01HSjVRakJoUjFWblltMVdNMGxIV2pGaWJVNHdZVmM1ZFV4c2VIVkpRMjluVVVoQ2FHTnRSblJKU0hSQ1kyNUthR1ZZTUdkWE1taDJZa2RTYkdOdVRsTmhWMlJ2WkVZd1oxWkhhR3hKUjBKM1dWaEtNR0ZYUm5Oak1VcHdXakpvTUZsRFFuZGlSMFpxV2xkb2RtSkhVbXhqYVVKd1ltMVNiR1ZIVm5wTWJIaDFTVU52WjFGSVFtaGpiVVowU1VoMFFtTnVTbWhsV0RCblZ6SkdlVm94UW5aak1UQm5Wa2RvYkVsSFJubGFNMVowV2xjMU1FbElRblpqTW13d1lWYzVkV041UW5aYWFVSXdZVWRWWjJKdFZqTkpSMW94WW0xT01HRlhPWFZNYkhoMVNVTnZaMUZJUW1oamJVWjBTVWgwZFdSWE1XbGFXRW81U1VaMGFHTnViR1JKUmxKdldsTkNhR050YkRCbFUwSnFXVmhCWjJJeVdXZFpSMW94WW0xT1oweHNlSFZKUTI5blVVaENhR050Um5SSlNIUjFaRmN4YVZwWVNqbEpSblJvWTIxc01HVldNR2RXUjJoc1NVZEdlV0ZZVWpWSlJ6bHRTVWRDYldSWE5XcFpRelZqWW1sQmNVbEZRbmxhV0ZJeFkyMDFla2xJZEVka1Z6VnFaRWRzZG1KdU1HZFZiVll3WkZoS2RXTjVRakJoUjFWblltMVdNMGxJWkhsWldFSjNXbGRSWjFwdVZuVlpNMUp3WWpJMGRWaEhOR2RMYVRsalltMWFNV0p0VGpCaFZ6bDFTVWRPZVZwWFJqQmFWV2cxV1c1S2NGcEdaSGxaV0VKM1dsaEpiMXB1Vm5WWmVYZG5XVzFzTUdKWFJucGhlWGRuWkVkb2NHTXdSbmxhZVhkblkwZEdlV1JIYkdoaVNFMXpTVWRvZG1KSFVteGpiazF6U1VoQ2FHTnVVbkJaVjNoNlZXMXNibUZJVVhOSlIyaDJZa2RTYkdOdVRsTmhWMlJ2WkVOM1oxbFlTbTVWUnpsNlRFTkNhR051YTNOSlIwWjVZVmhTTlV0VFFqZFlSelJuU1VoYWFHTnBRbkJqTUVaNVpWTkJPVWxIU25Ca1J6Rm9Zekp6WjBwcFFrSlZiR3htVW10NFFsSjVlR05pYVVGblNVTkJaMGxIYkhwUmJXeDFXa05CT1VsSFNuQmtSekZvWXpKelowcHBRa05UVlRWRldEQmFUVkZWWTNOWVJ6Um5TVU5CWjBsRFFuQmpNRXB3WW0xU1RGcFlhMmRRVTBKcFlWaFNkRmxZVG5KSlExbG5VV3RzVDFKR09VeFNWbXhtVW10NFFsSjVlR05pYVVGblNVTkJaMGxIYkhwUk0xWjVZMjVyWjFCVFFtbGhXRkowV1ZoT2NrbERXV2RSTVZaVFZXeHNabEpyZUVKU2VYaGpZbWxCWjBsRFFXZEpSMng2VVROV2VXTnViRU5pTTFaMVdrTkJPVWxIU25Ca1J6Rm9Zekp6WjBwcFFrUldWa3BUVjFZNVExUXhWazlTUmpsSFZFVkdTRXhHZUhWSlEwRm5TVU5CWjJGWVRrUmtXRXA1WlZaS2NGb3lhREJKUkRCbldXMXNNR0pYUm5waGVVRnRTVVZPVmxWc1NscFlNVXBLVWpCb1ZWZ3dXazFSVldOeldFYzBaMGxEUVdkSlEwSkVaRWM1ZVVsRU1HZGhXRTVEWVZjMWExTXlWalZKUkRoblpGYzFhMXBYV25CaWJWWnJTVVJ2WjFrelNteFpXRkpzVVROU2RtTnNaSGxaV0VKM1dsaEpiMXB1Vm5WWmVXczNXRWMxWTJKcFFXZGFibFoxV1ROU2NHSXlOR2RrTTBwb1kwaENiR05wWjNCSlNIUmpZbWxCWjBsRFFYWk1lVUpDWkcwNWNGcERRbWRaV0VwdVpGY3hiR0p1VW5wWlEwSjJXVzF3YkZrelVXZGtXRTVzU1VkU2NHTXpSakZaVjNod1dtNXNjR0p0WTJkaU0wSXdZVmN4Y0dWdFJqQmhWemwxWTNsQ2FXVldlSFZKUTBGblNVTTRka2xIVG5aaWJscHNZMjVTY0dKdFkyZGhXRkZuWkVjNFoxbFhOR2RaV0VwNVdWaHJaMWx0Vm0xaU0wcHNTVWhDZVdJelduQmFSMngxV25sQ2NHUkRRakJpZVVKMlpFZG9iR05wUW0xa1Z6VnFaRWRzZG1KdVRYVllSelJuU1VOQloyUnRSbmxKUjNoc1ltMWtNR0ZEUVRsSlIwWjVXak5XZEZwWE5UQmplVFZ6V2xjMWJtUkhaM05ZUnpSblNVTkJaMGxEUVdkSlIyeDFXa2RXTkVsRU1HZGlSMVoxV2pOU2IweEdlSFZKUTBGblNVTkJaMGxEUW1oamJXUjZTVVF3WjFGWVNubFpXR3R2WWtkV2RWb3pVbTlMVkhSallteDRkVWxEUVdkSlNHUnZZVmQ0YkVsRGFIQmliVkpzWlVNd2RFdFRRamRZUnpSblNVTkJaMGxEUW1oamJXUjZWekpzZFZwSFZqUllVMEU1U1VkR2VWb3pWblJhVnpVd1l6RjBjR0p0VW14bFJqQTNXRWMwWjBsRFFXZG1WbmgxU1VOQlowbEhiRzFKUTJoM1dWaEtNR0ZYUm5OamVXdG5aVEY0ZFVsRFFXZEpRMEZuV1ZoS2JtTjVRVGxKUjA1MllsaENkbU15VmtKamJXUjZTMGRHZVZvelRYTkpTRUpvWTI1U2NGbFhlSHBNUTBKdllqSjRhMXBZU25wTFZIUmpZbWxCWjBsRFFqbFlSelJuU1VOQloyRlhXV2RMU0VKb1kyNVNjRmxYZUhwVmJXeHVZVWhSY0VsSWRHTmlhVUZuU1VOQlowbEhSbmxhTTAxblVGTkNhbUl5TVhkaU0wNXNVVmhLYm1NeFNuQmFNbWd3UzBkR2VWb3pUWE5KU0VKb1kyNVNjRmxYZUhwVmJXeHVZVWhSYzBsSGFIWmlSMUpzWTI1T1UyRlhaRzlrUTJzM1dFYzBaMGxEUVdkbVZuaDFTVU5CWjBsSGJHMUpRMmh3WXpCT01XTnVTalZKU0hnNFNVZHNlbEV6Vm5samJteFRZVmRrYjJSRGEyZGxNWGgxU1VOQlowbERRV2RrYlVaNVNVaENjMWxYVG14aFJ6bHpXa2RXZVVsRU1HZGtNMHBvWTBoQ2JHTnBOWGRpUjBacVdsZG9kbUpIVW14amFYaGpZbWxCWjBsRFFXZEpRMEZuU1VOQ2FHTnRaSHBUUnpseldrZFdlV041UVRsSlNFcHNZMGQ0YUZreVZrbGlNbmhyV2xoS2VrdEhSbmxhTTAxelNVaENjMWxYVG14aFJ6bHpXa2RXZVV0VWRHTmliSGgxU1VOQlowbERRV2RpUjFaMVdqTlNiMGxETURsSlIwWjVXak5PU1dJeWVHdGFXRXA2VEcxNGJHSnRaREJoUkhSalltbEJaMGxEUVdkSlIyeHRTVU5vYzFwWE5XNWtSMmRuVUVOQ2FHTnRiREJsVTJ0blpURjRkVWxEUVdkSlEwRm5TVU5DTWxsWVNXZGliVll6VVZoS2JsVkhPWHBKUkRCbldWaEtibFZIT1hwSlJEaG5XVmhLZVZsWWJFUmlNMEkxUzBkR2VWb3hRblpqZVd0blQybENNV0p0VW14YWJXeDFXbGRSYzFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBKMVdsaGtRbU50YkRCbFUwRTVTVWMxYUdSSGJESmFWVEZvWlVOb2FHTnRiREJsVTBGMFNVZDRiR0p0WkRCaFEzZG5UVU5yYzFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBKMVdsaGtlbE5IT1hOYVIxWjVZM2xCT1VsSGJIcFJNMVo1WTI1cloxQjVRbWhqYldSNlUwYzVjMXBIVm5samVVRTJTVWhXZFZwSFZtMWhWelZzV2tONFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlJ6VnNaREJvZG1KSFVteGpiazVUWVZka2IyUkRRVGxKUjJ4NlVUTldlV051YTJkUWVVSXhZbTFTYkZwdGJIVmFWMUZuVDJsQ2FHTnRaSHBUUnpseldrZFdlV041ZUdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VjMWJHUXhRbWhqYmxKd1dWZDRla2xFTUdkaFdFNUVaRmhLZVdWVFFTOUpSMFo1V2pOTlowOXBRakZpYlZKc1dtMXNkVnBYVVhOWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ2RWcFlaRkZaV0Vvd1lWZEdjMk14U25CYU1tZ3dTVVF3WjJGWVRrUmtXRXA1WlZOQkwwbElWblZhUjFadFlWYzFiRnBEUVRaSlIwWjVXak5OTjFoSE5XTmlhVUZuU1VOQlowbERRV2RaYld3d1lsZEdlbUY1UWpoUVUwRnZZVmhPUkdSWVNubGxVMEV2U1VaQ1FsVnNVa3BSVlhobVVtdDRRbEo1UVRaSlJrSkNWV3hTU2xGVmVHWlZhMnhJVTBaU1psSnJlRUpTZVdzM1dFYzBaMGxEUVdkSlEwRm5TVWRLY0dSSE1XaGpNbk5uU21vd1oyWnBhSEJqTUU0eFkyNUtOVWxFT0dkVlJVWlRWa1ZzUWxSR09WTlRWV1JKVmtZNVIxUkZSa2hKUkc5blZVVkdVMVpGYkVKVVJqbEhWRVZHU0V0VWRHTmliSGgxU1VOQlowbERRV2RKUTBKd1dtbEJiMGxYYkhwUk0xWjVZMjVzUTJJelZuVmFRMnRuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxIU25Ca1J6Rm9Zekp6WjBwcU1HZG1hV2hEVTFVMVJWZ3dXazFSVldOblprTkNRMU5WTlVWWU1IUkdWMVk1UjFSRlJraExWSFJqWW1sQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5TVU5DTWxsWVNXZGliVll6VWtkR01GbFRRVGxKUm5SdFpGYzFha3hEUW1saFdGSjBXVmhPY2t4RFFqQmhSMng2VVZoS2JreERRblZhV0dSUldWaEtNR0ZYUm5OamVYZG5ZbTFXTTJNd2FIWmlSMUpzWTI1TmMwbEhOV3hrTVVKb1kyNVNjRmxYZUhwVmJXeHVZVWhSYzBsSE5XeGtNR2gyWWtkU2JHTnVUbE5oVjJSdlpFTjNaMkp0VmpOUldFcHVWVWM1ZWt4RFFtaGpibXR6U1VjMWJHUXdSbmxoV0ZJMVdGTjRZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpTRXBzWXpOV2MyUkRRVGxKUjA1NVdsZEdNRnBWYURWWmJrcHdXa1prZVZsWVFuZGFXRWwxV1ZoQ2QySklhMjlrVnpWcldsZGFjR0p0Vm10TVEwSjFXbGhrUlZsWVVtaExWSFJqWW14NGRVbERRV2RKUTBGblNVTkNjRnBwUVc5aFdFNU5XVmh3Y0ZsWFNuTmFVMmh0WkZjMWFrdFRhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVWhPYkdSRlVtaGtSMFZ2WTIxV2VtUlhlREJNUTBKMVdsaGtSVmxZVW1oTFZIUmpZbWxCWjBsRFFXZEpRMEZuWmxaNGRVbERRV2RKUTBGblNVTkNlVnBZVGpGaVNGRjFZMGQ0YUZreVZtOWlNbmhyV2xoSloxQlRRbmRpUjBacVdsZG9kbUpIVW14amFuUmpZbWxCWjBsRFFXZEpRMEZuWTIxV01HUllTblZKU0Vwc1l6TldjMlJFZEdOaWFVRm5TVU5CWjBsSU1XTmlhVUZuU1VOQ09WaEhOR2RKUTBGblpHMUdlVWxJVW05aFdFNURZVmMxYTJGWE5XNUpSREJuWVZoT1EyRlhOV3RKUkRoblpFZG9jR013Um5sYWVVRTJTVWhTYjJGWVRYTllSelJuU1VOQlowbERRV2RKUjFwMVNVUXdaMkZZVGtOaFZ6VnJVekpXTlVsRU9HZGtSMmh3WXpCS2NHSnRVbkJpYldSaVdtNVdkVmt4TUdkUGFVSnRaRmMxYWs4eGVIVllSelJuU1VOQloyRlhXV2RMUjBaNVdqRkNkbU41YTJkbE1YaDFTVU5CWjBsRFFXZFpXRXB1WTNsQk9VbElTbXhpTTBwcldsaEpiMWxZU201amVYZG5XVmhLYmxWSE9YcExWSFJqWW1sQlowbERRamxZUnpSblNVTkJaMkZYV1dkTFIyeDZVVmhLTlVsRFdXMUpSMFo1WlZOQk9FbEhSbmxhTTAxMVlrZFdkVm96VW05TFUwSTNXRWMwWjBsRFFXZEpRMEpvWTIxa2VreHRlR3hpYldRd1lVTkJPVWxIUm5sbFZIUmpZbWxCWjBsRFFqbFlSelJuU1VOQloyRlhXV2RMU0ZKdllWaE5aMHBwV1dka1IyaHdZM2xCYUZCVU1HZGFNbmgyV1cxR2MwbERXVzFKU0ZKdllWaE5aMkZYTlhwa1IwWjFXVEpXZGxwcFFqTmpiVVozWTBkV2VVdFRRamRZUnpSblNVTkJaMGxEUW0xaWFVRTVTVVZPTUdJelNXZG1TSGRuV1ROS2JGbFlVbXhSTTFKMlkyeGtlVmxZUW5kYVdFbHZXbTVXZFZsNWF6ZFlSelJuU1VOQloyWldlSFZKUTBGblNVaEtiR1JJVm5saWFVSnRZbWsxYUdOSVFuTmxVMmd3WVVkc2VsRnRiSFZhUjJ4MVdubDNaMWxZU201amVXczNXRWMwWjBsSU1XTmlhVUZuWTIxV01HUllTblZKU0dSNVdWaENkMXBZU1RkWVJ6VTVXRWMxWTJKdE1YWmFTRlp6V2xNMWJHVklRblpqYmxKNlNVUXdaMWt6U214WldGSnNVMGhzYVdOdGJHdFdNMHBvWTBoQ2JHTnFkR05pYVVwa1psRTlQU0lzSWlobWRXNWpkR2x2YmlBb1oyeHZZbUZzS1h0Y2JuWmhjaUJqY21WaGRHVkRkRzl5VjNKaGNIQmxjaUE5SUhKbGNYVnBjbVVvSnk0dlkzSmxZWFJsUTNSdmNsZHlZWEJ3WlhJbktUdGNibHh1THlvcUlGVnpaV1FnZEc4Z1kyOXRjRzl6WlNCaWFYUnRZWE5yY3lCbWIzSWdkM0poY0hCbGNpQnRaWFJoWkdGMFlTNGdLaTljYm5aaGNpQkNTVTVFWDBaTVFVY2dQU0F4TzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQm1kVzVqZEdsdmJpQjBhR0YwSUhkeVlYQnpJR0JtZFc1allDQmhibVFnYVc1MmIydGxjeUJwZENCM2FYUm9JSFJvWlNCdmNIUnBiMjVoYkNCZ2RHaHBjMkJjYmlBcUlHSnBibVJwYm1jZ2IyWWdZSFJvYVhOQmNtZGdJR0Z1WkNCMGFHVWdZSEJoY25ScFlXeHpZQ0J3Y21Wd1pXNWtaV1FnZEc4Z2RHaHZjMlVnY0hKdmRtbGtaV1FnZEc5Y2JpQXFJSFJvWlNCM2NtRndjR1Z5TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQm1kVzVqSUZSb1pTQm1kVzVqZEdsdmJpQjBieUJ3WVhKMGFXRnNiSGtnWVhCd2JIa2dZWEpuZFcxbGJuUnpJSFJ2TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHSnBkRzFoYzJzZ1ZHaGxJR0pwZEcxaGMyc2diMllnWm14aFozTXVJRk5sWlNCZ1kzSmxZWFJsVjNKaGNIQmxjbUFnWm05eUlHMXZjbVVnWkdWMFlXbHNjeTVjYmlBcUlFQndZWEpoYlNCN0tuMGdkR2hwYzBGeVp5QlVhR1VnWUhSb2FYTmdJR0pwYm1ScGJtY2diMllnWUdaMWJtTmdMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnY0dGeWRHbGhiSE1nVkdobElHRnlaM1Z0Wlc1MGN5QjBieUJ3Y21Wd1pXNWtJSFJ2SUhSb2IzTmxJSEJ5YjNacFpHVmtJSFJ2SUhSb1pTQnVaWGNnWm5WdVkzUnBiMjR1WEc0Z0tpQkFjbVYwZFhKdWN5QjdSblZ1WTNScGIyNTlJRkpsZEhWeWJuTWdkR2hsSUc1bGR5QmliM1Z1WkNCbWRXNWpkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxVR0Z5ZEdsaGJGZHlZWEJ3WlhJb1puVnVZeXdnWW1sMGJXRnpheXdnZEdocGMwRnlaeXdnY0dGeWRHbGhiSE1wSUh0Y2JpQWdkbUZ5SUdselFtbHVaQ0E5SUdKcGRHMWhjMnNnSmlCQ1NVNUVYMFpNUVVjc1hHNGdJQ0FnSUNCRGRHOXlJRDBnWTNKbFlYUmxRM1J2Y2xkeVlYQndaWElvWm5WdVl5azdYRzVjYmlBZ1puVnVZM1JwYjI0Z2QzSmhjSEJsY2lncElIdGNiaUFnSUNBdkx5QkJkbTlwWkNCZ1lYSm5kVzFsYm5SellDQnZZbXBsWTNRZ2RYTmxJR1JwYzNGMVlXeHBabmxwYm1jZ2IzQjBhVzFwZW1GMGFXOXVjeUJpZVZ4dUlDQWdJQzh2SUdOdmJuWmxjblJwYm1jZ2FYUWdkRzhnWVc0Z1lYSnlZWGtnWW1WbWIzSmxJSEJ5YjNacFpHbHVaeUJwZENCZ1puVnVZMkF1WEc0Z0lDQWdkbUZ5SUdGeVozTkpibVJsZUNBOUlDMHhMRnh1SUNBZ0lDQWdJQ0JoY21kelRHVnVaM1JvSUQwZ1lYSm5kVzFsYm5SekxteGxibWQwYUN4Y2JpQWdJQ0FnSUNBZ2JHVm1kRWx1WkdWNElEMGdMVEVzWEc0Z0lDQWdJQ0FnSUd4bFpuUk1aVzVuZEdnZ1BTQndZWEowYVdGc2N5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lHRnlaM01nUFNCQmNuSmhlU2hzWldaMFRHVnVaM1JvSUNzZ1lYSm5jMHhsYm1kMGFDazdYRzVjYmlBZ0lDQjNhR2xzWlNBb0t5dHNaV1owU1c1a1pYZ2dQQ0JzWldaMFRHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCaGNtZHpXMnhsWm5SSmJtUmxlRjBnUFNCd1lYSjBhV0ZzYzF0c1pXWjBTVzVrWlhoZE8xeHVJQ0FnSUgxY2JpQWdJQ0IzYUdsc1pTQW9ZWEpuYzB4bGJtZDBhQzB0S1NCN1hHNGdJQ0FnSUNCaGNtZHpXMnhsWm5SSmJtUmxlQ3NyWFNBOUlHRnlaM1Z0Wlc1MGMxc3JLMkZ5WjNOSmJtUmxlRjA3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUJtYmlBOUlDaDBhR2x6SUNZbUlIUm9hWE1nSVQwOUlHZHNiMkpoYkNBbUppQjBhR2x6SUdsdWMzUmhibU5sYjJZZ2QzSmhjSEJsY2lrZ1B5QkRkRzl5SURvZ1puVnVZenRjYmlBZ0lDQnlaWFIxY200Z1ptNHVZWEJ3Ykhrb2FYTkNhVzVrSUQ4Z2RHaHBjMEZ5WnlBNklIUm9hWE1zSUdGeVozTXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjNjbUZ3Y0dWeU8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdOeVpXRjBaVkJoY25ScFlXeFhjbUZ3Y0dWeU8xeHVYRzU5S1M1allXeHNLSFJvYVhNc2RIbHdaVzltSUdkc2IySmhiQ0FoUFQwZ1hDSjFibVJsWm1sdVpXUmNJaUEvSUdkc2IySmhiQ0E2SUhSNWNHVnZaaUJ6Wld4bUlDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUlEOGdjMlZzWmlBNklIUjVjR1Z2WmlCM2FXNWtiM2NnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnUHlCM2FXNWtiM2NnT2lCN2ZTbGNiaTh2SXlCemIzVnlZMlZOWVhCd2FXNW5WVkpNUFdSaGRHRTZZWEJ3YkdsallYUnBiMjR2YW5OdmJqdGphR0Z5YzJWME9uVjBaaTA0TzJKaGMyVTJOQ3hsZVVveVdsaEtlbUZYT1hWSmFtOTZURU5LZW1JelZubFpNbFo2U1dwd1lrbHROWFphUjFabVlsYzVhMlJYZUd4amVUbHpZakpTYUdNeVozUlpNamwwWTBkR01Fd3liSFZrUjFaNVltMUdjMHd5VG5sYVYwWXdXbFpDYUdOdVVuQlpWM2hZWTIxR2QyTkhWbmxNYlhCNlNXd3djMGx0TldoaVYxWjZTV3B3WWxoVGQybGlWMFozWTBkc2RWb3pUV2xQYVVrM1VWVkdRbEZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Ra2xwZDJsYWJXeHpXbE5KTmtsdFpHeGliVlo1V1ZoU2JGcEROWEZqZVVselNXNU9kbVJZU21wYVZrcDJZak5SYVU5cFNXbE1RMHA2WWpOV2VWa3lWbnBSTWpsMVpFZFdkV1JEU1RaWGVVb3lXVmhKWjFrelNteFpXRkpzVVROU2RtTnNaSGxaV0VKM1dsaEpaMUJUUW5sYVdFWXhZVmhLYkV0RFkzVk1NazU1V2xkR01GcFZUakJpTTBwWVkyMUdkMk5IVm5sS2VXczNXRWMxWTJKcE9IRkxhVUpXWXpKV2EwbElVblpKUjA1MllsaENkbU15VldkWmJXd3dZbGRHZW1FelRXZGFiVGw1U1Voa2VWbFlRbmRhV0VsbllsZFdNRmxYVW1oa1IwVjFTVU52ZGxoSE5USlpXRWxuVVd0c1QxSkdPVWRVUlVaSVNVUXdaMDFVZEdOaWJIaDFUSGx2Y1ZoSE5HZExhVUpFWTIxV2FHUkhWbnBKUjBWbldtNVdkVmt6VW5CaU1qUm5aRWRvYUdSRFFqTmpiVVozWTNsQ1oxcHVWblZaTWtGbldWYzFhMGxIYkhWa2JUbHlXbGhOWjJGWVVXZGtNbXd3WVVOQ01HRkhWV2RpTTBJd1lWYzVkVmxYZDJkWlNGSnZZVmhPWjFoSE5HZExhVUpwWVZjMWEyRlhOVzVKUnpsdFNVZENNR0ZIYkhwUldFcHVXVU5DYUdKdFVXZGtSMmhzU1VkQ2QxbFlTakJoVjBaell6SkJaMk5JU214alIxWjFXa2RXYTBsSVVuWkpTRkp2WWpOT2JFbElRbmxpTTFwd1drZFdhMGxJVW5aWVJ6Um5TMmxDTUdGSFZXZGtNMHBvWTBoQ2JHTnBOV05pYVVGeFdFYzBaMHRwUWtGalNFcHdaRzFHTUZwV2VIVkpRMjluVVVoQ2FHTnRSblJKU0hSSFpGYzFhbVJIYkhaaWJqQm5XbTVXZFZsNVFsVmhSMVZuV201V2RWa3pVbkJpTWpSblpFYzRaMk5IUm5sa1IyeG9Za2Q0TlVsSFJuZGpSM2cxU1VkR2VWb3pWblJhVnpVd1kzbENNR0o1TldOaWFVRnhTVVZDZDFsWVNtaGlVMEkzWW01V2RGbHRWbmxtVTBKcFlWaFNkRmxZVG5KSlJsSnZXbE5DYVdGWVVuUlpXRTV5U1VjNWJVbEhXbk5aVjJSNlRHbENWRnBYVldkWlIwNTVXbGRHTUZwV1pIbFpXRUozV2xoS1owbEhXblpqYVVKMFlqTktiRWxIVW14a1IwWndZa2hOZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RsZVhBNVNVaFNiMkZZVGtKamJXTm5Wa2RvYkVsSFFqQmhSMng2V1VOQ2FXRlhOV3RoVnpWdVNVYzViVWxIUW0xa1Z6VnFXVU0xWTJKcFFYRkpSVUozV1ZoS2FHSlRRamRSV0VwNVdWaHNPVWxJUW1oamJsSndXVmQ0ZWtsR1VtOWFVMEpvWTIxa01XSlhWblZrU0UxblpFYzRaMk5JU214alIxWjFXa05DTUdKNVFqQmhSemw2V2xOQ2QyTnRPVEpoVjFKc1drTkNNR0o1UWpCaFIxVm5ZbTFXTTBsSFdqRmliVTR3WVZjNWRVeHNlSFZKUTI5blVVaEtiR1JJVm5saWJrMW5aVEJhTVdKdFRqQmhWemwxWmxOQ1UxcFlVakZqYlRWNlNVaFNiMXBUUW5WYVdHTm5XVzA1TVdKdFVXZGFibFoxV1ROU2NHSXlOSFZZUnpSblMyazVZMkp0V2pGaWJVNHdZVmM1ZFVsSFRubGFWMFl3V2xaQ2FHTnVVbkJaVjNoWVkyMUdkMk5IVm5sTFIxb3hZbTFOYzBsSFNuQmtSekZvWXpKemMwbElVbTloV0U1Q1kyMWpjMGxJUW1oamJsSndXVmQ0ZWt0VFFqZFlSelJuU1VoYWFHTnBRbkJqTUVwd1ltMVJaMUJUUW1saFdGSjBXVmhPY2tsRFdXZFJhMnhQVWtZNVIxUkZSa2hNUm5oMVNVTkJaMGxEUVdkUk0xSjJZMmxCT1VsSFRubGFWMFl3V2xWT01HSXpTbGhqYlVaM1kwZFdlVXRIV2pGaWJVMXdUekY0ZFZoSE5HZEpSMW94WW0xT01HRlhPWFZKU0dSNVdWaENkMXBZU1c5TFUwSTNXRWMwWjBsRFFXZE1lVGhuVVZoYWRtRlhVV2RaUjBaNVdqTldkRnBYTlRCak1rRm5ZakpLY1ZwWFRqQkpTRlo2V2xOQ2EyRllUbmhrVjBaellWZGFOV0ZYTlc1SlJ6bDNaRWRzZEdGWWNHaGtSMngyWW01TloxbHViR05pYVVGblNVTkJka3g1UW1waU1qVXlXbGhLTUdGWE5XNUpSMnd3U1VoU2RrbEhSblZKUjBaNVkyMUdOVWxIU214YWJUbDVXbE5DZDJOdE9USmhWMUp3WW0xaloyRllVV2RaUjFveFltMU9aMHhzZUhWSlEwRm5TVWhhYUdOcFFtaGpiV1I2VTFjMWExcFlaMmRRVTBGMFRWTjRZMkpwUVdkSlEwRm5TVU5CWjFsWVNtNWpNSGhzWW0xa01HRkRRVGxKUjBaNVdqTldkRnBYTlRCamVUVnpXbGMxYm1SSFozTllSelJuU1VOQlowbERRV2RKUjNoc1dtNVNTbUp0VW14bFEwRTVTVU13ZUV4R2VIVkpRMEZuU1VOQlowbERRbk5hVjFvd1ZFZFdkVm96VW05SlJEQm5ZMGRHZVdSSGJHaGlTRTExWWtkV2RWb3pVbTlNUm5oMVNVTkJaMGxEUVdkSlEwSm9ZMjFrZWtsRU1HZFJXRXA1V1ZocmIySkhWbTFrUlhoc1ltMWtNR0ZEUVhKSlIwWjVXak5PVFZwWE5XNWtSMmR3VHpGNGRWaEhOR2RKUTBGblpESm9jR0pIVldkTFEzTnlZa2RXYldSRmJIVmFSMVkwU1VSM1oySkhWbTFrUlhoc1ltMWtNR0ZEYTJkbE1YaDFTVU5CWjBsRFFXZFpXRXB1WXpGMGMxcFhXakJUVnpWcldsaG9aRWxFTUdkalIwWjVaRWRzYUdKSVRtSmlSMVp0WkVWc2RWcEhWalJZVkhSalltbEJaMGxEUWpsWVJ6Um5TVU5CWjJReWFIQmlSMVZuUzBkR2VWb3pUazFhVnpWdVpFZG5kRXhUYTJkbE1YaDFTVU5CWjBsRFFXZFpXRXB1WXpGMGMxcFhXakJUVnpWcldsaG5ja3N4TUdkUVUwSm9ZMjFrTVdKWFZuVmtTRTVpUzNsMGFHTnRaSHBUVnpWcldsaG9aRTh4ZUhWSlEwRm5TVWd4WTJKcFFXZEpRMEl5V1ZoSloxcHROR2RRVTBGdlpFZG9jR041UVcxS2FVSXdZVWRzZWtsRFJUbFFVMEp1WWtjNWFWbFhkMmRLYVZsblpFZG9jR041UW5CaWJrNHdXVmMxYWxwWE9XMUpTR1I1V1ZoQ2QxcFlTWEJKUkRoblVUTlNkbU5wUVRaSlIxb3hZbTFOTjFoSE5HZEpRMEZuWTIxV01HUllTblZKUjFwMVRHMUdkMk5IZURWTFIyeDZVVzFzZFZwRFFTOUpTRkp2WVZoT1FtTnRZMmRQYVVJd1lVZHNla3hEUW1oamJXUjZTMVIwWTJKcFFXZG1WbmgxU1VOQ2VWcFlVakZqYlRSblpETkthR05JUW14amFuUmpZbTR4WTJKc2VIVmlWemxyWkZkNGJFeHRWalJqUnpsNVpFaE5aMUJUUW1wamJWWm9aRWRXVVZsWVNqQmhWMFp6VmpOS2FHTklRbXhqYW5SalltbEtaR1pSUFQwaUxDSjJZWElnWW1GelpWTmxkRVJoZEdFZ1BTQnlaWEYxYVhKbEtDY3VMMkpoYzJWVFpYUkVZWFJoSnlrc1hHNGdJQ0FnWTNKbFlYUmxRbWx1WkZkeVlYQndaWElnUFNCeVpYRjFhWEpsS0NjdUwyTnlaV0YwWlVKcGJtUlhjbUZ3Y0dWeUp5a3NYRzRnSUNBZ1kzSmxZWFJsU0hsaWNtbGtWM0poY0hCbGNpQTlJSEpsY1hWcGNtVW9KeTR2WTNKbFlYUmxTSGxpY21sa1YzSmhjSEJsY2ljcExGeHVJQ0FnSUdOeVpXRjBaVkJoY25ScFlXeFhjbUZ3Y0dWeUlEMGdjbVZ4ZFdseVpTZ25MaTlqY21WaGRHVlFZWEowYVdGc1YzSmhjSEJsY2ljcExGeHVJQ0FnSUdkbGRFUmhkR0VnUFNCeVpYRjFhWEpsS0NjdUwyZGxkRVJoZEdFbktTeGNiaUFnSUNCdFpYSm5aVVJoZEdFZ1BTQnlaWEYxYVhKbEtDY3VMMjFsY21kbFJHRjBZU2NwTEZ4dUlDQWdJSE5sZEVSaGRHRWdQU0J5WlhGMWFYSmxLQ2N1TDNObGRFUmhkR0VuS1R0Y2JseHVMeW9xSUZWelpXUWdkRzhnWTI5dGNHOXpaU0JpYVhSdFlYTnJjeUJtYjNJZ2QzSmhjSEJsY2lCdFpYUmhaR0YwWVM0Z0tpOWNiblpoY2lCQ1NVNUVYMFpNUVVjZ1BTQXhMRnh1SUNBZ0lFSkpUa1JmUzBWWlgwWk1RVWNnUFNBeUxGeHVJQ0FnSUZCQlVsUkpRVXhmUmt4QlJ5QTlJRE15TEZ4dUlDQWdJRkJCVWxSSlFVeGZVa2xIU0ZSZlJreEJSeUE5SURZME8xeHVYRzR2S2lvZ1ZYTmxaQ0JoY3lCMGFHVWdZRlI1Y0dWRmNuSnZjbUFnYldWemMyRm5aU0JtYjNJZ1hDSkdkVzVqZEdsdmJuTmNJaUJ0WlhSb2IyUnpMaUFxTDF4dWRtRnlJRVpWVGtOZlJWSlNUMUpmVkVWWVZDQTlJQ2RGZUhCbFkzUmxaQ0JoSUdaMWJtTjBhVzl1Snp0Y2JseHVMeW9nVG1GMGFYWmxJRzFsZEdodlpDQnlaV1psY21WdVkyVnpJR1p2Y2lCMGFHOXpaU0IzYVhSb0lIUm9aU0J6WVcxbElHNWhiV1VnWVhNZ2IzUm9aWElnWUd4dlpHRnphR0FnYldWMGFHOWtjeTRnS2k5Y2JuWmhjaUJ1WVhScGRtVk5ZWGdnUFNCTllYUm9MbTFoZUR0Y2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdablZ1WTNScGIyNGdkR2hoZENCbGFYUm9aWElnWTNWeWNtbGxjeUJ2Y2lCcGJuWnZhMlZ6SUdCbWRXNWpZQ0IzYVhSb0lHOXdkR2x2Ym1Gc1hHNGdLaUJnZEdocGMyQWdZbWx1WkdsdVp5QmhibVFnY0dGeWRHbGhiR3g1SUdGd2NHeHBaV1FnWVhKbmRXMWxiblJ6TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZITjBjbWx1WjMwZ1puVnVZeUJVYUdVZ1puVnVZM1JwYjI0Z2IzSWdiV1YwYUc5a0lHNWhiV1VnZEc4Z2NtVm1aWEpsYm1ObExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR0pwZEcxaGMyc2dWR2hsSUdKcGRHMWhjMnNnYjJZZ1pteGhaM011WEc0Z0tpQWdWR2hsSUdKcGRHMWhjMnNnYldGNUlHSmxJR052YlhCdmMyVmtJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2dabXhoWjNNNlhHNGdLaUFnSUNBZ01TQXRJR0JmTG1KcGJtUmdYRzRnS2lBZ0lDQWdNaUF0SUdCZkxtSnBibVJMWlhsZ1hHNGdLaUFnSUNBZ05DQXRJR0JmTG1OMWNuSjVZQ0J2Y2lCZ1h5NWpkWEp5ZVZKcFoyaDBZQ0J2WmlCaElHSnZkVzVrSUdaMWJtTjBhVzl1WEc0Z0tpQWdJQ0FnT0NBdElHQmZMbU4xY25KNVlGeHVJQ29nSUNBZ01UWWdMU0JnWHk1amRYSnllVkpwWjJoMFlGeHVJQ29nSUNBZ016SWdMU0JnWHk1d1lYSjBhV0ZzWUZ4dUlDb2dJQ0FnTmpRZ0xTQmdYeTV3WVhKMGFXRnNVbWxuYUhSZ1hHNGdLaUFnSURFeU9DQXRJR0JmTG5KbFlYSm5ZRnh1SUNvZ0lDQXlOVFlnTFNCZ1h5NWhjbmxnWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJRnQwYUdselFYSm5YU0JVYUdVZ1lIUm9hWE5nSUdKcGJtUnBibWNnYjJZZ1lHWjFibU5nTGx4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ1czQmhjblJwWVd4elhTQlVhR1VnWVhKbmRXMWxiblJ6SUhSdklHSmxJSEJoY25ScFlXeHNlU0JoY0hCc2FXVmtMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnVzJodmJHUmxjbk5kSUZSb1pTQmdjR0Z5ZEdsaGJITmdJSEJzWVdObGFHOXNaR1Z5SUdsdVpHVjRaWE11WEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCYllYSm5VRzl6WFNCVWFHVWdZWEpuZFcxbGJuUWdjRzl6YVhScGIyNXpJRzltSUhSb1pTQnVaWGNnWm5WdVkzUnBiMjR1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1cyRnllVjBnVkdobElHRnlhWFI1SUdOaGNDQnZaaUJnWm5WdVkyQXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJGeWFYUjVYU0JVYUdVZ1lYSnBkSGtnYjJZZ1lHWjFibU5nTGx4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVmU0JTWlhSMWNtNXpJSFJvWlNCdVpYY2dkM0poY0hCbFpDQm1kVzVqZEdsdmJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVjNKaGNIQmxjaWhtZFc1akxDQmlhWFJ0WVhOckxDQjBhR2x6UVhKbkxDQndZWEowYVdGc2N5d2dhRzlzWkdWeWN5d2dZWEpuVUc5ekxDQmhjbmtzSUdGeWFYUjVLU0I3WEc0Z0lIWmhjaUJwYzBKcGJtUkxaWGtnUFNCaWFYUnRZWE5ySUNZZ1FrbE9SRjlMUlZsZlJreEJSenRjYmlBZ2FXWWdLQ0ZwYzBKcGJtUkxaWGtnSmlZZ2RIbHdaVzltSUdaMWJtTWdJVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCVWVYQmxSWEp5YjNJb1JsVk9RMTlGVWxKUFVsOVVSVmhVS1R0Y2JpQWdmVnh1SUNCMllYSWdiR1Z1WjNSb0lEMGdjR0Z5ZEdsaGJITWdQeUJ3WVhKMGFXRnNjeTVzWlc1bmRHZ2dPaUF3TzF4dUlDQnBaaUFvSVd4bGJtZDBhQ2tnZTF4dUlDQWdJR0pwZEcxaGMyc2dKajBnZmloUVFWSlVTVUZNWDBaTVFVY2dmQ0JRUVZKVVNVRk1YMUpKUjBoVVgwWk1RVWNwTzF4dUlDQWdJSEJoY25ScFlXeHpJRDBnYUc5c1pHVnljeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVnh1SUNCc1pXNW5kR2dnTFQwZ0tHaHZiR1JsY25NZ1B5Qm9iMnhrWlhKekxteGxibWQwYUNBNklEQXBPMXh1SUNCcFppQW9ZbWwwYldGemF5QW1JRkJCVWxSSlFVeGZVa2xIU0ZSZlJreEJSeWtnZTF4dUlDQWdJSFpoY2lCd1lYSjBhV0ZzYzFKcFoyaDBJRDBnY0dGeWRHbGhiSE1zWEc0Z0lDQWdJQ0FnSUdodmJHUmxjbk5TYVdkb2RDQTlJR2h2YkdSbGNuTTdYRzVjYmlBZ0lDQndZWEowYVdGc2N5QTlJR2h2YkdSbGNuTWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lIMWNiaUFnZG1GeUlHUmhkR0VnUFNCcGMwSnBibVJMWlhrZ1B5QjFibVJsWm1sdVpXUWdPaUJuWlhSRVlYUmhLR1oxYm1NcExGeHVJQ0FnSUNBZ2JtVjNSR0YwWVNBOUlGdG1kVzVqTENCaWFYUnRZWE5yTENCMGFHbHpRWEpuTENCd1lYSjBhV0ZzY3l3Z2FHOXNaR1Z5Y3l3Z2NHRnlkR2xoYkhOU2FXZG9kQ3dnYUc5c1pHVnljMUpwWjJoMExDQmhjbWRRYjNNc0lHRnllU3dnWVhKcGRIbGRPMXh1WEc0Z0lHbG1JQ2hrWVhSaEtTQjdYRzRnSUNBZ2JXVnlaMlZFWVhSaEtHNWxkMFJoZEdFc0lHUmhkR0VwTzF4dUlDQWdJR0pwZEcxaGMyc2dQU0J1WlhkRVlYUmhXekZkTzF4dUlDQWdJR0Z5YVhSNUlEMGdibVYzUkdGMFlWczVYVHRjYmlBZ2ZWeHVJQ0J1WlhkRVlYUmhXemxkSUQwZ1lYSnBkSGtnUFQwZ2JuVnNiRnh1SUNBZ0lEOGdLR2x6UW1sdVpFdGxlU0EvSURBZ09pQm1kVzVqTG14bGJtZDBhQ2xjYmlBZ0lDQTZJQ2h1WVhScGRtVk5ZWGdvWVhKcGRIa2dMU0JzWlc1bmRHZ3NJREFwSUh4OElEQXBPMXh1WEc0Z0lHbG1JQ2hpYVhSdFlYTnJJRDA5SUVKSlRrUmZSa3hCUnlrZ2UxeHVJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQmpjbVZoZEdWQ2FXNWtWM0poY0hCbGNpaHVaWGRFWVhSaFd6QmRMQ0J1WlhkRVlYUmhXekpkS1R0Y2JpQWdmU0JsYkhObElHbG1JQ2dvWW1sMGJXRnpheUE5UFNCUVFWSlVTVUZNWDBaTVFVY2dmSHdnWW1sMGJXRnpheUE5UFNBb1FrbE9SRjlHVEVGSElId2dVRUZTVkVsQlRGOUdURUZIS1NrZ0ppWWdJVzVsZDBSaGRHRmJORjB1YkdWdVozUm9LU0I3WEc0Z0lDQWdjbVZ6ZFd4MElEMGdZM0psWVhSbFVHRnlkR2xoYkZkeVlYQndaWEl1WVhCd2JIa29kVzVrWldacGJtVmtMQ0J1WlhkRVlYUmhLVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhOMWJIUWdQU0JqY21WaGRHVkllV0p5YVdSWGNtRndjR1Z5TG1Gd2NHeDVLSFZ1WkdWbWFXNWxaQ3dnYm1WM1JHRjBZU2s3WEc0Z0lIMWNiaUFnZG1GeUlITmxkSFJsY2lBOUlHUmhkR0VnUHlCaVlYTmxVMlYwUkdGMFlTQTZJSE5sZEVSaGRHRTdYRzRnSUhKbGRIVnliaUJ6WlhSMFpYSW9jbVZ6ZFd4MExDQnVaWGRFWVhSaEtUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCamNtVmhkR1ZYY21Gd2NHVnlPMXh1SWl3aWRtRnlJR0Z5Y21GNVUyOXRaU0E5SUhKbGNYVnBjbVVvSnk0dllYSnlZWGxUYjIxbEp5azdYRzVjYmk4cUtseHVJQ29nUVNCemNHVmphV0ZzYVhwbFpDQjJaWEp6YVc5dUlHOW1JR0JpWVhObFNYTkZjWFZoYkVSbFpYQmdJR1p2Y2lCaGNuSmhlWE1nZDJsMGFDQnpkWEJ3YjNKMElHWnZjbHh1SUNvZ2NHRnlkR2xoYkNCa1pXVndJR052YlhCaGNtbHpiMjV6TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCaGNuSmhlU0JVYUdVZ1lYSnlZWGtnZEc4Z1kyOXRjR0Z5WlM1Y2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlHOTBhR1Z5SUZSb1pTQnZkR2hsY2lCaGNuSmhlU0IwYnlCamIyMXdZWEpsTGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdaWEYxWVd4R2RXNWpJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QmtaWFJsY20xcGJtVWdaWEYxYVhaaGJHVnVkSE1nYjJZZ2RtRnNkV1Z6TGx4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdXMk4xYzNSdmJXbDZaWEpkSUZSb1pTQm1kVzVqZEdsdmJpQjBieUJqZFhOMGIyMXBlbVVnWTI5dGNHRnlhVzVuSUdGeWNtRjVjeTVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cybHpURzl2YzJWZElGTndaV05wWm5rZ2NHVnlabTl5YldsdVp5QndZWEowYVdGc0lHTnZiWEJoY21semIyNXpMbHh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnVzNOMFlXTnJRVjBnVkhKaFkydHpJSFJ5WVhabGNuTmxaQ0JnZG1Gc2RXVmdJRzlpYW1WamRITXVYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVmU0JiYzNSaFkydENYU0JVY21GamEzTWdkSEpoZG1WeWMyVmtJR0J2ZEdobGNtQWdiMkpxWldOMGN5NWNiaUFxSUVCeVpYUjFjbTV6SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCMGFHVWdZWEp5WVhseklHRnlaU0JsY1hWcGRtRnNaVzUwTENCbGJITmxJR0JtWVd4elpXQXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHVnhkV0ZzUVhKeVlYbHpLR0Z5Y21GNUxDQnZkR2hsY2l3Z1pYRjFZV3hHZFc1akxDQmpkWE4wYjIxcGVtVnlMQ0JwYzB4dmIzTmxMQ0J6ZEdGamEwRXNJSE4wWVdOclFpa2dlMXh1SUNCMllYSWdhVzVrWlhnZ1BTQXRNU3hjYmlBZ0lDQWdJR0Z5Y2t4bGJtZDBhQ0E5SUdGeWNtRjVMbXhsYm1kMGFDeGNiaUFnSUNBZ0lHOTBhRXhsYm1kMGFDQTlJRzkwYUdWeUxteGxibWQwYUR0Y2JseHVJQ0JwWmlBb1lYSnlUR1Z1WjNSb0lDRTlJRzkwYUV4bGJtZDBhQ0FtSmlBaEtHbHpURzl2YzJVZ0ppWWdiM1JvVEdWdVozUm9JRDRnWVhKeVRHVnVaM1JvS1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dUlDQXZMeUJKWjI1dmNtVWdibTl1TFdsdVpHVjRJSEJ5YjNCbGNuUnBaWE11WEc0Z0lIZG9hV3hsSUNncksybHVaR1Y0SUR3Z1lYSnlUR1Z1WjNSb0tTQjdYRzRnSUNBZ2RtRnlJR0Z5Y2xaaGJIVmxJRDBnWVhKeVlYbGJhVzVrWlhoZExGeHVJQ0FnSUNBZ0lDQnZkR2hXWVd4MVpTQTlJRzkwYUdWeVcybHVaR1Y0WFN4Y2JpQWdJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1kzVnpkRzl0YVhwbGNpQS9JR04xYzNSdmJXbDZaWElvYVhOTWIyOXpaU0EvSUc5MGFGWmhiSFZsSURvZ1lYSnlWbUZzZFdVc0lHbHpURzl2YzJVZ1B5QmhjbkpXWVd4MVpTQTZJRzkwYUZaaGJIVmxMQ0JwYm1SbGVDa2dPaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JwWmlBb2NtVnpkV3gwSUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJR2xtSUNoeVpYTjFiSFFwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dklGSmxZM1Z5YzJsMlpXeDVJR052YlhCaGNtVWdZWEp5WVhseklDaHpkWE5qWlhCMGFXSnNaU0IwYnlCallXeHNJSE4wWVdOcklHeHBiV2wwY3lrdVhHNGdJQ0FnYVdZZ0tHbHpURzl2YzJVcElIdGNiaUFnSUNBZ0lHbG1JQ2doWVhKeVlYbFRiMjFsS0c5MGFHVnlMQ0JtZFc1amRHbHZiaWh2ZEdoV1lXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHRnljbFpoYkhWbElEMDlQU0J2ZEdoV1lXeDFaU0I4ZkNCbGNYVmhiRVoxYm1Nb1lYSnlWbUZzZFdVc0lHOTBhRlpoYkhWbExDQmpkWE4wYjIxcGVtVnlMQ0JwYzB4dmIzTmxMQ0J6ZEdGamEwRXNJSE4wWVdOclFpazdYRzRnSUNBZ0lDQWdJQ0FnZlNrcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvSVNoaGNuSldZV3gxWlNBOVBUMGdiM1JvVm1Gc2RXVWdmSHdnWlhGMVlXeEdkVzVqS0dGeWNsWmhiSFZsTENCdmRHaFdZV3gxWlN3Z1kzVnpkRzl0YVhwbGNpd2dhWE5NYjI5elpTd2djM1JoWTJ0QkxDQnpkR0ZqYTBJcEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JsY1hWaGJFRnljbUY1Y3p0Y2JpSXNJaThxS2lCZ1QySnFaV04wSTNSdlUzUnlhVzVuWUNCeVpYTjFiSFFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCaWIyOXNWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbkxGeHVJQ0FnSUdSaGRHVlVZV2NnUFNBblcyOWlhbVZqZENCRVlYUmxYU2NzWEc0Z0lDQWdaWEp5YjNKVVlXY2dQU0FuVzI5aWFtVmpkQ0JGY25KdmNsMG5MRnh1SUNBZ0lHNTFiV0psY2xSaFp5QTlJQ2RiYjJKcVpXTjBJRTUxYldKbGNsMG5MRnh1SUNBZ0lISmxaMlY0Y0ZSaFp5QTlJQ2RiYjJKcVpXTjBJRkpsWjBWNGNGMG5MRnh1SUNBZ0lITjBjbWx1WjFSaFp5QTlJQ2RiYjJKcVpXTjBJRk4wY21sdVoxMG5PMXh1WEc0dktpcGNiaUFxSUVFZ2MzQmxZMmxoYkdsNlpXUWdkbVZ5YzJsdmJpQnZaaUJnWW1GelpVbHpSWEYxWVd4RVpXVndZQ0JtYjNJZ1kyOXRjR0Z5YVc1bklHOWlhbVZqZEhNZ2IyWmNiaUFxSUhSb1pTQnpZVzFsSUdCMGIxTjBjbWx1WjFSaFoyQXVYRzRnS2x4dUlDb2dLaXBPYjNSbE9pb3FJRlJvYVhNZ1puVnVZM1JwYjI0Z2IyNXNlU0J6ZFhCd2IzSjBjeUJqYjIxd1lYSnBibWNnZG1Gc2RXVnpJSGRwZEdnZ2RHRm5jeUJ2Wmx4dUlDb2dZRUp2YjJ4bFlXNWdMQ0JnUkdGMFpXQXNJR0JGY25KdmNtQXNJR0JPZFcxaVpYSmdMQ0JnVW1WblJYaHdZQ3dnYjNJZ1lGTjBjbWx1WjJBdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZZbXBsWTNRZ1ZHaGxJRzlpYW1WamRDQjBieUJqYjIxd1lYSmxMbHh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5MGFHVnlJRlJvWlNCdmRHaGxjaUJ2WW1wbFkzUWdkRzhnWTI5dGNHRnlaUzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFlXY2dWR2hsSUdCMGIxTjBjbWx1WjFSaFoyQWdiMllnZEdobElHOWlhbVZqZEhNZ2RHOGdZMjl0Y0dGeVpTNWNiaUFxSUVCeVpYUjFjbTV6SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCMGFHVWdiMkpxWldOMGN5QmhjbVVnWlhGMWFYWmhiR1Z1ZEN3Z1pXeHpaU0JnWm1Gc2MyVmdMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQmxjWFZoYkVKNVZHRm5LRzlpYW1WamRDd2diM1JvWlhJc0lIUmhaeWtnZTF4dUlDQnpkMmwwWTJnZ0tIUmhaeWtnZTF4dUlDQWdJR05oYzJVZ1ltOXZiRlJoWnpwY2JpQWdJQ0JqWVhObElHUmhkR1ZVWVdjNlhHNGdJQ0FnSUNBdkx5QkRiMlZ5WTJVZ1pHRjBaWE1nWVc1a0lHSnZiMnhsWVc1eklIUnZJRzUxYldKbGNuTXNJR1JoZEdWeklIUnZJRzFwYkd4cGMyVmpiMjVrY3lCaGJtUWdZbTl2YkdWaGJuTmNiaUFnSUNBZ0lDOHZJSFJ2SUdBeFlDQnZjaUJnTUdBZ2RISmxZWFJwYm1jZ2FXNTJZV3hwWkNCa1lYUmxjeUJqYjJWeVkyVmtJSFJ2SUdCT1lVNWdJR0Z6SUc1dmRDQmxjWFZoYkM1Y2JpQWdJQ0FnSUhKbGRIVnliaUFyYjJKcVpXTjBJRDA5SUN0dmRHaGxjanRjYmx4dUlDQWdJR05oYzJVZ1pYSnliM0pVWVdjNlhHNGdJQ0FnSUNCeVpYUjFjbTRnYjJKcVpXTjBMbTVoYldVZ1BUMGdiM1JvWlhJdWJtRnRaU0FtSmlCdlltcGxZM1F1YldWemMyRm5aU0E5UFNCdmRHaGxjaTV0WlhOellXZGxPMXh1WEc0Z0lDQWdZMkZ6WlNCdWRXMWlaWEpVWVdjNlhHNGdJQ0FnSUNBdkx5QlVjbVZoZENCZ1RtRk9ZQ0IyY3k0Z1lFNWhUbUFnWVhNZ1pYRjFZV3d1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdLRzlpYW1WamRDQWhQU0FyYjJKcVpXTjBLVnh1SUNBZ0lDQWdJQ0EvSUc5MGFHVnlJQ0U5SUN0dmRHaGxjbHh1SUNBZ0lDQWdJQ0E2SUc5aWFtVmpkQ0E5UFNBcmIzUm9aWEk3WEc1Y2JpQWdJQ0JqWVhObElISmxaMlY0Y0ZSaFp6cGNiaUFnSUNCallYTmxJSE4wY21sdVoxUmhaenBjYmlBZ0lDQWdJQzh2SUVOdlpYSmpaU0J5WldkbGVHVnpJSFJ2SUhOMGNtbHVaM01nWVc1a0lIUnlaV0YwSUhOMGNtbHVaM01nY0hKcGJXbDBhWFpsY3lCaGJtUWdjM1J5YVc1blhHNGdJQ0FnSUNBdkx5QnZZbXBsWTNSeklHRnpJR1Z4ZFdGc0xpQlRaV1VnYUhSMGNITTZMeTlsY3pVdVoybDBhSFZpTG1sdkx5TjRNVFV1TVRBdU5pNDBJR1p2Y2lCdGIzSmxJR1JsZEdGcGJITXVYRzRnSUNBZ0lDQnlaWFIxY200Z2IySnFaV04wSUQwOUlDaHZkR2hsY2lBcklDY25LVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWlhGMVlXeENlVlJoWnp0Y2JpSXNJblpoY2lCclpYbHpJRDBnY21WeGRXbHlaU2duTGk0dmIySnFaV04wTDJ0bGVYTW5LVHRjYmx4dUx5b3FJRlZ6WldRZ1ptOXlJRzVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5NGdLaTljYm5aaGNpQnZZbXBsWTNSUWNtOTBieUE5SUU5aWFtVmpkQzV3Y205MGIzUjVjR1U3WEc1Y2JpOHFLaUJWYzJWa0lIUnZJR05vWldOcklHOWlhbVZqZEhNZ1ptOXlJRzkzYmlCd2NtOXdaWEowYVdWekxpQXFMMXh1ZG1GeUlHaGhjMDkzYmxCeWIzQmxjblI1SUQwZ2IySnFaV04wVUhKdmRHOHVhR0Z6VDNkdVVISnZjR1Z5ZEhrN1hHNWNiaThxS2x4dUlDb2dRU0J6Y0dWamFXRnNhWHBsWkNCMlpYSnphVzl1SUc5bUlHQmlZWE5sU1hORmNYVmhiRVJsWlhCZ0lHWnZjaUJ2WW1wbFkzUnpJSGRwZEdnZ2MzVndjRzl5ZENCbWIzSmNiaUFxSUhCaGNuUnBZV3dnWkdWbGNDQmpiMjF3WVhKcGMyOXVjeTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5aWFtVmpkQ0JVYUdVZ2IySnFaV04wSUhSdklHTnZiWEJoY21VdVhHNGdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdiM1JvWlhJZ1ZHaGxJRzkwYUdWeUlHOWlhbVZqZENCMGJ5QmpiMjF3WVhKbExseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWlhGMVlXeEdkVzVqSUZSb1pTQm1kVzVqZEdsdmJpQjBieUJrWlhSbGNtMXBibVVnWlhGMWFYWmhiR1Z1ZEhNZ2IyWWdkbUZzZFdWekxseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnVzJOMWMzUnZiV2w2WlhKZElGUm9aU0JtZFc1amRHbHZiaUIwYnlCamRYTjBiMjFwZW1VZ1kyOXRjR0Z5YVc1bklIWmhiSFZsY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMmx6VEc5dmMyVmRJRk53WldOcFpua2djR1Z5Wm05eWJXbHVaeUJ3WVhKMGFXRnNJR052YlhCaGNtbHpiMjV6TGx4dUlDb2dRSEJoY21GdElIdEJjbkpoZVgwZ1czTjBZV05yUVYwZ1ZISmhZMnR6SUhSeVlYWmxjbk5sWkNCZ2RtRnNkV1ZnSUc5aWFtVmpkSE11WEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCYmMzUmhZMnRDWFNCVWNtRmphM01nZEhKaGRtVnljMlZrSUdCdmRHaGxjbUFnYjJKcVpXTjBjeTVjYmlBcUlFQnlaWFIxY201eklIdGliMjlzWldGdWZTQlNaWFIxY201eklHQjBjblZsWUNCcFppQjBhR1VnYjJKcVpXTjBjeUJoY21VZ1pYRjFhWFpoYkdWdWRDd2daV3h6WlNCZ1ptRnNjMlZnTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJsY1hWaGJFOWlhbVZqZEhNb2IySnFaV04wTENCdmRHaGxjaXdnWlhGMVlXeEdkVzVqTENCamRYTjBiMjFwZW1WeUxDQnBjMHh2YjNObExDQnpkR0ZqYTBFc0lITjBZV05yUWlrZ2UxeHVJQ0IyWVhJZ2IySnFVSEp2Y0hNZ1BTQnJaWGx6S0c5aWFtVmpkQ2tzWEc0Z0lDQWdJQ0J2WW1wTVpXNW5kR2dnUFNCdlltcFFjbTl3Y3k1c1pXNW5kR2dzWEc0Z0lDQWdJQ0J2ZEdoUWNtOXdjeUE5SUd0bGVYTW9iM1JvWlhJcExGeHVJQ0FnSUNBZ2IzUm9UR1Z1WjNSb0lEMGdiM1JvVUhKdmNITXViR1Z1WjNSb08xeHVYRzRnSUdsbUlDaHZZbXBNWlc1bmRHZ2dJVDBnYjNSb1RHVnVaM1JvSUNZbUlDRnBjMHh2YjNObEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNGdJSFpoY2lCcGJtUmxlQ0E5SUc5aWFreGxibWQwYUR0Y2JpQWdkMmhwYkdVZ0tHbHVaR1Y0TFMwcElIdGNiaUFnSUNCMllYSWdhMlY1SUQwZ2IySnFVSEp2Y0hOYmFXNWtaWGhkTzF4dUlDQWdJR2xtSUNnaEtHbHpURzl2YzJVZ1B5QnJaWGtnYVc0Z2IzUm9aWElnT2lCb1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHOTBhR1Z5TENCclpYa3BLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCMllYSWdjMnRwY0VOMGIzSWdQU0JwYzB4dmIzTmxPMXh1SUNCM2FHbHNaU0FvS3l0cGJtUmxlQ0E4SUc5aWFreGxibWQwYUNrZ2UxeHVJQ0FnSUd0bGVTQTlJRzlpYWxCeWIzQnpXMmx1WkdWNFhUdGNiaUFnSUNCMllYSWdiMkpxVm1Gc2RXVWdQU0J2WW1wbFkzUmJhMlY1WFN4Y2JpQWdJQ0FnSUNBZ2IzUm9WbUZzZFdVZ1BTQnZkR2hsY2x0clpYbGRMRnh1SUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0JqZFhOMGIyMXBlbVZ5SUQ4Z1kzVnpkRzl0YVhwbGNpaHBjMHh2YjNObElEOGdiM1JvVm1Gc2RXVWdPaUJ2WW1wV1lXeDFaU3dnYVhOTWIyOXpaVDhnYjJKcVZtRnNkV1VnT2lCdmRHaFdZV3gxWlN3Z2EyVjVLU0E2SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUM4dklGSmxZM1Z5YzJsMlpXeDVJR052YlhCaGNtVWdiMkpxWldOMGN5QW9jM1Z6WTJWd2RHbGliR1VnZEc4Z1kyRnNiQ0J6ZEdGamF5QnNhVzFwZEhNcExseHVJQ0FnSUdsbUlDZ2hLSEpsYzNWc2RDQTlQVDBnZFc1a1pXWnBibVZrSUQ4Z1pYRjFZV3hHZFc1aktHOWlhbFpoYkhWbExDQnZkR2hXWVd4MVpTd2dZM1Z6ZEc5dGFYcGxjaXdnYVhOTWIyOXpaU3dnYzNSaFkydEJMQ0J6ZEdGamEwSXBJRG9nY21WemRXeDBLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgxY2JpQWdJQ0J6YTJsd1EzUnZjaUI4ZkNBb2MydHBjRU4wYjNJZ1BTQnJaWGtnUFQwZ0oyTnZibk4wY25WamRHOXlKeWs3WEc0Z0lIMWNiaUFnYVdZZ0tDRnphMmx3UTNSdmNpa2dlMXh1SUNBZ0lIWmhjaUJ2WW1wRGRHOXlJRDBnYjJKcVpXTjBMbU52Ym5OMGNuVmpkRzl5TEZ4dUlDQWdJQ0FnSUNCdmRHaERkRzl5SUQwZ2IzUm9aWEl1WTI5dWMzUnlkV04wYjNJN1hHNWNiaUFnSUNBdkx5Qk9iMjRnWUU5aWFtVmpkR0FnYjJKcVpXTjBJR2x1YzNSaGJtTmxjeUIzYVhSb0lHUnBabVpsY21WdWRDQmpiMjV6ZEhKMVkzUnZjbk1nWVhKbElHNXZkQ0JsY1hWaGJDNWNiaUFnSUNCcFppQW9iMkpxUTNSdmNpQWhQU0J2ZEdoRGRHOXlJQ1ltWEc0Z0lDQWdJQ0FnSUNnblkyOXVjM1J5ZFdOMGIzSW5JR2x1SUc5aWFtVmpkQ0FtSmlBblkyOXVjM1J5ZFdOMGIzSW5JR2x1SUc5MGFHVnlLU0FtSmx4dUlDQWdJQ0FnSUNBaEtIUjVjR1Z2WmlCdlltcERkRzl5SUQwOUlDZG1kVzVqZEdsdmJpY2dKaVlnYjJKcVEzUnZjaUJwYm5OMFlXNWpaVzltSUc5aWFrTjBiM0lnSmlaY2JpQWdJQ0FnSUNBZ0lDQjBlWEJsYjJZZ2IzUm9RM1J2Y2lBOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUc5MGFFTjBiM0lnYVc1emRHRnVZMlZ2WmlCdmRHaERkRzl5S1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2RISjFaVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmxjWFZoYkU5aWFtVmpkSE03WEc0aUxDSjJZWElnYldWMFlVMWhjQ0E5SUhKbGNYVnBjbVVvSnk0dmJXVjBZVTFoY0NjcExGeHVJQ0FnSUc1dmIzQWdQU0J5WlhGMWFYSmxLQ2N1TGk5MWRHbHNhWFI1TDI1dmIzQW5LVHRjYmx4dUx5b3FYRzRnS2lCSFpYUnpJRzFsZEdGa1lYUmhJR1p2Y2lCZ1puVnVZMkF1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWjFibU1nVkdobElHWjFibU4wYVc5dUlIUnZJSEYxWlhKNUxseHVJQ29nUUhKbGRIVnlibk1nZXlwOUlGSmxkSFZ5Ym5NZ2RHaGxJRzFsZEdGa1lYUmhJR1p2Y2lCZ1puVnVZMkF1WEc0Z0tpOWNiblpoY2lCblpYUkVZWFJoSUQwZ0lXMWxkR0ZOWVhBZ1B5QnViMjl3SURvZ1puVnVZM1JwYjI0b1puVnVZeWtnZTF4dUlDQnlaWFIxY200Z2JXVjBZVTFoY0M1blpYUW9ablZ1WXlrN1hHNTlPMXh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdkbGRFUmhkR0U3WEc0aUxDSjJZWElnY21WaGJFNWhiV1Z6SUQwZ2NtVnhkV2x5WlNnbkxpOXlaV0ZzVG1GdFpYTW5LVHRjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCdVlXMWxJRzltSUdCbWRXNWpZQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ1puVnVZeUJVYUdVZ1puVnVZM1JwYjI0Z2RHOGdjWFZsY25rdVhHNGdLaUJBY21WMGRYSnVjeUI3YzNSeWFXNW5mU0JTWlhSMWNtNXpJSFJvWlNCbWRXNWpkR2x2YmlCdVlXMWxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm5aWFJHZFc1alRtRnRaU2htZFc1aktTQjdYRzRnSUhaaGNpQnlaWE4xYkhRZ1BTQW9ablZ1WXk1dVlXMWxJQ3NnSnljcExGeHVJQ0FnSUNBZ1lYSnlZWGtnUFNCeVpXRnNUbUZ0WlhOYmNtVnpkV3gwWFN4Y2JpQWdJQ0FnSUd4bGJtZDBhQ0E5SUdGeWNtRjVJRDhnWVhKeVlYa3ViR1Z1WjNSb0lEb2dNRHRjYmx4dUlDQjNhR2xzWlNBb2JHVnVaM1JvTFMwcElIdGNiaUFnSUNCMllYSWdaR0YwWVNBOUlHRnljbUY1VzJ4bGJtZDBhRjBzWEc0Z0lDQWdJQ0FnSUc5MGFHVnlSblZ1WXlBOUlHUmhkR0V1Wm5WdVl6dGNiaUFnSUNCcFppQW9iM1JvWlhKR2RXNWpJRDA5SUc1MWJHd2dmSHdnYjNSb1pYSkdkVzVqSUQwOUlHWjFibU1wSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJrWVhSaExtNWhiV1U3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWjJWMFJuVnVZMDVoYldVN1hHNGlMQ0oyWVhJZ1ltRnpaVkJ5YjNCbGNuUjVJRDBnY21WeGRXbHlaU2duTGk5aVlYTmxVSEp2Y0dWeWRIa25LVHRjYmx4dUx5b3FYRzRnS2lCSFpYUnpJSFJvWlNCY0lteGxibWQwYUZ3aUlIQnliM0JsY25SNUlIWmhiSFZsSUc5bUlHQnZZbXBsWTNSZ0xseHVJQ3BjYmlBcUlDb3FUbTkwWlRvcUtpQlVhR2x6SUdaMWJtTjBhVzl1SUdseklIVnpaV1FnZEc4Z1lYWnZhV1FnWVNCYlNrbFVJR0oxWjEwb2FIUjBjSE02THk5aWRXZHpMbmRsWW10cGRDNXZjbWN2YzJodmQxOWlkV2N1WTJkcFAybGtQVEUwTWpjNU1pbGNiaUFxSUhSb1lYUWdZV1ptWldOMGN5QlRZV1poY21rZ2IyNGdZWFFnYkdWaGMzUWdhVTlUSURndU1TMDRMak1nUVZKTk5qUXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2WW1wbFkzUWdWR2hsSUc5aWFtVmpkQ0IwYnlCeGRXVnllUzVjYmlBcUlFQnlaWFIxY201eklIc3FmU0JTWlhSMWNtNXpJSFJvWlNCY0lteGxibWQwYUZ3aUlIWmhiSFZsTGx4dUlDb3ZYRzUyWVhJZ1oyVjBUR1Z1WjNSb0lEMGdZbUZ6WlZCeWIzQmxjblI1S0Nkc1pXNW5kR2duS1R0Y2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQm5aWFJNWlc1bmRHZzdYRzRpTENKMllYSWdhWE5UZEhKcFkzUkRiMjF3WVhKaFlteGxJRDBnY21WeGRXbHlaU2duTGk5cGMxTjBjbWxqZEVOdmJYQmhjbUZpYkdVbktTeGNiaUFnSUNCd1lXbHljeUE5SUhKbGNYVnBjbVVvSnk0dUwyOWlhbVZqZEM5d1lXbHljeWNwTzF4dVhHNHZLaXBjYmlBcUlFZGxkSE1nZEdobElIQnliM0JsY25rZ2JtRnRaWE1zSUhaaGJIVmxjeXdnWVc1a0lHTnZiWEJoY21VZ1pteGhaM01nYjJZZ1lHOWlhbVZqZEdBdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZZbXBsWTNRZ1ZHaGxJRzlpYW1WamRDQjBieUJ4ZFdWeWVTNWNiaUFxSUVCeVpYUjFjbTV6SUh0QmNuSmhlWDBnVW1WMGRYSnVjeUIwYUdVZ2JXRjBZMmdnWkdGMFlTQnZaaUJnYjJKcVpXTjBZQzVjYmlBcUwxeHVablZ1WTNScGIyNGdaMlYwVFdGMFkyaEVZWFJoS0c5aWFtVmpkQ2tnZTF4dUlDQjJZWElnY21WemRXeDBJRDBnY0dGcGNuTW9iMkpxWldOMEtTeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlISmxjM1ZzZEM1c1pXNW5kR2c3WEc1Y2JpQWdkMmhwYkdVZ0tHeGxibWQwYUMwdEtTQjdYRzRnSUNBZ2NtVnpkV3gwVzJ4bGJtZDBhRjFiTWwwZ1BTQnBjMU4wY21samRFTnZiWEJoY21GaWJHVW9jbVZ6ZFd4MFcyeGxibWQwYUYxYk1WMHBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnWjJWMFRXRjBZMmhFWVhSaE8xeHVJaXdpZG1GeUlHbHpUbUYwYVhabElEMGdjbVZ4ZFdseVpTZ25MaTR2YkdGdVp5OXBjMDVoZEdsMlpTY3BPMXh1WEc0dktpcGNiaUFxSUVkbGRITWdkR2hsSUc1aGRHbDJaU0JtZFc1amRHbHZiaUJoZENCZ2EyVjVZQ0J2WmlCZ2IySnFaV04wWUM1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOWlhbVZqZENCVWFHVWdiMkpxWldOMElIUnZJSEYxWlhKNUxseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR3RsZVNCVWFHVWdhMlY1SUc5bUlIUm9aU0J0WlhSb2IyUWdkRzhnWjJWMExseHVJQ29nUUhKbGRIVnlibk1nZXlwOUlGSmxkSFZ5Ym5NZ2RHaGxJR1oxYm1OMGFXOXVJR2xtSUdsMEozTWdibUYwYVhabExDQmxiSE5sSUdCMWJtUmxabWx1WldSZ0xseHVJQ292WEc1bWRXNWpkR2x2YmlCblpYUk9ZWFJwZG1Vb2IySnFaV04wTENCclpYa3BJSHRjYmlBZ2RtRnlJSFpoYkhWbElEMGdiMkpxWldOMElEMDlJRzUxYkd3Z1B5QjFibVJsWm1sdVpXUWdPaUJ2WW1wbFkzUmJhMlY1WFR0Y2JpQWdjbVYwZFhKdUlHbHpUbUYwYVhabEtIWmhiSFZsS1NBL0lIWmhiSFZsSURvZ2RXNWtaV1pwYm1Wa08xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdkbGRFNWhkR2wyWlR0Y2JpSXNJaThxS2x4dUlDb2dSMlYwY3lCMGFHVWdhVzVrWlhnZ1lYUWdkMmhwWTJnZ2RHaGxJR1pwY25OMElHOWpZM1Z5Y21WdVkyVWdiMllnWUU1aFRtQWdhWE1nWm05MWJtUWdhVzRnWUdGeWNtRjVZQzVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnWVhKeVlYa2dWR2hsSUdGeWNtRjVJSFJ2SUhObFlYSmphQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCbWNtOXRTVzVrWlhnZ1ZHaGxJR2x1WkdWNElIUnZJSE5sWVhKamFDQm1jbTl0TGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJabkp2YlZKcFoyaDBYU0JUY0dWamFXWjVJR2wwWlhKaGRHbHVaeUJtY205dElISnBaMmgwSUhSdklHeGxablF1WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeWZTQlNaWFIxY201eklIUm9aU0JwYm1SbGVDQnZaaUIwYUdVZ2JXRjBZMmhsWkNCZ1RtRk9ZQ3dnWld4elpTQmdMVEZnTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYm1SbGVFOW1UbUZPS0dGeWNtRjVMQ0JtY205dFNXNWtaWGdzSUdaeWIyMVNhV2RvZENrZ2UxeHVJQ0IyWVhJZ2JHVnVaM1JvSUQwZ1lYSnlZWGt1YkdWdVozUm9MRnh1SUNBZ0lDQWdhVzVrWlhnZ1BTQm1jbTl0U1c1a1pYZ2dLeUFvWm5KdmJWSnBaMmgwSUQ4Z01DQTZJQzB4S1R0Y2JseHVJQ0IzYUdsc1pTQW9LR1p5YjIxU2FXZG9kQ0EvSUdsdVpHVjRMUzBnT2lBcksybHVaR1Y0SUR3Z2JHVnVaM1JvS1NrZ2UxeHVJQ0FnSUhaaGNpQnZkR2hsY2lBOUlHRnljbUY1VzJsdVpHVjRYVHRjYmlBZ0lDQnBaaUFvYjNSb1pYSWdJVDA5SUc5MGFHVnlLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhVzVrWlhnN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUF0TVR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JwYm1SbGVFOW1UbUZPTzF4dUlpd2lMeW9xSUZWelpXUWdabTl5SUc1aGRHbDJaU0J0WlhSb2IyUWdjbVZtWlhKbGJtTmxjeTRnS2k5Y2JuWmhjaUJ2WW1wbFkzUlFjbTkwYnlBOUlFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVN1hHNWNiaThxS2lCVmMyVmtJSFJ2SUdOb1pXTnJJRzlpYW1WamRITWdabTl5SUc5M2JpQndjbTl3WlhKMGFXVnpMaUFxTDF4dWRtRnlJR2hoYzA5M2JsQnliM0JsY25SNUlEMGdiMkpxWldOMFVISnZkRzh1YUdGelQzZHVVSEp2Y0dWeWRIazdYRzVjYmk4cUtseHVJQ29nU1c1cGRHbGhiR2w2WlhNZ1lXNGdZWEp5WVhrZ1kyeHZibVV1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUdGeWNtRjVJRlJvWlNCaGNuSmhlU0IwYnlCamJHOXVaUzVjYmlBcUlFQnlaWFIxY201eklIdEJjbkpoZVgwZ1VtVjBkWEp1Y3lCMGFHVWdhVzVwZEdsaGJHbDZaV1FnWTJ4dmJtVXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHVhWFJEYkc5dVpVRnljbUY1S0dGeWNtRjVLU0I3WEc0Z0lIWmhjaUJzWlc1bmRHZ2dQU0JoY25KaGVTNXNaVzVuZEdnc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCdVpYY2dZWEp5WVhrdVkyOXVjM1J5ZFdOMGIzSW9iR1Z1WjNSb0tUdGNibHh1SUNBdkx5QkJaR1FnWVhKeVlYa2djSEp2Y0dWeWRHbGxjeUJoYzNOcFoyNWxaQ0JpZVNCZ1VtVm5SWGh3STJWNFpXTmdMbHh1SUNCcFppQW9iR1Z1WjNSb0lDWW1JSFI1Y0dWdlppQmhjbkpoZVZzd1hTQTlQU0FuYzNSeWFXNW5KeUFtSmlCb1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tHRnljbUY1TENBbmFXNWtaWGduS1NrZ2UxeHVJQ0FnSUhKbGMzVnNkQzVwYm1SbGVDQTlJR0Z5Y21GNUxtbHVaR1Y0TzF4dUlDQWdJSEpsYzNWc2RDNXBibkIxZENBOUlHRnljbUY1TG1sdWNIVjBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYVc1cGRFTnNiMjVsUVhKeVlYazdYRzRpTENJb1puVnVZM1JwYjI0Z0tHZHNiMkpoYkNsN1hHNTJZWElnWW5WbVptVnlRMnh2Ym1VZ1BTQnlaWEYxYVhKbEtDY3VMMkoxWm1abGNrTnNiMjVsSnlrN1hHNWNiaThxS2lCZ1QySnFaV04wSTNSdlUzUnlhVzVuWUNCeVpYTjFiSFFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCaWIyOXNWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbkxGeHVJQ0FnSUdSaGRHVlVZV2NnUFNBblcyOWlhbVZqZENCRVlYUmxYU2NzWEc0Z0lDQWdiblZ0WW1WeVZHRm5JRDBnSjF0dlltcGxZM1FnVG5WdFltVnlYU2NzWEc0Z0lDQWdjbVZuWlhod1ZHRm5JRDBnSjF0dlltcGxZM1FnVW1WblJYaHdYU2NzWEc0Z0lDQWdjM1J5YVc1blZHRm5JRDBnSjF0dlltcGxZM1FnVTNSeWFXNW5YU2M3WEc1Y2JuWmhjaUJoY25KaGVVSjFabVpsY2xSaFp5QTlJQ2RiYjJKcVpXTjBJRUZ5Y21GNVFuVm1abVZ5WFNjc1hHNGdJQ0FnWm14dllYUXpNbFJoWnlBOUlDZGJiMkpxWldOMElFWnNiMkYwTXpKQmNuSmhlVjBuTEZ4dUlDQWdJR1pzYjJGME5qUlVZV2NnUFNBblcyOWlhbVZqZENCR2JHOWhkRFkwUVhKeVlYbGRKeXhjYmlBZ0lDQnBiblE0VkdGbklEMGdKMXR2WW1wbFkzUWdTVzUwT0VGeWNtRjVYU2NzWEc0Z0lDQWdhVzUwTVRaVVlXY2dQU0FuVzI5aWFtVmpkQ0JKYm5ReE5rRnljbUY1WFNjc1hHNGdJQ0FnYVc1ME16SlVZV2NnUFNBblcyOWlhbVZqZENCSmJuUXpNa0Z5Y21GNVhTY3NYRzRnSUNBZ2RXbHVkRGhVWVdjZ1BTQW5XMjlpYW1WamRDQlZhVzUwT0VGeWNtRjVYU2NzWEc0Z0lDQWdkV2x1ZERoRGJHRnRjR1ZrVkdGbklEMGdKMXR2WW1wbFkzUWdWV2x1ZERoRGJHRnRjR1ZrUVhKeVlYbGRKeXhjYmlBZ0lDQjFhVzUwTVRaVVlXY2dQU0FuVzI5aWFtVmpkQ0JWYVc1ME1UWkJjbkpoZVYwbkxGeHVJQ0FnSUhWcGJuUXpNbFJoWnlBOUlDZGJiMkpxWldOMElGVnBiblF6TWtGeWNtRjVYU2M3WEc1Y2JpOHFLaUJWYzJWa0lIUnZJRzFoZEdOb0lHQlNaV2RGZUhCZ0lHWnNZV2R6SUdaeWIyMGdkR2hsYVhJZ1kyOWxjbU5sWkNCemRISnBibWNnZG1Gc2RXVnpMaUFxTDF4dWRtRnlJSEpsUm14aFozTWdQU0F2WEZ4M0tpUXZPMXh1WEc0dktpb2dUbUYwYVhabElHMWxkR2h2WkNCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlGVnBiblE0UVhKeVlYa2dQU0JuYkc5aVlXd3VWV2x1ZERoQmNuSmhlVHRjYmx4dUx5b3FJRlZ6WldRZ2RHOGdiRzl2YTNWd0lHRWdkSGx3WlNCaGNuSmhlU0JqYjI1emRISjFZM1J2Y25NZ1lua2dZSFJ2VTNSeWFXNW5WR0ZuWUM0Z0tpOWNiblpoY2lCamRHOXlRbmxVWVdjZ1BTQjdmVHRjYm1OMGIzSkNlVlJoWjF0bWJHOWhkRE15VkdGblhTQTlJR2RzYjJKaGJDNUdiRzloZERNeVFYSnlZWGs3WEc1amRHOXlRbmxVWVdkYlpteHZZWFEyTkZSaFoxMGdQU0JuYkc5aVlXd3VSbXh2WVhRMk5FRnljbUY1TzF4dVkzUnZja0o1VkdGblcybHVkRGhVWVdkZElEMGdaMnh2WW1Gc0xrbHVkRGhCY25KaGVUdGNibU4wYjNKQ2VWUmhaMXRwYm5ReE5sUmhaMTBnUFNCbmJHOWlZV3d1U1c1ME1UWkJjbkpoZVR0Y2JtTjBiM0pDZVZSaFoxdHBiblF6TWxSaFoxMGdQU0JuYkc5aVlXd3VTVzUwTXpKQmNuSmhlVHRjYm1OMGIzSkNlVlJoWjF0MWFXNTBPRlJoWjEwZ1BTQlZhVzUwT0VGeWNtRjVPMXh1WTNSdmNrSjVWR0ZuVzNWcGJuUTRRMnhoYlhCbFpGUmhaMTBnUFNCbmJHOWlZV3d1VldsdWREaERiR0Z0Y0dWa1FYSnlZWGs3WEc1amRHOXlRbmxVWVdkYmRXbHVkREUyVkdGblhTQTlJR2RzYjJKaGJDNVZhVzUwTVRaQmNuSmhlVHRjYm1OMGIzSkNlVlJoWjF0MWFXNTBNekpVWVdkZElEMGdaMnh2WW1Gc0xsVnBiblF6TWtGeWNtRjVPMXh1WEc0dktpcGNiaUFxSUVsdWFYUnBZV3hwZW1WeklHRnVJRzlpYW1WamRDQmpiRzl1WlNCaVlYTmxaQ0J2YmlCcGRITWdZSFJ2VTNSeWFXNW5WR0ZuWUM1Y2JpQXFYRzRnS2lBcUtrNXZkR1U2S2lvZ1ZHaHBjeUJtZFc1amRHbHZiaUJ2Ym14NUlITjFjSEJ2Y25SeklHTnNiMjVwYm1jZ2RtRnNkV1Z6SUhkcGRHZ2dkR0ZuY3lCdlpseHVJQ29nWUVKdmIyeGxZVzVnTENCZ1JHRjBaV0FzSUdCRmNuSnZjbUFzSUdCT2RXMWlaWEpnTENCZ1VtVm5SWGh3WUN3Z2IzSWdZRk4wY21sdVoyQXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2WW1wbFkzUWdWR2hsSUc5aWFtVmpkQ0IwYnlCamJHOXVaUzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFlXY2dWR2hsSUdCMGIxTjBjbWx1WjFSaFoyQWdiMllnZEdobElHOWlhbVZqZENCMGJ5QmpiRzl1WlM1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMmx6UkdWbGNGMGdVM0JsWTJsbWVTQmhJR1JsWlhBZ1kyeHZibVV1WEc0Z0tpQkFjbVYwZFhKdWN5QjdUMkpxWldOMGZTQlNaWFIxY201eklIUm9aU0JwYm1sMGFXRnNhWHBsWkNCamJHOXVaUzVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOc2IyNWxRbmxVWVdjb2IySnFaV04wTENCMFlXY3NJR2x6UkdWbGNDa2dlMXh1SUNCMllYSWdRM1J2Y2lBOUlHOWlhbVZqZEM1amIyNXpkSEoxWTNSdmNqdGNiaUFnYzNkcGRHTm9JQ2gwWVdjcElIdGNiaUFnSUNCallYTmxJR0Z5Y21GNVFuVm1abVZ5VkdGbk9seHVJQ0FnSUNBZ2NtVjBkWEp1SUdKMVptWmxja05zYjI1bEtHOWlhbVZqZENrN1hHNWNiaUFnSUNCallYTmxJR0p2YjJ4VVlXYzZYRzRnSUNBZ1kyRnpaU0JrWVhSbFZHRm5PbHh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJEZEc5eUtDdHZZbXBsWTNRcE8xeHVYRzRnSUNBZ1kyRnpaU0JtYkc5aGRETXlWR0ZuT2lCallYTmxJR1pzYjJGME5qUlVZV2M2WEc0Z0lDQWdZMkZ6WlNCcGJuUTRWR0ZuT2lCallYTmxJR2x1ZERFMlZHRm5PaUJqWVhObElHbHVkRE15VkdGbk9seHVJQ0FnSUdOaGMyVWdkV2x1ZERoVVlXYzZJR05oYzJVZ2RXbHVkRGhEYkdGdGNHVmtWR0ZuT2lCallYTmxJSFZwYm5ReE5sUmhaem9nWTJGelpTQjFhVzUwTXpKVVlXYzZYRzRnSUNBZ0lDQXZMeUJUWVdaaGNta2dOU0J0YjJKcGJHVWdhVzVqYjNKeVpXTjBiSGtnYUdGeklHQlBZbXBsWTNSZ0lHRnpJSFJvWlNCamIyNXpkSEoxWTNSdmNpQnZaaUIwZVhCbFpDQmhjbkpoZVhNdVhHNGdJQ0FnSUNCcFppQW9RM1J2Y2lCcGJuTjBZVzVqWlc5bUlFTjBiM0lwSUh0Y2JpQWdJQ0FnSUNBZ1EzUnZjaUE5SUdOMGIzSkNlVlJoWjF0MFlXZGRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkbUZ5SUdKMVptWmxjaUE5SUc5aWFtVmpkQzVpZFdabVpYSTdYRzRnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRU4wYjNJb2FYTkVaV1Z3SUQ4Z1luVm1abVZ5UTJ4dmJtVW9ZblZtWm1WeUtTQTZJR0oxWm1abGNpd2diMkpxWldOMExtSjVkR1ZQWm1aelpYUXNJRzlpYW1WamRDNXNaVzVuZEdncE8xeHVYRzRnSUNBZ1kyRnpaU0J1ZFcxaVpYSlVZV2M2WEc0Z0lDQWdZMkZ6WlNCemRISnBibWRVWVdjNlhHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFTjBiM0lvYjJKcVpXTjBLVHRjYmx4dUlDQWdJR05oYzJVZ2NtVm5aWGh3VkdGbk9seHVJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJRzVsZHlCRGRHOXlLRzlpYW1WamRDNXpiM1Z5WTJVc0lISmxSbXhoWjNNdVpYaGxZeWh2WW1wbFkzUXBLVHRjYmlBZ0lDQWdJSEpsYzNWc2RDNXNZWE4wU1c1a1pYZ2dQU0J2WW1wbFkzUXViR0Z6ZEVsdVpHVjRPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYVc1cGRFTnNiMjVsUW5sVVlXYzdYRzVjYm4wcExtTmhiR3dvZEdocGN5eDBlWEJsYjJZZ1oyeHZZbUZzSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUQ4Z1oyeHZZbUZzSURvZ2RIbHdaVzltSUhObGJHWWdJVDA5SUZ3aWRXNWtaV1pwYm1Wa1hDSWdQeUJ6Wld4bUlEb2dkSGx3Wlc5bUlIZHBibVJ2ZHlBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlBL0lIZHBibVJ2ZHlBNklIdDlLVnh1THk4aklITnZkWEpqWlUxaGNIQnBibWRWVWt3OVpHRjBZVHBoY0hCc2FXTmhkR2x2Ymk5cWMyOXVPMk5vWVhKelpYUTZkWFJtTFRnN1ltRnpaVFkwTEdWNVNqSmFXRXA2WVZjNWRVbHFiM3BNUTBwNllqTldlVmt5Vm5wSmFuQmlTVzAxZGxwSFZtWmlWemxyWkZkNGJHTjVPWE5pTWxKb1l6Sm5kRmt5T1hSalIwWXdUREpzZFdSSFZubGliVVp6VERKc2RXRllVa1JpUnpsMVdsVktOVlpIUm01TWJYQjZTV3d3YzBsdE5XaGlWMVo2U1dwd1lsaFRkMmxpVjBaM1kwZHNkVm96VFdsUGFVazNVVlZHUWxGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDU1dsM2FWcHRiSE5hVTBrMlNXMWtiR0p0Vm5sWldGSnNXa00xY1dONVNYTkpiazUyWkZoS2FscFdTblppTTFGcFQybEphVXhEU25waU0xWjVXVEpXZWxFeU9YVmtSMVoxWkVOSk5sZDVTakpaV0VsbldXNVdiVnB0Vm5sUk1uaDJZbTFWWjFCVFFubGFXRVl4WVZoS2JFdERZM1ZNTWtveFdtMWFiR05yVG5OaU1qVnNTbmxyTjFoSE5XTmlhVGh4UzJsQ1oxUXlTbkZhVjA0d1NUTlNkbFV6VW5saFZ6VnVXVU5DZVZwWVRqRmlTRkZuWTIxV2JWcFlTbXhpYlU1c1kzazBaMHRwT1dOaWJscG9ZMmxDYVdJeU9YTldSMFp1U1VRd1owb3hkSFpaYlhCc1dUTlJaMUZ0T1haaVIxWm9ZbXd3Ymt4R2VIVkpRMEZuU1VkU2FHUkhWbFZaVjJOblVGTkJibGN5T1dsaGJWWnFaRU5DUlZsWVVteFlVMk56V0VjMFowbERRV2RpYmxaMFdXMVdlVlpIUm01SlJEQm5TakYwZGxsdGNHeFpNMUZuVkc1V2RGbHRWbmxZVTJOeldFYzBaMGxEUVdkamJWWnVXbGhvZDFaSFJtNUpSREJuU2pGMGRsbHRjR3haTTFGblZXMVdibEpZYUhkWVUyTnpXRWMwWjBsRFFXZGpNMUo1WVZjMWJsWkhSbTVKUkRCblNqRjBkbGx0Y0d4Wk0xRm5WVE5TZVdGWE5XNVlVMk0zV0VjMVkySnVXbWhqYVVKb1kyNUthR1ZWU2pGYWJWcHNZMnhTYUZwNVFUbEpRMlJpWWpKS2NWcFhUakJKUlVaNVkyMUdOVkZ1Vm0xYWJWWjVXRk5qYzFoSE5HZEpRMEZuV20xNGRsbFlVWHBOYkZKb1dubEJPVWxEWkdKaU1rcHhXbGRPTUVsRlduTmlNa1l3VFhwS1FtTnVTbWhsVmpCdVRFWjRkVWxEUVdkSlIxcHpZakpHTUU1cVVsVlpWMk5uVUZOQmJsY3lPV2xoYlZacVpFTkNSMkpIT1doa1JGa3dVVmhLZVZsWWJHUktlWGhqWW1sQlowbERRbkJpYmxFMFZrZEdia2xFTUdkS01YUjJXVzF3YkZrelVXZFRWelV3VDBWR2VXTnRSalZZVTJOeldFYzBaMGxEUVdkaFZ6VXdUVlJhVlZsWFkyZFFVMEZ1VnpJNWFXRnRWbXBrUTBKS1ltNVJlRTVyUm5samJVWTFXRk5qYzFoSE5HZEpRMEZuWVZjMU1FMTZTbFZaVjJOblVGTkJibGN5T1dsaGJWWnFaRU5DU21KdVVYcE5hMFo1WTIxR05WaFRZM05ZUnpSblNVTkJaMlJYYkhWa1JHaFZXVmRqWjFCVFFXNVhNamxwWVcxV2FtUkRRbFpoVnpVd1QwVkdlV050UmpWWVUyTnpXRWMwWjBsRFFXZGtWMngxWkVSb1JHSkhSblJqUjFaclZrZEdia2xFTUdkS01YUjJXVzF3YkZrelVXZFdWMngxWkVSb1JHSkhSblJqUjFaclVWaEtlVmxZYkdSS2VYaGpZbWxCWjBsRFFqRmhWelV3VFZSYVZWbFhZMmRRVTBGdVZ6STVhV0Z0Vm1wa1EwSldZVmMxTUUxVVdrSmpia3BvWlZZd2JreEdlSFZKUTBGblNVaFdjR0p1VVhwTmJGSm9XbmxCT1VsRFpHSmlNa3B4V2xkT01FbEdWbkJpYmxGNlRXdEdlV050UmpWWVUyTTNXRWMxWTJKcE9IRkxhVUpXWXpKV2EwbElVblpKUnpGb1pFZE9iMGxIUWxOYVYyUkdaVWhDWjBsSFduTlpWMlI2U1VkYWVXSXlNR2RrUjJoc1lWaEpaMWt5T1d4amJVNXNXa05DZW1SSVNuQmliV05uWkcxR2MyUlhWbnBNYVVGeFRERjRkV1J0Um5sSlNFcHNVbTE0YUZvelRXZFFVMEYyV0VaNE0wdHBVWFpQTVhoMVdFYzBka3RwYjJkVWJVWXdZVmhhYkVsSE1XeGtSMmgyV2tOQ2VWcFhXbXhqYlZaMVdUSldla3hwUVhGTU1YaDFaRzFHZVVsR1ZuQmlibEUwVVZoS2VWbFlhMmRRVTBKdVlrYzVhVmxYZDNWV1YyeDFaRVJvUW1OdVNtaGxWSFJqWW14NGRVeDViM0ZKUmxaNldsZFJaMlJIT0dkaVJ6bDJZVE5XZDBsSFJXZGtTR3gzV2xOQ2FHTnVTbWhsVTBKcVlqSTFlbVJJU2pGWk0xSjJZMjVOWjFsdWEyZFpTRkoyVlROU2VXRlhOVzVXUjBadVdVTTBaMHRwT1dOaWJscG9ZMmxDYW1SSE9YbFJibXhWV1ZkaloxQlRRamRtVkhSalltMU9NR0l6U2tObFZsSm9XakYwYldKSE9XaGtSRTE1VmtkR2JsaFRRVGxKUjJSellqSkthR0pETlVkaVJ6bG9aRVJOZVZGWVNubFpXR3MzV0VjMWFtUkhPWGxSYm14VldWZGtZbHB0ZUhaWldGRXlUa1pTYUZveE1HZFFVMEp1WWtjNWFWbFhkM1ZTYlhoMldWaFJNazVGUm5samJVWTFUekY0ZFZrelVuWmphMG8xVmtkR2JsY3liSFZrUkdoVldWZGtaRWxFTUdkYU1uaDJXVzFHYzB4cmJIVmtSR2hDWTI1S2FHVlVkR05pYlU0d1lqTktRMlZXVW1oYU1YUndZbTVSZUU1c1VtaGFNVEJuVUZOQ2JtSkhPV2xaVjNkMVUxYzFNRTFVV2tKamJrcG9aVlIwWTJKdFRqQmlNMHBEWlZaU2FGb3hkSEJpYmxGNlRXeFNhRm94TUdkUVUwSnVZa2M1YVZsWGQzVlRWelV3VFhwS1FtTnVTbWhsVkhSalltMU9NR0l6U2tObFZsSm9XakYwTVdGWE5UQlBSbEpvV2pFd1oxQlRRbFpoVnpVd1QwVkdlV050UmpWUE1YaDFXVE5TZG1OclNqVldSMFp1VnpOV2NHSnVVVFJSTW5ob1lsaENiRnBHVW1oYU1UQm5VRk5DYm1KSE9XbFpWM2QxVmxkc2RXUkVhRVJpUjBaMFkwZFdhMUZZU25sWldHczNXRWMxYW1SSE9YbFJibXhWV1Zka1ltUlhiSFZrUkVVeVZrZEdibGhUUVRsSlIyUnpZakpLYUdKRE5WWmhWelV3VFZSYVFtTnVTbWhsVkhSalltMU9NR0l6U2tObFZsSm9XakYwTVdGWE5UQk5la3BWV1Zka1pFbEVNR2RhTW5oMldXMUdjMHhzVm5CaWJsRjZUV3RHZVdOdFJqVlBNWGgxV0VjMGRrdHBjR05pYVVGeFNVVnNkV0ZZVW5CWlYzaHdaVzFXZWtsSFJuVkpSemxwWVcxV2FtUkRRbXBpUnpsMVdsTkNhVmxZVG14YVEwSjJZbWxDY0dSSVRXZFpTRkoyVlROU2VXRlhOVzVXUjBadVdVTTFZMkpwUVhGWVJ6Um5TMmxCY1V0ck5YWmtSMVUyUzJsdloxWkhhSEJqZVVKdFpGYzFhbVJIYkhaaWFVSjJZbTE0TlVsSVRqRmpTRUoyWTI1U2VrbEhUbk5pTWpWd1ltMWpaMlJ0Um5Oa1YxWjZTVWhrY0dSSFoyZGtSMFp1WTNsQ2RscHNlSFZKUTI5bldVVktkbUl5ZUd4WlZ6Vm5URU5DWjFKSFJqQmFWMEZ6U1VkQ1JtTnVTblpqYlVGelNVZENUMlJYTVdsYVdFcG5URU5DWjFWdFZtNVNXR2gzV1VOM1oySXpTV2RaUms0d1kyMXNkVm95UVhWWVJ6Um5TMng0ZFVsRGIyZFJTRUo1WVZoYWFHUkhWbU5pYVVGeFNVVkNkMWxZU21oaVUwSTNWREpLY1ZwWFRqQm1VMEoyV1cxd2JGa3pVV2RXUjJoc1NVYzVhV0Z0Vm1wa1EwSXdZbmxDYW1KSE9YVmFVelZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNOMk16VW5saFZ6VnVabE5DTUZsWFkyZFdSMmhzU1VkQ01HSXhUakJqYld4MVdqRlNhRm95UVdkaU1sbG5aRWRvYkVsSE9XbGhiVlpxWkVOQ01HSjVRbXBpUnpsMVdsTTFZMkpwUVhGSlJVSjNXVmhLYUdKVFFqZFpiVGwyWWtkV2FHSnVNR2RYTW14NlVrZFdiR05HTUdkVk0wSnNXVEpzYldWVFFtaEpSMUpzV2xoQloxa3llSFppYlZWMVdFYzBaMHRwUWtGamJWWXdaRmhLZFdONVFqZFVNa3B4V2xkT01HWlRRbE5hV0ZJeFkyMDFla2xJVW05YVUwSndZbTFzTUdGWFJuTmhXSEJzV2tOQ2FtSkhPWFZhVXpWalltbEJjVXd4ZUhWYWJsWjFXVE5TY0dJeU5HZGhWelZ3WkVWT2MySXlOV3hSYm14VldWZGpiMkl5U25GYVYwNHdURU5DTUZsWFkzTkpSMng2VWtkV2JHTkRhMmRsTVhoMVNVTkNNbGxZU1dkUk0xSjJZMmxCT1VsSE9XbGhiVlpxWkVNMWFtSXlOWHBrU0VveFdUTlNkbU5xZEdOaWFVRm5Zek5rY0dSSFRtOUpRMmd3V1ZkamNFbElkR05pYVVGblNVTkNhbGxZVG14SlIwWjVZMjFHTlZGdVZtMWFiVlo1VmtkR2JrOXNlSFZKUTBGblNVTkJaMk50VmpCa1dFcDFTVWRLTVZwdFdteGphMDV6WWpJMWJFdEhPV2xoYlZacVpFTnJOMWhITldOaWFVRm5TVU5DYWxsWVRteEpSMHAyWWpKNFZWbFhZelpZUnpSblNVTkJaMWt5Um5wYVUwSnJXVmhTYkZaSFJtNVBiSGgxU1VOQlowbERRV2RqYlZZd1pGaEtkVWxITld4a2VVSkVaRWM1ZVV0RGRIWlpiWEJzV1ROUmNFOHhlSFZZUnpSblNVTkJaMWt5Um5wYVUwSnRZa2M1YUdSRVRYbFdSMFp1VDJsQ2FsbFlUbXhKUjFwellqSkdNRTVxVWxWWlYyTTJXRWMwWjBsRFFXZFpNa1o2V2xOQ2NHSnVVVFJXUjBadVQybENhbGxZVG14SlIyeDFaRVJGTWxaSFJtNVBhVUpxV1ZoT2JFbEhiSFZrUkUxNVZrZEdiazlzZUhWSlEwRm5TVWRPYUdNeVZXZGtWMngxWkVSb1ZWbFhZelpKUjA1b1l6SlZaMlJYYkhWa1JHaEVZa2RHZEdOSFZtdFdSMFp1VDJsQ2FsbFlUbXhKU0Zad1ltNVJlRTVzVW1oYWVtOW5XVEpHZWxwVFFqRmhWelV3VFhwS1ZWbFhZelpZUnpSblNVTkJaMGxEUVhaTWVVSlVXVmRhYUdOdGEyZE9VMEowWWpKS2NHSkhWV2RoVnpWcVlqTktlVnBYVGpCaVNHdG5ZVWRHZWtsSFFsQlpiWEJzV1ROU1owbEhSbnBKU0ZKdldsTkNhbUl5Tlhwa1NFb3hXVE5TZG1OcFFuWmFhVUl3WlZoQ2JGcERRbWhqYmtwb1pWaE5kVmhITkdkSlEwRm5TVU5DY0ZwcFFXOVJNMUoyWTJsQ2NHSnVUakJaVnpWcVdsYzViVWxGVGpCaU0wbHdTVWgwWTJKcFFXZEpRMEZuU1VOQloxRXpVblpqYVVFNVNVZE9NR0l6U2tObFZsSm9XakYwTUZsWFpHUlBNWGgxU1VOQlowbERRV2RtVm5oMVNVTkJaMGxEUVdka2JVWjVTVWRLTVZwdFdteGphVUU1U1VjNWFXRnRWbXBrUXpWcFpGZGFiVnBZU1RkWVJ6Um5TVU5CWjBsRFFubGFXRkl4WTIwMFoySnRWak5KUlU0d1lqTkpiMkZZVGtWYVYxWjNTVVE0WjFsdVZtMWFiVlo1VVRKNGRtSnRWVzlaYmxadFdtMVdlVXRUUVRaSlIwb3hXbTFhYkdOcGQyZGlNa3B4V2xkT01FeHRTalZrUjFaUVdtMWFlbHBZVVhOSlJ6bHBZVzFXYW1SRE5YTmFWelZ1WkVkbmNFOHhlSFZZUnpSblNVTkJaMWt5Um5wYVUwSjFaRmN4YVZwWVNsVlpWMk0yV0VjMFowbERRV2RaTWtaNldsTkNlbVJJU25CaWJXUlZXVmRqTmxoSE5HZEpRMEZuU1VOQ2VWcFlVakZqYlRSblltMVdNMGxGVGpCaU0wbHZZakpLY1ZwWFRqQkxWSFJqWW14NGRVbERRV2RKUjA1b1l6SlZaMk50Vm01YVdHaDNWa2RHYms5c2VIVkpRMEZuU1VOQloyUnRSbmxKU0Vwc1l6TldjMlJEUVRsSlJ6VnNaSGxDUkdSSE9YbExSemxwWVcxV2FtUkROWHBpTTFaNVdUSlZjMGxJU214U2JYaG9Xak5OZFZwWWFHeFplV2gyV1cxd2JGa3pVWEJMVkhSalltbEJaMGxEUVdkSlNFcHNZek5XYzJSRE5YTlpXRTR3VTFjMWExcFlaMmRRVTBKMldXMXdiRmt6VVhWaVIwWjZaRVZzZFZwSFZqUlBNWGgxU1VOQ09WaEhOR2RKU0Vwc1pFaFdlV0pwUW5sYVdFNHhZa2hSTjFoSE5UbFlSelZqWW0weGRscElWbk5hVXpWc1pVaENkbU51VW5wSlJEQm5ZVmMxY0dSRlRuTmlNalZzVVc1c1ZWbFhZemRZUnpScFdGZ3dQU0lzSWk4cUtseHVJQ29nU1c1cGRHbGhiR2w2WlhNZ1lXNGdiMkpxWldOMElHTnNiMjVsTGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IySnFaV04wSUZSb1pTQnZZbXBsWTNRZ2RHOGdZMnh2Ym1VdVhHNGdLaUJBY21WMGRYSnVjeUI3VDJKcVpXTjBmU0JTWlhSMWNtNXpJSFJvWlNCcGJtbDBhV0ZzYVhwbFpDQmpiRzl1WlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1cGRFTnNiMjVsVDJKcVpXTjBLRzlpYW1WamRDa2dlMXh1SUNCMllYSWdRM1J2Y2lBOUlHOWlhbVZqZEM1amIyNXpkSEoxWTNSdmNqdGNiaUFnYVdZZ0tDRW9kSGx3Wlc5bUlFTjBiM0lnUFQwZ0oyWjFibU4wYVc5dUp5QW1KaUJEZEc5eUlHbHVjM1JoYm1ObGIyWWdRM1J2Y2lrcElIdGNiaUFnSUNCRGRHOXlJRDBnVDJKcVpXTjBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnVaWGNnUTNSdmNqdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCcGJtbDBRMnh2Ym1WUFltcGxZM1E3WEc0aUxDSjJZWElnWjJWMFRHVnVaM1JvSUQwZ2NtVnhkV2x5WlNnbkxpOW5aWFJNWlc1bmRHZ25LU3hjYmlBZ0lDQnBjMHhsYm1kMGFDQTlJSEpsY1hWcGNtVW9KeTR2YVhOTVpXNW5kR2duS1R0Y2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZSFpoYkhWbFlDQnBjeUJoY25KaGVTMXNhV3RsTGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbElGUm9aU0IyWVd4MVpTQjBieUJqYUdWamF5NWNiaUFxSUVCeVpYUjFjbTV6SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCZ2RtRnNkV1ZnSUdseklHRnljbUY1TFd4cGEyVXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVhOQmNuSmhlVXhwYTJVb2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlIWmhiSFZsSUNFOUlHNTFiR3dnSmlZZ2FYTk1aVzVuZEdnb1oyVjBUR1Z1WjNSb0tIWmhiSFZsS1NrN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYVhOQmNuSmhlVXhwYTJVN1hHNGlMQ0l2S2lwY2JpQXFJRU5vWldOcmN5QnBaaUJnZG1Gc2RXVmdJR2x6SUdFZ2FHOXpkQ0J2WW1wbFkzUWdhVzRnU1VVZ1BDQTVMbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUZSb1pTQjJZV3gxWlNCMGJ5QmphR1ZqYXk1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRpYjI5c1pXRnVmU0JTWlhSMWNtNXpJR0IwY25WbFlDQnBaaUJnZG1Gc2RXVmdJR2x6SUdFZ2FHOXpkQ0J2WW1wbFkzUXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFMMXh1ZG1GeUlHbHpTRzl6ZEU5aWFtVmpkQ0E5SUNobWRXNWpkR2x2YmlncElIdGNiaUFnZEhKNUlIdGNiaUFnSUNCUFltcGxZM1FvZXlBbmRHOVRkSEpwYm1jbk9pQXdJSDBnS3lBbkp5azdYRzRnSUgwZ1kyRjBZMmdvWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtZFc1amRHbHZiaWdwSUhzZ2NtVjBkWEp1SUdaaGJITmxPeUI5TzF4dUlDQjlYRzRnSUhKbGRIVnliaUJtZFc1amRHbHZiaWgyWVd4MVpTa2dlMXh1SUNBZ0lDOHZJRWxGSUR3Z09TQndjbVZ6Wlc1MGN5QnRZVzU1SUdodmMzUWdiMkpxWldOMGN5QmhjeUJnVDJKcVpXTjBZQ0J2WW1wbFkzUnpJSFJvWVhRZ1kyRnVJR052WlhKalpWeHVJQ0FnSUM4dklIUnZJSE4wY21sdVozTWdaR1Z6Y0dsMFpTQm9ZWFpwYm1jZ2FXMXdjbTl3WlhKc2VTQmtaV1pwYm1Wa0lHQjBiMU4wY21sdVoyQWdiV1YwYUc5a2N5NWNiaUFnSUNCeVpYUjFjbTRnZEhsd1pXOW1JSFpoYkhWbExuUnZVM1J5YVc1bklDRTlJQ2RtZFc1amRHbHZiaWNnSmlZZ2RIbHdaVzltSUNoMllXeDFaU0FySUNjbktTQTlQU0FuYzNSeWFXNW5KenRjYmlBZ2ZUdGNibjBvS1NrN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhWE5JYjNOMFQySnFaV04wTzF4dUlpd2lMeW9xSUZWelpXUWdkRzhnWkdWMFpXTjBJSFZ1YzJsbmJtVmtJR2x1ZEdWblpYSWdkbUZzZFdWekxpQXFMMXh1ZG1GeUlISmxTWE5WYVc1MElEMGdMMTVjWEdRckpDODdYRzVjYmk4cUtseHVJQ29nVlhObFpDQmhjeUIwYUdVZ1cyMWhlR2x0ZFcwZ2JHVnVaM1JvWFNob2RIUndPaTh2WldOdFlTMXBiblJsY201aGRHbHZibUZzTG05eVp5OWxZMjFoTFRJMk1pODJMakF2STNObFl5MXVkVzFpWlhJdWJXRjRYM05oWm1WZmFXNTBaV2RsY2lsY2JpQXFJRzltSUdGdUlHRnljbUY1TFd4cGEyVWdkbUZzZFdVdVhHNGdLaTljYm5aaGNpQk5RVmhmVTBGR1JWOUpUbFJGUjBWU0lEMGdPVEF3TnpFNU9USTFORGMwTURrNU1UdGNibHh1THlvcVhHNGdLaUJEYUdWamEzTWdhV1lnWUhaaGJIVmxZQ0JwY3lCaElIWmhiR2xrSUdGeWNtRjVMV3hwYTJVZ2FXNWtaWGd1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJR05vWldOckxseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnRzWlc1bmRHZzlUVUZZWDFOQlJrVmZTVTVVUlVkRlVsMGdWR2hsSUhWd2NHVnlJR0p2ZFc1a2N5QnZaaUJoSUhaaGJHbGtJR2x1WkdWNExseHVJQ29nUUhKbGRIVnlibk1nZTJKdmIyeGxZVzU5SUZKbGRIVnlibk1nWUhSeWRXVmdJR2xtSUdCMllXeDFaV0FnYVhNZ1lTQjJZV3hwWkNCcGJtUmxlQ3dnWld4elpTQmdabUZzYzJWZ0xseHVJQ292WEc1bWRXNWpkR2x2YmlCcGMwbHVaR1Y0S0haaGJIVmxMQ0JzWlc1bmRHZ3BJSHRjYmlBZ2RtRnNkV1VnUFNBb2RIbHdaVzltSUhaaGJIVmxJRDA5SUNkdWRXMWlaWEluSUh4OElISmxTWE5WYVc1MExuUmxjM1FvZG1Gc2RXVXBLU0EvSUN0MllXeDFaU0E2SUMweE8xeHVJQ0JzWlc1bmRHZ2dQU0JzWlc1bmRHZ2dQVDBnYm5Wc2JDQS9JRTFCV0Y5VFFVWkZYMGxPVkVWSFJWSWdPaUJzWlc1bmRHZzdYRzRnSUhKbGRIVnliaUIyWVd4MVpTQStJQzB4SUNZbUlIWmhiSFZsSUNVZ01TQTlQU0F3SUNZbUlIWmhiSFZsSUR3Z2JHVnVaM1JvTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJR2x6U1c1a1pYZzdYRzRpTENKMllYSWdhWE5CY25KaGVVeHBhMlVnUFNCeVpYRjFhWEpsS0NjdUwybHpRWEp5WVhsTWFXdGxKeWtzWEc0Z0lDQWdhWE5KYm1SbGVDQTlJSEpsY1hWcGNtVW9KeTR2YVhOSmJtUmxlQ2NwTEZ4dUlDQWdJR2x6VDJKcVpXTjBJRDBnY21WeGRXbHlaU2duTGk0dmJHRnVaeTlwYzA5aWFtVmpkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFTm9aV05yY3lCcFppQjBhR1VnY0hKdmRtbGtaV1FnWVhKbmRXMWxiblJ6SUdGeVpTQm1jbTl0SUdGdUlHbDBaWEpoZEdWbElHTmhiR3d1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSEJ2ZEdWdWRHbGhiQ0JwZEdWeVlYUmxaU0IyWVd4MVpTQmhjbWQxYldWdWRDNWNiaUFxSUVCd1lYSmhiU0I3S24wZ2FXNWtaWGdnVkdobElIQnZkR1Z1ZEdsaGJDQnBkR1Z5WVhSbFpTQnBibVJsZUNCdmNpQnJaWGtnWVhKbmRXMWxiblF1WEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJRzlpYW1WamRDQlVhR1VnY0c5MFpXNTBhV0ZzSUdsMFpYSmhkR1ZsSUc5aWFtVmpkQ0JoY21kMWJXVnVkQzVjYmlBcUlFQnlaWFIxY201eklIdGliMjlzWldGdWZTQlNaWFIxY201eklHQjBjblZsWUNCcFppQjBhR1VnWVhKbmRXMWxiblJ6SUdGeVpTQm1jbTl0SUdGdUlHbDBaWEpoZEdWbElHTmhiR3dzSUdWc2MyVWdZR1poYkhObFlDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTkpkR1Z5WVhSbFpVTmhiR3dvZG1Gc2RXVXNJR2x1WkdWNExDQnZZbXBsWTNRcElIdGNiaUFnYVdZZ0tDRnBjMDlpYW1WamRDaHZZbXBsWTNRcEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNGdJSFpoY2lCMGVYQmxJRDBnZEhsd1pXOW1JR2x1WkdWNE8xeHVJQ0JwWmlBb2RIbHdaU0E5UFNBbmJuVnRZbVZ5SjF4dUlDQWdJQ0FnUHlBb2FYTkJjbkpoZVV4cGEyVW9iMkpxWldOMEtTQW1KaUJwYzBsdVpHVjRLR2x1WkdWNExDQnZZbXBsWTNRdWJHVnVaM1JvS1NsY2JpQWdJQ0FnSURvZ0tIUjVjR1VnUFQwZ0ozTjBjbWx1WnljZ0ppWWdhVzVrWlhnZ2FXNGdiMkpxWldOMEtTa2dlMXh1SUNBZ0lIWmhjaUJ2ZEdobGNpQTlJRzlpYW1WamRGdHBibVJsZUYwN1hHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbElEMDlQU0IyWVd4MVpTQS9JQ2gyWVd4MVpTQTlQVDBnYjNSb1pYSXBJRG9nS0c5MGFHVnlJQ0U5UFNCdmRHaGxjaWs3WEc0Z0lIMWNiaUFnY21WMGRYSnVJR1poYkhObE8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUdselNYUmxjbUYwWldWRFlXeHNPMXh1SWl3aWRtRnlJR2x6UVhKeVlYa2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6UVhKeVlYa25LU3hjYmlBZ0lDQjBiMDlpYW1WamRDQTlJSEpsY1hWcGNtVW9KeTR2ZEc5UFltcGxZM1FuS1R0Y2JseHVMeW9xSUZWelpXUWdkRzhnYldGMFkyZ2djSEp2Y0dWeWRIa2dibUZ0WlhNZ2QybDBhR2x1SUhCeWIzQmxjblI1SUhCaGRHaHpMaUFxTDF4dWRtRnlJSEpsU1hORVpXVndVSEp2Y0NBOUlDOWNYQzU4WEZ4YktEODZXMTViWEZ4ZFhTcDhLRnRjSWlkZEtTZy9PaWcvSVZ4Y01TbGJYbHhjYmx4Y1hGeGRmRnhjWEZ3dUtTby9YRnd4S1Z4Y1hTOHNYRzRnSUNBZ2NtVkpjMUJzWVdsdVVISnZjQ0E5SUM5ZVhGeDNLaVF2TzF4dVhHNHZLaXBjYmlBcUlFTm9aV05yY3lCcFppQmdkbUZzZFdWZ0lHbHpJR0VnY0hKdmNHVnlkSGtnYm1GdFpTQmhibVFnYm05MElHRWdjSEp2Y0dWeWRIa2djR0YwYUM1Y2JpQXFYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb2dRSEJoY21GdElIc3FmU0IyWVd4MVpTQlVhR1VnZG1Gc2RXVWdkRzhnWTJobFkyc3VYRzRnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnVzI5aWFtVmpkRjBnVkdobElHOWlhbVZqZENCMGJ5QnhkV1Z5ZVNCclpYbHpJRzl1TGx4dUlDb2dRSEpsZEhWeWJuTWdlMkp2YjJ4bFlXNTlJRkpsZEhWeWJuTWdZSFJ5ZFdWZ0lHbG1JR0IyWVd4MVpXQWdhWE1nWVNCd2NtOXdaWEowZVNCdVlXMWxMQ0JsYkhObElHQm1ZV3h6WldBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdselMyVjVLSFpoYkhWbExDQnZZbXBsWTNRcElIdGNiaUFnZG1GeUlIUjVjR1VnUFNCMGVYQmxiMllnZG1Gc2RXVTdYRzRnSUdsbUlDZ29kSGx3WlNBOVBTQW5jM1J5YVc1bkp5QW1KaUJ5WlVselVHeGhhVzVRY205d0xuUmxjM1FvZG1Gc2RXVXBLU0I4ZkNCMGVYQmxJRDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJSDFjYmlBZ2FXWWdLR2x6UVhKeVlYa29kbUZzZFdVcEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNGdJSFpoY2lCeVpYTjFiSFFnUFNBaGNtVkpjMFJsWlhCUWNtOXdMblJsYzNRb2RtRnNkV1VwTzF4dUlDQnlaWFIxY200Z2NtVnpkV3gwSUh4OElDaHZZbXBsWTNRZ0lUMGdiblZzYkNBbUppQjJZV3gxWlNCcGJpQjBiMDlpYW1WamRDaHZZbXBsWTNRcEtUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCcGMwdGxlVHRjYmlJc0luWmhjaUJNWVhwNVYzSmhjSEJsY2lBOUlISmxjWFZwY21Vb0p5NHZUR0Y2ZVZkeVlYQndaWEluS1N4Y2JpQWdJQ0JuWlhSRVlYUmhJRDBnY21WeGRXbHlaU2duTGk5blpYUkVZWFJoSnlrc1hHNGdJQ0FnWjJWMFJuVnVZMDVoYldVZ1BTQnlaWEYxYVhKbEtDY3VMMmRsZEVaMWJtTk9ZVzFsSnlrc1hHNGdJQ0FnYkc5a1lYTm9JRDBnY21WeGRXbHlaU2duTGk0dlkyaGhhVzR2Ykc5a1lYTm9KeWs3WEc1Y2JpOHFLbHh1SUNvZ1EyaGxZMnR6SUdsbUlHQm1kVzVqWUNCb1lYTWdZU0JzWVhwNUlHTnZkVzUwWlhKd1lYSjBMbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCbWRXNWpJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QmphR1ZqYXk1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRpYjI5c1pXRnVmU0JTWlhSMWNtNXpJR0IwY25WbFlDQnBaaUJnWm5WdVkyQWdhR0Z6SUdFZ2JHRjZlU0JqYjNWdWRHVnljR0Z5ZEN3Z1pXeHpaU0JnWm1Gc2MyVmdMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMHhoZW1saFlteGxLR1oxYm1NcElIdGNiaUFnZG1GeUlHWjFibU5PWVcxbElEMGdaMlYwUm5WdVkwNWhiV1VvWm5WdVl5a3NYRzRnSUNBZ0lDQnZkR2hsY2lBOUlHeHZaR0Z6YUZ0bWRXNWpUbUZ0WlYwN1hHNWNiaUFnYVdZZ0tIUjVjR1Z2WmlCdmRHaGxjaUFoUFNBblpuVnVZM1JwYjI0bklIeDhJQ0VvWm5WdVkwNWhiV1VnYVc0Z1RHRjZlVmR5WVhCd1pYSXVjSEp2ZEc5MGVYQmxLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1SUNCcFppQW9ablZ1WXlBOVBUMGdiM1JvWlhJcElIdGNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dUlDQjJZWElnWkdGMFlTQTlJR2RsZEVSaGRHRW9iM1JvWlhJcE8xeHVJQ0J5WlhSMWNtNGdJU0ZrWVhSaElDWW1JR1oxYm1NZ1BUMDlJR1JoZEdGYk1GMDdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2FYTk1ZWHBwWVdKc1pUdGNiaUlzSWk4cUtseHVJQ29nVlhObFpDQmhjeUIwYUdVZ1cyMWhlR2x0ZFcwZ2JHVnVaM1JvWFNob2RIUndPaTh2WldOdFlTMXBiblJsY201aGRHbHZibUZzTG05eVp5OWxZMjFoTFRJMk1pODJMakF2STNObFl5MXVkVzFpWlhJdWJXRjRYM05oWm1WZmFXNTBaV2RsY2lsY2JpQXFJRzltSUdGdUlHRnljbUY1TFd4cGEyVWdkbUZzZFdVdVhHNGdLaTljYm5aaGNpQk5RVmhmVTBGR1JWOUpUbFJGUjBWU0lEMGdPVEF3TnpFNU9USTFORGMwTURrNU1UdGNibHh1THlvcVhHNGdLaUJEYUdWamEzTWdhV1lnWUhaaGJIVmxZQ0JwY3lCaElIWmhiR2xrSUdGeWNtRjVMV3hwYTJVZ2JHVnVaM1JvTGx4dUlDcGNiaUFxSUNvcVRtOTBaVG9xS2lCVWFHbHpJR1oxYm1OMGFXOXVJR2x6SUdKaGMyVmtJRzl1SUZ0Z1ZHOU1aVzVuZEdoZ1hTaG9kSFJ3T2k4dlpXTnRZUzFwYm5SbGNtNWhkR2x2Ym1Gc0xtOXlaeTlsWTIxaExUSTJNaTgyTGpBdkkzTmxZeTEwYjJ4bGJtZDBhQ2t1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJR05vWldOckxseHVJQ29nUUhKbGRIVnlibk1nZTJKdmIyeGxZVzU5SUZKbGRIVnlibk1nWUhSeWRXVmdJR2xtSUdCMllXeDFaV0FnYVhNZ1lTQjJZV3hwWkNCc1pXNW5kR2dzSUdWc2MyVWdZR1poYkhObFlDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTk1aVzVuZEdnb2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCMllXeDFaU0E5UFNBbmJuVnRZbVZ5SnlBbUppQjJZV3gxWlNBK0lDMHhJQ1ltSUhaaGJIVmxJQ1VnTVNBOVBTQXdJQ1ltSUhaaGJIVmxJRHc5SUUxQldGOVRRVVpGWDBsT1ZFVkhSVkk3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhWE5NWlc1bmRHZzdYRzRpTENJdktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCZ2RtRnNkV1ZnSUdseklHOWlhbVZqZEMxc2FXdGxMbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUZSb1pTQjJZV3gxWlNCMGJ5QmphR1ZqYXk1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRpYjI5c1pXRnVmU0JTWlhSMWNtNXpJR0IwY25WbFlDQnBaaUJnZG1Gc2RXVmdJR2x6SUc5aWFtVmpkQzFzYVd0bExDQmxiSE5sSUdCbVlXeHpaV0F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6VDJKcVpXTjBUR2xyWlNoMllXeDFaU2tnZTF4dUlDQnlaWFIxY200Z0lTRjJZV3gxWlNBbUppQjBlWEJsYjJZZ2RtRnNkV1VnUFQwZ0oyOWlhbVZqZENjN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYVhOUFltcGxZM1JNYVd0bE8xeHVJaXdpZG1GeUlHbHpUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25MaTR2YkdGdVp5OXBjMDlpYW1WamRDY3BPMXh1WEc0dktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCZ2RtRnNkV1ZnSUdseklITjFhWFJoWW14bElHWnZjaUJ6ZEhKcFkzUWdaWEYxWVd4cGRIa2dZMjl0Y0dGeWFYTnZibk1zSUdrdVpTNGdZRDA5UFdBdVhHNGdLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFJRUJ3WVhKaGJTQjdLbjBnZG1Gc2RXVWdWR2hsSUhaaGJIVmxJSFJ2SUdOb1pXTnJMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UySnZiMnhsWVc1OUlGSmxkSFZ5Ym5NZ1lIUnlkV1ZnSUdsbUlHQjJZV3gxWldBZ2FXWWdjM1ZwZEdGaWJHVWdabTl5SUhOMGNtbGpkRnh1SUNvZ0lHVnhkV0ZzYVhSNUlHTnZiWEJoY21semIyNXpMQ0JsYkhObElHQm1ZV3h6WldBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUdselUzUnlhV04wUTI5dGNHRnlZV0pzWlNoMllXeDFaU2tnZTF4dUlDQnlaWFIxY200Z2RtRnNkV1VnUFQwOUlIWmhiSFZsSUNZbUlDRnBjMDlpYW1WamRDaDJZV3gxWlNrN1hHNTlYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYVhOVGRISnBZM1JEYjIxd1lYSmhZbXhsTzF4dUlpd2lkbUZ5SUdGeWNtRjVRMjl3ZVNBOUlISmxjWFZwY21Vb0p5NHZZWEp5WVhsRGIzQjVKeWtzWEc0Z0lDQWdZMjl0Y0c5elpVRnlaM01nUFNCeVpYRjFhWEpsS0NjdUwyTnZiWEJ2YzJWQmNtZHpKeWtzWEc0Z0lDQWdZMjl0Y0c5elpVRnlaM05TYVdkb2RDQTlJSEpsY1hWcGNtVW9KeTR2WTI5dGNHOXpaVUZ5WjNOU2FXZG9kQ2NwTEZ4dUlDQWdJSEpsY0d4aFkyVkliMnhrWlhKeklEMGdjbVZ4ZFdseVpTZ25MaTl5WlhCc1lXTmxTRzlzWkdWeWN5Y3BPMXh1WEc0dktpb2dWWE5sWkNCMGJ5QmpiMjF3YjNObElHSnBkRzFoYzJ0eklHWnZjaUIzY21Gd2NHVnlJRzFsZEdGa1lYUmhMaUFxTDF4dWRtRnlJRUpKVGtSZlJreEJSeUE5SURFc1hHNGdJQ0FnUTFWU1VsbGZRazlWVGtSZlJreEJSeUE5SURRc1hHNGdJQ0FnUTFWU1VsbGZSa3hCUnlBOUlEZ3NYRzRnSUNBZ1FWSlpYMFpNUVVjZ1BTQXhNamdzWEc0Z0lDQWdVa1ZCVWtkZlJreEJSeUE5SURJMU5qdGNibHh1THlvcUlGVnpaV1FnWVhNZ2RHaGxJR2x1ZEdWeWJtRnNJR0Z5WjNWdFpXNTBJSEJzWVdObGFHOXNaR1Z5TGlBcUwxeHVkbUZ5SUZCTVFVTkZTRTlNUkVWU0lEMGdKMTlmYkc5a1lYTm9YM0JzWVdObGFHOXNaR1Z5WDE4bk8xeHVYRzR2S2lCT1lYUnBkbVVnYldWMGFHOWtJSEpsWm1WeVpXNWpaWE1nWm05eUlIUm9iM05sSUhkcGRHZ2dkR2hsSUhOaGJXVWdibUZ0WlNCaGN5QnZkR2hsY2lCZ2JHOWtZWE5vWUNCdFpYUm9iMlJ6TGlBcUwxeHVkbUZ5SUc1aGRHbDJaVTFwYmlBOUlFMWhkR2d1YldsdU8xeHVYRzR2S2lwY2JpQXFJRTFsY21kbGN5QjBhR1VnWm5WdVkzUnBiMjRnYldWMFlXUmhkR0VnYjJZZ1lITnZkWEpqWldBZ2FXNTBieUJnWkdGMFlXQXVYRzRnS2x4dUlDb2dUV1Z5WjJsdVp5QnRaWFJoWkdGMFlTQnlaV1IxWTJWeklIUm9aU0J1ZFcxaVpYSWdiMllnZDNKaGNIQmxjbk1nY21WeGRXbHlaV1FnZEc4Z2FXNTJiMnRsSUdFZ1puVnVZM1JwYjI0dVhHNGdLaUJVYUdseklHbHpJSEJ2YzNOcFlteGxJR0psWTJGMWMyVWdiV1YwYUc5a2N5QnNhV3RsSUdCZkxtSnBibVJnTENCZ1h5NWpkWEp5ZVdBc0lHRnVaQ0JnWHk1d1lYSjBhV0ZzWUZ4dUlDb2diV0Y1SUdKbElHRndjR3hwWldRZ2NtVm5ZWEprYkdWemN5QnZaaUJsZUdWamRYUnBiMjRnYjNKa1pYSXVJRTFsZEdodlpITWdiR2xyWlNCZ1h5NWhjbmxnSUdGdVpDQmdYeTV5WldGeVoyQmNiaUFxSUdGMVoyMWxiblFnWm5WdVkzUnBiMjRnWVhKbmRXMWxiblJ6TENCdFlXdHBibWNnZEdobElHOXlaR1Z5SUdsdUlIZG9hV05vSUhSb1pYa2dZWEpsSUdWNFpXTjFkR1ZrSUdsdGNHOXlkR0Z1ZEN4Y2JpQXFJSEJ5WlhabGJuUnBibWNnZEdobElHMWxjbWRwYm1jZ2IyWWdiV1YwWVdSaGRHRXVJRWh2ZDJWMlpYSXNJSGRsSUcxaGEyVWdZVzRnWlhoalpYQjBhVzl1SUdadmNpQmhJSE5oWm1WY2JpQXFJR052YlcxdmJpQmpZWE5sSUhkb1pYSmxJR04xY25KcFpXUWdablZ1WTNScGIyNXpJR2hoZG1VZ1lGOHVZWEo1WUNCaGJtUWdiM0lnWUY4dWNtVmhjbWRnSUdGd2NHeHBaV1F1WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1FYSnlZWGw5SUdSaGRHRWdWR2hsSUdSbGMzUnBibUYwYVc5dUlHMWxkR0ZrWVhSaExseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdjMjkxY21ObElGUm9aU0J6YjNWeVkyVWdiV1YwWVdSaGRHRXVYRzRnS2lCQWNtVjBkWEp1Y3lCN1FYSnlZWGw5SUZKbGRIVnlibk1nWUdSaGRHRmdMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnRaWEpuWlVSaGRHRW9aR0YwWVN3Z2MyOTFjbU5sS1NCN1hHNGdJSFpoY2lCaWFYUnRZWE5ySUQwZ1pHRjBZVnN4WFN4Y2JpQWdJQ0FnSUhOeVkwSnBkRzFoYzJzZ1BTQnpiM1Z5WTJWYk1WMHNYRzRnSUNBZ0lDQnVaWGRDYVhSdFlYTnJJRDBnWW1sMGJXRnpheUI4SUhOeVkwSnBkRzFoYzJzc1hHNGdJQ0FnSUNCcGMwTnZiVzF2YmlBOUlHNWxkMEpwZEcxaGMyc2dQQ0JCVWxsZlJreEJSenRjYmx4dUlDQjJZWElnYVhORGIyMWlieUE5WEc0Z0lDQWdLSE55WTBKcGRHMWhjMnNnUFQwZ1FWSlpYMFpNUVVjZ0ppWWdZbWwwYldGemF5QTlQU0JEVlZKU1dWOUdURUZIS1NCOGZGeHVJQ0FnSUNoemNtTkNhWFJ0WVhOcklEMDlJRUZTV1Y5R1RFRkhJQ1ltSUdKcGRHMWhjMnNnUFQwZ1VrVkJVa2RmUmt4QlJ5QW1KaUJrWVhSaFd6ZGRMbXhsYm1kMGFDQThQU0J6YjNWeVkyVmJPRjBwSUh4OFhHNGdJQ0FnS0hOeVkwSnBkRzFoYzJzZ1BUMGdLRUZTV1Y5R1RFRkhJSHdnVWtWQlVrZGZSa3hCUnlrZ0ppWWdZbWwwYldGemF5QTlQU0JEVlZKU1dWOUdURUZIS1R0Y2JseHVJQ0F2THlCRmVHbDBJR1ZoY214NUlHbG1JRzFsZEdGa1lYUmhJR05oYmlkMElHSmxJRzFsY21kbFpDNWNiaUFnYVdZZ0tDRW9hWE5EYjIxdGIyNGdmSHdnYVhORGIyMWlieWtwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JpQWdmVnh1SUNBdkx5QlZjMlVnYzI5MWNtTmxJR0IwYUdselFYSm5ZQ0JwWmlCaGRtRnBiR0ZpYkdVdVhHNGdJR2xtSUNoemNtTkNhWFJ0WVhOcklDWWdRa2xPUkY5R1RFRkhLU0I3WEc0Z0lDQWdaR0YwWVZzeVhTQTlJSE52ZFhKalpWc3lYVHRjYmlBZ0lDQXZMeUJUWlhRZ2QyaGxiaUJqZFhKeWVXbHVaeUJoSUdKdmRXNWtJR1oxYm1OMGFXOXVMbHh1SUNBZ0lHNWxkMEpwZEcxaGMyc2dmRDBnS0dKcGRHMWhjMnNnSmlCQ1NVNUVYMFpNUVVjcElEOGdNQ0E2SUVOVlVsSlpYMEpQVlU1RVgwWk1RVWM3WEc0Z0lIMWNiaUFnTHk4Z1EyOXRjRzl6WlNCd1lYSjBhV0ZzSUdGeVozVnRaVzUwY3k1Y2JpQWdkbUZ5SUhaaGJIVmxJRDBnYzI5MWNtTmxXek5kTzF4dUlDQnBaaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQjJZWElnY0dGeWRHbGhiSE1nUFNCa1lYUmhXek5kTzF4dUlDQWdJR1JoZEdGYk0xMGdQU0J3WVhKMGFXRnNjeUEvSUdOdmJYQnZjMlZCY21kektIQmhjblJwWVd4ekxDQjJZV3gxWlN3Z2MyOTFjbU5sV3pSZEtTQTZJR0Z5Y21GNVEyOXdlU2gyWVd4MVpTazdYRzRnSUNBZ1pHRjBZVnMwWFNBOUlIQmhjblJwWVd4eklEOGdjbVZ3YkdGalpVaHZiR1JsY25Nb1pHRjBZVnN6WFN3Z1VFeEJRMFZJVDB4RVJWSXBJRG9nWVhKeVlYbERiM0I1S0hOdmRYSmpaVnMwWFNrN1hHNGdJSDFjYmlBZ0x5OGdRMjl0Y0c5elpTQndZWEowYVdGc0lISnBaMmgwSUdGeVozVnRaVzUwY3k1Y2JpQWdkbUZzZFdVZ1BTQnpiM1Z5WTJWYk5WMDdYRzRnSUdsbUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUhCaGNuUnBZV3h6SUQwZ1pHRjBZVnMxWFR0Y2JpQWdJQ0JrWVhSaFd6VmRJRDBnY0dGeWRHbGhiSE1nUHlCamIyMXdiM05sUVhKbmMxSnBaMmgwS0hCaGNuUnBZV3h6TENCMllXeDFaU3dnYzI5MWNtTmxXelpkS1NBNklHRnljbUY1UTI5d2VTaDJZV3gxWlNrN1hHNGdJQ0FnWkdGMFlWczJYU0E5SUhCaGNuUnBZV3h6SUQ4Z2NtVndiR0ZqWlVodmJHUmxjbk1vWkdGMFlWczFYU3dnVUV4QlEwVklUMHhFUlZJcElEb2dZWEp5WVhsRGIzQjVLSE52ZFhKalpWczJYU2s3WEc0Z0lIMWNiaUFnTHk4Z1ZYTmxJSE52ZFhKalpTQmdZWEpuVUc5ellDQnBaaUJoZG1GcGJHRmliR1V1WEc0Z0lIWmhiSFZsSUQwZ2MyOTFjbU5sV3pkZE8xeHVJQ0JwWmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0JrWVhSaFd6ZGRJRDBnWVhKeVlYbERiM0I1S0haaGJIVmxLVHRjYmlBZ2ZWeHVJQ0F2THlCVmMyVWdjMjkxY21ObElHQmhjbmxnSUdsbUlHbDBKM01nYzIxaGJHeGxjaTVjYmlBZ2FXWWdLSE55WTBKcGRHMWhjMnNnSmlCQlVsbGZSa3hCUnlrZ2UxeHVJQ0FnSUdSaGRHRmJPRjBnUFNCa1lYUmhXemhkSUQwOUlHNTFiR3dnUHlCemIzVnlZMlZiT0YwZ09pQnVZWFJwZG1WTmFXNG9aR0YwWVZzNFhTd2djMjkxY21ObFd6aGRLVHRjYmlBZ2ZWeHVJQ0F2THlCVmMyVWdjMjkxY21ObElHQmhjbWwwZVdBZ2FXWWdiMjVsSUdseklHNXZkQ0J3Y205MmFXUmxaQzVjYmlBZ2FXWWdLR1JoZEdGYk9WMGdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lHUmhkR0ZiT1YwZ1BTQnpiM1Z5WTJWYk9WMDdYRzRnSUgxY2JpQWdMeThnVlhObElITnZkWEpqWlNCZ1puVnVZMkFnWVc1a0lHMWxjbWRsSUdKcGRHMWhjMnR6TGx4dUlDQmtZWFJoV3pCZElEMGdjMjkxY21ObFd6QmRPMXh1SUNCa1lYUmhXekZkSUQwZ2JtVjNRbWwwYldGemF6dGNibHh1SUNCeVpYUjFjbTRnWkdGMFlUdGNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCdFpYSm5aVVJoZEdFN1hHNGlMQ0lvWm5WdVkzUnBiMjRnS0dkc2IySmhiQ2w3WEc1MllYSWdaMlYwVG1GMGFYWmxJRDBnY21WeGRXbHlaU2duTGk5blpYUk9ZWFJwZG1VbktUdGNibHh1THlvcUlFNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCWFpXRnJUV0Z3SUQwZ1oyVjBUbUYwYVhabEtHZHNiMkpoYkN3Z0oxZGxZV3ROWVhBbktUdGNibHh1THlvcUlGVnpaV1FnZEc4Z2MzUnZjbVVnWm5WdVkzUnBiMjRnYldWMFlXUmhkR0V1SUNvdlhHNTJZWElnYldWMFlVMWhjQ0E5SUZkbFlXdE5ZWEFnSmlZZ2JtVjNJRmRsWVd0TllYQTdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYldWMFlVMWhjRHRjYmx4dWZTa3VZMkZzYkNoMGFHbHpMSFI1Y0dWdlppQm5iRzlpWVd3Z0lUMDlJRndpZFc1a1pXWnBibVZrWENJZ1B5Qm5iRzlpWVd3Z09pQjBlWEJsYjJZZ2MyVnNaaUFoUFQwZ1hDSjFibVJsWm1sdVpXUmNJaUEvSUhObGJHWWdPaUIwZVhCbGIyWWdkMmx1Wkc5M0lDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUlEOGdkMmx1Wkc5M0lEb2dlMzBwWEc0dkx5TWdjMjkxY21ObFRXRndjR2x1WjFWU1REMWtZWFJoT21Gd2NHeHBZMkYwYVc5dUwycHpiMjQ3WTJoaGNuTmxkRHAxZEdZdE9EdGlZWE5sTmpRc1pYbEtNbHBZU25waFZ6bDFTV3B2ZWt4RFNucGlNMVo1V1RKV2VrbHFjR0pKYlRWMldrZFdabUpYT1d0a1YzaHNZM2s1YzJJeVVtaGpNbWQwV1RJNWRHTkhSakJNTW14MVpFZFdlV0p0Um5OTU1qRnNaRWRHVGxsWVFYVmhiazFwV0ZOM2FXSnRSblJhV0UxcFQyeDBaRXhEU25SWldFSjNZVmMxYm1ONVNUWkphblJDVVZWR1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWtscGQybGFiV3h6V2xOSk5rbHRaR3hpYlZaNVdWaFNiRnBETlhGamVVbHpTVzVPZG1SWVNtcGFWa3AyWWpOUmFVOXBTV2xNUTBwNllqTldlVmt5Vm5wUk1qbDFaRWRXZFdSRFNUWlhlVW95V1ZoSloxb3lWakJVYlVZd1lWaGFiRWxFTUdkamJWWjRaRmRzZVZwVFoyNU1hVGx1V2xoU1QxbFlVbkJrYlZWdVMxUjBZMkpzZUhWTWVXOXhTVVUxYUdSSGJESmFVMEowV2xoU2IySXlVV2RqYlZadFdsaEtiR0p0VG14amVUUm5TMms1WTJKdVdtaGphVUpZV2xkR2NsUlhSbmRKUkRCbldqSldNRlJ0UmpCaFdGcHNTMGRrYzJJeVNtaGlRM2RuU2pGa2JGbFhkRTVaV0VGdVMxUjBZMkpzZUhWTWVXOXhTVVpXZWxwWFVXZGtSemhuWXpOU2RtTnRWV2RhYmxaMVdUTlNjR0l5TkdkaVYxWXdXVmRTYUdSSFJYVkpRMjkyV0VjMU1sbFlTV2RpVjFZd1dWVXhhR05EUVRsSlJtUnNXVmQwVGxsWVFXZEthVmxuWW0xV00wbEdaR3haVjNST1dWaEJOMWhITldOaWJURjJXa2hXYzFwVE5XeGxTRUoyWTI1U2VrbEVNR2RpVjFZd1dWVXhhR05FZEdOaWFVcGtabEU5UFNJc0lpOHFLaUJWYzJWa0lIUnZJR3h2YjJ0MWNDQjFibTFwYm1sbWFXVmtJR1oxYm1OMGFXOXVJRzVoYldWekxpQXFMMXh1ZG1GeUlISmxZV3hPWVcxbGN5QTlJSHQ5TzF4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlISmxZV3hPWVcxbGN6dGNiaUlzSW5aaGNpQmhjbkpoZVVOdmNIa2dQU0J5WlhGMWFYSmxLQ2N1TDJGeWNtRjVRMjl3ZVNjcExGeHVJQ0FnSUdselNXNWtaWGdnUFNCeVpYRjFhWEpsS0NjdUwybHpTVzVrWlhnbktUdGNibHh1THlvZ1RtRjBhWFpsSUcxbGRHaHZaQ0J5WldabGNtVnVZMlZ6SUdadmNpQjBhRzl6WlNCM2FYUm9JSFJvWlNCellXMWxJRzVoYldVZ1lYTWdiM1JvWlhJZ1lHeHZaR0Z6YUdBZ2JXVjBhRzlrY3k0Z0tpOWNiblpoY2lCdVlYUnBkbVZOYVc0Z1BTQk5ZWFJvTG0xcGJqdGNibHh1THlvcVhHNGdLaUJTWlc5eVpHVnlJR0JoY25KaGVXQWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQnpjR1ZqYVdacFpXUWdhVzVrWlhobGN5QjNhR1Z5WlNCMGFHVWdaV3hsYldWdWRDQmhkRnh1SUNvZ2RHaGxJR1pwY25OMElHbHVaR1Y0SUdseklHRnpjMmxuYm1Wa0lHRnpJSFJvWlNCbWFYSnpkQ0JsYkdWdFpXNTBMQ0IwYUdVZ1pXeGxiV1Z1ZENCaGRGeHVJQ29nZEdobElITmxZMjl1WkNCcGJtUmxlQ0JwY3lCaGMzTnBaMjVsWkNCaGN5QjBhR1VnYzJWamIyNWtJR1ZzWlcxbGJuUXNJR0Z1WkNCemJ5QnZiaTVjYmlBcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWDBnWVhKeVlYa2dWR2hsSUdGeWNtRjVJSFJ2SUhKbGIzSmtaWEl1WEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCcGJtUmxlR1Z6SUZSb1pTQmhjbkpoYm1kbFpDQmhjbkpoZVNCcGJtUmxlR1Z6TGx4dUlDb2dRSEpsZEhWeWJuTWdlMEZ5Y21GNWZTQlNaWFIxY201eklHQmhjbkpoZVdBdVhHNGdLaTljYm1aMWJtTjBhVzl1SUhKbGIzSmtaWElvWVhKeVlYa3NJR2x1WkdWNFpYTXBJSHRjYmlBZ2RtRnlJR0Z5Y2t4bGJtZDBhQ0E5SUdGeWNtRjVMbXhsYm1kMGFDeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHNWhkR2wyWlUxcGJpaHBibVJsZUdWekxteGxibWQwYUN3Z1lYSnlUR1Z1WjNSb0tTeGNiaUFnSUNBZ0lHOXNaRUZ5Y21GNUlEMGdZWEp5WVhsRGIzQjVLR0Z5Y21GNUtUdGNibHh1SUNCM2FHbHNaU0FvYkdWdVozUm9MUzBwSUh0Y2JpQWdJQ0IyWVhJZ2FXNWtaWGdnUFNCcGJtUmxlR1Z6VzJ4bGJtZDBhRjA3WEc0Z0lDQWdZWEp5WVhsYmJHVnVaM1JvWFNBOUlHbHpTVzVrWlhnb2FXNWtaWGdzSUdGeWNreGxibWQwYUNrZ1B5QnZiR1JCY25KaGVWdHBibVJsZUYwZ09pQjFibVJsWm1sdVpXUTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHRnljbUY1TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSEpsYjNKa1pYSTdYRzRpTENJdktpb2dWWE5sWkNCaGN5QjBhR1VnYVc1MFpYSnVZV3dnWVhKbmRXMWxiblFnY0d4aFkyVm9iMnhrWlhJdUlDb3ZYRzUyWVhJZ1VFeEJRMFZJVDB4RVJWSWdQU0FuWDE5c2IyUmhjMmhmY0d4aFkyVm9iMnhrWlhKZlh5YzdYRzVjYmk4cUtseHVJQ29nVW1Wd2JHRmpaWE1nWVd4c0lHQndiR0ZqWldodmJHUmxjbUFnWld4bGJXVnVkSE1nYVc0Z1lHRnljbUY1WUNCM2FYUm9JR0Z1SUdsdWRHVnlibUZzSUhCc1lXTmxhRzlzWkdWeVhHNGdLaUJoYm1RZ2NtVjBkWEp1Y3lCaGJpQmhjbkpoZVNCdlppQjBhR1ZwY2lCcGJtUmxlR1Z6TGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCaGNuSmhlU0JVYUdVZ1lYSnlZWGtnZEc4Z2JXOWthV1o1TGx4dUlDb2dRSEJoY21GdElIc3FmU0J3YkdGalpXaHZiR1JsY2lCVWFHVWdjR3hoWTJWb2IyeGtaWElnZEc4Z2NtVndiR0ZqWlM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnYm1WM0lHRnljbUY1SUc5bUlIQnNZV05sYUc5c1pHVnlJR2x1WkdWNFpYTXVYRzRnS2k5Y2JtWjFibU4wYVc5dUlISmxjR3hoWTJWSWIyeGtaWEp6S0dGeWNtRjVMQ0J3YkdGalpXaHZiR1JsY2lrZ2UxeHVJQ0IyWVhJZ2FXNWtaWGdnUFNBdE1TeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlHRnljbUY1TG14bGJtZDBhQ3hjYmlBZ0lDQWdJSEpsYzBsdVpHVjRJRDBnTFRFc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCYlhUdGNibHh1SUNCM2FHbHNaU0FvS3l0cGJtUmxlQ0E4SUd4bGJtZDBhQ2tnZTF4dUlDQWdJR2xtSUNoaGNuSmhlVnRwYm1SbGVGMGdQVDA5SUhCc1lXTmxhRzlzWkdWeUtTQjdYRzRnSUNBZ0lDQmhjbkpoZVZ0cGJtUmxlRjBnUFNCUVRFRkRSVWhQVEVSRlVqdGNiaUFnSUNBZ0lISmxjM1ZzZEZzckszSmxjMGx1WkdWNFhTQTlJR2x1WkdWNE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnY21WemRXeDBPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlISmxjR3hoWTJWSWIyeGtaWEp6TzF4dUlpd2lkbUZ5SUdKaGMyVlRaWFJFWVhSaElEMGdjbVZ4ZFdseVpTZ25MaTlpWVhObFUyVjBSR0YwWVNjcExGeHVJQ0FnSUc1dmR5QTlJSEpsY1hWcGNtVW9KeTR1TDJSaGRHVXZibTkzSnlrN1hHNWNiaThxS2lCVmMyVmtJSFJ2SUdSbGRHVmpkQ0IzYUdWdUlHRWdablZ1WTNScGIyNGdZbVZqYjIxbGN5Qm9iM1F1SUNvdlhHNTJZWElnU0U5VVgwTlBWVTVVSUQwZ01UVXdMRnh1SUNBZ0lFaFBWRjlUVUVGT0lEMGdNVFk3WEc1Y2JpOHFLbHh1SUNvZ1UyVjBjeUJ0WlhSaFpHRjBZU0JtYjNJZ1lHWjFibU5nTGx4dUlDcGNiaUFxSUNvcVRtOTBaVG9xS2lCSlppQjBhR2x6SUdaMWJtTjBhVzl1SUdKbFkyOXRaWE1nYUc5MExDQnBMbVV1SUdseklHbHVkbTlyWldRZ1lTQnNiM1FnYVc0Z1lTQnphRzl5ZEZ4dUlDb2djR1Z5YVc5a0lHOW1JSFJwYldVc0lHbDBJSGRwYkd3Z2RISnBjQ0JwZEhNZ1luSmxZV3RsY2lCaGJtUWdkSEpoYm5OcGRHbHZiaUIwYnlCaGJpQnBaR1Z1ZEdsMGVTQm1kVzVqZEdsdmJseHVJQ29nZEc4Z1lYWnZhV1FnWjJGeVltRm5aU0JqYjJ4c1pXTjBhVzl1SUhCaGRYTmxjeUJwYmlCV09DNGdVMlZsSUZ0V09DQnBjM04xWlNBeU1EY3dYU2hvZEhSd2N6b3ZMMk52WkdVdVoyOXZaMnhsTG1OdmJTOXdMM1k0TDJsemMzVmxjeTlrWlhSaGFXdy9hV1E5TWpBM01DbGNiaUFxSUdadmNpQnRiM0psSUdSbGRHRnBiSE11WEc0Z0tseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWjFibU1nVkdobElHWjFibU4wYVc5dUlIUnZJR0Z6YzI5amFXRjBaU0J0WlhSaFpHRjBZU0IzYVhSb0xseHVJQ29nUUhCaGNtRnRJSHNxZlNCa1lYUmhJRlJvWlNCdFpYUmhaR0YwWVM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRHZFc1amRHbHZibjBnVW1WMGRYSnVjeUJnWm5WdVkyQXVYRzRnS2k5Y2JuWmhjaUJ6WlhSRVlYUmhJRDBnS0daMWJtTjBhVzl1S0NrZ2UxeHVJQ0IyWVhJZ1kyOTFiblFnUFNBd0xGeHVJQ0FnSUNBZ2JHRnpkRU5oYkd4bFpDQTlJREE3WEc1Y2JpQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtHdGxlU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQjJZWElnYzNSaGJYQWdQU0J1YjNjb0tTeGNiaUFnSUNBZ0lDQWdjbVZ0WVdsdWFXNW5JRDBnU0U5VVgxTlFRVTRnTFNBb2MzUmhiWEFnTFNCc1lYTjBRMkZzYkdWa0tUdGNibHh1SUNBZ0lHeGhjM1JEWVd4c1pXUWdQU0J6ZEdGdGNEdGNiaUFnSUNCcFppQW9jbVZ0WVdsdWFXNW5JRDRnTUNrZ2UxeHVJQ0FnSUNBZ2FXWWdLQ3NyWTI5MWJuUWdQajBnU0U5VVgwTlBWVTVVS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCclpYazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdOdmRXNTBJRDBnTUR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHSmhjMlZUWlhSRVlYUmhLR3RsZVN3Z2RtRnNkV1VwTzF4dUlDQjlPMXh1ZlNncEtUdGNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0J6WlhSRVlYUmhPMXh1SWl3aWRtRnlJR2x6UVhKbmRXMWxiblJ6SUQwZ2NtVnhkV2x5WlNnbkxpNHZiR0Z1Wnk5cGMwRnlaM1Z0Wlc1MGN5Y3BMRnh1SUNBZ0lHbHpRWEp5WVhrZ1BTQnlaWEYxYVhKbEtDY3VMaTlzWVc1bkwybHpRWEp5WVhrbktTeGNiaUFnSUNCcGMwbHVaR1Y0SUQwZ2NtVnhkV2x5WlNnbkxpOXBjMGx1WkdWNEp5a3NYRzRnSUNBZ2FYTk1aVzVuZEdnZ1BTQnlaWEYxYVhKbEtDY3VMMmx6VEdWdVozUm9KeWtzWEc0Z0lDQWdhWE5UZEhKcGJtY2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6VTNSeWFXNW5KeWtzWEc0Z0lDQWdhMlY1YzBsdUlEMGdjbVZ4ZFdseVpTZ25MaTR2YjJKcVpXTjBMMnRsZVhOSmJpY3BPMXh1WEc0dktpb2dWWE5sWkNCbWIzSWdibUYwYVhabElHMWxkR2h2WkNCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlHOWlhbVZqZEZCeWIzUnZJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaVHRjYmx4dUx5b3FJRlZ6WldRZ2RHOGdZMmhsWTJzZ2IySnFaV04wY3lCbWIzSWdiM2R1SUhCeWIzQmxjblJwWlhNdUlDb3ZYRzUyWVhJZ2FHRnpUM2R1VUhKdmNHVnlkSGtnUFNCdlltcGxZM1JRY205MGJ5NW9ZWE5QZDI1UWNtOXdaWEowZVR0Y2JseHVMeW9xWEc0Z0tpQkJJR1poYkd4aVlXTnJJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHOW1JR0JQWW1wbFkzUXVhMlY1YzJBZ2QyaHBZMmdnWTNKbFlYUmxjeUJoYmlCaGNuSmhlU0J2WmlCMGFHVmNiaUFxSUc5M2JpQmxiblZ0WlhKaFlteGxJSEJ5YjNCbGNuUjVJRzVoYldWeklHOW1JR0J2WW1wbFkzUmdMbHh1SUNwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjJKcVpXTjBJRlJvWlNCdlltcGxZM1FnZEc4Z2NYVmxjbmt1WEc0Z0tpQkFjbVYwZFhKdWN5QjdRWEp5WVhsOUlGSmxkSFZ5Ym5NZ2RHaGxJR0Z5Y21GNUlHOW1JSEJ5YjNCbGNuUjVJRzVoYldWekxseHVJQ292WEc1bWRXNWpkR2x2YmlCemFHbHRTMlY1Y3lodlltcGxZM1FwSUh0Y2JpQWdkbUZ5SUhCeWIzQnpJRDBnYTJWNWMwbHVLRzlpYW1WamRDa3NYRzRnSUNBZ0lDQndjbTl3YzB4bGJtZDBhQ0E5SUhCeWIzQnpMbXhsYm1kMGFDeGNiaUFnSUNBZ0lHeGxibWQwYUNBOUlIQnliM0J6VEdWdVozUm9JQ1ltSUc5aWFtVmpkQzVzWlc1bmRHZzdYRzVjYmlBZ2RtRnlJR0ZzYkc5M1NXNWtaWGhsY3lBOUlDRWhiR1Z1WjNSb0lDWW1JR2x6VEdWdVozUm9LR3hsYm1kMGFDa2dKaVpjYmlBZ0lDQW9hWE5CY25KaGVTaHZZbXBsWTNRcElIeDhJR2x6UVhKbmRXMWxiblJ6S0c5aWFtVmpkQ2tnZkh3Z2FYTlRkSEpwYm1jb2IySnFaV04wS1NrN1hHNWNiaUFnZG1GeUlHbHVaR1Y0SUQwZ0xURXNYRzRnSUNBZ0lDQnlaWE4xYkhRZ1BTQmJYVHRjYmx4dUlDQjNhR2xzWlNBb0t5dHBibVJsZUNBOElIQnliM0J6VEdWdVozUm9LU0I3WEc0Z0lDQWdkbUZ5SUd0bGVTQTlJSEJ5YjNCelcybHVaR1Y0WFR0Y2JpQWdJQ0JwWmlBb0tHRnNiRzkzU1c1a1pYaGxjeUFtSmlCcGMwbHVaR1Y0S0d0bGVTd2diR1Z1WjNSb0tTa2dmSHdnYUdGelQzZHVVSEp2Y0dWeWRIa3VZMkZzYkNodlltcGxZM1FzSUd0bGVTa3BJSHRjYmlBZ0lDQWdJSEpsYzNWc2RDNXdkWE5vS0d0bGVTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdjMmhwYlV0bGVYTTdYRzRpTENKMllYSWdhWE5QWW1wbFkzUWdQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6VDJKcVpXTjBKeWtzWEc0Z0lDQWdhWE5UZEhKcGJtY2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6VTNSeWFXNW5KeWtzWEc0Z0lDQWdjM1Z3Y0c5eWRDQTlJSEpsY1hWcGNtVW9KeTR1TDNOMWNIQnZjblFuS1R0Y2JseHVMeW9xWEc0Z0tpQkRiMjUyWlhKMGN5QmdkbUZzZFdWZ0lIUnZJR0Z1SUc5aWFtVmpkQ0JwWmlCcGRDZHpJRzV2ZENCdmJtVXVYRzRnS2x4dUlDb2dRSEJ5YVhaaGRHVmNiaUFxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1VnVkdobElIWmhiSFZsSUhSdklIQnliMk5sYzNNdVhHNGdLaUJBY21WMGRYSnVjeUI3VDJKcVpXTjBmU0JTWlhSMWNtNXpJSFJvWlNCdlltcGxZM1F1WEc0Z0tpOWNibVoxYm1OMGFXOXVJSFJ2VDJKcVpXTjBLSFpoYkhWbEtTQjdYRzRnSUdsbUlDaHpkWEJ3YjNKMExuVnVhVzVrWlhobFpFTm9ZWEp6SUNZbUlHbHpVM1J5YVc1bktIWmhiSFZsS1NrZ2UxeHVJQ0FnSUhaaGNpQnBibVJsZUNBOUlDMHhMRnh1SUNBZ0lDQWdJQ0JzWlc1bmRHZ2dQU0IyWVd4MVpTNXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlFOWlhbVZqZENoMllXeDFaU2s3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9LeXRwYm1SbGVDQThJR3hsYm1kMGFDa2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MFcybHVaR1Y0WFNBOUlIWmhiSFZsTG1Ob1lYSkJkQ2hwYm1SbGVDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHbHpUMkpxWldOMEtIWmhiSFZsS1NBL0lIWmhiSFZsSURvZ1QySnFaV04wS0haaGJIVmxLVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQjBiMDlpYW1WamREdGNiaUlzSW5aaGNpQmlZWE5sVkc5VGRISnBibWNnUFNCeVpYRjFhWEpsS0NjdUwySmhjMlZVYjFOMGNtbHVaeWNwTEZ4dUlDQWdJR2x6UVhKeVlYa2dQU0J5WlhGMWFYSmxLQ2N1TGk5c1lXNW5MMmx6UVhKeVlYa25LVHRjYmx4dUx5b3FJRlZ6WldRZ2RHOGdiV0YwWTJnZ2NISnZjR1Z5ZEhrZ2JtRnRaWE1nZDJsMGFHbHVJSEJ5YjNCbGNuUjVJSEJoZEdoekxpQXFMMXh1ZG1GeUlISmxVSEp2Y0U1aGJXVWdQU0F2VzE0dVcxeGNYVjByZkZ4Y1d5Zy9PaWd0UDF4Y1pDc29QenBjWEM1Y1hHUXJLVDhwZkNoYlhDSW5YU2tvS0Q4NktEOGhYRnd5S1Z0ZVhGeHVYRnhjWEYxOFhGeGNYQzRwS2o4cFhGd3lLVnhjWFM5bk8xeHVYRzR2S2lvZ1ZYTmxaQ0IwYnlCdFlYUmphQ0JpWVdOcmMyeGhjMmhsY3lCcGJpQndjbTl3WlhKMGVTQndZWFJvY3k0Z0tpOWNiblpoY2lCeVpVVnpZMkZ3WlVOb1lYSWdQU0F2WEZ4Y1hDaGNYRnhjS1Q4dlp6dGNibHh1THlvcVhHNGdLaUJEYjI1MlpYSjBjeUJnZG1Gc2RXVmdJSFJ2SUhCeWIzQmxjblI1SUhCaGRHZ2dZWEp5WVhrZ2FXWWdhWFFuY3lCdWIzUWdiMjVsTGx4dUlDcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpQkFjR0Z5WVcwZ2V5cDlJSFpoYkhWbElGUm9aU0IyWVd4MVpTQjBieUJ3Y205alpYTnpMbHh1SUNvZ1FISmxkSFZ5Ym5NZ2UwRnljbUY1ZlNCU1pYUjFjbTV6SUhSb1pTQndjbTl3WlhKMGVTQndZWFJvSUdGeWNtRjVMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjBiMUJoZEdnb2RtRnNkV1VwSUh0Y2JpQWdhV1lnS0dselFYSnlZWGtvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQjlYRzRnSUhaaGNpQnlaWE4xYkhRZ1BTQmJYVHRjYmlBZ1ltRnpaVlJ2VTNSeWFXNW5LSFpoYkhWbEtTNXlaWEJzWVdObEtISmxVSEp2Y0U1aGJXVXNJR1oxYm1OMGFXOXVLRzFoZEdOb0xDQnVkVzFpWlhJc0lIRjFiM1JsTENCemRISnBibWNwSUh0Y2JpQWdJQ0J5WlhOMWJIUXVjSFZ6YUNoeGRXOTBaU0EvSUhOMGNtbHVaeTV5WlhCc1lXTmxLSEpsUlhOallYQmxRMmhoY2l3Z0p5UXhKeWtnT2lBb2JuVnRZbVZ5SUh4OElHMWhkR05vS1NrN1hHNGdJSDBwTzF4dUlDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSFJ2VUdGMGFEdGNiaUlzSW5aaGNpQk1ZWHA1VjNKaGNIQmxjaUE5SUhKbGNYVnBjbVVvSnk0dlRHRjZlVmR5WVhCd1pYSW5LU3hjYmlBZ0lDQk1iMlJoYzJoWGNtRndjR1Z5SUQwZ2NtVnhkV2x5WlNnbkxpOU1iMlJoYzJoWGNtRndjR1Z5Snlrc1hHNGdJQ0FnWVhKeVlYbERiM0I1SUQwZ2NtVnhkV2x5WlNnbkxpOWhjbkpoZVVOdmNIa25LVHRjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1kyeHZibVVnYjJZZ1lIZHlZWEJ3WlhKZ0xseHVJQ3BjYmlBcUlFQndjbWwyWVhSbFhHNGdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdkM0poY0hCbGNpQlVhR1VnZDNKaGNIQmxjaUIwYnlCamJHOXVaUzVjYmlBcUlFQnlaWFIxY201eklIdFBZbXBsWTNSOUlGSmxkSFZ5Ym5NZ2RHaGxJR05zYjI1bFpDQjNjbUZ3Y0dWeUxseHVJQ292WEc1bWRXNWpkR2x2YmlCM2NtRndjR1Z5UTJ4dmJtVW9kM0poY0hCbGNpa2dlMXh1SUNCeVpYUjFjbTRnZDNKaGNIQmxjaUJwYm5OMFlXNWpaVzltSUV4aGVubFhjbUZ3Y0dWeVhHNGdJQ0FnUHlCM2NtRndjR1Z5TG1Oc2IyNWxLQ2xjYmlBZ0lDQTZJRzVsZHlCTWIyUmhjMmhYY21Gd2NHVnlLSGR5WVhCd1pYSXVYMTkzY21Gd2NHVmtYMThzSUhkeVlYQndaWEl1WDE5amFHRnBibDlmTENCaGNuSmhlVU52Y0hrb2QzSmhjSEJsY2k1ZlgyRmpkR2x2Ym5OZlh5a3BPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlIZHlZWEJ3WlhKRGJHOXVaVHRjYmlJc0luWmhjaUJpWVhObFEyeHZibVVnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWlZWE5sUTJ4dmJtVW5LU3hjYmlBZ0lDQmlhVzVrUTJGc2JHSmhZMnNnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWlhVzVrUTJGc2JHSmhZMnNuS1R0Y2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdaR1ZsY0NCamJHOXVaU0J2WmlCZ2RtRnNkV1ZnTGlCSlppQmdZM1Z6ZEc5dGFYcGxjbUFnYVhNZ2NISnZkbWxrWldRZ2FYUW5jeUJwYm5admEyVmtYRzRnS2lCMGJ5QndjbTlrZFdObElIUm9aU0JqYkc5dVpXUWdkbUZzZFdWekxpQkpaaUJnWTNWemRHOXRhWHBsY21BZ2NtVjBkWEp1Y3lCZ2RXNWtaV1pwYm1Wa1lDQmpiRzl1YVc1blhHNGdLaUJwY3lCb1lXNWtiR1ZrSUdKNUlIUm9aU0J0WlhSb2IyUWdhVzV6ZEdWaFpDNGdWR2hsSUdCamRYTjBiMjFwZW1WeVlDQnBjeUJpYjNWdVpDQjBieUJnZEdocGMwRnlaMkJjYmlBcUlHRnVaQ0JwYm5admEyVmtJSGRwZEdnZ2RYQWdkRzhnZEdoeVpXVWdZWEpuZFcxbGJuUTdJQ2gyWVd4MVpTQmJMQ0JwYm1SbGVIeHJaWGtzSUc5aWFtVmpkRjBwTGx4dUlDcGNiaUFxSUNvcVRtOTBaVG9xS2lCVWFHbHpJRzFsZEdodlpDQnBjeUJzYjI5elpXeDVJR0poYzJWa0lHOXVJSFJvWlZ4dUlDb2dXM04wY25WamRIVnlaV1FnWTJ4dmJtVWdZV3huYjNKcGRHaHRYU2hvZEhSd09pOHZkM2QzTG5jekxtOXlaeTlVVWk5b2RHMXNOUzlwYm1aeVlYTjBjblZqZEhWeVpTNW9kRzFzSTJsdWRHVnlibUZzTFhOMGNuVmpkSFZ5WldRdFkyeHZibWx1WnkxaGJHZHZjbWwwYUcwcExseHVJQ29nVkdobElHVnVkVzFsY21GaWJHVWdjSEp2Y0dWeWRHbGxjeUJ2WmlCZ1lYSm5kVzFsYm5SellDQnZZbXBsWTNSeklHRnVaQ0J2WW1wbFkzUnpJR055WldGMFpXUWdZbmxjYmlBcUlHTnZibk4wY25WamRHOXljeUJ2ZEdobGNpQjBhR0Z1SUdCUFltcGxZM1JnSUdGeVpTQmpiRzl1WldRZ2RHOGdjR3hoYVc0Z1lFOWlhbVZqZEdBZ2IySnFaV04wY3k0Z1FXNWNiaUFxSUdWdGNIUjVJRzlpYW1WamRDQnBjeUJ5WlhSMWNtNWxaQ0JtYjNJZ2RXNWpiRzl1WldGaWJHVWdkbUZzZFdWeklITjFZMmdnWVhNZ1puVnVZM1JwYjI1ekxDQkVUMDBnYm05a1pYTXNYRzRnS2lCTllYQnpMQ0JUWlhSekxDQmhibVFnVjJWaGEwMWhjSE11WEc0Z0tseHVJQ29nUUhOMFlYUnBZMXh1SUNvZ1FHMWxiV0psY2s5bUlGOWNiaUFxSUVCallYUmxaMjl5ZVNCTVlXNW5YRzRnS2lCQWNHRnlZVzBnZXlwOUlIWmhiSFZsSUZSb1pTQjJZV3gxWlNCMGJ5QmtaV1Z3SUdOc2IyNWxMbHh1SUNvZ1FIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ1cyTjFjM1J2YldsNlpYSmRJRlJvWlNCbWRXNWpkR2x2YmlCMGJ5QmpkWE4wYjIxcGVtVWdZMnh2Ym1sdVp5QjJZV3gxWlhNdVhHNGdLaUJBY0dGeVlXMGdleXA5SUZ0MGFHbHpRWEpuWFNCVWFHVWdZSFJvYVhOZ0lHSnBibVJwYm1jZ2IyWWdZR04xYzNSdmJXbDZaWEpnTGx4dUlDb2dRSEpsZEhWeWJuTWdleXA5SUZKbGRIVnlibk1nZEdobElHUmxaWEFnWTJ4dmJtVmtJSFpoYkhWbExseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcVhHNGdLaUIyWVhJZ2RYTmxjbk1nUFNCYlhHNGdLaUFnSUhzZ0ozVnpaWEluT2lBblltRnlibVY1SnlCOUxGeHVJQ29nSUNCN0lDZDFjMlZ5SnpvZ0oyWnlaV1FuSUgxY2JpQXFJRjA3WEc0Z0tseHVJQ29nZG1GeUlHUmxaWEFnUFNCZkxtTnNiMjVsUkdWbGNDaDFjMlZ5Y3lrN1hHNGdLaUJrWldWd1d6QmRJRDA5UFNCMWMyVnljMXN3WFR0Y2JpQXFJQzh2SUQwK0lHWmhiSE5sWEc0Z0tseHVJQ29nTHk4Z2RYTnBibWNnWVNCamRYTjBiMjFwZW1WeUlHTmhiR3hpWVdOclhHNGdLaUIyWVhJZ1pXd2dQU0JmTG1Oc2IyNWxSR1ZsY0Noa2IyTjFiV1Z1ZEM1aWIyUjVMQ0JtZFc1amRHbHZiaWgyWVd4MVpTa2dlMXh1SUNvZ0lDQnBaaUFvWHk1cGMwVnNaVzFsYm5Rb2RtRnNkV1VwS1NCN1hHNGdLaUFnSUNBZ2NtVjBkWEp1SUhaaGJIVmxMbU5zYjI1bFRtOWtaU2gwY25WbEtUdGNiaUFxSUNBZ2ZWeHVJQ29nZlNrN1hHNGdLbHh1SUNvZ1pXd2dQVDA5SUdSdlkzVnRaVzUwTG1KdlpIbGNiaUFxSUM4dklEMCtJR1poYkhObFhHNGdLaUJsYkM1dWIyUmxUbUZ0WlZ4dUlDb2dMeThnUFQ0Z1FrOUVXVnh1SUNvZ1pXd3VZMmhwYkdST2IyUmxjeTVzWlc1bmRHZzdYRzRnS2lBdkx5QTlQaUF5TUZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJqYkc5dVpVUmxaWEFvZG1Gc2RXVXNJR04xYzNSdmJXbDZaWElzSUhSb2FYTkJjbWNwSUh0Y2JpQWdjbVYwZFhKdUlIUjVjR1Z2WmlCamRYTjBiMjFwZW1WeUlEMDlJQ2RtZFc1amRHbHZiaWRjYmlBZ0lDQS9JR0poYzJWRGJHOXVaU2gyWVd4MVpTd2dkSEoxWlN3Z1ltbHVaRU5oYkd4aVlXTnJLR04xYzNSdmJXbDZaWElzSUhSb2FYTkJjbWNzSURNcEtWeHVJQ0FnSURvZ1ltRnpaVU5zYjI1bEtIWmhiSFZsTENCMGNuVmxLVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQmpiRzl1WlVSbFpYQTdYRzRpTENKMllYSWdhWE5CY25KaGVVeHBhMlVnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOXBjMEZ5Y21GNVRHbHJaU2NwTEZ4dUlDQWdJR2x6VDJKcVpXTjBUR2xyWlNBOUlISmxjWFZwY21Vb0p5NHVMMmx1ZEdWeWJtRnNMMmx6VDJKcVpXTjBUR2xyWlNjcE8xeHVYRzR2S2lvZ1ZYTmxaQ0JtYjNJZ2JtRjBhWFpsSUcxbGRHaHZaQ0J5WldabGNtVnVZMlZ6TGlBcUwxeHVkbUZ5SUc5aWFtVmpkRkJ5YjNSdklEMGdUMkpxWldOMExuQnliM1J2ZEhsd1pUdGNibHh1THlvcUlGVnpaV1FnZEc4Z1kyaGxZMnNnYjJKcVpXTjBjeUJtYjNJZ2IzZHVJSEJ5YjNCbGNuUnBaWE11SUNvdlhHNTJZWElnYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0J2WW1wbFkzUlFjbTkwYnk1b1lYTlBkMjVRY205d1pYSjBlVHRjYmx4dUx5b3FJRTVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5NGdLaTljYm5aaGNpQndjbTl3WlhKMGVVbHpSVzUxYldWeVlXSnNaU0E5SUc5aWFtVmpkRkJ5YjNSdkxuQnliM0JsY25SNVNYTkZiblZ0WlhKaFlteGxPMXh1WEc0dktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCZ2RtRnNkV1ZnSUdseklHTnNZWE56YVdacFpXUWdZWE1nWVc0Z1lHRnlaM1Z0Wlc1MGMyQWdiMkpxWldOMExseHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFZMkYwWldkdmNua2dUR0Z1WjF4dUlDb2dRSEJoY21GdElIc3FmU0IyWVd4MVpTQlVhR1VnZG1Gc2RXVWdkRzhnWTJobFkyc3VYRzRnS2lCQWNtVjBkWEp1Y3lCN1ltOXZiR1ZoYm4wZ1VtVjBkWEp1Y3lCZ2RISjFaV0FnYVdZZ1lIWmhiSFZsWUNCcGN5QmpiM0p5WldOMGJIa2dZMnhoYzNOcFptbGxaQ3dnWld4elpTQmdabUZzYzJWZ0xseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcVhHNGdLaUJmTG1selFYSm5kVzFsYm5SektHWjFibU4wYVc5dUtDa2dleUJ5WlhSMWNtNGdZWEpuZFcxbGJuUnpPeUI5S0NrcE8xeHVJQ29nTHk4Z1BUNGdkSEoxWlZ4dUlDcGNiaUFxSUY4dWFYTkJjbWQxYldWdWRITW9XekVzSURJc0lETmRLVHRjYmlBcUlDOHZJRDArSUdaaGJITmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHpRWEpuZFcxbGJuUnpLSFpoYkhWbEtTQjdYRzRnSUhKbGRIVnliaUJwYzA5aWFtVmpkRXhwYTJVb2RtRnNkV1VwSUNZbUlHbHpRWEp5WVhsTWFXdGxLSFpoYkhWbEtTQW1KbHh1SUNBZ0lHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29kbUZzZFdVc0lDZGpZV3hzWldVbktTQW1KaUFoY0hKdmNHVnlkSGxKYzBWdWRXMWxjbUZpYkdVdVkyRnNiQ2gyWVd4MVpTd2dKMk5oYkd4bFpTY3BPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlHbHpRWEpuZFcxbGJuUnpPMXh1SWl3aWRtRnlJR2RsZEU1aGRHbDJaU0E5SUhKbGNYVnBjbVVvSnk0dUwybHVkR1Z5Ym1Gc0wyZGxkRTVoZEdsMlpTY3BMRnh1SUNBZ0lHbHpUR1Z1WjNSb0lEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2YVhOTVpXNW5kR2duS1N4Y2JpQWdJQ0JwYzA5aWFtVmpkRXhwYTJVZ1BTQnlaWEYxYVhKbEtDY3VMaTlwYm5SbGNtNWhiQzlwYzA5aWFtVmpkRXhwYTJVbktUdGNibHh1THlvcUlHQlBZbXBsWTNRamRHOVRkSEpwYm1kZ0lISmxjM1ZzZENCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlHRnljbUY1VkdGbklEMGdKMXR2WW1wbFkzUWdRWEp5WVhsZEp6dGNibHh1THlvcUlGVnpaV1FnWm05eUlHNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCdlltcGxZM1JRY205MGJ5QTlJRTlpYW1WamRDNXdjbTkwYjNSNWNHVTdYRzVjYmk4cUtseHVJQ29nVlhObFpDQjBieUJ5WlhOdmJIWmxJSFJvWlNCYllIUnZVM1J5YVc1blZHRm5ZRjBvYUhSMGNEb3ZMMlZqYldFdGFXNTBaWEp1WVhScGIyNWhiQzV2Y21jdlpXTnRZUzB5TmpJdk5pNHdMeU56WldNdGIySnFaV04wTG5CeWIzUnZkSGx3WlM1MGIzTjBjbWx1WnlsY2JpQXFJRzltSUhaaGJIVmxjeTVjYmlBcUwxeHVkbUZ5SUc5aWFsUnZVM1J5YVc1bklEMGdiMkpxWldOMFVISnZkRzh1ZEc5VGRISnBibWM3WEc1Y2JpOHFJRTVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5Qm1iM0lnZEdodmMyVWdkMmwwYUNCMGFHVWdjMkZ0WlNCdVlXMWxJR0Z6SUc5MGFHVnlJR0JzYjJSaGMyaGdJRzFsZEdodlpITXVJQ292WEc1MllYSWdibUYwYVhabFNYTkJjbkpoZVNBOUlHZGxkRTVoZEdsMlpTaEJjbkpoZVN3Z0oybHpRWEp5WVhrbktUdGNibHh1THlvcVhHNGdLaUJEYUdWamEzTWdhV1lnWUhaaGJIVmxZQ0JwY3lCamJHRnpjMmxtYVdWa0lHRnpJR0Z1SUdCQmNuSmhlV0FnYjJKcVpXTjBMbHh1SUNwY2JpQXFJRUJ6ZEdGMGFXTmNiaUFxSUVCdFpXMWlaWEpQWmlCZlhHNGdLaUJBWTJGMFpXZHZjbmtnVEdGdVoxeHVJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaU0JVYUdVZ2RtRnNkV1VnZEc4Z1kyaGxZMnN1WEc0Z0tpQkFjbVYwZFhKdWN5QjdZbTl2YkdWaGJuMGdVbVYwZFhKdWN5QmdkSEoxWldBZ2FXWWdZSFpoYkhWbFlDQnBjeUJqYjNKeVpXTjBiSGtnWTJ4aGMzTnBabWxsWkN3Z1pXeHpaU0JnWm1Gc2MyVmdMbHh1SUNvZ1FHVjRZVzF3YkdWY2JpQXFYRzRnS2lCZkxtbHpRWEp5WVhrb1d6RXNJRElzSUROZEtUdGNiaUFxSUM4dklEMCtJSFJ5ZFdWY2JpQXFYRzRnS2lCZkxtbHpRWEp5WVhrb1puVnVZM1JwYjI0b0tTQjdJSEpsZEhWeWJpQmhjbWQxYldWdWRITTdJSDBvS1NrN1hHNGdLaUF2THlBOVBpQm1ZV3h6WlZ4dUlDb3ZYRzUyWVhJZ2FYTkJjbkpoZVNBOUlHNWhkR2wyWlVselFYSnlZWGtnZkh3Z1puVnVZM1JwYjI0b2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlHbHpUMkpxWldOMFRHbHJaU2gyWVd4MVpTa2dKaVlnYVhOTVpXNW5kR2dvZG1Gc2RXVXViR1Z1WjNSb0tTQW1KaUJ2WW1wVWIxTjBjbWx1Wnk1allXeHNLSFpoYkhWbEtTQTlQU0JoY25KaGVWUmhaenRjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhWE5CY25KaGVUdGNiaUlzSW5aaGNpQnBjMEZ5WjNWdFpXNTBjeUE5SUhKbGNYVnBjbVVvSnk0dmFYTkJjbWQxYldWdWRITW5LU3hjYmlBZ0lDQnBjMEZ5Y21GNUlEMGdjbVZ4ZFdseVpTZ25MaTlwYzBGeWNtRjVKeWtzWEc0Z0lDQWdhWE5CY25KaGVVeHBhMlVnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOXBjMEZ5Y21GNVRHbHJaU2NwTEZ4dUlDQWdJR2x6Um5WdVkzUnBiMjRnUFNCeVpYRjFhWEpsS0NjdUwybHpSblZ1WTNScGIyNG5LU3hjYmlBZ0lDQnBjMDlpYW1WamRFeHBhMlVnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOXBjMDlpYW1WamRFeHBhMlVuS1N4Y2JpQWdJQ0JwYzFOMGNtbHVaeUE5SUhKbGNYVnBjbVVvSnk0dmFYTlRkSEpwYm1jbktTeGNiaUFnSUNCclpYbHpJRDBnY21WeGRXbHlaU2duTGk0dmIySnFaV04wTDJ0bGVYTW5LVHRjYmx4dUx5b3FYRzRnS2lCRGFHVmphM01nYVdZZ1lIWmhiSFZsWUNCcGN5QmxiWEIwZVM0Z1FTQjJZV3gxWlNCcGN5QmpiMjV6YVdSbGNtVmtJR1Z0Y0hSNUlIVnViR1Z6Y3lCcGRDZHpJR0Z1WEc0Z0tpQmdZWEpuZFcxbGJuUnpZQ0J2WW1wbFkzUXNJR0Z5Y21GNUxDQnpkSEpwYm1jc0lHOXlJR3BSZFdWeWVTMXNhV3RsSUdOdmJHeGxZM1JwYjI0Z2QybDBhQ0JoSUd4bGJtZDBhRnh1SUNvZ1ozSmxZWFJsY2lCMGFHRnVJR0F3WUNCdmNpQmhiaUJ2WW1wbFkzUWdkMmwwYUNCdmQyNGdaVzUxYldWeVlXSnNaU0J3Y205d1pYSjBhV1Z6TGx4dUlDcGNiaUFxSUVCemRHRjBhV05jYmlBcUlFQnRaVzFpWlhKUFppQmZYRzRnS2lCQVkyRjBaV2R2Y25rZ1RHRnVaMXh1SUNvZ1FIQmhjbUZ0SUh0QmNuSmhlWHhQWW1wbFkzUjhjM1J5YVc1bmZTQjJZV3gxWlNCVWFHVWdkbUZzZFdVZ2RHOGdhVzV6Y0dWamRDNWNiaUFxSUVCeVpYUjFjbTV6SUh0aWIyOXNaV0Z1ZlNCU1pYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCZ2RtRnNkV1ZnSUdseklHVnRjSFI1TENCbGJITmxJR0JtWVd4elpXQXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUY4dWFYTkZiWEIwZVNodWRXeHNLVHRjYmlBcUlDOHZJRDArSUhSeWRXVmNiaUFxWEc0Z0tpQmZMbWx6Ulcxd2RIa29kSEoxWlNrN1hHNGdLaUF2THlBOVBpQjBjblZsWEc0Z0tseHVJQ29nWHk1cGMwVnRjSFI1S0RFcE8xeHVJQ29nTHk4Z1BUNGdkSEoxWlZ4dUlDcGNiaUFxSUY4dWFYTkZiWEIwZVNoYk1Td2dNaXdnTTEwcE8xeHVJQ29nTHk4Z1BUNGdabUZzYzJWY2JpQXFYRzRnS2lCZkxtbHpSVzF3ZEhrb2V5QW5ZU2M2SURFZ2ZTazdYRzRnS2lBdkx5QTlQaUJtWVd4elpWeHVJQ292WEc1bWRXNWpkR2x2YmlCcGMwVnRjSFI1S0haaGJIVmxLU0I3WEc0Z0lHbG1JQ2gyWVd4MVpTQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUgxY2JpQWdhV1lnS0dselFYSnlZWGxNYVd0bEtIWmhiSFZsS1NBbUppQW9hWE5CY25KaGVTaDJZV3gxWlNrZ2ZId2dhWE5UZEhKcGJtY29kbUZzZFdVcElIeDhJR2x6UVhKbmRXMWxiblJ6S0haaGJIVmxLU0I4ZkZ4dUlDQWdJQ0FnS0dselQySnFaV04wVEdsclpTaDJZV3gxWlNrZ0ppWWdhWE5HZFc1amRHbHZiaWgyWVd4MVpTNXpjR3hwWTJVcEtTa3BJSHRjYmlBZ0lDQnlaWFIxY200Z0lYWmhiSFZsTG14bGJtZDBhRHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdJV3RsZVhNb2RtRnNkV1VwTG14bGJtZDBhRHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnBjMFZ0Y0hSNU8xeHVJaXdpZG1GeUlHbHpUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25MaTlwYzA5aWFtVmpkQ2NwTzF4dVhHNHZLaW9nWUU5aWFtVmpkQ04wYjFOMGNtbHVaMkFnY21WemRXeDBJSEpsWm1WeVpXNWpaWE11SUNvdlhHNTJZWElnWm5WdVkxUmhaeUE5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNjN1hHNWNiaThxS2lCVmMyVmtJR1p2Y2lCdVlYUnBkbVVnYldWMGFHOWtJSEpsWm1WeVpXNWpaWE11SUNvdlhHNTJZWElnYjJKcVpXTjBVSEp2ZEc4Z1BTQlBZbXBsWTNRdWNISnZkRzkwZVhCbE8xeHVYRzR2S2lwY2JpQXFJRlZ6WldRZ2RHOGdjbVZ6YjJ4MlpTQjBhR1VnVzJCMGIxTjBjbWx1WjFSaFoyQmRLR2gwZEhBNkx5OWxZMjFoTFdsdWRHVnlibUYwYVc5dVlXd3ViM0puTDJWamJXRXRNall5THpZdU1DOGpjMlZqTFc5aWFtVmpkQzV3Y205MGIzUjVjR1V1ZEc5emRISnBibWNwWEc0Z0tpQnZaaUIyWVd4MVpYTXVYRzRnS2k5Y2JuWmhjaUJ2WW1wVWIxTjBjbWx1WnlBOUlHOWlhbVZqZEZCeWIzUnZMblJ2VTNSeWFXNW5PMXh1WEc0dktpcGNiaUFxSUVOb1pXTnJjeUJwWmlCZ2RtRnNkV1ZnSUdseklHTnNZWE56YVdacFpXUWdZWE1nWVNCZ1JuVnVZM1JwYjI1Z0lHOWlhbVZqZEM1Y2JpQXFYRzRnS2lCQWMzUmhkR2xqWEc0Z0tpQkFiV1Z0WW1WeVQyWWdYMXh1SUNvZ1FHTmhkR1ZuYjNKNUlFeGhibWRjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJR05vWldOckxseHVJQ29nUUhKbGRIVnlibk1nZTJKdmIyeGxZVzU5SUZKbGRIVnlibk1nWUhSeWRXVmdJR2xtSUdCMllXeDFaV0FnYVhNZ1kyOXljbVZqZEd4NUlHTnNZWE56YVdacFpXUXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFJRUJsZUdGdGNHeGxYRzRnS2x4dUlDb2dYeTVwYzBaMWJtTjBhVzl1S0Y4cE8xeHVJQ29nTHk4Z1BUNGdkSEoxWlZ4dUlDcGNiaUFxSUY4dWFYTkdkVzVqZEdsdmJpZ3ZZV0pqTHlrN1hHNGdLaUF2THlBOVBpQm1ZV3h6WlZ4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYzBaMWJtTjBhVzl1S0haaGJIVmxLU0I3WEc0Z0lDOHZJRlJvWlNCMWMyVWdiMllnWUU5aWFtVmpkQ04wYjFOMGNtbHVaMkFnWVhadmFXUnpJR2x6YzNWbGN5QjNhWFJvSUhSb1pTQmdkSGx3Wlc5bVlDQnZjR1Z5WVhSdmNseHVJQ0F2THlCcGJpQnZiR1JsY2lCMlpYSnphVzl1Y3lCdlppQkRhSEp2YldVZ1lXNWtJRk5oWm1GeWFTQjNhR2xqYUNCeVpYUjFjbTRnSjJaMWJtTjBhVzl1SnlCbWIzSWdjbVZuWlhobGMxeHVJQ0F2THlCaGJtUWdVMkZtWVhKcElEZ2dkMmhwWTJnZ2NtVjBkWEp1Y3lBbmIySnFaV04wSnlCbWIzSWdkSGx3WldRZ1lYSnlZWGtnWTI5dWMzUnlkV04wYjNKekxseHVJQ0J5WlhSMWNtNGdhWE5QWW1wbFkzUW9kbUZzZFdVcElDWW1JRzlpYWxSdlUzUnlhVzVuTG1OaGJHd29kbUZzZFdVcElEMDlJR1oxYm1OVVlXYzdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2FYTkdkVzVqZEdsdmJqdGNiaUlzSW5aaGNpQnBjMFoxYm1OMGFXOXVJRDBnY21WeGRXbHlaU2duTGk5cGMwWjFibU4wYVc5dUp5a3NYRzRnSUNBZ2FYTkliM04wVDJKcVpXTjBJRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dmFYTkliM04wVDJKcVpXTjBKeWtzWEc0Z0lDQWdhWE5QWW1wbFkzUk1hV3RsSUQwZ2NtVnhkV2x5WlNnbkxpNHZhVzUwWlhKdVlXd3ZhWE5QWW1wbFkzUk1hV3RsSnlrN1hHNWNiaThxS2lCVmMyVmtJSFJ2SUdSbGRHVmpkQ0JvYjNOMElHTnZibk4wY25WamRHOXljeUFvVTJGbVlYSnBJRDRnTlNrdUlDb3ZYRzUyWVhJZ2NtVkpjMGh2YzNSRGRHOXlJRDBnTDE1Y1hGdHZZbXBsWTNRZ0xpcy9RMjl1YzNSeWRXTjBiM0pjWEYwa0x6dGNibHh1THlvcUlGVnpaV1FnWm05eUlHNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCdlltcGxZM1JRY205MGJ5QTlJRTlpYW1WamRDNXdjbTkwYjNSNWNHVTdYRzVjYmk4cUtpQlZjMlZrSUhSdklISmxjMjlzZG1VZ2RHaGxJR1JsWTI5dGNHbHNaV1FnYzI5MWNtTmxJRzltSUdaMWJtTjBhVzl1Y3k0Z0tpOWNiblpoY2lCbWJsUnZVM1J5YVc1bklEMGdSblZ1WTNScGIyNHVjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5PMXh1WEc0dktpb2dWWE5sWkNCMGJ5QmphR1ZqYXlCdlltcGxZM1J6SUdadmNpQnZkMjRnY0hKdmNHVnlkR2xsY3k0Z0tpOWNiblpoY2lCb1lYTlBkMjVRY205d1pYSjBlU0E5SUc5aWFtVmpkRkJ5YjNSdkxtaGhjMDkzYmxCeWIzQmxjblI1TzF4dVhHNHZLaW9nVlhObFpDQjBieUJrWlhSbFkzUWdhV1lnWVNCdFpYUm9iMlFnYVhNZ2JtRjBhWFpsTGlBcUwxeHVkbUZ5SUhKbFNYTk9ZWFJwZG1VZ1BTQlNaV2RGZUhBb0oxNG5JQ3RjYmlBZ1ptNVViMU4wY21sdVp5NWpZV3hzS0doaGMwOTNibEJ5YjNCbGNuUjVLUzV5WlhCc1lXTmxLQzliWEZ4Y1hGNGtMaW9yUHlncFcxeGNYWHQ5ZkYwdlp5d2dKMXhjWEZ3a0ppY3BYRzRnSUM1eVpYQnNZV05sS0M5b1lYTlBkMjVRY205d1pYSjBlWHdvWm5WdVkzUnBiMjRwTGlvL0tEODlYRnhjWEZ4Y0tDbDhJR1p2Y2lBdUt6OG9QejFjWEZ4Y1hGeGRLUzluTENBbkpERXVLajhuS1NBcklDY2tKMXh1S1R0Y2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZSFpoYkhWbFlDQnBjeUJoSUc1aGRHbDJaU0JtZFc1amRHbHZiaTVjYmlBcVhHNGdLaUJBYzNSaGRHbGpYRzRnS2lCQWJXVnRZbVZ5VDJZZ1gxeHVJQ29nUUdOaGRHVm5iM0o1SUV4aGJtZGNiaUFxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1VnVkdobElIWmhiSFZsSUhSdklHTm9aV05yTGx4dUlDb2dRSEpsZEhWeWJuTWdlMkp2YjJ4bFlXNTlJRkpsZEhWeWJuTWdZSFJ5ZFdWZ0lHbG1JR0IyWVd4MVpXQWdhWE1nWVNCdVlYUnBkbVVnWm5WdVkzUnBiMjRzSUdWc2MyVWdZR1poYkhObFlDNWNiaUFxSUVCbGVHRnRjR3hsWEc0Z0tseHVJQ29nWHk1cGMwNWhkR2wyWlNoQmNuSmhlUzV3Y205MGIzUjVjR1V1Y0hWemFDazdYRzRnS2lBdkx5QTlQaUIwY25WbFhHNGdLbHh1SUNvZ1h5NXBjMDVoZEdsMlpTaGZLVHRjYmlBcUlDOHZJRDArSUdaaGJITmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbHpUbUYwYVhabEtIWmhiSFZsS1NCN1hHNGdJR2xtSUNoMllXeDFaU0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzRnSUdsbUlDaHBjMFoxYm1OMGFXOXVLSFpoYkhWbEtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCeVpVbHpUbUYwYVhabExuUmxjM1FvWm01VWIxTjBjbWx1Wnk1allXeHNLSFpoYkhWbEtTazdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHbHpUMkpxWldOMFRHbHJaU2gyWVd4MVpTa2dKaVlnS0dselNHOXpkRTlpYW1WamRDaDJZV3gxWlNrZ1B5QnlaVWx6VG1GMGFYWmxJRG9nY21WSmMwaHZjM1JEZEc5eUtTNTBaWE4wS0haaGJIVmxLVHRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnBjMDVoZEdsMlpUdGNiaUlzSWk4cUtseHVJQ29nUTJobFkydHpJR2xtSUdCMllXeDFaV0FnYVhNZ2RHaGxJRnRzWVc1bmRXRm5aU0IwZVhCbFhTaG9kSFJ3Y3pvdkwyVnpOUzVuYVhSb2RXSXVhVzh2STNnNEtTQnZaaUJnVDJKcVpXTjBZQzVjYmlBcUlDaGxMbWN1SUdGeWNtRjVjeXdnWm5WdVkzUnBiMjV6TENCdlltcGxZM1J6TENCeVpXZGxlR1Z6TENCZ2JtVjNJRTUxYldKbGNpZ3dLV0FzSUdGdVpDQmdibVYzSUZOMGNtbHVaeWduSnlsZ0tWeHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFZMkYwWldkdmNua2dUR0Z1WjF4dUlDb2dRSEJoY21GdElIc3FmU0IyWVd4MVpTQlVhR1VnZG1Gc2RXVWdkRzhnWTJobFkyc3VYRzRnS2lCQWNtVjBkWEp1Y3lCN1ltOXZiR1ZoYm4wZ1VtVjBkWEp1Y3lCZ2RISjFaV0FnYVdZZ1lIWmhiSFZsWUNCcGN5QmhiaUJ2WW1wbFkzUXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFJRUJsZUdGdGNHeGxYRzRnS2x4dUlDb2dYeTVwYzA5aWFtVmpkQ2g3ZlNrN1hHNGdLaUF2THlBOVBpQjBjblZsWEc0Z0tseHVJQ29nWHk1cGMwOWlhbVZqZENoYk1Td2dNaXdnTTEwcE8xeHVJQ29nTHk4Z1BUNGdkSEoxWlZ4dUlDcGNiaUFxSUY4dWFYTlBZbXBsWTNRb01TazdYRzRnS2lBdkx5QTlQaUJtWVd4elpWeHVJQ292WEc1bWRXNWpkR2x2YmlCcGMwOWlhbVZqZENoMllXeDFaU2tnZTF4dUlDQXZMeUJCZG05cFpDQmhJRlk0SUVwSlZDQmlkV2NnYVc0Z1EyaHliMjFsSURFNUxUSXdMbHh1SUNBdkx5QlRaV1VnYUhSMGNITTZMeTlqYjJSbExtZHZiMmRzWlM1amIyMHZjQzkyT0M5cGMzTjFaWE12WkdWMFlXbHNQMmxrUFRJeU9URWdabTl5SUcxdmNtVWdaR1YwWVdsc2N5NWNiaUFnZG1GeUlIUjVjR1VnUFNCMGVYQmxiMllnZG1Gc2RXVTdYRzRnSUhKbGRIVnliaUFoSVhaaGJIVmxJQ1ltSUNoMGVYQmxJRDA5SUNkdlltcGxZM1FuSUh4OElIUjVjR1VnUFQwZ0oyWjFibU4wYVc5dUp5azdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2FYTlBZbXBsWTNRN1hHNGlMQ0oyWVhJZ1ltRnpaVVp2Y2tsdUlEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2WW1GelpVWnZja2x1Snlrc1hHNGdJQ0FnYVhOQmNtZDFiV1Z1ZEhNZ1BTQnlaWEYxYVhKbEtDY3VMMmx6UVhKbmRXMWxiblJ6Snlrc1hHNGdJQ0FnYVhOSWIzTjBUMkpxWldOMElEMGdjbVZ4ZFdseVpTZ25MaTR2YVc1MFpYSnVZV3d2YVhOSWIzTjBUMkpxWldOMEp5a3NYRzRnSUNBZ2FYTlBZbXBsWTNSTWFXdGxJRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dmFYTlBZbXBsWTNSTWFXdGxKeWtzWEc0Z0lDQWdjM1Z3Y0c5eWRDQTlJSEpsY1hWcGNtVW9KeTR1TDNOMWNIQnZjblFuS1R0Y2JseHVMeW9xSUdCUFltcGxZM1FqZEc5VGRISnBibWRnSUhKbGMzVnNkQ0J5WldabGNtVnVZMlZ6TGlBcUwxeHVkbUZ5SUc5aWFtVmpkRlJoWnlBOUlDZGJiMkpxWldOMElFOWlhbVZqZEYwbk8xeHVYRzR2S2lvZ1ZYTmxaQ0JtYjNJZ2JtRjBhWFpsSUcxbGRHaHZaQ0J5WldabGNtVnVZMlZ6TGlBcUwxeHVkbUZ5SUc5aWFtVmpkRkJ5YjNSdklEMGdUMkpxWldOMExuQnliM1J2ZEhsd1pUdGNibHh1THlvcUlGVnpaV1FnZEc4Z1kyaGxZMnNnYjJKcVpXTjBjeUJtYjNJZ2IzZHVJSEJ5YjNCbGNuUnBaWE11SUNvdlhHNTJZWElnYUdGelQzZHVVSEp2Y0dWeWRIa2dQU0J2WW1wbFkzUlFjbTkwYnk1b1lYTlBkMjVRY205d1pYSjBlVHRjYmx4dUx5b3FYRzRnS2lCVmMyVmtJSFJ2SUhKbGMyOXNkbVVnZEdobElGdGdkRzlUZEhKcGJtZFVZV2RnWFNob2RIUndPaTh2WldOdFlTMXBiblJsY201aGRHbHZibUZzTG05eVp5OWxZMjFoTFRJMk1pODJMakF2STNObFl5MXZZbXBsWTNRdWNISnZkRzkwZVhCbExuUnZjM1J5YVc1bktWeHVJQ29nYjJZZ2RtRnNkV1Z6TGx4dUlDb3ZYRzUyWVhJZ2IySnFWRzlUZEhKcGJtY2dQU0J2WW1wbFkzUlFjbTkwYnk1MGIxTjBjbWx1Wnp0Y2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZSFpoYkhWbFlDQnBjeUJoSUhCc1lXbHVJRzlpYW1WamRDd2dkR2hoZENCcGN5d2dZVzRnYjJKcVpXTjBJR055WldGMFpXUWdZbmtnZEdobFhHNGdLaUJnVDJKcVpXTjBZQ0JqYjI1emRISjFZM1J2Y2lCdmNpQnZibVVnZDJsMGFDQmhJR0JiVzFCeWIzUnZkSGx3WlYxZFlDQnZaaUJnYm5Wc2JHQXVYRzRnS2x4dUlDb2dLaXBPYjNSbE9pb3FJRlJvYVhNZ2JXVjBhRzlrSUdGemMzVnRaWE1nYjJKcVpXTjBjeUJqY21WaGRHVmtJR0o1SUhSb1pTQmdUMkpxWldOMFlDQmpiMjV6ZEhKMVkzUnZjbHh1SUNvZ2FHRjJaU0J1YnlCcGJtaGxjbWwwWldRZ1pXNTFiV1Z5WVdKc1pTQndjbTl3WlhKMGFXVnpMbHh1SUNwY2JpQXFJRUJ6ZEdGMGFXTmNiaUFxSUVCdFpXMWlaWEpQWmlCZlhHNGdLaUJBWTJGMFpXZHZjbmtnVEdGdVoxeHVJQ29nUUhCaGNtRnRJSHNxZlNCMllXeDFaU0JVYUdVZ2RtRnNkV1VnZEc4Z1kyaGxZMnN1WEc0Z0tpQkFjbVYwZFhKdWN5QjdZbTl2YkdWaGJuMGdVbVYwZFhKdWN5QmdkSEoxWldBZ2FXWWdZSFpoYkhWbFlDQnBjeUJoSUhCc1lXbHVJRzlpYW1WamRDd2daV3h6WlNCZ1ptRnNjMlZnTGx4dUlDb2dRR1Y0WVcxd2JHVmNiaUFxWEc0Z0tpQm1kVzVqZEdsdmJpQkdiMjhvS1NCN1hHNGdLaUFnSUhSb2FYTXVZU0E5SURFN1hHNGdLaUI5WEc0Z0tseHVJQ29nWHk1cGMxQnNZV2x1VDJKcVpXTjBLRzVsZHlCR2IyOHBPMXh1SUNvZ0x5OGdQVDRnWm1Gc2MyVmNiaUFxWEc0Z0tpQmZMbWx6VUd4aGFXNVBZbXBsWTNRb1d6RXNJRElzSUROZEtUdGNiaUFxSUM4dklEMCtJR1poYkhObFhHNGdLbHh1SUNvZ1h5NXBjMUJzWVdsdVQySnFaV04wS0hzZ0ozZ25PaUF3TENBbmVTYzZJREFnZlNrN1hHNGdLaUF2THlBOVBpQjBjblZsWEc0Z0tseHVJQ29nWHk1cGMxQnNZV2x1VDJKcVpXTjBLRTlpYW1WamRDNWpjbVZoZEdVb2JuVnNiQ2twTzF4dUlDb2dMeThnUFQ0Z2RISjFaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMUJzWVdsdVQySnFaV04wS0haaGJIVmxLU0I3WEc0Z0lIWmhjaUJEZEc5eU8xeHVYRzRnSUM4dklFVjRhWFFnWldGeWJIa2dabTl5SUc1dmJpQmdUMkpxWldOMFlDQnZZbXBsWTNSekxseHVJQ0JwWmlBb0lTaHBjMDlpYW1WamRFeHBhMlVvZG1Gc2RXVXBJQ1ltSUc5aWFsUnZVM1J5YVc1bkxtTmhiR3dvZG1Gc2RXVXBJRDA5SUc5aWFtVmpkRlJoWnlBbUppQWhhWE5JYjNOMFQySnFaV04wS0haaGJIVmxLU0FtSmlBaGFYTkJjbWQxYldWdWRITW9kbUZzZFdVcEtTQjhmRnh1SUNBZ0lDQWdLQ0ZvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0haaGJIVmxMQ0FuWTI5dWMzUnlkV04wYjNJbktTQW1KaUFvUTNSdmNpQTlJSFpoYkhWbExtTnZibk4wY25WamRHOXlMQ0IwZVhCbGIyWWdRM1J2Y2lBOVBTQW5ablZ1WTNScGIyNG5JQ1ltSUNFb1EzUnZjaUJwYm5OMFlXNWpaVzltSUVOMGIzSXBLU2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJSDFjYmlBZ0x5OGdTVVVnUENBNUlHbDBaWEpoZEdWeklHbHVhR1Z5YVhSbFpDQndjbTl3WlhKMGFXVnpJR0psWm05eVpTQnZkMjRnY0hKdmNHVnlkR2xsY3k0Z1NXWWdkR2hsSUdacGNuTjBYRzRnSUM4dklHbDBaWEpoZEdWa0lIQnliM0JsY25SNUlHbHpJR0Z1SUc5aWFtVmpkQ2R6SUc5M2JpQndjbTl3WlhKMGVTQjBhR1Z1SUhSb1pYSmxJR0Z5WlNCdWJ5QnBibWhsY21sMFpXUmNiaUFnTHk4Z1pXNTFiV1Z5WVdKc1pTQndjbTl3WlhKMGFXVnpMbHh1SUNCMllYSWdjbVZ6ZFd4ME8xeHVJQ0JwWmlBb2MzVndjRzl5ZEM1dmQyNU1ZWE4wS1NCN1hHNGdJQ0FnWW1GelpVWnZja2x1S0haaGJIVmxMQ0JtZFc1amRHbHZiaWh6ZFdKV1lXeDFaU3dnYTJWNUxDQnZZbXBsWTNRcElIdGNiaUFnSUNBZ0lISmxjM1ZzZENBOUlHaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29iMkpxWldOMExDQnJaWGtwTzF4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUWdJVDA5SUdaaGJITmxPMXh1SUNCOVhHNGdJQzh2SUVsdUlHMXZjM1FnWlc1MmFYSnZibTFsYm5SeklHRnVJRzlpYW1WamRDZHpJRzkzYmlCd2NtOXdaWEowYVdWeklHRnlaU0JwZEdWeVlYUmxaQ0JpWldadmNtVmNiaUFnTHk4Z2FYUnpJR2x1YUdWeWFYUmxaQ0J3Y205d1pYSjBhV1Z6TGlCSlppQjBhR1VnYkdGemRDQnBkR1Z5WVhSbFpDQndjbTl3WlhKMGVTQnBjeUJoYmlCdlltcGxZM1FuYzF4dUlDQXZMeUJ2ZDI0Z2NISnZjR1Z5ZEhrZ2RHaGxiaUIwYUdWeVpTQmhjbVVnYm04Z2FXNW9aWEpwZEdWa0lHVnVkVzFsY21GaWJHVWdjSEp2Y0dWeWRHbGxjeTVjYmlBZ1ltRnpaVVp2Y2tsdUtIWmhiSFZsTENCbWRXNWpkR2x2YmloemRXSldZV3gxWlN3Z2EyVjVLU0I3WEc0Z0lDQWdjbVZ6ZFd4MElEMGdhMlY1TzF4dUlDQjlLVHRjYmlBZ2NtVjBkWEp1SUhKbGMzVnNkQ0E5UFQwZ2RXNWtaV1pwYm1Wa0lIeDhJR2hoYzA5M2JsQnliM0JsY25SNUxtTmhiR3dvZG1Gc2RXVXNJSEpsYzNWc2RDazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2FYTlFiR0ZwYms5aWFtVmpkRHRjYmlJc0luWmhjaUJwYzA5aWFtVmpkRXhwYTJVZ1BTQnlaWEYxYVhKbEtDY3VMaTlwYm5SbGNtNWhiQzlwYzA5aWFtVmpkRXhwYTJVbktUdGNibHh1THlvcUlHQlBZbXBsWTNRamRHOVRkSEpwYm1kZ0lISmxjM1ZzZENCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlITjBjbWx1WjFSaFp5QTlJQ2RiYjJKcVpXTjBJRk4wY21sdVoxMG5PMXh1WEc0dktpb2dWWE5sWkNCbWIzSWdibUYwYVhabElHMWxkR2h2WkNCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlHOWlhbVZqZEZCeWIzUnZJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaVHRjYmx4dUx5b3FYRzRnS2lCVmMyVmtJSFJ2SUhKbGMyOXNkbVVnZEdobElGdGdkRzlUZEhKcGJtZFVZV2RnWFNob2RIUndPaTh2WldOdFlTMXBiblJsY201aGRHbHZibUZzTG05eVp5OWxZMjFoTFRJMk1pODJMakF2STNObFl5MXZZbXBsWTNRdWNISnZkRzkwZVhCbExuUnZjM1J5YVc1bktWeHVJQ29nYjJZZ2RtRnNkV1Z6TGx4dUlDb3ZYRzUyWVhJZ2IySnFWRzlUZEhKcGJtY2dQU0J2WW1wbFkzUlFjbTkwYnk1MGIxTjBjbWx1Wnp0Y2JseHVMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZSFpoYkhWbFlDQnBjeUJqYkdGemMybG1hV1ZrSUdGeklHRWdZRk4wY21sdVoyQWdjSEpwYldsMGFYWmxJRzl5SUc5aWFtVmpkQzVjYmlBcVhHNGdLaUJBYzNSaGRHbGpYRzRnS2lCQWJXVnRZbVZ5VDJZZ1gxeHVJQ29nUUdOaGRHVm5iM0o1SUV4aGJtZGNiaUFxSUVCd1lYSmhiU0I3S24wZ2RtRnNkV1VnVkdobElIWmhiSFZsSUhSdklHTm9aV05yTGx4dUlDb2dRSEpsZEhWeWJuTWdlMkp2YjJ4bFlXNTlJRkpsZEhWeWJuTWdZSFJ5ZFdWZ0lHbG1JR0IyWVd4MVpXQWdhWE1nWTI5eWNtVmpkR3g1SUdOc1lYTnphV1pwWldRc0lHVnNjMlVnWUdaaGJITmxZQzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLbHh1SUNvZ1h5NXBjMU4wY21sdVp5Z25ZV0pqSnlrN1hHNGdLaUF2THlBOVBpQjBjblZsWEc0Z0tseHVJQ29nWHk1cGMxTjBjbWx1WnlneEtUdGNiaUFxSUM4dklEMCtJR1poYkhObFhHNGdLaTljYm1aMWJtTjBhVzl1SUdselUzUnlhVzVuS0haaGJIVmxLU0I3WEc0Z0lISmxkSFZ5YmlCMGVYQmxiMllnZG1Gc2RXVWdQVDBnSjNOMGNtbHVaeWNnZkh3Z0tHbHpUMkpxWldOMFRHbHJaU2gyWVd4MVpTa2dKaVlnYjJKcVZHOVRkSEpwYm1jdVkyRnNiQ2gyWVd4MVpTa2dQVDBnYzNSeWFXNW5WR0ZuS1R0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JwYzFOMGNtbHVaenRjYmlJc0luWmhjaUJwYzB4bGJtZDBhQ0E5SUhKbGNYVnBjbVVvSnk0dUwybHVkR1Z5Ym1Gc0wybHpUR1Z1WjNSb0p5a3NYRzRnSUNBZ2FYTlBZbXBsWTNSTWFXdGxJRDBnY21WeGRXbHlaU2duTGk0dmFXNTBaWEp1WVd3dmFYTlBZbXBsWTNSTWFXdGxKeWs3WEc1Y2JpOHFLaUJnVDJKcVpXTjBJM1J2VTNSeWFXNW5ZQ0J5WlhOMWJIUWdjbVZtWlhKbGJtTmxjeTRnS2k5Y2JuWmhjaUJoY21kelZHRm5JRDBnSjF0dlltcGxZM1FnUVhKbmRXMWxiblJ6WFNjc1hHNGdJQ0FnWVhKeVlYbFVZV2NnUFNBblcyOWlhbVZqZENCQmNuSmhlVjBuTEZ4dUlDQWdJR0p2YjJ4VVlXY2dQU0FuVzI5aWFtVmpkQ0JDYjI5c1pXRnVYU2NzWEc0Z0lDQWdaR0YwWlZSaFp5QTlJQ2RiYjJKcVpXTjBJRVJoZEdWZEp5eGNiaUFnSUNCbGNuSnZjbFJoWnlBOUlDZGJiMkpxWldOMElFVnljbTl5WFNjc1hHNGdJQ0FnWm5WdVkxUmhaeUE5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNjc1hHNGdJQ0FnYldGd1ZHRm5JRDBnSjF0dlltcGxZM1FnVFdGd1hTY3NYRzRnSUNBZ2JuVnRZbVZ5VkdGbklEMGdKMXR2WW1wbFkzUWdUblZ0WW1WeVhTY3NYRzRnSUNBZ2IySnFaV04wVkdGbklEMGdKMXR2WW1wbFkzUWdUMkpxWldOMFhTY3NYRzRnSUNBZ2NtVm5aWGh3VkdGbklEMGdKMXR2WW1wbFkzUWdVbVZuUlhod1hTY3NYRzRnSUNBZ2MyVjBWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1UyVjBYU2NzWEc0Z0lDQWdjM1J5YVc1blZHRm5JRDBnSjF0dlltcGxZM1FnVTNSeWFXNW5YU2NzWEc0Z0lDQWdkMlZoYTAxaGNGUmhaeUE5SUNkYmIySnFaV04wSUZkbFlXdE5ZWEJkSnp0Y2JseHVkbUZ5SUdGeWNtRjVRblZtWm1WeVZHRm5JRDBnSjF0dlltcGxZM1FnUVhKeVlYbENkV1ptWlhKZEp5eGNiaUFnSUNCbWJHOWhkRE15VkdGbklEMGdKMXR2WW1wbFkzUWdSbXh2WVhRek1rRnljbUY1WFNjc1hHNGdJQ0FnWm14dllYUTJORlJoWnlBOUlDZGJiMkpxWldOMElFWnNiMkYwTmpSQmNuSmhlVjBuTEZ4dUlDQWdJR2x1ZERoVVlXY2dQU0FuVzI5aWFtVmpkQ0JKYm5RNFFYSnlZWGxkSnl4Y2JpQWdJQ0JwYm5ReE5sUmhaeUE5SUNkYmIySnFaV04wSUVsdWRERTJRWEp5WVhsZEp5eGNiaUFnSUNCcGJuUXpNbFJoWnlBOUlDZGJiMkpxWldOMElFbHVkRE15UVhKeVlYbGRKeXhjYmlBZ0lDQjFhVzUwT0ZSaFp5QTlJQ2RiYjJKcVpXTjBJRlZwYm5RNFFYSnlZWGxkSnl4Y2JpQWdJQ0IxYVc1ME9FTnNZVzF3WldSVVlXY2dQU0FuVzI5aWFtVmpkQ0JWYVc1ME9FTnNZVzF3WldSQmNuSmhlVjBuTEZ4dUlDQWdJSFZwYm5ReE5sUmhaeUE5SUNkYmIySnFaV04wSUZWcGJuUXhOa0Z5Y21GNVhTY3NYRzRnSUNBZ2RXbHVkRE15VkdGbklEMGdKMXR2WW1wbFkzUWdWV2x1ZERNeVFYSnlZWGxkSnp0Y2JseHVMeW9xSUZWelpXUWdkRzhnYVdSbGJuUnBabmtnWUhSdlUzUnlhVzVuVkdGbllDQjJZV3gxWlhNZ2IyWWdkSGx3WldRZ1lYSnlZWGx6TGlBcUwxeHVkbUZ5SUhSNWNHVmtRWEp5WVhsVVlXZHpJRDBnZTMwN1hHNTBlWEJsWkVGeWNtRjVWR0ZuYzF0bWJHOWhkRE15VkdGblhTQTlJSFI1Y0dWa1FYSnlZWGxVWVdkelcyWnNiMkYwTmpSVVlXZGRJRDFjYm5SNWNHVmtRWEp5WVhsVVlXZHpXMmx1ZERoVVlXZGRJRDBnZEhsd1pXUkJjbkpoZVZSaFozTmJhVzUwTVRaVVlXZGRJRDFjYm5SNWNHVmtRWEp5WVhsVVlXZHpXMmx1ZERNeVZHRm5YU0E5SUhSNWNHVmtRWEp5WVhsVVlXZHpXM1ZwYm5RNFZHRm5YU0E5WEc1MGVYQmxaRUZ5Y21GNVZHRm5jMXQxYVc1ME9FTnNZVzF3WldSVVlXZGRJRDBnZEhsd1pXUkJjbkpoZVZSaFozTmJkV2x1ZERFMlZHRm5YU0E5WEc1MGVYQmxaRUZ5Y21GNVZHRm5jMXQxYVc1ME16SlVZV2RkSUQwZ2RISjFaVHRjYm5SNWNHVmtRWEp5WVhsVVlXZHpXMkZ5WjNOVVlXZGRJRDBnZEhsd1pXUkJjbkpoZVZSaFozTmJZWEp5WVhsVVlXZGRJRDFjYm5SNWNHVmtRWEp5WVhsVVlXZHpXMkZ5Y21GNVFuVm1abVZ5VkdGblhTQTlJSFI1Y0dWa1FYSnlZWGxVWVdkelcySnZiMnhVWVdkZElEMWNiblI1Y0dWa1FYSnlZWGxVWVdkelcyUmhkR1ZVWVdkZElEMGdkSGx3WldSQmNuSmhlVlJoWjNOYlpYSnliM0pVWVdkZElEMWNiblI1Y0dWa1FYSnlZWGxVWVdkelcyWjFibU5VWVdkZElEMGdkSGx3WldSQmNuSmhlVlJoWjNOYmJXRndWR0ZuWFNBOVhHNTBlWEJsWkVGeWNtRjVWR0ZuYzF0dWRXMWlaWEpVWVdkZElEMGdkSGx3WldSQmNuSmhlVlJoWjNOYmIySnFaV04wVkdGblhTQTlYRzUwZVhCbFpFRnljbUY1VkdGbmMxdHlaV2RsZUhCVVlXZGRJRDBnZEhsd1pXUkJjbkpoZVZSaFozTmJjMlYwVkdGblhTQTlYRzUwZVhCbFpFRnljbUY1VkdGbmMxdHpkSEpwYm1kVVlXZGRJRDBnZEhsd1pXUkJjbkpoZVZSaFozTmJkMlZoYTAxaGNGUmhaMTBnUFNCbVlXeHpaVHRjYmx4dUx5b3FJRlZ6WldRZ1ptOXlJRzVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5NGdLaTljYm5aaGNpQnZZbXBsWTNSUWNtOTBieUE5SUU5aWFtVmpkQzV3Y205MGIzUjVjR1U3WEc1Y2JpOHFLbHh1SUNvZ1ZYTmxaQ0IwYnlCeVpYTnZiSFpsSUhSb1pTQmJZSFJ2VTNSeWFXNW5WR0ZuWUYwb2FIUjBjRG92TDJWamJXRXRhVzUwWlhKdVlYUnBiMjVoYkM1dmNtY3ZaV050WVMweU5qSXZOaTR3THlOelpXTXRiMkpxWldOMExuQnliM1J2ZEhsd1pTNTBiM04wY21sdVp5bGNiaUFxSUc5bUlIWmhiSFZsY3k1Y2JpQXFMMXh1ZG1GeUlHOWlhbFJ2VTNSeWFXNW5JRDBnYjJKcVpXTjBVSEp2ZEc4dWRHOVRkSEpwYm1jN1hHNWNiaThxS2x4dUlDb2dRMmhsWTJ0eklHbG1JR0IyWVd4MVpXQWdhWE1nWTJ4aGMzTnBabWxsWkNCaGN5QmhJSFI1Y0dWa0lHRnljbUY1TGx4dUlDcGNiaUFxSUVCemRHRjBhV05jYmlBcUlFQnRaVzFpWlhKUFppQmZYRzRnS2lCQVkyRjBaV2R2Y25rZ1RHRnVaMXh1SUNvZ1FIQmhjbUZ0SUhzcWZTQjJZV3gxWlNCVWFHVWdkbUZzZFdVZ2RHOGdZMmhsWTJzdVhHNGdLaUJBY21WMGRYSnVjeUI3WW05dmJHVmhibjBnVW1WMGRYSnVjeUJnZEhKMVpXQWdhV1lnWUhaaGJIVmxZQ0JwY3lCamIzSnlaV04wYkhrZ1kyeGhjM05wWm1sbFpDd2daV3h6WlNCZ1ptRnNjMlZnTGx4dUlDb2dRR1Y0WVcxd2JHVmNiaUFxWEc0Z0tpQmZMbWx6Vkhsd1pXUkJjbkpoZVNodVpYY2dWV2x1ZERoQmNuSmhlU2s3WEc0Z0tpQXZMeUE5UGlCMGNuVmxYRzRnS2x4dUlDb2dYeTVwYzFSNWNHVmtRWEp5WVhrb1cxMHBPMXh1SUNvZ0x5OGdQVDRnWm1Gc2MyVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FYTlVlWEJsWkVGeWNtRjVLSFpoYkhWbEtTQjdYRzRnSUhKbGRIVnliaUJwYzA5aWFtVmpkRXhwYTJVb2RtRnNkV1VwSUNZbUlHbHpUR1Z1WjNSb0tIWmhiSFZsTG14bGJtZDBhQ2tnSmlZZ0lTRjBlWEJsWkVGeWNtRjVWR0ZuYzF0dlltcFViMU4wY21sdVp5NWpZV3hzS0haaGJIVmxLVjA3WEc1OVhHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdhWE5VZVhCbFpFRnljbUY1TzF4dUlpd2lMeW9xWEc0Z0tpQkRhR1ZqYTNNZ2FXWWdZSFpoYkhWbFlDQnBjeUJnZFc1a1pXWnBibVZrWUM1Y2JpQXFYRzRnS2lCQWMzUmhkR2xqWEc0Z0tpQkFiV1Z0WW1WeVQyWWdYMXh1SUNvZ1FHTmhkR1ZuYjNKNUlFeGhibWRjYmlBcUlFQndZWEpoYlNCN0tuMGdkbUZzZFdVZ1ZHaGxJSFpoYkhWbElIUnZJR05vWldOckxseHVJQ29nUUhKbGRIVnlibk1nZTJKdmIyeGxZVzU5SUZKbGRIVnlibk1nWUhSeWRXVmdJR2xtSUdCMllXeDFaV0FnYVhNZ1lIVnVaR1ZtYVc1bFpHQXNJR1ZzYzJVZ1lHWmhiSE5sWUM1Y2JpQXFJRUJsZUdGdGNHeGxYRzRnS2x4dUlDb2dYeTVwYzFWdVpHVm1hVzVsWkNoMmIybGtJREFwTzF4dUlDb2dMeThnUFQ0Z2RISjFaVnh1SUNwY2JpQXFJRjh1YVhOVmJtUmxabWx1WldRb2JuVnNiQ2s3WEc0Z0tpQXZMeUE5UGlCbVlXeHpaVnh1SUNvdlhHNW1kVzVqZEdsdmJpQnBjMVZ1WkdWbWFXNWxaQ2gyWVd4MVpTa2dlMXh1SUNCeVpYUjFjbTRnZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JwYzFWdVpHVm1hVzVsWkR0Y2JpSXNJblpoY2lCblpYUk9ZWFJwZG1VZ1BTQnlaWEYxYVhKbEtDY3VMaTlwYm5SbGNtNWhiQzluWlhST1lYUnBkbVVuS1N4Y2JpQWdJQ0JwYzBGeWNtRjVUR2xyWlNBOUlISmxjWFZwY21Vb0p5NHVMMmx1ZEdWeWJtRnNMMmx6UVhKeVlYbE1hV3RsSnlrc1hHNGdJQ0FnYVhOUFltcGxZM1FnUFNCeVpYRjFhWEpsS0NjdUxpOXNZVzVuTDJselQySnFaV04wSnlrc1hHNGdJQ0FnYzJocGJVdGxlWE1nUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOXphR2x0UzJWNWN5Y3BMRnh1SUNBZ0lITjFjSEJ2Y25RZ1BTQnlaWEYxYVhKbEtDY3VMaTl6ZFhCd2IzSjBKeWs3WEc1Y2JpOHFJRTVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5Qm1iM0lnZEdodmMyVWdkMmwwYUNCMGFHVWdjMkZ0WlNCdVlXMWxJR0Z6SUc5MGFHVnlJR0JzYjJSaGMyaGdJRzFsZEdodlpITXVJQ292WEc1MllYSWdibUYwYVhabFMyVjVjeUE5SUdkbGRFNWhkR2wyWlNoUFltcGxZM1FzSUNkclpYbHpKeWs3WEc1Y2JpOHFLbHh1SUNvZ1EzSmxZWFJsY3lCaGJpQmhjbkpoZVNCdlppQjBhR1VnYjNkdUlHVnVkVzFsY21GaWJHVWdjSEp2Y0dWeWRIa2dibUZ0WlhNZ2IyWWdZRzlpYW1WamRHQXVYRzRnS2x4dUlDb2dLaXBPYjNSbE9pb3FJRTV2YmkxdlltcGxZM1FnZG1Gc2RXVnpJR0Z5WlNCamIyVnlZMlZrSUhSdklHOWlhbVZqZEhNdUlGTmxaU0IwYUdWY2JpQXFJRnRGVXlCemNHVmpYU2hvZEhSd09pOHZaV050WVMxcGJuUmxjbTVoZEdsdmJtRnNMbTl5Wnk5bFkyMWhMVEkyTWk4MkxqQXZJM05sWXkxdlltcGxZM1F1YTJWNWN5bGNiaUFxSUdadmNpQnRiM0psSUdSbGRHRnBiSE11WEc0Z0tseHVJQ29nUUhOMFlYUnBZMXh1SUNvZ1FHMWxiV0psY2s5bUlGOWNiaUFxSUVCallYUmxaMjl5ZVNCUFltcGxZM1JjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnhkV1Z5ZVM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnWVhKeVlYa2diMllnY0hKdmNHVnlkSGtnYm1GdFpYTXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUdaMWJtTjBhVzl1SUVadmJ5Z3BJSHRjYmlBcUlDQWdkR2hwY3k1aElEMGdNVHRjYmlBcUlDQWdkR2hwY3k1aUlEMGdNanRjYmlBcUlIMWNiaUFxWEc0Z0tpQkdiMjh1Y0hKdmRHOTBlWEJsTG1NZ1BTQXpPMXh1SUNwY2JpQXFJRjh1YTJWNWN5aHVaWGNnUm05dktUdGNiaUFxSUM4dklEMCtJRnNuWVNjc0lDZGlKMTBnS0dsMFpYSmhkR2x2YmlCdmNtUmxjaUJwY3lCdWIzUWdaM1ZoY21GdWRHVmxaQ2xjYmlBcVhHNGdLaUJmTG10bGVYTW9KMmhwSnlrN1hHNGdLaUF2THlBOVBpQmJKekFuTENBbk1TZGRYRzRnS2k5Y2JuWmhjaUJyWlhseklEMGdJVzVoZEdsMlpVdGxlWE1nUHlCemFHbHRTMlY1Y3lBNklHWjFibU4wYVc5dUtHOWlhbVZqZENrZ2UxeHVJQ0IyWVhJZ1EzUnZjaUE5SUc5aWFtVmpkQ0E5UFNCdWRXeHNJRDhnZFc1a1pXWnBibVZrSURvZ2IySnFaV04wTG1OdmJuTjBjblZqZEc5eU8xeHVJQ0JwWmlBb0tIUjVjR1Z2WmlCRGRHOXlJRDA5SUNkbWRXNWpkR2x2YmljZ0ppWWdRM1J2Y2k1d2NtOTBiM1I1Y0dVZ1BUMDlJRzlpYW1WamRDa2dmSHhjYmlBZ0lDQWdJQ2gwZVhCbGIyWWdiMkpxWldOMElEMDlJQ2RtZFc1amRHbHZiaWNnUHlCemRYQndiM0owTG1WdWRXMVFjbTkwYjNSNWNHVnpJRG9nYVhOQmNuSmhlVXhwYTJVb2IySnFaV04wS1NrcElIdGNiaUFnSUNCeVpYUjFjbTRnYzJocGJVdGxlWE1vYjJKcVpXTjBLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdhWE5QWW1wbFkzUW9iMkpxWldOMEtTQS9JRzVoZEdsMlpVdGxlWE1vYjJKcVpXTjBLU0E2SUZ0ZE8xeHVmVHRjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCclpYbHpPMXh1SWl3aWRtRnlJR0Z5Y21GNVJXRmphQ0E5SUhKbGNYVnBjbVVvSnk0dUwybHVkR1Z5Ym1Gc0wyRnljbUY1UldGamFDY3BMRnh1SUNBZ0lHbHpRWEpuZFcxbGJuUnpJRDBnY21WeGRXbHlaU2duTGk0dmJHRnVaeTlwYzBGeVozVnRaVzUwY3ljcExGeHVJQ0FnSUdselFYSnlZWGtnUFNCeVpYRjFhWEpsS0NjdUxpOXNZVzVuTDJselFYSnlZWGtuS1N4Y2JpQWdJQ0JwYzBaMWJtTjBhVzl1SUQwZ2NtVnhkV2x5WlNnbkxpNHZiR0Z1Wnk5cGMwWjFibU4wYVc5dUp5a3NYRzRnSUNBZ2FYTkpibVJsZUNBOUlISmxjWFZwY21Vb0p5NHVMMmx1ZEdWeWJtRnNMMmx6U1c1a1pYZ25LU3hjYmlBZ0lDQnBjMHhsYm1kMGFDQTlJSEpsY1hWcGNtVW9KeTR1TDJsdWRHVnlibUZzTDJselRHVnVaM1JvSnlrc1hHNGdJQ0FnYVhOUFltcGxZM1FnUFNCeVpYRjFhWEpsS0NjdUxpOXNZVzVuTDJselQySnFaV04wSnlrc1hHNGdJQ0FnYVhOVGRISnBibWNnUFNCeVpYRjFhWEpsS0NjdUxpOXNZVzVuTDJselUzUnlhVzVuSnlrc1hHNGdJQ0FnYzNWd2NHOXlkQ0E5SUhKbGNYVnBjbVVvSnk0dUwzTjFjSEJ2Y25RbktUdGNibHh1THlvcUlHQlBZbXBsWTNRamRHOVRkSEpwYm1kZ0lISmxjM1ZzZENCeVpXWmxjbVZ1WTJWekxpQXFMMXh1ZG1GeUlHRnljbUY1VkdGbklEMGdKMXR2WW1wbFkzUWdRWEp5WVhsZEp5eGNiaUFnSUNCaWIyOXNWR0ZuSUQwZ0oxdHZZbXBsWTNRZ1FtOXZiR1ZoYmwwbkxGeHVJQ0FnSUdSaGRHVlVZV2NnUFNBblcyOWlhbVZqZENCRVlYUmxYU2NzWEc0Z0lDQWdaWEp5YjNKVVlXY2dQU0FuVzI5aWFtVmpkQ0JGY25KdmNsMG5MRnh1SUNBZ0lHWjFibU5VWVdjZ1BTQW5XMjlpYW1WamRDQkdkVzVqZEdsdmJsMG5MRnh1SUNBZ0lHNTFiV0psY2xSaFp5QTlJQ2RiYjJKcVpXTjBJRTUxYldKbGNsMG5MRnh1SUNBZ0lHOWlhbVZqZEZSaFp5QTlJQ2RiYjJKcVpXTjBJRTlpYW1WamRGMG5MRnh1SUNBZ0lISmxaMlY0Y0ZSaFp5QTlJQ2RiYjJKcVpXTjBJRkpsWjBWNGNGMG5MRnh1SUNBZ0lITjBjbWx1WjFSaFp5QTlJQ2RiYjJKcVpXTjBJRk4wY21sdVoxMG5PMXh1WEc0dktpb2dWWE5sWkNCMGJ5Qm1hWGdnZEdobElFcFRZM0pwY0hRZ1lGdGJSRzl1ZEVWdWRXMWRYV0FnWW5WbkxpQXFMMXh1ZG1GeUlITm9ZV1J2ZDFCeWIzQnpJRDBnVzF4dUlDQW5ZMjl1YzNSeWRXTjBiM0luTENBbmFHRnpUM2R1VUhKdmNHVnlkSGtuTENBbmFYTlFjbTkwYjNSNWNHVlBaaWNzSUNkd2NtOXdaWEowZVVselJXNTFiV1Z5WVdKc1pTY3NYRzRnSUNkMGIweHZZMkZzWlZOMGNtbHVaeWNzSUNkMGIxTjBjbWx1Wnljc0lDZDJZV3gxWlU5bUoxeHVYVHRjYmx4dUx5b3FJRlZ6WldRZ1ptOXlJRzVoZEdsMlpTQnRaWFJvYjJRZ2NtVm1aWEpsYm1ObGN5NGdLaTljYm5aaGNpQmxjbkp2Y2xCeWIzUnZJRDBnUlhKeWIzSXVjSEp2ZEc5MGVYQmxMRnh1SUNBZ0lHOWlhbVZqZEZCeWIzUnZJRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaU3hjYmlBZ0lDQnpkSEpwYm1kUWNtOTBieUE5SUZOMGNtbHVaeTV3Y205MGIzUjVjR1U3WEc1Y2JpOHFLaUJWYzJWa0lIUnZJR05vWldOcklHOWlhbVZqZEhNZ1ptOXlJRzkzYmlCd2NtOXdaWEowYVdWekxpQXFMMXh1ZG1GeUlHaGhjMDkzYmxCeWIzQmxjblI1SUQwZ2IySnFaV04wVUhKdmRHOHVhR0Z6VDNkdVVISnZjR1Z5ZEhrN1hHNWNiaThxS2x4dUlDb2dWWE5sWkNCMGJ5QnlaWE52YkhabElIUm9aU0JiWUhSdlUzUnlhVzVuVkdGbllGMG9hSFIwY0RvdkwyVmpiV0V0YVc1MFpYSnVZWFJwYjI1aGJDNXZjbWN2WldOdFlTMHlOakl2Tmk0d0x5TnpaV010YjJKcVpXTjBMbkJ5YjNSdmRIbHdaUzUwYjNOMGNtbHVaeWxjYmlBcUlHOW1JSFpoYkhWbGN5NWNiaUFxTDF4dWRtRnlJRzlpYWxSdlUzUnlhVzVuSUQwZ2IySnFaV04wVUhKdmRHOHVkRzlUZEhKcGJtYzdYRzVjYmk4cUtpQlZjMlZrSUhSdklHRjJiMmxrSUdsMFpYSmhkR2x1WnlCdmRtVnlJRzV2YmkxbGJuVnRaWEpoWW14bElIQnliM0JsY25ScFpYTWdhVzRnU1VVZ1BDQTVMaUFxTDF4dWRtRnlJRzV2YmtWdWRXMVFjbTl3Y3lBOUlIdDlPMXh1Ym05dVJXNTFiVkJ5YjNCelcyRnljbUY1VkdGblhTQTlJRzV2YmtWdWRXMVFjbTl3YzF0a1lYUmxWR0ZuWFNBOUlHNXZia1Z1ZFcxUWNtOXdjMXR1ZFcxaVpYSlVZV2RkSUQwZ2V5QW5ZMjl1YzNSeWRXTjBiM0luT2lCMGNuVmxMQ0FuZEc5TWIyTmhiR1ZUZEhKcGJtY25PaUIwY25WbExDQW5kRzlUZEhKcGJtY25PaUIwY25WbExDQW5kbUZzZFdWUFppYzZJSFJ5ZFdVZ2ZUdGNibTV2YmtWdWRXMVFjbTl3YzF0aWIyOXNWR0ZuWFNBOUlHNXZia1Z1ZFcxUWNtOXdjMXR6ZEhKcGJtZFVZV2RkSUQwZ2V5QW5ZMjl1YzNSeWRXTjBiM0luT2lCMGNuVmxMQ0FuZEc5VGRISnBibWNuT2lCMGNuVmxMQ0FuZG1Gc2RXVlBaaWM2SUhSeWRXVWdmVHRjYm01dmJrVnVkVzFRY205d2MxdGxjbkp2Y2xSaFoxMGdQU0J1YjI1RmJuVnRVSEp2Y0hOYlpuVnVZMVJoWjEwZ1BTQnViMjVGYm5WdFVISnZjSE5iY21WblpYaHdWR0ZuWFNBOUlIc2dKMk52Ym5OMGNuVmpkRzl5SnpvZ2RISjFaU3dnSjNSdlUzUnlhVzVuSnpvZ2RISjFaU0I5TzF4dWJtOXVSVzUxYlZCeWIzQnpXMjlpYW1WamRGUmhaMTBnUFNCN0lDZGpiMjV6ZEhKMVkzUnZjaWM2SUhSeWRXVWdmVHRjYmx4dVlYSnlZWGxGWVdOb0tITm9ZV1J2ZDFCeWIzQnpMQ0JtZFc1amRHbHZiaWhyWlhrcElIdGNiaUFnWm05eUlDaDJZWElnZEdGbklHbHVJRzV2YmtWdWRXMVFjbTl3Y3lrZ2UxeHVJQ0FnSUdsbUlDaG9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzV2YmtWdWRXMVFjbTl3Y3l3Z2RHRm5LU2tnZTF4dUlDQWdJQ0FnZG1GeUlIQnliM0J6SUQwZ2JtOXVSVzUxYlZCeWIzQnpXM1JoWjEwN1hHNGdJQ0FnSUNCd2NtOXdjMXRyWlhsZElEMGdhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2h3Y205d2N5d2dhMlY1S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibjBwTzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lXNGdZWEp5WVhrZ2IyWWdkR2hsSUc5M2JpQmhibVFnYVc1b1pYSnBkR1ZrSUdWdWRXMWxjbUZpYkdVZ2NISnZjR1Z5ZEhrZ2JtRnRaWE1nYjJZZ1lHOWlhbVZqZEdBdVhHNGdLbHh1SUNvZ0tpcE9iM1JsT2lvcUlFNXZiaTF2WW1wbFkzUWdkbUZzZFdWeklHRnlaU0JqYjJWeVkyVmtJSFJ2SUc5aWFtVmpkSE11WEc0Z0tseHVJQ29nUUhOMFlYUnBZMXh1SUNvZ1FHMWxiV0psY2s5bUlGOWNiaUFxSUVCallYUmxaMjl5ZVNCUFltcGxZM1JjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnhkV1Z5ZVM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnWVhKeVlYa2diMllnY0hKdmNHVnlkSGtnYm1GdFpYTXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUdaMWJtTjBhVzl1SUVadmJ5Z3BJSHRjYmlBcUlDQWdkR2hwY3k1aElEMGdNVHRjYmlBcUlDQWdkR2hwY3k1aUlEMGdNanRjYmlBcUlIMWNiaUFxWEc0Z0tpQkdiMjh1Y0hKdmRHOTBlWEJsTG1NZ1BTQXpPMXh1SUNwY2JpQXFJRjh1YTJWNWMwbHVLRzVsZHlCR2IyOHBPMXh1SUNvZ0x5OGdQVDRnV3lkaEp5d2dKMkluTENBbll5ZGRJQ2hwZEdWeVlYUnBiMjRnYjNKa1pYSWdhWE1nYm05MElHZDFZWEpoYm5SbFpXUXBYRzRnS2k5Y2JtWjFibU4wYVc5dUlHdGxlWE5KYmlodlltcGxZM1FwSUh0Y2JpQWdhV1lnS0c5aWFtVmpkQ0E5UFNCdWRXeHNLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNCOVhHNGdJR2xtSUNnaGFYTlBZbXBsWTNRb2IySnFaV04wS1NrZ2UxeHVJQ0FnSUc5aWFtVmpkQ0E5SUU5aWFtVmpkQ2h2WW1wbFkzUXBPMXh1SUNCOVhHNGdJSFpoY2lCc1pXNW5kR2dnUFNCdlltcGxZM1F1YkdWdVozUm9PMXh1WEc0Z0lHeGxibWQwYUNBOUlDaHNaVzVuZEdnZ0ppWWdhWE5NWlc1bmRHZ29iR1Z1WjNSb0tTQW1KbHh1SUNBZ0lDaHBjMEZ5Y21GNUtHOWlhbVZqZENrZ2ZId2dhWE5CY21kMWJXVnVkSE1vYjJKcVpXTjBLU0I4ZkNCcGMxTjBjbWx1WnlodlltcGxZM1FwS1NBbUppQnNaVzVuZEdncElIeDhJREE3WEc1Y2JpQWdkbUZ5SUVOMGIzSWdQU0J2WW1wbFkzUXVZMjl1YzNSeWRXTjBiM0lzWEc0Z0lDQWdJQ0JwYm1SbGVDQTlJQzB4TEZ4dUlDQWdJQ0FnY0hKdmRHOGdQU0FvYVhOR2RXNWpkR2x2YmloRGRHOXlLU0FtSmlCRGRHOXlMbkJ5YjNSdmRIbHdaU2tnZkh3Z2IySnFaV04wVUhKdmRHOHNYRzRnSUNBZ0lDQnBjMUJ5YjNSdklEMGdjSEp2ZEc4Z1BUMDlJRzlpYW1WamRDeGNiaUFnSUNBZ0lISmxjM1ZzZENBOUlFRnljbUY1S0d4bGJtZDBhQ2tzWEc0Z0lDQWdJQ0J6YTJsd1NXNWtaWGhsY3lBOUlHeGxibWQwYUNBK0lEQXNYRzRnSUNBZ0lDQnphMmx3UlhKeWIzSlFjbTl3Y3lBOUlITjFjSEJ2Y25RdVpXNTFiVVZ5Y205eVVISnZjSE1nSmlZZ0tHOWlhbVZqZENBOVBUMGdaWEp5YjNKUWNtOTBieUI4ZkNCdlltcGxZM1FnYVc1emRHRnVZMlZ2WmlCRmNuSnZjaWtzWEc0Z0lDQWdJQ0J6YTJsd1VISnZkRzhnUFNCemRYQndiM0owTG1WdWRXMVFjbTkwYjNSNWNHVnpJQ1ltSUdselJuVnVZM1JwYjI0b2IySnFaV04wS1R0Y2JseHVJQ0IzYUdsc1pTQW9LeXRwYm1SbGVDQThJR3hsYm1kMGFDa2dlMXh1SUNBZ0lISmxjM1ZzZEZ0cGJtUmxlRjBnUFNBb2FXNWtaWGdnS3lBbkp5azdYRzRnSUgxY2JpQWdMeThnYkc5a1lYTm9JSE5yYVhCeklIUm9aU0JnWTI5dWMzUnlkV04wYjNKZ0lIQnliM0JsY25SNUlIZG9aVzRnYVhRZ2FXNW1aWEp6SUdsMEozTWdhWFJsY21GMGFXNW5YRzRnSUM4dklHOTJaWElnWVNCZ2NISnZkRzkwZVhCbFlDQnZZbXBsWTNRZ1ltVmpZWFZ6WlNCSlJTQThJRGtnWTJGdUozUWdjMlYwSUhSb1pTQmdXMXRGYm5WdFpYSmhZbXhsWFYxZ1hHNGdJQzh2SUdGMGRISnBZblYwWlNCdlppQmhiaUJsZUdsemRHbHVaeUJ3Y205d1pYSjBlU0JoYm1RZ2RHaGxJR0JqYjI1emRISjFZM1J2Y21BZ2NISnZjR1Z5ZEhrZ2IyWWdZVnh1SUNBdkx5QndjbTkwYjNSNWNHVWdaR1ZtWVhWc2RITWdkRzhnYm05dUxXVnVkVzFsY21GaWJHVXVYRzRnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJ2WW1wbFkzUXBJSHRjYmlBZ0lDQnBaaUFvSVNoemEybHdVSEp2ZEc4Z0ppWWdhMlY1SUQwOUlDZHdjbTkwYjNSNWNHVW5LU0FtSmx4dUlDQWdJQ0FnSUNBaEtITnJhWEJGY25KdmNsQnliM0J6SUNZbUlDaHJaWGtnUFQwZ0oyMWxjM05oWjJVbklIeDhJR3RsZVNBOVBTQW5ibUZ0WlNjcEtTQW1KbHh1SUNBZ0lDQWdJQ0FoS0hOcmFYQkpibVJsZUdWeklDWW1JR2x6U1c1a1pYZ29hMlY1TENCc1pXNW5kR2dwS1NBbUpseHVJQ0FnSUNBZ0lDQWhLR3RsZVNBOVBTQW5ZMjl1YzNSeWRXTjBiM0luSUNZbUlDaHBjMUJ5YjNSdklIeDhJQ0ZvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0c5aWFtVmpkQ3dnYTJWNUtTa3BLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUXVjSFZ6YUNoclpYa3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnBaaUFvYzNWd2NHOXlkQzV1YjI1RmJuVnRVMmhoWkc5M2N5QW1KaUJ2WW1wbFkzUWdJVDA5SUc5aWFtVmpkRkJ5YjNSdktTQjdYRzRnSUNBZ2RtRnlJSFJoWnlBOUlHOWlhbVZqZENBOVBUMGdjM1J5YVc1blVISnZkRzhnUHlCemRISnBibWRVWVdjZ09pQW9iMkpxWldOMElEMDlQU0JsY25KdmNsQnliM1J2SUQ4Z1pYSnliM0pVWVdjZ09pQnZZbXBVYjFOMGNtbHVaeTVqWVd4c0tHOWlhbVZqZENrcExGeHVJQ0FnSUNBZ0lDQnViMjVGYm5WdGN5QTlJRzV2YmtWdWRXMVFjbTl3YzF0MFlXZGRJSHg4SUc1dmJrVnVkVzFRY205d2MxdHZZbXBsWTNSVVlXZGRPMXh1WEc0Z0lDQWdhV1lnS0hSaFp5QTlQU0J2WW1wbFkzUlVZV2NwSUh0Y2JpQWdJQ0FnSUhCeWIzUnZJRDBnYjJKcVpXTjBVSEp2ZEc4N1hHNGdJQ0FnZlZ4dUlDQWdJR3hsYm1kMGFDQTlJSE5vWVdSdmQxQnliM0J6TG14bGJtZDBhRHRjYmlBZ0lDQjNhR2xzWlNBb2JHVnVaM1JvTFMwcElIdGNiaUFnSUNBZ0lHdGxlU0E5SUhOb1lXUnZkMUJ5YjNCelcyeGxibWQwYUYwN1hHNGdJQ0FnSUNCMllYSWdibTl1Ulc1MWJTQTlJRzV2YmtWdWRXMXpXMnRsZVYwN1hHNGdJQ0FnSUNCcFppQW9JU2hwYzFCeWIzUnZJQ1ltSUc1dmJrVnVkVzBwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdLRzV2YmtWdWRXMGdQeUJvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0c5aWFtVmpkQ3dnYTJWNUtTQTZJRzlpYW1WamRGdHJaWGxkSUNFOVBTQndjbTkwYjF0clpYbGRLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaHJaWGtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUd0bGVYTkpianRjYmlJc0luWmhjaUJyWlhseklEMGdjbVZ4ZFdseVpTZ25MaTlyWlhsekp5a3NYRzRnSUNBZ2RHOVBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMaTlwYm5SbGNtNWhiQzkwYjA5aWFtVmpkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQjBkMjhnWkdsdFpXNXphVzl1WVd3Z1lYSnlZWGtnYjJZZ2RHaGxJR3RsZVMxMllXeDFaU0J3WVdseWN5Qm1iM0lnWUc5aWFtVmpkR0FzWEc0Z0tpQmxMbWN1SUdCYlcydGxlVEVzSUhaaGJIVmxNVjBzSUZ0clpYa3lMQ0IyWVd4MVpUSmRYV0F1WEc0Z0tseHVJQ29nUUhOMFlYUnBZMXh1SUNvZ1FHMWxiV0psY2s5bUlGOWNiaUFxSUVCallYUmxaMjl5ZVNCUFltcGxZM1JjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdlltcGxZM1FnVkdobElHOWlhbVZqZENCMGJ5QnhkV1Z5ZVM1Y2JpQXFJRUJ5WlhSMWNtNXpJSHRCY25KaGVYMGdVbVYwZFhKdWN5QjBhR1VnYm1WM0lHRnljbUY1SUc5bUlHdGxlUzEyWVd4MVpTQndZV2x5Y3k1Y2JpQXFJRUJsZUdGdGNHeGxYRzRnS2x4dUlDb2dYeTV3WVdseWN5aDdJQ2RpWVhKdVpYa25PaUF6Tml3Z0oyWnlaV1FuT2lBME1DQjlLVHRjYmlBcUlDOHZJRDArSUZ0YkoySmhjbTVsZVNjc0lETTJYU3dnV3lkbWNtVmtKeXdnTkRCZFhTQW9hWFJsY21GMGFXOXVJRzl5WkdWeUlHbHpJRzV2ZENCbmRXRnlZVzUwWldWa0tWeHVJQ292WEc1bWRXNWpkR2x2YmlCd1lXbHljeWh2WW1wbFkzUXBJSHRjYmlBZ2IySnFaV04wSUQwZ2RHOVBZbXBsWTNRb2IySnFaV04wS1R0Y2JseHVJQ0IyWVhJZ2FXNWtaWGdnUFNBdE1TeGNiaUFnSUNBZ0lIQnliM0J6SUQwZ2EyVjVjeWh2WW1wbFkzUXBMRnh1SUNBZ0lDQWdiR1Z1WjNSb0lEMGdjSEp2Y0hNdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnY21WemRXeDBJRDBnUVhKeVlYa29iR1Z1WjNSb0tUdGNibHh1SUNCM2FHbHNaU0FvS3l0cGJtUmxlQ0E4SUd4bGJtZDBhQ2tnZTF4dUlDQWdJSFpoY2lCclpYa2dQU0J3Y205d2MxdHBibVJsZUYwN1hHNGdJQ0FnY21WemRXeDBXMmx1WkdWNFhTQTlJRnRyWlhrc0lHOWlhbVZqZEZ0clpYbGRYVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc1dGIyUjFiR1V1Wlhod2IzSjBjeUE5SUhCaGFYSnpPMXh1SWl3aWRtRnlJR0poYzJWV1lXeDFaWE1nUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWlZWE5sVm1Gc2RXVnpKeWtzWEc0Z0lDQWdhMlY1Y3lBOUlISmxjWFZwY21Vb0p5NHZhMlY1Y3ljcE8xeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZVzRnWVhKeVlYa2diMllnZEdobElHOTNiaUJsYm5WdFpYSmhZbXhsSUhCeWIzQmxjblI1SUhaaGJIVmxjeUJ2WmlCZ2IySnFaV04wWUM1Y2JpQXFYRzRnS2lBcUtrNXZkR1U2S2lvZ1RtOXVMVzlpYW1WamRDQjJZV3gxWlhNZ1lYSmxJR052WlhKalpXUWdkRzhnYjJKcVpXTjBjeTVjYmlBcVhHNGdLaUJBYzNSaGRHbGpYRzRnS2lCQWJXVnRZbVZ5VDJZZ1gxeHVJQ29nUUdOaGRHVm5iM0o1SUU5aWFtVmpkRnh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5aWFtVmpkQ0JVYUdVZ2IySnFaV04wSUhSdklIRjFaWEo1TGx4dUlDb2dRSEpsZEhWeWJuTWdlMEZ5Y21GNWZTQlNaWFIxY201eklIUm9aU0JoY25KaGVTQnZaaUJ3Y205d1pYSjBlU0IyWVd4MVpYTXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUdaMWJtTjBhVzl1SUVadmJ5Z3BJSHRjYmlBcUlDQWdkR2hwY3k1aElEMGdNVHRjYmlBcUlDQWdkR2hwY3k1aUlEMGdNanRjYmlBcUlIMWNiaUFxWEc0Z0tpQkdiMjh1Y0hKdmRHOTBlWEJsTG1NZ1BTQXpPMXh1SUNwY2JpQXFJRjh1ZG1Gc2RXVnpLRzVsZHlCR2IyOHBPMXh1SUNvZ0x5OGdQVDRnV3pFc0lESmRJQ2hwZEdWeVlYUnBiMjRnYjNKa1pYSWdhWE1nYm05MElHZDFZWEpoYm5SbFpXUXBYRzRnS2x4dUlDb2dYeTUyWVd4MVpYTW9KMmhwSnlrN1hHNGdLaUF2THlBOVBpQmJKMmduTENBbmFTZGRYRzRnS2k5Y2JtWjFibU4wYVc5dUlIWmhiSFZsY3lodlltcGxZM1FwSUh0Y2JpQWdjbVYwZFhKdUlHSmhjMlZXWVd4MVpYTW9iMkpxWldOMExDQnJaWGx6S0c5aWFtVmpkQ2twTzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJSFpoYkhWbGN6dGNiaUlzSWk4cUtpQlZjMlZrSUdadmNpQnVZWFJwZG1VZ2JXVjBhRzlrSUhKbFptVnlaVzVqWlhNdUlDb3ZYRzUyWVhJZ1lYSnlZWGxRY205MGJ5QTlJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTeGNiaUFnSUNCbGNuSnZjbEJ5YjNSdklEMGdSWEp5YjNJdWNISnZkRzkwZVhCbExGeHVJQ0FnSUc5aWFtVmpkRkJ5YjNSdklEMGdUMkpxWldOMExuQnliM1J2ZEhsd1pUdGNibHh1THlvcUlFNWhkR2wyWlNCdFpYUm9iMlFnY21WbVpYSmxibU5sY3k0Z0tpOWNiblpoY2lCd2NtOXdaWEowZVVselJXNTFiV1Z5WVdKc1pTQTlJRzlpYW1WamRGQnliM1J2TG5CeWIzQmxjblI1U1hORmJuVnRaWEpoWW14bExGeHVJQ0FnSUhOd2JHbGpaU0E5SUdGeWNtRjVVSEp2ZEc4dWMzQnNhV05sTzF4dVhHNHZLaXBjYmlBcUlFRnVJRzlpYW1WamRDQmxiblpwY205dWJXVnVkQ0JtWldGMGRYSmxJR1pzWVdkekxseHVJQ3BjYmlBcUlFQnpkR0YwYVdOY2JpQXFJRUJ0WlcxaVpYSlBaaUJmWEc0Z0tpQkFkSGx3WlNCUFltcGxZM1JjYmlBcUwxeHVkbUZ5SUhOMWNIQnZjblFnUFNCN2ZUdGNibHh1S0daMWJtTjBhVzl1S0hncElIdGNiaUFnZG1GeUlFTjBiM0lnUFNCbWRXNWpkR2x2YmlncElIc2dkR2hwY3k1NElEMGdlRHNnZlN4Y2JpQWdJQ0FnSUc5aWFtVmpkQ0E5SUhzZ0p6QW5PaUI0TENBbmJHVnVaM1JvSnpvZ2VDQjlMRnh1SUNBZ0lDQWdjSEp2Y0hNZ1BTQmJYVHRjYmx4dUlDQkRkRzl5TG5CeWIzUnZkSGx3WlNBOUlIc2dKM1poYkhWbFQyWW5PaUI0TENBbmVTYzZJSGdnZlR0Y2JpQWdabTl5SUNoMllYSWdhMlY1SUdsdUlHNWxkeUJEZEc5eUtTQjdJSEJ5YjNCekxuQjFjMmdvYTJWNUtUc2dmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaWFJsWTNRZ2FXWWdZRzVoYldWZ0lHOXlJR0J0WlhOellXZGxZQ0J3Y205d1pYSjBhV1Z6SUc5bUlHQkZjbkp2Y2k1d2NtOTBiM1I1Y0dWZ0lHRnlaVnh1SUNBZ0tpQmxiblZ0WlhKaFlteGxJR0o1SUdSbFptRjFiSFFnS0VsRklEd2dPU3dnVTJGbVlYSnBJRHdnTlM0eEtTNWNiaUFnSUNwY2JpQWdJQ29nUUcxbGJXSmxjazltSUY4dWMzVndjRzl5ZEZ4dUlDQWdLaUJBZEhsd1pTQmliMjlzWldGdVhHNGdJQ0FxTDF4dUlDQnpkWEJ3YjNKMExtVnVkVzFGY25KdmNsQnliM0J6SUQwZ2NISnZjR1Z5ZEhsSmMwVnVkVzFsY21GaWJHVXVZMkZzYkNobGNuSnZjbEJ5YjNSdkxDQW5iV1Z6YzJGblpTY3BJSHg4WEc0Z0lDQWdjSEp2Y0dWeWRIbEpjMFZ1ZFcxbGNtRmliR1V1WTJGc2JDaGxjbkp2Y2xCeWIzUnZMQ0FuYm1GdFpTY3BPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkVaWFJsWTNRZ2FXWWdZSEJ5YjNSdmRIbHdaV0FnY0hKdmNHVnlkR2xsY3lCaGNtVWdaVzUxYldWeVlXSnNaU0JpZVNCa1pXWmhkV3gwTGx4dUlDQWdLbHh1SUNBZ0tpQkdhWEpsWm05NElEd2dNeTQyTENCUGNHVnlZU0ErSURrdU5UQWdMU0JQY0dWeVlTQThJREV4TGpZd0xDQmhibVFnVTJGbVlYSnBJRHdnTlM0eFhHNGdJQ0FxSUNocFppQjBhR1VnY0hKdmRHOTBlWEJsSUc5eUlHRWdjSEp2Y0dWeWRIa2diMjRnZEdobElIQnliM1J2ZEhsd1pTQm9ZWE1nWW1WbGJpQnpaWFFwWEc0Z0lDQXFJR2x1WTI5eWNtVmpkR3g1SUhObGRDQjBhR1VnWUZ0YlJXNTFiV1Z5WVdKc1pWMWRZQ0IyWVd4MVpTQnZaaUJoSUdaMWJtTjBhVzl1SjNNZ1lIQnliM1J2ZEhsd1pXQmNiaUFnSUNvZ2NISnZjR1Z5ZEhrZ2RHOGdZSFJ5ZFdWZ0xseHVJQ0FnS2x4dUlDQWdLaUJBYldWdFltVnlUMllnWHk1emRYQndiM0owWEc0Z0lDQXFJRUIwZVhCbElHSnZiMnhsWVc1Y2JpQWdJQ292WEc0Z0lITjFjSEJ2Y25RdVpXNTFiVkJ5YjNSdmRIbHdaWE1nUFNCd2NtOXdaWEowZVVselJXNTFiV1Z5WVdKc1pTNWpZV3hzS0VOMGIzSXNJQ2R3Y205MGIzUjVjR1VuS1R0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUkdWMFpXTjBJR2xtSUhCeWIzQmxjblJwWlhNZ2MyaGhaRzkzYVc1bklIUm9iM05sSUc5dUlHQlBZbXBsWTNRdWNISnZkRzkwZVhCbFlDQmhjbVVnYm05dUxXVnVkVzFsY21GaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVsdUlFbEZJRHdnT1NCaGJpQnZZbXBsWTNRbmN5QnZkMjRnY0hKdmNHVnlkR2xsY3l3Z2MyaGhaRzkzYVc1bklHNXZiaTFsYm5WdFpYSmhZbXhsSUc5dVpYTXNYRzRnSUNBcUlHRnlaU0J0WVdSbElHNXZiaTFsYm5WdFpYSmhZbXhsSUdGeklIZGxiR3dnS0dFdWF5NWhJSFJvWlNCS1UyTnlhWEIwSUdCYlcwUnZiblJGYm5WdFhWMWdJR0oxWnlrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ0WlcxaVpYSlBaaUJmTG5OMWNIQnZjblJjYmlBZ0lDb2dRSFI1Y0dVZ1ltOXZiR1ZoYmx4dUlDQWdLaTljYmlBZ2MzVndjRzl5ZEM1dWIyNUZiblZ0VTJoaFpHOTNjeUE5SUNFdmRtRnNkV1ZQWmk4dWRHVnpkQ2h3Y205d2N5azdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFUmxkR1ZqZENCcFppQnZkMjRnY0hKdmNHVnlkR2xsY3lCaGNtVWdhWFJsY21GMFpXUWdZV1owWlhJZ2FXNW9aWEpwZEdWa0lIQnliM0JsY25ScFpYTWdLRWxGSUR3Z09Ta3VYRzRnSUNBcVhHNGdJQ0FxSUVCdFpXMWlaWEpQWmlCZkxuTjFjSEJ2Y25SY2JpQWdJQ29nUUhSNWNHVWdZbTl2YkdWaGJseHVJQ0FnS2k5Y2JpQWdjM1Z3Y0c5eWRDNXZkMjVNWVhOMElEMGdjSEp2Y0hOYk1GMGdJVDBnSjNnbk8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpYUmxZM1FnYVdZZ1lFRnljbUY1STNOb2FXWjBZQ0JoYm1RZ1lFRnljbUY1STNOd2JHbGpaV0FnWVhWbmJXVnVkQ0JoY25KaGVTMXNhV3RsSUc5aWFtVmpkSE5jYmlBZ0lDb2dZMjl5Y21WamRHeDVMbHh1SUNBZ0tseHVJQ0FnS2lCR2FYSmxabTk0SUR3Z01UQXNJR052YlhCaGRHbGlhV3hwZEhrZ2JXOWtaWE1nYjJZZ1NVVWdPQ3dnWVc1a0lFbEZJRHdnT1NCb1lYWmxJR0oxWjJkNUlFRnljbUY1WEc0Z0lDQXFJR0J6YUdsbWRDZ3BZQ0JoYm1RZ1lITndiR2xqWlNncFlDQm1kVzVqZEdsdmJuTWdkR2hoZENCbVlXbHNJSFJ2SUhKbGJXOTJaU0IwYUdVZ2JHRnpkQ0JsYkdWdFpXNTBMRnh1SUNBZ0tpQmdkbUZzZFdWYk1GMWdMQ0J2WmlCaGNuSmhlUzFzYVd0bElHOWlhbVZqZEhNZ1pYWmxiaUIwYUc5MVoyZ2dkR2hsSUZ3aWJHVnVaM1JvWENJZ2NISnZjR1Z5ZEhrZ2FYTmNiaUFnSUNvZ2MyVjBJSFJ2SUdBd1lDNGdWR2hsSUdCemFHbG1kQ2dwWUNCdFpYUm9iMlFnYVhNZ1luVm5aM2tnYVc0Z1kyOXRjR0YwYVdKcGJHbDBlU0J0YjJSbGN5QnZaaUJKUlNBNExGeHVJQ0FnS2lCM2FHbHNaU0JnYzNCc2FXTmxLQ2xnSUdseklHSjFaMmQ1SUhKbFoyRnlaR3hsYzNNZ2IyWWdiVzlrWlNCcGJpQkpSU0E4SURrdVhHNGdJQ0FxWEc0Z0lDQXFJRUJ0WlcxaVpYSlBaaUJmTG5OMWNIQnZjblJjYmlBZ0lDb2dRSFI1Y0dVZ1ltOXZiR1ZoYmx4dUlDQWdLaTljYmlBZ2MzVndjRzl5ZEM1emNHeHBZMlZQWW1wbFkzUnpJRDBnS0hOd2JHbGpaUzVqWVd4c0tHOWlhbVZqZEN3Z01Dd2dNU2tzSUNGdlltcGxZM1JiTUYwcE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRVpYUmxZM1FnYkdGamF5QnZaaUJ6ZFhCd2IzSjBJR1p2Y2lCaFkyTmxjM05wYm1jZ2MzUnlhVzVuSUdOb1lYSmhZM1JsY25NZ1lua2dhVzVrWlhndVhHNGdJQ0FxWEc0Z0lDQXFJRWxGSUR3Z09DQmpZVzRuZENCaFkyTmxjM01nWTJoaGNtRmpkR1Z5Y3lCaWVTQnBibVJsZUM0Z1NVVWdPQ0JqWVc0Z2IyNXNlU0JoWTJObGMzTWdZMmhoY21GamRHVnljMXh1SUNBZ0tpQmllU0JwYm1SbGVDQnZiaUJ6ZEhKcGJtY2diR2wwWlhKaGJITXNJRzV2ZENCemRISnBibWNnYjJKcVpXTjBjeTVjYmlBZ0lDcGNiaUFnSUNvZ1FHMWxiV0psY2s5bUlGOHVjM1Z3Y0c5eWRGeHVJQ0FnS2lCQWRIbHdaU0JpYjI5c1pXRnVYRzRnSUNBcUwxeHVJQ0J6ZFhCd2IzSjBMblZ1YVc1a1pYaGxaRU5vWVhKeklEMGdLQ2Q0SjFzd1hTQXJJRTlpYW1WamRDZ25lQ2NwV3pCZEtTQWhQU0FuZUhnbk8xeHVmU2d4TENBd0tTazdYRzVjYm0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnYzNWd2NHOXlkRHRjYmlJc0lpOHFLbHh1SUNvZ1ZHaHBjeUJ0WlhSb2IyUWdjbVYwZFhKdWN5QjBhR1VnWm1seWMzUWdZWEpuZFcxbGJuUWdjSEp2ZG1sa1pXUWdkRzhnYVhRdVhHNGdLbHh1SUNvZ1FITjBZWFJwWTF4dUlDb2dRRzFsYldKbGNrOW1JRjljYmlBcUlFQmpZWFJsWjI5eWVTQlZkR2xzYVhSNVhHNGdLaUJBY0dGeVlXMGdleXA5SUhaaGJIVmxJRUZ1ZVNCMllXeDFaUzVjYmlBcUlFQnlaWFIxY201eklIc3FmU0JTWlhSMWNtNXpJR0IyWVd4MVpXQXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUhaaGNpQnZZbXBsWTNRZ1BTQjdJQ2QxYzJWeUp6b2dKMlp5WldRbklIMDdYRzRnS2x4dUlDb2dYeTVwWkdWdWRHbDBlU2h2WW1wbFkzUXBJRDA5UFNCdlltcGxZM1E3WEc0Z0tpQXZMeUE5UGlCMGNuVmxYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbGtaVzUwYVhSNUtIWmhiSFZsS1NCN1hHNGdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0JwWkdWdWRHbDBlVHRjYmlJc0lpOHFLbHh1SUNvZ1FTQnVieTF2Y0dWeVlYUnBiMjRnWm5WdVkzUnBiMjRnZEdoaGRDQnlaWFIxY201eklHQjFibVJsWm1sdVpXUmdJSEpsWjJGeVpHeGxjM01nYjJZZ2RHaGxYRzRnS2lCaGNtZDFiV1Z1ZEhNZ2FYUWdjbVZqWldsMlpYTXVYRzRnS2x4dUlDb2dRSE4wWVhScFkxeHVJQ29nUUcxbGJXSmxjazltSUY5Y2JpQXFJRUJqWVhSbFoyOXllU0JWZEdsc2FYUjVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUhaaGNpQnZZbXBsWTNRZ1BTQjdJQ2QxYzJWeUp6b2dKMlp5WldRbklIMDdYRzRnS2x4dUlDb2dYeTV1YjI5d0tHOWlhbVZqZENrZ1BUMDlJSFZ1WkdWbWFXNWxaRHRjYmlBcUlDOHZJRDArSUhSeWRXVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z2JtOXZjQ2dwSUh0Y2JpQWdMeThnVG04Z2IzQmxjbUYwYVc5dUlIQmxjbVp2Y20xbFpDNWNibjFjYmx4dWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCdWIyOXdPMXh1SWl3aWRtRnlJR0poYzJWUWNtOXdaWEowZVNBOUlISmxjWFZwY21Vb0p5NHVMMmx1ZEdWeWJtRnNMMkpoYzJWUWNtOXdaWEowZVNjcExGeHVJQ0FnSUdKaGMyVlFjbTl3WlhKMGVVUmxaWEFnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOWlZWE5sVUhKdmNHVnlkSGxFWldWd0p5a3NYRzRnSUNBZ2FYTkxaWGtnUFNCeVpYRjFhWEpsS0NjdUxpOXBiblJsY201aGJDOXBjMHRsZVNjcE8xeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0JtZFc1amRHbHZiaUIwYUdGMElISmxkSFZ5Ym5NZ2RHaGxJSEJ5YjNCbGNuUjVJSFpoYkhWbElHRjBJR0J3WVhSb1lDQnZiaUJoWEc0Z0tpQm5hWFpsYmlCdlltcGxZM1F1WEc0Z0tseHVJQ29nUUhOMFlYUnBZMXh1SUNvZ1FHMWxiV0psY2s5bUlGOWNiaUFxSUVCallYUmxaMjl5ZVNCVmRHbHNhWFI1WEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZkhOMGNtbHVaMzBnY0dGMGFDQlVhR1VnY0dGMGFDQnZaaUIwYUdVZ2NISnZjR1Z5ZEhrZ2RHOGdaMlYwTGx4dUlDb2dRSEpsZEhWeWJuTWdlMFoxYm1OMGFXOXVmU0JTWlhSMWNtNXpJSFJvWlNCdVpYY2dablZ1WTNScGIyNHVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDcGNiaUFxSUhaaGNpQnZZbXBsWTNSeklEMGdXMXh1SUNvZ0lDQjdJQ2RoSnpvZ2V5QW5ZaWM2SUhzZ0oyTW5PaUF5SUgwZ2ZTQjlMRnh1SUNvZ0lDQjdJQ2RoSnpvZ2V5QW5ZaWM2SUhzZ0oyTW5PaUF4SUgwZ2ZTQjlYRzRnS2lCZE8xeHVJQ3BjYmlBcUlGOHViV0Z3S0c5aWFtVmpkSE1zSUY4dWNISnZjR1Z5ZEhrb0oyRXVZaTVqSnlrcE8xeHVJQ29nTHk4Z1BUNGdXeklzSURGZFhHNGdLbHh1SUNvZ1h5NXdiSFZqYXloZkxuTnZjblJDZVNodlltcGxZM1J6TENCZkxuQnliM0JsY25SNUtGc25ZU2NzSUNkaUp5d2dKMk1uWFNrcExDQW5ZUzVpTG1NbktUdGNiaUFxSUM4dklEMCtJRnN4TENBeVhWeHVJQ292WEc1bWRXNWpkR2x2YmlCd2NtOXdaWEowZVNod1lYUm9LU0I3WEc0Z0lISmxkSFZ5YmlCcGMwdGxlU2h3WVhSb0tTQS9JR0poYzJWUWNtOXdaWEowZVNod1lYUm9LU0E2SUdKaGMyVlFjbTl3WlhKMGVVUmxaWEFvY0dGMGFDazdYRzU5WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2NISnZjR1Z5ZEhrN1hHNGlMQ0lvWm5WdVkzUnBiMjRnS0hCeWIyTmxjM01wZTF4dUx5OGdkbWx0T25SelBUUTZjM1J6UFRRNmMzYzlORHBjYmk4cUlWeHVJQ3BjYmlBcUlFTnZjSGx5YVdkb2RDQXlNREE1TFRJd01USWdTM0pwY3lCTGIzZGhiQ0IxYm1SbGNpQjBhR1VnZEdWeWJYTWdiMllnZEdobElFMUpWRnh1SUNvZ2JHbGpaVzV6WlNCbWIzVnVaQ0JoZENCb2RIUndPaTh2WjJsMGFIVmlMbU52YlM5cmNtbHphMjkzWVd3dmNTOXlZWGN2YldGemRHVnlMMHhKUTBWT1UwVmNiaUFxWEc0Z0tpQlhhWFJvSUhCaGNuUnpJR0o1SUZSNWJHVnlJRU5zYjNObFhHNGdLaUJEYjNCNWNtbG5hSFFnTWpBd055MHlNREE1SUZSNWJHVnlJRU5zYjNObElIVnVaR1Z5SUhSb1pTQjBaWEp0Y3lCdlppQjBhR1VnVFVsVUlGZ2diR2xqWlc1elpTQm1iM1Z1WkZ4dUlDb2dZWFFnYUhSMGNEb3ZMM2QzZHk1dmNHVnVjMjkxY21ObExtOXlaeTlzYVdObGJuTmxjeTl0YVhRdGJHbGpaVzV6WlM1b2RHMXNYRzRnS2lCR2IzSnJaV1FnWVhRZ2NtVm1YM05sYm1RdWFuTWdkbVZ5YzJsdmJqb2dNakF3T1Mwd05TMHhNVnh1SUNwY2JpQXFJRmRwZEdnZ2NHRnlkSE1nWW5rZ1RXRnlheUJOYVd4c1pYSmNiaUFxSUVOdmNIbHlhV2RvZENBb1F5a2dNakF4TVNCSGIyOW5iR1VnU1c1akxseHVJQ3BjYmlBcUlFeHBZMlZ1YzJWa0lIVnVaR1Z5SUhSb1pTQkJjR0ZqYUdVZ1RHbGpaVzV6WlN3Z1ZtVnljMmx2YmlBeUxqQWdLSFJvWlNCY0lreHBZMlZ1YzJWY0lpazdYRzRnS2lCNWIzVWdiV0Y1SUc1dmRDQjFjMlVnZEdocGN5Qm1hV3hsSUdWNFkyVndkQ0JwYmlCamIyMXdiR2xoYm1ObElIZHBkR2dnZEdobElFeHBZMlZ1YzJVdVhHNGdLaUJaYjNVZ2JXRjVJRzlpZEdGcGJpQmhJR052Y0hrZ2IyWWdkR2hsSUV4cFkyVnVjMlVnWVhSY2JpQXFYRzRnS2lCb2RIUndPaTh2ZDNkM0xtRndZV05vWlM1dmNtY3ZiR2xqWlc1elpYTXZURWxEUlU1VFJTMHlMakJjYmlBcVhHNGdLaUJWYm14bGMzTWdjbVZ4ZFdseVpXUWdZbmtnWVhCd2JHbGpZV0pzWlNCc1lYY2diM0lnWVdkeVpXVmtJSFJ2SUdsdUlIZHlhWFJwYm1jc0lITnZablIzWVhKbFhHNGdLaUJrYVhOMGNtbGlkWFJsWkNCMWJtUmxjaUIwYUdVZ1RHbGpaVzV6WlNCcGN5QmthWE4wY21saWRYUmxaQ0J2YmlCaGJpQmNJa0ZUSUVsVFhDSWdRa0ZUU1ZNc1hHNGdLaUJYU1ZSSVQxVlVJRmRCVWxKQlRsUkpSVk1nVDFJZ1EwOU9SRWxVU1U5T1V5QlBSaUJCVGxrZ1MwbE9SQ3dnWldsMGFHVnlJR1Y0Y0hKbGMzTWdiM0lnYVcxd2JHbGxaQzVjYmlBcUlGTmxaU0IwYUdVZ1RHbGpaVzV6WlNCbWIzSWdkR2hsSUhOd1pXTnBabWxqSUd4aGJtZDFZV2RsSUdkdmRtVnlibWx1WnlCd1pYSnRhWE56YVc5dWN5QmhibVJjYmlBcUlHeHBiV2wwWVhScGIyNXpJSFZ1WkdWeUlIUm9aU0JNYVdObGJuTmxMbHh1SUNwY2JpQXFMMXh1WEc0b1puVnVZM1JwYjI0Z0tHUmxabWx1YVhScGIyNHBJSHRjYmlBZ0lDQmNJblZ6WlNCemRISnBZM1JjSWp0Y2JseHVJQ0FnSUM4dklGUm9hWE1nWm1sc1pTQjNhV3hzSUdaMWJtTjBhVzl1SUhCeWIzQmxjbXg1SUdGeklHRWdQSE5qY21sd2RENGdkR0ZuTENCdmNpQmhJRzF2WkhWc1pWeHVJQ0FnSUM4dklIVnphVzVuSUVOdmJXMXZia3BUSUdGdVpDQk9iMlJsU2xNZ2IzSWdVbVZ4ZFdseVpVcFRJRzF2WkhWc1pTQm1iM0p0WVhSekxpQWdTVzVjYmlBZ0lDQXZMeUJEYjIxdGIyNHZUbTlrWlM5U1pYRjFhWEpsU2xNc0lIUm9aU0J0YjJSMWJHVWdaWGh3YjNKMGN5QjBhR1VnVVNCQlVFa2dZVzVrSUhkb1pXNWNiaUFnSUNBdkx5QmxlR1ZqZFhSbFpDQmhjeUJoSUhOcGJYQnNaU0E4YzJOeWFYQjBQaXdnYVhRZ1kzSmxZWFJsY3lCaElGRWdaMnh2WW1Gc0lHbHVjM1JsWVdRdVhHNWNiaUFnSUNBdkx5Qk5iMjUwWVdkbElGSmxjWFZwY21WY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdKdmIzUnpkSEpoY0NBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hHNGdJQ0FnSUNBZ0lHSnZiM1J6ZEhKaGNDaGNJbkJ5YjIxcGMyVmNJaXdnWkdWbWFXNXBkR2x2YmlrN1hHNWNiaUFnSUNBdkx5QkRiMjF0YjI1S1UxeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdWNGNHOXlkSE1nUFQwOUlGd2liMkpxWldOMFhDSWdKaVlnZEhsd1pXOW1JRzF2WkhWc1pTQTlQVDBnWENKdlltcGxZM1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnRiMlIxYkdVdVpYaHdiM0owY3lBOUlHUmxabWx1YVhScGIyNG9LVHRjYmx4dUlDQWdJQzh2SUZKbGNYVnBjbVZLVTF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JR1JsWm1sdVpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JR1JsWm1sdVpTNWhiV1FwSUh0Y2JpQWdJQ0FnSUNBZ1pHVm1hVzVsS0dSbFptbHVhWFJwYjI0cE8xeHVYRzRnSUNBZ0x5OGdVMFZUSUNoVFpXTjFjbVVnUldOdFlWTmpjbWx3ZENsY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJ6WlhNZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGelpYTXViMnNvS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVnpMbTFoYTJWUklEMGdaR1ZtYVc1cGRHbHZianRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1BITmpjbWx3ZEQ1Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUIzYVc1a2IzY2dJVDA5SUZ3aWRXNWtaV1pwYm1Wa1hDSWdmSHdnZEhsd1pXOW1JSE5sYkdZZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdMeThnVUhKbFptVnlJSGRwYm1SdmR5QnZkbVZ5SUhObGJHWWdabTl5SUdGa1pDMXZiaUJ6WTNKcGNIUnpMaUJWYzJVZ2MyVnNaaUJtYjNKY2JpQWdJQ0FnSUNBZ0x5OGdibTl1TFhkcGJtUnZkMlZrSUdOdmJuUmxlSFJ6TGx4dUlDQWdJQ0FnSUNCMllYSWdaMnh2WW1Gc0lEMGdkSGx3Wlc5bUlIZHBibVJ2ZHlBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlBL0lIZHBibVJ2ZHlBNklITmxiR1k3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdSMlYwSUhSb1pTQmdkMmx1Wkc5M1lDQnZZbXBsWTNRc0lITmhkbVVnZEdobElIQnlaWFpwYjNWeklGRWdaMnh2WW1Gc1hHNGdJQ0FnSUNBZ0lDOHZJR0Z1WkNCcGJtbDBhV0ZzYVhwbElGRWdZWE1nWVNCbmJHOWlZV3d1WEc0Z0lDQWdJQ0FnSUhaaGNpQndjbVYyYVc5MWMxRWdQU0JuYkc5aVlXd3VVVHRjYmlBZ0lDQWdJQ0FnWjJ4dlltRnNMbEVnUFNCa1pXWnBibWwwYVc5dUtDazdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z1FXUmtJR0VnYm05RGIyNW1iR2xqZENCbWRXNWpkR2x2YmlCemJ5QlJJR05oYmlCaVpTQnlaVzF2ZG1Wa0lHWnliMjBnZEdobFhHNGdJQ0FnSUNBZ0lDOHZJR2RzYjJKaGJDQnVZVzFsYzNCaFkyVXVYRzRnSUNBZ0lDQWdJR2RzYjJKaGJDNVJMbTV2UTI5dVpteHBZM1FnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCbmJHOWlZV3d1VVNBOUlIQnlaWFpwYjNWelVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUNBZ0lDQjlPMXh1WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGd2lWR2hwY3lCbGJuWnBjbTl1YldWdWRDQjNZWE1nYm05MElHRnVkR2xqYVhCaGRHVmtJR0o1SUZFdUlGQnNaV0Z6WlNCbWFXeGxJR0VnWW5Wbkxsd2lLVHRjYmlBZ0lDQjlYRzVjYm4wcEtHWjFibU4wYVc5dUlDZ3BJSHRjYmx3aWRYTmxJSE4wY21samRGd2lPMXh1WEc1MllYSWdhR0Z6VTNSaFkydHpJRDBnWm1Gc2MyVTdYRzUwY25rZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWdwTzF4dWZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lHaGhjMU4wWVdOcmN5QTlJQ0VoWlM1emRHRmphenRjYm4xY2JseHVMeThnUVd4c0lHTnZaR1VnWVdaMFpYSWdkR2hwY3lCd2IybHVkQ0IzYVd4c0lHSmxJR1pwYkhSbGNtVmtJR1p5YjIwZ2MzUmhZMnNnZEhKaFkyVnpJSEpsY0c5eWRHVmtYRzR2THlCaWVTQlJMbHh1ZG1GeUlIRlRkR0Z5ZEdsdVoweHBibVVnUFNCallYQjBkWEpsVEdsdVpTZ3BPMXh1ZG1GeUlIRkdhV3hsVG1GdFpUdGNibHh1THk4Z2MyaHBiWE5jYmx4dUx5OGdkWE5sWkNCbWIzSWdabUZzYkdKaFkyc2dhVzRnWENKaGJHeFNaWE52YkhabFpGd2lYRzUyWVhJZ2JtOXZjQ0E5SUdaMWJtTjBhVzl1SUNncElIdDlPMXh1WEc0dkx5QlZjMlVnZEdobElHWmhjM1JsYzNRZ2NHOXpjMmxpYkdVZ2JXVmhibk1nZEc4Z1pYaGxZM1YwWlNCaElIUmhjMnNnYVc0Z1lTQm1kWFIxY21VZ2RIVnlibHh1THk4Z2IyWWdkR2hsSUdWMlpXNTBJR3h2YjNBdVhHNTJZWElnYm1WNGRGUnBZMnNnUFNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0x5OGdiR2x1YTJWa0lHeHBjM1FnYjJZZ2RHRnphM01nS0hOcGJtZHNaU3dnZDJsMGFDQm9aV0ZrSUc1dlpHVXBYRzRnSUNBZ2RtRnlJR2hsWVdRZ1BTQjdkR0Z6YXpvZ2RtOXBaQ0F3TENCdVpYaDBPaUJ1ZFd4c2ZUdGNiaUFnSUNCMllYSWdkR0ZwYkNBOUlHaGxZV1E3WEc0Z0lDQWdkbUZ5SUdac2RYTm9hVzVuSUQwZ1ptRnNjMlU3WEc0Z0lDQWdkbUZ5SUhKbGNYVmxjM1JVYVdOcklEMGdkbTlwWkNBd08xeHVJQ0FnSUhaaGNpQnBjMDV2WkdWS1V5QTlJR1poYkhObE8xeHVJQ0FnSUM4dklIRjFaWFZsSUdadmNpQnNZWFJsSUhSaGMydHpMQ0IxYzJWa0lHSjVJSFZ1YUdGdVpHeGxaQ0J5WldwbFkzUnBiMjRnZEhKaFkydHBibWRjYmlBZ0lDQjJZWElnYkdGMFpYSlJkV1YxWlNBOUlGdGRPMXh1WEc0Z0lDQWdablZ1WTNScGIyNGdabXgxYzJnb0tTQjdYRzRnSUNBZ0lDQWdJQzhxSUdwemFHbHVkQ0JzYjI5d1puVnVZem9nZEhKMVpTQXFMMXh1SUNBZ0lDQWdJQ0IyWVhJZ2RHRnpheXdnWkc5dFlXbHVPMXh1WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2hvWldGa0xtNWxlSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2hsWVdRZ1BTQm9aV0ZrTG01bGVIUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCMFlYTnJJRDBnYUdWaFpDNTBZWE5yTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhR1ZoWkM1MFlYTnJJRDBnZG05cFpDQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOXRZV2x1SUQwZ2FHVmhaQzVrYjIxaGFXNDdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hrYjIxaGFXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JvWldGa0xtUnZiV0ZwYmlBOUlIWnZhV1FnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2IyMWhhVzR1Wlc1MFpYSW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUhKMWJsTnBibWRzWlNoMFlYTnJMQ0JrYjIxaGFXNHBPMXh1WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2QyaHBiR1VnS0d4aGRHVnlVWFZsZFdVdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwWVhOcklEMGdiR0YwWlhKUmRXVjFaUzV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKMWJsTnBibWRzWlNoMFlYTnJLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbWJIVnphR2x1WnlBOUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJ5ZFc1eklHRWdjMmx1WjJ4bElHWjFibU4wYVc5dUlHbHVJSFJvWlNCaGMzbHVZeUJ4ZFdWMVpWeHVJQ0FnSUdaMWJtTjBhVzl1SUhKMWJsTnBibWRzWlNoMFlYTnJMQ0JrYjIxaGFXNHBJSHRjYmlBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSaGMyc29LVHRjYmx4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWE5PYjJSbFNsTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCSmJpQnViMlJsTENCMWJtTmhkV2RvZENCbGVHTmxjSFJwYjI1eklHRnlaU0JqYjI1emFXUmxjbVZrSUdaaGRHRnNJR1Z5Y205eWN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJTWlMxMGFISnZkeUIwYUdWdElITjVibU5vY205dWIzVnpiSGtnZEc4Z2FXNTBaWEp5ZFhCMElHWnNkWE5vYVc1bklWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnUlc1emRYSmxJR052Ym5ScGJuVmhkR2x2YmlCcFppQjBhR1VnZFc1allYVm5hSFFnWlhoalpYQjBhVzl1SUdseklITjFjSEJ5WlhOelpXUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJzYVhOMFpXNXBibWNnWENKMWJtTmhkV2RvZEVWNFkyVndkR2x2Ymx3aUlHVjJaVzUwY3lBb1lYTWdaRzl0WVdsdWN5QmtiMlZ6S1M1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkRiMjUwYVc1MVpTQnBiaUJ1WlhoMElHVjJaVzUwSUhSdklHRjJiMmxrSUhScFkyc2djbVZqZFhKemFXOXVMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoa2IyMWhhVzRwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaRzl0WVdsdUxtVjRhWFFvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyVjBWR2x0Wlc5MWRDaG1iSFZ6YUN3Z01DazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSdmJXRnBiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtiMjFoYVc0dVpXNTBaWElvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCbE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFbHVJR0p5YjNkelpYSnpMQ0IxYm1OaGRXZG9kQ0JsZUdObGNIUnBiMjV6SUdGeVpTQnViM1FnWm1GMFlXd3VYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVW1VdGRHaHliM2NnZEdobGJTQmhjM2x1WTJoeWIyNXZkWE5zZVNCMGJ5QmhkbTlwWkNCemJHOTNMV1J2ZDI1ekxseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMHNJREFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLR1J2YldGcGJpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOXRZV2x1TG1WNGFYUW9LVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJRzVsZUhSVWFXTnJJRDBnWm5WdVkzUnBiMjRnS0hSaGMyc3BJSHRjYmlBZ0lDQWdJQ0FnZEdGcGJDQTlJSFJoYVd3dWJtVjRkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJoYzJzNklIUmhjMnNzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtiMjFoYVc0NklHbHpUbTlrWlVwVElDWW1JSEJ5YjJObGMzTXVaRzl0WVdsdUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYm1WNGREb2diblZzYkZ4dUlDQWdJQ0FnSUNCOU8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNnaFpteDFjMmhwYm1jcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdac2RYTm9hVzVuSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjWFZsYzNSVWFXTnJLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCd2NtOWpaWE56SUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltWEc0Z0lDQWdJQ0FnSUhCeWIyTmxjM011ZEc5VGRISnBibWNvS1NBOVBUMGdYQ0piYjJKcVpXTjBJSEJ5YjJObGMzTmRYQ0lnSmlZZ2NISnZZMlZ6Y3k1dVpYaDBWR2xqYXlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJGYm5OMWNtVWdVU0JwY3lCcGJpQmhJSEpsWVd3Z1RtOWtaU0JsYm5acGNtOXViV1Z1ZEN3Z2QybDBhQ0JoSUdCd2NtOWpaWE56TG01bGVIUlVhV05yWUM1Y2JpQWdJQ0FnSUNBZ0x5OGdWRzhnYzJWbElIUm9jbTkxWjJnZ1ptRnJaU0JPYjJSbElHVnVkbWx5YjI1dFpXNTBjenBjYmlBZ0lDQWdJQ0FnTHk4Z0tpQk5iMk5vWVNCMFpYTjBJSEoxYm01bGNpQXRJR1Y0Y0c5elpYTWdZU0JnY0hKdlkyVnpjMkFnWjJ4dlltRnNJSGRwZEdodmRYUWdZU0JnYm1WNGRGUnBZMnRnWEc0Z0lDQWdJQ0FnSUM4dklDb2dRbkp2ZDNObGNtbG1lU0F0SUdWNGNHOXpaWE1nWVNCZ2NISnZZMlZ6Y3k1dVpYaFVhV05yWUNCbWRXNWpkR2x2YmlCMGFHRjBJSFZ6WlhOY2JpQWdJQ0FnSUNBZ0x5OGdJQ0JnYzJWMFZHbHRaVzkxZEdBdUlFbHVJSFJvYVhNZ1kyRnpaU0JnYzJWMFNXMXRaV1JwWVhSbFlDQnBjeUJ3Y21WbVpYSnlaV1FnWW1WallYVnpaVnh1SUNBZ0lDQWdJQ0F2THlBZ0lDQnBkQ0JwY3lCbVlYTjBaWEl1SUVKeWIzZHpaWEpwWm5rbmN5QmdjSEp2WTJWemN5NTBiMU4wY21sdVp5Z3BZQ0I1YVdWc1pITmNiaUFnSUNBZ0lDQWdMeThnSUNCY0lsdHZZbXBsWTNRZ1QySnFaV04wWFZ3aUxDQjNhR2xzWlNCcGJpQmhJSEpsWVd3Z1RtOWtaU0JsYm5acGNtOXViV1Z1ZEZ4dUlDQWdJQ0FnSUNBdkx5QWdJR0J3Y205alpYTnpMbTVsZUhSVWFXTnJLQ2xnSUhscFpXeGtjeUJjSWx0dlltcGxZM1FnY0hKdlkyVnpjMTFjSWk1Y2JpQWdJQ0FnSUNBZ2FYTk9iMlJsU2xNZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lISmxjWFZsYzNSVWFXTnJJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdlkyVnpjeTV1WlhoMFZHbGpheWhtYkhWemFDazdYRzRnSUNBZ0lDQWdJSDA3WEc1Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJ6WlhSSmJXMWxaR2xoZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJKYmlCSlJURXdMQ0JPYjJSbExtcHpJREF1T1Nzc0lHOXlJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzlPYjJKc1pVcFRMM05sZEVsdGJXVmthV0YwWlZ4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIZHBibVJ2ZHlBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WeGRXVnpkRlJwWTJzZ1BTQnpaWFJKYlcxbFpHbGhkR1V1WW1sdVpDaDNhVzVrYjNjc0lHWnNkWE5vS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsY1hWbGMzUlVhV05ySUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sZEVsdGJXVmthV0YwWlNobWJIVnphQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJOWlhOellXZGxRMmhoYm01bGJDQWhQVDBnWENKMWJtUmxabWx1WldSY0lpa2dlMXh1SUNBZ0lDQWdJQ0F2THlCdGIyUmxjbTRnWW5KdmQzTmxjbk5jYmlBZ0lDQWdJQ0FnTHk4Z2FIUjBjRG92TDNkM2R5NXViMjVpYkc5amEybHVaeTVwYnk4eU1ERXhMekEyTDNkcGJtUnZkMjVsZUhSMGFXTnJMbWgwYld4Y2JpQWdJQ0FnSUNBZ2RtRnlJR05vWVc1dVpXd2dQU0J1WlhjZ1RXVnpjMkZuWlVOb1lXNXVaV3dvS1R0Y2JpQWdJQ0FnSUNBZ0x5OGdRWFFnYkdWaGMzUWdVMkZtWVhKcElGWmxjbk5wYjI0Z05pNHdMalVnS0RnMU16WXVNekF1TVNrZ2FXNTBaWEp0YVhSMFpXNTBiSGtnWTJGdWJtOTBJR055WldGMFpWeHVJQ0FnSUNBZ0lDQXZMeUIzYjNKcmFXNW5JRzFsYzNOaFoyVWdjRzl5ZEhNZ2RHaGxJR1pwY25OMElIUnBiV1VnWVNCd1lXZGxJR3h2WVdSekxseHVJQ0FnSUNBZ0lDQmphR0Z1Ym1Wc0xuQnZjblF4TG05dWJXVnpjMkZuWlNBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjWFZsYzNSVWFXTnJJRDBnY21WeGRXVnpkRkJ2Y25SVWFXTnJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyaGhibTVsYkM1d2IzSjBNUzV2Ym0xbGMzTmhaMlVnUFNCbWJIVnphRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnNkWE5vS0NrN1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJSFpoY2lCeVpYRjFaWE4wVUc5eWRGUnBZMnNnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QlBjR1Z5WVNCeVpYRjFhWEpsY3lCMWN5QjBieUJ3Y205MmFXUmxJR0VnYldWemMyRm5aU0J3WVhsc2IyRmtMQ0J5WldkaGNtUnNaWE56SUc5bVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCM2FHVjBhR1Z5SUhkbElIVnpaU0JwZEM1Y2JpQWdJQ0FnSUNBZ0lDQWdJR05vWVc1dVpXd3VjRzl5ZERJdWNHOXpkRTFsYzNOaFoyVW9NQ2s3WEc0Z0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lISmxjWFZsYzNSVWFXTnJJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJWMFZHbHRaVzkxZENobWJIVnphQ3dnTUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhGMVpYTjBVRzl5ZEZScFkyc29LVHRjYmlBZ0lDQWdJQ0FnZlR0Y2JseHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUM4dklHOXNaQ0JpY205M2MyVnljMXh1SUNBZ0lDQWdJQ0J5WlhGMVpYTjBWR2xqYXlBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxkRlJwYldWdmRYUW9abXgxYzJnc0lEQXBPMXh1SUNBZ0lDQWdJQ0I5TzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJ5ZFc1eklHRWdkR0Z6YXlCaFpuUmxjaUJoYkd3Z2IzUm9aWElnZEdGemEzTWdhR0YyWlNCaVpXVnVJSEoxYmx4dUlDQWdJQzh2SUhSb2FYTWdhWE1nZFhObFpuVnNJR1p2Y2lCMWJtaGhibVJzWldRZ2NtVnFaV04wYVc5dUlIUnlZV05yYVc1bklIUm9ZWFFnYm1WbFpITWdkRzhnYUdGd2NHVnVYRzRnSUNBZ0x5OGdZV1owWlhJZ1lXeHNJR0IwYUdWdVlHUWdkR0Z6YTNNZ2FHRjJaU0JpWldWdUlISjFiaTVjYmlBZ0lDQnVaWGgwVkdsamF5NXlkVzVCWm5SbGNpQTlJR1oxYm1OMGFXOXVJQ2gwWVhOcktTQjdYRzRnSUNBZ0lDQWdJR3hoZEdWeVVYVmxkV1V1Y0hWemFDaDBZWE5yS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZtYkhWemFHbHVaeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabXgxYzJocGJtY2dQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WeGRXVnpkRlJwWTJzb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzRnSUNBZ2NtVjBkWEp1SUc1bGVIUlVhV05yTzF4dWZTa29LVHRjYmx4dUx5OGdRWFIwWlcxd2RDQjBieUJ0WVd0bElHZGxibVZ5YVdOeklITmhabVVnYVc0Z2RHaGxJR1poWTJVZ2IyWWdaRzkzYm5OMGNtVmhiVnh1THk4Z2JXOWthV1pwWTJGMGFXOXVjeTVjYmk4dklGUm9aWEpsSUdseklHNXZJSE5wZEhWaGRHbHZiaUIzYUdWeVpTQjBhR2x6SUdseklHNWxZMlZ6YzJGeWVTNWNiaTh2SUVsbUlIbHZkU0J1WldWa0lHRWdjMlZqZFhKcGRIa2daM1ZoY21GdWRHVmxMQ0IwYUdWelpTQndjbWx0YjNKa2FXRnNjeUJ1WldWa0lIUnZJR0psWEc0dkx5QmtaV1Z3YkhrZ1puSnZlbVZ1SUdGdWVYZGhlU3dnWVc1a0lHbG1JSGx2ZFNCa2IyN2lnSmwwSUc1bFpXUWdZU0J6WldOMWNtbDBlU0JuZFdGeVlXNTBaV1VzWEc0dkx5QjBhR2x6SUdseklHcDFjM1FnY0d4aGFXNGdjR0Z5WVc1dmFXUXVYRzR2THlCSWIzZGxkbVZ5TENCMGFHbHpJQ29xYldsbmFIUXFLaUJvWVhabElIUm9aU0J1YVdObElITnBaR1V0WldabVpXTjBJRzltSUhKbFpIVmphVzVuSUhSb1pTQnphWHBsSUc5bVhHNHZMeUIwYUdVZ2JXbHVhV1pwWldRZ1kyOWtaU0JpZVNCeVpXUjFZMmx1WnlCNExtTmhiR3dvS1NCMGJ5QnRaWEpsYkhrZ2VDZ3BYRzR2THlCVFpXVWdUV0Z5YXlCTmFXeHNaWExpZ0pseklHVjRjR3hoYm1GMGFXOXVJRzltSUhkb1lYUWdkR2hwY3lCa2IyVnpMbHh1THk4Z2FIUjBjRG92TDNkcGEya3VaV050WVhOamNtbHdkQzV2Y21jdlpHOXJkUzV3YUhBL2FXUTlZMjl1ZG1WdWRHbHZibk02YzJGbVpWOXRaWFJoWDNCeWIyZHlZVzF0YVc1blhHNTJZWElnWTJGc2JDQTlJRVoxYm1OMGFXOXVMbU5oYkd3N1hHNW1kVzVqZEdsdmJpQjFibU4xY25KNVZHaHBjeWhtS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGJHd3VZWEJ3Ykhrb1ppd2dZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQjlPMXh1ZlZ4dUx5OGdWR2hwY3lCcGN5QmxjWFZwZG1Gc1pXNTBMQ0JpZFhRZ2MyeHZkMlZ5T2x4dUx5OGdkVzVqZFhKeWVWUm9hWE1nUFNCR2RXNWpkR2x2Ymw5aWFXNWtMbUpwYm1Rb1JuVnVZM1JwYjI1ZlltbHVaQzVqWVd4c0tUdGNiaTh2SUdoMGRIQTZMeTlxYzNCbGNtWXVZMjl0TDNWdVkzVnljbmwwYUdselhHNWNiblpoY2lCaGNuSmhlVjl6YkdsalpTQTlJSFZ1WTNWeWNubFVhR2x6S0VGeWNtRjVMbkJ5YjNSdmRIbHdaUzV6YkdsalpTazdYRzVjYm5aaGNpQmhjbkpoZVY5eVpXUjFZMlVnUFNCMWJtTjFjbko1VkdocGN5aGNiaUFnSUNCQmNuSmhlUzV3Y205MGIzUjVjR1V1Y21Wa2RXTmxJSHg4SUdaMWJtTjBhVzl1SUNoallXeHNZbUZqYXl3Z1ltRnphWE1wSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR2x1WkdWNElEMGdNQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxibWQwYUNBOUlIUm9hWE11YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0F2THlCamIyNWpaWEp1YVc1bklIUm9aU0JwYm1sMGFXRnNJSFpoYkhWbExDQnBaaUJ2Ym1VZ2FYTWdibTkwSUhCeWIzWnBaR1ZrWEc0Z0lDQWdJQ0FnSUdsbUlDaGhjbWQxYldWdWRITXViR1Z1WjNSb0lEMDlQU0F4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCelpXVnJJSFJ2SUhSb1pTQm1hWEp6ZENCMllXeDFaU0JwYmlCMGFHVWdZWEp5WVhrc0lHRmpZMjkxYm5ScGJtZGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHWnZjaUIwYUdVZ2NHOXpjMmxpYVd4cGRIa2dkR2hoZENCcGN5QnBjeUJoSUhOd1lYSnpaU0JoY25KaGVWeHVJQ0FnSUNBZ0lDQWdJQ0FnWkc4Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYm1SbGVDQnBiaUIwYUdsektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKaGMybHpJRDBnZEdocGMxdHBibVJsZUNzclhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNncksybHVaR1Y0SUQ0OUlHeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVkhsd1pVVnljbTl5S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCM2FHbHNaU0FvTVNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdMeThnY21Wa2RXTmxYRzRnSUNBZ0lDQWdJR1p2Y2lBb095QnBibVJsZUNBOElHeGxibWQwYURzZ2FXNWtaWGdyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1lXTmpiM1Z1ZENCbWIzSWdkR2hsSUhCdmMzTnBZbWxzYVhSNUlIUm9ZWFFnZEdobElHRnljbUY1SUdseklITndZWEp6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsdVpHVjRJR2x1SUhSb2FYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpWVhOcGN5QTlJR05oYkd4aVlXTnJLR0poYzJsekxDQjBhR2x6VzJsdVpHVjRYU3dnYVc1a1pYZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmlZWE5wY3p0Y2JpQWdJQ0I5WEc0cE8xeHVYRzUyWVhJZ1lYSnlZWGxmYVc1a1pYaFBaaUE5SUhWdVkzVnljbmxVYUdsektGeHVJQ0FnSUVGeWNtRjVMbkJ5YjNSdmRIbHdaUzVwYm1SbGVFOW1JSHg4SUdaMWJtTjBhVzl1SUNoMllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QnViM1FnWVNCMlpYSjVJR2R2YjJRZ2MyaHBiU3dnWW5WMElHZHZiMlFnWlc1dmRXZG9JR1p2Y2lCdmRYSWdiMjVsSUhWelpTQnZaaUJwZEZ4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElIUm9hWE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6VzJsZElEMDlQU0IyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXRNVHRjYmlBZ0lDQjlYRzRwTzF4dVhHNTJZWElnWVhKeVlYbGZiV0Z3SUQwZ2RXNWpkWEp5ZVZSb2FYTW9YRzRnSUNBZ1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG0xaGNDQjhmQ0JtZFc1amRHbHZiaUFvWTJGc2JHSmhZMnNzSUhSb2FYTndLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnpaV3htSUQwZ2RHaHBjenRjYmlBZ0lDQWdJQ0FnZG1GeUlHTnZiR3hsWTNRZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnWVhKeVlYbGZjbVZrZFdObEtITmxiR1lzSUdaMWJtTjBhVzl1SUNoMWJtUmxabWx1WldRc0lIWmhiSFZsTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjlzYkdWamRDNXdkWE5vS0dOaGJHeGlZV05yTG1OaGJHd29kR2hwYzNBc0lIWmhiSFZsTENCcGJtUmxlQ3dnYzJWc1ppa3BPMXh1SUNBZ0lDQWdJQ0I5TENCMmIybGtJREFwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWTI5c2JHVmpkRHRjYmlBZ0lDQjlYRzRwTzF4dVhHNTJZWElnYjJKcVpXTjBYMk55WldGMFpTQTlJRTlpYW1WamRDNWpjbVZoZEdVZ2ZId2dablZ1WTNScGIyNGdLSEJ5YjNSdmRIbHdaU2tnZTF4dUlDQWdJR1oxYm1OMGFXOXVJRlI1Y0dVb0tTQjdJSDFjYmlBZ0lDQlVlWEJsTG5CeWIzUnZkSGx3WlNBOUlIQnliM1J2ZEhsd1pUdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGUjVjR1VvS1R0Y2JuMDdYRzVjYm5aaGNpQnZZbXBsWTNSZmFHRnpUM2R1VUhKdmNHVnlkSGtnUFNCMWJtTjFjbko1VkdocGN5aFBZbXBsWTNRdWNISnZkRzkwZVhCbExtaGhjMDkzYmxCeWIzQmxjblI1S1R0Y2JseHVkbUZ5SUc5aWFtVmpkRjlyWlhseklEMGdUMkpxWldOMExtdGxlWE1nZkh3Z1puVnVZM1JwYjI0Z0tHOWlhbVZqZENrZ2UxeHVJQ0FnSUhaaGNpQnJaWGx6SUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2EyVjVJR2x1SUc5aWFtVmpkQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9iMkpxWldOMFgyaGhjMDkzYmxCeWIzQmxjblI1S0c5aWFtVmpkQ3dnYTJWNUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2EyVjVjeTV3ZFhOb0tHdGxlU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHdGxlWE03WEc1OU8xeHVYRzUyWVhJZ2IySnFaV04wWDNSdlUzUnlhVzVuSUQwZ2RXNWpkWEp5ZVZSb2FYTW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNTBiMU4wY21sdVp5azdYRzVjYm1aMWJtTjBhVzl1SUdselQySnFaV04wS0haaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsSUQwOVBTQlBZbXBsWTNRb2RtRnNkV1VwTzF4dWZWeHVYRzR2THlCblpXNWxjbUYwYjNJZ2NtVnNZWFJsWkNCemFHbHRjMXh1WEc0dkx5QkdTVmhOUlRvZ1VtVnRiM1psSUhSb2FYTWdablZ1WTNScGIyNGdiMjVqWlNCRlV6WWdaMlZ1WlhKaGRHOXljeUJoY21VZ2FXNGdVM0JwWkdWeVRXOXVhMlY1TGx4dVpuVnVZM1JwYjI0Z2FYTlRkRzl3U1hSbGNtRjBhVzl1S0dWNFkyVndkR2x2YmlrZ2UxeHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0FnSUc5aWFtVmpkRjkwYjFOMGNtbHVaeWhsZUdObGNIUnBiMjRwSUQwOVBTQmNJbHR2WW1wbFkzUWdVM1J2Y0VsMFpYSmhkR2x2YmwxY0lpQjhmRnh1SUNBZ0lDQWdJQ0JsZUdObGNIUnBiMjRnYVc1emRHRnVZMlZ2WmlCUlVtVjBkWEp1Vm1Gc2RXVmNiaUFnSUNBcE8xeHVmVnh1WEc0dkx5QkdTVmhOUlRvZ1VtVnRiM1psSUhSb2FYTWdhR1ZzY0dWeUlHRnVaQ0JSTG5KbGRIVnliaUJ2Ym1ObElFVlROaUJuWlc1bGNtRjBiM0p6SUdGeVpTQnBibHh1THk4Z1UzQnBaR1Z5VFc5dWEyVjVMbHh1ZG1GeUlGRlNaWFIxY201V1lXeDFaVHRjYm1sbUlDaDBlWEJsYjJZZ1VtVjBkWEp1Vm1Gc2RXVWdJVDA5SUZ3aWRXNWtaV1pwYm1Wa1hDSXBJSHRjYmlBZ0lDQlJVbVYwZFhKdVZtRnNkV1VnUFNCU1pYUjFjbTVXWVd4MVpUdGNibjBnWld4elpTQjdYRzRnSUNBZ1VWSmxkSFZ5YmxaaGJIVmxJRDBnWm5WdVkzUnBiMjRnS0haaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVkbUZzZFdVZ1BTQjJZV3gxWlR0Y2JpQWdJQ0I5TzF4dWZWeHVYRzR2THlCc2IyNW5JSE4wWVdOcklIUnlZV05sYzF4dVhHNTJZWElnVTFSQlEwdGZTbFZOVUY5VFJWQkJVa0ZVVDFJZ1BTQmNJa1p5YjIwZ2NISmxkbWx2ZFhNZ1pYWmxiblE2WENJN1hHNWNibVoxYm1OMGFXOXVJRzFoYTJWVGRHRmphMVJ5WVdObFRHOXVaeWhsY25KdmNpd2djSEp2YldselpTa2dlMXh1SUNBZ0lDOHZJRWxtSUhCdmMzTnBZbXhsTENCMGNtRnVjMlp2Y20wZ2RHaGxJR1Z5Y205eUlITjBZV05ySUhSeVlXTmxJR0o1SUhKbGJXOTJhVzVuSUU1dlpHVWdZVzVrSUZGY2JpQWdJQ0F2THlCamNuVm1kQ3dnZEdobGJpQmpiMjVqWVhSbGJtRjBhVzVuSUhkcGRHZ2dkR2hsSUhOMFlXTnJJSFJ5WVdObElHOW1JR0J3Y205dGFYTmxZQzRnVTJWbElDTTFOeTVjYmlBZ0lDQnBaaUFvYUdGelUzUmhZMnR6SUNZbVhHNGdJQ0FnSUNBZ0lIQnliMjFwYzJVdWMzUmhZMnNnSmlaY2JpQWdJQ0FnSUNBZ2RIbHdaVzltSUdWeWNtOXlJRDA5UFNCY0ltOWlhbVZqZEZ3aUlDWW1YRzRnSUNBZ0lDQWdJR1Z5Y205eUlDRTlQU0J1ZFd4c0lDWW1YRzRnSUNBZ0lDQWdJR1Z5Y205eUxuTjBZV05ySUNZbVhHNGdJQ0FnSUNBZ0lHVnljbTl5TG5OMFlXTnJMbWx1WkdWNFQyWW9VMVJCUTB0ZlNsVk5VRjlUUlZCQlVrRlVUMUlwSUQwOVBTQXRNVnh1SUNBZ0lDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2MzUmhZMnR6SUQwZ1cxMDdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJSEFnUFNCd2NtOXRhWE5sT3lBaElYQTdJSEFnUFNCd0xuTnZkWEpqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQXVjM1JoWTJzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkR0ZqYTNNdWRXNXphR2xtZENod0xuTjBZV05yS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCemRHRmphM011ZFc1emFHbG1kQ2hsY25KdmNpNXpkR0ZqYXlrN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUdOdmJtTmhkR1ZrVTNSaFkydHpJRDBnYzNSaFkydHpMbXB2YVc0b1hDSmNYRzVjSWlBcklGTlVRVU5MWDBwVlRWQmZVMFZRUVZKQlZFOVNJQ3NnWENKY1hHNWNJaWs3WEc0Z0lDQWdJQ0FnSUdWeWNtOXlMbk4wWVdOcklEMGdabWxzZEdWeVUzUmhZMnRUZEhKcGJtY29ZMjl1WTJGMFpXUlRkR0ZqYTNNcE8xeHVJQ0FnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnWm1sc2RHVnlVM1JoWTJ0VGRISnBibWNvYzNSaFkydFRkSEpwYm1jcElIdGNiaUFnSUNCMllYSWdiR2x1WlhNZ1BTQnpkR0ZqYTFOMGNtbHVaeTV6Y0d4cGRDaGNJbHhjYmx3aUtUdGNiaUFnSUNCMllYSWdaR1Z6YVhKbFpFeHBibVZ6SUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2gyWVhJZ2FTQTlJREE3SUdrZ1BDQnNhVzVsY3k1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JHbHVaU0E5SUd4cGJtVnpXMmxkTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doYVhOSmJuUmxjbTVoYkVaeVlXMWxLR3hwYm1VcElDWW1JQ0ZwYzA1dlpHVkdjbUZ0WlNoc2FXNWxLU0FtSmlCc2FXNWxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaWE5wY21Wa1RHbHVaWE11Y0hWemFDaHNhVzVsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaR1Z6YVhKbFpFeHBibVZ6TG1wdmFXNG9YQ0pjWEc1Y0lpazdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHbHpUbTlrWlVaeVlXMWxLSE4wWVdOclRHbHVaU2tnZTF4dUlDQWdJSEpsZEhWeWJpQnpkR0ZqYTB4cGJtVXVhVzVrWlhoUFppaGNJaWh0YjJSMWJHVXVhbk02WENJcElDRTlQU0F0TVNCOGZGeHVJQ0FnSUNBZ0lDQWdJQ0J6ZEdGamEweHBibVV1YVc1a1pYaFBaaWhjSWlodWIyUmxMbXB6T2x3aUtTQWhQVDBnTFRFN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdkbGRFWnBiR1ZPWVcxbFFXNWtUR2x1WlU1MWJXSmxjaWh6ZEdGamEweHBibVVwSUh0Y2JpQWdJQ0F2THlCT1lXMWxaQ0JtZFc1amRHbHZibk02SUZ3aVlYUWdablZ1WTNScGIyNU9ZVzFsSUNobWFXeGxibUZ0WlRwc2FXNWxUblZ0WW1WeU9tTnZiSFZ0Yms1MWJXSmxjaWxjSWx4dUlDQWdJQzh2SUVsdUlFbEZNVEFnWm5WdVkzUnBiMjRnYm1GdFpTQmpZVzRnYUdGMlpTQnpjR0ZqWlhNZ0tGd2lRVzV2Ym5sdGIzVnpJR1oxYm1OMGFXOXVYQ0lwSUU5ZmIxeHVJQ0FnSUhaaGNpQmhkSFJsYlhCME1TQTlJQzloZENBdUt5QmNYQ2dvTGlzcE9paGNYR1FyS1Rvb1B6cGNYR1FyS1Z4Y0tTUXZMbVY0WldNb2MzUmhZMnRNYVc1bEtUdGNiaUFnSUNCcFppQW9ZWFIwWlcxd2RERXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRoZEhSbGJYQjBNVnN4WFN3Z1RuVnRZbVZ5S0dGMGRHVnRjSFF4V3pKZEtWMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdRVzV2Ym5sdGIzVnpJR1oxYm1OMGFXOXVjem9nWENKaGRDQm1hV3hsYm1GdFpUcHNhVzVsVG5WdFltVnlPbU52YkhWdGJrNTFiV0psY2x3aVhHNGdJQ0FnZG1GeUlHRjBkR1Z0Y0hReUlEMGdMMkYwSUNoYlhpQmRLeWs2S0Z4Y1pDc3BPaWcvT2x4Y1pDc3BKQzh1WlhobFl5aHpkR0ZqYTB4cGJtVXBPMXh1SUNBZ0lHbG1JQ2hoZEhSbGJYQjBNaWtnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJGMGRHVnRjSFF5V3pGZExDQk9kVzFpWlhJb1lYUjBaVzF3ZERKYk1sMHBYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJHYVhKbFptOTRJSE4wZVd4bE9pQmNJbVoxYm1OMGFXOXVRR1pwYkdWdVlXMWxPbXhwYm1WT2RXMWlaWElnYjNJZ1FHWnBiR1Z1WVcxbE9teHBibVZPZFcxaVpYSmNJbHh1SUNBZ0lIWmhjaUJoZEhSbGJYQjBNeUE5SUM4dUtrQW9MaXNwT2loY1hHUXJLU1F2TG1WNFpXTW9jM1JoWTJ0TWFXNWxLVHRjYmlBZ0lDQnBaaUFvWVhSMFpXMXdkRE1wSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ0aGRIUmxiWEIwTTFzeFhTd2dUblZ0WW1WeUtHRjBkR1Z0Y0hReld6SmRLVjA3WEc0Z0lDQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnBjMGx1ZEdWeWJtRnNSbkpoYldVb2MzUmhZMnRNYVc1bEtTQjdYRzRnSUNBZ2RtRnlJR1pwYkdWT1lXMWxRVzVrVEdsdVpVNTFiV0psY2lBOUlHZGxkRVpwYkdWT1lXMWxRVzVrVEdsdVpVNTFiV0psY2loemRHRmphMHhwYm1VcE8xeHVYRzRnSUNBZ2FXWWdLQ0ZtYVd4bFRtRnRaVUZ1WkV4cGJtVk9kVzFpWlhJcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFpoY2lCbWFXeGxUbUZ0WlNBOUlHWnBiR1ZPWVcxbFFXNWtUR2x1WlU1MWJXSmxjbHN3WFR0Y2JpQWdJQ0IyWVhJZ2JHbHVaVTUxYldKbGNpQTlJR1pwYkdWT1lXMWxRVzVrVEdsdVpVNTFiV0psY2xzeFhUdGNibHh1SUNBZ0lISmxkSFZ5YmlCbWFXeGxUbUZ0WlNBOVBUMGdjVVpwYkdWT1lXMWxJQ1ltWEc0Z0lDQWdJQ0FnSUd4cGJtVk9kVzFpWlhJZ1BqMGdjVk4wWVhKMGFXNW5UR2x1WlNBbUpseHVJQ0FnSUNBZ0lDQnNhVzVsVG5WdFltVnlJRHc5SUhGRmJtUnBibWRNYVc1bE8xeHVmVnh1WEc0dkx5QmthWE5qYjNabGNpQnZkMjRnWm1sc1pTQnVZVzFsSUdGdVpDQnNhVzVsSUc1MWJXSmxjaUJ5WVc1blpTQm1iM0lnWm1sc2RHVnlhVzVuSUhOMFlXTnJYRzR2THlCMGNtRmpaWE5jYm1aMWJtTjBhVzl1SUdOaGNIUjFjbVZNYVc1bEtDa2dlMXh1SUNBZ0lHbG1JQ2doYUdGelUzUmhZMnR6S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0tUdGNiaUFnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCc2FXNWxjeUE5SUdVdWMzUmhZMnN1YzNCc2FYUW9YQ0pjWEc1Y0lpazdYRzRnSUNBZ0lDQWdJSFpoY2lCbWFYSnpkRXhwYm1VZ1BTQnNhVzVsYzFzd1hTNXBibVJsZUU5bUtGd2lRRndpS1NBK0lEQWdQeUJzYVc1bGMxc3hYU0E2SUd4cGJtVnpXekpkTzF4dUlDQWdJQ0FnSUNCMllYSWdabWxzWlU1aGJXVkJibVJNYVc1bFRuVnRZbVZ5SUQwZ1oyVjBSbWxzWlU1aGJXVkJibVJNYVc1bFRuVnRZbVZ5S0dacGNuTjBUR2x1WlNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doWm1sc1pVNWhiV1ZCYm1STWFXNWxUblZ0WW1WeUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnhSbWxzWlU1aGJXVWdQU0JtYVd4bFRtRnRaVUZ1WkV4cGJtVk9kVzFpWlhKYk1GMDdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1hV3hsVG1GdFpVRnVaRXhwYm1WT2RXMWlaWEpiTVYwN1hHNGdJQ0FnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUJrWlhCeVpXTmhkR1VvWTJGc2JHSmhZMnNzSUc1aGJXVXNJR0ZzZEdWeWJtRjBhWFpsS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQmpiMjV6YjJ4bElDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUlDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxiMllnWTI5dWMyOXNaUzUzWVhKdUlEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaHVZVzFsSUNzZ1hDSWdhWE1nWkdWd2NtVmpZWFJsWkN3Z2RYTmxJRndpSUNzZ1lXeDBaWEp1WVhScGRtVWdLMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpSUdsdWMzUmxZV1F1WENJc0lHNWxkeUJGY25KdmNpaGNJbHdpS1M1emRHRmpheWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGJHeGlZV05yTG1Gd2NHeDVLR05oYkd4aVlXTnJMQ0JoY21kMWJXVnVkSE1wTzF4dUlDQWdJSDA3WEc1OVhHNWNiaTh2SUdWdVpDQnZaaUJ6YUdsdGMxeHVMeThnWW1WbmFXNXVhVzVuSUc5bUlISmxZV3dnZDI5eWExeHVYRzR2S2lwY2JpQXFJRU52Ym5OMGNuVmpkSE1nWVNCd2NtOXRhWE5sSUdadmNpQmhiaUJwYlcxbFpHbGhkR1VnY21WbVpYSmxibU5sTENCd1lYTnpaWE1nY0hKdmJXbHpaWE1nZEdoeWIzVm5hQ3dnYjNKY2JpQXFJR052WlhKalpYTWdjSEp2YldselpYTWdabkp2YlNCa2FXWm1aWEpsYm5RZ2MzbHpkR1Z0Y3k1Y2JpQXFJRUJ3WVhKaGJTQjJZV3gxWlNCcGJXMWxaR2xoZEdVZ2NtVm1aWEpsYm1ObElHOXlJSEJ5YjIxcGMyVmNiaUFxTDF4dVpuVnVZM1JwYjI0Z1VTaDJZV3gxWlNrZ2UxeHVJQ0FnSUM4dklFbG1JSFJvWlNCdlltcGxZM1FnYVhNZ1lXeHlaV0ZrZVNCaElGQnliMjFwYzJVc0lISmxkSFZ5YmlCcGRDQmthWEpsWTNSc2VTNGdJRlJvYVhNZ1pXNWhZbXhsYzF4dUlDQWdJQzh2SUhSb1pTQnlaWE52YkhabElHWjFibU4wYVc5dUlIUnZJR0p2ZEdnZ1ltVWdkWE5sWkNCMGJ5QmpjbVZoZEdWa0lISmxabVZ5Wlc1alpYTWdabkp2YlNCdlltcGxZM1J6TEZ4dUlDQWdJQzh2SUdKMWRDQjBieUIwYjJ4bGNtRmliSGtnWTI5bGNtTmxJRzV2Ymkxd2NtOXRhWE5sY3lCMGJ5QndjbTl0YVhObGN5NWNiaUFnSUNCcFppQW9kbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQlFjbTl0YVhObEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCaGMzTnBiV2xzWVhSbElIUm9aVzVoWW14bGMxeHVJQ0FnSUdsbUlDaHBjMUJ5YjIxcGMyVkJiR2xyWlNoMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOdlpYSmpaU2gyWVd4MVpTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaMWJHWnBiR3dvZG1Gc2RXVXBPMXh1SUNBZ0lIMWNibjFjYmxFdWNtVnpiMngyWlNBOUlGRTdYRzVjYmk4cUtseHVJQ29nVUdWeVptOXliWE1nWVNCMFlYTnJJR2x1SUdFZ1puVjBkWEpsSUhSMWNtNGdiMllnZEdobElHVjJaVzUwSUd4dmIzQXVYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCMFlYTnJYRzRnS2k5Y2JsRXVibVY0ZEZScFkyc2dQU0J1WlhoMFZHbGphenRjYmx4dUx5b3FYRzRnS2lCRGIyNTBjbTlzY3lCM2FHVjBhR1Z5SUc5eUlHNXZkQ0JzYjI1bklITjBZV05ySUhSeVlXTmxjeUIzYVd4c0lHSmxJRzl1WEc0Z0tpOWNibEV1Ykc5dVoxTjBZV05yVTNWd2NHOXlkQ0E5SUdaaGJITmxPMXh1WEc0dkx5QmxibUZpYkdVZ2JHOXVaeUJ6ZEdGamEzTWdhV1lnVVY5RVJVSlZSeUJwY3lCelpYUmNibWxtSUNoMGVYQmxiMllnY0hKdlkyVnpjeUE5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUJ3Y205alpYTnpJQ1ltSUhCeWIyTmxjM011Wlc1MklDWW1JSEJ5YjJObGMzTXVaVzUyTGxGZlJFVkNWVWNwSUh0Y2JpQWdJQ0JSTG14dmJtZFRkR0ZqYTFOMWNIQnZjblFnUFNCMGNuVmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnZibk4wY25WamRITWdZU0I3Y0hKdmJXbHpaU3dnY21WemIyeDJaU3dnY21WcVpXTjBmU0J2WW1wbFkzUXVYRzRnS2x4dUlDb2dZSEpsYzI5c2RtVmdJR2x6SUdFZ1kyRnNiR0poWTJzZ2RHOGdhVzUyYjJ0bElIZHBkR2dnWVNCdGIzSmxJSEpsYzI5c2RtVmtJSFpoYkhWbElHWnZjaUIwYUdWY2JpQXFJSEJ5YjIxcGMyVXVJRlJ2SUdaMWJHWnBiR3dnZEdobElIQnliMjFwYzJVc0lHbHVkbTlyWlNCZ2NtVnpiMngyWldBZ2QybDBhQ0JoYm5rZ2RtRnNkV1VnZEdoaGRDQnBjMXh1SUNvZ2JtOTBJR0VnZEdobGJtRmliR1V1SUZSdklISmxhbVZqZENCMGFHVWdjSEp2YldselpTd2dhVzUyYjJ0bElHQnlaWE52YkhabFlDQjNhWFJvSUdFZ2NtVnFaV04wWldSY2JpQXFJSFJvWlc1aFlteGxMQ0J2Y2lCcGJuWnZhMlVnWUhKbGFtVmpkR0FnZDJsMGFDQjBhR1VnY21WaGMyOXVJR1JwY21WamRHeDVMaUJVYnlCeVpYTnZiSFpsSUhSb1pWeHVJQ29nY0hKdmJXbHpaU0IwYnlCaGJtOTBhR1Z5SUhSb1pXNWhZbXhsTENCMGFIVnpJSEIxZEhScGJtY2dhWFFnYVc0Z2RHaGxJSE5oYldVZ2MzUmhkR1VzSUdsdWRtOXJaVnh1SUNvZ1lISmxjMjlzZG1WZ0lIZHBkR2dnZEdoaGRDQnZkR2hsY2lCMGFHVnVZV0pzWlM1Y2JpQXFMMXh1VVM1a1pXWmxjaUE5SUdSbFptVnlPMXh1Wm5WdVkzUnBiMjRnWkdWbVpYSW9LU0I3WEc0Z0lDQWdMeThnYVdZZ1hDSnRaWE56WVdkbGMxd2lJR2x6SUdGdUlGd2lRWEp5WVhsY0lpd2dkR2hoZENCcGJtUnBZMkYwWlhNZ2RHaGhkQ0IwYUdVZ2NISnZiV2x6WlNCb1lYTWdibTkwSUhsbGRGeHVJQ0FnSUM4dklHSmxaVzRnY21WemIyeDJaV1F1SUNCSlppQnBkQ0JwY3lCY0luVnVaR1ZtYVc1bFpGd2lMQ0JwZENCb1lYTWdZbVZsYmlCeVpYTnZiSFpsWkM0Z0lFVmhZMmhjYmlBZ0lDQXZMeUJsYkdWdFpXNTBJRzltSUhSb1pTQnRaWE56WVdkbGN5QmhjbkpoZVNCcGN5QnBkSE5sYkdZZ1lXNGdZWEp5WVhrZ2IyWWdZMjl0Y0d4bGRHVWdZWEpuZFcxbGJuUnpJSFJ2WEc0Z0lDQWdMeThnWm05eWQyRnlaQ0IwYnlCMGFHVWdjbVZ6YjJ4MlpXUWdjSEp2YldselpTNGdJRmRsSUdOdlpYSmpaU0IwYUdVZ2NtVnpiMngxZEdsdmJpQjJZV3gxWlNCMGJ5QmhYRzRnSUNBZ0x5OGdjSEp2YldselpTQjFjMmx1WnlCMGFHVWdZSEpsYzI5c2RtVmdJR1oxYm1OMGFXOXVJR0psWTJGMWMyVWdhWFFnYUdGdVpHeGxjeUJpYjNSb0lHWjFiR3g1WEc0Z0lDQWdMeThnYm05dUxYUm9aVzVoWW14bElIWmhiSFZsY3lCaGJtUWdiM1JvWlhJZ2RHaGxibUZpYkdWeklHZHlZV05sWm5Wc2JIa3VYRzRnSUNBZ2RtRnlJRzFsYzNOaFoyVnpJRDBnVzEwc0lIQnliMmR5WlhOelRHbHpkR1Z1WlhKeklEMGdXMTBzSUhKbGMyOXNkbVZrVUhKdmJXbHpaVHRjYmx4dUlDQWdJSFpoY2lCa1pXWmxjbkpsWkNBOUlHOWlhbVZqZEY5amNtVmhkR1VvWkdWbVpYSXVjSEp2ZEc5MGVYQmxLVHRjYmlBZ0lDQjJZWElnY0hKdmJXbHpaU0E5SUc5aWFtVmpkRjlqY21WaGRHVW9VSEp2YldselpTNXdjbTkwYjNSNWNHVXBPMXh1WEc0Z0lDQWdjSEp2YldselpTNXdjbTl0YVhObFJHbHpjR0YwWTJnZ1BTQm1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2diM0FzSUc5d1pYSmhibVJ6S1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUJoY21keklEMGdZWEp5WVhsZmMyeHBZMlVvWVhKbmRXMWxiblJ6S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzFsYzNOaFoyVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbGN5NXdkWE5vS0dGeVozTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzl3SUQwOVBTQmNJbmRvWlc1Y0lpQW1KaUJ2Y0dWeVlXNWtjMXN4WFNrZ2V5QXZMeUJ3Y205bmNtVnpjeUJ2Y0dWeVlXNWtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSEp2WjNKbGMzTk1hWE4wWlc1bGNuTXVjSFZ6YUNodmNHVnlZVzVrYzFzeFhTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JSTG01bGVIUlVhV05yS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWE52YkhabFpGQnliMjFwYzJVdWNISnZiV2x6WlVScGMzQmhkR05vTG1Gd2NHeDVLSEpsYzI5c2RtVmtVSEp2YldselpTd2dZWEpuY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNWNiaUFnSUNBdkx5QllXRmdnWkdWd2NtVmpZWFJsWkZ4dUlDQWdJSEJ5YjIxcGMyVXVkbUZzZFdWUFppQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzFsYzNOaFoyVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISnZiV2x6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjJZWElnYm1WaGNtVnlWbUZzZFdVZ1BTQnVaV0Z5WlhJb2NtVnpiMngyWldSUWNtOXRhWE5sS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6VUhKdmJXbHpaU2h1WldGeVpYSldZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGMyOXNkbVZrVUhKdmJXbHpaU0E5SUc1bFlYSmxjbFpoYkhWbE95QXZMeUJ6YUc5eWRHVnVJR05vWVdsdVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxZWEpsY2xaaGJIVmxPMXh1SUNBZ0lIMDdYRzVjYmlBZ0lDQndjbTl0YVhObExtbHVjM0JsWTNRZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hjbVZ6YjJ4MlpXUlFjbTl0YVhObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCemRHRjBaVG9nWENKd1pXNWthVzVuWENJZ2ZUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6YjJ4MlpXUlFjbTl0YVhObExtbHVjM0JsWTNRb0tUdGNiaUFnSUNCOU8xeHVYRzRnSUNBZ2FXWWdLRkV1Ykc5dVoxTjBZV05yVTNWd2NHOXlkQ0FtSmlCb1lYTlRkR0ZqYTNNcElIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ3BPMXh1SUNBZ0lDQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCT1QxUkZPaUJrYjI0bmRDQjBjbmtnZEc4Z2RYTmxJR0JGY25KdmNpNWpZWEIwZFhKbFUzUmhZMnRVY21GalpXQWdiM0lnZEhKaGJuTm1aWElnZEdobFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCaFkyTmxjM052Y2lCaGNtOTFibVE3SUhSb1lYUWdZMkYxYzJWeklHMWxiVzl5ZVNCc1pXRnJjeUJoY3lCd1pYSWdSMGd0TVRFeExpQktkWE4wWEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJ5WldsbWVTQjBhR1VnYzNSaFkyc2dkSEpoWTJVZ1lYTWdZU0J6ZEhKcGJtY2dRVk5CVUM1Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJCZENCMGFHVWdjMkZ0WlNCMGFXMWxMQ0JqZFhRZ2IyWm1JSFJvWlNCbWFYSnpkQ0JzYVc1bE95QnBkQ2R6SUdGc2QyRjVjeUJxZFhOMFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCY0lsdHZZbXBsWTNRZ1VISnZiV2x6WlYxY1hHNWNJaXdnWVhNZ2NHVnlJSFJvWlNCZ2RHOVRkSEpwYm1kZ0xseHVJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmJXbHpaUzV6ZEdGamF5QTlJR1V1YzNSaFkyc3VjM1ZpYzNSeWFXNW5LR1V1YzNSaFkyc3VhVzVrWlhoUFppaGNJbHhjYmx3aUtTQXJJREVwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1RrOVVSVG9nZDJVZ1pHOGdkR2hsSUdOb1pXTnJjeUJtYjNJZ1lISmxjMjlzZG1Wa1VISnZiV2x6WldBZ2FXNGdaV0ZqYUNCdFpYUm9iMlFzSUdsdWMzUmxZV1FnYjJaY2JpQWdJQ0F2THlCamIyNXpiMnhwWkdGMGFXNW5JSFJvWlcwZ2FXNTBieUJnWW1WamIyMWxZQ3dnYzJsdVkyVWdiM1JvWlhKM2FYTmxJSGRsSjJRZ1kzSmxZWFJsSUc1bGQxeHVJQ0FnSUM4dklIQnliMjFwYzJWeklIZHBkR2dnZEdobElHeHBibVZ6SUdCaVpXTnZiV1VvZDJoaGRHVjJaWElvZG1Gc2RXVXBLV0F1SUZObFpTQmxMbWN1SUVkSUxUSTFNaTVjYmx4dUlDQWdJR1oxYm1OMGFXOXVJR0psWTI5dFpTaHVaWGRRY205dGFYTmxLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMyOXNkbVZrVUhKdmJXbHpaU0E5SUc1bGQxQnliMjFwYzJVN1hHNGdJQ0FnSUNBZ0lIQnliMjFwYzJVdWMyOTFjbU5sSUQwZ2JtVjNVSEp2YldselpUdGNibHh1SUNBZ0lDQWdJQ0JoY25KaGVWOXlaV1IxWTJVb2JXVnpjMkZuWlhNc0lHWjFibU4wYVc5dUlDaDFibVJsWm1sdVpXUXNJRzFsYzNOaFoyVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lGRXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1bGQxQnliMjFwYzJVdWNISnZiV2x6WlVScGMzQmhkR05vTG1Gd2NHeDVLRzVsZDFCeWIyMXBjMlVzSUcxbGMzTmhaMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUgwc0lIWnZhV1FnTUNrN1hHNWNiaUFnSUNBZ0lDQWdiV1Z6YzJGblpYTWdQU0IyYjJsa0lEQTdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVpYTnpUR2x6ZEdWdVpYSnpJRDBnZG05cFpDQXdPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHUmxabVZ5Y21Wa0xuQnliMjFwYzJVZ1BTQndjbTl0YVhObE8xeHVJQ0FnSUdSbFptVnljbVZrTG5KbGMyOXNkbVVnUFNCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEpsYzI5c2RtVmtVSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdZbVZqYjIxbEtGRW9kbUZzZFdVcEtUdGNiaUFnSUNCOU8xeHVYRzRnSUNBZ1pHVm1aWEp5WldRdVpuVnNabWxzYkNBOUlHWjFibU4wYVc5dUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvY21WemIyeDJaV1JRY205dGFYTmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JpWldOdmJXVW9ablZzWm1sc2JDaDJZV3gxWlNrcE8xeHVJQ0FnSUgwN1hHNGdJQ0FnWkdWbVpYSnlaV1F1Y21WcVpXTjBJRDBnWm5WdVkzUnBiMjRnS0hKbFlYTnZiaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9jbVZ6YjJ4MlpXUlFjbTl0YVhObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQmlaV052YldVb2NtVnFaV04wS0hKbFlYTnZiaWtwTzF4dUlDQWdJSDA3WEc0Z0lDQWdaR1ZtWlhKeVpXUXVibTkwYVdaNUlEMGdablZ1WTNScGIyNGdLSEJ5YjJkeVpYTnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE52YkhabFpGQnliMjFwYzJVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHRnljbUY1WDNKbFpIVmpaU2h3Y205bmNtVnpjMHhwYzNSbGJtVnljeXdnWm5WdVkzUnBiMjRnS0hWdVpHVm1hVzVsWkN3Z2NISnZaM0psYzNOTWFYTjBaVzVsY2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnVVM1dVpYaDBWR2xqYXlobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSEp2WjNKbGMzTk1hWE4wWlc1bGNpaHdjbTluY21WemN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdmU3dnZG05cFpDQXdLVHRjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHUmxabVZ5Y21Wa08xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCT2IyUmxMWE4wZVd4bElHTmhiR3hpWVdOcklIUm9ZWFFnZDJsc2JDQnlaWE52YkhabElHOXlJSEpsYW1WamRDQjBhR1VnWkdWbVpYSnlaV1JjYmlBcUlIQnliMjFwYzJVdVhHNGdLaUJBY21WMGRYSnVjeUJoSUc1dlpHVmlZV05yWEc0Z0tpOWNibVJsWm1WeUxuQnliM1J2ZEhsd1pTNXRZV3RsVG05a1pWSmxjMjlzZG1WeUlEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCelpXeG1JRDBnZEdocGN6dGNiaUFnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRnS0dWeWNtOXlMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pYSnliM0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sYkdZdWNtVnFaV04wS0dWeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUQ0Z01pa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVnNaaTV5WlhOdmJIWmxLR0Z5Y21GNVgzTnNhV05sS0dGeVozVnRaVzUwY3l3Z01Ta3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVnNaaTV5WlhOdmJIWmxLSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMDdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFQndZWEpoYlNCeVpYTnZiSFpsY2lCN1JuVnVZM1JwYjI1OUlHRWdablZ1WTNScGIyNGdkR2hoZENCeVpYUjFjbTV6SUc1dmRHaHBibWNnWVc1a0lHRmpZMlZ3ZEhOY2JpQXFJSFJvWlNCeVpYTnZiSFpsTENCeVpXcGxZM1FzSUdGdVpDQnViM1JwWm5rZ1puVnVZM1JwYjI1eklHWnZjaUJoSUdSbFptVnljbVZrTGx4dUlDb2dRSEpsZEhWeWJuTWdZU0J3Y205dGFYTmxJSFJvWVhRZ2JXRjVJR0psSUhKbGMyOXNkbVZrSUhkcGRHZ2dkR2hsSUdkcGRtVnVJSEpsYzI5c2RtVWdZVzVrSUhKbGFtVmpkRnh1SUNvZ1puVnVZM1JwYjI1ekxDQnZjaUJ5WldwbFkzUmxaQ0JpZVNCaElIUm9jbTkzYmlCbGVHTmxjSFJwYjI0Z2FXNGdjbVZ6YjJ4MlpYSmNiaUFxTDF4dVVTNVFjbTl0YVhObElEMGdjSEp2YldselpUc2dMeThnUlZNMlhHNVJMbkJ5YjIxcGMyVWdQU0J3Y205dGFYTmxPMXh1Wm5WdVkzUnBiMjRnY0hKdmJXbHpaU2h5WlhOdmJIWmxjaWtnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnY21WemIyeDJaWElnSVQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtGd2ljbVZ6YjJ4MlpYSWdiWFZ6ZENCaVpTQmhJR1oxYm1OMGFXOXVMbHdpS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkbUZ5SUdSbFptVnljbVZrSUQwZ1pHVm1aWElvS1R0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQnlaWE52YkhabGNpaGtaV1psY25KbFpDNXlaWE52YkhabExDQmtaV1psY25KbFpDNXlaV3BsWTNRc0lHUmxabVZ5Y21Wa0xtNXZkR2xtZVNrN1hHNGdJQ0FnZlNCallYUmphQ0FvY21WaGMyOXVLU0I3WEc0Z0lDQWdJQ0FnSUdSbFptVnljbVZrTG5KbGFtVmpkQ2h5WldGemIyNHBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWkdWbVpYSnlaV1F1Y0hKdmJXbHpaVHRjYm4xY2JseHVjSEp2YldselpTNXlZV05sSUQwZ2NtRmpaVHNnTHk4Z1JWTTJYRzV3Y205dGFYTmxMbUZzYkNBOUlHRnNiRHNnTHk4Z1JWTTJYRzV3Y205dGFYTmxMbkpsYW1WamRDQTlJSEpsYW1WamREc2dMeThnUlZNMlhHNXdjbTl0YVhObExuSmxjMjlzZG1VZ1BTQlJPeUF2THlCRlV6WmNibHh1THk4Z1dGaFlJR1Y0Y0dWeWFXMWxiblJoYkM0Z0lGUm9hWE1nYldWMGFHOWtJR2x6SUdFZ2QyRjVJSFJ2SUdSbGJtOTBaU0IwYUdGMElHRWdiRzlqWVd3Z2RtRnNkV1VnYVhOY2JpOHZJSE5sY21saGJHbDZZV0pzWlNCaGJtUWdjMmh2ZFd4a0lHSmxJR2x0YldWa2FXRjBaV3g1SUdScGMzQmhkR05vWldRZ2RHOGdZU0J5WlcxdmRHVWdkWEJ2YmlCeVpYRjFaWE4wTEZ4dUx5OGdhVzV6ZEdWaFpDQnZaaUJ3WVhOemFXNW5JR0VnY21WbVpYSmxibU5sTGx4dVVTNXdZWE56UW5sRGIzQjVJRDBnWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ2tnZTF4dUlDQWdJQzh2Wm5KbFpYcGxLRzlpYW1WamRDazdYRzRnSUNBZ0x5OXdZWE56UW5sRGIzQnBaWE11YzJWMEtHOWlhbVZqZEN3Z2RISjFaU2s3WEc0Z0lDQWdjbVYwZFhKdUlHOWlhbVZqZER0Y2JuMDdYRzVjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG5CaGMzTkNlVU52Y0hrZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdMeTltY21WbGVtVW9iMkpxWldOMEtUdGNiaUFnSUNBdkwzQmhjM05DZVVOdmNHbGxjeTV6WlhRb2IySnFaV04wTENCMGNuVmxLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYm4wN1hHNWNiaThxS2x4dUlDb2dTV1lnZEhkdklIQnliMjFwYzJWeklHVjJaVzUwZFdGc2JIa2dablZzWm1sc2JDQjBieUIwYUdVZ2MyRnRaU0IyWVd4MVpTd2djSEp2YldselpYTWdkR2hoZENCMllXeDFaU3hjYmlBcUlHSjFkQ0J2ZEdobGNuZHBjMlVnY21WcVpXTjBjeTVjYmlBcUlFQndZWEpoYlNCNElIdEJibmtxZlZ4dUlDb2dRSEJoY21GdElIa2dlMEZ1ZVNwOVhHNGdLaUJBY21WMGRYSnVjeUI3UVc1NUtuMGdZU0J3Y205dGFYTmxJR1p2Y2lCNElHRnVaQ0I1SUdsbUlIUm9aWGtnWVhKbElIUm9aU0J6WVcxbExDQmlkWFFnWVNCeVpXcGxZM1JwYjI1Y2JpQXFJRzkwYUdWeWQybHpaUzVjYmlBcVhHNGdLaTljYmxFdWFtOXBiaUE5SUdaMWJtTjBhVzl1SUNoNExDQjVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGRW9lQ2t1YW05cGJpaDVLVHRjYm4wN1hHNWNibEJ5YjIxcGMyVXVjSEp2ZEc5MGVYQmxMbXB2YVc0Z1BTQm1kVzVqZEdsdmJpQW9kR2hoZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJSS0Z0MGFHbHpMQ0IwYUdGMFhTa3VjM0J5WldGa0tHWjFibU4wYVc5dUlDaDRMQ0I1S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2g0SUQwOVBTQjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJVVDBSUE9pQmNJajA5UFZ3aUlITm9iM1ZzWkNCaVpTQlBZbXBsWTNRdWFYTWdiM0lnWlhGMWFYWmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI0TzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGd2lRMkZ1SjNRZ2FtOXBiam9nYm05MElIUm9aU0J6WVcxbE9pQmNJaUFySUhnZ0t5QmNJaUJjSWlBcklIa3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdZU0J3Y205dGFYTmxJR1p2Y2lCMGFHVWdabWx5YzNRZ2IyWWdZVzRnWVhKeVlYa2diMllnY0hKdmJXbHpaWE1nZEc4Z1ltVmpiMjFsSUhObGRIUnNaV1F1WEc0Z0tpQkFjR0Z5WVcwZ1lXNXpkMlZ5Y3lCN1FYSnlZWGxiUVc1NUtsMTlJSEJ5YjIxcGMyVnpJSFJ2SUhKaFkyVmNiaUFxSUVCeVpYUjFjbTV6SUh0QmJua3FmU0IwYUdVZ1ptbHljM1FnY0hKdmJXbHpaU0IwYnlCaVpTQnpaWFIwYkdWa1hHNGdLaTljYmxFdWNtRmpaU0E5SUhKaFkyVTdYRzVtZFc1amRHbHZiaUJ5WVdObEtHRnVjM2RsY2xCektTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCeWIyMXBjMlVvWm5WdVkzUnBiMjRnS0hKbGMyOXNkbVVzSUhKbGFtVmpkQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlRkMmwwWTJnZ2RHOGdkR2hwY3lCdmJtTmxJSGRsSUdOaGJpQmhjM04xYldVZ1lYUWdiR1ZoYzNRZ1JWTTFYRzRnSUNBZ0lDQWdJQzh2SUdGdWMzZGxjbEJ6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRnS0dGdWMzZGxjbEFwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdJQ0FnSUZFb1lXNXpkMlZ5VUNrdWRHaGxiaWh5WlhOdmJIWmxMQ0J5WldwbFkzUXBPMXh1SUNBZ0lDQWdJQ0F2THlCOUtUdGNiaUFnSUNBZ0lDQWdMeThnVlhObElIUm9hWE1nYVc0Z2RHaGxJRzFsWVc1MGFXMWxYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNaVzRnUFNCaGJuTjNaWEpRY3k1c1pXNW5kR2c3SUdrZ1BDQnNaVzQ3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1VTaGhibk4zWlhKUWMxdHBYU2t1ZEdobGJpaHlaWE52YkhabExDQnlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzU5WEc1Y2JsQnliMjFwYzJVdWNISnZkRzkwZVhCbExuSmhZMlVnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkR2hsYmloUkxuSmhZMlVwTzF4dWZUdGNibHh1THlvcVhHNGdLaUJEYjI1emRISjFZM1J6SUdFZ1VISnZiV2x6WlNCM2FYUm9JR0VnY0hKdmJXbHpaU0JrWlhOamNtbHdkRzl5SUc5aWFtVmpkQ0JoYm1RZ2IzQjBhVzl1WVd3Z1ptRnNiR0poWTJ0Y2JpQXFJR1oxYm1OMGFXOXVMaUFnVkdobElHUmxjMk55YVhCMGIzSWdZMjl1ZEdGcGJuTWdiV1YwYUc5a2N5QnNhV3RsSUhkb1pXNG9jbVZxWldOMFpXUXBMQ0JuWlhRb2JtRnRaU2tzWEc0Z0tpQnpaWFFvYm1GdFpTd2dkbUZzZFdVcExDQndiM04wS0c1aGJXVXNJR0Z5WjNNcExDQmhibVFnWkdWc1pYUmxLRzVoYldVcExDQjNhR2xqYUNCaGJHeGNiaUFxSUhKbGRIVnliaUJsYVhSb1pYSWdZU0IyWVd4MVpTd2dZU0J3Y205dGFYTmxJR1p2Y2lCaElIWmhiSFZsTENCdmNpQmhJSEpsYW1WamRHbHZiaTRnSUZSb1pTQm1ZV3hzWW1GamExeHVJQ29nWVdOalpYQjBjeUIwYUdVZ2IzQmxjbUYwYVc5dUlHNWhiV1VzSUdFZ2NtVnpiMngyWlhJc0lHRnVaQ0JoYm5rZ1puVnlkR2hsY2lCaGNtZDFiV1Z1ZEhNZ2RHaGhkQ0IzYjNWc1pGeHVJQ29nYUdGMlpTQmlaV1Z1SUdadmNuZGhjbVJsWkNCMGJ5QjBhR1VnWVhCd2NtOXdjbWxoZEdVZ2JXVjBhRzlrSUdGaWIzWmxJR2hoWkNCaElHMWxkR2h2WkNCaVpXVnVYRzRnS2lCd2NtOTJhV1JsWkNCM2FYUm9JSFJvWlNCd2NtOXdaWElnYm1GdFpTNGdJRlJvWlNCQlVFa2diV0ZyWlhNZ2JtOGdaM1ZoY21GdWRHVmxjeUJoWW05MWRDQjBhR1VnYm1GMGRYSmxYRzRnS2lCdlppQjBhR1VnY21WMGRYSnVaV1FnYjJKcVpXTjBMQ0JoY0dGeWRDQm1jbTl0SUhSb1lYUWdhWFFnYVhNZ2RYTmhZbXhsSUhkb1pYSmxaWFpsY2lCd2NtOXRhWE5sY3lCaGNtVmNiaUFxSUdKdmRXZG9kQ0JoYm1RZ2MyOXNaQzVjYmlBcUwxeHVVUzV0WVd0bFVISnZiV2x6WlNBOUlGQnliMjFwYzJVN1hHNW1kVzVqZEdsdmJpQlFjbTl0YVhObEtHUmxjMk55YVhCMGIzSXNJR1poYkd4aVlXTnJMQ0JwYm5Od1pXTjBLU0I3WEc0Z0lDQWdhV1lnS0daaGJHeGlZV05ySUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lDQWdabUZzYkdKaFkyc2dQU0JtZFc1amRHbHZiaUFvYjNBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9ibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpVUhKdmJXbHpaU0JrYjJWeklHNXZkQ0J6ZFhCd2IzSjBJRzl3WlhKaGRHbHZiam9nWENJZ0t5QnZjRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tTazdYRzRnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwYm5Od1pXTjBJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUNBZ2FXNXpjR1ZqZENBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN2MzUmhkR1U2SUZ3aWRXNXJibTkzYmx3aWZUdGNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY0hKdmJXbHpaU0E5SUc5aWFtVmpkRjlqY21WaGRHVW9VSEp2YldselpTNXdjbTkwYjNSNWNHVXBPMXh1WEc0Z0lDQWdjSEp2YldselpTNXdjbTl0YVhObFJHbHpjR0YwWTJnZ1BTQm1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2diM0FzSUdGeVozTXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZER0Y2JpQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hrWlhOamNtbHdkRzl5VzI5d1hTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJR1JsYzJOeWFYQjBiM0piYjNCZExtRndjR3g1S0hCeWIyMXBjMlVzSUdGeVozTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFFnUFNCbVlXeHNZbUZqYXk1allXeHNLSEJ5YjIxcGMyVXNJRzl3TENCaGNtZHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aWGhqWlhCMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQnlaV3BsWTNRb1pYaGpaWEIwYVc5dUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpiMngyWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WemIyeDJaU2h5WlhOMWJIUXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVHRjYmx4dUlDQWdJSEJ5YjIxcGMyVXVhVzV6Y0dWamRDQTlJR2x1YzNCbFkzUTdYRzVjYmlBZ0lDQXZMeUJZV0ZnZ1pHVndjbVZqWVhSbFpDQmdkbUZzZFdWUFptQWdZVzVrSUdCbGVHTmxjSFJwYjI1Z0lITjFjSEJ2Y25SY2JpQWdJQ0JwWmlBb2FXNXpjR1ZqZENrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYVc1emNHVmpkR1ZrSUQwZ2FXNXpjR1ZqZENncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVc1emNHVmpkR1ZrTG5OMFlYUmxJRDA5UFNCY0luSmxhbVZqZEdWa1hDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnliMjFwYzJVdVpYaGpaWEIwYVc5dUlEMGdhVzV6Y0dWamRHVmtMbkpsWVhOdmJqdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhCeWIyMXBjMlV1ZG1Gc2RXVlBaaUE5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnBibk53WldOMFpXUWdQU0JwYm5Od1pXTjBLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVc1emNHVmpkR1ZrTG5OMFlYUmxJRDA5UFNCY0luQmxibVJwYm1kY0lpQjhmRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1YzNCbFkzUmxaQzV6ZEdGMFpTQTlQVDBnWENKeVpXcGxZM1JsWkZ3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIQnliMjFwYzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNXpjR1ZqZEdWa0xuWmhiSFZsTzF4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ3Y205dGFYTmxPMXh1ZlZ4dVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNTBiMU4wY21sdVp5QTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdYQ0piYjJKcVpXTjBJRkJ5YjIxcGMyVmRYQ0k3WEc1OU8xeHVYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzUwYUdWdUlEMGdablZ1WTNScGIyNGdLR1oxYkdacGJHeGxaQ3dnY21WcVpXTjBaV1FzSUhCeWIyZHlaWE56WldRcElIdGNiaUFnSUNCMllYSWdjMlZzWmlBOUlIUm9hWE03WEc0Z0lDQWdkbUZ5SUdSbFptVnljbVZrSUQwZ1pHVm1aWElvS1R0Y2JpQWdJQ0IyWVhJZ1pHOXVaU0E5SUdaaGJITmxPeUFnSUM4dklHVnVjM1Z5WlNCMGFHVWdkVzUwY25WemRHVmtJSEJ5YjIxcGMyVWdiV0ZyWlhNZ1lYUWdiVzl6ZENCaFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QnphVzVuYkdVZ1kyRnNiQ0IwYnlCdmJtVWdiMllnZEdobElHTmhiR3hpWVdOcmMxeHVYRzRnSUNBZ1puVnVZM1JwYjI0Z1gyWjFiR1pwYkd4bFpDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUjVjR1Z2WmlCbWRXeG1hV3hzWldRZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lHWjFiR1pwYkd4bFpDaDJZV3gxWlNrZ09pQjJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYaGpaWEIwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WcVpXTjBLR1Y0WTJWd2RHbHZiaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JtZFc1amRHbHZiaUJmY21WcVpXTjBaV1FvWlhoalpYQjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdjbVZxWldOMFpXUWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JXRnJaVk4wWVdOclZISmhZMlZNYjI1bktHVjRZMlZ3ZEdsdmJpd2djMlZzWmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXcGxZM1JsWkNobGVHTmxjSFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvYm1WM1JYaGpaWEIwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENodVpYZEZlR05sY0hScGIyNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaV3BsWTNRb1pYaGpaWEIwYVc5dUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCbWRXNWpkR2x2YmlCZmNISnZaM0psYzNObFpDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhCeWIyZHlaWE56WldRZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBL0lIQnliMmR5WlhOelpXUW9kbUZzZFdVcElEb2dkbUZzZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnVVM1dVpYaDBWR2xqYXlobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSE5sYkdZdWNISnZiV2x6WlVScGMzQmhkR05vS0daMWJtTjBhVzl1SUNoMllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSdmJtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVpYSnlaV1F1Y21WemIyeDJaU2hmWm5Wc1ptbHNiR1ZrS0haaGJIVmxLU2s3WEc0Z0lDQWdJQ0FnSUgwc0lGd2lkMmhsYmx3aUxDQmJablZ1WTNScGIyNGdLR1Y0WTJWd2RHbHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSdmJtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JrYjI1bElEMGdkSEoxWlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVpYSnlaV1F1Y21WemIyeDJaU2hmY21WcVpXTjBaV1FvWlhoalpYQjBhVzl1S1NrN1hHNGdJQ0FnSUNBZ0lIMWRLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUZCeWIyZHlaWE56SUhCeWIzQmhaMkYwYjNJZ2JtVmxaQ0IwYnlCaVpTQmhkSFJoWTJobFpDQnBiaUIwYUdVZ1kzVnljbVZ1ZENCMGFXTnJMbHh1SUNBZ0lITmxiR1l1Y0hKdmJXbHpaVVJwYzNCaGRHTm9LSFp2YVdRZ01Dd2dYQ0ozYUdWdVhDSXNJRnQyYjJsa0lEQXNJR1oxYm1OMGFXOXVJQ2gyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2JtVjNWbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIWmhjaUIwYUhKbGR5QTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdibVYzVm1Gc2RXVWdQU0JmY0hKdlozSmxjM05sWkNoMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtVjNJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaFJMbTl1WlhKeWIzSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JSTG05dVpYSnliM0lvWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JwWmlBb0lYUm9jbVYzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWldabGNuSmxaQzV1YjNScFpua29ibVYzVm1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVjBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJR1JsWm1WeWNtVmtMbkJ5YjIxcGMyVTdYRzU5TzF4dVhHNVJMblJoY0NBOUlHWjFibU4wYVc5dUlDaHdjbTl0YVhObExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCUktIQnliMjFwYzJVcExuUmhjQ2hqWVd4c1ltRmpheWs3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRmR2Y210eklHRnNiVzl6ZENCc2FXdGxJRndpWm1sdVlXeHNlVndpTENCaWRYUWdibTkwSUdOaGJHeGxaQ0JtYjNJZ2NtVnFaV04wYVc5dWN5NWNiaUFxSUU5eWFXZHBibUZzSUhKbGMyOXNkWFJwYjI0Z2RtRnNkV1VnYVhNZ2NHRnpjMlZrSUhSb2NtOTFaMmdnWTJGc2JHSmhZMnNnZFc1aFptWmxZM1JsWkM1Y2JpQXFJRU5oYkd4aVlXTnJJRzFoZVNCeVpYUjFjbTRnWVNCd2NtOXRhWE5sSUhSb1lYUWdkMmxzYkNCaVpTQmhkMkZwZEdWa0lHWnZjaTVjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHTmhiR3hpWVdOclhHNGdLaUJBY21WMGRYSnVjeUI3VVM1UWNtOXRhWE5sZlZ4dUlDb2dRR1Y0WVcxd2JHVmNiaUFxSUdSdlUyOXRaWFJvYVc1bktDbGNiaUFxSUNBZ0xuUm9aVzRvTGk0dUtWeHVJQ29nSUNBdWRHRndLR052Ym5OdmJHVXViRzluS1Z4dUlDb2dJQ0F1ZEdobGJpZ3VMaTRwTzF4dUlDb3ZYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzUwWVhBZ1BTQm1kVzVqZEdsdmJpQW9ZMkZzYkdKaFkyc3BJSHRjYmlBZ0lDQmpZV3hzWW1GamF5QTlJRkVvWTJGc2JHSmhZMnNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRHaGxiaWhtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR05oYkd4aVlXTnJMbVpqWVd4c0tIWmhiSFZsS1M1MGFHVnVVbVZ6YjJ4MlpTaDJZV3gxWlNrN1hHNGdJQ0FnZlNrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZKbFoybHpkR1Z5Y3lCaGJpQnZZbk5sY25abGNpQnZiaUJoSUhCeWIyMXBjMlV1WEc0Z0tseHVJQ29nUjNWaGNtRnVkR1ZsY3pwY2JpQXFYRzRnS2lBeExpQjBhR0YwSUdaMWJHWnBiR3hsWkNCaGJtUWdjbVZxWldOMFpXUWdkMmxzYkNCaVpTQmpZV3hzWldRZ2IyNXNlU0J2Ym1ObExseHVJQ29nTWk0Z2RHaGhkQ0JsYVhSb1pYSWdkR2hsSUdaMWJHWnBiR3hsWkNCallXeHNZbUZqYXlCdmNpQjBhR1VnY21WcVpXTjBaV1FnWTJGc2JHSmhZMnNnZDJsc2JDQmlaVnh1SUNvZ0lDQWdZMkZzYkdWa0xDQmlkWFFnYm05MElHSnZkR2d1WEc0Z0tpQXpMaUIwYUdGMElHWjFiR1pwYkd4bFpDQmhibVFnY21WcVpXTjBaV1FnZDJsc2JDQnViM1FnWW1VZ1kyRnNiR1ZrSUdsdUlIUm9hWE1nZEhWeWJpNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2RtRnNkV1VnSUNBZ0lDQndjbTl0YVhObElHOXlJR2x0YldWa2FXRjBaU0J5WldabGNtVnVZMlVnZEc4Z2IySnpaWEoyWlZ4dUlDb2dRSEJoY21GdElHWjFiR1pwYkd4bFpDQWdablZ1WTNScGIyNGdkRzhnWW1VZ1kyRnNiR1ZrSUhkcGRHZ2dkR2hsSUdaMWJHWnBiR3hsWkNCMllXeDFaVnh1SUNvZ1FIQmhjbUZ0SUhKbGFtVmpkR1ZrSUNBZ1puVnVZM1JwYjI0Z2RHOGdZbVVnWTJGc2JHVmtJSGRwZEdnZ2RHaGxJSEpsYW1WamRHbHZiaUJsZUdObGNIUnBiMjVjYmlBcUlFQndZWEpoYlNCd2NtOW5jbVZ6YzJWa0lHWjFibU4wYVc5dUlIUnZJR0psSUdOaGJHeGxaQ0J2YmlCaGJua2djSEp2WjNKbGMzTWdibTkwYVdacFkyRjBhVzl1YzF4dUlDb2dRSEpsZEhWeWJpQndjbTl0YVhObElHWnZjaUIwYUdVZ2NtVjBkWEp1SUhaaGJIVmxJR1p5YjIwZ2RHaGxJR2x1ZG05clpXUWdZMkZzYkdKaFkydGNiaUFxTDF4dVVTNTNhR1Z1SUQwZ2QyaGxianRjYm1aMWJtTjBhVzl1SUhkb1pXNG9kbUZzZFdVc0lHWjFiR1pwYkd4bFpDd2djbVZxWldOMFpXUXNJSEJ5YjJkeVpYTnpaV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdVU2gyWVd4MVpTa3VkR2hsYmlobWRXeG1hV3hzWldRc0lISmxhbVZqZEdWa0xDQndjbTluY21WemMyVmtLVHRjYm4xY2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVkR2hsYmxKbGMyOXNkbVVnUFNCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MGFHVnVLR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhaaGJIVmxPeUI5S1R0Y2JuMDdYRzVjYmxFdWRHaGxibEpsYzI5c2RtVWdQU0JtZFc1amRHbHZiaUFvY0hKdmJXbHpaU3dnZG1Gc2RXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z1VTaHdjbTl0YVhObEtTNTBhR1Z1VW1WemIyeDJaU2gyWVd4MVpTazdYRzU5TzF4dVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNTBhR1Z1VW1WcVpXTjBJRDBnWm5WdVkzUnBiMjRnS0hKbFlYTnZiaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5Sb1pXNG9ablZ1WTNScGIyNGdLQ2tnZXlCMGFISnZkeUJ5WldGemIyNDdJSDBwTzF4dWZUdGNibHh1VVM1MGFHVnVVbVZxWldOMElEMGdablZ1WTNScGIyNGdLSEJ5YjIxcGMyVXNJSEpsWVhOdmJpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCUktIQnliMjFwYzJVcExuUm9aVzVTWldwbFkzUW9jbVZoYzI5dUtUdGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1NXWWdZVzRnYjJKcVpXTjBJR2x6SUc1dmRDQmhJSEJ5YjIxcGMyVXNJR2wwSUdseklHRnpJRndpYm1WaGNsd2lJR0Z6SUhCdmMzTnBZbXhsTGx4dUlDb2dTV1lnWVNCd2NtOXRhWE5sSUdseklISmxhbVZqZEdWa0xDQnBkQ0JwY3lCaGN5QmNJbTVsWVhKY0lpQmhjeUJ3YjNOemFXSnNaU0IwYjI4dVhHNGdLaUJKWmlCcGRPS0FtWE1nWVNCbWRXeG1hV3hzWldRZ2NISnZiV2x6WlN3Z2RHaGxJR1oxYkdacGJHeHRaVzUwSUhaaGJIVmxJR2x6SUc1bFlYSmxjaTVjYmlBcUlFbG1JR2wwNG9DWmN5QmhJR1JsWm1WeWNtVmtJSEJ5YjIxcGMyVWdZVzVrSUhSb1pTQmtaV1psY25KbFpDQm9ZWE1nWW1WbGJpQnlaWE52YkhabFpDd2dkR2hsWEc0Z0tpQnlaWE52YkhWMGFXOXVJR2x6SUZ3aWJtVmhjbVZ5WENJdVhHNGdLaUJBY0dGeVlXMGdiMkpxWldOMFhHNGdLaUJBY21WMGRYSnVjeUJ0YjNOMElISmxjMjlzZG1Wa0lDaHVaV0Z5WlhOMEtTQm1iM0p0SUc5bUlIUm9aU0J2WW1wbFkzUmNiaUFxTDF4dVhHNHZMeUJZV0ZnZ2MyaHZkV3hrSUhkbElISmxMV1J2SUhSb2FYTS9YRzVSTG01bFlYSmxjaUE5SUc1bFlYSmxjanRjYm1aMWJtTjBhVzl1SUc1bFlYSmxjaWgyWVd4MVpTa2dlMXh1SUNBZ0lHbG1JQ2hwYzFCeWIyMXBjMlVvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnBibk53WldOMFpXUWdQU0IyWVd4MVpTNXBibk53WldOMEtDazdYRzRnSUNBZ0lDQWdJR2xtSUNocGJuTndaV04wWldRdWMzUmhkR1VnUFQwOUlGd2lablZzWm1sc2JHVmtYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBibk53WldOMFpXUXVkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVmVnh1WEc0dktpcGNiaUFxSUVCeVpYUjFjbTV6SUhkb1pYUm9aWElnZEdobElHZHBkbVZ1SUc5aWFtVmpkQ0JwY3lCaElIQnliMjFwYzJVdVhHNGdLaUJQZEdobGNuZHBjMlVnYVhRZ2FYTWdZU0JtZFd4bWFXeHNaV1FnZG1Gc2RXVXVYRzRnS2k5Y2JsRXVhWE5RY205dGFYTmxJRDBnYVhOUWNtOXRhWE5sTzF4dVpuVnVZM1JwYjI0Z2FYTlFjbTl0YVhObEtHOWlhbVZqZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ2WW1wbFkzUWdhVzV6ZEdGdVkyVnZaaUJRY205dGFYTmxPMXh1ZlZ4dVhHNVJMbWx6VUhKdmJXbHpaVUZzYVd0bElEMGdhWE5RY205dGFYTmxRV3hwYTJVN1hHNW1kVzVqZEdsdmJpQnBjMUJ5YjIxcGMyVkJiR2xyWlNodlltcGxZM1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5QWW1wbFkzUW9iMkpxWldOMEtTQW1KaUIwZVhCbGIyWWdiMkpxWldOMExuUm9aVzRnUFQwOUlGd2lablZ1WTNScGIyNWNJanRjYm4xY2JseHVMeW9xWEc0Z0tpQkFjbVYwZFhKdWN5QjNhR1YwYUdWeUlIUm9aU0JuYVhabGJpQnZZbXBsWTNRZ2FYTWdZU0J3Wlc1a2FXNW5JSEJ5YjIxcGMyVXNJRzFsWVc1cGJtY2dibTkwWEc0Z0tpQm1kV3htYVd4c1pXUWdiM0lnY21WcVpXTjBaV1F1WEc0Z0tpOWNibEV1YVhOUVpXNWthVzVuSUQwZ2FYTlFaVzVrYVc1bk8xeHVablZ1WTNScGIyNGdhWE5RWlc1a2FXNW5LRzlpYW1WamRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCcGMxQnliMjFwYzJVb2IySnFaV04wS1NBbUppQnZZbXBsWTNRdWFXNXpjR1ZqZENncExuTjBZWFJsSUQwOVBTQmNJbkJsYm1ScGJtZGNJanRjYm4xY2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVhWE5RWlc1a2FXNW5JRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHVjM0JsWTNRb0tTNXpkR0YwWlNBOVBUMGdYQ0p3Wlc1a2FXNW5YQ0k3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRUJ5WlhSMWNtNXpJSGRvWlhSb1pYSWdkR2hsSUdkcGRtVnVJRzlpYW1WamRDQnBjeUJoSUhaaGJIVmxJRzl5SUdaMWJHWnBiR3hsWkZ4dUlDb2djSEp2YldselpTNWNiaUFxTDF4dVVTNXBjMFoxYkdacGJHeGxaQ0E5SUdselJuVnNabWxzYkdWa08xeHVablZ1WTNScGIyNGdhWE5HZFd4bWFXeHNaV1FvYjJKcVpXTjBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlDRnBjMUJ5YjIxcGMyVW9iMkpxWldOMEtTQjhmQ0J2WW1wbFkzUXVhVzV6Y0dWamRDZ3BMbk4wWVhSbElEMDlQU0JjSW1aMWJHWnBiR3hsWkZ3aU8xeHVmVnh1WEc1UWNtOXRhWE5sTG5CeWIzUnZkSGx3WlM1cGMwWjFiR1pwYkd4bFpDQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGJuTndaV04wS0NrdWMzUmhkR1VnUFQwOUlGd2lablZzWm1sc2JHVmtYQ0k3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRUJ5WlhSMWNtNXpJSGRvWlhSb1pYSWdkR2hsSUdkcGRtVnVJRzlpYW1WamRDQnBjeUJoSUhKbGFtVmpkR1ZrSUhCeWIyMXBjMlV1WEc0Z0tpOWNibEV1YVhOU1pXcGxZM1JsWkNBOUlHbHpVbVZxWldOMFpXUTdYRzVtZFc1amRHbHZiaUJwYzFKbGFtVmpkR1ZrS0c5aWFtVmpkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnBjMUJ5YjIxcGMyVW9iMkpxWldOMEtTQW1KaUJ2WW1wbFkzUXVhVzV6Y0dWamRDZ3BMbk4wWVhSbElEMDlQU0JjSW5KbGFtVmpkR1ZrWENJN1hHNTlYRzVjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG1selVtVnFaV04wWldRZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1emNHVmpkQ2dwTG5OMFlYUmxJRDA5UFNCY0luSmxhbVZqZEdWa1hDSTdYRzU5TzF4dVhHNHZMeTh2SUVKRlIwbE9JRlZPU0VGT1JFeEZSQ0JTUlVwRlExUkpUMDRnVkZKQlEwdEpUa2RjYmx4dUx5OGdWR2hwY3lCd2NtOXRhWE5sSUd4cFluSmhjbmtnWTI5dWMzVnRaWE1nWlhoalpYQjBhVzl1Y3lCMGFISnZkMjRnYVc0Z2FHRnVaR3hsY25NZ2MyOGdkR2hsZVNCallXNGdZbVZjYmk4dklHaGhibVJzWldRZ1lua2dZU0J6ZFdKelpYRjFaVzUwSUhCeWIyMXBjMlV1SUNCVWFHVWdaWGhqWlhCMGFXOXVjeUJuWlhRZ1lXUmtaV1FnZEc4Z2RHaHBjeUJoY25KaGVTQjNhR1Z1WEc0dkx5QjBhR1Y1SUdGeVpTQmpjbVZoZEdWa0xDQmhibVFnY21WdGIzWmxaQ0IzYUdWdUlIUm9aWGtnWVhKbElHaGhibVJzWldRdUlDQk9iM1JsSUhSb1lYUWdhVzRnUlZNMklHOXlYRzR2THlCemFHbHRiV1ZrSUdWdWRtbHliMjV0Wlc1MGN5d2dkR2hwY3lCM2IzVnNaQ0J1WVhSMWNtRnNiSGtnWW1VZ1lTQmdVMlYwWUM1Y2JuWmhjaUIxYm1oaGJtUnNaV1JTWldGemIyNXpJRDBnVzEwN1hHNTJZWElnZFc1b1lXNWtiR1ZrVW1WcVpXTjBhVzl1Y3lBOUlGdGRPMXh1ZG1GeUlISmxjRzl5ZEdWa1ZXNW9ZVzVrYkdWa1VtVnFaV04wYVc5dWN5QTlJRnRkTzF4dWRtRnlJSFJ5WVdOclZXNW9ZVzVrYkdWa1VtVnFaV04wYVc5dWN5QTlJSFJ5ZFdVN1hHNWNibVoxYm1OMGFXOXVJSEpsYzJWMFZXNW9ZVzVrYkdWa1VtVnFaV04wYVc5dWN5Z3BJSHRjYmlBZ0lDQjFibWhoYm1Sc1pXUlNaV0Z6YjI1ekxteGxibWQwYUNBOUlEQTdYRzRnSUNBZ2RXNW9ZVzVrYkdWa1VtVnFaV04wYVc5dWN5NXNaVzVuZEdnZ1BTQXdPMXh1WEc0Z0lDQWdhV1lnS0NGMGNtRmphMVZ1YUdGdVpHeGxaRkpsYW1WamRHbHZibk1wSUh0Y2JpQWdJQ0FnSUNBZ2RISmhZMnRWYm1oaGJtUnNaV1JTWldwbFkzUnBiMjV6SUQwZ2RISjFaVHRjYmlBZ0lDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlIUnlZV05yVW1WcVpXTjBhVzl1S0hCeWIyMXBjMlVzSUhKbFlYTnZiaWtnZTF4dUlDQWdJR2xtSUNnaGRISmhZMnRWYm1oaGJtUnNaV1JTWldwbFkzUnBiMjV6S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJ3Y205alpYTnpJRDA5UFNCY0ltOWlhbVZqZEZ3aUlDWW1JSFI1Y0dWdlppQndjbTlqWlhOekxtVnRhWFFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4dUlDQWdJQ0FnSUNCUkxtNWxlSFJVYVdOckxuSjFia0ZtZEdWeUtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoY25KaGVWOXBibVJsZUU5bUtIVnVhR0Z1Wkd4bFpGSmxhbVZqZEdsdmJuTXNJSEJ5YjIxcGMyVXBJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTXVaVzFwZENoY0luVnVhR0Z1Wkd4bFpGSmxhbVZqZEdsdmJsd2lMQ0J5WldGemIyNHNJSEJ5YjIxcGMyVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsY0c5eWRHVmtWVzVvWVc1a2JHVmtVbVZxWldOMGFXOXVjeTV3ZFhOb0tIQnliMjFwYzJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMWJtaGhibVJzWldSU1pXcGxZM1JwYjI1ekxuQjFjMmdvY0hKdmJXbHpaU2s3WEc0Z0lDQWdhV1lnS0hKbFlYTnZiaUFtSmlCMGVYQmxiMllnY21WaGMyOXVMbk4wWVdOcklDRTlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYRzRnSUNBZ0lDQWdJSFZ1YUdGdVpHeGxaRkpsWVhOdmJuTXVjSFZ6YUNoeVpXRnpiMjR1YzNSaFkyc3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIVnVhR0Z1Wkd4bFpGSmxZWE52Ym5NdWNIVnphQ2hjSWlodWJ5QnpkR0ZqYXlrZ1hDSWdLeUJ5WldGemIyNHBPMXh1SUNBZ0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2RXNTBjbUZqYTFKbGFtVmpkR2x2Ymlod2NtOXRhWE5sS1NCN1hHNGdJQ0FnYVdZZ0tDRjBjbUZqYTFWdWFHRnVaR3hsWkZKbGFtVmpkR2x2Ym5NcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmhkQ0E5SUdGeWNtRjVYMmx1WkdWNFQyWW9kVzVvWVc1a2JHVmtVbVZxWldOMGFXOXVjeXdnY0hKdmJXbHpaU2s3WEc0Z0lDQWdhV1lnS0dGMElDRTlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSEJ5YjJObGMzTWdQVDA5SUZ3aWIySnFaV04wWENJZ0ppWWdkSGx3Wlc5bUlIQnliMk5sYzNNdVpXMXBkQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlJMbTVsZUhSVWFXTnJMbkoxYmtGbWRHVnlLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZWFJTWlhCdmNuUWdQU0JoY25KaGVWOXBibVJsZUU5bUtISmxjRzl5ZEdWa1ZXNW9ZVzVrYkdWa1VtVnFaV04wYVc5dWN5d2djSEp2YldselpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dGMFVtVndiM0owSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbTlqWlhOekxtVnRhWFFvWENKeVpXcGxZM1JwYjI1SVlXNWtiR1ZrWENJc0lIVnVhR0Z1Wkd4bFpGSmxZWE52Ym5OYllYUmRMQ0J3Y205dGFYTmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVndiM0owWldSVmJtaGhibVJzWldSU1pXcGxZM1JwYjI1ekxuTndiR2xqWlNoaGRGSmxjRzl5ZEN3Z01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZFc1b1lXNWtiR1ZrVW1WcVpXTjBhVzl1Y3k1emNHeHBZMlVvWVhRc0lERXBPMXh1SUNBZ0lDQWdJQ0IxYm1oaGJtUnNaV1JTWldGemIyNXpMbk53YkdsalpTaGhkQ3dnTVNrN1hHNGdJQ0FnZlZ4dWZWeHVYRzVSTG5KbGMyVjBWVzVvWVc1a2JHVmtVbVZxWldOMGFXOXVjeUE5SUhKbGMyVjBWVzVvWVc1a2JHVmtVbVZxWldOMGFXOXVjenRjYmx4dVVTNW5aWFJWYm1oaGJtUnNaV1JTWldGemIyNXpJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUM4dklFMWhhMlVnWVNCamIzQjVJSE52SUhSb1lYUWdZMjl1YzNWdFpYSnpJR05oYmlkMElHbHVkR1Z5Wm1WeVpTQjNhWFJvSUc5MWNpQnBiblJsY201aGJDQnpkR0YwWlM1Y2JpQWdJQ0J5WlhSMWNtNGdkVzVvWVc1a2JHVmtVbVZoYzI5dWN5NXpiR2xqWlNncE8xeHVmVHRjYmx4dVVTNXpkRzl3Vlc1b1lXNWtiR1ZrVW1WcVpXTjBhVzl1VkhKaFkydHBibWNnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVnpaWFJWYm1oaGJtUnNaV1JTWldwbFkzUnBiMjV6S0NrN1hHNGdJQ0FnZEhKaFkydFZibWhoYm1Sc1pXUlNaV3BsWTNScGIyNXpJRDBnWm1Gc2MyVTdYRzU5TzF4dVhHNXlaWE5sZEZWdWFHRnVaR3hsWkZKbGFtVmpkR2x2Ym5Nb0tUdGNibHh1THk4dkx5QkZUa1FnVlU1SVFVNUVURVZFSUZKRlNrVkRWRWxQVGlCVVVrRkRTMGxPUjF4dVhHNHZLaXBjYmlBcUlFTnZibk4wY25WamRITWdZU0J5WldwbFkzUmxaQ0J3Y205dGFYTmxMbHh1SUNvZ1FIQmhjbUZ0SUhKbFlYTnZiaUIyWVd4MVpTQmtaWE5qY21saWFXNW5JSFJvWlNCbVlXbHNkWEpsWEc0Z0tpOWNibEV1Y21WcVpXTjBJRDBnY21WcVpXTjBPMXh1Wm5WdVkzUnBiMjRnY21WcVpXTjBLSEpsWVhOdmJpa2dlMXh1SUNBZ0lIWmhjaUJ5WldwbFkzUnBiMjRnUFNCUWNtOXRhWE5sS0h0Y2JpQWdJQ0FnSUNBZ1hDSjNhR1Z1WENJNklHWjFibU4wYVc5dUlDaHlaV3BsWTNSbFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdibTkwWlNCMGFHRjBJSFJvWlNCbGNuSnZjaUJvWVhNZ1ltVmxiaUJvWVc1a2JHVmtYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZxWldOMFpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IxYm5SeVlXTnJVbVZxWldOMGFXOXVLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZEdWa0lEOGdjbVZxWldOMFpXUW9jbVZoYzI5dUtTQTZJSFJvYVhNN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUxDQm1kVzVqZEdsdmJpQm1ZV3hzWW1GamF5Z3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnZlN3Z1puVnVZM1JwYjI0Z2FXNXpjR1ZqZENncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIc2djM1JoZEdVNklGd2ljbVZxWldOMFpXUmNJaXdnY21WaGMyOXVPaUJ5WldGemIyNGdmVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUU1dmRHVWdkR2hoZENCMGFHVWdjbVZoYzI5dUlHaGhjeUJ1YjNRZ1ltVmxiaUJvWVc1a2JHVmtMbHh1SUNBZ0lIUnlZV05yVW1WcVpXTjBhVzl1S0hKbGFtVmpkR2x2Yml3Z2NtVmhjMjl1S1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUnBiMjQ3WEc1OVhHNWNiaThxS2x4dUlDb2dRMjl1YzNSeWRXTjBjeUJoSUdaMWJHWnBiR3hsWkNCd2NtOXRhWE5sSUdadmNpQmhiaUJwYlcxbFpHbGhkR1VnY21WbVpYSmxibU5sTGx4dUlDb2dRSEJoY21GdElIWmhiSFZsSUdsdGJXVmthV0YwWlNCeVpXWmxjbVZ1WTJWY2JpQXFMMXh1VVM1bWRXeG1hV3hzSUQwZ1puVnNabWxzYkR0Y2JtWjFibU4wYVc5dUlHWjFiR1pwYkd3b2RtRnNkV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdVSEp2YldselpTaDdYRzRnSUNBZ0lDQWdJRndpZDJobGJsd2lPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJRndpWjJWMFhDSTZJR1oxYm1OMGFXOXVJQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVmJibUZ0WlYwN1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJRndpYzJWMFhDSTZJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQnlhSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbFcyNWhiV1ZkSUQwZ2NtaHpPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCY0ltUmxiR1YwWlZ3aU9pQm1kVzVqZEdsdmJpQW9ibUZ0WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWc1pYUmxJSFpoYkhWbFcyNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQmNJbkJ2YzNSY0lqb2dablZ1WTNScGIyNGdLRzVoYldVc0lHRnlaM01wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUUxaGNtc2dUV2xzYkdWeUlIQnliM0J2YzJWeklIUm9ZWFFnY0c5emRDQjNhWFJvSUc1dklHNWhiV1VnYzJodmRXeGtJR0Z3Y0d4NUlHRmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklIQnliMjFwYzJWa0lHWjFibU4wYVc5dUxseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHNWhiV1VnUFQwOUlHNTFiR3dnZkh3Z2JtRnRaU0E5UFQwZ2RtOXBaQ0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxMbUZ3Y0d4NUtIWnZhV1FnTUN3Z1lYSm5jeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMllXeDFaVnR1WVcxbFhTNWhjSEJzZVNoMllXeDFaU3dnWVhKbmN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJRndpWVhCd2JIbGNJam9nWm5WdVkzUnBiMjRnS0hSb2FYTndMQ0JoY21kektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVXVZWEJ3Ykhrb2RHaHBjM0FzSUdGeVozTXBPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCY0ltdGxlWE5jSWpvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5aWFtVmpkRjlyWlhsektIWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc0lIWnZhV1FnTUN3Z1puVnVZM1JwYjI0Z2FXNXpjR1ZqZENncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIc2djM1JoZEdVNklGd2lablZzWm1sc2JHVmtYQ0lzSUhaaGJIVmxPaUIyWVd4MVpTQjlPMXh1SUNBZ0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnZiblpsY25SeklIUm9aVzVoWW14bGN5QjBieUJSSUhCeWIyMXBjMlZ6TGx4dUlDb2dRSEJoY21GdElIQnliMjFwYzJVZ2RHaGxibUZpYkdVZ2NISnZiV2x6WlZ4dUlDb2dRSEpsZEhWeWJuTWdZU0JSSUhCeWIyMXBjMlZjYmlBcUwxeHVablZ1WTNScGIyNGdZMjlsY21ObEtIQnliMjFwYzJVcElIdGNiaUFnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lGRXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISnZiV2x6WlM1MGFHVnVLR1JsWm1WeWNtVmtMbkpsYzI5c2RtVXNJR1JsWm1WeWNtVmtMbkpsYW1WamRDd2daR1ZtWlhKeVpXUXVibTkwYVdaNUtUdGNiaUFnSUNBZ0lDQWdmU0JqWVhSamFDQW9aWGhqWlhCMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV1psY25KbFpDNXlaV3BsWTNRb1pYaGpaWEIwYVc5dUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCa1pXWmxjbkpsWkM1d2NtOXRhWE5sTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZ1Ym05MFlYUmxjeUJoYmlCdlltcGxZM1FnYzNWamFDQjBhR0YwSUdsMElIZHBiR3dnYm1WMlpYSWdZbVZjYmlBcUlIUnlZVzV6Wm1WeWNtVmtJR0YzWVhrZ1puSnZiU0IwYUdseklIQnliMk5sYzNNZ2IzWmxjaUJoYm5rZ2NISnZiV2x6WlZ4dUlDb2dZMjl0YlhWdWFXTmhkR2x2YmlCamFHRnVibVZzTGx4dUlDb2dRSEJoY21GdElHOWlhbVZqZEZ4dUlDb2dRSEpsZEhWeWJuTWdjSEp2YldselpTQmhJSGR5WVhCd2FXNW5JRzltSUhSb1lYUWdiMkpxWldOMElIUm9ZWFJjYmlBcUlHRmtaR2wwYVc5dVlXeHNlU0J5WlhOd2IyNWtjeUIwYnlCMGFHVWdYQ0pwYzBSbFpsd2lJRzFsYzNOaFoyVmNiaUFxSUhkcGRHaHZkWFFnWVNCeVpXcGxZM1JwYjI0dVhHNGdLaTljYmxFdWJXRnpkR1Z5SUQwZ2JXRnpkR1Z5TzF4dVpuVnVZM1JwYjI0Z2JXRnpkR1Z5S0c5aWFtVmpkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlFjbTl0YVhObEtIdGNiaUFnSUNBZ0lDQWdYQ0pwYzBSbFpsd2lPaUJtZFc1amRHbHZiaUFvS1NCN2ZWeHVJQ0FnSUgwc0lHWjFibU4wYVc5dUlHWmhiR3hpWVdOcktHOXdMQ0JoY21kektTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmthWE53WVhSamFDaHZZbXBsWTNRc0lHOXdMQ0JoY21kektUdGNiaUFnSUNCOUxDQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJSS0c5aWFtVmpkQ2t1YVc1emNHVmpkQ2dwTzF4dUlDQWdJSDBwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk53Y21WaFpITWdkR2hsSUhaaGJIVmxjeUJ2WmlCaElIQnliMjFwYzJWa0lHRnljbUY1SUc5bUlHRnlaM1Z0Wlc1MGN5QnBiblJ2SUhSb1pWeHVJQ29nWm5Wc1ptbHNiRzFsYm5RZ1kyRnNiR0poWTJzdVhHNGdLaUJBY0dGeVlXMGdablZzWm1sc2JHVmtJR05oYkd4aVlXTnJJSFJvWVhRZ2NtVmpaV2wyWlhNZ2RtRnlhV0ZrYVdNZ1lYSm5kVzFsYm5SeklHWnliMjBnZEdobFhHNGdLaUJ3Y205dGFYTmxaQ0JoY25KaGVWeHVJQ29nUUhCaGNtRnRJSEpsYW1WamRHVmtJR05oYkd4aVlXTnJJSFJvWVhRZ2NtVmpaV2wyWlhNZ2RHaGxJR1Y0WTJWd2RHbHZiaUJwWmlCMGFHVWdjSEp2YldselpWeHVJQ29nYVhNZ2NtVnFaV04wWldRdVhHNGdLaUJBY21WMGRYSnVjeUJoSUhCeWIyMXBjMlVnWm05eUlIUm9aU0J5WlhSMWNtNGdkbUZzZFdVZ2IzSWdkR2h5YjNkdUlHVjRZMlZ3ZEdsdmJpQnZabHh1SUNvZ1pXbDBhR1Z5SUdOaGJHeGlZV05yTGx4dUlDb3ZYRzVSTG5Od2NtVmhaQ0E5SUhOd2NtVmhaRHRjYm1aMWJtTjBhVzl1SUhOd2NtVmhaQ2gyWVd4MVpTd2dablZzWm1sc2JHVmtMQ0J5WldwbFkzUmxaQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlJLSFpoYkhWbEtTNXpjSEpsWVdRb1puVnNabWxzYkdWa0xDQnlaV3BsWTNSbFpDazdYRzU5WEc1Y2JsQnliMjFwYzJVdWNISnZkRzkwZVhCbExuTndjbVZoWkNBOUlHWjFibU4wYVc5dUlDaG1kV3htYVd4c1pXUXNJSEpsYW1WamRHVmtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WVd4c0tDa3VkR2hsYmlobWRXNWpkR2x2YmlBb1lYSnlZWGtwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaMWJHWnBiR3hsWkM1aGNIQnNlU2gyYjJsa0lEQXNJR0Z5Y21GNUtUdGNiaUFnSUNCOUxDQnlaV3BsWTNSbFpDazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlGUm9aU0JoYzNsdVl5Qm1kVzVqZEdsdmJpQnBjeUJoSUdSbFkyOXlZWFJ2Y2lCbWIzSWdaMlZ1WlhKaGRHOXlJR1oxYm1OMGFXOXVjeXdnZEhWeWJtbHVaMXh1SUNvZ2RHaGxiU0JwYm5SdklHRnplVzVqYUhKdmJtOTFjeUJuWlc1bGNtRjBiM0p6TGlBZ1FXeDBhRzkxWjJnZ1oyVnVaWEpoZEc5eWN5QmhjbVVnYjI1c2VTQndZWEowWEc0Z0tpQnZaaUIwYUdVZ2JtVjNaWE4wSUVWRFRVRlRZM0pwY0hRZ05pQmtjbUZtZEhNc0lIUm9hWE1nWTI5a1pTQmtiMlZ6SUc1dmRDQmpZWFZ6WlNCemVXNTBZWGhjYmlBcUlHVnljbTl5Y3lCcGJpQnZiR1JsY2lCbGJtZHBibVZ6TGlBZ1ZHaHBjeUJqYjJSbElITm9iM1ZzWkNCamIyNTBhVzUxWlNCMGJ5QjNiM0pySUdGdVpDQjNhV3hzWEc0Z0tpQnBiaUJtWVdOMElHbHRjSEp2ZG1VZ2IzWmxjaUIwYVcxbElHRnpJSFJvWlNCc1lXNW5kV0ZuWlNCcGJYQnliM1psY3k1Y2JpQXFYRzRnS2lCRlV6WWdaMlZ1WlhKaGRHOXljeUJoY21VZ1kzVnljbVZ1ZEd4NUlIQmhjblFnYjJZZ1ZqZ2dkbVZ5YzJsdmJpQXpMakU1SUhkcGRHZ2dkR2hsWEc0Z0tpQXRMV2hoY20xdmJua3RaMlZ1WlhKaGRHOXljeUJ5ZFc1MGFXMWxJR1pzWVdjZ1pXNWhZbXhsWkM0Z0lGTndhV1JsY2sxdmJtdGxlU0JvWVhNZ2FHRmtJSFJvWlcxY2JpQXFJR1p2Y2lCc2IyNW5aWElzSUdKMWRDQjFibVJsY2lCaGJpQnZiR1JsY2lCUWVYUm9iMjR0YVc1emNHbHlaV1FnWm05eWJTNGdJRlJvYVhNZ1puVnVZM1JwYjI1Y2JpQXFJSGR2Y210eklHOXVJR0p2ZEdnZ2EybHVaSE1nYjJZZ1oyVnVaWEpoZEc5eWN5NWNiaUFxWEc0Z0tpQkVaV052Y21GMFpYTWdZU0JuWlc1bGNtRjBiM0lnWm5WdVkzUnBiMjRnYzNWamFDQjBhR0YwT2x4dUlDb2dJQzBnYVhRZ2JXRjVJSGxwWld4a0lIQnliMjFwYzJWelhHNGdLaUFnTFNCbGVHVmpkWFJwYjI0Z2QybHNiQ0JqYjI1MGFXNTFaU0IzYUdWdUlIUm9ZWFFnY0hKdmJXbHpaU0JwY3lCbWRXeG1hV3hzWldSY2JpQXFJQ0F0SUhSb1pTQjJZV3gxWlNCdlppQjBhR1VnZVdsbGJHUWdaWGh3Y21WemMybHZiaUIzYVd4c0lHSmxJSFJvWlNCbWRXeG1hV3hzWldRZ2RtRnNkV1ZjYmlBcUlDQXRJR2wwSUhKbGRIVnlibk1nWVNCd2NtOXRhWE5sSUdadmNpQjBhR1VnY21WMGRYSnVJSFpoYkhWbElDaDNhR1Z1SUhSb1pTQm5aVzVsY21GMGIzSmNiaUFxSUNBZ0lITjBiM0J6SUdsMFpYSmhkR2x1WnlsY2JpQXFJQ0F0SUhSb1pTQmtaV052Y21GMFpXUWdablZ1WTNScGIyNGdjbVYwZFhKdWN5QmhJSEJ5YjIxcGMyVWdabTl5SUhSb1pTQnlaWFIxY200Z2RtRnNkV1ZjYmlBcUlDQWdJRzltSUhSb1pTQm5aVzVsY21GMGIzSWdiM0lnZEdobElHWnBjbk4wSUhKbGFtVmpkR1ZrSUhCeWIyMXBjMlVnWVcxdmJtY2dkR2h2YzJWY2JpQXFJQ0FnSUhscFpXeGtaV1F1WEc0Z0tpQWdMU0JwWmlCaGJpQmxjbkp2Y2lCcGN5QjBhSEp2ZDI0Z2FXNGdkR2hsSUdkbGJtVnlZWFJ2Y2l3Z2FYUWdjSEp2Y0dGbllYUmxjeUIwYUhKdmRXZG9YRzRnS2lBZ0lDQmxkbVZ5ZVNCbWIyeHNiM2RwYm1jZ2VXbGxiR1FnZFc1MGFXd2dhWFFnYVhNZ1kyRjFaMmgwTENCdmNpQjFiblJwYkNCcGRDQmxjMk5oY0dWelhHNGdLaUFnSUNCMGFHVWdaMlZ1WlhKaGRHOXlJR1oxYm1OMGFXOXVJR0ZzZEc5blpYUm9aWElzSUdGdVpDQnBjeUIwY21GdWMyeGhkR1ZrSUdsdWRHOGdZVnh1SUNvZ0lDQWdjbVZxWldOMGFXOXVJR1p2Y2lCMGFHVWdjSEp2YldselpTQnlaWFIxY201bFpDQmllU0IwYUdVZ1pHVmpiM0poZEdWa0lHZGxibVZ5WVhSdmNpNWNiaUFxTDF4dVVTNWhjM2x1WXlBOUlHRnplVzVqTzF4dVpuVnVZM1JwYjI0Z1lYTjVibU1vYldGclpVZGxibVZ5WVhSdmNpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUhkb1pXNGdkbVZ5WWlCcGN5QmNJbk5sYm1SY0lpd2dZWEpuSUdseklHRWdkbUZzZFdWY2JpQWdJQ0FnSUNBZ0x5OGdkMmhsYmlCMlpYSmlJR2x6SUZ3aWRHaHliM2RjSWl3Z1lYSm5JR2x6SUdGdUlHVjRZMlZ3ZEdsdmJseHVJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQmpiMjUwYVc1MVpYSW9kbVZ5WWl3Z1lYSm5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnY21WemRXeDBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJWYm5ScGJDQldPQ0F6TGpFNUlDOGdRMmh5YjIxcGRXMGdNamtnYVhNZ2NtVnNaV0Z6WldRc0lGTndhV1JsY2sxdmJtdGxlU0JwY3lCMGFHVWdiMjVzZVZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnWlc1bmFXNWxJSFJvWVhRZ2FHRnpJR0VnWkdWd2JHOTVaV1FnWW1GelpTQnZaaUJpY205M2MyVnljeUIwYUdGMElITjFjSEJ2Y25RZ1oyVnVaWEpoZEc5eWN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklFaHZkMlYyWlhJc0lGTk5KM01nWjJWdVpYSmhkRzl5Y3lCMWMyVWdkR2hsSUZCNWRHaHZiaTFwYm5Od2FYSmxaQ0J6WlcxaGJuUnBZM01nYjJaY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUc5MWRHUmhkR1ZrSUVWVE5pQmtjbUZtZEhNdUlDQlhaU0IzYjNWc1pDQnNhV3RsSUhSdklITjFjSEJ2Y25RZ1JWTTJMQ0JpZFhRZ2QyVW5aQ0JoYkhOdlhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCc2FXdGxJSFJ2SUcxaGEyVWdhWFFnY0c5emMybGliR1VnZEc4Z2RYTmxJR2RsYm1WeVlYUnZjbk1nYVc0Z1pHVndiRzk1WldRZ1luSnZkM05sY25Nc0lITnZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QjNaU0JoYkhOdklITjFjSEJ2Y25RZ1VIbDBhRzl1TFhOMGVXeGxJR2RsYm1WeVlYUnZjbk11SUNCQmRDQnpiMjFsSUhCdmFXNTBJSGRsSUdOaGJpQnlaVzF2ZG1WY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUhSb2FYTWdZbXh2WTJzdVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1UzUnZjRWwwWlhKaGRHbHZiaUE5UFQwZ1hDSjFibVJsWm1sdVpXUmNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFVlROaUJIWlc1bGNtRjBiM0p6WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBJRDBnWjJWdVpYSmhkRzl5VzNabGNtSmRLR0Z5WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pYaGpaWEIwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WldwbFkzUW9aWGhqWlhCMGFXOXVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZEM1a2IyNWxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCUktISmxjM1ZzZEM1MllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhkb1pXNG9jbVZ6ZFd4MExuWmhiSFZsTENCallXeHNZbUZqYXl3Z1pYSnlZbUZqYXlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCVGNHbGtaWEpOYjI1clpYa2dSMlZ1WlhKaGRHOXljMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUVaSldFMUZPaUJTWlcxdmRtVWdkR2hwY3lCallYTmxJSGRvWlc0Z1UwMGdaRzlsY3lCRlV6WWdaMlZ1WlhKaGRHOXljeTVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0JuWlc1bGNtRjBiM0piZG1WeVlsMG9ZWEpuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobGVHTmxjSFJwYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpVM1J2Y0VsMFpYSmhkR2x2YmlobGVHTmxjSFJwYjI0cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1VTaGxlR05sY0hScGIyNHVkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxhbVZqZENobGVHTmxjSFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIzYUdWdUtISmxjM1ZzZEN3Z1kyRnNiR0poWTJzc0lHVnljbUpoWTJzcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIWmhjaUJuWlc1bGNtRjBiM0lnUFNCdFlXdGxSMlZ1WlhKaGRHOXlMbUZ3Y0d4NUtIUm9hWE1zSUdGeVozVnRaVzUwY3lrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJqWVd4c1ltRmpheUE5SUdOdmJuUnBiblZsY2k1aWFXNWtLR052Ym5ScGJuVmxjaXdnWENKdVpYaDBYQ0lwTzF4dUlDQWdJQ0FnSUNCMllYSWdaWEp5WW1GamF5QTlJR052Ym5ScGJuVmxjaTVpYVc1a0tHTnZiblJwYm5WbGNpd2dYQ0owYUhKdmQxd2lLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR05oYkd4aVlXTnJLQ2s3WEc0Z0lDQWdmVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVhR1VnYzNCaGQyNGdablZ1WTNScGIyNGdhWE1nWVNCemJXRnNiQ0IzY21Gd2NHVnlJR0Z5YjNWdVpDQmhjM2x1WXlCMGFHRjBJR2x0YldWa2FXRjBaV3g1WEc0Z0tpQmpZV3hzY3lCMGFHVWdaMlZ1WlhKaGRHOXlJR0Z1WkNCaGJITnZJR1Z1WkhNZ2RHaGxJSEJ5YjIxcGMyVWdZMmhoYVc0c0lITnZJSFJvWVhRZ1lXNTVYRzRnS2lCMWJtaGhibVJzWldRZ1pYSnliM0p6SUdGeVpTQjBhSEp2ZDI0Z2FXNXpkR1ZoWkNCdlppQm1iM0ozWVhKa1pXUWdkRzhnZEdobElHVnljbTl5WEc0Z0tpQm9ZVzVrYkdWeUxpQlVhR2x6SUdseklIVnpaV1oxYkNCaVpXTmhkWE5sSUdsMEozTWdaWGgwY21WdFpXeDVJR052YlcxdmJpQjBieUJ5ZFc1Y2JpQXFJR2RsYm1WeVlYUnZjbk1nWVhRZ2RHaGxJSFJ2Y0Mxc1pYWmxiQ0IwYnlCM2IzSnJJSGRwZEdnZ2JHbGljbUZ5YVdWekxseHVJQ292WEc1UkxuTndZWGR1SUQwZ2MzQmhkMjQ3WEc1bWRXNWpkR2x2YmlCemNHRjNiaWh0WVd0bFIyVnVaWEpoZEc5eUtTQjdYRzRnSUNBZ1VTNWtiMjVsS0ZFdVlYTjVibU1vYldGclpVZGxibVZ5WVhSdmNpa29LU2s3WEc1OVhHNWNiaTh2SUVaSldFMUZPaUJTWlcxdmRtVWdkR2hwY3lCcGJuUmxjbVpoWTJVZ2IyNWpaU0JGVXpZZ1oyVnVaWEpoZEc5eWN5QmhjbVVnYVc0Z1UzQnBaR1Z5VFc5dWEyVjVMbHh1THlvcVhHNGdLaUJVYUhKdmQzTWdZU0JTWlhSMWNtNVdZV3gxWlNCbGVHTmxjSFJwYjI0Z2RHOGdjM1J2Y0NCaGJpQmhjM2x1WTJoeWIyNXZkWE1nWjJWdVpYSmhkRzl5TGx4dUlDcGNiaUFxSUZSb2FYTWdhVzUwWlhKbVlXTmxJR2x6SUdFZ2MzUnZjQzFuWVhBZ2JXVmhjM1Z5WlNCMGJ5QnpkWEJ3YjNKMElHZGxibVZ5WVhSdmNpQnlaWFIxY201Y2JpQXFJSFpoYkhWbGN5QnBiaUJ2YkdSbGNpQkdhWEpsWm05NEwxTndhV1JsY2sxdmJtdGxlUzRnSUVsdUlHSnliM2R6WlhKeklIUm9ZWFFnYzNWd2NHOXlkQ0JGVXpaY2JpQXFJR2RsYm1WeVlYUnZjbk1nYkdsclpTQkRhSEp2YldsMWJTQXlPU3dnYW5WemRDQjFjMlVnWENKeVpYUjFjbTVjSWlCcGJpQjViM1Z5SUdkbGJtVnlZWFJ2Y2x4dUlDb2dablZ1WTNScGIyNXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjJZV3gxWlNCMGFHVWdjbVYwZFhKdUlIWmhiSFZsSUdadmNpQjBhR1VnYzNWeWNtOTFibVJwYm1jZ1oyVnVaWEpoZEc5eVhHNGdLaUJBZEdoeWIzZHpJRkpsZEhWeWJsWmhiSFZsSUdWNFkyVndkR2x2YmlCM2FYUm9JSFJvWlNCMllXeDFaUzVjYmlBcUlFQmxlR0Z0Y0d4bFhHNGdLaUF2THlCRlV6WWdjM1I1YkdWY2JpQXFJRkV1WVhONWJtTW9ablZ1WTNScGIyNHFJQ2dwSUh0Y2JpQXFJQ0FnSUNBZ2RtRnlJR1p2YnlBOUlIbHBaV3hrSUdkbGRFWnZiMUJ5YjIxcGMyVW9LVHRjYmlBcUlDQWdJQ0FnZG1GeUlHSmhjaUE5SUhscFpXeGtJR2RsZEVKaGNsQnliMjFwYzJVb0tUdGNiaUFxSUNBZ0lDQWdjbVYwZFhKdUlHWnZieUFySUdKaGNqdGNiaUFxSUgwcFhHNGdLaUF2THlCUGJHUmxjaUJUY0dsa1pYSk5iMjVyWlhrZ2MzUjViR1ZjYmlBcUlGRXVZWE41Ym1Nb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNvZ0lDQWdJQ0IyWVhJZ1ptOXZJRDBnZVdsbGJHUWdaMlYwUm05dlVISnZiV2x6WlNncE8xeHVJQ29nSUNBZ0lDQjJZWElnWW1GeUlEMGdlV2xsYkdRZ1oyVjBRbUZ5VUhKdmJXbHpaU2dwTzF4dUlDb2dJQ0FnSUNCUkxuSmxkSFZ5YmlobWIyOGdLeUJpWVhJcE8xeHVJQ29nZlNsY2JpQXFMMXh1VVZ0Y0luSmxkSFZ5Ymx3aVhTQTlJRjl5WlhSMWNtNDdYRzVtZFc1amRHbHZiaUJmY21WMGRYSnVLSFpoYkhWbEtTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lGRlNaWFIxY201V1lXeDFaU2gyWVd4MVpTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1ZHaGxJSEJ5YjIxcGMyVmtJR1oxYm1OMGFXOXVJR1JsWTI5eVlYUnZjaUJsYm5OMWNtVnpJSFJvWVhRZ1lXNTVJSEJ5YjIxcGMyVWdZWEpuZFcxbGJuUnpYRzRnS2lCaGNtVWdjMlYwZEd4bFpDQmhibVFnY0dGemMyVmtJR0Z6SUhaaGJIVmxjeUFvWUhSb2FYTmdJR2x6SUdGc2MyOGdjMlYwZEd4bFpDQmhibVFnY0dGemMyVmtYRzRnS2lCaGN5QmhJSFpoYkhWbEtTNGdJRWwwSUhkcGJHd2dZV3h6YnlCbGJuTjFjbVVnZEdoaGRDQjBhR1VnY21WemRXeDBJRzltSUdFZ1puVnVZM1JwYjI0Z2FYTmNiaUFxSUdGc2QyRjVjeUJoSUhCeWIyMXBjMlV1WEc0Z0tseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcUlIWmhjaUJoWkdRZ1BTQlJMbkJ5YjIxcGMyVmtLR1oxYm1OMGFXOXVJQ2hoTENCaUtTQjdYRzRnS2lBZ0lDQWdjbVYwZFhKdUlHRWdLeUJpTzF4dUlDb2dmU2s3WEc0Z0tpQmhaR1FvVVNoaEtTd2dVU2hDS1NrN1hHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0bWRXNWpkR2x2Ym4wZ1kyRnNiR0poWTJzZ1ZHaGxJR1oxYm1OMGFXOXVJSFJ2SUdSbFkyOXlZWFJsWEc0Z0tpQkFjbVYwZFhKdWN5QjdablZ1WTNScGIyNTlJR0VnWm5WdVkzUnBiMjRnZEdoaGRDQm9ZWE1nWW1WbGJpQmtaV052Y21GMFpXUXVYRzRnS2k5Y2JsRXVjSEp2YldselpXUWdQU0J3Y205dGFYTmxaRHRjYm1aMWJtTjBhVzl1SUhCeWIyMXBjMlZrS0dOaGJHeGlZV05yS1NCN1hHNGdJQ0FnY21WMGRYSnVJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOd2NtVmhaQ2hiZEdocGN5d2dZV3hzS0dGeVozVnRaVzUwY3lsZExDQm1kVzVqZEdsdmJpQW9jMlZzWml3Z1lYSm5jeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTmhiR3hpWVdOckxtRndjR3g1S0hObGJHWXNJR0Z5WjNNcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlITmxibVJ6SUdFZ2JXVnpjMkZuWlNCMGJ5QmhJSFpoYkhWbElHbHVJR0VnWm5WMGRYSmxJSFIxY201Y2JpQXFJRUJ3WVhKaGJTQnZZbXBsWTNRcUlIUm9aU0J5WldOcGNHbGxiblJjYmlBcUlFQndZWEpoYlNCdmNDQjBhR1VnYm1GdFpTQnZaaUIwYUdVZ2JXVnpjMkZuWlNCdmNHVnlZWFJwYjI0c0lHVXVaeTRzSUZ3aWQyaGxibHdpTEZ4dUlDb2dRSEJoY21GdElHRnlaM01nWm5WeWRHaGxjaUJoY21kMWJXVnVkSE1nZEc4Z1ltVWdabTl5ZDJGeVpHVmtJSFJ2SUhSb1pTQnZjR1Z5WVhScGIyNWNiaUFxSUVCeVpYUjFjbTV6SUhKbGMzVnNkQ0I3VUhKdmJXbHpaWDBnWVNCd2NtOXRhWE5sSUdadmNpQjBhR1VnY21WemRXeDBJRzltSUhSb1pTQnZjR1Z5WVhScGIyNWNiaUFxTDF4dVVTNWthWE53WVhSamFDQTlJR1JwYzNCaGRHTm9PMXh1Wm5WdVkzUnBiMjRnWkdsemNHRjBZMmdvYjJKcVpXTjBMQ0J2Y0N3Z1lYSm5jeWtnZTF4dUlDQWdJSEpsZEhWeWJpQlJLRzlpYW1WamRDa3VaR2x6Y0dGMFkyZ29iM0FzSUdGeVozTXBPMXh1ZlZ4dVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNWthWE53WVhSamFDQTlJR1oxYm1OMGFXOXVJQ2h2Y0N3Z1lYSm5jeWtnZTF4dUlDQWdJSFpoY2lCelpXeG1JRDBnZEdocGN6dGNiaUFnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lGRXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCelpXeG1MbkJ5YjIxcGMyVkVhWE53WVhSamFDaGtaV1psY25KbFpDNXlaWE52YkhabExDQnZjQ3dnWVhKbmN5azdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUdSbFptVnljbVZrTG5CeWIyMXBjMlU3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRWRsZEhNZ2RHaGxJSFpoYkhWbElHOW1JR0VnY0hKdmNHVnlkSGtnYVc0Z1lTQm1kWFIxY21VZ2RIVnliaTVjYmlBcUlFQndZWEpoYlNCdlltcGxZM1FnSUNBZ2NISnZiV2x6WlNCdmNpQnBiVzFsWkdsaGRHVWdjbVZtWlhKbGJtTmxJR1p2Y2lCMFlYSm5aWFFnYjJKcVpXTjBYRzRnS2lCQWNHRnlZVzBnYm1GdFpTQWdJQ0FnSUc1aGJXVWdiMllnY0hKdmNHVnlkSGtnZEc4Z1oyVjBYRzRnS2lCQWNtVjBkWEp1SUhCeWIyMXBjMlVnWm05eUlIUm9aU0J3Y205d1pYSjBlU0IyWVd4MVpWeHVJQ292WEc1UkxtZGxkQ0E5SUdaMWJtTjBhVzl1SUNodlltcGxZM1FzSUd0bGVTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCUktHOWlhbVZqZENrdVpHbHpjR0YwWTJnb1hDSm5aWFJjSWl3Z1cydGxlVjBwTzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1WjJWMElEMGdablZ1WTNScGIyNGdLR3RsZVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtUnBjM0JoZEdOb0tGd2laMlYwWENJc0lGdHJaWGxkS1R0Y2JuMDdYRzVjYmk4cUtseHVJQ29nVTJWMGN5QjBhR1VnZG1Gc2RXVWdiMllnWVNCd2NtOXdaWEowZVNCcGJpQmhJR1oxZEhWeVpTQjBkWEp1TGx4dUlDb2dRSEJoY21GdElHOWlhbVZqZENBZ0lDQndjbTl0YVhObElHOXlJR2x0YldWa2FXRjBaU0J5WldabGNtVnVZMlVnWm05eUlHOWlhbVZqZENCdlltcGxZM1JjYmlBcUlFQndZWEpoYlNCdVlXMWxJQ0FnSUNBZ2JtRnRaU0J2WmlCd2NtOXdaWEowZVNCMGJ5QnpaWFJjYmlBcUlFQndZWEpoYlNCMllXeDFaU0FnSUNBZ2JtVjNJSFpoYkhWbElHOW1JSEJ5YjNCbGNuUjVYRzRnS2lCQWNtVjBkWEp1SUhCeWIyMXBjMlVnWm05eUlIUm9aU0J5WlhSMWNtNGdkbUZzZFdWY2JpQXFMMXh1VVM1elpYUWdQU0JtZFc1amRHbHZiaUFvYjJKcVpXTjBMQ0JyWlhrc0lIWmhiSFZsS1NCN1hHNGdJQ0FnY21WMGRYSnVJRkVvYjJKcVpXTjBLUzVrYVhOd1lYUmphQ2hjSW5ObGRGd2lMQ0JiYTJWNUxDQjJZV3gxWlYwcE8xeHVmVHRjYmx4dVVISnZiV2x6WlM1d2NtOTBiM1I1Y0dVdWMyVjBJRDBnWm5WdVkzUnBiMjRnS0d0bGVTd2dkbUZzZFdVcElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWthWE53WVhSamFDaGNJbk5sZEZ3aUxDQmJhMlY1TENCMllXeDFaVjBwTzF4dWZUdGNibHh1THlvcVhHNGdLaUJFWld4bGRHVnpJR0VnY0hKdmNHVnlkSGtnYVc0Z1lTQm1kWFIxY21VZ2RIVnliaTVjYmlBcUlFQndZWEpoYlNCdlltcGxZM1FnSUNBZ2NISnZiV2x6WlNCdmNpQnBiVzFsWkdsaGRHVWdjbVZtWlhKbGJtTmxJR1p2Y2lCMFlYSm5aWFFnYjJKcVpXTjBYRzRnS2lCQWNHRnlZVzBnYm1GdFpTQWdJQ0FnSUc1aGJXVWdiMllnY0hKdmNHVnlkSGtnZEc4Z1pHVnNaWFJsWEc0Z0tpQkFjbVYwZFhKdUlIQnliMjFwYzJVZ1ptOXlJSFJvWlNCeVpYUjFjbTRnZG1Gc2RXVmNiaUFxTDF4dVVTNWtaV3dnUFNBdkx5QllXRmdnYkdWbllXTjVYRzVSVzF3aVpHVnNaWFJsWENKZElEMGdablZ1WTNScGIyNGdLRzlpYW1WamRDd2dhMlY1S1NCN1hHNGdJQ0FnY21WMGRYSnVJRkVvYjJKcVpXTjBLUzVrYVhOd1lYUmphQ2hjSW1SbGJHVjBaVndpTENCYmEyVjVYU2s3WEc1OU8xeHVYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzVrWld3Z1BTQXZMeUJZV0ZnZ2JHVm5ZV041WEc1UWNtOXRhWE5sTG5CeWIzUnZkSGx3WlZ0Y0ltUmxiR1YwWlZ3aVhTQTlJR1oxYm1OMGFXOXVJQ2hyWlhrcElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWthWE53WVhSamFDaGNJbVJsYkdWMFpWd2lMQ0JiYTJWNVhTazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFbHVkbTlyWlhNZ1lTQnRaWFJvYjJRZ2FXNGdZU0JtZFhSMWNtVWdkSFZ5Ymk1Y2JpQXFJRUJ3WVhKaGJTQnZZbXBsWTNRZ0lDQWdjSEp2YldselpTQnZjaUJwYlcxbFpHbGhkR1VnY21WbVpYSmxibU5sSUdadmNpQjBZWEpuWlhRZ2IySnFaV04wWEc0Z0tpQkFjR0Z5WVcwZ2JtRnRaU0FnSUNBZ0lHNWhiV1VnYjJZZ2JXVjBhRzlrSUhSdklHbHVkbTlyWlZ4dUlDb2dRSEJoY21GdElIWmhiSFZsSUNBZ0lDQmhJSFpoYkhWbElIUnZJSEJ2YzNRc0lIUjVjR2xqWVd4c2VTQmhiaUJoY25KaGVTQnZabHh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGJuWnZZMkYwYVc5dUlHRnlaM1Z0Wlc1MGN5Qm1iM0lnY0hKdmJXbHpaWE1nZEdoaGRGeHVJQ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoY21VZ2RXeDBhVzFoZEdWc2VTQmlZV05yWldRZ2QybDBhQ0JnY21WemIyeDJaV0FnZG1Gc2RXVnpMRnh1SUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGN5QnZjSEJ2YzJWa0lIUnZJSFJvYjNObElHSmhZMnRsWkNCM2FYUm9JRlZTVEhOY2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkMmhsY21WcGJpQjBhR1VnY0c5emRHVmtJSFpoYkhWbElHTmhiaUJpWlNCaGJubGNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnU2xOUFRpQnpaWEpwWVd4cGVtRmliR1VnYjJKcVpXTjBMbHh1SUNvZ1FISmxkSFZ5YmlCd2NtOXRhWE5sSUdadmNpQjBhR1VnY21WMGRYSnVJSFpoYkhWbFhHNGdLaTljYmk4dklHSnZkVzVrSUd4dlkyRnNiSGtnWW1WallYVnpaU0JwZENCcGN5QjFjMlZrSUdKNUlHOTBhR1Z5SUcxbGRHaHZaSE5jYmxFdWJXRndjR3g1SUQwZ0x5OGdXRmhZSUVGeklIQnliM0J2YzJWa0lHSjVJRndpVW1Wa2MyRnVaSEp2WENKY2JsRXVjRzl6ZENBOUlHWjFibU4wYVc5dUlDaHZZbXBsWTNRc0lHNWhiV1VzSUdGeVozTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1VTaHZZbXBsWTNRcExtUnBjM0JoZEdOb0tGd2ljRzl6ZEZ3aUxDQmJibUZ0WlN3Z1lYSm5jMTBwTzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1YldGd2NHeDVJRDBnTHk4Z1dGaFlJRUZ6SUhCeWIzQnZjMlZrSUdKNUlGd2lVbVZrYzJGdVpISnZYQ0pjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG5CdmMzUWdQU0JtZFc1amRHbHZiaUFvYm1GdFpTd2dZWEpuY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtUnBjM0JoZEdOb0tGd2ljRzl6ZEZ3aUxDQmJibUZ0WlN3Z1lYSm5jMTBwTzF4dWZUdGNibHh1THlvcVhHNGdLaUJKYm5admEyVnpJR0VnYldWMGFHOWtJR2x1SUdFZ1puVjBkWEpsSUhSMWNtNHVYRzRnS2lCQWNHRnlZVzBnYjJKcVpXTjBJQ0FnSUhCeWIyMXBjMlVnYjNJZ2FXMXRaV1JwWVhSbElISmxabVZ5Wlc1alpTQm1iM0lnZEdGeVoyVjBJRzlpYW1WamRGeHVJQ29nUUhCaGNtRnRJRzVoYldVZ0lDQWdJQ0J1WVcxbElHOW1JRzFsZEdodlpDQjBieUJwYm5admEyVmNiaUFxSUVCd1lYSmhiU0F1TGk1aGNtZHpJQ0FnWVhKeVlYa2diMllnYVc1MmIyTmhkR2x2YmlCaGNtZDFiV1Z1ZEhOY2JpQXFJRUJ5WlhSMWNtNGdjSEp2YldselpTQm1iM0lnZEdobElISmxkSFZ5YmlCMllXeDFaVnh1SUNvdlhHNVJMbk5sYm1RZ1BTQXZMeUJZV0ZnZ1RXRnlheUJOYVd4c1pYSW5jeUJ3Y205d2IzTmxaQ0J3WVhKc1lXNWpaVnh1VVM1dFkyRnNiQ0E5SUM4dklGaFlXQ0JCY3lCd2NtOXdiM05sWkNCaWVTQmNJbEpsWkhOaGJtUnliMXdpWEc1UkxtbHVkbTlyWlNBOUlHWjFibU4wYVc5dUlDaHZZbXBsWTNRc0lHNWhiV1VnTHlvdUxpNWhjbWR6S2k4cElIdGNiaUFnSUNCeVpYUjFjbTRnVVNodlltcGxZM1FwTG1ScGMzQmhkR05vS0Z3aWNHOXpkRndpTENCYmJtRnRaU3dnWVhKeVlYbGZjMnhwWTJVb1lYSm5kVzFsYm5SekxDQXlLVjBwTzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1YzJWdVpDQTlJQzh2SUZoWVdDQk5ZWEpySUUxcGJHeGxjaWR6SUhCeWIzQnZjMlZrSUhCaGNteGhibU5sWEc1UWNtOXRhWE5sTG5CeWIzUnZkSGx3WlM1dFkyRnNiQ0E5SUM4dklGaFlXQ0JCY3lCd2NtOXdiM05sWkNCaWVTQmNJbEpsWkhOaGJtUnliMXdpWEc1UWNtOXRhWE5sTG5CeWIzUnZkSGx3WlM1cGJuWnZhMlVnUFNCbWRXNWpkR2x2YmlBb2JtRnRaU0F2S2k0dUxtRnlaM01xTHlrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtUnBjM0JoZEdOb0tGd2ljRzl6ZEZ3aUxDQmJibUZ0WlN3Z1lYSnlZWGxmYzJ4cFkyVW9ZWEpuZFcxbGJuUnpMQ0F4S1YwcE8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCQmNIQnNhV1Z6SUhSb1pTQndjbTl0YVhObFpDQm1kVzVqZEdsdmJpQnBiaUJoSUdaMWRIVnlaU0IwZFhKdUxseHVJQ29nUUhCaGNtRnRJRzlpYW1WamRDQWdJQ0J3Y205dGFYTmxJRzl5SUdsdGJXVmthV0YwWlNCeVpXWmxjbVZ1WTJVZ1ptOXlJSFJoY21kbGRDQm1kVzVqZEdsdmJseHVJQ29nUUhCaGNtRnRJR0Z5WjNNZ0lDQWdJQ0JoY25KaGVTQnZaaUJoY0hCc2FXTmhkR2x2YmlCaGNtZDFiV1Z1ZEhOY2JpQXFMMXh1VVM1bVlYQndiSGtnUFNCbWRXNWpkR2x2YmlBb2IySnFaV04wTENCaGNtZHpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGRW9iMkpxWldOMEtTNWthWE53WVhSamFDaGNJbUZ3Y0d4NVhDSXNJRnQyYjJsa0lEQXNJR0Z5WjNOZEtUdGNibjA3WEc1Y2JsQnliMjFwYzJVdWNISnZkRzkwZVhCbExtWmhjSEJzZVNBOUlHWjFibU4wYVc5dUlDaGhjbWR6S1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVpHbHpjR0YwWTJnb1hDSmhjSEJzZVZ3aUxDQmJkbTlwWkNBd0xDQmhjbWR6WFNrN1hHNTlPMXh1WEc0dktpcGNiaUFxSUVOaGJHeHpJSFJvWlNCd2NtOXRhWE5sWkNCbWRXNWpkR2x2YmlCcGJpQmhJR1oxZEhWeVpTQjBkWEp1TGx4dUlDb2dRSEJoY21GdElHOWlhbVZqZENBZ0lDQndjbTl0YVhObElHOXlJR2x0YldWa2FXRjBaU0J5WldabGNtVnVZMlVnWm05eUlIUmhjbWRsZENCbWRXNWpkR2x2Ymx4dUlDb2dRSEJoY21GdElDNHVMbUZ5WjNNZ0lDQmhjbkpoZVNCdlppQmhjSEJzYVdOaGRHbHZiaUJoY21kMWJXVnVkSE5jYmlBcUwxeHVVVnRjSW5SeWVWd2lYU0E5WEc1UkxtWmpZV3hzSUQwZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZENBdktpQXVMaTVoY21kektpOHBJSHRjYmlBZ0lDQnlaWFIxY200Z1VTaHZZbXBsWTNRcExtUnBjM0JoZEdOb0tGd2lZWEJ3YkhsY0lpd2dXM1p2YVdRZ01Dd2dZWEp5WVhsZmMyeHBZMlVvWVhKbmRXMWxiblJ6TENBeEtWMHBPMXh1ZlR0Y2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVabU5oYkd3Z1BTQm1kVzVqZEdsdmJpQW9MeW91TGk1aGNtZHpLaThwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1a2FYTndZWFJqYUNoY0ltRndjR3g1WENJc0lGdDJiMmxrSURBc0lHRnljbUY1WDNOc2FXTmxLR0Z5WjNWdFpXNTBjeWxkS1R0Y2JuMDdYRzVjYmk4cUtseHVJQ29nUW1sdVpITWdkR2hsSUhCeWIyMXBjMlZrSUdaMWJtTjBhVzl1TENCMGNtRnVjMlp2Y20xcGJtY2djbVYwZFhKdUlIWmhiSFZsY3lCcGJuUnZJR0VnWm5Wc1ptbHNiR1ZrWEc0Z0tpQndjbTl0YVhObElHRnVaQ0IwYUhKdmQyNGdaWEp5YjNKeklHbHVkRzhnWVNCeVpXcGxZM1JsWkNCdmJtVXVYRzRnS2lCQWNHRnlZVzBnYjJKcVpXTjBJQ0FnSUhCeWIyMXBjMlVnYjNJZ2FXMXRaV1JwWVhSbElISmxabVZ5Wlc1alpTQm1iM0lnZEdGeVoyVjBJR1oxYm1OMGFXOXVYRzRnS2lCQWNHRnlZVzBnTGk0dVlYSm5jeUFnSUdGeWNtRjVJRzltSUdGd2NHeHBZMkYwYVc5dUlHRnlaM1Z0Wlc1MGMxeHVJQ292WEc1UkxtWmlhVzVrSUQwZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZENBdktpNHVMbUZ5WjNNcUx5a2dlMXh1SUNBZ0lIWmhjaUJ3Y205dGFYTmxJRDBnVVNodlltcGxZM1FwTzF4dUlDQWdJSFpoY2lCaGNtZHpJRDBnWVhKeVlYbGZjMnhwWTJVb1lYSm5kVzFsYm5SekxDQXhLVHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0Z1ptSnZkVzVrS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISnZiV2x6WlM1a2FYTndZWFJqYUNoY0ltRndjR3g1WENJc0lGdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXNYRzRnSUNBZ0lDQWdJQ0FnSUNCaGNtZHpMbU52Ym1OaGRDaGhjbkpoZVY5emJHbGpaU2hoY21kMWJXVnVkSE1wS1Z4dUlDQWdJQ0FnSUNCZEtUdGNiaUFnSUNCOU8xeHVmVHRjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG1aaWFXNWtJRDBnWm5WdVkzUnBiMjRnS0M4cUxpNHVZWEpuY3lvdktTQjdYRzRnSUNBZ2RtRnlJSEJ5YjIxcGMyVWdQU0IwYUdsek8xeHVJQ0FnSUhaaGNpQmhjbWR6SUQwZ1lYSnlZWGxmYzJ4cFkyVW9ZWEpuZFcxbGJuUnpLVHRjYmlBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0Z1ptSnZkVzVrS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISnZiV2x6WlM1a2FYTndZWFJqYUNoY0ltRndjR3g1WENJc0lGdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXNYRzRnSUNBZ0lDQWdJQ0FnSUNCaGNtZHpMbU52Ym1OaGRDaGhjbkpoZVY5emJHbGpaU2hoY21kMWJXVnVkSE1wS1Z4dUlDQWdJQ0FnSUNCZEtUdGNiaUFnSUNCOU8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCU1pYRjFaWE4wY3lCMGFHVWdibUZ0WlhNZ2IyWWdkR2hsSUc5M2JtVmtJSEJ5YjNCbGNuUnBaWE1nYjJZZ1lTQndjbTl0YVhObFpGeHVJQ29nYjJKcVpXTjBJR2x1SUdFZ1puVjBkWEpsSUhSMWNtNHVYRzRnS2lCQWNHRnlZVzBnYjJKcVpXTjBJQ0FnSUhCeWIyMXBjMlVnYjNJZ2FXMXRaV1JwWVhSbElISmxabVZ5Wlc1alpTQm1iM0lnZEdGeVoyVjBJRzlpYW1WamRGeHVJQ29nUUhKbGRIVnliaUJ3Y205dGFYTmxJR1p2Y2lCMGFHVWdhMlY1Y3lCdlppQjBhR1VnWlhabGJuUjFZV3hzZVNCelpYUjBiR1ZrSUc5aWFtVmpkRnh1SUNvdlhHNVJMbXRsZVhNZ1BTQm1kVzVqZEdsdmJpQW9iMkpxWldOMEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZFb2IySnFaV04wS1M1a2FYTndZWFJqYUNoY0ltdGxlWE5jSWl3Z1cxMHBPMXh1ZlR0Y2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVhMlY1Y3lBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVrYVhOd1lYUmphQ2hjSW10bGVYTmNJaXdnVzEwcE8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCVWRYSnVjeUJoYmlCaGNuSmhlU0J2WmlCd2NtOXRhWE5sY3lCcGJuUnZJR0VnY0hKdmJXbHpaU0JtYjNJZ1lXNGdZWEp5WVhrdUlDQkpaaUJoYm5rZ2IyWmNiaUFxSUhSb1pTQndjbTl0YVhObGN5Qm5aWFJ6SUhKbGFtVmpkR1ZrTENCMGFHVWdkMmh2YkdVZ1lYSnlZWGtnYVhNZ2NtVnFaV04wWldRZ2FXMXRaV1JwWVhSbGJIa3VYRzRnS2lCQWNHRnlZVzBnZTBGeWNtRjVLbjBnWVc0Z1lYSnlZWGtnS0c5eUlIQnliMjFwYzJVZ1ptOXlJR0Z1SUdGeWNtRjVLU0J2WmlCMllXeDFaWE1nS0c5eVhHNGdLaUJ3Y205dGFYTmxjeUJtYjNJZ2RtRnNkV1Z6S1Z4dUlDb2dRSEpsZEhWeWJuTWdZU0J3Y205dGFYTmxJR1p2Y2lCaGJpQmhjbkpoZVNCdlppQjBhR1VnWTI5eWNtVnpjRzl1WkdsdVp5QjJZV3gxWlhOY2JpQXFMMXh1THk4Z1Fua2dUV0Z5YXlCTmFXeHNaWEpjYmk4dklHaDBkSEE2THk5M2FXdHBMbVZqYldGelkzSnBjSFF1YjNKbkwyUnZhM1V1Y0dod1AybGtQWE4wY21GM2JXRnVPbU52Ym1OMWNuSmxibU41Sm5KbGRqMHhNekE0TnpjMk5USXhJMkZzYkdaMWJHWnBiR3hsWkZ4dVVTNWhiR3dnUFNCaGJHdzdYRzVtZFc1amRHbHZiaUJoYkd3b2NISnZiV2x6WlhNcElIdGNiaUFnSUNCeVpYUjFjbTRnZDJobGJpaHdjbTl0YVhObGN5d2dablZ1WTNScGIyNGdLSEJ5YjIxcGMyVnpLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQndaVzVrYVc1blEyOTFiblFnUFNBd08xeHVJQ0FnSUNBZ0lDQjJZWElnWkdWbVpYSnlaV1FnUFNCa1pXWmxjaWdwTzF4dUlDQWdJQ0FnSUNCaGNuSmhlVjl5WldSMVkyVW9jSEp2YldselpYTXNJR1oxYm1OMGFXOXVJQ2gxYm1SbFptbHVaV1FzSUhCeWIyMXBjMlVzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYzI1aGNITm9iM1E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVhOUWNtOXRhWE5sS0hCeWIyMXBjMlVwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tITnVZWEJ6YUc5MElEMGdjSEp2YldselpTNXBibk53WldOMEtDa3BMbk4wWVhSbElEMDlQU0JjSW1aMWJHWnBiR3hsWkZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtOXRhWE5sYzF0cGJtUmxlRjBnUFNCemJtRndjMmh2ZEM1MllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0t5dHdaVzVrYVc1blEyOTFiblE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDJobGJpaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKdmJXbHpaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z0tIWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtOXRhWE5sYzF0cGJtUmxlRjBnUFNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNndExYQmxibVJwYm1kRGIzVnVkQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptVnljbVZrTG5KbGMyOXNkbVVvY0hKdmJXbHpaWE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXWmxjbkpsWkM1eVpXcGxZM1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlDaHdjbTluY21WemN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZtWlhKeVpXUXVibTkwYVdaNUtIc2dhVzVrWlhnNklHbHVaR1Y0TENCMllXeDFaVG9nY0hKdlozSmxjM01nZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5TENCMmIybGtJREFwTzF4dUlDQWdJQ0FnSUNCcFppQW9jR1Z1WkdsdVowTnZkVzUwSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV1psY25KbFpDNXlaWE52YkhabEtIQnliMjFwYzJWektUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR1ZtWlhKeVpXUXVjSEp2YldselpUdGNiaUFnSUNCOUtUdGNibjFjYmx4dVVISnZiV2x6WlM1d2NtOTBiM1I1Y0dVdVlXeHNJRDBnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJoYkd3b2RHaHBjeWs3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdkR2hsSUdacGNuTjBJSEpsYzI5c2RtVmtJSEJ5YjIxcGMyVWdiMllnWVc0Z1lYSnlZWGt1SUZCeWFXOXlJSEpsYW1WamRHVmtJSEJ5YjIxcGMyVnpJR0Z5WlZ4dUlDb2dhV2R1YjNKbFpDNGdJRkpsYW1WamRITWdiMjVzZVNCcFppQmhiR3dnY0hKdmJXbHpaWE1nWVhKbElISmxhbVZqZEdWa0xseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVTcDlJR0Z1SUdGeWNtRjVJR052Ym5SaGFXNXBibWNnZG1Gc2RXVnpJRzl5SUhCeWIyMXBjMlZ6SUdadmNpQjJZV3gxWlhOY2JpQXFJRUJ5WlhSMWNtNXpJR0VnY0hKdmJXbHpaU0JtZFd4bWFXeHNaV1FnZDJsMGFDQjBhR1VnZG1Gc2RXVWdiMllnZEdobElHWnBjbk4wSUhKbGMyOXNkbVZrSUhCeWIyMXBjMlVzWEc0Z0tpQnZjaUJoSUhKbGFtVmpkR1ZrSUhCeWIyMXBjMlVnYVdZZ1lXeHNJSEJ5YjIxcGMyVnpJR0Z5WlNCeVpXcGxZM1JsWkM1Y2JpQXFMMXh1VVM1aGJua2dQU0JoYm5rN1hHNWNibVoxYm1OMGFXOXVJR0Z1ZVNod2NtOXRhWE5sY3lrZ2UxeHVJQ0FnSUdsbUlDaHdjbTl0YVhObGN5NXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZFdWNtVnpiMngyWlNncE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhaaGNpQmtaV1psY25KbFpDQTlJRkV1WkdWbVpYSW9LVHRjYmlBZ0lDQjJZWElnY0dWdVpHbHVaME52ZFc1MElEMGdNRHRjYmlBZ0lDQmhjbkpoZVY5eVpXUjFZMlVvY0hKdmJXbHpaWE1zSUdaMWJtTjBhVzl1SUNod2NtVjJMQ0JqZFhKeVpXNTBMQ0JwYm1SbGVDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NISnZiV2x6WlNBOUlIQnliMjFwYzJWelcybHVaR1Y0WFR0Y2JseHVJQ0FnSUNBZ0lDQndaVzVrYVc1blEyOTFiblFyS3p0Y2JseHVJQ0FnSUNBZ0lDQjNhR1Z1S0hCeWIyMXBjMlVzSUc5dVJuVnNabWxzYkdWa0xDQnZibEpsYW1WamRHVmtMQ0J2YmxCeWIyZHlaWE56S1R0Y2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z2IyNUdkV3htYVd4c1pXUW9jbVZ6ZFd4MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXWmxjbkpsWkM1eVpYTnZiSFpsS0hKbGMzVnNkQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1puVnVZM1JwYjI0Z2IyNVNaV3BsWTNSbFpDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmxibVJwYm1kRGIzVnVkQzB0TzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hCbGJtUnBibWREYjNWdWRDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxabVZ5Y21Wa0xuSmxhbVZqZENodVpYY2dSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpUTJGdUozUWdaMlYwSUdaMWJHWnBiR3h0Wlc1MElIWmhiSFZsSUdaeWIyMGdZVzU1SUhCeWIyMXBjMlVzSUdGc2JDQmNJaUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGd2ljSEp2YldselpYTWdkMlZ5WlNCeVpXcGxZM1JsWkM1Y0lseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJRzl1VUhKdlozSmxjM01vY0hKdlozSmxjM01wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JsWm1WeWNtVmtMbTV2ZEdsbWVTaDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnNklHbHVaR1Y0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUJ3Y205bmNtVnpjMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlMQ0IxYm1SbFptbHVaV1FwTzF4dVhHNGdJQ0FnY21WMGRYSnVJR1JsWm1WeWNtVmtMbkJ5YjIxcGMyVTdYRzU5WEc1Y2JsQnliMjFwYzJVdWNISnZkRzkwZVhCbExtRnVlU0E5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnWVc1NUtIUm9hWE1wTzF4dWZUdGNibHh1THlvcVhHNGdLaUJYWVdsMGN5Qm1iM0lnWVd4c0lIQnliMjFwYzJWeklIUnZJR0psSUhObGRIUnNaV1FzSUdWcGRHaGxjaUJtZFd4bWFXeHNaV1FnYjNKY2JpQXFJSEpsYW1WamRHVmtMaUFnVkdocGN5QnBjeUJrYVhOMGFXNWpkQ0JtY205dElHQmhiR3hnSUhOcGJtTmxJSFJvWVhRZ2QyOTFiR1FnYzNSdmNGeHVJQ29nZDJGcGRHbHVaeUJoZENCMGFHVWdabWx5YzNRZ2NtVnFaV04wYVc5dUxpQWdWR2hsSUhCeWIyMXBjMlVnY21WMGRYSnVaV1FnWW5sY2JpQXFJR0JoYkd4U1pYTnZiSFpsWkdBZ2QybHNiQ0J1WlhabGNpQmlaU0J5WldwbFkzUmxaQzVjYmlBcUlFQndZWEpoYlNCd2NtOXRhWE5sY3lCaElIQnliMjFwYzJVZ1ptOXlJR0Z1SUdGeWNtRjVJQ2h2Y2lCaGJpQmhjbkpoZVNrZ2IyWWdjSEp2YldselpYTmNiaUFxSUNodmNpQjJZV3gxWlhNcFhHNGdLaUJBY21WMGRYSnVJR0VnY0hKdmJXbHpaU0JtYjNJZ1lXNGdZWEp5WVhrZ2IyWWdjSEp2YldselpYTmNiaUFxTDF4dVVTNWhiR3hTWlhOdmJIWmxaQ0E5SUdSbGNISmxZMkYwWlNoaGJHeFNaWE52YkhabFpDd2dYQ0poYkd4U1pYTnZiSFpsWkZ3aUxDQmNJbUZzYkZObGRIUnNaV1JjSWlrN1hHNW1kVzVqZEdsdmJpQmhiR3hTWlhOdmJIWmxaQ2h3Y205dGFYTmxjeWtnZTF4dUlDQWdJSEpsZEhWeWJpQjNhR1Z1S0hCeWIyMXBjMlZ6TENCbWRXNWpkR2x2YmlBb2NISnZiV2x6WlhNcElIdGNiaUFnSUNBZ0lDQWdjSEp2YldselpYTWdQU0JoY25KaGVWOXRZWEFvY0hKdmJXbHpaWE1zSUZFcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2QyaGxiaWhoYkd3b1lYSnlZWGxmYldGd0tIQnliMjFwYzJWekxDQm1kVzVqZEdsdmJpQW9jSEp2YldselpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhkb1pXNG9jSEp2YldselpTd2dibTl2Y0N3Z2JtOXZjQ2s3WEc0Z0lDQWdJQ0FnSUgwcEtTd2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIQnliMjFwYzJWek8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlLVHRjYm4xY2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVZV3hzVW1WemIyeDJaV1FnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUdGc2JGSmxjMjlzZG1Wa0tIUm9hWE1wTzF4dWZUdGNibHh1THlvcVhHNGdLaUJBYzJWbElGQnliMjFwYzJVallXeHNVMlYwZEd4bFpGeHVJQ292WEc1UkxtRnNiRk5sZEhSc1pXUWdQU0JoYkd4VFpYUjBiR1ZrTzF4dVpuVnVZM1JwYjI0Z1lXeHNVMlYwZEd4bFpDaHdjbTl0YVhObGN5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCUktIQnliMjFwYzJWektTNWhiR3hUWlhSMGJHVmtLQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dWSFZ5Ym5NZ1lXNGdZWEp5WVhrZ2IyWWdjSEp2YldselpYTWdhVzUwYnlCaElIQnliMjFwYzJVZ1ptOXlJR0Z1SUdGeWNtRjVJRzltSUhSb1pXbHlJSE4wWVhSbGN5QW9ZWE5jYmlBcUlISmxkSFZ5Ym1Wa0lHSjVJR0JwYm5Od1pXTjBZQ2tnZDJobGJpQjBhR1Y1SUdoaGRtVWdZV3hzSUhObGRIUnNaV1F1WEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1VzBGdWVTcGRmU0IyWVd4MVpYTWdZVzRnWVhKeVlYa2dLRzl5SUhCeWIyMXBjMlVnWm05eUlHRnVJR0Z5Y21GNUtTQnZaaUIyWVd4MVpYTWdLRzl5WEc0Z0tpQndjbTl0YVhObGN5Qm1iM0lnZG1Gc2RXVnpLVnh1SUNvZ1FISmxkSFZ5Ym5NZ2UwRnljbUY1VzFOMFlYUmxYWDBnWVc0Z1lYSnlZWGtnYjJZZ2MzUmhkR1Z6SUdadmNpQjBhR1VnY21WemNHVmpkR2wyWlNCMllXeDFaWE11WEc0Z0tpOWNibEJ5YjIxcGMyVXVjSEp2ZEc5MGVYQmxMbUZzYkZObGRIUnNaV1FnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkR2hsYmlobWRXNWpkR2x2YmlBb2NISnZiV2x6WlhNcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnNiQ2hoY25KaGVWOXRZWEFvY0hKdmJXbHpaWE1zSUdaMWJtTjBhVzl1SUNod2NtOXRhWE5sS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205dGFYTmxJRDBnVVNod2NtOXRhWE5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJSEpsWjJGeVpHeGxjM01vS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhCeWIyMXBjMlV1YVc1emNHVmpkQ2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhCeWIyMXBjMlV1ZEdobGJpaHlaV2RoY21Sc1pYTnpMQ0J5WldkaGNtUnNaWE56S1R0Y2JpQWdJQ0FnSUNBZ2ZTa3BPMXh1SUNBZ0lIMHBPMXh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkRZWEIwZFhKbGN5QjBhR1VnWm1GcGJIVnlaU0J2WmlCaElIQnliMjFwYzJVc0lHZHBkbWx1WnlCaGJpQnZjRzl5ZEhWdWFYUjVJSFJ2SUhKbFkyOTJaWEpjYmlBcUlIZHBkR2dnWVNCallXeHNZbUZqYXk0Z0lFbG1JSFJvWlNCbmFYWmxiaUJ3Y205dGFYTmxJR2x6SUdaMWJHWnBiR3hsWkN3Z2RHaGxJSEpsZEhWeWJtVmtYRzRnS2lCd2NtOXRhWE5sSUdseklHWjFiR1pwYkd4bFpDNWNiaUFxSUVCd1lYSmhiU0I3UVc1NUtuMGdjSEp2YldselpTQm1iM0lnYzI5dFpYUm9hVzVuWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QjBieUJtZFd4bWFXeHNJSFJvWlNCeVpYUjFjbTVsWkNCd2NtOXRhWE5sSUdsbUlIUm9aVnh1SUNvZ1oybDJaVzRnY0hKdmJXbHpaU0JwY3lCeVpXcGxZM1JsWkZ4dUlDb2dRSEpsZEhWeWJuTWdZU0J3Y205dGFYTmxJR1p2Y2lCMGFHVWdjbVYwZFhKdUlIWmhiSFZsSUc5bUlIUm9aU0JqWVd4c1ltRmphMXh1SUNvdlhHNVJMbVpoYVd3Z1BTQXZMeUJZV0ZnZ2JHVm5ZV041WEc1Ulcxd2lZMkYwWTJoY0lsMGdQU0JtZFc1amRHbHZiaUFvYjJKcVpXTjBMQ0J5WldwbFkzUmxaQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlJLRzlpYW1WamRDa3VkR2hsYmloMmIybGtJREFzSUhKbGFtVmpkR1ZrS1R0Y2JuMDdYRzVjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG1aaGFXd2dQU0F2THlCWVdGZ2diR1ZuWVdONVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pWdGNJbU5oZEdOb1hDSmRJRDBnWm5WdVkzUnBiMjRnS0hKbGFtVmpkR1ZrS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRHaGxiaWgyYjJsa0lEQXNJSEpsYW1WamRHVmtLVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRWFIwWVdOb1pYTWdZU0JzYVhOMFpXNWxjaUIwYUdGMElHTmhiaUJ5WlhOd2IyNWtJSFJ2SUhCeWIyZHlaWE56SUc1dmRHbG1hV05oZEdsdmJuTWdabkp2YlNCaFhHNGdLaUJ3Y205dGFYTmxKM01nYjNKcFoybHVZWFJwYm1jZ1pHVm1aWEp5WldRdUlGUm9hWE1nYkdsemRHVnVaWElnY21WalpXbDJaWE1nZEdobElHVjRZV04wSUdGeVozVnRaVzUwYzF4dUlDb2djR0Z6YzJWa0lIUnZJR0JnWkdWbVpYSnlaV1F1Ym05MGFXWjVZR0F1WEc0Z0tpQkFjR0Z5WVcwZ2UwRnVlU3A5SUhCeWIyMXBjMlVnWm05eUlITnZiV1YwYUdsdVoxeHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWTJGc2JHSmhZMnNnZEc4Z2NtVmpaV2wyWlNCaGJua2djSEp2WjNKbGMzTWdibTkwYVdacFkyRjBhVzl1YzF4dUlDb2dRSEpsZEhWeWJuTWdkR2hsSUdkcGRtVnVJSEJ5YjIxcGMyVXNJSFZ1WTJoaGJtZGxaRnh1SUNvdlhHNVJMbkJ5YjJkeVpYTnpJRDBnY0hKdlozSmxjM003WEc1bWRXNWpkR2x2YmlCd2NtOW5jbVZ6Y3lodlltcGxZM1FzSUhCeWIyZHlaWE56WldRcElIdGNiaUFnSUNCeVpYUjFjbTRnVVNodlltcGxZM1FwTG5Sb1pXNG9kbTlwWkNBd0xDQjJiMmxrSURBc0lIQnliMmR5WlhOelpXUXBPMXh1ZlZ4dVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNXdjbTluY21WemN5QTlJR1oxYm1OMGFXOXVJQ2h3Y205bmNtVnpjMlZrS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRHaGxiaWgyYjJsa0lEQXNJSFp2YVdRZ01Dd2djSEp2WjNKbGMzTmxaQ2s3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRkJ5YjNacFpHVnpJR0Z1SUc5d2NHOXlkSFZ1YVhSNUlIUnZJRzlpYzJWeWRtVWdkR2hsSUhObGRIUnNhVzVuSUc5bUlHRWdjSEp2YldselpTeGNiaUFxSUhKbFoyRnlaR3hsYzNNZ2IyWWdkMmhsZEdobGNpQjBhR1VnY0hKdmJXbHpaU0JwY3lCbWRXeG1hV3hzWldRZ2IzSWdjbVZxWldOMFpXUXVJQ0JHYjNKM1lYSmtjMXh1SUNvZ2RHaGxJSEpsYzI5c2RYUnBiMjRnZEc4Z2RHaGxJSEpsZEhWeWJtVmtJSEJ5YjIxcGMyVWdkMmhsYmlCMGFHVWdZMkZzYkdKaFkyc2dhWE1nWkc5dVpTNWNiaUFxSUZSb1pTQmpZV3hzWW1GamF5QmpZVzRnY21WMGRYSnVJR0VnY0hKdmJXbHpaU0IwYnlCa1pXWmxjaUJqYjIxd2JHVjBhVzl1TGx4dUlDb2dRSEJoY21GdElIdEJibmtxZlNCd2NtOXRhWE5sWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmpZV3hzWW1GamF5QjBieUJ2WW5ObGNuWmxJSFJvWlNCeVpYTnZiSFYwYVc5dUlHOW1JSFJvWlNCbmFYWmxibHh1SUNvZ2NISnZiV2x6WlN3Z2RHRnJaWE1nYm04Z1lYSm5kVzFsYm5SekxseHVJQ29nUUhKbGRIVnlibk1nWVNCd2NtOXRhWE5sSUdadmNpQjBhR1VnY21WemIyeDFkR2x2YmlCdlppQjBhR1VnWjJsMlpXNGdjSEp2YldselpTQjNhR1Z1WEc0Z0tpQmdZR1pwYm1CZ0lHbHpJR1J2Ym1VdVhHNGdLaTljYmxFdVptbHVJRDBnTHk4Z1dGaFlJR3hsWjJGamVWeHVVVnRjSW1acGJtRnNiSGxjSWwwZ1BTQm1kVzVqZEdsdmJpQW9iMkpxWldOMExDQmpZV3hzWW1GamF5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCUktHOWlhbVZqZENsYlhDSm1hVzVoYkd4NVhDSmRLR05oYkd4aVlXTnJLVHRjYm4wN1hHNWNibEJ5YjIxcGMyVXVjSEp2ZEc5MGVYQmxMbVpwYmlBOUlDOHZJRmhZV0NCc1pXZGhZM2xjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsVzF3aVptbHVZV3hzZVZ3aVhTQTlJR1oxYm1OMGFXOXVJQ2hqWVd4c1ltRmpheWtnZTF4dUlDQWdJR05oYkd4aVlXTnJJRDBnVVNoallXeHNZbUZqYXlrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWRHaGxiaWhtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR05oYkd4aVlXTnJMbVpqWVd4c0tDa3VkR2hsYmlobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJSDBzSUdaMWJtTjBhVzl1SUNoeVpXRnpiMjRwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWRTlFVHlCaGRIUmxiWEIwSUhSdklISmxZM2xqYkdVZ2RHaGxJSEpsYW1WamRHbHZiaUIzYVhSb0lGd2lkR2hwYzF3aUxseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyRnNiR0poWTJzdVptTmhiR3dvS1M1MGFHVnVLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lISmxZWE52Ymp0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlGUmxjbTFwYm1GMFpYTWdZU0JqYUdGcGJpQnZaaUJ3Y205dGFYTmxjeXdnWm05eVkybHVaeUJ5WldwbFkzUnBiMjV6SUhSdklHSmxYRzRnS2lCMGFISnZkMjRnWVhNZ1pYaGpaWEIwYVc5dWN5NWNiaUFxSUVCd1lYSmhiU0I3UVc1NUtuMGdjSEp2YldselpTQmhkQ0IwYUdVZ1pXNWtJRzltSUdFZ1kyaGhhVzRnYjJZZ2NISnZiV2x6WlhOY2JpQXFJRUJ5WlhSMWNtNXpJRzV2ZEdocGJtZGNiaUFxTDF4dVVTNWtiMjVsSUQwZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZEN3Z1puVnNabWxzYkdWa0xDQnlaV3BsWTNSbFpDd2djSEp2WjNKbGMzTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1VTaHZZbXBsWTNRcExtUnZibVVvWm5Wc1ptbHNiR1ZrTENCeVpXcGxZM1JsWkN3Z2NISnZaM0psYzNNcE8xeHVmVHRjYmx4dVVISnZiV2x6WlM1d2NtOTBiM1I1Y0dVdVpHOXVaU0E5SUdaMWJtTjBhVzl1SUNobWRXeG1hV3hzWldRc0lISmxhbVZqZEdWa0xDQndjbTluY21WemN5a2dlMXh1SUNBZ0lIWmhjaUJ2YmxWdWFHRnVaR3hsWkVWeWNtOXlJRDBnWm5WdVkzUnBiMjRnS0dWeWNtOXlLU0I3WEc0Z0lDQWdJQ0FnSUM4dklHWnZjbmRoY21RZ2RHOGdZU0JtZFhSMWNtVWdkSFZ5YmlCemJ5QjBhR0YwSUdCZ2QyaGxibUJnWEc0Z0lDQWdJQ0FnSUM4dklHUnZaWE1nYm05MElHTmhkR05vSUdsMElHRnVaQ0IwZFhKdUlHbDBJR2x1ZEc4Z1lTQnlaV3BsWTNScGIyNHVYRzRnSUNBZ0lDQWdJRkV1Ym1WNGRGUnBZMnNvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYldGclpWTjBZV05yVkhKaFkyVk1iMjVuS0dWeWNtOXlMQ0J3Y205dGFYTmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hSTG05dVpYSnliM0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCUkxtOXVaWEp5YjNJb1pYSnliM0lwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCbGNuSnZjanRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVHRjYmx4dUlDQWdJQzh2SUVGMmIybGtJSFZ1Ym1WalpYTnpZWEo1SUdCdVpYaDBWR2xqYTJCcGJtY2dkbWxoSUdGdUlIVnVibVZqWlhOellYSjVJR0IzYUdWdVlDNWNiaUFnSUNCMllYSWdjSEp2YldselpTQTlJR1oxYkdacGJHeGxaQ0I4ZkNCeVpXcGxZM1JsWkNCOGZDQndjbTluY21WemN5QS9YRzRnSUNBZ0lDQWdJSFJvYVhNdWRHaGxiaWhtZFd4bWFXeHNaV1FzSUhKbGFtVmpkR1ZrTENCd2NtOW5jbVZ6Y3lrZ09seHVJQ0FnSUNBZ0lDQjBhR2x6TzF4dVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCd2NtOWpaWE56SUQwOVBTQmNJbTlpYW1WamRGd2lJQ1ltSUhCeWIyTmxjM01nSmlZZ2NISnZZMlZ6Y3k1a2IyMWhhVzRwSUh0Y2JpQWdJQ0FnSUNBZ2IyNVZibWhoYm1Sc1pXUkZjbkp2Y2lBOUlIQnliMk5sYzNNdVpHOXRZV2x1TG1KcGJtUW9iMjVWYm1oaGJtUnNaV1JGY25KdmNpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NISnZiV2x6WlM1MGFHVnVLSFp2YVdRZ01Dd2diMjVWYm1oaGJtUnNaV1JGY25KdmNpazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFTmhkWE5sY3lCaElIQnliMjFwYzJVZ2RHOGdZbVVnY21WcVpXTjBaV1FnYVdZZ2FYUWdaRzlsY3lCdWIzUWdaMlYwSUdaMWJHWnBiR3hsWkNCaVpXWnZjbVZjYmlBcUlITnZiV1VnYldsc2JHbHpaV052Ym1SeklIUnBiV1VnYjNWMExseHVJQ29nUUhCaGNtRnRJSHRCYm5rcWZTQndjbTl0YVhObFhHNGdLaUJBY0dGeVlXMGdlMDUxYldKbGNuMGdiV2xzYkdselpXTnZibVJ6SUhScGJXVnZkWFJjYmlBcUlFQndZWEpoYlNCN1FXNTVLbjBnWTNWemRHOXRJR1Z5Y205eUlHMWxjM05oWjJVZ2IzSWdSWEp5YjNJZ2IySnFaV04wSUNodmNIUnBiMjVoYkNsY2JpQXFJRUJ5WlhSMWNtNXpJR0VnY0hKdmJXbHpaU0JtYjNJZ2RHaGxJSEpsYzI5c2RYUnBiMjRnYjJZZ2RHaGxJR2RwZG1WdUlIQnliMjFwYzJVZ2FXWWdhWFFnYVhOY2JpQXFJR1oxYkdacGJHeGxaQ0JpWldadmNtVWdkR2hsSUhScGJXVnZkWFFzSUc5MGFHVnlkMmx6WlNCeVpXcGxZM1JsWkM1Y2JpQXFMMXh1VVM1MGFXMWxiM1YwSUQwZ1puVnVZM1JwYjI0Z0tHOWlhbVZqZEN3Z2JYTXNJR1Z5Y205eUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZFb2IySnFaV04wS1M1MGFXMWxiM1YwS0cxekxDQmxjbkp2Y2lrN1hHNTlPMXh1WEc1UWNtOXRhWE5sTG5CeWIzUnZkSGx3WlM1MGFXMWxiM1YwSUQwZ1puVnVZM1JwYjI0Z0tHMXpMQ0JsY25KdmNpa2dlMXh1SUNBZ0lIWmhjaUJrWldabGNuSmxaQ0E5SUdSbFptVnlLQ2s3WEc0Z0lDQWdkbUZ5SUhScGJXVnZkWFJKWkNBOUlITmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9JV1Z5Y205eUlIeDhJRndpYzNSeWFXNW5YQ0lnUFQwOUlIUjVjR1Z2WmlCbGNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNJZ1BTQnVaWGNnUlhKeWIzSW9aWEp5YjNJZ2ZId2dYQ0pVYVcxbFpDQnZkWFFnWVdaMFpYSWdYQ0lnS3lCdGN5QXJJRndpSUcxelhDSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0l1WTI5a1pTQTlJRndpUlZSSlRVVkVUMVZVWENJN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaR1ZtWlhKeVpXUXVjbVZxWldOMEtHVnljbTl5S1R0Y2JpQWdJQ0I5TENCdGN5azdYRzVjYmlBZ0lDQjBhR2x6TG5Sb1pXNG9ablZ1WTNScGIyNGdLSFpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJR05zWldGeVZHbHRaVzkxZENoMGFXMWxiM1YwU1dRcE8xeHVJQ0FnSUNBZ0lDQmtaV1psY25KbFpDNXlaWE52YkhabEtIWmhiSFZsS1R0Y2JpQWdJQ0I5TENCbWRXNWpkR2x2YmlBb1pYaGpaWEIwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJR05zWldGeVZHbHRaVzkxZENoMGFXMWxiM1YwU1dRcE8xeHVJQ0FnSUNBZ0lDQmtaV1psY25KbFpDNXlaV3BsWTNRb1pYaGpaWEIwYVc5dUtUdGNiaUFnSUNCOUxDQmtaV1psY25KbFpDNXViM1JwWm5rcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdSbFptVnljbVZrTG5CeWIyMXBjMlU3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdZU0J3Y205dGFYTmxJR1p2Y2lCMGFHVWdaMmwyWlc0Z2RtRnNkV1VnS0c5eUlIQnliMjFwYzJWa0lIWmhiSFZsS1N3Z2MyOXRaVnh1SUNvZ2JXbHNiR2x6WldOdmJtUnpJR0ZtZEdWeUlHbDBJSEpsYzI5c2RtVmtMaUJRWVhOelpYTWdjbVZxWldOMGFXOXVjeUJwYlcxbFpHbGhkR1ZzZVM1Y2JpQXFJRUJ3WVhKaGJTQjdRVzU1S24wZ2NISnZiV2x6WlZ4dUlDb2dRSEJoY21GdElIdE9kVzFpWlhKOUlHMXBiR3hwYzJWamIyNWtjMXh1SUNvZ1FISmxkSFZ5Ym5NZ1lTQndjbTl0YVhObElHWnZjaUIwYUdVZ2NtVnpiMngxZEdsdmJpQnZaaUIwYUdVZ1oybDJaVzRnY0hKdmJXbHpaU0JoWm5SbGNpQnRhV3hzYVhObFkyOXVaSE5jYmlBcUlIUnBiV1VnYUdGeklHVnNZWEJ6WldRZ2MybHVZMlVnZEdobElISmxjMjlzZFhScGIyNGdiMllnZEdobElHZHBkbVZ1SUhCeWIyMXBjMlV1WEc0Z0tpQkpaaUIwYUdVZ1oybDJaVzRnY0hKdmJXbHpaU0J5WldwbFkzUnpMQ0IwYUdGMElHbHpJSEJoYzNObFpDQnBiVzFsWkdsaGRHVnNlUzVjYmlBcUwxeHVVUzVrWld4aGVTQTlJR1oxYm1OMGFXOXVJQ2h2WW1wbFkzUXNJSFJwYldWdmRYUXBJSHRjYmlBZ0lDQnBaaUFvZEdsdFpXOTFkQ0E5UFQwZ2RtOXBaQ0F3S1NCN1hHNGdJQ0FnSUNBZ0lIUnBiV1Z2ZFhRZ1BTQnZZbXBsWTNRN1hHNGdJQ0FnSUNBZ0lHOWlhbVZqZENBOUlIWnZhV1FnTUR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlGRW9iMkpxWldOMEtTNWtaV3hoZVNoMGFXMWxiM1YwS1R0Y2JuMDdYRzVjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG1SbGJHRjVJRDBnWm5WdVkzUnBiMjRnS0hScGJXVnZkWFFwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1MGFHVnVLR1oxYm1OMGFXOXVJQ2gyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ1pHVm1aWEp5WldRZ1BTQmtaV1psY2lncE8xeHVJQ0FnSUNBZ0lDQnpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JsWm1WeWNtVmtMbkpsYzI5c2RtVW9kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlMQ0IwYVcxbGIzVjBLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JsWm1WeWNtVmtMbkJ5YjIxcGMyVTdYRzRnSUNBZ2ZTazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlGQmhjM05sY3lCaElHTnZiblJwYm5WaGRHbHZiaUIwYnlCaElFNXZaR1VnWm5WdVkzUnBiMjRzSUhkb2FXTm9JR2x6SUdOaGJHeGxaQ0IzYVhSb0lIUm9aU0JuYVhabGJseHVJQ29nWVhKbmRXMWxiblJ6SUhCeWIzWnBaR1ZrSUdGeklHRnVJR0Z5Y21GNUxDQmhibVFnY21WMGRYSnVjeUJoSUhCeWIyMXBjMlV1WEc0Z0tseHVJQ29nSUNBZ0lDQlJMbTVtWVhCd2JIa29SbE11Y21WaFpFWnBiR1VzSUZ0ZlgyWnBiR1Z1WVcxbFhTbGNiaUFxSUNBZ0lDQWdMblJvWlc0b1puVnVZM1JwYjI0Z0tHTnZiblJsYm5RcElIdGNiaUFxSUNBZ0lDQWdmU2xjYmlBcVhHNGdLaTljYmxFdWJtWmhjSEJzZVNBOUlHWjFibU4wYVc5dUlDaGpZV3hzWW1GamF5d2dZWEpuY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJSS0dOaGJHeGlZV05yS1M1dVptRndjR3g1S0dGeVozTXBPMXh1ZlR0Y2JseHVVSEp2YldselpTNXdjbTkwYjNSNWNHVXVibVpoY0hCc2VTQTlJR1oxYm1OMGFXOXVJQ2hoY21kektTQjdYRzRnSUNBZ2RtRnlJR1JsWm1WeWNtVmtJRDBnWkdWbVpYSW9LVHRjYmlBZ0lDQjJZWElnYm05a1pVRnlaM01nUFNCaGNuSmhlVjl6YkdsalpTaGhjbWR6S1R0Y2JpQWdJQ0J1YjJSbFFYSm5jeTV3ZFhOb0tHUmxabVZ5Y21Wa0xtMWhhMlZPYjJSbFVtVnpiMngyWlhJb0tTazdYRzRnSUNBZ2RHaHBjeTVtWVhCd2JIa29ibTlrWlVGeVozTXBMbVpoYVd3b1pHVm1aWEp5WldRdWNtVnFaV04wS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaR1ZtWlhKeVpXUXVjSEp2YldselpUdGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1VHRnpjMlZ6SUdFZ1kyOXVkR2x1ZFdGMGFXOXVJSFJ2SUdFZ1RtOWtaU0JtZFc1amRHbHZiaXdnZDJocFkyZ2dhWE1nWTJGc2JHVmtJSGRwZEdnZ2RHaGxJR2RwZG1WdVhHNGdLaUJoY21kMWJXVnVkSE1nY0hKdmRtbGtaV1FnYVc1a2FYWnBaSFZoYkd4NUxDQmhibVFnY21WMGRYSnVjeUJoSUhCeWIyMXBjMlV1WEc0Z0tpQkFaWGhoYlhCc1pWeHVJQ29nVVM1dVptTmhiR3dvUmxNdWNtVmhaRVpwYkdVc0lGOWZabWxzWlc1aGJXVXBYRzRnS2lBdWRHaGxiaWhtZFc1amRHbHZiaUFvWTI5dWRHVnVkQ2tnZTF4dUlDb2dmU2xjYmlBcVhHNGdLaTljYmxFdWJtWmpZV3hzSUQwZ1puVnVZM1JwYjI0Z0tHTmhiR3hpWVdOcklDOHFMaTR1WVhKbmN5b3ZLU0I3WEc0Z0lDQWdkbUZ5SUdGeVozTWdQU0JoY25KaGVWOXpiR2xqWlNoaGNtZDFiV1Z1ZEhNc0lERXBPMXh1SUNBZ0lISmxkSFZ5YmlCUktHTmhiR3hpWVdOcktTNXVabUZ3Y0d4NUtHRnlaM01wTzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1Ym1aallXeHNJRDBnWm5WdVkzUnBiMjRnS0M4cUxpNHVZWEpuY3lvdktTQjdYRzRnSUNBZ2RtRnlJRzV2WkdWQmNtZHpJRDBnWVhKeVlYbGZjMnhwWTJVb1lYSm5kVzFsYm5SektUdGNiaUFnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lHNXZaR1ZCY21kekxuQjFjMmdvWkdWbVpYSnlaV1F1YldGclpVNXZaR1ZTWlhOdmJIWmxjaWdwS1R0Y2JpQWdJQ0IwYUdsekxtWmhjSEJzZVNodWIyUmxRWEpuY3lrdVptRnBiQ2hrWldabGNuSmxaQzV5WldwbFkzUXBPMXh1SUNBZ0lISmxkSFZ5YmlCa1pXWmxjbkpsWkM1d2NtOXRhWE5sTzF4dWZUdGNibHh1THlvcVhHNGdLaUJYY21Gd2N5QmhJRTV2WkdWS1V5QmpiMjUwYVc1MVlYUnBiMjRnY0dGemMybHVaeUJtZFc1amRHbHZiaUJoYm1RZ2NtVjBkWEp1Y3lCaGJpQmxjWFZwZG1Gc1pXNTBYRzRnS2lCMlpYSnphVzl1SUhSb1lYUWdjbVYwZFhKdWN5QmhJSEJ5YjIxcGMyVXVYRzRnS2lCQVpYaGhiWEJzWlZ4dUlDb2dVUzV1Wm1KcGJtUW9SbE11Y21WaFpFWnBiR1VzSUY5ZlptbHNaVzVoYldVcEtGd2lkWFJtTFRoY0lpbGNiaUFxSUM1MGFHVnVLR052Ym5OdmJHVXViRzluS1Z4dUlDb2dMbVJ2Ym1Vb0tWeHVJQ292WEc1UkxtNW1ZbWx1WkNBOVhHNVJMbVJsYm05a1pXbG1lU0E5SUdaMWJtTjBhVzl1SUNoallXeHNZbUZqYXlBdktpNHVMbUZ5WjNNcUx5a2dlMXh1SUNBZ0lIWmhjaUJpWVhObFFYSm5jeUE5SUdGeWNtRjVYM05zYVdObEtHRnlaM1Z0Wlc1MGN5d2dNU2s3WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNXZaR1ZCY21keklEMGdZbUZ6WlVGeVozTXVZMjl1WTJGMEtHRnljbUY1WDNOc2FXTmxLR0Z5WjNWdFpXNTBjeWtwTzF4dUlDQWdJQ0FnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lDQWdJQ0J1YjJSbFFYSm5jeTV3ZFhOb0tHUmxabVZ5Y21Wa0xtMWhhMlZPYjJSbFVtVnpiMngyWlhJb0tTazdYRzRnSUNBZ0lDQWdJRkVvWTJGc2JHSmhZMnNwTG1aaGNIQnNlU2h1YjJSbFFYSm5jeWt1Wm1GcGJDaGtaV1psY25KbFpDNXlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVm1aWEp5WldRdWNISnZiV2x6WlR0Y2JpQWdJQ0I5TzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1Ym1aaWFXNWtJRDFjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG1SbGJtOWtaV2xtZVNBOUlHWjFibU4wYVc5dUlDZ3ZLaTR1TG1GeVozTXFMeWtnZTF4dUlDQWdJSFpoY2lCaGNtZHpJRDBnWVhKeVlYbGZjMnhwWTJVb1lYSm5kVzFsYm5SektUdGNiaUFnSUNCaGNtZHpMblZ1YzJocFpuUW9kR2hwY3lrN1hHNGdJQ0FnY21WMGRYSnVJRkV1WkdWdWIyUmxhV1o1TG1Gd2NHeDVLSFp2YVdRZ01Dd2dZWEpuY3lrN1hHNTlPMXh1WEc1UkxtNWlhVzVrSUQwZ1puVnVZM1JwYjI0Z0tHTmhiR3hpWVdOckxDQjBhR2x6Y0NBdktpNHVMbUZ5WjNNcUx5a2dlMXh1SUNBZ0lIWmhjaUJpWVhObFFYSm5jeUE5SUdGeWNtRjVYM05zYVdObEtHRnlaM1Z0Wlc1MGN5d2dNaWs3WEc0Z0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHNXZaR1ZCY21keklEMGdZbUZ6WlVGeVozTXVZMjl1WTJGMEtHRnljbUY1WDNOc2FXTmxLR0Z5WjNWdFpXNTBjeWtwTzF4dUlDQWdJQ0FnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lDQWdJQ0J1YjJSbFFYSm5jeTV3ZFhOb0tHUmxabVZ5Y21Wa0xtMWhhMlZPYjJSbFVtVnpiMngyWlhJb0tTazdYRzRnSUNBZ0lDQWdJR1oxYm1OMGFXOXVJR0p2ZFc1a0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOaGJHeGlZV05yTG1Gd2NHeDVLSFJvYVhOd0xDQmhjbWQxYldWdWRITXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUZFb1ltOTFibVFwTG1aaGNIQnNlU2h1YjJSbFFYSm5jeWt1Wm1GcGJDaGtaV1psY25KbFpDNXlaV3BsWTNRcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVm1aWEp5WldRdWNISnZiV2x6WlR0Y2JpQWdJQ0I5TzF4dWZUdGNibHh1VUhKdmJXbHpaUzV3Y205MGIzUjVjR1V1Ym1KcGJtUWdQU0JtZFc1amRHbHZiaUFvTHlwMGFHbHpjQ3dnTGk0dVlYSm5jeW92S1NCN1hHNGdJQ0FnZG1GeUlHRnlaM01nUFNCaGNuSmhlVjl6YkdsalpTaGhjbWQxYldWdWRITXNJREFwTzF4dUlDQWdJR0Z5WjNNdWRXNXphR2xtZENoMGFHbHpLVHRjYmlBZ0lDQnlaWFIxY200Z1VTNXVZbWx1WkM1aGNIQnNlU2gyYjJsa0lEQXNJR0Z5WjNNcE8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCRFlXeHNjeUJoSUcxbGRHaHZaQ0J2WmlCaElFNXZaR1V0YzNSNWJHVWdiMkpxWldOMElIUm9ZWFFnWVdOalpYQjBjeUJoSUU1dlpHVXRjM1I1YkdWY2JpQXFJR05oYkd4aVlXTnJJSGRwZEdnZ1lTQm5hWFpsYmlCaGNuSmhlU0J2WmlCaGNtZDFiV1Z1ZEhNc0lIQnNkWE1nWVNCd2NtOTJhV1JsWkNCallXeHNZbUZqYXk1Y2JpQXFJRUJ3WVhKaGJTQnZZbXBsWTNRZ1lXNGdiMkpxWldOMElIUm9ZWFFnYUdGeklIUm9aU0J1WVcxbFpDQnRaWFJvYjJSY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQnVZVzFsSUc1aGJXVWdiMllnZEdobElHMWxkR2h2WkNCdlppQnZZbXBsWTNSY2JpQXFJRUJ3WVhKaGJTQjdRWEp5WVhsOUlHRnlaM01nWVhKbmRXMWxiblJ6SUhSdklIQmhjM01nZEc4Z2RHaGxJRzFsZEdodlpEc2dkR2hsSUdOaGJHeGlZV05yWEc0Z0tpQjNhV3hzSUdKbElIQnliM1pwWkdWa0lHSjVJRkVnWVc1a0lHRndjR1Z1WkdWa0lIUnZJSFJvWlhObElHRnlaM1Z0Wlc1MGN5NWNiaUFxSUVCeVpYUjFjbTV6SUdFZ2NISnZiV2x6WlNCbWIzSWdkR2hsSUhaaGJIVmxJRzl5SUdWeWNtOXlYRzRnS2k5Y2JsRXVibTFoY0hCc2VTQTlJQzh2SUZoWVdDQkJjeUJ3Y205d2IzTmxaQ0JpZVNCY0lsSmxaSE5oYm1SeWIxd2lYRzVSTG01d2IzTjBJRDBnWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ3dnYm1GdFpTd2dZWEpuY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUJSS0c5aWFtVmpkQ2t1Ym5CdmMzUW9ibUZ0WlN3Z1lYSm5jeWs3WEc1OU8xeHVYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzV1YldGd2NHeDVJRDBnTHk4Z1dGaFlJRUZ6SUhCeWIzQnZjMlZrSUdKNUlGd2lVbVZrYzJGdVpISnZYQ0pjYmxCeWIyMXBjMlV1Y0hKdmRHOTBlWEJsTG01d2IzTjBJRDBnWm5WdVkzUnBiMjRnS0c1aGJXVXNJR0Z5WjNNcElIdGNiaUFnSUNCMllYSWdibTlrWlVGeVozTWdQU0JoY25KaGVWOXpiR2xqWlNoaGNtZHpJSHg4SUZ0ZEtUdGNiaUFnSUNCMllYSWdaR1ZtWlhKeVpXUWdQU0JrWldabGNpZ3BPMXh1SUNBZ0lHNXZaR1ZCY21kekxuQjFjMmdvWkdWbVpYSnlaV1F1YldGclpVNXZaR1ZTWlhOdmJIWmxjaWdwS1R0Y2JpQWdJQ0IwYUdsekxtUnBjM0JoZEdOb0tGd2ljRzl6ZEZ3aUxDQmJibUZ0WlN3Z2JtOWtaVUZ5WjNOZEtTNW1ZV2xzS0dSbFptVnljbVZrTG5KbGFtVmpkQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHUmxabVZ5Y21Wa0xuQnliMjFwYzJVN1hHNTlPMXh1WEc0dktpcGNiaUFxSUVOaGJHeHpJR0VnYldWMGFHOWtJRzltSUdFZ1RtOWtaUzF6ZEhsc1pTQnZZbXBsWTNRZ2RHaGhkQ0JoWTJObGNIUnpJR0VnVG05a1pTMXpkSGxzWlZ4dUlDb2dZMkZzYkdKaFkyc3NJR1p2Y25kaGNtUnBibWNnZEdobElHZHBkbVZ1SUhaaGNtbGhaR2xqSUdGeVozVnRaVzUwY3l3Z2NHeDFjeUJoSUhCeWIzWnBaR1ZrWEc0Z0tpQmpZV3hzWW1GamF5QmhjbWQxYldWdWRDNWNiaUFxSUVCd1lYSmhiU0J2WW1wbFkzUWdZVzRnYjJKcVpXTjBJSFJvWVhRZ2FHRnpJSFJvWlNCdVlXMWxaQ0J0WlhSb2IyUmNiaUFxSUVCd1lYSmhiU0I3VTNSeWFXNW5mU0J1WVcxbElHNWhiV1VnYjJZZ2RHaGxJRzFsZEdodlpDQnZaaUJ2WW1wbFkzUmNiaUFxSUVCd1lYSmhiU0F1TGk1aGNtZHpJR0Z5WjNWdFpXNTBjeUIwYnlCd1lYTnpJSFJ2SUhSb1pTQnRaWFJvYjJRN0lIUm9aU0JqWVd4c1ltRmpheUIzYVd4c1hHNGdLaUJpWlNCd2NtOTJhV1JsWkNCaWVTQlJJR0Z1WkNCaGNIQmxibVJsWkNCMGJ5QjBhR1Z6WlNCaGNtZDFiV1Z1ZEhNdVhHNGdLaUJBY21WMGRYSnVjeUJoSUhCeWIyMXBjMlVnWm05eUlIUm9aU0IyWVd4MVpTQnZjaUJsY25KdmNseHVJQ292WEc1UkxtNXpaVzVrSUQwZ0x5OGdXRmhZSUVKaGMyVmtJRzl1SUUxaGNtc2dUV2xzYkdWeUozTWdjSEp2Y0c5elpXUWdYQ0p6Wlc1a1hDSmNibEV1Ym0xallXeHNJRDBnTHk4Z1dGaFlJRUpoYzJWa0lHOXVJRndpVW1Wa2MyRnVaSEp2SjNOY0lpQndjbTl3YjNOaGJGeHVVUzV1YVc1MmIydGxJRDBnWm5WdVkzUnBiMjRnS0c5aWFtVmpkQ3dnYm1GdFpTQXZLaTR1TG1GeVozTXFMeWtnZTF4dUlDQWdJSFpoY2lCdWIyUmxRWEpuY3lBOUlHRnljbUY1WDNOc2FXTmxLR0Z5WjNWdFpXNTBjeXdnTWlrN1hHNGdJQ0FnZG1GeUlHUmxabVZ5Y21Wa0lEMGdaR1ZtWlhJb0tUdGNiaUFnSUNCdWIyUmxRWEpuY3k1d2RYTm9LR1JsWm1WeWNtVmtMbTFoYTJWT2IyUmxVbVZ6YjJ4MlpYSW9LU2s3WEc0Z0lDQWdVU2h2WW1wbFkzUXBMbVJwYzNCaGRHTm9LRndpY0c5emRGd2lMQ0JiYm1GdFpTd2dibTlrWlVGeVozTmRLUzVtWVdsc0tHUmxabVZ5Y21Wa0xuSmxhbVZqZENrN1hHNGdJQ0FnY21WMGRYSnVJR1JsWm1WeWNtVmtMbkJ5YjIxcGMyVTdYRzU5TzF4dVhHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNXVjMlZ1WkNBOUlDOHZJRmhZV0NCQ1lYTmxaQ0J2YmlCTllYSnJJRTFwYkd4bGNpZHpJSEJ5YjNCdmMyVmtJRndpYzJWdVpGd2lYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzV1YldOaGJHd2dQU0F2THlCWVdGZ2dRbUZ6WldRZ2IyNGdYQ0pTWldSellXNWtjbThuYzF3aUlIQnliM0J2YzJGc1hHNVFjbTl0YVhObExuQnliM1J2ZEhsd1pTNXVhVzUyYjJ0bElEMGdablZ1WTNScGIyNGdLRzVoYldVZ0x5b3VMaTVoY21kektpOHBJSHRjYmlBZ0lDQjJZWElnYm05a1pVRnlaM01nUFNCaGNuSmhlVjl6YkdsalpTaGhjbWQxYldWdWRITXNJREVwTzF4dUlDQWdJSFpoY2lCa1pXWmxjbkpsWkNBOUlHUmxabVZ5S0NrN1hHNGdJQ0FnYm05a1pVRnlaM011Y0hWemFDaGtaV1psY25KbFpDNXRZV3RsVG05a1pWSmxjMjlzZG1WeUtDa3BPMXh1SUNBZ0lIUm9hWE11WkdsemNHRjBZMmdvWENKd2IzTjBYQ0lzSUZ0dVlXMWxMQ0J1YjJSbFFYSm5jMTBwTG1aaGFXd29aR1ZtWlhKeVpXUXVjbVZxWldOMEtUdGNiaUFnSUNCeVpYUjFjbTRnWkdWbVpYSnlaV1F1Y0hKdmJXbHpaVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dTV1lnWVNCbWRXNWpkR2x2YmlCM2IzVnNaQ0JzYVd0bElIUnZJSE4xY0hCdmNuUWdZbTkwYUNCT2IyUmxJR052Ym5ScGJuVmhkR2x2Ymkxd1lYTnphVzVuTFhOMGVXeGxJR0Z1WkZ4dUlDb2djSEp2YldselpTMXlaWFIxY201cGJtY3RjM1I1YkdVc0lHbDBJR05oYmlCbGJtUWdhWFJ6SUdsdWRHVnlibUZzSUhCeWIyMXBjMlVnWTJoaGFXNGdkMmwwYUZ4dUlDb2dZRzV2WkdWcFpua29ibTlrWldKaFkyc3BZQ3dnWm05eWQyRnlaR2x1WnlCMGFHVWdiM0IwYVc5dVlXd2dibTlrWldKaFkyc2dZWEpuZFcxbGJuUXVJQ0JKWmlCMGFHVWdkWE5sY2x4dUlDb2daV3hsWTNSeklIUnZJSFZ6WlNCaElHNXZaR1ZpWVdOckxDQjBhR1VnY21WemRXeDBJSGRwYkd3Z1ltVWdjMlZ1ZENCMGFHVnlaUzRnSUVsbUlIUm9aWGtnWkc4Z2JtOTBYRzRnS2lCd1lYTnpJR0VnYm05a1pXSmhZMnNzSUhSb1pYa2dkMmxzYkNCeVpXTmxhWFpsSUhSb1pTQnlaWE4xYkhRZ2NISnZiV2x6WlM1Y2JpQXFJRUJ3WVhKaGJTQnZZbXBsWTNRZ1lTQnlaWE4xYkhRZ0tHOXlJR0VnY0hKdmJXbHpaU0JtYjNJZ1lTQnlaWE4xYkhRcFhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0J1YjJSbFltRmpheUJoSUU1dlpHVXVhbk10YzNSNWJHVWdZMkZzYkdKaFkydGNiaUFxSUVCeVpYUjFjbTV6SUdWcGRHaGxjaUIwYUdVZ2NISnZiV2x6WlNCdmNpQnViM1JvYVc1blhHNGdLaTljYmxFdWJtOWtaV2xtZVNBOUlHNXZaR1ZwWm5rN1hHNW1kVzVqZEdsdmJpQnViMlJsYVdaNUtHOWlhbVZqZEN3Z2JtOWtaV0poWTJzcElIdGNiaUFnSUNCeVpYUjFjbTRnVVNodlltcGxZM1FwTG01dlpHVnBabmtvYm05a1pXSmhZMnNwTzF4dWZWeHVYRzVRY205dGFYTmxMbkJ5YjNSdmRIbHdaUzV1YjJSbGFXWjVJRDBnWm5WdVkzUnBiMjRnS0c1dlpHVmlZV05yS1NCN1hHNGdJQ0FnYVdZZ0tHNXZaR1ZpWVdOcktTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRHaGxiaWhtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lGRXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1dlpHVmlZV05yS0c1MWJHd3NJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlMQ0JtZFc1amRHbHZiaUFvWlhKeWIzSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lGRXVibVY0ZEZScFkyc29ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1dlpHVmlZV05yS0dWeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdJQ0I5WEc1OU8xeHVYRzVSTG01dlEyOXVabXhwWTNRZ1BTQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSlJMbTV2UTI5dVpteHBZM1FnYjI1c2VTQjNiM0pyY3lCM2FHVnVJRkVnYVhNZ2RYTmxaQ0JoY3lCaElHZHNiMkpoYkZ3aUtUdGNibjA3WEc1Y2JpOHZJRUZzYkNCamIyUmxJR0psWm05eVpTQjBhR2x6SUhCdmFXNTBJSGRwYkd3Z1ltVWdabWxzZEdWeVpXUWdabkp2YlNCemRHRmpheUIwY21GalpYTXVYRzUyWVhJZ2NVVnVaR2x1WjB4cGJtVWdQU0JqWVhCMGRYSmxUR2x1WlNncE8xeHVYRzV5WlhSMWNtNGdVVHRjYmx4dWZTazdYRzVjYm4wcExtTmhiR3dvZEdocGN5eHlaWEYxYVhKbEtDZGZjSEp2WTJWemN5Y3BLVnh1THk4aklITnZkWEpqWlUxaGNIQnBibWRWVWt3OVpHRjBZVHBoY0hCc2FXTmhkR2x2Ymk5cWMyOXVPMk5vWVhKelpYUTZkWFJtTFRnN1ltRnpaVFkwTEdWNVNqSmFXRXA2WVZjNWRVbHFiM3BNUTBwNllqTldlVmt5Vm5wSmFuQmlTVzAxZGxwSFZtWmlWemxyWkZkNGJHTjVPWGhNTTBWMVlXNU5hVmhUZDJsaWJVWjBXbGhOYVU5c2RHUk1RMHAwV1ZoQ2QyRlhOVzVqZVVrMlNXcDBRbEZWUmtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVWRFSlJWVTVDVHpCR1FsRXdSVGRSVlVaRVVWUjBRbEZWVGtKUE1FWkNVVEJGTjFGVlJrUlJWSFJDVVZWT1FrOHdSa0pSTUVVM1VWVkdSRkZVZEVKUlZVNUNUekJHUWxFd1JUZFJWVVpFVVZSMFFsRlZUa0pQTUVaQ1VUQkZOMUZWUmtSUlZIUkNVVlZPUWs4d1JrSlJNRVUzVVZWR1JGRlVkRUpSVlU1Q1R6QkdRbEV3UlRkUlZVWkVVVlIwUWxGVlRrSlBNRVpDVVRCRk4xRlZSa1JSVkhSQ1VWVk9Razh3UmtKUk1FVTNVVlZHUkZGVFNYTkpiVnB3WWtkVmFVOXBTbTVhVnpWc1kyMUdNRnBYVVhWaGJrMXBURU5LZW1JelZubFpNbFpUWWpJNU1FbHFiMmxKYVhkcFl6STVNV050VG14ak1FNTJZbTVTYkdKdVVXbFBiSE5wVEhrNFoyUnRiSFJQYmxKNlVGUlJObU16VW5wUVZGRTJZek5qT1U1RWNHTmlhVGh4U1ZaNGRVbERjR05pYVVGeFNVVk9kbU5JYkhsaFYyUnZaRU5CZVUxRVFUVk1WRWwzVFZSSloxTXpTbkJqZVVKTVlqTmthR0pEUWpGaWJWSnNZMmxDTUdGSFZXZGtSMVo1WWxoTloySXlXV2RrUjJoc1NVVXhTbFpHZUhWSlEyOW5Za2RzYWxwWE5YcGFVMEp0WWpOV2RWcERRbWhrUTBKdlpFaFNkMDlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx5WTIxc2VtRXlPVE5aVjNkMlkxTTVlVmxZWTNaaVYwWjZaRWRXZVV3d2VFcFJNRlpQVlRCV1kySnBRWEZZUnpSblMybENXR0ZZVW05SlNFSm9ZMjVTZWtsSFNqVkpSbEkxWWtkV2VVbEZUbk5pTTA1c1dFYzBaMHRwUWtSaU0wSTFZMjFzYm1GSVVXZE5ha0YzVG5rd2VVMUVRVFZKUmxJMVlrZFdlVWxGVG5OaU0wNXNTVWhXZFZwSFZubEpTRkp2V2xOQ01GcFlTblJqZVVKMldtbENNR0ZIVldkVVZXeFZTVVpuWjJKSGJHcGFWelY2V2xOQ2JXSXpWblZhUm5oMVNVTnZaMWxZVVdkaFNGSXdZMFJ2ZGt3elpETmtlVFYyWTBkV2RXTXlPVEZqYlU1c1RHMDVlVnA1T1hOaFYwNXNZbTVPYkdONU9YUmhXRkYwWWtkc2FscFhOWHBhVXpWdlpFY3hjMWhITkdkTGFVSkhZak5LY2xwWFVXZFpXRkZuWTIxV2JWZ3pUbXhpYlZGMVlXNU5aMlJ0Vm5sak1teDJZbXB2WjAxcVFYZFBVekIzVGxNd2VFMVdlSFZKUTNCalltbEJjVWxHWkhCa1IyZG5ZMGRHZVdSSVRXZFpibXRuVkZkR2VXRjVRazVoVjNoeldsaEtZMkpwUVhGSlJVNTJZMGhzZVdGWFpHOWtRMEZ2VVhsclowMXFRWGhOVTBKSVlqSTVibUpIVldkVFZ6VnFUR3g0ZFVsRGNHTmlhVUZ4U1VWNGNGa3lWblZqTWxaclNVaFdkVnBIVm5sSlNGSnZXbE5DUW1OSFJtcGhSMVZuVkVkc2FscFhOWHBhVTNkblZtMVdlV015YkhaaWFVRjVUR3BCWjB0SVVtOWFVMEpqU1d0NGNGa3lWblZqTWxaalNXbHJOMWhITkdkTGFVSTFZak5WWjJKWFJqVkpSelYyWkVOQ01XTXlWV2RrUjJod1kzbENiV0ZYZUd4SlIxWTBXVEpXZDJSRFFuQmlhVUpxWWpJeGQySkhiR2hpYlU1c1NVaGtjR1JIWjJka1IyaHNTVVY0Y0ZreVZuVmpNbFYxV0VjMFowdHBRbHBpTTFWbllsZEdOVWxIT1dsa1IwWndZbWxDYUVsSFRuWmpTR3RuWWpKWloyUkhhR3hKUlhod1dUSldkV015VldkWldGSmpZbWxCY1ZoSE5HZExhVUp2WkVoU2QwOXBPSFprTTJRelRHMUdkMWxYVG05YVV6VjJZMjFqZG1KSGJHcGFWelY2V2xoTmRsUkZiRVJTVlRWVVVsTXdlVXhxUW1OaWFVRnhXRWMwWjB0cFFsWmliWGhzWXpOTloyTnRWbmhrVjJ4NVdsZFJaMWx1YTJkWldFSjNZa2RzYWxsWFNuTmFVMEp6V1ZoaloySXpTV2RaVjJSNVdsZFdhMGxJVW5aSlIyeDFTVWhrZVdGWVVuQmliV056U1VoT2RscHVVak5aV0Vwc1dFYzBaMHRwUW10aFdFNHdZMjFzYVdSWVVteGFRMEl4WW0xU2JHTnBRakJoUjFWblZFZHNhbHBYTlhwYVUwSndZM2xDYTJGWVRqQmpiV3hwWkZoU2JGcERRblppYVVKb1ltbENZMGxyUmxSSlJXeFVXRU5KWjFGclJsUlRWazF6V0VjMFowdHBRbGhUVmxKSlZERldWVWxHWkVKVmJFcENWR3hTU2xKV1RXZFVNVWxuVVRBNVQxSkZiRlZUVlRsUFZYbENVRkpwUWtKVWJHdG5VekJzVDFKRGQyZGFWMnd3WVVkV2VVbEhWalJqU0Vwc1l6Tk5aMkl6U1dkaFZ6RjNZa2RzYkZwRE5XTmlhVUZ4U1VaT2JGcFRRakJoUjFWblZFZHNhbHBYTlhwYVUwSnRZak5KWjJSSGFHeEpTRTUzV2xkT2NGcHRiR3BKUjNob1ltMWtNVmxYWkd4SlIyUjJaRzFXZVdKdGJIVmFlVUozV2xoS2RHRllUbnBoVnpsMVkzbENhR0p0VW1OaWFVRnhTVWQ0Y0dKWGJEQlpXRkp3WWpJMWVrbElWblZhUjFaNVNVaFNiMXBUUWsxaFYwNXNZbTVPYkV4c2VIVkpRM0JqWW1sQmNVd3hlSFZZUnpSdldtNVdkVmt6VW5CaU1qUm5TMGRTYkZwdGJIVmhXRkp3WWpJMGNFbElkR05pYVVGblNVTkNZMGx1Vm5wYVUwSjZaRWhLY0ZrelVtTkphblJqWW14NGRVbERRV2RKUXpoMlNVWlNiMkZZVFdkYWJXeHpXbE5DTTJGWGVITkpSMW94WW0xT01HRlhPWFZKU0VKNVlqTkNiR050ZURWSlIwWjZTVWRGWjFCSVRtcGpiV3gzWkVRMFoyUkhSbTVNUTBKMlkybENhRWxITVhaYVNGWnpXbFo0ZFVsRFFXZEpRemgyU1VoV2VtRlhOVzVKUlU1MllsY3hkbUpyY0ZSSlIwWjFXa05DVDJJeVVteFRiRTFuWWpOSloxVnRWbmhrVjJ4NVdsVndWRWxITVhaYVNGWnpXbE5DYldJelNuUlpXRko2VEdsQloxTlhOV05pYVVGblNVTkJka3g1UWtSaU1qRjBZakkwZGxSdE9XdGFVemxUV2xoR01XRllTbXhUYkUxelNVaFNiMXBUUW5SaU1sSXhZa2RWWjFwWWFIZGlNMG93WTNsQ01HRkhWV2RWVTBKQ1ZVVnJaMWxYTld0SlNHUnZXbGMxWTJKcFFXZEpRMEYyVEhsQ2JHVkhWbXBrV0ZKc1drTkNhR041UW1oSlNFNXdZbGhDYzFwVFFUaGpNazU1WVZoQ01GQnBkMmRoV0ZGbldUTktiRmxZVW14amVVSm9TVVpGWjFveWVIWlpiVVp6U1Vkc2RXTXpVbXhaVjFGMVdFYzFZMkpwUVdkSlEwRjJUSGxDVG1JeU5UQlpWMlJzU1VaS2JHTllWbkJqYlZaalltbEJaMGxEUW5CYWFVRnZaRWhzZDFwWE9XMUpSMHAyWWpOU2VtUklTbWhqUTBFNVVGUXdaMWhEU20xa1Z6VnFaRWRzZG1Kc2QybExVMEkzV0VjMFowbERRV2RKUTBGblNVZEtkbUl6VW5wa1NFcG9ZME5vWTBsdVFubGlNakZ3WXpKV1kwbHBkMmRhUjFadFlWYzFjR1JIYkhaaWFXczNXRWMxWTJKcFFXZEpRMEYyVEhsQ1JHSXlNWFJpTWpWTFZURjRkVWxEUVdkSlNEQm5XbGQ0ZWxwVFFuQmFhVUZ2WkVoc2QxcFhPVzFKUjFZMFkwYzVlV1JJVFdkUVZEQTVTVVozYVdJeVNuRmFWMDR3V0VOSlowcHBXV2RrU0d4M1dsYzViVWxITVhaYVNGWnpXbE5CT1ZCVU1HZFlRMHAyV1cxd2JGa3pVbU5KYVd0blpURjRkVWxEUVdkSlEwRm5TVU5DZEdJeVVqRmlSMVYxV2xob2QySXpTakJqZVVFNVNVZFNiRnB0YkhWaFdGSndZakkwYjB0VWRHTmliSGgxU1VOQlowbERPSFpKUmtwc1kxaFdjR050Vmt0Vk1YaDFTVU5CWjBsSU1HZGFWM2g2V2xOQ2NGcHBRVzlrU0d4M1dsYzViVWxIVW14YWJXeDFXbE5CT1ZCVU1HZFlRMHB0WkZjMWFtUkhiSFppYkhkcFNVTlpiVWxIVW14YWJXeDFXbE0xYUdKWFVYQkpTSFJqWW1sQlowbERRV2RKUTBGbldrZFdiV0ZYTld4TFIxSnNXbTFzZFdGWVVuQmlNalJ3VHpGNGRWaEhOR2RKUTBGblRIazRaMVV3VmxSSlEyaFVXbGRPTVdOdFZXZFNWMDUwV1ZaT2FtTnRiSGRrUTJ4alltbEJaMGxEUWpsSlIxWnpZekpWWjJGWFdXZExTRkkxWTBkV2RscHBRbnBhV0UxblNWUXdPVWxHZDJsa1Z6VnJXbGRhY0dKdFZtdFlRMGx3U1VoMFkySnBRV2RKUTBGblNVTkJaMkZYV1dkTFEwWjZXbGhOZFdJeWMyOUxVMnRuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkamJWWXdaRmhLZFU4eGVIVkpRMEZuU1VOQlowbERRamxKUjFaell6SlZaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuWXpKV2VreHRNV2hoTWxaU1NVUXdaMXBIVm0xaFZ6VndaRWRzZG1KcWRHTmlhVUZuU1VOQlowbERRV2RtVm5oMVdFYzBaMGxEUVdkTWVUaG5VRWhPYW1OdGJIZGtSRFZqWW1sQlowbERRamxKUjFaell6SlZaMkZYV1dkTFNGSTFZMGRXZGxwcFFqTmhWelZyWWpOalowbFVNRGxKUm5kcFpGYzFhMXBYV25CaWJWWnJXRU5KWjJaSWQyZGtTR3gzV2xjNWJVbElUbXhpUjFsblNWUXdPVWxHZDJsa1Z6VnJXbGRhY0dKdFZtdFlRMGx3U1VoMFkySnBRV2RKUTBGblNVTkJaMHg1T0dkVlNFcHNXbTFXZVVsSVpIQmliVkoyWkhsQ2RtUnRWbmxKU0U1c1lrZFpaMXB0T1hsSlIwWnJXa014ZG1KcFFucFpNMHB3WTBoU2VreHBRbFpqTWxWbll6SldjMXBwUW0xaU0wcGpZbWxCWjBsRFFXZEpRMEZuVEhrNFoySnRPWFZNV0dSd1ltMVNkbVF5Vm10SlIwNTJZbTVTYkdWSVVucE1iSGgxU1VOQlowbERRV2RKUTBJeVdWaEpaMW95ZUhaWmJVWnpTVVF3WjJSSWJIZGFWemx0U1Voa2NHSnRVblprZVVGb1VGUXdaMWhEU2pGaWJWSnNXbTFzZFZwWFVtTkphVUV2U1Voa2NHSnRVblprZVVFMlNVaE9iR0pIV1RkWVJ6VmpZbWxCWjBsRFFXZEpRMEZuVEhrNFoxSXlWakJKU0ZKdldsTkNaMlF5YkhWYVJ6a3pXVU5DZGxsdGNHeFpNMUZ6U1VoT2FHUnRWV2RrUjJoc1NVaENlVnBZV25CaU0xWjZTVVpGWjFveWVIWlpiVVp6V0VjMFowbERRV2RKUTBGblNVTTRka2xIUm5WYVEwSndZbTFzTUdGWFJuTmhXSEJzU1VaRloxbFlUV2RaVTBKdVlrYzVhVmxYZDNWWVJ6Um5TVU5CWjBsRFFXZEpTRnBvWTJsQ2QyTnRWakpoVnpreFl6RkZaMUJUUW01aVJ6bHBXVmQzZFZWVWRHTmlhVUZuU1VOQlowbERRV2RhTW5oMldXMUdjMHhzUldkUVUwSnJXbGRhY0dKdGJEQmhWemwxUzBOck4xaEhOV05pYVVGblNVTkJaMGxEUVdkTWVUaG5VVmRTYTBsSFJXZGliVGxFWWpJMWJXSkhiR3BrUTBKdFpGYzFhbVJIYkhaaWFVSjZZbmxDVWtsSFRtaGlhVUpwV2xOQ2VWcFhNWFprYlZaclNVZGFlV0l5TUdka1IyaHNXRWMwWjBsRFFXZEpRMEZuU1VNNGRrbEhaSE5pTWtwb1lrTkNkVmxYTVd4ak0wSm9XVEpWZFZoSE5HZEpRMEZuU1VOQlowbEhaSE5pTWtwb1lrTTFVa3h0TlhaUk1qbDFXbTE0Y0ZrelVXZFFVMEp0WkZjMWFtUkhiSFppYVVGdlMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEp1WWtjNWFWbFhkM1ZWVTBFNVNVaENlVnBZV25CaU0xWjZWVlIwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0Vwc1pFaFdlV0pwUWpCaFIyeDZUekY0ZFVsRFFXZEpRMEZuU1VOQ09VOHhlSFZZUnpSblNVTkJaMlpUUW14aVNFNXNTVWgwWTJKcFFXZEpRMEZuU1VOQloyUkhhSGxpTTJOblltMVdNMGxGVm5samJUbDVTMFozYVZaSGFIQmplVUpzWW01YWNHTnRPWFZpVjFaMVpFTkNNMWxZVFdkaWJUa3dTVWRHZFdSSGJHcGhXRUpvWkVkV2EwbEhTalZKUmtWMVNVWkNjMXBYUm5wYVUwSnRZVmQ0YkVsSFJXZFpibFp1VEd4M2FVdFVkR05pYVVGblNVTkNPVmhITldOaWJqQndTMGRhTVdKdFRqQmhWemwxU1VObmNFbElkR05pYkhkcFpGaE9iRWxJVGpCamJXeHFaRVozYVU4eGVIVllSelV5V1ZoSloyRkhSbnBWTTFKb1dUSjBla2xFTUdkYWJVWnpZekpWTjFoSE5UQmpibXRuWlRGNGRVbERRV2RKU0ZKdlkyMDVNMGxITld4a2VVSkdZMjVLZG1OcFozQlBNWGgxWmxOQ2FsbFlVbXBoUTBGdldsTnJaMlV4ZUhWSlEwRm5TVWRvYUdNeFRqQlpWMDV5WTNsQk9VbERSV2hhVXpWNlpFZEdhbUY2ZEdOaWJqRmpZbXg0ZFV4NU9HZFJWM2h6U1VkT2RscEhWV2RaVjFvd1dsaEpaMlJIYUhCamVVSjNZakpzZFdSRFFqTmhWM2h6U1VkS2JFbEhXbkJpU0ZKc1kyMVdhMGxIV25saU1qQm5Zek5TYUZreWMyZGtTRXBvV1RKV2VrbElTbXhqUnpsNVpFZFdhMWhITkhaTWVVSnBaVk5DVWt4c2VIVmtiVVo1U1VoR1ZHUkhSbmxrUjJ4MVdqQjRjR0p0VldkUVUwSnFXVmhDTUdSWVNteFVSMngxV2xObmNFOHhlSFZrYlVaNVNVaEdSMkZYZUd4VWJVWjBXbFIwWTJKc2VIVk1lVGhuWXpKb2NHSllUbU5pYkhoMVRIazRaMlJZVG14YVEwSnRZak5KWjFwdFJuTmlSMHBvV1RKeloyRlhOR2RZUTBwb1lrZDRVMXBZVG5aaVNGcHNXa1ozYVZoSE5USlpXRWxuWW0wNWRtTkRRVGxKUjFveFltMU9NR0ZYT1hWSlEyZHdTVWgwT1U4eGVIVllSelIyVEhsQ1ZtTXlWV2RrUjJoc1NVZGFhR016VW14ak0xRm5ZMGM1ZW1NeWJHbGlSMVZuWWxkV2FHSnVUV2RrUnpobldsaG9iRmt6VmpCYVUwSm9TVWhTYUdNeWMyZGhWelJuV1ZOQ2JXUllVakZqYlZWblpFaFdlV0pzZUhWTWVUaG5ZakpaWjJSSGFHeEpSMVl5V2xjMU1FbEhlSFppTTBGMVdFYzFNbGxZU1dkaWJWWTBaRVpTY0ZreWMyZFFVMmh0WkZjMWFtUkhiSFppYVVGdlMxTkNOMWhITkdkSlEwRm5USGs0WjJKSGJIVmhNbFpyU1VkNGNHTXpVV2RpTWxsblpFZEdlbUV6VFdkTFNFNXdZbTFrYzFwVGQyZGtNbXd3WVVOQ2IxcFhSbXRKUnpWMldrZFZjRmhITkdkSlEwRm5aRzFHZVVsSGFHeFpWMUZuVUZOQ04yUkhSbnBoZW05blpHMDVjRnBEUVhkTVEwSjFXbGhvTUU5cFFuVmtWM2h6WmxSMFkySnBRV2RKUTBJeVdWaEpaMlJIUm5CaVEwRTVTVWRvYkZsWFVUZFlSelJuU1VOQloyUnRSbmxKUjFwelpGaE9iMkZYTlc1SlJEQm5XbTFHYzJNeVZUZFlSelJuU1VOQloyUnRSbmxKU0Vwc1kxaFdiR016VWxWaFYwNXlTVVF3WjJSdE9YQmFRMEYzVHpGNGRVbERRV2RKU0Zwb1kybENjR013TlhaYVIxWkxWWGxCT1VsSFdtaGlTRTVzVHpGNGRVbERRV2RKUXpoMlNVaEdNVnBZVm14SlIxcDJZMmxDYzFsWVVteEpTRkpvWXpKMGVreERRakZqTWxaclNVZEtOVWxJVm5WaFIwWjFXa2Q0YkZwRFFubGFWM0JzV1ROU2NHSXlOR2RrU0Vwb1dUSjBjR0p0WkdOaWFVRm5TVU5DTWxsWVNXZGlSMFl3V2xoS1VtUlhWakZhVTBFNVNVWjBaRTh4ZUhWWVJ6Um5TVU5CWjFwdVZuVlpNMUp3WWpJMFoxcHRlREZqTW1kdlMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRE9IRkpSM0I2WVVkc2RXUkRRbk5pTWpsM1dtNVdkVmw2YjJka1NFb3hXbE5CY1V3eGVIVkpRMEZuU1VOQlowbERRakpaV0VsblpFZEdlbUY1ZDJkYVJ6bDBXVmRzZFU4eGVIVllSelJuU1VOQlowbERRV2RKU0dSdllWZDRiRWxEYUc5YVYwWnJURzAxYkdWSVVYQkpTSFJqWW1sQlowbERRV2RKUTBGblNVTkJaMGxIYUd4WlYxRm5VRk5DYjFwWFJtdE1iVFZzWlVoUk4xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSXdXVmhPY2tsRU1HZGhSMVpvV2tNMU1GbFlUbkpQTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJGSFZtaGFRelV3V1ZoT2NrbEVNR2RrYlRsd1drTkJkMDh4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuV2tjNWRGbFhiSFZKUkRCbllVZFdhRnBETld0aU1qRm9ZVmMwTjFoSE5XTmlhVUZuU1VOQlowbERRV2RKUTBGblNVZHNiVWxEYUd0aU1qRm9ZVmMwY0VsSWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUW05YVYwWnJURzFTZG1KWFJuQmlhVUU1U1VoYWRtRlhVV2ROUkhSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEpyWWpJeGFHRlhOSFZhVnpVd1dsaEpiMHRVZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VneFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlNFb3hZbXhPY0dKdFpITmFVMmd3V1ZoT2NreERRbXRpTWpGb1lWYzBjRTh4ZUhWWVJ6Um5TVU5CWjBsRFFXZEpTREZqWW1sQlowbERRV2RKUTBGblpESm9jR0pIVldkTFIzaG9aRWRXZVZWWVZteGtWMVYxWWtkV2RWb3pVbTlMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFqQlpXRTV5U1VRd1oySkhSakJhV0VwU1pGZFdNVnBUTlhkaU0wRnZTMVIwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0VveFlteE9jR0p0WkhOYVUyZ3dXVmhPY2t0VWRHTmlhVUZuU1VOQlowbERRV2RtVm5oMVNVTkJaMGxEUVdkSlEwSnRZa2hXZW1GSGJIVmFlVUU1U1VkYWFHSklUbXhQTVhoMVNVTkJaMGxJTVdOaWFVRm5TVU5CZGt4NVFubGtWelY2U1VkRloyTXliSFZhTW5oc1NVZGFNV0p0VGpCaFZ6bDFTVWRzZFVsSVVtOWFVMEpvWXpOc2RWbDVRbmhrVjFZeFdsWjRkVWxEUVdkSlIxb3hZbTFPTUdGWE9YVkpTRW94WW14T2NHSnRaSE5hVTJnd1dWaE9ja3hEUW10aU1qRm9ZVmMwY0VsSWRHTmlhVUZuU1VOQlowbERRV2RrU0VvMVNVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpTRkpvWXpKemIwdFVkR05pYkhoMVNVTkJaMGxEUVdkSlEwSTVTVWRPYUdSSFRtOUpRMmhzUzFOQ04xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSndXbWxCYjJGWVRrOWlNbEpzVTJ4TmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFYWk1lVUpLWW1sQ2RXSXlVbXhNUTBJeFltMU9hR1JYWkc5a1EwSnNaVWRPYkdOSVVuQmlNalY2U1VkR2VWcFRRbXBpTWpWNllWZFNiR050Vm10SlIxcG9aRWRHYzBsSFZubGpiVGw1WTNrMVkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CZGt4NVFsTmFVekV3WVVoS2RtUjVRakJoUjFaMFNVaE9OV0p0VG05amJUbDFZak5XZW1KSWEyZGtSemhuWVZjMU1GcFlTbmxrV0VJd1NVZGFjMlJZVG05aFZ6VnVTVlo0ZFZoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMHg1T0dkU1Z6VjZaRmhLYkVsSFRuWmlibEp3WW01V2FHUkhiSFppYVVKd1dtbENNR0ZIVldka1Z6VnFXVmhXYm1GSVVXZGFXR2hxV2xoQ01HRlhPWFZKUjJ4NlNVaE9NV05JUW5sYVdFNTZXbGRTWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJka3g1UW5OaFdFNHdXbGMxY0dKdFkyZFlRMG94WW0xT2FHUlhaRzlrUlZZMFdUSldkMlJIYkhaaWJIZHBTVWRXTWxwWE5UQmplVUZ2V1ZoTloxcEhPWFJaVjJ4MVkzbENhMkl5Vm5wTFV6VmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGMlRIbENSR0l5TlRCaFZ6VXhXbE5DY0dKcFFuVmFXR2d3U1VkV01scFhOVEJKU0ZKMlNVZEdNbUl5Ykd0SlNGSndXVEp6WjJOdFZtcGtXRXA2WVZjNWRVeHNlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsSGJHMUpRMmhyWWpJeGFHRlhOSEJKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloxcEhPWFJaVjJ4MVRHMVdOR0ZZVVc5TFZIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBJNVdFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWXpKV01GWkhiSFJhVnpreFpFTm9iV0pJVm5waFEzZG5UVU5yTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMkZYV1dkTFIxSjJZbGRHY0dKcGEyZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DYTJJeU1XaGhWelIxV2xjMU1GcFlTVzlMVkhSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEk1V0VjMVkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DTUdGSVNuWmtlVUpzVHpGNGRWaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSTVTVWRXYzJNeVZXZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlF6aDJTVVZzZFVsSFNubGlNMlI2V2xoS2VreERRakZpYlU1b1pGZGtiMlJEUW14bFIwNXNZMGhTY0dJeU5YcEpSMFo1V2xOQ2RXSXpVV2RhYlVZd1dWZDNkVmhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloweDVPR2RWYlZWMFpFZG9lV0l6WTJka1IyaHNZbE5DYUdNemJIVlpNbWg1WWpJMWRtUllUbk5sVTBJd1lubENhR1J0T1hCYVEwSjZZa2M1TTB4WFVuWmtNalY2VEd4NGRVbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVWhPYkdSR1VuQmlWMVoyWkZoUmIxcHVWblZaTTFKd1lqSTBaMHREYTJkbE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkNNR0ZJU25aa2VVSnNUekY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVZ3djMGxFUVhCUE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloyWldlSFZKUTBGblNVTkJaMGxEUWpsWVJ6VmpZbWxCWjBsRFFXZEpRMEZuWVZkWlowdEhVblppVjBad1ltbHJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuV2tjNWRGbFhiSFZNYlZZMFlWaFJiMHRVZEdOaWFVRm5TVU5CWjBsRFFXZG1WbmgxU1VOQlowbElNV05pYkhoMVNVTkJaMGxITld4bFNGSlZZVmRPY2tsRU1HZGFibFoxV1ROU2NHSXlOR2RMU0ZKb1l6SnpjRWxJZEdOaWFVRm5TVU5CWjBsRFFXZGtSMFp3WWtOQk9VbElVbWhoVjNkMVltMVdOR1JEUVRsSlNIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbElVbWhqTW5NMlNVaFNhR015YzNOWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ2EySXlNV2hoVnpRMlNVZHNlbFJ0T1d0YVZYQlVTVU5aYlVsSVFubGlNazVzWXpOTmRWcEhPWFJaVjJ4MVRFWjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGliVlkwWkVSdloySnVWbk5pUm5oMVNVTkJaMGxEUVdkSlEwSTVUekY0ZFZoSE5HZEpRMEZuU1VOQlowbEhiRzFKUTJkb1dtMTRNV015YUhCaWJXTndTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUjFwelpGaE9iMkZYTlc1SlJEQm5aRWhLTVZwVWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVaEtiR05ZVm14ak0xSlZZVmRPY2t0RGF6ZFlSelJuU1VOQlowbERRV2RKU0RGalltbEJaMGxEUWpsUE1YaDFXRWMwWjBsRFFXZGhWMWxuUzBoU05XTkhWblphYVVKM1kyMDVhbHBZVG5wSlJEQTVVRk5DWTBsdE9XbGhiVlpxWkVaM2FVbERXVzFZUnpSblNVTkJaMGxEUVdkSlNFSjVZakpPYkdNelRYVmtSemxVWkVoS2NHSnRZMjlMVTBFNVVGUXdaMWhEU21KaU1rcHhXbGRPTUVsSVFubGlNazVzWXpOT1pGaERTV2RLYVZsblkwaEtkbGt5Vm5wamVUVjFXbGhvTUZaSGJHcGhlV3RuWlRGNGRVbERRV2RKUTBGblNVTkJka3g1UWtaaWJrNHhZMjFWWjFWVFFuQmplVUp3WW1sQ2FFbElTbXhaVjNkblZHMDVhMXBUUW14aWJscHdZMjA1ZFdKWFZuVmtRM2RuWkRKc01HRkRRbWhKUjBKM1kyMDVhbHBZVG5wTWJUVnNaVWhTVldGWFRuSlpRelZqWW1sQlowbERRV2RKUTBGblRIazRaMVpIT0dkak1sWnNTVWhTYjJOdE9URmFNbWRuV20xR2NscFRRazlpTWxKc1NVZFdkV1J0YkhsaU1qVjBXbGMxTUdONmNHTmlhVUZuU1VOQlowbERRV2RNZVRoblMybENUbUl5VG05WlUwSXdXbGhPTUVsSVNqRmliVFZzWTJsQmRFbEhWalJqUnpsNldsaE5aMWxUUW1kalNFcDJXVEpXZW1NeVFXZGFNbmgyV1cxR2MwbElaSEJrUjJoMlpGaFJaMWxUUW1kaWJWWTBaRVpTY0ZreWRHZFlSelJuU1VOQlowbERRV2RKUXpoMlNVTnZaMUZ1U25aa00wNXNZMjFzYldWVFFYUkpSMVkwWTBjNWVscFlUV2RaVTBKblkwaEtkbGt5Vm5wamVUVjFXbGhvVldGWFRuSlpRMEp0WkZjMWFtUkhiSFppYVVJd1lVZEdNRWxJVm5wYVdFNWpZbWxCWjBsRFFXZEpRMEZuVEhrNFowbERRbWRqTWxZd1ZrZHNkRnBYT1RGa1IwRjFTVVZzZFVsSVVtOWhXRTFuV1RKR2VscFRRbWRqTWxZd1UxY3hkRnBYVW5CWldGSnNXVU5DY0dONVFuZGpiVlp0V2xoS2VWcFhVV2RaYlZacVdWaFdlbHBXZUhWSlEwRm5TVU5CWjBsRFFYWk1lVUZuU1VOQ2NHUkRRbkJqZVVKdFdWaE9NRnBZU1hWSlJVcDVZak5rZWxwWVNuQmFibXR1WTNsQ1oyTklTblpaTWxaNlkzazFNR0l4VGpCamJXeDFXbmxuY0ZsRFFqVmhWMVp6V2toT1kySnBRV2RKUTBGblNVTkJaMHg1T0dkSlEwSmpTV3gwZGxsdGNHeFpNMUZuVkRKS2NWcFhUakJZVm5kcFRFTkNNMkZIYkhOYVUwSndZbWxDYUVsSVNteFpWM2RuVkcwNWExcFRRbXhpYmxwd1kyMDVkV0pYVm5Wa1JuaDFTVU5CWjBsRFFXZEpRMEYyVEhsQlowbEhRbmRqYlRscVdsaE9la3h0Tld4bFNGSlZZVmRPY2t0RGJHZEpTR3h3V2xkNGEyTjVRbU5KYkhSMldXMXdiRmt6VVdkalNFcDJXVEpXZW1NeE1XTkphVFZqWW1sQlowbERRV2RKUTBGbllWaE9UMkl5VW14VGJFMW5VRk5DTUdOdVZteFBNWGgxV0VjMFowbERRV2RKUTBGblNVaEtiR05ZVm14ak0xSlZZVmRPY2tsRU1HZGFibFoxV1ROU2NHSXlOR2RMUTJ0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGpTRXAyV1RKV2VtTjVOWFZhV0dnd1ZrZHNhbUY1YUcxaVNGWjZZVU5yTjFoSE5HZEpRMEZuU1VOQlowbElNRGRZUnpWalltbEJaMGxEUWpsSlIxWnpZekpWWjJGWFdXZExTRkkxWTBkV2RscHBRbnBhV0ZKS1lsY3hiRnBIYkdoa1IxVm5VRlF3T1VsR2QybGFibFoxV1ROU2NHSXlOV05KYVd0blpURjRkVWxEUVdkSlEwRm5TVU5CZGt4NVFrcGlhVUpLVWxSRmQweERRazlpTWxKc1RHMXdla2xFUVhWUFUzTnpTVWM1ZVVsSGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1U5aU1rcHpXbFZ3VkV3elRteGtSV3gwWWxkV2EyRlhSakJhVm5oMVNVTkJaMGxEUVdkSlEwSndXbWxCYjJSSWJIZGFWemx0U1Voa2NHSnRVblprZVVGb1VGUXdaMWhEU2pGaWJWSnNXbTFzZFZwWFVtTkphV3RuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkamJWWjRaRmRXZW1SR1VuQlpNbk5uVUZOQ2VscFlVa3BpVnpGc1drZHNhR1JIVlhWWmJXeDFXa05vTTJGWE5XdGlNMk56U1VkYWMyUllUbTlMVkhSalltbEJaMGxEUVdkSlEwRm5abE5DYkdKSVRteEpTSFJqWW1sQlowbERRV2RKUTBGblNVTkJaMGxJU214aldGWnNZek5TVldGWFRuSkpSREJuV201V2RWa3pVbkJpTWpSblMwTnJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbElUbXhrUld4MFlsZFdhMkZYUmpCYVUyaHRZa2hXZW1GRGF6ZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNPVTh4ZUhWSlEwRm5TVU5CWjBsRFFqbFlSelZqWW1sQlowbERRamxKUjFaell6SlZaMkZYV1dkTFNGSTFZMGRXZGxwcFFrNWFXRTU2V1Zka2JGRXlhR2hpYlRWc1lrTkJhRkJVTUdkWVEwb3hZbTFTYkZwdGJIVmFWMUpqU1dscloyVXhlSFZKUTBGblNVTkJaMGxEUVhaTWVVSjBZakpTYkdOdE5HZFpia3AyWkROT2JHTnVUbU5pYVVGblNVTkJaMGxEUVdkTWVUaG5ZVWhTTUdORWIzWk1NMlF6WkhrMWRXSXlOV2xpUnpscVlUSnNkVnA1TlhCaWVUaDVUVVJGZUV4NlFUSk1NMlJ3WW0xU2RtUXlOV3hsU0ZJd1lWZE9ja3h0YURCaVYzaGpZbWxCWjBsRFFXZEpRMEZuWkcxR2VVbEhUbTlaVnpWMVdsZDNaMUJUUW5WYVdHTm5WRmRXZW1NeVJtNWFWVTV2V1ZjMWRWcFhkMjlMVkhSalltbEJaMGxEUVdkSlEwRm5USGs0WjFGWVVXZGlSMVpvWXpOUloxVXlSbTFaV0Vwd1NVWmFiR051VG5CaU1qUm5UbWswZDB4cVZXZExSR2N4VFhwWmRVMTZRWFZOVTJ0bllWYzFNRnBZU25SaFdGSXdXbGMxTUdKSWEyZFpNa1oxWW0wNU1FbEhUbmxhVjBZd1dsWjRkVWxEUVdkSlEwRm5TVU5CZGt4NVFqTmlNMHB5WVZjMWJrbEhNV3hqTTA1b1dqSlZaMk5IT1hsa1NFMW5aRWRvYkVsSFduQmpiazR3U1VoU2NHSlhWV2RaVTBKM1dWZGtiRWxIZUhaWlYxSjZUR3g0ZFVsRFFXZEpRMEZuU1VOQ2FtRkhSblZpYlZaelRHNUNkbU51VVhoTWJUbDFZbGRXZW1NeVJtNWFVMEU1U1VkYU1XSnRUakJoVnpsMVNVTm5jRWxJZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VoS2JHTllWbXhqTTFKVllWZE9ja2xFTUdkamJWWjRaRmRXZW1SR1FuWmpibEpWWVZkT2NrOHhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5XVEpvYUdKdE5XeGlRelYzWWpOS01FMVROWFppYlRGc1l6Tk9hRm95VldkUVUwSnRZa2hXZW1GRWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVZGFjMlJZVG05TFEyczNXRWMwWjBsRFFXZEpRMEZuU1Vnd04xaEhOR2RKUTBGblNVTkJaMGxJV21oamFVSjVXbGhHTVZwWVRqQlZSemw1WkVaU2NGa3ljMmRRVTBKdFpGYzFhbVJIYkhaaWFVRnZTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGMlRIbENVR05IVm5sWlUwSjVXbGhHTVdGWVNteGplVUl4WTNsQ01HSjVRbmRqYlRreVlWZFNiRWxIUldkaVYxWjZZekpHYmxwVFFuZFpXR3h6WWpKR2EweERRbmxhVjJSb1kyMVNjMXBZVG5wSlJ6bHRXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRWFpNZVVJellVZFdNR0ZIVm5sSlNHUnNTVWhXZWxwVFFuQmtRelZqWW1sQlowbERRV2RKUTBGblNVTkJaMGxIVG05WlZ6VjFXbGQzZFdOSE9YbGtSRWwxWTBjNWVtUkZNV3hqTTA1b1dqSlZiMDFEYXpkWVJ6Um5TVU5CWjBsRFFXZEpTREEzV0VjMFowbERRV2RKUTBGblNVaEtiR05ZVm14ak0xSlZZVmRPY2tsRU1HZGFibFoxV1ROU2NHSXlOR2RMUTJ0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGpNbFl3Vmtkc2RGcFhPVEZrUTJodFlraFdlbUZEZDJkTlEyczNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRbmxhV0VZeFdsaE9NRlZIT1hsa1JsSndXVEp6YjB0VWRHTmlhVUZuU1VOQlowbERRV2RtVkhSallteDRkVWxEUVdkSlNEQm5XbGQ0ZWxwVFFqZFlSelJuU1VOQlowbERRV2RKUXpoMlNVYzVjMXBEUW1samJUa3pZekpXZVdNeGVIVkpRMEZuU1VOQlowbERRbmxhV0VZeFdsaE9NRlpIYkdwaGVVRTVTVWRhTVdKdFRqQmhWemwxU1VObmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWhPYkdSR1VuQmlWMVoyWkZoUmIxcHRlREZqTW1kelNVUkJjRTh4ZUhWSlEwRm5TVU5CWjBsRFFqbFBNWGgxU1VOQlowbElNV05pYVVGblNVTkJka3g1UW5sa1Z6VjZTVWRGWjJSSFJucGhlVUpvV201U2JHTnBRbWhpUjNkbllqTlNiMXBZU1dka1IwWjZZVE5OWjJGSFJqSmFVMEpwV2xkV2RVbElTakZpYkhoMVNVTkJaMGxET0haSlNGSnZZVmhOWjJGWVRXZGtXRTVzV201V2MwbEhXblpqYVVJeFltMW9hR0p0VW5OYVYxRm5ZMjFXY1ZwWFRqQmhWemwxU1VoU2VWbFhUbkpoVnpWdVNVaFNiMWxZVVdkaWJWWnNXa2hOWjJSSE9HZGhSMFozWTBkV2RWaEhOR2RKUTBGblRIazRaMWxYV2pCYVdFbG5XVmQ0YzBsSFFqQmhSMVoxV1VkUloyUkhSbnBoTTAxbllVZEdNbHBUUW1sYVYxWjFTVWhLTVdKcE5XTmlhVUZuU1VOQ2RWcFlhREJXUjJ4cVlYazFlV1JYTlVKYWJsSnNZMmxCT1VsSFdqRmliVTR3WVZjNWRVbERhREJaV0U1eVMxTkNOMWhITkdkSlEwRm5TVU5CWjBsSGVHaGtSMVo1VlZoV2JHUlhWWFZqU0ZaNllVTm9NRmxZVG5KTFZIUmpZbWxCWjBsRFFXZEpRMEZuWVZkWlowdERSbTFpU0ZaNllVZHNkVnA1YTJkbE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloxcHRlREZqTW1od1ltMWpaMUJUUWpCamJsWnNUekY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RqYlZaNFpGZFdlbVJHVW5CWk1uTnZTMVIwWTJKcFFXZEpRMEZuU1VOQloyWldlSFZKUTBGblNVZ3dOMWhITkdkSlEwRm5ZMjFXTUdSWVNuVkpSelZzWlVoU1ZXRlhUbkpQTVhoMVpsTnJiMHRVZEdOaWJIaDFUSGs0WjFGWVVqQmFWekYzWkVOQ01HSjVRblJaVjNSc1NVZGtiR0p0Vm5saFYwNTZTVWhPYUZwdFZXZGhWelJuWkVkb2JFbEhXbWhaTWxWbllqSlpaMXBIT1ROaWJrNHdZMjFXYUdKV2VIVk1lVGhuWWxjNWEyRlhXbkJaTWtZd1lWYzVkV041TldOaWFUaDJTVVpTYjFwWVNteEpSMng2U1VjMWRrbElUbkJrU0Zab1pFZHNkbUpwUWpOaFIxWjVXbE5DTUdGSGJIcEpSMng2U1VjMWJGa3lWbnBqTWtaNVpWTTFZMkpwT0haSlJXeHRTVWhzZG1SVFFuVmFWMVpyU1VkRloyTXlWbXBrV0Vwd1pFaHJaMW96Vm1oamJVWjFaRWRXYkV4RFFqQmhSMVo2V2xOQ2QyTnRiSFJpTTBwcllWZEdjMk41UW5WYVYxWnJTVWhTZGtsSFNteFlSelIyVEhsQ2ExcFhWbmRpU0d0bldtNUtkbVZ0Vm5WSlIwWjFaVmhrYUdWVGQyZFpWelZyU1Vkc2JVbEliSFprVTBKcllqSTNhV2RLYkRCSlJ6VnNXbGRSWjFsVFFucGFWMDR4WTIxc01HVlRRbTVrVjBaNVdWYzFNRnBYVlhOWVJ6UjJUSGxDTUdGSGJIcEpSMng2U1Vkd01XTXpVV2RqUjNob1lWYzBaMk5IUm5sWlZ6VjJZVmRSZFZoSE5IWk1lVUpKWWpOa2JHUnRWbmxNUTBJd1lVZHNla2xEYjNGaVYyeHVZVWhSY1V0cFFtOVpXRnBzU1VoU2IxcFRRblZoVjA1c1NVaE9jRnBIVlhSYVYxcHRXbGRPTUVsSE9XMUpTRXBzV2toV2FtRlhOVzVKU0ZKdldsTkNlbUZZY0d4SlJ6bHRXRWMwZGt4NVFqQmhSMVZuWWxkc2RXRlhXbkJhVjFGbldUSTVhMXBUUW1sbFUwSjVXbGRTTVZreWJIVmFlVUkwVEcxT2FHSkhkMjlMVTBJd1lubENkRnBZU214aVNHdG5aVU5uY0ZoSE5IWk1lVUpVV2xkVloxUlhSbmxoZVVKT1lWZDRjMXBZVEdsblNteDZTVWRXTkdOSGVHaGliVVl3WVZjNWRVbEhPVzFKU0dSdldWaFJaMlJIYUhCamVVSnJZakpXZWt4c2VIVk1lVGhuWVVoU01HTkViM1pNTTJSd1lUSnJkVnBYVG5SWldFNXFZMjFzZDJSRE5YWmpiV04yV2tjNWNtUlROWGRoU0VFdllWZFJPVmt5T1hWa2JWWjFaRWRzZG1KdVRUWmpNa1p0V2xZNWRGcFlVbWhZTTBKNVlqSmtlVmxYTVhSaFZ6VnVXRWMxTWxsWVNXZFpNa1p6WWtOQk9VbEZXakZpYlU0d1lWYzVkVXh0VG1oaVIzYzNXRWMxYldSWE5XcGtSMngyWW1sQ01XSnRUakZqYmtvMVZrZG9jR041YUcxTFUwSTNXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEhXakZpYlU0d1lWYzVkVWxEWjNCSlNIUmpZbWxCWjBsRFFXZEpRMEZuWTIxV01HUllTblZKUjA1b1lrZDNkVmxZUW5kaVNHdHZXbWwzWjFsWVNtNWtWekZzWW01U2VrdFVkR05pYVVGblNVTkNPVTh4ZUhWbVZuaDFUSGs0WjFaSGFIQmplVUp3WTNsQ2JHTllWbkJrYlVaeldsYzFNRXhEUW1sa1dGRm5Zeko0ZG1ReVZubFBiSGgxVEhrNFoyUlhOV3BrV0VwNVpWWlNiMkZZVFdkUVUwSkhaRmMxYW1SSGJIWmliRGxwWVZjMWEweHRTbkJpYlZGdlVtNVdkVmt6VW5CaU1qVm1XVzFzZFZwRE5XcFpWM2h6UzFSMFkySnBPSFpKUjJnd1pFaEJOa3g1T1hGak0wSnNZMjFaZFZreU9YUk1NMVoxV1ROV2VXTnViREJoUjJ4NldFYzFZMkp1V21oamFVSm9ZMjVLYUdWV09YcGlSMnhxV2xOQk9VbElWblZaTTFaNVkyNXNWV0ZIYkhwTFJVWjVZMjFHTlV4dVFubGlNMUoyWkVoc2QxcFROWHBpUjJ4cVdsTnJOMWhITldOaWJscG9ZMmxDYUdOdVNtaGxWamw1V2xkU01Wa3lWV2RRVTBJeFltMU9NV051U2pWV1IyaHdZM2xvWTJKcFFXZEpRMEpDWTI1S2FHVlROWGRqYlRrd1lqTlNOV05IVlhWamJWWnJaRmRPYkVsSWVEaEpSMW94WW0xT01HRlhPWFZKUTJocVdWZDRjMWx0Um1waGVYZG5XVzFHZW1GWVRYQkpTSFJqWW1sQlowbERRV2RKUTBGblpHMUdlVWxIYkhWYVIxWTBTVVF3WjAxRGVHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVZDRiR0p0WkRCaFEwRTVTVWhTYjJGWVRYVmlSMVoxV2pOU2IwOHhlSFZKUTBGblNVTkJaMGxEUVhaTWVVSnFZakkxYWxwWVNuVmhWelZ1U1VoU2IxcFRRbkJpYld3d1lWZEdjMGxJV21oaVNGWnNURU5DY0ZwcFFuWmliVlZuWVZoTloySnRPVEJKU0VKNVlqTmFjRnBIVm10WVJ6Um5TVU5CWjBsRFFXZEpSMnh0U1VOb2FHTnRaREZpVjFaMVpFaE5kV0pIVm5WYU0xSnZTVVF3T1ZCVFFYaExVMEkzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUVhaTWVVSjZXbGRXY2tsSVVuWkpTRkp2V2xOQ2JXRllTbnBrUTBJeVdWZDRNVnBUUW5CaWFVSXdZVWRWWjFsWVNubFpXR3R6U1VkR2Fsa3lPVEZpYmxKd1ltMWtZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRemgyU1VkYWRtTnBRakJoUjFWblkwYzVlbU15YkdsaFYzaHdaRWhyWjJSSGFHaGtRMEp3WTNsQ2NHTjVRbWhKU0U1M1dWaEtlbHBUUW1oamJrcG9aVlo0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RhUnpoblpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1Vkc2JVbERhSEJpYlZKc1pVTkNjR0pwUWpCaFIyeDZTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlIwcG9ZekpzZWtsRU1HZGtSMmh3WXpGMGNHSnRVbXhsUTNOeVdGUjBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RaYmtwc1dWZHpOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloyWldlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsSGJHMUpRMmR5U3pKc2RWcEhWalJKUkRRNVNVZDRiR0p0WkRCaFEydG5aVEY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUWpCaFNFcDJaSGxDZFZwWVkyZFdTR3gzV2xWV2VXTnRPWGxMUTJzM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWmxaNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkbVUwSXpZVWRzYzFwVFFXOU5VMnMzV0VjMFowbERRV2RKUTBGblNVZ3hZMkpwUVdkSlEwRm5TVU5CWjB4NU9HZGpiVlpyWkZkT2JGaEhOR2RKUTBGblNVTkJaMGxIV25aamFVRnZUM2xDY0dKdFVteGxRMEU0U1VkNGJHSnRaREJoUkhObllWYzFhMXBZWjNKTGVXdG5aVEY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RNZVRobldWZE9hbUl6Vm5Wa1EwSnRZak5KWjJSSGFHeEpTRUoyWXpOT2NGbHRiSE5oV0ZJMVNVaFNiMWxZVVdka1IyaHNTVWRHZVdOdFJqVkpSMng2U1VoT2QxbFlTbnBhVm5oMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJGWFdXZExSMngxV2tkV05FbEhiSFZKU0ZKdllWaE5jRWxJZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRbWxaV0U1d1kzbEJPVWxIVG1oaVIzaHBXVmRPY2t0SFNtaGpNbXg2VEVOQ01HRkhiSHBYTW14MVdrZFdORmhUZDJkaFZ6VnJXbGhuY0U4eGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5TVU5DT1ZoSE5HZEpRMEZuU1VOQlowbElTbXhrU0ZaNVltbENhVmxZVG5CamVuUmpZbWxCWjBsRFFqbFlSelJ3VHpGNGRWaEhOVEpaV0VsbldWaEtlVmxZYkdaaFZ6VnJXbGhvVUZwcFFUbEpTRloxV1ROV2VXTnViRlZoUjJ4NlMwWjRkVWxEUVdkSlJVWjVZMjFHTlV4dVFubGlNMUoyWkVoc2QxcFROWEJpYlZKc1pVVTViVWxJZURoSlIxb3hZbTFPTUdGWE9YVkpRMmd5V1ZkNE1WcFRhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRjJUSGxDZFdJelVXZFpVMEl5V2xoS05VbEhaSFppTWxGbll6Sm9jR0pUZDJkWmJsWXdTVWRrZG1JeVVXZGFWelYyWkZka2IwbEhXblpqYVVKMlpGaEpaMkl5Tld4SlNGWjZXbE5DZGxwcFFuQmtSbmgxU1VOQlowbERRV2RKUTBKdFlqTkpaMHRJV21oamFVSndTVVF3WjAxRWMyZGhVMEU0U1VoU2IyRllUWFZpUjFaMVdqTlNiMDk1UW5CTGVYTndTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUjJ4dFNVTm9NR0ZIYkhwWE1teGtTVVF3T1ZCVFFqSlpWM2d4V2xOcloyVXhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsSVNteGtTRlo1WW1sQ2NFOHhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5abFo0ZFVsRFFXZEpRMEZuU1VOQ09WaEhOR2RKUTBGblNVTkJaMGxJU214a1NGWjVZbWxCZEUxVWRHTmlhVUZuU1VOQ09WaEhOSEJQTVhoMVdFYzFNbGxZU1dkWldFcDVXVmhzWm1KWFJuZEpSREJuWkZjMWFtUllTbmxsVmxKdllWaE5iMWhITkdkSlEwRm5VVmhLZVZsWWEzVmpTRXAyWkVjNU1HVllRbXhNYlRGb1kwTkNPR1pEUW0xa1Z6VnFaRWRzZG1KcFFXOVpNa1p6WWtkS2FGa3ljM05KU0ZKdllWaE9kMHRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpTRnBvWTJsQ2VscFhlRzFKUkRCblpFZG9jR042ZEdOaWFVRm5TVU5CWjBsRFFXZGtiVVo1U1VkT2RtSkhlR3haTTFGblVGTkNZbGhVZEdOaWFVRm5TVU5CWjBsRFFXZFpXRXA1V1Zoc1ptTnRWbXRrVjA1c1MwaE9iR0pIV1hOSlIxb3hZbTFPTUdGWE9YVkpRMmd4WW0xU2JGcHRiSFZhVjFGelNVaGFhR0pJVm14TVEwSndZbTFTYkdWRGEyZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMWt5T1hOaVIxWnFaRU0xZDJSWVRtOUxSMDVvWWtkNGFWbFhUbkpNYlU1b1lrZDNiMlJIYUhCak0wRnpTVWhhYUdKSVZteE1RMEp3WW0xU2JHVkRkMmRqTWxaeldtbHJjRTh4ZUhWSlEwRm5TVU5CWjBsRFFqbE1RMEl5WWpKc2EwbEVRWEJQTVhoMVNVTkJaMGxEUVdkSlEwSjVXbGhTTVdOdE5HZFpNamx6WWtkV2FtUkVkR05pYVVGblNVTkNPVmhITkhCUE1YaDFXRWMxTWxsWVNXZGlNa3B4V2xkT01GZ3lUbmxhVjBZd1dsTkJPVWxGT1dsaGJWWnFaRU0xYW1OdFZtaGtSMVZuWmtoM1oxcHVWblZaTTFKd1lqSTBaMHRJUW5saU0xSjJaRWhzZDFwVGEyZGxNWGgxU1VOQlowbEhXakZpYlU0d1lWYzVkVWxHVWpWalIxVnZTMU5DTjBsSU1XTmlhVUZuU1VOQ1ZXVllRbXhNYmtKNVlqTlNkbVJJYkhkYVUwRTVTVWhDZVdJelVuWmtTR3gzV2xSMFkySnBRV2RKUTBKNVdsaFNNV050TkdkaWJWWXpTVVpTTldOSFZXOUxWSFJqWW00d04xaEhOV05pYmxwb1kybENkbGx0Y0d4Wk0xSm1ZVWRHZWxRelpIVlZTRXAyWTBkV2VXUklhMmRRVTBJeFltMU9NV051U2pWV1IyaHdZM2xvVUZsdGNHeFpNMUYxWTBoS2RtUkhPVEJsV0VKc1RHMW9hR013T1ROaWJFSjVZak5DYkdOdVVqVkxWSFJqWW14NGRXUnRSbmxKUnpscFlXMVdhbVJHT1hKYVdHeDZTVVF3WjFReVNuRmFWMDR3VEcxMGJHVllUV2RtU0hkbldtNVdkVmt6VW5CaU1qUm5TMGM1YVdGdFZtcGtRMnRuWlRGNGRVbERRV2RKU0Zwb1kybENjbHBZYkhwSlJEQm5WekV3TjFoSE5HZEpRMEZuV20wNWVVbERhREpaV0VsbllUSldOVWxIYkhWSlJ6bHBZVzFXYW1SRGEyZGxNWGgxU1VOQlowbERRV2RKUTBKd1dtbEJiMkl5U25GYVYwNHdXREpvYUdNd09UTmliRUo1WWpOQ2JHTnVValZMUnpscFlXMVdhbVJEZDJkaE1sWTFTMU5yWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGbllUSldOV041Tlhka1dFNXZTMGQwYkdWVGF6ZFlSelJuU1VOQlowbERRV2RKU0RGalltbEJaMGxEUWpsWVJ6Um5TVU5CWjJOdFZqQmtXRXAxU1VkMGJHVllUVGRZUnpVNVR6RjRkVmhITlRKWldFbG5ZakpLY1ZwWFRqQllNMUoyVlROU2VXRlhOVzVKUkRCblpGYzFhbVJZU25sbFZsSnZZVmhOYjFReVNuRmFWMDR3VEc1Q2VXSXpVblprU0d4M1dsTTFNR0l4VGpCamJXeDFXbmxyTjFoSE5XTmliVm94WW0xT01HRlhPWFZKUjJ4NlZESktjVnBYVGpCTFNGcG9Za2hXYkV0VFFqZFlSelJuU1VOQloyTnRWakJrV0VwMVNVaGFhR0pJVm14SlJEQTVVRk5DVUZsdGNHeFpNMUZ2WkcxR2MyUlhWWEJQTVhoMVpsWjRkVmhITkhaTWVVSnVXbGMxYkdOdFJqQmlNMGxuWTIxV2MxbFlVbXhhUTBKNllVZHNkR014ZUhWWVJ6UjJUSGxDUjFOV2FFNVNWRzluVlcxV2RHSXpXbXhKU0ZKdllWaE5aMXB1Vm5WWk0xSndZakkwWjJJeU5XcGFVMEpHVlhwWloxb3lWblZhV0Vwb1pFYzVlV041UW1oamJWVm5ZVmMwWjFVelFuQmFSMVo1VkZjNWRXRXlWalZNYkhoMVdtNVdkVmt6VW5CaU1qUm5ZVmhPVkdSSE9YZFRXRkpzWTIxR01HRlhPWFZMUjFZMFdUSldkMlJIYkhaaWFXdG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRVzlZUnpSblNVTkJaMGxEUVdkSlJ6bHBZVzFXYW1SR09UQmlNVTR3WTIxc2RWcDVhR3hsUjA1c1kwaFNjR0l5TkhCSlJEQTVVRk5DWTBsc2RIWlpiWEJzV1ROUloxVXpVblpqUld3d1dsaEthR1JIYkhaaWJERmpTV2xDT0daR2VIVkpRMEZuU1VOQlowbERRbXhsUjA1c1kwaFNjR0l5TkdkaFZ6VjZaRWRHZFZreVZuWmFhVUpTVlcxV01HUllTblZXYlVaelpGZFdZMkpwUVdkSlEwRndUekY0ZFdaV2VIVllSelIyVEhsQ1IxTldhRTVTVkc5blZXMVdkR0l6V214SlNGSnZZVmhOWjJGSFZuTmpSMVo1U1VkR2RWcERRbEpNYmtwc1pFaFdlV0pwUW5aaWJVNXNTVVZXVkU1cFFtNWFWelZzWTIxR01HSXpTbnBKUjBaNVdsTkNjR0pzZUhWTWVUaG5WVE5DY0ZwSFZubFVWemwxWVRKV05VeHNlSFZrYlVaNVNVWkdVMXBZVWpGamJUVlhXVmQ0TVZwVWRHTmliV3h0U1VOb01HVllRbXhpTWxsblZXMVdNR1JZU25WV2JVWnpaRmRWWjBsVU1EbEpSbmRwWkZjMWExcFhXbkJpYlZacldFTkpjRWxJZEdOaWFVRm5TVU5DVWxWdFZqQmtXRXAxVm0xR2MyUlhWV2RRVTBKVFdsaFNNV050TlZkWlYzZ3hXbFIwWTJKdU1HZGFWM2g2V2xOQ04xaEhOR2RKUTBGblZWWktiR1JJVm5saWJGcG9Za2hXYkVsRU1HZGFibFoxV1ROU2NHSXlOR2RMU0Zwb1lraFdiRXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpTRkp2WVZoTmRXUnRSbk5rVjFWblVGTkNNbGxYZURGYVZIUmpZbWxCWjBsRFFqbFBNWGgxWmxaNGRWaEhOSFpNZVVKellqSTFia2xJVGpCWlYwNXlTVWhTZVZsWFRteGpNWGgxV0VjMU1sbFlTV2RWTVZKQ1VUQjBabE5zVms1VlJqbFVVbFpDUWxWclJsVlVNVWxuVUZOQ1kwbHJXbmxpTWpCblkwaEtiR1J0Ykhaa1dFMW5XbGhhYkdKdVVUWllRMGszV0VjMVkySnRXakZpYlU0d1lWYzVkVWxITVdoaE1sWlVaRWRHYW1FeFVubFpWMDVzVkVjNWRWcDVhR3hqYmtwMlkybDNaMk5JU25aaVYyeDZXbE5yWjJVeGVIVkpRMEZuU1VNNGRrbEZiRzFKU0VKMll6Tk9jRmx0ZUd4TVEwSXdZMjFHZFdNeVduWmpiVEJuWkVkb2JFbEhWbmxqYlRsNVNVaE9NRmxYVG5KSlNGSjVXVmRPYkVsSFNqVkpTRXBzWWxjNU1tRlhOVzVKUlRWMldrZFZaMWxYTld0SlJrWmpZbWxCWjBsRFFYWk1lVUpxWTI1V2JXUkRkMmRrUjJoc1ltbENhbUl5TldwWldGSnNZbTFHTUdGWE5XNUpTR1J3WkVkbloyUkhhR3hKU0U0d1dWZE9ja2xJVW5sWlYwNXNTVWM1YlVsSFFuZGpiVGwwWVZoT2JGbEROR2RWTWxac1NVTk5NVTU1TldOaWFVRm5TVU5DY0ZwcFFXOWhSMFo2VlROU2FGa3lkSHBKUTFsdFdFYzBaMGxEUVdkSlEwRm5TVWhDZVdJeU1YQmpNbFYxWXpOU2FGa3ljMmRLYVZwalltbEJaMGxEUVdkSlEwRm5aRWhzZDFwWE9XMUpSMVo1WTIwNWVVbEVNRGxRVTBKalNXMDVhV0Z0Vm1wa1JuZHBTVU5aYlZoSE5HZEpRMEZuU1VOQlowbEhWbmxqYlRsNVNVTkZPVkJUUW5Wa1YzaHpTVU5aYlZoSE5HZEpRMEZuU1VOQlowbEhWbmxqYlRsNVRHNU9NRmxYVG5KSlExbHRXRWMwWjBsRFFXZEpRMEZuU1VkV2VXTnRPWGxNYms0d1dWZE9ja3h0YkhWYVIxWTBWREpaYjFVeFVrSlJNSFJtVTJ4V1RsVkdPVlJTVmtKQ1ZXdEdWVlF4U1hCSlJEQTVVRk5CZEUxV2VIVkpRMEZuU1VOcloyVXhlSFZKUTBGblNVTkJaMGxEUWpKWldFbG5Zek5TYUZreWRIcEpSREJuVnpFd04xaEhOR2RKUTBGblNVTkJaMGxIV25aamFVRnZaRzFHZVVsSVFXZFFVMEozWTIwNWRHRllUbXhQZVVGb1NWaEJOMGxJUVdkUVUwSjNURzVPZG1SWVNtcGFVMnRuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkaFYxbG5TMGhCZFdNelVtaFpNbk53U1VoMFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DZW1SSFJtcGhNMDExWkZjMWVtRkhiRzFrUTJoM1RHNU9NRmxYVG5KTFZIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbElNV05pYVVGblNVTkJaMGxEUVdkbVZuaDFTVU5CWjBsRFFXZEpRMEo2WkVkR2FtRXpUWFZrVnpWNllVZHNiV1JEYUd4amJrcDJZMmsxZW1SSFJtcGhlV3MzV0VjMVkySnBRV2RKUTBGblNVTkJaMlJ0Um5sSlIwNTJZbTFPYUdSSFZtdFZNMUpvV1RKMGVrbEVNR2RqTTFKb1dUSjBla3h0Y0haaFZ6UnZXRU5LWTFoSE5XTkphVUZ5U1VaT1ZWRlZUa3hZTUhCV1ZGWkNabFV3VmxGUlZrcENWa1U1VTBsRGMyZFlRMHBqV0VjMVkwbHBhemRZUnpSblNVTkJaMGxEUVdkSlIxWjVZMjA1ZVV4dVRqQlpWMDV5U1VRd1oxcHRiSE5rUjFaNVZUTlNhRmt5ZEZSa1NFcHdZbTFqYjFreU9YVlpNa1l3V2xkU1ZHUkhSbXBoTTAxd1R6RjRkVWxEUVdkSlNERmpZbTR4WTJKc2VIVmFibFoxV1ROU2NHSXlOR2RhYld4elpFZFdlVlV6VW1oWk1uUlVaRWhLY0dKdFkyOWpNMUpvV1RKMFZHUklTbkJpYldOd1NVaDBZMkpwUVdkSlEwSXlXVmhKWjJKSGJIVmFXRTFuVUZOQ2VtUkhSbXBoTVU0d1kyMXNkVnA1TlhwalIzaHdaRU5vWTBsc2VHTmliSGRwUzFSMFkySnBRV2RKUTBJeVdWaEpaMXBIVm5waFdFcHNXa1Y0Y0dKdFZucEpSREJuVnpFd04xaEhOR2RKUTBGbldtMDVlVWxEYURKWldFbG5ZVk5CT1VsRVFUZEpSMnRuVUVOQ2MyRlhOV3hqZVRWeldsYzFibVJIWnpkSlEzTnlZVk5yWjJVeGVIVkpRMEZuU1VOQlowbERRakpaV0VsbllrZHNkVnBUUVRsSlIzaHdZbTFXZWxjeWJHUlBNWGgxV0VjMFowbERRV2RKUTBGblNVZHNiVWxEWjJoaFdFNUtZbTVTYkdOdE5XaGlSVnA1V1ZjeGJFdEhlSEJpYlZWd1NVTlpiVWxEUm5Cak1EVjJXa2RXUjJOdFJuUmFVMmh6WVZjMWJFdFRRVzFLYVVKellWYzFiRXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ2ExcFlUbkJqYlZaclZFZHNkVnBZVFhWalNGWjZZVU5vYzJGWE5XeExWSFJqWW1sQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlNERmpZbWxCWjBsRFFubGFXRkl4WTIwMFoxcEhWbnBoV0Vwc1drVjRjR0p0Vm5wTWJYQjJZVmMwYjFoRFNtTllSelZqU1dsck4xaEhOVGxZUnpWalltMWFNV0p0VGpCaFZ6bDFTVWRzZWxSdE9XdGFWVnA1V1ZjeGJFdElUakJaVjA1eVZFZHNkVnBUYTJkbE1YaDFTVU5CWjBsSVNteGtTRlo1WW1sQ2VtUkhSbXBoTUhod1ltMVZkV0ZYTld0YVdHaFFXbWxvWTBscGFIUmlNbEl4WWtkVmRXRnVUVFpZUTBsd1NVTkZPVkJUUVhSTlUwSTRaa1o0ZFVsRFFXZEpRMEZuU1VOQlowbERRbnBrUjBacVlUQjRjR0p0VlhWaFZ6VnJXbGhvVUZwcGFHTkphV2gxWWpKU2JFeHRjSHBQYkhkcFMxTkJhRkJVTUdkTVZFVTNXRWMxT1ZoSE5XTmliVm94WW0xT01HRlhPWFZKUjJSc1pFVmFjR0pIVms5WlZ6RnNVVmMxYTFSSGJIVmFWVFV4WWxkS2JHTnBhSHBrUjBacVlUQjRjR0p0VlhCSlNIUmpZbWxCWjBsRFFYWk1lVUpQV1ZjeGJGcERRbTFrVnpWcVpFZHNkbUp1VFRaSlJuZHBXVmhSWjFwdVZuVlpNMUp3WWpJMVQxbFhNV3hKUTJodFlWZDRiR0p0Um5SYVZIQnpZVmMxYkZSdVZuUlpiVlo1VDIxT2RtSklWblJpYXpVeFlsZEtiR05wYkdOSmJIaDFTVU5CWjBsRE9IWkpSV3gxU1VWc1JrMVVRV2RhYmxaMVdUTlNjR0l5TkdkaWJVWjBXbE5DYWxsWE5HZGhSMFl5V2xOQ2VtTkhSbXBhV0UxblMwWjNhVkZYTlhaaWJteDBZak5XZWtsSFdqRmliVTR3WVZjNWRWaERTWEJKUlRsbVlqRjRkVWxEUVdkSlNGcG9ZMmxDYUdSSVVteGlXRUl3VFZOQk9VbERPV2hrUTBGMVMzbENZMWhEWjI5TWFYTndUMmxvWTFoSFVYSkxWRzl2VUhwd1kxaEhVWEpMVm5oalMxTlJka3h0VmpSYVYwMXZZek5TYUZreWRFMWhWelZzUzFSMFkySnBRV2RKUTBKd1dtbEJiMWxZVWpCYVZ6RjNaRVJGY0VsSWRHTmlhVUZuU1VOQlowbERRV2RqYlZZd1pGaEtkVWxHZEdoa1NGSnNZbGhDTUUxV2MzaFlVM2RuVkc1V2RGbHRWbmxMUjBZd1pFZFdkR05JVVhoWGVrcGtTMVl3TjFoSE5HZEpRMEZuWmxaNGRWaEhOR2RKUTBGblRIazRaMUZYTlhaaWJteDBZak5XZWtsSFdqRmliVTR3WVZjNWRXTjZiMmRZUTBwb1pFTkNiV0ZYZUd4aWJVWjBXbFJ3YzJGWE5XeFVibFowV1cxV2VVOXRUblppU0ZaMFltczFNV0pYU214amJIZHBXRWMwWjBsRFFXZGtiVVo1U1VkR01HUkhWblJqU0ZGNVNVUXdaMHd5UmpCSlEyaGlXR2xDWkV0NWF6WkxSbmhqV2tOemNFOXBaeTlQYkhoaldrTnpjRXBET0hWYVdHaHNXWGxvZW1SSFJtcGhNSGh3WW0xVmNFOHhlSFZKUTBGblNVZHNiVWxEYUdoa1NGSnNZbGhDTUUxcGEyZGxNWGgxU1VOQlowbERRV2RKUTBKNVdsaFNNV050TkdkWE1rWXdaRWRXZEdOSVVYbFhla1prVEVOQ1QyUlhNV2xhV0VsdldWaFNNRnBYTVhka1JFcGlUV3d3Y0ZoVWRHTmlhVUZuU1VOQ09WaEhOV05pYVVGblNVTkJka3g1UWtkaFdFcHNXbTA1TkVsSVRqQmxWM2hzVDJsQ1kwbHRXakZpYlU0d1lWYzVkVkZIV25CaVIxWjFXVmN4YkU5dGVIQmliVlpQWkZjeGFWcFlTV2RpTTBsblVVZGFjR0pIVm5WWlZ6RnNUMjE0Y0dKdFZrOWtWekZwV2xoS1kwbHNlSFZKUTBGblNVaGFhR05wUW1oa1NGSnNZbGhDTUUxNVFUbEpRemgxUzJ0QmIweHBjM0JQYVdoaldFZFJja3RUVVhaTWJWWTBXbGROYjJNelVtaFpNblJOWVZjMWJFdFVkR05pYVVGblNVTkNjRnBwUVc5WldGSXdXbGN4ZDJSRVRYQkpTSFJqWW1sQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlJuUm9aRWhTYkdKWVFqQk5NWE40V0ZOM1oxUnVWblJaYlZaNVMwZEdNR1JIVm5SalNGRjZWM3BLWkV0V01EZFlSelJuU1VOQloyWldlSFZtVm5oMVdFYzFiV1JYTldwa1IyeDJZbWxDY0dNd2JIVmtSMVo1WW0xR2MxSnVTbWhpVjFWdll6TlNhRmt5ZEUxaFZ6VnNTMU5DTjFoSE5HZEpRMEZuWkcxR2VVbEhXbkJpUjFaUFdWY3hiRkZYTld0VVIyeDFXbFUxTVdKWFNteGphVUU1U1Vka2JHUkZXbkJpUjFaUFdWY3hiRkZYTld0VVIyeDFXbFUxTVdKWFNteGphV2g2WkVkR2FtRXdlSEJpYlZWd1R6RjRkVmhITkdkSlEwRm5ZVmRaWjB0RFJtMWhWM2hzVkcxR2RGcFZSblZhUlhod1ltMVdUMlJYTVdsYVdFbHdTVWgwWTJKcFFXZEpRMEZuU1VOQloyTnRWakJrV0VwMVNVZGFhR0pJVG14UE1YaDFTVU5CWjBsSU1XTmliSGgxU1VOQlowbElXbWhqYVVKdFlWZDRiRlJ0Um5SYVUwRTVTVWRhY0dKSFZrOVpWekZzVVZjMWExUkhiSFZhVlRVeFlsZEtiR05zYzNkWVZIUmpZbWxCWjBsRFFqSlpXRWxuWWtkc2RWcFZOVEZpVjBwc1kybEJPVWxIV25CaVIxWlBXVmN4YkZGWE5XdFVSMngxV2xVMU1XSlhTbXhqYkhONFdGUjBZMkpzZUhWSlEwRm5TVWhLYkdSSVZubGlhVUp0WVZkNGJGUnRSblJhVTBFNVVGUXdaMk5WV25CaVIxWlBXVmN4YkVsRFdXMVlSelJuU1VOQlowbERRV2RKUjNod1ltMVdUMlJYTVdsYVdFbG5VR293WjJOV1RqQlpXRW93WVZjMWJsUkhiSFZhVTBGdFNteDRkVWxEUVdkSlEwRm5TVU5DYzJGWE5XeFVibFowV1cxV2VVbEVkemxKU0VaR1ltMVNjR0p0WkUxaFZ6VnNUekY0ZFdaV2VIVllSelIyVEhsQ2EyRllUbXBpTTFwc1kybENkbVF5TkdkYWJXeHpXbE5DZFZsWE1XeEpSMFoxV2tOQ2MyRlhOV3hKUnpVeFlsZEtiR05wUW5sWlZ6VnVXbE5DYldJelNXZGFiV3h6WkVkV2VXRlhOVzVKU0U0d1dWZE9jbGhITkhaTWVVSXdZMjFHYWxwWVRtTmliVm94WW0xT01HRlhPWFZKUjA1b1kwaFNNV050VmsxaFZ6VnNTME5yWjJVeGVIVkpRMEZuU1Vkc2JVbERaMmhoUjBaNlZUTlNhRmt5ZEhwTFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VoS2JHUklWbmxpYW5SalltbEJaMGxEUWpsWVJ6VmpZbWxCWjBsRFFqQmpibXRuWlRGNGRVbERRV2RKUTBGblNVTkNNR0ZJU25aa2VVSjFXbGhqWjFKWVNubGlNMGx2UzFSMFkySnBRV2RKUTBJNVNVZE9hR1JIVG05SlEyaHNTMU5DTjFoSE5HZEpRMEZuU1VOQlowbElXbWhqYVVKellWYzFiR041UVRsSlIxVjFZek5TYUZreWMzVmpNMEp6WVZoUmIxaERTbU5ZUnpWalNXbHJOMWhITkdkSlEwRm5TVU5CWjBsSVdtaGphVUp0WVZoS2VtUkZlSEJpYlZWblVGTkNjMkZYTld4ak1YTjNXRk0xY0dKdFVteGxSVGx0UzBaM2FWRkdkMmxMVTBFclNVUkJaMUI1UW5OaFZ6VnNZekZ6ZUZoVFFUWkpSM2h3WW0xV2VsZDZTbVJQTVhoMVNVTkJaMGxEUVdkSlEwSXlXVmhKWjFwdGJITmFWVFZvWWxkV1FtSnRVazFoVnpWc1ZHNVdkRmx0Vm5sSlJEQm5XakpXTUZKdGJITmFWVFZvWWxkV1FtSnRVazFoVnpWc1ZHNVdkRmx0Vm5sTFIxcHdZMjVPTUZSSGJIVmFVMnMzV0VjMFowbERRV2RKUTBGblNVZHNiVWxEWjJoYWJXeHpXbFUxYUdKWFZrSmliVkpOWVZjMWJGUnVWblJaYlZaNVMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEo1V2xoU01XTnRORGRZUnpSblNVTkJaMGxEUVdkSlNERmpZbXg0ZFVsRFFXZEpRMEZuU1VOQ2VGSnRiSE5hVlRWb1lsZFZaMUJUUW0xaFYzaHNWRzFHZEZwVlJuVmFSWGh3WW0xV1QyUlhNV2xhV0VwaVRVWXdOMWhITkdkSlEwRm5TVU5CWjBsSVNteGtTRlo1WW1sQ2JXRlhlR3hVYlVaMFdsVkdkVnBGZUhCaWJWWlBaRmN4YVZwWVNtSk5WakEzV0VjMFowbERRV2RtVm5oMVpsWjRkVmhITlcxa1Z6VnFaRWRzZG1KcFFtdGFXRUo1V2xkT2FHUkhWVzlaTWtaellrZEthRmt5YzNOSlJ6Vm9ZbGRWYzBsSFJuTmtSMVo1WW0xR01HRllXbXhMVTBJM1dFYzBaMGxEUVdkamJWWXdaRmhLZFVsSFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMGxEUVdkSlEwRm5ZVmRaWjB0SVVqVmpSMVoyV21sQ2FtSXlOWHBpTW5oc1NVTkZPVkJUUW1OSmJsWjFXa2RXYldGWE5XeGFSbmRwU1VOWmJWaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSXdaVmhDYkdJeVdXZFpNamwxWXpJNWMxcFROVE5aV0VwMVNVUXdPVkJUUW1OSmJWb3hZbTFPTUdGWE9YVllRMGx3U1VoMFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlIwNTJZbTVPZG1KSFZYVmtNa1o1WW1sb2RWbFhNV3hKUTNObldFTkpaMkZZVFdkYVIxWjNZMjFXYWxsWVVteGFRM2RuWkZoT2JFbEdkMmxKUTNObldWZDRNRnBZU25WWldGSndaRzFWWjBzeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsR2QybEpSMngxWXpOU2JGbFhVWFZZUTBselNVYzFiR1I1UWtaamJrcDJZMmxvWTBsc2QybExVelY2WkVkR2FtRjVhemRZUnpSblNVTkJaMGxEUVdkSlNERmpZbWxCWjBsRFFXZEpRMEZuWTIxV01HUllTblZKUjA1b1lrZDRhVmxYVG5KTWJVWjNZMGQ0TlV0SFRtaGlSM2hwV1ZkT2NreERRbWhqYldReFlsZFdkV1JJVFhCUE1YaDFTVU5CWjBsSU1EZFlSelU1V0VjMVkySnBPSFpKUjFaMVdrTkNkbHBwUW5waFIyeDBZekY0ZFV4NU9HZFpiVlp1WVZjMWRXRlhOVzVKUnpsdFNVaEtiRmxYZDJka01qbDVZVEY0ZFZoSE5IWkxhWEJqWW1sQmNVbEZUblppYms0d1kyNVdhbVJJVFdkWlUwSjNZMjA1ZEdGWVRteEpSMXAyWTJsQ2FHSnBRbkJpVnpGc1drZHNhR1JIVldkamJWWnRXbGhLYkdKdFRteE1RMEozV1ZoT2VscFlUV2RqU0VwMllsZHNlbHBZVFdka1IyaDVZak5XYm1GRGQyZGlNMHBqWW1sQmNVbEhUblphV0VwcVdsaE5aMk5JU25aaVYyeDZXbGhOWjFwdVNuWmlVMEpyWVZkYWJWcFlTbXhpYmxGbll6TnNlbVJIVm5SamVUVmpZbWxCY1VsRlFuZFpXRXBvWWxOQ01sbFhlREZhVTBKd1lsY3hiRnBIYkdoa1IxVm5ZMjFXYlZwWVNteGliVTVzU1VjNWVVbElRbmxpTWpGd1l6SldZMkpwUVhGTU1YaDFXbTVXZFZrelVuQmlNalJuVlZOb01sbFhlREZhVTJ0blpURjRkVWxEUVdkSlF6aDJTVVZzYlVsSVVtOWFVMEoyV1cxd2JGa3pVV2RoV0UxbldWZDRlVnBYUm10bFUwSm9TVVpDZVdJeU1YQmpNbFZ6U1VoS2JHUklWbmxpYVVKd1pFTkNhMkZZU214Wk0xSnpaVk0wWjBsR1VtOWhXRTFuV2xjMWFGbHRlR3hqTVhoMVNVTkJaMGxET0haSlNGSnZXbE5DZVZwWVRuWmlTRnBzU1VkYU1XSnRUakJoVnpsMVNVaFNka2xIU25aa1IyZG5XVzFWWjJSWVRteGFRMEl3WW5sQ2FtTnRWbWhrUjFaclNVaEtiRnB0Vm5sYVZ6VnFXbGhOWjFwdVNuWmlVMEoyV1cxd2JGa3pVbnBNUm5oMVNVTkJaMGxET0haSlIwb3haRU5DTUdKNVFqQmlNbmhzWTIxR2FXSklhMmRaTWpsc1kyMU9iRWxITlhaaWFURjNZMjA1ZEdGWVRteGplVUl3WW5sQ2QyTnRPWFJoV0U1c1kzazFZMkpwUVdkSlEwSndXbWxCYjJSdFJuTmtWMVZuWVZjMWVtUkhSblZaTWxaMldtbENVV050T1hSaFdFNXNTMU5DTjFoSE5HZEpRMEZuU1VOQlowbElTbXhrU0ZaNVltbENNbGxYZURGYVZIUmpZbWxCWjBsRFFqbFlSelZqWW1sQlowbERRWFpNZVVKb1l6Tk9jR0pYYkhOWldGSnNTVWhTYjFwWE5XaFpiWGhzWXpGNGRVbERRV2RKUjJ4dFNVTm9jR014UW5saU1qRndZekpXUW1KSGJISmFVMmd5V1ZkNE1WcFRhM0JKU0hSalltbEJaMGxEUVdkSlEwRm5ZMjFXTUdSWVNuVkpSMDUyV2xoS2FscFRhREpaVjNneFdsTnJOMWhITkdkSlEwRm5abE5DYkdKSVRteEpTSFJqWW1sQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlIxb3hZa2RhY0dKSGQyOWtiVVp6WkZkVmNFOHhlSFZKUTBGblNVZ3hZMkp1TVdOaWJFVjFZMjFXZW1JeWVESmFVMEU1U1VaRk4xaEhOV05pYVRoeFMyeDRkVWxEYjJkVlIxWjVXbTA1ZVdKWVRXZFpVMEl3V1ZoT2NrbEhiSFZKUjBWbldtNVdNR1JZU214SlNGSXhZMjAwWjJJeVdXZGtSMmhzU1VkV01scFhOVEJKUjNoMllqTkJkVmhITkdkTGFVSkJZMGRHZVZsWE1HZGxNRm94WW0xT01HRlhPWFZtVTBJd1dWaE9jbGhITkdkTGFUbGpZbXhGZFdKdFZqUmtSbEp3V1RKeloxQlRRblZhV0dnd1ZrZHNhbUY2ZEdOaWJIaDFUSGx2Y1ZoSE5HZExhVUpFWWpJMU1HTnRPWE5qZVVJellVZFdNR0ZIVm5sSlJ6bDVTVWMxZG1SRFFuTmlNalZ1U1VoT01GbFhUbkpKU0ZKNVdWZE9iR041UWpOaFYzaHpTVWRLYkVsSE9YVllSelJuUzJrNVkySnNSWFZpUnpsMVdqRk9NRmxYVG5KVk0xWjNZMGM1ZVdSRFFUbEpSMXBvWWtoT2JFOHhlSFZZUnpSMlRIbENiR0p0Um1saVIxVm5Za2M1ZFZwNVFucGtSMFpxWVROTloyRlhXV2RWVmpsRlVsVktWbEo1UW5CamVVSjZXbGhTWTJKdGJHMUpRMmd3WlZoQ2JHSXlXV2RqU0VwMldUSldlbU41UVRsUVZEQm5XRU5LZGxsdGNHeFpNMUpqU1dsQmJVcHBRbmRqYlRscVdsaE9la2xEV1cxSlNFSjVZakpPYkdNelRYVmFWelV5U1VOWmJVbElRbmxpTWs1c1l6Tk5kVnBYTlRKTWJFWm1Va1ZXUTFaVlkzQkpTSFJqWW1sQlowbERRbEpNYlhoMlltMWtWR1JIUm1waE1VNHhZMGhDZG1OdVVXZFFVMEl3WTI1V2JFOHhlSFZtVm5oMVdFYzBka3RwY0dOaWFVRnhTVVZPZG1KdVRqQmpibFpxWkVoTloxbFRRamRqU0VwMllsZHNlbHBUZDJkamJWWjZZako0TWxwVGQyZGpiVlp4V2xkT01HWlRRblpaYlhCc1dUTlJkVmhITkdkTGJIaDFTVU52WjFsSVNteGpNamx6WkcxV1owbEhiSHBKUjBWbldUSkdjMkpIU21oWk1uTm5aRWM0WjJGWE5USmlNblJzU1Voa2NHUkhaMmRaVTBKMFlqTktiRWxJU214ak1qbHpaRzFXYTBsSVdtaGlTRlpzU1VkYWRtTnBRakJoUjFaalltbEJjVWxJUW5saU1qRndZekpWZFVsR1VuWkpSMW94WWtkYWNHSkhkMmRrUjJoc1NVaENlV0l5TVhCak1sVnpTVWRzZFdSdE9YSmFVMEpuWTIxV2VtSXllREphVjBGblpESnNNR0ZEUW1oaWJtdG5aRzFHYzJSWFZXZGtSMmhvWkVOQ2NHTXhlSFZKUTI5blltMDVNRWxIUldka1IyaHNZbTFHYVdKSFZYVkpSbEoyU1VoS2JHRnRWbXBrUTBJd1lVZFZaMk5JU25aaVYyeDZXbE4zWjJGWE5USmlNblJzU1VkQ2VWcFlUblppU0Zwc1dVTkNNMkZZVW05SlIwVm5ZMjFXY1ZwWFRqQmFWMUpqWW1sQmNVbElVbTlhVnpWb1dXMTRiRXhEUW5aamFVSndZbTVhZG1FeVZXZFpTRXBzWVcxV2FtUkhRV2RrTW13d1lVTkNNR0ZIVldkamJWWm9Zekk1ZFVsSFVuQmpiVlpxWkVkNE5VeHBRbFZpZVVKNVdsaE9kbUpJV214SlNGSnZXbFo0ZFVsRGIyZGpTRXAyWWxkc2VscFRRakJpZVVKb1ltMDVNR0ZIVm5sSlNGSnZXbGMxYUZsdGVHeE1RMEl3WVVoV2VrbElRakZrU0ZKd1ltMWpaMkZZVVdkaFZ6Um5aRWRvYkVsSVRtaGlWMVZuWXpOU2FHUkhWWE5KUjJ4MVpHMDVjbHBXZUhWSlEyOW5XVWhLYkdNeU9YTmtiVlpuU1Voa2NHUkhaMmRrUjJob1pFTkNkbVJIYUd4amFVSXdZVWRXZFZsWFNuTmFVelZqWW1sQmNVd3hlSFZWVXpWcldsZGFiR05wUVRsSlIxSnNXbTFXZVU4eGVIVmFibFoxV1ROU2NHSXlOR2RhUjFadFdsaEpiMHRUUWpkWVJ6Um5TVU5CWjB4NU9HZGhWMWxuV0VOS2RGcFlUbnBaVjJSc1l6RjNhVWxIYkhwSlIwWjFTVVozYVZGWVNubFpXR3hqU1dsM1oyUkhhR2hrUTBKd1ltMVNjRmt5UmpCYVdFMW5aRWRvYUdSRFFqQmhSMVZuWTBoS2RtSlhiSHBhVTBKdldWaE5aMkp0T1RCSlNHeHNaRVo0ZFVsRFFXZEpRemgyU1VkS2JGcFhOR2RqYlZaNllqSjRNbHBYVVhWSlEwSktXbWxDY0dSRFFuQmplVUpqU1c1V2RWcEhWbTFoVnpWc1drWjNhVXhEUW5Ca1EwSnZXVmhOWjFsdFZteGlhVUo1V2xoT2RtSklXbXhhUXpSblNVVldhRmt5YUdOaWFVRm5TVU5CZGt4NVFteGlSMVowV2xjMU1FbEhPVzFKU0ZKdldsTkNkRnBZVG5wWlYyUnNZM2xDYUdOdVNtaGxVMEp3WTNsQ2NHUklUbXhpUjFsbldWYzBaMWxZU25sWldHdG5ZakpaWjFreU9YUmpSM2hzWkVkVloxbFlTbTVrVnpGc1ltNVNla2xJVW5aWVJ6Um5TVU5CWjB4NU9HZGFiVGw1WkRKR2VWcERRakJpZVVJd1lVZFZaMk50Vm5waU1uZ3lXbGRSWjJOSVNuWmlWMng2V2xNMFowbEdaR3hKUjA1MldsaEthbHBUUWpCaFIxVm5ZMjFXZW1JeWVERmtSMngyWW1sQ01sbFhlREZhVTBJd1lubENhRmhITkdkSlEwRm5USGs0WjJOSVNuWmlWMng2V2xOQ01XTXliSFZhZVVJd1lVZFZaMWxJU214ak1qbHpaRzFXWjBsSFdqRmliVTR3WVZjNWRVbEhTbXhaTWtZeFl6SlZaMkZZVVdkaFIwWjFXa2Q0YkdONVFtbGlNMUp2U1VkYU1XSkhlRFZZUnpSblNVTkJaMHg1T0dkaWJUbDFURmhTYjFwWE5XaFpiWGhzU1VoYWFHSklWbXhqZVVKb1ltMVJaMkl6VW05YVdFbG5aRWRvYkdKdFJtbGlSMVo2U1Vka2VWbFhUbXhhYmxaellraHJkVmhITkdkSlEwRm5aRzFHZVVsSE1XeGpNMDVvV2pKV2VrbEVNR2RYTVRCelNVaENlV0l5WkhsYVdFNTZWRWRzZW1SSFZuVmFXRXA2U1VRd1oxY3hNSE5KU0Vwc1l6STVjMlJ0Vm10VlNFcDJZbGRzZWxwVWRHTmliSGgxU1VOQlowbElXbWhqYVVKcldsZGFiR051U214YVEwRTVTVWM1YVdGdFZtcGtSamxxWTIxV2FHUkhWVzlhUjFadFdsaEpkV05JU25aa1J6a3daVmhDYkV0VWRHTmlhVUZuU1VOQ01sbFlTV2RqU0VwMllsZHNlbHBUUVRsSlJ6bHBZVzFXYW1SR09XcGpiVlpvWkVkVmIxVklTblppVjJ4NldsTTFkMk50T1RCaU0xSTFZMGRWY0U4eGVIVllSelJuU1VOQloyTklTblppVjJ4NldsTTFkMk50T1hSaFdFNXNVa2RzZW1OSFJqQlpNbWRuVUZOQ2JXUlhOV3BrUjJ4MlltbEJiMk50Vm5waU1uZ3lXbE4zWjJJelFYTkpSemwzV2xoS2FHSnRVbnBMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVWhhYUdOcFFtaGpiV1I2U1VRd1oxbFlTbmxaV0d4bVl6SjRjRmt5Vlc5WldFcHVaRmN4YkdKdVVucExWSFJqWW1sQlowbERRV2RKUTBGbllWZFpaMHRITVd4ak0wNW9XakpXZWt0VFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNkRnBZVG5wWlYyUnNZM2sxZDJSWVRtOUxSMFo1V2pOTmNFOHhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5ZVmRaWjB0SE9YZEpSREE1VUZOQ1kwbHVaRzlhVnpWalNXbEJiVXBwUW5aalIxWjVXVmMxYTJNeGMzaFlVMnRuWlhsQmRreDVRbmRqYlRsdVkyMVdlbU41UW5aalIxWjVXVmMxYTFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMk5JU25aYU0wcHNZek5PVFdGWVRqQmFWelZzWTI1TmRXTklWbnBoUTJoMlkwZFdlVmxYTld0ak1YTjRXRk5yTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBJNVdFYzBaMGxEUVdkSlEwRm5TVWd3WjFwWGVIcGFVMEkzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUWxKTWJUVnNaVWhTVldGWFRuSkxSMW94WW0xT01HRlhPWFZKUTJkd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQ2VWcFlUblppU0Zwc1drWkNlV0l5TVhCak1sVjFZMGhLZG1KWGJIcGFWVkp3WXpOQ2FHUkhUbTlNYlVaM1kwZDROVXRJU214ak1qbHpaRzFXYTFWSVNuWmlWMng2V2xOM1oxbFlTbTVqZVdzM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFqbExWSFJqWW1sQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlNEQTNXRWMxWTJKcFFXZEpRMEYyVEhsQ1dWZEdaMmRhUjFaM1kyMVdhbGxZVW14YVJuaDFTVU5CWjBsSVFubGlNakZ3WXpKVmRXUnRSbk5rVjFaUVdtbEJPVWxIV2pGaWJVNHdZVmM1ZFVsRFozQkpTSFJqWW1sQlowbERRV2RKUTBGbllWZFpaMHRITVd4ak0wNW9XakpXZWt0VFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNlVnBZVWpGamJUUm5ZMGhLZG1KWGJIcGFWSFJqWW1sQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5TVU5DTWxsWVNXZGliVlpvWTIxV2VWWnRSbk5rVjFWblVGTkNkVnBYUm5sYVdFbHZZMjFXZW1JeWVESmFWMUpSWTIwNWRHRllUbXhMVkhSalltbEJaMGxEUVdkSlEwRm5ZVmRaWjB0SGJIcFZTRXAyWWxkc2VscFRhSFZhVjBaNVdsaEtWMWxYZURGYVUydHdTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0Vwc1l6STVjMlJ0Vm10VlNFcDJZbGRzZWxwVFFUbEpSelZzV1ZoS2JHTnNXbWhpU0Zac1QzbEJka3g1UW5waFJ6bDVaRWRXZFVsSFRtOVpWMngxV0VjMFowbERRV2RKUTBGblNVZ3hZMkpwUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VjMWJGbFlTbXhqYkZwb1lraFdiRTh4ZUhWSlEwRm5TVWd3TjFoSE5XTmlhVUZuU1VOQ2QyTnRPWFJoV0U1c1RHMXNkV016UW14Wk0xRm5VRk5DYldSWE5XcGtSMngyWW1sQmIwdFRRamRZUnpSblNVTkJaMGxEUVdkSlIyeHRTVU5uYUdOdFZucGlNbmd5V2xkU1VXTnRPWFJoV0U1c1MxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEo1V2xoU01XTnROR2RsZVVKNlpFZEdNRnBVYjJkWVEwcDNXbGMxYTJGWE5XNVlRMGxuWmxSMFkySnBRV2RKUTBGblNVTkJaMlpXZUhWSlEwRm5TVU5CWjBsRFFubGFXRkl4WTIwMFoyTnRWbnBpTW5neVdsZFNVV050T1hSaFdFNXNURzFzZFdNelFteFpNMUZ2UzFSMFkySnBRV2RKUTBJNVR6RjRkVmhITkdkSlEwRm5ZVmRaWjB0R1JYVmlSemwxV2pGT01GbFhUbkpWTTFaM1kwYzVlV1JEUVcxS2FVSnZXVmhPVkdSSFJtcGhNMDF3U1VoMFkySnBRV2RKUTBGblNVTkJaMlJJU2pWSlNIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbElVbTlqYlRrelNVYzFiR1I1UWtaamJrcDJZMmxuY0U4eGVIVkpRMEZuU1VOQlowbERRamxKUjA1b1pFZE9iMGxEYUd4TFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRWFpNZVVKUFZERlNSazlwUW10aU1qUnVaRU5DTUdOdWEyZGtSemhuWkZoT2JFbEhRa1pqYmtwMlkyazFhbGxZUWpCa1dFcHNWVE5TYUZreWRGVmpiVVpxV2xkQloySXpTV2RrU0Vwb1ltNU9iVnBZU1dka1IyaHNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRWFpNZVVKb1dUSk9iR016VG5aamFVSm9ZMjA1TVdKdFVUZEpTRkp2V1ZoUloxa3lSakZqTWxaNlNVY3hiR0pYT1hsbFUwSnpXbGRHY21ONVFtaGplVUozV2xoSloxSXdaM1JOVkVWNFRHbENTMlJZVGpCWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQmRreDVRbmxhVjJ4dFpWTkNNR0ZIVldkak0xSm9XVEp6WjJSSVNtaFpNbFZuV1ZoTloxbFRRbnBrU0Vwd1ltMWpaMUZXVGtKVlF6VmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERPSFpZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CZGt4NVFrSmtRMEl3WVVkVloyTXlSblJhVTBJd1lWY3hiRXhEUW1wa1dGRm5ZakphYlVsSVVtOWFVMEp0WVZoS2VtUkRRbk5oVnpWc1QzbENjR1JEWkhwSlIwWnpaREpHTldONVFuRmtXRTR3V0VjMFowbERRV2RKUTBGblNVTkJaMGxEUVhaTWVVSmpTV3gwZGxsdGNHeFpNMUZuVlVoS2RtSlhiSHBhVmpGaldFYzFZMGxwZDJkWldFMW5ZMGRXZVVsSVVtOWFVMEpuWkVjNVZHUklTbkJpYldSblRHeDRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGpTRXAyWWxkc2VscFROWHBrUjBacVlYbEJPVWxIVlhWak0xSm9XVEp6ZFdNelZtbGpNMUo1WVZjMWJrdEhWWFZqTTFKb1dUSnpkV0ZYTld0YVdHaFFXbWxvWTBsc2VHTmliSGRwUzFOQmNrbEVSWEJQTVhoMVNVTkJaMGxEUVdkSlEwSTVXRWMwWjBsRFFXZG1WbmgxV0VjMFowbERRV2RNZVRoblZHczVWVkpVYjJka01sVm5Xa2M0WjJSSGFHeEpSMDV2V2xkT2NtTjVRbTFpTTBsbldVaEtiR015T1hOa2JWWnJWVWhLZG1KWGJIcGFWMEZuWVZjMFoxcFhSbXBoUTBKMFdsaFNiMkl5VVhOSlIyeDFZek5TYkZsWFVXZGlNbHBqWW1sQlowbERRWFpNZVVKcVlqSTFlbUl5ZUhCYVIwWXdZVmMxYmtsSVVtOWFWekJuWVZjMU1HSjVRbWRaYlZacVlqSXhiRmxEZDJkak1teDFXVEpWWjJJelVtOWFXRW96WVZoT2JFbElaR3hLTWxGbldUTktiRmxZVW14SlJ6VnNaREY0ZFVsRFFXZEpRemgyU1VoQ2VXSXlNWEJqTWxaNlNVaGtjR1JIWjJka1IyaHNTVWQ0Y0dKdFZucEpSMEpwV2xkT2RtSlhWVzlrTW1ob1pFZFdNbHBZU1c5a2JVWnpaRmRWY0V0WFFYVkpSazVzV2xOQ2JFeHRZM1ZKUldSSlRGUkpNVTFwTldOaWJIaDFTVU5CWjBsSFdqRmliVTR3WVZjNWRVbEhTbXhaTWpsMFdsTm9kVnBZWkZGamJUbDBZVmhPYkV0VFFqZFlSelJuU1VOQlowbERRV2RKU0Vwc1l6STVjMlJ0Vm10VlNFcDJZbGRzZWxwVFFUbEpSelZzWkRGQ2VXSXlNWEJqTWxVM1dFYzBaMGxEUVdkSlEwRm5TVWhDZVdJeU1YQmpNbFYxWXpJNU1XTnRUbXhKUkRCblltMVdNMVZJU25aaVYyeDZXbFIwWTJKc2VIVkpRMEZuU1VOQlowbERRbWhqYmtwb1pWWTVlVnBYVWpGWk1sVnZZbGRXZW1NeVJtNWFXRTF6U1VkYU1XSnRUakJoVnpsMVNVTm9NV0p0VW14YWJXeDFXbGRSYzBsSE1XeGpNMDVvV2pKVmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVVpGZFdKdFZqUmtSbEp3V1RKemIxcHVWblZaTTFKd1lqSTBaMHREYTJkbE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUnpWc1pERkNlV0l5TVhCak1sVjFZMGhLZG1KWGJIcGFWVkp3WXpOQ2FHUkhUbTlNYlVaM1kwZDROVXRITld4a01VSjVZakl4Y0dNeVZYTkpSekZzWXpOT2FGb3lWWEJQTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJaVGF6ZFlSelJuU1VOQlowbERRV2RKU0RCelNVaGFkbUZYVVdkTlEyczNXRWMxWTJKcFFXZEpRMEZuU1VOQloySlhWbnBqTWtadVdsaE5aMUJUUWpKaU1teHJTVVJCTjFoSE5HZEpRMEZuU1VOQlowbElRbmxpTW1SNVdsaE9lbFJIYkhwa1IxWjFXbGhLZWtsRU1HZGtiVGx3V2tOQmQwOHhlSFZKUTBGblNVZ3hZMkpzZUhWSlEwRm5TVWRTYkZwdFZubGpiVlpyVEc1Q2VXSXlNWEJqTWxWblVGTkNkMk50T1hSaFdFNXNUekY0ZFVsRFFXZEpSMUpzV20xV2VXTnRWbXRNYmtwc1l6STVjMlJ0VldkUVUwSnRaRmMxYW1SSGJIWmlhVUZ2WkcxR2MyUlhWWEJKU0hSalltbEJaMGxEUVdkSlEwRm5ZVmRaWjB0SVNteGpNamx6WkcxV2ExVklTblppVjJ4NldsTnJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuWTIxV01HUllTblZQTVhoMVNVTkJaMGxEUVdkSlEwSTVXRWMxWTJKcFFXZEpRMEZuU1VOQloxbHRWbXBpTWpGc1MwWkZiMlJ0Um5Oa1YxVndTMVIwWTJKcFFXZEpRMEk1VHpGNGRWaEhOR2RKUTBGbldrZFdiVnBZU25sYVYxRjFXbTVXYzFwdGJITmlRMEU1U1VkYU1XSnRUakJoVnpsMVNVTm9NbGxYZURGYVUydG5aVEY0ZFVsRFFXZEpRMEZuU1VOQ2NGcHBRVzlqYlZaNllqSjRNbHBYVWxGamJUbDBZVmhPYkV0VFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNlVnBZVWpGamJUUTNXRWMwWjBsRFFXZEpRMEZuU1VneFkySnNlSFZKUTBGblNVTkJaMGxEUW1sYVYwNTJZbGRWYjFwdVZuTmFiV3h6WWtOb01sbFhlREZhVTJ0d1R6RjRkVWxEUVdkSlNEQTNXRWMwWjBsRFFXZGFSMVp0V2xoS2VWcFhVWFZqYlZaeFdsZE9NRWxFTUdkYWJsWjFXVE5TY0dJeU5HZExTRXBzV1ZoT2RtSnBhMmRsTVhoMVNVTkJaMGxEUVdkSlEwSndXbWxCYjJOdFZucGlNbmd5V2xkU1VXTnRPWFJoV0U1c1MxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEo1V2xoU01XTnRORGRZUnpSblNVTkJaMGxEUVdkSlNERmpZbXg0ZFVsRFFXZEpRMEZuU1VOQ2FWcFhUblppVjFWdlkyMVdjVnBYVGpCTFNFcHNXVmhPZG1KcGEzQlBNWGgxU1VOQlowbElNRGRZUnpSblNVTkJaMXBIVm0xYVdFcDVXbGRSZFdKdE9UQmhWMW8xU1VRd1oxcHVWblZaTTFKd1lqSTBaMHRJUW5saU1tUjVXbGhPZWt0VFFqZFlSelJuU1VOQlowbERRV2RKUjJ4dFNVTm9lVnBZVG5aaVNGcHNXa1pDZVdJeU1YQmpNbFZ3U1VoMFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlNFcHNaRWhXZVdKcWRHTmlhVUZuU1VOQlowbERRV2RtVm5oMVdFYzBaMGxEUVdkSlEwRm5TVWRHZVdOdFJqVllNMHBzV2toV2FscFRhSGRqYlRsdVkyMVdlbU13ZUhCak0xSnNZbTFXZVdONWQyZGFibFoxV1ROU2NHSXlOR2RMU0ZaMVdrZFdiV0ZYTld4YVEzZG5ZMGhLZGxvelNteGpNMDVOWVZoT01GcFhOV3hqYVd0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZFZVelYxV2xob01GWkhiR3BoZVdodFpGYzFhbVJIYkhaaWFVRnZTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMk5JU25aYU0wcHNZek5PVFdGWVRqQmFWelZzWTJsb2QyTnRPVzVqYlZaNlkzbHJOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEk1UzFSMFkySnBRV2RKUTBGblNVTkJaMlpUZDJka2JUbHdXa05CZDB0VWRHTmlhVUZuU1VOQ09VOHhlSFZZUnpSblNVTkJaMk50VmpCa1dFcDFTVWRTYkZwdFZubGpiVlpyVHpGNGRXWldlSFZZUnpSMlMybHdZMkpwUVhGSlJVNTVXbGRHTUZwWVRXZFpVMEpQWWpKU2JFeFlUakJsVjNoc1NVZE9hR0pIZUdsWlYwNXlTVWhTYjFsWVVXZGtNbXh6WWtOQ2VWcFlUblppU0Zwc1NVYzVlVWxJU214aGJWWnFaRU5DTUdGSFZXZGFSMVp0V2xoS2VWcFhVbU5pYVVGeFNVaENlV0l5TVhCak1sVjFXRWMwWjB0cFFrRmpiVll3WkZoS2RXTjVRbWhKUnpWMldrZFdhVmxYVG5KWVJ6Um5TMms1WTJKdFVteGFiVlo1VEc1Q2VXSXpVblprU0d4M1dsTTFkRmxYZEd4VWJUbHJXbFpLYkdNeU9YTmtiVlo1U1VRd1oxcHVWblZaTTFKd1lqSTBaMHREYTJkbE1YaDFTVU5CWjBsSVdtaGphVUo2V2xkNGJVbEVNR2RrUjJod1kzcDBZMkpwUVdkSlEwSjVXbGhTTVdOdE5HZGFibFoxV1ROU2NHSXlOR2RMUjFaNVkyMDVlVXhEUWpKWlYzZ3hXbE5yWjJVeGVIVkpRMEZuU1VOQlowbERRbkJhYVVGdldsaEtlV0l6U1hCSlNIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbElUbXhpUjFsMVkyMVdjVnBYVGpCTFIxWjVZMjA1ZVV0VWRHTmlhVUZuU1VOQlowbERRV2RtVTBKc1lraE9iRWxIYkcxSlEyaG9ZMjFrTVdKWFZuVmtTRTExWWtkV2RWb3pVbTlKUkRSblRXbHJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuWXpKV2MxcHBOWGxhV0U1MllraGFiRXRIUm5samJVWTFXRE5PYzJGWFRteExSMFo1V2pOV2RGcFhOVEJqZVhkblRWTnJjRTh4ZUhWSlEwRm5TVU5CWjBsRFFqbEpSMVp6WXpKVloyVXhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5ZekpXYzFwcE5YbGFXRTUyWWtoYWJFdElXbWhpU0Zac1MxUjBZMkpwUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1Vnd04xaEhOVGxQTVhoMVdFYzBka3RwY0dOaWFVRnhTVVZDZDFsWVNtaGlVMEo1V2xoT2RtSklXbXhqYVVJM1VtNVdkVmt6VW5CaU1qVTVTVWRGWjFwdVZuVlpNMUp3WWpJMFoyUkhhR2hrUTBKNVdsaFNNV050TlhwSlJ6VjJaRWRvY0dKdFkyZFpWelZyU1VkR2Fsa3lWbmRrU0U1alltbEJjVWxJVW05YVUwSjVXbGhPZG1KSVdteE1RMEo1V2xkd2JGa3pVWE5KUjBaMVdrTkNkV0l6VW5CYWJtdG5XbTVXZFZrelVuQmlNalY2U1VkYWRtTnBRbWhKUjFKc1dtMVdlV050Vm10TWJIaDFTVU52WjFGSVNteGtTRlo1WW01TloxbFRRbmRqYlRsMFlWaE9iRWxJVW05WldGRm5ZbGRHTlVsSFNteEpTRXBzWXpJNWMyUnRWbXRKU0dSd1pFZG5aMlJIYUd4SlIyUndaRzFXZFVsSVNteGpNamx6WkcxVloxbFhOV3RKU0Vwc1lXMVdhbVJHZUhWSlEyOW5XbTVXZFZrelVuQmlNalY2VEVOQ2RtTnBRbmxhVjNCc1dUTlNiRnBEUW1sbFUwSm9TVWhTYjJOdE9UTmlhVUpzWlVkT2JHTklVbkJpTWpSbllWYzBaMk50Vm5waU1uZ3lXbGhLWTJKcFFYRk1NWGgxVlZNMVVXTnRPWFJoV0U1c1NVUXdaMk5JU25aaVYyeDZXbFJ6WjB4NU9HZFNWazB5V0VjMVVreHVRbmxpTWpGd1l6SlZaMUJUUW5kamJUbDBZVmhPYkU4eGVIVmFibFoxV1ROU2NHSXlOR2RqU0VwMllsZHNlbHBUYUhsYVdFNTJZa2hhYkdOcGEyZGxNWGgxU1VOQlowbEhiRzFKUTJnd1pWaENiR0l5V1dkamJWWjZZako0TWxwWVNXZEpWREE1U1VaM2FWcHVWblZaTTFKd1lqSTFZMGxwYTJkbE1YaDFTVU5CWjBsRFFXZEpRMEl3WVVoS2RtUjVRblZhV0dOblZraHNkMXBWVm5samJUbDVTMFozYVdOdFZucGlNbmd5V2xoSloySllWbnBrUTBKcFdsTkNhRWxIV2pGaWJVNHdZVmM1ZFV4c2QybExWSFJqWW1sQlowbERRamxZUnpSblNVTkJaMlJ0Um5sSlIxSnNXbTFXZVdOdFZtdEpSREJuV2tkV2JWcFlTVzlMVkhSalltbEJaMGxEUWpCamJtdG5aVEY0ZFVsRFFXZEpRMEZuU1VOQ2VWcFlUblppU0Zwc1kybG9hMXBYV214amJrcHNXa00xZVZwWVRuWmlTRnBzVEVOQ2ExcFhXbXhqYmtwc1drTTFlVnBYY0d4Wk0xRnpTVWRTYkZwdFZubGpiVlpyVEcwMWRtUkhiRzFsVTJzM1dFYzBaMGxEUVdkbVUwSnFXVmhTYW1GRFFXOWpiVlpvWXpJNWRVdFRRamRZUnpSblNVTkJaMGxEUVdkSlIxSnNXbTFXZVdOdFZtdE1ia3BzWVcxV2FtUkRhSGxhVjBaNllqSTBjRTh4ZUhWSlEwRm5TVWd4WTJKcFFXZEpRMEo1V2xoU01XTnROR2RhUjFadFdsaEtlVnBYVVhWalNFcDJZbGRzZWxwVWRHTmliakZqWW14NGRXTklTblppVjJ4NldsTTFlVmxYVG14SlJEQm5ZMjFHYWxwVWMyZE1lVGhuVWxaTk1saEhOWGRqYlRsMFlWaE9iRXh0Um5OaVEwRTVTVWRHYzJKRWMyZE1lVGhuVWxaTk1saEhOWGRqYlRsMFlWaE9iRXh1U214aGJWWnFaRU5CT1VsSVNteGhiVlpxWkVSeloweDVPR2RTVmsweVdFYzFkMk50T1hSaFdFNXNURzVLYkdNeU9YTmtiVlZuVUZOQ1VrOTVRWFpNZVVKR1ZYcGFZMkpzZUhWTWVUaG5WMFpvV1VsSFZqUmpSMVo1WVZjeGJHSnVVbWhpUXpSblNVWlNiMkZZVFdkaVYxWXdZVWM1YTBsSGJIcEpSMFZuWkRKR05VbElVblpKUjFKc1ltMDVNRnBUUWpCaFIwWXdTVWRGWjJKSE9XcFpWM2RuWkcxR2MyUlhWV2RoV0U1alltazRka2xJVG14amJXeG9Za2RzTmxsWFNuTmFVMEpvWW0xUloyTXlhSFprVjNoclNVZEtiRWxIYkhSaVYxWnJZVmRHTUZwWGVEVkpSMUp3WXpOQ2FHUkhUbTlhVjFGblpFYzRaMWxUUW5sYVZ6RjJaRWRWWjJSWVFuWmlhVUo1V2xoR01WcFlUakJNUm5oMVRIazRaMkZYTlhwa1IxWm9Xa05DZGxwcFFuZFpXRTU2WVZjMWJrbEhSV2RqYlZadFdsaEtiR0p0VG14TWJIaDFWVk0xZDFsWVRucFJibXhFWWpOQ05VbEVNR2RhYmxaMVdUTlNjR0l5TkdkTFJ6bHBZVzFXYW1SRGEyZGxNWGgxU1VOQlowbERPSFphYmtwc1dsaHdiRXRIT1dsaGJWWnFaRU5yTjFoSE5HZEpRMEZuVEhrNWQxbFlUbnBSYm14RVlqTkNjRnBZVFhWak1sWXdTMGM1YVdGdFZtcGtRM2RuWkVoS01WcFRhemRZUnpSblNVTkJaMk50VmpCa1dFcDFTVWM1YVdGdFZtcGtSSFJqWW00d04xaEhOV05pYkVKNVlqSXhjR015VlhWalNFcDJaRWM1TUdWWVFteE1ia0pvWXpOT1EyVlZUblpqU0d0blVGTkNiV1JYTldwa1IyeDJZbWxCYjB0VFFqZFlSelJuU1VOQloweDVPVzFqYlZac1pXMVZiMkl5U25GYVYwNHdTMVIwWTJKcFFXZEpRMEYyVEROQ2FHTXpUa05sVlU1MlkwZHNiR041TlhwYVdGRnZZakpLY1ZwWFRqQk1RMEl3WTI1V2JFdFVkR05pYVVGblNVTkNlVnBZVWpGamJUUm5aRWRvY0dONmRHTmliakEzV0VjMVkySnBPSEZMYkhoMVNVTnZaMU5YV1dka1NHUjJTVWhDZVdJeU1YQmpNbFo2U1VkV01scFhOVEJrVjBaellraHJaMXB1Vm5OYWJXeHpZa05DTUdKNVFqQmhSMVZuWXpKR2RGcFRRakpaVjNneFdsTjNaMk5JU25aaVYyeDZXbGhOWjJSSGFHaGtRMEl5V1ZkNE1WcFRlR05pYVVGeFNVZEtNV1JEUW5aa1IyaHNZMjVrY0dNeVZXZGpiVlp4V2xkT01HTjVOV05pYVVGeFNVVkNkMWxZU21oaVUwSTBTVWgwUW1KdWEzRm1WbmgxU1VOdloxRklRbWhqYlVaMFNVaHJaMlV3Um5WbFUzQTVXRWMwWjB0cFFrRmpiVll3WkZoS2RXTjVRamRSVnpVMVMyNHdaMWxUUW5kamJUbDBZVmhPYkVsSFduWmphVUkwU1VkR2RWcERRalZKUjJ4dFNVaFNiMXBZYTJkWldFcHNTVWhTYjFwVFFucFpWekZzVEVOQ2FXUllVV2RaVTBKNVdsZHdiRmt6VW5CaU1qVmpZbWxCY1VsSE9UQmhSMVo1WkRKc2VscFROV05pYVVGeFdFYzBaMHRwT1dOaWJFVjFZVzA1Y0dKcFFUbEpSMW94WW0xT01HRlhPWFZKUTJnMFRFTkNOVXRUUWpkWVJ6Um5TVU5CWjJOdFZqQmtXRXAxU1VaRmIyVkRhM1ZoYlRsd1ltbG9OVXRVZEdOaWJqQTNXRWMxWTJKc1FubGlNakZ3WXpKVmRXTklTblprUnprd1pWaENiRXh0Y0haaFZ6Um5VRk5DYldSWE5XcGtSMngyWW1sQmIyUkhhR2hrUTJ0blpURjRkVWxEUVdkSlNFcHNaRWhXZVdKcFFsSkxSblF3WVVkc2VreERRakJoUjBZd1dGTnJkV016UW5sYVYwWnJTMGRhTVdKdFRqQmhWemwxU1VOb05FeERRalZMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVWRzYlVsRGFEUkpSREE1VUZOQ05VdFRRamRZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CZGt4NVFsVlVNRkpRVDJsQ1kwbHFNRGxRVm5kcFNVaE9iMkl6Vm5OYVEwSnBXbE5DVUZsdGNHeFpNMUYxWVZoTloySXpTV2RhV0VZeFlWaGFZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpTRXBzWkVoV2VXSnBRalJQTVhoMVNVTkJaMGxEUVdkSlEwSTVTVWRXYzJNeVZXZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMlJIYUhsaU0yTm5ZbTFXTTBsRlZubGpiVGw1UzBaM2FWRXlSblZLTTFGbllXMDVjR0pxYjJkaWJUa3dTVWhTYjFwVFFucFpWekZzVDJsQ1kwbHBRWEpKU0dkblMzbENZMGxwUW1OSmFVRnlTVWhyY0U4eGVIVkpRMEZuU1VOQlowbERRamxZUnpSblNVTkJaMlpUYXpkWVJ6VTVUekY0ZFZoSE5IWkxhWEJqWW1sQmNVbEdTbXhrU0ZaNVltNU5aMWxUUW5kamJUbDBZVmhPYkVsSFduWmphVUl3WVVkVloxcHRiSGxqTTFGbllqSlpaMWxYTkdkWldFcDVXVmhyWjJJeVdXZGpTRXAyWWxkc2VscFlUV2RrUnpobldXMVdhbUl5TVd4SlNFNXNaRWhTYzFwWFVYVllSelJuUzJsQ1FXTkhSbmxaVnpCbldWYzFlbVF5Vm5samVVSTNVVmhLZVZsWWJHSlJWelUxUzJ3eE9VbElRbmxpTWpGd1l6Sldla2xJVW5aSlNFcG9XVEpXWTJKcFFYRkpSVUo1V2xoU01XTnROWHBKU0hSQ1ltNXJjV1pUUWpCaFIxVm5XbTFzZVdNelVXZGpTRXAyWWxkc2VscFRRakJpZVVKcFdsTkNlbHBZVWpCaVIxWnJXRWMwWjB0cE9XTmliRVYxWTIxR2FscFRRVGxKU0Vwb1dUSlZOMWhITlcxa1Z6VnFaRWRzZG1KcFFubFpWMDVzUzBkR2RXTXpaR3hqYkVKNlMxTkNOMWhITkdkSlEwRm5ZMjFXTUdSWVNuVkpTRUo1WWpJeGNHTXlWVzlhYmxaMVdUTlNjR0l5TkdkTFNFcHNZekk1YzJSdFZYTkpTRXBzWVcxV2FtUkRhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRjJUSGxDVkdReWJEQlpNbWRuWkVjNFoyUkhhSEJqZVVKMlltMU9iRWxJWkd4SlIwNW9ZbWxDYUdNelRqRmlWMVZuV1ZoUloySkhWbWhqTTFGblVsWk5NVmhITkdkSlEwRm5TVU5CWjBsRE9IWkpSMFoxWXpOa2JHTnNRbnBNYlZwMlkydFdhRmt5WjI5YWJsWjFXVE5TY0dJeU5HZExSMFoxWXpOa2JHTnNRWEJKU0hSalltbEJaMGxEUVdkSlEwRm5USGs0WjBsRFFXZEpSa1Z2V1ZjMWVtUXlWbmxWUTJ0MVpFZG9iR0pwYUhsYVdFNTJZa2hhYkV4RFFubGFWM0JzV1ROUmNFOHhlSFZKUTBGblNVTkJaMGxEUVhaTWVVSTVTMVIwWTJKcFFXZEpRMEZuU1VOQloweDVPR2RXV0U1c1NVaFNiMkZZVFdkaFZ6Um5aRWRvYkVsSE1XeFpWelV3WVZjeGJGaEhOR2RKUTBGblNVTkJaMGxIV25aamFVRnZaRzFHZVVsSGEyZFFVMEYzVEVOQ2MxcFhOR2RRVTBKb1ltNU9NMXBZU2xGamVUVnpXbGMxYm1SSFp6ZEpSMnRuVUVOQ2MxcFhORGRKUjJ0eVMzbHJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuVlZOb2FHSnVUak5hV0VwUll6RjBjRmhUYTNWa1IyaHNZbWxvZVZwWVRuWmlTRnBzVEVOQ2VWcFhjR3haTTFGd1R6RjRkVWxEUVdkSlEwRm5TVU5DT1ZoSE5HZEpRMEZuWmxOck4xaEhOVGxZUnpWallteENlV0l5TVhCak1sVjFZMGhLZG1SSE9UQmxXRUpzVEc1S2FGa3lWV2RRVTBKdFpGYzFhbVJIYkhaaWFVRnZTMU5DTjFoSE5HZEpRMEZuWTIxV01HUllTblZKU0ZKdllWaE5kV1JIYUd4aWFXaFNURzVLYUZreVZYQlBNWGgxWmxSMFkySnNlSFZNZVc5eFdFYzBaMHRwUWtSaU1qVjZaRWhLTVZrelVucEpSMFZuVlVoS2RtSlhiSHBhVTBJellWaFNiMGxIUldkalNFcDJZbGRzZWxwVFFtdGFXRTVxWTIxc2QyUkhPWGxKUnpscFlXMVdhbVJEUW1oaWJWRm5Zak5DTUdGWE9YVlpWM2RuV20xR2MySkhTbWhaTW5SalltbEJjVWxIV2pGaWJVNHdZVmM1ZFV4cFFXZFdSMmhzU1VkU2JHTXlUbmxoV0VJd1lqTkpaMWt5T1hWa1IwWndZbTVOWjJKWFZqQmhSemxyWTNsQ2MyRlhkR3hKU0dSdldsYzBiMk50Vm5GYVYwNHdXbGRSY0V4RFFtNWFXRkZ2WW0xR2RGcFRhM05ZUnpSblMybENlbHBZVVc5aWJVWjBXbE4zWjJSdFJuTmtWMVZ3VEVOQ2QySXpUakJMUnpWb1lsZFZjMGxIUm5sYU0wMXdURU5DYUdKdFVXZGFSMVp6V2xoU2JFdEhOV2hpVjFWd1RFTkNNMkZIYkdwaFEwSm9Za2Q0WTJKcFFYRkpTRXBzWkVoV2VXSnBRbXhoV0ZKdldsaEpaMWxUUWpKWlYzZ3hXbE4zWjFsVFFuZGpiVGwwWVZoT2JFbEhXblpqYVVKb1NVaGFhR0pJVm14TVEwSjJZMmxDYUVsSVNteGhiVlpxWkVkc2RtSnBOR2RKUmxKdldsTkNiVmxYZUhOWmJVWnFZVEY0ZFVsRGIyZFpWMDVxV2xoQ01HTjVRakJoUjFWbllqTkNiR050UmpCaFZ6bDFTVWMxYUdKWFZYTkpSMFZuWTIxV2VtSXllREphV0VselNVZEdkVnBEUW1oaWJtdG5XbTVXZVdSSGFHeGphVUpvWTIxa01XSlhWblZrU0UxblpFZG9hR1JEUWpOaU0xWnpXa1o0ZFVsRGIyZGhSMFl5V2xOQ2FWcFhWblZKUjFwMlkyNWthR050VW14YVEwSXdZbmxDTUdGSFZXZFpXRUozWTIwNWQyTnRiR2hrUjFWbllsZFdNR0ZIT1d0SlIwWnBZak5hYkVsSGFHaGFRMEpvU1VjeGJHUkhhSFphUTBKcFdsZFdkVmhITkdkTGFVSjNZMjA1TW1GWFVteGFRMEl6WVZoU2IwbElVbTlhVTBKM1kyMDVkMXBZU1dkaWJVWjBXbE0wWjBsR1VtOWFVMEpDVlVWcloySlhSbkphV0UxblltMDRaMW96Vm1oamJVWjFaRWRXYkdONVFtaFpiVGt4WkVOQ01HRkhWV2RpYlVZd1pGaEtiRmhITkdkTGFVSjJXbWxDTUdGSFZXZGpiVll3WkZoS2RWcFhVV2RpTWtweFdsZE9NRXhEUW1oalIwWjVaRU5DYldOdE9YUkpTRkp2V1ZoUloyRllVV2RoV0UxblpGaE9hRmx0ZUd4SlNHUnZXbGhLYkZwWVdteGphVUozWTIwNWRHRllUbXhqZVVKb1kyMVdZMkpwUVhGSlIwcDJaRmRrYjJSRFFtaGliVkZuWXpJNWMxcEROV05pYVVGeFRERjRkVlZUTlhSWlYzUnNWVWhLZG1KWGJIcGFVMEU1U1VaQ2VXSXlNWEJqTWxVM1dFYzFiV1JYTldwa1IyeDJZbWxDVVdOdE9YUmhXRTVzUzBkU2JHTXlUbmxoV0VJd1lqTkpjMGxIV21oaVIzaHBXVmRPY2t4RFFuQmliazUzV2xkT01FdFRRamRZUnpSblNVTkJaMkZYV1dkTFIxcG9Za2Q0YVZsWFRuSkpSREE1VUZOQ01tSXliR3RKUkVGd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjFwdFJuTmlSMHBvV1RKeloxQlRRbTFrVnpWcVpFZHNkbUpwUVc5aU0wRndTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0Vwc1pFaFdlV0pwUW5sYVYzQnNXVE5SYjJKdFZqTkpSVlo1WTIwNWVVdEdlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsR2QybFZTRXAyWWxkc2VscFRRbXRpTWxaNlNVYzFkbVJEUW5wa1dFSjNZak5LTUVsSE9YZGFXRXBvWkVkc2RtSnFiMmRZUTBsblMzbENkbU5HZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuUzFOck4xaEhOR2RKUTBGblNVTkJaMGxJTURkWVJ6Um5TVU5CWjJaV2VIVkpRMEZuU1Vkc2JVbERhSEJpYms1M1dsZE9NRWxFTURsUVUwSXlZakpzYTBsRVFYQkpTSFJqWW1sQlowbERRV2RKUTBGbllWYzFlbU5IVm1wa1EwRTVTVWRhTVdKdFRqQmhWemwxU1VObmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWhLYkdSSVZubGlhVUkzWXpOU2FHUkhWVFpKUm5kcFpGYzFjbUp0T1ROaWJIZHBabFIwWTJKcFFXZEpRMEZuU1VOQloyWlVkR05pYVVGblNVTkNPVmhITldOaWFVRm5TVU5DTWxsWVNXZGpTRXAyWWxkc2VscFRRVGxKUnpscFlXMVdhbVJHT1dwamJWWm9aRWRWYjFWSVNuWmlWMng2V2xNMWQyTnRPVEJpTTFJMVkwZFZjRTh4ZUhWWVJ6Um5TVU5CWjJOSVNuWmlWMng2V2xNMWQyTnRPWFJoV0U1c1VrZHNlbU5IUmpCWk1tZG5VRk5DYldSWE5XcGtSMngyWW1sQmIyTnRWbnBpTW5neVdsTjNaMkl6UVhOSlIwWjVXak5OY0VsSWRHTmlhVUZuU1VOQlowbERRV2RrYlVaNVNVaEtiR016Vm5Oa1JIUmpZbWxCWjBsRFFXZEpRMEZuWkVoS05VbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWRzYlVsRGFHdGFXRTVxWTIxc2QyUkhPWGxYTWpsM1dGTnJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbElTbXhqTTFaelpFTkJPVWxIVW14ak1rNTVZVmhDTUdJelNtSmlNMEprVEcxR2QyTkhlRFZMU0VKNVlqSXhjR015VlhOSlIwWjVXak5OY0U4eGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblpsTkNiR0pJVG14SlNIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBKNVdsaE9NV0pJVVdkUVUwSnRXVmQ0YzFsdFJtcGhlVFZxV1ZkNGMwdElRbmxpTWpGd1l6SlZjMGxIT1hkTVEwSm9ZMjFrZWt0VWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVZ3hZMkpwUVdkSlEwRm5TVU5CWjJaVFFtcFpXRkpxWVVOQmIxcFlhR3BhV0VJd1lWYzVkVXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ2VWcFlUakZpU0ZGblVGTkNlVnBYY0d4Wk0xRnZXbGhvYWxwWVFqQmhWemwxUzFSMFkySnBRV2RKUTBGblNVTkJaMlpXZUhWSlEwRm5TVU5CWjBsRFFuQmFhVUZ2WTIxV2VtSXllREphVTJ0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGpiVlo2WWpKNE1scFRhSGxhV0U0eFlraFJjRTh4ZUhWSlEwRm5TVU5CWjBsRFFqbFlSelJuU1VOQloyWlVkR05pYkhoMVNVTkJaMGxJUW5saU1qRndZekpWZFdGWE5YcGpSMVpxWkVOQk9VbEhiSFZqTTBKc1dUTlJOMWhITldOaWFVRm5TVU5CZGt4NVFsbFhSbWRuV2tkV2QyTnRWbXBaV0ZKc1drTkNaMlJ0Um5Oa1YxWlFXbTFCWjFsWE5XdEpSMEpzWlVkT2JHTklVbkJpTWpWblNVaE9NV05JUW5aamJsSmpZbWxCWjBsRFFuQmFhVUZ2WVZjMWVtTkhWbXBrUTJ0blpURjRkVWxEUVdkSlEwRm5TVU5DTWxsWVNXZGhWelY2WTBkV2FtUkhWbXRKUkRCbllWYzFlbU5IVm1wa1EyZHdUekY0ZFVsRFFXZEpRMEZuU1VOQ2NGcHBRVzloVnpWNlkwZFdhbVJIVm10TWJrNHdXVmhTYkVsRU1EbFFVMEpqU1c1S2JHRnRWbXBrUjFacldFTkpjRWxJZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VoQ2VXSXlNWEJqTWxWMVdsaG9hbHBZUWpCaFZ6bDFTVVF3WjJGWE5YcGpSMVpxWkVkV2EweHVTbXhaV0U1MlltcDBZMkpwUVdkSlEwRm5TVU5CWjJaV2VIVllSelJuU1VOQlowbERRV2RKU0VKNVlqSXhjR015VlhWa2JVWnpaRmRXVUZwcFFUbEpSMW94WW0xT01HRlhPWFZKUTJkd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpTRnBvWTJsQ2NHSnVUbmRhVjA0d1dsZFJaMUJUUW5CaWJrNTNXbGRPTUV0RGF6ZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNjRnBwUVc5aFZ6VjZZMGRXYW1SSFZtdE1iazR3V1ZoU2JFbEVNRGxRVTBKalNXNUNiR0p0VW5CaWJXUmpTV2xDT0daR2VIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxIYkhWak0wSnNXVE5TYkZwRE5YcGtSMFl3V2xOQk9WQlVNR2RZUTBwNVdsZHdiRmt6VW14YVJuZHBTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMk50VmpCa1dFcDFTVWhDZVdJeU1YQmpNbFUzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUWpsWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ2VWcFlVakZqYlRSbllWYzFlbU5IVm1wa1IxWnJURzVhYUdKSVZteFBNWGgxU1VOQlowbERRV2RKUTBJNVR6RjRkVWxEUVdkSlNERmpZbXg0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRbmRqYlRsMFlWaE9iRTh4ZUhWbVZuaDFXRWMxVVdOdE9YUmhXRTVzVEc1Q2VXSXpVblprU0d4M1dsTTFNR0l4VGpCamJXeDFXbmxCT1VsSFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMGxEUW5sYVdGSXhZMjAwWjFoRFNtSmlNa3B4V2xkT01FbEdRbmxpTWpGd1l6SldaRmhEU1RkWVJ6VTVUekY0ZFZoSE5WRmpiVGwwWVZoT2JFeHVRbmxpTTFKMlpFaHNkMXBUTlRCaFIxWjFTVVF3WjFwdVZuVlpNMUp3WWpJMFowdEhXakZpUjFwd1lrZDRiRnBEZDJkamJWWnhXbGRPTUZwWFVYTkpTRUo1WWpKa2VWcFlUbnBhVjFGd1NVaDBZMkpwUVdkSlEwSXlXVmhKWjJNeVZuTmFhVUU1U1VoU2IyRllUVGRZUnpSblNVTkJaMlJ0Um5sSlIxSnNXbTFXZVdOdFZtdEpSREJuV2tkV2JWcFlTVzlMVkhSalltbEJaMGxEUWpKWldFbG5Xa2M1ZFZwVFFUbEpSMXBvWWtoT2JFOTVRV2RKUXpoMlNVZFdkV016Vm5sYVUwSXdZVWRWWjJSWE5UQmpibFo2WkVkV2EwbElRbmxpTWpGd1l6SlZaMkpYUm5KYVdFMW5XVmhSWjJKWE9YcGtRMEpvV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEYyVEhsQ2VtRlhOVzVpUjFWbldUSkdjMkpEUWpCaWVVSjJZbTFWWjJJeVdXZGtSMmhzU1VkT2FHSkhlR2xaVjA1eVl6RjRkVmhITkdkSlEwRm5XbTVXZFZrelVuQmlNalJuV0RKYU1XSkhXbkJpUjNoc1drTm9NbGxYZURGYVUydG5aVEY0ZFVsRFFXZEpRMEZuU1VOQ01HTnVhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VoU05XTkhWblphYVVKdFpGZDRiV0ZYZUhOYVYxRm5VRlF3T1VsR2QybGFibFoxV1ROU2NHSXlOV05KYVVFdlNVZGFNV0pIV25CaVIzaHNXa05vTWxsWGVERmFVMnRuVDJsQ01sbFhlREZhVkhSalltbEJaMGxEUVdkSlEwRm5abE5DYWxsWVVtcGhRMEZ2V2xob2FscFlRakJoVnpsMVMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEo1V2xoU01XTnROR2RqYlZaeFdsZE9NRXRIVmpSWk1sWjNaRWRzZG1KcGF6ZFlSelJuU1VOQlowbERRV2RKU0RGalltbEJaMGxEUWpsWVJ6VmpZbWxCWjBsRFFtMWtWelZxWkVkc2RtSnBRbVpqYlZaeFdsZE9NRnBYVVc5YVdHaHFXbGhDTUdGWE9YVkxVMEkzV0VjMFowbERRV2RKUTBGblNVZHNiVWxEYURCbFdFSnNZakpaWjJOdFZuRmFWMDR3V2xkUloxQlVNRGxKUm5kcFdtNVdkVmt6VW5CaU1qVmpTV2xyWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGbllsZEdjbHBXVGpCWlYwNXlWa2hLYUZreVZrMWlNalZ1UzBkV05Ga3lWbmRrUjJ4MlltbDNaMk15Vm5OYWFXczNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRakJqYm10blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VoS2JHUklWbmxpYVVKNVdsZHdiRmt6VW14YVEyaHNaVWRPYkdOSVVuQmlNalJ3VHpGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkbVUwSnFXVmhTYW1GRFFXOWliVll6VWxob2FscFlRakJoVnpsMVMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloyTnRWakJrV0VwMVNVaEtiR0Z0Vm1wa1EyaDFXbGhrUm1WSFRteGpTRkp3WWpJMGNFOHhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5abFo0ZFVsRFFXZEpRMEZuU1VOQ09WaEhOR2RKUTBGblNVTkJaMGxJU214a1NGWjVZbWxDZVZwWGNHeFpNMUZ2V2xob2FscFlRakJoVnpsMVMxUjBZMkpwUVdkSlEwSTVXRWMxWTJKcFFXZEpRMEp0WkZjMWFtUkhiSFppYVVKbVkwaEtkbG96U214ak0wNXNXa05vTWxsWGVERmFVMnRuWlRGNGRVbERRV2RKUTBGblNVTkNlVnBZVWpGamJUUm5aRWhzZDFwWE9XMUpTRUo1WWpKa2VWcFlUbnBhVjFGblVGUXdPVWxHZDJsYWJsWjFXVE5TY0dJeU5XTkphVUV2U1VoQ2VXSXlaSGxhV0U1NldsZFJiMlJ0Um5Oa1YxVndTVVJ2WjJSdFJuTmtWMVUzV0VjMFowbERRV2RtVm5oMVdFYzBaMGxEUVdkVlV6VjFXbGhvTUZaSGJHcGhlV2h0WkZjMWFtUkhiSFppYVVGdlMxTkNOMWhITkdkSlEwRm5TVU5CWjBsSVRteGlSMWwxWTBoS2RtSlhiSHBhVlZKd1l6TkNhR1JIVG05TFIxb3hZbTFPTUdGWE9YVkpRMmd5V1ZkNE1WcFRhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJGWFdXZExSMUoyWW0xVmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFubGFXRkl4WTIwME4xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSTVXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRbXRpTWpWc1NVUXdaMlJJU2pGYVZIUmpZbXg0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RhUjFadFdsaEtlVnBYVVhWamJWWjZZako0TWxwVGFHWmFibFp6V20xc2MySkhWbXRMU0Zwb1lraFdiRXRUYXpkWVJ6Um5TVU5CWjBsRFFXZEpTREJ6U1VaM2FXUXlhR3hpYkhkcFRFTkNZbHB1Vm5WWk0xSndZakkwWjB0SFZqUlpNbFozWkVkc2RtSnBhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJGWFdXZExSMUoyWW0xVmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFubGFXRkl4WTIwME4xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSTVXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRbXRpTWpWc1NVUXdaMlJJU2pGYVZIUmpZbXg0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RhUjFadFdsaEtlVnBYVVhWamJWWjZZako0TWxwVGFHWmpiVlp4V2xkT01GcFhVVzlhV0docVdsaENNR0ZYT1hWTFUyczNXRWMwWjBsRFFXZEpRMEZuU1VneFpFdFVkR05pYVVGblNVTkNPVXRVZEdOaWJIaDFTVU5CWjBsRE9IWkpSa0o1WWpKa2VWcFlUbnBKU0VKNVlqTkNhRm95UmpCaU0wbG5ZbTFXYkZwRFFqQmllVUpwV2xOQ2FHUklVbWhaTW1oc1drTkNjR0pwUWpCaFIxVm5XVE5XZVdOdFZuVmtRMEl3WVZkT2NreHNlSFZKUTBGblNVaE9iR0pIV1hWalNFcDJZbGRzZWxwVlVuQmpNMEpvWkVkT2IwdElXblpoVjFGblRVTjNaMWhEU2pOaFIxWjFXRU5KYzBsR2RESmlNbXhyU1VSQmMwbEhXakZpYlU0d1lWYzVkVWxEYURKWlYzZ3hXbE5yWjJVeGVIVkpRMEZuU1VOQlowbERRakpaV0VsblltMVdNMVp0Um5Oa1YxVTNXRWMwWjBsRFFXZEpRMEZuU1VoYWFHTnBRakJoU0Vwc1pIbEJPVWxIV21oaVNFNXNUekY0ZFVsRFFXZEpRMEZuU1VOQ01HTnVhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJKdFZqTldiVVp6WkZkVloxQlRRbVpqU0VwMldqTktiR016VG14YVEyZ3lXVmQ0TVZwVGF6ZFlSelJuU1VOQlowbERRV2RKU0RCbldUSkdNRmt5WjJkTFIxVndTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0ZKdlkyMVdNMGxFTUdka1NFb3hXbFIwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUjJ4dFNVTm9Va3h0T1hWYVdFcDVZak5KY0VsSWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUWxKTWJUbDFXbGhLZVdJelNXOWFVMnMzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUWpsSlIxWnpZekpWWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxJVW05amJUa3pTVWRWTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBJNVdFYzBaMGxEUVdkSlEwRm5TVWd4WTJKc2VIVkpRMEZuU1VOQlowbERRbkJhYVVGdlNWaFNiMk50VmpOTFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRbXRhVjFwc1kyNUtiRnBETlhWaU0xSndXbTVyYjJKdFZqTldiVVp6WkZkVmNFOHhlSFZKUTBGblNVTkJaMGxEUWpsWVJ6Um5TVU5CWjJaV01IQlBNWGgxV0VjMFowbERRV2RqYlZZd1pGaEtkVWxIVW14YWJWWjVZMjFXYTB4dVFubGlNakZ3WXpKVk4xaEhOVGxQTVhoMVdFYzFVa3h1VW1oalEwRTVTVWRhTVdKdFRqQmhWemwxU1VOb2QyTnRPWFJoV0U1c1RFTkNhbGxYZUhOWmJVWnFZWGxyWjJVeGVIVkpRMEZuU1VoS2JHUklWbmxpYVVKU1MwaENlV0l5TVhCak1sVndURzVTYUdORGFHcFpWM2h6V1cxR2FtRjVhemRZUnpVNVR6RjRkVmhITkhaTGFYQmpZbWxCY1VsR1pIWmpiWFI2U1VkR2MySlhPWHBrUTBKellWZDBiRWxHZDJsYWJXeDFXVmQ0YzJWV2QybE1RMEpwWkZoUloySnRPVEJKUjA1b1lrZDRiRnBEUW0xaU0wbG5ZMjFXY1ZwWFRqQmhWemwxWTNrMVkySnBRWEZKUlRsNVlWZGtjR0p0Um5OSlNFcHNZekk1YzJSWVVuQmlNalJuWkcxR2MyUlhWV2RoV0UxblkwZEdlbU15Vm10SlNGSnZZMjA1TVZveVoyZFpNa1p6WWtkS2FGa3ljMmRrVnpWb1dtMWFiRmt6VW14YVF6VmpZbWxCY1VsRlRtaGlSM2hwV1ZkT2NrbEhNV2hsVTBKNVdsaFNNV050TkdkWlUwSjNZMjA1ZEdGWVRteEpTRkp2V1ZoUloyUXliSE5pUTBKcFdsTkNhR1F5Um5Ca1IxWnJTVWRhZG1OcE5XTmlhVUZ4U1VWQ2QxbFlTbWhpVTBJM1VtNVdkVmt6VW5CaU1qVTVTVWRPYUdKSGVHbFpWMDV5V0VjMFowdHBRa0ZqYlZZd1pGaEtkV041UWpkVlV6VlJZMjA1ZEdGWVRteG1WbmgxU1VOdloxRkhWalJaVnpGM1lrZFdZMkpwUVhGSlIxSjJWVEk1ZEZwWVVtOWhWelZ1UzBOc1kySnBRWEZKUTBGblRHNVNiMXBYTkc5TWFUUjFTMVo0ZFVsRGIyZEpRMEYxWkVkR2QwdEhUblppYms1MllrZFZkV0pIT1c1TFZuaDFTVU52WjBsRFFYVmtSMmhzWW1sbmRVeHBOSEJQTVhoMVNVTnZkbGhITlZGamJUbDBZVmhPYkV4dVFubGlNMUoyWkVoc2QxcFROVEJaV0VGblVGTkNiV1JYTldwa1IyeDJZbWxCYjFreVJuTmlSMHBvV1RKemNFbElkR05pYVVGblNVTkNhbGxYZUhOWmJVWnFZWGxCT1VsR1JXOVpNa1p6WWtkS2FGa3ljM0JQTVhoMVdFYzBaMGxEUVdkamJWWXdaRmhLZFVsSVVtOWhXRTExWkVkb2JHSnBhRzFrVnpWcVpFZHNkbUpwUVc5a2JVWnpaRmRWY0VsSWRHTmlhVUZuU1VOQlowbERRV2RqYlZZd1pGaEtkVWxIVG1oaVIzaHBXVmRPY2t4dFdtcFpWM2h6UzBoYWFHSklWbXhMVXpVd1lVZFdkVlZ0Vm5waU1uZ3lXbE5vTWxsWGVERmFVMnMzV0VjMFowbERRV2RtVTJzM1dFYzFPVTh4ZUhWWVJ6UjJTMmx3WTJKcFFYRkpSa3BzV2pKc2VtUkhWbmxqZVVKb1ltbENkbGx1VG14amJscHNZMmxDZG1KcFFtaEpTRUo1WWpJeGNHTXlWWFZZUnpSblMyeDRkVWxEYjJkU00xWm9ZMjFHZFdSSFZteGplbkJqWW1sQmNWaEhOR2RMYVVGNFRHbENNR0ZIUmpCSlIxb3hZa2RhY0dKSGVHeGFRMEpvWW0xUloyTnRWbkZhVjA0d1dsZFJaMlF5YkhOaVEwSnBXbE5DYWxsWGVITmFWMUZuWWpJMWMyVlRRblppYlU1c1RHeDRkVWxEYjJkTmFUUm5aRWRvYUdSRFFteGhXRkp2V2xoSloyUkhhR3hKUjFveFlrZGFjR0pIZUd4YVEwSnFXVmQ0YzFsdFJtcGhlVUoyWTJsQ01HRkhWV2RqYlZaeFdsZE9NRnBYVVdkWk1rWnpZa2RLYUZreWMyZGtNbXh6WWtOQ2FWcFdlSFZKUTI5blNVTkJaMWt5Um5OaVIxWnJURU5DYVdSWVVXZGliVGt3U1VkS2RtUkhaM1ZZUnpSblMybEJla3hwUWpCaFIwWXdTVWRhTVdKSFduQmlSM2hzV2tOQ2FHSnRVV2RqYlZaeFdsZE9NRnBYVVdka01teHpZa05DZFdJelVXZFpiVlZuV1RKR2MySkhWbXRKUjJ4MVNVaFNiMkZZVFdka1NGWjVZbWsxWTJKcFFYRllSelJuUzJsQ1FXTkhSbmxaVnpCblpHMUdjMlJYVldkSlEwRm5TVU5DZDJOdE9YUmhXRTVzU1VjNWVVbEhiSFJpVjFacllWZEdNRnBUUW5sYVYxcHNZMjFXZFZreVZXZGtSemhuWWpKS2VscFlTakphVm5oMVNVTnZaMUZJUW1oamJVWjBTVWRhTVdKSFduQmlSM2hzV2tOQloxcHVWblZaTTFKd1lqSTBaMlJIT0dkWmJWVm5XVEpHYzJKSFZtdEpTR1J3WkVkbloyUkhhR3hKUjFveFlrZGFjR0pIZUd4YVEwSXlXVmQ0TVZwV2VIVkpRMjluVVVoQ2FHTnRSblJKU0Vwc1lXMVdhbVJIVm10SlEwRm5XbTVXZFZrelVuQmlNalJuWkVjNFoxbHRWV2RaTWtaellrZFdhMGxJWkhCa1IyZG5aRWRvYkVsSVNteGhiVlpxWkVkc2RtSnBRbXhsUjA1c1kwaFNjR0l5TldOaWFVRnhTVVZDZDFsWVNtaGlVMEozWTIwNWJtTnRWbnBqTWxaclNVZGFNV0p0VGpCaFZ6bDFTVWhTZGtsSFNteEpSMDVvWWtkNGJGcERRblppYVVKb1ltNXJaMk5JU25aYU0wcHNZek5OWjJKdE9UQmhWMXB3V1RKR01HRlhPWFZqTVhoMVNVTnZaMUZJU214a1NGWjVZbWxDZDJOdE9YUmhXRTVzU1VkYWRtTnBRakJoUjFWblkyMVdNR1JZU25WSlNGcG9Za2hXYkVsSFdubGlNakJuWkVkb2JFbEhiSFZrYlRseVdsZFJaMWt5Um5OaVIwcG9XVEowWTJKcFFYRk1NWGgxVlZNMU0yRkhWblZKUkRCblpESm9iR0pxZEdOaWJWb3hZbTFPTUdGWE9YVkpTR1J2V2xjMGIyUnRSbk5rVjFWelNVZGFNV0pIV25CaVIzaHNXa04zWjJOdFZuRmFWMDR3V2xkUmMwbElRbmxpTW1SNVdsaE9lbHBYVVhCSlNIUmpZbWxCWjBsRFFubGFXRkl4WTIwMFoxVlRhREpaVjNneFdsTnJkV1JIYUd4aWFXaHRaRmQ0YldGWGVITmFWMUZ6U1VoS2JHRnRWbXBrUjFaclRFTkNkMk50T1c1amJWWjZZekpXYTB0VWRHTmliakZqWW14NGRWVklTblppVjJ4NldsTTFkMk50T1RCaU0xSTFZMGRWZFdSSGFHeGliRXBzWXpJNWMyUnRWV2RRVTBKdFpGYzFhbVJIYkhaaWFVRnZaRzFHYzJSWFZYQkpTSFJqWW1sQlowbERRbmxhV0ZJeFkyMDBaMlJIYUhCamVUVXdZVWRXZFV0SFdqRmliVTR3WVZjNWRVbERaM0JKU0hOblkyMVdNR1JZU25WSlNGcG9Za2hXYkU5NVFqbExWSFJqWW00d04xaEhOV05pYkVWMVpFZG9iR0pzU214ak1qbHpaRzFWWjFCVFFtMWtWelZxWkVkc2RtSnBRVzlqU0VwMllsZHNlbHBUZDJka2JVWnpaRmRWY0VsSWRHTmlhVUZuU1VOQ2VWcFlVakZqYlRSblZWTm9kMk50T1hSaFdFNXNTMU0xTUdGSFZuVlZiVlo2WWpKNE1scFRhREpaVjNneFdsTnJOMWhITlRsUE1YaDFXRWMxVVdOdE9YUmhXRTVzVEc1Q2VXSXpVblprU0d4M1dsTTFNR0ZIVm5WVmJWWnhXbGRPTUVsRU1HZGFibFoxV1ROU2NHSXlOR2RMU0Vwc1dWaE9kbUpwYTJkbE1YaDFTVU5CWjBsSVNteGtTRlo1WW1sQ01HRkhiSHBNYmxKdldsYzBiMXB1Vm5WWk0xSndZakkwWjB0RGEyZGxlVUl3WVVoS2RtUjVRbmxhVjBaNllqSTBOMGxJTUhCUE1YaDFabFIwWTJKc2VIVlZVelV3WVVkV2RWVnRWbkZhVjA0d1NVUXdaMXB1Vm5WWk0xSndZakkwWjB0SVFubGlNakZ3WXpKVmMwbElTbXhaV0U1MlltbHJaMlV4ZUhWSlEwRm5TVWhLYkdSSVZubGlhVUpTUzBoQ2VXSXlNWEJqTWxWd1RHNVNiMXBYTlZOYVYzQnNXVE5SYjJOdFZtaGpNamwxUzFSMFkySnVNRGRZUnpWalltazRjVXRzZUhWSlEyOW5VMWRaWjFsWE5HZGlNa3B4V2xkT01FbEhiSHBKUnpWMlpFTkNhRWxJUW5saU1qRndZekpWYzBsSGJEQkpSMng2U1VkR2VrbEdkMmxpYlZab1kyeDNhVWxIUm5wSlNFSjJZek5PY0ZsdGVHeE1iSGgxU1VOdloxTlhXV2RaVTBKM1kyMDVkR0ZZVG14SlIyeDZTVWhLYkdGdFZtcGtSMVpyVEVOQ2NHUkRRbkJqZVVKb1kzbENZMGx0Tld4WldFcGpTV2xDYUdONVFuZGlNMDU2WVZkS2MxcFRRakJpTWpoMVdFYzBaMHRwUWtwYWFVSndaRTlMUVcxWVRXZFpVMEp0WkZkNGJXRlhlSE5hVjFGblkwaEtkbUpYYkhwYVUzZG5aRWRvYkVsSFdqRmlSMXB3WWtkNGRGcFhOVEJKU0Zwb1lraFdiRWxIYkhwSlJ6VnNXVmhLYkdOcE5XTmlhVUZ4U1VWc2JVbEhiREEwYjBOYVkzbENhRWxIVW14YWJWWjVZMjFXYTBsSVFubGlNakZ3WXpKVloxbFhOV3RKU0ZKdldsTkNhMXBYV214amJrcHNXa05DYjFsWVRXZFpiVlpzWW1sQ2VWcFlUblppU0Zwc1drTjNaMlJIYUd4WVJ6Um5TMmxDZVZwWVRuWmlTRll3WVZjNWRVbEhiSHBKUm5kcFltMVdhR050Vm5sWVEwbDFXRWMwWjB0cFFrRmpSMFo1V1Zjd1oySXlTbkZhVjA0d1dFYzBaMHRwUWtGamJWWXdaRmhLZFdONVFuUmlNMDR3U1VoS2JHTXlPWE5rYlZaclNVTm9kVnBYUm5sYVdFNHdTMU5DYldJelNuUkpSemx0U1VoU2IxcFRRblpaYlhCc1dUTlNZMkpwUVhGTU1YaDFXRWMwZGt4NVFsbFhSbWRuWXpKb2RtUlhlR3RKU0dSc1NVaEtiRXhYVW5aSlNGSnZZVmhOTDFoSE5WSk1iVFZzV1ZoS2JHTnBRVGxKUnpWc1dWaEtiR05xZEdOaWJWb3hZbTFPTUdGWE9YVkpSelZzV1ZoS2JHTnBhREpaVjNneFdsTnJaMlV4ZUhWSlEwRm5TVWRzYlVsRGFIQmpNVUo1WWpJeGNHTXlWVzlrYlVaelpGZFZjRXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpTRnBvWTJsQ2NHSnVUbmRhVjA0d1dsZFJaMUJUUWpKWlYzZ3hXbE0xY0dKdVRuZGFWMDR3UzBOck4xaEhOR2RKUTBGblNVTkJaMGxIYkcxSlEyaHdZbTVPZDFwWFRqQmFWMUYxWXpOU2FHUkhWV2RRVkRBNVNVWjNhVnB1Vm5OYWJXeHpZa2RXYTFoRFNYQkpTSFJqWW1sQlowbERRV2RKUTBGblNVTkJaMGxJU214a1NGWjVZbWxDY0dKdVRuZGFWMDR3V2xkUmRXUnRSbk5rVjFVM1dFYzBaMGxEUVdkSlEwRm5TVWd4WTJKcFFXZEpRMEk1V0VjMFowbERRV2RqYlZZd1pGaEtkVWxJV21oaVNGWnNUekY0ZFdaV2VIVllSelIyUzJsd1kySnBRWEZKUlVKNVdsaFNNV050TlhwSlNHUnZXbGhTYjFwWVNXZGtSMmhzU1Vka2NHUnRWblZKUnpscFlXMVdhbVJEUW5CamVVSm9TVWhDZVdJeU1YQmpNbFYxV0VjMFowdHBRbEJrUjJoc1kyNWtjR015VldkaFdGRm5ZVmhOWjFsVFFtMWtWM2h0WVZkNGMxcFhVV2RrYlVaelpGZFZkVmhITkdkTGFUbGpZbXhGZFdGWVRsRmpiVGwwWVZoT2JFbEVNR2RoV0U1UlkyMDVkR0ZZVG14UE1YaDFXbTVXZFZrelVuQmlNalJuWVZoT1VXTnRPWFJoV0U1c1MwYzVhV0Z0Vm1wa1EydG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRblpaYlhCc1dUTlJaMkZYTlhwa1IwWjFXVEpXZGxwcFFsRmpiVGwwWVZoT2JFOHhlSFZtVm5oMVdFYzFVa3h0YkhwVlNFcDJZbGRzZWxwVlJuTmhWM1JzU1VRd1oyRllUbEZqYlRsMFlWaE9iRkZYZUhCaE1sVTNXRWMxYldSWE5XcGtSMngyWW1sQ2NHTXhRbmxpTWpGd1l6SldRbUpIYkhKYVUyaDJXVzF3YkZrelVYQkpTSFJqWW1sQlowbERRbmxhV0ZJeFkyMDBaMkZZVGxCWmJYQnNXVE5SYjJJeVNuRmFWMDR3UzFOQmJVcHBRakJsV0VKc1lqSlpaMkl5U25GYVYwNHdURzVTYjFwWE5HZFFWREE1U1VaM2FWcHVWblZaTTFKd1lqSTFZMGxxZEdOaWJqRmpZbXg0ZFV4NWIzRllSelJuUzJsQ1FXTnRWakJrV0VwMVkzbENNMkZIVmpCaFIxWjVTVWhTYjFwVFFtNWhXRnBzWW1sQ2RsbHRjR3haTTFGbllWaE5aMWxUUW5kYVZ6VnJZVmMxYmtsSVFubGlNakZ3WXpKVmMwbEhNV3haVnpWd1ltMWpaMkp0T1RCWVJ6Um5TMmxDYldSWGVHMWhWM2h6V2xkUloySXpTV2RqYlZaeFdsZE9NRnBYVVhWWVJ6Um5TMms1WTJKc1JYVmhXRTVSV2xjMWEyRlhOVzVKUkRCbllWaE9VVnBYTld0aFZ6VnVUekY0ZFZwdVZuVlpNMUp3WWpJMFoyRllUbEZhVnpWcllWYzFia3RIT1dsaGJWWnFaRU5yWjJVeGVIVkpRMEZuU1VoS2JHUklWbmxpYVVKd1l6RkNlV0l5TVhCak1sVnZZakpLY1ZwWFRqQkxVMEZ0U21sQ2RsbHRjR3haTTFGMVlWYzFlbU5IVm1wa1EyZHdURzVPTUZsWVVteEpSREE1VUZOQ1kwbHVRbXhpYlZKd1ltMWtZMGxxZEdOaWJqRmpZbXg0ZFZWSVNuWmlWMng2V2xNMWQyTnRPVEJpTTFJMVkwZFZkV0ZZVGxGYVZ6VnJZVmMxYmtsRU1HZGFibFoxV1ROU2NHSXlOR2RMUTJ0blpURjRkVWxEUVdkSlNFcHNaRWhXZVdKcFFqQmhSMng2VEcxc2RXTXpRbXhaTTFGdlMxTTFlbVJIUmpCYVUwRTVVRlF3WjFoRFNuZGFWelZyWVZjMWJsaERTVGRZUnpVNVR6RjRkVmhITkhaTGFYQmpZbWxCY1VsRlFubGFXRkl4WTIwMWVrbElaRzlhV0ZKdldsaEpaMlJIYUd4SlIyUndaRzFXZFVsSE9XbGhiVlpxWkVOQ2NHTjVRbWhKU0Zwb1lraFdiRWxIT1hsSlIxb3hZa2RhY0dKSGVHeGFSbmgxU1VOdloyTklTblppVjJ4NldsTTFZMkpwUVhGTU1YaDFWVk0xY0dNd1dqRmlSMXB3WWtkNGJGcERRVGxKUjJ4NlVtNVdjMXB0YkhOaVIxWnJUekY0ZFZwdVZuVlpNMUp3WWpJMFoyRllUa2RrVjNodFlWZDRjMXBYVVc5aU1rcHhXbGRPTUV0VFFqZFlSelJuU1VOQloyTnRWakJrV0VwMVNVTkdjR014UW5saU1qRndZekpWYjJJeVNuRmFWMDR3UzFOQ09HWkRRblpaYlhCc1dUTlJkV0ZYTlhwalIxWnFaRU5uY0V4dVRqQlpXRkpzU1VRd09WQlRRbU5KYlZveFlrZGFjR0pIZUd4YVJuZHBUekY0ZFdaV2VIVllSelZSWTIwNWRHRllUbXhNYmtKNVlqTlNkbVJJYkhkYVV6VndZekJhTVdKSFduQmlSM2hzV2tOQk9VbEhXakZpYlU0d1lWYzVkVWxEWjNCSlNIUmpZbWxCWjBsRFFubGFXRkl4WTIwMFoyUkhhSEJqZVRWd1ltNU9kMXBYVGpCTFEydDFZek5TYUdSSFZXZFFWREE1U1VaM2FWcHVWbk5hYld4ellrZFdhMWhEU1RkWVJ6VTVUekY0ZFZoSE5IWkxhWEJqWW1sQmNVbEZRbmxhV0ZJeFkyMDFla2xJWkc5YVdGSnZXbGhKWjJSSGFHeEpSMlJ3WkcxV2RVbEhPV2xoYlZacVpFTkNjR041UW1oSlNFcHNZVzFXYW1SSFZtdEpTRUo1WWpJeGNHTXlWWFZZUnpSblMyazVZMkpzUlhWaFdFNVRXbGR3YkZrelVteGFRMEU1U1Vkc2VsVnRWbkZhVjA0d1dsZFJOMWhITlcxa1Z6VnFaRWRzZG1KcFFuQmpNVXBzWVcxV2FtUkhWbXRMUnpscFlXMVdhbVJEYTJkbE1YaDFTVU5CWjBsSVNteGtTRlo1WW1sQ2NHTXhRbmxpTWpGd1l6SlZiMkl5U25GYVYwNHdTMU5CYlVwcFFuWlpiWEJzV1ROUmRXRlhOWHBqUjFacVpFTm5jRXh1VGpCWldGSnNTVVF3T1ZCVFFtTkpia3BzWVcxV2FtUkhWbXRZUTBrM1dFYzFPVmhITldOaWJFSjVZakl4Y0dNeVZYVmpTRXAyWkVjNU1HVllRbXhNYld4NlZXMVdjVnBYVGpCYVYxRm5VRk5DYldSWE5XcGtSMngyWW1sQmIwdFRRamRZUnpSblNVTkJaMk50VmpCa1dFcDFTVWhTYjJGWVRYVmhWelY2WTBkV2FtUkRaM0JNYms0d1dWaFNiRWxFTURsUVUwSmpTVzVLYkdGdFZtcGtSMVpyV0VOSk4xaEhOVGxQTVhoMVdFYzBka3g1T0haSlJVcEdVakJzVDBsR1ZrOVRSVVpQVWtWNFJsSkRRbE5TVlhCR1VURlNTbFF3TkdkV1JrcENVVEIwU2xSclpHTmliSGgxVEhrNFoxWkhhSEJqZVVKM1kyMDVkR0ZZVG14SlIzaHdXVzVLYUdOdWEyZFpNamwxWXpOV2RGcFlUV2RhV0docVdsaENNR0ZYT1hWamVVSXdZVWhLZG1ReU5HZGhWelJuWVVkR2RWcEhlR3hqYmsxbll6STRaMlJIYUd4bFUwSnFXVmMwWjFsdFZtTmlhVGgyU1Vkb2FHSnRVbk5hVjFGbldXNXJaMWxUUW5wa1YwcDZXbGhHTVZwWE5UQkpTRUo1WWpJeGNHTXlWWFZKUTBKVllVZFZaMXBZYUdwYVdFSXdZVmM1ZFdONVFtNWFXRkZuV1ZkU2ExcFhVV2RrUnpoblpFZG9jR041UW1oamJrcG9aVk5DTTJGSFZuVllSelIyVEhsQ01HRkhWalZKUjBaNVdsTkNhbU50Vm1oa1IxWnJURU5DYUdKdFVXZGpiVlowWWpOYWJGcERRak5oUjFaMVNVaFNiMXBZYTJkWldFcHNTVWRvYUdKdFVuTmFWMUYxU1VOQ1QySXpVbXhKU0ZKdldWaFJaMkZYTkdkU1ZrMHlTVWM1ZVZoSE5IWk1lVUo2WVVkc2RHSlhWbXRKUjFaMVpHMXNlV0l5TlhSYVZ6VXdZM2wzWjJSSGFIQmplVUl6WWpOV2MxcERRblZaV0ZJeFkyMUdjMkpJYTJkWmJWVm5XVk5DWjFVeVZqQlpRelZqWW01YWFHTnBRakZpYldob1ltMVNjMXBYVWxOYVYwWjZZakkxZWtsRU1HZFhNVEEzV0VjMU1sbFlTV2RrVnpWdldWYzFhMkpIVm10VmJWWnhXbGRPTUdGWE9YVmplVUU1U1VaMFpFOHhlSFZrYlVaNVNVaEtiR05IT1hsa1IxWnJWbGMxYjFsWE5XdGlSMVpyVlcxV2NWcFhUakJoVnpsMVkzbEJPVWxHZEdSUE1YaDFaRzFHZVVsSVVubFpWMDV5VmxjMWIxbFhOV3RpUjFaclZXMVdjVnBYVGpCaFZ6bDFZM2xCT1VsSVVubGtWMVUzV0VjMVkySnRXakZpYlU0d1lWYzVkVWxJU214ak1sWXdWbGMxYjFsWE5XdGlSMVpyVlcxV2NWcFhUakJoVnpsMVkzbG5jRWxJZEdOaWFVRm5TVU5DTVdKdGFHaGliVkp6V2xkU1UxcFhSbnBpTWpWNlRHMTRiR0p0WkRCaFEwRTVTVVJCTjFoSE5HZEpRMEZuWkZjMWIxbFhOV3RpUjFaclZXMVdjVnBYVGpCaFZ6bDFZM2sxYzFwWE5XNWtSMmRuVUZOQmQwOHhlSFZZUnpSblNVTkJaMkZYV1dkTFEwWXdZMjFHYW1FeFZuVmhSMFoxV2tkNGJGcEdTbXhoYlZacVpFZHNkbUp1VFhCSlNIUmpZbWxCWjBsRFFXZEpRMEZuWkVoS2FGa3lkRlppYldob1ltMVNjMXBYVWxOYVYzQnNXVE5TY0dJeU5YcEpSREJuWkVoS01WcFVkR05pYVVGblNVTkNPVmhITlRsWVJ6VmpZbTFhTVdKdFRqQmhWemwxU1VoU2VWbFhUbkpWYlZaeFdsZE9NR0ZYT1hWTFNFSjVZakl4Y0dNeVZYTkpTRXBzV1ZoT2RtSnBhMmRsTVhoMVNVTkJaMGxIYkcxSlEyZG9aRWhLYUZreWRGWmliV2hvWW0xU2MxcFhVbE5hVjNCc1dUTlNjR0l5TlhwTFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VoS2JHUklWbmxpYW5SalltbEJaMGxEUWpsWVJ6Um5TVU5CWjJGWFdXZExTRkkxWTBkV2RscHBRbmRqYlRscVdsaE9la2xFTURsUVUwSmpTVzA1YVdGdFZtcGtSbmRwU1VOWmJVbElValZqUjFaMldtbENkMk50T1dwYVdFNTZURzFXZEdGWVVXZFFWREE1U1VaM2FWcHVWblZaTTFKd1lqSTFZMGxwYTJkbE1YaDFTVU5CWjBsRFFXZEpRMEpTVEcwMWJHVklVbFZoVjA1eVRHNUtNV0pyUm0xa1IxWjVTMGRhTVdKdFRqQmhWemwxU1VObmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWRzYlVsRGFHaGpia3BvWlZZNWNHSnRVbXhsUlRsdFMwaFdkV0ZIUm5WYVIzaHNXa1pLYkdGdFZtcGtSMngyWW01TmMwbElRbmxpTWpGd1l6SlZjRWxEUlRsUVUwRjBUVk5yWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxJUW5saU1rNXNZek5OZFZwWE1YQmtRMmhqU1c1V2RXRkhSblZhUjNoc1drWktiR0Z0Vm1wa1IyeDJZbXgzYVV4RFFubGFWMFo2WWpJMGMwbElRbmxpTWpGd1l6SlZjRTh4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbElTbXhqUnpsNVpFZFdhMVpYTlc5WlZ6VnJZa2RXYTFWdFZuRmFWMDR3WVZjNWRXTjVOWGRrV0U1dlMwaENlV0l5TVhCak1sVndUekY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RtVm5oMVNVTkJaMGxEUVdkSlEwSTVTMVIwWTJKcFFXZEpRMEk1V0VjMVkySnBRV2RKUTBJeFltMW9hR0p0VW5OYVYxSlRXbGR3YkZrelVuQmlNalY2VEc1Q01XTXlaMjlqU0VwMllsZHNlbHBUYXpkWVJ6Um5TVU5CWjJGWFdXZExTRXBzV1ZoT2RtSnBRVzFLYVVJd1pWaENiR0l5V1dkamJWWm9Zekk1ZFV4dVRqQlpWMDV5U1VORk9WQlRRbU5KYmxaMVdrZFdiV0ZYTld4YVJuZHBTMU5DTjFoSE5HZEpRMEZuU1VOQlowbElWblZoUjBaMVdrZDRiRnBHU214WldFNTJZbTVOZFdOSVZucGhRMmg1V2xkR2VtSXlOSFZqTTFKb1dUSnpjRTh4ZUhWSlEwRm5TVWd3WjFwWGVIcGFVMEkzV0VjMFowbERRV2RKUTBGblNVaFdkV0ZIUm5WYVIzaHNXa1pLYkZsWVRuWmliazExWTBoV2VtRkRhR05KYVdoMVlubENlbVJIUm1waGVXdG5XRU5KWjB0NVFubGFWMFo2WWpJMGNFOHhlSFZKUTBGblNVZ3hZMkp1TVdOaWJIaDFXbTVXZFZrelVuQmlNalJuWkZjMU1HTnRSbXBoTVVwc1lXMVdhbVJIYkhaaWFXaDNZMjA1ZEdGWVRteExVMEkzV0VjMFowbERRV2RoVjFsblMwTkdNR050Um1waE1WWjFZVWRHZFZwSGVHeGFSa3BzWVcxV2FtUkhiSFppYmsxd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxVHpGNGRVbERRV2RKU0RGallteDRkVWxEUVdkSlNGcG9ZMmxDYUdSRFFUbEpSMFo1WTIxR05WZ3liSFZhUjFZMFZESlpiMlJYTlc5WlZ6VnJZa2RXYTFWdFZuRmFWMDR3WVZjNWRXTjVkMmRqU0VwMllsZHNlbHBUYXpkWVJ6Um5TVU5CWjJGWFdXZExSMFl3U1VORk9WQlRRWFJOVTJ0blpURjRkVWxEUVdkSlEwRm5TVU5DY0ZwcFFXOWtTR3gzV2xjNWJVbElRbmxpTWs1c1l6Tk5aMUJVTURsSlJuZHBZakpLY1ZwWFRqQllRMGxuU21sWloyUkliSGRhVnpsdFNVaENlV0l5VG14ak0wMTFXbGN4Y0dSRFFUbFFWREJuV0VOS2JXUlhOV3BrUjJ4MllteDNhVXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ1VreHROV3hsU0ZKVllWZE9ja3h1U2pGaWEwWnRaRWRXZVV0SFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEl5V1ZoSloxbFlVbE5hV0VKMlkyNVJaMUJUUW1oamJrcG9aVlk1Y0dKdFVteGxSVGx0UzBoS2JHTkhPWGxrUjFaclZsYzFiMWxYTld0aVIxWnJWVzFXY1ZwWFRqQmhWemwxWTNsM1oyTklTblppVjJ4NldsTnJOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloyRlhXV2RMUjBZd1ZXMVdkMkl6U2pCSlEwVTVVRk5CZEUxVGEyZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DZDJOdE9XcGFXRTU2VEcxV2RHRllVVzlZUTBwNVdsZHdiRmt6VW5CaU1qVkpXVmMxYTJKSFZtdFlRMGx6U1VoV2RXRkhSblZhUjNoc1drWktiRmxZVG5aaWJrNWlXVmhTWkV4RFFuZGpiVGwwWVZoT2JFdFVkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWTIxV2QySXpTakJhVjFKV1ltMW9hR0p0VW5OYVYxSlRXbGR3YkZrelVuQmlNalY2VEc1T2QySkhiR3BhVTJob1pFWktiR05IT1hsa1EzZG5UVk5yTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMlpXZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuWmxOck4xaEhOR2RKUTBGblNVTkJaMGxJTVdOaWFVRm5TVU5CWjBsRFFXZGtWelZ2V1ZjMWEySkhWbXRWYlZaeFdsZE9NR0ZYT1hWamVUVjZZMGQ0Y0ZreVZXOVpXRkZ6U1VSRmNFOHhlSFZKUTBGblNVTkJaMGxEUWpGaWJXaG9ZbTFTYzFwWFVsTmFWMFo2WWpJMWVreHVUbmRpUjJ4cVdsTm9hR1JEZDJkTlUyczNXRWMwWjBsRFFXZG1WbmgxWmxaNGRWaEhOVkpNYmtwc1l6SldNRlpYTlc5WlZ6VnJZa2RXYTFWdFZuRmFWMDR3WVZjNWRXTjVRVGxKU0Vwc1l6SldNRlpYTlc5WlZ6VnJZa2RXYTFWdFZuRmFWMDR3WVZjNWRXTjZkR05pYkhoMVZWTTFibHBZVWxaaWJXaG9ZbTFTYzFwWFVsTmFWMFo2WWpJMWVrbEVNR2RhYmxaMVdUTlNjR0l5TkdkTFEydG5aVEY0ZFVsRFFXZEpRemgyU1VVeGFHRXlWV2RaVTBKcVlqTkNOVWxJVG5aSlNGSnZXVmhSWjFreU9YVmpNMVowV2xoS2VrbEhUbWhpYVdRd1NVZHNkV1JIVm5sYWJWWjVXbE5DTTJGWVVtOUpSemt4WTJsQ2NHSnVVbXhqYlRWb1lrTkNlbVJIUmpCYVV6VmpZbWxCWjBsRFFubGFXRkl4WTIwMFoyUlhOVzlaVnpWcllrZFdhMVZ0Vm1oak1qbDFZM2sxZW1KSGJHcGFVMmR3VHpGNGRXWlVkR05pYkhoMVZWTTFlbVJIT1hkV1Z6VnZXVmMxYTJKSFZtdFZiVlp4V2xkT01HRlhPWFZXU0Vwb1dUSjBjR0p0WTJkUVUwSnRaRmMxYW1SSGJIWmlhVUZ2UzFOQ04xaEhOR2RKUTBGblkyMVdlbHBZVWxaaWJXaG9ZbTFTYzFwWFVsTmFWM0JzV1ROU2NHSXlOWHBMUTJzM1dFYzBaMGxEUVdka1NFcG9XVEowVm1KdGFHaGliVkp6V2xkU1UxcFhjR3haTTFKd1lqSTFla2xFTUdkYWJVWnpZekpWTjFoSE5UbFBNWGgxV0VjMWVWcFlUbXhrUmxaMVlVZEdkVnBIZUd4YVJrcHNZVzFXYW1SSGJIWmliazF2UzFSMFkySnNlSFZNZVRoMlRIbENSbFJyVVdkV1ZUVkpVVlUxUlZSRlZrVkpSa3BHVTJ0V1JGWkZiRkJVYVVKVlZXdEdSRk13YkU5U01YaDFXRWMwZGt0cGNHTmlhVUZ4U1VWT2RtSnVUakJqYmxacVpFaE5aMWxUUW5sYVYzQnNXVE5TYkZwRFFuZGpiVGwwWVZoT2JFeHNlSFZKUTI5blVVaENhR050Um5SSlNFcHNXVmhPZG1KcFFqSlpWM2d4V2xOQ2ExcFlUbXBqYld4cFlWYzFia2xJVW05YVUwSnRXVmRzYzJSWVNteFlSelJuUzJrNVkySnNSWFZqYlZaeFdsZE9NRWxFTUdkamJWWnhXbGRPTUU4eGVIVmFibFoxV1ROU2NHSXlOR2RqYlZaeFdsZE9NRXRJU214WldFNTJZbWxyWjJVeGVIVkpRMEZuU1VoYWFHTnBRbmxhVjNCc1dUTlNjR0l5TkdkUVUwSlJZMjA1ZEdGWVRteExTSFJqWW1sQlowbERRV2RKUTBGbldFTktNMkZIVm5WWVEwazJTVWRhTVdKdFRqQmhWemwxU1VOb2VWcFhjR3haTTFKc1drTnJaMlV4ZUhWSlEwRm5TVU5CWjBsRFFXZEpRMEZuVEhrNFoySnRPVEJhVTBJd1lVZEdNRWxJVW05YVUwSnNZMjVLZG1OcFFtOVpXRTFuV1cxV2JHSnBRbTlaVnpWcllrZFdhMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEp3V21sQmIyTnRWbkZhVjA0d1dsZFJjRWxJZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRakZpYmxKNVdWZE9jbFZ0Vm5GYVYwNHdZVmM1ZFV0SVVtOWhXRTF3VHpGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkbVZuaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloyTnRWakJrV0VwMVNVaEtiR0Z0Vm1wa1IxWnJTVVE0WjJOdFZuRmFWMDR3V2xkUmIyTnRWbWhqTWpsMVMxTkJOa2xJVW05aFdFMDNXRWMwWjBsRFFXZEpRMEZuU1VneFkySnBRV2RKUTBJNVRFTkNiV1JYTldwa1IyeDJZbWxDYlZsWGVITlpiVVpxWVhsbmNFbElkR05pYVVGblNVTkJaMGxEUVdkamJWWXdaRmhLZFVsSVVtOWhXRTAzV0VjMFowbERRV2RtVTNkbldtNVdkVmt6VW5CaU1qUm5ZVmMxZW1OSFZtcGtRMmR3U1VoMFkySnBRV2RKUTBGblNVTkJaMk50VmpCa1dFcDFTVWh6WjJNelVtaGtSMVUyU1VaM2FXTnRWbkZhVjA0d1dsZFNZMGxwZDJkamJWWm9Zekk1ZFU5cFFubGFWMFo2WWpJMFoyWlVkR05pYVVGblNVTkNPVXRVZEdOaWJIaDFTVU5CWjBsRE9IWkpSVFYyWkVkVloyUkhhR2hrUTBJd1lVZFZaMk50Vm1oak1qbDFTVWRvYUdONVFuVmlNMUZuV1cxV2JHSnBRbTlaVnpWcllrZFdhMHhzZUhWSlEwRm5TVWhTZVZsWFRuSlZiVlp4V2xkT01HRlhPWFZMU0Vwc1lXMVdhbVJIYkhaaWFYZG5ZMjFXYUdNeU9YVkxWSFJqWW14NGRVbERRV2RKU0Vwc1pFaFdlV0pwUW5sYVYzQnNXVE5TY0dJeU5EZFlSelU1V0VjMVkySnBPSEZMYkhoMVNVTnZaMUV5T1hWak0xSjVaRmRPTUdONVFtaEpSMW94WWtkYWNHSkhlR3hhUTBKM1kyMDVkR0ZZVG14SlIxcDJZMmxDYUdKcFFuQmlWekZzV2tkc2FHUkhWV2RqYlZadFdsaEtiR0p0VG14TWJIaDFTVU52WjFGSVFtaGpiVVowU1VoYWFHSklWbXhKUjJ4MFlsZFdhMkZYUmpCYVUwSjVXbGRhYkdOdFZuVlpNbFpqWW1sQmNVd3hlSFZWVXpWdFpGZDRiV0ZYZUhOSlJEQm5XbTVXYzFwdGJITmlSSFJqWW0xYU1XSnRUakJoVnpsMVNVZGFNV0pIV25CaVIzZHZaRzFHYzJSWFZYQkpTSFJqWW1sQlowbERRbmxhV0ZJeFkyMDBaMVZJU25aaVYyeDZXbE5vTjFoSE5HZEpRMEZuU1VOQlowbEdkMmxrTW1oc1lteDNhVTlwUW0xa1Z6VnFaRWRzZG1KcFFXOUxVMEkzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUW5sYVdGSXhZMjAwWjJSdFJuTmtWMVUzV0VjMFowbERRV2RKUTBGblNVZ3djMWhITkdkSlEwRm5TVU5CWjBsR2QybGFNbFl3V0VOSk5rbEhXakZpYlU0d1lWYzVkVWxEYUhWWlZ6RnNTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBKNVdsaFNNV050Tkdka2JVWnpaRmRXWW1KdFJuUmFWakEzV0VjMFowbERRV2RKUTBGblNVZ3djMWhITkdkSlEwRm5TVU5CWjBsR2QybGpNbFl3V0VOSk5rbEhXakZpYlU0d1lWYzVkVWxEYUhWWlZ6RnNURU5DZVdGSVRYQkpTSFJqWW1sQlowbERRV2RKUTBGblNVTkJaMGxJV21oaVNGWnNWekkxYUdKWFZtUkpSREJuWTIxb2VrOHhlSFZKUTBGblNVTkJaMGxEUWpsTVJuaDFTVU5CWjBsRFFXZEpRMEpqU1cxU2JHSkhWakJhVm5kcFQybENiV1JYTldwa1IyeDJZbWxCYjJKdFJuUmFVMnRuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkYVIxWnpXbGhTYkVsSVdtaGlTRlpzVnpJMWFHSlhWbVJQTVhoMVNVTkJaMGxEUVdkSlEwSTVURVo0ZFVsRFFXZEpRMEZuU1VOQ1kwbHVRblpqTTFKalNXcHZaMXB1Vm5WWk0xSndZakkwWjB0SE5XaGlWMVZ6U1VkR2VWb3pUWEJKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRE9IWkpSVEZvWTIxeloxUlhiSE5pUjFaNVNVaENlV0l6UW5aak1sWjZTVWhTYjFsWVVXZGpSemw2WkVOQ00yRllVbTlKUnpWMlNVYzFhR0pYVldkak1taDJaRmQ0YTBsSFJuZGpSM2cxU1VkR1kySnBRV2RKUTBGblNVTkJaMGxEUVdkSlF6aDJTVWhDZVdJeU1YQmpNbFpyU1VkYU1XSnRUakJoVnpsMVRHeDRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGhWMWxuUzBjMWFHSlhWV2RRVkRBNVNVYzFNV0pIZDJkbVNIZG5ZbTFHZEZwVFFUbFFWREJuWkcwNWNGcERRWGRMVTBJM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWTIxV01HUllTblZKU0Zwb1lraFdiRXh0Um5kalIzZzFTMGhhZG1GWFVXZE5RM2RuV1ZoS2JtTjVhemRZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5DT1VsSFZuTmpNbFZuWlRGNGRVbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVWhLYkdSSVZubGlhVUl5V1ZkNE1WcFdkSFZaVnpGc1dGTTFhR05JUW5ObFUyZ3lXVmQ0TVZwVGQyZFpXRXB1WTNsck4xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSTVXRWMwWjBsRFFXZEpRMEZuU1Vnd2MxaEhOR2RKUTBGblNVTkJaMGxHZDJsWldFSjNZa2hzWTBscWIyZGFibFoxV1ROU2NHSXlOR2RMU0ZKdllWaE9kMHhEUW1oamJXUjZTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBKNVdsaFNNV050Tkdka2JVWnpaRmRWZFZsWVFuZGlTR3R2WkVkb2NHTXpRWE5KUjBaNVdqTk5jRTh4ZUhWSlEwRm5TVU5CWjBsRFFqbE1SbmgxU1VOQlowbERRV2RKUTBKalNXMTBiR1ZZVG1OSmFtOW5XbTVXZFZrelVuQmlNalJuUzBOcloyVXhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5ZMjFXTUdSWVNuVkpSemxwWVcxV2FtUkdPWEphV0d4NlMwaGFhR0pJVm14TFZIUmpZbWxCWjBsRFFXZEpRMEZuWmxaNGRVbERRV2RKU0RCelNVaGFkbUZYVVdkTlEzZG5XbTVXZFZrelVuQmlNalJuWVZjMWVtTkhWbXBrUTJkd1NVaDBZMkpwUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VoeloyTXpVbWhrUjFVMlNVWjNhVnB1Vm5OYWJXeHpZa2RXYTFoRFNYTkpTRnBvWWtoV2JFOXBRakpaVjNneFdsTkNPVTh4ZUhWSlEwRm5TVWd3Y0U4eGVIVm1WbmgxV0VjMGRrdHBjR05pYVVGeFNVVk9kbUp1V214amJsSjZTVWhTYjFwWE5XaFpiWGhzWTNsQ01HSjVRbEpKU0VKNVlqSXhjR015Vm5wTWJIaDFTVU52WjFGSVFtaGpiVVowU1VoQ2VXSXlNWEJqTWxWblpFZG9iR0p0Um1saVIxVm5ZMGhLZG1KWGJIcGFWbmgxU1VOdloxRklTbXhrU0ZaNVltNU5aMWxUUWxKSlNFSjVZakl4Y0dNeVZtTmlhVUZ4VERGNGRWcHVWblZaTTFKd1lqSTBaMWt5T1d4amJVNXNTMGhDZVdJeU1YQmpNbFZ3U1VoMFkySnBRV2RKUTBJeVdWaEpaMXBIVm0xYVdFcDVXbGRSWjFCVFFtdGFWMXBzWTJsbmNFOHhlSFZKUTBGblNVWkZkV0p0VmpSa1JsSndXVEp6YjFwdVZuVlpNMUp3WWpJMFowdERhMmRsTVhoMVNVTkJaMGxEUVdkSlEwSXdZMjVyWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblkwaEtkbUpYYkhwYVV6VXdZVWRXZFV0SFVteGFiVlo1WTIxV2EweHVTbXhqTWpselpHMVZjMGxIVW14YWJWWjVZMjFXYTB4dVNteGhiVlpxWkVOM1oxcEhWbTFhV0VwNVdsZFJkV0p0T1RCaFYxbzFTMVIwWTJKcFFXZEpRMEZuU1VOQloyWlRRbXBaV0ZKcVlVTkJiMXBZYUdwYVdFSXdZVmM1ZFV0VFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNhMXBYV214amJrcHNXa00xZVZwWGNHeFpNMUZ2V2xob2FscFlRakJoVnpsMVMxUjBZMkpwUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1Vnd2NFOHhlSFZKUTBGblNVaEtiR1JJVm5saWFVSnJXbGRhYkdOdVNteGFRelYzWTIwNWRHRllUbXhQTVhoMVpsWjRkVmhITkhaTGFYQmpZbWxCY1VsRlJuVmliVGt3V1ZoU2JHTjVRbWhpYVVKMldXMXdiRmt6VVdkak0xWnFZVU5DTUdGSFJqQkpSMnd3U1Voa2NHSkhkMmRpYlZZeVdsaEpaMWx0Vm1OaWFVRnhTVWhTZVZsWE5YcGFiVlo1WTIxV2EwbEhSak5aV0d0bldtNUtkbUpUUWpCaFIyeDZTVWhDZVdJeVRteGpNMDFuWWpOYWJHTnBRbWhpYm10blkwaEtkbUpYYkhwYVZuaDFTVU52WjFreU9YUmlXRloxWVZkT2FHUkhiSFppYVVKcVlVZEdkV0p0Vm5OTWJIaDFTVU52WjFGSVFtaGpiVVowU1VjNWFXRnRWbXBrUm5oMVNVTnZaMUZJU214a1NGWjVZbTVOWjJOSVNuWmlWMng2V2xOQ2FFbElaSGxaV0VKM1lWYzFia2xIT1cxSlNGSnZXVmhSWjJJeVNuRmFWMDR3U1VoU2IxbFlVbU5pYVVGeFNVZEdhMXBIYkRCaFZ6bDFXVmQ0YzJWVFFubGFXRTUzWWpJMWEyTjVRakJpZVVJd1lVZFZaMWhEU25Cak1GSnNXbXgzYVVsSE1XeGpNMDVvV2pKV1kySnBRWEZKU0dSd1pFZG9kbVJZVVdkWlUwSjVXbGR3YkZrelVuQmlNalIxV0VjMFowdHBPV05pYkVWMVlsZEdlbVJIVm5sSlJEQm5ZbGRHZW1SSFZubFBNWGgxV201V2RWa3pVbkJpTWpSbllsZEdlbVJIVm5sTFJ6bHBZVzFXYW1SRGEyZGxNWGgxU1VOQlowbElTbXhrU0ZaNVltbENVV050T1hSaFdFNXNTMGgwWTJKcFFXZEpRMEZuU1VOQloxaERTbkJqTUZKc1dteDNhVTlwUW0xa1Z6VnFaRWRzZG1KcFFXOUxVMEkzWmxaNGRVbERRV2RKU0RCelNVZGFNV0p0VGpCaFZ6bDFTVWRhYUdKSGVHbFpWMDV5UzBjNWQweERRbWhqYldSNlMxTkNOMWhITkdkSlEwRm5TVU5CWjBsSVNteGtTRlo1WW1sQ2EyRllUbmRaV0ZKcVlVTm9kbGx0Y0d4Wk0xRnpTVWM1ZDB4RFFtaGpiV1I2UzFSMFkySnBRV2RKUTBJNVRFTkNiV1JYTldwa1IyeDJZbWxCYjB0VFFqZFlSelJuU1VOQlowbERRV2RKU0Vwc1pFaFdlV0pwUWxKTFJ6bHBZVzFXYW1SRGEzVmhWelY2WTBkV2FtUkRaM0JQTVhoMVNVTkJaMGxJTUhCUE1YaDFabFo0ZFZoSE5IWkxhWEJqWW1sQmNVbEdUbmRqYlZab1draE5aMlJIYUd4SlNGcG9Za2hXYkdONVFuWmFhVUpvU1VoQ2VXSXlNWEJqTWxaclNVZEdlV050UmpWSlJ6bHRTVWRHZVZvelZuUmFWelV3WTNsQ2NHSnVVblpKU0ZKdldsWjRkVWxEYjJkYWJsWnpXbTFzYzJKSE1XeGlibEZuV1RKR2MySkhTbWhaTW5OMVdFYzBaMHRwUWtGalIwWjVXVmN3WjFwdVZuTmFiV3h6WWtkV2EwbEhUbWhpUjNocFdWZE9ja2xJVW05WldGRm5ZMjFXYWxwWGJESmFXRTFuWkcxR2VXRlhSbXRoVjAxbldWaEtibVJYTVd4aWJsSjZTVWRhZVdJeU1HZGtSMmhzV0VjMFowdHBRbmRqYlRsMFlWaE9iRnBEUW1oamJrcG9aVlo0ZFVsRGIyZFJTRUpvWTIxR2RFbElTbXhoYlZacVpFZFdhMGxIVG1oaVIzaHBXVmRPY2tsSVVtOVpXRkZuWTIxV2FscFhiREphV0UxblpFZG9iRWxIVmpSWk1sWjNaRWRzZG1KcFFuQmFhVUl3WVVkVloyTklTblppVjJ4NldsWjRkVWxEYjJkaFdFMW5ZMjFXY1ZwWFRqQmFWMUYxV0VjMFowdHBRa0ZqYlZZd1pGaEtkV041UW1oSlNFSjVZakl4Y0dNeVZXZGFiVGw1U1VoU2IxcFRRbmxhV0ZJeFkyMDBaMlJ0Um5Oa1YxVm5Zak5KWjJSSGFIbGlNMlIxU1VkV05Ga3lWbmRrUjJ4MlltbENkbHBzZUhWSlEyOW5XbGRzTUdGSFZubEpSMDVvWWtkNGFWbFhUbkpNYkhoMVNVTnZkbGhITlZKTWJrNTNZMjFXYUZwRFFUbEpTRTUzWTIxV2FGcEVkR05pYlZveFltMU9NR0ZYT1hWSlNFNTNZMjFXYUZwRGFESlpWM2d4V2xOM1oxcHVWbk5hYld4ellrZFdhMHhEUW5sYVYzQnNXVE5TYkZwRGEyZGxNWGgxU1VOQlowbElTbXhrU0ZaNVltbENVa3RJV21oaVNGWnNTMU0xZW1OSVNteFpWMUZ2V201V2MxcHRiSE5pUjFaclRFTkNlVnBYY0d4Wk0xSnNXa05yTjFoSE5UbFlSelZqWW14Q2VXSXlNWEJqTWxWMVkwaEtkbVJIT1RCbFdFSnNURzVPZDJOdFZtaGFRMEU1U1VkYU1XSnRUakJoVnpsMVNVTm9iV1JYZUcxaFYzaHpXbGRSYzBsSVNteGhiVlpxWkVkV2EwdFRRamRZUnpSblNVTkJaMk50VmpCa1dFcDFTVWhTYjJGWVRYVlpWM2h6UzBOcmRXUkhhR3hpYVdodFpGYzFhbVJIYkhaaWFVRnZXVmhLZVZsWWEzQkpTSFJqWW1sQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlIxb3hZa2RhY0dKSGVHeGFRelZvWTBoQ2MyVlRhREppTW14clNVUkJjMGxIUm5samJVWTFTMVIwWTJKcFFXZEpRMEk1VEVOQ2VWcFhjR3haTTFKc1drTnJOMWhITlRsUE1YaDFXRWMwZGt0cGNHTmlhVUZ4U1VaU2IxcFRRbWhqTTJ4MVdYbENiV1JYTldwa1IyeDJZbWxDY0dONVFtaEpSMUpzV1RJNWVWbFlVblpqYVVKdFlqTkpaMW95Vm5WYVdFcG9aRWM1ZVVsSFdqRmliVTR3WVZjNWRXTjVkMmRrU0ZaNVltMXNkVm94ZUhWSlEyOW5aRWRvYkdKVFFuQmlibEoyU1VkR2VtVlhOV3BoU0VwMlltMDVNV041UW01YVZ6VnNZMjFHTUdJelNucE1hVUZuVVZkNE1HRkhPVEZhTW1kbldqSldkVnBZU21oa1J6bDVZM2xDYUdOdFZXZGlNalZ6WlZOQ2QxbFlTakJZUnpSblMybENkbHBwUWpCaFIxVm5ZbTFXTTFwWVRqQkpSVlpFVkZWR1ZGa3pTbkJqU0ZGblRtbENhMk50Um0xa1NFMXpTVWhTYjJGWVRXZFpNamxyV2xOQ2EySXlWbnBKUnpWMlpFTkNhbGxZVm5wYVUwSjZaVmMxTUZsWWFHTmlhVUZ4U1VkV2VXTnRPWGxqZVVKd1ltbENkbUpIVW14amFVSnNZbTFrY0dKdFZucE1hVUZuVmtkb2NHTjVRbXBpTWxKc1NVaE9iMkl6Vm5OYVEwSnFZakkxTUdGWE5URmFVMEl3WW5sQ00ySXpTbkpKUjBaMVdrTkNNMkZYZUhOWVJ6Um5TMmxDY0dKcFFtMVpWMDR3U1Vkc2RHTklTblprYlZWbllqTmFiR05wUWpCaFZ6RnNTVWRHZWtsSVVtOWFVMEp6V1ZjMWJtUlhSbTVhVTBKd1lsaENlV0l6V214amVUVmpZbWxCY1ZoSE5HZExhVUpHVlhwWloxb3lWblZhV0Vwb1pFYzVlV041UW1oamJWVm5XVE5XZVdOdFZuVmtSM2cxU1VoQ2FHTnVVV2RpTWxsblZtcG5aMlJ0Vm5sak1teDJZbWxCZWt4cVJUVkpTR1J3WkVkbloyUkhhR3hZUnpSblMybEJkRXhYYUdoamJURjJZbTVyZEZveVZuVmFXRXBvWkVjNWVXTjVRbmxrVnpVd1lWY3hiRWxIV25OWlYyTm5XbGMxYUZsdGVHeGFRelJuU1VaT2QyRlhVbXhqYXpGMlltMTBiR1ZUUW05WldFMW5ZVWRHYTBsSVVtOWFWekZqWW1sQmNVbEhXblpqYVVKellqSTFibHBZU1hOSlIwb3haRU5DTVdKdFVteGphVUpvWW1sQ2RtSkhVbXhqYVVKUlpWaFNiMkl5TkhSaFZ6VjZZMGRzZVZwWFVXZGFiVGw1WWxNMFowbEdVbTloV0UxbldtNVdkVmt6VW5CaU1qVmpZbWxCY1VsSVpIWmpiWFI2U1VjNWRVbEhTblprUjJkbllUSnNkVnBJVFdkaU1sbG5XakpXZFZwWVNtaGtSemw1WTNrMVkySnBRWEZZUnpSblMybENSVnBYVG5aamJVWXdXbGhOWjFsVFFtNWFWelZzWTIxR01HSXpTV2RhYmxaMVdUTlNjR0l5Tkdkak0xWnFZVU5DTUdGSFJqQlBiSGgxU1VOdlowbERNR2RoV0ZGbllsZEdOVWxJYkhCYVYzaHJTVWhDZVdJeU1YQmpNbFo2V0VjMFowdHBRV2RNVTBKc1pVZFdhbVJZVW5CaU1qUm5aREpzYzJKRFFtcGlNalV3WVZjMU1WcFRRak5oUjFaMVNVaFNiMWxZVVdkalNFcDJZbGRzZWxwVFFuQmplVUp0WkZkNGJXRlhlSE5hVjFKalltbEJjVWxEUVhSSlNGSnZXbE5DTWxsWGVERmFVMEoyV21sQ01HRkhWV2RsVjJ4c1lrZFJaMXBZYUhkamJWWjZZekpzZG1KcFFqTmhWM2h6U1VkS2JFbElVbTlhVTBKdFpGZDRiV0ZYZUhOYVYxRm5aRzFHYzJSWFZtTmlhVUZ4U1VOQmRFbEhiREJKU0Vwc1pFaFdlV0p1VFdkWlUwSjNZMjA1ZEdGWVRteEpSMXAyWTJsQ01HRkhWV2RqYlZZd1pGaEtkVWxJV21oaVNGWnNTVU5vTTJGSFZuVkpTRkp2V2xOQ2JscFhOV3hqYlVZd1lqTktZMkpwUVhGSlEwRm5TVWhPTUdJelFucEpSMnd3V2xoS2FHUkhiSFZhZVd4alltbEJjVWxEUVhSSlNGSnZXbE5DYTFwWFRuWmpiVVl3V2xkUloxcHVWblZaTTFKd1lqSTBaMk50VmpCa1dFcDFZM2xDYUVsSVFubGlNakZ3WXpKVloxcHRPWGxKU0ZKdldsTkNlVnBZVWpGamJUUm5aRzFHYzJSWFZtTmlhVUZ4U1VOQlowbEhPVzFKU0ZKdldsTkNibHBYTld4amJVWXdZak5KWjJJelNXZGtSMmhzU1VkYWNHTnVUakJKU0Vwc1lXMVdhbVJIVm10SlNFSjVZakl4Y0dNeVZXZFpWekYyWW0xaloyUkhhSFpqTWxaalltbEJjVWxEUVdkSlNHeHdXbGQ0YTFwWFVYVllSelJuUzJsQloweFRRbkJhYVVKb1ltbENiR051U25aamFVSndZM2xDTUdGSVNuWmtNalJuWVZjMFoyUkhhR3hKUjJSc1ltMVdlVmxZVW5aamFYZG5ZVmhSWjJOSVNuWmpSMFp1V1ZoU2JHTjVRakJoU0VwMlpGZGtiMWhITkdkTGFVRm5TVU5DYkdSdFZubGxVMEp0WWpKNGMySXpaSEJpYldOblpWZHNiR0pIVVdka1Z6VXdZVmQzWjJGWVVXZGhXRTFuV1RKR01Wb3lhREJNUTBKMlkybENNV0p1VW5CaVEwSndaRU5DYkdNeVRtaGpSMVo2V0VjMFowdHBRV2RKUTBJd1lVZFZaMW95Vm5WYVdFcG9aRWM1ZVVsSFdqRmliVTR3WVZjNWRVbEhSbk5rUnpsdVdsaFNiMXBZU1hOSlIwWjFXa05DY0dONVFqQmpiVVoxWXpKNGFHUkhWbXRKUjJ4MVpFYzRaMWxXZUhWSlEyOW5TVU5CWjJOdFZuRmFWMDR3WVZjNWRVbEhXblpqYVVJd1lVZFZaMk5JU25aaVYyeDZXbE5DZVZwWVVqRmpiVFZzV2tOQ2FXVlRRakJoUjFWbldrZFdhbUl6U21oa1IxWnJTVWRrYkdKdFZubFpXRkoyWTJrMVkySnBRWEZNTVhoMVZWTTFhR016YkhWWmVVRTVTVWRHZW1WWE5XcFBNWGgxV201V2RWa3pVbkJpTWpSbldWaE9OV0p0VFc5aVYwWnlXbFZrYkdKdFZubFpXRkoyWTJscloyVXhlSFZKUTBGblNVaEtiR1JJVm5saWFVSnRaRmMxYW1SSGJIWmlhVUZ2UzFOQ04xaEhOR2RKUTBGblNVTkJaMGxET0haSlNHUnZXbGMwWjJSdFZubFphVUp3WTNsQ1kwbHVUbXhpYlZKalNXbDNaMWxZU201SlIyeDZTVWRGWjJSdFJuTmtWMVpqWW1sQlowbERRV2RKUTBGblRIazRaMlF5YUd4aWFVSXlXbGhLYVVsSGJIcEpSbmRwWkVkb2VXSXpaR05KYVhkbldWaEtia2xIYkhwSlIwWjFTVWRXTkZreVZuZGtSMngyWW14NGRVbERRV2RKUTBGblNVTkNiV1JYTldwa1IyeDJZbWxDYW1JeU5UQmhWelV4V2xoSmIyUnRWbmxaYVhkbldWaEtia3RUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQ01sbFlTV2RqYlZaNlpGZDRNRTh4ZUhWWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQmRreDVRbFppYmxKd1lrTkNWMDlEUVhwTWFrVTFTVU00WjFFeWFIbGlNakZ3WkZjd1owMXFhMmRoV0UxblkyMVdjMXBYUm5wYVYxRnpTVVpPZDJGWFVteGphekYyWW0xMGJHVlRRbkJqZVVJd1lVZFZaMkl5TlhObFZuaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloweDVPR2RhVnpWdVlWYzFiRWxJVW05WldGRm5ZVWRHZWtsSFJXZGFSMVozWWtjNU5WcFhVV2RaYlVaNldsTkNkbHBwUW1samJUa3pZekpXZVdONVFqQmhSMFl3U1VoT01XTklRblpqYmxGbldqSldkVnBZU21oa1J6bDVZM2sxWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUXpoMlNVVm9kbVF5VmpKYVdFbHpTVVpPVGtvelRXZGFNbFoxV2xoS2FHUkhPWGxqZVVJeFl6SlZaMlJIYUd4SlJrSTFaRWRvZG1KcE1YQmliazUzWVZoS2JGcERRbnBhVnpGb1ltNVNjRmt6VFdkaU1scGpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERPSFpKUnpreFpFZFNhR1JIVm10SlJWWlVUbWxDYTJOdFJtMWtTRTExU1VOQ1dGcFRRak5pTTFaeldrTkNjMkZYZEd4SlNGSjJTVWhPTVdOSVFuWmpibEZuVWxaTk1reERRbWxrV0ZGblpESlZibHBEUW1oaVNFNTJXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRWFpNZVVKellWZDBiRWxJVW5aSlJ6Rm9ZVEpWWjJGWVVXZGpSemw2WXpKc2FXSkhWV2RrUnpoblpGaE9iRWxIWkd4aWJWWjVXVmhTZG1OdVRXZGhWelJuV2tkV2QySkhPVFZhVjFGbldXNUtkbVF6VG14amJrMXpTVWhPZGxoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGMlRIbENNMXBUUW1oaVNFNTJTVWhPTVdOSVFuWmpibEZuVlVoc01HRkhPWFZNV0U0d1pWZDRiRWxIWkd4aWJWWjVXVmhTZG1OdVRYVkpRMEpDWkVOQ2VtSXlNV3hKU0VKMllWYzFNRWxJWkd4SlIwNW9ZbWxDZVZwWE1YWmtiVlpqWW1sQlowbERRV2RKUTBGblNVTkJaMGxET0haSlNGSnZZVmhOWjFsdGVIWlpNbk4xV0VjMVkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlIyeHRTVU5vTUdWWVFteGlNbGxuVlROU2RtTkZiREJhV0Vwb1pFZHNkbUpwUVRsUVZEQm5XRU5LTVdKdFVteGFiV3gxV2xkU1kwbHBhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRemgyU1VWV1ZFNXBRa2hhVnpWc1kyMUdNR0l6U25wWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RrU0VvMVNVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RqYlZaNlpGZDRNRWxFTUdkYU1sWjFXbGhLYUdSSE9YbFhNMXBzWTIxS1pFdEhSbmxhZVdzM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWmxOQ2FsbFlVbXBoUTBGdldsaG9hbHBZUWpCaFZ6bDFTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlNFcHNaRWhXZVdKcFFubGFWM0JzV1ROUmIxcFlhR3BhV0VJd1lWYzVkVXRVZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRamxZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZGhWMWxuUzBoS2JHTXpWbk5rUXpWcllqSTFiRXRUUWpkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVaEtiR1JJVm5saWFVSlNTMGhLYkdNelZuTmtRelV5V1ZkNE1WcFRhemRZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZG1VMEpzWWtoT2JFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuWTIxV01HUllTblZKU0dSdldsYzBiMk50Vm5wa1YzZ3dURzVhYUdKSVZteE1RMEpxV1ZkNGMxbHRSbXBoZVhkbldsaEtlVmx0Um1waGVXczNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZG1VMEpzWWtoT2JFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFYWk1lVUpVWTBkc2ExcFlTazVpTWpWeVdsaHJaMUl5Vm5WYVdFcG9aRWM1ZVdNeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxET0haSlJWcEtWMFV4Ums5cFFsTmFWekYyWkcxVloyUkhhSEJqZVVKcVdWaE9iRWxJWkc5YVZ6Um5WVEF3WjFwSE9XeGplVUpHVlhwWloxb3lWblZhV0Vwb1pFYzVlV041TldOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRakJqYm10blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRbmxhV0U0eFlraFJaMUJUUW01YVZ6VnNZMjFHTUdJelNtSmtiVlo1V1d3d2IxbFlTbTVMVkhSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEk1U1VkT2FHUkhUbTlKUTJoc1pVZE9iR05JVW5CaU1qUndTVWgwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkaFYxbG5TMGRzZWxVelVuWmpSV3d3V2xoS2FHUkhiSFppYVdoc1pVZE9iR05JVW5CaU1qUndTMU5DTjFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DZVZwWVVqRmpiVFJuVlZOb2JHVkhUbXhqU0ZKd1lqSTBkV1J0Um5Oa1YxVndUekY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUWpsSlIxWnpZekpWWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VoS2JHRnRWbXBrUTJoc1pVZE9iR05JVW5CaU1qUndUekY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUWpsWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RtVm5oMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpTRXBzWkVoV2VXSnBRak5oUjFaMVMwaEtiR016Vm5Oa1EzZG5XVEpHYzJKSFNtaFpNbk56U1VkV2VXTnRTbWhaTW5Od1R6RjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZG1WbmgxU1VOQlowbERRV2RKUTBJNVdFYzBaMGxEUVdkSlEwRm5TVWhhYUdOcFFtNWFWelZzWTIxR01HSXpTV2RRVTBKMFdWZDBiRkl5Vm5WYVdFcG9aRWM1ZVV4dFJuZGpSM2cxUzBoU2IyRllUWE5KUjBaNVdqTldkRnBYTlRCamVXczNXRWMwWjBsRFFXZEpRMEZuU1VoYWFHTnBRbXBaVjNoeldXMUdhbUY1UVRsSlIwNTJZbTVTY0dKdVZteGphVFZwWVZjMWEwdEhUblppYmxKd1ltNVdiR05wZDJkWVEwcDFXbGhvTUZoRFNYQlBNWGgxU1VOQlowbERRV2RKUTBJeVdWaEpaMXBZU25sWmJVWnFZWGxCT1VsSFRuWmlibEp3WW01V2JHTnBOV2xoVnpWclMwZE9kbUp1VW5CaWJsWnNZMmwzWjFoRFNqQmhTRXAyWkRGM2FVdFVkR05pYVVGblNVTkJaMGxEUVdkamJWWXdaRmhLZFVsSFRtaGlSM2hwV1ZkT2NrdERhemRZUnpSblNVTkJaMlpVZEdOaWJqRmpZbXg0ZFV4NWIzRllSelJuUzJsQ1ZXRkhWV2RqTTBKb1pESTBaMXB1Vm5WWk0xSndZakkwWjJGWVRXZFpVMEo2WWxkR2MySkRRak5qYlVaM1kwZFdlVWxIUm5saU0xWjFXa05DYUdNemJIVlplVUl3WVVkR01FbEhiSFJpVjFacllWZEdNRnBYZURWWVJ6Um5TMmxDYWxsWGVITmplVUl3WVVkVloxb3lWblZhV0Vwb1pFYzVlVWxIUm5WYVEwSm9Za2hPZGtsSFZuVmFTRTFuWkVkb2JFbElRbmxpTWpGd1l6SlZaMWt5YUdoaFZ6UnpTVWhPZGtsSVVtOVpXRkZuV1ZjMU5WaEhOR2RMYVVJeFltMW9hR0p0VW5OYVYxRm5XbGhLZVdJelNucEpSMFo1V2xOQ01HRklTblprTWpSbllWYzFlbVJIVm1oYVEwSjJXbWxDYldJelNqTlpXRXByV2xkUloyUkhPR2RrUjJoc1NVZFdlV050T1hsWVJ6Um5TMmxDYjFsWE5XdGlSMVo1VEdsQ1ZXRkhiSHBKUjJ4NlNVaFdlbHBYV2pGaVEwSnBXbGRPYUdSWVRteEpSMnd3U2pOTloxcFlhREJqYlZaMFdsZDROVWxIVG5aaVZ6RjJZbWxDTUdKNVFubGtWelZqWW1sQmNVbEhaR3hpYlZaNVdWaFNkbU51VFdkWldGRm5aRWRvYkVsSVVuWmpRekZ6V2xoYWJHSkRRakJpZVVJellqTktja2xJWkhCa1IyZG5Za2RzYVdOdFJubGhWMVo2VEd4NGRVbERiM1pZUnpWU1RHNU9kMWxZWkhWSlJEQm5Zek5DYUdReU5EZFlSelZ0WkZjMWFtUkhiSFppYVVKNlkwZEdNMkpwYUhSWlYzUnNVakpXZFZwWVNtaGtSemw1UzFOQ04xaEhOR2RKUTBGblZWTTFhMkl5Tld4TFJrVjFXVmhPTldKdFRXOWlWMFp5V2xWa2JHSnRWbmxaV0ZKMlkybHJiMHRUYXpkWVJ6VTVXRWMxWTJKcE9IWkpSVnBLVjBVeFJrOXBRbE5hVnpGMlpHMVZaMlJIYUhCamVVSndZbTVTYkdOdFdtaFpNbFZuWWpJMWFscFRRa1pWZWxsbldqSldkVnBZU21oa1J6bDVZM2xDYUdOdFZXZGhWelJuVlROQ2NGcEhWbmxVVnpsMVlUSldOVXhzZUhWTWVXOXhXRWMwWjB0cFFsVmhTRXAyWkROTloxbFRRbE5hV0ZJeFkyMDFWMWxYZURGYVUwSnNaVWRPYkdOSVVuQmlNalJuWkVjNFoyTXpVblpqUTBKb1ltbENhR016YkhWWk1taDVZakkxZG1SWVRXZGFNbFoxV2xoS2FHUkhPWGxNYkhoMVNVTndZMkpwUVhGSlJsSnZZVmhOWjJGWE5UQmFXRXB0V1ZkT2JFbEhiSHBKUjBWbll6TlNkbU5ETVc1WldFRm5ZbGRXYUdNelZubGFVMEl3WW5sQ2VtUllRbmRpTTBvd1NVZGtiR0p0Vm5sWldGSjJZMmxDZVZwWVVqRmpiVFZqWW1sQmNVbElXbWhpU0Zac1kzbENjR0pwUW5aaVIxSnNZMmxDUjJGWVNteGFiVGswVERGT2QyRlhVbXhqYXpGMlltMTBiR1ZUTkdkSlJXeDFTVWRLZVdJelpIcGFXRXA2U1VoU2IxbFlVV2RqTTFaM1kwYzVlV1JEUWtaVmVscGpZbWxCY1VsSFpHeGliVlo1V1ZoU2RtTnVUV2RpUjJ4eVdsTkNSR0ZJU25aaVYyd3hZbE5CZVU5VGQyZGhibFo2WkVOQ01XTXlWV2RZUTBwNVdsaFNNV050TldOSmFVSndZbWxDTldJelZubEpSMlJzWW0xV2VWbFlVblpqYkhoMVNVTnZaMXB1Vm5WWk0xSndZakkxZWt4c2VIVkpRM0JqWW1sQmNVbEZRbmRaV0Vwb1lsTkNNbGxYZURGYVUwSXdZVWRWWjJOdFZqQmtXRXAxU1VoYWFHSklWbXhKUjFwMlkybENNR0ZIVldkak0xWjVZMjA1TVdKdFVuQmliV05uV2pKV2RWcFlTbWhrUnpsNVdFYzBaMHRwUWtGa1IyaDVZak5rZWtsR1NteGtTRlo1WW14YWFHSklWbXhKUjFZMFdUSldkMlJIYkhaaWFVSXpZVmhTYjBsSVVtOWFVMEl5V1ZkNE1WcFROV05pYVVGeFNVVkNiR1ZIUm5SalIzaHNXRWMwWjB0cFFYWk1lVUpHVlhwWloyTXpValZpUjFaalltbEJjVWxHUlhWWldFNDFZbTFOYjFwdVZuVlpNMUp3WWpJMGNVbERaM0JKU0hSalltbEJjVWxEUVdkSlEwRm5aRzFHZVVsSFduWmllVUU1U1Voc2NGcFhlR3RKUjJSc1pFVmFkbUl4UW5saU1qRndZekpWYjB0VWRHTmlhVUZ4U1VOQlowbERRV2RrYlVaNVNVZEthR05wUVRsSlNHeHdXbGQ0YTBsSFpHeGtSVXBvWTJ4Q2VXSXlNWEJqTWxWdlMxUjBZMkpwUVhGSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VkYWRtSjVRWEpKUjBwb1kycDBZMkpwUVhGSlNEQndXRWMwWjB0cFFYWk1lVUpRWWtkU2JHTnBRbFJqUjJ4cldsaEtUbUl5TlhKYVdHdG5Zek5TTldKSFZtTmlhVUZ4U1VaRmRWbFlUalZpYlUxdldtNVdkVmt6VW5CaU1qUm5TME5yWjJVeGVIVkpRMjluU1VOQlowbERRakpaV0VsbldtMDVka2xFTUdkbFYyeHNZa2RSWjFveVZqQlNiVGwyVlVoS2RtSlhiSHBhVTJkd1R6RjRkVWxEYjJkSlEwRm5TVU5DTWxsWVNXZFpiVVo1U1VRd1oyVlhiR3hpUjFGbldqSldNRkZ0Um5sVlNFcDJZbGRzZWxwVFozQlBNWGgxU1VOdlowbERRV2RKUTBKU1RHNUtiR1JJVm5saWFXaHRZakk0WjB0NVFtbFpXRWx3VHpGNGRVbERiMmRtVTJ4alltbEJjVXd4ZUhWVlZuUmpTVzVLYkdSSVZubGliSGRwV0ZOQk9VbEdPWGxhV0ZJeFkyMDBOMWhITlcxa1Z6VnFaRWRzZG1KcFFtWmpiVll3WkZoS2RVdElXbWhpU0Zac1MxTkNOMWhITkdkSlEwRm5aRWRvZVdJelkyZGliVll6U1VaR1UxcFlVakZqYlRWWFdWZDRNVnBUYURKWlYzZ3hXbE5yTjFoSE5UbFlSelZqWW1rNGNVdHNlSFZKUTI5blZrZG9iRWxJUW5saU1qRndZekpXYTBsSFdqRmliVTR3WVZjNWRVbEhVbXhaTWpsNVdWaFNkbU5wUW14aWJrNHhZMjFXZWtsSVVtOVpXRkZuV1ZjMU5VbElRbmxpTWpGd1l6SlZaMWxZU201a1Z6RnNZbTVTZWxoSE5HZExhVUpvWTIxVloyTXlWakJrUjNoc1drTkNhR0p0VVdkalIwWjZZekpXYTBsSFJucEpTRnBvWWtoV2JHTjVRVzlaU0ZKdllWaE9aMGxIYkhwSlIwWnpZekk0WjJNeVZqQmtSM2hzV2tOQ2FHSnRVV2RqUjBaNll6SldhMWhITkdkTGFVSm9ZM2xDYUVsSVdtaGlTRlpzUzFNMFowbEZiREJKU0dSd1lrZDNaMWxYZUhwaWVVSnNZbTVPTVdOdFZXZGtSMmhvWkVOQ01HRkhWV2RqYlZaNlpGZDRNRWxIT1cxSlIwVm5XbTVXZFZrelVuQmlNalJuWVZoT1kySnBRWEZKUjBaelpESkdOV041UW1oSlNFSjVZakl4Y0dNeVZYVllSelJuUzJ4NGRVbERiMmRSUjFZMFdWY3hkMkpIVm1OaWFVRnhTVWhhYUdOcFFtaGFSMUZuVUZOQ1VreHVRbmxpTWpGd1l6SldhMHRIV2pGaWJVNHdZVmM1ZFVsRGFHaE1RMEpwUzFOQ04xaEhOR2RMYVVGblNVTkJaMk50VmpCa1dFcDFTVWRGWjB0NVFtbFBNWGgxU1VOdloyWlRhemRZUnpSblMybENhRnBIVVc5VlUyaG9TMU4zWjFWVGFFTkxVMnMzV0VjMFowdHNlSFZKUTI5blVVaENhR050Um5SSlNIUnRaRmMxYW1SSGJIWmliakJuV1RKR2MySkhTbWhaTW5OblZrZG9iRWxIV2pGaWJVNHdZVmM1ZFVsSVVuWkpSMUpzV1RJNWVWbFlVbXhZUnpSblMybENRV050VmpCa1dFcDFZM2xDTjFwdVZuVlpNMUp3WWpJMU9VbEhSV2RhYmxaMVdUTlNjR0l5Tkdka1IyaG9aRU5DYjFsWVRXZFpiVlpzWW1sQ2ExcFhUblpqYlVZd1dsZFJkVmhITkdkTGFUbGpZbXhGZFdOSVNuWmlWMng2V2xkUloxQlRRbmRqYlRsMFlWaE9iRnBFZEdOaWJWb3hZbTFPTUdGWE9YVkpTRUo1WWpJeGNHTXlWbXRMUjA1b1lrZDRhVmxYVG5KTFUwSTNXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEhXakZpYlU0d1lWYzVkVWxEWjNCSlNIUmpZbWxCWjBsRFFXZEpRMEZuWTIxV01HUllTblZKU0U1M1kyMVdhRnBEYUdKa1IyaHdZM2wzWjFsWGVITkxSMFo1V2pOV2RGcFhOVEJqZVd4a1RFTkNiV1JYTldwa1IyeDJZbWxCYjJNeVZuTmFhWGRuV1ZoS2JtTjVhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJOdFZqQmtXRXAxU1VkT2FHSkhlR2xaVjA1eVRHMUdkMk5IZURWTFNFNXNZa2RaYzBsSFJubGFNMDF3VHpGNGRVbERRV2RKUTBGblNVTkNPVXRVZEdOaWFVRm5TVU5DT1U4eGVIVm1WbmgxV0VjMGRrdHBjR05pYVVGeFNVaE9iR0p0VW5wSlIwVm5ZbGRXZW1NeVJtNWFVMEl3WW5sQ2FFbElXbWhpU0Zac1NVZHNkVWxIUldkYWJsWXdaRmhLYkVsSVVqRmpiVFZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNkbGx0Y0d4Wk0xRnhTVWhTYjFwVFFubGFWMDV3WTBkc2JHSnVVbU5pYVVGeFNVVkNkMWxZU21oaVUwSjJZME5DTUdGSFZXZGliVVowV2xOQ2RscHBRakJoUjFWbllsZFdlbU15Um01YVUwSjJZMGRXZVZsWVVuQmlNalJ6U1VkVmRWcDVOSE5KUm5kcFpESm9iR0pzZDJsTVJuaDFTVU52WjFGSVFtaGpiVVowU1VkR2VWb3pUV2RhYmxaNVpFZG9iR05wUW1oamJXUXhZbGRXZFdSSVRXZGtSemhuV1cxVloxcHRPWGxrTWtaNVdrZFdhMGxJVW5aSlNGSnZXbE5DZG1OSFZubFpXRkp3WWpJMVkySnBRWEZKUlVKNVdsaFNNV050TlhwSlNFcHNZek5XYzJSRFFqZFZTRXAyWWxkc2VscFlNR2RaVTBKM1kyMDVkR0ZZVG14SlIxcDJZMmxDTUdGSFZXZGpiVlo2WkZkNE1FbEhPVzFKU0ZKdldsTkNkbU5IVm5sWldGSndZakkxWTJKcFFYRk1NWGgxVlZNMWEyRllUbmRaV0ZKcVlVTkJPVWxIVW5Cak0wSm9aRWRPYjA4eGVIVmFibFoxV1ROU2NHSXlOR2RhUjJ4NlkwZEdNRmt5WjI5aU1rcHhXbGRPTUV4RFFuWmpRM2RuV1ZoS2JtTjVhMmRsTVhoMVNVTkJaMGxJU214a1NGWjVZbWxDVWt0SE9XbGhiVlpxWkVOcmRWcEhiSHBqUjBZd1dUSm5iMkl6UVhOSlIwWjVXak5OY0U4eGVIVm1WbmgxV0VjMVVXTnRPWFJoV0U1c1RHNUNlV0l6VW5aa1NHeDNXbE0xYTJGWVRuZFpXRkpxWVVOQk9VbEhXakZpYlU0d1lWYzVkVWxEYUhaalEzZG5XVmhLYm1ONWEyZGxNWGgxU1VOQlowbElXbWhqYVVKNldsZDRiVWxFTUdka1IyaHdZM3AwWTJKcFFXZEpRMEl5V1ZoSloxcEhWbTFhV0VwNVdsZFJaMUJUUW10YVYxcHNZMmxuY0U4eGVIVkpRMEZuU1VaRmRXSnRWalJrUmxKd1dUSnpiMXB1Vm5WWk0xSndZakkwWjB0RGEyZGxNWGgxU1VOQlowbERRV2RKUTBKNldsZDRiVXh1UW5saU1qRndZekpXUldGWVRuZFpXRkpxWVVOb2ExcFhXbXhqYmtwc1drTTFlVnBZVG5aaVNGcHNURU5DZG1ORGQyZFpXRXB1WTNsck4xaEhOR2RKUTBGblpsTnJOMWhITkdkSlEwRm5ZMjFXTUdSWVNuVkpSMUpzV20xV2VXTnRWbXRNYmtKNVlqSXhjR015VlRkWVJ6VTVUekY0ZFZoSE5IWkxhWEJqWW1sQmNVbEZaR3hrU0UxblpFZG9iRWxJV21oaVNGWnNTVWM1YlVsSFJXZGpTRXAyWTBkV2VXUklhMmRoVnpSbldWTkNiV1JZVWpGamJWVm5aRWhXZVdKcE5XTmlhVUZ4U1VWQ2QxbFlTbWhpVTBKMldXMXdiRmt6VVdkSlEwRm5ZMGhLZG1KWGJIcGFVMEoyWTJsQ2NHSlhNV3hhUjJ4b1pFZFZaMk50Vm0xYVdFcHNZbTFPYkVsSFduWmphVUl3V1ZoS2JscFlVV2RpTWtweFdsZE9NRmhITkdkTGFVSkJZMGRHZVZsWE1HZGliVVowV2xOQlowbERRV2RKUnpWb1lsZFZaMkl5V1dkalNFcDJZMGRXZVdSSWEyZGtSemhuV2pKV01GaEhOR2RMYVVKQlkyMVdNR1JZU25WSlNFSjVZakl4Y0dNeVZXZGFiVGw1U1VoU2IxcFRRbmRqYlRsM1dsaEtNR1ZUUWpKWlYzZ3hXbFo0ZFVsRGIzWllSelZTVEcxa2JHUkRRVGxKUjFveFltMU9NR0ZYT1hWSlEyaDJXVzF3YkZrelVYTkpSM1JzWlZOcloyVXhlSFZKUTBGblNVaEtiR1JJVm5saWFVSlNTMGM1YVdGdFZtcGtRMnQxV2tkc2VtTkhSakJaTW1kdldFTktibHBZVW1OSmFYZG5WekowYkdWV01IQlBNWGgxWmxSMFkySnNlSFZWU0VwMllsZHNlbHBUTlhkamJUa3dZak5TTldOSFZYVmFNbFl3U1VRd1oxcHVWblZaTTFKd1lqSTBaMHRIZEd4bFUydG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRakJoUjJ4NlRHMVNjR016UW1oa1IwNXZTMFozYVZveVZqQllRMGx6U1VaMGNscFliR1JMVkhSalltNHdOMWhITldOaWFUaHhTMng0ZFVsRGIyZFZNbFl3WTNsQ01HRkhWV2RrYlVaelpGZFZaMkl5V1dkWlUwSjNZMjA1ZDFwWVNqQmxVMEp3WW1sQ2FFbEhXakZrU0ZaNVdsTkNNR1JZU25WTWJIaDFTVU52WjFGSVFtaGpiVVowU1VjNWFXRnRWbXBrUTBGblNVTkNkMk50T1hSaFdFNXNTVWM1ZVVsSGJIUmlWMVpyWVZkR01GcFRRbmxhVjFwc1kyMVdkVmt5VldkYWJUbDVTVWM1YVdGdFZtcGtRMEoyV1cxd2JGa3pVbU5pYVVGeFNVVkNkMWxZU21oaVUwSjFXVmN4YkVsRFFXZEpRMEZuWW0xR2RGcFRRblphYVVKM1kyMDVkMXBZU2pCbFUwSXdZbmxDZWxwWVVtTmlhVUZ4U1VWQ2QxbFlTbWhpVTBJeVdWZDRNVnBUUVdkSlEwRm5ZbTFXTTBsSVdtaGlTRlpzU1VjNWJVbElRbmxpTTBKc1kyNVNOVmhITkdkTGFVSkJZMjFXTUdSWVNuVkpTRUo1WWpJeGNHTXlWV2RhYlRsNVNVaFNiMXBUUW5sYVdGSXhZMjAwWjJSdFJuTmtWMVpqWW1sQmNVd3hlSFZWVXpWNldsaFJaMUJUUW0xa1Z6VnFaRWRzZG1KcFFXOWlNa3B4V2xkT01FeERRbkphV0d0elNVaGFhR0pJVm14TFUwSTNXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEdSVzlpTWtweFdsZE9NRXRUTld0aFdFNTNXVmhTYW1GRGFHTkpiazVzWkVaM2FVeERRbUpoTWxZMVRFTkNNbGxYZURGYVZqQndUekY0ZFdaVWRHTmliSGgxVlVoS2RtSlhiSHBhVXpWM1kyMDVNR0l6VWpWalIxVjFZekpXTUVsRU1HZGFibFoxV1ROU2NHSXlOR2RMUjNSc1pWTjNaMlJ0Um5Oa1YxVndTVWgwWTJKcFFXZEpRMEo1V2xoU01XTnROR2RrUjJod1kzazFhMkZZVG5kWldGSnFZVU5vWTBsdVRteGtSbmRwVEVOQ1ltRXlWalZNUTBJeVdWZDRNVnBXTUhCUE1YaDFabFIwWTJKc2VIVk1lVzl4V0VjMFowdHBRa1ZhVjNoc1pFZFdla2xIUldkalNFcDJZMGRXZVdSSWEyZGhWelJuV1ZOQ2JXUllVakZqYlZWblpFaFdlV0pwTldOaWFVRnhTVVZDZDFsWVNtaGlVMEoyV1cxd2JGa3pVV2RKUTBGblkwaEtkbUpYYkhwYVUwSjJZMmxDY0dKWE1XeGFSMnhvWkVkVloyTnRWbTFhV0Vwc1ltMU9iRWxIV25aamFVSXdXVmhLYmxwWVVXZGlNa3B4V2xkT01GaEhOR2RMYVVKQlkwZEdlVmxYTUdkaWJVWjBXbE5CWjBsRFFXZEpSelZvWWxkVloySXlXV2RqU0VwMlkwZFdlV1JJYTJka1J6aG5Xa2RXYzFwWVVteFlSelJuUzJsQ1FXTnRWakJrV0VwMVNVaENlV0l5TVhCak1sVm5XbTA1ZVVsSVVtOWFVMEo1V2xoU01XTnROR2RrYlVaelpGZFdZMkpwUVhGTU1YaDFWVk0xYTFwWGQyZFFVMEYyVEhsQ1dWZEdaMmRpUjFadVdWZE9OVmhITlZKWE1YZHBXa2RXYzFwWVVteFlRMHBrU1VRd1oxcHVWblZaTTFKd1lqSTBaMHRIT1dsaGJWWnFaRU4zWjJFeVZqVkxVMEkzV0VjMFowbERRV2RqYlZZd1pGaEtkVWxHUlc5aU1rcHhXbGRPTUV0VE5XdGhXRTUzV1ZoU2FtRkRhR05KYlZKc1lrZFdNRnBXZDJsTVEwSmlZVEpXTlZoVGF6ZFlSelU1VHpGNGRWaEhOVkZqYlRsMFlWaE9iRXh1UW5saU0xSjJaRWhzZDFwVE5XdGFWM2RuVUZOQmRreDVRbGxYUm1kbllrZFdibGxYVGpWWVJ6VlJZMjA1ZEdGWVRteE1ia0o1WWpOU2RtUkliSGRhVm5SalNXMVNiR0pIVmpCYVZuZHBXRk5CT1VsSFdqRmliVTR3WVZjNWRVbERhSEphV0d0d1NVaDBZMkpwUVdkSlEwSjVXbGhTTVdOdE5HZGtSMmh3WTNrMWEyRllUbmRaV0ZKcVlVTm9ZMGx0VW14aVIxWXdXbFozYVV4RFFtSmhNbFkxV0ZOck4xaEhOVGxQTVhoMVdFYzBka3RwY0dOaWFVRnhTVVZzZFdSdE9YSmFXRTFuV1ZOQ2RGcFlVbTlpTWxGbllWYzBaMWxUUW0xa1dGSXhZMjFWWjJSSVZubGlhVFZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNkbGx0Y0d4Wk0xRm5TVU5CWjJOSVNuWmlWMng2V2xOQ2RtTnBRbkJpVnpGc1drZHNhR1JIVldkamJWWnRXbGhLYkdKdFRteEpSMXAyWTJsQ01GbFlTbTVhV0ZGbllqSktjVnBYVGpCWVJ6Um5TMmxDUVdOSFJubFpWekJuWW0xR2RGcFRRV2RKUTBGblNVYzFhR0pYVldkaU1sbG5ZbGRXTUdGSE9XdEpTRkoyU1Vkc2RXUnRPWEphVm5oMVNVTnZaMUZJUW1oamJVWjBTVWhhYUdKSVZteEpRMEZuU1VOQ2FFbElXbWhpU0Zac1NVaFNka2xJUW5aak0xRnpTVWhTTldOSGJHcFpWM2h6WlZOQ2FHSnBRbWhqYmtwb1pWTkNkbHBzZUhWSlEyOW5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBKd1ltNWFkbGt5UmpCaFZ6bDFTVWRHZVZvelZuUmFWelV3WTNsQ2JXSXpTV2RqU0VwMllsZHNlbHBZVFdka1IyaG9aRVo0ZFVsRGIyZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUW1oamJWVm5aRmQ0TUdGWE1XaGtSMVp6WlZOQ2FWbFhUbkphVjFGblpESnNNR0ZEUW1kamJWWjZZako0TWxwWFFXZGtiVVp6WkZkV2VreEdlSFZKUTI5blNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEpvWTNsQ2RtTklRblpqTWxaclNVaFNka2xJVW05aU0wNXNTVWRLYUZreWRHeGFRMEl6WVZoU2IwbEdWbE5VU0U1alltbEJjVWxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloyUXlhR3hqYlZad1ltbENNR0ZIVldkalJ6bDZaRWRXYTBsSVdtaGlTRlpzU1VkT2FHSnBRbWxhVTBKb1ltNXNZMkpwUVhGSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RUYkU1UVZHbENlbHBZU25CWlYzaHdaVzFHYVdKSFZXZGlNa3B4V2xkT01FeHNlSFZKUTI5blVVaEtiR1JJVm5saWFVSjNZMjA1ZEdGWVRteEpSMXAyWTJsQ01HRkhWV2RqYlZZd1pGaEtkVWxJV21oaVNGWnNXRWMwWjB0cE9XTmlhVGgyU1VkS2RtUlhOV3RKUjNoMldUSkdjMkpJYTJkWmJWWnFXVmhXZWxwVFFuQmtRMEp3WTNsQ01XTXlWbXRKUjBvMVNVYzVNR0ZIVm5sSlJ6RnNaRWRvZGxwSVRtTmliRVYxWWxkR2QyTkhlRFZKUkRCblRIazRaMWRHYUZsSlJVWjZTVWhDZVdJelFuWmpNbFpyU1VkS05VbEdkMmxWYlZacll6SkdkVnBJU25aWVEwcGpZbXhGZFdOSE9YcGtRMEU1U1VkYU1XSnRUakJoVnpsMVNVTm9kbGx0Y0d4Wk0xRnpTVWMxYUdKWFZYTkpSMFo1V2pOTmNFbElkR05pYVVGblNVTkNlVnBZVWpGamJUUm5WVk5vZGxsdGNHeFpNMUZ3VEcxU2NHTXpRbWhrUjA1dlMwWjNhV05IT1hwa1JuZHBURU5DWW1KdFJuUmFVM2RuV1ZoS2JtTXhNSEJQTVhoMVpsUjBZMkpzZUhWVlNFcDJZbGRzZWxwVE5YZGpiVGt3WWpOU05XTkhWWFZpVjBaM1kwZDROVWxFTUdkTWVUaG5WMFpvV1VsRlJucEpTRUo1WWpOQ2RtTXlWbXRKUjBvMVNVWjNhVlZ0Vm10ak1rWjFXa2hLZGxoRFNtTmliRUo1WWpJeGNHTXlWWFZqU0VwMlpFYzVNR1ZZUW14TWJrSjJZek5SWjFCVFFtMWtWelZxWkVkc2RtSnBRVzlpYlVaMFdsTjNaMWxZU201amVXdG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRakJoUjJ4NlRHMVNjR016UW1oa1IwNXZTMFozYVdOSE9YcGtSbmRwVEVOQ1ltSnRSblJhVTNkbldWaEtibU14TUhCUE1YaDFabFIwWTJKc2VIVk1lVzl4V0VjMFowdHBRa3BpYmxwMllUSldla2xIUldkaVYxWXdZVWM1YTBsSGJIVkpSMFZuV201V01HUllTbXhKU0ZJeFkyMDBkVmhITkdkTGFVSkJZMGRHZVZsWE1HZGlNa3B4V2xkT01FbERRV2RKU0VKNVlqSXhjR015VldkaU0wbG5ZVmN4ZEZwWFVuQlpXRkpzU1VoS2JGcHRWbmxhVnpWcVdsTkNiV0l6U1dka1IwWjVXakpXTUVsSE9XbGhiVlpxWkVaNGRVbERiMmRSU0VKb1kyMUdkRWxITldoaVYxVm5TVU5CWjBsRFFuVlpWekZzU1VjNWJVbEhNV3hrUjJoMldrTkNNR0o1UW5CaWJscDJZVEpXWTJKcFFYRkpSVUozV1ZoS2FHSlRRWFZNYVRWb1kyMWtla2xEUVdkWldFcDVXVmhyWjJJeVdXZGhWelV5WWpKT2FHUkhiSFppYVVKb1kyMWtNV0pYVm5Wa1NFNWpZbWxCY1VsRlFubGFXRkl4WTIwMFoyTklTblppVjJ4NldsTkNiV0l6U1dka1IyaHNTVWhLYkdSSVZubGlhVUl5V1ZkNE1WcFdlSFZKUTI5MldFYzFVa3h1VG14aWJWRm5VRk5CZGt4NVFsbFhSbWRuVkZkR2VXRjVRazVoVjNoeldsaEpibU41UW5kamJUbDNZak5PYkZwRFFuZFpXRXB6V1ZjMWFscFdlSFZWVXpWMFdUSkdjMkpEUVRsSlF6aDJTVVpvV1ZkRFFrSmplVUozWTIwNWQySXpUbXhhUTBKcFpWTkNZMGxzU214YVNFNW9ZbTFTZVdJeGQybFlSelZTVEcxc2RXUnRPWEphVTBFNVNVZGFNV0p0VGpCaFZ6bDFTVU5vZGxsdGNHeFpNMUZ6U1VjMWFHSlhWV2RNZVc5MVRHazFhR050WkhwTGFUaHdTVWgwWTJKcFFXZEpRMEo1V2xoU01XTnROR2RWVTJoMldXMXdiRmt6VVhCTWJWSndZek5DYUdSSFRtOUxSbmRwWTBjNWVtUkdkMmxNUTBKaVltMUdkRnBUZDJkWldFcDVXVmhzWm1NeWVIQlpNbFZ2V1ZoS2JtUlhNV3hpYmxKNlRFTkJlVXRXTUhCUE1YaDFabFIwWTJKc2VIVlZTRXAyWWxkc2VscFROWGRqYlRrd1lqTlNOV05IVlhWak1sWjFXa05CT1VsRE9IWkpSbWhaVjBOQ1RsbFlTbkpKUlRGd1lrZDRiR05wWkhwSlNFSjVZak5DZG1NeVZtdEpTRUpvWTIxNGFHSnRUbXhZUnpWUlkyMDVkR0ZZVG14TWJrSjVZak5TZG1SSWJIZGFVelYwV1RKR2MySkRRVGxKUXpoMlNVWm9XVmREUWtKamVVSjNZMjA1ZDJJelRteGFRMEpwWlZOQ1kwbHNTbXhhU0U1b1ltMVNlV0l4ZDJsWVJ6VlJZMjA1ZEdGWVRteE1ia0o1WWpOU2RtUkliSGRhVXpWd1ltNWFkbUV5VldkUVUwSnRaRmMxYW1SSGJIWmlhVUZ2WW0xR2RGcFRRWFpMYVRSMVRHMUdlVm96VFhGTWVXdG5aVEY0ZFVsRFFXZEpTRXBzWkVoV2VXSnBRakJoUjJ4NlRHMVNjR016UW1oa1IwNXZTMFozYVdOSE9YcGtSbmRwVEVOQ1ltSnRSblJhVTNkbldWaEtlVmxZYkdaak1uaHdXVEpWYjFsWVNtNWtWekZzWW01U2VreERRWGhMVmpCd1R6RjRkV1pVZEdOaWJIaDFUSGx2Y1ZoSE5HZExhVUpDWTBoQ2MyRlhWbnBKU0ZKdldsTkNkMk50T1hSaFdFNXNXa05DYldSWE5XcGtSMngyWW1sQ2NHSnBRbWhKUjFveFpFaFdlVnBUUWpCa1dFcDFUR3g0ZFVsRGIyZFJTRUpvWTIxR2RFbEhPV2xoYlZacVpFTkJaMGxEUW5kamJUbDBZVmhPYkVsSE9YbEpSMngwWWxkV2EyRlhSakJhVTBKNVdsZGFiR050Vm5WWk1sVm5XbTA1ZVVsSVVtaGpiV1JzWkVOQ2JXUlhOV3BrUjJ4MllteDRkVWxEYjJkUlNFSm9ZMjFHZEVsSFJubGFNMDFuU1VOQlowbERRbWhqYmtwb1pWTkNkbHBwUW1oalNFSnpZVmRPYUdSSGJIWmlhVUpvWTIxa01XSlhWblZrU0U1alltbEJjVXd4ZUhWVlV6VnRXVmhDZDJKSWEyZFFVMEp0WkZjMWFtUkhiSFppYVVGdllqSktjVnBYVGpCTVEwSm9ZMjFrZWt0VFFqZFlSelJuU1VOQloyTnRWakJrV0VwMVNVWkZiMkl5U25GYVYwNHdTMU0xYTJGWVRuZFpXRkpxWVVOb1kwbHRSbmRqUjNnMVdFTkpjMGxHZERKaU1teHJTVVJCYzBsSFJubGFNMDVrUzFSMFkySnVNRGRZUnpWallteENlV0l5TVhCak1sVjFZMGhLZG1SSE9UQmxXRUpzVEcxYWFHTklRbk5sVTBFNVNVZGFNV0p0VGpCaFZ6bDFTVU5vYUdOdFpIcExVMEkzV0VjMFowbERRV2RqYlZZd1pGaEtkVWxJVW05aFdFMTFXa2RzZW1OSFJqQlpNbWR2V0VOS2FHTklRbk5sVm5kcFRFTkNZbVJ0T1hCYVEwRjNURU5DYUdOdFpIcFlVMnMzV0VjMU9VOHhlSFZZUnpSMlMybHdZMkpwUVhGSlJVNW9Za2Q0ZWtsSVVtOWFVMEozWTIwNWRHRllUbXhhUTBKdFpGYzFhbVJIYkhaaWFVSndZbWxDYUVsSFdqRmtTRlo1V2xOQ01HUllTblZNYkhoMVNVTnZaMUZJUW1oamJVWjBTVWM1YVdGdFZtcGtRMEZuU1VOQ2QyTnRPWFJoV0U1c1NVYzVlVWxIYkhSaVYxWnJZVmRHTUZwVFFubGFWMXBzWTIxV2RWa3lWV2RhYlRsNVNVaFNhR050Wkd4a1EwSnRaRmMxYW1SSGJIWmliSGgxU1VOdloxRklRbWhqYlVaMFNVTTBkVXh0Um5sYU0wMW5TVU5DYUdOdVNtaGxVMEoyV21sQ2FHTklRbk5oVjA1b1pFZHNkbUpwUW1oamJXUXhZbGRXZFdSSVRtTmlhVUZ4VERGNGRWVldkR05KYmxKNVpWWjNhVmhUUVRsWVJ6VlNURzFhYWxsWGVITkpSREJuV201V2RWa3pVbkJpTWpSblMwYzVhV0Z0Vm1wa1EwRjJTMmxCZFV4cE5XaGpiV1I2UzJrNGNFbElkR05pYVVGblNVTkNlVnBZVWpGamJUUm5WVk5vZGxsdGNHeFpNMUZ3VEcxU2NHTXpRbWhrUjA1dlMwWjNhVmxZUW5kaVNHeGpTV2wzWjFjelduWmhWMUZuVFVOM1oxbFlTbmxaV0d4bVl6SjRjRmt5Vlc5WldFcHVaRmN4YkdKdVVucE1RMEY0UzFZd2NFOHhlSFZtVkhSallteDRkVlZJU25aaVYyeDZXbE0xZDJOdE9UQmlNMUkxWTBkVmRWcHRUbWhpUjNkblVGTkNiV1JYTldwa1IyeDJZbWxCYjB4NWIzVk1hVFZvWTIxa2VrdHBPSEJKU0hSalltbEJaMGxEUW5sYVdGSXhZMjAwWjJSSGFIQmplVFZyWVZoT2QxbFlVbXBoUTJoalNXMUdkMk5IZURWWVEwbHpTVVowTW1JeWJHdEpSRUZ6U1VkR2VXTnRSalZZTTA1ellWZE9iRXRIUm5sYU0xWjBXbGMxTUdONWJHUkxWSFJqWW00d04xaEhOV05pYVRoeFMyeDRkVWxEYjJkUmJXeDFXa2hOWjJSSGFHeEpTRUo1WWpJeGNHTXlWbXRKUjFveFltMU9NR0ZYT1hWTVEwSXdZMjFHZFdNeVduWmpiVEZ3WW0xaloyTnRWakJrV0VwMVNVaGFhR0pJVm14amVVSndZbTVTZGtsSFJXZGFibFp6V20xc2MySkhWbXRZUnpSblMybENkMk50T1hSaFdFNXNTVWRHZFZwRFFqQmhTRXAyWkRJMFoxcFlTbmxpTTBwNlNVZHNkV1JIT0dkWlUwSjVXbGR3YkZrelVteGFRMEoyWW0xVmRWaEhOR2RMYVVKQlkwZEdlVmxYTUdkaU1rcHhXbGRPTUVsRFFXZEpTRUo1WWpJeGNHTXlWV2RpTTBsbllWY3hkRnBYVW5CWldGSnNTVWhLYkZwdFZubGFWelZxV2xOQ2JXSXpTV2RrUjBaNVdqSldNRWxIV2pGaWJVNHdZVmM1ZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RNYVRSMVdWaEtibU41UVdkSlIwWjVZMjFHTlVsSE9XMUpSMFozWTBkNGNGa3lSakJoVnpsMVNVZEdlVm96Vm5SYVZ6VXdZekY0ZFVsRGIzWllSelZTVEcxYWFXRlhOV3RKUkRCbldtNVdkVmt6VW5CaU1qUm5TMGM1YVdGdFZtcGtRMEYyUzJrMGRVeHRSbmxhTTAxeFRIbHJaMlV4ZUhWSlEwRm5TVWhhYUdOcFFuZGpiVGwwWVZoT2JFbEVNR2RWVTJoMldXMXdiRmt6VVhCUE1YaDFTVU5CWjBsSVdtaGphVUpvWTIxa2VrbEVNR2RaV0VwNVdWaHNabU15ZUhCWk1sVnZXVmhLYm1SWE1XeGlibEo2VEVOQmVFdFVkR05pYVVGblNVTkNlVnBZVWpGamJUUm5XbTVXZFZrelVuQmlNalJuV20xS2RtUlhOV3RMUTJ0blpURjRkVWxEUVdkSlEwRm5TVU5DZVZwWVVqRmpiVFJuWTBoS2RtSlhiSHBhVXpWcllWaE9kMWxZVW1waFEyaGpTVzFHZDJOSGVEVllRMGx6U1VaMFkySnBRV2RKUTBGblNVTkJaMGxEUVdkSlNGSnZZVmhOYzFoSE5HZEpRMEZuU1VOQlowbERRV2RKUTBKb1kyMWtla3h0VG5aaWJVNW9aRU5vYUdOdVNtaGxWamw2WWtkc2FscFRhR2hqYldReFlsZFdkV1JJVFhCTFZuaDFTVU5CWjBsRFFXZEpRMEprUzFSMFkySnBRV2RKUTBJNVR6RjRkV1pVZEdOaWJFSjVZakl4Y0dNeVZYVmpTRXAyWkVjNU1HVllRbXhNYlZwcFlWYzFhMGxFTUdkYWJsWjFXVE5TY0dJeU5HZExRemh4VEdrMGRWbFlTbTVqZVc5MlMxTkNOMWhITkdkSlEwRm5aRzFHZVVsSVFubGlNakZ3WXpKVloxQlRRakJoUjJ4NlR6RjRkVWxEUVdkSlNGcG9ZMmxDYUdOdFpIcEpSREJuV1ZoS2VWbFliR1pqTW5od1dUSlZiMWxZU201a1Z6RnNZbTVTZWt0VWRHTmlhVUZuU1VOQ2VWcFlVakZqYlRSbldtNVdkVmt6VW5CaU1qUm5XbTFLZG1SWE5XdExRMnRuWlRGNGRVbERRV2RKUTBGblNVTkNlVnBZVWpGamJUUm5ZMGhLZG1KWGJIcGFVelZyWVZoT2QxbFlVbXBoUTJoalNXMUdkMk5IZURWWVEwbHpTVVowWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0ZKdllWaE5jMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEpvWTIxa2VreHRUblppYlU1b1pFTm9hR051U21obFZqbDZZa2RzYWxwVGFHaGpiV1F4WWxkV2RXUklUWEJMVm5oMVNVTkJaMGxEUVdkSlEwSmtTMVIwWTJKcFFXZEpRMEk1VHpGNGRXWlVkR05pYkhoMVRIbHZjVmhITkdkTGFVSlRXbGhHTVZwWVRqQmplVUl3WVVkVloySnRSblJhV0UxbllqSlpaMlJIYUd4SlJ6a3pZbTFXYTBsSVFubGlNMEpzWTI1U2NGcFlUV2RpTWxsbldWTkNkMk50T1hSaFdFNXNXa1o0ZFVsRGIyZGlNa3B4V2xkT01FbEhiSFZKUjBWbldtNVdNR1JZU214SlNGSXhZMjAwZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RpTWtweFdsZE9NRWxEUVdkSlNFSjVZakl4Y0dNeVZXZGlNMGxuWVZjeGRGcFhVbkJaV0ZKc1NVaEtiRnB0Vm5sYVZ6VnFXbE5DYldJelNXZGtSMFo1V2pKV01FbEhPV2xoYlZacVpFWjRkVWxEYjJkUlNFcHNaRWhXZVdKcFFuZGpiVGwwWVZoT2JFbEhXblpqYVVJd1lVZFZaMkV5VmpWamVVSjJXbWxDTUdGSFZXZGFXRnBzWW01U01WbFhlSE5sVTBKNldsaFNNR0pIVm10SlJ6bHBZVzFXYW1SR2VIVkpRMjkyV0VjMVVreHRkR3hsV0UxblVGTkNiV1JYTldwa1IyeDJZbWxCYjJJeVNuRmFWMDR3UzFOQ04xaEhOR2RKUTBGblkyMVdNR1JZU25WSlJrVnZZakpLY1ZwWFRqQkxVelZyWVZoT2QxbFlVbXBoUTJoalNXMTBiR1ZZVG1OSmFYZG5WekV3Y0U4eGVIVm1WSFJqWW14NGRWVklTblppVjJ4NldsTTFkMk50T1RCaU0xSTFZMGRWZFdFeVZqVmplVUU1U1VkYU1XSnRUakJoVnpsMVNVTm5jRWxJZEdOaWFVRm5TVU5DZVZwWVVqRmpiVFJuWkVkb2NHTjVOV3RoV0U1M1dWaFNhbUZEYUdOSmJYUnNaVmhPWTBscGQyZFhNVEJ3VHpGNGRXWlVkR05pYkhoMVRIbHZjVmhITkdkTGFVSlZaRmhLZFdONVFtaGlhVUpvWTI1S2FHVlRRblphYVVKM1kyMDVkR0ZZVG14amVVSndZbTVTZGtsSFJXZGpTRXAyWWxkc2VscFRRbTFpTTBsbldWYzBaMWxZU25sWldHdDFTVU5DU2xwcFFtaGlibXRuWWpKYVkySnBRWEZKU0ZKdldsTkNkMk50T1hSaFdFNXNZM2xDYmxwWVVucEpTRXBzWVcxV2FtUkhWbXRNUTBJd1lVZFZaMlF5YUhaaVIxVm5XVmhLZVZsWWEyZGhXRTFuWTIxV2NWcFhUakJhVjFGbllWY3hkRnBYVW5CWldGSnNZa2hyZFZoSE5HZExhVUpCWTBkR2VWbFhNR2RsTUVaNVkyMUdOVXR1TUdkWlZ6Um5XVmhLZVZsWWEyZExSemw1U1VoQ2VXSXlNWEJqTWxWbldtMDVlVWxIUm5WSlIwWjVZMjFHTlV0VFFuWmFhVUl5V1ZkNE1WcFlUV2RMUnpsNVdFYzBaMHRwUW5kamJUbDBZVmhPYkdONVFtMWlNMGxuWkcxR2MyUlhWbnBMVm5oMVNVTnZaMUZJU214a1NGWjVZbTVOWjFsVFFuZGpiVGwwWVZoT2JFbEhXblpqYVVKb1ltbENhR051U21obFUwSjJXbWxDTUdGSFZXZFpNamw1WTIxV2VtTkhPWFZhUjJ4MVdubENNbGxYZURGYVdFNWpZbWxCY1V3eGVIVk1lVGhuVVc1cloxUlhSbmxoZVVKT1lWZDRjMXBZU21OaWFUaDJTVWRvTUdSSVFUWk1lVGt6WVZkMGNFeHRWbXBpVjBaNldUTktjR05JVVhWaU0wcHVUREpTZG1FelZYVmpSMmgzVURKc2ExQllUakJqYlVZellsZEdkVTl0VG5aaWJVNHhZMjVLYkdKdFRqVktia3BzWkdvd2VFMTZRVFJPZW1NeVRsUkplRWt5Um5OaVIxb3hZa2RhY0dKSGVHeGFSbmgxVlZNMWFHSkhkMmRRVTBKb1lrZDNOMWhITlcxa1Z6VnFaRWRzZG1KcFFtaGlSM2R2WTBoS2RtSlhiSHBhV0Uxd1NVaDBZMkpwUVdkSlEwSjVXbGhTTVdOdE5HZGtNbWhzWW1sb2QyTnRPWFJoV0U1c1kzbDNaMXB1Vm5WWk0xSndZakkwWjB0SVFubGlNakZ3WXpKV2VrdFRRamRZUnpSblNVTkJaMGxEUVdkSlNGcG9ZMmxDZDFwWE5XdGhWelZ1VVRJNU1XSnVVV2RRVTBGM1R6RjRkVWxEUVdkSlEwRm5TVU5DTWxsWVNXZGFSMVp0V2xoS2VWcFhVV2RRVTBKcldsZGFiR05wWjNCUE1YaDFTVU5CWjBsRFFXZEpRMEpvWTI1S2FHVldPWGxhVjFJeFdUSlZiMk5JU25aaVYyeDZXbGhOYzBsSFdqRmliVTR3WVZjNWRVbERhREZpYlZKc1dtMXNkVnBYVVhOSlNFSjVZakl4Y0dNeVZYTkpSMngxV2tkV05FdFRRamRZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5DTWxsWVNXZGpNalZvWTBoT2IySXpVVGRZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5DY0ZwcFFXOVlSelJuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkaFdFNVJZMjA1ZEdGWVRteExTRUo1WWpJeGNHTXlWWEJKUTFsdFdFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuUzBoT2RWbFlRbnBoUnprd1NVUXdaMk5JU25aaVYyeDZXbE0xY0dKdVRuZGFWMDR3UzBOcmNFeHVUakJaV0ZKc1NVUXdPVkJUUW1OSmJWb3hZa2RhY0dKSGVHeGFSbmRwV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUVhCSlNIUmpZbWxCWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBKM1kyMDVkR0ZZVG14ak1YUndZbTFTYkdWR01HZFFVMEo2WW0xR2QyTXlhSFprUXpVeVdWZDRNVnBVZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1Vnd1oxcFhlSHBhVTBJM1dFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuUzNsMGQxcFhOV3RoVnpWdVVUSTVNV0p1VVRkWVJ6Um5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RrTW1oc1ltbG9ZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RqU0VwMllsZHNlbHBUZUdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGbldtNVdkVmt6VW5CaU1qUm5TMGhhYUdKSVZteExVMEkzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEozWTIwNWRHRllUbXhqTVhSd1ltMVNiR1ZHTUdkUVUwSXlXVmQ0TVZwVWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsSGJHMUpRMmQwVEZoQ2JHSnRVbkJpYldSRVlqTldkV1JEUVRsUVZEQm5UVU5yWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpSMUpzV20xV2VXTnRWbXRNYmtwc1l6STVjMlJ0Vlc5alNFcDJZbGRzZWxwWVRYQlBNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZG1WbmgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5DT1V4R2VIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwSnJXbGRhYkdOdVNteGFRelY1V2xkd2JGa3pVWE5ZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VkYU1XSnRUakJoVnpsMVNVTm9kMk50T1c1amJWWjZZM2xyWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5CWjFwSFZtMWFXRXA1V2xkUmRXSnRPVEJoVjFvMVMwaHpaMkZYTld0YVdHYzJTVWRzZFZwSFZqUk1RMEl5V1ZkNE1WcFViMmRqU0VwMldqTktiR016VFdkbVUyczNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVTkJaMGxJTVdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRWEJQTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1VOQlowbERRamxNUTBJeVlqSnNhMGxFUVhCUE1YaDFTVU5CWjBsRFFXZEpRMEp3V21sQmIyTkhWblZhUjJ4MVdqQk9kbVJYTlRCSlJEQTVVRk5CZDB0VFFqZFlSelJuU1VOQlowbERRV2RKUTBGblNVTkNhMXBYV214amJrcHNXa00xZVZwWVRuWmlTRnBzUzBoQ2VXSXlNWEJqTWxaNlMxUjBZMkpwUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1VOQlowbERRbmxhV0ZJeFkyMDBaMXBIVm0xYVdFcDVXbGRSZFdOSVNuWmlWMng2V2xSMFkySnBRV2RKUTBJNVMxUjBZMkp1TVdOaWJIaDFWVWhLZG1KWGJIcGFVelYzWTIwNU1HSXpValZqUjFWMVdWZDRjMGxFTUdkYWJsWjFXVE5TY0dJeU5HZExRMnRuWlRGNGRVbERRV2RKU0Vwc1pFaFdlV0pwUW1oaVIzZHZaRWRvY0dONWF6ZFlSelU1VHpGNGRWaEhOSFpMYVhCalltbEJjVWxHU214a1NGWjVZbTVOWjJSSGFHeEpSMXB3WTI1T01FbElTbXhqTWpselpHMVdhMGxJUW5saU1qRndZekpWWjJJeVdXZFpWelJuV1ZoS2VWbFlhM1ZKUmtKNVlWYzVlVWxJU214aGJWWnFaRWRXYTBsSVFubGlNakZ3WXpKV2VrbEhSbmxhVm5oMVNVTnZaMkZYWkhWaU0wcHNXa00wWjBsR1NteGhiVlpxWkVoTloySXlOWE5sVTBKd1dtbENhR0pIZDJkalNFcDJZbGRzZWxwWVRXZFpXRXBzU1VoS2JHRnRWbXBrUjFaclRHeDRkVWxEYjJkUlNFSm9ZMjFHZEVsSWRFSmpia3BvWlZOd09VbEhSblZKUjBaNVkyMUdOVWxIVG5aaWJsSm9ZVmMxY0dKdFkyZGtiVVp6WkZkV2VrbEhPWGxKU0VKNVlqSXhjR015Vm5wSlIxcDJZMmxDTWxsWGVERmFXRTVqWW1sQmNVbEZRbmxhV0ZJeFkyMDFla2xIUldkalNFcDJZbGRzZWxwVFFtMWtWM2h0WVZkNGMxcFhVV2RrTW13d1lVTkNNR0ZIVldka2JVWnpaRmRWWjJJeVdXZGtSMmhzU1VkYWNHTnVUakJKU0Vwc1l6STVjMlJ0Vm10SlNFSjVZakl4Y0dNeVZYTllSelJuUzJsQ2RtTnBRbWhKU0Vwc1lXMVdhbVJIVm10SlNFSjVZakl4Y0dNeVZXZGhWMWxuV1ZkNGMwbElRbmxpTWpGd1l6Sldla2xIUm5sYVUwSjVXbGR3YkZrelVteGFRelZqWW1sQmNVd3hlSFZWVXpWb1ltNXJaMUJUUW1oaWJtczNXRWMxWTJKdFdqRmliVTR3WVZjNWRVbEhSblZsVTJoM1kyMDVkR0ZZVG14amVXdG5aVEY0ZFVsRFFXZEpSMnh0U1VOb2QyTnRPWFJoV0U1c1kzazFjMXBYTlc1a1IyZG5VRlF3T1VsRVFYQkpTSFJqWW1sQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlJrVjFZMjFXZW1JeWVESmFVMmR3VHpGNGRVbERRV2RKU0RGallteDRkVWxEUVdkSlNGcG9ZMmxDYTFwWFdteGpia3BzV2tOQk9VbEdSWFZhUjFadFdsaEpiMHRVZEdOaWFVRm5TVU5DTWxsWVNXZGpSMVoxV2tkc2RWb3dUblprVnpVd1NVUXdaMDFFZEdOaWFVRm5TVU5DYUdOdVNtaGxWamw1V2xkU01Wa3lWVzlqU0VwMllsZHNlbHBZVFhOSlIxb3hZbTFPTUdGWE9YVkpRMmgzWTIxV01reERRbXBrV0VwNVdsYzFNRXhEUW5CaWJWSnNaVU5yWjJVeGVIVkpRMEZuU1VOQlowbERRakpaV0VsblkwaEtkbUpYYkhwYVUwRTVTVWhDZVdJeU1YQmpNbFo2VnpKc2RWcEhWalJZVkhSallteDRkVWxEUVdkSlEwRm5TVU5DZDFwWE5XdGhWelZ1VVRJNU1XSnVVWEpMZW5SallteDRkVWxEUVdkSlEwRm5TVU5DTTJGSFZuVkxTRUo1WWpJeGNHTXlWWE5KUnpsMVVtNVdjMXB0YkhOaVIxWnJURU5DZG1Kc1NteGhiVlpxWkVkV2EweERRblppYkVKNVlqSmtlVnBZVG5wTFZIUmpZbWxCWjBsRFFXZEpRMEZuV201V2RWa3pVbkJpTWpSbllqSTFSMlJYZUcxaFYzaHpXbGRSYjJOdFZucGtWM2d3UzFOQ04xaEhOR2RKUTBGblNVTkJaMGxEUVdkSlEwSnJXbGRhYkdOdVNteGFRelY1V2xoT2RtSklXbXhMU0Vwc1l6TldjMlJEYXpkWVJ6Um5TVU5CWjBsRFFXZEpTREZqWW1sQlowbERRV2RKUTBGbldtNVdkVmt6VW5CaU1qUm5ZakkxVTFwWGNHeFpNMUpzV2tObmNFbElkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWhDYkdKdFVuQmliV1JFWWpOV2RXUkRNSFJQTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJGWFdXZExTRUpzWW0xU2NHSnRaRVJpTTFaMVpFTkJPVkJVTUdkTlEydG5aVEY0ZFVsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblNVZFNiRnB0Vm5samJWWnJURzVLYkdGdFZtcGtRMmgxV2xoaloxSllTbmxpTTBsdldFYzBaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQlowbEdkMmxSTWtaMVNqTlJaMW95VmpCSlIxb3hZa2RhY0dKSGVIUmFWelV3U1VoYWFHSklWbXhKUjFwNVlqSXdaMWxYTlRWSlNFSjVZakl4Y0dNeVZYTkpSMFp6WWtOQ1kwbHBRWEpZUnpSblNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VaM2FXTklTblppVjJ4NldsaE5aMlF5Vm5sYVUwSjVXbGR3YkZrelVteGFRelZqU1d4NGRVbERRV2RKUTBGblNVTkJaMGxEUVdkSlEwRm5TVU5yY0U4eGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblpsWjRkVWxEUVdkSlEwRm5TVU5DT1ZoSE5HZEpRMEZuU1VOQlowbEhXakZpYlU0d1lWYzVkVWxIT1hWVlNFcDJXak5LYkdNelRXOWpTRXAyV2pOS2JHTXpUWEJKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsSFVteGFiVlo1WTIxV2EweHROWFprUjJ4dFpWTm9OMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQloyRlhOV3RhV0djMlNVZHNkVnBIVmpSTVJuaDFTVU5CWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKU0Zwb1lraFdiRTlwUW5kamJUbHVZMjFXZW1NeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblpsTnJOMWhITkdkSlEwRm5TVU5CWjBsSU1XTmlhVUZuU1VOQ09VeERRakZpYlZKc1dtMXNkVnBYVVhCUE1YaDFXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEhVbXhhYlZaNVkyMVdhMHh1UW5saU1qRndZekpWTjFoSE5UbFlSelZqWW14Q2VXSXlNWEJqTWxWMVkwaEtkbVJIT1RCbFdFSnNURzFHZFdWVFFUbEpSMW94WW0xT01HRlhPWFZKUTJkd1NVaDBZMkpwUVdkSlEwSjVXbGhTTVdOdE5HZFpWelUxUzBoU2IyRllUWEJQTVhoMVpsUjBZMkpzZUhWTWVXOXhXRWMwWjB0cFFsaFpWMnd3WTNsQ2JXSXpTV2RaVjNoelNVaENlV0l5TVhCak1sWjZTVWhTZGtsSFNteEpTRTVzWkVoU2MxcFhVWE5KUjFad1pFZG9iR05wUW0xa1YzaHRZVmQ0YzFwWFVXZGlNMHBqWW1sQmNVbElTbXhoYlZacVpFZFdhMHhwUVdkV1IyaHdZM2xDY0dONVFtdGhXRTR3WVZjMWFtUkRRbTFqYlRsMFNVZENhR0pIZUdkSlNFNXdZbTFPYkVsSVVtOVpXRkZuWkRJNU1XSkhVV2RqTTFKMlkwWjRkVWxEYjJka01rWndaRWRzZFZwNVFtaGtRMEl3WVVkVloxcHRiSGxqTTFGblkyMVdjVnBYVGpCaFZ6bDFUR2xCWjFaSGFHeEpTRUo1WWpJeGNHTXlWV2RqYlZZd1pGaEtkVnBYVVdkWmJteGpZbWxCY1VsSFFtaGlSM2hUV2xoT2RtSklXbXhhUjBGblpESnNjMkpEUW5WYVdGcHNZMmxDYVZwVFFubGFWM0JzV1ROU2JGcEROV05pYVVGeFNVVkNkMWxZU21oaVUwSjNZMjA1ZEdGWVRteGplVUpvU1VoQ2VXSXlNWEJqTWxWbldtMDVlVWxIUm5WSlIwWjVZMjFHTlVsRGFIWmphVUpvWW1sQ2FHTnVTbWhsVTJ0bllqSlpaMk5JU25aaVYyeDZXbGhPWTJKcFFYRkpRMmgyWTJsQ01sbFhlREZhV0Uxd1dFYzBaMHRwUWtGamJWWXdaRmhLZFVsSFJXZGpTRXAyWWxkc2VscFRRbTFpTTBsbldWYzBaMWxZU25sWldHdG5ZakpaWjJOSVNuWmlWMng2V2xoT1kySnBRWEZNTVhoMVZWTTFhR0pIZUZOYVdFNTJZa2hhYkZwRFFUbEpSMUpzWTBoS2JGa3lSakJhVTJob1lrZDRVMXBZVG5aaVNGcHNXa04zWjFoRFNtaGlSM2hUV2xoT2RtSklXbXhhUm5kcFRFTkNZMGx0Um5OaVJrNXNaRWhTYzFwWFVtTkphV3MzV0VjMWJXUlhOV3BrUjJ4MlltbENhR0pIZUZOYVdFNTJZa2hhYkZwRGFIZGpiVGwwWVZoT2JHTjVhMmRsTVhoMVNVTkJaMGxJU214a1NGWjVZbWxDTTJGSFZuVkxTRUo1WWpJeGNHTXlWbnBNUTBKdFpGYzFhbVJIYkhaaWFVRnZZMGhLZG1KWGJIcGFXRTF3U1VoMFkySnBRV2RKUTBGblNVTkJaMk5JU25aaVYyeDZXbGhOWjFCVFFtaGpia3BvWlZZNWRGbFlRVzlqU0VwMllsZHNlbHBZVFhOSlJrVndUekY0ZFVsRFFXZEpRMEZuU1VOQ2VWcFlVakZqYlRSblpESm9iR0pwYUdoaVIzZHZXVmhLZVZsWWJHWmlWMFozUzBoQ2VXSXlNWEJqTWxaNlRFTkNiV1JYTldwa1IyeDJZbWxCYjJOSVNuWmlWMng2V2xOcloyVXhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5ZMjFXTUdSWVNuVkpTR1J2V2xjMGIyTklTblppVjJ4NldsTjNaMkp0T1haalEzZG5ZbTA1ZG1ORGF6ZFlSelJuU1VOQlowbERRV2RKU0RCd1MxTjNaMXB1Vm5WWk0xSndZakkwWjB0RGEyZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMk50VmpCa1dFcDFTVWhDZVdJeU1YQmpNbFo2VHpGNGRVbERRV2RKUTBGblNVTkNPVXRVZEdOaWFVRm5TVU5DT1V0VWRHTmliakZqWW14NGRWVklTblppVjJ4NldsTTFkMk50T1RCaU0xSTFZMGRWZFZsWGVITlZiVlo2WWpKNE1scFhVV2RRVTBKdFpGYzFhbVJIYkhaaWFVRnZTMU5DTjFoSE5HZEpRMEZuWTIxV01HUllTblZKUjBaellrWktiR015T1hOa2JWWnJTMGhTYjJGWVRYQlBNWGgxWmxSMFkySnNlSFZNZVc5eFdFYzBaMHRwUWtGak1sWnNTVVpDZVdJeU1YQmpNbFZxV1ZkNGMxVXlWakJrUjNoc1drWjRkVWxEYjNaWVJ6VlNURzFHYzJKR1RteGtTRkp6V2xkUloxQlRRbWhpUjNoVVdsaFNNR0pIVm10UE1YaDFXbTVXZFZrelVuQmlNalJuV1ZkNGMxVXlWakJrUjNoc1drTm9kMk50T1hSaFdFNXNZM2xyWjJVeGVIVkpRMEZuU1VoS2JHUklWbmxpYVVKU1MwaENlV0l5TVhCak1sWjZTMU0xYUdKSGVGUmFXRkl3WWtkV2EwdERhemRZUnpVNVdFYzFZMkpwT0hGTGJIaDFTVU52WjFaSVZubGliazFuV1ZjMFoxbFlTbmxaV0d0bllqSlpaMk5JU25aaVYyeDZXbGhOWjJGWE5UQmllVUpvU1VoQ2VXSXlNWEJqTWxWbldtMDVlVWxIUm5WSlIwWjVZMjFHTlVsSE9XMUpTRkp2V2xkc2VVbElUakJaV0ZKc1kzbEJiMWxZVG1OaWFVRnhTVWhLYkdSSVZubGliVlpyU1VkS05VbEhRbkJpYms1M1dsZE9NRmxEYTJka01taHNZbWxDTUdGSFZqVkpSMmhvWkcxVloxbFhlSE5KU0U1c1pFaFNjMXBYVVhWWVJ6Um5TMmxDUVdOSFJubFpWekJuWlRCR2VXTnRSalZYTUVaMVpWTndaR1pUUWpKWlYzZ3hXbGhOWjFsWE5HZFpXRXA1V1ZoclowdEhPWGxKU0VKNVlqSXhjR015VldkYWJUbDVTVWRHZFVsSFJubGpiVVkxUzFOQ2RscHBRakpaVjNneFdsaE5aMHRIT1hsWVJ6Um5TMmxDZDJOdE9YUmhXRTVzWTNsQ2JXSXpTV2RrYlVaelpGZFdla3RXZUhWSlEyOW5VVWhLYkdSSVZubGliazFuWlRCR2VXTnRSalZYTVU0d1dWaFNiRmhZTUdkWlZ6Um5XVmhLZVZsWWEyZGlNbGxuWXpOU2FHUkhWbnBKUjFwMlkybENNR0ZIVldkamJWWjZZMGRXYW1SSGJESmFVMEl5V1ZkNE1WcFlUWFZZUnpSblMyazVZMkpzUW5saU1qRndZekpWZFdOSVNuWmtSemt3WlZoQ2JFeHRSbk5pUms1c1pFaFNjMXBYVVdkUVUwSnRaRmMxYW1SSGJIWmlhVUZ2UzFOQ04xaEhOR2RKUTBGblkyMVdNR1JZU25WSlNGSnZZVmhOZFdSSGFHeGlhV2h0WkZjMWFtUkhiSFppYVVGdlkwaEtkbUpYYkhwYVdFMXdTVWgwWTJKcFFXZEpRMEZuU1VOQloyTnRWakJrV0VwMVNVZEdjMkpEYUdoamJrcG9aVlk1ZEZsWVFXOWpTRXAyWWxkc2VscFlUWE5KUjFveFltMU9NR0ZYT1hWSlEyaDNZMjA1ZEdGWVRteExVMEkzV0VjMFowbERRV2RKUTBGblNVTkJaMGxEUW5kamJUbDBZVmhPYkVsRU1HZFZVMmgzWTIwNWRHRllUbXhMVkhSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsSFdqRmliVTR3WVZjNWRVbElTbXhhTWtaNVdrZDRiR016VFc5TFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VOQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlNFSjVZakl4Y0dNeVZYVmhWelY2WTBkV2FtUkRaM0JQTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjJaV2VIVkpRMEZuU1VOQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlNFSjVZakl4Y0dNeVZYVmtSMmhzWW1sb2VWcFhaR2hqYlZKeldsaE9la3hEUW5sYVYyUm9ZMjFTYzFwWVRucExWSFJqWW1sQlowbERRV2RKUTBGblpsTnJjRTh4ZUhWSlEwRm5TVWd3Y0U4eGVIVm1WSFJqWW14NGRVeDViM0ZZUnpSblMybENSRmxZUWpCa1dFcHNZM2xDTUdGSFZXZGFiVVp3WWtoV2VWcFRRblphYVVKb1NVaENlV0l5TVhCak1sVnpTVWRrY0dSdGJIVmFlVUpvWW1sQ2RtTkhPWGxrU0ZaMVlWaFNOVWxJVW5aSlNFcHNXVEk1TWxwWVNtTmlhVUZ4U1Voa2NHUkhaMmRaVTBKcVdWZDRjMWx0Um1waGVUUm5TVVZzYlVsSVVtOWFVMEp1WVZoYWJHSnBRbmRqYlRsMFlWaE9iRWxIYkhwSlIxb3hZa2RhY0dKSGVHeGFRM2RuWkVkb2JFbElTbXhrU0ZaNVltMVdhMWhITkdkTGFVSjNZMjA1ZEdGWVRteEpSMng2U1VkYU1XSkhXbkJpUjNoc1drTTFZMkpwUVhGSlJVSjNXVmhLYUdKVFFqZFJWelUxUzI0d1oyTklTblppVjJ4NldsTkNiV0l6U1dkak1qbDBXbGhTYjJGWE5XNVlSelJuUzJsQ1FXTkhSbmxaVnpCblpUQmFNV0p0VGpCaFZ6bDFabE5DYWxsWGVITlpiVVpxWVhsQ01HSjVRbTFrVjNodFlWZDRjMGxJVW05YVUwSjVXbGhTTVdOdE5XeGFRMEozWTIwNWRHRllUbXhKUjJ4dFNVaFNiMXBXZUhWSlEyOW5XakpzTWxwWE5HZGpTRXAyWWxkc2VscFRRbkJqZVVKNVdsZHdiRmt6VW14YVJuaDFTVU52WjFGSVNteGtTRlo1WW01TloxbFRRbmRqYlRsMFlWaE9iRWxIV25aamFVSXdZVWRWWjJOdFZqQmtXRXAxU1VoYWFHSklWbXhKUnpsdFNVaFNiMXBUUW1wWlYzaHpXVzFHYW1FeGVIVkpRMjkyV0VjMVVreHRXbWhoVjNkblVGTkJka3g1UWxsWFJtZG5Za2RXYmxsWFRqVllSelZTVnpGM2FWa3lSakJaTW1oalNXd3daMUJUUW0xa1Z6VnFaRWRzZG1KcFFXOWlNa3B4V2xkT01FeERRbmxhVjNCc1dUTlNiRnBEYTJkbE1YaDFTVU5CWjBsSVNteGtTRlo1WW1sQ1VrdEhPV2xoYlZacVpFTnJkV1JIYUd4aWFXZ3lZakpzYTBsRVFYTkpTRXBzWVcxV2FtUkhWbXRMVkhSalltNHdOMWhITldOaWJFSjVZakl4Y0dNeVZYVmpTRXAyWkVjNU1HVllRbXhNYlZwb1lWZDNaMUJUUVhaTWVVSlpWMFpuWjJKSFZtNVpWMDQxV0VjMVVXTnRPWFJoV0U1c1RHNUNlV0l6VW5aa1NHeDNXbFowWTBsdFRtaGtSMDV2V0VOS1pFbEVNR2RhYmxaMVdUTlNjR0l5TkdkTFNFcHNZVzFXYW1SSFZtdExVMEkzV0VjMFowbERRV2RqYlZZd1pGaEtkVWxJVW05aFdFMTFaRWRvYkdKcGFESmlNbXhyU1VSQmMwbElTbXhoYlZacVpFZFdhMHRVZEdOaWJqQTNXRWMxWTJKcE9IRkxiSGgxU1VOdloxRllVakJaVjA1dldsaE5aMWxUUW5OaFdFNHdXbGMxYkdOcFFqQmhSMFl3U1VkT2FHSnBRbmxhV0U1M1lqSTFhMGxJVW5aSlNFSjVZakprZVZwWVRucEpSelYyWkVkc2JXRlhUbWhrUjJ4MlltNU5aMXB1U25aaVUwSm9XRWMwWjB0cFFuZGpiVGwwWVZoT2JFb3pUV2RpTTBwd1dqSnNkVmxZVW5CaWJXTm5Xa2RXYlZwWVNubGFWMUYxU1VaU2IyRllUV2RpUjJ4NlpFZFdkVnBZU1dkamJWWnFXbGRzTWxwWVRXZGtSMmhzU1VkV05GbFhUakJKUjBaNVdqTldkRnBYTlRCak1YaDFTVU52WjJOSFJucGpNbFpyU1VoU2RrbEhRbWRhUjFadFdsaEtlVnBYVVhWaWJUa3dZVmRhTlZsSFFYVllSelJuUzJsQ1FXTkhSbmxaVnpCblpUQkdkV1ZUY0RsSlNFSjVZakl4Y0dNeVZXZGFiVGw1U1VoT2RtSlhWakJoUjJ4MVdqRjRkVWxEYjJkUlNFSm9ZMjFHZEVsSWRFZGtWelZxWkVkc2RtSnVNR2RaTWtaellrZEthRmt5YzJka1J6aG5ZMjFXYWxwWGJESmFVMEpvWW01cloyTklTblphTTBwc1l6Tk5aMkp0T1RCaFYxcHdXVEpHTUdGWE9YVmpNWGgxU1VOdloxRklTbXhrU0ZaNVltNU5aMlJIYUd4SlIyUndaRzFXZFVsSVFubGlNakZ3WXpKVmMwbElWblZaTW1ob1ltMWtiRnBHZUhWSlEyOTJXRWMxVWt4dVFubGlNbVI1V2xoT2VrbEVNR2RqU0VwMldqTktiR016VFRkWVJ6VnRaRmMxYW1SSGJIWmlhVUozWTIwNWJtTnRWbnBqZVdoMldXMXdiRmt6VVhOSlNFSjVZakprZVZwWVRucGFWMUZ3U1VoMFkySnBRV2RKUTBKNVdsaFNNV050TkdkVlUyaDJXVzF3YkZrelVYQk1ibEp2V2xjMGIyUnRPWEJhUTBGM1RFTkNNbUl5Ykd0SlJFRnpTVWhDZVdJeVpIbGFXRTU2V2xkUmNFOHhlSFZtVm5oMVdFYzFVV050T1hSaFdFNXNURzVDZVdJelVuWmtTR3gzV2xNMWQyTnRPVzVqYlZaNlkzbEJPVWxIV2pGaWJVNHdZVmM1ZFVsRGFIZGpiVGx1WTIxV2VtTXlWbXRMVTBJM1dFYzBaMGxEUVdkamJWWXdaRmhLZFVsSVVtOWhXRTExWkVkb2JHSnBhREppTW14clNVUkJjMGxJV25aaFYxRm5UVU4zWjJOSVNuWmFNMHBzWXpOT2JGcERhemRZUnpVNVR6RjRkVmhITkhaTGFYQmpZbWxCY1VsR1FubGlNMXB3V2tkV2VrbEhSblZKUnpsM1kwYzVlV1JJVm5WaFdGSTFTVWhTZGtsSE9XbGpNbFo1WkcxVloyUkhhR3hKU0U1c1pFaFNjMkZYTlc1SlJ6bHRTVWRGWjJOSVNuWmlWMng2V2xONFkySnBRWEZKU0Vwc1dqSkdlVnBIZUd4ak0wMW5ZakpaWjJReWFHeGtSMmhzWTJsQ01HRkhWV2RqU0VwMllsZHNlbHBUUW5CamVVSnRaRmQ0YldGWGVITmFWMUZuWWpOSloyTnRWbkZhVjA0d1dsZFJkVWxEUWtkaU0wb3pXVmhLYTJNeGVIVkpRMjluWkVkb2JFbElTbXhqTWpselpGaFNjR0l5Tkdka1J6aG5aRWRvYkVsSVNteGtTRlo1WW0xV2EwbElRbmxpTWpGd1l6SlZaMlF5YUd4aWFVSXdZVWRWWjFreVJuTmlSMHBvV1RKeloyRllUV2RhUnpsMVdsTTFZMkpwUVhGSlJsSnZXbE5DYWxsWGVITlpiVVpxWVhsQ2FsbFhOR2RqYlZZd1pGaEtkVWxIUldkalNFcDJZbGRzZWxwVFFqQmllVUpyV2xkYWJHTnBRbXBpTWpGM1lrZFdNR0ZYT1hWTWJIaDFTVU52WjFGSVFtaGpiVVowU1VoMFFtSnVhM0ZtVTBKM1kyMDVkR0ZZVG14WVJ6Um5TMmxDUVdOSFJubFpWekJuWlRCYU1XSnRUakJoVnpsMVpsTkNhbGxYZUhOWmJVWnFZWGxDTUdKNVFuWlpiazVzWTI1YWJFbElVbTlhVTBKNVdsaE9kbUpJVmpCaFZ6bDFTVWM1YlVsSVVtOWFVMEp1WVZoYWJHSnNlSFZKUTI5blkwaEtkbUpYYkhwYVUzZG5aRWRHY2xwWVRXZGliVGhuV1ZoS2JtUlhNV3hpYmxKNlRHeDRkVWxEYjJkUlNFcHNaRWhXZVdKdVRXZFpVMEozWTIwNWRHRllUbXhKUjFwMlkybENNR0ZIVldkamJWWjZZako0TVdSSGJIWmlhVUoyV21sQ01HRkhWV2RhTW13eVdsYzBaMk5JU25aaVYyeDZXbE5DTTJGSFZuVllSelJuUzJsQ1oxbEhXbkJpYlVKblNVZHNla2xIVW5aaWJWVjFXRWMwWjB0cE9XTmliRVYxV20xc2RVbEVNR2RNZVRoblYwWm9XVWxIZUd4YU1rWnFaVlo0ZFZWV2RHTkpiVnB3WW0xR2MySkliR05KYkRCblVGTkNiV1JYTldwa1IyeDJZbWxCYjJJeVNuRmFWMDR3VEVOQ2FsbFhlSE5aYlVacVlYbHJaMlV4ZUhWSlEwRm5TVWhLYkdSSVZubGlhVUpTUzBjNWFXRnRWbXBrUTJ4aVdFTktiV0ZYTldoaVIzZzFXRU5LWkV0SFRtaGlSM2hwV1ZkT2NrdFVkR05pYmpBM1dFYzFZMkpzUW5saU1qRndZekpWZFdOSVNuWmtSemt3WlZoQ2JFeHRXbkJpYVVFNVNVTTRka2xHYUZsWFEwSnpXbGRrYUZremJHTmliRUo1WWpJeGNHTXlWWFZqU0VwMlpFYzVNR1ZZUW14WE1YZHBXbTFzZFZsWGVITmxWbmRwV0ZOQk9VbEhXakZpYlU0d1lWYzVkVWxEYUdwWlYzaHpXVzFHYW1GNWEyZGxNWGgxU1VOQlowbEhUbWhpUjNocFdWZE9ja2xFTUdkVlUyaHFXVmQ0YzFsdFJtcGhlV3MzV0VjMFowbERRV2RqYlZZd1pGaEtkVWxJVW05aFdFMTFaRWRvYkdKcGFHMWtWelZxWkVkc2RtSnBRVzlrYlVaelpGZFZjRWxJZEdOaWFVRm5TVU5CWjBsRFFXZGpiVll3WkZoS2RVbEhUbWhpUjNocFdWZE9ja3h0V21wWlYzaHpTME5yZFdSSGFHeGlhV2h0WkZjMWFtUkhiSFppYVVGdlMxTkNOMWhITkdkSlEwRm5TVU5CWjBsRFFXZEpRMEo1V2xoU01XTnROR2RrYlVaelpGZFZOMWhITkdkSlEwRm5TVU5CWjBsSU1IQlBNWGgxU1VOQlowbElNSE5KUjFveFltMU9NR0ZYT1hWSlEyaDVXbGRHZW1JeU5IQkpTSFJqWW1sQlowbERRV2RKUTBGblRIazRaMVpGT1VWVWVVSm9aRWhTYkdKWVFqQkpTRkoyU1VoS2JGa3piR3BpUjFWblpFZG9iRWxJU214aGJWWnFaRWRzZG1KcFFqTmhXRkp2U1VaM2FXUkhhSEJqTVhkcFRHeDRkVWxEUVdkSlEwRm5TVU5DZVZwWVVqRmpiVFJuV1RKR2MySkhTbWhaTW5OMVdtMU9hR0pIZDI5TFV6VXdZVWRXZFV0SFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsSVVtOWpiVGt6U1VoS2JGbFlUblppYW5SalltbEJaMGxEUVdkSlEwRm5abE5yTjFoSE5HZEpRMEZuWmxOck4xaEhOVGxQTVhoMVdFYzBka3RwY0dOaWFVRnhTVVpTYkdOdE1YQmliVVl3V2xoTloxbFRRbXBoUjBad1ltbENkbHBwUW5kamJUbDBZVmhPYkdONWQyZGFiVGw1V1RKc2RWcDVRbmxhVjNCc1dUTlNjR0l5TlhwSlNGSjJTVWRLYkZoSE5HZExhVUl3WVVoS2RtUXlOR2RaV0UxbldsaG9hbHBZUWpCaFZ6bDFZM2sxWTJKcFFYRkpSVUozV1ZoS2FHSlRRamRSVnpVMVMyNHdaMk5JU25aaVYyeDZXbE5DYUdSRFFqQmhSMVZuV2xjMWEwbEhPVzFKUjBWbldUSm9hR0ZYTkdkaU1sbG5ZMGhLZG1KWGJIcGFXRTVqWW1sQmNVbEZRbmxhV0ZJeFkyMDFla2xITlhaa1IyaHdZbTFrWTJKcFFYRk1NWGgxVlZNMWEySXlOV3hKUkRCbldtNVdkVmt6VW5CaU1qUm5TMGM1YVdGdFZtcGtRM2RuV201V2MxcHRiSE5pUjFaclRFTkNlVnBYY0d4Wk0xSnNXa04zWjJOSVNuWmFNMHBzWXpOTmNFbElkR05pYVVGblNVTkNlVnBZVWpGamJUUm5WVk5vZGxsdGNHeFpNMUZ3VEcxU2RtSnRWVzlhYmxaeldtMXNjMkpIVm10TVEwSjVXbGR3YkZrelVteGFRM2RuWTBoS2Rsb3pTbXhqTTAxd1R6RjRkV1pVZEdOaWJIaDFWVWhLZG1KWGJIcGFVelYzWTIwNU1HSXpValZqUjFWMVdrYzVkVnBUUVRsSlIxb3hZbTFPTUdGWE9YVkpRMmh0WkZkNGJXRlhlSE5hVjFGelNVaEtiR0Z0Vm1wa1IxWnJURU5DZDJOdE9XNWpiVlo2WTNscloyVXhlSFZKUTBGblNVaGFhR05wUW5aaWJGWjFZVWRHZFZwSGVHeGFSVlo1WTIwNWVVbEVNR2RhYmxaMVdUTlNjR0l5TkdkTFIxWjVZMjA1ZVV0VFFqZFlSelJuU1VOQlowbERRV2RKUXpoMlNVZGFkbU51WkdoamJWRm5aRWM0WjFsVFFtMWtXRkl4WTIxVloyUklWbmxpYVVKNllubENNR0ZIUmpCSlIwSm5aREpvYkdKdFFtZFlSelJuU1VOQlowbERRV2RKUXpoMlNVZFNkbHBZVFdkaWJUa3dTVWRPYUdSSFRtOUpSMnd3U1VkR2RWcERRakJrV0VwMVNVZHNNRWxIYkhWa1J6aG5XVk5DZVZwWGNHeFpNMUp3WWpJMGRWaEhOR2RKUTBGblNVTkJaMGxHUlhWaWJWWTBaRVpTY0ZreWMyOWFibFoxV1ROU2NHSXlOR2RMUTJ0blpURjRkVWxEUVdkSlEwRm5TVU5CWjBsRFFXZGlWMFp5V2xaT01GbFhUbkpXU0Vwb1dUSldUV0l5Tlc1TFIxWjVZMjA1ZVV4RFFuZGpiVGwwWVZoT2JFdFVkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWRzYlVsRGFGSk1iVGwxV2xoS2VXSXpTWEJKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEpTVEcwNWRWcFlTbmxpTTBsdldsaEtlV0l6U1hCUE1YaDFTVU5CWjBsRFFXZEpRMEZuU1VOQloyWlRRbXhpU0U1c1NVaDBZMkpwUVdkSlEwRm5TVU5CWjBsRFFXZEpRMEZuU1VOQ01HRklTblprZVVKc1kyNUtkbU5xZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VneFkySnBRV2RKUTBGblNVTkJaMlpUYXpkWVJ6Um5TVU5CWjJaVWRHTmliSGgxU1VOQlowbERPSFpKUlVZeVlqSnNhMGxJVm5WaWJWWnFXbGhPZWxsWVNqVkpSMEoxV2xob01GWkhiR3BoTWtKd1ltMWpaMlJ0YkdoSlIwWjFTVWhXZFdKdFZtcGFXRTU2V1ZoS05VbEhRak5oUjFaMVdVTTFZMkpwUVdkSlEwSXlXVmhKWjJOSVNuWmlWMng2V2xOQk9VbEhXakZpUjFwd1lrZDRiRnBEUWpobVEwSjVXbGR3YkZrelVteGFRMEk0WmtOQ2QyTnRPVzVqYlZaNlkzbEJMMWhITkdkSlEwRm5TVU5CWjBsSVVtOWhXRTExWkVkb2JHSnBhRzFrVjNodFlWZDRjMXBYVVhOSlNFcHNZVzFXYW1SSFZtdE1RMEozWTIwNWJtTnRWbnBqZVd0blQyeDRkVWxEUVdkSlEwRm5TVU5DTUdGSGJIcFBNWGgxV0VjMFowbERRV2RoVjFsblMwaFNOV05IVm5aYWFVSjNZMjA1YWxwWVRucEpSREE1VUZOQ1kwbHRPV2xoYlZacVpFWjNhVWxEV1cxSlNFSjVZakpPYkdNelRXZEthVmxuWTBoS2Rsa3lWbnBqZVRWcllqSXhhR0ZYTkhCSlNIUmpZbWxCWjBsRFFXZEpRMEZuWWpJMVZtSnRhR2hpYlZKeldsZFNSbU51U25aamFVRTVTVWhDZVdJeVRteGpNMDExV2tjNWRGbFhiSFZNYlVwd1ltMVJiMkl5TlZaaWJXaG9ZbTFTYzFwWFVrWmpia3AyWTJsck4xaEhOR2RKUTBGblpsWjRkVmhITkdkSlEwRm5ZMGhLZG1KWGJIcGFVelV3WVVkV2RVdElXblpoVjFGblRVTjNaMkl5TlZaaWJXaG9ZbTFTYzFwWFVrWmpia3AyWTJsck4xaEhOVGxQTVhoMVdFYzBka3RwY0dOaWFVRnhTVVZPYUdSWVRteGplVUpvU1VoQ2VXSXlNWEJqTWxWblpFYzRaMWx0VldkamJWWnhXbGRPTUZwWFVXZGhWMWxuWVZoUloxcEhPV3hqZVVKMVlqTlJaMW95VmpCSlIxb3hZa2RhY0dKSGVHeGFRMEpwV2xkYWRtTnRWbU5pYVVGeFNVaE9kbUpYVldkaVYyeHpZa2RzZWxwWFRuWmliVko2U1VoU2NHSlhWV2RpTTFZd1RHeDRkVWxEYjJkUlNFSm9ZMjFHZEVsSWRFSmlibXR4WmxOQ2QyTnRPWFJoV0U1c1dFYzBaMHRwUWtGalIwWjVXVmN3WjJVd05URmlWMHBzWTI0d1oySlhiSE5pUjJ4NldsZE9kbUp0VW5wSlNGSndZbGRXZG1SWVVtTmlhVUZ4U1VWQ2QxbFlTbWhpVTBJM1VWYzFOVXR1TUdkWk0xWjZaRWM1ZEVsSFZubGpiVGw1U1VjeGJHTXpUbWhhTWxWbllqTkpaMUpZU25saU0wbG5ZakpLY1ZwWFRqQkpRMmgyWTBoU2NHSXlOV2hpUTJ4alltbEJjVWxGUW5sYVdGSXhZMjAxZWtsSFJXZGpTRXAyWWxkc2VscFRRbTFpTTBsblpFZG9iRWxJU214ak1qbHpaRmhTY0dJeU5HZGlNbGxuWkVkb2JFbEhaSEJrYlZaMVNVaENlV0l5TVhCak1sVm5ZVmRaWjJGWVVXZGhXRTVqWW1sQmNVbEhXakZpUjFwd1lrZDRiRnBEUW1sYVYxcDJZMjFWWjJSSGFHeEpTRkp3WWxkV2RtUllVWE5KUnprd1lVZFdlV1F5YkhwYVUwSjVXbGR3YkZrelVteGFRelZqWW1sQmNVd3hlSFZWVXpVd1lWY3hiR0l6VmpCSlJEQm5XbTVXZFZrelVuQmlNalJuUzBjNWFXRnRWbXBrUTNkbllsaE5jMGxIVm5samJUbDVTMU5DTjFoSE5HZEpRMEZuWTIxV01HUllTblZKUmtWdllqSktjVnBYVGpCTFV6VXdZVmN4YkdJelZqQkxSekY2VEVOQ2JHTnVTblpqYVdzM1dFYzFPVTh4ZUhWWVJ6VlJZMjA1ZEdGWVRteE1ia0o1WWpOU2RtUkliSGRhVXpVd1lWY3hiR0l6VmpCSlJEQm5XbTVXZFZrelVuQmlNalJuUzBjeGVreERRbXhqYmtwMlkybHJaMlV4ZUhWSlEwRm5TVWhhYUdOcFFtdGFWMXBzWTI1S2JGcERRVGxKUjFKc1dtMVdlVXREYXpkWVJ6Um5TVU5CWjJSdFJubEpTRkp3WWxkV2RtUllVa3BhUTBFNVNVaE9iR1JHVW5CaVYxWjJaRmhSYjFwdVZuVlpNMUp3WWpJMFowdERhMmRsTVhoMVNVTkJaMGxEUVdkSlEwSndXbWxCYjBsWFZubGpiVGw1U1VoNE9FbEdkMmxqTTFKNVlWYzFibGhEU1dkUVZEQTVTVWhTTldOSFZuWmFhVUpzWTI1S2RtTnBhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjFwWVNubGlNMGxuVUZOQ2RWcFlZMmRTV0VwNVlqTkpiMXBZU25saU0wbG5aa2gzWjFoRFNsVmhWekZzV2tOQ2RtUllVV2RaVjFvd1dsaEpaMWhEU1dkTGVVSjBZM2xCY2tsR2QybEpSekY2V0VOSmNFOHhlSFZKUTBGblNVTkJaMGxEUVdkSlEwRm5XbGhLZVdJelNYVlpNamxyV2xOQk9VbEdkMmxTVmxKS1ZGVldSVlF4VmxWWVEwazNXRWMwWjBsRFFXZEpRMEZuU1VneFkySnBRV2RKUTBGblNVTkJaMXBIVm0xYVdFcDVXbGRSZFdOdFZuRmFWMDR3UzBkV2VXTnRPWGxMVkhSalltbEJaMGxEUWpsTVEwSjBZM2xyTjFoSE5XTmlhVUZuU1VOQ01HRkhiSHBNYmxKdldsYzBiMXB1Vm5WWk0xSndZakkwWjB0SVdtaGlTRlpzUzFOQ04xaEhOR2RKUTBGblNVTkJaMGxIVG5OYVYwWjVWa2RzZEZwWE9URmtRMmd3WVZjeGJHSXpWakJUVjFGd1R6RjRkVWxEUVdkSlEwRm5TVU5DYTFwWFdteGpia3BzV2tNMWVWcFlUblppU0Zwc1MwaGFhR0pJVm14TFZIUmpZbWxCWjBsRFFqbE1RMEp0WkZjMWFtUkhiSFppYVVGdldsaG9hbHBZUWpCaFZ6bDFTMU5DTjFoSE5HZEpRMEZuU1VOQlowbEhUbk5hVjBaNVZrZHNkRnBYT1RGa1EyZ3dZVmN4YkdJelZqQlRWMUZ3VHpGNGRVbERRV2RKUTBGblNVTkNhMXBYV214amJrcHNXa00xZVZwWGNHeFpNMUZ2V2xob2FscFlRakJoVnpsMVMxUjBZMkpwUVdkSlEwSTVURU5DYTFwWFdteGpia3BzV2tNMWRXSXpVbkJhYm10d1R6RjRkVmhITkdkSlEwRm5ZMjFXTUdSWVNuVkpSMUpzV20xV2VXTnRWbXRNYmtKNVlqSXhjR015VlRkWVJ6VTVUekY0ZFZoSE5IWkxhWEJqWW1sQmNVbEdTbXhrU0ZaNVltNU5aMWxUUW5kamJUbDBZVmhPYkVsSFduWmphVUl3WVVkVloxb3liREphVnpSblpHMUdjMlJYVldkTFJ6bDVTVWhDZVdJeU1YQmpNbFpyU1VoYWFHSklWbXhMVTNkbll6STVkRnBXZUhWSlEyOW5ZbGRzYzJKSGJIcGFWMDUyWW0xU2VrbEhSbTFrUjFaNVNVZHNNRWxJU214ak1qbHpaRzFXYTB4cFFsRlpXRTU2V2xoTloyTnRWbkZhVjA0d1lWYzVkV041UW5CaVZ6RnNXa2RzYUdSSFZuTmxVelZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNOMUZYTlRWTGJqQm5ZMGhLZG1KWGJIcGFWbmgxU1VOdloxRklRbWhqYlVaMFNVaDBUMlJYTVdsYVdFbzVTVWN4Y0dKSGVIQmpNbFpxWWpJMWEyTXhlSFZKUTI5blVVaEtiR1JJVm5saWJrMW5XVk5DZDJOdE9YUmhXRTVzU1VkYWRtTnBRakJoUjFWblkyMVdlbUl5ZURGa1IyeDJZbWxDZGxwcFFqQmhSMVZuV2pKc01scFhOR2RqU0VwMllsZHNlbHBUUW1oYWJsSnNZMmxDZEdGWGVITmhXRTVzV1RJNWRWcElUbU5pYVVGeFNVaFNjR0pYVldkaFIwWjZTVWRXYzFsWVFucGFWMUZuWXpKc2RWa3lWV2RrUjJoc1NVaEtiR015T1hOa1dGSndZakkwWjJJeVdXZGtSMmhzU1Vka2NHUnRWblZKU0VKNVlqSXhjR015VlhWWVJ6Um5TMmxDU2xwcFFqQmhSMVZuV2pKc01scFhOR2RqU0VwMllsZHNlbHBUUW5sYVYzQnNXVE5TZWt4RFFqQmhSMFl3U1Vkc2VrbElRbWhqTTA1c1drTkNjR0pYTVd4YVIyeG9aRWRXYzJWVE5XTmlhVUZ4VERGNGRWVlROV3RhVjNob1pWTkJPVWxIV2pGaWJVNHdZVmM1ZFVsRGFIWlpiWEJzV1ROUmMwbElVbkJpVjFaMlpGaFJjRWxJZEdOaWFVRm5TVU5DY0ZwcFFXOWtSMngwV2xjNU1XUkRRVGxRVkRCblpHMDVjRnBEUVhkTFUwSTNXRWMwWjBsRFFXZEpRMEZuU1VoU2NHSlhWblprV0ZGblVGTkNkbGx0Y0d4Wk0xRTNXRWMwWjBsRFFXZEpRMEZuU1VjNWFXRnRWbXBrUTBFNVNVaGFkbUZYVVdkTlJIUmpZbWxCWjBsRFFqbFlSelJuU1VOQloyTnRWakJrV0VwMVNVWkZiMkl5U25GYVYwNHdTMU0xYTFwWGVHaGxVMmd3WVZjeGJHSXpWakJMVkhSalltNHdOMWhITldOaWJFSjVZakl4Y0dNeVZYVmpTRXAyWkVjNU1HVllRbXhNYlZKc1lrZEdOVWxFTUdkYWJsWjFXVE5TY0dJeU5HZExTRkp3WWxkV2RtUllVWEJKU0hSalltbEJaMGxEUW5sYVdGSXhZMjAwWjJSSGFIQmplVFV3WVVkV2RVdEhXakZpYlU0d1lWYzVkVWxEYURKWlYzZ3hXbE5yWjJVeGVIVkpRMEZuU1VOQlowbERRakpaV0VsbldrZFdiVnBZU25sYVYxRm5VRk5DYTFwWFdteGphV2R3VHpGNGRVbERRV2RKUTBGblNVTkNlbHBZVWxWaFZ6RnNZak5XTUV0SFdqRmliVTR3WVZjNWRVbERaM0JKU0hSalltbEJaMGxEUVdkSlEwRm5TVU5CWjBsSFVteGFiVlo1WTIxV2EweHVTbXhqTWpselpHMVZiMlJ0Um5Oa1YxVndUekY0ZFVsRFFXZEpRMEZuU1VOQ09VeERRakJoVnpGc1lqTldNRXRVZEdOaWFVRm5TVU5CWjBsRFFXZGpiVll3WkZoS2RVbEhVbXhhYlZaNVkyMVdhMHh1UW5saU1qRndZekpWTjFoSE5HZEpRMEZuWmxOck4xaEhOVGxQTVhoMVdFYzBka3RwY0dOaWFVRnhTVVpDYUdNelRteGplVUpvU1VkT2RtSnVVbkJpYmxab1pFZHNkbUpwUWpCaWVVSm9TVVUxZGxwSFZXZGFibFoxV1ROU2NHSXlOSE5KU0dSdllWZE9iMGxIYkhwSlIwNW9Za2Q0YkZwRFFqTmhXRkp2U1VoU2IxcFRRbTVoV0Zwc1lteDRkVWxEYjJkWldFcHVaRmN4YkdKdVVucEpTRUo1WWpOYWNGcEhWbXRKUjBaNlNVZEdkVWxIUm5samJVWTFURU5DYUdKdFVXZGpiVll3WkZoS2RXTjVRbWhKU0VKNVlqSXhjR015VlhWWVJ6Um5TMng0ZFVsRGIyZEpRMEZuU1VOQ1VreHROVzFaV0VKM1lraHJiMUpzVFhWamJWWm9Xa1ZhY0dKSFZYTkpSblJtV0RKYWNHSkhWblZaVnpGc1dGTnNZMkpwUVhGSlEwRm5TVU5CWjB4dVVtOWFWelJ2V201V2RWa3pVbkJpTWpSblMwZE9kbUp1VW14aWJsRndTVWgwWTJKcFFYRkpRMEZuU1VOQloyWlRiR05pYVVGeFdFYzBaMHRwT1dOaWJFVjFZbTFhYUdOSVFuTmxVMEU1U1VkYU1XSnRUakJoVnpsMVNVTm9hbGxYZUhOWmJVWnFZWGwzWjFsWVNtNWplV3RuWlRGNGRVbERRV2RKU0Vwc1pFaFdlV0pwUWxKTFIwNW9Za2Q0YVZsWFRuSkxVelYxV20xR2QyTkhlRFZMUjBaNVdqTk5jRTh4ZUhWbVZIUmpZbXg0ZFZWSVNuWmlWMng2V2xNMWQyTnRPVEJpTTFJMVkwZFZkV0p0V21oalNFSnpaVk5CT1VsSFdqRmliVTR3WVZjNWRVbERhR2hqYldSNlMxTkNOMWhITkdkSlEwRm5aRzFHZVVsSFVteGFiVlo1WTIxV2EwbEVNR2RhUjFadFdsaEpiMHRVZEdOaWFVRm5TVU5DTWxsWVNXZGliVGxyV2xWR2VWb3pUV2RRVTBKb1kyNUthR1ZXT1hwaVIyeHFXbE5vYUdOdFpIcExWSFJqWW1sQlowbERRblZpTWxKc1VWaEtibU41Tlhka1dFNXZTMGRTYkZwdFZubGpiVlpyVEcweGFHRXlWazlpTWxKc1ZXMVdlbUl5ZURKYVdFbHZTMU5yTjFoSE5HZEpRMEZuWkVkb2NHTjVOVzFaV0VKM1lraHJiMkp0T1d0YVZVWjVXak5OY0V4dFdtaGhWM2R2V2tkV2JWcFlTbmxhVjFGMVkyMVdjVnBYVGpCTFZIUmpZbWxCWjBsRFFubGFXRkl4WTIwMFoxcEhWbTFhV0VwNVdsZFJkV05JU25aaVYyeDZXbFIwWTJKdU1EZFlSelZqWW1rNGNVdHNlSFZKUTI5blZVZEdlbU15Vm5wSlIwVm5XVEk1ZFdSSGJIVmtWMFl3WVZjNWRVbElVblpKUjBWblZHMDVhMXBUUW0xa1Z6VnFaRWRzZG1KcGQyZGtNbWh3V1RKbloyRllUV2RaTWtaellrZFdhMGxJWkhCa1IyZG5aRWRvYkVsSFpIQmtiVloxV0VjMFowdHBRbWhqYldReFlsZFdkV1JJVFdkalNFcDJaRzFzYTFwWFVXZGhWelZyWVZoYWNGcElWbWhpUjNnMVRFTkNhR0p0VVdkamJWWXdaRmhLZFdONVFtaEpTRUo1WWpJeGNHTXlWWFZZUnpSblMybENRVnBZYUdoaVdFSnpXbFo0ZFVsRGIyZFZVelYxV20xT2FHSkhkMjlTYkUxMVkyMVdhRnBGV25CaVIxVnpTVVk1WmxwdGJITmFWelZvWWxkVmNGaEhOR2RMYVVGMVpFZG9iR0pwYUcxa1Z6VnFaRWRzZG1KcFFXOVpNamwxWkVkV2RXUkRhMmRsTVhoMVNVTnZaMlpUYkdOaWFVRnhXRWMwWjB0cE9XTmliRVYxWW0xYWFsbFhlSE5KUkRCbldtNVdkVmt6VW5CaU1qUm5TMGRPYUdKSGVHbFpWMDV5U1VNNGNVeHBOSFZaV0VwdVkzbHZka3RUUWpkWVJ6Um5TVU5CWjJSdFJubEpSMFo1V2pOTloxQlRRbWhqYmtwb1pWWTVlbUpIYkdwYVUyaG9ZMjFrTVdKWFZuVmtTRTF6U1VSRmNFOHhlSFZKUTBGblNVaEtiR1JJVm5saWFVSlNTMGRPYUdKSGVHbFpWMDV5UzFNMWRWcHRSbmRqUjNnMVMwZEdlVm96VFhCUE1YaDFabFIwWTJKc2VIVlZTRXAyWWxkc2VscFROWGRqYlRrd1lqTlNOV05IVlhWaWJWcHFXVmQ0YzBsRU1HZGFibFoxV1ROU2NHSXlOR2RMUXpoeFRHazBkVmxZU201amVXOTJTMU5DTjFoSE5HZEpRMEZuWkcxR2VVbEhOWFphUjFaQ1kyMWtla2xFTUdkWldFcDVXVmhzWm1NeWVIQlpNbFZ2V1ZoS2JtUlhNV3hpYmxKNlMxUjBZMkpwUVdkSlEwSXlXVmhKWjFwSFZtMWFXRXA1V2xkUloxQlRRbXRhVjFwc1kybG5jRTh4ZUhWSlEwRm5TVWMxZGxwSFZrSmpiV1I2VEc1Q01XTXlaMjlhUjFadFdsaEtlVnBYVVhWaVYwWnlXbFUxZGxwSFZsTmFXRTUyWWtoYWJHTnBaM0JMVkhSalltbEJaMGxEUWpCaFIyeDZURzFhYUdOSVFuTmxVMmgxWWpKU2JGRllTbTVqZVd0MVdtMUdjR0pEYUd0YVYxcHNZMjVLYkZwRE5YbGFWM0JzV1ROUmNFOHhlSFZKUTBGblNVaEtiR1JJVm5saWFVSnJXbGRhYkdOdVNteGFRelYzWTIwNWRHRllUbXhQTVhoMVpsUjBZMkpzZUhWTWVXOXhXRWMwWjB0cFFsaGpiVVozWTNsQ2FFbEZOWFphUjFaTFZYbENhbUl5TlRCaFZ6VXhXVmhTY0dJeU5HZGpSMFo2WXpKc2RWcDVRbTFrVnpWcVpFZHNkbUpwUW1oaWJWRm5ZMjFXTUdSWVNuVmplVUpvWW1sQ2JHTllWbkJrYlVaeldsYzFNRmhITkdkTGFVSXlXbGhLZW1GWE9YVkpTRkp2V1ZoUloyTnRWakJrV0VwMVkzbENhRWxJUW5saU1qRndZekpWZFZoSE5HZExhVUpCV2xob2FHSllRbk5hVm5oMVNVTnZaMVZUTlhWYWJVcHdZbTFSYjFKc1RYVmpiVlpvV2tWYWNHSkhWWE5KUmpsbVdtMXNjMXBYTldoaVYxVndTMFozYVdSWVVtMU1WR2hqU1dsc1kySnBRWEZKUXpVd1lVZFdkVXRIVG5aaWJrNTJZa2RWZFdKSE9XNUxWbmgxU1VOdloweHRVblppYlZWdlMxWjRkVWxEYjNaWVJ6VlNURzAxYlZsdGJIVmFRMEU1V0VjMVVreHRVbXhpYlRscldsZHNiV1ZUUVRsSlIxb3hZbTFPTUdGWE9YVkpRMmhxV1ZkNGMxbHRSbXBoZVVGMlMyazBkVXh0Um5sYU0wMXhUSGxyWjJVeGVIVkpRMEZuU1VoYWFHTnBRbWxaV0U1c1VWaEtibU41UVRsSlIwWjVZMjFHTlZnelRuTmhWMDVzUzBkR2VWb3pWblJhVnpVd1kzbDNaMDFUYXpkWVJ6Um5TVU5CWjJOdFZqQmtXRXAxU1VkYU1XSnRUakJoVnpsMVNVTm5jRWxJZEdOaWFVRm5TVU5CWjBsRFFXZGtiVVo1U1VjMWRscEhWa0pqYldSNlNVUXdaMWx0Um5wYVZVWjVXak5OZFZreU9YVlpNa1l3UzBkR2VXTnRSalZZTTA1ellWZE9iRXRIUm5sYU0xWjBXbGMxTUdONWEzQlBNWGgxU1VOQlowbERRV2RKUTBJeVdWaEpaMXBIVm0xYVdFcDVXbGRSWjFCVFFtdGFWMXBzWTJsbmNFOHhlSFZKUTBGblNVTkJaMGxEUW5WaU1sSnNVVmhLYm1ONU5YZGtXRTV2UzBkU2JGcHRWbmxqYlZaclRHMHhhR0V5Vms5aU1sSnNWVzFXZW1JeWVESmFXRWx2UzFOck4xaEhOR2RKUTBGblNVTkJaMGxHUlc5Wk1rWnpZa2RLYUZreWMzQk1iVnBvWTBoQ2MyVlRhSFZpTWxKc1VWaEtibU41YTNWYWJVWndZa05vYTFwWFdteGpia3BzV2tNMWVWcFhjR3haTTFGd1R6RjRkVWxEUVdkSlEwRm5TVU5DZVZwWVVqRmpiVFJuV2tkV2JWcFlTbmxhVjFGMVkwaEtkbUpYYkhwYVZIUmpZbWxCWjBsRFFqbFBNWGgxWmxSMFkySnNlSFZWU0VwMllsZHNlbHBUTlhkamJUa3dZak5TTldOSFZYVmliVnBwWVZjMWEwbEVNV05pYkVKNVlqSXhjR015VlhWalNFcDJaRWM1TUdWWVFteE1iVkpzWW0wNWExcFhiRzFsVTBFNVNVZGFNV0p0VGpCaFZ6bDFTVU5uZGt0cE5IVk1iVVo1V2pOTmNVeDVhMmRsTVhoMVNVTkJaMGxJV21oamFVSm9ZMjFrZWtsRU1HZFpXRXA1V1Zoc1ptTXllSEJaTWxWdldWaEtibVJYTVd4aWJsSjZTMVIwWTJKcFFXZEpRMEpvWTIxa2VreHVWblZqTW1od1dtNVJiMlJIYUhCamVXczNXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEdSWFZhUjFaMVlqSlNiR0ZYV2pWTWJVWjNZMGQ0TlV0SVduWmhWMUZuVFVOM1oxbFlTbTVqZVdzM1dFYzFPVTh4ZUhWWVJ6VlNURzAxYVdGWE5XdEpSREJuV201V2RWa3pVbkJpTWpSblMwZE9hR0pIZUdsWlYwNXlURU5DTUdGSGJIcGpRMEYyUzJrMGRVeHRSbmxhTTAxeFRIbHJaMlV4ZUhWSlEwRm5TVWhhYUdOcFFtbFpXRTVzVVZoS2JtTjVRVGxKUjBaNVkyMUdOVmd6VG5OaFYwNXNTMGRHZVZvelZuUmFWelV3WTNsM1owMXBhemRZUnpSblNVTkJaMk50VmpCa1dFcDFTVWRhTVdKdFRqQmhWemwxU1VObmNFbElkR05pYVVGblNVTkJaMGxEUVdka2JVWjVTVWMxZGxwSFZrSmpiV1I2U1VRd1oxbHRSbnBhVlVaNVdqTk5kVmt5T1hWWk1rWXdTMGRHZVdOdFJqVllNMDV6WVZkT2JFdEhSbmxhTTFaMFdsYzFNR041YTNCUE1YaDFTVU5CWjBsRFFXZEpRMEl5V1ZoSloxcEhWbTFhV0VwNVdsZFJaMUJUUW10YVYxcHNZMmxuY0U4eGVIVkpRMEZuU1VOQlowbERRblZpTWxKc1VWaEtibU41Tlhka1dFNXZTMGRTYkZwdFZubGpiVlpyVEcweGFHRXlWazlpTWxKc1ZXMVdlbUl5ZURKYVdFbHZTMU5yTjFoSE5HZEpRMEZuU1VOQlowbEhXakZpYlU0d1lWYzVkVWxIU25aa1Z6VnJTME5yWjJVeGVIVkpRMEZuU1VOQlowbERRV2RKUTBGblkyMVdNR1JZU25WSlIwNW9Za2Q0YVZsWFRuSk1iVVozWTBkNE5VdElVbTloV0U1M1RFTkNhR050WkRGaVYxWjFaRWhOY0U4eGVIVkpRMEZuU1VOQlowbERRamxZUnpSblNVTkJaMGxEUVdkSlJrVnZXVzA1TVdKdFVYQk1iVnBvWTBoQ2MyVlRhSFZpTWxKc1VWaEtibU41YTNWYWJVWndZa05vYTFwWFdteGpia3BzV2tNMWVWcFhjR3haTTFGd1R6RjRkVWxEUVdkSlEwRm5TVU5DZVZwWVVqRmpiVFJuV2tkV2JWcFlTbmxhVjFGMVkwaEtkbUpYYkhwYVZIUmpZbWxCWjBsRFFqbFBNWGgxWmxSMFkySnNlSFZWU0VwMllsZHNlbHBUTlhkamJUa3dZak5TTldOSFZYVmliVXB3WW0xUloxQlRRbTFrVnpWcVpFZHNkbUpwUVc5TWVYQXdZVWRzZW1ORGQyZE1hVFIxV1ZoS2JtTjViM1pMVTBJM1dFYzBaMGxEUVdka2JVWjVTVWRHZVZvelRXZFFVMEpvWTI1S2FHVldPWHBpUjJ4cVdsTm9hR050WkRGaVYxWjFaRWhOYzBsRVFYQlBNWGgxU1VOQlowbEhSbmxhTTAxMVpGYzFlbUZIYkcxa1EyZ3dZVWRzZWt0VWRHTmlhVUZuU1VOQ2VWcFlVakZqYlRSblZWTTFkVmx0YkhWYVF6Vm9ZMGhDYzJWVGFESmlNbXhyU1VSQmMwbEhSbmxhTTAxd1R6RjRkV1pVZEdOaWJIaDFUSGx2Y1ZoSE5HZExhVUpFV1ZkNGMyTjVRbWhKUnpGc1pFZG9kbHBEUW5aYWFVSm9TVVUxZGxwSFZYUmpNMUkxWWtkVloySXlTbkZhVjA0d1NVaFNiMWxZVVdkWlYwNXFXbGhDTUdONVFtaEpSVFYyV2tkVmRHTXpValZpUjFaalltbEJjVWxIVG1oaVIzaHBXVmRPY2tsSVpIQmtSMmRuV1ZOQ2JtRllXbXhpYVVKb1kyNUthR1ZUUW5aYWFVSm9ZMjFrTVdKWFZuVmtTRTF6U1VoQ2MyUllUV2RaVTBKM1kyMDVNbUZYVW14YVEwSnFXVmQ0YzFsdFJtcGhlVFZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNkbGx0Y0d4Wk0xRm5XVmMwWjJJeVNuRmFWMDR3U1VoU2IxbFlVV2RoUjBaNlNVaFNiMXBUUW5WWlZ6RnNXa05DZEZwWVVtOWlNbEpqWW1sQmNVbEZRbmRaV0Vwb1lsTkNOMVV6VW5saFZ6VnVabE5DZFZsWE1XeEpSelZvWWxkVloySXlXV2RrUjJoc1NVY3hiR1JIYUhaYVEwSjJXbWxDZGxsdGNHeFpNMUpqWW1sQmNVbEZRbmRaV0Vwb1lsTkNOMUZZU25sWldHdzVTVWRHZVZvelRXZFpXRXB1WkZjeGJHSnVVbnBKU0ZKMlNVaENhR016VFdka1J6aG5aRWRvYkVsSE1XeGtSMmgyV2tSeloyUkhhR3hKUjA1b1lrZDRhVmxYVG5KWVJ6Um5TMmxDTTJGWGVITkpSMHBzU1VoQ2VXSXpXbkJhUjFaclNVZEtOVWxHUldkWlZ6VnJTVWRHZDJOSFZuVmFSMVpyU1VoU2RrbElVbTlhV0U1c1NVZEdlVm96Vm5SYVZ6VXdZM2sxWTJKcFFYRkpSVUo1V2xoU01XTnROWHBKUjBWblkwaEtkbUpYYkhwYVUwSnRZak5KWjJSSGFHeEpTRnBvWWtoV2JFbEhPWGxKUjFaNVkyMDVlVmhITkdkTGFUbGpZbXhGZFdKdE1XaGpTRUp6WlZOQk9VbERPSFpKUm1oWlYwTkNRbU41UW5kamJUbDNZak5PYkZwRFFtbGxVMEpqU1d4S2JGcElUbWhpYlZKNVlqRjNhVmhITlZKTWJUVjNZak5PTUVsRU1HZGFibFoxV1ROU2NHSXlOR2RMUnpscFlXMVdhbVJEZDJkaWJVWjBXbE4zWjFsWVNtNWplV3RuWlRGNGRVbERRV2RKU0Vwc1pFaFdlV0pwUWxKTFJ6bHBZVzFXYW1SRGEzVmlia0oyWXpOUmIySnRSblJhVTNkbldWaEtibU41YXpkWVJ6VTVUekY0ZFZoSE5WRmpiVGwwWVZoT2JFeHVRbmxpTTFKMlpFaHNkMXBUTlhWaVYwWjNZMGQ0TlVsRU1HZE1lVGhuVjBab1dVbEZSbnBKU0VKNVlqTkNkbU15Vm10SlIwbzFTVVozYVZWdFZtdGpNa1oxV2toS2RsaERTbU5pYkVKNVlqSXhjR015VlhWalNFcDJaRWM1TUdWWVFteE1iVFYzWWpOT01FbEVNR2RhYmxaMVdUTlNjR0l5TkdkTFJ6Vm9ZbGRWYzBsSFJubGFNMDF3U1VoMFkySnBRV2RKUTBJeVdWaEpaMkp0T1d0YVZVWjVXak5OWjFCVFFtaGpia3BvWlZZNWVtSkhiR3BhVTJob1kyMWtla2xJZURoSlJuUmtTMVIwWTJKcFFXZEpRMEl5V1ZoSloxcEhWbTFhV0VwNVdsZFJaMUJUUW10YVYxcHNZMmxuY0U4eGVIVkpRMEZuU1VjMWRscEhWa0pqYldSNlRHNUNNV015WjI5YVIxWnRXbGhLZVZwWFVYVmlWMFp5V2xVMWRscEhWbE5hV0U1MllraGFiR05wWjNCTFZIUmpZbWxCWjBsRFFqQmhSMng2VEcxU2NHTXpRbWhrUjA1dlMwWjNhV05IT1hwa1JuZHBURU5DWW1KdFJuUmFVM2RuWW0wNWExcFZSbmxhTTA1a1MxTTFiVmxYYkhOTFIxSnNXbTFXZVdOdFZtdE1ia3BzWVcxV2FtUkRhemRZUnpSblNVTkJaMk50VmpCa1dFcDFTVWRTYkZwdFZubGpiVlpyVEc1Q2VXSXlNWEJqTWxVM1dFYzFPVTh4ZUhWWVJ6UjJTMmx3WTJKcFFYRkpSVTVvWWtkNGVrbEhSV2RpVjFZd1lVYzVhMGxIT1cxSlIwVm5WRzA1YTFwVE1YcGtTR3h6V2xOQ2RsbHRjR3haTTFGblpFZG9hR1JEUW1oWk1rNXNZMGhTZWtsSFJXZFViVGxyV2xNeGVtUkliSE5hVm5oMVNVTnZaMWt5Um5OaVIwcG9XVEp6YzBsSFduWmpibVJvWTIxU2NHSnRZMmRrUjJoc1NVZGtjR1J0Vm5WSlNGcG9ZMjFzYUZwSGJHcEpSMFo1V2pOV2RGcFhOVEJqZVhkblkwZDRNV041UW1oSlNFSjVZak5hY0ZwSFZtdFlSelJuUzJsQ2FsbFhlSE5aYlVacVlYbENhR050WkRGaVYxWjFaRU0xWTJKcFFYRkpSVUozV1ZoS2FHSlRRblpaYlhCc1dUTlJaMWxYTkdkaU1rcHhXbGRPTUVsSVVtOVpXRkZuWVVkR2VrbElVbTlhVTBKMVdWY3hiRnBEUW5SYVdGSnZZakpTWTJKcFFYRkpSVUozV1ZoS2FHSlRRamRWTTFKNVlWYzFibVpUUW5WWlZ6RnNTVWMxYUdKWFZXZGlNbGxuWkVkb2JFbEhNV3hrUjJoMldrTkNkbHBwUW5aWmJYQnNXVE5TWTJKcFFYRkpSVUozV1ZoS2FHSlRRWFZNYVRWb1kyMWtla2xIUm5sYU0xWjBXbGMxTUdONVFqQmllVUozV1ZoT2VrbElVblpKU0ZKdldsTkNkRnBZVW05aU1sRTNTVWhTYjFwVFFtcFpWM2h6V1cxR2FtRjVRak5oVjNoeldFYzBaMHRwUW1sYVUwSjNZMjA1TW1GWFVteGFRMEpwWlZOQ1VrbEhSblZhUTBKb1kwaENiR0p0VW14YVEwSXdZbmxDTUdGSFZucGFVMEpvWTIxa01XSlhWblZrU0UxMVdFYzBaMHRwUWtGamJWWXdaRmhLZFdONVFtaEpTRUo1WWpJeGNHTXlWV2RhYlRsNVNVaFNiMXBUUWpKWlYzZ3hXbE5DZG1OcFFteGpia3AyWTJ4NGRVbERiM1pZUnpWU1RHMDFlbHBYTld0SlJEQm5USGs0WjFkR2FGbEpSVXBvWXpKV2EwbEhPWFZKUlRGb1kyMXpaMVJYYkhOaVIxWjVTak5OWjJOSVNuWmpSemw2V2xkUloxaERTbnBhVnpWcldFTktZMkpzUlhWaWJURnFXVmQ0YzBsRU1HZE1lVGhuVjBab1dVbEZTbWhqTWxaclNVYzVkVWxHZDJsVmJWWnJZekpHZFZwSVNuWktNMDVqU1dsQ2QyTnRPWGRpTTA1b1lrWjRkVlZUTlhWaFZ6VXlZakowYkVsRU1HZGFibFoxV1ROU2NHSXlOR2RMUnpscFlXMVdhbVJEZDJkaWJVWjBXbE5CZGt0cE5IVk1iVVo1V2pOTmNVeDVhMmRsTVhoMVNVTkJaMGxJV21oamFVSjFZakpTYkZGWVNtNWplVUU1U1VkR2VXTnRSalZZTTA1ellWZE9iRXRIUm5sYU0xWjBXbGMxTUdONWQyZE5hV3MzV0VjMFowbERRV2RrYlVaNVNVZFNiRnB0Vm5samJWWnJTVVF3WjFwSFZtMWFXRWx2UzFSMFkySnBRV2RKUTBKMVlqSlNiRkZZU201amVUVjNaRmhPYjB0SFVteGFiVlo1WTIxV2EweHRNV2hoTWxaUFlqSlNiRlZ0Vm5waU1uZ3lXbGhKYjB0VGF6ZFlSelJuU1VOQloxVlRhSFpaYlhCc1dUTlJjRXh0VW5Cak0wSm9aRWRPYjB0R2QybGpSemw2WkVaM2FVeERRbUppYlVaMFdsTjNaMkp0T1d0YVZVWjVXak5PWkV0VE5XMVpWMnh6UzBkU2JGcHRWbmxqYlZaclRHNUtiR0Z0Vm1wa1EyczNXRWMwWjBsRFFXZGpiVll3WkZoS2RVbEhVbXhhYlZaNVkyMVdhMHh1UW5saU1qRndZekpWTjFoSE5UbFBNWGgxV0VjMVVXTnRPWFJoV0U1c1RHNUNlV0l6VW5aa1NHeDNXbE0xZFdNeVZuVmFRMEU1U1VNNGRrbEdhRmxYUTBKRFdWaE9iRnBEUW5aaWFVSk9XVmhLY2tsRk1YQmlSM2hzWTJsa2VrbElRbmxpTTBKMll6SldhMGxHZDJsak1sWjFXa1ozYVZoSE5WRmpiVGwwWVZoT2JFeHVRbmxpTTFKMlpFaHNkMXBUTlhWaVYwNW9Za2QzWjFCVFFYWk1lVUpaVjBabloxRnRSbnBhVjFGbllqSTBaMWhEU2xOYVYxSjZXVmMxYTJOdE9HNWpNWGRwU1VoQ2VXSXpRblpqTWtaeldFYzFVV050T1hSaFdFNXNURzVDZVdJelVuWmtTR3gzV2xNMWRXRlhOVEppTW5Sc1NVUXdaMXB1Vm5WWk0xSndZakkwWjB0SE5XaGlWMVZuVEhsdmRVeHBOV2hqYldSNlMyazRjRWxJZEdOaWFVRm5TVU5DTWxsWVNXZGliVGxyV2xWR2VWb3pUV2RRVTBKb1kyNUthR1ZXT1hwaVIyeHFXbE5vYUdOdFpERmlWMVoxWkVoTmMwbEVSWEJQTVhoMVNVTkJaMGxJV21oamFVSnJXbGRhYkdOdVNteGFRMEU1U1VkU2JGcHRWbmxMUTJzM1dFYzBaMGxEUVdkaWJUbHJXbFZHZVZvelRYVmpTRlo2WVVOb2ExcFhXbXhqYmtwc1drTTFkRmxYZEd4VWJUbHJXbFpLYkdNeU9YTmtiVlo1UzBOcmNFOHhlSFZKUTBGblNVaFNiMkZZVFhWYVIyeDZZMGRHTUZreVoyOVlRMHAzWWpOT01GaERTWE5KUm5SMVdWY3hiRXhEUW5WaU1sSnNVVmhLYm1NeE1IQk1iVnBvWVZkM2IxcEhWbTFhV0VwNVdsZFJkV050Vm5GYVYwNHdTMVIwWTJKcFFXZEpRMEo1V2xoU01XTnROR2RhUjFadFdsaEtlVnBYVVhWalNFcDJZbGRzZWxwVWRHTmliakEzV0VjMVkySnBPSEZMYkhoMVNVTnZaMU5YV1dkWlUwSnRaRmMxYW1SSGJIWmlhVUl6WWpOV2MxcERRbk5oVjNSc1NVaFNka2xJVGpGalNFSjJZMjVSWjFsdE9UQmhRMEpQWWpKU2JFbEhUblppYmxKd1ltNVdhR1JIYkhaaWFURjNXVmhPZW1GWE5XNU1XRTR3WlZkNGJFbEhSblZhUm5oMVNVTnZaMk5JU25aaVYyeDZXbE14ZVZwWVVqRmpiVFZ3WW0xamRHTXpValZpUjFWelNVZHNNRWxIVG1oaWFVSnNZbTFSWjJGWVVucEpSMngxWkVkV2VXSnRSbk5KU0VKNVlqSXhjR015VldkWk1taG9ZVmMwWjJReWJEQmhSbmgxU1VOdloxbEhOWFphUjFad1dtNXJiMkp0T1d0YVYwcG9XVEp6Y0ZsRGQyZGFiVGw1WkRKR2VWcEhiSFZhZVVJd1lVZFZaMkl6UWpCaFZ6bDFXVmQzWjJKdE9XdGFWMHBvV1RKeloxbFlTbTVrVnpGc1ltNVJkVWxEUWtwYWFVSXdZVWRWWjJSWVRteGpiSGgxU1VOdloxcFhlR3haTTFKNlNVaFNka2xJVm5wYVUwSm9TVWMxZGxwSFZtbFpWMDV5VEVOQ01HRkhWV2RqYlZaNlpGZDRNRWxJWkhCaVIzZG5XVzFWWjJNeVZuVmtRMEl3WVVkV2VWcFROR2RKUld4dFNVaFNiMXBZYTJkYVJ6aG5ZbTA1TUZoSE5HZExhVUozV1ZoT2VrbEhSV2RpYlRscldsZEthRmt5YzNOSlNGSnZXbGhyWjJReWJITmlRMEo1V2xkT2JHRllXbXhKU0ZKdldsTkNlVnBZVGpGaVNGRm5ZMGhLZG1KWGJIcGFVelZqWW1sQmNVbEZRbmRaV0Vwb1lsTkNkbGx0Y0d4Wk0xRm5XVk5DZVZwWVRqRmlTRkZuUzBjNWVVbEhSV2RqU0VwMllsZHNlbHBUUW0xaU0wbG5XVk5DZVZwWVRqRmlTRkZ3V0VjMFowdHBRa0ZqUjBaNVdWY3daMlV3V2pGaWJVNHdZVmM1ZFdaVFFuVmlNbEpzV1cxR2FtRjVRbWhKUlRWMldrZFZkV0Z1VFhSak0xSTFZa2RWWjFreVJuTmlSMHBvV1RKMFkySnBRWEZKUlVKNVdsaFNNV050TlhwSlIxWndaRWRvYkdOcFFqQmhSMVZuWTBoS2RtSlhiSHBhVTBKMlkybENkV0l6VW05aFZ6VnVXRWMwWjB0cE9XTmliRVYxWW0wNWExcFhiRzFsVTBFNVNVYzFkbHBIVm5CYWJtczNXRWMxYldSWE5XcGtSMngyWW1sQ2RXSXlVbXhoVjFvMVMwYzVhV0Z0Vm1wa1EzZG5ZbTA1YTFwWFNtaFpNbk53U1VoMFkySnBRV2RKUTBKNVdsaFNNV050TkdkVlUyaDJXVzF3YkZrelVYQk1iVFYyV2tkV2NGcHVhMjlpYlRscldsZEthRmt5YzNCUE1YaDFabFo0ZFZoSE5WRmpiVGwwWVZoT2JFeHVRbmxpTTFKMlpFaHNkMXBUTlhWaU1sSnNZVmRhTlVsRU1HZGFibFoxV1ROU2NHSXlOR2RMUnpWMldrZFdhVmxYVG5KTFUwSTNXRWMwWjBsRFFXZGhWMWxuUzBjMWRscEhWbWxaVjA1eVMxTkNOMWhITkdkSlEwRm5TVU5CWjBsSVVtOWhXRTExWkVkb2JHSnBhRzFrVnpWcVpFZHNkbUpwUVc5a2JVWnpaRmRWY0VsSWRHTmlhVUZuU1VOQlowbERRV2RKUTBGblNVWkZkV0p0VmpSa1JsSndXVEp6YjFwdVZuVlpNMUp3WWpJMFowdERhMmRsTVhoMVNVTkJaMGxEUVdkSlEwRm5TVU5CWjBsRFFXZEpSelYyV2tkV2FWbFhUbkpMUnpVeFlrZDNjMGxJV21oaVNGWnNTMVIwWTJKcFFXZEpRMEZuU1VOQlowbERRV2RKU0RCd1R6RjRkVWxEUVdkSlEwRm5TVU5DT1V4RFFtMWtWelZxWkVkc2RtSnBRVzlhV0VwNVlqTkpjRWxJZEdOaWFVRm5TVU5CWjBsRFFXZEpRMEZuU1VaRmRXSnRWalJrUmxKd1dUSnpiMXB1Vm5WWk0xSndZakkwWjB0RGEyZGxNWGgxU1VOQlowbERRV2RKUTBGblNVTkJaMGxEUVdkSlJ6VjJXa2RXYVZsWFRuSkxSMVo1WTIwNWVVdFVkR05pYVVGblNVTkJaMGxEUVdkSlEwRm5TVWd3Y0U4eGVIVkpRMEZuU1VOQlowbERRamxMVkhSalltbEJaMGxEUWpsSlIxWnpZekpWWjJVeGVIVkpRMEZuU1VOQlowbERRbmxhV0ZJeFkyMDBaMlJIYUhCamVuUmpZbWxCWjBsRFFqbFlSelU1VHpGNGRWaEhOVkpNYlRWMlVUSTVkVnB0ZUhCWk0xRm5VRk5DYldSWE5XcGtSMngyWW1sbmNFbElkR05pYVVGblNVTkNNR0ZJU25aa2VVSjFXbGhqWjFKWVNubGlNMGx2V0VOS1VreHROWFpSTWpsMVdtMTRjRmt6VVdkaU1qVnpaVk5DTTJJelNuSmplVUl6WVVkV2RVbEdSV2RoV0UxblpGaE9iRnBEUW1oamVVSm9TVWRrYzJJeVNtaGlSbmRwUzFSMFkySnVNRGRZUnpWalltazRka2xGUm5OaVEwSnFZakpTYkVsSFNteGFiVGw1V2xOQ01HRkhiSHBKU0VKMllWYzFNRWxJWkhCaVIzZG5XVzFWWjFwdGJITmtSMVo1V2xkUloxcHVTblppVTBKNlpFZEdhbUY1UWpCamJVWnFXbGhOZFZoSE5USlpXRWxuWTFWV2RWcEhiSFZhTUhod1ltMVZaMUJUUW1wWldFSXdaRmhLYkZSSGJIVmFVMmR3VHpGNGRWaEhOWGxhV0ZJeFkyMDBaMVZVZEdOaWJIaDFabE5yTjFoSE5HbFlXREE5SWl3aUx5b3FYRzRnS2lCU2IyOTBJSEpsWm1WeVpXNWpaU0JtYjNJZ2FXWnlZVzFsY3k1Y2JpQXFMMXh1WEc1MllYSWdjbTl2ZER0Y2JtbG1JQ2gwZVhCbGIyWWdkMmx1Wkc5M0lDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2V5QXZMeUJDY205M2MyVnlJSGRwYm1SdmQxeHVJQ0J5YjI5MElEMGdkMmx1Wkc5M08xeHVmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdjMlZzWmlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUhzZ0x5OGdWMlZpSUZkdmNtdGxjbHh1SUNCeWIyOTBJRDBnYzJWc1pqdGNibjBnWld4elpTQjdJQzh2SUU5MGFHVnlJR1Z1ZG1seWIyNXRaVzUwYzF4dUlDQmpiMjV6YjJ4bExuZGhjbTRvWENKVmMybHVaeUJpY205M2MyVnlMVzl1YkhrZ2RtVnljMmx2YmlCdlppQnpkWEJsY21GblpXNTBJR2x1SUc1dmJpMWljbTkzYzJWeUlHVnVkbWx5YjI1dFpXNTBYQ0lwTzF4dUlDQnliMjkwSUQwZ2RHaHBjenRjYm4xY2JseHVkbUZ5SUVWdGFYUjBaWElnUFNCeVpYRjFhWEpsS0NkbGJXbDBkR1Z5SnlrN1hHNTJZWElnY21WeGRXVnpkRUpoYzJVZ1BTQnlaWEYxYVhKbEtDY3VMM0psY1hWbGMzUXRZbUZ6WlNjcE8xeHVkbUZ5SUdselQySnFaV04wSUQwZ2NtVnhkV2x5WlNnbkxpOXBjeTF2WW1wbFkzUW5LVHRjYmx4dUx5b3FYRzRnS2lCT2IyOXdMbHh1SUNvdlhHNWNibVoxYm1OMGFXOXVJRzV2YjNBb0tYdDlPMXh1WEc0dktpcGNiaUFxSUVWNGNHOXpaU0JnY21WeGRXVnpkR0F1WEc0Z0tpOWNibHh1ZG1GeUlISmxjWFZsYzNRZ1BTQnRiMlIxYkdVdVpYaHdiM0owY3lBOUlISmxjWFZwY21Vb0p5NHZjbVZ4ZFdWemRDY3BMbUpwYm1Rb2JuVnNiQ3dnVW1WeGRXVnpkQ2s3WEc1Y2JpOHFLbHh1SUNvZ1JHVjBaWEp0YVc1bElGaElVaTVjYmlBcUwxeHVYRzV5WlhGMVpYTjBMbWRsZEZoSVVpQTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdhV1lnS0hKdmIzUXVXRTFNU0hSMGNGSmxjWFZsYzNSY2JpQWdJQ0FnSUNZbUlDZ2hjbTl2ZEM1c2IyTmhkR2x2YmlCOGZDQW5abWxzWlRvbklDRTlJSEp2YjNRdWJHOWpZWFJwYjI0dWNISnZkRzlqYjJ4Y2JpQWdJQ0FnSUNBZ0lDQjhmQ0FoY205dmRDNUJZM1JwZG1WWVQySnFaV04wS1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1dFMU1TSFIwY0ZKbGNYVmxjM1E3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnZEhKNUlIc2djbVYwZFhKdUlHNWxkeUJCWTNScGRtVllUMkpxWldOMEtDZE5hV055YjNOdlpuUXVXRTFNU0ZSVVVDY3BPeUI5SUdOaGRHTm9LR1VwSUh0OVhHNGdJQ0FnZEhKNUlIc2djbVYwZFhKdUlHNWxkeUJCWTNScGRtVllUMkpxWldOMEtDZE5jM2h0YkRJdVdFMU1TRlJVVUM0MkxqQW5LVHNnZlNCallYUmphQ2hsS1NCN2ZWeHVJQ0FnSUhSeWVTQjdJSEpsZEhWeWJpQnVaWGNnUVdOMGFYWmxXRTlpYW1WamRDZ25UWE40Yld3eUxsaE5URWhVVkZBdU15NHdKeWs3SUgwZ1kyRjBZMmdvWlNrZ2UzMWNiaUFnSUNCMGNua2dleUJ5WlhSMWNtNGdibVYzSUVGamRHbDJaVmhQWW1wbFkzUW9KMDF6ZUcxc01pNVlUVXhJVkZSUUp5azdJSDBnWTJGMFkyZ29aU2tnZTMxY2JpQWdmVnh1SUNCMGFISnZkeUJGY25KdmNpaGNJa0p5YjNkelpYSXRiMjVzZVNCMlpYSnBjMjl1SUc5bUlITjFjR1Z5WVdkbGJuUWdZMjkxYkdRZ2JtOTBJR1pwYm1RZ1dFaFNYQ0lwTzF4dWZUdGNibHh1THlvcVhHNGdLaUJTWlcxdmRtVnpJR3hsWVdScGJtY2dZVzVrSUhSeVlXbHNhVzVuSUhkb2FYUmxjM0JoWTJVc0lHRmtaR1ZrSUhSdklITjFjSEJ2Y25RZ1NVVXVYRzRnS2x4dUlDb2dRSEJoY21GdElIdFRkSEpwYm1kOUlITmNiaUFxSUVCeVpYUjFjbTRnZTFOMGNtbHVaMzFjYmlBcUlFQmhjR2tnY0hKcGRtRjBaVnh1SUNvdlhHNWNiblpoY2lCMGNtbHRJRDBnSnljdWRISnBiVnh1SUNBL0lHWjFibU4wYVc5dUtITXBJSHNnY21WMGRYSnVJSE11ZEhKcGJTZ3BPeUI5WEc0Z0lEb2dablZ1WTNScGIyNG9jeWtnZXlCeVpYUjFjbTRnY3k1eVpYQnNZV05sS0M4b1hseGNjeXA4WEZ4ektpUXBMMmNzSUNjbktUc2dmVHRjYmx4dUx5b3FYRzRnS2lCVFpYSnBZV3hwZW1VZ2RHaGxJR2RwZG1WdUlHQnZZbXBnTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2WW1wY2JpQXFJRUJ5WlhSMWNtNGdlMU4wY21sdVozMWNiaUFxSUVCaGNHa2djSEpwZG1GMFpWeHVJQ292WEc1Y2JtWjFibU4wYVc5dUlITmxjbWxoYkdsNlpTaHZZbW9wSUh0Y2JpQWdhV1lnS0NGcGMwOWlhbVZqZENodlltb3BLU0J5WlhSMWNtNGdiMkpxTzF4dUlDQjJZWElnY0dGcGNuTWdQU0JiWFR0Y2JpQWdabTl5SUNoMllYSWdhMlY1SUdsdUlHOWlhaWtnZTF4dUlDQWdJSEIxYzJoRmJtTnZaR1ZrUzJWNVZtRnNkV1ZRWVdseUtIQmhhWEp6TENCclpYa3NJRzlpYWx0clpYbGRLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjR0ZwY25NdWFtOXBiaWduSmljcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVobGJIQnpJQ2R6WlhKcFlXeHBlbVVuSUhkcGRHZ2djMlZ5YVdGc2FYcHBibWNnWVhKeVlYbHpMbHh1SUNvZ1RYVjBZWFJsY3lCMGFHVWdjR0ZwY25NZ1lYSnlZWGt1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRCY25KaGVYMGdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQnJaWGxjYmlBcUlFQndZWEpoYlNCN1RXbDRaV1I5SUhaaGJGeHVJQ292WEc1Y2JtWjFibU4wYVc5dUlIQjFjMmhGYm1OdlpHVmtTMlY1Vm1Gc2RXVlFZV2x5S0hCaGFYSnpMQ0JyWlhrc0lIWmhiQ2tnZTF4dUlDQnBaaUFvZG1Gc0lDRTlJRzUxYkd3cElIdGNiaUFnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoMllXd3BLU0I3WEc0Z0lDQWdJQ0IyWVd3dVptOXlSV0ZqYUNobWRXNWpkR2x2YmloMktTQjdYRzRnSUNBZ0lDQWdJSEIxYzJoRmJtTnZaR1ZrUzJWNVZtRnNkV1ZRWVdseUtIQmhhWEp6TENCclpYa3NJSFlwTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNocGMwOWlhbVZqZENoMllXd3BLU0I3WEc0Z0lDQWdJQ0JtYjNJb2RtRnlJSE4xWW10bGVTQnBiaUIyWVd3cElIdGNiaUFnSUNBZ0lDQWdjSFZ6YUVWdVkyOWtaV1JMWlhsV1lXeDFaVkJoYVhJb2NHRnBjbk1zSUd0bGVTQXJJQ2RiSnlBcklITjFZbXRsZVNBcklDZGRKeXdnZG1Gc1czTjFZbXRsZVYwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J3WVdseWN5NXdkWE5vS0dWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoclpYa3BYRzRnSUNBZ0lDQWdJQ3NnSnowbklDc2daVzVqYjJSbFZWSkpRMjl0Y0c5dVpXNTBLSFpoYkNrcE8xeHVJQ0FnSUgxY2JpQWdmU0JsYkhObElHbG1JQ2gyWVd3Z1BUMDlJRzUxYkd3cElIdGNiaUFnSUNCd1lXbHljeTV3ZFhOb0tHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaHJaWGtwS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFVjRjRzl6WlNCelpYSnBZV3hwZW1GMGFXOXVJRzFsZEdodlpDNWNiaUFxTDF4dVhHNGdjbVZ4ZFdWemRDNXpaWEpwWVd4cGVtVlBZbXBsWTNRZ1BTQnpaWEpwWVd4cGVtVTdYRzVjYmlBdktpcGNiaUFnS2lCUVlYSnpaU0IwYUdVZ1oybDJaVzRnZUMxM2QzY3RabTl5YlMxMWNteGxibU52WkdWa0lHQnpkSEpnTGx4dUlDQXFYRzRnSUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUhOMGNseHVJQ0FxSUVCeVpYUjFjbTRnZTA5aWFtVmpkSDFjYmlBZ0tpQkFZWEJwSUhCeWFYWmhkR1ZjYmlBZ0tpOWNibHh1Wm5WdVkzUnBiMjRnY0dGeWMyVlRkSEpwYm1jb2MzUnlLU0I3WEc0Z0lIWmhjaUJ2WW1vZ1BTQjdmVHRjYmlBZ2RtRnlJSEJoYVhKeklEMGdjM1J5TG5Od2JHbDBLQ2NtSnlrN1hHNGdJSFpoY2lCd1lXbHlPMXh1SUNCMllYSWdjRzl6TzF4dVhHNGdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnNaVzRnUFNCd1lXbHljeTVzWlc1bmRHZzdJR2tnUENCc1pXNDdJQ3NyYVNrZ2UxeHVJQ0FnSUhCaGFYSWdQU0J3WVdseWMxdHBYVHRjYmlBZ0lDQndiM01nUFNCd1lXbHlMbWx1WkdWNFQyWW9KejBuS1R0Y2JpQWdJQ0JwWmlBb2NHOXpJRDA5SUMweEtTQjdYRzRnSUNBZ0lDQnZZbXBiWkdWamIyUmxWVkpKUTI5dGNHOXVaVzUwS0hCaGFYSXBYU0E5SUNjbk8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J2WW1wYlpHVmpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtIQmhhWEl1YzJ4cFkyVW9NQ3dnY0c5ektTbGRJRDFjYmlBZ0lDQWdJQ0FnWkdWamIyUmxWVkpKUTI5dGNHOXVaVzUwS0hCaGFYSXVjMnhwWTJVb2NHOXpJQ3NnTVNrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdlltbzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1JYaHdiM05sSUhCaGNuTmxjaTVjYmlBcUwxeHVYRzV5WlhGMVpYTjBMbkJoY25ObFUzUnlhVzVuSUQwZ2NHRnljMlZUZEhKcGJtYzdYRzVjYmk4cUtseHVJQ29nUkdWbVlYVnNkQ0JOU1UxRklIUjVjR1VnYldGd0xseHVJQ3BjYmlBcUlDQWdJQ0J6ZFhCbGNtRm5aVzUwTG5SNWNHVnpMbmh0YkNBOUlDZGhjSEJzYVdOaGRHbHZiaTk0Yld3bk8xeHVJQ3BjYmlBcUwxeHVYRzV5WlhGMVpYTjBMblI1Y0dWeklEMGdlMXh1SUNCb2RHMXNPaUFuZEdWNGRDOW9kRzFzSnl4Y2JpQWdhbk52YmpvZ0oyRndjR3hwWTJGMGFXOXVMMnB6YjI0bkxGeHVJQ0I0Yld3NklDZGhjSEJzYVdOaGRHbHZiaTk0Yld3bkxGeHVJQ0IxY214bGJtTnZaR1ZrT2lBbllYQndiR2xqWVhScGIyNHZlQzEzZDNjdFptOXliUzExY214bGJtTnZaR1ZrSnl4Y2JpQWdKMlp2Y20wbk9pQW5ZWEJ3YkdsallYUnBiMjR2ZUMxM2QzY3RabTl5YlMxMWNteGxibU52WkdWa0p5eGNiaUFnSjJadmNtMHRaR0YwWVNjNklDZGhjSEJzYVdOaGRHbHZiaTk0TFhkM2R5MW1iM0p0TFhWeWJHVnVZMjlrWldRblhHNTlPMXh1WEc0dktpcGNiaUFxSUVSbFptRjFiSFFnYzJWeWFXRnNhWHBoZEdsdmJpQnRZWEF1WEc0Z0tseHVJQ29nSUNBZ0lITjFjR1Z5WVdkbGJuUXVjMlZ5YVdGc2FYcGxXeWRoY0hCc2FXTmhkR2x2Ymk5NGJXd25YU0E5SUdaMWJtTjBhVzl1S0c5aWFpbDdYRzRnS2lBZ0lDQWdJQ0J5WlhSMWNtNGdKMmRsYm1WeVlYUmxaQ0I0Yld3Z2FHVnlaU2M3WEc0Z0tpQWdJQ0FnZlR0Y2JpQXFYRzRnS2k5Y2JseHVJSEpsY1hWbGMzUXVjMlZ5YVdGc2FYcGxJRDBnZTF4dUlDQWdKMkZ3Y0d4cFkyRjBhVzl1TDNndGQzZDNMV1p2Y20wdGRYSnNaVzVqYjJSbFpDYzZJSE5sY21saGJHbDZaU3hjYmlBZ0lDZGhjSEJzYVdOaGRHbHZiaTlxYzI5dUp6b2dTbE5QVGk1emRISnBibWRwWm5sY2JpQjlPMXh1WEc0Z0x5b3FYRzRnSUNvZ1JHVm1ZWFZzZENCd1lYSnpaWEp6TGx4dUlDQXFYRzRnSUNvZ0lDQWdJSE4xY0dWeVlXZGxiblF1Y0dGeWMyVmJKMkZ3Y0d4cFkyRjBhVzl1TDNodGJDZGRJRDBnWm5WdVkzUnBiMjRvYzNSeUtYdGNiaUFnS2lBZ0lDQWdJQ0J5WlhSMWNtNGdleUJ2WW1wbFkzUWdjR0Z5YzJWa0lHWnliMjBnYzNSeUlIMDdYRzRnSUNvZ0lDQWdJSDA3WEc0Z0lDcGNiaUFnS2k5Y2JseHVjbVZ4ZFdWemRDNXdZWEp6WlNBOUlIdGNiaUFnSjJGd2NHeHBZMkYwYVc5dUwzZ3RkM2QzTFdadmNtMHRkWEpzWlc1amIyUmxaQ2M2SUhCaGNuTmxVM1J5YVc1bkxGeHVJQ0FuWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWM2SUVwVFQwNHVjR0Z5YzJWY2JuMDdYRzVjYmk4cUtseHVJQ29nVUdGeWMyVWdkR2hsSUdkcGRtVnVJR2hsWVdSbGNpQmdjM1J5WUNCcGJuUnZYRzRnS2lCaGJpQnZZbXBsWTNRZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYldGd2NHVmtJR1pwWld4a2N5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ2MzUnlYRzRnS2lCQWNtVjBkWEp1SUh0UFltcGxZM1I5WEc0Z0tpQkFZWEJwSUhCeWFYWmhkR1ZjYmlBcUwxeHVYRzVtZFc1amRHbHZiaUJ3WVhKelpVaGxZV1JsY2loemRISXBJSHRjYmlBZ2RtRnlJR3hwYm1WeklEMGdjM1J5TG5Od2JHbDBLQzljWEhJL1hGeHVMeWs3WEc0Z0lIWmhjaUJtYVdWc1pITWdQU0I3ZlR0Y2JpQWdkbUZ5SUdsdVpHVjRPMXh1SUNCMllYSWdiR2x1WlR0Y2JpQWdkbUZ5SUdacFpXeGtPMXh1SUNCMllYSWdkbUZzTzF4dVhHNGdJR3hwYm1WekxuQnZjQ2dwT3lBdkx5QjBjbUZwYkdsdVp5QkRVa3hHWEc1Y2JpQWdabTl5SUNoMllYSWdhU0E5SURBc0lHeGxiaUE5SUd4cGJtVnpMbXhsYm1kMGFEc2dhU0E4SUd4bGJqc2dLeXRwS1NCN1hHNGdJQ0FnYkdsdVpTQTlJR3hwYm1WelcybGRPMXh1SUNBZ0lHbHVaR1Y0SUQwZ2JHbHVaUzVwYm1SbGVFOW1LQ2M2SnlrN1hHNGdJQ0FnWm1sbGJHUWdQU0JzYVc1bExuTnNhV05sS0RBc0lHbHVaR1Y0S1M1MGIweHZkMlZ5UTJGelpTZ3BPMXh1SUNBZ0lIWmhiQ0E5SUhSeWFXMG9iR2x1WlM1emJHbGpaU2hwYm1SbGVDQXJJREVwS1R0Y2JpQWdJQ0JtYVdWc1pITmJabWxsYkdSZElEMGdkbUZzTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUdacFpXeGtjenRjYm4xY2JseHVMeW9xWEc0Z0tpQkRhR1ZqYXlCcFppQmdiV2x0WldBZ2FYTWdhbk52YmlCdmNpQm9ZWE1nSzJwemIyNGdjM1J5ZFdOMGRYSmxaQ0J6ZVc1MFlYZ2djM1ZtWm1sNExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1UzUnlhVzVuZlNCdGFXMWxYRzRnS2lCQWNtVjBkWEp1SUh0Q2IyOXNaV0Z1ZlZ4dUlDb2dRR0Z3YVNCd2NtbDJZWFJsWEc0Z0tpOWNibHh1Wm5WdVkzUnBiMjRnYVhOS1UwOU9LRzFwYldVcElIdGNiaUFnY21WMGRYSnVJQzliWEZ3dksxMXFjMjl1WEZ4aUx5NTBaWE4wS0cxcGJXVXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5YmlCMGFHVWdiV2x0WlNCMGVYQmxJR1p2Y2lCMGFHVWdaMmwyWlc0Z1lITjBjbUF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJSE4wY2x4dUlDb2dRSEpsZEhWeWJpQjdVM1J5YVc1bmZWeHVJQ29nUUdGd2FTQndjbWwyWVhSbFhHNGdLaTljYmx4dVpuVnVZM1JwYjI0Z2RIbHdaU2h6ZEhJcGUxeHVJQ0J5WlhSMWNtNGdjM1J5TG5Od2JHbDBLQzhnS2pzZ0tpOHBMbk5vYVdaMEtDazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5YmlCb1pXRmtaWElnWm1sbGJHUWdjR0Z5WVcxbGRHVnljeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdjM1J5WEc0Z0tpQkFjbVYwZFhKdUlIdFBZbXBsWTNSOVhHNGdLaUJBWVhCcElIQnlhWFpoZEdWY2JpQXFMMXh1WEc1bWRXNWpkR2x2YmlCd1lYSmhiWE1vYzNSeUtYdGNiaUFnY21WMGRYSnVJSE4wY2k1emNHeHBkQ2d2SUNvN0lDb3ZLUzV5WldSMVkyVW9ablZ1WTNScGIyNG9iMkpxTENCemRISXBlMXh1SUNBZ0lIWmhjaUJ3WVhKMGN5QTlJSE4wY2k1emNHeHBkQ2d2SUNvOUlDb3ZLU3hjYmlBZ0lDQWdJQ0FnYTJWNUlEMGdjR0Z5ZEhNdWMyaHBablFvS1N4Y2JpQWdJQ0FnSUNBZ2RtRnNJRDBnY0dGeWRITXVjMmhwWm5Rb0tUdGNibHh1SUNBZ0lHbG1JQ2hyWlhrZ0ppWWdkbUZzS1NCdlltcGJhMlY1WFNBOUlIWmhiRHRjYmlBZ0lDQnlaWFIxY200Z2IySnFPMXh1SUNCOUxDQjdmU2s3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRWx1YVhScFlXeHBlbVVnWVNCdVpYY2dZRkpsYzNCdmJuTmxZQ0IzYVhSb0lIUm9aU0JuYVhabGJpQmdlR2h5WUM1Y2JpQXFYRzRnS2lBZ0xTQnpaWFFnWm14aFozTWdLQzV2YXl3Z0xtVnljbTl5TENCbGRHTXBYRzRnS2lBZ0xTQndZWEp6WlNCb1pXRmtaWEpjYmlBcVhHNGdLaUJGZUdGdGNHeGxjenBjYmlBcVhHNGdLaUFnUVd4cFlYTnBibWNnWUhOMWNHVnlZV2RsYm5SZ0lHRnpJR0J5WlhGMVpYTjBZQ0JwY3lCdWFXTmxPbHh1SUNwY2JpQXFJQ0FnSUNBZ2NtVnhkV1Z6ZENBOUlITjFjR1Z5WVdkbGJuUTdYRzRnS2x4dUlDb2dJRmRsSUdOaGJpQjFjMlVnZEdobElIQnliMjFwYzJVdGJHbHJaU0JCVUVrc0lHOXlJSEJoYzNNZ1kyRnNiR0poWTJ0ek9seHVJQ3BjYmlBcUlDQWdJQ0FnY21WeGRXVnpkQzVuWlhRb0p5OG5LUzVsYm1Rb1puVnVZM1JwYjI0b2NtVnpLWHQ5S1R0Y2JpQXFJQ0FnSUNBZ2NtVnhkV1Z6ZEM1blpYUW9KeThuTENCbWRXNWpkR2x2YmloeVpYTXBlMzBwTzF4dUlDcGNiaUFxSUNCVFpXNWthVzVuSUdSaGRHRWdZMkZ1SUdKbElHTm9ZV2x1WldRNlhHNGdLbHh1SUNvZ0lDQWdJQ0J5WlhGMVpYTjBYRzRnS2lBZ0lDQWdJQ0FnTG5CdmMzUW9KeTkxYzJWeUp5bGNiaUFxSUNBZ0lDQWdJQ0F1YzJWdVpDaDdJRzVoYldVNklDZDBhaWNnZlNsY2JpQXFJQ0FnSUNBZ0lDQXVaVzVrS0daMWJtTjBhVzl1S0hKbGN5bDdmU2s3WEc0Z0tseHVJQ29nSUU5eUlIQmhjM05sWkNCMGJ5QmdMbk5sYm1Rb0tXQTZYRzRnS2x4dUlDb2dJQ0FnSUNCeVpYRjFaWE4wWEc0Z0tpQWdJQ0FnSUNBZ0xuQnZjM1FvSnk5MWMyVnlKeWxjYmlBcUlDQWdJQ0FnSUNBdWMyVnVaQ2g3SUc1aGJXVTZJQ2QwYWljZ2ZTd2dablZ1WTNScGIyNG9jbVZ6S1h0OUtUdGNiaUFxWEc0Z0tpQWdUM0lnY0dGemMyVmtJSFJ2SUdBdWNHOXpkQ2dwWURwY2JpQXFYRzRnS2lBZ0lDQWdJSEpsY1hWbGMzUmNiaUFxSUNBZ0lDQWdJQ0F1Y0c5emRDZ25MM1Z6WlhJbkxDQjdJRzVoYldVNklDZDBhaWNnZlNsY2JpQXFJQ0FnSUNBZ0lDQXVaVzVrS0daMWJtTjBhVzl1S0hKbGN5bDdmU2s3WEc0Z0tseHVJQ29nVDNJZ1puVnlkR2hsY2lCeVpXUjFZMlZrSUhSdklHRWdjMmx1WjJ4bElHTmhiR3dnWm05eUlITnBiWEJzWlNCallYTmxjenBjYmlBcVhHNGdLaUFnSUNBZ0lISmxjWFZsYzNSY2JpQXFJQ0FnSUNBZ0lDQXVjRzl6ZENnbkwzVnpaWEluTENCN0lHNWhiV1U2SUNkMGFpY2dmU3dnWm5WdVkzUnBiMjRvY21WektYdDlLVHRjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMWhOVEVoVVZGQlNaWEYxWlhOMGZTQjRhSEpjYmlBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdmNIUnBiMjV6WEc0Z0tpQkFZWEJwSUhCeWFYWmhkR1ZjYmlBcUwxeHVYRzVtZFc1amRHbHZiaUJTWlhOd2IyNXpaU2h5WlhFc0lHOXdkR2x2Ym5NcElIdGNiaUFnYjNCMGFXOXVjeUE5SUc5d2RHbHZibk1nZkh3Z2UzMDdYRzRnSUhSb2FYTXVjbVZ4SUQwZ2NtVnhPMXh1SUNCMGFHbHpMbmhvY2lBOUlIUm9hWE11Y21WeExuaG9janRjYmlBZ0x5OGdjbVZ6Y0c5dWMyVlVaWGgwSUdseklHRmpZMlZ6YzJsaWJHVWdiMjVzZVNCcFppQnlaWE53YjI1elpWUjVjR1VnYVhNZ0p5Y2diM0lnSjNSbGVIUW5JR0Z1WkNCdmJpQnZiR1JsY2lCaWNtOTNjMlZ5YzF4dUlDQjBhR2x6TG5SbGVIUWdQU0FvS0hSb2FYTXVjbVZ4TG0xbGRHaHZaQ0FoUFNkSVJVRkVKeUFtSmlBb2RHaHBjeTU0YUhJdWNtVnpjRzl1YzJWVWVYQmxJRDA5UFNBbkp5QjhmQ0IwYUdsekxuaG9jaTV5WlhOd2IyNXpaVlI1Y0dVZ1BUMDlJQ2QwWlhoMEp5a3BJSHg4SUhSNWNHVnZaaUIwYUdsekxuaG9jaTV5WlhOd2IyNXpaVlI1Y0dVZ1BUMDlJQ2QxYm1SbFptbHVaV1FuS1Z4dUlDQWdJQ0EvSUhSb2FYTXVlR2h5TG5KbGMzQnZibk5sVkdWNGRGeHVJQ0FnSUNBNklHNTFiR3c3WEc0Z0lIUm9hWE11YzNSaGRIVnpWR1Y0ZENBOUlIUm9hWE11Y21WeExuaG9jaTV6ZEdGMGRYTlVaWGgwTzF4dUlDQjBhR2x6TGw5elpYUlRkR0YwZFhOUWNtOXdaWEowYVdWektIUm9hWE11ZUdoeUxuTjBZWFIxY3lrN1hHNGdJSFJvYVhNdWFHVmhaR1Z5SUQwZ2RHaHBjeTVvWldGa1pYSnpJRDBnY0dGeWMyVklaV0ZrWlhJb2RHaHBjeTU0YUhJdVoyVjBRV3hzVW1WemNHOXVjMlZJWldGa1pYSnpLQ2twTzF4dUlDQXZMeUJuWlhSQmJHeFNaWE53YjI1elpVaGxZV1JsY25NZ2MyOXRaWFJwYldWeklHWmhiSE5sYkhrZ2NtVjBkWEp1Y3lCY0lsd2lJR1p2Y2lCRFQxSlRJSEpsY1hWbGMzUnpMQ0JpZFhSY2JpQWdMeThnWjJWMFVtVnpjRzl1YzJWSVpXRmtaWElnYzNScGJHd2dkMjl5YTNNdUlITnZJSGRsSUdkbGRDQmpiMjUwWlc1MExYUjVjR1VnWlhabGJpQnBaaUJuWlhSMGFXNW5YRzRnSUM4dklHOTBhR1Z5SUdobFlXUmxjbk1nWm1GcGJITXVYRzRnSUhSb2FYTXVhR1ZoWkdWeVd5ZGpiMjUwWlc1MExYUjVjR1VuWFNBOUlIUm9hWE11ZUdoeUxtZGxkRkpsYzNCdmJuTmxTR1ZoWkdWeUtDZGpiMjUwWlc1MExYUjVjR1VuS1R0Y2JpQWdkR2hwY3k1ZmMyVjBTR1ZoWkdWeVVISnZjR1Z5ZEdsbGN5aDBhR2x6TG1obFlXUmxjaWs3WEc0Z0lIUm9hWE11WW05a2VTQTlJSFJvYVhNdWNtVnhMbTFsZEdodlpDQWhQU0FuU0VWQlJDZGNiaUFnSUNBL0lIUm9hWE11WDNCaGNuTmxRbTlrZVNoMGFHbHpMblJsZUhRZ1B5QjBhR2x6TG5SbGVIUWdPaUIwYUdsekxuaG9jaTV5WlhOd2IyNXpaU2xjYmlBZ0lDQTZJRzUxYkd3N1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWMElHTmhjMlV0YVc1elpXNXphWFJwZG1VZ1lHWnBaV3hrWUNCMllXeDFaUzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdabWxsYkdSY2JpQXFJRUJ5WlhSMWNtNGdlMU4wY21sdVozMWNiaUFxSUVCaGNHa2djSFZpYkdsalhHNGdLaTljYmx4dVVtVnpjRzl1YzJVdWNISnZkRzkwZVhCbExtZGxkQ0E5SUdaMWJtTjBhVzl1S0dacFpXeGtLWHRjYmlBZ2NtVjBkWEp1SUhSb2FYTXVhR1ZoWkdWeVcyWnBaV3hrTG5SdlRHOTNaWEpEWVhObEtDbGRPMXh1ZlR0Y2JseHVMeW9xWEc0Z0tpQlRaWFFnYUdWaFpHVnlJSEpsYkdGMFpXUWdjSEp2Y0dWeWRHbGxjenBjYmlBcVhHNGdLaUFnSUMwZ1lDNTBlWEJsWUNCMGFHVWdZMjl1ZEdWdWRDQjBlWEJsSUhkcGRHaHZkWFFnY0dGeVlXMXpYRzRnS2x4dUlDb2dRU0J5WlhOd2IyNXpaU0J2WmlCY0lrTnZiblJsYm5RdFZIbHdaVG9nZEdWNGRDOXdiR0ZwYmpzZ1kyaGhjbk5sZEQxMWRHWXRPRndpWEc0Z0tpQjNhV3hzSUhCeWIzWnBaR1VnZVc5MUlIZHBkR2dnWVNCZ0xuUjVjR1ZnSUc5bUlGd2lkR1Y0ZEM5d2JHRnBibHdpTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0JvWldGa1pYSmNiaUFxSUVCaGNHa2djSEpwZG1GMFpWeHVJQ292WEc1Y2JsSmxjM0J2Ym5ObExuQnliM1J2ZEhsd1pTNWZjMlYwU0dWaFpHVnlVSEp2Y0dWeWRHbGxjeUE5SUdaMWJtTjBhVzl1S0dobFlXUmxjaWw3WEc0Z0lDOHZJR052Ym5SbGJuUXRkSGx3WlZ4dUlDQjJZWElnWTNRZ1BTQjBhR2x6TG1obFlXUmxjbHNuWTI5dWRHVnVkQzEwZVhCbEoxMGdmSHdnSnljN1hHNGdJSFJvYVhNdWRIbHdaU0E5SUhSNWNHVW9ZM1FwTzF4dVhHNGdJQzh2SUhCaGNtRnRjMXh1SUNCMllYSWdiMkpxSUQwZ2NHRnlZVzF6S0dOMEtUdGNiaUFnWm05eUlDaDJZWElnYTJWNUlHbHVJRzlpYWlrZ2RHaHBjMXRyWlhsZElEMGdiMkpxVzJ0bGVWMDdYRzU5TzF4dVhHNHZLaXBjYmlBcUlGQmhjbk5sSUhSb1pTQm5hWFpsYmlCaWIyUjVJR0J6ZEhKZ0xseHVJQ3BjYmlBcUlGVnpaV1FnWm05eUlHRjFkRzh0Y0dGeWMybHVaeUJ2WmlCaWIyUnBaWE11SUZCaGNuTmxjbk5jYmlBcUlHRnlaU0JrWldacGJtVmtJRzl1SUhSb1pTQmdjM1Z3WlhKaFoyVnVkQzV3WVhKelpXQWdiMkpxWldOMExseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1UzUnlhVzVuZlNCemRISmNiaUFxSUVCeVpYUjFjbTRnZTAxcGVHVmtmVnh1SUNvZ1FHRndhU0J3Y21sMllYUmxYRzRnS2k5Y2JseHVVbVZ6Y0c5dWMyVXVjSEp2ZEc5MGVYQmxMbDl3WVhKelpVSnZaSGtnUFNCbWRXNWpkR2x2YmloemRISXBlMXh1SUNCMllYSWdjR0Z5YzJVZ1BTQnlaWEYxWlhOMExuQmhjbk5sVzNSb2FYTXVkSGx3WlYwN1hHNGdJR2xtSUNnaGNHRnljMlVnSmlZZ2FYTktVMDlPS0hSb2FYTXVkSGx3WlNrcElIdGNiaUFnSUNCd1lYSnpaU0E5SUhKbGNYVmxjM1F1Y0dGeWMyVmJKMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5YVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjR0Z5YzJVZ0ppWWdjM1J5SUNZbUlDaHpkSEl1YkdWdVozUm9JSHg4SUhOMGNpQnBibk4wWVc1alpXOW1JRTlpYW1WamRDbGNiaUFnSUNBL0lIQmhjbk5sS0hOMGNpbGNiaUFnSUNBNklHNTFiR3c3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRk5sZENCbWJHRm5jeUJ6ZFdOb0lHRnpJR0F1YjJ0Z0lHSmhjMlZrSUc5dUlHQnpkR0YwZFhOZ0xseHVJQ3BjYmlBcUlFWnZjaUJsZUdGdGNHeGxJR0VnTW5oNElISmxjM0J2Ym5ObElIZHBiR3dnWjJsMlpTQjViM1VnWVNCZ0xtOXJZQ0J2WmlCZlgzUnlkV1ZmWDF4dUlDb2dkMmhsY21WaGN5QTFlSGdnZDJsc2JDQmlaU0JmWDJaaGJITmxYMThnWVc1a0lHQXVaWEp5YjNKZ0lIZHBiR3dnWW1VZ1gxOTBjblZsWDE4dUlGUm9aVnh1SUNvZ1lDNWpiR2xsYm5SRmNuSnZjbUFnWVc1a0lHQXVjMlZ5ZG1WeVJYSnliM0pnSUdGeVpTQmhiSE52SUdGMllXbHNZV0pzWlNCMGJ5QmlaU0J0YjNKbFhHNGdLaUJ6Y0dWamFXWnBZeXdnWVc1a0lHQXVjM1JoZEhWelZIbHdaV0FnYVhNZ2RHaGxJR05zWVhOeklHOW1JR1Z5Y205eUlISmhibWRwYm1jZ1puSnZiU0F4TGk0MVhHNGdLaUJ6YjIxbGRHbHRaWE1nZFhObFpuVnNJR1p2Y2lCdFlYQndhVzVuSUhKbGMzQnZibVFnWTI5c2IzSnpJR1YwWXk1Y2JpQXFYRzRnS2lCY0luTjFaMkZ5WENJZ2NISnZjR1Z5ZEdsbGN5QmhjbVVnWVd4emJ5QmtaV1pwYm1Wa0lHWnZjaUJqYjIxdGIyNGdZMkZ6WlhNdUlFTjFjbkpsYm5Sc2VTQndjbTkyYVdScGJtYzZYRzRnS2x4dUlDb2dJQ0F0SUM1dWIwTnZiblJsYm5SY2JpQXFJQ0FnTFNBdVltRmtVbVZ4ZFdWemRGeHVJQ29nSUNBdElDNTFibUYxZEdodmNtbDZaV1JjYmlBcUlDQWdMU0F1Ym05MFFXTmpaWEIwWVdKc1pWeHVJQ29nSUNBdElDNXViM1JHYjNWdVpGeHVJQ3BjYmlBcUlFQndZWEpoYlNCN1RuVnRZbVZ5ZlNCemRHRjBkWE5jYmlBcUlFQmhjR2tnY0hKcGRtRjBaVnh1SUNvdlhHNWNibEpsYzNCdmJuTmxMbkJ5YjNSdmRIbHdaUzVmYzJWMFUzUmhkSFZ6VUhKdmNHVnlkR2xsY3lBOUlHWjFibU4wYVc5dUtITjBZWFIxY3lsN1hHNGdJQzh2SUdoaGJtUnNaU0JKUlRrZ1luVm5PaUJvZEhSd09pOHZjM1JoWTJ0dmRtVnlabXh2ZHk1amIyMHZjWFZsYzNScGIyNXpMekV3TURRMk9UY3lMMjF6YVdVdGNtVjBkWEp1Y3kxemRHRjBkWE10WTI5a1pTMXZaaTB4TWpJekxXWnZjaTFoYW1GNExYSmxjWFZsYzNSY2JpQWdhV1lnS0hOMFlYUjFjeUE5UFQwZ01USXlNeWtnZTF4dUlDQWdJSE4wWVhSMWN5QTlJREl3TkR0Y2JpQWdmVnh1WEc0Z0lIWmhjaUIwZVhCbElEMGdjM1JoZEhWeklDOGdNVEF3SUh3Z01EdGNibHh1SUNBdkx5QnpkR0YwZFhNZ0x5QmpiR0Z6YzF4dUlDQjBhR2x6TG5OMFlYUjFjeUE5SUhSb2FYTXVjM1JoZEhWelEyOWtaU0E5SUhOMFlYUjFjenRjYmlBZ2RHaHBjeTV6ZEdGMGRYTlVlWEJsSUQwZ2RIbHdaVHRjYmx4dUlDQXZMeUJpWVhOcFkzTmNiaUFnZEdocGN5NXBibVp2SUQwZ01TQTlQU0IwZVhCbE8xeHVJQ0IwYUdsekxtOXJJRDBnTWlBOVBTQjBlWEJsTzF4dUlDQjBhR2x6TG1Oc2FXVnVkRVZ5Y205eUlEMGdOQ0E5UFNCMGVYQmxPMXh1SUNCMGFHbHpMbk5sY25abGNrVnljbTl5SUQwZ05TQTlQU0IwZVhCbE8xeHVJQ0IwYUdsekxtVnljbTl5SUQwZ0tEUWdQVDBnZEhsd1pTQjhmQ0ExSUQwOUlIUjVjR1VwWEc0Z0lDQWdQeUIwYUdsekxuUnZSWEp5YjNJb0tWeHVJQ0FnSURvZ1ptRnNjMlU3WEc1Y2JpQWdMeThnYzNWbllYSmNiaUFnZEdocGN5NWhZMk5sY0hSbFpDQTlJREl3TWlBOVBTQnpkR0YwZFhNN1hHNGdJSFJvYVhNdWJtOURiMjUwWlc1MElEMGdNakEwSUQwOUlITjBZWFIxY3p0Y2JpQWdkR2hwY3k1aVlXUlNaWEYxWlhOMElEMGdOREF3SUQwOUlITjBZWFIxY3p0Y2JpQWdkR2hwY3k1MWJtRjFkR2h2Y21sNlpXUWdQU0EwTURFZ1BUMGdjM1JoZEhWek8xeHVJQ0IwYUdsekxtNXZkRUZqWTJWd2RHRmliR1VnUFNBME1EWWdQVDBnYzNSaGRIVnpPMXh1SUNCMGFHbHpMbTV2ZEVadmRXNWtJRDBnTkRBMElEMDlJSE4wWVhSMWN6dGNiaUFnZEdocGN5NW1iM0ppYVdSa1pXNGdQU0EwTURNZ1BUMGdjM1JoZEhWek8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTRnWVc0Z1lFVnljbTl5WUNCeVpYQnlaWE5sYm5SaGRHbDJaU0J2WmlCMGFHbHpJSEpsYzNCdmJuTmxMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNGdlMFZ5Y205eWZWeHVJQ29nUUdGd2FTQndkV0pzYVdOY2JpQXFMMXh1WEc1U1pYTndiMjV6WlM1d2NtOTBiM1I1Y0dVdWRHOUZjbkp2Y2lBOUlHWjFibU4wYVc5dUtDbDdYRzRnSUhaaGNpQnlaWEVnUFNCMGFHbHpMbkpsY1R0Y2JpQWdkbUZ5SUcxbGRHaHZaQ0E5SUhKbGNTNXRaWFJvYjJRN1hHNGdJSFpoY2lCMWNtd2dQU0J5WlhFdWRYSnNPMXh1WEc0Z0lIWmhjaUJ0YzJjZ1BTQW5ZMkZ1Ym05MElDY2dLeUJ0WlhSb2IyUWdLeUFuSUNjZ0t5QjFjbXdnS3lBbklDZ25JQ3NnZEdocGN5NXpkR0YwZFhNZ0t5QW5LU2M3WEc0Z0lIWmhjaUJsY25JZ1BTQnVaWGNnUlhKeWIzSW9iWE5uS1R0Y2JpQWdaWEp5TG5OMFlYUjFjeUE5SUhSb2FYTXVjM1JoZEhWek8xeHVJQ0JsY25JdWJXVjBhRzlrSUQwZ2JXVjBhRzlrTzF4dUlDQmxjbkl1ZFhKc0lEMGdkWEpzTzF4dVhHNGdJSEpsZEhWeWJpQmxjbkk3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRVY0Y0c5elpTQmdVbVZ6Y0c5dWMyVmdMbHh1SUNvdlhHNWNibkpsY1hWbGMzUXVVbVZ6Y0c5dWMyVWdQU0JTWlhOd2IyNXpaVHRjYmx4dUx5b3FYRzRnS2lCSmJtbDBhV0ZzYVhwbElHRWdibVYzSUdCU1pYRjFaWE4wWUNCM2FYUm9JSFJvWlNCbmFYWmxiaUJnYldWMGFHOWtZQ0JoYm1RZ1lIVnliR0F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJRzFsZEdodlpGeHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJSFZ5YkZ4dUlDb2dRR0Z3YVNCd2RXSnNhV05jYmlBcUwxeHVYRzVtZFc1amRHbHZiaUJTWlhGMVpYTjBLRzFsZEdodlpDd2dkWEpzS1NCN1hHNGdJSFpoY2lCelpXeG1JRDBnZEdocGN6dGNiaUFnZEdocGN5NWZjWFZsY25rZ1BTQjBhR2x6TGw5eGRXVnllU0I4ZkNCYlhUdGNiaUFnZEdocGN5NXRaWFJvYjJRZ1BTQnRaWFJvYjJRN1hHNGdJSFJvYVhNdWRYSnNJRDBnZFhKc08xeHVJQ0IwYUdsekxtaGxZV1JsY2lBOUlIdDlPeUF2THlCd2NtVnpaWEoyWlhNZ2FHVmhaR1Z5SUc1aGJXVWdZMkZ6WlZ4dUlDQjBhR2x6TGw5b1pXRmtaWElnUFNCN2ZUc2dMeThnWTI5bGNtTmxjeUJvWldGa1pYSWdibUZ0WlhNZ2RHOGdiRzkzWlhKallYTmxYRzRnSUhSb2FYTXViMjRvSjJWdVpDY3NJR1oxYm1OMGFXOXVLQ2w3WEc0Z0lDQWdkbUZ5SUdWeWNpQTlJRzUxYkd3N1hHNGdJQ0FnZG1GeUlISmxjeUE5SUc1MWJHdzdYRzVjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnY21WeklEMGdibVYzSUZKbGMzQnZibk5sS0hObGJHWXBPMXh1SUNBZ0lIMGdZMkYwWTJnb1pTa2dlMXh1SUNBZ0lDQWdaWEp5SUQwZ2JtVjNJRVZ5Y205eUtDZFFZWEp6WlhJZ2FYTWdkVzVoWW14bElIUnZJSEJoY25ObElIUm9aU0J5WlhOd2IyNXpaU2NwTzF4dUlDQWdJQ0FnWlhKeUxuQmhjbk5sSUQwZ2RISjFaVHRjYmlBZ0lDQWdJR1Z5Y2k1dmNtbG5hVzVoYkNBOUlHVTdYRzRnSUNBZ0lDQXZMeUJwYzNOMVpTQWpOamMxT2lCeVpYUjFjbTRnZEdobElISmhkeUJ5WlhOd2IyNXpaU0JwWmlCMGFHVWdjbVZ6Y0c5dWMyVWdjR0Z5YzJsdVp5Qm1ZV2xzYzF4dUlDQWdJQ0FnWlhKeUxuSmhkMUpsYzNCdmJuTmxJRDBnYzJWc1ppNTRhSElnSmlZZ2MyVnNaaTU0YUhJdWNtVnpjRzl1YzJWVVpYaDBJRDhnYzJWc1ppNTRhSEl1Y21WemNHOXVjMlZVWlhoMElEb2diblZzYkR0Y2JpQWdJQ0FnSUM4dklHbHpjM1ZsSUNNNE56WTZJSEpsZEhWeWJpQjBhR1VnYUhSMGNDQnpkR0YwZFhNZ1kyOWtaU0JwWmlCMGFHVWdjbVZ6Y0c5dWMyVWdjR0Z5YzJsdVp5Qm1ZV2xzYzF4dUlDQWdJQ0FnWlhKeUxuTjBZWFIxYzBOdlpHVWdQU0J6Wld4bUxuaG9jaUFtSmlCelpXeG1MbmhvY2k1emRHRjBkWE1nUHlCelpXeG1MbmhvY2k1emRHRjBkWE1nT2lCdWRXeHNPMXh1SUNBZ0lDQWdjbVYwZFhKdUlITmxiR1l1WTJGc2JHSmhZMnNvWlhKeUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCelpXeG1MbVZ0YVhRb0ozSmxjM0J2Ym5ObEp5d2djbVZ6S1R0Y2JseHVJQ0FnSUhaaGNpQnVaWGRmWlhKeU8xeHVJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQnBaaUFvY21WekxuTjBZWFIxY3lBOElESXdNQ0I4ZkNCeVpYTXVjM1JoZEhWeklENDlJRE13TUNrZ2UxeHVJQ0FnSUNBZ0lDQnVaWGRmWlhKeUlEMGdibVYzSUVWeWNtOXlLSEpsY3k1emRHRjBkWE5VWlhoMElIeDhJQ2RWYm5OMVkyTmxjM05tZFd3Z1NGUlVVQ0J5WlhOd2IyNXpaU2NwTzF4dUlDQWdJQ0FnSUNCdVpYZGZaWEp5TG05eWFXZHBibUZzSUQwZ1pYSnlPMXh1SUNBZ0lDQWdJQ0J1WlhkZlpYSnlMbkpsYzNCdmJuTmxJRDBnY21Wek8xeHVJQ0FnSUNBZ0lDQnVaWGRmWlhKeUxuTjBZWFIxY3lBOUlISmxjeTV6ZEdGMGRYTTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmpZWFJqYUNobEtTQjdYRzRnSUNBZ0lDQnVaWGRmWlhKeUlEMGdaVHNnTHk4Z0l6azROU0IwYjNWamFHbHVaeUJ5WlhNZ2JXRjVJR05oZFhObElFbE9Wa0ZNU1VSZlUxUkJWRVZmUlZKU0lHOXVJRzlzWkNCQmJtUnliMmxrWEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnSXpFd01EQWdaRzl1SjNRZ1kyRjBZMmdnWlhKeWIzSnpJR1p5YjIwZ2RHaGxJR05oYkd4aVlXTnJJSFJ2SUdGMmIybGtJR1J2ZFdKc1pTQmpZV3hzYVc1bklHbDBYRzRnSUNBZ2FXWWdLRzVsZDE5bGNuSXBJSHRjYmlBZ0lDQWdJSE5sYkdZdVkyRnNiR0poWTJzb2JtVjNYMlZ5Y2l3Z2NtVnpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MyVnNaaTVqWVd4c1ltRmpheWh1ZFd4c0xDQnlaWE1wTzF4dUlDQWdJSDFjYmlBZ2ZTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1RXbDRhVzRnWUVWdGFYUjBaWEpnSUdGdVpDQmdjbVZ4ZFdWemRFSmhjMlZnTGx4dUlDb3ZYRzVjYmtWdGFYUjBaWElvVW1WeGRXVnpkQzV3Y205MGIzUjVjR1VwTzF4dVptOXlJQ2gyWVhJZ2EyVjVJR2x1SUhKbGNYVmxjM1JDWVhObEtTQjdYRzRnSUZKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsVzJ0bGVWMGdQU0J5WlhGMVpYTjBRbUZ6WlZ0clpYbGRPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTmxkQ0JEYjI1MFpXNTBMVlI1Y0dVZ2RHOGdZSFI1Y0dWZ0xDQnRZWEJ3YVc1bklIWmhiSFZsY3lCbWNtOXRJR0J5WlhGMVpYTjBMblI1Y0dWellDNWNiaUFxWEc0Z0tpQkZlR0Z0Y0d4bGN6cGNiaUFxWEc0Z0tpQWdJQ0FnSUhOMWNHVnlZV2RsYm5RdWRIbHdaWE11ZUcxc0lEMGdKMkZ3Y0d4cFkyRjBhVzl1TDNodGJDYzdYRzRnS2x4dUlDb2dJQ0FnSUNCeVpYRjFaWE4wTG5CdmMzUW9KeThuS1Z4dUlDb2dJQ0FnSUNBZ0lDNTBlWEJsS0NkNGJXd25LVnh1SUNvZ0lDQWdJQ0FnSUM1elpXNWtLSGh0YkhOMGNtbHVaeWxjYmlBcUlDQWdJQ0FnSUNBdVpXNWtLR05oYkd4aVlXTnJLVHRjYmlBcVhHNGdLaUFnSUNBZ0lISmxjWFZsYzNRdWNHOXpkQ2duTHljcFhHNGdLaUFnSUNBZ0lDQWdMblI1Y0dVb0oyRndjR3hwWTJGMGFXOXVMM2h0YkNjcFhHNGdLaUFnSUNBZ0lDQWdMbk5sYm1Rb2VHMXNjM1J5YVc1bktWeHVJQ29nSUNBZ0lDQWdJQzVsYm1Rb1kyRnNiR0poWTJzcE8xeHVJQ3BjYmlBcUlFQndZWEpoYlNCN1UzUnlhVzVuZlNCMGVYQmxYRzRnS2lCQWNtVjBkWEp1SUh0U1pYRjFaWE4wZlNCbWIzSWdZMmhoYVc1cGJtZGNiaUFxSUVCaGNHa2djSFZpYkdsalhHNGdLaTljYmx4dVVtVnhkV1Z6ZEM1d2NtOTBiM1I1Y0dVdWRIbHdaU0E5SUdaMWJtTjBhVzl1S0hSNWNHVXBlMXh1SUNCMGFHbHpMbk5sZENnblEyOXVkR1Z1ZEMxVWVYQmxKeXdnY21WeGRXVnpkQzUwZVhCbGMxdDBlWEJsWFNCOGZDQjBlWEJsS1R0Y2JpQWdjbVYwZFhKdUlIUm9hWE03WEc1OU8xeHVYRzR2S2lwY2JpQXFJRk5sZENCeVpYTndiMjV6WlZSNWNHVWdkRzhnWUhaaGJHQXVJRkJ5WlhObGJuUnNlU0IyWVd4cFpDQnlaWE53YjI1elpWUjVjR1Z6SUdGeVpTQW5ZbXh2WWljZ1lXNWtYRzRnS2lBbllYSnlZWGxpZFdabVpYSW5MbHh1SUNwY2JpQXFJRVY0WVcxd2JHVnpPbHh1SUNwY2JpQXFJQ0FnSUNBZ2NtVnhMbWRsZENnbkx5Y3BYRzRnS2lBZ0lDQWdJQ0FnTG5KbGMzQnZibk5sVkhsd1pTZ25ZbXh2WWljcFhHNGdLaUFnSUNBZ0lDQWdMbVZ1WkNoallXeHNZbUZqYXlrN1hHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUhaaGJGeHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDBnWm05eUlHTm9ZV2x1YVc1blhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYmxKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsTG5KbGMzQnZibk5sVkhsd1pTQTlJR1oxYm1OMGFXOXVLSFpoYkNsN1hHNGdJSFJvYVhNdVgzSmxjM0J2Ym5ObFZIbHdaU0E5SUhaaGJEdGNiaUFnY21WMGRYSnVJSFJvYVhNN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZObGRDQkJZMk5sY0hRZ2RHOGdZSFI1Y0dWZ0xDQnRZWEJ3YVc1bklIWmhiSFZsY3lCbWNtOXRJR0J5WlhGMVpYTjBMblI1Y0dWellDNWNiaUFxWEc0Z0tpQkZlR0Z0Y0d4bGN6cGNiaUFxWEc0Z0tpQWdJQ0FnSUhOMWNHVnlZV2RsYm5RdWRIbHdaWE11YW5OdmJpQTlJQ2RoY0hCc2FXTmhkR2x2Ymk5cWMyOXVKenRjYmlBcVhHNGdLaUFnSUNBZ0lISmxjWFZsYzNRdVoyVjBLQ2N2WVdkbGJuUW5LVnh1SUNvZ0lDQWdJQ0FnSUM1aFkyTmxjSFFvSjJwemIyNG5LVnh1SUNvZ0lDQWdJQ0FnSUM1bGJtUW9ZMkZzYkdKaFkyc3BPMXh1SUNwY2JpQXFJQ0FnSUNBZ2NtVnhkV1Z6ZEM1blpYUW9KeTloWjJWdWRDY3BYRzRnS2lBZ0lDQWdJQ0FnTG1GalkyVndkQ2duWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWNwWEc0Z0tpQWdJQ0FnSUNBZ0xtVnVaQ2hqWVd4c1ltRmpheWs3WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJR0ZqWTJWd2RGeHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDBnWm05eUlHTm9ZV2x1YVc1blhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYmxKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsTG1GalkyVndkQ0E5SUdaMWJtTjBhVzl1S0hSNWNHVXBlMXh1SUNCMGFHbHpMbk5sZENnblFXTmpaWEIwSnl3Z2NtVnhkV1Z6ZEM1MGVYQmxjMXQwZVhCbFhTQjhmQ0IwZVhCbEtUdGNiaUFnY21WMGRYSnVJSFJvYVhNN1hHNTlPMXh1WEc0dktpcGNiaUFxSUZObGRDQkJkWFJvYjNKcGVtRjBhVzl1SUdacFpXeGtJSFpoYkhWbElIZHBkR2dnWUhWelpYSmdJR0Z1WkNCZ2NHRnpjMkF1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJSFZ6WlhKY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQndZWE56WEc0Z0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzQjBhVzl1Y3lCM2FYUm9JQ2QwZVhCbEp5QndjbTl3WlhKMGVTQW5ZWFYwYnljZ2IzSWdKMkpoYzJsakp5QW9aR1ZtWVhWc2RDQW5ZbUZ6YVdNbktWeHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDBnWm05eUlHTm9ZV2x1YVc1blhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYmxKbGNYVmxjM1F1Y0hKdmRHOTBlWEJsTG1GMWRHZ2dQU0JtZFc1amRHbHZiaWgxYzJWeUxDQndZWE56TENCdmNIUnBiMjV6S1h0Y2JpQWdhV1lnS0NGdmNIUnBiMjV6S1NCN1hHNGdJQ0FnYjNCMGFXOXVjeUE5SUh0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2RpWVhOcFl5ZGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnpkMmwwWTJnZ0tHOXdkR2x2Ym5NdWRIbHdaU2tnZTF4dUlDQWdJR05oYzJVZ0oySmhjMmxqSnpwY2JpQWdJQ0FnSUhaaGNpQnpkSElnUFNCaWRHOWhLSFZ6WlhJZ0t5QW5PaWNnS3lCd1lYTnpLVHRjYmlBZ0lDQWdJSFJvYVhNdWMyVjBLQ2RCZFhSb2IzSnBlbUYwYVc5dUp5d2dKMEpoYzJsaklDY2dLeUJ6ZEhJcE8xeHVJQ0FnSUdKeVpXRnJPMXh1WEc0Z0lDQWdZMkZ6WlNBbllYVjBieWM2WEc0Z0lDQWdJQ0IwYUdsekxuVnpaWEp1WVcxbElEMGdkWE5sY2p0Y2JpQWdJQ0FnSUhSb2FYTXVjR0Z6YzNkdmNtUWdQU0J3WVhOek8xeHVJQ0FnSUdKeVpXRnJPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjBhR2x6TzF4dWZUdGNibHh1THlvcVhHNHFJRUZrWkNCeGRXVnllUzF6ZEhKcGJtY2dZSFpoYkdBdVhHNHFYRzRxSUVWNFlXMXdiR1Z6T2x4dUtseHVLaUFnSUhKbGNYVmxjM1F1WjJWMEtDY3ZjMmh2WlhNbktWeHVLaUFnSUNBZ0xuRjFaWEo1S0NkemFYcGxQVEV3SnlsY2Jpb2dJQ0FnSUM1eGRXVnllU2g3SUdOdmJHOXlPaUFuWW14MVpTY2dmU2xjYmlwY2Jpb2dRSEJoY21GdElIdFBZbXBsWTNSOFUzUnlhVzVuZlNCMllXeGNiaW9nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDBnWm05eUlHTm9ZV2x1YVc1blhHNHFJRUJoY0drZ2NIVmliR2xqWEc0cUwxeHVYRzVTWlhGMVpYTjBMbkJ5YjNSdmRIbHdaUzV4ZFdWeWVTQTlJR1oxYm1OMGFXOXVLSFpoYkNsN1hHNGdJR2xtSUNnbmMzUnlhVzVuSnlBaFBTQjBlWEJsYjJZZ2RtRnNLU0IyWVd3Z1BTQnpaWEpwWVd4cGVtVW9kbUZzS1R0Y2JpQWdhV1lnS0haaGJDa2dkR2hwY3k1ZmNYVmxjbmt1Y0hWemFDaDJZV3dwTzF4dUlDQnlaWFIxY200Z2RHaHBjenRjYm4wN1hHNWNiaThxS2x4dUlDb2dVWFZsZFdVZ2RHaGxJR2RwZG1WdUlHQm1hV3hsWUNCaGN5QmhiaUJoZEhSaFkyaHRaVzUwSUhSdklIUm9aU0J6Y0dWamFXWnBaV1FnWUdacFpXeGtZQ3hjYmlBcUlIZHBkR2dnYjNCMGFXOXVZV3dnWUdacGJHVnVZVzFsWUM1Y2JpQXFYRzRnS2lCZ1lHQWdhbk5jYmlBcUlISmxjWFZsYzNRdWNHOXpkQ2duTDNWd2JHOWhaQ2NwWEc0Z0tpQWdJQzVoZEhSaFkyZ29KMk52Ym5SbGJuUW5MQ0J1WlhjZ1FteHZZaWhiSnp4aElHbGtQVndpWVZ3aVBqeGlJR2xrUFZ3aVlsd2lQbWhsZVNFOEwySStQQzloUGlkZExDQjdJSFI1Y0dVNklGd2lkR1Y0ZEM5b2RHMXNYQ0o5S1NsY2JpQXFJQ0FnTG1WdVpDaGpZV3hzWW1GamF5azdYRzRnS2lCZ1lHQmNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ1ptbGxiR1JjYmlBcUlFQndZWEpoYlNCN1FteHZZbnhHYVd4bGZTQm1hV3hsWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ1ptbHNaVzVoYldWY2JpQXFJRUJ5WlhSMWNtNGdlMUpsY1hWbGMzUjlJR1p2Y2lCamFHRnBibWx1WjF4dUlDb2dRR0Z3YVNCd2RXSnNhV05jYmlBcUwxeHVYRzVTWlhGMVpYTjBMbkJ5YjNSdmRIbHdaUzVoZEhSaFkyZ2dQU0JtZFc1amRHbHZiaWhtYVdWc1pDd2dabWxzWlN3Z1ptbHNaVzVoYldVcGUxeHVJQ0IwYUdsekxsOW5aWFJHYjNKdFJHRjBZU2dwTG1Gd2NHVnVaQ2htYVdWc1pDd2dabWxzWlN3Z1ptbHNaVzVoYldVZ2ZId2dabWxzWlM1dVlXMWxLVHRjYmlBZ2NtVjBkWEp1SUhSb2FYTTdYRzU5TzF4dVhHNVNaWEYxWlhOMExuQnliM1J2ZEhsd1pTNWZaMlYwUm05eWJVUmhkR0VnUFNCbWRXNWpkR2x2YmlncGUxeHVJQ0JwWmlBb0lYUm9hWE11WDJadmNtMUVZWFJoS1NCN1hHNGdJQ0FnZEdocGN5NWZabTl5YlVSaGRHRWdQU0J1WlhjZ2NtOXZkQzVHYjNKdFJHRjBZU2dwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUIwYUdsekxsOW1iM0p0UkdGMFlUdGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1NXNTJiMnRsSUhSb1pTQmpZV3hzWW1GamF5QjNhWFJvSUdCbGNuSmdJR0Z1WkNCZ2NtVnpZRnh1SUNvZ1lXNWtJR2hoYm1Sc1pTQmhjbWwwZVNCamFHVmpheTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMFZ5Y205eWZTQmxjbkpjYmlBcUlFQndZWEpoYlNCN1VtVnpjRzl1YzJWOUlISmxjMXh1SUNvZ1FHRndhU0J3Y21sMllYUmxYRzRnS2k5Y2JseHVVbVZ4ZFdWemRDNXdjbTkwYjNSNWNHVXVZMkZzYkdKaFkyc2dQU0JtZFc1amRHbHZiaWhsY25Jc0lISmxjeWw3WEc0Z0lIWmhjaUJtYmlBOUlIUm9hWE11WDJOaGJHeGlZV05yTzF4dUlDQjBhR2x6TG1Oc1pXRnlWR2x0Wlc5MWRDZ3BPMXh1SUNCbWJpaGxjbklzSUhKbGN5azdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFbHVkbTlyWlNCallXeHNZbUZqYXlCM2FYUm9JSGd0Wkc5dFlXbHVJR1Z5Y205eUxseHVJQ3BjYmlBcUlFQmhjR2tnY0hKcGRtRjBaVnh1SUNvdlhHNWNibEpsY1hWbGMzUXVjSEp2ZEc5MGVYQmxMbU55YjNOelJHOXRZV2x1UlhKeWIzSWdQU0JtZFc1amRHbHZiaWdwZTF4dUlDQjJZWElnWlhKeUlEMGdibVYzSUVWeWNtOXlLQ2RTWlhGMVpYTjBJR2hoY3lCaVpXVnVJSFJsY20xcGJtRjBaV1JjWEc1UWIzTnphV0pzWlNCallYVnpaWE02SUhSb1pTQnVaWFIzYjNKcklHbHpJRzltWm14cGJtVXNJRTl5YVdkcGJpQnBjeUJ1YjNRZ1lXeHNiM2RsWkNCaWVTQkJZMk5sYzNNdFEyOXVkSEp2YkMxQmJHeHZkeTFQY21sbmFXNHNJSFJvWlNCd1lXZGxJR2x6SUdKbGFXNW5JSFZ1Ykc5aFpHVmtMQ0JsZEdNdUp5azdYRzRnSUdWeWNpNWpjbTl6YzBSdmJXRnBiaUE5SUhSeWRXVTdYRzVjYmlBZ1pYSnlMbk4wWVhSMWN5QTlJSFJvYVhNdWMzUmhkSFZ6TzF4dUlDQmxjbkl1YldWMGFHOWtJRDBnZEdocGN5NXRaWFJvYjJRN1hHNGdJR1Z5Y2k1MWNtd2dQU0IwYUdsekxuVnliRHRjYmx4dUlDQjBhR2x6TG1OaGJHeGlZV05yS0dWeWNpazdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFbHVkbTlyWlNCallXeHNZbUZqYXlCM2FYUm9JSFJwYldWdmRYUWdaWEp5YjNJdVhHNGdLbHh1SUNvZ1FHRndhU0J3Y21sMllYUmxYRzRnS2k5Y2JseHVVbVZ4ZFdWemRDNXdjbTkwYjNSNWNHVXVYM1JwYldWdmRYUkZjbkp2Y2lBOUlHWjFibU4wYVc5dUtDbDdYRzRnSUhaaGNpQjBhVzFsYjNWMElEMGdkR2hwY3k1ZmRHbHRaVzkxZER0Y2JpQWdkbUZ5SUdWeWNpQTlJRzVsZHlCRmNuSnZjaWduZEdsdFpXOTFkQ0J2WmlBbklDc2dkR2x0Wlc5MWRDQXJJQ2R0Y3lCbGVHTmxaV1JsWkNjcE8xeHVJQ0JsY25JdWRHbHRaVzkxZENBOUlIUnBiV1Z2ZFhRN1hHNGdJSFJvYVhNdVkyRnNiR0poWTJzb1pYSnlLVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRMjl0Y0c5elpTQnhkV1Z5ZVhOMGNtbHVaeUIwYnlCaGNIQmxibVFnZEc4Z2NtVnhMblZ5YkZ4dUlDcGNiaUFxSUVCaGNHa2djSEpwZG1GMFpWeHVJQ292WEc1Y2JsSmxjWFZsYzNRdWNISnZkRzkwZVhCbExsOWhjSEJsYm1SUmRXVnllVk4wY21sdVp5QTlJR1oxYm1OMGFXOXVLQ2w3WEc0Z0lIWmhjaUJ4ZFdWeWVTQTlJSFJvYVhNdVgzRjFaWEo1TG1wdmFXNG9KeVluS1R0Y2JpQWdhV1lnS0hGMVpYSjVLU0I3WEc0Z0lDQWdkR2hwY3k1MWNtd2dLejBnZm5Sb2FYTXVkWEpzTG1sdVpHVjRUMllvSno4bktWeHVJQ0FnSUNBZ1B5QW5KaWNnS3lCeGRXVnllVnh1SUNBZ0lDQWdPaUFuUHljZ0t5QnhkV1Z5ZVR0Y2JpQWdmVnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkpibWwwYVdGMFpTQnlaWEYxWlhOMExDQnBiblp2YTJsdVp5QmpZV3hzWW1GamF5QmdabTRvY21WektXQmNiaUFxSUhkcGRHZ2dZVzRnYVc1emRHRnVZMlZ2WmlCZ1VtVnpjRzl1YzJWZ0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWnVYRzRnS2lCQWNtVjBkWEp1SUh0U1pYRjFaWE4wZlNCbWIzSWdZMmhoYVc1cGJtZGNiaUFxSUVCaGNHa2djSFZpYkdsalhHNGdLaTljYmx4dVVtVnhkV1Z6ZEM1d2NtOTBiM1I1Y0dVdVpXNWtJRDBnWm5WdVkzUnBiMjRvWm00cGUxeHVJQ0IyWVhJZ2MyVnNaaUE5SUhSb2FYTTdYRzRnSUhaaGNpQjRhSElnUFNCMGFHbHpMbmhvY2lBOUlISmxjWFZsYzNRdVoyVjBXRWhTS0NrN1hHNGdJSFpoY2lCMGFXMWxiM1YwSUQwZ2RHaHBjeTVmZEdsdFpXOTFkRHRjYmlBZ2RtRnlJR1JoZEdFZ1BTQjBhR2x6TGw5bWIzSnRSR0YwWVNCOGZDQjBhR2x6TGw5a1lYUmhPMXh1WEc0Z0lDOHZJSE4wYjNKbElHTmhiR3hpWVdOclhHNGdJSFJvYVhNdVgyTmhiR3hpWVdOcklEMGdabTRnZkh3Z2JtOXZjRHRjYmx4dUlDQXZMeUJ6ZEdGMFpTQmphR0Z1WjJWY2JpQWdlR2h5TG05dWNtVmhaSGx6ZEdGMFpXTm9ZVzVuWlNBOUlHWjFibU4wYVc5dUtDbDdYRzRnSUNBZ2FXWWdLRFFnSVQwZ2VHaHlMbkpsWVdSNVUzUmhkR1VwSUhKbGRIVnlianRjYmx4dUlDQWdJQzh2SUVsdUlFbEZPU3dnY21WaFpITWdkRzhnWVc1NUlIQnliM0JsY25SNUlDaGxMbWN1SUhOMFlYUjFjeWtnYjJabUlHOW1JR0Z1SUdGaWIzSjBaV1FnV0VoU0lIZHBiR3hjYmlBZ0lDQXZMeUJ5WlhOMWJIUWdhVzRnZEdobElHVnljbTl5SUZ3aVEyOTFiR1FnYm05MElHTnZiWEJzWlhSbElIUm9aU0J2Y0dWeVlYUnBiMjRnWkhWbElIUnZJR1Z5Y205eUlHTXdNR013TWpObVhDSmNiaUFnSUNCMllYSWdjM1JoZEhWek8xeHVJQ0FnSUhSeWVTQjdJSE4wWVhSMWN5QTlJSGhvY2k1emRHRjBkWE1nZlNCallYUmphQ2hsS1NCN0lITjBZWFIxY3lBOUlEQTdJSDFjYmx4dUlDQWdJR2xtSUNnd0lEMDlJSE4wWVhSMWN5a2dlMXh1SUNBZ0lDQWdhV1lnS0hObGJHWXVkR2x0WldSdmRYUXBJSEpsZEhWeWJpQnpaV3htTGw5MGFXMWxiM1YwUlhKeWIzSW9LVHRjYmlBZ0lDQWdJR2xtSUNoelpXeG1MbDloWW05eWRHVmtLU0J5WlhSMWNtNDdYRzRnSUNBZ0lDQnlaWFIxY200Z2MyVnNaaTVqY205emMwUnZiV0ZwYmtWeWNtOXlLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lITmxiR1l1WlcxcGRDZ25aVzVrSnlrN1hHNGdJSDA3WEc1Y2JpQWdMeThnY0hKdlozSmxjM05jYmlBZ2RtRnlJR2hoYm1Sc1pWQnliMmR5WlhOeklEMGdablZ1WTNScGIyNG9aU2w3WEc0Z0lDQWdhV1lnS0dVdWRHOTBZV3dnUGlBd0tTQjdYRzRnSUNBZ0lDQmxMbkJsY21ObGJuUWdQU0JsTG14dllXUmxaQ0F2SUdVdWRHOTBZV3dnS2lBeE1EQTdYRzRnSUNBZ2ZWeHVJQ0FnSUdVdVpHbHlaV04wYVc5dUlEMGdKMlJ2ZDI1c2IyRmtKenRjYmlBZ0lDQnpaV3htTG1WdGFYUW9KM0J5YjJkeVpYTnpKeXdnWlNrN1hHNGdJSDA3WEc0Z0lHbG1JQ2gwYUdsekxtaGhjMHhwYzNSbGJtVnljeWduY0hKdlozSmxjM01uS1NrZ2UxeHVJQ0FnSUhob2NpNXZibkJ5YjJkeVpYTnpJRDBnYUdGdVpHeGxVSEp2WjNKbGMzTTdYRzRnSUgxY2JpQWdkSEo1SUh0Y2JpQWdJQ0JwWmlBb2VHaHlMblZ3Ykc5aFpDQW1KaUIwYUdsekxtaGhjMHhwYzNSbGJtVnljeWduY0hKdlozSmxjM01uS1NrZ2UxeHVJQ0FnSUNBZ2VHaHlMblZ3Ykc5aFpDNXZibkJ5YjJkeVpYTnpJRDBnYUdGdVpHeGxVSEp2WjNKbGMzTTdYRzRnSUNBZ2ZWeHVJQ0I5SUdOaGRHTm9LR1VwSUh0Y2JpQWdJQ0F2THlCQlkyTmxjM05wYm1jZ2VHaHlMblZ3Ykc5aFpDQm1ZV2xzY3lCcGJpQkpSU0JtY205dElHRWdkMlZpSUhkdmNtdGxjaXdnYzI4Z2FuVnpkQ0J3Y21WMFpXNWtJR2wwSUdSdlpYTnVKM1FnWlhocGMzUXVYRzRnSUNBZ0x5OGdVbVZ3YjNKMFpXUWdhR1Z5WlRwY2JpQWdJQ0F2THlCb2RIUndjem92TDJOdmJtNWxZM1F1YldsamNtOXpiMlowTG1OdmJTOUpSUzltWldWa1ltRmpheTlrWlhSaGFXeHpMemd6TnpJME5TOTRiV3hvZEhSd2NtVnhkV1Z6ZEMxMWNHeHZZV1F0ZEdoeWIzZHpMV2x1ZG1Gc2FXUXRZWEpuZFcxbGJuUXRkMmhsYmkxMWMyVmtMV1p5YjIwdGQyVmlMWGR2Y210bGNpMWpiMjUwWlhoMFhHNGdJSDFjYmx4dUlDQXZMeUIwYVcxbGIzVjBYRzRnSUdsbUlDaDBhVzFsYjNWMElDWW1JQ0YwYUdsekxsOTBhVzFsY2lrZ2UxeHVJQ0FnSUhSb2FYTXVYM1JwYldWeUlEMGdjMlYwVkdsdFpXOTFkQ2htZFc1amRHbHZiaWdwZTF4dUlDQWdJQ0FnYzJWc1ppNTBhVzFsWkc5MWRDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCelpXeG1MbUZpYjNKMEtDazdYRzRnSUNBZ2ZTd2dkR2x0Wlc5MWRDazdYRzRnSUgxY2JseHVJQ0F2THlCeGRXVnllWE4wY21sdVoxeHVJQ0IwYUdsekxsOWhjSEJsYm1SUmRXVnllVk4wY21sdVp5Z3BPMXh1WEc0Z0lDOHZJR2x1YVhScFlYUmxJSEpsY1hWbGMzUmNiaUFnYVdZZ0tIUm9hWE11ZFhObGNtNWhiV1VnSmlZZ2RHaHBjeTV3WVhOemQyOXlaQ2tnZTF4dUlDQWdJSGhvY2k1dmNHVnVLSFJvYVhNdWJXVjBhRzlrTENCMGFHbHpMblZ5YkN3Z2RISjFaU3dnZEdocGN5NTFjMlZ5Ym1GdFpTd2dkR2hwY3k1d1lYTnpkMjl5WkNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2VHaHlMbTl3Wlc0b2RHaHBjeTV0WlhSb2IyUXNJSFJvYVhNdWRYSnNMQ0IwY25WbEtUdGNiaUFnZlZ4dVhHNGdJQzh2SUVOUFVsTmNiaUFnYVdZZ0tIUm9hWE11WDNkcGRHaERjbVZrWlc1MGFXRnNjeWtnZUdoeUxuZHBkR2hEY21Wa1pXNTBhV0ZzY3lBOUlIUnlkV1U3WEc1Y2JpQWdMeThnWW05a2VWeHVJQ0JwWmlBb0owZEZWQ2NnSVQwZ2RHaHBjeTV0WlhSb2IyUWdKaVlnSjBoRlFVUW5JQ0U5SUhSb2FYTXViV1YwYUc5a0lDWW1JQ2R6ZEhKcGJtY25JQ0U5SUhSNWNHVnZaaUJrWVhSaElDWW1JQ0YwYUdsekxsOXBjMGh2YzNRb1pHRjBZU2twSUh0Y2JpQWdJQ0F2THlCelpYSnBZV3hwZW1VZ2MzUjFabVpjYmlBZ0lDQjJZWElnWTI5dWRHVnVkRlI1Y0dVZ1BTQjBhR2x6TGw5b1pXRmtaWEpiSjJOdmJuUmxiblF0ZEhsd1pTZGRPMXh1SUNBZ0lIWmhjaUJ6WlhKcFlXeHBlbVVnUFNCMGFHbHpMbDl6WlhKcFlXeHBlbVZ5SUh4OElISmxjWFZsYzNRdWMyVnlhV0ZzYVhwbFcyTnZiblJsYm5SVWVYQmxJRDhnWTI5dWRHVnVkRlI1Y0dVdWMzQnNhWFFvSnpzbktWc3dYU0E2SUNjblhUdGNiaUFnSUNCcFppQW9JWE5sY21saGJHbDZaU0FtSmlCcGMwcFRUMDRvWTI5dWRHVnVkRlI1Y0dVcEtTQnpaWEpwWVd4cGVtVWdQU0J5WlhGMVpYTjBMbk5sY21saGJHbDZaVnNuWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWRkTzF4dUlDQWdJR2xtSUNoelpYSnBZV3hwZW1VcElHUmhkR0VnUFNCelpYSnBZV3hwZW1Vb1pHRjBZU2s3WEc0Z0lIMWNibHh1SUNBdkx5QnpaWFFnYUdWaFpHVnlJR1pwWld4a2MxeHVJQ0JtYjNJZ0tIWmhjaUJtYVdWc1pDQnBiaUIwYUdsekxtaGxZV1JsY2lrZ2UxeHVJQ0FnSUdsbUlDaHVkV3hzSUQwOUlIUm9hWE11YUdWaFpHVnlXMlpwWld4a1hTa2dZMjl1ZEdsdWRXVTdYRzRnSUNBZ2VHaHlMbk5sZEZKbGNYVmxjM1JJWldGa1pYSW9abWxsYkdRc0lIUm9hWE11YUdWaFpHVnlXMlpwWld4a1hTazdYRzRnSUgxY2JseHVJQ0JwWmlBb2RHaHBjeTVmY21WemNHOXVjMlZVZVhCbEtTQjdYRzRnSUNBZ2VHaHlMbkpsYzNCdmJuTmxWSGx3WlNBOUlIUm9hWE11WDNKbGMzQnZibk5sVkhsd1pUdGNiaUFnZlZ4dVhHNGdJQzh2SUhObGJtUWdjM1IxWm1aY2JpQWdkR2hwY3k1bGJXbDBLQ2R5WlhGMVpYTjBKeXdnZEdocGN5azdYRzVjYmlBZ0x5OGdTVVV4TVNCNGFISXVjMlZ1WkNoMWJtUmxabWx1WldRcElITmxibVJ6SUNkMWJtUmxabWx1WldRbklITjBjbWx1WnlCaGN5QlFUMU5VSUhCaGVXeHZZV1FnS0dsdWMzUmxZV1FnYjJZZ2JtOTBhR2x1WnlsY2JpQWdMeThnVjJVZ2JtVmxaQ0J1ZFd4c0lHaGxjbVVnYVdZZ1pHRjBZU0JwY3lCMWJtUmxabWx1WldSY2JpQWdlR2h5TG5ObGJtUW9kSGx3Wlc5bUlHUmhkR0VnSVQwOUlDZDFibVJsWm1sdVpXUW5JRDhnWkdGMFlTQTZJRzUxYkd3cE8xeHVJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JuMDdYRzVjYmx4dUx5b3FYRzRnS2lCRmVIQnZjMlVnWUZKbGNYVmxjM1JnTGx4dUlDb3ZYRzVjYm5KbGNYVmxjM1F1VW1WeGRXVnpkQ0E5SUZKbGNYVmxjM1E3WEc1Y2JpOHFLbHh1SUNvZ1IwVlVJR0IxY214Z0lIZHBkR2dnYjNCMGFXOXVZV3dnWTJGc2JHSmhZMnNnWUdadUtISmxjeWxnTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VTNSeWFXNW5mU0IxY214Y2JpQXFJRUJ3WVhKaGJTQjdUV2w0WldSOFJuVnVZM1JwYjI1OUlGdGtZWFJoWFNCdmNpQm1ibHh1SUNvZ1FIQmhjbUZ0SUh0R2RXNWpkR2x2Ym4wZ1cyWnVYVnh1SUNvZ1FISmxkSFZ5YmlCN1VtVnhkV1Z6ZEgxY2JpQXFJRUJoY0drZ2NIVmliR2xqWEc0Z0tpOWNibHh1Y21WeGRXVnpkQzVuWlhRZ1BTQm1kVzVqZEdsdmJpaDFjbXdzSUdSaGRHRXNJR1p1S1h0Y2JpQWdkbUZ5SUhKbGNTQTlJSEpsY1hWbGMzUW9KMGRGVkNjc0lIVnliQ2s3WEc0Z0lHbG1JQ2duWm5WdVkzUnBiMjRuSUQwOUlIUjVjR1Z2WmlCa1lYUmhLU0JtYmlBOUlHUmhkR0VzSUdSaGRHRWdQU0J1ZFd4c08xeHVJQ0JwWmlBb1pHRjBZU2tnY21WeExuRjFaWEo1S0dSaGRHRXBPMXh1SUNCcFppQW9abTRwSUhKbGNTNWxibVFvWm00cE8xeHVJQ0J5WlhSMWNtNGdjbVZ4TzF4dWZUdGNibHh1THlvcVhHNGdLaUJJUlVGRUlHQjFjbXhnSUhkcGRHZ2diM0IwYVc5dVlXd2dZMkZzYkdKaFkyc2dZR1p1S0hKbGN5bGdMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQjFjbXhjYmlBcUlFQndZWEpoYlNCN1RXbDRaV1I4Um5WdVkzUnBiMjU5SUZ0a1lYUmhYU0J2Y2lCbWJseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnVzJadVhWeHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDFjYmlBcUlFQmhjR2tnY0hWaWJHbGpYRzRnS2k5Y2JseHVjbVZ4ZFdWemRDNW9aV0ZrSUQwZ1puVnVZM1JwYjI0b2RYSnNMQ0JrWVhSaExDQm1iaWw3WEc0Z0lIWmhjaUJ5WlhFZ1BTQnlaWEYxWlhOMEtDZElSVUZFSnl3Z2RYSnNLVHRjYmlBZ2FXWWdLQ2RtZFc1amRHbHZiaWNnUFQwZ2RIbHdaVzltSUdSaGRHRXBJR1p1SUQwZ1pHRjBZU3dnWkdGMFlTQTlJRzUxYkd3N1hHNGdJR2xtSUNoa1lYUmhLU0J5WlhFdWMyVnVaQ2hrWVhSaEtUdGNiaUFnYVdZZ0tHWnVLU0J5WlhFdVpXNWtLR1p1S1R0Y2JpQWdjbVYwZFhKdUlISmxjVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dUMUJVU1U5T1V5QnhkV1Z5ZVNCMGJ5QmdkWEpzWUNCM2FYUm9JRzl3ZEdsdmJtRnNJR05oYkd4aVlXTnJJR0JtYmloeVpYTXBZQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdkWEpzWEc0Z0tpQkFjR0Z5WVcwZ2UwMXBlR1ZrZkVaMWJtTjBhVzl1ZlNCYlpHRjBZVjBnYjNJZ1ptNWNiaUFxSUVCd1lYSmhiU0I3Um5WdVkzUnBiMjU5SUZ0bWJsMWNiaUFxSUVCeVpYUjFjbTRnZTFKbGNYVmxjM1I5WEc0Z0tpQkFZWEJwSUhCMVlteHBZMXh1SUNvdlhHNWNibkpsY1hWbGMzUXViM0IwYVc5dWN5QTlJR1oxYm1OMGFXOXVLSFZ5YkN3Z1pHRjBZU3dnWm00cGUxeHVJQ0IyWVhJZ2NtVnhJRDBnY21WeGRXVnpkQ2duVDFCVVNVOU9VeWNzSUhWeWJDazdYRzRnSUdsbUlDZ25ablZ1WTNScGIyNG5JRDA5SUhSNWNHVnZaaUJrWVhSaEtTQm1iaUE5SUdSaGRHRXNJR1JoZEdFZ1BTQnVkV3hzTzF4dUlDQnBaaUFvWkdGMFlTa2djbVZ4TG5ObGJtUW9aR0YwWVNrN1hHNGdJR2xtSUNobWJpa2djbVZ4TG1WdVpDaG1iaWs3WEc0Z0lISmxkSFZ5YmlCeVpYRTdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFUkZURVZVUlNCZ2RYSnNZQ0IzYVhSb0lHOXdkR2x2Ym1Gc0lHTmhiR3hpWVdOcklHQm1iaWh5WlhNcFlDNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjMwZ2RYSnNYRzRnS2lCQWNHRnlZVzBnZTBaMWJtTjBhVzl1ZlNCYlptNWRYRzRnS2lCQWNtVjBkWEp1SUh0U1pYRjFaWE4wZlZ4dUlDb2dRR0Z3YVNCd2RXSnNhV05jYmlBcUwxeHVYRzVtZFc1amRHbHZiaUJrWld3b2RYSnNMQ0JtYmlsN1hHNGdJSFpoY2lCeVpYRWdQU0J5WlhGMVpYTjBLQ2RFUlV4RlZFVW5MQ0IxY213cE8xeHVJQ0JwWmlBb1ptNHBJSEpsY1M1bGJtUW9abTRwTzF4dUlDQnlaWFIxY200Z2NtVnhPMXh1ZlR0Y2JseHVjbVZ4ZFdWemRGc25aR1ZzSjEwZ1BTQmtaV3c3WEc1eVpYRjFaWE4wV3lka1pXeGxkR1VuWFNBOUlHUmxiRHRjYmx4dUx5b3FYRzRnS2lCUVFWUkRTQ0JnZFhKc1lDQjNhWFJvSUc5d2RHbHZibUZzSUdCa1lYUmhZQ0JoYm1RZ1kyRnNiR0poWTJzZ1lHWnVLSEpsY3lsZ0xseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1UzUnlhVzVuZlNCMWNteGNiaUFxSUVCd1lYSmhiU0I3VFdsNFpXUjlJRnRrWVhSaFhWeHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnVzJadVhWeHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDFjYmlBcUlFQmhjR2tnY0hWaWJHbGpYRzRnS2k5Y2JseHVjbVZ4ZFdWemRDNXdZWFJqYUNBOUlHWjFibU4wYVc5dUtIVnliQ3dnWkdGMFlTd2dabTRwZTF4dUlDQjJZWElnY21WeElEMGdjbVZ4ZFdWemRDZ25VRUZVUTBnbkxDQjFjbXdwTzF4dUlDQnBaaUFvSjJaMWJtTjBhVzl1SnlBOVBTQjBlWEJsYjJZZ1pHRjBZU2tnWm00Z1BTQmtZWFJoTENCa1lYUmhJRDBnYm5Wc2JEdGNiaUFnYVdZZ0tHUmhkR0VwSUhKbGNTNXpaVzVrS0dSaGRHRXBPMXh1SUNCcFppQW9abTRwSUhKbGNTNWxibVFvWm00cE8xeHVJQ0J5WlhSMWNtNGdjbVZ4TzF4dWZUdGNibHh1THlvcVhHNGdLaUJRVDFOVUlHQjFjbXhnSUhkcGRHZ2diM0IwYVc5dVlXd2dZR1JoZEdGZ0lHRnVaQ0JqWVd4c1ltRmpheUJnWm00b2NtVnpLV0F1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRUZEhKcGJtZDlJSFZ5YkZ4dUlDb2dRSEJoY21GdElIdE5hWGhsWkgwZ1cyUmhkR0ZkWEc0Z0tpQkFjR0Z5WVcwZ2UwWjFibU4wYVc5dWZTQmJabTVkWEc0Z0tpQkFjbVYwZFhKdUlIdFNaWEYxWlhOMGZWeHVJQ29nUUdGd2FTQndkV0pzYVdOY2JpQXFMMXh1WEc1eVpYRjFaWE4wTG5CdmMzUWdQU0JtZFc1amRHbHZiaWgxY213c0lHUmhkR0VzSUdadUtYdGNiaUFnZG1GeUlISmxjU0E5SUhKbGNYVmxjM1FvSjFCUFUxUW5MQ0IxY213cE8xeHVJQ0JwWmlBb0oyWjFibU4wYVc5dUp5QTlQU0IwZVhCbGIyWWdaR0YwWVNrZ1ptNGdQU0JrWVhSaExDQmtZWFJoSUQwZ2JuVnNiRHRjYmlBZ2FXWWdLR1JoZEdFcElISmxjUzV6Wlc1a0tHUmhkR0VwTzF4dUlDQnBaaUFvWm00cElISmxjUzVsYm1Rb1ptNHBPMXh1SUNCeVpYUjFjbTRnY21WeE8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCUVZWUWdZSFZ5YkdBZ2QybDBhQ0J2Y0hScGIyNWhiQ0JnWkdGMFlXQWdZVzVrSUdOaGJHeGlZV05ySUdCbWJpaHlaWE1wWUM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFOMGNtbHVaMzBnZFhKc1hHNGdLaUJBY0dGeVlXMGdlMDFwZUdWa2ZFWjFibU4wYVc5dWZTQmJaR0YwWVYwZ2IzSWdabTVjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlGdG1ibDFjYmlBcUlFQnlaWFIxY200Z2UxSmxjWFZsYzNSOVhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYm5KbGNYVmxjM1F1Y0hWMElEMGdablZ1WTNScGIyNG9kWEpzTENCa1lYUmhMQ0JtYmlsN1hHNGdJSFpoY2lCeVpYRWdQU0J5WlhGMVpYTjBLQ2RRVlZRbkxDQjFjbXdwTzF4dUlDQnBaaUFvSjJaMWJtTjBhVzl1SnlBOVBTQjBlWEJsYjJZZ1pHRjBZU2tnWm00Z1BTQmtZWFJoTENCa1lYUmhJRDBnYm5Wc2JEdGNiaUFnYVdZZ0tHUmhkR0VwSUhKbGNTNXpaVzVrS0dSaGRHRXBPMXh1SUNCcFppQW9abTRwSUhKbGNTNWxibVFvWm00cE8xeHVJQ0J5WlhSMWNtNGdjbVZ4TzF4dWZUdGNiaUlzSWk4cUtseHVJQ29nUTJobFkyc2dhV1lnWUc5aWFtQWdhWE1nWVc0Z2IySnFaV04wTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2WW1wY2JpQXFJRUJ5WlhSMWNtNGdlMEp2YjJ4bFlXNTlYRzRnS2lCQVlYQnBJSEJ5YVhaaGRHVmNiaUFxTDF4dVhHNW1kVzVqZEdsdmJpQnBjMDlpYW1WamRDaHZZbW9wSUh0Y2JpQWdjbVYwZFhKdUlHNTFiR3dnSVQwOUlHOWlhaUFtSmlBbmIySnFaV04wSnlBOVBUMGdkSGx3Wlc5bUlHOWlhanRjYm4xY2JseHViVzlrZFd4bExtVjRjRzl5ZEhNZ1BTQnBjMDlpYW1WamREdGNiaUlzSWk4cUtseHVJQ29nVFc5a2RXeGxJRzltSUcxcGVHVmtMV2x1SUdaMWJtTjBhVzl1Y3lCemFHRnlaV1FnWW1WMGQyVmxiaUJ1YjJSbElHRnVaQ0JqYkdsbGJuUWdZMjlrWlZ4dUlDb3ZYRzUyWVhJZ2FYTlBZbXBsWTNRZ1BTQnlaWEYxYVhKbEtDY3VMMmx6TFc5aWFtVmpkQ2NwTzF4dVhHNHZLaXBjYmlBcUlFTnNaV0Z5SUhCeVpYWnBiM1Z6SUhScGJXVnZkWFF1WEc0Z0tseHVJQ29nUUhKbGRIVnliaUI3VW1WeGRXVnpkSDBnWm05eUlHTm9ZV2x1YVc1blhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYm1WNGNHOXlkSE11WTJ4bFlYSlVhVzFsYjNWMElEMGdablZ1WTNScGIyNGdYMk5zWldGeVZHbHRaVzkxZENncGUxeHVJQ0IwYUdsekxsOTBhVzFsYjNWMElEMGdNRHRjYmlBZ1kyeGxZWEpVYVcxbGIzVjBLSFJvYVhNdVgzUnBiV1Z5S1R0Y2JpQWdjbVYwZFhKdUlIUm9hWE03WEc1OU8xeHVYRzR2S2lwY2JpQXFJRTkyWlhKeWFXUmxJR1JsWm1GMWJIUWdjbVZ6Y0c5dWMyVWdZbTlrZVNCd1lYSnpaWEpjYmlBcVhHNGdLaUJVYUdseklHWjFibU4wYVc5dUlIZHBiR3dnWW1VZ1kyRnNiR1ZrSUhSdklHTnZiblpsY25RZ2FXNWpiMjFwYm1jZ1pHRjBZU0JwYm5SdklISmxjWFZsYzNRdVltOWtlVnh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlYRzRnS2lCQVlYQnBJSEIxWW14cFkxeHVJQ292WEc1Y2JtVjRjRzl5ZEhNdWNHRnljMlVnUFNCbWRXNWpkR2x2YmlCd1lYSnpaU2htYmlsN1hHNGdJSFJvYVhNdVgzQmhjbk5sY2lBOUlHWnVPMXh1SUNCeVpYUjFjbTRnZEdocGN6dGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1QzWmxjbkpwWkdVZ1pHVm1ZWFZzZENCeVpYRjFaWE4wSUdKdlpIa2djMlZ5YVdGc2FYcGxjbHh1SUNwY2JpQXFJRlJvYVhNZ1puVnVZM1JwYjI0Z2QybHNiQ0JpWlNCallXeHNaV1FnZEc4Z1kyOXVkbVZ5ZENCa1lYUmhJSE5sZENCMmFXRWdMbk5sYm1RZ2IzSWdMbUYwZEdGamFDQnBiblJ2SUhCaGVXeHZZV1FnZEc4Z2MyVnVaRnh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdSblZ1WTNScGIyNTlYRzRnS2lCQVlYQnBJSEIxWW14cFkxeHVJQ292WEc1Y2JtVjRjRzl5ZEhNdWMyVnlhV0ZzYVhwbElEMGdablZ1WTNScGIyNGdjMlZ5YVdGc2FYcGxLR1p1S1h0Y2JpQWdkR2hwY3k1ZmMyVnlhV0ZzYVhwbGNpQTlJR1p1TzF4dUlDQnlaWFIxY200Z2RHaHBjenRjYm4wN1hHNWNiaThxS2x4dUlDb2dVMlYwSUhScGJXVnZkWFFnZEc4Z1lHMXpZQzVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMDUxYldKbGNuMGdiWE5jYmlBcUlFQnlaWFIxY200Z2UxSmxjWFZsYzNSOUlHWnZjaUJqYUdGcGJtbHVaMXh1SUNvZ1FHRndhU0J3ZFdKc2FXTmNiaUFxTDF4dVhHNWxlSEJ2Y25SekxuUnBiV1Z2ZFhRZ1BTQm1kVzVqZEdsdmJpQjBhVzFsYjNWMEtHMXpLWHRjYmlBZ2RHaHBjeTVmZEdsdFpXOTFkQ0E5SUcxek8xeHVJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JuMDdYRzVjYmk4cUtseHVJQ29nVUhKdmJXbHpaU0J6ZFhCd2IzSjBYRzRnS2x4dUlDb2dRSEJoY21GdElIdEdkVzVqZEdsdmJuMGdjbVZ6YjJ4MlpWeHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnY21WcVpXTjBYRzRnS2lCQWNtVjBkWEp1SUh0U1pYRjFaWE4wZlZ4dUlDb3ZYRzVjYm1WNGNHOXlkSE11ZEdobGJpQTlJR1oxYm1OMGFXOXVJSFJvWlc0b2NtVnpiMngyWlN3Z2NtVnFaV04wS1NCN1hHNGdJR2xtSUNnaGRHaHBjeTVmWm5Wc2JHWnBiR3hsWkZCeWIyMXBjMlVwSUh0Y2JpQWdJQ0IyWVhJZ2MyVnNaaUE5SUhSb2FYTTdYRzRnSUNBZ2RHaHBjeTVmWm5Wc2JHWnBiR3hsWkZCeWIyMXBjMlVnUFNCdVpYY2dVSEp2YldselpTaG1kVzVqZEdsdmJpaHBibTVsY2xKbGMyOXNkbVVzSUdsdWJtVnlVbVZxWldOMEtYdGNiaUFnSUNBZ0lITmxiR1l1Wlc1a0tHWjFibU4wYVc5dUtHVnljaXdnY21WektYdGNiaUFnSUNBZ0lDQWdhV1lnS0dWeWNpa2dhVzV1WlhKU1pXcGxZM1FvWlhKeUtUc2daV3h6WlNCcGJtNWxjbEpsYzI5c2RtVW9jbVZ6S1R0Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbDltZFd4c1ptbHNiR1ZrVUhKdmJXbHpaUzUwYUdWdUtISmxjMjlzZG1Vc0lISmxhbVZqZENrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVd4c2IzY2dabTl5SUdWNGRHVnVjMmx2Ymx4dUlDb3ZYRzVjYm1WNGNHOXlkSE11ZFhObElEMGdablZ1WTNScGIyNGdkWE5sS0dadUtTQjdYRzRnSUdadUtIUm9hWE1wTzF4dUlDQnlaWFIxY200Z2RHaHBjenRjYm4xY2JseHVYRzR2S2lwY2JpQXFJRWRsZENCeVpYRjFaWE4wSUdobFlXUmxjaUJnWm1sbGJHUmdMbHh1SUNvZ1EyRnpaUzFwYm5ObGJuTnBkR2wyWlM1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFOMGNtbHVaMzBnWm1sbGJHUmNiaUFxSUVCeVpYUjFjbTRnZTFOMGNtbHVaMzFjYmlBcUlFQmhjR2tnY0hWaWJHbGpYRzRnS2k5Y2JseHVaWGh3YjNKMGN5NW5aWFFnUFNCbWRXNWpkR2x2YmlobWFXVnNaQ2w3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbDlvWldGa1pYSmJabWxsYkdRdWRHOU1iM2RsY2tOaGMyVW9LVjA3WEc1OU8xeHVYRzR2S2lwY2JpQXFJRWRsZENCallYTmxMV2x1YzJWdWMybDBhWFpsSUdobFlXUmxjaUJnWm1sbGJHUmdJSFpoYkhWbExseHVJQ29nVkdocGN5QnBjeUJoSUdSbGNISmxZMkYwWldRZ2FXNTBaWEp1WVd3Z1FWQkpMaUJWYzJVZ1lDNW5aWFFvWm1sbGJHUXBZQ0JwYm5OMFpXRmtMbHh1SUNwY2JpQXFJQ2huWlhSSVpXRmtaWElnYVhNZ2JtOGdiRzl1WjJWeUlIVnpaV1FnYVc1MFpYSnVZV3hzZVNCaWVTQjBhR1VnYzNWd1pYSmhaMlZ1ZENCamIyUmxJR0poYzJVcFhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUdacFpXeGtYRzRnS2lCQWNtVjBkWEp1SUh0VGRISnBibWQ5WEc0Z0tpQkFZWEJwSUhCeWFYWmhkR1ZjYmlBcUlFQmtaWEJ5WldOaGRHVmtYRzRnS2k5Y2JseHVaWGh3YjNKMGN5NW5aWFJJWldGa1pYSWdQU0JsZUhCdmNuUnpMbWRsZER0Y2JseHVMeW9xWEc0Z0tpQlRaWFFnYUdWaFpHVnlJR0JtYVdWc1pHQWdkRzhnWUhaaGJHQXNJRzl5SUcxMWJIUnBjR3hsSUdacFpXeGtjeUIzYVhSb0lHOXVaU0J2WW1wbFkzUXVYRzRnS2lCRFlYTmxMV2x1YzJWdWMybDBhWFpsTGx4dUlDcGNiaUFxSUVWNFlXMXdiR1Z6T2x4dUlDcGNiaUFxSUNBZ0lDQWdjbVZ4TG1kbGRDZ25MeWNwWEc0Z0tpQWdJQ0FnSUNBZ0xuTmxkQ2duUVdOalpYQjBKeXdnSjJGd2NHeHBZMkYwYVc5dUwycHpiMjRuS1Z4dUlDb2dJQ0FnSUNBZ0lDNXpaWFFvSjFndFFWQkpMVXRsZVNjc0lDZG1iMjlpWVhJbktWeHVJQ29nSUNBZ0lDQWdJQzVsYm1Rb1kyRnNiR0poWTJzcE8xeHVJQ3BjYmlBcUlDQWdJQ0FnY21WeExtZGxkQ2duTHljcFhHNGdLaUFnSUNBZ0lDQWdMbk5sZENoN0lFRmpZMlZ3ZERvZ0oyRndjR3hwWTJGMGFXOXVMMnB6YjI0bkxDQW5XQzFCVUVrdFMyVjVKem9nSjJadmIySmhjaWNnZlNsY2JpQXFJQ0FnSUNBZ0lDQXVaVzVrS0dOaGJHeGlZV05yS1R0Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFOMGNtbHVaM3hQWW1wbFkzUjlJR1pwWld4a1hHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdkbUZzWEc0Z0tpQkFjbVYwZFhKdUlIdFNaWEYxWlhOMGZTQm1iM0lnWTJoaGFXNXBibWRjYmlBcUlFQmhjR2tnY0hWaWJHbGpYRzRnS2k5Y2JseHVaWGh3YjNKMGN5NXpaWFFnUFNCbWRXNWpkR2x2YmlobWFXVnNaQ3dnZG1Gc0tYdGNiaUFnYVdZZ0tHbHpUMkpxWldOMEtHWnBaV3hrS1NrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJtYVdWc1pDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUW9hMlY1TENCbWFXVnNaRnRyWlhsZEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmlBZ2RHaHBjeTVmYUdWaFpHVnlXMlpwWld4a0xuUnZURzkzWlhKRFlYTmxLQ2xkSUQwZ2RtRnNPMXh1SUNCMGFHbHpMbWhsWVdSbGNsdG1hV1ZzWkYwZ1BTQjJZV3c3WEc0Z0lISmxkSFZ5YmlCMGFHbHpPMXh1ZlR0Y2JseHVMeW9xWEc0Z0tpQlNaVzF2ZG1VZ2FHVmhaR1Z5SUdCbWFXVnNaR0F1WEc0Z0tpQkRZWE5sTFdsdWMyVnVjMmwwYVhabExseHVJQ3BjYmlBcUlFVjRZVzF3YkdVNlhHNGdLbHh1SUNvZ0lDQWdJQ0J5WlhFdVoyVjBLQ2N2SnlsY2JpQXFJQ0FnSUNBZ0lDQXVkVzV6WlhRb0oxVnpaWEl0UVdkbGJuUW5LVnh1SUNvZ0lDQWdJQ0FnSUM1bGJtUW9ZMkZzYkdKaFkyc3BPMXh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQm1hV1ZzWkZ4dUlDb3ZYRzVsZUhCdmNuUnpMblZ1YzJWMElEMGdablZ1WTNScGIyNG9abWxsYkdRcGUxeHVJQ0JrWld4bGRHVWdkR2hwY3k1ZmFHVmhaR1Z5VzJacFpXeGtMblJ2VEc5M1pYSkRZWE5sS0NsZE8xeHVJQ0JrWld4bGRHVWdkR2hwY3k1b1pXRmtaWEpiWm1sbGJHUmRPMXh1SUNCeVpYUjFjbTRnZEdocGN6dGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1YzSnBkR1VnZEdobElHWnBaV3hrSUdCdVlXMWxZQ0JoYm1RZ1lIWmhiR0FnWm05eUlGd2liWFZzZEdsd1lYSjBMMlp2Y20wdFpHRjBZVndpWEc0Z0tpQnlaWEYxWlhOMElHSnZaR2xsY3k1Y2JpQXFYRzRnS2lCZ1lHQWdhbk5jYmlBcUlISmxjWFZsYzNRdWNHOXpkQ2duTDNWd2JHOWhaQ2NwWEc0Z0tpQWdJQzVtYVdWc1pDZ25abTl2Snl3Z0oySmhjaWNwWEc0Z0tpQWdJQzVsYm1Rb1kyRnNiR0poWTJzcE8xeHVJQ29nWUdCZ1hHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUc1aGJXVmNiaUFxSUVCd1lYSmhiU0I3VTNSeWFXNW5mRUpzYjJKOFJtbHNaWHhDZFdabVpYSjhabk11VW1WaFpGTjBjbVZoYlgwZ2RtRnNYRzRnS2lCQWNtVjBkWEp1SUh0U1pYRjFaWE4wZlNCbWIzSWdZMmhoYVc1cGJtZGNiaUFxSUVCaGNHa2djSFZpYkdsalhHNGdLaTljYm1WNGNHOXlkSE11Wm1sbGJHUWdQU0JtZFc1amRHbHZiaWh1WVcxbExDQjJZV3dwSUh0Y2JpQWdkR2hwY3k1ZloyVjBSbTl5YlVSaGRHRW9LUzVoY0hCbGJtUW9ibUZ0WlN3Z2RtRnNLVHRjYmlBZ2NtVjBkWEp1SUhSb2FYTTdYRzU5TzF4dVhHNHZLaXBjYmlBcUlFRmliM0owSUhSb1pTQnlaWEYxWlhOMExDQmhibVFnWTJ4bFlYSWdjRzkwWlc1MGFXRnNJSFJwYldWdmRYUXVYRzRnS2x4dUlDb2dRSEpsZEhWeWJpQjdVbVZ4ZFdWemRIMWNiaUFxSUVCaGNHa2djSFZpYkdsalhHNGdLaTljYm1WNGNHOXlkSE11WVdKdmNuUWdQU0JtZFc1amRHbHZiaWdwZTF4dUlDQnBaaUFvZEdocGN5NWZZV0p2Y25SbFpDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNGdJSFJvYVhNdVgyRmliM0owWldRZ1BTQjBjblZsTzF4dUlDQjBhR2x6TG5ob2NpQW1KaUIwYUdsekxuaG9jaTVoWW05eWRDZ3BPeUF2THlCaWNtOTNjMlZ5WEc0Z0lIUm9hWE11Y21WeElDWW1JSFJvYVhNdWNtVnhMbUZpYjNKMEtDazdJQzh2SUc1dlpHVmNiaUFnZEdocGN5NWpiR1ZoY2xScGJXVnZkWFFvS1R0Y2JpQWdkR2hwY3k1bGJXbDBLQ2RoWW05eWRDY3BPMXh1SUNCeVpYUjFjbTRnZEdocGN6dGNibjA3WEc1Y2JpOHFLbHh1SUNvZ1JXNWhZbXhsSUhSeVlXNXpiV2x6YzJsdmJpQnZaaUJqYjI5cmFXVnpJSGRwZEdnZ2VDMWtiMjFoYVc0Z2NtVnhkV1Z6ZEhNdVhHNGdLbHh1SUNvZ1RtOTBaU0IwYUdGMElHWnZjaUIwYUdseklIUnZJSGR2Y21zZ2RHaGxJRzl5YVdkcGJpQnRkWE4wSUc1dmRDQmlaVnh1SUNvZ2RYTnBibWNnWENKQlkyTmxjM010UTI5dWRISnZiQzFCYkd4dmR5MVBjbWxuYVc1Y0lpQjNhWFJvSUdFZ2QybHNaR05oY21Rc1hHNGdLaUJoYm1RZ1lXeHpieUJ0ZFhOMElITmxkQ0JjSWtGalkyVnpjeTFEYjI1MGNtOXNMVUZzYkc5M0xVTnlaV1JsYm5ScFlXeHpYQ0pjYmlBcUlIUnZJRndpZEhKMVpWd2lMbHh1SUNwY2JpQXFJRUJoY0drZ2NIVmliR2xqWEc0Z0tpOWNibHh1Wlhod2IzSjBjeTUzYVhSb1EzSmxaR1Z1ZEdsaGJITWdQU0JtZFc1amRHbHZiaWdwZTF4dUlDQXZMeUJVYUdseklHbHpJR0p5YjNkelpYSXRiMjVzZVNCbWRXNWpkR2x2Ym1Gc2FYUjVMaUJPYjJSbElITnBaR1VnYVhNZ2JtOHRiM0F1WEc0Z0lIUm9hWE11WDNkcGRHaERjbVZrWlc1MGFXRnNjeUE5SUhSeWRXVTdYRzRnSUhKbGRIVnliaUIwYUdsek8xeHVmVHRjYmx4dUx5b3FYRzRnS2lCVFpYUWdkR2hsSUcxaGVDQnlaV1JwY21WamRITWdkRzhnWUc1Z0xpQkViMlZ6SUc1dmRHbHVaeUJwYmlCaWNtOTNjMlZ5SUZoSVVpQnBiWEJzWlcxbGJuUmhkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTA1MWJXSmxjbjBnYmx4dUlDb2dRSEpsZEhWeWJpQjdVbVZ4ZFdWemRIMGdabTl5SUdOb1lXbHVhVzVuWEc0Z0tpQkFZWEJwSUhCMVlteHBZMXh1SUNvdlhHNWNibVY0Y0c5eWRITXVjbVZrYVhKbFkzUnpJRDBnWm5WdVkzUnBiMjRvYmlsN1hHNGdJSFJvYVhNdVgyMWhlRkpsWkdseVpXTjBjeUE5SUc0N1hHNGdJSEpsZEhWeWJpQjBhR2x6TzF4dWZUdGNibHh1THlvcVhHNGdLaUJEYjI1MlpYSjBJSFJ2SUdFZ2NHeGhhVzRnYW1GMllYTmpjbWx3ZENCdlltcGxZM1FnS0c1dmRDQktVMDlPSUhOMGNtbHVaeWtnYjJZZ2MyTmhiR0Z5SUhCeWIzQmxjblJwWlhNdVhHNGdLaUJPYjNSbElHRnpJSFJvYVhNZ2JXVjBhRzlrSUdseklHUmxjMmxuYm1Wa0lIUnZJSEpsZEhWeWJpQmhJSFZ6WldaMWJDQnViMjR0ZEdocGN5QjJZV3gxWlN4Y2JpQXFJR2wwSUdOaGJtNXZkQ0JpWlNCamFHRnBibVZrTGx4dUlDcGNiaUFxSUVCeVpYUjFjbTRnZTA5aWFtVmpkSDBnWkdWelkzSnBZbWx1WnlCdFpYUm9iMlFzSUhWeWJDd2dZVzVrSUdSaGRHRWdiMllnZEdocGN5QnlaWEYxWlhOMFhHNGdLaUJBWVhCcElIQjFZbXhwWTF4dUlDb3ZYRzVjYm1WNGNHOXlkSE11ZEc5S1UwOU9JRDBnWm5WdVkzUnBiMjRvS1h0Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCdFpYUm9iMlE2SUhSb2FYTXViV1YwYUc5a0xGeHVJQ0FnSUhWeWJEb2dkR2hwY3k1MWNtd3NYRzRnSUNBZ1pHRjBZVG9nZEdocGN5NWZaR0YwWVN4Y2JpQWdJQ0JvWldGa1pYSnpPaUIwYUdsekxsOW9aV0ZrWlhKY2JpQWdmVHRjYm4wN1hHNWNiaThxS2x4dUlDb2dRMmhsWTJzZ2FXWWdZRzlpYW1BZ2FYTWdZU0JvYjNOMElHOWlhbVZqZEN4Y2JpQXFJSGRsSUdSdmJpZDBJSGRoYm5RZ2RHOGdjMlZ5YVdGc2FYcGxJSFJvWlhObElEb3BYRzRnS2x4dUlDb2dWRTlFVHpvZ1puVjBkWEpsSUhCeWIyOW1MQ0J0YjNabElIUnZJR052YlhCdlpXNTBJR3hoYm1SY2JpQXFYRzRnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjJKcVhHNGdLaUJBY21WMGRYSnVJSHRDYjI5c1pXRnVmVnh1SUNvZ1FHRndhU0J3Y21sMllYUmxYRzRnS2k5Y2JseHVaWGh3YjNKMGN5NWZhWE5JYjNOMElEMGdablZ1WTNScGIyNGdYMmx6U0c5emRDaHZZbW9wSUh0Y2JpQWdkbUZ5SUhOMGNpQTlJSHQ5TG5SdlUzUnlhVzVuTG1OaGJHd29iMkpxS1R0Y2JseHVJQ0J6ZDJsMFkyZ2dLSE4wY2lrZ2UxeHVJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdSbWxzWlYwbk9seHVJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdRbXh2WWwwbk9seHVJQ0FnSUdOaGMyVWdKMXR2WW1wbFkzUWdSbTl5YlVSaGRHRmRKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCVFpXNWtJR0JrWVhSaFlDQmhjeUIwYUdVZ2NtVnhkV1Z6ZENCaWIyUjVMQ0JrWldaaGRXeDBhVzVuSUhSb1pTQmdMblI1Y0dVb0tXQWdkRzhnWENKcWMyOXVYQ0lnZDJobGJseHVJQ29nWVc0Z2IySnFaV04wSUdseklHZHBkbVZ1TGx4dUlDcGNiaUFxSUVWNFlXMXdiR1Z6T2x4dUlDcGNiaUFxSUNBZ0lDQWdJQzh2SUcxaGJuVmhiQ0JxYzI5dVhHNGdLaUFnSUNBZ0lDQnlaWEYxWlhOMExuQnZjM1FvSnk5MWMyVnlKeWxjYmlBcUlDQWdJQ0FnSUNBZ0xuUjVjR1VvSjJwemIyNG5LVnh1SUNvZ0lDQWdJQ0FnSUNBdWMyVnVaQ2duZTF3aWJtRnRaVndpT2x3aWRHcGNJbjBuS1Z4dUlDb2dJQ0FnSUNBZ0lDQXVaVzVrS0dOaGJHeGlZV05yS1Z4dUlDcGNiaUFxSUNBZ0lDQWdJQzh2SUdGMWRHOGdhbk52Ymx4dUlDb2dJQ0FnSUNBZ2NtVnhkV1Z6ZEM1d2IzTjBLQ2N2ZFhObGNpY3BYRzRnS2lBZ0lDQWdJQ0FnSUM1elpXNWtLSHNnYm1GdFpUb2dKM1JxSnlCOUtWeHVJQ29nSUNBZ0lDQWdJQ0F1Wlc1a0tHTmhiR3hpWVdOcktWeHVJQ3BjYmlBcUlDQWdJQ0FnSUM4dklHMWhiblZoYkNCNExYZDNkeTFtYjNKdExYVnliR1Z1WTI5a1pXUmNiaUFxSUNBZ0lDQWdJSEpsY1hWbGMzUXVjRzl6ZENnbkwzVnpaWEluS1Z4dUlDb2dJQ0FnSUNBZ0lDQXVkSGx3WlNnblptOXliU2NwWEc0Z0tpQWdJQ0FnSUNBZ0lDNXpaVzVrS0NkdVlXMWxQWFJxSnlsY2JpQXFJQ0FnSUNBZ0lDQWdMbVZ1WkNoallXeHNZbUZqYXlsY2JpQXFYRzRnS2lBZ0lDQWdJQ0F2THlCaGRYUnZJSGd0ZDNkM0xXWnZjbTB0ZFhKc1pXNWpiMlJsWkZ4dUlDb2dJQ0FnSUNBZ2NtVnhkV1Z6ZEM1d2IzTjBLQ2N2ZFhObGNpY3BYRzRnS2lBZ0lDQWdJQ0FnSUM1MGVYQmxLQ2RtYjNKdEp5bGNiaUFxSUNBZ0lDQWdJQ0FnTG5ObGJtUW9leUJ1WVcxbE9pQW5kR29uSUgwcFhHNGdLaUFnSUNBZ0lDQWdJQzVsYm1Rb1kyRnNiR0poWTJzcFhHNGdLbHh1SUNvZ0lDQWdJQ0FnTHk4Z1pHVm1ZWFZzZEhNZ2RHOGdlQzEzZDNjdFptOXliUzExY214bGJtTnZaR1ZrWEc0Z0tpQWdJQ0FnSUhKbGNYVmxjM1F1Y0c5emRDZ25MM1Z6WlhJbktWeHVJQ29nSUNBZ0lDQWdJQzV6Wlc1a0tDZHVZVzFsUFhSdllta25LVnh1SUNvZ0lDQWdJQ0FnSUM1elpXNWtLQ2R6Y0dWamFXVnpQV1psY25KbGRDY3BYRzRnS2lBZ0lDQWdJQ0FnTG1WdVpDaGpZV3hzWW1GamF5bGNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxTjBjbWx1WjN4UFltcGxZM1I5SUdSaGRHRmNiaUFxSUVCeVpYUjFjbTRnZTFKbGNYVmxjM1I5SUdadmNpQmphR0ZwYm1sdVoxeHVJQ29nUUdGd2FTQndkV0pzYVdOY2JpQXFMMXh1WEc1bGVIQnZjblJ6TG5ObGJtUWdQU0JtZFc1amRHbHZiaWhrWVhSaEtYdGNiaUFnZG1GeUlHOWlhaUE5SUdselQySnFaV04wS0dSaGRHRXBPMXh1SUNCMllYSWdkSGx3WlNBOUlIUm9hWE11WDJobFlXUmxjbHNuWTI5dWRHVnVkQzEwZVhCbEoxMDdYRzVjYmlBZ0x5OGdiV1Z5WjJWY2JpQWdhV1lnS0c5aWFpQW1KaUJwYzA5aWFtVmpkQ2gwYUdsekxsOWtZWFJoS1NrZ2UxeHVJQ0FnSUdadmNpQW9kbUZ5SUd0bGVTQnBiaUJrWVhSaEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMnRsZVYwZ1BTQmtZWFJoVzJ0bGVWMDdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0NkemRISnBibWNuSUQwOUlIUjVjR1Z2WmlCa1lYUmhLU0I3WEc0Z0lDQWdMeThnWkdWbVlYVnNkQ0IwYnlCNExYZDNkeTFtYjNKdExYVnliR1Z1WTI5a1pXUmNiaUFnSUNCcFppQW9JWFI1Y0dVcElIUm9hWE11ZEhsd1pTZ25abTl5YlNjcE8xeHVJQ0FnSUhSNWNHVWdQU0IwYUdsekxsOW9aV0ZrWlhKYkoyTnZiblJsYm5RdGRIbHdaU2RkTzF4dUlDQWdJR2xtSUNnbllYQndiR2xqWVhScGIyNHZlQzEzZDNjdFptOXliUzExY214bGJtTnZaR1ZrSnlBOVBTQjBlWEJsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaElEMGdkR2hwY3k1ZlpHRjBZVnh1SUNBZ0lDQWdJQ0EvSUhSb2FYTXVYMlJoZEdFZ0t5QW5KaWNnS3lCa1lYUmhYRzRnSUNBZ0lDQWdJRG9nWkdGMFlUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlDaDBhR2x6TGw5a1lYUmhJSHg4SUNjbktTQXJJR1JoZEdFN1hHNGdJQ0FnZlZ4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhSb2FYTXVYMlJoZEdFZ1BTQmtZWFJoTzF4dUlDQjlYRzVjYmlBZ2FXWWdLQ0Z2WW1vZ2ZId2dkR2hwY3k1ZmFYTkliM04wS0dSaGRHRXBLU0J5WlhSMWNtNGdkR2hwY3p0Y2JseHVJQ0F2THlCa1pXWmhkV3gwSUhSdklHcHpiMjVjYmlBZ2FXWWdLQ0YwZVhCbEtTQjBhR2x6TG5SNWNHVW9KMnB6YjI0bktUdGNiaUFnY21WMGRYSnVJSFJvYVhNN1hHNTlPMXh1SWl3aUx5OGdWR2hsSUc1dlpHVWdZVzVrSUdKeWIzZHpaWElnYlc5a2RXeGxjeUJsZUhCdmMyVWdkbVZ5YzJsdmJuTWdiMllnZEdocGN5QjNhWFJvSUhSb1pWeHVMeThnWVhCd2NtOXdjbWxoZEdVZ1kyOXVjM1J5ZFdOMGIzSWdablZ1WTNScGIyNGdZbTkxYm1RZ1lYTWdabWx5YzNRZ1lYSm5kVzFsYm5SY2JpOHFLbHh1SUNvZ1NYTnpkV1VnWVNCeVpYRjFaWE4wT2x4dUlDcGNiaUFxSUVWNFlXMXdiR1Z6T2x4dUlDcGNiaUFxSUNBZ0lISmxjWFZsYzNRb0owZEZWQ2NzSUNjdmRYTmxjbk1uS1M1bGJtUW9ZMkZzYkdKaFkyc3BYRzRnS2lBZ0lDQnlaWEYxWlhOMEtDY3ZkWE5sY25NbktTNWxibVFvWTJGc2JHSmhZMnNwWEc0Z0tpQWdJQ0J5WlhGMVpYTjBLQ2N2ZFhObGNuTW5MQ0JqWVd4c1ltRmpheWxjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdiV1YwYUc5a1hHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozeEdkVzVqZEdsdmJuMGdkWEpzSUc5eUlHTmhiR3hpWVdOclhHNGdLaUJBY21WMGRYSnVJSHRTWlhGMVpYTjBmVnh1SUNvZ1FHRndhU0J3ZFdKc2FXTmNiaUFxTDF4dVhHNW1kVzVqZEdsdmJpQnlaWEYxWlhOMEtGSmxjWFZsYzNSRGIyNXpkSEoxWTNSdmNpd2diV1YwYUc5a0xDQjFjbXdwSUh0Y2JpQWdMeThnWTJGc2JHSmhZMnRjYmlBZ2FXWWdLQ2RtZFc1amRHbHZiaWNnUFQwZ2RIbHdaVzltSUhWeWJDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVbVZ4ZFdWemRFTnZibk4wY25WamRHOXlLQ2RIUlZRbkxDQnRaWFJvYjJRcExtVnVaQ2gxY213cE8xeHVJQ0I5WEc1Y2JpQWdMeThnZFhKc0lHWnBjbk4wWEc0Z0lHbG1JQ2d5SUQwOUlHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdncElIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGSmxjWFZsYzNSRGIyNXpkSEoxWTNSdmNpZ25SMFZVSnl3Z2JXVjBhRzlrS1R0Y2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCdVpYY2dVbVZ4ZFdWemRFTnZibk4wY25WamRHOXlLRzFsZEdodlpDd2dkWEpzS1R0Y2JuMWNibHh1Ylc5a2RXeGxMbVY0Y0c5eWRITWdQU0J5WlhGMVpYTjBPMXh1SWl3aVhISmNiaThxS2x4eVhHNGdLaUJGZUhCdmMyVWdZRVZ0YVhSMFpYSmdMbHh5WEc0Z0tpOWNjbHh1WEhKY2JtbG1JQ2gwZVhCbGIyWWdiVzlrZFd4bElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHlYRzRnSUcxdlpIVnNaUzVsZUhCdmNuUnpJRDBnUlcxcGRIUmxjanRjY2x4dWZWeHlYRzVjY2x4dUx5b3FYSEpjYmlBcUlFbHVhWFJwWVd4cGVtVWdZU0J1WlhjZ1lFVnRhWFIwWlhKZ0xseHlYRzRnS2x4eVhHNGdLaUJBWVhCcElIQjFZbXhwWTF4eVhHNGdLaTljY2x4dVhISmNibVoxYm1OMGFXOXVJRVZ0YVhSMFpYSW9iMkpxS1NCN1hISmNiaUFnYVdZZ0tHOWlhaWtnY21WMGRYSnVJRzFwZUdsdUtHOWlhaWs3WEhKY2JuMDdYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dUV2w0YVc0Z2RHaGxJR1Z0YVhSMFpYSWdjSEp2Y0dWeWRHbGxjeTVjY2x4dUlDcGNjbHh1SUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5aWFseHlYRzRnS2lCQWNtVjBkWEp1SUh0UFltcGxZM1I5WEhKY2JpQXFJRUJoY0drZ2NISnBkbUYwWlZ4eVhHNGdLaTljY2x4dVhISmNibVoxYm1OMGFXOXVJRzFwZUdsdUtHOWlhaWtnZTF4eVhHNGdJR1p2Y2lBb2RtRnlJR3RsZVNCcGJpQkZiV2wwZEdWeUxuQnliM1J2ZEhsd1pTa2dlMXh5WEc0Z0lDQWdiMkpxVzJ0bGVWMGdQU0JGYldsMGRHVnlMbkJ5YjNSdmRIbHdaVnRyWlhsZE8xeHlYRzRnSUgxY2NseHVJQ0J5WlhSMWNtNGdiMkpxTzF4eVhHNTlYSEpjYmx4eVhHNHZLaXBjY2x4dUlDb2dUR2x6ZEdWdUlHOXVJSFJvWlNCbmFYWmxiaUJnWlhabGJuUmdJSGRwZEdnZ1lHWnVZQzVjY2x4dUlDcGNjbHh1SUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUdWMlpXNTBYSEpjYmlBcUlFQndZWEpoYlNCN1JuVnVZM1JwYjI1OUlHWnVYSEpjYmlBcUlFQnlaWFIxY200Z2UwVnRhWFIwWlhKOVhISmNiaUFxSUVCaGNHa2djSFZpYkdsalhISmNiaUFxTDF4eVhHNWNjbHh1UlcxcGRIUmxjaTV3Y205MGIzUjVjR1V1YjI0Z1BWeHlYRzVGYldsMGRHVnlMbkJ5YjNSdmRIbHdaUzVoWkdSRmRtVnVkRXhwYzNSbGJtVnlJRDBnWm5WdVkzUnBiMjRvWlhabGJuUXNJR1p1S1h0Y2NseHVJQ0IwYUdsekxsOWpZV3hzWW1GamEzTWdQU0IwYUdsekxsOWpZV3hzWW1GamEzTWdmSHdnZTMwN1hISmNiaUFnS0hSb2FYTXVYMk5oYkd4aVlXTnJjMXNuSkNjZ0t5QmxkbVZ1ZEYwZ1BTQjBhR2x6TGw5allXeHNZbUZqYTNOYkp5UW5JQ3NnWlhabGJuUmRJSHg4SUZ0ZEtWeHlYRzRnSUNBZ0xuQjFjMmdvWm00cE8xeHlYRzRnSUhKbGRIVnliaUIwYUdsek8xeHlYRzU5TzF4eVhHNWNjbHh1THlvcVhISmNiaUFxSUVGa1pITWdZVzRnWUdWMlpXNTBZQ0JzYVhOMFpXNWxjaUIwYUdGMElIZHBiR3dnWW1VZ2FXNTJiMnRsWkNCaElITnBibWRzWlZ4eVhHNGdLaUIwYVcxbElIUm9aVzRnWVhWMGIyMWhkR2xqWVd4c2VTQnlaVzF2ZG1Wa0xseHlYRzRnS2x4eVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdaWFpsYm5SY2NseHVJQ29nUUhCaGNtRnRJSHRHZFc1amRHbHZibjBnWm01Y2NseHVJQ29nUUhKbGRIVnliaUI3UlcxcGRIUmxjbjFjY2x4dUlDb2dRR0Z3YVNCd2RXSnNhV05jY2x4dUlDb3ZYSEpjYmx4eVhHNUZiV2wwZEdWeUxuQnliM1J2ZEhsd1pTNXZibU5sSUQwZ1puVnVZM1JwYjI0b1pYWmxiblFzSUdadUtYdGNjbHh1SUNCbWRXNWpkR2x2YmlCdmJpZ3BJSHRjY2x4dUlDQWdJSFJvYVhNdWIyWm1LR1YyWlc1MExDQnZiaWs3WEhKY2JpQWdJQ0JtYmk1aGNIQnNlU2gwYUdsekxDQmhjbWQxYldWdWRITXBPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdiMjR1Wm00Z1BTQm1ianRjY2x4dUlDQjBhR2x6TG05dUtHVjJaVzUwTENCdmJpazdYSEpjYmlBZ2NtVjBkWEp1SUhSb2FYTTdYSEpjYm4wN1hISmNibHh5WEc0dktpcGNjbHh1SUNvZ1VtVnRiM1psSUhSb1pTQm5hWFpsYmlCallXeHNZbUZqYXlCbWIzSWdZR1YyWlc1MFlDQnZjaUJoYkd4Y2NseHVJQ29nY21WbmFYTjBaWEpsWkNCallXeHNZbUZqYTNNdVhISmNiaUFxWEhKY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQmxkbVZ1ZEZ4eVhHNGdLaUJBY0dGeVlXMGdlMFoxYm1OMGFXOXVmU0JtYmx4eVhHNGdLaUJBY21WMGRYSnVJSHRGYldsMGRHVnlmVnh5WEc0Z0tpQkFZWEJwSUhCMVlteHBZMXh5WEc0Z0tpOWNjbHh1WEhKY2JrVnRhWFIwWlhJdWNISnZkRzkwZVhCbExtOW1aaUE5WEhKY2JrVnRhWFIwWlhJdWNISnZkRzkwZVhCbExuSmxiVzkyWlV4cGMzUmxibVZ5SUQxY2NseHVSVzFwZEhSbGNpNXdjbTkwYjNSNWNHVXVjbVZ0YjNabFFXeHNUR2x6ZEdWdVpYSnpJRDFjY2x4dVJXMXBkSFJsY2k1d2NtOTBiM1I1Y0dVdWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpQTlJR1oxYm1OMGFXOXVLR1YyWlc1MExDQm1iaWw3WEhKY2JpQWdkR2hwY3k1ZlkyRnNiR0poWTJ0eklEMGdkR2hwY3k1ZlkyRnNiR0poWTJ0eklIeDhJSHQ5TzF4eVhHNWNjbHh1SUNBdkx5QmhiR3hjY2x4dUlDQnBaaUFvTUNBOVBTQmhjbWQxYldWdWRITXViR1Z1WjNSb0tTQjdYSEpjYmlBZ0lDQjBhR2x6TGw5allXeHNZbUZqYTNNZ1BTQjdmVHRjY2x4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4eVhHNGdJSDFjY2x4dVhISmNiaUFnTHk4Z2MzQmxZMmxtYVdNZ1pYWmxiblJjY2x4dUlDQjJZWElnWTJGc2JHSmhZMnR6SUQwZ2RHaHBjeTVmWTJGc2JHSmhZMnR6V3lja0p5QXJJR1YyWlc1MFhUdGNjbHh1SUNCcFppQW9JV05oYkd4aVlXTnJjeWtnY21WMGRYSnVJSFJvYVhNN1hISmNibHh5WEc0Z0lDOHZJSEpsYlc5MlpTQmhiR3dnYUdGdVpHeGxjbk5jY2x4dUlDQnBaaUFvTVNBOVBTQmhjbWQxYldWdWRITXViR1Z1WjNSb0tTQjdYSEpjYmlBZ0lDQmtaV3hsZEdVZ2RHaHBjeTVmWTJGc2JHSmhZMnR6V3lja0p5QXJJR1YyWlc1MFhUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh5WEc0Z0lIMWNjbHh1WEhKY2JpQWdMeThnY21WdGIzWmxJSE53WldOcFptbGpJR2hoYm1Sc1pYSmNjbHh1SUNCMllYSWdZMkk3WEhKY2JpQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0JqWVd4c1ltRmphM011YkdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lHTmlJRDBnWTJGc2JHSmhZMnR6VzJsZE8xeHlYRzRnSUNBZ2FXWWdLR05pSUQwOVBTQm1iaUI4ZkNCallpNW1iaUE5UFQwZ1ptNHBJSHRjY2x4dUlDQWdJQ0FnWTJGc2JHSmhZMnR6TG5Od2JHbGpaU2hwTENBeEtUdGNjbHh1SUNBZ0lDQWdZbkpsWVdzN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNGdJSEpsZEhWeWJpQjBhR2x6TzF4eVhHNTlPMXh5WEc1Y2NseHVMeW9xWEhKY2JpQXFJRVZ0YVhRZ1lHVjJaVzUwWUNCM2FYUm9JSFJvWlNCbmFYWmxiaUJoY21kekxseHlYRzRnS2x4eVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdaWFpsYm5SY2NseHVJQ29nUUhCaGNtRnRJSHROYVhobFpIMGdMaTR1WEhKY2JpQXFJRUJ5WlhSMWNtNGdlMFZ0YVhSMFpYSjlYSEpjYmlBcUwxeHlYRzVjY2x4dVJXMXBkSFJsY2k1d2NtOTBiM1I1Y0dVdVpXMXBkQ0E5SUdaMWJtTjBhVzl1S0dWMlpXNTBLWHRjY2x4dUlDQjBhR2x6TGw5allXeHNZbUZqYTNNZ1BTQjBhR2x6TGw5allXeHNZbUZqYTNNZ2ZId2dlMzA3WEhKY2JpQWdkbUZ5SUdGeVozTWdQU0JiWFM1emJHbGpaUzVqWVd4c0tHRnlaM1Z0Wlc1MGN5d2dNU2xjY2x4dUlDQWdJQ3dnWTJGc2JHSmhZMnR6SUQwZ2RHaHBjeTVmWTJGc2JHSmhZMnR6V3lja0p5QXJJR1YyWlc1MFhUdGNjbHh1WEhKY2JpQWdhV1lnS0dOaGJHeGlZV05yY3lrZ2UxeHlYRzRnSUNBZ1kyRnNiR0poWTJ0eklEMGdZMkZzYkdKaFkydHpMbk5zYVdObEtEQXBPMXh5WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBc0lHeGxiaUE5SUdOaGJHeGlZV05yY3k1c1pXNW5kR2c3SUdrZ1BDQnNaVzQ3SUNzcmFTa2dlMXh5WEc0Z0lDQWdJQ0JqWVd4c1ltRmphM05iYVYwdVlYQndiSGtvZEdocGN5d2dZWEpuY3lrN1hISmNiaUFnSUNCOVhISmNiaUFnZlZ4eVhHNWNjbHh1SUNCeVpYUjFjbTRnZEdocGN6dGNjbHh1ZlR0Y2NseHVYSEpjYmk4cUtseHlYRzRnS2lCU1pYUjFjbTRnWVhKeVlYa2diMllnWTJGc2JHSmhZMnR6SUdadmNpQmdaWFpsYm5SZ0xseHlYRzRnS2x4eVhHNGdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdaWFpsYm5SY2NseHVJQ29nUUhKbGRIVnliaUI3UVhKeVlYbDlYSEpjYmlBcUlFQmhjR2tnY0hWaWJHbGpYSEpjYmlBcUwxeHlYRzVjY2x4dVJXMXBkSFJsY2k1d2NtOTBiM1I1Y0dVdWJHbHpkR1Z1WlhKeklEMGdablZ1WTNScGIyNG9aWFpsYm5RcGUxeHlYRzRnSUhSb2FYTXVYMk5oYkd4aVlXTnJjeUE5SUhSb2FYTXVYMk5oYkd4aVlXTnJjeUI4ZkNCN2ZUdGNjbHh1SUNCeVpYUjFjbTRnZEdocGN5NWZZMkZzYkdKaFkydHpXeWNrSnlBcklHVjJaVzUwWFNCOGZDQmJYVHRjY2x4dWZUdGNjbHh1WEhKY2JpOHFLbHh5WEc0Z0tpQkRhR1ZqYXlCcFppQjBhR2x6SUdWdGFYUjBaWElnYUdGeklHQmxkbVZ1ZEdBZ2FHRnVaR3hsY25NdVhISmNiaUFxWEhKY2JpQXFJRUJ3WVhKaGJTQjdVM1J5YVc1bmZTQmxkbVZ1ZEZ4eVhHNGdLaUJBY21WMGRYSnVJSHRDYjI5c1pXRnVmVnh5WEc0Z0tpQkFZWEJwSUhCMVlteHBZMXh5WEc0Z0tpOWNjbHh1WEhKY2JrVnRhWFIwWlhJdWNISnZkRzkwZVhCbExtaGhjMHhwYzNSbGJtVnljeUE5SUdaMWJtTjBhVzl1S0dWMlpXNTBLWHRjY2x4dUlDQnlaWFIxY200Z0lTRWdkR2hwY3k1c2FYTjBaVzVsY25Nb1pYWmxiblFwTG14bGJtZDBhRHRjY2x4dWZUdGNjbHh1SWl3aUlDOHFaMnh2WW1Gc0lFcFRUMDVGWkdsMGIzSXFMMXh1SjNWelpTQnpkSEpwWTNRbk8xeHVYRzUzYVc1a2IzY3VVM2RoWjJkbGNsVnBJRDBnUW1GamEySnZibVV1VW05MWRHVnlMbVY0ZEdWdVpDaDdYRzVjYmlBZ1pHOXRYMmxrT2lBbmMzZGhaMmRsY2w5MWFTY3NYRzVjYmlBZ0x5OGdRWFIwY21saWRYUmxjMXh1SUNCdmNIUnBiMjV6T2lCdWRXeHNMRnh1SUNCaGNHazZJRzUxYkd3c1hHNGdJR2hsWVdSbGNsWnBaWGM2SUc1MWJHd3NYRzRnSUcxaGFXNVdhV1YzT2lCdWRXeHNMRnh1WEc0Z0lDOHZJRk4zWVdkblpYSlZhU0JoWTJObGNIUnpJR0ZzYkNCMGFHVWdjMkZ0WlNCdmNIUnBiMjV6SUdGeklGTjNZV2RuWlhKQmNHbGNiaUFnYVc1cGRHbGhiR2w2WlRvZ1puVnVZM1JwYjI0b2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUc5d2RHbHZibk1nUFNCdmNIUnBiMjV6SUh4OElIdDlPMXh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11WkdWbVlYVnNkRTF2WkdWc1VtVnVaR1Z5YVc1bklDRTlQU0FuYlc5a1pXd25LU0I3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJsWm1GMWJIUk5iMlJsYkZKbGJtUmxjbWx1WnlBOUlDZHpZMmhsYldFbk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hiM0IwYVc5dWN5NW9hV2RvYkdsbmFIUlRhWHBsVkdoeVpYTm9iMnhrS1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG1ocFoyaHNhV2RvZEZOcGVtVlVhSEpsYzJodmJHUWdQU0F4TURBd01EQTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdRV3hzYjNjZ1pHOXRYMmxrSUhSdklHSmxJRzkyWlhKeWFXUmtaVzVjYmlBZ0lDQnBaaUFvYjNCMGFXOXVjeTVrYjIxZmFXUXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHOXRYMmxrSUQwZ2IzQjBhVzl1Y3k1a2IyMWZhV1E3WEc0Z0lDQWdJQ0JrWld4bGRHVWdiM0IwYVc5dWN5NWtiMjFmYVdRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRnZjSFJwYjI1ekxuTjFjSEJ2Y25SbFpGTjFZbTFwZEUxbGRHaHZaSE1wZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTV6ZFhCd2IzSjBaV1JUZFdKdGFYUk5aWFJvYjJSeklEMGdXMXh1SUNBZ0lDQWdJQ0FuWjJWMEp5eGNiaUFnSUNBZ0lDQWdKM0IxZENjc1hHNGdJQ0FnSUNBZ0lDZHdiM04wSnl4Y2JpQWdJQ0FnSUNBZ0oyUmxiR1YwWlNjc1hHNGdJQ0FnSUNBZ0lDZG9aV0ZrSnl4Y2JpQWdJQ0FnSUNBZ0oyOXdkR2x2Ym5NbkxGeHVJQ0FnSUNBZ0lDQW5jR0YwWTJnblhHNGdJQ0FnSUNCZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2IzQjBhVzl1Y3k1dllYVjBhREpTWldScGNtVmpkRlZ5YkNBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJSGRwYm1SdmR5NXZRWFYwYUZKbFpHbHlaV04wVlhKc0lEMGdiM0IwYVc5dWN5NXZZWFYwYURKU1pXUnBjbVZqZEZWeWJEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QkRjbVZoZEdVZ1lXNGdaVzF3ZEhrZ1pHbDJJSGRvYVdOb0lHTnZiblJoYVc1eklIUm9aU0JrYjIxZmFXUmNiaUFnSUNCcFppQW9JU0FrS0Njakp5QXJJSFJvYVhNdVpHOXRYMmxrS1M1c1pXNW5kR2dwZTF4dUlDQWdJQ0FnSkNnblltOWtlU2NwTG1Gd2NHVnVaQ2duUEdScGRpQnBaRDFjSWljZ0t5QjBhR2x6TG1SdmJWOXBaQ0FySUNkY0lqNDhMMlJwZGo0bktTQTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV2Y0hScGIyNXpJRDBnYjNCMGFXOXVjenRjYmx4dUlDQWdJQzh2SUhObGRDQnRZWEpyWldRZ2IzQjBhVzl1YzF4dUlDQWdJRzFoY210bFpDNXpaWFJQY0hScGIyNXpLSHRuWm0wNklIUnlkV1Y5S1R0Y2JseHVJQ0FnSUM4dklGTmxkQ0IwYUdVZ1kyRnNiR0poWTJ0elhHNGdJQ0FnZG1GeUlIUm9ZWFFnUFNCMGFHbHpPMXh1SUNBZ0lIUm9hWE11YjNCMGFXOXVjeTV6ZFdOalpYTnpJRDBnWm5WdVkzUnBiMjRvS1NCN0lISmxkSFZ5YmlCMGFHRjBMbkpsYm1SbGNpZ3BPeUI5TzF4dUlDQWdJSFJvYVhNdWIzQjBhVzl1Y3k1d2NtOW5jbVZ6Y3lBOUlHWjFibU4wYVc5dUtHUXBJSHNnY21WMGRYSnVJSFJvWVhRdWMyaHZkMDFsYzNOaFoyVW9aQ2s3SUgwN1hHNGdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtWmhhV3gxY21VZ1BTQm1kVzVqZEdsdmJpaGtLU0I3SUhKbGRIVnliaUIwYUdGMExtOXVURzloWkVaaGFXeDFjbVVvWkNrN0lIMDdYRzVjYmlBZ0lDQXZMeUJEY21WaGRHVWdkbWxsZHlCMGJ5Qm9ZVzVrYkdVZ2RHaGxJR2hsWVdSbGNpQnBibkIxZEhOY2JpQWdJQ0IwYUdsekxtaGxZV1JsY2xacFpYY2dQU0J1WlhjZ1UzZGhaMmRsY2xWcExsWnBaWGR6TGtobFlXUmxjbFpwWlhjb2UyVnNPaUFrS0NjamFHVmhaR1Z5SnlsOUtUdGNibHh1SUNBZ0lDOHZJRVYyWlc1MElHaGhibVJzWlhJZ1ptOXlJSGRvWlc0Z2RHaGxJR0poYzJWVmNtd3ZZWEJwUzJWNUlHbHpJR1Z1ZEdWeVpXUWdZbmtnZFhObGNseHVJQ0FnSUhSb2FYTXVhR1ZoWkdWeVZtbGxkeTV2YmlnbmRYQmtZWFJsTFhOM1lXZG5aWEl0ZFdrbkxDQm1kVzVqZEdsdmJpaGtZWFJoS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdoaGRDNTFjR1JoZEdWVGQyRm5aMlZ5Vldrb1pHRjBZU2s3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0F2THlCS1UyOXVJRVZrYVhSdmNpQmpkWE4wYjIwZ2RHaGxiV2x1WjF4dUlDQWdJQ0JLVTA5T1JXUnBkRzl5TG1SbFptRjFiSFJ6TG1samIyNXNhV0p6TG5OM1lXZG5aWElnUFNCS1UwOU9SV1JwZEc5eUxrRmljM1J5WVdOMFNXTnZia3hwWWk1bGVIUmxibVFvZTF4dUlDQWdJQ0FnYldGd2NHbHVaem9nZTF4dUlDQWdJQ0FnSUNCamIyeHNZWEJ6WlRvZ0oyTnZiR3hoY0hObEp5eGNiaUFnSUNBZ0lDQWdaWGh3WVc1a09pQW5aWGh3WVc1a0oxeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdhV052Ymw5d2NtVm1hWGc2SUNkemQyRm5aMlZ5TFNkY2JpQWdJQ0FnSUgwcE8xeHVYRzRnSUgwc1hHNWNiaUFnTHk4Z1UyVjBJR0Z1SUc5d2RHbHZiaUJoWm5SbGNpQnBibWwwYVdGc2FYcHBibWRjYmlBZ2MyVjBUM0IwYVc5dU9pQm1kVzVqZEdsdmJpaHZjSFJwYjI0c0lIWmhiSFZsS1NCN1hHNGdJQ0FnZEdocGN5NXZjSFJwYjI1elcyOXdkR2x2YmwwZ1BTQjJZV3gxWlR0Y2JpQWdmU3hjYmx4dUlDQXZMeUJIWlhRZ2RHaGxJSFpoYkhWbElHOW1JR0VnY0hKbGRtbHZkWE5zZVNCelpYUWdiM0IwYVc5dVhHNGdJR2RsZEU5d2RHbHZiam9nWm5WdVkzUnBiMjRvYjNCMGFXOXVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YjNCMGFXOXVjMXR2Y0hScGIyNWRPMXh1SUNCOUxGeHVYRzRnSUM4dklFVjJaVzUwSUdoaGJtUnNaWElnWm05eUlIZG9aVzRnZFhKc0wydGxlU0JwY3lCeVpXTmxhWFpsWkNCbWNtOXRJSFZ6WlhKY2JpQWdkWEJrWVhSbFUzZGhaMmRsY2xWcE9pQm1kVzVqZEdsdmJpaGtZWFJoS1h0Y2JpQWdJQ0IwYUdsekxtOXdkR2x2Ym5NdWRYSnNJRDBnWkdGMFlTNTFjbXc3WEc0Z0lDQWdkR2hwY3k1c2IyRmtLQ2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdRM0psWVhSbElHRnVJR0Z3YVNCaGJtUWdjbVZ1WkdWeVhHNGdJR3h2WVdRNklHWjFibU4wYVc5dUtDbDdYRzRnSUNBZ0x5OGdTVzVwZEdsaGJHbDZaU0IwYUdVZ1FWQkpJRzlpYW1WamRGeHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGFXNVdhV1YzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbTFoYVc1V2FXVjNMbU5zWldGeUtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVlYVjBhRlpwWlhjcElIdGNiaUFnSUNBZ0lIUm9hWE11WVhWMGFGWnBaWGN1Y21WdGIzWmxLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUIxY213Z1BTQjBhR2x6TG05d2RHbHZibk11ZFhKc08xeHVJQ0FnSUdsbUlDaDFjbXdnSmlZZ2RYSnNMbWx1WkdWNFQyWW9KMmgwZEhBbktTQWhQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2RYSnNJRDBnZEdocGN5NWlkV2xzWkZWeWJDaDNhVzVrYjNjdWJHOWpZWFJwYjI0dWFISmxaaTUwYjFOMGNtbHVaeWdwTENCMWNtd3BPMXh1SUNBZ0lIMWNiaUFnSUNCcFppaDBhR2x6TG1Gd2FTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNIUnBiMjV6TG1GMWRHaHZjbWw2WVhScGIyNXpJRDBnZEdocGN5NWhjR2t1WTJ4cFpXNTBRWFYwYUc5eWFYcGhkR2x2Ym5NdVlYVjBhSG83WEc0Z0lDQWdmVnh1SUNBZ0lIUm9hWE11YjNCMGFXOXVjeTUxY213Z1BTQjFjbXc3WEc0Z0lDQWdkR2hwY3k1b1pXRmtaWEpXYVdWM0xuVndaR0YwWlNoMWNtd3BPMXh1WEc0Z0lDQWdkR2hwY3k1aGNHa2dQU0J1WlhjZ1UzZGhaMmRsY2tOc2FXVnVkQ2gwYUdsekxtOXdkR2x2Ym5NcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUdOdmJHeGhjSE5sSUdGc2JDQnpaV04wYVc5dWMxeHVJQ0JqYjJ4c1lYQnpaVUZzYkRvZ1puVnVZM1JwYjI0b0tYdGNiaUFnSUNCRWIyTnpMbU52Ykd4aGNITmxSVzVrY0c5cGJuUk1hWE4wUm05eVVtVnpiM1Z5WTJVb0p5Y3BPMXh1SUNCOUxGeHVYRzRnSUM4dklHeHBjM1FnYjNCbGNtRjBhVzl1Y3lCbWIzSWdZV3hzSUhObFkzUnBiMjV6WEc0Z0lHeHBjM1JCYkd3NklHWjFibU4wYVc5dUtDbDdYRzRnSUNBZ1JHOWpjeTVqYjJ4c1lYQnpaVTl3WlhKaGRHbHZibk5HYjNKU1pYTnZkWEpqWlNnbkp5azdYRzRnSUgwc1hHNWNiaUFnTHk4Z1pYaHdZVzVrSUc5d1pYSmhkR2x2Ym5NZ1ptOXlJR0ZzYkNCelpXTjBhVzl1YzF4dUlDQmxlSEJoYm1SQmJHdzZJR1oxYm1OMGFXOXVLQ2w3WEc0Z0lDQWdSRzlqY3k1bGVIQmhibVJQY0dWeVlYUnBiMjV6Um05eVVtVnpiM1Z5WTJVb0p5Y3BPMXh1SUNCOUxGeHVYRzRnSUM4dklGUm9hWE1nYVhNZ1ltOTFibVFnZEc4Z2MzVmpZMlZ6Y3lCb1lXNWtiR1Z5SUdadmNpQlRkMkZuWjJWeVFYQnBYRzRnSUM4dklDQnpieUJwZENCblpYUnpJR05oYkd4bFpDQjNhR1Z1SUZOM1lXZG5aWEpCY0drZ1kyOXRjR3hsZEdWeklHeHZZV1JwYm1kY2JpQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpZ3BlMXh1SUNBZ0lIWmhjaUJoZFhSb2MwMXZaR1ZzTzF4dUlDQWdJSFJvYVhNdWMyaHZkMDFsYzNOaFoyVW9KMFpwYm1semFHVmtJRXh2WVdScGJtY2dVbVZ6YjNWeVkyVWdTVzVtYjNKdFlYUnBiMjR1SUZKbGJtUmxjbWx1WnlCVGQyRm5aMlZ5SUZWSkxpNHVKeWs3WEc0Z0lDQWdkR2hwY3k1dFlXbHVWbWxsZHlBOUlHNWxkeUJUZDJGbloyVnlWV2t1Vm1sbGQzTXVUV0ZwYmxacFpYY29lMXh1SUNBZ0lDQWdiVzlrWld3NklIUm9hWE11WVhCcExGeHVJQ0FnSUNBZ1pXdzZJQ1FvSnlNbklDc2dkR2hwY3k1a2IyMWZhV1FwTEZ4dUlDQWdJQ0FnYzNkaFoyZGxjazl3ZEdsdmJuTTZJSFJvYVhNdWIzQjBhVzl1Y3l4Y2JpQWdJQ0FnSUhKdmRYUmxjam9nZEdocGMxeHVJQ0FnSUgwcExuSmxibVJsY2lncE8xeHVJQ0FnSUdsbUlDZ2hYeTVwYzBWdGNIUjVLSFJvYVhNdVlYQnBMbk5sWTNWeWFYUjVSR1ZtYVc1cGRHbHZibk1wS1h0Y2JpQWdJQ0FnSUdGMWRHaHpUVzlrWld3Z1BTQmZMbTFoY0NoMGFHbHpMbUZ3YVM1elpXTjFjbWwwZVVSbFptbHVhWFJwYjI1ekxDQm1kVzVqZEdsdmJpQW9ZWFYwYUN3Z2JtRnRaU2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjbVZ6ZFd4MElEMGdlMzA3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkRnR1WVcxbFhTQTlJR0YxZEdnN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUhSb2FYTXVZWFYwYUZacFpYY2dQU0J1WlhjZ1UzZGhaMmRsY2xWcExsWnBaWGR6TGtGMWRHaENkWFIwYjI1V2FXVjNLSHRjYmlBZ0lDQWdJQ0FnWkdGMFlUb2dVM2RoWjJkbGNsVnBMblYwYVd4ekxuQmhjbk5sVTJWamRYSnBkSGxFWldacGJtbDBhVzl1Y3loaGRYUm9jMDF2WkdWc0tTeGNiaUFnSUNBZ0lDQWdjbTkxZEdWeU9pQjBhR2x6WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNRb0p5TmhkWFJvWDJOdmJuUmhhVzVsY2ljcExtRndjR1Z1WkNoMGFHbHpMbUYxZEdoV2FXVjNMbkpsYm1SbGNpZ3BMbVZzS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1emFHOTNUV1Z6YzJGblpTZ3BPMXh1SUNBZ0lITjNhWFJqYUNBb2RHaHBjeTV2Y0hScGIyNXpMbVJ2WTBWNGNHRnVjMmx2YmlrZ2UxeHVJQ0FnSUNBZ1kyRnpaU0FuWm5Wc2JDYzZYRzRnSUNBZ0lDQWdJSFJvYVhNdVpYaHdZVzVrUVd4c0tDazdJR0p5WldGck8xeHVJQ0FnSUNBZ1kyRnpaU0FuYkdsemRDYzZYRzRnSUNBZ0lDQWdJSFJvYVhNdWJHbHpkRUZzYkNncE95QmljbVZoYXp0Y2JpQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkpsYm1SbGNrZEdUU2dwTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV2YmtOdmJYQnNaWFJsS1h0Y2JpQWdJQ0FnSUhSb2FYTXViM0IwYVc5dWN5NXZia052YlhCc1pYUmxLSFJvYVhNdVlYQnBMQ0IwYUdsektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCelpYUlVhVzFsYjNWMEtFUnZZM011YzJobFltRnVaeTVpYVc1a0tIUm9hWE1wTENBeE1EQXBPMXh1SUNCOUxGeHVYRzRnSUdKMWFXeGtWWEpzT2lCbWRXNWpkR2x2YmloaVlYTmxMQ0IxY213cGUxeHVJQ0FnSUdsbUlDaDFjbXd1YVc1a1pYaFBaaWduTHljcElEMDlQU0F3S1NCN1hHNGdJQ0FnSUNCMllYSWdjR0Z5ZEhNZ1BTQmlZWE5sTG5Od2JHbDBLQ2N2SnlrN1hHNGdJQ0FnSUNCaVlYTmxJRDBnY0dGeWRITmJNRjBnS3lBbkx5OG5JQ3NnY0dGeWRITmJNbDA3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZbUZ6WlNBcklIVnliRHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJR1Z1WkU5bVVHRjBhQ0E5SUdKaGMyVXViR1Z1WjNSb08xeHVYRzRnSUNBZ0lDQnBaaUFvWW1GelpTNXBibVJsZUU5bUtDYy9KeWtnUGlBdE1TbDdYRzRnSUNBZ0lDQWdJR1Z1WkU5bVVHRjBhQ0E5SUUxaGRHZ3ViV2x1S0dWdVpFOW1VR0YwYUN3Z1ltRnpaUzVwYm1SbGVFOW1LQ2MvSnlrcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvWW1GelpTNXBibVJsZUU5bUtDY2pKeWtnUGlBdE1TbDdYRzRnSUNBZ0lDQWdJR1Z1WkU5bVVHRjBhQ0E5SUUxaGRHZ3ViV2x1S0dWdVpFOW1VR0YwYUN3Z1ltRnpaUzVwYm1SbGVFOW1LQ2NqSnlrcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmlZWE5sSUQwZ1ltRnpaUzV6ZFdKemRISnBibWNvTUN3Z1pXNWtUMlpRWVhSb0tUdGNibHh1SUNBZ0lDQWdhV1lnS0dKaGMyVXVhVzVrWlhoUFppZ25MeWNzSUdKaGMyVXViR1Z1WjNSb0lDMGdNU0FwSUNFOVBTQXRNU2w3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJpWVhObElDc2dkWEpzTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWW1GelpTQXJJQ2N2SnlBcklIVnliRHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHk4Z1UyaHZkM01nYldWemMyRm5aU0J2YmlCMGIzQmlZWElnYjJZZ2RHaGxJSFZwWEc0Z0lITm9iM2ROWlhOellXZGxPaUJtZFc1amRHbHZiaWhrWVhSaEtYdGNiaUFnSUNCcFppQW9aR0YwWVNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JrWVhSaElEMGdKeWM3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhjaUFrYlhOblltRnlJRDBnSkNnbkkyMWxjM05oWjJVdFltRnlKeWs3WEc0Z0lDQWdKRzF6WjJKaGNpNXlaVzF2ZG1WRGJHRnpjeWduYldWemMyRm5aUzFtWVdsc0p5azdYRzRnSUNBZ0pHMXpaMkpoY2k1aFpHUkRiR0Z6Y3lnbmJXVnpjMkZuWlMxemRXTmpaWE56SnlrN1hHNGdJQ0FnSkcxeloySmhjaTUwWlhoMEtHUmhkR0VwTzF4dUlDQWdJR2xtS0hkcGJtUnZkeTVUZDJGbloyVnlWSEpoYm5Oc1lYUnZjaWtnZTF4dUlDQWdJQ0FnZDJsdVpHOTNMbE4zWVdkblpYSlVjbUZ1YzJ4aGRHOXlMblJ5WVc1emJHRjBaU2drYlhOblltRnlLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHk4Z2MyaHZkM01nYldWemMyRm5aU0JwYmlCeVpXUmNiaUFnYjI1TWIyRmtSbUZwYkhWeVpUb2dablZ1WTNScGIyNG9aR0YwWVNsN1hHNGdJQ0FnYVdZZ0tHUmhkR0VnUFQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdaR0YwWVNBOUlDY25PMXh1SUNBZ0lIMWNiaUFnSUNBa0tDY2piV1Z6YzJGblpTMWlZWEluS1M1eVpXMXZkbVZEYkdGemN5Z25iV1Z6YzJGblpTMXpkV05qWlhOekp5azdYRzRnSUNBZ0pDZ25JMjFsYzNOaFoyVXRZbUZ5SnlrdVlXUmtRMnhoYzNNb0oyMWxjM05oWjJVdFptRnBiQ2NwTzF4dVhHNGdJQ0FnZG1GeUlIWmhiQ0E5SUNRb0p5TnRaWE56WVdkbExXSmhjaWNwTG5SbGVIUW9aR0YwWVNrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG05dVJtRnBiSFZ5WlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV2Y0hScGIyNXpMbTl1Um1GcGJIVnlaU2hrWVhSaEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZG1Gc08xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZKbGJtUmxjbk1nUjBaTklHWnZjaUJsYkdWdFpXNTBjeUIzYVhSb0lDZHRZWEpyWkc5M2JpY2dZMnhoYzNOY2JpQWdjbVZ1WkdWeVIwWk5PaUJtZFc1amRHbHZiaWdwZTF4dUlDQWdJQ1FvSnk1dFlYSnJaRzkzYmljcExtVmhZMmdvWm5WdVkzUnBiMjRvS1h0Y2JpQWdJQ0FnSUNRb2RHaHBjeWt1YUhSdGJDaHRZWEpyWldRb0pDaDBhR2x6S1M1b2RHMXNLQ2twS1R0Y2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUNRb0p5NXdjbTl3UkdWell5Y3NJQ2N1Ylc5a1pXd3RjMmxuYm1GMGRYSmxJQzVrWlhOamNtbHdkR2x2YmljcExtVmhZMmdvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0pDaDBhR2x6S1M1b2RHMXNLRzFoY210bFpDZ2tLSFJvYVhNcExtaDBiV3dvS1NrcExtRmtaRU5zWVhOektDZHRZWEpyWkc5M2JpY3BPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNibjBwTzF4dVhHNTNhVzVrYjNjdVUzZGhaMmRsY2xWcExsWnBaWGR6SUQwZ2UzMDdYRzUzYVc1a2IzY3VVM2RoWjJkbGNsVnBMazF2WkdWc2N5QTlJSHQ5TzF4dWQybHVaRzkzTGxOM1lXZG5aWEpWYVM1RGIyeHNaV04wYVc5dWN5QTlJSHQ5TzF4dWQybHVaRzkzTGxOM1lXZG5aWEpWYVM1d1lYSjBhV0ZzY3lBOUlIdDlPMXh1ZDJsdVpHOTNMbE4zWVdkblpYSlZhUzUxZEdsc2N5QTlJSHQ5TzF4dVhHNHZMeUJrYjI0bmRDQmljbVZoYXlCaVlXTnJkMkZ5WkNCamIyMXdZWFJwWW1sc2FYUjVJSGRwZEdnZ2NISmxkbWx2ZFhNZ2RtVnljMmx2Ym5NZ1lXNWtJSGRoY200Z2RYTmxjbk1nZEc4Z2RYQm5jbUZrWlNCMGFHVnBjaUJqYjJSbFhHNG9ablZ1WTNScGIyNG9LWHRjYmlBZ2QybHVaRzkzTG1GMWRHaHZjbWw2WVhScGIyNXpJRDBnZTF4dUlDQWdJR0ZrWkRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQjNZWEp1S0NkVmMybHVaeUIzYVc1a2IzY3VZWFYwYUc5eWFYcGhkR2x2Ym5NZ2FYTWdaR1Z3Y21WallYUmxaQzRnVUd4bFlYTmxJSFZ6WlNCVGQyRm5aMlZ5VldrdVlYQnBMbU5zYVdWdWRFRjFkR2h2Y21sNllYUnBiMjV6TG1Ga1pDZ3BMaWNwTzF4dVhHNGdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIZHBibVJ2ZHk1emQyRm5aMlZ5VldrZ1BUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QlVlWEJsUlhKeWIzSW9KM2RwYm1SdmR5NXpkMkZuWjJWeVZXa2dhWE1nYm05MElHUmxabWx1WldRbktUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0hkcGJtUnZkeTV6ZDJGbloyVnlWV2tnYVc1emRHRnVZMlZ2WmlCVGQyRm5aMlZ5VldrcElIdGNiaUFnSUNBZ0lDQWdkMmx1Wkc5M0xuTjNZV2RuWlhKVmFTNWhjR2t1WTJ4cFpXNTBRWFYwYUc5eWFYcGhkR2x2Ym5NdVlXUmtMbUZ3Y0d4NUtIZHBibVJ2ZHk1emQyRm5aMlZ5VldrdVlYQnBMbU5zYVdWdWRFRjFkR2h2Y21sNllYUnBiMjV6TENCaGNtZDFiV1Z1ZEhNcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQjNhVzVrYjNjdVFYQnBTMlY1UVhWMGFHOXlhWHBoZEdsdmJpQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJSGRoY200b0ozZHBibVJ2ZHk1QmNHbExaWGxCZFhSb2IzSnBlbUYwYVc5dUlHbHpJR1JsY0hKbFkyRjBaV1F1SUZCc1pXRnpaU0IxYzJVZ1UzZGhaMmRsY2tOc2FXVnVkQzVCY0dsTFpYbEJkWFJvYjNKcGVtRjBhVzl1TGljcE8xeHVJQ0FnSUZOM1lXZG5aWEpEYkdsbGJuUXVRWEJwUzJWNVFYVjBhRzl5YVhwaGRHbHZiaTVoY0hCc2VTaDNhVzVrYjNjc0lHRnlaM1Z0Wlc1MGN5azdYRzRnSUgwN1hHNWNiaUFnZDJsdVpHOTNMbEJoYzNOM2IzSmtRWFYwYUc5eWFYcGhkR2x2YmlBOUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lIZGhjbTRvSjNkcGJtUnZkeTVRWVhOemQyOXlaRUYxZEdodmNtbDZZWFJwYjI0Z2FYTWdaR1Z3Y21WallYUmxaQzRnVUd4bFlYTmxJSFZ6WlNCVGQyRm5aMlZ5UTJ4cFpXNTBMbEJoYzNOM2IzSmtRWFYwYUc5eWFYcGhkR2x2Ymk0bktUdGNiaUFnSUNCVGQyRm5aMlZ5UTJ4cFpXNTBMbEJoYzNOM2IzSmtRWFYwYUc5eWFYcGhkR2x2Ymk1aGNIQnNlU2gzYVc1a2IzY3NJR0Z5WjNWdFpXNTBjeWs3WEc0Z0lIMDdYRzVjYmlBZ1puVnVZM1JwYjI0Z2QyRnliaWh0WlhOellXZGxLU0I3WEc0Z0lDQWdhV1lnS0NkamIyNXpiMnhsSnlCcGJpQjNhVzVrYjNjZ0ppWWdkSGx3Wlc5bUlIZHBibVJ2ZHk1amIyNXpiMnhsTG5kaGNtNGdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lHTnZibk52YkdVdWQyRnliaWh0WlhOellXZGxLVHRjYmlBZ0lDQjlYRzRnSUgxY2JuMHBLQ2s3WEc1Y2JseHVMeThnVlUxRVhHNG9ablZ1WTNScGIyNGdLSEp2YjNRc0lHWmhZM1J2Y25rcElIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHUmxabWx1WlNBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCa1pXWnBibVV1WVcxa0tTQjdYRzRnSUNBZ0lDQWdJQzh2SUVGTlJDNGdVbVZuYVhOMFpYSWdZWE1nWVc0Z1lXNXZibmx0YjNWeklHMXZaSFZzWlM1Y2JpQWdJQ0FnSUNBZ1pHVm1hVzVsS0ZzbllpZGRMQ0JtZFc1amRHbHZiaUFvWWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2h5YjI5MExsTjNZV2RuWlhKVmFTQTlJR1poWTNSdmNua29ZaWtwTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCbGVIQnZjblJ6SUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdJQ0F2THlCT2IyUmxMaUJFYjJWeklHNXZkQ0IzYjNKcklIZHBkR2dnYzNSeWFXTjBJRU52YlcxdmJrcFRMQ0JpZFhSY2JpQWdJQ0FnSUNBZ0x5OGdiMjVzZVNCRGIyMXRiMjVLVXkxc2FXdGxJR1Z1ZG1seWIyNXRaVzUwY3lCMGFHRjBJSE4xY0hCdmNuUWdiVzlrZFd4bExtVjRjRzl5ZEhNc1hHNGdJQ0FnSUNBZ0lDOHZJR3hwYTJVZ1RtOWtaUzVjYmlBZ0lDQWdJQ0FnYlc5a2RXeGxMbVY0Y0c5eWRITWdQU0JtWVdOMGIzSjVLSEpsY1hWcGNtVW9KMkluS1NrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1FuSnZkM05sY2lCbmJHOWlZV3h6WEc0Z0lDQWdJQ0FnSUhKdmIzUXVVM2RoWjJkbGNsVnBJRDBnWm1GamRHOXllU2h5YjI5MExtSXBPMXh1SUNBZ0lIMWNibjBvZEdocGN5d2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlRkMkZuWjJWeVZXazdYRzU5S1NrN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNibmRwYm1SdmR5NVRkMkZuWjJWeVZXa3VkWFJwYkhNZ1BTQjdYRzRnSUNBZ2NHRnljMlZUWldOMWNtbDBlVVJsWm1sdWFYUnBiMjV6T2lCbWRXNWpkR2x2YmlBb2MyVmpkWEpwZEhrc0lITmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJuTXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHRjFkR2h6SUQwZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z2MyVmpkWEpwZEhsRVpXWnBibWwwYVc5dWN5azdYRzRnSUNBZ0lDQWdJSFpoY2lCdllYVjBhREpCY25JZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnZG1GeUlHRjFkR2h6UVhKeUlEMGdXMTA3WEc0Z0lDQWdJQ0FnSUhaaGNpQnpZMjl3WlhNZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnZG1GeUlIVjBhV3h6SUQwZ2QybHVaRzkzTGxOM1lXZG5aWEpWYVM1MWRHbHNjenRjYmx4dUlDQWdJQ0FnSUNCcFppQW9JVUZ5Y21GNUxtbHpRWEp5WVhrb2MyVmpkWEpwZEhrcEtTQjdJSEpsZEhWeWJpQnVkV3hzT3lCOVhHNWNiaUFnSUNBZ0lDQWdjMlZqZFhKcGRIa3VabTl5UldGamFDaG1kVzVqZEdsdmJpQW9hWFJsYlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlITnBibWRzWlZObFkzVnlhWFI1SUQwZ2UzMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdjMmx1WjJ4bFQyRjFkR2d5VTJWamRYSnBkSGtnUFNCN2ZUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2EyVjVJR2x1SUdsMFpXMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hwZEdWdFcydGxlVjBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFlYVjBhSE5iYTJWNVhTa2dleUJqYjI1MGFXNTFaVHNnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkWFJvYzF0clpYbGRJRDBnWVhWMGFITmJhMlY1WFNCOGZDQjdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0YxZEdoelcydGxlVjB1ZEhsd1pTQTlQVDBnSjI5aGRYUm9NaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOcGJtZHNaVTloZFhSb01sTmxZM1Z5YVhSNVcydGxlVjBnUFNCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCaGRYUm9jMXRyWlhsZEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnBibWRzWlU5aGRYUm9NbE5sWTNWeWFYUjVXMnRsZVYwdWMyTnZjR1Z6SUQwZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z1lYVjBhSE5iYTJWNVhTNXpZMjl3WlhNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2gyWVhJZ2FTQnBiaUJ6YVc1bmJHVlBZWFYwYURKVFpXTjFjbWwwZVZ0clpYbGRMbk5qYjNCbGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBkR1Z0VzJ0bGVWMHVhVzVrWlhoUFppaHBLU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnNaWFJsSUhOcGJtZHNaVTloZFhSb01sTmxZM1Z5YVhSNVcydGxlVjB1YzJOdmNHVnpXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnBibWRzWlU5aGRYUm9NbE5sWTNWeWFYUjVXMnRsZVYwdWMyTnZjR1Z6SUQwZ2RYUnBiSE11Y0dGeWMyVlBZWFYwYURKVFkyOXdaWE1vYzJsdVoyeGxUMkYxZEdneVUyVmpkWEpwZEhsYmEyVjVYUzV6WTI5d1pYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMk52Y0dWeklEMGdYeTV0WlhKblpTaHpZMjl3WlhNc0lITnBibWRzWlU5aGRYUm9NbE5sWTNWeWFYUjVXMnRsZVYwdWMyTnZjR1Z6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnBibWRzWlZObFkzVnlhWFI1VzJ0bGVWMGdQU0JQWW1wbFkzUXVZWE56YVdkdUtIdDlMQ0JoZFhSb2MxdHJaWGxkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBkR1Z0VzJ0bGVWMHVkSGx3WlNBOVBUMGdKMjloZFhSb01pY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5wYm1kc1pVOWhkWFJvTWxObFkzVnlhWFI1VzJ0bGVWMGdQU0JQWW1wbFkzUXVZWE56YVdkdUtIdDlMQ0JwZEdWdFcydGxlVjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJsdVoyeGxUMkYxZEdneVUyVmpkWEpwZEhsYmEyVjVYUzV6WTI5d1pYTWdQU0IxZEdsc2N5NXdZWEp6WlU5aGRYUm9NbE5qYjNCbGN5aHphVzVuYkdWUFlYVjBhREpUWldOMWNtbDBlVnRyWlhsZExuTmpiM0JsY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCelkyOXdaWE1nUFNCZkxtMWxjbWRsS0hOamIzQmxjeXdnYzJsdVoyeGxUMkYxZEdneVUyVmpkWEpwZEhsYmEyVjVYUzV6WTI5d1pYTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJsdVoyeGxVMlZqZFhKcGRIbGJhMlY1WFNBOUlHbDBaVzFiYTJWNVhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGZkxtbHpSVzF3ZEhrb2MybHVaMnhsVTJWamRYSnBkSGtwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lYVjBhSE5CY25JdWNIVnphQ2h6YVc1bmJHVlRaV04xY21sMGVTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzBWdGNIUjVLSE5wYm1kc1pVOWhkWFJvTWxObFkzVnlhWFI1S1NsN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyRjFkR2d5UVhKeUxuQjFjMmdvYzJsdVoyeGxUMkYxZEdneVUyVmpkWEpwZEhrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1lYVjBhSE1nT2lCaGRYUm9jMEZ5Y2l4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzloZFhSb01qb2diMkYxZEdneVFYSnlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2MyTnZjR1Z6T2lCelkyOXdaWE5jYmlBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnY0dGeWMyVlBZWFYwYURKVFkyOXdaWE02SUdaMWJtTjBhVzl1SUNoa1lYUmhLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnpZMjl3WlhNZ1BTQlBZbXBsWTNRdVlYTnphV2R1S0h0OUxDQmtZWFJoS1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJRnRkTzF4dUlDQWdJQ0FnSUNCMllYSWdhMlY1TzF4dVhHNGdJQ0FnSUNBZ0lHWnZjaUFvYTJWNUlHbHVJSE5qYjNCbGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVnpkV3gwTG5CMWMyZ29lM05qYjNCbE9pQnJaWGtzSUdSbGMyTnlhWEIwYVc5dU9pQnpZMjl3WlhOYmEyVjVYWDBwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnYzJGdWFYUnBlbVU2SUdaMWJtTjBhVzl1S0doMGJXd3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1UzUnlhWEFnZEdobElITmpjbWx3ZENCMFlXZHpJR1p5YjIwZ2RHaGxJR2gwYld3Z1lXNWtJR2x1YkdsdVpTQmxkbVZ1YUdGdVpHeGxjbk5jYmlBZ0lDQWdJQ0FnYUhSdGJDQTlJR2gwYld3dWNtVndiR0ZqWlNndlBITmpjbWx3ZEZ4Y1lsdGVQRjBxS0Q4NktEOGhQRnhjTDNOamNtbHdkRDRwUEZ0ZVBGMHFLU284WEZ3dmMyTnlhWEIwUGk5bmFTd2dKeWNwTzF4dUlDQWdJQ0FnSUNCb2RHMXNJRDBnYUhSdGJDNXlaWEJzWVdObEtDOG9iMjVjWEhjclBWd2lXMTVjSWwwcVhDSXBLaWh2Ymx4Y2R5czlKMXRlSjEwcUp5a3FLRzl1WEZ4M0t6MWNYSGNxWEZ3b1hGeDNLbHhjS1NrcUwyZHBMQ0FuSnlrN1hHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHaDBiV3c3WEc0Z0lDQWdmVnh1ZlRzaUxDSW5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JsTjNZV2RuWlhKVmFTNU5iMlJsYkhNdVFYQnBTMlY1UVhWMGFFMXZaR1ZzSUQwZ1FtRmphMkp2Ym1VdVRXOWtaV3d1WlhoMFpXNWtLSHRjYmlBZ0lDQmtaV1poZFd4MGN6b2dlMXh1SUNBZ0lDQWdJQ0FuYVc0bk9pQW5KeXhjYmlBZ0lDQWdJQ0FnYm1GdFpUb2dKeWNzWEc0Z0lDQWdJQ0FnSUhScGRHeGxPaUFuSnl4Y2JpQWdJQ0FnSUNBZ2RtRnNkV1U2SUNjblhHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdsdWFYUnBZV3hwZW1VNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXZiaWduWTJoaGJtZGxKeXdnZEdocGN5NTJZV3hwWkdGMFpTazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lIWmhiR2xrWVhSbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQjJZV3hwWkNBOUlDRWhkR2hwY3k1blpYUW9KM1poYkhWbEp5azdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFFvSjNaaGJHbGtKeXdnZG1Gc2FXUXBPMXh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4cFpEdGNiaUFnSUNCOVhHNTlLVHNpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1V2FXVjNjeTVCY0dsTFpYbEJkWFJvVm1sbGR5QTlJRUpoWTJ0aWIyNWxMbFpwWlhjdVpYaDBaVzVrS0hzZ0x5OGdWRTlFVHpvZ1lYQndaVzVrSUhSb2FYTWdkRzhnWjJ4dlltRnNJRk4zWVdkblpYSlZhVnh1WEc0Z0lDQWdaWFpsYm5Sek9pQjdYRzRnSUNBZ0lDQWdJQ2RqYUdGdVoyVWdMbWx1Y0hWMFgyRndhVXRsZVY5bGJuUnllU2M2SUNkaGNHbExaWGxEYUdGdVoyVW5YRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmxiR1ZqZEc5eWN6b2dlMXh1SUNBZ0lDQWdJQ0JoY0dsclpYbEpibkIxZERvZ0p5NXBibkIxZEY5aGNHbExaWGxmWlc1MGNua25YRzRnSUNBZ2ZTeGNibHh1SUNBZ0lIUmxiWEJzWVhSbE9pQklZVzVrYkdWaVlYSnpMblJsYlhCc1lYUmxjeTVoY0dsclpYbGZZWFYwYUN4Y2JseHVJQ0FnSUdsdWFYUnBZV3hwZW1VNklHWjFibU4wYVc5dUtHOXdkSE1wSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV2Y0hScGIyNXpJRDBnYjNCMGN5QjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5YjNWMFpYSWdQU0IwYUdsekxtOXdkR2x2Ym5NdWNtOTFkR1Z5TzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwZTF4dUlDQWdJQ0FnSUNCMGFHbHpMaVJsYkM1b2RHMXNLSFJvYVhNdWRHVnRjR3hoZEdVb2RHaHBjeTV0YjJSbGJDNTBiMHBUVDA0b0tTa3BPMXh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCaGNHbExaWGxEYUdGdVoyVTZJR1oxYm1OMGFXOXVJQ2hsS1NCN1hHNGdJQ0FnSUNBZ0lIWmhjaUIyWVd3Z1BTQWtLR1V1ZEdGeVoyVjBLUzUyWVd3b0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0haaGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTRrS0hSb2FYTXVjMlZzWldOMGIzSnpMbUZ3YVd0bGVVbHVjSFYwS1M1eVpXMXZkbVZEYkdGemN5Z25aWEp5YjNJbktUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXViVzlrWld3dWMyVjBLQ2QyWVd4MVpTY3NJSFpoYkNrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdselZtRnNhV1E2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Ylc5a1pXd3VkbUZzYVdSaGRHVW9LVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdhR2xuYUd4cFoyaDBTVzUyWVd4cFpEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNncEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMaVFvZEdocGN5NXpaV3hsWTNSdmNuTXVZWEJwYTJWNVNXNXdkWFFwTG1Ga1pFTnNZWE56S0NkbGNuSnZjaWNwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNTlLVHNpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1V2FXVjNjeTVCZFhSb1FuVjBkRzl1Vm1sbGR5QTlJRUpoWTJ0aWIyNWxMbFpwWlhjdVpYaDBaVzVrS0h0Y2JpQWdJQ0JsZG1WdWRITTZJSHRjYmlBZ0lDQWdJQ0FnSjJOc2FXTnJJQzVoZFhSb2IzSnBlbVZmWDJKMGJpYzZJQ2RoZFhSb2IzSnBlbVZDZEc1RGJHbGpheWRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdkSEJzY3pvZ2UxeHVJQ0FnSUNBZ0lDQndiM0IxY0RvZ1NHRnVaR3hsWW1GeWN5NTBaVzF3YkdGMFpYTXVjRzl3ZFhBc1hHNGdJQ0FnSUNBZ0lHRjFkR2hDZEc0NklFaGhibVJzWldKaGNuTXVkR1Z0Y0d4aGRHVnpMbUYxZEdoZlluVjBkRzl1TEZ4dUlDQWdJQ0FnSUNCaGRYUm9RblJ1VDNCbGNtRjBhVzl1T2lCSVlXNWtiR1ZpWVhKekxuUmxiWEJzWVhSbGN5NWhkWFJvWDJKMWRIUnZibDl2Y0dWeVlYUnBiMjVjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdhVzVwZEdsaGJHbDZaVG9nWm5WdVkzUnBiMjRvYjNCMGN5a2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtOXdkR2x2Ym5NZ1BTQnZjSFJ6SUh4OElIdDlPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtOXdkR2x2Ym5NdVpHRjBZU0E5SUhSb2FYTXViM0IwYVc5dWN5NWtZWFJoSUh4OElIdDlPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtbHpUM0JsY21GMGFXOXVJRDBnZEdocGN5NXZjSFJwYjI1ekxtbHpUM0JsY21GMGFXOXVPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXZaR1ZzSUQwZ2RHaHBjeTV0YjJSbGJDQjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5YjNWMFpYSWdQU0IwYUdsekxtOXdkR2x2Ym5NdWNtOTFkR1Z5TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbUYxZEdoeklEMGdkR2hwY3k1dmNIUnBiMjV6TG1SaGRHRXViMkYxZEdneUxtTnZibU5oZENoMGFHbHpMbTl3ZEdsdmJuTXVaR0YwWVM1aGRYUm9jeWs3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdkSEJzVG1GdFpTQTlJSFJvYVhNdWFYTlBjR1Z5WVhScGIyNGdQeUFuWVhWMGFFSjBiazl3WlhKaGRHbHZiaWNnT2lBbllYVjBhRUowYmljN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k0a1lYVjBhRVZzSUQwZ2RHaHBjeTV5Wlc1a1pYSkJkWFJvY3loMGFHbHpMbUYxZEdoektUdGNiaUFnSUNBZ0lDQWdkR2hwY3k0a1pXd3VhSFJ0YkNoMGFHbHpMblJ3YkhOYmRIQnNUbUZ0WlYwb2RHaHBjeTV0YjJSbGJDa3BPMXh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCaGRYUm9iM0pwZW1WQ2RHNURiR2xqYXpvZ1puVnVZM1JwYjI0Z0tHVXBJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHRjFkR2h6VFc5a1pXdzdYRzVjYmlBZ0lDQWdJQ0FnWlM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwTzF4dVhHNGdJQ0FnSUNBZ0lHRjFkR2h6VFc5a1pXd2dQU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhWFJzWlRvZ0owRjJZV2xzWVdKc1pTQmhkWFJvYjNKcGVtRjBhVzl1Y3ljc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MFpXNTBPaUIwYUdsekxpUmhkWFJvUld4Y2JpQWdJQ0FnSUNBZ2ZUdGNibHh1SUNBZ0lDQWdJQ0F2THlCVWFHVWdZMjl1ZEdWdWRDQnZaaUIwYUdVZ2NHOXdkWEFnYVhNZ2NtVnRiM1psWkNCaGJtUWdZV3hzSUdWMlpXNTBjeUIxYm1KdmRXNWtJR0ZtZEdWeUlHTnNhV05yYVc1bklIUm9aU0FuUTJGdVkyVnNKeUJpZFhSMGIyNGdiMllnZEdobElIQnZjSFZ3TGx4dUlDQWdJQ0FnSUNBdkx5QlhaU2RzYkNCb1lYWmxJSFJ2SUhKbExYSmxibVJsY2lCMGFHVWdZMjl1ZEdWdWRITWdZbVZtYjNKbElHTnlaV0YwYVc1bklHRWdibVYzSUhCdmNIVndJSFpwWlhjdVhHNGdJQ0FnSUNBZ0lIUm9hWE11Y21WdVpHVnlLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3YjNCMWNDQTlJRzVsZHlCVGQyRm5aMlZ5VldrdVZtbGxkM011VUc5d2RYQldhV1YzS0h0dGIyUmxiRG9nWVhWMGFITk5iMlJsYkgwcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CdmNIVndMbkpsYm1SbGNpZ3BPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnlaVzVrWlhKQmRYUm9jem9nWm5WdVkzUnBiMjRnS0dGMWRHaHpLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQWtaV3dnUFNBa0tDYzhaR2wyUGljcE8xeHVJQ0FnSUNBZ0lDQjJZWElnYVhOTWIyZHZkWFFnUFNCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnSUNCaGRYUm9jeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hoZFhSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdZWFYwYUZacFpYY2dQU0J1WlhjZ1UzZGhaMmRsY2xWcExsWnBaWGR6TGtGMWRHaFdhV1YzS0h0a1lYUmhPaUJoZFhSb0xDQnliM1YwWlhJNklIUm9hWE11Y205MWRHVnlmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWVhWMGFFVnNJRDBnWVhWMGFGWnBaWGN1Y21WdVpHVnlLQ2t1Wld3N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrWld3dVlYQndaVzVrS0dGMWRHaEZiQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWVhWMGFGWnBaWGN1YVhOTWIyZHZkWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGMweHZaMjkxZENBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBzSUhSb2FYTXBPMXh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXViVzlrWld3dWFYTk1iMmR2ZFhRZ1BTQnBjMHh2WjI5MWREdGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdKR1ZzTzF4dUlDQWdJSDFjYmx4dWZTazdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1RGIyeHNaV04wYVc5dWN5NUJkWFJvYzBOdmJHeGxZM1JwYjI0Z1BTQkNZV05yWW05dVpTNURiMnhzWldOMGFXOXVMbVY0ZEdWdVpDaDdYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdZWEpuY3lBOUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1emJHbGpaUzVqWVd4c0tHRnlaM1Z0Wlc1MGN5azdYRzVjYmlBZ0lDQWdJQ0FnWVhKbmMxc3dYU0E5SUhSb2FYTXVjR0Z5YzJVb1lYSm5jMXN3WFNrN1hHNWNiaUFnSUNBZ0lDQWdRbUZqYTJKdmJtVXVRMjlzYkdWamRHbHZiaTVoY0hCc2VTaDBhR2x6TENCaGNtZHpLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdZV1JrT2lCbWRXNWpkR2x2YmlBb2JXOWtaV3dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR0Z5WjNNZ1BTQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaGhjbWQxYldWdWRITXBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0cxdlpHVnNLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZWEpuYzFzd1hTQTlJRjh1YldGd0tHMXZaR1ZzTENCbWRXNWpkR2x2YmloMllXd3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1b1lXNWtiR1ZQYm1Vb2RtRnNLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNJSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVhKbmMxc3dYU0E5SUhSb2FYTXVhR0Z1Wkd4bFQyNWxLRzF2WkdWc0tUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUVKaFkydGliMjVsTGtOdmJHeGxZM1JwYjI0dWNISnZkRzkwZVhCbExtRmtaQzVoY0hCc2VTaDBhR2x6TENCaGNtZHpLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdhR0Z1Wkd4bFQyNWxPaUJtZFc1amRHbHZiaUFvYlc5a1pXd3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlHMXZaR1ZzTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doSUNodGIyUmxiQ0JwYm5OMFlXNWpaVzltSUVKaFkydGliMjVsTGsxdlpHVnNLU0FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFDQW9iVzlrWld3dWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMjloZFhSb01pYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMzVnNkQ0E5SUc1bGR5QlRkMkZuWjJWeVZXa3VUVzlrWld4ekxrOWhkWFJvTWsxdlpHVnNLRzF2WkdWc0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblltRnphV01uT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQnVaWGNnVTNkaFoyZGxjbFZwTGsxdlpHVnNjeTVDWVhOcFkwRjFkR2hOYjJSbGJDaHRiMlJsYkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJGd2FVdGxlU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlHNWxkeUJUZDJGbloyVnlWV2t1VFc5a1pXeHpMa0Z3YVV0bGVVRjFkR2hOYjJSbGJDaHRiMlJsYkNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJRzVsZHlCQ1lXTnJZbTl1WlM1TmIyUmxiQ2h0YjJSbGJDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCcGMxWmhiR2xrT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCMllXeHBaQ0E5SUhSeWRXVTdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXRiMlJsYkhNdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlodGIyUmxiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGdGIyUmxiQzUyWVd4cFpHRjBaU2dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNhV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJHbGtPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnBjMEYxZEdodmNtbDZaV1E2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YkdWdVozUm9JRDA5UFNCMGFHbHpMbmRvWlhKbEtIc2dhWE5NYjJkdmRYUTZJSFJ5ZFdVZ2ZTa3ViR1Z1WjNSb08xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCcGMxQmhjblJwWVd4c2VVRjFkR2h2Y21sNlpXUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkMmhsY21Vb2V5QnBjMHh2WjI5MWREb2dkSEoxWlNCOUtTNXNaVzVuZEdnZ1BpQXdPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQndZWEp6WlRvZ1puVnVZM1JwYjI0Z0tHUmhkR0VwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR0YxZEdoNklEMGdlMzA3WEc1Y2JpQWdJQ0FnSUNBZ2FXWW9kSGx3Wlc5bUlIZHBibVJ2ZHk1emQyRm5aMlZ5VldrZ0lUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JoZFhSb2VpQTlJRTlpYW1WamRDNWhjM05wWjI0b2UzMHNJSGRwYm1SdmR5NXpkMkZuWjJWeVZXa3VZWEJwTG1Oc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekxtRjFkR2g2S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmZMbTFoY0Noa1lYUmhMQ0JtZFc1amRHbHZiaUFvWVhWMGFDd2dibUZ0WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHbHpRbUZ6YVdNZ1BTQmhkWFJvZWx0dVlXMWxYU0FtSmlCaGRYUm9MblI1Y0dVZ1BUMDlJQ2RpWVhOcFl5Y2dKaVlnWVhWMGFIcGJibUZ0WlYwdWRYTmxjbTVoYldVZ0ppWWdZWFYwYUhwYmJtRnRaVjB1Y0dGemMzZHZjbVE3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJRjh1WlhoMFpXNWtLR0YxZEdnc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhWFJzWlRvZ2JtRnRaVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoZFhSb2VsdHVZVzFsWFNCOGZDQnBjMEpoYzJsaktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdYeTVsZUhSbGJtUW9ZWFYwYUN3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzB4dloyOTFkRG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVTZJR2x6UW1GemFXTWdQeUIxYm1SbFptbHVaV1FnT2lCaGRYUm9lbHR1WVcxbFhTNTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkWE5sY201aGJXVTZJR2x6UW1GemFXTWdQeUJoZFhSb2VsdHVZVzFsWFM1MWMyVnlibUZ0WlNBNklIVnVaR1ZtYVc1bFpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGemMzZHZjbVE2SUdselFtRnphV01nUHlCaGRYUm9lbHR1WVcxbFhTNXdZWE56ZDI5eVpDQTZJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNhV1E2SUhSeWRXVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGMWRHZzdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYm4wcE95SXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVVM2RoWjJkbGNsVnBMbFpwWlhkekxrRjFkR2h6UTI5c2JHVmpkR2x2YmxacFpYY2dQU0JDWVdOclltOXVaUzVXYVdWM0xtVjRkR1Z1WkNoN1hHNWNiaUFnSUNCcGJtbDBhV0ZzYVhwbE9pQm1kVzVqZEdsdmJpaHZjSFJ6S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YjNCMGFXOXVjeUE5SUc5d2RITWdmSHdnZTMwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YjNCMGFXOXVjeTVrWVhSaElEMGdkR2hwY3k1dmNIUnBiMjV6TG1SaGRHRWdmSHdnZTMwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Y205MWRHVnlJRDBnZEdocGN5NXZjSFJwYjI1ekxuSnZkWFJsY2p0Y2JseHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJHeGxZM1JwYjI0Z1BTQnVaWGNnVTNkaFoyZGxjbFZwTGtOdmJHeGxZM1JwYjI1ekxrRjFkR2h6UTI5c2JHVmpkR2x2YmlodmNIUnpMbVJoZEdFcE8xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdUpHbHVibVZ5Uld3Z1BTQWtLQ2M4WkdsMlBpY3BPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtRjFkR2hXYVdWM2N5QTlJRnRkTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjJ4c1pXTjBhVzl1TG1WaFkyZ29ablZ1WTNScGIyNGdLR0YxZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeVQyNWxRWFYwYUNoaGRYUm9LVHRjYmlBZ0lDQWdJQ0FnZlN3Z2RHaHBjeWs3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrWld3dWFIUnRiQ2gwYUdsekxpUnBibTVsY2tWc0xtaDBiV3dvS1NBL0lIUm9hWE11SkdsdWJtVnlSV3dnT2lBbkp5azdYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUhKbGJtUmxjazl1WlVGMWRHZzZJR1oxYm1OMGFXOXVJQ2hoZFhSb1RXOWtaV3dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR0YxZEdoV2FXVjNSV3dzSUdGMWRHaFdhV1YzTENCaGRYUm9WbWxsZDA1aGJXVTdYRzRnSUNBZ0lDQWdJSFpoY2lCMGVYQmxJRDBnWVhWMGFFMXZaR1ZzTG1kbGRDZ25kSGx3WlNjcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxJRDA5UFNBbllYQnBTMlY1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVhWMGFGWnBaWGRPWVcxbElEMGdKMEZ3YVV0bGVVRjFkR2hXYVdWM0p6dGNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuWW1GemFXTW5JQ1ltSUhSb2FYTXVKR2x1Ym1WeVJXd3VabWx1WkNnbkxtSmhjMmxqWDJGMWRHaGZZMjl1ZEdGcGJtVnlKeWt1YkdWdVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCaGRYUm9WbWxsZDA1aGJXVWdQU0FuUW1GemFXTkJkWFJvVm1sbGR5YzdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pTQTlQVDBnSjI5aGRYUm9NaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0YxZEdoV2FXVjNUbUZ0WlNBOUlDZFBZWFYwYURKV2FXVjNKenRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hoZFhSb1ZtbGxkMDVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGMWRHaFdhV1YzSUQwZ2JtVjNJRk4zWVdkblpYSlZhUzVXYVdWM2MxdGhkWFJvVm1sbGQwNWhiV1ZkS0h0dGIyUmxiRG9nWVhWMGFFMXZaR1ZzTENCeWIzVjBaWEk2SUhSb2FYTXVjbTkxZEdWeWZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaGRYUm9WbWxsZDBWc0lEMGdZWFYwYUZacFpYY3VjbVZ1WkdWeUtDa3VaV3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1GMWRHaFdhV1YzY3k1d2RYTm9LR0YxZEdoV2FXVjNLVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lIUm9hWE11SkdsdWJtVnlSV3d1WVhCd1pXNWtLR0YxZEdoV2FXVjNSV3dwTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JvYVdkb2JHbG5hSFJKYm5aaGJHbGtPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WVhWMGFGWnBaWGR6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRnS0hacFpYY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWnBaWGN1YUdsbmFHeHBaMmgwU1c1MllXeHBaQ2dwTzF4dUlDQWdJQ0FnSUNCOUxDQjBhR2x6S1R0Y2JpQWdJQ0I5WEc1Y2JuMHBPMXh1SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc0dktpQm5iRzlpWVd3Z2NtVmthWEpsWTNSZmRYSnBPblJ5ZFdVZ0tpOWNiaThxSUdkc2IySmhiQ0JqYkdsbGJuUkpaQ0FxTDF4dUx5b2daMnh2WW1Gc0lITmpiM0JsVTJWd1lYSmhkRzl5SUNvdlhHNHZLaUJuYkc5aVlXd2dZV1JrYVhScGIyNWhiRkYxWlhKNVUzUnlhVzVuVUdGeVlXMXpJQ292WEc0dktpQm5iRzlpWVd3Z1kyeHBaVzUwVTJWamNtVjBJQ292WEc0dktpQm5iRzlpWVd3Z2IyNVBRWFYwYUVOdmJYQnNaWFJsSUNvdlhHNHZLaUJuYkc5aVlXd2djbVZoYkcwZ0tpOWNiaThxYW5Ob2FXNTBJSFZ1ZFhObFpEcG1ZV3h6WlNvdlhHNWNibE4zWVdkblpYSlZhUzVXYVdWM2N5NUJkWFJvVm1sbGR5QTlJRUpoWTJ0aWIyNWxMbFpwWlhjdVpYaDBaVzVrS0h0Y2JpQWdJQ0JsZG1WdWRITTZJSHRjYmlBZ0lDQWdJQ0FnSjJOc2FXTnJJQzVoZFhSb1gzTjFZbTFwZEY5ZlluVjBkRzl1SnpvZ0oyRjFkR2h2Y21sNlpVTnNhV05ySnl4Y2JpQWdJQ0FnSUNBZ0oyTnNhV05ySUM1aGRYUm9YMnh2WjI5MWRGOWZZblYwZEc5dUp6b2dKMnh2WjI5MWRFTnNhV05ySjF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0IwY0d4ek9pQjdYRzRnSUNBZ0lDQWdJRzFoYVc0NklFaGhibVJzWldKaGNuTXVkR1Z0Y0d4aGRHVnpMbUYxZEdoZmRtbGxkMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnpaV3hsWTNSdmNuTTZJSHRjYmlBZ0lDQWdJQ0FnYVc1dVpYSkZiRG9nSnk1aGRYUm9YMmx1Ym1WeUp5eGNiaUFnSUNBZ0lDQWdZWFYwYUVKMGJqb2dKeTVoZFhSb1gzTjFZbTFwZEY5ZlluVjBkRzl1SjF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JwYm1sMGFXRnNhWHBsT2lCbWRXNWpkR2x2YmlodmNIUnpLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViM0IwYVc5dWN5QTlJRzl3ZEhNZ2ZId2dlMzA3WEc0Z0lDQWdJQ0FnSUc5d2RITXVaR0YwWVNBOUlHOXdkSE11WkdGMFlTQjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5YjNWMFpYSWdQU0IwYUdsekxtOXdkR2x2Ym5NdWNtOTFkR1Z5TzF4dVhHNGdJQ0FnSUNBZ0lIUm9hWE11WVhWMGFITkRiMnhzWldOMGFXOXVWbWxsZHlBOUlHNWxkeUJUZDJGbloyVnlWV2t1Vm1sbGQzTXVRWFYwYUhORGIyeHNaV04wYVc5dVZtbGxkeWg3WkdGMFlUb2diM0IwY3k1a1lYUmhmU2s3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrWld3dWFIUnRiQ2gwYUdsekxuUndiSE11YldGcGJpaDdYRzRnSUNBZ0lDQWdJQ0FnSUNCcGMweHZaMjkxZERvZ2RHaHBjeTVoZFhSb2MwTnZiR3hsWTNScGIyNVdhV1YzTG1OdmJHeGxZM1JwYjI0dWFYTkJkWFJvYjNKcGVtVmtLQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBjMEYxZEdodmNtbDZaV1E2SUhSb2FYTXVZWFYwYUhORGIyeHNaV04wYVc5dVZtbGxkeTVqYjJ4c1pXTjBhVzl1TG1selVHRnlkR2xoYkd4NVFYVjBhRzl5YVhwbFpDZ3BYRzRnSUNBZ0lDQWdJSDBwS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrYVc1dVpYSkZiQ0E5SUhSb2FYTXVKQ2gwYUdsekxuTmxiR1ZqZEc5eWN5NXBibTVsY2tWc0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1cGMweHZaMjkxZENBOUlIUm9hWE11WVhWMGFITkRiMnhzWldOMGFXOXVWbWxsZHk1amIyeHNaV04wYVc5dUxtbHpVR0Z5ZEdsaGJHeDVRWFYwYUc5eWFYcGxaQ2dwTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrYVc1dVpYSkZiQzVvZEcxc0tIUm9hWE11WVhWMGFITkRiMnhzWldOMGFXOXVWbWxsZHk1eVpXNWtaWElvS1M1bGJDazdYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdGMWRHaHZjbWw2WlVOc2FXTnJPaUJtZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0FnSUNBZ0lDQmxMbkJ5WlhabGJuUkVaV1poZFd4MEtDazdYRzRnSUNBZ0lDQWdJR1V1YzNSdmNGQnliM0JoWjJGMGFXOXVLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVlYVjBhSE5EYjJ4c1pXTjBhVzl1Vm1sbGR5NWpiMnhzWldOMGFXOXVMbWx6Vm1Gc2FXUW9LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1aGRYUm9iM0pwZW1Vb0tUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZWFYwYUhORGIyeHNaV04wYVc5dVZtbGxkeTVvYVdkb2JHbG5hSFJKYm5aaGJHbGtLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnWVhWMGFHOXlhWHBsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVlYVjBhSE5EYjJ4c1pXTjBhVzl1Vm1sbGR5NWpiMnhzWldOMGFXOXVMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLR0YxZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnJaWGxCZFhSb0xDQmlZWE5wWTBGMWRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkSGx3WlNBOUlHRjFkR2d1WjJWMEtDZDBlWEJsSnlrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBlWEJsSUQwOVBTQW5ZWEJwUzJWNUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVVGMWRHZ2dQU0J1WlhjZ1UzZGhaMmRsY2tOc2FXVnVkQzVCY0dsTFpYbEJkWFJvYjNKcGVtRjBhVzl1S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhkWFJvTG1kbGRDZ25ibUZ0WlNjcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoZFhSb0xtZGxkQ2duZG1Gc2RXVW5LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lYVjBhQzVuWlhRb0oybHVKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV5YjNWMFpYSXVZWEJwTG1Oc2FXVnVkRUYxZEdodmNtbDZZWFJwYjI1ekxtRmtaQ2hoZFhSb0xtZGxkQ2duZEdsMGJHVW5LU3dnYTJWNVFYVjBhQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2RpWVhOcFl5Y3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpWVhOcFkwRjFkR2dnUFNCdVpYY2dVM2RoWjJkbGNrTnNhV1Z1ZEM1UVlYTnpkMjl5WkVGMWRHaHZjbWw2WVhScGIyNG9ZWFYwYUM1blpYUW9KM1Z6WlhKdVlXMWxKeWtzSUdGMWRHZ3VaMlYwS0Nkd1lYTnpkMjl5WkNjcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5KdmRYUmxjaTVoY0drdVkyeHBaVzUwUVhWMGFHOXlhWHBoZEdsdmJuTXVZV1JrS0dGMWRHZ3VaMlYwS0NkMGFYUnNaU2NwTENCaVlYTnBZMEYxZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxJRDA5UFNBbmIyRjFkR2d5SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YUdGdVpHeGxUMkYxZEdneVRHOW5hVzRvWVhWMGFDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHNJSFJvYVhNcE8xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdWNtOTFkR1Z5TG14dllXUW9LVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdiRzluYjNWMFEyeHBZMnM2SUdaMWJtTjBhVzl1SUNobEtTQjdYRzRnSUNBZ0lDQWdJR1V1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LVHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMbUYxZEdoelEyOXNiR1ZqZEdsdmJsWnBaWGN1WTI5c2JHVmpkR2x2Ymk1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNoaGRYUm9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjNhVzVrYjNjdWMzZGhaMmRsY2xWcExtRndhUzVqYkdsbGJuUkJkWFJvYjNKcGVtRjBhVzl1Y3k1eVpXMXZkbVVvWVhWMGFDNW5aWFFvSjNScGRHeGxKeWtwTzF4dUlDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdJQ0IwYUdsekxuSnZkWFJsY2k1c2IyRmtLQ2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJQzh2SUhSaGEyVnVJR1p5YjIwZ2JHbGlMM04zWVdkblpYSXRiMkYxZEdndWFuTmNiaUFnSUNCb1lXNWtiR1ZQWVhWMGFESk1iMmRwYmpvZ1puVnVZM1JwYjI0Z0tHRjFkR2dwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJR2h2YzNRZ1BTQjNhVzVrYjNjdWJHOWpZWFJwYjI0N1hHNGdJQ0FnSUNBZ0lIWmhjaUJ3WVhSb2JtRnRaU0E5SUd4dlkyRjBhVzl1TG5CaGRHaHVZVzFsTG5OMVluTjBjbWx1Wnlnd0xDQnNiMk5oZEdsdmJpNXdZWFJvYm1GdFpTNXNZWE4wU1c1a1pYaFBaaWduTHljcEtUdGNiaUFnSUNBZ0lDQWdkbUZ5SUdSbFptRjFiSFJTWldScGNtVmpkRlZ5YkNBOUlHaHZjM1F1Y0hKdmRHOWpiMndnS3lBbkx5OG5JQ3NnYUc5emRDNW9iM04wSUNzZ2NHRjBhRzVoYldVZ0t5QW5MMjh5WXk1b2RHMXNKenRjYmlBZ0lDQWdJQ0FnZG1GeUlISmxaR2x5WldOMFZYSnNJRDBnZDJsdVpHOTNMbTlCZFhSb1VtVmthWEpsWTNSVmNtd2dmSHdnWkdWbVlYVnNkRkpsWkdseVpXTjBWWEpzTzF4dUlDQWdJQ0FnSUNCMllYSWdkWEpzSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnZG1GeUlITmpiM0JsY3lBOUlGOHViV0Z3S0dGMWRHZ3VaMlYwS0NkelkyOXdaWE1uS1N3Z1puVnVZM1JwYjI0Z0tITmpiM0JsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmloelkyOXdaUzVqYUdWamEyVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5qYjNCbExuTmpiM0JsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJR052Ym5SaGFXNWxjaUE5SUhkcGJtUnZkeTV6ZDJGbloyVnlWV2xCZFhSb0lIeDhJQ2gzYVc1a2IzY3VjM2RoWjJkbGNsVnBRWFYwYUNBOUlIdDlLVHRjYmlBZ0lDQWdJQ0FnZG1GeUlITjBZWFJsTENCa1pYUnpMQ0JsY0R0Y2JpQWdJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxrOUJkWFJvVTJOb1pXMWxTMlY1SUQwZ1lYVjBhQzVuWlhRb0ozUnBkR3hsSnlrN1hHNWNiaUFnSUNBZ0lDQWdkMmx1Wkc5M0xtVnVZV0pzWldSVFkyOXdaWE1nUFNCelkyOXdaWE03WEc0Z0lDQWdJQ0FnSUhaaGNpQm1iRzkzSUQwZ1lYVjBhQzVuWlhRb0oyWnNiM2NuS1R0Y2JseHVJQ0FnSUNBZ0lDQXZLaXBjYmlBZ0lDQWdJQ0FnSUNvZ1VtVjBkWEp1Y3lCMGFHVWdibUZ0WlNCdlppQjBhR1VnWVdOalpYTnpJSFJ2YTJWdUlIQmhjbUZ0WlhSbGNpQnlaWFIxY201bFpDQmllU0IwYUdVZ2MyVnlkbVZ5TGx4dUlDQWdJQ0FnSUNBZ0tseHVJQ0FnSUNBZ0lDQWdLaUJBY0dGeVlXMGdaR1YwYzF4dUlDQWdJQ0FnSUNBZ0tpQWdJQ0FnVkdobElHRjFkR2h2Y21sellYUnBiMjRnYzJOb1pXMWxJR052Ym1acFozVnlZWFJwYjI0dVhHNGdJQ0FnSUNBZ0lDQXFJRUJ5WlhSMWNtNGdkR2hsSUc1aGJXVWdiMllnZEdobElHRmpZMlZ6Y3lCMGIydGxiaUJ3WVhKaGJXVjBaWEpjYmlBZ0lDQWdJQ0FnSUNvdlhHNGdJQ0FnSUNBZ0lHWjFibU4wYVc5dUlHZGxkRlJ2YTJWdVRtRnRaU2hrWlhSektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWkdWMGN5NTJaVzVrYjNKRmVIUmxibk5wYjI1eld5ZDRMWFJ2YTJWdVRtRnRaU2RkSUh4OElHUmxkSE11ZEc5clpXNU9ZVzFsTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdhV1lvWVhWMGFDNW5aWFFvSjNSNWNHVW5LU0E5UFQwZ0oyOWhkWFJvTWljZ0ppWWdabXh2ZHlBbUppQW9abXh2ZHlBOVBUMGdKMmx0Y0d4cFkybDBKeUI4ZkNCbWJHOTNJRDA5UFNBbllXTmpaWE56UTI5a1pTY3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaWFJ6SUQwZ1lYVjBhQzVoZEhSeWFXSjFkR1Z6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzSUQwZ1pHVjBjeTVoZFhSb2IzSnBlbUYwYVc5dVZYSnNJQ3NnSno5eVpYTndiMjV6WlY5MGVYQmxQU2NnS3lBb1pteHZkeUE5UFQwZ0oybHRjR3hwWTJsMEp5QS9JQ2QwYjJ0bGJpY2dPaUFuWTI5a1pTY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxuUnZhMlZ1VG1GdFpTQTlJR2RsZEZSdmEyVnVUbUZ0WlNoa1pYUnpLU0I4ZkNBbllXTmpaWE56WDNSdmEyVnVKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpNTBiMnRsYmxWeWJDQTlJQ2htYkc5M0lEMDlQU0FuWVdOalpYTnpRMjlrWlNjZ1B5QmtaWFJ6TG5SdmEyVnVWWEpzSURvZ2JuVnNiQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkR0YwWlNBOUlHTnZiblJoYVc1bGNpNVBRWFYwYUZOamFHVnRaVXRsZVR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUtHRjFkR2d1WjJWMEtDZDBlWEJsSnlrZ1BUMDlJQ2R2WVhWMGFESW5JQ1ltSUdac2IzY2dKaVlnS0dac2IzY2dQVDA5SUNkaGNIQnNhV05oZEdsdmJpY3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaWFJ6SUQwZ1lYVjBhQzVoZEhSeWFXSjFkR1Z6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdGcGJtVnlMblJ2YTJWdVRtRnRaU0E5SUdkbGRGUnZhMlZ1VG1GdFpTaGtaWFJ6S1NCOGZDQW5ZV05qWlhOelgzUnZhMlZ1Snp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVkyeHBaVzUwUTNKbFpHVnVkR2xoYkhOR2JHOTNLSE5qYjNCbGN5d2daR1YwY3l3Z1kyOXVkR0ZwYm1WeUxrOUJkWFJvVTJOb1pXMWxTMlY1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1LR0YxZEdndVoyVjBLQ2QwZVhCbEp5a2dQVDA5SUNkdllYVjBhREluSUNZbUlHWnNiM2NnSmlZZ0tHWnNiM2NnUFQwOUlDZHdZWE56ZDI5eVpDY3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaWFJ6SUQwZ1lYVjBhQzVoZEhSeWFXSjFkR1Z6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdGcGJtVnlMblJ2YTJWdVRtRnRaU0E5SUdkbGRGUnZhMlZ1VG1GdFpTaGtaWFJ6S1NCOGZDQW5ZV05qWlhOelgzUnZhMlZ1Snp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNHRnpjM2R2Y21SR2JHOTNLSE5qYjNCbGN5d2daR1YwY3l3Z1kyOXVkR0ZwYm1WeUxrOUJkWFJvVTJOb1pXMWxTMlY1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1LR0YxZEdndVoyVjBLQ2RuY21GdWRGUjVjR1Z6SnlrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklERXVNaUJ6ZFhCd2IzSjBYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdieUE5SUdGMWRHZ3VaMlYwS0NkbmNtRnVkRlI1Y0dWekp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSW9kbUZ5SUhRZ2FXNGdieWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUtHOHVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2RDa2dKaVlnZENBOVBUMGdKMmx0Y0d4cFkybDBKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaWFJ6SUQwZ2IxdDBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYQWdQU0JrWlhSekxteHZaMmx1Ulc1a2NHOXBiblF1ZFhKc08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IxY213Z1BTQmtaWFJ6TG14dloybHVSVzVrY0c5cGJuUXVkWEpzSUNzZ0p6OXlaWE53YjI1elpWOTBlWEJsUFhSdmEyVnVKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxuUnZhMlZ1VG1GdFpTQTlJR2RsZEZSdmEyVnVUbUZ0WlNoa1pYUnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvYnk1b1lYTlBkMjVRY205d1pYSjBlU2gwS1NBbUppQjBJRDA5UFNBbllXTmpaWE56UTI5a1pTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVjBjeUE5SUc5YmRGMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWd0lEMGdaR1YwY3k1MGIydGxibEpsY1hWbGMzUkZibVJ3YjJsdWRDNTFjbXc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIVnliQ0E5SUdSbGRITXVkRzlyWlc1U1pYRjFaWE4wUlc1a2NHOXBiblF1ZFhKc0lDc2dKejl5WlhOd2IyNXpaVjkwZVhCbFBXTnZaR1VuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjUwWVdsdVpYSXVkRzlyWlc1T1lXMWxJRDBnWjJWMFZHOXJaVzVPWVcxbEtHUmxkSE1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lISmxaR2x5WldOMFgzVnlhU0E5SUhKbFpHbHlaV04wVlhKc08xeHVYRzRnSUNBZ0lDQWdJSFZ5YkNBclBTQW5KbkpsWkdseVpXTjBYM1Z5YVQwbklDc2daVzVqYjJSbFZWSkpRMjl0Y0c5dVpXNTBLSEpsWkdseVpXTjBWWEpzS1R0Y2JpQWdJQ0FnSUNBZ2RYSnNJQ3M5SUNjbWNtVmhiRzA5SnlBcklHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaHlaV0ZzYlNrN1hHNGdJQ0FnSUNBZ0lIVnliQ0FyUFNBbkptTnNhV1Z1ZEY5cFpEMG5JQ3NnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0dOc2FXVnVkRWxrS1R0Y2JpQWdJQ0FnSUNBZ2RYSnNJQ3M5SUNjbWMyTnZjR1U5SnlBcklHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaHpZMjl3WlhNdWFtOXBiaWh6WTI5d1pWTmxjR0Z5WVhSdmNpa3BPMXh1SUNBZ0lDQWdJQ0IxY213Z0t6MGdKeVp6ZEdGMFpUMG5JQ3NnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0hOMFlYUmxLVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYTJWNUlHbHVJR0ZrWkdsMGFXOXVZV3hSZFdWeWVWTjBjbWx1WjFCaGNtRnRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkWEpzSUNzOUlDY21KeUFySUd0bGVTQXJJQ2M5SnlBcklHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaGhaR1JwZEdsdmJtRnNVWFZsY25sVGRISnBibWRRWVhKaGJYTmJhMlY1WFNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0IzYVc1a2IzY3ViM0JsYmloMWNtd3BPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQXZMeUIwWVd0bGJpQm1jbTl0SUd4cFlpOXpkMkZuWjJWeUxXOWhkWFJvTG1welhHNGdJQ0FnWTJ4cFpXNTBRM0psWkdWdWRHbGhiSE5HYkc5M09pQm1kVzVqZEdsdmJpQW9jMk52Y0dWekxDQnZZWFYwYUN3Z1QwRjFkR2hUWTJobGJXVkxaWGtwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVoWTJObGMzTlViMnRsYmxKbGNYVmxjM1FvYzJOdmNHVnpMQ0J2WVhWMGFDd2dUMEYxZEdoVFkyaGxiV1ZMWlhrc0lDZGpiR2xsYm5SZlkzSmxaR1Z1ZEdsaGJITW5LVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdjR0Z6YzNkdmNtUkdiRzkzT2lCbWRXNWpkR2x2YmlBb2MyTnZjR1Z6TENCdllYVjBhQ3dnVDBGMWRHaFRZMmhsYldWTFpYa3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWhZMk5sYzNOVWIydGxibEpsY1hWbGMzUW9jMk52Y0dWekxDQnZZWFYwYUN3Z1QwRjFkR2hUWTJobGJXVkxaWGtzSUNkd1lYTnpkMjl5WkNjc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNkMWMyVnlibUZ0WlNjNklHOWhkWFJvTG5WelpYSnVZVzFsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKM0JoYzNOM2IzSmtKem9nYjJGMWRHZ3VjR0Z6YzNkdmNtUmNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU3hjYmx4dUlDQWdJR0ZqWTJWemMxUnZhMlZ1VW1WeGRXVnpkRG9nWm5WdVkzUnBiMjRnS0hOamIzQmxjeXdnYjJGMWRHZ3NJRTlCZFhSb1UyTm9aVzFsUzJWNUxDQm5jbUZ1ZEZSNWNHVXNJSEJoY21GdGN5a2dlMXh1SUNBZ0lDQWdJQ0J3WVhKaGJYTWdQU0FrTG1WNGRHVnVaQ2g3ZlN3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSjNOamIzQmxKem9nYzJOdmNHVnpMbXB2YVc0b0p5QW5LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDZG5jbUZ1ZEY5MGVYQmxKem9nWjNKaGJuUlVlWEJsWEc0Z0lDQWdJQ0FnSUgwc0lIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNBZ0lDQWdkbUZ5SUdobFlXUmxjbk05SUh0OU8xeHVYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9iMkYxZEdndVkyeHBaVzUwUVhWMGFHVnVkR2xqWVhScGIyNVVlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGlZWE5wWXljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FHVmhaR1Z5Y3k1QmRYUm9iM0pwZW1GMGFXOXVJRDBnSjBKaGMybGpJQ2NnS3lCaWRHOWhLRzloZFhSb0xtTnNhV1Z1ZEVsa0lDc2dKem9uSUNzZ2IyRjFkR2d1WTJ4cFpXNTBVMlZqY21WMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozSmxjWFZsYzNRdFltOWtlU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGeVlXMXpMbU5zYVdWdWRGOXBaQ0E5SUc5aGRYUm9MbU5zYVdWdWRFbGtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJoY21GdGN5NWpiR2xsYm5SZmMyVmpjbVYwSUQwZ2IyRjFkR2d1WTJ4cFpXNTBVMlZqY21WME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdKQzVoYW1GNEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhWeWJDQTZJRzloZFhSb0xuUnZhMlZ1VlhKc0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dKMUJQVTFRbkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2djR0Z5WVcxekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYUdWaFpHVnljem9nYUdWaFpHVnljeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNNklHWjFibU4wYVc5dUlDaGtZWFJoS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1VDBGMWRHaERiMjF3YkdWMFpTaGtZWFJoTENCUFFYVjBhRk5qYUdWdFpVdGxlU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0k2SUdaMWJtTjBhVzl1SUNncFhHNGdJQ0FnSUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjI1UFFYVjBhRU52YlhCc1pYUmxLQ2NuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dWZTazdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1TmIyUmxiSE11UW1GemFXTkJkWFJvVFc5a1pXd2dQU0JDWVdOclltOXVaUzVOYjJSbGJDNWxlSFJsYm1Rb2UxeHVJQ0FnSUdSbFptRjFiSFJ6T2lCN1hHNGdJQ0FnSUNBZ0lIVnpaWEp1WVcxbE9pQW5KeXhjYmlBZ0lDQWdJQ0FnY0dGemMzZHZjbVE2SUNjbkxGeHVJQ0FnSUNBZ0lDQjBhWFJzWlRvZ0oySmhjMmxqSjF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JwYm1sMGFXRnNhWHBsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWIyNG9KMk5vWVc1blpTY3NJSFJvYVhNdWRtRnNhV1JoZEdVcE8xeHVJQ0FnSUgwc1hHNWNiaUFnSUNCMllXeHBaR0YwWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2RtRnNhV1FnUFNBaElYUm9hWE11WjJWMEtDZHdZWE56ZDI5eVpDY3BJQ1ltSUNFaGRHaHBjeTVuWlhRb0ozVnpaWEp1WVcxbEp5azdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFFvSjNaaGJHbGtKeXdnZG1Gc2FXUXBPMXh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4cFpEdGNiaUFnSUNCOVhHNTlLVHNpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1V2FXVjNjeTVDWVhOcFkwRjFkR2hXYVdWM0lEMGdRbUZqYTJKdmJtVXVWbWxsZHk1bGVIUmxibVFvZTF4dVhHNGdJQ0FnYVc1cGRHbGhiR2w2WlRvZ1puVnVZM1JwYjI0Z0tHOXdkSE1wSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV2Y0hScGIyNXpJRDBnYjNCMGN5QjhmQ0I3ZlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5YjNWMFpYSWdQU0IwYUdsekxtOXdkR2x2Ym5NdWNtOTFkR1Z5TzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JsZG1WdWRITTZJSHRjYmlBZ0lDQWdJQ0FnSjJOb1lXNW5aU0F1WVhWMGFGOXBibkIxZENjNklDZHBibkIxZEVOb1lXNW5aU2RjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdjMlZzWldOMGIzSnpPaUI3WEc0Z0lDQWdJQ0FnSUhWelpYSnVZVzFsU1c1d2RYUTZJQ2N1WW1GemFXTmZZWFYwYUY5ZmRYTmxjbTVoYldVbkxGeHVJQ0FnSUNBZ0lDQndZWE56ZDI5eVpFbHVjSFYwT2lBbkxtSmhjMmxqWDJGMWRHaGZYM0JoYzNOM2IzSmtKMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQmpiSE02SUh0Y2JpQWdJQ0FnSUNBZ1pYSnliM0k2SUNkbGNuSnZjaWRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdkR1Z0Y0d4aGRHVTZJRWhoYm1Sc1pXSmhjbk11ZEdWdGNHeGhkR1Z6TG1KaGMybGpYMkYxZEdnc1hHNWNiaUFnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1S0NsN1hHNGdJQ0FnSUNBZ0lDUW9kR2hwY3k1bGJDa3VhSFJ0YkNoMGFHbHpMblJsYlhCc1lYUmxLSFJvYVhNdWJXOWtaV3d1ZEc5S1UwOU9LQ2twS1R0Y2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdhVzV3ZFhSRGFHRnVaMlU2SUdaMWJtTjBhVzl1SUNobEtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lBa1pXd2dQU0FrS0dVdWRHRnlaMlYwS1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJSFpoYkNBOUlDUmxiQzUyWVd3b0tUdGNiaUFnSUNBZ0lDQWdkbUZ5SUdGMGRISWdQU0FrWld3dWNISnZjQ2duYm1GdFpTY3BPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDaDJZV3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1JsYkM1eVpXMXZkbVZEYkdGemN5aDBhR2x6TG1Oc2N5NWxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG5ObGRDaGhkSFJ5TENCMllXd3BPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnBjMVpoYkdsa09pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtMXZaR1ZzTG5aaGJHbGtZWFJsS0NrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUdocFoyaHNhV2RvZEVsdWRtRnNhV1E2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbTF2WkdWc0xtZGxkQ2duZFhObGNtNWhiV1VuS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NGtLSFJvYVhNdWMyVnNaV04wYjNKekxuVnpaWEp1WVcxbFNXNXdkWFFwTG1Ga1pFTnNZWE56S0hSb2FYTXVZMnh6TG1WeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYm4wcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzVUZDJGbloyVnlWV2t1Vm1sbGQzTXVRMjl1ZEdWdWRGUjVjR1ZXYVdWM0lEMGdRbUZqYTJKdmJtVXVWbWxsZHk1bGVIUmxibVFvZTF4dUlDQnBibWwwYVdGc2FYcGxPaUJtZFc1amRHbHZiaWdwSUh0OUxGeHVYRzRnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRvS1h0Y2JpQWdYSFIwYUdsekxtMXZaR1ZzTG1OdmJuUmxiblJVZVhCbFNXUWdQU0FuWTNRbklDc2dUV0YwYUM1eVlXNWtiMjBvS1R0Y2JpQWdJQ0FrS0hSb2FYTXVaV3dwTG1oMGJXd29TR0Z1Wkd4bFltRnljeTUwWlcxd2JHRjBaWE11WTI5dWRHVnVkRjkwZVhCbEtIUm9hWE11Ylc5a1pXd3BLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVmU2s3SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1VGQyRm5aMlZ5VldrdVZtbGxkM011U0dWaFpHVnlWbWxsZHlBOUlFSmhZMnRpYjI1bExsWnBaWGN1WlhoMFpXNWtLSHRjYmlBZ1pYWmxiblJ6T2lCN1hHNGdJQ0FnSjJOc2FXTnJJQ056YUc5M0xYQmxkQzF6ZEc5eVpTMXBZMjl1SnlBZ0lDQTZJQ2R6YUc5M1VHVjBVM1J2Y21VbkxGeHVJQ0FnSUNkamJHbGpheUFqWlhod2JHOXlaU2NnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdPaUFuYzJodmQwTjFjM1J2YlNjc1hHNGdJQ0FnSjNOMVltMXBkQ0FqWVhCcFgzTmxiR1ZqZEc5eUp5QWdJQ0FnSUNBZ0lDQTZJQ2R6YUc5M1EzVnpkRzl0Snl4Y2JpQWdJQ0FuYTJWNWRYQWdJMmx1Y0hWMFgySmhjMlZWY213bklDQWdJQ0FnSUNBZ0lEb2dKM05vYjNkRGRYTjBiMjFQYmt0bGVYVndKeXhjYmlBZ0lDQW5hMlY1ZFhBZ0kybHVjSFYwWDJGd2FVdGxlU2NnSUNBZ0lDQWdJQ0FnSURvZ0ozTm9iM2REZFhOMGIyMVBia3RsZVhWd0oxeHVJQ0I5TEZ4dVhHNGdJR2x1YVhScFlXeHBlbVU2SUdaMWJtTjBhVzl1S0NsN2ZTeGNibHh1SUNCemFHOTNVR1YwVTNSdmNtVTZJR1oxYm1OMGFXOXVLQ2w3WEc0Z0lDQWdkR2hwY3k1MGNtbG5aMlZ5S0NkMWNHUmhkR1V0YzNkaFoyZGxjaTExYVNjc0lIdGNiaUFnSUNBZ0lIVnliRG9uYUhSMGNEb3ZMM0JsZEhOMGIzSmxMbk4zWVdkblpYSXVhVzh2ZGpJdmMzZGhaMmRsY2k1cWMyOXVKMXh1SUNBZ0lIMHBPMXh1SUNCOUxGeHVYRzRnSUhOb2IzZERkWE4wYjIxUGJrdGxlWFZ3T2lCbWRXNWpkR2x2YmlobEtYdGNiaUFnSUNCcFppQW9aUzVyWlhsRGIyUmxJRDA5UFNBeE15a2dlMXh1SUNBZ0lDQWdkR2hwY3k1emFHOTNRM1Z6ZEc5dEtDazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSE5vYjNkRGRYTjBiMjA2SUdaMWJtTjBhVzl1S0dVcGUxeHVJQ0FnSUdsbUlDaGxLU0I3WEc0Z0lDQWdJQ0JsTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1MGNtbG5aMlZ5S0NkMWNHUmhkR1V0YzNkaFoyZGxjaTExYVNjc0lIdGNiaUFnSUNBZ0lIVnliRG9nSkNnbkkybHVjSFYwWDJKaGMyVlZjbXduS1M1MllXd29LVnh1SUNBZ0lIMHBPMXh1SUNCOUxGeHVYRzRnSUhWd1pHRjBaVG9nWm5WdVkzUnBiMjRvZFhKc0xDQmhjR2xMWlhrc0lIUnlhV2RuWlhJcGUxeHVJQ0FnSUdsbUlDaDBjbWxuWjJWeUlEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUhSeWFXZG5aWElnUFNCbVlXeHpaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQWtLQ2NqYVc1d2RYUmZZbUZ6WlZWeWJDY3BMblpoYkNoMWNtd3BPMXh1WEc0Z0lDQWdhV1lnS0hSeWFXZG5aWElwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkSEpwWjJkbGNpZ25kWEJrWVhSbExYTjNZV2RuWlhJdGRXa25MQ0I3ZFhKc09uVnliSDBwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmU2s3WEc0aUxDSW5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JsTjNZV2RuWlhKVmFTNVdhV1YzY3k1TllXbHVWbWxsZHlBOUlFSmhZMnRpYjI1bExsWnBaWGN1WlhoMFpXNWtLSHRjYmlBZ1lYQnBjMU52Y25SbGNpQTZJSHRjYmlBZ0lDQmhiSEJvWVNBZ0lEb2dablZ1WTNScGIyNG9ZU3hpS1hzZ2NtVjBkWEp1SUdFdWJtRnRaUzVzYjJOaGJHVkRiMjF3WVhKbEtHSXVibUZ0WlNrN0lIMWNiaUFnZlN4Y2JpQWdiM0JsY21GMGFXOXVjMU52Y25SbGNuTWdPaUI3WEc0Z0lDQWdZV3h3YUdFZ0lDQTZJR1oxYm1OMGFXOXVLR0VzWWlsN0lISmxkSFZ5YmlCaExuQmhkR2d1Ykc5allXeGxRMjl0Y0dGeVpTaGlMbkJoZEdncE95QjlMRnh1SUNBZ0lHMWxkR2h2WkNBZ09pQm1kVzVqZEdsdmJpaGhMR0lwZXlCeVpYUjFjbTRnWVM1dFpYUm9iMlF1Ykc5allXeGxRMjl0Y0dGeVpTaGlMbTFsZEdodlpDazdJSDFjYmlBZ2ZTeGNiaUFnYVc1cGRHbGhiR2w2WlRvZ1puVnVZM1JwYjI0b2IzQjBjeWw3WEc0Z0lDQWdkbUZ5SUhOdmNuUmxjazl3ZEdsdmJpd2djMjl5ZEdWeVJtNHNJR3RsZVN3Z2RtRnNkV1U3WEc0Z0lDQWdiM0IwY3lBOUlHOXdkSE1nZkh3Z2UzMDdYRzVjYmlBZ0lDQjBhR2x6TG5KdmRYUmxjaUE5SUc5d2RITXVjbTkxZEdWeU8xeHVYRzRnSUNBZ0x5OGdVMjl5ZENCQlVFbHpYRzRnSUNBZ2FXWWdLRzl3ZEhNdWMzZGhaMmRsY2s5d2RHbHZibk11WVhCcGMxTnZjblJsY2lrZ2UxeHVJQ0FnSUNBZ2MyOXlkR1Z5VDNCMGFXOXVJRDBnYjNCMGN5NXpkMkZuWjJWeVQzQjBhVzl1Y3k1aGNHbHpVMjl5ZEdWeU8xeHVJQ0FnSUNBZ2FXWWdLRjh1YVhOR2RXNWpkR2x2YmloemIzSjBaWEpQY0hScGIyNHBLU0I3WEc0Z0lDQWdJQ0FnSUhOdmNuUmxja1p1SUQwZ2MyOXlkR1Z5VDNCMGFXOXVPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjMjl5ZEdWeVJtNGdQU0IwYUdsekxtRndhWE5UYjNKMFpYSmJjMjl5ZEdWeVQzQjBhVzl1WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaGZMbWx6Um5WdVkzUnBiMjRvYzI5eWRHVnlSbTRwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Ylc5a1pXd3VZWEJwYzBGeWNtRjVMbk52Y25Rb2MyOXlkR1Z5Um00cE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0F2THlCVGIzSjBJRzl3WlhKaGRHbHZibk1nYjJZZ1pXRmphQ0JCVUVsY2JpQWdJQ0JwWmlBb2IzQjBjeTV6ZDJGbloyVnlUM0IwYVc5dWN5NXZjR1Z5WVhScGIyNXpVMjl5ZEdWeUtTQjdYRzRnSUNBZ0lDQnpiM0owWlhKUGNIUnBiMjRnUFNCdmNIUnpMbk4zWVdkblpYSlBjSFJwYjI1ekxtOXdaWEpoZEdsdmJuTlRiM0owWlhJN1hHNGdJQ0FnSUNCcFppQW9YeTVwYzBaMWJtTjBhVzl1S0hOdmNuUmxjazl3ZEdsdmJpa3BJSHRjYmlBZ0lDQWdJQ0FnYzI5eWRHVnlSbTRnUFNCemIzSjBaWEpQY0hScGIyNDdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnpiM0owWlhKR2JpQTlJSFJvYVhNdWIzQmxjbUYwYVc5dWMxTnZjblJsY25OYmMyOXlkR1Z5VDNCMGFXOXVYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoZkxtbHpSblZ1WTNScGIyNG9jMjl5ZEdWeVJtNHBLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9hMlY1SUdsdUlIUm9hWE11Ylc5a1pXd3VZWEJwYzBGeWNtRjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJDNWhjR2x6UVhKeVlYbGJhMlY1WFM1dmNHVnlZWFJwYjI1elFYSnlZWGt1YzI5eWRDaHpiM0owWlhKR2JpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJ6WlhRZ2RYQWdkR2hsSUZWSklHWnZjaUJwYm5CMWRGeHVJQ0FnSUhSb2FYTXViVzlrWld3dVlYVjBhSE1nUFNCYlhUdGNibHh1SUNBZ0lHWnZjaUFvYTJWNUlHbHVJSFJvYVhNdWJXOWtaV3d1YzJWamRYSnBkSGxFWldacGJtbDBhVzl1Y3lrZ2UxeHVJQ0FnSUNBZ2RtRnNkV1VnUFNCMGFHbHpMbTF2WkdWc0xuTmxZM1Z5YVhSNVJHVm1hVzVwZEdsdmJuTmJhMlY1WFR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJDNWhkWFJvY3k1d2RYTm9LSHRjYmlBZ0lDQWdJQ0FnYm1GdFpUb2dhMlY1TEZ4dUlDQWdJQ0FnSUNCMGVYQmxPaUIyWVd4MVpTNTBlWEJsTEZ4dUlDQWdJQ0FnSUNCMllXeDFaVG9nZG1Gc2RXVmNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2duZG1Gc2FXUmhkRzl5VlhKc0p5QnBiaUJ2Y0hSekxuTjNZV2RuWlhKUGNIUnBiMjV6S1NCN1hHNGdJQ0FnSUNBdkx5QldZV3hwWkdGMGIzSWdWVkpNSUhOd1pXTnBabWxsWkNCbGVIQnNhV05wZEd4NVhHNGdJQ0FnSUNCMGFHbHpMbTF2WkdWc0xuWmhiR2xrWVhSdmNsVnliQ0E5SUc5d2RITXVjM2RoWjJkbGNrOXdkR2x2Ym5NdWRtRnNhV1JoZEc5eVZYSnNPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kR2hwY3k1dGIyUmxiQzUxY213dWFXNWtaWGhQWmlnbmJHOWpZV3hvYjNOMEp5a2dQaUF3SUh4OElIUm9hWE11Ylc5a1pXd3VkWEpzTG1sdVpHVjRUMllvSnpFeU55NHdMakF1TVNjcElENGdNQ2tnZTF4dUlDQWdJQ0FnTHk4Z1RHOWpZV3hvYjNOMElHOTJaWEp5YVdSbFhHNGdJQ0FnSUNCMGFHbHpMbTF2WkdWc0xuWmhiR2xrWVhSdmNsVnliQ0E5SUc1MWJHdzdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXViVzlrWld3dWRtRnNhV1JoZEc5eVZYSnNJRDBnSnk4dmIyNXNhVzVsTG5OM1lXZG5aWEl1YVc4dmRtRnNhV1JoZEc5eUp6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QktVMjl1UldScGRHOXlJSEpsY1hWcGNtVnpJSFI1Y0dVOUoyOWlhbVZqZENjZ2RHOGdZbVVnY0hKbGMyVnVkQ0J2YmlCa1pXWnBibVZrSUhSNWNHVnpMQ0IzWlNCaFpHUWdhWFFnYVdZZ2FYUW5jeUJ0YVhOemFXNW5YRzRnSUNBZ0x5OGdhWE1nZEdobGNtVWdZVzU1SUhaaGJHbGtJR05oYzJVZ2QyVnlaU0JwZENCemFHOTFiR1FnYm05MElHSmxJR0ZrWkdWa0lEOWNiaUFnSUNCMllYSWdaR1ZtTzF4dUlDQWdJR1p2Y2loa1pXWWdhVzRnZEdocGN5NXRiMlJsYkM1a1pXWnBibWwwYVc5dWN5bDdYRzRnSUNBZ0lDQnBaaUFvSVhSb2FYTXViVzlrWld3dVpHVm1hVzVwZEdsdmJuTmJaR1ZtWFM1MGVYQmxLWHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRiMlJsYkM1a1pXWnBibWwwYVc5dWMxdGtaV1pkTG5SNWNHVWdQU0FuYjJKcVpXTjBKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ2ZTeGNibHh1SUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBa0tIUm9hWE11Wld3cExtaDBiV3dvU0dGdVpHeGxZbUZ5Y3k1MFpXMXdiR0YwWlhNdWJXRnBiaWgwYUdsekxtMXZaR1ZzS1NrN1hHNGdJQ0FnZEdocGN5NXBibVp2SUQwZ2RHaHBjeTRrS0NjdWFXNW1ieWNwV3pCZE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWFXNW1ieWtnZTF4dUlDQWdJQ0FnZEdocGN5NXBibVp2TG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjJOc2FXTnJKeXdnZEdocGN5NXZia3hwYm10RGJHbGpheXdnZEhKMVpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV0YjJSbGJDNXpaV04xY21sMGVVUmxabWx1YVhScGIyNXpJRDBnZEdocGN5NXRiMlJsYkM1elpXTjFjbWwwZVVSbFptbHVhWFJwYjI1eklIeDhJSHQ5TzF4dVhHNGdJQ0FnTHk4Z1VtVnVaR1Z5SUdWaFkyZ2djbVZ6YjNWeVkyVmNibHh1SUNBZ0lIWmhjaUJ5WlhOdmRYSmpaWE1nUFNCN2ZUdGNiaUFnSUNCMllYSWdZMjkxYm5SbGNpQTlJREE3WEc0Z0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0IwYUdsekxtMXZaR1ZzTG1Gd2FYTkJjbkpoZVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdkbUZ5SUhKbGMyOTFjbU5sSUQwZ2RHaHBjeTV0YjJSbGJDNWhjR2x6UVhKeVlYbGJhVjA3WEc0Z0lDQWdJQ0IyWVhJZ2FXUWdQU0J5WlhOdmRYSmpaUzV1WVcxbE8xeHVJQ0FnSUNBZ2QyaHBiR1VnS0hSNWNHVnZaaUJ5WlhOdmRYSmpaWE5iYVdSZElDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ0lDQnBaQ0E5SUdsa0lDc2dKMThuSUNzZ1kyOTFiblJsY2p0Y2JpQWdJQ0FnSUNBZ1kyOTFiblJsY2lBclBTQXhPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVZ6YjNWeVkyVXVhV1FnUFNCellXNXBkR2w2WlVoMGJXd29hV1FwTzF4dUlDQWdJQ0FnY21WemIzVnlZMlZ6VzJsa1hTQTlJSEpsYzI5MWNtTmxPMXh1SUNBZ0lDQWdkR2hwY3k1aFpHUlNaWE52ZFhKalpTaHlaWE52ZFhKalpTd2dkR2hwY3k1dGIyUmxiQzVoZFhSb2N5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0pDZ25MbkJ5YjNCWGNtRndKeWt1YUc5MlpYSW9ablZ1WTNScGIyNGdiMjVJYjNabGNpZ3BlMXh1SUNBZ0lDQWdKQ2duTG05d2RHbHZibk5YY21Gd2NHVnlKeXdnSkNoMGFHbHpLU2t1YzJodmR5Z3BPMXh1SUNBZ0lIMHNJR1oxYm1OMGFXOXVJRzltWm1odmRtVnlLQ2w3WEc0Z0lDQWdJQ0FrS0NjdWIzQjBhVzl1YzFkeVlYQndaWEluTENBa0tIUm9hWE1wS1M1b2FXUmxLQ2s3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMHNYRzVjYmlBZ1lXUmtVbVZ6YjNWeVkyVTZJR1oxYm1OMGFXOXVLSEpsYzI5MWNtTmxMQ0JoZFhSb2N5bDdYRzRnSUNBZ0x5OGdVbVZ1WkdWeUlHRWdjbVZ6YjNWeVkyVWdZVzVrSUdGa1pDQnBkQ0IwYnlCeVpYTnZkWEpqWlhNZ2JHbGNiaUFnSUNCeVpYTnZkWEpqWlM1cFpDQTlJSEpsYzI5MWNtTmxMbWxrTG5KbGNHeGhZMlVvTDF0ZVlTMTZRUzFhWEZ4a1hTOW5MQ0JtZFc1amRHbHZiaWh6ZEhJcElIc2djbVYwZFhKdUlITjBjaTVqYUdGeVEyOWtaVUYwS0RBcE95QjlLVHRjYmx4dUlDQWdJQzh2SUUxaGEyVWdZV3hzSUdSbFptbHVhWFJwYjI1eklHRjJZV2xzWVdKc1pTQmhkQ0IwYUdVZ2NtOXZkQ0J2WmlCMGFHVWdjbVZ6YjNWeVkyVWdjMjhnZEdoaGRDQjBhR1Y1SUdOaGJseHVJQ0FnSUM4dklHSmxJR3h2WVdSbFpDQmllU0IwYUdVZ1NsTnZia1ZrYVhSdmNseHVJQ0FnSUhKbGMyOTFjbU5sTG1SbFptbHVhWFJwYjI1eklEMGdkR2hwY3k1dGIyUmxiQzVrWldacGJtbDBhVzl1Y3p0Y2JseHVJQ0FnSUhaaGNpQnlaWE52ZFhKalpWWnBaWGNnUFNCdVpYY2dVM2RoWjJkbGNsVnBMbFpwWlhkekxsSmxjMjkxY21ObFZtbGxkeWg3WEc0Z0lDQWdJQ0J0YjJSbGJEb2djbVZ6YjNWeVkyVXNYRzRnSUNBZ0lDQnliM1YwWlhJNklIUm9hWE11Y205MWRHVnlMRnh1SUNBZ0lDQWdkR0ZuVG1GdFpUb2dKMnhwSnl4Y2JpQWdJQ0FnSUdsa09pQW5jbVZ6YjNWeVkyVmZKeUFySUhKbGMyOTFjbU5sTG1sa0xGeHVJQ0FnSUNBZ1kyeGhjM05PWVcxbE9pQW5jbVZ6YjNWeVkyVW5MRnh1SUNBZ0lDQWdZWFYwYUhNNklHRjFkR2h6TEZ4dUlDQWdJQ0FnYzNkaFoyZGxjazl3ZEdsdmJuTTZJSFJvYVhNdWIzQjBhVzl1Y3k1emQyRm5aMlZ5VDNCMGFXOXVjMXh1SUNBZ0lIMHBPMXh1SUNBZ0lDUW9KeU55WlhOdmRYSmpaWE1uTENCMGFHbHpMbVZzS1M1aGNIQmxibVFvY21WemIzVnlZMlZXYVdWM0xuSmxibVJsY2lncExtVnNLVHRjYmlBZ2ZTeGNibHh1SUNCamJHVmhjam9nWm5WdVkzUnBiMjRvS1h0Y2JpQWdJQ0FrS0hSb2FYTXVaV3dwTG1oMGJXd29KeWNwTzF4dUlDQjlMRnh1WEc0Z0lHOXVUR2x1YTBOc2FXTnJPaUJtZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0FnSUhaaGNpQmxiQ0E5SUdVdWRHRnlaMlYwTzF4dVhHNGdJQ0FnYVdZZ0tHVnNMblJoWjA1aGJXVWdQVDA5SUNkQkp5QW1KaUJsYkM1b2NtVm1JQ1ltSUNGbGJDNTBZWEpuWlhRcElIdGNiaUFnSUNBZ0lDQWdaUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1SUNBZ0lDQWdJQ0IzYVc1a2IzY3ViM0JsYmlobGJDNW9jbVZtTENBblgySnNZVzVySnlrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5S1R0Y2JpSXNJaWQxYzJVZ2MzUnlhV04wSnp0Y2JseHVVM2RoWjJkbGNsVnBMazF2WkdWc2N5NVBZWFYwYURKTmIyUmxiQ0E5SUVKaFkydGliMjVsTGsxdlpHVnNMbVY0ZEdWdVpDaDdYRzRnSUNBZ1pHVm1ZWFZzZEhNNklIdGNiaUFnSUNBZ0lDQWdjMk52Y0dWek9pQjdmU3hjYmlBZ0lDQWdJQ0FnYVhOUVlYTnpkMjl5WkVac2IzYzZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQmpiR2xsYm5SQmRYUm9aVzUwYVdOaGRHbHZibFI1Y0dVNklDZHViMjVsSjF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JwYm1sMGFXRnNhWHBsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2xtS0hSb2FYTXVZWFIwY21saWRYUmxjeUFtSmlCMGFHbHpMbUYwZEhKcFluVjBaWE11YzJOdmNHVnpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnWVhSMGNtbGlkWFJsY3lBOUlGOHVZMnh2Ym1WRVpXVndLSFJvYVhNdVlYUjBjbWxpZFhSbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdhU3dnYzJOdmNHVnpJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJb2FTQnBiaUJoZEhSeWFXSjFkR1Z6TG5OamIzQmxjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnpZMjl3WlNBOUlHRjBkSEpwWW5WMFpYTXVjMk52Y0dWelcybGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtS0hSNWNHVnZaaUJ6WTI5d1pTNWtaWE5qY21sd2RHbHZiaUE5UFQwZ0ozTjBjbWx1WnljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJOdmNHVnpXM05qYjNCbFhTQTlJR0YwZEhKcFluVjBaWE11YzJOdmNHVnpXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpZMjl3WlhNdWNIVnphQ2hoZEhSeWFXSjFkR1Z6TG5OamIzQmxjMXRwWFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZWFIwY21saWRYUmxjeTV6WTI5d1pYTWdQU0J6WTI5d1pYTTdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbUYwZEhKcFluVjBaWE1nUFNCaGRIUnlhV0oxZEdWek8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WVhSMGNtbGlkWFJsY3lBbUppQjBhR2x6TG1GMGRISnBZblYwWlhNdVpteHZkeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdac2IzY2dQU0IwYUdsekxtRjBkSEpwWW5WMFpYTXVabXh2ZHp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWMyVjBLQ2RwYzFCaGMzTjNiM0prUm14dmR5Y3NJR1pzYjNjZ1BUMDlJQ2R3WVhOemQyOXlaQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1elpYUW9KM0psY1hWcGNtVkRiR2xsYm5SQmRYUm9aVzUwYVdOaGRHbHZiaWNzSUdac2IzY2dQVDA5SUNkaGNIQnNhV05oZEdsdmJpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WlhRb0oyTnNhV1Z1ZEVGMWRHaGxiblJwWTJGMGFXOXVKeXdnWm14dmR5QTlQVDBnSjNCaGMzTjNiM0prSnlCOGZDQm1iRzkzSUQwOVBTQW5ZWEJ3YkdsallYUnBiMjRuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjBhR2x6TG05dUtDZGphR0Z1WjJVbkxDQjBhR2x6TG5aaGJHbGtZWFJsS1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnYzJWMFUyTnZjR1Z6T2lCbWRXNWpkR2x2YmlBb2JtRnRaU3dnZG1Gc0tTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCaGRYUm9JRDBnWHk1bGVIUmxibVFvZTMwc0lIUm9hWE11WVhSMGNtbGlkWFJsY3lrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJwYm1SbGVDQTlJRjh1Wm1sdVpFbHVaR1Y0S0dGMWRHZ3VjMk52Y0dWekxDQm1kVzVqZEdsdmJpaHZLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2J5NXpZMjl3WlNBOVBUMGdibUZ0WlR0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJR0YxZEdndWMyTnZjR1Z6VzJsdVpHVjRYUzVqYUdWamEyVmtJRDBnZG1Gc08xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBLR0YxZEdncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5aaGJHbGtZWFJsS0NrN1hHNGdJQ0FnZlN4Y2JseHVJQ0FnSUhaaGJHbGtZWFJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQjJZWElnZG1Gc2FXUWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtZGxkQ2duYVhOUVlYTnpkMjl5WkVac2IzY25LU0FtSmx4dUlDQWdJQ0FnSUNBZ0lDZ2hkR2hwY3k1blpYUW9KM1Z6WlhKdVlXMWxKeWtwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUW9KMk5zYVdWdWRFRjFkR2hsYm5ScFkyRjBhVzl1Vkhsd1pTY3BJR2x1SUZzblltRnphV01uTENBbmNtVnhkV1Z6ZEMxaWIyUjVKMTBnSmlaY2JpQWdJQ0FnSUNBZ0lDQW9JWFJvYVhNdVoyVjBLQ2RqYkdsbGJuUkpaQ2NwS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RtRnlJSE5qY0NBOUlIUm9hWE11WjJWMEtDZHpZMjl3WlhNbktUdGNiaUFnSUNBZ0lIWmhjaUJwWkhnZ1BTQWdYeTVtYVc1a1NXNWtaWGdvYzJOd0xDQm1kVzVqZEdsdmJpQW9ieWtnZTF4dUlDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc4dVkyaGxZMnRsWkNBOVBUMGdkSEoxWlR0Y2JpQWdJQ0FnSUgwcE8xeHVYRzRnSUNBZ0lDQnBaaWh6WTNBdWJHVnVaM1JvSUQ0Z01DQW1KaUJwWkhnZ1BqMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhiR2xrSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZb2MyTndMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFpoYkdsa0lEMGdkSEoxWlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2RHaHBjeTV6WlhRb0ozWmhiR2xrSnl3Z2RtRnNhV1FwTzF4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2FXUTdYRzRnSUNBZ2ZWeHVmU2s3WEc0aUxDSW5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JsTjNZV2RuWlhKVmFTNVdhV1YzY3k1UFlYVjBhREpXYVdWM0lEMGdRbUZqYTJKdmJtVXVWbWxsZHk1bGVIUmxibVFvZTF4dUlDQWdJR1YyWlc1MGN6b2dlMXh1SUNBZ0lDQWdJQ0FuWTJoaGJtZGxJQzV2WVhWMGFDMXpZMjl3WlNjNklDZHpZMjl3WlVOb1lXNW5aU2NzWEc0Z0lDQWdJQ0FnSUNkamFHRnVaMlVnTG05aGRYUm9MWFZ6WlhKdVlXMWxKem9nSjNObGRGVnpaWEp1WVcxbEp5eGNiaUFnSUNBZ0lDQWdKMk5vWVc1blpTQXViMkYxZEdndGNHRnpjM2R2Y21Rbk9pQW5jMlYwVUdGemMzZHZjbVFuTEZ4dUlDQWdJQ0FnSUNBblkyaGhibWRsSUM1dllYVjBhQzFqYkdsbGJuUXRZWFYwYUdWdWRHbGpZWFJwYjI0dGRIbHdaU2M2SUNkelpYUkRiR2xsYm5SQmRYUm9aVzUwYVdOaGRHbHZibFI1Y0dVbkxGeHVJQ0FnSUNBZ0lDQW5ZMmhoYm1kbElDNXZZWFYwYUMxamJHbGxiblF0YVdRbk9pQW5jMlYwUTJ4cFpXNTBTV1FuTEZ4dUlDQWdJQ0FnSUNBblkyaGhibWRsSUM1dllYVjBhQzFqYkdsbGJuUXRjMlZqY21WMEp6b2dKM05sZEVOc2FXVnVkRk5sWTNKbGRDZGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2RHVnRjR3hoZEdVNklFaGhibVJzWldKaGNuTXVkR1Z0Y0d4aGRHVnpMbTloZFhSb01peGNibHh1SUNBZ0lHTnNjem9nZTF4dUlDQWdJQ0FnSUNCbGNuSnZjam9nSjJWeWNtOXlKMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NGtaV3d1YUhSdGJDaDBhR2x6TG5SbGJYQnNZWFJsS0hSb2FYTXViVzlrWld3dWRHOUtVMDlPS0NrcEtUdGNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnYzJOdmNHVkRhR0Z1WjJVNklHWjFibU4wYVc5dUlDaGxLU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQjJZV3dnUFNBa0tHVXVkR0Z5WjJWMEtTNXdjbTl3S0NkamFHVmphMlZrSnlrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ6WTI5d1pTQTlJQ1FvWlM1MFlYSm5aWFFwTG1SaGRHRW9KM05qYjNCbEp5azdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXRiMlJsYkM1elpYUlRZMjl3WlhNb2MyTnZjR1VzSUhaaGJDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmxkRlZ6WlhKdVlXMWxPaUJtZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnZG1Gc1BTQWtLR1V1ZEdGeVoyVjBLUzUyWVd3b0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dGIyUmxiQzV6WlhRb0ozVnpaWEp1WVcxbEp5d2dkbUZzS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSkNobExuUmhjbWRsZENrdWNtVnRiM1psUTJ4aGMzTW9kR2hwY3k1amJITXVaWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmxkRkJoYzNOM2IzSmtPaUJtZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbk5sZENnbmNHRnpjM2R2Y21RbkxDQWtLR1V1ZEdGeVoyVjBLUzUyWVd3b0tTazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmxkRU5zYVdWdWRFRjFkR2hsYm5ScFkyRjBhVzl1Vkhsd1pUb2dablZ1WTNScGIyNGdLR1VwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSFI1Y0dVZ1BTQWtLR1V1ZEdGeVoyVjBLUzUyWVd3b0tUdGNiaUFnSUNBZ0lDQWdkbUZ5SUNSbGJDQTlJSFJvYVhNdUpHVnNPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG5ObGRDZ25ZMnhwWlc1MFFYVjBhR1Z1ZEdsallYUnBiMjVVZVhCbEp5d2dkSGx3WlNrN1hHNWNiaUFnSUNBZ0lDQWdjM2RwZEdOb0tIUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyNXZibVVuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSbGJDNW1hVzVrS0NjdWIyRjFkR2d0WTJ4cFpXNTBMV0YxZEdobGJuUnBZMkYwYVc5dUp5a3VhR2xrWlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblltRnphV01uT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmNtVnhkV1Z6ZEMxaWIyUjVKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrWld3dVptbHVaQ2duTG05aGRYUm9MV05zYVdWdWRDMXBaQ2NwTG5KbGJXOTJaVU5zWVhOektIUm9hWE11WTJ4ekxtVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBa1pXd3VabWx1WkNnbkxtOWhkWFJvTFdOc2FXVnVkQzFoZFhSb1pXNTBhV05oZEdsdmJpY3BMbk5vYjNjb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc1hHNWNiaUFnSUNCelpYUkRiR2xsYm5SSlpEb2dablZ1WTNScGIyNGdLR1VwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnlJSFpoYkNBOUlDUW9aUzUwWVhKblpYUXBMblpoYkNncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbk5sZENnblkyeHBaVzUwU1dRbkxDQjJZV3dwTzF4dUlDQWdJQ0FnSUNCcFppQW9kbUZzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrS0dVdWRHRnlaMlYwS1M1eVpXMXZkbVZEYkdGemN5aDBhR2x6TG1Oc2N5NWxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOUxGeHVYRzRnSUNBZ2MyVjBRMnhwWlc1MFUyVmpjbVYwT2lCbWRXNWpkR2x2YmlBb1pTa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG5ObGRDZ25ZMnhwWlc1MFUyVmpjbVYwSnl3Z0pDaGxMblJoY21kbGRDa3VkbUZzS0NrcE8xeHVJQ0FnSUNBZ0lDQWtLR1V1ZEdGeVoyVjBLUzV5WlcxdmRtVkRiR0Z6Y3lnblpYSnliM0luS1R0Y2JpQWdJQ0I5TEZ4dVhHNGdJQ0FnYUdsbmFHeHBaMmgwU1c1MllXeHBaRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVhSb2FYTXViVzlrWld3dVoyVjBLQ2QxYzJWeWJtRnRaU2NwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxpUmxiQzVtYVc1a0tDY3ViMkYxZEdndGRYTmxjbTVoYldVbktTNWhaR1JEYkdGemN5aDBhR2x6TG1Oc2N5NWxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE11Ylc5a1pXd3VaMlYwS0NkamJHbGxiblJKWkNjcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMaVJsYkM1bWFXNWtLQ2N1YjJGMWRHZ3RZMnhwWlc1MExXbGtKeWt1WVdSa1EyeGhjM01vZEdocGN5NWpiSE11WlhKeWIzSXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1ZlNrN0lpd2lKM1Z6WlNCemRISnBZM1FuTzF4dVhHNVRkMkZuWjJWeVZXa3VWbWxsZDNNdVQzQmxjbUYwYVc5dVZtbGxkeUE5SUVKaFkydGliMjVsTGxacFpYY3VaWGgwWlc1a0tIdGNiaUFnYVc1MmIyTmhkR2x2YmxWeWJEb2diblZzYkN4Y2JseHVJQ0JsZG1WdWRITTZJSHRjYmlBZ0lDQW5jM1ZpYldsMElDNXpZVzVrWW05NEp5QWdJQ0FnSUNBZ0lEb2dKM04xWW0xcGRFOXdaWEpoZEdsdmJpY3NYRzRnSUNBZ0oyTnNhV05ySUM1emRXSnRhWFFuSUNBZ0lDQWdJQ0FnSUNBNklDZHpkV0p0YVhSUGNHVnlZWFJwYjI0bkxGeHVJQ0FnSUNkamJHbGpheUF1Y21WemNHOXVjMlZmYUdsa1pYSW5JQ0FnT2lBbmFHbGtaVkpsYzNCdmJuTmxKeXhjYmlBZ0lDQW5ZMnhwWTJzZ0xuUnZaMmRzWlU5d1pYSmhkR2x2YmljZ0lEb2dKM1J2WjJkc1pVOXdaWEpoZEdsdmJrTnZiblJsYm5RbkxGeHVJQ0FnSUNkdGIzVnpaV1Z1ZEdWeUlDNWhjR2t0YVdNbklDQWdJQ0FnT2lBbmJXOTFjMlZGYm5SbGNpY3NYRzRnSUNBZ0oyUmliR05zYVdOcklDNWpkWEpzSnlBZ0lDQWdJQ0FnSUNBNklDZHpaV3hsWTNSVVpYaDBKeXhjYmlBZ0lDQW5ZMmhoYm1kbElGdHVZVzFsUFhKbGMzQnZibk5sUTI5dWRHVnVkRlI1Y0dWZEp5QTZJQ2R6YUc5M1UyNXBjSEJsZENkY2JpQWdmU3hjYmx4dUlDQnBibWwwYVdGc2FYcGxPaUJtZFc1amRHbHZiaWh2Y0hSektTQjdYRzRnSUNBZ2IzQjBjeUE5SUc5d2RITWdmSHdnZTMwN1hHNGdJQ0FnZEdocGN5NXliM1YwWlhJZ1BTQnZjSFJ6TG5KdmRYUmxjanRjYmlBZ0lDQjBhR2x6TG1GMWRHaHpJRDBnYjNCMGN5NWhkWFJvY3p0Y2JpQWdJQ0IwYUdsekxuQmhjbVZ1ZEVsa0lEMGdkR2hwY3k1dGIyUmxiQzV3WVhKbGJuUkpaRHRjYmlBZ0lDQjBhR2x6TG01cFkydHVZVzFsSUQwZ2RHaHBjeTV0YjJSbGJDNXVhV05yYm1GdFpUdGNiaUFnSUNCMGFHbHpMbTF2WkdWc0xtVnVZMjlrWldSUVlYSmxiblJKWkNBOUlHVnVZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDBhR2x6TG5CaGNtVnVkRWxrS1R0Y2JseHVJQ0FnSUdsbUlDaHZjSFJ6TG5OM1lXZG5aWEpQY0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG1SbFptRjFiSFJTWlc1a1pYSnBibWNnUFNCdmNIUnpMbk4zWVdkblpYSlBjSFJwYjI1ekxtUmxabUYxYkhSTmIyUmxiRkpsYm1SbGNtbHVaenRjYmx4dUlDQWdJQ0FnYVdZZ0tHOXdkSE11YzNkaFoyZGxjazl3ZEdsdmJuTXVjMmh2ZDFKbGNYVmxjM1JJWldGa1pYSnpLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViVzlrWld3dWMyaHZkMUpsY1hWbGMzUklaV0ZrWlhKeklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRzl3ZEhNdWMzZGhaMmRsY2s5d2RHbHZibk11YzJodmQwOXdaWEpoZEdsdmJrbGtjeWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbTF2WkdWc0xuTm9iM2RQY0dWeVlYUnBiMjVKWkhNZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZTeGNibHh1SUNCelpXeGxZM1JVWlhoME9pQm1kVzVqZEdsdmJpaGxkbVZ1ZENrZ2UxeHVJQ0FnSUhaaGNpQmtiMk1nUFNCa2IyTjFiV1Z1ZEN4Y2JpQWdJQ0FnSUNBZ2RHVjRkQ0E5SUdWMlpXNTBMblJoY21kbGRDNW1hWEp6ZEVOb2FXeGtMRnh1SUNBZ0lDQWdJQ0J5WVc1blpTeGNiaUFnSUNBZ0lDQWdjMlZzWldOMGFXOXVPMXh1SUNBZ0lHbG1JQ2hrYjJNdVltOWtlUzVqY21WaGRHVlVaWGgwVW1GdVoyVXBJSHRjYmlBZ0lDQWdJSEpoYm1kbElEMGdaRzlqZFcxbGJuUXVZbTlrZVM1amNtVmhkR1ZVWlhoMFVtRnVaMlVvS1R0Y2JpQWdJQ0FnSUhKaGJtZGxMbTF2ZG1WVWIwVnNaVzFsYm5SVVpYaDBLSFJsZUhRcE8xeHVJQ0FnSUNBZ2NtRnVaMlV1YzJWc1pXTjBLQ2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gzYVc1a2IzY3VaMlYwVTJWc1pXTjBhVzl1S1NCN1hHNGdJQ0FnSUNCelpXeGxZM1JwYjI0Z1BTQjNhVzVrYjNjdVoyVjBVMlZzWldOMGFXOXVLQ2s3WEc0Z0lDQWdJQ0J5WVc1blpTQTlJR1J2WTNWdFpXNTBMbU55WldGMFpWSmhibWRsS0NrN1hHNGdJQ0FnSUNCeVlXNW5aUzV6Wld4bFkzUk9iMlJsUTI5dWRHVnVkSE1vZEdWNGRDazdYRzRnSUNBZ0lDQnpaV3hsWTNScGIyNHVjbVZ0YjNabFFXeHNVbUZ1WjJWektDazdYRzRnSUNBZ0lDQnpaV3hsWTNScGIyNHVZV1JrVW1GdVoyVW9jbUZ1WjJVcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQnRiM1Z6WlVWdWRHVnlPaUJtZFc1amRHbHZiaWhsS1NCN1hHNGdJQ0FnZG1GeUlHVnNaVzBnUFNBa0tIUm9hWE11Wld3cExtWnBibVFvSnk1amIyNTBaVzUwSnlrN1hHNGdJQ0FnZG1GeUlIZ2dQU0JsTG5CaFoyVllPMXh1SUNBZ0lIWmhjaUI1SUQwZ1pTNXdZV2RsV1R0Y2JpQWdJQ0IyWVhJZ2MyTllJRDBnSkNoM2FXNWtiM2NwTG5OamNtOXNiRXhsWm5Rb0tUdGNiaUFnSUNCMllYSWdjMk5aSUQwZ0pDaDNhVzVrYjNjcExuTmpjbTlzYkZSdmNDZ3BPMXh1SUNBZ0lIWmhjaUJ6WTAxaGVGZ2dQU0J6WTFnZ0t5QWtLSGRwYm1SdmR5a3VkMmxrZEdnb0tUdGNiaUFnSUNCMllYSWdjMk5OWVhoWklEMGdjMk5aSUNzZ0pDaDNhVzVrYjNjcExtaGxhV2RvZENncE8xeHVJQ0FnSUhaaGNpQjNaQ0E5SUdWc1pXMHVkMmxrZEdnb0tUdGNiaUFnSUNCMllYSWdhR2RvSUQwZ1pXeGxiUzVvWldsbmFIUW9LVHRjYmx4dUlDQWdJR2xtSUNoNElDc2dkMlFnUGlCelkwMWhlRmdwSUh0Y2JpQWdJQ0FnSUhnZ1BTQnpZMDFoZUZnZ0xTQjNaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZUNBOElITmpXQ2tnZTF4dUlDQWdJQ0FnZUNBOUlITmpXRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZVNBcklHaG5hQ0ErSUhOalRXRjRXU2tnZTF4dUlDQWdJQ0FnZVNBOUlITmpUV0Y0V1NBdElHaG5hRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZVNBOElITmpXU2tnZTF4dUlDQWdJQ0FnZVNBOUlITmpXVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZWElnY0c5eklEMGdlMzA3WEc0Z0lDQWdjRzl6TG5SdmNDQTlJSGs3WEc0Z0lDQWdjRzl6TG14bFpuUWdQU0I0TzF4dUlDQWdJR1ZzWlcwdVkzTnpLSEJ2Y3lrN1hHNGdJSDBzWEc1Y2JpQWdMeThnVG05MFpUb2dZMjl3YVdWa0lHWnliMjBnUTI5bVptVmxVMk55YVhCMElHTnZiWEJwYkdWa0lHWnBiR1ZjYmlBZ0x5OGdWRTlFVHpvZ2NtVm1ZV04wYjNKY2JpQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQjJZWElnWVN3Z1lYVjBhQ3dnWVhWMGFITXNJR052WkdVc0lHTnZiblJsYm5SVWVYQmxUVzlrWld3c0lHbHpUV1YwYUc5a1UzVmliV2x6YzJsdmJsTjFjSEJ2Y25SbFpDd2dheXdnYTJWNUxDQnNMQ0JzWlc0c0lHeGxiakVzSUd4bGJqSXNJR3hsYmpNc0lHeGxialFzSUcwc0lHMXZaR1ZzUVhWMGFITXNJRzRzSUc4c0lIQXNJSEJoY21GdExDQnhMQ0J5WldZc0lISmxaakVzSUhKbFpqSXNJSEpsWmpNc0lISmxaalFzSUhKbFpqVXNJSEpsYzNCdmJuTmxRMjl1ZEdWdWRGUjVjR1ZXYVdWM0xDQnlaWE53YjI1elpWTnBaMjVoZEhWeVpWWnBaWGNzSUhOamFHVnRZU3dnYzJOb1pXMWhUMkpxTENCelkyOXdaVWx1WkdWNExDQnphV2R1WVhSMWNtVk5iMlJsYkN3Z2MzUmhkSFZ6UTI5a1pTd2djM1ZqWTJWemMxSmxjM0J2Ym5ObExDQjBlWEJsTENCMkxDQjJZV3gxWlN3Z2NISnZaSFZqWlhNc0lHbHpXRTFNTENCcGMwcFRUMDQ3WEc0Z0lDQWdhWE5OWlhSb2IyUlRkV0p0YVhOemFXOXVVM1Z3Y0c5eWRHVmtJRDBnYWxGMVpYSjVMbWx1UVhKeVlYa29kR2hwY3k1dGIyUmxiQzV0WlhSb2IyUXNJSFJvYVhNdWJXOWtaV3d1YzNWd2NHOXlkR1ZrVTNWaWJXbDBUV1YwYUc5a2N5Z3BLU0ErUFNBd08xeHVJQ0FnSUdsbUlDZ2hhWE5OWlhSb2IyUlRkV0p0YVhOemFXOXVVM1Z3Y0c5eWRHVmtLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG1selVtVmhaRTl1YkhrZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG0xdlpHVnNMbVJsYzJOeWFYQjBhVzl1SUQwZ2RHaHBjeTV0YjJSbGJDNWtaWE5qY21sd2RHbHZiaUI4ZkNCMGFHbHpMbTF2WkdWc0xtNXZkR1Z6TzF4dUlDQWdJSFJvYVhNdWJXOWtaV3d1YjJGMWRHZ2dQU0J1ZFd4c08xeHVJQ0FnSUcxdlpHVnNRWFYwYUhNZ1BTQjBhR2x6TG0xdlpHVnNMbUYxZEdodmNtbDZZWFJwYjI1eklIeDhJSFJvYVhNdWJXOWtaV3d1YzJWamRYSnBkSGs3WEc0Z0lDQWdhV1lnS0cxdlpHVnNRWFYwYUhNcElIdGNiaUFnSUNBZ0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtHMXZaR1ZzUVhWMGFITXBLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iQ0E5SURBc0lHeGxiaUE5SUcxdlpHVnNRWFYwYUhNdWJHVnVaM1JvT3lCc0lEd2diR1Z1T3lCc0t5c3BJSHRjYmlBZ0lDQWdJQ0FnSUNCaGRYUm9jeUE5SUcxdlpHVnNRWFYwYUhOYmJGMDdYRzRnSUNBZ0lDQWdJQ0FnWm05eUlDaHJaWGtnYVc0Z1lYVjBhSE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb1lTQnBiaUIwYUdsekxtRjFkR2h6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdGMWRHZ2dQU0IwYUdsekxtRjFkR2h6VzJGZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hMlY1SUQwOVBTQmhkWFJvTG01aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lYVjBhQzUwZVhCbElEMDlQU0FuYjJGMWRHZ3lKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJDNXZZWFYwYUNBOUlIdDlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXRiMlJsYkM1dllYVjBhQzV6WTI5d1pYTWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxaakVnUFNCaGRYUm9MblpoYkhWbExuTmpiM0JsY3p0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvYXlCcGJpQnlaV1l4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFlnUFNCeVpXWXhXMnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpZMjl3WlVsdVpHVjRJRDBnWVhWMGFITmJhMlY1WFM1cGJtUmxlRTltS0dzcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2MyTnZjR1ZKYm1SbGVDQStQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYnlBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmpiM0JsT2lCckxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnpZM0pwY0hScGIyNDZJSFpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Ylc5a1pXd3ViMkYxZEdndWMyTnZjR1Z6TG5CMWMyZ29ieWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9heUJwYmlCdGIyUmxiRUYxZEdoektTQjdYRzRnSUNBZ0lDQWdJQ0FnZGlBOUlHMXZaR1ZzUVhWMGFITmJhMTA3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3NnUFQwOUlDZHZZWFYwYURJbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kR2hwY3k1dGIyUmxiQzV2WVhWMGFDQTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbTloZFhSb0lEMGdlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kR2hwY3k1dGIyUmxiQzV2WVhWMGFDNXpZMjl3WlhNZ1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbTloZFhSb0xuTmpiM0JsY3lBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHRJRDBnTUN3Z2JHVnVNU0E5SUhZdWJHVnVaM1JvT3lCdElEd2diR1Z1TVRzZ2JTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJRzhnUFNCMlcyMWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbTloZFhSb0xuTmpiM0JsY3k1d2RYTm9LRzhwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhSb2FYTXViVzlrWld3dWNtVnpjRzl1YzJWeklDRTlQU0FuZFc1a1pXWnBibVZrSnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJDNXlaWE53YjI1elpVMWxjM05oWjJWeklEMGdXMTA3WEc0Z0lDQWdJQ0J5WldZeUlEMGdkR2hwY3k1dGIyUmxiQzV5WlhOd2IyNXpaWE03WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZaR1VnYVc0Z2NtVm1NaWtnZTF4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUhKbFpqSmJZMjlrWlYwN1hHNGdJQ0FnSUNBZ0lITmphR1Z0WVNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUhOamFHVnRZVTlpYWlBOUlIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVnpXMk52WkdWZExuTmphR1Z0WVR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSE5qYUdWdFlVOWlhaUFtSmlCelkyaGxiV0ZQWW1vdUpISmxaaWtnZTF4dUlDQWdJQ0FnSUNBZ0lITmphR1Z0WVNBOUlITmphR1Z0WVU5aWFpNGtjbVZtTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h6WTJobGJXRXVhVzVrWlhoUFppZ25JeTlrWldacGJtbDBhVzl1Y3k4bktTQWhQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOamFHVnRZU0E5SUhOamFHVnRZUzV5WlhCc1lXTmxLQzllTGlvalhGd3ZaR1ZtYVc1cGRHbHZibk5jWEM4dkxDQW5KeWs3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJvYVhNdWJXOWtaV3d1Y21WemNHOXVjMlZOWlhOellXZGxjeTV3ZFhOb0tIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJSbE9pQmpiMlJsTEZ4dUlDQWdJQ0FnSUNBZ0lHMWxjM05oWjJVNklIWmhiSFZsTG1SbGMyTnlhWEIwYVc5dUxGeHVJQ0FnSUNBZ0lDQWdJSEpsYzNCdmJuTmxUVzlrWld3NklITmphR1Z0WVN4Y2JpQWdJQ0FnSUNBZ0lDQm9aV0ZrWlhKek9pQjJZV3gxWlM1b1pXRmtaWEp6TEZ4dUlDQWdJQ0FnSUNBZ0lITmphR1Z0WVRvZ2MyTm9aVzFoVDJKcVhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCcFppQW9kSGx3Wlc5bUlIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVk5aWE56WVdkbGN5QTlQVDBnSjNWdVpHVm1hVzVsWkNjcElIdGNiaUFnSUNBZ0lIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVk5aWE56WVdkbGN5QTlJRnRkTzF4dUlDQWdJSDFjYmlBZ0lDQnphV2R1WVhSMWNtVk5iMlJsYkNBOUlHNTFiR3c3WEc0Z0lDQWdjSEp2WkhWalpYTWdQU0IwYUdsekxtMXZaR1ZzTG5CeWIyUjFZMlZ6TzF4dUlDQWdJR2x6V0UxTUlEMGdkR2hwY3k1amIyNTBZV2x1Y3lod2NtOWtkV05sY3l3Z0ozaHRiQ2NwTzF4dUlDQWdJR2x6U2xOUFRpQTlJR2x6V0UxTUlEOGdkR2hwY3k1amIyNTBZV2x1Y3lod2NtOWtkV05sY3l3Z0oycHpiMjRuS1NBNklIUnlkV1U3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTV0YjJSbGJDNXpkV05qWlhOelVtVnpjRzl1YzJVcElIdGNiaUFnSUNBZ0lITjFZMk5sYzNOU1pYTndiMjV6WlNBOUlIUm9hWE11Ylc5a1pXd3VjM1ZqWTJWemMxSmxjM0J2Ym5ObE8xeHVJQ0FnSUNBZ1ptOXlJQ2hyWlhrZ2FXNGdjM1ZqWTJWemMxSmxjM0J2Ym5ObEtTQjdYRzRnSUNBZ0lDQWdJSFpoYkhWbElEMGdjM1ZqWTJWemMxSmxjM0J2Ym5ObFcydGxlVjA3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViVzlrWld3dWMzVmpZMlZ6YzBOdlpHVWdQU0JyWlhrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2R2WW1wbFkzUW5JQ1ltSUhSNWNHVnZaaUIyWVd4MVpTNWpjbVZoZEdWS1UwOU9VMkZ0Y0d4bElEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1dGIyUmxiQzV6ZFdOalpYTnpSR1Z6WTNKcGNIUnBiMjRnUFNCMllXeDFaUzVrWlhOamNtbHdkR2x2Ymp0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbWhsWVdSbGNuTWdQU0IwYUdsekxuQmhjbk5sVW1WemNHOXVjMlZJWldGa1pYSnpLSFpoYkhWbExtaGxZV1JsY25NcE8xeHVJQ0FnSUNBZ0lDQWdJSE5wWjI1aGRIVnlaVTF2WkdWc0lEMGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyRnRjR3hsU2xOUFRqb2dhWE5LVTA5T0lEOGdTbE5QVGk1emRISnBibWRwWm5rb1UzZGhaMmRsY2xWcExuQmhjblJwWVd4ekxuTnBaMjVoZEhWeVpTNWpjbVZoZEdWS1UwOU9VMkZ0Y0d4bEtIWmhiSFZsS1N3Z2RtOXBaQ0F3TENBeUtTQTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYVhOUVlYSmhiVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCellXMXdiR1ZZVFV3NklHbHpXRTFNSUQ4Z1UzZGhaMmRsY2xWcExuQmhjblJwWVd4ekxuTnBaMjVoZEhWeVpTNWpjbVZoZEdWWVRVeFRZVzF3YkdVb2RtRnNkV1V1Ym1GdFpTd2dkbUZzZFdVdVpHVm1hVzVwZEdsdmJpd2dkbUZzZFdVdWJXOWtaV3h6S1NBNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMmxuYm1GMGRYSmxPaUJUZDJGbloyVnlWV2t1Y0dGeWRHbGhiSE11YzJsbmJtRjBkWEpsTG1kbGRFMXZaR1ZzVTJsbmJtRjBkWEpsS0haaGJIVmxMbTVoYldVc0lIWmhiSFZsTG1SbFptbHVhWFJwYjI0c0lIWmhiSFZsTG0xdlpHVnNjeXdnZG1Gc2RXVXViVzlrWld4UWNtOXdaWEowZVUxaFkzSnZLVnh1SUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjMmxuYm1GMGRYSmxUVzlrWld3Z1BTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCemFXZHVZWFIxY21VNklGTjNZV2RuWlhKVmFTNXdZWEowYVdGc2N5NXphV2R1WVhSMWNtVXVaMlYwVUhKcGJXbDBhWFpsVTJsbmJtRjBkWEpsS0haaGJIVmxLVnh1SUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVkRiR0Z6YzFOcFoyNWhkSFZ5WlNBbUppQjBhR2x6TG0xdlpHVnNMbkpsYzNCdmJuTmxRMnhoYzNOVGFXZHVZWFIxY21VZ0lUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdJQ0J6YVdkdVlYUjFjbVZOYjJSbGJDQTlJSHRjYmlBZ0lDQWdJQ0FnYzJGdGNHeGxTbE5QVGpvZ2RHaHBjeTV0YjJSbGJDNXlaWE53YjI1elpWTmhiWEJzWlVwVFQwNHNYRzRnSUNBZ0lDQWdJR2x6VUdGeVlXMDZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQnphV2R1WVhSMWNtVTZJSFJvYVhNdWJXOWtaV3d1Y21WemNHOXVjMlZEYkdGemMxTnBaMjVoZEhWeVpWeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNGdJQ0FnSkNoMGFHbHpMbVZzS1M1b2RHMXNLRWhoYm1Sc1pXSmhjbk11ZEdWdGNHeGhkR1Z6TG05d1pYSmhkR2x2YmloMGFHbHpMbTF2WkdWc0tTazdYRzRnSUNBZ2FXWWdLSE5wWjI1aGRIVnlaVTF2WkdWc0tTQjdYRzRnSUNBZ0lDQnphV2R1WVhSMWNtVk5iMlJsYkM1a1pXWmhkV3gwVW1WdVpHVnlhVzVuSUQwZ2RHaHBjeTV0YjJSbGJDNWtaV1poZFd4MFVtVnVaR1Z5YVc1bk8xeHVJQ0FnSUNBZ2NtVnpjRzl1YzJWVGFXZHVZWFIxY21WV2FXVjNJRDBnYm1WM0lGTjNZV2RuWlhKVmFTNVdhV1YzY3k1VGFXZHVZWFIxY21WV2FXVjNLSHRjYmlBZ0lDQWdJQ0FnYlc5a1pXdzZJSE5wWjI1aGRIVnlaVTF2WkdWc0xGeHVJQ0FnSUNBZ0lDQnliM1YwWlhJNklIUm9hWE11Y205MWRHVnlMRnh1SUNBZ0lDQWdJQ0IwWVdkT1lXMWxPaUFuWkdsMkoxeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWtLQ2N1Ylc5a1pXd3RjMmxuYm1GMGRYSmxKeXdnSkNoMGFHbHpMbVZzS1NrdVlYQndaVzVrS0hKbGMzQnZibk5sVTJsbmJtRjBkWEpsVm1sbGR5NXlaVzVrWlhJb0tTNWxiQ2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVkRiR0Z6YzFOcFoyNWhkSFZ5WlNBOUlDZHpkSEpwYm1jbk8xeHVJQ0FnSUNBZ0pDZ25MbTF2WkdWc0xYTnBaMjVoZEhWeVpTY3NJQ1FvZEdocGN5NWxiQ2twTG1oMGJXd29kR2hwY3k1dGIyUmxiQzUwZVhCbEtUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWRHVnVkRlI1Y0dWTmIyUmxiQ0E5SUh0Y2JpQWdJQ0FnSUdselVHRnlZVzA2SUdaaGJITmxYRzRnSUNBZ2ZUdGNiaUFnSUNCamIyNTBaVzUwVkhsd1pVMXZaR1ZzTG1OdmJuTjFiV1Z6SUQwZ2RHaHBjeTV0YjJSbGJDNWpiMjV6ZFcxbGN6dGNiaUFnSUNCamIyNTBaVzUwVkhsd1pVMXZaR1ZzTG5CeWIyUjFZMlZ6SUQwZ2RHaHBjeTV0YjJSbGJDNXdjbTlrZFdObGN6dGNiaUFnSUNCeVpXWXpJRDBnZEdocGN5NXRiMlJsYkM1d1lYSmhiV1YwWlhKek8xeHVJQ0FnSUdadmNpQW9iaUE5SURBc0lHeGxiaklnUFNCeVpXWXpMbXhsYm1kMGFEc2diaUE4SUd4bGJqSTdJRzRyS3lrZ2UxeHVJQ0FnSUNBZ2NHRnlZVzBnUFNCeVpXWXpXMjVkTzF4dUlDQWdJQ0FnZEhsd1pTQTlJSEJoY21GdExuUjVjR1VnZkh3Z2NHRnlZVzB1WkdGMFlWUjVjR1VnZkh3Z0p5YzdYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSFI1Y0dVZ1BUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lITmphR1Z0WVNBOUlIQmhjbUZ0TG5OamFHVnRZVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tITmphR1Z0WVNBbUppQnpZMmhsYldFdUpISmxaaWtnZTF4dUlDQWdJQ0FnSUNBZ0lISmxaaUE5SUhOamFHVnRZUzRrY21WbU8xeHVJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpXWXVhVzVrWlhoUFppZ25JeTlrWldacGJtbDBhVzl1Y3k4bktTQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pTQTlJSEpsWmk1emRXSnpkSEpwYm1jb0p5TXZaR1ZtYVc1cGRHbHZibk12Snk1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbElEMGdjbVZtTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSNWNHVWdKaVlnZEhsd1pTNTBiMHh2ZDJWeVEyRnpaU2dwSUQwOVBTQW5abWxzWlNjcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGamIyNTBaVzUwVkhsd1pVMXZaR1ZzTG1OdmJuTjFiV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1ZEdWdWRGUjVjR1ZOYjJSbGJDNWpiMjV6ZFcxbGN5QTlJQ2R0ZFd4MGFYQmhjblF2Wm05eWJTMWtZWFJoSnp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NHRnlZVzB1ZEhsd1pTQTlJSFI1Y0dVN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsYzNCdmJuTmxRMjl1ZEdWdWRGUjVjR1ZXYVdWM0lEMGdibVYzSUZOM1lXZG5aWEpWYVM1V2FXVjNjeTVTWlhOd2IyNXpaVU52Ym5SbGJuUlVlWEJsVm1sbGR5aDdYRzRnSUNBZ0lDQnRiMlJsYkRvZ1kyOXVkR1Z1ZEZSNWNHVk5iMlJsYkN4Y2JpQWdJQ0FnSUhKdmRYUmxjam9nZEdocGN5NXliM1YwWlhKY2JpQWdJQ0I5S1R0Y2JpQWdJQ0FrS0NjdWNtVnpjRzl1YzJVdFkyOXVkR1Z1ZEMxMGVYQmxKeXdnSkNoMGFHbHpMbVZzS1NrdVlYQndaVzVrS0hKbGMzQnZibk5sUTI5dWRHVnVkRlI1Y0dWV2FXVjNMbkpsYm1SbGNpZ3BMbVZzS1R0Y2JpQWdJQ0J5WldZMElEMGdkR2hwY3k1dGIyUmxiQzV3WVhKaGJXVjBaWEp6TzF4dUlDQWdJR1p2Y2lBb2NDQTlJREFzSUd4bGJqTWdQU0J5WldZMExteGxibWQwYURzZ2NDQThJR3hsYmpNN0lIQXJLeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMGdQU0J5WldZMFczQmRPMXh1SUNBZ0lDQWdkR2hwY3k1aFpHUlFZWEpoYldWMFpYSW9jR0Z5WVcwc0lHTnZiblJsYm5SVWVYQmxUVzlrWld3dVkyOXVjM1Z0WlhNcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WldZMUlEMGdkR2hwY3k1dGIyUmxiQzV5WlhOd2IyNXpaVTFsYzNOaFoyVnpPMXh1SUNBZ0lHWnZjaUFvY1NBOUlEQXNJR3hsYmpRZ1BTQnlaV1kxTG14bGJtZDBhRHNnY1NBOElHeGxialE3SUhFckt5a2dlMXh1SUNBZ0lDQWdjM1JoZEhWelEyOWtaU0E5SUhKbFpqVmJjVjA3WEc0Z0lDQWdJQ0J6ZEdGMGRYTkRiMlJsTG1seldFMU1JRDBnYVhOWVRVdzdYRzRnSUNBZ0lDQnpkR0YwZFhORGIyUmxMbWx6U2xOUFRpQTlJR2x6U2xOUFRqdGNiaUFnSUNBZ0lHbG1JQ2doWHk1cGMxVnVaR1ZtYVc1bFpDaHpkR0YwZFhORGIyUmxMbWhsWVdSbGNuTXBLU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUjFjME52WkdVdWFHVmhaR1Z5Y3lBOUlIUm9hWE11Y0dGeWMyVklaV0ZrWlhKelZIbHdaU2h6ZEdGMGRYTkRiMlJsTG1obFlXUmxjbk1wTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NWhaR1JUZEdGMGRYTkRiMlJsS0hOMFlYUjFjME52WkdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0hSb2FYTXViVzlrWld3dWMyVmpkWEpwZEhrcEtTQjdYRzRnSUNBZ0lDQjJZWElnWVhWMGFITk5iMlJsYkNBOUlGTjNZV2RuWlhKVmFTNTFkR2xzY3k1d1lYSnpaVk5sWTNWeWFYUjVSR1ZtYVc1cGRHbHZibk1vZEdocGN5NXRiMlJsYkM1elpXTjFjbWwwZVN3Z2RHaHBjeTV0YjJSbGJDNXdZWEpsYm5RdWMyVmpkWEpwZEhsRVpXWnBibWwwYVc5dWN5azdYRzVjYmlBZ0lDQWdJR0YxZEdoelRXOWtaV3d1YVhOTWIyZHZkWFFnUFNBaFh5NXBjMFZ0Y0hSNUtIUm9hWE11Ylc5a1pXd3VZMnhwWlc1MFFYVjBhRzl5YVhwaGRHbHZibk11WVhWMGFIb3BPMXh1SUNBZ0lDQWdkR2hwY3k1aGRYUm9WbWxsZHlBOUlHNWxkeUJUZDJGbloyVnlWV2t1Vm1sbGQzTXVRWFYwYUVKMWRIUnZibFpwWlhjb2UxeHVJQ0FnSUNBZ0lDQmtZWFJoT2lCaGRYUm9jMDF2WkdWc0xGeHVJQ0FnSUNBZ0lDQnliM1YwWlhJNklIUm9hWE11Y205MWRHVnlMRnh1SUNBZ0lDQWdJQ0JwYzA5d1pYSmhkR2x2YmpvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnYlc5a1pXdzZJSHRjYmlBZ0lDQWdJQ0FnSUNCelkyOXdaWE02SUdGMWRHaHpUVzlrWld3dWMyTnZjR1Z6WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2RHaHBjeTRrS0NjdVlYVjBhRzl5YVhwbExYZHlZWEJ3WlhJbktTNWhjSEJsYm1Rb2RHaHBjeTVoZFhSb1ZtbGxkeTV5Wlc1a1pYSW9LUzVsYkNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXphRzkzVTI1cGNIQmxkQ2dwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlMRnh1WEc0Z0lIQmhjbk5sU0dWaFpHVnljMVI1Y0dVNklHWjFibU4wYVc5dUlDaG9aV0ZrWlhKektTQjdYRzRnSUNBZ2RtRnlJRzFoY0NBOUlIdGNiaUFnSUNBZ0lDZHpkSEpwYm1jbk9pQjdYRzRnSUNBZ0lDQWdJQ2RrWVhSbExYUnBiV1VuT2lBblpHRjBaVlJwYldVbkxGeHVJQ0FnSUNBZ0lDQW5aR0YwWlNjZ0lDQWdJRG9nSjJSaGRHVW5YRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lGOHVabTl5UldGamFDaG9aV0ZrWlhKekxDQm1kVzVqZEdsdmJpQW9hR1ZoWkdWeUtTQjdYRzRnSUNBZ0lDQjJZWElnZG1Gc2RXVTdYRzRnSUNBZ0lDQm9aV0ZrWlhJZ1BTQm9aV0ZrWlhJZ2ZId2dlMzA3WEc0Z0lDQWdJQ0IyWVd4MVpTQTlJRzFoY0Z0b1pXRmtaWEl1ZEhsd1pWMGdKaVlnYldGd1cyaGxZV1JsY2k1MGVYQmxYVnRvWldGa1pYSXVabTl5YldGMFhUdGNiaUFnSUNBZ0lHbG1JQ2doWHk1cGMxVnVaR1ZtYVc1bFpDaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdhR1ZoWkdWeUxuUjVjR1VnUFNCMllXeDFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQm9aV0ZrWlhKek8xeHVJQ0I5TEZ4dVhHNGdJR052Ym5SaGFXNXpPaUJtZFc1amRHbHZiaUFvY0hKdlpIVmpaWE1zSUhSNWNHVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2NISnZaSFZqWlhNdVptbHNkR1Z5S0daMWJtTjBhVzl1SUNoMllXd3BJSHRjYmlBZ0lDQWdJR2xtSUNoMllXd3VhVzVrWlhoUFppaDBlWEJsS1NBK0lDMHhLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcExteGxibWQwYUR0Y2JpQWdmU3hjYmx4dUlDQndZWEp6WlZKbGMzQnZibk5sU0dWaFpHVnljem9nWm5WdVkzUnBiMjRnS0dSaGRHRXBJSHRjYmlBZ0lDQjJZWElnU0VWQlJFVlNVMTlUUlZCQlVrRlVUMUlnUFNBbk95QW5PMXh1SUNBZ0lIWmhjaUJvWldGa1pYSnpJRDBnWHk1amJHOXVaU2hrWVhSaEtUdGNibHh1SUNBZ0lGOHVabTl5UldGamFDaG9aV0ZrWlhKekxDQm1kVzVqZEdsdmJpQW9hR1ZoWkdWeUtTQjdYRzRnSUNBZ0lDQjJZWElnYjNSb1pYSWdQU0JiWFR0Y2JpQWdJQ0FnSUY4dVptOXlSV0ZqYUNob1pXRmtaWElzSUdaMWJtTjBhVzl1SUNoMllXeDFaU3dnYTJWNUtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCd2NtOXdaWEowYVdWeklEMGdXeWQwZVhCbEp5d2dKMlJsYzJOeWFYQjBhVzl1SjEwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y205d1pYSjBhV1Z6TG1sdVpHVjRUMllvYTJWNUxuUnZURzkzWlhKRFlYTmxLQ2twSUQwOVBTQXRNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHOTBhR1Z5TG5CMWMyZ29hMlY1SUNzZ0p6b2dKeUFySUhaaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lHOTBhR1Z5TG1wdmFXNG9TRVZCUkVWU1UxOVRSVkJCVWtGVVQxSXBPMXh1SUNBZ0lDQWdhR1ZoWkdWeUxtOTBhR1Z5SUQwZ2IzUm9aWEk3WEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdhR1ZoWkdWeWN6dGNiaUFnZlN4Y2JseHVJQ0JoWkdSUVlYSmhiV1YwWlhJNklHWjFibU4wYVc5dUtIQmhjbUZ0TENCamIyNXpkVzFsY3lrZ2UxeHVJQ0FnSUM4dklGSmxibVJsY2lCaElIQmhjbUZ0WlhSbGNseHVJQ0FnSUhCaGNtRnRMbU52Ym5OMWJXVnpJRDBnWTI5dWMzVnRaWE03WEc0Z0lDQWdjR0Z5WVcwdVpHVm1ZWFZzZEZKbGJtUmxjbWx1WnlBOUlIUm9hWE11Ylc5a1pXd3VaR1ZtWVhWc2RGSmxibVJsY21sdVp6dGNibHh1SUNBZ0lDOHZJRU52Y0hrZ2RHaHBjeUJ3WVhKaGJTQktVMDlPSUhOd1pXTWdjMjhnZEdoaGRDQnBkQ0IzYVd4c0lHSmxJR0YyWVdsc1lXSnNaU0JtYjNJZ1NuTnZia1ZrYVhSdmNseHVJQ0FnSUdsbUtIQmhjbUZ0TG5OamFHVnRZU2w3WEc0Z0lDQWdJQ0FrTG1WNGRHVnVaQ2gwY25WbExDQndZWEpoYlM1elkyaGxiV0VzSUhSb2FYTXViVzlrWld3dVpHVm1hVzVwZEdsdmJuTmJjR0Z5WVcwdWRIbHdaVjBwTzF4dUlDQWdJQ0FnY0dGeVlXMHVjMk5vWlcxaExtUmxabWx1YVhScGIyNXpJRDBnZEdocGN5NXRiMlJsYkM1a1pXWnBibWwwYVc5dWN6dGNiaUFnSUNBZ0lDOHZJRlJvYVhNZ2FYTWdjbVZ4ZFdseVpXUWdabTl5SUVwemIyNUZaR2wwYjNJZ2RHOGdaR2x6Y0d4aGVTQjBhR1VnY205dmRDQndjbTl3WlhKc2VWeHVJQ0FnSUNBZ2FXWW9JWEJoY21GdExuTmphR1Z0WVM1MGVYQmxLWHRjYmlBZ0lDQWdJQ0FnY0dGeVlXMHVjMk5vWlcxaExuUjVjR1VnUFNBbmIySnFaV04wSnp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklGUm9hWE1nYVhNZ2RHaGxJSFJwZEd4bElIUm9ZWFFnZDJsc2JDQmlaU0IxYzJWa0lHSjVJRXB6YjI1RlpHbDBiM0lnWm05eUlIUm9aU0J5YjI5MFhHNGdJQ0FnSUNBdkx5QlRhVzVqWlNCM1pTQmhiSEpsWVdSNUlHUnBjM0JzWVhrZ2RHaGxJSEJoY21GdFpYUmxjaWR6SUc1aGJXVWdhVzRnZEdobElGQmhjbUZ0WlhSbGNpQmpiMngxYlc1Y2JpQWdJQ0FnSUM4dklGZGxJSE5sZENCMGFHbHpJSFJ2SUhOd1lXTmxMQ0IzWlNCallXNG5kQ0J6WlhRZ2FYUWdkRzhnYm5Wc2JDQnZjaUJ6Y0dGalpTQnZkR2hsY25kcGMyVWdTbk52YmtWa2FYUnZjbHh1SUNBZ0lDQWdMeThnZDJsc2JDQnlaWEJzWVdObElHbDBJSGRwZEdnZ2RHaGxJSFJsZUhRZ1hDSnliMjkwWENJZ2QyaHBZMmdnZDI5dUozUWdiRzl2YXlCbmIyOWtJRzl1SUhOamNtVmxibHh1SUNBZ0lDQWdhV1lvSVhCaGNtRnRMbk5qYUdWdFlTNTBhWFJzWlNsN1hHNGdJQ0FnSUNBZ0lIQmhjbUZ0TG5OamFHVnRZUzUwYVhSc1pTQTlJQ2NnSnp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2NHRnlZVzFXYVdWM0lEMGdibVYzSUZOM1lXZG5aWEpWYVM1V2FXVjNjeTVRWVhKaGJXVjBaWEpXYVdWM0tIdGNiaUFnSUNBZ0lHMXZaR1ZzT2lCd1lYSmhiU3hjYmlBZ0lDQWdJSFJoWjA1aGJXVTZJQ2QwY2ljc1hHNGdJQ0FnSUNCeVpXRmtUMjVzZVRvZ2RHaHBjeTV0YjJSbGJDNXBjMUpsWVdSUGJteDVMRnh1SUNBZ0lDQWdjM2RoWjJkbGNrOXdkR2x2Ym5NNklIUm9hWE11YjNCMGFXOXVjeTV6ZDJGbloyVnlUM0IwYVc5dWMxeHVJQ0FnSUgwcE8xeHVJQ0FnSUNRb0p5NXZjR1Z5WVhScGIyNHRjR0Z5WVcxekp5d2dKQ2gwYUdsekxtVnNLU2t1WVhCd1pXNWtLSEJoY21GdFZtbGxkeTV5Wlc1a1pYSW9LUzVsYkNrN1hHNGdJSDBzWEc1Y2JpQWdZV1JrVTNSaGRIVnpRMjlrWlRvZ1puVnVZM1JwYjI0b2MzUmhkSFZ6UTI5a1pTa2dlMXh1SUNBZ0lDOHZJRkpsYm1SbGNpQnpkR0YwZFhNZ1kyOWtaWE5jYmlBZ0lDQnpkR0YwZFhORGIyUmxMbVJsWm1GMWJIUlNaVzVrWlhKcGJtY2dQU0IwYUdsekxtMXZaR1ZzTG1SbFptRjFiSFJTWlc1a1pYSnBibWM3WEc0Z0lDQWdkbUZ5SUhOMFlYUjFjME52WkdWV2FXVjNJRDBnYm1WM0lGTjNZV2RuWlhKVmFTNVdhV1YzY3k1VGRHRjBkWE5EYjJSbFZtbGxkeWg3WEc0Z0lDQWdJQ0J0YjJSbGJEb2djM1JoZEhWelEyOWtaU3hjYmlBZ0lDQWdJSFJoWjA1aGJXVTZJQ2QwY2ljc1hHNGdJQ0FnSUNCeWIzVjBaWEk2SUhSb2FYTXVjbTkxZEdWeVhHNGdJQ0FnZlNrN1hHNGdJQ0FnSkNnbkxtOXdaWEpoZEdsdmJpMXpkR0YwZFhNbkxDQWtLSFJvYVhNdVpXd3BLUzVoY0hCbGJtUW9jM1JoZEhWelEyOWtaVlpwWlhjdWNtVnVaR1Z5S0NrdVpXd3BPMXh1SUNCOUxGeHVYRzRnSUM4dklFNXZkR1U2SUdOdmNHbGxaQ0JtY205dElFTnZabVpsWlZOamNtbHdkQ0JqYjIxd2FXeGxaQ0JtYVd4bFhHNGdJQzh2SUZSUFJFODZJSEpsWkdGamRHOXlYRzRnSUhOMVltMXBkRTl3WlhKaGRHbHZiam9nWm5WdVkzUnBiMjRvWlNrZ2UxeHVJQ0FnSUhaaGNpQmxjbkp2Y2w5bWNtVmxMQ0JtYjNKdExDQnBjMFpwYkdWVmNHeHZZV1FzSUcxaGNDd2diM0IwY3p0Y2JpQWdJQ0JwWmlBb1pTQWhQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdaUzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCbWIzSnRJRDBnSkNnbkxuTmhibVJpYjNnbkxDQWtLSFJvYVhNdVpXd3BLVHRjYmlBZ0lDQmxjbkp2Y2w5bWNtVmxJRDBnZEhKMVpUdGNiaUFnSUNCbWIzSnRMbVpwYm1Rb0oybHVjSFYwTG5KbGNYVnBjbVZrSnlrdVpXRmphQ2htZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnSUNRb2RHaHBjeWt1Y21WdGIzWmxRMnhoYzNNb0oyVnljbTl5SnlrN1hHNGdJQ0FnSUNCcFppQW9hbEYxWlhKNUxuUnlhVzBvSkNoMGFHbHpLUzUyWVd3b0tTa2dQVDA5SUNjbktTQjdYRzRnSUNBZ0lDQWdJQ1FvZEdocGN5a3VZV1JrUTJ4aGMzTW9KMlZ5Y205eUp5azdYRzRnSUNBZ0lDQWdJQ1FvZEdocGN5a3VkMmxuWjJ4bEtIdGNiaUFnSUNBZ0lDQWdJQ0JqWVd4c1ltRmphem9nS0daMWJtTjBhVzl1S0Y5MGFHbHpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDUW9YM1JvYVhNcExtWnZZM1Z6S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dUlDQWdJQ0FnSUNBZ0lIMHBLSFJvYVhNcFhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0JsY25KdmNsOW1jbVZsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdabTl5YlM1bWFXNWtLQ2QwWlhoMFlYSmxZUzV5WlhGMWFYSmxaRHAyYVhOcFlteGxKeWt1WldGamFDaG1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJQ1FvZEdocGN5a3VjbVZ0YjNabFEyeGhjM01vSjJWeWNtOXlKeWs3WEc0Z0lDQWdJQ0JwWmlBb2FsRjFaWEo1TG5SeWFXMG9KQ2gwYUdsektTNTJZV3dvS1NrZ1BUMDlJQ2NuS1NCN1hHNGdJQ0FnSUNBZ0lDUW9kR2hwY3lrdVlXUmtRMnhoYzNNb0oyVnljbTl5SnlrN1hHNGdJQ0FnSUNBZ0lDUW9kR2hwY3lrdWQybG5aMnhsS0h0Y2JpQWdJQ0FnSUNBZ0lDQmpZV3hzWW1GamF6b2dLR1oxYm1OMGFXOXVLRjkwYUdsektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFrS0Y5MGFHbHpLUzVtYjJOMWN5Z3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdJQ0I5S1NoMGFHbHpLVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ1pYSnliM0pmWm5KbFpTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVJQ0FnSUdadmNtMHVabWx1WkNnbmMyVnNaV04wTG5KbGNYVnBjbVZrSnlrdVpXRmphQ2htZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0FnSUNRb2RHaHBjeWt1Y21WdGIzWmxRMnhoYzNNb0oyVnljbTl5SnlrN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1elpXeGxZM1JsWkVsdVpHVjRJRDA5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdJQ0FrS0hSb2FYTXBMbUZrWkVOc1lYTnpLQ2RsY25KdmNpY3BPMXh1SUNBZ0lDQWdJQ0FrS0hSb2FYTXBMbmRwWjJkc1pTaDdYRzRnSUNBZ0lDQWdJQ0FnWTJGc2JHSmhZMnM2SUNobWRXNWpkR2x2YmloZmRHaHBjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWtLRjkwYUdsektTNW1iMk4xY3lncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ0lDQjlLU2gwYUdsektWeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnWlhKeWIzSmZabkpsWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQWdJR2xtSUNobGNuSnZjbDltY21WbEtTQjdYRzRnSUNBZ0lDQnRZWEFnUFNCMGFHbHpMbWRsZEVsdWNIVjBUV0Z3S0dadmNtMHBPMXh1SUNBZ0lDQWdhWE5HYVd4bFZYQnNiMkZrSUQwZ2RHaHBjeTVwYzBacGJHVlZjR3h2WVdRb1ptOXliU2s3WEc0Z0lDQWdJQ0J2Y0hSeklEMGdlMXh1SUNBZ0lDQWdJQ0J3WVhKbGJuUTZJSFJvYVhOY2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG5OM1lXZG5aWEpQY0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpaDJZWElnYTJWNUlHbHVJSFJvYVhNdWIzQjBhVzl1Y3k1emQyRm5aMlZ5VDNCMGFXOXVjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkSE5iYTJWNVhTQTlJSFJvYVhNdWIzQjBhVzl1Y3k1emQyRm5aMlZ5VDNCMGFXOXVjMXRyWlhsZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCd2FUdGNiaUFnSUNBZ0lHWnZjaWh3YVNBOUlEQTdJSEJwSUR3Z2RHaHBjeTV0YjJSbGJDNXdZWEpoYldWMFpYSnpMbXhsYm1kMGFEc2djR2tyS3lsN1hHNGdJQ0FnSUNBZ0lIWmhjaUJ3SUQwZ2RHaHBjeTV0YjJSbGJDNXdZWEpoYldWMFpYSnpXM0JwWFR0Y2JpQWdJQ0FnSUNBZ2FXWW9JSEF1YW5OdmJrVmthWFJ2Y2lBbUppQndMbXB6YjI1RlpHbDBiM0l1YVhORmJtRmliR1ZrS0NrcGUxeHVJQ0FnSUNBZ0lDQWdJSFpoY2lCcWMyOXVJRDBnY0M1cWMyOXVSV1JwZEc5eUxtZGxkRlpoYkhWbEtDazdYRzRnSUNBZ0lDQWdJQ0FnYldGd1czQXVibUZ0WlYwZ1BTQktVMDlPTG5OMGNtbHVaMmxtZVNocWMyOXVLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCdmNIUnpMbkpsYzNCdmJuTmxRMjl1ZEdWdWRGUjVjR1VnUFNBa0tDZGthWFlnYzJWc1pXTjBXMjVoYldVOWNtVnpjRzl1YzJWRGIyNTBaVzUwVkhsd1pWMG5MQ0FrS0hSb2FYTXVaV3dwS1M1MllXd29LVHRjYmlBZ0lDQWdJRzl3ZEhNdWNtVnhkV1Z6ZEVOdmJuUmxiblJVZVhCbElEMGdKQ2duWkdsMklITmxiR1ZqZEZ0dVlXMWxQWEJoY21GdFpYUmxja052Ym5SbGJuUlVlWEJsWFNjc0lDUW9kR2hwY3k1bGJDa3BMblpoYkNncE8xeHVJQ0FnSUNBZ0pDZ25MbkpsYzNCdmJuTmxYM1JvY205aVltVnlKeXdnSkNoMGFHbHpMbVZzS1NrdWMyaHZkeWdwTzF4dUlDQWdJQ0FnYVdZZ0tHbHpSbWxzWlZWd2JHOWhaQ2tnZTF4dUlDQWdJQ0FnSUNBa0tDY3VjbVZ4ZFdWemRGOTFjbXduTENBa0tIUm9hWE11Wld3cEtTNW9kRzFzS0NjOGNISmxQand2Y0hKbFBpY3BPMXh1SUNBZ0lDQWdJQ0FrS0NjdWNtVnhkV1Z6ZEY5MWNtd2djSEpsSnl3Z0pDaDBhR2x6TG1Wc0tTa3VkR1Y0ZENoMGFHbHpMbWx1ZG05allYUnBiMjVWY213cE8xeHVYRzRnSUNBZ0lDQWdJRzl3ZEhNdWRYTmxTbEYxWlhKNUlEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2JXRndMbkJoY21GdFpYUmxja052Ym5SbGJuUlVlWEJsSUQwZ0oyMTFiSFJwY0dGeWRDOW1iM0p0TFdSaGRHRW5PMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWhjQ0E5SUcxaGNEdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Ylc5a1pXd3VaWGhsWTNWMFpTaHRZWEFzSUc5d2RITXNJSFJvYVhNdWMyaHZkME52YlhCc1pYUmxVM1JoZEhWekxDQjBhR2x6TG5Ob2IzZEZjbkp2Y2xOMFlYUjFjeXdnZEdocGN5azdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xaGNDQTlJRzFoY0R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXViVzlrWld3dVpYaGxZM1YwWlNodFlYQXNJRzl3ZEhNc0lIUm9hWE11YzJodmQwTnZiWEJzWlhSbFUzUmhkSFZ6TENCMGFHbHpMbk5vYjNkRmNuSnZjbE4wWVhSMWN5d2dkR2hwY3lrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlMRnh1WEc0Z0lHZGxkRWx1Y0hWMFRXRndPaUJtZFc1amRHbHZiaUFvWm05eWJTa2dlMXh1SUNBZ0lIWmhjaUJ0WVhBc0lISmxaakVzSUd3c0lHeGxiaXdnYnl3Z2NtVm1NaXdnYlN3Z2JHVnVNU3dnZG1Gc0xDQnlaV1l6TENCdUxDQnNaVzR5TzF4dUlDQWdJRzFoY0NBOUlIdDlPMXh1SUNBZ0lISmxaakVnUFNCbWIzSnRMbVpwYm1Rb0oybHVjSFYwSnlrN1hHNGdJQ0FnWm05eUlDaHNJRDBnTUN3Z2JHVnVJRDBnY21WbU1TNXNaVzVuZEdnN0lHd2dQQ0JzWlc0N0lHd3JLeWtnZTF4dUlDQWdJQ0FnYnlBOUlISmxaakZiYkYwN1hHNGdJQ0FnSUNCcFppQW9LRzh1ZG1Gc2RXVWdJVDA5SUc1MWJHd3BJQ1ltSUdwUmRXVnllUzUwY21sdEtHOHVkbUZzZFdVcExteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQWdJQ0FnYldGd1cyOHVibUZ0WlYwZ1BTQnZMblpoYkhWbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLRzh1ZEhsd1pTQTlQVDBnSjJacGJHVW5LU0I3WEc0Z0lDQWdJQ0FnSUcxaGNGdHZMbTVoYldWZElEMGdieTVtYVd4bGMxc3dYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVm1NaUE5SUdadmNtMHVabWx1WkNnbmRHVjRkR0Z5WldFbktUdGNiaUFnSUNCbWIzSWdLRzBnUFNBd0xDQnNaVzR4SUQwZ2NtVm1NaTVzWlc1bmRHZzdJRzBnUENCc1pXNHhPeUJ0S3lzcElIdGNiaUFnSUNBZ0lHOGdQU0J5WldZeVcyMWRPMXh1SUNBZ0lDQWdkbUZzSUQwZ2RHaHBjeTVuWlhSVVpYaDBRWEpsWVZaaGJIVmxLRzhwTzF4dUlDQWdJQ0FnYVdZZ0tDaDJZV3dnSVQwOUlHNTFiR3dwSUNZbUlHcFJkV1Z5ZVM1MGNtbHRLSFpoYkNrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0J0WVhCYmJ5NXVZVzFsWFNBOUlIWmhiRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVm1NeUE5SUdadmNtMHVabWx1WkNnbmMyVnNaV04wSnlrN1hHNGdJQ0FnWm05eUlDaHVJRDBnTUN3Z2JHVnVNaUE5SUhKbFpqTXViR1Z1WjNSb095QnVJRHdnYkdWdU1qc2diaXNyS1NCN1hHNGdJQ0FnSUNCdklEMGdjbVZtTTF0dVhUdGNiaUFnSUNBZ0lIWmhiQ0E5SUhSb2FYTXVaMlYwVTJWc1pXTjBaV1JXWVd4MVpTaHZLVHRjYmlBZ0lDQWdJR2xtSUNnb2RtRnNJQ0U5UFNCdWRXeHNLU0FtSmlCcVVYVmxjbmt1ZEhKcGJTaDJZV3dwTG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lDQWdiV0Z3VzI4dWJtRnRaVjBnUFNCMllXdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0WVhBN1hHNGdJSDBzWEc1Y2JpQWdhWE5HYVd4bFZYQnNiMkZrT2lCbWRXNWpkR2x2YmlBb1ptOXliU2tnZTF4dUlDQWdJSFpoY2lCeVpXWXhMQ0JzTENCc1pXNHNJRzg3WEc0Z0lDQWdkbUZ5SUdselJtbHNaVlZ3Ykc5aFpDQTlJR1poYkhObE8xeHVJQ0FnSUhKbFpqRWdQU0JtYjNKdExtWnBibVFvSjJsdWNIVjBKeWs3WEc0Z0lDQWdabTl5SUNoc0lEMGdNQ3dnYkdWdUlEMGdjbVZtTVM1c1pXNW5kR2c3SUd3Z1BDQnNaVzQ3SUd3ckt5a2dlMXh1SUNBZ0lDQWdieUE5SUhKbFpqRmJiRjA3WEc0Z0lDQWdJQ0JwWmlBb2J5NTBlWEJsSUQwOVBTQW5abWxzWlNjcElIdGNiaUFnSUNBZ0lDQWdhWE5HYVd4bFZYQnNiMkZrSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdselJtbHNaVlZ3Ykc5aFpEdGNiaUFnZlN4Y2JseHVJQ0J6ZFdOalpYTnpPaUJtZFc1amRHbHZiaWh5WlhOd2IyNXpaU3dnY0dGeVpXNTBLU0I3WEc0Z0lDQWdjR0Z5Wlc1MExuTm9iM2REYjIxd2JHVjBaVk4wWVhSMWN5aHlaWE53YjI1elpTazdYRzRnSUgwc1hHNWNiaUFnTHk4Z2QzSmhjSE1nWVNCcWNYVmxjbmtnY21WemNHOXVjMlVnWVhNZ1lTQnphSEpsWkNCeVpYTndiMjV6WlZ4dUlDQjNjbUZ3T2lCbWRXNWpkR2x2Ymloa1lYUmhLU0I3WEc0Z0lDQWdkbUZ5SUdnc0lHaGxZV1JsY2tGeWNtRjVMQ0JvWldGa1pYSnpMQ0JwTENCc0xDQnNaVzRzSUc4N1hHNGdJQ0FnYUdWaFpHVnljeUE5SUh0OU8xeHVJQ0FnSUdobFlXUmxja0Z5Y21GNUlEMGdaR0YwWVM1blpYUkJiR3hTWlhOd2IyNXpaVWhsWVdSbGNuTW9LUzV6Y0d4cGRDZ25YRnh5SnlrN1hHNGdJQ0FnWm05eUlDaHNJRDBnTUN3Z2JHVnVJRDBnYUdWaFpHVnlRWEp5WVhrdWJHVnVaM1JvT3lCc0lEd2diR1Z1T3lCc0t5c3BJSHRjYmlBZ0lDQWdJR2tnUFNCb1pXRmtaWEpCY25KaGVWdHNYVHRjYmlBZ0lDQWdJR2dnUFNCcExtMWhkR05vS0M5ZUtGdGVPbDBxUHlrNktDNHFLU1F2S1R0Y2JpQWdJQ0FnSUdsbUlDZ2hhQ2tnZTF4dUlDQWdJQ0FnSUNCb0lEMGdXMTA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JvTG5Ob2FXWjBLQ2s3WEc0Z0lDQWdJQ0JwWmlBb2FGc3dYU0FoUFQwZ2RtOXBaQ0F3SUNZbUlHaGJNVjBnSVQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ0lDQm9aV0ZrWlhKelcyaGJNRjB1ZEhKcGJTZ3BYU0E5SUdoYk1WMHVkSEpwYlNncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J2SUQwZ2UzMDdYRzRnSUNBZ2J5NWpiMjUwWlc1MElEMGdlMzA3WEc0Z0lDQWdieTVqYjI1MFpXNTBMbVJoZEdFZ1BTQmtZWFJoTG5KbGMzQnZibk5sVkdWNGREdGNiaUFnSUNCdkxtaGxZV1JsY25NZ1BTQm9aV0ZrWlhKek8xeHVJQ0FnSUc4dWNtVnhkV1Z6ZENBOUlIdDlPMXh1SUNBZ0lHOHVjbVZ4ZFdWemRDNTFjbXdnUFNCMGFHbHpMbWx1ZG05allYUnBiMjVWY213N1hHNGdJQ0FnYnk1emRHRjBkWE1nUFNCa1lYUmhMbk4wWVhSMWN6dGNiaUFnSUNCeVpYUjFjbTRnYnp0Y2JpQWdmU3hjYmx4dUlDQm5aWFJUWld4bFkzUmxaRlpoYkhWbE9pQm1kVzVqZEdsdmJpaHpaV3hsWTNRcElIdGNiaUFnSUNCcFppQW9JWE5sYkdWamRDNXRkV3gwYVhCc1pTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlITmxiR1ZqZEM1MllXeDFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJRzl3ZEdsdmJuTWdQU0JiWFR0Y2JpQWdJQ0FnSUdadmNpQW9kbUZ5SUd3Z1BTQXdMQ0JzWlc0Z1BTQnpaV3hsWTNRdWIzQjBhVzl1Y3k1c1pXNW5kR2c3SUd3Z1BDQnNaVzQ3SUd3ckt5a2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2IzQjBJRDBnYzJWc1pXTjBMbTl3ZEdsdmJuTmJiRjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaHZjSFF1YzJWc1pXTjBaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxuQjFjMmdvYjNCMExuWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLRzl3ZEdsdmJuTXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYjNCMGFXOXVjenRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdkx5Qm9ZVzVrYkdWeUlHWnZjaUJvYVdSbElISmxjM0J2Ym5ObElHeHBibXRjYmlBZ2FHbGtaVkpsYzNCdmJuTmxPaUJtZFc1amRHbHZiaWhsS1NCN1hHNGdJQ0FnYVdZZ0tHVXBJSHNnWlM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwT3lCOVhHNGdJQ0FnSkNnbkxuSmxjM0J2Ym5ObEp5d2dKQ2gwYUdsekxtVnNLU2t1YzJ4cFpHVlZjQ2dwTzF4dUlDQWdJQ1FvSnk1eVpYTndiMjV6WlY5b2FXUmxjaWNzSUNRb2RHaHBjeTVsYkNrcExtWmhaR1ZQZFhRb0tUdGNiaUFnZlN4Y2JseHVJQ0F2THlCVGFHOTNJSEpsYzNCdmJuTmxJR1p5YjIwZ2MyVnlkbVZ5WEc0Z0lITm9iM2RTWlhOd2IyNXpaVG9nWm5WdVkzUnBiMjRvY21WemNHOXVjMlVwSUh0Y2JpQWdJQ0IyWVhJZ2NISmxkSFI1U25OdmJpQTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtISmxjM0J2Ym5ObExDQnVkV3hzTENBblhGeDBKeWt1Y21Wd2JHRmpaU2d2WEZ4dUwyY3NJQ2M4WW5JK0p5azdYRzRnSUNBZ0pDZ25MbkpsYzNCdmJuTmxYMkp2WkhrbkxDQWtLSFJvYVhNdVpXd3BLUzVvZEcxc0tGOHVaWE5qWVhCbEtIQnlaWFIwZVVwemIyNHBLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QlRhRzkzSUdWeWNtOXlJR1p5YjIwZ2MyVnlkbVZ5WEc0Z0lITm9iM2RGY25KdmNsTjBZWFIxY3pvZ1puVnVZM1JwYjI0b1pHRjBZU3dnY0dGeVpXNTBLU0I3WEc0Z0lDQWdjR0Z5Wlc1MExuTm9iM2RUZEdGMGRYTW9aR0YwWVNrN1hHNGdJSDBzWEc1Y2JpQWdMeThnYzJodmR5QjBhR1VnYzNSaGRIVnpJR052WkdWelhHNGdJSE5vYjNkRGIyMXdiR1YwWlZOMFlYUjFjem9nWm5WdVkzUnBiMjRvWkdGMFlTd2djR0Z5Wlc1MEtYdGNiaUFnSUNCd1lYSmxiblF1YzJodmQxTjBZWFIxY3loa1lYUmhLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QkJaR0Z3ZEdWa0lHWnliMjBnYUhSMGNEb3ZMM04wWVdOcmIzWmxjbVpzYjNjdVkyOXRMMkV2TWpnNU16STFPUzgwTlRRd01EUmNiaUFnTHk4Z1RtOTBaVG9nWkdseVpXTjBiSGtnY0c5eWRHVmtJR1p5YjIwZ1EyOW1abVZsVTJOeWFYQjBYRzRnSUM4dklGUlBSRTg2SUVOc1pXRnVkWEFnUTI5bVptVmxVMk55YVhCMElHRnlkR2xtWVdOMGMxeHVJQ0JtYjNKdFlYUlliV3c2SUdaMWJtTjBhVzl1S0hodGJDa2dlMXh1SUNBZ0lIWmhjaUJqYjI1MFpYaHdMQ0JtYml3Z1ptOXliV0YwZEdWa0xDQnBibVJsYm5Rc0lHd3NJR3hoYzNSVWVYQmxMQ0JzWlc0c0lHeHBibVZ6TENCc2Jpd2djR0ZrTENCeVpXY3NJSFJ5WVc1emFYUnBiMjV6TENCM2MyVjRjRHRjYmlBZ0lDQnlaV2NnUFNBdktENHBLRHdwS0Z4Y0x5b3BMMmM3WEc0Z0lDQWdkM05sZUhBZ1BTQXZXeUJkS2lndUtpbGJJRjByWEZ4dUwyYzdYRzRnSUNBZ1kyOXVkR1Y0Y0NBOUlDOG9QQzRyUGlrb0xpdGNYRzRwTDJjN1hHNGdJQ0FnZUcxc0lEMGdlRzFzTG5KbGNHeGhZMlVvTDF4Y2NseGNiaTluTENBblhGeHVKeWt1Y21Wd2JHRmpaU2h5Wldjc0lDY2tNVnhjYmlReUpETW5LUzV5WlhCc1lXTmxLSGR6Wlhod0xDQW5KREZjWEc0bktTNXlaWEJzWVdObEtHTnZiblJsZUhBc0lDY2tNVnhjYmlReUp5azdYRzRnSUNBZ2NHRmtJRDBnTUR0Y2JpQWdJQ0JtYjNKdFlYUjBaV1FnUFNBbkp6dGNiaUFnSUNCc2FXNWxjeUE5SUhodGJDNXpjR3hwZENnblhGeHVKeWs3WEc0Z0lDQWdhVzVrWlc1MElEMGdNRHRjYmlBZ0lDQnNZWE4wVkhsd1pTQTlJQ2R2ZEdobGNpYzdYRzRnSUNBZ2RISmhibk5wZEdsdmJuTWdQU0I3WEc0Z0lDQWdJQ0FuYzJsdVoyeGxMVDV6YVc1bmJHVW5PaUF3TEZ4dUlDQWdJQ0FnSjNOcGJtZHNaUzArWTJ4dmMybHVaeWM2SUMweExGeHVJQ0FnSUNBZ0ozTnBibWRzWlMwK2IzQmxibWx1WnljNklEQXNYRzRnSUNBZ0lDQW5jMmx1WjJ4bExUNXZkR2hsY2ljNklEQXNYRzRnSUNBZ0lDQW5ZMnh2YzJsdVp5MCtjMmx1WjJ4bEp6b2dNQ3hjYmlBZ0lDQWdJQ2RqYkc5emFXNW5MVDVqYkc5emFXNW5Kem9nTFRFc1hHNGdJQ0FnSUNBblkyeHZjMmx1WnkwK2IzQmxibWx1WnljNklEQXNYRzRnSUNBZ0lDQW5ZMnh2YzJsdVp5MCtiM1JvWlhJbk9pQXdMRnh1SUNBZ0lDQWdKMjl3Wlc1cGJtY3RQbk5wYm1kc1pTYzZJREVzWEc0Z0lDQWdJQ0FuYjNCbGJtbHVaeTArWTJ4dmMybHVaeWM2SURBc1hHNGdJQ0FnSUNBbmIzQmxibWx1WnkwK2IzQmxibWx1WnljNklERXNYRzRnSUNBZ0lDQW5iM0JsYm1sdVp5MCtiM1JvWlhJbk9pQXhMRnh1SUNBZ0lDQWdKMjkwYUdWeUxUNXphVzVuYkdVbk9pQXdMRnh1SUNBZ0lDQWdKMjkwYUdWeUxUNWpiRzl6YVc1bkp6b2dMVEVzWEc0Z0lDQWdJQ0FuYjNSb1pYSXRQbTl3Wlc1cGJtY25PaUF3TEZ4dUlDQWdJQ0FnSjI5MGFHVnlMVDV2ZEdobGNpYzZJREJjYmlBZ0lDQjlPMXh1SUNBZ0lHWnVJRDBnWm5WdVkzUnBiMjRvYkc0cElIdGNiaUFnSUNBZ0lIWmhjaUJtY205dFZHOHNJR29zSUd0bGVTd2djR0ZrWkdsdVp5d2dkSGx3WlN3Z2RIbHdaWE1zSUhaaGJIVmxPMXh1SUNBZ0lDQWdkSGx3WlhNZ1BTQjdYRzRnSUNBZ0lDQWdJSE5wYm1kc1pUb2dRbTl2YkdWaGJpaHNiaTV0WVhSamFDZ3ZQQzRyWEZ3dlBpOHBLU3hjYmlBZ0lDQWdJQ0FnWTJ4dmMybHVaem9nUW05dmJHVmhiaWhzYmk1dFlYUmphQ2d2UEZ4Y0x5NHJQaThwS1N4Y2JpQWdJQ0FnSUNBZ2IzQmxibWx1WnpvZ1FtOXZiR1ZoYmloc2JpNXRZWFJqYUNndlBGdGVJVDlkTGlvK0x5a3BYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdkSGx3WlNBOUlDZ29ablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaWE4xYkhSek8xeHVJQ0FnSUNBZ0lDQnlaWE4xYkhSeklEMGdXMTA3WEc0Z0lDQWdJQ0FnSUdadmNpQW9hMlY1SUdsdUlIUjVjR1Z6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdVZ1BTQjBlWEJsYzF0clpYbGRPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBjeTV3ZFhOb0tHdGxlU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhSek8xeHVJQ0FnSUNBZ2ZTa29LU2xiTUYwN1hHNGdJQ0FnSUNCMGVYQmxJRDBnZEhsd1pTQTlQVDBnZG05cFpDQXdJRDhnSjI5MGFHVnlKeUE2SUhSNWNHVTdYRzRnSUNBZ0lDQm1jbTl0Vkc4Z1BTQnNZWE4wVkhsd1pTQXJJQ2N0UGljZ0t5QjBlWEJsTzF4dUlDQWdJQ0FnYkdGemRGUjVjR1VnUFNCMGVYQmxPMXh1SUNBZ0lDQWdjR0ZrWkdsdVp5QTlJQ2NuTzF4dUlDQWdJQ0FnYVc1a1pXNTBJQ3M5SUhSeVlXNXphWFJwYjI1elcyWnliMjFVYjEwN1hHNGdJQ0FnSUNCd1lXUmthVzVuSUQwZ0tDaG1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHMHNJSEpsWmpFc0lISmxjM1ZzZEhNN1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZEhNZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHFJRDBnYlNBOUlEQXNJSEpsWmpFZ1BTQnBibVJsYm5RN0lEQWdQRDBnY21WbU1TQS9JRzBnUENCeVpXWXhJRG9nYlNBK0lISmxaakU3SUdvZ1BTQXdJRHc5SUhKbFpqRWdQeUFySzIwZ09pQXRMVzBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWE4xYkhSekxuQjFjMmdvSnlBZ0p5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2RITTdYRzRnSUNBZ0lDQjlLU2dwS1M1cWIybHVLQ2NuS1R0Y2JpQWdJQ0FnSUdsbUlDaG1jbTl0Vkc4Z1BUMDlJQ2R2Y0dWdWFXNW5MVDVqYkc5emFXNW5KeWtnZTF4dUlDQWdJQ0FnSUNCbWIzSnRZWFIwWldRZ1BTQm1iM0p0WVhSMFpXUXVjM1ZpYzNSeUtEQXNJR1p2Y20xaGRIUmxaQzVzWlc1bmRHZ2dMU0F4S1NBcklHeHVJQ3NnSjF4Y2JpYzdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQm1iM0p0WVhSMFpXUWdLejBnY0dGa1pHbHVaeUFySUd4dUlDc2dKMXhjYmljN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdJQ0JtYjNJZ0tHd2dQU0F3TENCc1pXNGdQU0JzYVc1bGN5NXNaVzVuZEdnN0lHd2dQQ0JzWlc0N0lHd3JLeWtnZTF4dUlDQWdJQ0FnYkc0Z1BTQnNhVzVsYzF0c1hUdGNiaUFnSUNBZ0lHWnVLR3h1S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWnZjbTFoZEhSbFpEdGNiaUFnZlN4Y2JseHVJQ0F2THlCd2RYUnpJSFJvWlNCeVpYTndiMjV6WlNCa1lYUmhJR2x1SUZWSlhHNGdJSE5vYjNkVGRHRjBkWE02SUdaMWJtTjBhVzl1S0hKbGMzQnZibk5sS1NCN1hHNGdJQ0FnZG1GeUlIVnliQ3dnWTI5dWRHVnVkRHRjYmlBZ0lDQnBaaUFvY21WemNHOXVjMlV1WTI5dWRHVnVkQ0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQmpiMjUwWlc1MElEMGdjbVZ6Y0c5dWMyVXVaR0YwWVR0Y2JpQWdJQ0FnSUhWeWJDQTlJSEpsYzNCdmJuTmxMblZ5YkR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjl1ZEdWdWRDQTlJSEpsYzNCdmJuTmxMbU52Ym5SbGJuUXVaR0YwWVR0Y2JpQWdJQ0FnSUhWeWJDQTlJSEpsYzNCdmJuTmxMbkpsY1hWbGMzUXVkWEpzTzF4dUlDQWdJSDFjYmlBZ0lDQjJZWElnYUdWaFpHVnljeUE5SUhKbGMzQnZibk5sTG1obFlXUmxjbk03WEc0Z0lDQWdhV1lvZEhsd1pXOW1JR052Ym5SbGJuUWdQVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnSUNCamIyNTBaVzUwSUQwZ2FsRjFaWEo1TG5SeWFXMG9ZMjl1ZEdWdWRDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdhV1lnYzJWeWRtVnlJR2x6SUc1cFkyVXNJR0Z1WkNCelpXNWtjeUJqYjI1MFpXNTBMWFI1Y0dVZ1ltRmpheXdnZDJVZ1kyRnVJSFZ6WlNCcGRGeHVJQ0FnSUhaaGNpQmpiMjUwWlc1MFZIbHdaU0E5SUc1MWJHdzdYRzRnSUNBZ2FXWWdLR2hsWVdSbGNuTXBJSHRjYmlBZ0lDQWdJR052Ym5SbGJuUlVlWEJsSUQwZ2FHVmhaR1Z5YzFzblEyOXVkR1Z1ZEMxVWVYQmxKMTBnZkh3Z2FHVmhaR1Z5YzFzblkyOXVkR1Z1ZEMxMGVYQmxKMTA3WEc0Z0lDQWdJQ0JwWmlBb1kyOXVkR1Z1ZEZSNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWRHVnVkRlI1Y0dVZ1BTQmpiMjUwWlc1MFZIbHdaUzV6Y0d4cGRDZ25PeWNwV3pCZExuUnlhVzBvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0FrS0NjdWNtVnpjRzl1YzJWZlltOWtlU2NzSUNRb2RHaHBjeTVsYkNrcExuSmxiVzkyWlVOc1lYTnpLQ2RxYzI5dUp5azdYRzRnSUNBZ0pDZ25MbkpsYzNCdmJuTmxYMkp2WkhrbkxDQWtLSFJvYVhNdVpXd3BLUzV5WlcxdmRtVkRiR0Z6Y3lnbmVHMXNKeWs3WEc1Y2JpQWdJQ0IyWVhJZ2MzVndjRzl5ZEhOQmRXUnBiMUJzWVhsaVlXTnJJRDBnWm5WdVkzUnBiMjRvWTI5dWRHVnVkRlI1Y0dVcGUxeHVJQ0FnSUNBZ2RtRnlJR0YxWkdsdlJXeGxiV1Z1ZENBOUlHUnZZM1Z0Wlc1MExtTnlaV0YwWlVWc1pXMWxiblFvSjJGMVpHbHZKeWs3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdJU0VvWVhWa2FXOUZiR1Z0Wlc1MExtTmhibEJzWVhsVWVYQmxJQ1ltSUdGMVpHbHZSV3hsYldWdWRDNWpZVzVRYkdGNVZIbHdaU2hqYjI1MFpXNTBWSGx3WlNrdWNtVndiR0ZqWlNndmJtOHZMQ0FuSnlrcE8xeHVJQ0FnSUgwN1hHNWNiaUFnSUNCMllYSWdjSEpsTzF4dUlDQWdJSFpoY2lCamIyUmxPMXh1SUNBZ0lIWmhjaUJ6YTJsd1NHbG5hR3hwWjJoMElEMGdabUZzYzJVN1hHNGdJQ0FnYVdZZ0tDRmpiMjUwWlc1MEtTQjdYRzRnSUNBZ0lDQmpiMlJsSUQwZ0pDZ25QR052WkdVZ0x6NG5LUzUwWlhoMEtDZHVieUJqYjI1MFpXNTBKeWs3WEc0Z0lDQWdJQ0J3Y21VZ1BTQWtLQ2M4Y0hKbElHTnNZWE56UFZ3aWFuTnZibHdpSUM4K0p5a3VZWEJ3Wlc1a0tHTnZaR1VwTzF4dVhHNGdJQ0FnSUNBdkx5QktVMDlPWEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hjYmlBZ0lDQWdJQ0FnWTI5dWRHVnVkRlI1Y0dVZ1BUMDlJQ2RoY0hCc2FXTmhkR2x2Ymk5dlkzUmxkQzF6ZEhKbFlXMG5JSHg4WEc0Z0lDQWdJQ0FnSUdobFlXUmxjbk5iSjBOdmJuUmxiblF0UkdsemNHOXphWFJwYjI0blhTQW1KaUFvTDJGMGRHRmphRzFsYm5RdktTNTBaWE4wS0dobFlXUmxjbk5iSjBOdmJuUmxiblF0UkdsemNHOXphWFJwYjI0blhTa2dmSHhjYmlBZ0lDQWdJQ0FnYUdWaFpHVnljMXNuWTI5dWRHVnVkQzFrYVhOd2IzTnBkR2x2YmlkZElDWW1JQ2d2WVhSMFlXTm9iV1Z1ZEM4cExuUmxjM1FvYUdWaFpHVnljMXNuWTI5dWRHVnVkQzFrYVhOd2IzTnBkR2x2YmlkZEtTQjhmRnh1SUNBZ0lDQWdJQ0JvWldGa1pYSnpXeWREYjI1MFpXNTBMVVJsYzJOeWFYQjBhVzl1SjEwZ0ppWWdLQzlHYVd4bElGUnlZVzV6Wm1WeUx5a3VkR1Z6ZENob1pXRmtaWEp6V3lkRGIyNTBaVzUwTFVSbGMyTnlhWEIwYVc5dUoxMHBJSHg4WEc0Z0lDQWdJQ0FnSUdobFlXUmxjbk5iSjJOdmJuUmxiblF0WkdWelkzSnBjSFJwYjI0blhTQW1KaUFvTDBacGJHVWdWSEpoYm5ObVpYSXZLUzUwWlhOMEtHaGxZV1JsY25OYkoyTnZiblJsYm5RdFpHVnpZM0pwY0hScGIyNG5YU2twSUh0Y2JseHVJQ0FnSUNBZ2FXWWdLQ2RDYkc5aUp5QnBiaUIzYVc1a2IzY3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIUjVjR1VnUFNCamIyNTBaVzUwVkhsd1pTQjhmQ0FuZEdWNGRDOW9kRzFzSnp0Y2JpQWdJQ0FnSUNBZ2RtRnlJR0VnUFNCa2IyTjFiV1Z1ZEM1amNtVmhkR1ZGYkdWdFpXNTBLQ2RoSnlrN1hHNGdJQ0FnSUNBZ0lIWmhjaUJvY21WbU8xeHVYRzRnSUNBZ0lDQWdJR2xtS0h0OUxuUnZVM1J5YVc1bkxtRndjR3g1S0dOdmJuUmxiblFwSUQwOVBTQW5XMjlpYW1WamRDQkNiRzlpWFNjcElIdGNiaUFnSUNBZ0lDQWdJQ0JvY21WbUlEMGdkMmx1Wkc5M0xsVlNUQzVqY21WaGRHVlBZbXBsWTNSVlVrd29ZMjl1ZEdWdWRDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnZG1GeUlHSnBibUZ5ZVVSaGRHRWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQmlhVzVoY25sRVlYUmhMbkIxYzJnb1kyOXVkR1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdhSEpsWmlBOUlIZHBibVJ2ZHk1VlVrd3VZM0psWVhSbFQySnFaV04wVlZKTUtHNWxkeUJDYkc5aUtHSnBibUZ5ZVVSaGRHRXNJSHQwZVhCbE9pQjBlWEJsZlNrcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFpoY2lCbWFXeGxUbUZ0WlNBOUlISmxjM0J2Ym5ObExuVnliQzV6ZFdKemRISW9jbVZ6Y0c5dWMyVXVkWEpzTG14aGMzUkpibVJsZUU5bUtDY3ZKeWtnS3lBeEtUdGNiaUFnSUNBZ0lDQWdkbUZ5SUdSdmQyNXNiMkZrSUQwZ1czUjVjR1VzSUdacGJHVk9ZVzFsTENCb2NtVm1YUzVxYjJsdUtDYzZKeWs3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdWWE5sSUdacGJHVnVZVzFsSUdaeWIyMGdjbVZ6Y0c5dWMyVWdhR1ZoWkdWeVhHNGdJQ0FnSUNBZ0lIWmhjaUJrYVhOd2IzTnBkR2x2YmlBOUlHaGxZV1JsY25OYkoyTnZiblJsYm5RdFpHbHpjRzl6YVhScGIyNG5YU0I4ZkNCb1pXRmtaWEp6V3lkRGIyNTBaVzUwTFVScGMzQnZjMmwwYVc5dUoxMDdYRzRnSUNBZ0lDQWdJR2xtS0hSNWNHVnZaaUJrYVhOd2IzTnBkR2x2YmlBaFBUMGdKM1Z1WkdWbWFXNWxaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZWElnY21WemNHOXVjMlZHYVd4bGJtRnRaU0E5SUM5bWFXeGxibUZ0WlQwb1cxNDdYU29wT3o4dkxtVjRaV01vWkdsemNHOXphWFJwYjI0cE8xeHVJQ0FnSUNBZ0lDQWdJR2xtS0hKbGMzQnZibk5sUm1sc1pXNWhiV1VnSVQwOUlHNTFiR3dnSmlZZ2NtVnpjRzl1YzJWR2FXeGxibUZ0WlM1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2IzZHViRzloWkNBOUlISmxjM0J2Ym5ObFJtbHNaVzVoYldWYk1WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWFXeGxUbUZ0WlNBOUlHUnZkMjVzYjJGa08xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHRXVjMlYwUVhSMGNtbGlkWFJsS0Nkb2NtVm1KeXdnYUhKbFppazdYRzRnSUNBZ0lDQWdJR0V1YzJWMFFYUjBjbWxpZFhSbEtDZGtiM2R1Ykc5aFpDY3NJR1J2ZDI1c2IyRmtLVHRjYmlBZ0lDQWdJQ0FnWVM1cGJtNWxjbFJsZUhRZ1BTQW5SRzkzYm14dllXUWdKeUFySUdacGJHVk9ZVzFsTzF4dVhHNGdJQ0FnSUNBZ0lIQnlaU0E5SUNRb0p6eGthWFl2UGljcExtRndjR1Z1WkNoaEtUdGNiaUFnSUNBZ0lDQWdjMnRwY0VocFoyaHNhV2RvZENBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J3Y21VZ1BTQWtLQ2M4Y0hKbElHTnNZWE56UFZ3aWFuTnZibHdpSUM4K0p5a3VZWEJ3Wlc1a0tDZEViM2R1Ykc5aFpDQm9aV0ZrWlhKeklHUmxkR1ZqZEdWa0lHSjFkQ0I1YjNWeUlHSnliM2R6WlhJZ1pHOWxjeUJ1YjNRZ2MzVndjRzl5ZENCa2IzZHViRzloWkdsdVp5QmlhVzVoY25rZ2RtbGhJRmhJVWlBb1FteHZZaWt1SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoamIyNTBaVzUwVkhsd1pTQTlQVDBnSjJGd2NHeHBZMkYwYVc5dUwycHpiMjRuSUh4OElDOWNYQ3RxYzI5dUpDOHVkR1Z6ZENoamIyNTBaVzUwVkhsd1pTa3BJSHRjYmlBZ0lDQWdJSFpoY2lCcWMyOXVJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdwemIyNGdQU0JLVTA5T0xuTjBjbWx1WjJsbWVTaEtVMDlPTG5CaGNuTmxLR052Ym5SbGJuUXBMQ0J1ZFd4c0xDQW5JQ0FuS1R0Y2JpQWdJQ0FnSUgwZ1kyRjBZMmdnS0Y5bGNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNCcWMyOXVJRDBnSjJOaGJseGNKM1FnY0dGeWMyVWdTbE5QVGk0Z0lGSmhkeUJ5WlhOMWJIUTZYRnh1WEZ4dUp5QXJJR052Ym5SbGJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmpiMlJsSUQwZ0pDZ25QR052WkdVZ0x6NG5LUzUwWlhoMEtHcHpiMjRwTzF4dUlDQWdJQ0FnY0hKbElEMGdKQ2duUEhCeVpTQmpiR0Z6Y3oxY0ltcHpiMjVjSWlBdlBpY3BMbUZ3Y0dWdVpDaGpiMlJsS1R0Y2JseHVJQ0FnSUNBZ0x5OGdXRTFNWEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hqYjI1MFpXNTBWSGx3WlNBOVBUMGdKMkZ3Y0d4cFkyRjBhVzl1TDNodGJDY2dmSHdnTDF4Y0szaHRiQ1F2TG5SbGMzUW9ZMjl1ZEdWdWRGUjVjR1VwS1NCN1hHNGdJQ0FnSUNCamIyUmxJRDBnSkNnblBHTnZaR1VnTHo0bktTNTBaWGgwS0hSb2FYTXVabTl5YldGMFdHMXNLR052Ym5SbGJuUXBLVHRjYmlBZ0lDQWdJSEJ5WlNBOUlDUW9Kenh3Y21VZ1kyeGhjM005WENKNGJXeGNJaUF2UGljcExtRndjR1Z1WkNoamIyUmxLVHRjYmx4dUlDQWdJQ0FnTHk4Z1NGUk5URnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1ZEdWdWRGUjVjR1VnUFQwOUlDZDBaWGgwTDJoMGJXd25LU0I3WEc0Z0lDQWdJQ0JqYjJSbElEMGdKQ2duUEdOdlpHVWdMejRuS1M1b2RHMXNLRjh1WlhOallYQmxLR052Ym5SbGJuUXBLVHRjYmlBZ0lDQWdJSEJ5WlNBOUlDUW9Kenh3Y21VZ1kyeGhjM005WENKNGJXeGNJaUF2UGljcExtRndjR1Z1WkNoamIyUmxLVHRjYmx4dUlDQWdJQ0FnTHk4Z1VHeGhhVzRnVkdWNGRGeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb0wzUmxlSFJjWEM5d2JHRnBiaTh1ZEdWemRDaGpiMjUwWlc1MFZIbHdaU2twSUh0Y2JpQWdJQ0FnSUdOdlpHVWdQU0FrS0NjOFkyOWtaU0F2UGljcExuUmxlSFFvWTI5dWRHVnVkQ2s3WEc0Z0lDQWdJQ0J3Y21VZ1BTQWtLQ2M4Y0hKbElHTnNZWE56UFZ3aWNHeGhhVzVjSWlBdlBpY3BMbUZ3Y0dWdVpDaGpiMlJsS1R0Y2JseHVJQ0FnSUNBZ0x5OGdTVzFoWjJWY2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0M5ZWFXMWhaMlZjWEM4dkxuUmxjM1FvWTI5dWRHVnVkRlI1Y0dVcEtTQjdYRzRnSUNBZ0lDQjJZWElnZFhKc1EzSmxZWFJ2Y2lBOUlIZHBibVJ2ZHk1VlVrd2dmSHdnZDJsdVpHOTNMbmRsWW10cGRGVlNURHRjYmlBZ0lDQWdJSFpoY2lCcGJXRm5aVlZ5YkNBOUlIVnliRU55WldGMGIzSXVZM0psWVhSbFQySnFaV04wVlZKTUtHTnZiblJsYm5RcE8xeHVYRzRnSUNBZ0lDQndjbVVnUFNBa0tDYzhhVzFuUGljcExtRjBkSElvSUNkemNtTW5MQ0JwYldGblpWVnliQ2s3WEc0Z0lDQWdJQ0F2THlCQmRXUnBiMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9MMTVoZFdScGIxeGNMeTh1ZEdWemRDaGpiMjUwWlc1MFZIbHdaU2tnSmlZZ2MzVndjRzl5ZEhOQmRXUnBiMUJzWVhsaVlXTnJLR052Ym5SbGJuUlVlWEJsS1NrZ2UxeHVJQ0FnSUNBZ2NISmxJRDBnSkNnblBHRjFaR2x2SUdOdmJuUnliMnh6UGljcExtRndjR1Z1WkNna0tDYzhjMjkxY21ObFBpY3BMbUYwZEhJb0ozTnlZeWNzSUhWeWJDa3VZWFIwY2lnbmRIbHdaU2NzSUdOdmJuUmxiblJVZVhCbEtTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUtHaGxZV1JsY25NdWJHOWpZWFJwYjI0Z2ZId2dhR1ZoWkdWeWN5NU1iMk5oZEdsdmJpa2dlMXh1SUNBZ0lDQWdMeThnVEc5allYUnBiMjRnYUdWaFpHVnlJR0poYzJWa0lISmxaR2x5WldOMElHUnZkMjVzYjJGa1hHNGdJQ0FnSUNCM2FXNWtiM2N1Ykc5allYUnBiMjRnUFNCeVpYTndiMjV6WlM1MWNtdzdYRzVjYmlBZ0lDQWdJQzh2SUVGdWVYUm9hVzVuSUdWc2MyVWdLRU5QVWxNcFhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR052WkdVZ1BTQWtLQ2M4WTI5a1pTQXZQaWNwTG5SbGVIUW9ZMjl1ZEdWdWRDazdYRzRnSUNBZ0lDQndjbVVnUFNBa0tDYzhjSEpsSUdOc1lYTnpQVndpYW5OdmJsd2lJQzgrSnlrdVlYQndaVzVrS0dOdlpHVXBPMXh1SUNBZ0lIMWNiaUFnSUNCMllYSWdjbVZ6Y0c5dWMyVmZZbTlrZVNBOUlIQnlaVHRjYmlBZ0lDQWtLQ2N1Y21WeGRXVnpkRjkxY213bkxDQWtLSFJvYVhNdVpXd3BLUzVvZEcxc0tDYzhjSEpsUGp3dmNISmxQaWNwTzF4dUlDQWdJQ1FvSnk1eVpYRjFaWE4wWDNWeWJDQndjbVVuTENBa0tIUm9hWE11Wld3cEtTNTBaWGgwS0hWeWJDazdYRzRnSUNBZ0pDZ25MbkpsYzNCdmJuTmxYMk52WkdVbkxDQWtLSFJvYVhNdVpXd3BLUzVvZEcxc0tDYzhjSEpsUGljZ0t5QnlaWE53YjI1elpTNXpkR0YwZFhNZ0t5QW5QQzl3Y21VK0p5azdYRzRnSUNBZ0pDZ25MbkpsYzNCdmJuTmxYMkp2WkhrbkxDQWtLSFJvYVhNdVpXd3BLUzVvZEcxc0tISmxjM0J2Ym5ObFgySnZaSGtwTzF4dUlDQWdJQ1FvSnk1eVpYTndiMjV6WlY5b1pXRmtaWEp6Snl3Z0pDaDBhR2x6TG1Wc0tTa3VhSFJ0YkNnblBIQnlaVDRuSUNzZ1h5NWxjMk5oY0dVb1NsTlBUaTV6ZEhKcGJtZHBabmtvY21WemNHOXVjMlV1YUdWaFpHVnljeXdnYm5Wc2JDd2dKeUFnSnlrcExuSmxjR3hoWTJVb0wxeGNiaTluTENBblBHSnlQaWNwSUNzZ0p6d3ZjSEpsUGljcE8xeHVJQ0FnSUNRb0p5NXlaWE53YjI1elpTY3NJQ1FvZEdocGN5NWxiQ2twTG5Oc2FXUmxSRzkzYmlncE8xeHVJQ0FnSUNRb0p5NXlaWE53YjI1elpWOW9hV1JsY2ljc0lDUW9kR2hwY3k1bGJDa3BMbk5vYjNjb0tUdGNiaUFnSUNBa0tDY3VjbVZ6Y0c5dWMyVmZkR2h5YjJKaVpYSW5MQ0FrS0hSb2FYTXVaV3dwS1M1b2FXUmxLQ2s3WEc1Y2JseHVJQ0FnSUM4dklHRmtaSE1nWTNWeWJDQnZkWFJ3ZFhSY2JpQWdJQ0IyWVhJZ1kzVnliRU52YlcxaGJtUWdQU0IwYUdsekxtMXZaR1ZzTG1GelEzVnliQ2gwYUdsekxtMWhjQ3dnZTNKbGMzQnZibk5sUTI5dWRHVnVkRlI1Y0dVNklHTnZiblJsYm5SVWVYQmxmU2s3WEc0Z0lDQWdZM1Z5YkVOdmJXMWhibVFnUFNCamRYSnNRMjl0YldGdVpDNXlaWEJzWVdObEtDY2hKeXdnSnlZak16TTdKeWs3WEc0Z0lDQWdKQ2dnSjJScGRpNWpkWEpzSnl3Z0pDaDBhR2x6TG1Wc0tTa3VhSFJ0YkNnblBIQnlaVDRuSUNzZ1h5NWxjMk5oY0dVb1kzVnliRU52YlcxaGJtUXBJQ3NnSnp3dmNISmxQaWNwTzF4dVhHNGdJQ0FnTHk4Z2IyNXNlU0JvYVdkb2JHbG5hSFFnZEdobElISmxjM0J2Ym5ObElHbG1JSEpsYzNCdmJuTmxJR2x6SUd4bGMzTWdkR2hoYmlCMGFISmxjMmh2YkdRc0lHUmxabUYxYkhRZ2MzUmhkR1VnYVhNZ2FHbG5hR3hwWjJoMElISmxjM0J2Ym5ObFhHNGdJQ0FnZG1GeUlHOXdkSE1nUFNCMGFHbHpMbTl3ZEdsdmJuTXVjM2RoWjJkbGNrOXdkR2x2Ym5NN1hHNWNiaUFnSUNCcFppQW9iM0IwY3k1emFHOTNVbVZ4ZFdWemRFaGxZV1JsY25NcElIdGNiaUFnSUNBZ0lIWmhjaUJtYjNKdElEMGdKQ2duTG5OaGJtUmliM2duTENBa0tIUm9hWE11Wld3cEtTeGNiaUFnSUNBZ0lDQWdJQ0J0WVhBZ1BTQjBhR2x6TG1kbGRFbHVjSFYwVFdGd0tHWnZjbTBwTEZ4dUlDQWdJQ0FnSUNBZ0lISmxjWFZsYzNSSVpXRmtaWEp6SUQwZ2RHaHBjeTV0YjJSbGJDNW5aWFJJWldGa1pYSlFZWEpoYlhNb2JXRndLVHRjYmlBZ0lDQWdJR1JsYkdWMFpTQnlaWEYxWlhOMFNHVmhaR1Z5YzFzblEyOXVkR1Z1ZEMxVWVYQmxKMTA3WEc0Z0lDQWdJQ0FrS0NjdWNtVnhkV1Z6ZEY5b1pXRmtaWEp6Snl3Z0pDaDBhR2x6TG1Wc0tTa3VhSFJ0YkNnblBIQnlaVDRuSUNzZ1h5NWxjMk5oY0dVb1NsTlBUaTV6ZEhKcGJtZHBabmtvY21WeGRXVnpkRWhsWVdSbGNuTXNJRzUxYkd3c0lDY2dJQ2NwS1M1eVpYQnNZV05sS0M5Y1hHNHZaeXdnSnp4aWNqNG5LU0FySUNjOEwzQnlaVDRuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCRFlXeHNJSFZ6WlhJdFpHVm1hVzVsWkNCb2IyOXJYRzRnSUNBZ2FXWWdLRzl3ZEhNdWNtVnpjRzl1YzJWSWIyOXJjeUFtSmlCdmNIUnpMbkpsYzNCdmJuTmxTRzl2YTNOYmRHaHBjeTV1YVdOcmJtRnRaVjBwSUh0Y2JpQWdJQ0FnSUc5d2RITXVjbVZ6Y0c5dWMyVkliMjlyYzF0MGFHbHpMbTVwWTJ0dVlXMWxYU2h5WlhOd2IyNXpaU3dnZEdocGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJSEpsYzNCdmJuTmxYMkp2WkhsZlpXd2dQU0FrS0NjdWNtVnpjRzl1YzJWZlltOWtlU2NzSUNRb2RHaHBjeTVsYkNrcFd6QmRPMXh1SUNBZ0lDOHZJRzl1YkhrZ2FHbG5hR3hwWjJoMElIUm9aU0J5WlhOd2IyNXpaU0JwWmlCeVpYTndiMjV6WlNCcGN5QnNaWE56SUhSb1lXNGdkR2h5WlhOb2IyeGtMQ0JrWldaaGRXeDBJSE4wWVhSbElHbHpJR2hwWjJoc2FXZG9kQ0J5WlhOd2IyNXpaVnh1SUNBZ0lHbG1JQ2h2Y0hSekxtaHBaMmhzYVdkb2RGTnBlbVZVYUhKbGMyaHZiR1FnSmlZZ2RIbHdaVzltSUhKbGMzQnZibk5sTG1SaGRHRWdJVDA5SUNkMWJtUmxabWx1WldRbklDWW1JSEpsYzNCdmJuTmxMbVJoZEdFdWJHVnVaM1JvSUQ0Z2IzQjBjeTVvYVdkb2JHbG5hSFJUYVhwbFZHaHlaWE5vYjJ4a0lIeDhJSE5yYVhCSWFXZG9iR2xuYUhRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYTndiMjV6WlY5aWIyUjVYMlZzTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FHeHFjeTVvYVdkb2JHbG5hSFJDYkc5amF5aHlaWE53YjI1elpWOWliMlI1WDJWc0tUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdkRzluWjJ4bFQzQmxjbUYwYVc5dVEyOXVkR1Z1ZERvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnZG1GeUlHVnNaVzBnUFNBa0tDY2pKeUFySUVSdlkzTXVaWE5qWVhCbFVtVnpiM1Z5WTJWT1lXMWxLSFJvYVhNdWNHRnlaVzUwU1dRZ0t5QW5YeWNnS3lCMGFHbHpMbTVwWTJ0dVlXMWxJQ3NnSjE5amIyNTBaVzUwSnlrcE8xeHVJQ0FnSUdsbUlDaGxiR1Z0TG1sektDYzZkbWx6YVdKc1pTY3BLWHRjYmlBZ0lDQWdJQ1F1WW1KeExuQjFjMmhUZEdGMFpTZ25JeThuTENBeUtUdGNiaUFnSUNBZ0lHVjJaVzUwTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3WEc0Z0lDQWdJQ0JFYjJOekxtTnZiR3hoY0hObFQzQmxjbUYwYVc5dUtHVnNaVzBwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQkViMk56TG1WNGNHRnVaRTl3WlhKaGRHbHZiaWhsYkdWdEtUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdaMlYwVkdWNGRFRnlaV0ZXWVd4MVpUb2dablZ1WTNScGIyNG9kR1Y0ZEVGeVpXRXBJSHRjYmlBZ0lDQjJZWElnY0dGeVlXMHNJSEJoY25ObFpDd2djbVZ6ZFd4MExDQnBPMXh1SUNBZ0lHbG1JQ2gwWlhoMFFYSmxZUzUyWVd4MVpTQTlQVDBnYm5Wc2JDQjhmQ0JxVVhWbGNua3VkSEpwYlNoMFpYaDBRWEpsWVM1MllXeDFaU2t1YkdWdVozUm9JRDA5UFNBd0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ2NHRnlZVzBnUFNCMGFHbHpMbWRsZEZCaGNtRnRRbmxPWVcxbEtIUmxlSFJCY21WaExtNWhiV1VwTzF4dUlDQWdJR2xtSUNod1lYSmhiU0FtSmlCd1lYSmhiUzUwZVhCbElDWW1JSEJoY21GdExuUjVjR1V1ZEc5TWIzZGxja05oYzJVb0tTQTlQVDBnSjJGeWNtRjVKeWtnZTF4dUlDQWdJQ0FnY0dGeWMyVmtJRDBnZEdWNGRFRnlaV0V1ZG1Gc2RXVXVjM0JzYVhRb0oxeGNiaWNwTzF4dUlDQWdJQ0FnY21WemRXeDBJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLR2tnUFNBd095QnBJRHdnY0dGeWMyVmtMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3WVhKelpXUmJhVjBnSVQwOUlHNTFiR3dnSmlZZ2FsRjFaWEo1TG5SeWFXMG9jR0Z5YzJWa1cybGRLUzVzWlc1bmRHZ2dQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MExuQjFjMmdvY0dGeWMyVmtXMmxkS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkQzVzWlc1bmRHZ2dQaUF3SUQ4Z2NtVnpkV3gwSURvZ2JuVnNiRHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSbGVIUkJjbVZoTG5aaGJIVmxPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J6YUc5M1UyNXBjSEJsZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIWmhjaUJqYjI1MFpXNTBWSGx3WlVWc0lEMGdkR2hwY3k0a0tDZGJibUZ0WlQxeVpYTndiMjV6WlVOdmJuUmxiblJVZVhCbFhTY3BPMXh1SUNBZ0lIWmhjaUI0Yld4VGJtbHdjR1YwUld3Z1BTQjBhR2x6TGlRb0p5NXZjR1Z5WVhScGIyNHRjM1JoZEhWeklDNXpibWx3Y0dWMFgzaHRiQ3dnTG5KbGMzQnZibk5sTFdOc1lYTnpJQzV6Ym1sd2NHVjBYM2h0YkNjcE8xeHVJQ0FnSUhaaGNpQnFjMjl1VTI1cGNIQmxkRVZzSUQwZ2RHaHBjeTRrS0NjdWIzQmxjbUYwYVc5dUxYTjBZWFIxY3lBdWMyNXBjSEJsZEY5cWMyOXVMQ0F1Y21WemNHOXVjMlV0WTJ4aGMzTWdMbk51YVhCd1pYUmZhbk52YmljcE8xeHVJQ0FnSUhaaGNpQmpiMjUwWlc1MFZIbHdaVHRjYmx4dUlDQWdJR2xtSUNnaFkyOXVkR1Z1ZEZSNWNHVkZiQzVzWlc1bmRHZ3BJSHNnY21WMGRYSnVPeUI5WEc0Z0lDQWdZMjl1ZEdWdWRGUjVjR1VnUFNCamIyNTBaVzUwVkhsd1pVVnNMblpoYkNncE8xeHVYRzRnSUNBZ2FXWWdLR052Ym5SbGJuUlVlWEJsTG1sdVpHVjRUMllvSjNodGJDY3BJRDRnTFRFcElIdGNiaUFnSUNBZ0lIaHRiRk51YVhCd1pYUkZiQzV6YUc5M0tDazdYRzRnSUNBZ0lDQnFjMjl1VTI1cGNIQmxkRVZzTG1ocFpHVW9LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FuTnZibE51YVhCd1pYUkZiQzV6YUc5M0tDazdYRzRnSUNBZ0lDQjRiV3hUYm1sd2NHVjBSV3d1YUdsa1pTZ3BPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JuWlhSUVlYSmhiVUo1VG1GdFpUb2dablZ1WTNScGIyNG9ibUZ0WlNrZ2UxeHVJQ0FnSUhaaGNpQnBPMXh1SUNBZ0lHbG1JQ2gwYUdsekxtMXZaR1ZzTG5CaGNtRnRaWFJsY25NcElIdGNiaUFnSUNBZ0lHWnZjaWhwSUQwZ01Ec2dhU0E4SUhSb2FYTXViVzlrWld3dWNHRnlZVzFsZEdWeWN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1dGIyUmxiQzV3WVhKaGJXVjBaWEp6VzJsZExtNWhiV1VnUFQwOUlHNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV0YjJSbGJDNXdZWEpoYldWMFpYSnpXMmxkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQjlYRzVjYm4wcE8xeHVJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzVUZDJGbloyVnlWV2t1Vm1sbGQzTXVVR0Z5WVcxbGRHVnlRMjl1ZEdWdWRGUjVjR1ZXYVdWM0lEMGdRbUZqYTJKdmJtVXVWbWxsZHk1bGVIUmxibVFvZTF4dUlDQnBibWwwYVdGc2FYcGxPaUJtZFc1amRHbHZiaUFnS0NrZ2UzMHNYRzVjYmlBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlncGUxeHVJQ0FnSUhSb2FYTXViVzlrWld3dWNHRnlZVzFsZEdWeVEyOXVkR1Z1ZEZSNWNHVkpaQ0E5SUNkd1kzUW5JQ3NnVFdGMGFDNXlZVzVrYjIwb0tUdGNiaUFnSUNBa0tIUm9hWE11Wld3cExtaDBiV3dvU0dGdVpHeGxZbUZ5Y3k1MFpXMXdiR0YwWlhNdWNHRnlZVzFsZEdWeVgyTnZiblJsYm5SZmRIbHdaU2gwYUdsekxtMXZaR1ZzS1NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dWZTazdJaXdpSjNWelpTQnpkSEpwWTNRbk8xeHVYRzVUZDJGbloyVnlWV2t1Vm1sbGQzTXVVR0Z5WVcxbGRHVnlWbWxsZHlBOUlFSmhZMnRpYjI1bExsWnBaWGN1WlhoMFpXNWtLSHRjYmlBZ1pYWmxiblJ6T2lCN1hHNGdJQ0FnSjJOb1lXNW5aU0JiYm1GdFpUMXdZWEpoYldWMFpYSkRiMjUwWlc1MFZIbHdaVjBuSURvZ0ozUnZaMmRzWlZCaGNtRnRaWFJsY2xOdWFYQndaWFFuWEc0Z0lIMHNYRzVjYmlBZ2FXNXBkR2xoYkdsNlpUb2dablZ1WTNScGIyNG9LWHRjYmlBZ0lDQklZVzVrYkdWaVlYSnpMbkpsWjJsemRHVnlTR1ZzY0dWeUtDZHBjMEZ5Y21GNUp5d2dablZ1WTNScGIyNG9jR0Z5WVcwc0lHOXdkSE1wSUh0Y2JpQWdJQ0FnSUhaaGNpQndZWEpoYlZSNWNHVWdQU0J3WVhKaGJTNTBlWEJsSUNZbUlIQmhjbUZ0TG5SNWNHVXVkRzlNYjNkbGNrTmhjMlVvS1R0Y2JpQWdJQ0FnSUdsbUlDaHdZWEpoYlZSNWNHVWdQVDA5SUNkaGNuSmhlU2NnZkh3Z2NHRnlZVzB1WVd4c2IzZE5kV3gwYVhCc1pTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiM0IwY3k1bWJpaDBhR2x6S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ2Y0hSekxtbHVkbVZ5YzJVb2RHaHBjeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lIMHNYRzVjYmlBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlncElIdGNiaUFnSUNCMllYSWdkSGx3WlNBOUlIUm9hWE11Ylc5a1pXd3VkSGx3WlNCOGZDQjBhR2x6TG0xdlpHVnNMbVJoZEdGVWVYQmxPMXh1SUNBZ0lIWmhjaUJ0YjJSbGJGUjVjR1VnUFNCMGFHbHpMbTF2WkdWc0xtMXZaR1ZzVTJsbmJtRjBkWEpsTG5SNWNHVTdYRzRnSUNBZ2RtRnlJRzF2WkdWc1JHVm1hVzVwZEdsdmJuTWdQU0IwYUdsekxtMXZaR1ZzTG0xdlpHVnNVMmxuYm1GMGRYSmxMbVJsWm1sdWFYUnBiMjV6TzF4dUlDQWdJSFpoY2lCelkyaGxiV0VnUFNCMGFHbHpMbTF2WkdWc0xuTmphR1Z0WVNCOGZDQjdmVHRjYmlBZ0lDQjJZWElnWTI5dWMzVnRaWE1nUFNCMGFHbHpMbTF2WkdWc0xtTnZibk4xYldWeklIeDhJRnRkTzF4dUlDQWdJSFpoY2lCellXMXdiR1ZLVTA5T0xDQnphV2R1WVhSMWNtVldhV1YzTzF4dVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCMGVYQmxJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5a2dlMXh1SUNBZ0lDQWdhV1lnS0hOamFHVnRZUzRrY21WbUtTQjdYRzRnSUNBZ0lDQWdJSFpoY2lCeVpXWWdQU0J6WTJobGJXRXVKSEpsWmp0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEpsWmk1cGJtUmxlRTltS0NjakwyUmxabWx1YVhScGIyNXpMeWNwSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RIbHdaU0E5SUhKbFppNXpkV0p6ZEhKcGJtY29KeU12WkdWbWFXNXBkR2x2Ym5Ndkp5NXNaVzVuZEdncE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJSFI1Y0dVZ1BTQnlaV1k3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtMXZaR1ZzTG5SNWNHVWdQU0IwZVhCbE8xeHVJQ0FnSUhSb2FYTXViVzlrWld3dWNHRnlZVzFVZVhCbElEMGdkR2hwY3k1dGIyUmxiQzVwYmlCOGZDQjBhR2x6TG0xdlpHVnNMbkJoY21GdFZIbHdaVHRjYmlBZ0lDQjBhR2x6TG0xdlpHVnNMbWx6UW05a2VTQTlJSFJvYVhNdWJXOWtaV3d1Y0dGeVlXMVVlWEJsSUQwOVBTQW5ZbTlrZVNjZ2ZId2dkR2hwY3k1dGIyUmxiQzVwYmlBOVBUMGdKMkp2Wkhrbk8xeHVJQ0FnSUhSb2FYTXViVzlrWld3dWFYTkdhV3hsSUQwZ2RIbHdaU0FtSmlCMGVYQmxMblJ2VEc5M1pYSkRZWE5sS0NrZ1BUMDlJQ2RtYVd4bEp6dGNibHh1SUNBZ0lDOHZJRUZzYkc5M0lHWnZjaUJrWldaaGRXeDBJRDA5UFNCbVlXeHpaVnh1SUNBZ0lHbG1LSFI1Y0dWdlppQjBhR2x6TG0xdlpHVnNMbVJsWm1GMWJIUWdQVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbVJsWm1GMWJIUWdQU0IwYUdsekxtMXZaR1ZzTG1SbFptRjFiSFJXWVd4MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbTF2WkdWc0xtaGhjMFJsWm1GMWJIUWdQU0FvZEhsd1pXOW1JSFJvYVhNdWJXOWtaV3d1WkdWbVlYVnNkQ0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY3BPMXh1SUNBZ0lIUm9hWE11Ylc5a1pXd3VkbUZzZFdWSlpDQTlJQ2R0SnlBcklIUm9hWE11Ylc5a1pXd3VibUZ0WlNBcklFMWhkR2d1Y21GdVpHOXRLQ2s3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTV0YjJSbGJDNWhiR3h2ZDJGaWJHVldZV3gxWlhNcElIdGNiaUFnSUNBZ0lIUm9hWE11Ylc5a1pXd3VhWE5NYVhOMElEMGdkSEoxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IyWVhJZ2FYTllUVXdnUFNCMGFHbHpMbU52Ym5SaGFXNXpLR052Ym5OMWJXVnpMQ0FuZUcxc0p5azdYRzRnSUNBZ2RtRnlJR2x6U2xOUFRpQTlJR2x6V0UxTUlEOGdkR2hwY3k1amIyNTBZV2x1Y3loamIyNXpkVzFsY3l3Z0oycHpiMjRuS1NBNklIUnlkV1U3WEc0Z0lDQWdjMkZ0Y0d4bFNsTlBUaUE5SUZOM1lXZG5aWEpWYVM1d1lYSjBhV0ZzY3k1emFXZHVZWFIxY21VdVkzSmxZWFJsVUdGeVlXMWxkR1Z5U2xOUFRsTmhiWEJzWlNodGIyUmxiRlI1Y0dVc0lHMXZaR1ZzUkdWbWFXNXBkR2x2Ym5NcE8xeHVYRzRnSUNBZ2RtRnlJSFJsYlhCc1lYUmxJRDBnZEdocGN5NTBaVzF3YkdGMFpTZ3BPMXh1SUNBZ0lDUW9kR2hwY3k1bGJDa3VhSFJ0YkNoMFpXMXdiR0YwWlNoMGFHbHpMbTF2WkdWc0tTazdYRzVjYmlBZ0lDQjJZWElnYzJsbmJtRjBkWEpsVFc5a1pXd2dQU0I3WEc0Z0lDQWdJQ0J6WVcxd2JHVktVMDlPT2lCcGMwcFRUMDRnUHlCellXMXdiR1ZLVTA5T0lEb2dabUZzYzJVc1hHNGdJQ0FnSUNCellXMXdiR1ZZVFV3NklITmhiWEJzWlVwVFQwNGdKaVlnYVhOWVRVd2dQeUJUZDJGbloyVnlWV2t1Y0dGeWRHbGhiSE11YzJsbmJtRjBkWEpsTG1OeVpXRjBaVmhOVEZOaGJYQnNaU2duSnl3Z2MyTm9aVzFoTENCdGIyUmxiRVJsWm1sdWFYUnBiMjV6TENCMGNuVmxLU0E2SUdaaGJITmxMRnh1SUNBZ0lDQWdhWE5RWVhKaGJUb2dkSEoxWlN4Y2JpQWdJQ0FnSUhOcFoyNWhkSFZ5WlRvZ1UzZGhaMmRsY2xWcExuQmhjblJwWVd4ekxuTnBaMjVoZEhWeVpTNW5aWFJRWVhKaGJXVjBaWEpOYjJSbGJGTnBaMjVoZEhWeVpTaHRiMlJsYkZSNWNHVXNJRzF2WkdWc1JHVm1hVzVwZEdsdmJuTXBMRnh1SUNBZ0lDQWdaR1ZtWVhWc2RGSmxibVJsY21sdVp6b2dkR2hwY3k1dGIyUmxiQzVrWldaaGRXeDBVbVZ1WkdWeWFXNW5YRzRnSUNBZ2ZUdGNibHh1SUNBZ0lHbG1JQ2h6WVcxd2JHVktVMDlPS1NCN1hHNGdJQ0FnSUNCemFXZHVZWFIxY21WV2FXVjNJRDBnYm1WM0lGTjNZV2RuWlhKVmFTNVdhV1YzY3k1VGFXZHVZWFIxY21WV2FXVjNLSHR0YjJSbGJEb2djMmxuYm1GMGRYSmxUVzlrWld3c0lIUmhaMDVoYldVNklDZGthWFluZlNrN1hHNGdJQ0FnSUNBa0tDY3ViVzlrWld3dGMybG5ibUYwZFhKbEp5d2dKQ2gwYUdsekxtVnNLU2t1WVhCd1pXNWtLSE5wWjI1aGRIVnlaVlpwWlhjdWNtVnVaR1Z5S0NrdVpXd3BPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ1FvSnk1dGIyUmxiQzF6YVdkdVlYUjFjbVVuTENBa0tIUm9hWE11Wld3cEtTNW9kRzFzS0hSb2FYTXViVzlrWld3dWMybG5ibUYwZFhKbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdhWE5RWVhKaGJTQTlJR1poYkhObE8xeHVYRzRnSUNBZ2FXWW9JSFJvYVhNdWIzQjBhVzl1Y3k1emQyRm5aMlZ5VDNCMGFXOXVjeTVxYzI5dVJXUnBkRzl5SUNZbUlIUm9hWE11Ylc5a1pXd3VhWE5DYjJSNUlDWW1JSFJvYVhNdWJXOWtaV3d1YzJOb1pXMWhLWHRjYmlBZ0lDQWdJSFpoY2lBa2MyVnNaaUE5SUNRb2RHaHBjeTVsYkNrN1hHNGdJQ0FnSUNCMGFHbHpMbTF2WkdWc0xtcHpiMjVGWkdsMGIzSWdQVnh1SUNBZ0lDQWdJQ0F2S2lCbmJHOWlZV3dnU2xOUFRrVmthWFJ2Y2lBcUwxeHVJQ0FnSUNBZ0lDQnVaWGNnU2xOUFRrVmthWFJ2Y2lna0tDY3VaV1JwZEc5eVgyaHZiR1JsY2ljc0lDUnpaV3htS1Zzd1hTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2UzTmphR1Z0WVRvZ2RHaHBjeTV0YjJSbGJDNXpZMmhsYldFc0lITjBZWEowZG1Gc0lEb2dkR2hwY3k1dGIyUmxiQzVrWldaaGRXeDBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZV3BoZURwMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR2x6WVdKc1pWOXdjbTl3WlhKMGFXVnpPblJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2FYTmhZbXhsWDJWa2FYUmZhbk52YmpwMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV052Ym14cFlqb2dKM04zWVdkblpYSW5JSDBwTzF4dUlDQWdJQ0FnTHk4Z1ZHaHBjeUJwY3lCemJ5QjBhR0YwSUhSb1pTQnphV2R1WVhSMWNtVWdZMkZ1SUhObGJtUWdZbUZqYXlCMGFHVWdjMkZ0Y0d4bElIUnZJSFJvWlNCcWMyOXVJR1ZrYVhSdmNseHVJQ0FnSUNBZ0x5OGdWRTlFVHpvZ1UybG5ibUYwZFhKbFZtbGxkeUJ6YUc5MWJHUWdaWGh3YjNObElHRnVJR1YyWlc1MElGd2liMjVUWVcxd2JHVkRiR2xqYTJWa1hDSWdhVzV6ZEdWaFpGeHVJQ0FnSUNBZ2MybG5ibUYwZFhKbFRXOWtaV3d1YW5OdmJrVmthWFJ2Y2lBOUlIUm9hWE11Ylc5a1pXd3Vhbk52YmtWa2FYUnZjanRjYmlBZ0lDQWdJQ1FvSnk1aWIyUjVMWFJsZUhSaGNtVmhKeXdnSkhObGJHWXBMbWhwWkdVb0tUdGNiaUFnSUNBZ0lDUW9KeTVsWkdsMGIzSmZhRzlzWkdWeUp5d2dKSE5sYkdZcExuTm9iM2NvS1R0Y2JpQWdJQ0FnSUNRb0p5NXdZWEpoYldWMFpYSXRZMjl1ZEdWdWRDMTBlWEJsSnl3Z0pITmxiR1lwWEc0Z0lDQWdJQ0FnSUM1amFHRnVaMlVvWm5WdVkzUnBiMjRvWlNsN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlobExuUmhjbWRsZEM1MllXeDFaU0E5UFQwZ0oyRndjR3hwWTJGMGFXOXVMM2h0YkNjcGUxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBa0tDY3VZbTlrZVMxMFpYaDBZWEpsWVNjc0lDUnpaV3htS1M1emFHOTNLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ1FvSnk1bFpHbDBiM0pmYUc5c1pHVnlKeXdnSkhObGJHWXBMbWhwWkdVb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV0YjJSbGJDNXFjMjl1UldScGRHOXlMbVJwYzJGaWJHVW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWtLQ2N1WW05a2VTMTBaWGgwWVhKbFlTY3NJQ1J6Wld4bUtTNW9hV1JsS0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNRb0p5NWxaR2wwYjNKZmFHOXNaR1Z5Snl3Z0pITmxiR1lwTG5Ob2IzY29LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1dGIyUmxiQzVxYzI5dVJXUnBkRzl5TG1WdVlXSnNaU2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JseHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXOWtaV3d1YVhOQ2IyUjVLU0I3WEc0Z0lDQWdJQ0JwYzFCaGNtRnRJRDBnZEhKMVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMllYSWdZMjl1ZEdWdWRGUjVjR1ZOYjJSbGJDQTlJSHRjYmlBZ0lDQWdJR2x6VUdGeVlXMDZJR2x6VUdGeVlXMWNiaUFnSUNCOU8xeHVYRzRnSUNBZ1kyOXVkR1Z1ZEZSNWNHVk5iMlJsYkM1amIyNXpkVzFsY3lBOUlIUm9hWE11Ylc5a1pXd3VZMjl1YzNWdFpYTTdYRzVjYmlBZ0lDQnBaaUFvYVhOUVlYSmhiU2tnZTF4dUlDQWdJQ0FnZG1GeUlIQmhjbUZ0WlhSbGNrTnZiblJsYm5SVWVYQmxWbWxsZHlBOUlHNWxkeUJUZDJGbloyVnlWV2t1Vm1sbGQzTXVVR0Z5WVcxbGRHVnlRMjl1ZEdWdWRGUjVjR1ZXYVdWM0tIdHRiMlJsYkRvZ1kyOXVkR1Z1ZEZSNWNHVk5iMlJsYkgwcE8xeHVJQ0FnSUNBZ0pDZ25MbkJoY21GdFpYUmxjaTFqYjI1MFpXNTBMWFI1Y0dVbkxDQWtLSFJvYVhNdVpXd3BLUzVoY0hCbGJtUW9jR0Z5WVcxbGRHVnlRMjl1ZEdWdWRGUjVjR1ZXYVdWM0xuSmxibVJsY2lncExtVnNLVHRjYmlBZ0lDQWdJSFJvYVhNdWRHOW5aMnhsVUdGeVlXMWxkR1Z5VTI1cGNIQmxkQ2dwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RtRnlJSEpsYzNCdmJuTmxRMjl1ZEdWdWRGUjVjR1ZXYVdWM0lEMGdibVYzSUZOM1lXZG5aWEpWYVM1V2FXVjNjeTVTWlhOd2IyNXpaVU52Ym5SbGJuUlVlWEJsVm1sbGR5aDdiVzlrWld3NklHTnZiblJsYm5SVWVYQmxUVzlrWld4OUtUdGNiaUFnSUNBZ0lDUW9KeTV5WlhOd2IyNXpaUzFqYjI1MFpXNTBMWFI1Y0dVbkxDQWtLSFJvYVhNdVpXd3BLUzVoY0hCbGJtUW9jbVZ6Y0c5dWMyVkRiMjUwWlc1MFZIbHdaVlpwWlhjdWNtVnVaR1Z5S0NrdVpXd3BPMXh1SUNBZ0lDQWdkR2hwY3k1MGIyZG5iR1ZTWlhOd2IyNXpaVk51YVhCd1pYUW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZTeGNibHh1SUNCamIyNTBZV2x1Y3pvZ1puVnVZM1JwYjI0Z0tHTnZibk4xYldWekxDQjBlWEJsS1NCN1hHNGdJQ0FnY21WMGRYSnVJR052Ym5OMWJXVnpMbVpwYkhSbGNpaG1kVzVqZEdsdmJpQW9kbUZzS1NCN1hHNGdJQ0FnSUNCcFppQW9kbUZzTG1sdVpHVjRUMllvZEhsd1pTa2dQaUF0TVNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLUzVzWlc1bmRHZzdYRzRnSUgwc1hHNWNiaUFnZEc5bloyeGxVR0Z5WVcxbGRHVnlVMjVwY0hCbGREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCamIyNTBaVzUwVkhsd1pTQTlJSFJvYVhNdUpDZ25XMjVoYldVOWNHRnlZVzFsZEdWeVEyOXVkR1Z1ZEZSNWNHVmRKeWt1ZG1Gc0tDazdYRzVjYmlBZ0lDQjBhR2x6TG5SdloyZHNaVk51YVhCd1pYUW9ZMjl1ZEdWdWRGUjVjR1VwTzF4dUlDQjlMRnh1WEc0Z0lIUnZaMmRzWlZKbGMzQnZibk5sVTI1cGNIQmxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhaaGNpQmpiMjUwWlc1MFJXd2dQU0IwYUdsekxpUW9KMXR1WVcxbFBYSmxjM0J2Ym5ObFEyOXVkR1Z1ZEZSNWNHVmRKeWs3WEc1Y2JpQWdJQ0JwWmlBb0lXTnZiblJsYm5SRmJDNXNaVzVuZEdncElIc2djbVYwZFhKdU95QjlYRzVjYmlBZ0lDQjBhR2x6TG5SdloyZHNaVk51YVhCd1pYUW9ZMjl1ZEdWdWRFVnNMblpoYkNncEtUdGNiaUFnZlN4Y2JseHVJQ0IwYjJkbmJHVlRibWx3Y0dWME9pQm1kVzVqZEdsdmJpQW9kSGx3WlNrZ2UxeHVJQ0FnSUhSNWNHVWdQU0IwZVhCbElIeDhJQ2NuTzF4dUlDQWdJR2xtSUNoMGVYQmxMbWx1WkdWNFQyWW9KM2h0YkNjcElENGdMVEVwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVKQ2duTG5OdWFYQndaWFJmZUcxc0p5a3VjMmh2ZHlncE8xeHVJQ0FnSUNBZ2RHaHBjeTRrS0NjdWMyNXBjSEJsZEY5cWMyOXVKeWt1YUdsa1pTZ3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMaVFvSnk1emJtbHdjR1YwWDJwemIyNG5LUzV6YUc5M0tDazdYRzRnSUNBZ0lDQjBhR2x6TGlRb0p5NXpibWx3Y0dWMFgzaHRiQ2NwTG1ocFpHVW9LVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnTHk4Z1VtVjBkWEp1SUdGdUlHRndjSEp2Y0hKcFlYUmxJSFJsYlhCc1lYUmxJR0poYzJWa0lHOXVJR2xtSUhSb1pTQndZWEpoYldWMFpYSWdhWE1nWVNCc2FYTjBMQ0J5WldGa2IyNXNlU3dnY21WeGRXbHlaV1JjYmlBZ2RHVnRjR3hoZEdVNklHWjFibU4wYVc5dUtDbDdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXOWtaV3d1YVhOTWFYTjBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdTR0Z1Wkd4bFltRnljeTUwWlcxd2JHRjBaWE11Y0dGeVlXMWZiR2x6ZER0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXViM0IwYVc5dWN5NXlaV0ZrVDI1c2VTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTV0YjJSbGJDNXlaWEYxYVhKbFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJJWVc1a2JHVmlZWEp6TG5SbGJYQnNZWFJsY3k1d1lYSmhiVjl5WldGa2IyNXNlVjl5WlhGMWFYSmxaRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnU0dGdVpHeGxZbUZ5Y3k1MFpXMXdiR0YwWlhNdWNHRnlZVzFmY21WaFpHOXViSGs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG0xdlpHVnNMbkpsY1hWcGNtVmtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUVoaGJtUnNaV0poY25NdWRHVnRjR3hoZEdWekxuQmhjbUZ0WDNKbGNYVnBjbVZrTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCSVlXNWtiR1ZpWVhKekxuUmxiWEJzWVhSbGN5NXdZWEpoYlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlNrN1hHNGlMQ0luZFhObElITjBjbWxqZENjN1hHNWNiaThxSUdwemFHbHVkQ0F0VnpFeU1pQXFMMXh1VTNkaFoyZGxjbFZwTG5CaGNuUnBZV3h6TG5OcFoyNWhkSFZ5WlNBOUlDaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDOHZJR052Y0hrdGNHRnpkR1ZrSUdaeWIyMGdjM2RoWjJkbGNpMXFjMXh1SUNCMllYSWdjbVZ6YjJ4MlpWTmphR1Z0WVNBOUlHWjFibU4wYVc5dUlDaHpZMmhsYldFcElIdGNiaUFnSUNCcFppQW9YeTVwYzFCc1lXbHVUMkpxWldOMEtITmphR1Z0WVM1elkyaGxiV0VwS1NCN1hHNGdJQ0FnSUNCelkyaGxiV0VnUFNCeVpYTnZiSFpsVTJOb1pXMWhLSE5qYUdWdFlTNXpZMmhsYldFcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ6WTJobGJXRTdYRzRnSUgwN1hHNWNiaUFnTHk4Z1kyOXdlUzF3WVhOMFpXUWdabkp2YlNCemQyRm5aMlZ5TFdwelhHNGdJSFpoY2lCemFXMXdiR1ZTWldZZ1BTQm1kVzVqZEdsdmJpQW9ibUZ0WlNrZ2UxeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2JtRnRaU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodVlXMWxMbWx1WkdWNFQyWW9KeU12WkdWbWFXNXBkR2x2Ym5Ndkp5a2dQVDA5SURBcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdVlXMWxMbk4xWW5OMGNtbHVaeWduSXk5a1pXWnBibWwwYVc5dWN5OG5MbXhsYm1kMGFDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WVcxbE8xeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQXZMeUJqYjNCNUxYQmhjM1JsWkNCbWNtOXRJSE4zWVdkblpYSXRhbk5jYmlBZ2RtRnlJR2RsZEVsdWJHbHVaVTF2WkdWc0lEMGdablZ1WTNScGIyNG9hVzVzYVc1bFUzUnlLU0I3WEc0Z0lDQWdhV1lvTDE1SmJteHBibVVnVFc5a1pXd2dYRnhrS3lRdkxuUmxjM1FvYVc1c2FXNWxVM1J5S1NBbUppQjBhR2x6TG1sdWJHbHVaVTF2WkdWc2N5a2dlMXh1SUNBZ0lDQWdkbUZ5SUdsa0lEMGdjR0Z5YzJWSmJuUW9hVzVzYVc1bFUzUnlMbk4xWW5OMGNpZ25TVzVzYVc1bElFMXZaR1ZzSnk1c1pXNW5kR2dwTG5SeWFXMG9LU3d4TUNrN0lDOHZYRzRnSUNBZ0lDQjJZWElnYlc5a1pXd2dQU0IwYUdsekxtbHViR2x1WlUxdlpHVnNjMXRwWkYwN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYlc5a1pXdzdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dklFa25iU0J5WlhSMWNtNXBibWNnYm5Wc2JDQm9aWEpsTENCemFHOTFiR1FnU1NCeVlYUm9aWElnZEdoeWIzY2dZVzRnWlhKeWIzSS9YRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgwN1hHNWNiaUFnTHk4Z1kyOXdlUzF3WVhOMFpXUWdabkp2YlNCemQyRm5aMlZ5TFdwelhHNGdJSFpoY2lCbWIzSnRZWFJZYld3Z1BTQm1kVzVqZEdsdmJpaDRiV3dwSUh0Y2JpQWdJQ0IyWVhJZ1kyOXVkR1Y0Y0N3Z1ptNHNJR1p2Y20xaGRIUmxaQ3dnYVc1a1pXNTBMQ0JzTENCc1lYTjBWSGx3WlN3Z2JHVnVMQ0JzYVc1bGN5d2diRzRzSUhCaFpDd2djbVZuTENCMGNtRnVjMmwwYVc5dWN5d2dkM05sZUhBN1hHNGdJQ0FnY21WbklEMGdMeWcrS1NnOEtTaGNYQzhxS1M5bk8xeHVJQ0FnSUhkelpYaHdJRDBnTDFzZ1hTb29MaW9wV3lCZEsxeGNiaTluTzF4dUlDQWdJR052Ym5SbGVIQWdQU0F2S0R3dUt6NHBLQzRyWEZ4dUtTOW5PMXh1SUNBZ0lIaHRiQ0E5SUhodGJDNXlaWEJzWVdObEtISmxaeXdnSnlReFhGeHVKRElrTXljcExuSmxjR3hoWTJVb2QzTmxlSEFzSUNja01WeGNiaWNwTG5KbGNHeGhZMlVvWTI5dWRHVjRjQ3dnSnlReFhGeHVKREluS1R0Y2JpQWdJQ0J3WVdRZ1BTQXdPMXh1SUNBZ0lHWnZjbTFoZEhSbFpDQTlJQ2NuTzF4dUlDQWdJR3hwYm1WeklEMGdlRzFzTG5Od2JHbDBLQ2RjWEc0bktUdGNiaUFnSUNCcGJtUmxiblFnUFNBd08xeHVJQ0FnSUd4aGMzUlVlWEJsSUQwZ0oyOTBhR1Z5Snp0Y2JpQWdJQ0IwY21GdWMybDBhVzl1Y3lBOUlIdGNiaUFnSUNBZ0lDZHphVzVuYkdVdFBuTnBibWRzWlNjNklEQXNYRzRnSUNBZ0lDQW5jMmx1WjJ4bExUNWpiRzl6YVc1bkp6b2dMVEVzWEc0Z0lDQWdJQ0FuYzJsdVoyeGxMVDV2Y0dWdWFXNW5Kem9nTUN4Y2JpQWdJQ0FnSUNkemFXNW5iR1V0UG05MGFHVnlKem9nTUN4Y2JpQWdJQ0FnSUNkamJHOXphVzVuTFQ1emFXNW5iR1VuT2lBd0xGeHVJQ0FnSUNBZ0oyTnNiM05wYm1jdFBtTnNiM05wYm1jbk9pQXRNU3hjYmlBZ0lDQWdJQ2RqYkc5emFXNW5MVDV2Y0dWdWFXNW5Kem9nTUN4Y2JpQWdJQ0FnSUNkamJHOXphVzVuTFQ1dmRHaGxjaWM2SURBc1hHNGdJQ0FnSUNBbmIzQmxibWx1WnkwK2MybHVaMnhsSnpvZ01TeGNiaUFnSUNBZ0lDZHZjR1Z1YVc1bkxUNWpiRzl6YVc1bkp6b2dNQ3hjYmlBZ0lDQWdJQ2R2Y0dWdWFXNW5MVDV2Y0dWdWFXNW5Kem9nTVN4Y2JpQWdJQ0FnSUNkdmNHVnVhVzVuTFQ1dmRHaGxjaWM2SURFc1hHNGdJQ0FnSUNBbmIzUm9aWEl0UG5OcGJtZHNaU2M2SURBc1hHNGdJQ0FnSUNBbmIzUm9aWEl0UG1Oc2IzTnBibWNuT2lBdE1TeGNiaUFnSUNBZ0lDZHZkR2hsY2kwK2IzQmxibWx1WnljNklEQXNYRzRnSUNBZ0lDQW5iM1JvWlhJdFBtOTBhR1Z5SnpvZ01GeHVJQ0FnSUgwN1hHNGdJQ0FnWm00Z1BTQm1kVzVqZEdsdmJpaHNiaWtnZTF4dUlDQWdJQ0FnZG1GeUlHWnliMjFVYnl3Z2Fpd2dhMlY1TENCd1lXUmthVzVuTENCMGVYQmxMQ0IwZVhCbGN5d2dkbUZzZFdVN1hHNGdJQ0FnSUNCMGVYQmxjeUE5SUh0Y2JpQWdJQ0FnSUNBZ2MybHVaMnhsT2lCQ2IyOXNaV0Z1S0d4dUxtMWhkR05vS0M4OExpdGNYQzgrTHlrcExGeHVJQ0FnSUNBZ0lDQmpiRzl6YVc1bk9pQkNiMjlzWldGdUtHeHVMbTFoZEdOb0tDODhYRnd2TGlzK0x5a3BMRnh1SUNBZ0lDQWdJQ0J2Y0dWdWFXNW5PaUJDYjI5c1pXRnVLR3h1TG0xaGRHTm9LQzg4VzE0aFAxMHVLajR2S1NsY2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNCMGVYQmxJRDBnS0NobWRXNWpkR2x2YmlncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhKbGMzVnNkSE03WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkSE1nUFNCYlhUdGNiaUFnSUNBZ0lDQWdabTl5SUNoclpYa2dhVzRnZEhsd1pYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCMllXeDFaU0E5SUhSNWNHVnpXMnRsZVYwN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0haaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhSekxuQjFjMmdvYTJWNUtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkSE03WEc0Z0lDQWdJQ0I5S1NncEtWc3dYVHRjYmlBZ0lDQWdJSFI1Y0dVZ1BTQjBlWEJsSUQwOVBTQjJiMmxrSURBZ1B5QW5iM1JvWlhJbklEb2dkSGx3WlR0Y2JpQWdJQ0FnSUdaeWIyMVVieUE5SUd4aGMzUlVlWEJsSUNzZ0p5MCtKeUFySUhSNWNHVTdYRzRnSUNBZ0lDQnNZWE4wVkhsd1pTQTlJSFI1Y0dVN1hHNGdJQ0FnSUNCd1lXUmthVzVuSUQwZ0p5YzdYRzRnSUNBZ0lDQnBibVJsYm5RZ0t6MGdkSEpoYm5OcGRHbHZibk5iWm5KdmJWUnZYVHRjYmlBZ0lDQWdJSEJoWkdScGJtY2dQU0FvS0daMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnYlN3Z2NtVm1NU3dnY21WemRXeDBjenRjYmlBZ0lDQWdJQ0FnY21WemRXeDBjeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQm1iM0lnS0dvZ1BTQnRJRDBnTUN3Z2NtVm1NU0E5SUdsdVpHVnVkRHNnTUNBOFBTQnlaV1l4SUQ4Z2JTQThJSEpsWmpFZ09pQnRJRDRnY21WbU1Uc2dhaUE5SURBZ1BEMGdjbVZtTVNBL0lDc3JiU0E2SUMwdGJTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGMzVnNkSE11Y0hWemFDZ25JQ0FuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwY3p0Y2JpQWdJQ0FnSUgwcEtDa3BMbXB2YVc0b0p5Y3BPMXh1SUNBZ0lDQWdhV1lnS0daeWIyMVVieUE5UFQwZ0oyOXdaVzVwYm1jdFBtTnNiM05wYm1jbktTQjdYRzRnSUNBZ0lDQWdJR1p2Y20xaGRIUmxaQ0E5SUdadmNtMWhkSFJsWkM1emRXSnpkSElvTUN3Z1ptOXliV0YwZEdWa0xteGxibWQwYUNBdElERXBJQ3NnYkc0Z0t5QW5YRnh1Snp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdadmNtMWhkSFJsWkNBclBTQndZV1JrYVc1bklDc2diRzRnS3lBblhGeHVKenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlPMXh1SUNBZ0lHWnZjaUFvYkNBOUlEQXNJR3hsYmlBOUlHeHBibVZ6TG14bGJtZDBhRHNnYkNBOElHeGxianNnYkNzcktTQjdYRzRnSUNBZ0lDQnNiaUE5SUd4cGJtVnpXMnhkTzF4dUlDQWdJQ0FnWm00b2JHNHBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWm05eWJXRjBkR1ZrTzF4dUlDQjlPMXh1WEc0Z0lDOHZJR052Y0hrdGNHRnpkR1ZrSUdaeWIyMGdjM2RoWjJkbGNpMXFjMXh1SUNCMllYSWdaMlYwVFc5a1pXeFRhV2R1WVhSMWNtVWdQU0JtZFc1amRHbHZiaUFvYm1GdFpTd2djMk5vWlcxaExDQnRiMlJsYkhNc0lHMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5a2dlMXh1SUNBZ0lIWmhjaUJ6ZEhKdmJtZFBjR1Z1SUQwZ0p6eHpjR0Z1SUdOc1lYTnpQVndpYzNSeWIyNW5YQ0krSnp0Y2JpQWdJQ0IyWVhJZ2MzUnliMjVuUTJ4dmMyVWdQU0FuUEM5emNHRnVQaWM3WEc1Y2JpQWdJQ0IyWVhJZ2IzQjBhVzl1U0hSdGJDQTlJR1oxYm1OMGFXOXVJQ2hzWVdKbGJDd2dkbUZzZFdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBblBIUnlQangwWkNCamJHRnpjejFjSW05d2RHbHZiazVoYldWY0lqNG5JQ3NnYkdGaVpXd2dLeUFuT2p3dmRHUStQSFJrUGljZ0t5QjJZV3gxWlNBcklDYzhMM1JrUGp3dmRISStKenRjYmlBZ0lDQjlPMXh1WEc1Y2JpQWdJQ0F2THlCQmJHeHZkeUJtYjNJZ2FXZHViM0pwYm1jZ2RHaGxJQ2R1WVcxbEp5QmhjbWQxYldWdWRDNHVMaTRnYzJocFpuUnBibWNnZEdobElISmxjM1JjYmlBZ0lDQnBaaWhmTG1selQySnFaV04wS0dGeVozVnRaVzUwYzFzd1hTa3BJSHRjYmlBZ0lDQWdJRzVoYldVZ1BTQjJiMmxrSURBN1hHNGdJQ0FnSUNCelkyaGxiV0VnUFNCaGNtZDFiV1Z1ZEhOYk1GMDdYRzRnSUNBZ0lDQnRiMlJsYkhNZ1BTQmhjbWQxYldWdWRITmJNVjA3WEc0Z0lDQWdJQ0J0YjJSbGJGQnliM0JsY25SNVRXRmpjbThnUFNCaGNtZDFiV1Z1ZEhOYk1sMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JXOWtaV3h6SUQwZ2JXOWtaV3h6SUh4OElIdDlPMXh1WEc0Z0lDQWdMeThnVW1WemIyeDJaU0IwYUdVZ2MyTm9aVzFoSUNoSVlXNWtiR1VnYm1WemRHVmtJSE5qYUdWdFlYTXBYRzRnSUNBZ2MyTm9aVzFoSUQwZ2NtVnpiMngyWlZOamFHVnRZU2h6WTJobGJXRXBPMXh1WEc0Z0lDQWdMeThnVW1WMGRYSnVJR1p2Y2lCbGJYQjBlU0J2WW1wbFkzUmNiaUFnSUNCcFppaGZMbWx6Ulcxd2RIa29jMk5vWlcxaEtTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlITjBjbTl1WjA5d1pXNGdLeUFuUlcxd2RIa25JQ3NnYzNSeWIyNW5RMnh2YzJVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1JHVnlaV1psY21WdVkyVWdKSEpsWmlCbWNtOXRJQ2R0YjJSbGJITW5YRzRnSUNBZ2FXWW9kSGx3Wlc5bUlITmphR1Z0WVM0a2NtVm1JRDA5UFNBbmMzUnlhVzVuSnlrZ2UxeHVJQ0FnSUNBZ2JtRnRaU0E5SUhOcGJYQnNaVkpsWmloelkyaGxiV0V1SkhKbFppazdYRzRnSUNBZ0lDQnpZMmhsYldFZ1BTQnRiMlJsYkhOYmJtRnRaVjA3WEc0Z0lDQWdJQ0JwWmloMGVYQmxiMllnYzJOb1pXMWhJRDA5UFNBbmRXNWtaV1pwYm1Wa0p5bGNiaUFnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlITjBjbTl1WjA5d1pXNGdLeUJ1WVcxbElDc2dKeUJwY3lCdWIzUWdaR1ZtYVc1bFpDRW5JQ3NnYzNSeWIyNW5RMnh2YzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZb2RIbHdaVzltSUc1aGJXVWdJVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnSUNCdVlXMWxJRDBnYzJOb1pXMWhMblJwZEd4bElIeDhJQ2RKYm14cGJtVWdUVzlrWld3bk8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFbG1JSGRsSUdGeVpTQmhJRTF2WkdWc0lHOWlhbVZqZEM0dUxpQmhaR3AxYzNRZ1lXTmpiM0prYVc1bmJIbGNiaUFnSUNCcFppaHpZMmhsYldFdVpHVm1hVzVwZEdsdmJpa2dlMXh1SUNBZ0lDQWdjMk5vWlcxaElEMGdjMk5vWlcxaExtUmxabWx1YVhScGIyNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWW9kSGx3Wlc5bUlHMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5QWhQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ2JXOWtaV3hRY205d1pYSjBlVTFoWTNKdklEMGdablZ1WTNScGIyNG9jSEp2Y0NsN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBb2NISnZjQ0I4ZkNCN2ZTa3VaR1ZtWVhWc2REdGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RtRnlJSEpsWm1WeVpXNWpaWE1nUFNCN2ZUdGNiaUFnSUNCMllYSWdjMlZsYmsxdlpHVnNjeUE5SUZ0ZE8xeHVJQ0FnSUhaaGNpQnBibXhwYm1WTmIyUmxiSE1nUFNBd08xeHVYRzRnSUNBZ0x5OGdSMlZ1WlhKaGRHVWdZM1Z5Y21WdWRDQklWRTFNWEc0Z0lDQWdkbUZ5SUdoMGJXd2dQU0J3Y205alpYTnpUVzlrWld3b2MyTm9aVzFoTENCdVlXMWxLVHRjYmx4dUlDQWdJQzh2SUVkbGJtVnlZWFJsSUhKbFptVnlaVzVqWlhNZ1NGUk5URnh1SUNBZ0lIZG9hV3hsSUNoZkxtdGxlWE1vY21WbVpYSmxibU5sY3lrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdMeW9nYW5Ob2FXNTBJR2xuYm05eVpUcHpkR0Z5ZENBcUwxeHVJQ0FnSUNBZ1h5NW1iM0pGWVdOb0tISmxabVZ5Wlc1alpYTXNJR1oxYm1OMGFXOXVJQ2h6WTJobGJXRXNJRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUhObFpXNU5iMlJsYkNBOUlGOHVhVzVrWlhoUFppaHpaV1Z1VFc5a1pXeHpMQ0J1WVcxbEtTQStJQzB4TzF4dVhHNGdJQ0FnSUNBZ0lHUmxiR1YwWlNCeVpXWmxjbVZ1WTJWelcyNWhiV1ZkTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doYzJWbGJrMXZaR1ZzS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjMlZsYmsxdlpHVnNjeTV3ZFhOb0tHNWhiV1VwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdhSFJ0YkNBclBTQW5QR0p5SUM4K0p5QXJJSEJ5YjJObGMzTk5iMlJsYkNoelkyaGxiV0VzSUc1aGJXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUM4cUlHcHphR2x1ZENCcFoyNXZjbVU2Wlc1a0lDb3ZYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUdoMGJXdzdYRzVjYmx4dUlDQWdJR1oxYm1OMGFXOXVJR0ZrWkZKbFptVnlaVzVqWlNoelkyaGxiV0VzSUc1aGJXVXNJSE5yYVhCU1pXWXBJSHRjYmlBZ0lDQWdJSFpoY2lCdGIyUmxiRTVoYldVZ1BTQnVZVzFsTzF4dUlDQWdJQ0FnZG1GeUlHMXZaR1ZzTzF4dVhHNGdJQ0FnSUNCcFppQW9jMk5vWlcxaExpUnlaV1lwSUh0Y2JpQWdJQ0FnSUNBZ2JXOWtaV3hPWVcxbElEMGdjMk5vWlcxaExuUnBkR3hsSUh4OElITnBiWEJzWlZKbFppaHpZMmhsYldFdUpISmxaaWs3WEc0Z0lDQWdJQ0FnSUcxdlpHVnNJRDBnYlc5a1pXeHpXM05wYlhCc1pWSmxaaWh6WTJobGJXRXVKSEpsWmlsZE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGZMbWx6Vlc1a1pXWnBibVZrS0c1aGJXVXBLU0I3WEc0Z0lDQWdJQ0FnSUcxdlpHVnNUbUZ0WlNBOUlITmphR1Z0WVM1MGFYUnNaU0I4ZkNBblNXNXNhVzVsSUUxdlpHVnNJQ2NnS3lBb0t5dHBibXhwYm1WTmIyUmxiSE1wTzF4dUlDQWdJQ0FnSUNCdGIyUmxiQ0E5SUh0a1pXWnBibWwwYVc5dU9pQnpZMmhsYldGOU8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvYzJ0cGNGSmxaaUFoUFQwZ2RISjFaU2tnZTF4dUlDQWdJQ0FnSUNCeVpXWmxjbVZ1WTJWelcyMXZaR1ZzVG1GdFpWMGdQU0JmTG1selZXNWtaV1pwYm1Wa0tHMXZaR1ZzS1NBL0lIdDlJRG9nYlc5a1pXd3VaR1ZtYVc1cGRHbHZianRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMGRYSnVJRzF2WkdWc1RtRnRaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQm1kVzVqZEdsdmJpQndjbWx0YVhScGRtVlViMGhVVFV3b2MyTm9aVzFoS1NCN1hHNGdJQ0FnSUNCMllYSWdhSFJ0YkNBOUlDYzhjM0JoYmlCamJHRnpjejFjSW5CeWIzQlVlWEJsWENJK0p6dGNiaUFnSUNBZ0lIWmhjaUIwZVhCbElEMGdjMk5vWlcxaExuUjVjR1VnZkh3Z0oyOWlhbVZqZENjN1hHNWNiaUFnSUNBZ0lHbG1JQ2h6WTJobGJXRXVKSEpsWmlrZ2UxeHVJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlHRmtaRkpsWm1WeVpXNWpaU2h6WTJobGJXRXNJSE5wYlhCc1pWSmxaaWh6WTJobGJXRXVKSEpsWmlrcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lWOHVhWE5WYm1SbFptbHVaV1FvYzJOb1pXMWhMbkJ5YjNCbGNuUnBaWE1wS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhSFJ0YkNBclBTQmhaR1JTWldabGNtVnVZMlVvYzJOb1pXMWhLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNkdlltcGxZM1FuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZGhjbkpoZVNjcElIdGNiaUFnSUNBZ0lDQWdhSFJ0YkNBclBTQW5RWEp5WVhsYkp6dGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMEZ5Y21GNUtITmphR1Z0WVM1cGRHVnRjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlGOHViV0Z3S0hOamFHVnRZUzVwZEdWdGN5d2dZV1JrVW1WbVpYSmxibU5sS1M1cWIybHVLQ2NzSnlrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9YeTVwYzFCc1lXbHVUMkpxWldOMEtITmphR1Z0WVM1cGRHVnRjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWHk1cGMxVnVaR1ZtYVc1bFpDaHpZMmhsYldFdWFYUmxiWE11SkhKbFppa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doWHk1cGMxVnVaR1ZtYVc1bFpDaHpZMmhsYldFdWFYUmxiWE11ZEhsd1pTa2dKaVlnWHk1cGJtUmxlRTltS0ZzbllYSnlZWGtuTENBbmIySnFaV04wSjEwc0lITmphR1Z0WVM1cGRHVnRjeTUwZVhCbEtTQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNCelkyaGxiV0V1YVhSbGJYTXVkSGx3WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHaDBiV3dnS3owZ1lXUmtVbVZtWlhKbGJtTmxLSE5qYUdWdFlTNXBkR1Z0Y3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2gwYld3Z0t6MGdZV1JrVW1WbVpYSmxibU5sS0hOamFHVnRZUzVwZEdWdGN5d2djMmx0Y0d4bFVtVm1LSE5qYUdWdFlTNXBkR1Z0Y3k0a2NtVm1LU2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXViRzluS0NkQmNuSmhlU0IwZVhCbFhGd25jeUJjWENkcGRHVnRjMXhjSnlCelkyaGxiV0VnYVhNZ2JtOTBJR0Z1SUdGeWNtRjVJRzl5SUdGdUlHOWlhbVZqZEN3Z1kyRnVibTkwSUhCeWIyTmxjM01uS1R0Y2JpQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlDZHZZbXBsWTNRbk8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuWFNjN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCb2RHMXNJQ3M5SUhOamFHVnRZUzUwZVhCbE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQm9kRzFzSUNzOUlDYzhMM053WVc0K0p6dGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHaDBiV3c3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdablZ1WTNScGIyNGdjSEpwYldsMGFYWmxWRzlQY0hScGIyNXpTRlJOVENoelkyaGxiV0VzSUdoMGJXd3BJSHRjYmlBZ0lDQWdJSFpoY2lCdmNIUnBiMjV6SUQwZ0p5YzdYRzRnSUNBZ0lDQjJZWElnZEhsd1pTQTlJSE5qYUdWdFlTNTBlWEJsSUh4OElDZHZZbXBsWTNRbk8xeHVJQ0FnSUNBZ2RtRnlJR2x6UVhKeVlYa2dQU0IwZVhCbElEMDlQU0FuWVhKeVlYa25PMXh1WEc0Z0lDQWdJQ0JwWmlBb0lWOHVhWE5WYm1SbFptbHVaV1FvYzJOb1pXMWhMbVJsYzJOeWFYQjBhVzl1S1NrZ2UxeHVJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlDYzZJQ2NnS3lBblBITndZVzRnWTJ4aGMzTTlYQ0p3Y205d1JHVnpZMXdpUGljZ0t5QnpZMmhsYldFdVpHVnpZM0pwY0hScGIyNGdLeUFuUEM5emNHRnVQaWM3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdsbUlDaHpZMmhsYldFdVpXNTFiU2tnZTF4dUlDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjZ1BTQThjM0JoYmlCamJHRnpjejFjSW5CeWIzQldZV3h6WENJK1cxeGNKeWNnS3lCelkyaGxiV0V1Wlc1MWJTNXFiMmx1S0NkY1hDY3NJRnhjSnljcElDc2dKMXhjSjEwOEwzTndZVzQrSnp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLR2x6UVhKeVlYa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tGOHVhWE5RYkdGcGJrOWlhbVZqZENoelkyaGxiV0V1YVhSbGJYTXBJQ1ltSUNGZkxtbHpWVzVrWldacGJtVmtLSE5qYUdWdFlTNXBkR1Z0Y3k1MGVYQmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUjVjR1VnUFNCelkyaGxiV0V1YVhSbGJYTXVkSGx3WlR0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBlWEJsSUQwZ0oyOWlhbVZqZENjN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0NGZkxtbHpWVzVrWldacGJtVmtLSE5qYUdWdFlTNWtaV1poZFd4MEtTa2dlMXh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpJQ3M5SUc5d2RHbHZia2gwYld3b0owUmxabUYxYkhRbkxDQnpZMmhsYldFdVpHVm1ZWFZzZENrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lITjNhWFJqYUNBb2RIbHdaU2tnZTF4dUlDQWdJQ0FnWTJGelpTQW5jM1J5YVc1bkp6cGNiaUFnSUNBZ0lDQWdhV1lnS0hOamFHVnRZUzV0YVc1TVpXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1eklDczlJRzl3ZEdsdmJraDBiV3dvSjAxcGJpNGdUR1Z1WjNSb0p5d2djMk5vWlcxaExtMXBia3hsYm1kMGFDazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaExtMWhlRXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk1nS3owZ2IzQjBhVzl1U0hSdGJDZ25UV0Y0TGlCTVpXNW5kR2duTENCelkyaGxiV0V1YldGNFRHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1Y0dGMGRHVnliaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ0t6MGdiM0IwYVc5dVNIUnRiQ2duVW1WbkxpQkZlSEF1Snl3Z2MyTm9aVzFoTG5CaGRIUmxjbTRwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5hVzUwWldkbGNpYzZYRzRnSUNBZ0lDQmpZWE5sSUNkdWRXMWlaWEluT2x4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaExtMXBibWx0ZFcwcElIdGNiaUFnSUNBZ0lDQWdJQ0J2Y0hScGIyNXpJQ3M5SUc5d2RHbHZia2gwYld3b0owMXBiaTRnVm1Gc2RXVW5MQ0J6WTJobGJXRXViV2x1YVcxMWJTazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaExtVjRZMngxYzJsMlpVMXBibWx0ZFcwcElIdGNiaUFnSUNBZ0lDQWdJQ0J2Y0hScGIyNXpJQ3M5SUc5d2RHbHZia2gwYld3b0owVjRZMngxYzJsMlpTQk5hVzR1Snl3Z0ozUnlkV1VuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1YldGNGFXMTFiU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ0t6MGdiM0IwYVc5dVNIUnRiQ2duVFdGNExpQldZV3gxWlNjc0lITmphR1Z0WVM1dFlYaHBiWFZ0S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1WlhoamJIVnphWFpsVFdGNGFXMTFiU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ0t6MGdiM0IwYVc5dVNIUnRiQ2duUlhoamJIVnphWFpsSUUxaGVDNG5MQ0FuZEhKMVpTY3BPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLSE5qYUdWdFlTNXRkV3gwYVhCc1pVOW1LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBclBTQnZjSFJwYjI1SWRHMXNLQ2ROZFd4MGFYQnNaU0JQWmljc0lITmphR1Z0WVM1dGRXeDBhWEJzWlU5bUtUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2FYTkJjbkpoZVNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYzJOb1pXMWhMbTFwYmtsMFpXMXpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBclBTQnZjSFJwYjI1SWRHMXNLQ2ROYVc0dUlFbDBaVzF6Snl3Z2MyTm9aVzFoTG0xcGJrbDBaVzF6S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1YldGNFNYUmxiWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1eklDczlJRzl3ZEdsdmJraDBiV3dvSjAxaGVDNGdTWFJsYlhNbkxDQnpZMmhsYldFdWJXRjRTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tITmphR1Z0WVM1MWJtbHhkV1ZKZEdWdGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk1nS3owZ2IzQjBhVzl1U0hSdGJDZ25WVzVwY1hWbElFbDBaVzF6Snl3Z0ozUnlkV1VuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1WTI5c2JHVmpkR2x2YmtadmNtMWhkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ0t6MGdiM0IwYVc5dVNIUnRiQ2duUTI5c2JDNGdSbTl5YldGMEp5d2djMk5vWlcxaExtTnZiR3hsWTNScGIyNUdiM0p0WVhRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoZkxtbHpWVzVrWldacGJtVmtLSE5qYUdWdFlTNXBkR1Z0Y3lrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0Y4dWFYTkJjbkpoZVNoelkyaGxiV0V1Wlc1MWJTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCMllYSWdaVzUxYlZOMGNtbHVaenRjYmx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbElEMDlQU0FuYm5WdFltVnlKeUI4ZkNCMGVYQmxJRDA5UFNBbmFXNTBaV2RsY2ljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWdWRXMVRkSEpwYm1jZ1BTQnpZMmhsYldFdVpXNTFiUzVxYjJsdUtDY3NJQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsYm5WdFUzUnlhVzVuSUQwZ0oxd2lKeUFySUhOamFHVnRZUzVsYm5WdExtcHZhVzRvSjF3aUxDQmNJaWNwSUNzZ0oxd2lKenRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0J2Y0hScGIyNXpJQ3M5SUc5d2RHbHZia2gwYld3b0owVnVkVzBuTENCbGJuVnRVM1J5YVc1bktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1c1pXNW5kR2dnUGlBd0tTQjdYRzRnSUNBZ0lDQWdJR2gwYld3Z1BTQW5QSE53WVc0Z1kyeGhjM005WENKd2NtOXdWM0poY0Z3aVBpY2dLeUJvZEcxc0lDc2dKengwWVdKc1pTQmpiR0Z6Y3oxY0ltOXdkR2x2Ym5OWGNtRndjR1Z5WENJK1BIUnlQangwYUNCamIyeHpjR0Z1UFZ3aU1sd2lQaWNnS3lCMGVYQmxJQ3NnSnp3dmRHZytQQzkwY2o0bklDc2diM0IwYVc5dWN5QXJJQ2M4TDNSaFlteGxQand2YzNCaGJqNG5PMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhSFJ0YkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JtZFc1amRHbHZiaUJ3Y205alpYTnpUVzlrWld3b2MyTm9aVzFoTENCdVlXMWxLU0I3WEc0Z0lDQWdJQ0IyWVhJZ2RIbHdaU0E5SUhOamFHVnRZUzUwZVhCbElIeDhJQ2R2WW1wbFkzUW5PMXh1SUNBZ0lDQWdkbUZ5SUdselFYSnlZWGtnUFNCelkyaGxiV0V1ZEhsd1pTQTlQVDBnSjJGeWNtRjVKenRjYmlBZ0lDQWdJSFpoY2lCb2RHMXNJRDBnYzNSeWIyNW5UM0JsYmlBcklHNWhiV1VnS3lBbklDY2dLeUFvYVhOQmNuSmhlU0EvSUNkYkp5QTZJQ2Q3SnlrZ0t5QnpkSEp2Ym1kRGJHOXpaVHRjYmlBZ0lDQWdJSFpoY2lCamIyNTBaVzUwY3p0Y2JseHVJQ0FnSUNBZ2FXWWdLRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdjMlZsYmsxdlpHVnNjeTV3ZFhOb0tHNWhiV1VwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9hWE5CY25KaGVTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMEZ5Y21GNUtITmphR1Z0WVM1cGRHVnRjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlDYzhaR2wyUGljZ0t5QmZMbTFoY0NoelkyaGxiV0V1YVhSbGJYTXNJR1oxYm1OMGFXOXVJQ2hwZEdWdEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkSGx3WlNBOUlHbDBaVzB1ZEhsd1pTQjhmQ0FuYjJKcVpXTjBKenRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0Y4dWFYTlZibVJsWm1sdVpXUW9hWFJsYlM0a2NtVm1LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1h5NXBibVJsZUU5bUtGc25ZWEp5WVhrbkxDQW5iMkpxWldOMEoxMHNJSFI1Y0dVcElENGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3WlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnWHk1cGMxVnVaR1ZtYVc1bFpDaHBkR1Z0TG5CeWIzQmxjblJwWlhNcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKMjlpYW1WamRDYzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmhaR1JTWldabGNtVnVZMlVvYVhSbGJTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd2NtbHRhWFJwZG1WVWIwOXdkR2x2Ym5OSVZFMU1LR2wwWlcwc0lIUjVjR1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVdSa1VtVm1aWEpsYm1ObEtHbDBaVzBzSUhOcGJYQnNaVkpsWmlocGRHVnRMaVJ5WldZcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlLUzVxYjJsdUtDY3NQQzlrYVhZK1BHUnBkajRuS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGZMbWx6VUd4aGFXNVBZbXBsWTNRb2MyTm9aVzFoTG1sMFpXMXpLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2hmTG1selZXNWtaV1pwYm1Wa0tITmphR1Z0WVM1cGRHVnRjeTRrY21WbUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRjh1YVc1a1pYaFBaaWhiSjJGeWNtRjVKeXdnSjI5aWFtVmpkQ2RkTENCelkyaGxiV0V1YVhSbGJYTXVkSGx3WlNCOGZDQW5iMkpxWldOMEp5a2dQaUF0TVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9LRjh1YVhOVmJtUmxabWx1WldRb2MyTm9aVzFoTG1sMFpXMXpMblI1Y0dVcElIeDhJSE5qYUdWdFlTNXBkR1Z0Y3k1MGVYQmxJRDA5UFNBbmIySnFaV04wSnlrZ0ppWWdYeTVwYzFWdVpHVm1hVzVsWkNoelkyaGxiV0V1YVhSbGJYTXVjSEp2Y0dWeWRHbGxjeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjOFpHbDJQbTlpYW1WamREd3ZaR2wyUGljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuUEdScGRqNG5JQ3NnWVdSa1VtVm1aWEpsYm1ObEtITmphR1Z0WVM1cGRHVnRjeWtnS3lBblBDOWthWFkrSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNBblBHUnBkajRuSUNzZ2NISnBiV2wwYVhabFZHOVBjSFJwYjI1elNGUk5UQ2h6WTJobGJXRXVhWFJsYlhNc0lITmphR1Z0WVM1cGRHVnRjeTUwZVhCbEtTQXJJQ2M4TDJScGRqNG5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjOFpHbDJQaWNnS3lCaFpHUlNaV1psY21WdVkyVW9jMk5vWlcxaExtbDBaVzF6TENCemFXMXdiR1ZTWldZb2MyTm9aVzFoTG1sMFpXMXpMaVJ5WldZcEtTQXJJQ2M4TDJScGRqNG5PMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExteHZaeWduUVhKeVlYa2dkSGx3WlZ4Y0ozTWdYRnduYVhSbGJYTmNYQ2NnY0hKdmNHVnlkSGtnYVhNZ2JtOTBJR0Z1SUdGeWNtRjVJRzl5SUdGdUlHOWlhbVZqZEN3Z1kyRnVibTkwSUhCeWIyTmxjM01uS1R0Y2JpQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlDYzhaR2wyUG05aWFtVmpkRHd2WkdsMlBpYzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoelkyaGxiV0V1SkhKbFppa2dlMXh1SUNBZ0lDQWdJQ0FnSUdoMGJXd2dLejBnSnp4a2FYWStKeUFySUdGa1pGSmxabVZ5Wlc1alpTaHpZMmhsYldFc0lHNWhiV1VwSUNzZ0p6d3ZaR2wyUGljN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9YeTVwYzFCc1lXbHVUMkpxWldOMEtITmphR1Z0WVM1d2NtOXdaWEowYVdWektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR1Z1ZEhNZ1BTQmZMbTFoY0NoelkyaGxiV0V1Y0hKdmNHVnlkR2xsY3l3Z1puVnVZM1JwYjI0Z0tIQnliM0JsY25SNUxDQnVZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQndjbTl3WlhKMGVVbHpVbVZ4ZFdseVpXUWdQU0FvWHk1cGJtUmxlRTltS0hOamFHVnRZUzV5WlhGMWFYSmxaQ3dnYm1GdFpTa2dQajBnTUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQmpVSEp2Y0dWeWRIa2dQU0JmTG1Oc2IyNWxSR1ZsY0Nod2NtOXdaWEowZVNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSEpsY1hWcGNtVmtRMnhoYzNNZ1BTQndjbTl3WlhKMGVVbHpVbVZ4ZFdseVpXUWdQeUFuY21WeGRXbHlaV1FuSURvZ0p5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJvZEcxc0lEMGdKenh6Y0dGdUlHTnNZWE56UFZ3aWNISnZjRTVoYldVZ0p5QXJJSEpsY1hWcGNtVmtRMnhoYzNNZ0t5QW5YQ0krSnlBcklHNWhiV1VnS3lBblBDOXpjR0Z1UGlBb0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJRzF2WkdWc08xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRUZzYkc5M0lHMWhZM0p2SUhSdklITmxkQ0IwYUdVZ1pHVm1ZWFZzZENCMllXeDFaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmpVSEp2Y0dWeWRIa3VaR1ZtWVhWc2RDQTlJRzF2WkdWc1VISnZjR1Z5ZEhsTllXTnlieWhqVUhKdmNHVnlkSGtwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklGSmxjMjlzZG1VZ2RHaGxJSE5qYUdWdFlTQW9TR0Z1Wkd4bElHNWxjM1JsWkNCelkyaGxiV0Z6S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqVUhKdmNHVnlkSGtnUFNCeVpYTnZiSFpsVTJOb1pXMWhLR05RY205d1pYSjBlU2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1YyVWdibVZsWkNCMGJ5Qm9ZVzVrYkdVZ2NISnZjR1Z5ZEhrZ2NtVm1aWEpsYm1ObGN5QjBieUJ3Y21sdGFYUnBkbVZ6SUNoSmMzTjFaU0F6TXprcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzFWdVpHVm1hVzVsWkNoalVISnZjR1Z5ZEhrdUpISmxaaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdGIyUmxiQ0E5SUcxdlpHVnNjMXR6YVcxd2JHVlNaV1lvWTFCeWIzQmxjblI1TGlSeVpXWXBYVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hYeTVwYzFWdVpHVm1hVzVsWkNodGIyUmxiQ2tnSmlZZ1h5NXBibVJsZUU5bUtGdDFibVJsWm1sdVpXUXNJQ2RoY25KaGVTY3NJQ2R2WW1wbFkzUW5YU3dnYlc5a1pXd3VaR1ZtYVc1cGRHbHZiaTUwZVhCbEtTQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUZWelpTQnlaV1psY21WdVkyVmtJSE5qYUdWdFlWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMUJ5YjNCbGNuUjVJRDBnY21WemIyeDJaVk5qYUdWdFlTaHRiMlJsYkM1a1pXWnBibWwwYVc5dUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQm9kRzFzSUNzOUlIQnlhVzFwZEdsMlpWUnZTRlJOVENoalVISnZjR1Z5ZEhrcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LQ0Z3Y205d1pYSjBlVWx6VW1WeGRXbHlaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb2RHMXNJQ3M5SUNjc0lEeHpjR0Z1SUdOc1lYTnpQVndpY0hKdmNFOXdkRXRsZVZ3aVBtOXdkR2x2Ym1Gc1BDOXpjR0Z1UGljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppaHdjbTl3WlhKMGVTNXlaV0ZrVDI1c2VTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuTENBOGMzQmhiaUJqYkdGemN6MWNJbkJ5YjNCU1pXRmtUMjVzZVZ3aVBuSmxZV1FnYjI1c2VUd3ZjM0JoYmo0bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FIUnRiQ0FyUFNBbktTYzdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDYzhaR2wySnlBcklDaHdjbTl3WlhKMGVTNXlaV0ZrVDI1c2VTQS9JQ2NnWTJ4aGMzTTlYQ0p5WldGa1QyNXNlVndpSnlBNklDY25LU0FySUNjK0p5QXJJSEJ5YVcxcGRHbDJaVlJ2VDNCMGFXOXVjMGhVVFV3b1kxQnliM0JsY25SNUxDQm9kRzFzS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTG1wdmFXNG9KeXc4TDJScGRqNG5LVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1kyOXVkR1Z1ZEhNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdoMGJXd2dLejBnWTI5dWRHVnVkSE1nS3lBblBDOWthWFkrSnp0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYUhSdGJDQXJQU0FuUEdScGRqNG5JQ3NnY0hKcGJXbDBhWFpsVkc5UGNIUnBiMjV6U0ZSTlRDaHpZMmhsYldFc0lIUjVjR1VwSUNzZ0p6d3ZaR2wyUGljN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHaDBiV3dnS3lCemRISnZibWRQY0dWdUlDc2dLR2x6UVhKeVlYa2dQeUFuWFNjZ09pQW5mU2NwSUNzZ2MzUnliMjVuUTJ4dmMyVTdYRzRnSUNBZ2ZWeHVYRzRnSUgwN1hHNWNiaUFnTHk4Z1kyOXdlUzF3WVhOMFpXUWdabkp2YlNCemQyRm5aMlZ5TFdwelhHNGdJSFpoY2lCelkyaGxiV0ZVYjBwVFQwNGdQU0JtZFc1amRHbHZiaUFvYzJOb1pXMWhMQ0J0YjJSbGJITXNJRzF2WkdWc2MxUnZTV2R1YjNKbExDQnRiMlJsYkZCeWIzQmxjblI1VFdGamNtOHBJSHRjYmlBZ0lDQXZMeUJTWlhOdmJIWmxJSFJvWlNCelkyaGxiV0VnS0VoaGJtUnNaU0J1WlhOMFpXUWdjMk5vWlcxaGN5bGNiaUFnSUNCelkyaGxiV0VnUFNCeVpYTnZiSFpsVTJOb1pXMWhLSE5qYUdWdFlTazdYRzVjYmlBZ0lDQnBaaWgwZVhCbGIyWWdiVzlrWld4UWNtOXdaWEowZVUxaFkzSnZJQ0U5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQnRiMlJsYkZCeWIzQmxjblI1VFdGamNtOGdQU0JtZFc1amRHbHZiaWh3Y205d0tYdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDaHdjbTl3SUh4OElIdDlLUzVrWldaaGRXeDBPMXh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnRiMlJsYkhOVWIwbG5ibTl5WlQwZ2JXOWtaV3h6Vkc5SloyNXZjbVVnZkh3Z2UzMDdYRzVjYmlBZ0lDQjJZWElnZEhsd1pTQTlJSE5qYUdWdFlTNTBlWEJsSUh4OElDZHZZbXBsWTNRbk8xeHVJQ0FnSUhaaGNpQm1iM0p0WVhRZ1BTQnpZMmhsYldFdVptOXliV0YwTzF4dUlDQWdJSFpoY2lCdGIyUmxiRHRjYmlBZ0lDQjJZWElnYjNWMGNIVjBPMXh1WEc0Z0lDQWdhV1lnS0NGZkxtbHpWVzVrWldacGJtVmtLSE5qYUdWdFlTNWxlR0Z0Y0d4bEtTa2dlMXh1SUNBZ0lDQWdiM1YwY0hWMElEMGdjMk5vWlcxaExtVjRZVzF3YkdVN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoZkxtbHpWVzVrWldacGJtVmtLSE5qYUdWdFlTNXBkR1Z0Y3lrZ0ppWWdYeTVwYzBGeWNtRjVLSE5qYUdWdFlTNWxiblZ0S1NrZ2UxeHVJQ0FnSUNBZ2IzVjBjSFYwSUQwZ2MyTm9aVzFoTG1WdWRXMWJNRjA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0Y4dWFYTlZibVJsWm1sdVpXUW9iM1YwY0hWMEtTa2dlMXh1SUNBZ0lDQWdhV1lnS0hOamFHVnRZUzRrY21WbUtTQjdYRzRnSUNBZ0lDQWdJRzF2WkdWc0lEMGdiVzlrWld4elczTnBiWEJzWlZKbFppaHpZMmhsYldFdUpISmxaaWxkTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doWHk1cGMxVnVaR1ZtYVc1bFpDaHRiMlJsYkNrcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb1h5NXBjMVZ1WkdWbWFXNWxaQ2h0YjJSbGJITlViMGxuYm05eVpWdHRiMlJsYkM1dVlXMWxYU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzF2WkdWc2MxUnZTV2R1YjNKbFcyMXZaR1ZzTG01aGJXVmRJRDBnYlc5a1pXdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCdmRYUndkWFFnUFNCelkyaGxiV0ZVYjBwVFQwNG9iVzlrWld3dVpHVm1hVzVwZEdsdmJpd2diVzlrWld4ekxDQnRiMlJsYkhOVWIwbG5ibTl5WlN3Z2JXOWtaV3hRY205d1pYSjBlVTFoWTNKdktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdSbGJHVjBaU0J0YjJSbGJITlViMGxuYm05eVpWdHRiMlJsYkM1dVlXMWxYVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxdlpHVnNMblI1Y0dVZ1BUMDlJQ2RoY25KaGVTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdiM1YwY0hWMElEMGdXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmRYUndkWFFnUFNCN2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvSVY4dWFYTlZibVJsWm1sdVpXUW9jMk5vWlcxaExtUmxabUYxYkhRcEtTQjdYRzRnSUNBZ0lDQWdJRzkxZEhCMWRDQTlJSE5qYUdWdFlTNWtaV1poZFd4ME8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsSUQwOVBTQW5jM1J5YVc1bkp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptOXliV0YwSUQwOVBTQW5aR0YwWlMxMGFXMWxKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHOTFkSEIxZENBOUlHNWxkeUJFWVhSbEtDa3VkRzlKVTA5VGRISnBibWNvS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaG1iM0p0WVhRZ1BUMDlJQ2RrWVhSbEp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUc5MWRIQjFkQ0E5SUc1bGR5QkVZWFJsS0NrdWRHOUpVMDlUZEhKcGJtY29LUzV6Y0d4cGRDZ25WQ2NwV3pCZE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJRzkxZEhCMWRDQTlJQ2R6ZEhKcGJtY25PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVWdQVDA5SUNkcGJuUmxaMlZ5SnlrZ2UxeHVJQ0FnSUNBZ0lDQnZkWFJ3ZFhRZ1BTQXdPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYm5WdFltVnlKeWtnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFFnUFNBd0xqQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2RpYjI5c1pXRnVKeWtnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFFnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbElEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnSUNCdmRYUndkWFFnUFNCN2ZUdGNibHh1SUNBZ0lDQWdJQ0JmTG1admNrVmhZMmdvYzJOb1pXMWhMbkJ5YjNCbGNuUnBaWE1zSUdaMWJtTjBhVzl1SUNod2NtOXdaWEowZVN3Z2JtRnRaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIWmhjaUJqVUhKdmNHVnlkSGtnUFNCZkxtTnNiMjVsUkdWbGNDaHdjbTl3WlhKMGVTazdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QkJiR3h2ZHlCdFlXTnlieUIwYnlCelpYUWdkR2hsSUdSbFptRjFiSFFnZG1Gc2RXVmNiaUFnSUNBZ0lDQWdJQ0JqVUhKdmNHVnlkSGt1WkdWbVlYVnNkQ0E5SUcxdlpHVnNVSEp2Y0dWeWRIbE5ZV055Ynlod2NtOXdaWEowZVNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0J2ZFhSd2RYUmJibUZ0WlYwZ1BTQnpZMmhsYldGVWIwcFRUMDRvWTFCeWIzQmxjblI1TENCdGIyUmxiSE1zSUcxdlpHVnNjMVJ2U1dkdWIzSmxMQ0J0YjJSbGJGQnliM0JsY25SNVRXRmpjbThwTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMkZ5Y21GNUp5a2dlMXh1SUNBZ0lDQWdJQ0J2ZFhSd2RYUWdQU0JiWFR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvWHk1cGMwRnljbUY1S0hOamFHVnRZUzVwZEdWdGN5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNCZkxtWnZja1ZoWTJnb2MyTm9aVzFoTG1sMFpXMXpMQ0JtZFc1amRHbHZiaUFvYVhSbGJTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2IzVjBjSFYwTG5CMWMyZ29jMk5vWlcxaFZHOUtVMDlPS0dsMFpXMHNJRzF2WkdWc2N5d2diVzlrWld4elZHOUpaMjV2Y21Vc0lHMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5a3BPMXh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRjh1YVhOUWJHRnBiazlpYW1WamRDaHpZMmhsYldFdWFYUmxiWE1wS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiM1YwY0hWMExuQjFjMmdvYzJOb1pXMWhWRzlLVTA5T0tITmphR1Z0WVM1cGRHVnRjeXdnYlc5a1pXeHpMQ0J0YjJSbGJITlViMGxuYm05eVpTd2diVzlrWld4UWNtOXdaWEowZVUxaFkzSnZLU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1h5NXBjMVZ1WkdWbWFXNWxaQ2h6WTJobGJXRXVhWFJsYlhNcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYjNWMGNIVjBMbkIxYzJnb2UzMHBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1Ykc5bktDZEJjbkpoZVNCMGVYQmxYRnduY3lCY1hDZHBkR1Z0YzF4Y0p5QndjbTl3WlhKMGVTQnBjeUJ1YjNRZ1lXNGdZWEp5WVhrZ2IzSWdZVzRnYjJKcVpXTjBMQ0JqWVc1dWIzUWdjSEp2WTJWemN5Y3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHOTFkSEIxZER0Y2JpQWdmVHRjYmx4dUlDQXZMeUJqYjNCNUxYQmhjM1JsWkNCbWNtOXRJSE4zWVdkblpYSXRhbk5jYmlBZ2RtRnlJR055WldGMFpVcFRUMDVUWVcxd2JHVWdQU0JtZFc1amRHbHZiaUFvZG1Gc2RXVXNJRzF2WkdWc2MxUnZTV2R1YjNKbEtTQjdYRzRnSUNBZ2JXOWtaV3h6Vkc5SloyNXZjbVVnUFNCdGIyUmxiSE5VYjBsbmJtOXlaU0I4ZkNCN2ZUdGNibHh1SUNBZ0lHMXZaR1ZzYzFSdlNXZHViM0psVzNaaGJIVmxMbTVoYldWZElEMGdkbUZzZFdVN1hHNWNiaUFnSUNBdkx5QlNaWE53YjI1elpTQnpkWEJ3YjNKMFhHNGdJQ0FnYVdZZ0tIWmhiSFZsTG1WNFlXMXdiR1Z6SUNZbUlGOHVhWE5RYkdGcGJrOWlhbVZqZENoMllXeDFaUzVsZUdGdGNHeGxjeWtwSUh0Y2JpQWdJQ0FnSUhaaGJIVmxJRDBnWHk1amJHOXVaVVJsWlhBb2RtRnNkV1VwTzF4dUlDQWdJQ0FnZG1GeUlHdGxlWE1nUFNCUFltcGxZM1F1YTJWNWN5aDJZV3gxWlM1bGVHRnRjR3hsY3lrN1hHNWNiaUFnSUNBZ0lGOHVabTl5UldGamFDaHJaWGx6TENCbWRXNWpkR2x2YmloclpYa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZb2EyVjVMbWx1WkdWNFQyWW9KMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5LU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUhaaGNpQmxlR0Z0Y0d4bElEMGdkbUZzZFdVdVpYaGhiWEJzWlhOYmEyVjVYVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9YeTVwYzFOMGNtbHVaeWhsZUdGdGNHeGxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWGhoYlhCc1pTQTlJR3B6ZVdGdGJDNXpZV1psVEc5aFpDaGxlR0Z0Y0d4bEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1V1WkdWbWFXNXBkR2x2Ymk1bGVHRnRjR3hsSUQwZ1pYaGhiWEJzWlR0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MyTm9aVzFoVkc5S1UwOU9LSFpoYkhWbExtUmxabWx1YVhScGIyNHNJR1Y0WVcxd2JHVXNJRzF2WkdWc2MxUnZTV2R1YjNKbExDQjJZV3gxWlM1dGIyUmxiRkJ5YjNCbGNuUjVUV0ZqY204cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvZG1Gc2RXVXVaWGhoYlhCc1pYTXBJSHRjYmlBZ0lDQWdJSFpoYkhWbElEMGdYeTVqYkc5dVpVUmxaWEFvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdkbUZ5SUdWNFlXMXdiR1VnUFNCMllXeDFaUzVsZUdGdGNHeGxjenRjYmlBZ0lDQWdJR2xtSUNoZkxtbHpVM1J5YVc1bktHVjRZVzF3YkdVcEtTQjdYRzRnSUNBZ0lDQWdJR1Y0WVcxd2JHVWdQU0JxYzNsaGJXd3VjMkZtWlV4dllXUW9aWGhoYlhCc1pTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjJZV3gxWlM1a1pXWnBibWwwYVc5dUxtVjRZVzF3YkdVZ1BTQmxlR0Z0Y0d4bE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhOamFHVnRZVlJ2U2xOUFRpaDJZV3gxWlM1a1pXWnBibWwwYVc5dUxDQmxlR0Z0Y0d4bExDQnRiMlJsYkhOVWIwbG5ibTl5WlN3Z2RtRnNkV1V1Ylc5a1pXeFFjbTl3WlhKMGVVMWhZM0p2S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjMk5vWlcxaFZHOUtVMDlPS0haaGJIVmxMbVJsWm1sdWFYUnBiMjRzSUhaaGJIVmxMbTF2WkdWc2N5d2diVzlrWld4elZHOUpaMjV2Y21Vc0lIWmhiSFZsTG0xdlpHVnNVSEp2Y0dWeWRIbE5ZV055YnlrN1hHNGdJSDA3WEc1Y2JpQWdMeThnWTI5d2VTMXdZWE4wWldRZ1puSnZiU0J6ZDJGbloyVnlMV3B6WEc0Z0lIWmhjaUJuWlhSUVlYSmhiV1YwWlhKTmIyUmxiRk5wWjI1aGRIVnlaU0E5SUdaMWJtTjBhVzl1SUNoMGVYQmxMQ0JrWldacGJtbDBhVzl1Y3lrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2x6VUhKcGJXbDBhWFpsTENCc2FYTjBWSGx3WlR0Y2JseHVJQ0FnSUNBZ2FXWWdLSFI1Y0dVZ2FXNXpkR0Z1WTJWdlppQkJjbkpoZVNrZ2UxeHVJQ0FnSUNBZ0lDQnNhWE4wVkhsd1pTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lIUjVjR1VnUFNCMGVYQmxXekJkTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBdkx5QkRiMjUyWlhKMElIVnVaR1ZtYVc1bFpDQjBieUJ6ZEhKcGJtY2diMllnSjNWdVpHVm1hVzVsWkNkY2JpQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RIbHdaU0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJQ0FnZEhsd1pTQTlJQ2QxYm1SbFptbHVaV1FuTzF4dUlDQWdJQ0FnSUNCcGMxQnlhVzFwZEdsMlpTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9aR1ZtYVc1cGRHbHZibk5iZEhsd1pWMHBlMXh1SUNBZ0lDQWdJQ0F2THlCaElHMXZaR1ZzSUdSbFppQmxlR2x6ZEhNL1hHNGdJQ0FnSUNBZ0lIUjVjR1VnUFNCa1pXWnBibWwwYVc5dWMxdDBlWEJsWFRzZ0x5b2dUVzlrWld3Z0tpOWNiaUFnSUNBZ0lDQWdhWE5RY21sdGFYUnBkbVVnUFNCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNoblpYUkpibXhwYm1WTmIyUmxiQ2gwZVhCbEtTa2dlMXh1SUNBZ0lDQWdJQ0IwZVhCbElEMGdaMlYwU1c1c2FXNWxUVzlrWld3b2RIbHdaU2s3SUM4cUlFMXZaR1ZzSUNvdlhHNGdJQ0FnSUNBZ0lHbHpVSEpwYldsMGFYWmxJRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUZkbElHUmxabUYxYkhRZ2RHOGdjSEpwYldsMGFYWmxYRzRnSUNBZ0lDQWdJR2x6VUhKcGJXbDBhWFpsSUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYVdZZ0tHbHpVSEpwYldsMGFYWmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHNhWE4wVkhsd1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuUVhKeVlYbGJKeUFySUhSNWNHVWdLeUFuWFNjN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUjVjR1V1ZEc5VGRISnBibWNvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYzNSVWVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkQmNuSmhlVnNuSUNzZ1oyVjBUVzlrWld4VGFXZHVZWFIxY21Vb2RIbHdaUzV1WVcxbExDQjBlWEJsTG1SbFptbHVhWFJwYjI0c0lIUjVjR1V1Ylc5a1pXeHpMQ0IwZVhCbExtMXZaR1ZzVUhKdmNHVnlkSGxOWVdOeWJ5a2dLeUFuWFNjN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHZGxkRTF2WkdWc1UybG5ibUYwZFhKbEtIUjVjR1V1Ym1GdFpTd2dkSGx3WlM1a1pXWnBibWwwYVc5dUxDQjBlWEJsTG0xdlpHVnNjeXdnZEhsd1pTNXRiMlJsYkZCeWIzQmxjblI1VFdGamNtOHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ0x5OGdZMjl3ZVMxd1lYTjBaV1FnWm5KdmJTQnpkMkZuWjJWeUxXcHpYRzRnSUhaaGNpQmpjbVZoZEdWUVlYSmhiV1YwWlhKS1UwOU9VMkZ0Y0d4bElEMGdablZ1WTNScGIyNGdLSFI1Y0dVc0lHMXZaR1ZzY3lrZ2UxeHVJQ0FnSUhaaGNpQnNhWE4wVkhsd1pTd2djMkZ0Y0d4bFNuTnZiaXdnYVc1dVpYSlVlWEJsTzF4dUlDQWdJRzF2WkdWc2N5QTlJRzF2WkdWc2N5QjhmQ0I3ZlR0Y2JseHVJQ0FnSUd4cGMzUlVlWEJsSUQwZ0tIUjVjR1VnYVc1emRHRnVZMlZ2WmlCQmNuSmhlU2s3WEc0Z0lDQWdhVzV1WlhKVWVYQmxJRDBnYkdsemRGUjVjR1VnUHlCMGVYQmxXekJkSURvZ2RIbHdaVHRjYmx4dUlDQWdJR2xtS0cxdlpHVnNjMXRwYm01bGNsUjVjR1ZkS1NCN1hHNGdJQ0FnSUNCellXMXdiR1ZLYzI5dUlEMGdZM0psWVhSbFNsTlBUbE5oYlhCc1pTaHRiMlJsYkhOYmFXNXVaWEpVZVhCbFhTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaG5aWFJKYm14cGJtVk5iMlJsYkNocGJtNWxjbFI1Y0dVcEtYdGNiaUFnSUNBZ0lITmhiWEJzWlVwemIyNGdQU0JqY21WaGRHVktVMDlPVTJGdGNHeGxLR2RsZEVsdWJHbHVaVTF2WkdWc0tHbHVibVZ5Vkhsd1pTa3BPeUF2THlCdFlYa2djbVYwZFhKdUlHNTFiR3dzSUdsbUlIUjVjR1VnYVhOdUozUWdZMjl5Y21WamRGeHVJQ0FnSUgxY2JseHVYRzRnSUNBZ2FXWWdLSE5oYlhCc1pVcHpiMjRwSUh0Y2JpQWdJQ0FnSUhOaGJYQnNaVXB6YjI0Z1BTQnNhWE4wVkhsd1pTQS9JRnR6WVcxd2JHVktjMjl1WFNBNklITmhiWEJzWlVwemIyNDdYRzVjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnYzJGdGNHeGxTbk52YmlBOVBUMGdKM04wY21sdVp5Y3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE5oYlhCc1pVcHpiMjQ3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0Y4dWFYTlBZbXBsWTNRb2MyRnRjR3hsU25OdmJpa3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlIUWdQU0J6WVcxd2JHVktjMjl1TzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h6WVcxd2JHVktjMjl1SUdsdWMzUmhibU5sYjJZZ1FYSnlZWGtnSmlZZ2MyRnRjR3hsU25OdmJpNXNaVzVuZEdnZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RDQTlJSE5oYlhCc1pVcHpiMjViTUYwN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JwWmlBb2RDNXViMlJsVG1GdFpTQW1KaUIwZVhCbGIyWWdkQ0E5UFQwZ0owNXZaR1VuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkbUZ5SUhodGJGTjBjbWx1WnlBOUlHNWxkeUJZVFV4VFpYSnBZV3hwZW1WeUtDa3VjMlZ5YVdGc2FYcGxWRzlUZEhKcGJtY29kQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptOXliV0YwV0cxc0tIaHRiRk4wY21sdVp5azdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRXBUVDA0dWMzUnlhVzVuYVdaNUtITmhiWEJzWlVwemIyNHNJRzUxYkd3c0lESXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjMkZ0Y0d4bFNuTnZianRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwN1hHNWNiaUFnZG1GeUlIZHlZWEJVWVdjZ1BTQm1kVzVqZEdsdmJpQW9ibUZ0WlN3Z2RtRnNkV1VzSUdGMGRISnpLU0I3WEc0Z0lDQWdkbUZ5SUhOMGNpd2dZWFIwY21saWRYUmxjenRjYmx4dUlDQWdJR0YwZEhKeklEMGdZWFIwY25NZ2ZId2dXMTA3WEc1Y2JpQWdJQ0JoZEhSeWFXSjFkR1Z6SUQwZ1lYUjBjbk11YldGd0tHWjFibU4wYVc5dUlDaGhkSFJ5S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnSnlBbklDc2dZWFIwY2k1dVlXMWxJQ3NnSnoxY0lpY2dLeUJoZEhSeUxuWmhiSFZsSUNzZ0oxd2lKenRjYmlBZ0lDQjlLUzVxYjJsdUtDY25LVHRjYmx4dUlDQWdJR2xtSUNnaGJtRnRaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2RsZEVWeWNtOXlUV1Z6YzJGblpTZ25UbTlrWlNCdVlXMWxJR2x6SUc1dmRDQndjbTkyYVdSbFpDY3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lITjBjaUE5SUZ0Y2JpQWdJQ0FnSUNjOEp5d2dibUZ0WlN4Y2JpQWdJQ0FnSUdGMGRISnBZblYwWlhNc1hHNGdJQ0FnSUNBblBpY3NYRzRnSUNBZ0lDQjJZV3gxWlN4Y2JpQWdJQ0FnSUNjOEx5Y3NJRzVoYldVc0lDYytKMXh1SUNBZ0lGMDdYRzVjYmlBZ0lDQnlaWFIxY200Z2MzUnlMbXB2YVc0b0p5Y3BPMXh1SUNCOU8xeHVYRzRnSUM4dklFTnZiVzFsYm5ScGJtY2dkR2hwY3lCbWRXNTBhVzl1SUdGeklIUm9aU0J1WVcxbGN5QmhjbVVnYm05M0lHUmxkR1Z5YldsdVpXUWdZbVZtYjNKbGFHRnVaQ0JoYm1RZ2RHaGxJSEJ5WldacGVDQndZWEowSUdseklHVjRjRzl6WldRZ1lYTWdZU0J6WlhCaGNtRjBaU0JtZFc1amRHbHZiaUI4SUdoMGRIQnpPaTh2WjJsMGFIVmlMbU52YlM5emQyRm5aMlZ5TFdGd2FTOXpkMkZuWjJWeUxYVnBMMmx6YzNWbGN5OHlOVGMzWEc0Z0x5b3FJSFpoY2lCblpYUk9ZVzFsSUQwZ1puVnVZM1JwYjI0Z0tHNWhiV1VzSUhodGJDa2dlMXh1SUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0J1WVcxbElIeDhJQ2NuTzF4dVhHNGdJQ0FnZUcxc0lEMGdlRzFzSUh4OElIdDlPMXh1WEc0Z0lDQWdhV1lnS0hodGJDNXVZVzFsS1NCN1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCNGJXd3VibUZ0WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2VHMXNMbkJ5WldacGVDa2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MElEMGdlRzFzTG5CeVpXWnBlQ0FySUNjNkp5QXJJSEpsYzNWc2REdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNCOU8xeHVJQ0FxTDF4dUlDQmNiaUFnZG1GeUlHZGxkRkJ5WldacGVDQTlJR1oxYm1OMGFXOXVJQ2h1WVcxbExDQjRiV3dwSUh0Y2JpQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ2JtRnRaU0I4ZkNBbkp6dGNibHh1SUNBZ0lIaHRiQ0E5SUhodGJDQjhmQ0I3ZlR0Y2JseHVJQ0FnSUdsbUlDaDRiV3d1Y0hKbFptbDRLU0I3WEc0Z0lDQWdJQ0J5WlhOMWJIUWdQU0I0Yld3dWNISmxabWw0SUNzZ0p6b25JQ3NnY21WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lIMDdYRzVjYmlBZ2RtRnlJR2RsZEU1aGJXVnpjR0ZqWlNBOUlHWjFibU4wYVc5dUlDaDRiV3dwSUh0Y2JpQWdJQ0IyWVhJZ2JtRnRaWE53WVdObElEMGdKeWM3WEc0Z0lDQWdkbUZ5SUc1aGJXVWdQU0FuZUcxc2JuTW5PMXh1WEc0Z0lDQWdlRzFzSUQwZ2VHMXNJSHg4SUh0OU8xeHVYRzRnSUNBZ2FXWWdLSGh0YkM1dVlXMWxjM0JoWTJVcElIdGNiaUFnSUNBZ0lHNWhiV1Z6Y0dGalpTQTlJSGh0YkM1dVlXMWxjM0JoWTJVN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVZVzFsYzNCaFkyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSGh0YkM1d2NtVm1hWGdwSUh0Y2JpQWdJQ0FnSUc1aGJXVWdLejBnSnpvbklDc2dlRzFzTG5CeVpXWnBlRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ2JtRnRaVG9nYm1GdFpTeGNiaUFnSUNBZ0lIWmhiSFZsT2lCdVlXMWxjM0JoWTJWY2JpQWdJQ0I5TzF4dUlDQjlPMXh1WEc0Z0lIWmhjaUJqY21WaGRHVkJjbkpoZVZoTlRDQTlJR1oxYm1OMGFXOXVJQ2hrWlhOamNtbHdkRzl5S1NCN1hHNGdJQ0FnZG1GeUlHNWhiV1VnUFNCa1pYTmpjbWx3ZEc5eUxtNWhiV1U3WEc0Z0lDQWdkbUZ5SUdOdmJtWnBaeUE5SUdSbGMyTnlhWEIwYjNJdVkyOXVabWxuTzF4dUlDQWdJSFpoY2lCa1pXWnBibWwwYVc5dUlEMGdaR1Z6WTNKcGNIUnZjaTVrWldacGJtbDBhVzl1TzF4dUlDQWdJSFpoY2lCdGIyUmxiSE1nUFNCa1pYTmpjbWx3ZEc5eUxtMXZaR1ZzY3p0Y2JpQWdJQ0IyWVhJZ2RtRnNkV1U3WEc0Z0lDQWdkbUZ5SUdsMFpXMXpJRDBnWkdWbWFXNXBkR2x2Ymk1cGRHVnRjenRjYmlBZ0lDQjJZWElnZUcxc0lEMGdaR1ZtYVc1cGRHbHZiaTU0Yld3Z2ZId2dlMzA3WEc0Z0lDQWdkbUZ5SUc1aGJXVnpjR0ZqWlNBOUlHZGxkRTVoYldWemNHRmpaU2g0Yld3cE8xeHVJQ0FnSUhaaGNpQmhkSFJ5YVdKMWRHVnpJRDBnVzEwN1hHNWNiaUFnSUNCcFppQW9JV2wwWlcxektTQjdJSEpsZEhWeWJpQm5aWFJGY25KdmNrMWxjM05oWjJVb0tUc2dmVnh1SUNBZ0lIWmhjaUJyWlhrZ1BTQnVZVzFsTzF4dUlDQWdJQzh2SUVsbUlIUm9aWEpsSUdseklHRWdibUZ0WlNCemNHVmphV1pwWldRZ1ptOXlJSFJvWlNCaGNuSmhlU0JsYkdWdFpXNTBjeXdnZFhObElIUm9ZWFFnWm05eUlIUm9aU0JoY25KaGVTQmxiR1Z0Wlc1MGN5QnVZVzFsSUh3Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwzTjNZV2RuWlhJdFlYQnBMM04zWVdkblpYSXRkV2t2YVhOemRXVnpMekkxTnpkY2JpQWdJQ0JwWmlocGRHVnRjeTU0Yld3Z0ppWWdhWFJsYlhNdWVHMXNMbTVoYldVcElIdGNiaUFnSUNBZ0lDQWdhMlY1SUQwZ2FYUmxiWE11ZUcxc0xtNWhiV1U3WEc0Z0lDQWdmVnh1SUNBZ0lIWmhiSFZsSUQwZ1kzSmxZWFJsVTJOb1pXMWhXRTFNS0d0bGVTd2dhWFJsYlhNc0lHMXZaR1ZzY3l3Z1kyOXVabWxuS1R0Y2JpQWdJQ0JwWmlBb2JtRnRaWE53WVdObEtTQjdYRzRnSUNBZ0lDQmhkSFJ5YVdKMWRHVnpMbkIxYzJnb2JtRnRaWE53WVdObEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9lRzFzTG5keVlYQndaV1FwSUh0Y2JpQWdJQ0FnSUhaaGJIVmxJRDBnZDNKaGNGUmhaeWh1WVcxbExDQjJZV3gxWlN3Z1lYUjBjbWxpZFhSbGN5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNCOU8xeHVYRzRnSUhaaGNpQm5aWFJRY21sdGFYUnBkbVZUYVdkdVlYUjFjbVVnUFNCbWRXNWpkR2x2YmlBb2MyTm9aVzFoS1NCN1hHNGdJQ0FnZG1GeUlIUjVjR1VzSUdsMFpXMXpPMXh1WEc0Z0lDQWdjMk5vWlcxaElEMGdjMk5vWlcxaElIeDhJSHQ5TzF4dUlDQWdJR2wwWlcxeklEMGdjMk5vWlcxaExtbDBaVzF6SUh4OElIdDlPMXh1SUNBZ0lIUjVjR1VnUFNCelkyaGxiV0V1ZEhsd1pTQjhmQ0FuSnp0Y2JseHVJQ0FnSUhOM2FYUmphQ0FvZEhsd1pTa2dlMXh1SUNBZ0lDQWdZMkZ6WlNBbmIySnFaV04wSnpvZ2NtVjBkWEp1SUNkUFltcGxZM1FnYVhNZ2JtOTBJR0VnY0hKcGJXbDBhWFpsSnp0Y2JpQWdJQ0FnSUdOaGMyVWdKMkZ5Y21GNUp5QTZJSEpsZEhWeWJpQW5RWEp5WVhsYkp5QXJJQ2hwZEdWdGN5NW1iM0p0WVhRZ2ZId2dhWFJsYlhNdWRIbHdaU2tnS3lBblhTYzdYRzRnSUNBZ0lDQmtaV1poZFd4ME9pQnlaWFIxY200Z2MyTm9aVzFoTG1admNtMWhkQ0I4ZkNCMGVYQmxPMXh1SUNBZ0lIMWNiaUFnZlR0Y2JseHVJQ0IyWVhJZ1kzSmxZWFJsVUhKcGJXbDBhWFpsV0UxTUlEMGdablZ1WTNScGIyNGdLR1JsYzJOeWFYQjBiM0lwSUh0Y2JpQWdJQ0IyWVhJZ2JtRnRaU0E5SUdSbGMyTnlhWEIwYjNJdWJtRnRaVHRjYmlBZ0lDQjJZWElnWkdWbWFXNXBkR2x2YmlBOUlHUmxjMk55YVhCMGIzSXVaR1ZtYVc1cGRHbHZianRjYmlBZ0lDQjJZWElnY0hKcGJXbDBhWFpsYzAxaGNDQTlJSHRjYmlBZ0lDQWdJQ2R6ZEhKcGJtY25PaUI3WEc0Z0lDQWdJQ0FnSUNka1lYUmxKem9nYm1WM0lFUmhkR1VvTVNrdWRHOUpVMDlUZEhKcGJtY29LUzV6Y0d4cGRDZ25WQ2NwV3pCZExGeHVJQ0FnSUNBZ0lDQW5aR0YwWlMxMGFXMWxKeUE2SUc1bGR5QkVZWFJsS0RFcExuUnZTVk5QVTNSeWFXNW5LQ2tzWEc0Z0lDQWdJQ0FnSUNka1pXWmhkV3gwSnpvZ0ozTjBjbWx1WnlkY2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBbmFXNTBaV2RsY2ljNklIdGNiaUFnSUNBZ0lDQWdKMlJsWm1GMWJIUW5PaUF4WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSjI1MWJXSmxjaWM2SUh0Y2JpQWdJQ0FnSUNBZ0oyUmxabUYxYkhRbk9pQXhMakZjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FuWW05dmJHVmhiaWM2SUh0Y2JpQWdJQ0FnSUNBZ0oyUmxabUYxYkhRbk9pQjBjblZsWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVHRjYmlBZ0lDQjJZWElnZEhsd1pTQTlJR1JsWm1sdWFYUnBiMjR1ZEhsd1pUdGNiaUFnSUNCMllYSWdabTl5YldGMElEMGdaR1ZtYVc1cGRHbHZiaTVtYjNKdFlYUTdYRzRnSUNBZ2RtRnlJSGh0YkNBOUlHUmxabWx1YVhScGIyNHVlRzFzSUh4OElIdDlPMXh1SUNBZ0lIWmhjaUJ1WVcxbGMzQmhZMlVnUFNCblpYUk9ZVzFsYzNCaFkyVW9lRzFzS1R0Y2JpQWdJQ0IyWVhJZ1lYUjBjbWxpZFhSbGN5QTlJRnRkTzF4dUlDQWdJSFpoY2lCMllXeDFaVHRjYmx4dUlDQWdJR2xtSUNoZkxtdGxlWE1vY0hKcGJXbDBhWFpsYzAxaGNDa3VhVzVrWlhoUFppaDBlWEJsS1NBOElEQXBJSHNnY21WMGRYSnVJR2RsZEVWeWNtOXlUV1Z6YzJGblpTZ3BPeUI5WEc1Y2JpQWdJQ0JwWmlBb1h5NXBjMEZ5Y21GNUtHUmxabWx1YVhScGIyNHVaVzUxYlNrcGUxeHVJQ0FnSUNBZ2RtRnNkV1VnUFNCa1pXWnBibWwwYVc5dUxtVnVkVzFiTUYwN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoYkhWbElEMGdaR1ZtYVc1cGRHbHZiaTVsZUdGdGNHeGxJSHg4SUhCeWFXMXBkR2wyWlhOTllYQmJkSGx3WlYxYlptOXliV0YwWFNCOGZDQndjbWx0YVhScGRtVnpUV0Z3VzNSNWNHVmRMbVJsWm1GMWJIUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSGh0YkM1aGRIUnlhV0oxZEdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCN2JtRnRaVG9nYm1GdFpTd2dkbUZzZFdVNklIWmhiSFZsZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JtRnRaWE53WVdObEtTQjdYRzRnSUNBZ0lDQmhkSFJ5YVdKMWRHVnpMbkIxYzJnb2JtRnRaWE53WVdObEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZDNKaGNGUmhaeWh1WVcxbExDQjJZV3gxWlN3Z1lYUjBjbWxpZFhSbGN5azdYRzRnSUgwN1hHNWNiaUFnWm5WdVkzUnBiMjRnWTNKbFlYUmxUMkpxWldOMFdFMU1JQ2hrWlhOamNtbHdkRzl5S1NCN1hHNGdJQ0FnZG1GeUlHNWhiV1VnUFNCa1pYTmpjbWx3ZEc5eUxtNWhiV1U3WEc0Z0lDQWdkbUZ5SUdSbFptbHVhWFJwYjI0Z1BTQmtaWE5qY21sd2RHOXlMbVJsWm1sdWFYUnBiMjQ3WEc0Z0lDQWdkbUZ5SUdOdmJtWnBaeUE5SUdSbGMyTnlhWEIwYjNJdVkyOXVabWxuTzF4dUlDQWdJSFpoY2lCdGIyUmxiSE1nUFNCa1pYTmpjbWx3ZEc5eUxtMXZaR1ZzY3p0Y2JpQWdJQ0IyWVhJZ2FYTlFZWEpoYlNBOUlHUmxjMk55YVhCMGIzSXVZMjl1Wm1sbkxtbHpVR0Z5WVcwN1hHNGdJQ0FnZG1GeUlITmxjbWxoYkdsNlpXUlFjbTl3WlhKMGFXVnpPMXh1SUNBZ0lIWmhjaUJoZEhSeWN5QTlJRnRkTzF4dUlDQWdJSFpoY2lCd2NtOXdaWEowYVdWeklEMGdaR1ZtYVc1cGRHbHZiaTV3Y205d1pYSjBhV1Z6TzF4dUlDQWdJSFpoY2lCaFpHUnBkR2x2Ym1Gc1VISnZjR1Z5ZEdsbGN5QTlJR1JsWm1sdWFYUnBiMjR1WVdSa2FYUnBiMjVoYkZCeWIzQmxjblJwWlhNN1hHNGdJQ0FnZG1GeUlIaHRiQ0E5SUdSbFptbHVhWFJwYjI0dWVHMXNPMXh1SUNBZ0lIWmhjaUJ1WVcxbGMzQmhZMlVnUFNCblpYUk9ZVzFsYzNCaFkyVW9lRzFzS1R0Y2JseHVJQ0FnSUdsbUlDaHVZVzFsYzNCaFkyVXBJSHRjYmlBZ0lDQWdJR0YwZEhKekxuQjFjMmdvYm1GdFpYTndZV05sS1R0Y2JpQWdJQ0I5SUNBZ1hHNWNiaUFnSUNCcFppQW9JWEJ5YjNCbGNuUnBaWE1nSmlZZ0lXRmtaR2wwYVc5dVlXeFFjbTl3WlhKMGFXVnpLU0I3SUhKbGRIVnliaUJuWlhSRmNuSnZjazFsYzNOaFoyVW9LVHNnZlZ4dVhHNGdJQ0FnY0hKdmNHVnlkR2xsY3lBOUlIQnliM0JsY25ScFpYTWdmSHdnZTMwN1hHNWNiaUFnSUNCelpYSnBZV3hwZW1Wa1VISnZjR1Z5ZEdsbGN5QTlJRjh1YldGd0tIQnliM0JsY25ScFpYTXNJR1oxYm1OMGFXOXVJQ2h3Y205d0xDQnJaWGtwSUh0Y2JpQWdJQ0FnSUhaaGNpQjRiV3dzSUhKbGMzVnNkRHRjYmx4dUlDQWdJQ0FnYVdZZ0tHbHpVR0Z5WVcwZ0ppWWdjSEp2Y0M1eVpXRmtUMjVzZVNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5YzdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSGh0YkNBOUlIQnliM0F1ZUcxc0lIeDhJSHQ5TzF4dUlDQWdJQ0FnY21WemRXeDBJRDBnWTNKbFlYUmxVMk5vWlcxaFdFMU1LR3RsZVN3Z2NISnZjQ3dnYlc5a1pXeHpMQ0JqYjI1bWFXY3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2VHMXNMbUYwZEhKcFluVjBaU2tnZTF4dUlDQWdJQ0FnSUNCaGRIUnljeTV3ZFhOb0tISmxjM1ZzZENrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBbkp6dGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0I5S1M1cWIybHVLQ2NuS1R0Y2JseHVJQ0FnSUdsbUlDaGhaR1JwZEdsdmJtRnNVSEp2Y0dWeWRHbGxjeWtnZTF4dUlDQWdJQ0FnYzJWeWFXRnNhWHBsWkZCeWIzQmxjblJwWlhNZ0t6MGdKendoTFMwZ1lXUmthWFJwYjI1aGJDQmxiR1Z0Wlc1MGN5QmhiR3h2ZDJWa0lDMHRQaWM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlIZHlZWEJVWVdjb2JtRnRaU3dnYzJWeWFXRnNhWHBsWkZCeWIzQmxjblJwWlhNc0lHRjBkSEp6S1R0Y2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlHZGxkRWx1Wm1sdWFYUmxURzl2Y0UxbGMzTmhaMlVnS0c1aGJXVXNJR3h2YjNCVWJ5a2dlMXh1SUNBZ0lISmxkSFZ5YmlCM2NtRndWR0ZuS0c1aGJXVXNJQ2M4SVMwdElFbHVabWx1YVhSbElHeHZiM0FnSkhKbFpqb25JQ3NnYkc5dmNGUnZJQ3NnSnlBdExUNG5LVHRjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdkbGRFVnljbTl5VFdWemMyRm5aU0FvWkdWMFlXbHNjeWtnZTF4dUlDQWdJR1JsZEdGcGJITWdQU0JrWlhSaGFXeHpJRDhnSnpvZ0p5QXJJR1JsZEdGcGJITWdPaUFuSnp0Y2JpQWdJQ0J5WlhSMWNtNGdKendoTFMwZ2FXNTJZV3hwWkNCWVRVd25JQ3NnWkdWMFlXbHNjeUFySUNjZ0xTMCtKenRjYmlBZ2ZWeHVYRzRnSUdaMWJtTjBhVzl1SUdOeVpXRjBaVk5qYUdWdFlWaE5UQ0FvYm1GdFpTd2daR1ZtYVc1cGRHbHZiaXdnYlc5a1pXeHpMQ0JqYjI1bWFXY3BJSHRjYmlBZ0lDQjJZWElnSkhKbFppQTlJRjh1YVhOUFltcGxZM1FvWkdWbWFXNXBkR2x2YmlrZ1B5QmtaV1pwYm1sMGFXOXVMaVJ5WldZZ09pQnVkV3hzTzF4dUlDQWdJSFpoY2lCdmRYUndkWFFzSUdsdVpHVjRPMXh1SUNBZ0lHTnZibVpwWnlBOUlHTnZibVpwWnlCOGZDQjdmVHRjYmlBZ0lDQmpiMjVtYVdjdWJXOWtaV3h6Vkc5SloyNXZjbVVnUFNCamIyNW1hV2N1Ylc5a1pXeHpWRzlKWjI1dmNtVWdmSHdnVzEwN1hHNGdJQ0JjYmlBZ0lDQjJZWElnWkdWelkzSnBjSFJ2Y2lBOUlGOHVhWE5UZEhKcGJtY29KSEpsWmlrZ1B5Qm5aWFJFWlhOamNtbHdkRzl5UW5sU1pXWW9KSEpsWml3Z2JtRnRaU3dnYlc5a1pXeHpMQ0JqYjI1bWFXY3BYRzRnSUNBZ0lDQWdJRG9nWjJWMFJHVnpZM0pwY0hSdmNpaHVZVzFsTENCa1pXWnBibWwwYVc5dUxDQnRiMlJsYkhNc0lHTnZibVpwWnlrN1hHNGdJQ0FnWEc0Z0lDQWdhV1lnS0NGa1pYTmpjbWx3ZEc5eUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1oyVjBSWEp5YjNKTlpYTnpZV2RsS0NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYzNkcGRHTm9JQ2hrWlhOamNtbHdkRzl5TG5SNWNHVXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0oyRnljbUY1SnpwY2JpQWdJQ0FnSUNBZ2IzVjBjSFYwSUQwZ1kzSmxZWFJsUVhKeVlYbFlUVXdvWkdWelkzSnBjSFJ2Y2lrN0lHSnlaV0ZyTzF4dUlDQWdJQ0FnWTJGelpTQW5iMkpxWldOMEp6cGNiaUFnSUNBZ0lDQWdiM1YwY0hWMElEMGdZM0psWVhSbFQySnFaV04wV0UxTUtHUmxjMk55YVhCMGIzSXBPeUJpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjJ4dmIzQW5PbHh1SUNBZ0lDQWdJQ0J2ZFhSd2RYUWdQU0JuWlhSSmJtWnBibWwwWlV4dmIzQk5aWE56WVdkbEtHUmxjMk55YVhCMGIzSXVibUZ0WlN3Z1pHVnpZM0pwY0hSdmNpNWpiMjVtYVdjdWJHOXZjRlJ2S1RzZ1luSmxZV3M3WEc0Z0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0J2ZFhSd2RYUWdQU0JqY21WaGRHVlFjbWx0YVhScGRtVllUVXdvWkdWelkzSnBjSFJ2Y2lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDUnlaV1lnSmlZZ1pHVnpZM0pwY0hSdmNpNTBlWEJsSUNFOVBTQW5iRzl2Y0NjcElIdGNiaUFnSUNBZ0lHbHVaR1Y0SUQwZ1kyOXVabWxuTG0xdlpHVnNjMVJ2U1dkdWIzSmxMbWx1WkdWNFQyWW9KSEpsWmlrN1hHNGdJQ0FnSUNCcFppQW9hVzVrWlhnZ1BpQXRNU2tnZTF4dUlDQWdJQ0FnSUNCamIyNW1hV2N1Ylc5a1pXeHpWRzlKWjI1dmNtVXVjM0JzYVdObEtHbHVaR1Y0TENBeEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnYjNWMGNIVjBPMXh1SUNCOVhHNWNiaUFnWm5WdVkzUnBiMjRnUkdWelkzSnBjSFJ2Y2lBb2JtRnRaU3dnZEhsd1pTd2daR1ZtYVc1cGRHbHZiaXdnYlc5a1pXeHpMQ0JqYjI1bWFXY3BJSHRjYmlBZ0lDQnBaaUFvWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0E4SURRcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lncE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxtTnZibVpwWnlBOUlHTnZibVpwWnlCOGZDQjdmVHRjYmlBZ0lDQjBhR2x6TG1OdmJtWnBaeTV0YjJSbGJITlViMGxuYm05eVpTQTlJSFJvYVhNdVkyOXVabWxuTG0xdlpHVnNjMVJ2U1dkdWIzSmxJSHg4SUZ0ZE8xeHVJQ0FnSUM4dklHNWhiV1VnYVhNZ1lXeHlaV0ZrZVNCelpYUWdZbmtnWjJWMFJHVnpZM0pwY0hSdmNrSjVVbVZtSUc5eUlHZGxkRVJsYzJOeWFYQjBiM0lnWm5WdVkzUnBiMjRnWkdWd1pXNWthVzVuSUc5dUlIUm9aU0IwZVhCbExpQlBibXg1SUhCeVpXWnBlQ3dnYVdZZ2NISmxjMlZ1ZENCcGN5QnVaV1ZrWldRZ2RHOGdZbVVnYzJWMElHaGxjbVVnZkNCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmMzZGhaMmRsY2kxaGNHa3ZjM2RoWjJkbGNpMTFhUzlwYzNOMVpYTXZNalUzTjF4dUlDQWdJSFJvYVhNdWJtRnRaU0E5SUdkbGRGQnlaV1pwZUNodVlXMWxMQ0JrWldacGJtbDBhVzl1TG5odGJDazdYRzRnSUNBZ2RHaHBjeTVrWldacGJtbDBhVzl1SUQwZ1pHVm1hVzVwZEdsdmJqdGNiaUFnSUNCMGFHbHpMbTF2WkdWc2N5QTlJRzF2WkdWc2N6dGNiaUFnSUNCMGFHbHpMblI1Y0dVZ1BTQjBlWEJsTzF4dUlDQjlYRzVjYmlBZ1puVnVZM1JwYjI0Z1oyVjBSR1Z6WTNKcGNIUnZja0o1VW1WbUtDUnlaV1lzSUc1aGJXVXNJRzF2WkdWc2N5d2dZMjl1Wm1sbktTQjdYRzRnSUNBZ2RtRnlJRzF2WkdWc1ZIbHdaU0E5SUhOcGJYQnNaVkpsWmlna2NtVm1LVHRjYmlBZ0lDQjJZWElnYlc5a1pXd2dQU0J0YjJSbGJITmJiVzlrWld4VWVYQmxYU0I4ZkNCN2ZUdGNiaUFnSUNCMllYSWdkSGx3WlNBOUlHMXZaR1ZzTG1SbFptbHVhWFJwYjI0Z0ppWWdiVzlrWld3dVpHVm1hVzVwZEdsdmJpNTBlWEJsSUQ4Z2JXOWtaV3d1WkdWbWFXNXBkR2x2Ymk1MGVYQmxJRG9nSjI5aWFtVmpkQ2M3WEc0Z0lDQWdMeThnU1dZZ2JXOWtaV3dnWkdWbWFXNXBkR2x2YmlCNGJXd2dibUZ0WlNCcGN5QndjbVZ6Wlc1MExDQjBhR1Z1SUhSb1lYUWdkMmxzYkNCaVpTQndjbVZtWlhKeVpXUWdiM1psY2lCdGIyUmxiQ0J1WVcxbExpQlVhR2x6SUdseklIUm9aU0JqWVhObElHOW1JSEJ5WldabGNuSnBibWNnV0cxc1JXeGxiV1Z1ZENCdVlXMWxJRzkyWlhJZ1dHMXNVbTl2ZEVWc1pXMWxiblFnYm1GdFpTQnBaaUJZYld4RmJHVnRaVzUwSUc1aGJXVWdhWE1nY0hKdmRtbGtaV1FnZkNCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmMzZGhaMmRsY2kxaGNHa3ZjM2RoWjJkbGNpMTFhUzlwYzNOMVpYTXZNalUzTjF4dUlDQWdJR2xtS0cxdlpHVnNMbVJsWm1sdWFYUnBiMjRnSmlZZ2JXOWtaV3d1WkdWbWFXNXBkR2x2Ymk1NGJXd2dKaVlnYlc5a1pXd3VaR1ZtYVc1cGRHbHZiaTU0Yld3dWJtRnRaU2tnZTF4dUlDQWdJQ0FnSUNCdVlXMWxJRDBnYm1GdFpTQjhmQ0J0YjJSbGJDNWtaV1pwYm1sMGFXOXVMbmh0YkM1dVlXMWxJSHg4SUcxdlpHVnNMbTVoYldVN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2SUdWc2MyVWdiMjVzZVNCdGIyUmxiQ0J1WVcxbElIZHBiR3dnWW1VZ1kyOXVjMmxrWlhKbFpDQm1iM0lnWkdWMFpYSnRhVzVoZEdsdmJpQjhJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzl6ZDJGbloyVnlMV0Z3YVM5emQyRm5aMlZ5TFhWcEwybHpjM1ZsY3k4eU5UYzNYRzRnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUc1aGJXVWdQU0J1WVcxbElIeDhJRzF2WkdWc0xtNWhiV1U3WEc0Z0lDQWdmVnh1SUNBZ0lGeHVJQ0FnSUdsbUlDaGpiMjVtYVdjdWJXOWtaV3h6Vkc5SloyNXZjbVV1YVc1a1pYaFBaaWdrY21WbUtTQStJQzB4S1NCN1hHNGdJQ0FnSUNCMGVYQmxJRDBnSjJ4dmIzQW5PMXh1SUNBZ0lDQWdZMjl1Wm1sbkxteHZiM0JVYnlBOUlHMXZaR1ZzVkhsd1pUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWTI5dVptbG5MbTF2WkdWc2MxUnZTV2R1YjNKbExuQjFjMmdvSkhKbFppazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0Z0YjJSbGJDNWtaV1pwYm1sMGFXOXVLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJFWlhOamNtbHdkRzl5S0c1aGJXVXNJSFI1Y0dVc0lHMXZaR1ZzTG1SbFptbHVhWFJwYjI0c0lHMXZaR1ZzY3l3Z1kyOXVabWxuS1RzZ0lDQWdYRzRnSUgxY2JseHVJQ0JtZFc1amRHbHZiaUJuWlhSRVpYTmpjbWx3ZEc5eUlDaHVZVzFsTENCa1pXWnBibWwwYVc5dUxDQnRiMlJsYkhNc0lHTnZibVpwWnlsN1hHNGdJQ0FnZG1GeUlIUjVjR1VnUFNCa1pXWnBibWwwYVc5dUxuUjVjR1VnZkh3Z0oyOWlhbVZqZENjN1hHNGdJQ0FnTHk4Z1NXWWdaR1ZtYVc1cGRHbHZiaUI0Yld3Z2JtRnRaU0JwY3lCd2NtVnpaVzUwTENCMGFHVnVJSFJvWVhRZ2QybHNiQ0JpWlNCd2NtVm1aWEp5WldRZ2IzWmxjaUJ1WVcxbElId2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM04zWVdkblpYSXRZWEJwTDNOM1lXZG5aWEl0ZFdrdmFYTnpkV1Z6THpJMU56ZGNiaUFnSUNCcFppaGtaV1pwYm1sMGFXOXVMbmh0YkNBbUppQmtaV1pwYm1sMGFXOXVMbmh0YkM1dVlXMWxLU0I3WEc0Z0lDQWdJQ0FnSUc1aGJXVWdQU0JrWldacGJtbDBhVzl1TG5odGJDNXVZVzFsSUh4OElHNWhiV1U3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2doWkdWbWFXNXBkR2x2YmlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QkVaWE5qY21sd2RHOXlLRzVoYldVc0lIUjVjR1VzSUdSbFptbHVhWFJwYjI0c0lHMXZaR1ZzY3l3Z1kyOXVabWxuS1R0Y2JpQWdmVnh1WEc0Z0lHWjFibU4wYVc5dUlHTnlaV0YwWlZoTlRGTmhiWEJzWlNBb2JtRnRaU3dnWkdWbWFXNXBkR2x2Yml3Z2JXOWtaV3h6TENCcGMxQmhjbUZ0S1NCN1hHNGdJQ0FnZG1GeUlIQnliMnh2WnlBOUlDYzhQM2h0YkNCMlpYSnphVzl1UFZ3aU1TNHdYQ0kvUGljN1hHNWNiaUFnSUNCeVpYUjFjbTRnWm05eWJXRjBXRzFzS0hCeWIyeHZaeUFySUdOeVpXRjBaVk5qYUdWdFlWaE5UQ2h1WVcxbExDQmtaV1pwYm1sMGFXOXVMQ0J0YjJSbGJITXNJSHNnYVhOUVlYSmhiVG9nYVhOUVlYSmhiU0I5SUNrcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lHZGxkRTF2WkdWc1UybG5ibUYwZFhKbE9pQm5aWFJOYjJSbGJGTnBaMjVoZEhWeVpTeGNiaUFnSUNBZ0lHTnlaV0YwWlVwVFQwNVRZVzF3YkdVNklHTnlaV0YwWlVwVFQwNVRZVzF3YkdVc1hHNGdJQ0FnSUNCblpYUlFZWEpoYldWMFpYSk5iMlJsYkZOcFoyNWhkSFZ5WlRvZ1oyVjBVR0Z5WVcxbGRHVnlUVzlrWld4VGFXZHVZWFIxY21Vc1hHNGdJQ0FnSUNCamNtVmhkR1ZRWVhKaGJXVjBaWEpLVTA5T1UyRnRjR3hsT2lCamNtVmhkR1ZRWVhKaGJXVjBaWEpLVTA5T1UyRnRjR3hsTEZ4dUlDQWdJQ0FnWTNKbFlYUmxVMk5vWlcxaFdFMU1PaUJqY21WaGRHVlRZMmhsYldGWVRVd3NYRzRnSUNBZ0lDQmpjbVZoZEdWWVRVeFRZVzF3YkdVNklHTnlaV0YwWlZoTlRGTmhiWEJzWlN4Y2JpQWdJQ0FnSUdkbGRGQnlhVzFwZEdsMlpWTnBaMjVoZEhWeVpUb2daMlYwVUhKcGJXbDBhWFpsVTJsbmJtRjBkWEpsWEc0Z0lIMDdYRzVjYm4wcEtDazdYRzRpTENJbmRYTmxJSE4wY21samRDYzdYRzVjYmxOM1lXZG5aWEpWYVM1V2FXVjNjeTVRYjNCMWNGWnBaWGNnUFNCQ1lXTnJZbTl1WlM1V2FXVjNMbVY0ZEdWdVpDaDdYRzRnSUNBZ1pYWmxiblJ6T2lCN1hHNGdJQ0FnSUNBZ0lDZGpiR2xqYXlBdVlYQnBMWEJ2Y0hWd0xXTmhibU5sYkNjNklDZGpZVzVqWld4RGJHbGpheWRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdkR1Z0Y0d4aGRHVTZJRWhoYm1Sc1pXSmhjbk11ZEdWdGNHeGhkR1Z6TG5CdmNIVndMRnh1SUNBZ0lHTnNZWE56VG1GdFpUb2dKMkZ3YVMxd2IzQjFjQzFrYVdGc2IyY25MRnh1WEc0Z0lDQWdjMlZzWldOMGIzSnpPaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuUmxiblE2SUNjdVlYQnBMWEJ2Y0hWd0xXTnZiblJsYm5RbkxGeHVJQ0FnSUNBZ0lDQnRZV2x1SUNBZ09pQW5JM04zWVdkblpYSXRkV2t0WTI5dWRHRnBibVZ5SjF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JwYm1sMGFXRnNhWHBsT2lCbWRXNWpkR2x2YmlncGUxeHVJQ0FnSUNBZ0lDQjBhR2x6TGlSbGJDNW9kRzFzS0hSb2FYTXVkR1Z0Y0d4aGRHVW9kR2hwY3k1dGIyUmxiQ2twTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrS0hSb2FYTXVjMlZzWldOMGIzSnpMbU52Ym5SbGJuUXBMbUZ3Y0dWdVpDaDBhR2x6TG0xdlpHVnNMbU52Ym5SbGJuUXBPMXh1SUNBZ0lDQWdJQ0FrS0hSb2FYTXVjMlZzWldOMGIzSnpMbTFoYVc0cExtWnBjbk4wS0NrdVlYQndaVzVrS0hSb2FYTXVaV3dwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5vYjNkUWIzQjFjQ2dwTzF4dVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNBZ0lIMHNYRzVjYmlBZ0lDQnphRzkzVUc5d2RYQTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTRrWld3dWMyaHZkeWdwTzF4dUlDQWdJSDBzWEc1Y2JpQWdJQ0JqWVc1alpXeERiR2xqYXpvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuSmxiVzkyWlNncE8xeHVJQ0FnSUgxY2JseHVmU2s3WEc0aUxDSW5kWE5sSUhOMGNtbGpkQ2M3WEc1Y2JsTjNZV2RuWlhKVmFTNVdhV1YzY3k1U1pYTnZkWEpqWlZacFpYY2dQU0JDWVdOclltOXVaUzVXYVdWM0xtVjRkR1Z1WkNoN1hHNGdJR2x1YVhScFlXeHBlbVU2SUdaMWJtTjBhVzl1S0c5d2RITXBJSHRjYmlBZ0lDQnZjSFJ6SUQwZ2IzQjBjeUI4ZkNCN2ZUdGNiaUFnSUNCMGFHbHpMbkp2ZFhSbGNpQTlJRzl3ZEhNdWNtOTFkR1Z5TzF4dUlDQWdJSFJvYVhNdVlYVjBhSE1nUFNCdmNIUnpMbUYxZEdoek8xeHVJQ0FnSUdsbUlDZ25KeUE5UFQwZ2RHaHBjeTV0YjJSbGJDNWtaWE5qY21sd2RHbHZiaWtnZTF4dUlDQWdJQ0FnZEdocGN5NXRiMlJsYkM1a1pYTmpjbWx3ZEdsdmJpQTlJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoMGFHbHpMbTF2WkdWc0xtUmxjMk55YVhCMGFXOXVLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtMXZaR1ZzTG5OMWJXMWhjbmtnUFNCMGFHbHpMbTF2WkdWc0xtUmxjMk55YVhCMGFXOXVPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbTUxYldKbGNpQTlJREE3WEc0Z0lIMHNYRzVjYmlBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlncGUxeHVJQ0FnSUhaaGNpQnRaWFJvYjJSeklEMGdlMzA3WEc1Y2JseHVJQ0FnSUNRb2RHaHBjeTVsYkNrdWFIUnRiQ2hJWVc1a2JHVmlZWEp6TG5SbGJYQnNZWFJsY3k1eVpYTnZkWEpqWlNoMGFHbHpMbTF2WkdWc0tTazdYRzVjYmlBZ0lDQXZMeUJTWlc1a1pYSWdaV0ZqYUNCdmNHVnlZWFJwYjI1Y2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Ec2dhU0E4SUhSb2FYTXViVzlrWld3dWIzQmxjbUYwYVc5dWMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQjJZWElnYjNCbGNtRjBhVzl1SUQwZ2RHaHBjeTV0YjJSbGJDNXZjR1Z5WVhScGIyNXpRWEp5WVhsYmFWMDdYRzRnSUNBZ0lDQjJZWElnWTI5MWJuUmxjaUE5SURBN1hHNGdJQ0FnSUNCMllYSWdhV1FnUFNCdmNHVnlZWFJwYjI0dWJtbGphMjVoYldVN1hHNWNiaUFnSUNBZ0lIZG9hV3hsSUNoMGVYQmxiMllnYldWMGFHOWtjMXRwWkYwZ0lUMDlJQ2QxYm1SbFptbHVaV1FuS1NCN1hHNGdJQ0FnSUNBZ0lHbGtJRDBnYVdRZ0t5QW5YeWNnS3lCamIzVnVkR1Z5TzF4dUlDQWdJQ0FnSUNCamIzVnVkR1Z5SUNzOUlERTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJRzFsZEdodlpITmJhV1JkSUQwZ2IzQmxjbUYwYVc5dU8xeHVYRzRnSUNBZ0lDQnZjR1Z5WVhScGIyNHVibWxqYTI1aGJXVWdQU0JwWkR0Y2JpQWdJQ0FnSUc5d1pYSmhkR2x2Ymk1d1lYSmxiblJKWkNBOUlIUm9hWE11Ylc5a1pXd3VhV1E3WEc0Z0lDQWdJQ0J2Y0dWeVlYUnBiMjR1WkdWbWFXNXBkR2x2Ym5NZ1BTQjBhR2x6TG0xdlpHVnNMbVJsWm1sdWFYUnBiMjV6T3lBdkx5QnRZV3RsSUVwemIyNGdVMk5vWlcxaElHRjJZV2xzWVdKc1pTQm1iM0lnU2xOdmJrVmthWFJ2Y2lCcGJpQjBhR2x6SUc5d1pYSmhkR2x2Ymx4dUlDQWdJQ0FnZEdocGN5NWhaR1JQY0dWeVlYUnBiMjRvYjNCbGNtRjBhVzl1S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0FrS0NjdWRHOW5aMnhsUlc1a2NHOXBiblJNYVhOMEp5d2dkR2hwY3k1bGJDa3VZMnhwWTJzb2RHaHBjeTVqWVd4c1JHOWpjeTVpYVc1a0tIUm9hWE1zSUNkMGIyZG5iR1ZGYm1Sd2IybHVkRXhwYzNSR2IzSlNaWE52ZFhKalpTY3BLVHRjYmlBZ0lDQWtLQ2N1WTI5c2JHRndjMlZTWlhOdmRYSmpaU2NzSUhSb2FYTXVaV3dwTG1Oc2FXTnJLSFJvYVhNdVkyRnNiRVJ2WTNNdVltbHVaQ2gwYUdsekxDQW5ZMjlzYkdGd2MyVlBjR1Z5WVhScGIyNXpSbTl5VW1WemIzVnlZMlVuS1NrN1hHNGdJQ0FnSkNnbkxtVjRjR0Z1WkZKbGMyOTFjbU5sSnl3Z2RHaHBjeTVsYkNrdVkyeHBZMnNvZEdocGN5NWpZV3hzUkc5amN5NWlhVzVrS0hSb2FYTXNJQ2RsZUhCaGJtUlBjR1Z5WVhScGIyNXpSbTl5VW1WemIzVnlZMlVuS1NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlN4Y2JseHVJQ0JoWkdSUGNHVnlZWFJwYjI0NklHWjFibU4wYVc5dUtHOXdaWEpoZEdsdmJpa2dlMXh1WEc0Z0lDQWdiM0JsY21GMGFXOXVMbTUxYldKbGNpQTlJSFJvYVhNdWJuVnRZbVZ5TzF4dVhHNGdJQ0FnTHk4Z1VtVnVaR1Z5SUdGdUlHOXdaWEpoZEdsdmJpQmhibVFnWVdSa0lHbDBJSFJ2SUc5d1pYSmhkR2x2Ym5NZ2JHbGNiaUFnSUNCMllYSWdiM0JsY21GMGFXOXVWbWxsZHlBOUlHNWxkeUJUZDJGbloyVnlWV2t1Vm1sbGQzTXVUM0JsY21GMGFXOXVWbWxsZHloN1hHNGdJQ0FnSUNCdGIyUmxiRG9nYjNCbGNtRjBhVzl1TEZ4dUlDQWdJQ0FnY205MWRHVnlPaUIwYUdsekxuSnZkWFJsY2l4Y2JpQWdJQ0FnSUhSaFowNWhiV1U2SUNkc2FTY3NYRzRnSUNBZ0lDQmpiR0Z6YzA1aGJXVTZJQ2RsYm1Sd2IybHVkQ2NzWEc0Z0lDQWdJQ0J6ZDJGbloyVnlUM0IwYVc5dWN6b2dkR2hwY3k1dmNIUnBiMjV6TG5OM1lXZG5aWEpQY0hScGIyNXpMRnh1SUNBZ0lDQWdZWFYwYUhNNklIUm9hWE11WVhWMGFITmNiaUFnSUNCOUtUdGNibHh1SUNBZ0lDUW9KeTVsYm1Sd2IybHVkSE1uTENBa0tIUm9hWE11Wld3cEtTNWhjSEJsYm1Rb2IzQmxjbUYwYVc5dVZtbGxkeTV5Wlc1a1pYSW9LUzVsYkNrN1hHNWNiaUFnSUNCMGFHbHpMbTUxYldKbGNpc3JPMXh1WEc0Z0lIMHNYRzRnSUM4dklFZGxibVZ5YVdNZ1JYWmxiblFnYUdGdVpHeGxjaUFvWUVSdlkzTmdJR2x6SUdkc2IySmhiQ2xjYmx4dVhHNGdJR05oYkd4RWIyTnpPaUJtZFc1amRHbHZiaWhtYms1aGJXVXNJR1VwSUh0Y2JpQWdJQ0JsTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3WEc0Z0lDQWdSRzlqYzF0bWJrNWhiV1ZkS0dVdVkzVnljbVZ1ZEZSaGNtZGxkQzVuWlhSQmRIUnlhV0oxZEdVb0oyUmhkR0V0YVdRbktTazdYRzRnSUgxY2JuMHBPMXh1SWl3aUozVnpaU0J6ZEhKcFkzUW5PMXh1WEc1VGQyRm5aMlZ5VldrdVZtbGxkM011VW1WemNHOXVjMlZEYjI1MFpXNTBWSGx3WlZacFpYY2dQU0JDWVdOclltOXVaUzVXYVdWM0xtVjRkR1Z1WkNoN1hHNGdJR2x1YVhScFlXeHBlbVU2SUdaMWJtTjBhVzl1S0NsN2ZTeGNibHh1SUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1S0NsN1hHNGdJQ0FnZEdocGN5NXRiMlJsYkM1eVpYTndiMjV6WlVOdmJuUmxiblJVZVhCbFNXUWdQU0FuY21OMEp5QXJJRTFoZEdndWNtRnVaRzl0S0NrN1hHNGdJQ0FnSkNoMGFHbHpMbVZzS1M1b2RHMXNLRWhoYm1Sc1pXSmhjbk11ZEdWdGNHeGhkR1Z6TG5KbGMzQnZibk5sWDJOdmJuUmxiblJmZEhsd1pTaDBhR2x6TG0xdlpHVnNLU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibjBwT3lJc0lpZDFjMlVnYzNSeWFXTjBKenRjYmx4dVUzZGhaMmRsY2xWcExsWnBaWGR6TGxOcFoyNWhkSFZ5WlZacFpYY2dQU0JDWVdOclltOXVaUzVXYVdWM0xtVjRkR1Z1WkNoN1hHNGdJR1YyWlc1MGN6b2dlMXh1SUNBZ0lDZGpiR2xqYXlCaExtUmxjMk55YVhCMGFXOXVMV3hwYm1zbklDQWdJQ0FnSURvZ0ozTjNhWFJqYUZSdlJHVnpZM0pwY0hScGIyNG5MRnh1SUNBZ0lDZGpiR2xqYXlCaExuTnVhWEJ3WlhRdGJHbHVheWNnSUNBZ0lDQWdJQ0FnSURvZ0ozTjNhWFJqYUZSdlUyNXBjSEJsZENjc1hHNGdJQ0FnSjIxdmRYTmxaRzkzYmlBdWMyNXBjSEJsZEY5cWMyOXVKeUFnSUNBZ0lDQWdJQ0E2SUNkcWMyOXVVMjVwY0hCbGRFMXZkWE5sUkc5M2JpY3NYRzRnSUNBZ0oyMXZkWE5sWkc5M2JpQXVjMjVwY0hCbGRGOTRiV3duSUNBZ0lDQWdJQ0FnSURvZ0ozaHRiRk51YVhCd1pYUk5iM1Z6WlVSdmQyNG5YRzRnSUgwc1hHNWNiaUFnYVc1cGRHbGhiR2w2WlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNCOUxGeHVYRzRnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRvS1h0Y2JseHVJQ0FnSUNRb2RHaHBjeTVsYkNrdWFIUnRiQ2hJWVc1a2JHVmlZWEp6TG5SbGJYQnNZWFJsY3k1emFXZHVZWFIxY21Vb2RHaHBjeTV0YjJSbGJDa3BPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXViVzlrWld3dVpHVm1ZWFZzZEZKbGJtUmxjbWx1WnlBOVBUMGdKMjF2WkdWc0p5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1emQybDBZMmhVYjBSbGMyTnlhWEIwYVc5dUtDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjM2RwZEdOb1ZHOVRibWx3Y0dWMEtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgwc1hHNWNiaUFnTHk4Z2FHRnVaR3hsY2lCbWIzSWdjMmh2ZHlCemFXZHVZWFIxY21WY2JpQWdjM2RwZEdOb1ZHOUVaWE5qY21sd2RHbHZiam9nWm5WdVkzUnBiMjRvWlNsN1hHNGdJQ0FnYVdZZ0tHVXBJSHNnWlM1d2NtVjJaVzUwUkdWbVlYVnNkQ2dwT3lCOVhHNWNiaUFnSUNBa0tDY3VjMjVwY0hCbGRDY3NJQ1FvZEdocGN5NWxiQ2twTG1ocFpHVW9LVHRjYmlBZ0lDQWtLQ2N1WkdWelkzSnBjSFJwYjI0bkxDQWtLSFJvYVhNdVpXd3BLUzV6YUc5M0tDazdYRzRnSUNBZ0pDZ25MbVJsYzJOeWFYQjBhVzl1TFd4cGJtc25MQ0FrS0hSb2FYTXVaV3dwS1M1aFpHUkRiR0Z6Y3lnbmMyVnNaV04wWldRbktUdGNiaUFnSUNBa0tDY3VjMjVwY0hCbGRDMXNhVzVySnl3Z0pDaDBhR2x6TG1Wc0tTa3VjbVZ0YjNabFEyeGhjM01vSjNObGJHVmpkR1ZrSnlrN1hHNGdJSDBzWEc1Y2JpQWdMeThnYUdGdVpHeGxjaUJtYjNJZ2MyaHZkeUJ6WVcxd2JHVmNiaUFnYzNkcGRHTm9WRzlUYm1sd2NHVjBPaUJtZFc1amRHbHZiaWhsS1h0Y2JpQWdJQ0JwWmlBb1pTa2dleUJsTG5CeVpYWmxiblJFWldaaGRXeDBLQ2s3SUgxY2JseHVJQ0FnSUNRb0p5NXpibWx3Y0dWMEp5d2dKQ2gwYUdsekxtVnNLU2t1YzJodmR5Z3BPMXh1SUNBZ0lDUW9KeTVrWlhOamNtbHdkR2x2Ymljc0lDUW9kR2hwY3k1bGJDa3BMbWhwWkdVb0tUdGNiaUFnSUNBa0tDY3VjMjVwY0hCbGRDMXNhVzVySnl3Z0pDaDBhR2x6TG1Wc0tTa3VZV1JrUTJ4aGMzTW9KM05sYkdWamRHVmtKeWs3WEc0Z0lDQWdKQ2duTG1SbGMyTnlhWEIwYVc5dUxXeHBibXNuTENBa0tIUm9hWE11Wld3cEtTNXlaVzF2ZG1WRGJHRnpjeWduYzJWc1pXTjBaV1FuS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJvWVc1a2JHVnlJR1p2Y2lCemJtbHdjR1YwSUhSdklIUmxlSFFnWVhKbFlWeHVJQ0J6Ym1sd2NHVjBWRzlVWlhoMFFYSmxZVG9nWm5WdVkzUnBiMjRvZG1Gc0tTQjdYRzRnSUNBZ2RtRnlJSFJsZUhSQmNtVmhJRDBnSkNnbmRHVjRkR0Z5WldFbkxDQWtLSFJvYVhNdVpXd3VjR0Z5Wlc1MFRtOWtaUzV3WVhKbGJuUk9iMlJsTG5CaGNtVnVkRTV2WkdVcEtUdGNibHh1SUNBZ0lDOHZJRVpwZUNCbWIzSWdZblZuSUdsdUlFbEZJREV3THpFeElIZG9hV05vSUdOaGRYTmxjeUJ3YkdGalpXaHZiR1JsY2lCMFpYaDBJSFJ2SUdKbElHTnZjR2xsWkNCMGJ5QmNJblpoYkhWbFhDSmNiaUFnSUNCcFppQW9KQzUwY21sdEtIUmxlSFJCY21WaExuWmhiQ2dwS1NBOVBUMGdKeWNnZkh3Z2RHVjRkRUZ5WldFdWNISnZjQ2duY0d4aFkyVm9iMnhrWlhJbktTQTlQVDBnZEdWNGRFRnlaV0V1ZG1Gc0tDa3BJSHRjYmlBZ0lDQWdJSFJsZUhSQmNtVmhMblpoYkNoMllXd3BPMXh1SUNBZ0lDQWdMeThnVkU5RVR5QnRiM1psSUhSb2FYTWdZMjlrWlNCdmRYUnphV1JsSUc5bUlIUm9aU0IyYVdWM0lHRnVaQ0JsZUhCdmMyVWdZVzRnWlhabGJuUWdhVzV6ZEdWaFpGeHVJQ0FnSUNBZ2FXWW9JSFJvYVhNdWJXOWtaV3d1YW5OdmJrVmthWFJ2Y2lBbUppQjBhR2x6TG0xdlpHVnNMbXB6YjI1RlpHbDBiM0l1YVhORmJtRmliR1ZrS0NrcGUxeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xdlpHVnNMbXB6YjI1RlpHbDBiM0l1YzJWMFZtRnNkV1VvU2xOUFRpNXdZWEp6WlNoMGFHbHpMbTF2WkdWc0xuTmhiWEJzWlVwVFQwNHBLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnYW5OdmJsTnVhWEJ3WlhSTmIzVnpaVVJ2ZDI0NklHWjFibU4wYVc5dUlDaGxLU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXViVzlrWld3dWFYTlFZWEpoYlNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1VwSUhzZ1pTNXdjbVYyWlc1MFJHVm1ZWFZzZENncE95QjlYRzVjYmlBZ0lDQWdJSFJvYVhNdWMyNXBjSEJsZEZSdlZHVjRkRUZ5WldFb2RHaHBjeTV0YjJSbGJDNXpZVzF3YkdWS1UwOU9LVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnZUcxc1UyNXBjSEJsZEUxdmRYTmxSRzkzYmpvZ1puVnVZM1JwYjI0Z0tHVXBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXRiMlJsYkM1cGMxQmhjbUZ0S1NCN1hHNGdJQ0FnSUNCcFppQW9aU2tnZXlCbExuQnlaWFpsYm5SRVpXWmhkV3gwS0NrN0lIMWNibHh1SUNBZ0lDQWdkR2hwY3k1emJtbHdjR1YwVkc5VVpYaDBRWEpsWVNoMGFHbHpMbTF2WkdWc0xuTmhiWEJzWlZoTlRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OUtUc2lMQ0luZFhObElITjBjbWxqZENjN1hHNWNibE4zWVdkblpYSlZhUzVXYVdWM2N5NVRkR0YwZFhORGIyUmxWbWxsZHlBOUlFSmhZMnRpYjI1bExsWnBaWGN1WlhoMFpXNWtLSHRjYmlBZ2FXNXBkR2xoYkdsNlpUb2dablZ1WTNScGIyNGdLRzl3ZEhNcElIdGNiaUFnSUNCMGFHbHpMbTl3ZEdsdmJuTWdQU0J2Y0hSeklIeDhJSHQ5TzF4dUlDQWdJSFJvYVhNdWNtOTFkR1Z5SUQwZ2RHaHBjeTV2Y0hScGIyNXpMbkp2ZFhSbGNqdGNiaUFnZlN4Y2JseHVJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVLQ2w3WEc0Z0lDQWdkbUZ5SUhKbGMzQnZibk5sVFc5a1pXd3NJSEpsYzNCdmJuTmxUVzlrWld4V2FXVjNPMXh1SUNBZ0lIWmhjaUIyWVd4MVpTQTlJSFJvYVhNdWNtOTFkR1Z5TG1Gd2FTNXRiMlJsYkhOYmRHaHBjeTV0YjJSbGJDNXlaWE53YjI1elpVMXZaR1ZzWFR0Y2JpQWdJQ0FrS0hSb2FYTXVaV3dwTG1oMGJXd29TR0Z1Wkd4bFltRnljeTUwWlcxd2JHRjBaWE11YzNSaGRIVnpYMk52WkdVb2RHaHBjeTV0YjJSbGJDa3BPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVjbTkxZEdWeUxtRndhUzV0YjJSbGJITXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb2RHaHBjeTV0YjJSbGJDNXlaWE53YjI1elpVMXZaR1ZzS1NrZ2UxeHVJQ0FnSUNBZ2NtVnpjRzl1YzJWTmIyUmxiQ0E5SUh0Y2JpQWdJQ0FnSUNBZ2MyRnRjR3hsU2xOUFRqb2dTbE5QVGk1emRISnBibWRwWm5rb1UzZGhaMmRsY2xWcExuQmhjblJwWVd4ekxuTnBaMjVoZEhWeVpTNWpjbVZoZEdWS1UwOU9VMkZ0Y0d4bEtIWmhiSFZsS1N3Z2RtOXBaQ0F3TENBeUtTeGNiaUFnSUNBZ0lDQWdjMkZ0Y0d4bFdFMU1PaUIwYUdsekxtMXZaR1ZzTG1seldFMU1JRDhnVTNkaFoyZGxjbFZwTG5CaGNuUnBZV3h6TG5OcFoyNWhkSFZ5WlM1amNtVmhkR1ZZVFV4VFlXMXdiR1VvSnljc0lIUm9hWE11Ylc5a1pXd3VjMk5vWlcxaExDQjBhR2x6TG5KdmRYUmxjaTVoY0drdWJXOWtaV3h6S1NBNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNCcGMxQmhjbUZ0T2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnYzJsbmJtRjBkWEpsT2lCVGQyRm5aMlZ5VldrdWNHRnlkR2xoYkhNdWMybG5ibUYwZFhKbExtZGxkRTF2WkdWc1UybG5ibUYwZFhKbEtIUm9hWE11Ylc5a1pXd3VjbVZ6Y0c5dWMyVk5iMlJsYkN3Z2RtRnNkV1VzSUhSb2FYTXVjbTkxZEdWeUxtRndhUzV0YjJSbGJITXBMRnh1SUNBZ0lDQWdJQ0JrWldaaGRXeDBVbVZ1WkdWeWFXNW5PaUIwYUdsekxtMXZaR1ZzTG1SbFptRjFiSFJTWlc1a1pYSnBibWRjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxjM0J2Ym5ObFRXOWtaV3dnUFNCN1hHNGdJQ0FnSUNBZ0lITnBaMjVoZEhWeVpUb2dVM2RoWjJkbGNsVnBMbkJoY25ScFlXeHpMbk5wWjI1aGRIVnlaUzVuWlhSUWNtbHRhWFJwZG1WVGFXZHVZWFIxY21Vb2RHaHBjeTV0YjJSbGJDNXpZMmhsYldFcFhHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGMzQnZibk5sVFc5a1pXeFdhV1YzSUQwZ2JtVjNJRk4zWVdkblpYSlZhUzVXYVdWM2N5NVRhV2R1WVhSMWNtVldhV1YzS0h0dGIyUmxiRG9nY21WemNHOXVjMlZOYjJSbGJDd2dkR0ZuVG1GdFpUb2dKMlJwZGlkOUtUdGNiaUFnSUNBa0tDY3ViVzlrWld3dGMybG5ibUYwZFhKbEp5d2dkR2hwY3k0a1pXd3BMbUZ3Y0dWdVpDaHlaWE53YjI1elpVMXZaR1ZzVm1sbGR5NXlaVzVrWlhJb0tTNWxiQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibjBwT3lKZGZRPT0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy9tYWluL3Jlc291cmNlcy9zd2FnZ2VyLXVpL2Rpc3Qvc3dhZ2dlci11aS5taW4uanMgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWkubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNDE3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L3N3YWdnZXItdWkubWluLmpzCkBAIC0wLDAgKzEsMTUgQEAKKyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtlLmhpc3Rvcnk9ZS5oaXN0b3J5fHxbXSxlLmhpc3RvcnkucHVzaChhcmd1bWVudHMpLHRoaXMuY29uc29sZSYmY29uc29sZS5sb2coQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKVswXSl9IWZ1bmN0aW9uKCl7dmFyIGU9SGFuZGxlYmFycy50ZW1wbGF0ZSx0PUhhbmRsZWJhcnMudGVtcGxhdGVzPUhhbmRsZWJhcnMudGVtcGxhdGVzfHx7fTt0LmFwaWtleV9hdXRoPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4nICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXlfYXV0aF9fdmFsdWUiPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC52YWx1ZTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvc3Bhbj5cbiJ9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nICAgICAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj0iYXBpX2tleSIgY2xhc3M9ImF1dGhfaW5wdXQgaW5wdXRfYXBpS2V5X2VudHJ5IiBuYW1lPSJhcGlLZXkiIHR5cGU9InRleHQiLz5cbid9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4nPGRpdiBjbGFzcz0ia2V5X2lucHV0X2NvbnRhaW5lciI+XG4gICAgPGgzIGNsYXNzPSJhdXRoX190aXRsZSI+QXBpIGtleSBhdXRob3JpemF0aW9uPC9oMz5cbiAgICA8ZGl2IGNsYXNzPSJhdXRoX19kZXNjcmlwdGlvbiI+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZGVzY3JpcHRpb246dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyc8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJrZXlfYXV0aF9fZmllbGQiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleV9hdXRoX19sYWJlbCI+bmFtZTo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5X2F1dGhfX3ZhbHVlIj4nKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ia2V5X2F1dGhfX2ZpZWxkIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXlfYXV0aF9fbGFiZWwiPmluOjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXlfYXV0aF9fdmFsdWUiPicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3RbImluIl06dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ia2V5X2F1dGhfX2ZpZWxkIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXlfYXV0aF9fbGFiZWwiPnZhbHVlOjwvc3Bhbj5cbicrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5pc0xvZ291dDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDMsaSwwKSxkYXRhOml9KSk/YToiIikrIiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJ9LHVzZURhdGE6ITB9KSx0LmF1dGhfYnV0dG9uPWUoe2NvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGEgY2xhc3M9J2F1dGhvcml6ZV9fYnRuJyBocmVmPVwiI1wiIGRhdGEtc3ctdHJhbnNsYXRlPkF1dGhvcml6ZTwvYT5cbiJ9LHVzZURhdGE6ITB9KSx0LmF1dGhfYnV0dG9uX29wZXJhdGlvbj1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiAgICAgICAgYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ2luXG4ifSwzOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiAgICAgICAgYXV0aG9yaXplX19idG5fb3BlcmF0aW9uX2xvZ291dFxuIn0sNTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybicgICAgICAgIDx1bCBjbGFzcz0iYXV0aG9yaXplLXNjb3BlcyI+XG4nKyhudWxsIT0oYT1uLmVhY2guY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LnNjb3Blczp0LHtuYW1lOiJlYWNoIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg2LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyIgICAgICAgIDwvdWw+XG4ifSw2OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuJyAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImF1dGhvcml6ZV9fc2NvcGUiIHRpdGxlPSInKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LmRlc2NyaXB0aW9uOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJyI+JysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5zY29wZTp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L2xpPlxuIn0sY29tcGlsZXI6WzcsIj49IDQuMC4wIl0sbWFpbjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9O3JldHVybic8ZGl2IGNsYXNzPSJhdXRob3JpemVfX2J0biBhdXRob3JpemVfX2J0bl9vcGVyYXRpb25cbicrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5pc0xvZ291dDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDMsaSwwKSxkYXRhOml9KSk/YToiIikrJyI+XG4nKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3Quc2NvcGVzOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg1LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyI8L2Rpdj5cbiJ9LHVzZURhdGE6ITB9KSx0LmF1dGhfdmlldz1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuJyAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYXV0aF9fYnV0dG9uIGF1dGhfc3VibWl0X19idXR0b24iIGRhdGEtc3ctdHJhbnNsYXRlPkF1dGhvcml6ZTwvYnV0dG9uPlxuJ30sMzpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybicgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImF1dGhfX2J1dHRvbiBhdXRoX2xvZ291dF9fYnV0dG9uIiBkYXRhLXN3LXRyYW5zbGF0ZT5Mb2dvdXQ8L2J1dHRvbj5cbid9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fTtyZXR1cm4nPGRpdiBjbGFzcz0iYXV0aF9jb250YWluZXIiPlxuXG4gICAgPGRpdiBjbGFzcz0iYXV0aF9pbm5lciI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0iYXV0aF9zdWJtaXQiPlxuJysobnVsbCE9KGE9bi51bmxlc3MuY2FsbChvLG51bGwhPXQ/dC5pc0xvZ291dDp0LHtuYW1lOiJ1bmxlc3MiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5pc0F1dGhvcml6ZWQ6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDMsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgICA8L2Rpdj5cblxuPC9kaXY+XG4ifSx1c2VEYXRhOiEwfSksdC5iYXNpY19hdXRoPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iIC0gYXV0aG9yaXplZCJ9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4nICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYXNpY19hdXRoX192YWx1ZSI+JysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QudXNlcm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9zcGFuPlxuIn0sNTpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybicgICAgICAgICAgICAgICAgPGlucHV0IHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJ1c2VybmFtZSIgY2xhc3M9ImJhc2ljX2F1dGhfX3VzZXJuYW1lIGF1dGhfaW5wdXQiIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ0ZXh0Ii8+XG4nfSw3OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuJyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGhfbGFiZWwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYXNpY19hdXRoX19sYWJlbCIgZGF0YS1zdy10cmFuc2xhdGU+cGFzc3dvcmQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpbnB1dCByZXF1aXJlZCBwbGFjZWhvbGRlcj0icGFzc3dvcmQiIGNsYXNzPSJiYXNpY19hdXRoX19wYXNzd29yZCBhdXRoX2lucHV0IiBuYW1lPSJwYXNzd29yZCIgdHlwZT0icGFzc3dvcmQiLz48L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4nfSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e307cmV0dXJuIjxkaXYgY2xhc3M9J2Jhc2ljX2F1dGhfY29udGFpbmVyJz5cbiAgICA8aDMgY2xhc3M9XCJhdXRoX190aXRsZVwiPkJhc2ljIGF1dGhlbnRpY2F0aW9uIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzTG9nb3V0OnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyc8L2gzPlxuICAgIDxmb3JtIGNsYXNzPSJiYXNpY19pbnB1dF9jb250YWluZXIiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJhdXRoX19kZXNjcmlwdGlvbiI+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fG4uaGVscGVyTWlzc2luZykuY2FsbChvLG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJhdXRoX2xhYmVsIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYXNpY19hdXRoX19sYWJlbCIgZGF0YS1zdy10cmFuc2xhdGU+dXNlcm5hbWU6PC9zcGFuPlxuJysobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzTG9nb3V0OnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgzLGksMCksaW52ZXJzZTplLnByb2dyYW0oNSxpLDApLGRhdGE6aX0pKT9hOiIiKSsiICAgICAgICA8L2Rpdj5cbiIrKG51bGwhPShhPW4udW5sZXNzLmNhbGwobyxudWxsIT10P3QuaXNMb2dvdXQ6dCx7bmFtZToidW5sZXNzIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg3LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyIgICAgPC9mb3JtPlxuPC9kaXY+XG4ifSx1c2VEYXRhOiEwfSksdC5jb250ZW50X3R5cGU9ZSh7MTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiBudWxsIT0oYT1uLmVhY2guY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LnByb2R1Y2VzOnQse25hbWU6ImVhY2giLGhhc2g6e30sZm46ZS5wcm9ncmFtKDIsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIn0sMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybidcdDxvcHRpb24gdmFsdWU9IicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L29wdGlvbj5cbiJ9LDQ6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nICA8b3B0aW9uIHZhbHVlPSJhcHBsaWNhdGlvbi9qc29uIj5hcHBsaWNhdGlvbi9qc29uPC9vcHRpb24+XG4nfSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuJzxsYWJlbCBkYXRhLXN3LXRyYW5zbGF0ZSBmb3I9IicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QuY29udGVudFR5cGVJZDp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPlJlc3BvbnNlIENvbnRlbnQgVHlwZTwvbGFiZWw+XG48c2VsZWN0IG5hbWU9ImNvbnRlbnRUeXBlIiBpZD0iJysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5jb250ZW50VHlwZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJyI+XG4nKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QucHJvZHVjZXM6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSg0LGksMCksZGF0YTppfSkpP2E6IiIpKyI8L3NlbGVjdD5cbiJ9LHVzZURhdGE6ITB9KSx0Lm1haW49ZSh7MTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybicgIDxkaXYgY2xhc3M9ImluZm9fdGl0bGUiPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS50aXRsZTphLHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvZGl2PlxuICA8ZGl2IGNsYXNzPSJpbmZvX2Rlc2NyaXB0aW9uIG1hcmtkb3duIj4nKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPShhPW51bGwhPXQ/dC5pbmZvOnQpP2EuZGVzY3JpcHRpb246YSx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L2Rpdj5cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5leHRlcm5hbERvY3M6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDIsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS50ZXJtc09mU2VydmljZVVybDphLHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNCxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiXG4gICIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPShhPW51bGwhPShhPW51bGwhPXQ/dC5pbmZvOnQpP2EuY29udGFjdDphKT9hLm5hbWU6YSx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDYsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuICAiKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT0oYT1udWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmNvbnRhY3Q6YSk/YS51cmw6YSx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDgsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuICAiKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT0oYT1udWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmNvbnRhY3Q6YSk/YS5lbWFpbDphLHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTAsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuICAiKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmxpY2Vuc2U6YSx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEyLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyJcbiJ9LDI6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iICA8cD4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPShhPW51bGwhPXQ/dC5leHRlcm5hbERvY3M6dCk/YS5kZXNjcmlwdGlvbjphLHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvcD5cbiAgPGEgaHJlZj0iJysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPShhPW51bGwhPXQ/dC5leHRlcm5hbERvY3M6dCk/YS51cmw6YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIiB0YXJnZXQ9Il9ibGFuayI+JysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPShhPW51bGwhPXQ/dC5leHRlcm5hbERvY3M6dCk/YS51cmw6YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9hPlxuIn0sNDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybic8ZGl2IGNsYXNzPSJpbmZvX3RvcyI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fG4uaGVscGVyTWlzc2luZykuY2FsbChudWxsIT10P3Q6e30sbnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS50ZXJtc09mU2VydmljZVVybDphLHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciIGRhdGEtc3ctdHJhbnNsYXRlPlRlcm1zIG9mIHNlcnZpY2U8L2E+PC9kaXY+J30sNjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiI8ZGl2PjxkaXYgY2xhc3M9J2luZm9fbmFtZScgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmVcIiBkYXRhLXN3LXRyYW5zbGF0ZT5DcmVhdGVkIGJ5IDwvZGl2PiAiKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPShhPW51bGwhPShhPW51bGwhPXQ/dC5pbmZvOnQpP2EuY29udGFjdDphKT9hLm5hbWU6YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9kaXY+In0sODpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybiI8ZGl2IGNsYXNzPSdpbmZvX3VybCcgZGF0YS1zdy10cmFuc2xhdGU+U2VlIG1vcmUgYXQgPGEgaHJlZj1cIiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT0oYT1udWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmNvbnRhY3Q6YSk/YS51cmw6YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIj4nKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9KGE9bnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS5jb250YWN0OmEpP2EudXJsOmEse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvYT48L2Rpdj4ifSwxMDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybic8ZGl2IGNsYXNzPVwnaW5mb19lbWFpbFwnPjxhIHRhcmdldD0iX3BhcmVudCIgaHJlZj0ibWFpbHRvOicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT0oYT1udWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmNvbnRhY3Q6YSk/YS5lbWFpbDphLHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI/c3ViamVjdD0iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS50aXRsZTphLHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciIGRhdGEtc3ctdHJhbnNsYXRlPkNvbnRhY3QgdGhlIGRldmVsb3BlcjwvYT48L2Rpdj4nfSwxMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybiI8ZGl2IGNsYXNzPSdpbmZvX2xpY2Vuc2UnPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9JyIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT0oYT1udWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLmxpY2Vuc2U6YSk/YS51cmw6YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9KGE9bnVsbCE9KGE9bnVsbCE9dD90LmluZm86dCk/YS5saWNlbnNlOmEpP2EubmFtZTphLHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L2E+PC9kaXY+In0sMTQ6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4nICAsIDxzcGFuIHN0eWxlPSJmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHMiIGRhdGEtc3ctdHJhbnNsYXRlPmFwaSB2ZXJzaW9uPC9zcGFuPjogJysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT0oYT1udWxsIT10P3QuaW5mbzp0KT9hLnZlcnNpb246YSx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiXG4gICAgIn0sMTY6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4nICAgIDxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodCI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QudmFsaWRhdG9yVXJsOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIi9kZWJ1Zz91cmw9IisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC51cmw6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIj48aW1nIGlkPSJ2YWxpZGF0b3IiIHNyYz0iJysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWxpZGF0b3JVcmw6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiP3VybD0iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnVybDp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPjwvYT5cbiAgICA8L3NwYW4+XG4nfSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e307cmV0dXJuIjxkaXYgY2xhc3M9J2luZm8nIGlkPSdhcGlfaW5mbyc+XG4iKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuaW5mbzp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiPC9kaXY+XG48ZGl2IGNsYXNzPSdjb250YWluZXInIGlkPSdyZXNvdXJjZXNfY29udGFpbmVyJz5cbiAgPGRpdiBjbGFzcz0nYXV0aG9yaXplLXdyYXBwZXInPjwvZGl2PlxuXG4gIDx1bCBpZD0ncmVzb3VyY2VzJz48L3VsPlxuXG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8aDQgc3R5bGU9XCJjb2xvcjogIzk5OVwiPlsgPHNwYW4gc3R5bGU9XCJmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHNcIj5iYXNlIHVybDwvc3Bhbj46ICIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fG4uaGVscGVyTWlzc2luZykuY2FsbChvLG51bGwhPXQ/dC5iYXNlUGF0aDp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyJcbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPShhPW51bGwhPXQ/dC5pbmZvOnQpP2EudmVyc2lvbjphLHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTQsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIl1cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC52YWxpZGF0b3JVcmw6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDE2LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyIgICAgPC9oND5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIn0sdXNlRGF0YTohMH0pLHQub2F1dGgyPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4iPHA+QXV0aG9yaXphdGlvbiBVUkw6ICIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC5hdXRob3JpemF0aW9uVXJsOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9wPiJ9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4iPHA+VG9rZW4gVVJMOiAiKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QudG9rZW5Vcmw6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L3A+In0sNTpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybicgICAgICAgIDxwPlBsZWFzZSBpbnB1dCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm9yIHBhc3N3b3JkIGZsb3cgYXV0aG9yaXphdGlvbjwvcD5cbiAgICAgICAgPGZpZWxkc2V0PlxuICAgICAgICAgICAgPGRpdj48bGFiZWw+VXNlcm5hbWU6IDxpbnB1dCBjbGFzcz0ib2F1dGgtdXNlcm5hbWUiIHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIj48L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgPGRpdj48bGFiZWw+UGFzc3dvcmQ6IDxpbnB1dCBjbGFzcz0ib2F1dGgtcGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCI+PC9sYWJlbD48L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbid9LDc6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4iICAgICAgICA8cD5TZXR1cCBjbGllbnQgYXV0aGVudGljYXRpb24uIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QucmVxdWlyZUNsaWVudEF1dGhlbnRpY2FpdG9uOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg4LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyc8L3A+XG4gICAgICAgIDxmaWVsZHNldD5cbiAgICAgICAgICAgIDxkaXY+PGxhYmVsPlR5cGU6XG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0ib2F1dGgtY2xpZW50LWF1dGhlbnRpY2F0aW9uLXR5cGUiIG5hbWU9ImNsaWVudC1hdXRoZW50aWNhdGlvbi10eXBlIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibm9uZSIgc2VsZWN0ZWQ+Tm9uZSBvciBvdGhlcjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJiYXNpYyI+QmFzaWMgYXV0aDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJyZXF1ZXN0LWJvZHkiPlJlcXVlc3QgYm9keTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9sYWJlbD48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9hdXRoLWNsaWVudC1hdXRoZW50aWNhdGlvbiIgaGlkZGVuPlxuICAgICAgICAgICAgICAgIDxkaXY+PGxhYmVsPkNsaWVudElkOiA8aW5wdXQgY2xhc3M9Im9hdXRoLWNsaWVudC1pZCIgdHlwZT0idGV4dCIgbmFtZT0iY2xpZW50LWlkIj48L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+PGxhYmVsPlNlY3JldDogPGlucHV0IGNsYXNzPSJvYXV0aC1jbGllbnQtc2VjcmV0IiB0eXBlPSJ0ZXh0IiBuYW1lPSJjbGllbnQtc2VjcmV0Ij48L2xhYmVsPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4nfSw4OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIihSZXF1aXJlZCkifSwxMDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybicgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJvYXV0aC1zY29wZSIgdHlwZT0iY2hlY2tib3giIGRhdGEtc2NvcGU9IicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3Quc2NvcGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIiBvYXV0aHR5cGU9IicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QuT0F1dGhTY2hlbWVLZXk6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIi8+XG4gICAgICAgICAgICAgICAgPGxhYmVsPicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3Quc2NvcGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC9sYWJlbD48YnIvPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcGktc2NvcGUtZGVzYyI+JysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyJcbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5PQXV0aFNjaGVtZUtleTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuIn0sMTE6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4iICAgICAgICAgICAgICAgICAgICAgICAgKCIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fG4uaGVscGVyTWlzc2luZykuY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90Lk9BdXRoU2NoZW1lS2V5OnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIilcbiJ9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4nPGRpdj5cbiAgICA8aDMgY2xhc3M9ImF1dGhfX3RpdGxlIj5PQXV0aDIuMDwvaDM+XG4gICAgPHA+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZGVzY3JpcHRpb246dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L3A+XG4gICAgIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmF1dGhvcml6YXRpb25Vcmw6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuICAgICIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC50b2tlblVybDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMyxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiXG4gICAgPHA+ZmxvdzogIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5mbG93OnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvcD5cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5pc1Bhc3N3b3JkRmxvdzp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmNsaWVudEF1dGhlbnRpY2F0aW9uOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg3LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyIgICAgPHA+PHN0cm9uZz4gIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5hcHBOYW1lOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJyA8L3N0cm9uZz4gQVBJIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgc2NvcGVzLiBTZWxlY3Qgd2hpY2ggb25lcyB5b3Ugd2FudCB0byBncmFudCB0byBTd2FnZ2VyIFVJLjwvcD5cbiAgICA8cD5TY29wZXMgYXJlIHVzZWQgdG8gZ3JhbnQgYW4gYXBwbGljYXRpb24gZGlmZmVyZW50IGxldmVscyBvZiBhY2Nlc3MgdG8gZGF0YSBvbiBiZWhhbGYgb2YgdGhlIGVuZCB1c2VyLiBFYWNoIEFQSSBtYXkgZGVjbGFyZSBvbmUgb3IgbW9yZSBzY29wZXMuXG4gICAgICAgIDxhIGhyZWY9IiMiPkxlYXJuIGhvdyB0byB1c2U8L2E+XG4gICAgPC9wPlxuICAgIDx1bCBjbGFzcz0iYXBpLXBvcHVwLXNjb3BlcyI+XG4nKyhudWxsIT0oYT1uLmVhY2guY2FsbChvLG51bGwhPXQ/dC5zY29wZXM6dCx7bmFtZToiZWFjaCIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTAsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgICA8L3VsPlxuPC9kaXY+In0sdXNlRGF0YTohMH0pLHQub3BlcmF0aW9uPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iZGVwcmVjYXRlZCJ9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iICAgICAgICAgICAgPGg0PjxzcGFuIGRhdGEtc3ctdHJhbnNsYXRlPldhcm5pbmc6IERlcHJlY2F0ZWQ8L3NwYW4+PC9oND5cbiJ9LDU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4nICAgICAgICA8aDQ+PHNwYW4gZGF0YS1zdy10cmFuc2xhdGU+SW1wbGVtZW50YXRpb24gTm90ZXM8L3NwYW4+PC9oND5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWFya2Rvd24iPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvZGl2PlxuIn0sNzpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIgICAgICAgICAgICA8ZGl2IGNsYXNzPSdhdXRob3JpemUtd3JhcHBlciBhdXRob3JpemUtd3JhcHBlcl9vcGVyYXRpb24nPjwvZGl2PlxuIn0sOTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9O3JldHVybicgICAgICAgICAgPGRpdiBjbGFzcz0icmVzcG9uc2UtY2xhc3MiPlxuICAgICAgICAgICAgPGg0PjxzcGFuIGRhdGEtc3ctdHJhbnNsYXRlPlJlc3BvbnNlIENsYXNzPC9zcGFuPiAoPHNwYW4gZGF0YS1zdy10cmFuc2xhdGU+U3RhdHVzPC9zcGFuPiAnKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobyxudWxsIT10P3Quc3VjY2Vzc0NvZGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiKTwvaDQ+XG4gICAgICAgICAgICAgICIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5zdWNjZXNzRGVzY3JpcHRpb246dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEwLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKydcbiAgICAgICAgICAgIDxwPjxzcGFuIGNsYXNzPSJtb2RlbC1zaWduYXR1cmUiIC8+PC9wPlxuICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3BvbnNlLWNvbnRlbnQtdHlwZSIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuJ30sMTA6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4nPGRpdiBjbGFzcz0ibWFya2Rvd24iPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC5zdWNjZXNzRGVzY3JpcHRpb246dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L2Rpdj4ifSwxMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybicgICAgICAgICAgPGg0IGRhdGEtc3ctdHJhbnNsYXRlPkhlYWRlcnM8L2g0PlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz0iaGVhZGVycyI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAxMDBweDsgbWF4LXdpZHRoOiAxMDBweCIgZGF0YS1zdy10cmFuc2xhdGU+SGVhZGVyPC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAzMTBweDsgbWF4LXdpZHRoOiAzMTBweCIgZGF0YS1zdy10cmFuc2xhdGU+RGVzY3JpcHRpb248L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDIwMHB4OyBtYXgtd2lkdGg6IDIwMHB4IiBkYXRhLXN3LXRyYW5zbGF0ZT5UeXBlPC90aD5cbiAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAzMjBweDsgbWF4LXdpZHRoOiAzMjBweCIgZGF0YS1zdy10cmFuc2xhdGU+T3RoZXI8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbicrKG51bGwhPShhPW4uZWFjaC5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QuaGVhZGVyczp0LHtuYW1lOiJlYWNoIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxMyxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuIn0sMTM6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvLHM9bnVsbCE9dD90Ont9LGw9bi5oZWxwZXJNaXNzaW5nO3JldHVybiIgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+IitlLmVzY2FwZUV4cHJlc3Npb24oKG89bnVsbCE9KG89bi5rZXl8fGkmJmkua2V5KT9vOmwsImZ1bmN0aW9uIj09dHlwZW9mIG8/by5jYWxsKHMse25hbWU6ImtleSIsaGFzaDp7fSxkYXRhOml9KTpvKSkrIjwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPiIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxsKS5jYWxsKHMsbnVsbCE9dD90LmRlc2NyaXB0aW9uOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+IisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8bCkuY2FsbChzLG51bGwhPXQ/dC50eXBlOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fGwpLmNhbGwocyxudWxsIT10P3Qub3RoZXI6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiJ9LDE1OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuJyAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UGFyYW1ldGVyczwvaDQ+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwnZnVsbHdpZHRoIHBhcmFtZXRlcnNcJz5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAxMDBweDsgbWF4LXdpZHRoOiAxMDBweCIgZGF0YS1zdy10cmFuc2xhdGU+UGFyYW1ldGVyPC90aD5cbiAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDMxMHB4OyBtYXgtd2lkdGg6IDMxMHB4IiBkYXRhLXN3LXRyYW5zbGF0ZT5WYWx1ZTwvdGg+XG4gICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAyMDBweDsgbWF4LXdpZHRoOiAyMDBweCIgZGF0YS1zdy10cmFuc2xhdGU+RGVzY3JpcHRpb248L3RoPlxuICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDogMTAwcHg7IG1heC13aWR0aDogMTAwcHgiIGRhdGEtc3ctdHJhbnNsYXRlPlBhcmFtZXRlciBUeXBlPC90aD5cbiAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDIyMHB4OyBtYXgtd2lkdGg6IDIzMHB4IiBkYXRhLXN3LXRyYW5zbGF0ZT5EYXRhIFR5cGU8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz0ib3BlcmF0aW9uLXBhcmFtcyI+XG5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4nfSwxNzpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIgICAgICAgICAgPGRpdiBzdHlsZT0nbWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lJz48L2Rpdj5cbiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVzcG9uc2UgTWVzc2FnZXM8L2g0PlxuICAgICAgICAgIDx0YWJsZSBjbGFzcz0nZnVsbHdpZHRoIHJlc3BvbnNlLW1lc3NhZ2VzJz5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPkhUVFAgU3RhdHVzIENvZGU8L3RoPlxuICAgICAgICAgICAgICA8dGggZGF0YS1zdy10cmFuc2xhdGU+UmVhc29uPC90aD5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPlJlc3BvbnNlIE1vZGVsPC90aD5cbiAgICAgICAgICAgICAgPHRoIGRhdGEtc3ctdHJhbnNsYXRlPkhlYWRlcnM8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJvcGVyYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4ifSwxOTpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIifSwyMTpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIgICAgICAgICAgPGRpdiBjbGFzcz0nc2FuZGJveF9oZWFkZXInPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPSdzdWJtaXQnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1RyeSBpdCBvdXQhJyBkYXRhLXN3LXRyYW5zbGF0ZS8+XG4gICAgICAgICAgICA8YSBocmVmPScjJyBjbGFzcz0ncmVzcG9uc2VfaGlkZXInIHN0eWxlPSdkaXNwbGF5Om5vbmUnIGRhdGEtc3ctdHJhbnNsYXRlPkhpZGUgUmVzcG9uc2U8L2E+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz0ncmVzcG9uc2VfdGhyb2JiZXInIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiJ9LDIzOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVxdWVzdCBIZWFkZXJzPC9oND5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSdibG9jayByZXF1ZXN0X2hlYWRlcnMnPjwvZGl2PlxuIn0sY29tcGlsZXI6WzcsIj49IDQuMC4wIl0sbWFpbjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nLGw9ZS5lc2NhcGVFeHByZXNzaW9uO3JldHVybiIgIDx1bCBjbGFzcz0nb3BlcmF0aW9ucycgPlxuICAgIDxsaSBjbGFzcz0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5tZXRob2Q6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiIG9wZXJhdGlvbicgaWQ9JyIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QucGFyZW50SWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiXyIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3Qubmlja25hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz5cbiAgICAgIDxkaXYgY2xhc3M9J2hlYWRpbmcnPlxuICAgICAgICA8aDM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9J2h0dHBfbWV0aG9kJz5cbiAgICAgICAgICA8YSBocmVmPScjIS8iK2woKG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZW5jb2RlZFBhcmVudElkOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKSsiLyIrbCgobi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uaWNrbmFtZTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSkrJ1wnIGNsYXNzPSJ0b2dnbGVPcGVyYXRpb24iPicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QubWV0aG9kOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvYT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9J3BhdGgnPlxuICAgICAgICAgIDxhIGhyZWY9JyMhLyIrbCgobi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5lbmNvZGVkUGFyZW50SWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpKyIvIitsKChuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5pY2tuYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKSsiJyBjbGFzcz1cInRvZ2dsZU9wZXJhdGlvbiAiKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuZGVwcmVjYXRlZDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsnIj4nKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnBhdGg6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9hPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHVsIGNsYXNzPSdvcHRpb25zJz5cbiAgICAgICAgICA8bGk+XG4gICAgICAgICAgPGEgaHJlZj0nIyEvIitsKChuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90LmVuY29kZWRQYXJlbnRJZDp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSkrIi8iK2woKG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3Qubmlja25hbWU6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpKydcJyBjbGFzcz0idG9nZ2xlT3BlcmF0aW9uIj48c3BhbiBjbGFzcz0ibWFya2Rvd24iPicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3Quc3VtbWFyeTp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L3NwYW4+PC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9J2NvbnRlbnQnIGlkPSciK2woKG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZW5jb2RlZFBhcmVudElkOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKSsiXyIrbCgobi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uaWNrbmFtZTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSkrIl9jb250ZW50JyBzdHlsZT0nZGlzcGxheTpub25lJz5cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5kZXByZWNhdGVkOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgzLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuZGVzY3JpcHRpb246dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDUsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5zZWN1cml0eTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNyxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LnR5cGU6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDksaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmhlYWRlcnM6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEyLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyJcbiAgICAgICAgPGZvcm0gYWNjZXB0LWNoYXJzZXQ9J1VURi04JyBjbGFzcz0nc2FuZGJveCc+XG4gICAgICAgICAgPGRpdiBzdHlsZT0nbWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lJz48L2Rpdj5cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5wYXJhbWV0ZXJzOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxNSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LnJlc3BvbnNlTWVzc2FnZXM6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDE3LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuaXNSZWFkT25seTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTksaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSgyMSxpLDApLGRhdGE6aX0pKT9hOiIiKSsiICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9J3Jlc3BvbnNlJyBzdHlsZT0nZGlzcGxheTpub25lJz5cbiAgICAgICAgICA8aDQgY2xhc3M9J2N1cmwnPkN1cmw8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9J2Jsb2NrIGN1cmwnPjwvZGl2PlxuICAgICAgICAgIDxoNCBkYXRhLXN3LXRyYW5zbGF0ZT5SZXF1ZXN0IFVSTDwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz0nYmxvY2sgcmVxdWVzdF91cmwnPjwvZGl2PlxuIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LnNob3dSZXF1ZXN0SGVhZGVyczp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMjMsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgICAgICAgICA8aDQgZGF0YS1zdy10cmFuc2xhdGU+UmVzcG9uc2UgQm9keTwvaDQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz0nYmxvY2sgcmVzcG9uc2VfYm9keSc+PC9kaXY+XG4gICAgICAgICAgPGg0IGRhdGEtc3ctdHJhbnNsYXRlPlJlc3BvbnNlIENvZGU8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3M9J2Jsb2NrIHJlc3BvbnNlX2NvZGUnPjwvZGl2PlxuICAgICAgICAgIDxoNCBkYXRhLXN3LXRyYW5zbGF0ZT5SZXNwb25zZSBIZWFkZXJzPC9oND5cbiAgICAgICAgICA8ZGl2IGNsYXNzPSdibG9jayByZXNwb25zZV9oZWFkZXJzJz48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICA8L3VsPlxuIn0sdXNlRGF0YTohMH0pLHQucGFyYW09ZSh7MTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiBudWxsIT0oYT1uWyJpZiJdLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC5pc0ZpbGU6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDIsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSg0LGksMCksZGF0YTppfSkpP2E6IiJ9LDI6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4nXHRcdFx0PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9XCcnKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJ1wnLz5cblx0XHRcdDxkaXYgY2xhc3M9InBhcmFtZXRlci1jb250ZW50LXR5cGUiIC8+XG4nfSw0OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIG51bGwhPShhPW5bImlmIl0uY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90WyJkZWZhdWx0Il06dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDUsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSg3LGksMCksZGF0YTppfSkpP2E6IiJ9LDU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZWRpdG9yX2hvbGRlclwiPjwvZGl2PlxuXHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEnIG5hbWU9JyIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QubmFtZTp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyInIGlkPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90WyJkZWZhdWx0Il06dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC90ZXh0YXJlYT5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9InBhcmFtZXRlci1jb250ZW50LXR5cGUiIC8+XG4nfSw3OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIlx0XHRcdFx0PHRleHRhcmVhIGNsYXNzPSdib2R5LXRleHRhcmVhJyBuYW1lPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJ1wnPjwvdGV4dGFyZWE+XG5cdFx0XHRcdDxkaXYgY2xhc3M9ImVkaXRvcl9ob2xkZXIiPjwvZGl2PlxuXHRcdFx0XHQ8YnIgLz5cblx0XHRcdFx0PGRpdiBjbGFzcz0icGFyYW1ldGVyLWNvbnRlbnQtdHlwZSIgLz5cbid9LDk6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9blsiaWYiXS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QuaXNGaWxlOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgyLGksMCksaW52ZXJzZTplLnByb2dyYW0oMTAsaSwwKSxkYXRhOml9KSk/YToiIn0sMTA6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9KG4ucmVuZGVyVGV4dFBhcmFtfHx0JiZ0LnJlbmRlclRleHRQYXJhbXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSx0LHtuYW1lOiJyZW5kZXJUZXh0UGFyYW0iLGhhc2g6e30sZm46ZS5wcm9ncmFtKDExLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiJ9LDExOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiJ9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iPHRkIGNsYXNzPSdjb2RlJz48bGFiZWwgZm9yPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9sYWJlbD48L3RkPlxuPHRkPlxuXG4iKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuaXNCb2R5OnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxLGksMCksaW52ZXJzZTplLnByb2dyYW0oOSxpLDApLGRhdGE6aX0pKT9hOiIiKSsnXG48L3RkPlxuPHRkIGNsYXNzPSJtYXJrZG93biI+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZGVzY3JpcHRpb246dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L3RkPlxuPHRkPiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QucGFyYW1UeXBlOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQ+XG5cdDxzcGFuIGNsYXNzPSJtb2RlbC1zaWduYXR1cmUiPjwvc3Bhbj5cbjwvdGQ+XG4nfSx1c2VEYXRhOiEwfSksdC5wYXJhbV9saXN0PWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iIHJlcXVpcmVkIn0sMzpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybicgbXVsdGlwbGU9Im11bHRpcGxlIid9LDU6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iIHJlcXVpcmVkICJ9LDc6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4iICAgICAgPG9wdGlvbiAiKyhudWxsIT0oYT1uLnVubGVzcy5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QuaGFzRGVmYXVsdDp0LHtuYW1lOiJ1bmxlc3MiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDgsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiB2YWx1ZT0nJz48L29wdGlvbj5cbiJ9LDg6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nICBzZWxlY3RlZD0iIiAnfSwxMDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybiJcbiAgICAgIDxvcHRpb24gIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzRGVmYXVsdDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgdmFsdWU9JyIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4gIisobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QudmFsdWU6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyIgIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzRGVmYXVsdDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMTMsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiA8L29wdGlvbj5cblxuIn0sMTE6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nIHNlbGVjdGVkPSIiICAnfSwxMzpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIgKGRlZmF1bHQpICJ9LDE1OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxzdHJvbmc+In0sMTc6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPC9zdHJvbmc+In0sY29tcGlsZXI6WzcsIj49IDQuMC4wIl0sbWFpbjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG8scz1udWxsIT10P3Q6e30sbD1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIjx0ZCBjbGFzcz0nY29kZSIrKG51bGwhPShhPW5bImlmIl0uY2FsbChzLG51bGwhPXQ/dC5yZXF1aXJlZDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiJz48bGFiZWwgZm9yPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxsKS5jYWxsKHMsbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8bCkuY2FsbChzLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9sYWJlbD48L3RkPlxuPHRkPlxuICA8c2VsZWN0ICIrKG51bGwhPShhPShuLmlzQXJyYXl8fHQmJnQuaXNBcnJheXx8bCkuY2FsbChzLHQse25hbWU6ImlzQXJyYXkiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDMsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrJyBjbGFzcz0icGFyYW1ldGVyICcrKG51bGwhPShhPW5bImlmIl0uY2FsbChzLG51bGwhPXQ/dC5yZXF1aXJlZDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsnIiBuYW1lPSInKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8bCkuY2FsbChzLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIiBpZD0iJysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8bCkuY2FsbChzLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJyI+XG5cbicrKG51bGwhPShhPW4udW5sZXNzLmNhbGwocyxudWxsIT10P3QucmVxdWlyZWQ6dCx7bmFtZToidW5sZXNzIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg3LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyJcbiIrKG51bGwhPShhPW4uZWFjaC5jYWxsKHMsbnVsbCE9KGE9bnVsbCE9dD90LmFsbG93YWJsZVZhbHVlczp0KT9hLmRlc2NyaXB0aXZlVmFsdWVzOmEse25hbWU6ImVhY2giLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEwLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKydcbiAgPC9zZWxlY3Q+XG48L3RkPlxuPHRkIGNsYXNzPSJtYXJrZG93biI+JysobnVsbCE9KGE9blsiaWYiXS5jYWxsKHMsbnVsbCE9dD90LnJlcXVpcmVkOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxNSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsobnVsbCE9KG89bnVsbCE9KG89bi5kZXNjcmlwdGlvbnx8KG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0KSk/bzpsLGE9ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5jYWxsKHMse25hbWU6ImRlc2NyaXB0aW9uIixoYXNoOnt9LGRhdGE6aX0pOm8pP2E6IiIpKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwocyxudWxsIT10P3QucmVxdWlyZWQ6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDE3LGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyI8L3RkPlxuPHRkPiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fGwpLmNhbGwocyxudWxsIT10P3QucGFyYW1UeXBlOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQ+PHNwYW4gY2xhc3M9Im1vZGVsLXNpZ25hdHVyZSI+PC9zcGFuPjwvdGQ+XG4nfSx1c2VEYXRhOiEwfSksdC5wYXJhbV9yZWFkb25seT1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIiAgICAgICAgPHRleHRhcmVhIGNsYXNzPSdib2R5LXRleHRhcmVhJyByZWFkb25seT0ncmVhZG9ubHknIG5hbWU9JyIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyInIGlkPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dFsiZGVmYXVsdCJdOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC90ZXh0YXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz0icGFyYW1ldGVyLWNvbnRlbnQtdHlwZSIgLz5cbid9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXsKK3ZhciBhO3JldHVybiBudWxsIT0oYT1uWyJpZiJdLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dFsiZGVmYXVsdCJdOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSg0LGksMCksaW52ZXJzZTplLnByb2dyYW0oNixpLDApLGRhdGE6aX0pKT9hOiIifSw0OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIiAgICAgICAgICAgICIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dFsiZGVmYXVsdCJdOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiXG4ifSw2OmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiAgICAgICAgICAgIChlbXB0eSlcbiJ9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iPHRkIGNsYXNzPSdjb2RlJz48bGFiZWwgZm9yPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9sYWJlbD48L3RkPlxuPHRkPlxuIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzQm9keTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDMsaSwwKSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQgY2xhc3M9Im1hcmtkb3duIj4nKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvdGQ+XG48dGQ+IisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5wYXJhbVR5cGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC90ZD5cbjx0ZD48c3BhbiBjbGFzcz0ibW9kZWwtc2lnbmF0dXJlIj48L3NwYW4+PC90ZD5cbid9LHVzZURhdGE6ITB9KSx0LnBhcmFtX3JlYWRvbmx5X3JlcXVpcmVkPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iICAgICAgICA8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEnIHJlYWRvbmx5PSdyZWFkb25seScgcGxhY2Vob2xkZXI9JyhyZXF1aXJlZCknIG5hbWU9JyIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyInIGlkPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dFsiZGVmYXVsdCJdOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC90ZXh0YXJlYT5cbiJ9LDM6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9blsiaWYiXS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3RbImRlZmF1bHQiXTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNCxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDYsaSwwKSxkYXRhOml9KSk/YToiIn0sNDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiIgICAgICAgICAgICAiKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3RbImRlZmF1bHQiXTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIlxuIn0sNjpmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiIgICAgICAgICAgICAoZW1wdHkpXG4ifSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIjx0ZCBjbGFzcz0nY29kZSByZXF1aXJlZCc+PGxhYmVsIGZvcj0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIic+IisobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QubmFtZTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvbGFiZWw+PC90ZD5cbjx0ZD5cbiIrKG51bGwhPShhPW5bImlmIl0uY2FsbChvLG51bGwhPXQ/dC5pc0JvZHk6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSgzLGksMCksZGF0YTppfSkpP2E6IiIpKyc8L3RkPlxuPHRkIGNsYXNzPSJtYXJrZG93biI+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHMpLmNhbGwobyxudWxsIT10P3QuZGVzY3JpcHRpb246dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L3RkPlxuPHRkPiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QucGFyYW1UeXBlOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQ+PHNwYW4gY2xhc3M9Im1vZGVsLXNpZ25hdHVyZSI+PC9zcGFuPjwvdGQ+XG4nfSx1c2VEYXRhOiEwfSksdC5wYXJhbV9yZXF1aXJlZD1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIG51bGwhPShhPW5bImlmIl0uY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LmlzRmlsZTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMixpLDApLGludmVyc2U6ZS5wcm9ncmFtKDQsaSwwKSxkYXRhOml9KSk/YToiIn0sMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybidcdFx0XHQ8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT1cJycrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QubmFtZTp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyInIGlkPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJy8+XG4ifSw0OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIG51bGwhPShhPW5bImlmIl0uY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90WyJkZWZhdWx0Il06dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDUsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSg3LGksMCksZGF0YTppfSkpP2E6IiJ9LDU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZWRpdG9yX2hvbGRlclwiPjwvZGl2PlxuXHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEgcmVxdWlyZWQnIHBsYWNlaG9sZGVyPScocmVxdWlyZWQpJyBuYW1lPSciKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD1cIiIrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fHMpLmNhbGwobyxudWxsIT10P3QudmFsdWVJZDp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sbnVsbCE9dD90WyJkZWZhdWx0Il06dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyc8L3RleHRhcmVhPlxuICAgICAgICA8YnIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz0icGFyYW1ldGVyLWNvbnRlbnQtdHlwZSIgLz5cbid9LDc6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iXHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9J2JvZHktdGV4dGFyZWEgcmVxdWlyZWQnIHBsYWNlaG9sZGVyPScocmVxdWlyZWQpJyBuYW1lPSciKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJ1wnPjwvdGV4dGFyZWE+XG5cdFx0XHRcdDxkaXYgY2xhc3M9ImVkaXRvcl9ob2xkZXIiPjwvZGl2PlxuXHRcdFx0XHQ8YnIgLz5cblx0XHRcdFx0PGRpdiBjbGFzcz0icGFyYW1ldGVyLWNvbnRlbnQtdHlwZSIgLz5cbid9LDk6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9blsiaWYiXS5jYWxsKG51bGwhPXQ/dDp7fSxudWxsIT10P3QuaXNGaWxlOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxMCxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDEyLGksMCksZGF0YTppfSkpP2E6IiJ9LDEwOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIlx0XHRcdDxpbnB1dCBjbGFzcz0ncGFyYW1ldGVyIHJlcXVpcmVkJyB0eXBlPSdmaWxlJyBuYW1lPSciKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5uYW1lOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD0nIisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC52YWx1ZUlkOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIicvPlxuIn0sMTI6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9KG4ucmVuZGVyVGV4dFBhcmFtfHx0JiZ0LnJlbmRlclRleHRQYXJhbXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG51bGwhPXQ/dDp7fSx0LHtuYW1lOiJyZW5kZXJUZXh0UGFyYW0iLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEzLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiJ9LDEzOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIiJ9LGNvbXBpbGVyOls3LCI+PSA0LjAuMCJdLG1haW46ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fSxzPW4uaGVscGVyTWlzc2luZztyZXR1cm4iPHRkIGNsYXNzPSdjb2RlIHJlcXVpcmVkJz48bGFiZWwgZm9yPSciKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90LnZhbHVlSWQ6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJz4iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm5hbWU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC9sYWJlbD48L3RkPlxuPHRkPlxuIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzQm9keTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMSxpLDApLGludmVyc2U6ZS5wcm9ncmFtKDksaSwwKSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQ+XG5cdDxzdHJvbmc+PHNwYW4gY2xhc3M9Im1hcmtkb3duIj4nKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8cykuY2FsbChvLG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvc3Bhbj48L3N0cm9uZz5cbjwvdGQ+XG48dGQ+IisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5wYXJhbVR5cGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC90ZD5cbjx0ZD48c3BhbiBjbGFzcz0ibW9kZWwtc2lnbmF0dXJlIj48L3NwYW4+PC90ZD5cbid9LHVzZURhdGE6ITB9KSx0LnBhcmFtZXRlcl9jb250ZW50X3R5cGU9ZSh7MTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiBudWxsIT0oYT1uLmVhY2guY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LmNvbnN1bWVzOnQse25hbWU6ImVhY2giLGhhc2g6e30sZm46ZS5wcm9ncmFtKDIsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIn0sMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybicgIDxvcHRpb24gdmFsdWU9IicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L29wdGlvbj5cbiJ9LDQ6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nICA8b3B0aW9uIHZhbHVlPSJhcHBsaWNhdGlvbi9qc29uIj5hcHBsaWNhdGlvbi9qc29uPC9vcHRpb24+XG4nfSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbyxzPW51bGwhPXQ/dDp7fSxsPW4uaGVscGVyTWlzc2luZztyZXR1cm4nPGxhYmVsIGZvcj0iJytlLmVzY2FwZUV4cHJlc3Npb24oKG89bnVsbCE9KG89bi5wYXJhbWV0ZXJDb250ZW50VHlwZUlkfHwobnVsbCE9dD90LnBhcmFtZXRlckNvbnRlbnRUeXBlSWQ6dCkpP286bCwiZnVuY3Rpb24iPT10eXBlb2Ygbz9vLmNhbGwocyx7bmFtZToicGFyYW1ldGVyQ29udGVudFR5cGVJZCIsaGFzaDp7fSxkYXRhOml9KTpvKSkrJyIgZGF0YS1zdy10cmFuc2xhdGU+UGFyYW1ldGVyIGNvbnRlbnQgdHlwZTo8L2xhYmVsPlxuPHNlbGVjdCBuYW1lPSJwYXJhbWV0ZXJDb250ZW50VHlwZSIgaWQ9IicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxsKS5jYWxsKHMsbnVsbCE9dD90LnBhcmFtZXRlckNvbnRlbnRUeXBlSWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPlxuJysobnVsbCE9KGE9blsiaWYiXS5jYWxsKHMsbnVsbCE9dD90LmNvbnN1bWVzOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxLGksMCksaW52ZXJzZTplLnByb2dyYW0oNCxpLDApLGRhdGE6aX0pKT9hOiIiKSsiPC9zZWxlY3Q+XG4ifSx1c2VEYXRhOiEwfSksdC5wb3B1cD1lKHtjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuJzxkaXYgY2xhc3M9ImFwaS1wb3B1cC1kaWFsb2ctd3JhcHBlciI+XG4gICAgPGRpdiBjbGFzcz0iYXBpLXBvcHVwLXRpdGxlIj4nK2UuZXNjYXBlRXhwcmVzc2lvbigoYT1udWxsIT0oYT1uLnRpdGxlfHwobnVsbCE9dD90LnRpdGxlOnQpKT9hOm4uaGVscGVyTWlzc2luZywiZnVuY3Rpb24iPT10eXBlb2YgYT9hLmNhbGwobnVsbCE9dD90Ont9LHtuYW1lOiJ0aXRsZSIsaGFzaDp7fSxkYXRhOml9KTphKSkrJzwvZGl2PlxuICAgIDxkaXYgY2xhc3M9ImFwaS1wb3B1cC1jb250ZW50Ij48L2Rpdj5cbiAgICA8cCBjbGFzcz0iZXJyb3ItbXNnIj48L3A+XG4gICAgPGRpdiBjbGFzcz0iYXBpLXBvcHVwLWFjdGlvbnMiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPSJhcGktcG9wdXAtY2FuY2VsIGFwaS1idXR0b24gZ3JheSIgdHlwZT0iYnV0dG9uIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz0iYXBpLXBvcHVwLWRpYWxvZy1zaGFkb3ciPjwvZGl2Pid9LHVzZURhdGE6ITB9KSx0LnJlc291cmNlPWUoezE6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iIDogIn0sMzpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiIgICAgPGxpPlxuICAgICAgPGEgaHJlZj0nIisobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fG4uaGVscGVyTWlzc2luZykuY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LnVybDp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIicgZGF0YS1zdy10cmFuc2xhdGU+UmF3PC9hPlxuICAgIDwvbGk+XG4ifSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbyxzLGw9bnVsbCE9dD90Ont9LHU9bi5oZWxwZXJNaXNzaW5nLGM9IjxkaXYgY2xhc3M9J2hlYWRpbmcnPlxuICA8aDI+XG4gICAgPGEgaHJlZj0nIyEvIisobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3QuaWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKydcJyBjbGFzcz0idG9nZ2xlRW5kcG9pbnRMaXN0IiBkYXRhLWlkPSInKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8dSkuY2FsbChsLG51bGwhPXQ/dC5pZDp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJyI+JysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3QubmFtZTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvYT4gIjtyZXR1cm4gbz1udWxsIT0obz1uLnN1bW1hcnl8fChudWxsIT10P3Quc3VtbWFyeTp0KSk/bzp1LHM9e25hbWU6InN1bW1hcnkiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9LGE9ImZ1bmN0aW9uIj09dHlwZW9mIG8/by5jYWxsKGwscyk6byxuLnN1bW1hcnl8fChhPW4uYmxvY2tIZWxwZXJNaXNzaW5nLmNhbGwodCxhLHMpKSxudWxsIT1hJiYoYys9YSksYysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3Quc3VtbWFyeTp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIlxuICA8L2gyPlxuICA8dWwgY2xhc3M9J29wdGlvbnMnPlxuICAgIDxsaT5cbiAgICAgIDxhIGhyZWY9JyMhLyIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHx1KS5jYWxsKGwsbnVsbCE9dD90LmlkOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiJyBpZD0nZW5kcG9pbnRMaXN0VG9nZ2VyXyIrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHx1KS5jYWxsKGwsbnVsbCE9dD90LmlkOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnXCcgY2xhc3M9InRvZ2dsZUVuZHBvaW50TGlzdCIgZGF0YS1pZD0iJysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3QuaWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciIGRhdGEtc3ctdHJhbnNsYXRlPlNob3cvSGlkZTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaT5cbiAgICAgIDxhIGhyZWY9XCcjXCcgY2xhc3M9ImNvbGxhcHNlUmVzb3VyY2UiIGRhdGEtaWQ9IicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHx1KS5jYWxsKGwsbnVsbCE9dD90LmlkOnQse25hbWU6InNhbml0aXplIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnIiBkYXRhLXN3LXRyYW5zbGF0ZT5cbiAgICAgICAgTGlzdCBPcGVyYXRpb25zXG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8YSBocmVmPVwnI1wnIGNsYXNzPSJleHBhbmRSZXNvdXJjZSIgZGF0YS1pZD0iJysobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3QuaWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciIGRhdGEtc3ctdHJhbnNsYXRlPlxuICAgICAgICBFeHBhbmQgT3BlcmF0aW9uc1xuICAgICAgPC9hPlxuICAgIDwvbGk+XG4nKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobCxudWxsIT10P3QudXJsOnQse25hbWU6ImlmIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgzLGksMCksaW52ZXJzZTplLm5vb3AsZGF0YTppfSkpP2E6IiIpKyIgIDwvdWw+XG48L2Rpdj5cbjx1bCBjbGFzcz0nZW5kcG9pbnRzJyBpZD0nIisobnVsbCE9KGE9KG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fHUpLmNhbGwobCxudWxsIT10P3QuaWQ6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyJfZW5kcG9pbnRfbGlzdCcgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+XG5cbjwvdWw+XG4ifSx1c2VEYXRhOiEwfSksdC5yZXNwb25zZV9jb250ZW50X3R5cGU9ZSh7MTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhO3JldHVybiBudWxsIT0oYT1uLmVhY2guY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LnByb2R1Y2VzOnQse25hbWU6ImVhY2giLGhhc2g6e30sZm46ZS5wcm9ncmFtKDIsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIn0sMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9LHM9bi5oZWxwZXJNaXNzaW5nO3JldHVybicgIDxvcHRpb24gdmFsdWU9IicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyciPicrKG51bGwhPShhPShuLnNhbml0aXplfHx0JiZ0LnNhbml0aXplfHxzKS5jYWxsKG8sdCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L29wdGlvbj5cbiJ9LDQ6ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4nICA8b3B0aW9uIHZhbHVlPSJhcHBsaWNhdGlvbi9qc29uIj5hcHBsaWNhdGlvbi9qc29uPC9vcHRpb24+XG4nfSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbyxzPW51bGwhPXQ/dDp7fSxsPW4uaGVscGVyTWlzc2luZyx1PSJmdW5jdGlvbiIsYz1lLmVzY2FwZUV4cHJlc3Npb247cmV0dXJuJzxsYWJlbCBkYXRhLXN3LXRyYW5zbGF0ZSBmb3I9IicrYygobz1udWxsIT0obz1uLnJlc3BvbnNlQ29udGVudFR5cGVJZHx8KG51bGwhPXQ/dC5yZXNwb25zZUNvbnRlbnRUeXBlSWQ6dCkpP286bCx0eXBlb2Ygbz09PXU/by5jYWxsKHMse25hbWU6InJlc3BvbnNlQ29udGVudFR5cGVJZCIsaGFzaDp7fSxkYXRhOml9KTpvKSkrJyI+UmVzcG9uc2UgQ29udGVudCBUeXBlPC9sYWJlbD5cbjxzZWxlY3QgbmFtZT0icmVzcG9uc2VDb250ZW50VHlwZSIgaWQ9IicrYygobz1udWxsIT0obz1uLnJlc3BvbnNlQ29udGVudFR5cGVJZHx8KG51bGwhPXQ/dC5yZXNwb25zZUNvbnRlbnRUeXBlSWQ6dCkpP286bCx0eXBlb2Ygbz09PXU/by5jYWxsKHMse25hbWU6InJlc3BvbnNlQ29udGVudFR5cGVJZCIsaGFzaDp7fSxkYXRhOml9KTpvKSkrJyI+XG4nKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwocyxudWxsIT10P3QucHJvZHVjZXM6dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUucHJvZ3JhbSg0LGksMCksZGF0YTppfSkpP2E6IiIpKyI8L3NlbGVjdD5cbiJ9LHVzZURhdGE6ITB9KSx0LnNpZ25hdHVyZT1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e307cmV0dXJuJ1xuPGRpdj5cbjx1bCBjbGFzcz0ic2lnbmF0dXJlLW5hdiI+XG4gIDxsaT48YSBjbGFzcz0iZGVzY3JpcHRpb24tbGluayIgaHJlZj0iIyIgZGF0YS1zdy10cmFuc2xhdGU+TW9kZWw8L2E+PC9saT5cbiAgPGxpPjxhIGNsYXNzPSJzbmlwcGV0LWxpbmsiIGhyZWY9IiMiIGRhdGEtc3ctdHJhbnNsYXRlPkV4YW1wbGUgVmFsdWU8L2E+PC9saT5cbjwvdWw+XG48ZGl2PlxuXG48ZGl2IGNsYXNzPSJzaWduYXR1cmUtY29udGFpbmVyIj5cbiAgPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPlxuICAgICAgJytlLmVzY2FwZUV4cHJlc3Npb24oKG4uc2FuaXRpemV8fHQmJnQuc2FuaXRpemV8fG4uaGVscGVyTWlzc2luZykuY2FsbChvLG51bGwhPXQ/dC5zaWduYXR1cmU6dCx7bmFtZToic2FuaXRpemUiLGhhc2g6e30sZGF0YTppfSkpKydcbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ic25pcHBldCI+XG4nKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3Quc2FtcGxlSlNPTjp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMixpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LnNhbXBsZVhNTDp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oNSxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiICA8L2Rpdj5cbjwvZGl2PlxuIn0sMjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG89bnVsbCE9dD90Ont9O3JldHVybicgICAgICA8ZGl2IGNsYXNzPSJzbmlwcGV0X2pzb24iPlxuICAgICAgICA8cHJlPjxjb2RlPicrKG51bGwhPShhPShuLmVzY2FwZXx8dCYmdC5lc2NhcGV8fG4uaGVscGVyTWlzc2luZykuY2FsbChvLG51bGwhPXQ/dC5zYW1wbGVKU09OOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvY29kZT48L3ByZT5cbiAgICAgICAgIisobnVsbCE9KGE9blsiaWYiXS5jYWxsKG8sbnVsbCE9dD90LmlzUGFyYW06dCx7bmFtZToiaWYiLGhhc2g6e30sZm46ZS5wcm9ncmFtKDMsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIlxuICAgICAgPC9kaXY+XG4ifSwzOmZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuJzxzbWFsbCBjbGFzcz0ibm90aWNlIiBkYXRhLXN3LXRyYW5zbGF0ZT48L3NtYWxsPid9LDU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgYSxvPW51bGwhPXQ/dDp7fTtyZXR1cm4nICAgIDxkaXYgY2xhc3M9InNuaXBwZXRfeG1sIj5cbiAgICAgIDxwcmU+PGNvZGU+JysobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8bi5oZWxwZXJNaXNzaW5nKS5jYWxsKG8sbnVsbCE9dD90LnNhbXBsZVhNTDp0LHtuYW1lOiJlc2NhcGUiLGhhc2g6e30sZGF0YTppfSkpP2E6IiIpKyI8L2NvZGU+PC9wcmU+XG4gICAgICAiKyhudWxsIT0oYT1uWyJpZiJdLmNhbGwobyxudWxsIT10P3QuaXNQYXJhbTp0LHtuYW1lOiJpZiIsaGFzaDp7fSxmbjplLnByb2dyYW0oMyxpLDApLGludmVyc2U6ZS5ub29wLGRhdGE6aX0pKT9hOiIiKSsiXG4gICAgPC9kaXY+XG4ifSw3OmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIiAgICAiKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxuLmhlbHBlck1pc3NpbmcpLmNhbGwobnVsbCE9dD90Ont9LG51bGwhPXQ/dC5zaWduYXR1cmU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiXG4ifSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGE7cmV0dXJuIG51bGwhPShhPShuLmlmQ29uZHx8dCYmdC5pZkNvbmR8fG4uaGVscGVyTWlzc2luZykuY2FsbChudWxsIT10P3Q6e30sbnVsbCE9dD90LnNhbXBsZUpTT046dCwifHwiLG51bGwhPXQ/dC5zYW1wbGVYTUw6dCx7bmFtZToiaWZDb25kIixoYXNoOnt9LGZuOmUucHJvZ3JhbSgxLGksMCksaW52ZXJzZTplLnByb2dyYW0oNyxpLDApLGRhdGE6aX0pKT9hOiIifSx1c2VEYXRhOiEwfSksdC5zdGF0dXNfY29kZT1lKHsxOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbyxzPW51bGwhPXQ/dDp7fSxsPW4uaGVscGVyTWlzc2luZztyZXR1cm4iICAgICAgPHRyPlxuICAgICAgICA8dGQ+IitlLmVzY2FwZUV4cHJlc3Npb24oKG89bnVsbCE9KG89bi5rZXl8fGkmJmkua2V5KT9vOmwsImZ1bmN0aW9uIj09dHlwZW9mIG8/by5jYWxsKHMse25hbWU6ImtleSIsaGFzaDp7fSxkYXRhOml9KTpvKSkrIjwvdGQ+XG4gICAgICAgIDx0ZD4iKyhudWxsIT0oYT0obi5zYW5pdGl6ZXx8dCYmdC5zYW5pdGl6ZXx8bCkuY2FsbChzLG51bGwhPXQ/dC5kZXNjcmlwdGlvbjp0LHtuYW1lOiJzYW5pdGl6ZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrIjwvdGQ+XG4gICAgICAgIDx0ZD4iKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxsKS5jYWxsKHMsbnVsbCE9dD90LnR5cGU6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsiPC90ZD5cbiAgICAgIDwvdHI+XG4ifSxjb21waWxlcjpbNywiPj0gNC4wLjAiXSxtYWluOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIGEsbz1udWxsIT10P3Q6e30scz1uLmhlbHBlck1pc3Npbmc7cmV0dXJuIjx0ZCB3aWR0aD0nMTUlJyBjbGFzcz0nY29kZSc+IisobnVsbCE9KGE9KG4uZXNjYXBlfHx0JiZ0LmVzY2FwZXx8cykuY2FsbChvLG51bGwhPXQ/dC5jb2RlOnQse25hbWU6ImVzY2FwZSIsaGFzaDp7fSxkYXRhOml9KSk/YToiIikrJzwvdGQ+XG48dGQgY2xhc3M9Im1hcmtkb3duIj4nKyhudWxsIT0oYT0obi5lc2NhcGV8fHQmJnQuZXNjYXBlfHxzKS5jYWxsKG8sbnVsbCE9dD90Lm1lc3NhZ2U6dCx7bmFtZToiZXNjYXBlIixoYXNoOnt9LGRhdGE6aX0pKT9hOiIiKSsnPC90ZD5cbjx0ZCB3aWR0aD1cJzUwJVwnPjxzcGFuIGNsYXNzPSJtb2RlbC1zaWduYXR1cmUiIC8+PC90ZD5cbjx0ZCBjbGFzcz0iaGVhZGVycyI+XG4gIDx0YWJsZT5cbiAgICA8dGJvZHk+XG4nKyhudWxsIT0oYT1uLmVhY2guY2FsbChvLG51bGwhPXQ/dC5oZWFkZXJzOnQse25hbWU6ImVhY2giLGhhc2g6e30sZm46ZS5wcm9ncmFtKDEsaSwwKSxpbnZlcnNlOmUubm9vcCxkYXRhOml9KSk/YToiIikrIiAgICA8L3Rib2R5PlxuICA8L3RhYmxlPlxuPC90ZD4ifSx1c2VEYXRhOiEwfSl9KCksJChmdW5jdGlvbigpeyQuZm4udkFsaWduPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPSQodGhpcykuaGVpZ2h0KCksdD0kKHRoaXMpLnBhcmVudCgpLmhlaWdodCgpLG49KHQtZSkvMjskKHRoaXMpLmNzcygibWFyZ2luLXRvcCIsbil9KX0sJC5mbi5zdHJldGNoRm9ybXRhc3RpY0lucHV0V2lkdGhUb1BhcmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpLmNsb3Nlc3QoImZvcm0iKS5pbm5lcldpZHRoKCksdD1wYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoImZvcm0iKS5jc3MoInBhZGRpbmctbGVmdCIpLDEwKStwYXJzZUludCgkKHRoaXMpLmNsb3Nlc3QoImZvcm0iKS5jc3MoInBhZGRpbmctcmlnaHQiKSwxMCksbj1wYXJzZUludCgkKHRoaXMpLmNzcygicGFkZGluZy1sZWZ0IiksMTApK3BhcnNlSW50KCQodGhpcykuY3NzKCJwYWRkaW5nLXJpZ2h0IiksMTApOyQodGhpcykuY3NzKCJ3aWR0aCIsZS10LW4pfSl9LCQoImZvcm0uZm9ybXRhc3RpYyBsaS5zdHJpbmcgaW5wdXQsIGZvcm0uZm9ybXRhc3RpYyB0ZXh0YXJlYSIpLnN0cmV0Y2hGb3JtdGFzdGljSW5wdXRXaWR0aFRvUGFyZW50KCksJCgidWwuZG93bnBsYXllZCBsaSBkaXYuY29udGVudCBwIikudkFsaWduKCksJCgiZm9ybS5zYW5kYm94Iikuc3VibWl0KGZ1bmN0aW9uKCl7dmFyIGU9ITA7cmV0dXJuICQodGhpcykuZmluZCgiaW5wdXQucmVxdWlyZWQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiZXJyb3IiKSwiIj09PSQodGhpcykudmFsKCkmJigkKHRoaXMpLmFkZENsYXNzKCJlcnJvciIpLCQodGhpcykud2lnZ2xlKCksZT0hMSl9KSxlfSl9KSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZCYmY29uc29sZSYmIm9iamVjdCI9PXR5cGVvZiBjb25zb2xlLmxvZyYmWyJsb2ciLCJpbmZvIiwid2FybiIsImVycm9yIiwiYXNzZXJ0IiwiZGlyIiwiY2xlYXIiLCJwcm9maWxlIiwicHJvZmlsZUVuZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7Y29uc29sZVtlXT10aGlzLmJpbmQoY29uc29sZVtlXSxjb25zb2xlKX0sRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwpLHdpbmRvdy5Eb2NzPXtzaGViYW5nOmZ1bmN0aW9uKCl7dmFyIGU9JC5wYXJhbS5mcmFnbWVudCgpLnNwbGl0KCIvIik7c3dpdGNoKGUuc2hpZnQoKSxlLmxlbmd0aCl7Y2FzZSAxOmlmKGVbMF0ubGVuZ3RoPjApe3ZhciB0PSJyZXNvdXJjZV8iK2VbMF07RG9jcy5leHBhbmRFbmRwb2ludExpc3RGb3JSZXNvdXJjZShlWzBdKSwkKCIjIit0KS5zbGlkZXRvKHtoaWdobGlnaHQ6ITF9KX1icmVhaztjYXNlIDI6RG9jcy5leHBhbmRFbmRwb2ludExpc3RGb3JSZXNvdXJjZShlWzBdKSwkKCIjIit0KS5zbGlkZXRvKHtoaWdobGlnaHQ6ITF9KTt2YXIgbj1lLmpvaW4oIl8iKSxyPW4rIl9jb250ZW50IjtEb2NzLmV4cGFuZE9wZXJhdGlvbigkKCIjIityKSksJCgiIyIrbikuc2xpZGV0byh7aGlnaGxpZ2h0OiExfSl9fSx0b2dnbGVFbmRwb2ludExpc3RGb3JSZXNvdXJjZTpmdW5jdGlvbihlKXt2YXIgdD0kKCJsaSNyZXNvdXJjZV8iK0RvY3MuZXNjYXBlUmVzb3VyY2VOYW1lKGUpKyIgdWwuZW5kcG9pbnRzIik7dC5pcygiOnZpc2libGUiKT8oJC5iYnEucHVzaFN0YXRlKCIjLyIsMiksRG9jcy5jb2xsYXBzZUVuZHBvaW50TGlzdEZvclJlc291cmNlKGUpKTooJC5iYnEucHVzaFN0YXRlKCIjLyIrZSwyKSxEb2NzLmV4cGFuZEVuZHBvaW50TGlzdEZvclJlc291cmNlKGUpKX0sZXhwYW5kRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2U6ZnVuY3Rpb24oZSl7dmFyIGU9RG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUoZSk7aWYoIiI9PWUpcmV0dXJuIHZvaWQgJCgiLnJlc291cmNlIHVsLmVuZHBvaW50cyIpLnNsaWRlRG93bigpOyQoImxpI3Jlc291cmNlXyIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpO3ZhciB0PSQoImxpI3Jlc291cmNlXyIrZSsiIHVsLmVuZHBvaW50cyIpO3Quc2xpZGVEb3duKCl9LGNvbGxhcHNlRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2U6ZnVuY3Rpb24oZSl7dmFyIGU9RG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUoZSk7aWYoIiI9PWUpcmV0dXJuIHZvaWQgJCgiLnJlc291cmNlIHVsLmVuZHBvaW50cyIpLnNsaWRlVXAoKTskKCJsaSNyZXNvdXJjZV8iK2UpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgdD0kKCJsaSNyZXNvdXJjZV8iK2UrIiB1bC5lbmRwb2ludHMiKTt0LnNsaWRlVXAoKX0sZXhwYW5kT3BlcmF0aW9uc0ZvclJlc291cmNlOmZ1bmN0aW9uKGUpe3JldHVybiBEb2NzLmV4cGFuZEVuZHBvaW50TGlzdEZvclJlc291cmNlKGUpLCIiPT1lP3ZvaWQgJCgiLnJlc291cmNlIHVsLmVuZHBvaW50cyBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQiKS5zbGlkZURvd24oKTp2b2lkICQoImxpI3Jlc291cmNlXyIrRG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUoZSkrIiBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQiKS5lYWNoKGZ1bmN0aW9uKCl7RG9jcy5leHBhbmRPcGVyYXRpb24oJCh0aGlzKSl9KX0sY29sbGFwc2VPcGVyYXRpb25zRm9yUmVzb3VyY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIERvY3MuZXhwYW5kRW5kcG9pbnRMaXN0Rm9yUmVzb3VyY2UoZSksIiI9PWU/dm9pZCAkKCIucmVzb3VyY2UgdWwuZW5kcG9pbnRzIGxpLm9wZXJhdGlvbiBkaXYuY29udGVudCIpLnNsaWRlVXAoKTp2b2lkICQoImxpI3Jlc291cmNlXyIrRG9jcy5lc2NhcGVSZXNvdXJjZU5hbWUoZSkrIiBsaS5vcGVyYXRpb24gZGl2LmNvbnRlbnQiKS5lYWNoKGZ1bmN0aW9uKCl7RG9jcy5jb2xsYXBzZU9wZXJhdGlvbigkKHRoaXMpKX0pfSxlc2NhcGVSZXNvdXJjZU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWyEiIyQlJicoKSorLC5cLzo7PD0+P0BcW1xcXF1cXmB7fH1+XS9nLCJcXCQmIil9LGV4cGFuZE9wZXJhdGlvbjpmdW5jdGlvbihlKXtlLnNsaWRlRG93bigpfSxjb2xsYXBzZU9wZXJhdGlvbjpmdW5jdGlvbihlKXtlLnNsaWRlVXAoKX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz10KCk6ZS5yZXR1cm5FeHBvcnRzPXQoKX0odGhpcyxmdW5jdGlvbigpe3ZhciBlLHQsbj1BcnJheSxyPW4ucHJvdG90eXBlLGk9T2JqZWN0LGE9aS5wcm90b3R5cGUsbz1GdW5jdGlvbixzPW8ucHJvdG90eXBlLGw9U3RyaW5nLHU9bC5wcm90b3R5cGUsYz1OdW1iZXIscD1jLnByb3RvdHlwZSxoPXIuc2xpY2UsZj1yLnNwbGljZSxkPXIucHVzaCxtPXIudW5zaGlmdCxnPXIuY29uY2F0LHk9ci5qb2luLHY9cy5jYWxsLGI9cy5hcHBseSx3PU1hdGgubWF4LF89TWF0aC5taW4seD1hLnRvU3RyaW5nLEE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcsUz1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsaj0vXlxzKmNsYXNzIC8sRT1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9Uy5jYWxsKGUpLG49dC5yZXBsYWNlKC9cL1wvLipcbi9nLCIiKSxyPW4ucmVwbGFjZSgvXC9cKlsuXHNcU10qXCpcLy9nLCIiKSxpPXIucmVwbGFjZSgvXG4vZ20sIiAiKS5yZXBsYWNlKC8gezJ9L2csIiAiKTtyZXR1cm4gai50ZXN0KGkpfWNhdGNoKGEpe3JldHVybiExfX0sTz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIUUoZSkmJihTLmNhbGwoZSksITApfWNhdGNoKHQpe3JldHVybiExfX0saz0iW29iamVjdCBGdW5jdGlvbl0iLFQ9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixlPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiYib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuITE7aWYoQSlyZXR1cm4gTyhlKTtpZihFKGUpKXJldHVybiExO3ZhciB0PXguY2FsbChlKTtyZXR1cm4gdD09PWt8fHQ9PT1UfSxDPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxJPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gQy5jYWxsKGUpLCEwfWNhdGNoKHQpe3JldHVybiExfX0sRD0iW29iamVjdCBSZWdFeHBdIjt0PWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmKEE/SShlKTp4LmNhbGwoZSk9PT1EKX07dmFyIEwsTT1TdHJpbmcucHJvdG90eXBlLnZhbHVlT2YsUj1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIE0uY2FsbChlKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19LFU9IltvYmplY3QgU3RyaW5nXSI7TD1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJvYmplY3QiPT10eXBlb2YgZSYmKEE/UihlKTp4LmNhbGwoZSk9PT1VKX07dmFyIFA9aS5kZWZpbmVQcm9wZXJ0eSYmZnVuY3Rpb24oKXt0cnl7dmFyIGU9e307aS5kZWZpbmVQcm9wZXJ0eShlLCJ4Iix7ZW51bWVyYWJsZTohMSx2YWx1ZTplfSk7Zm9yKHZhciB0IGluIGUpcmV0dXJuITE7cmV0dXJuIGUueD09PWV9Y2F0Y2gobil7cmV0dXJuITF9fSgpLHE9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHQ9UD9mdW5jdGlvbihlLHQsbixyKXshciYmdCBpbiBlfHxpLmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6bn0pfTpmdW5jdGlvbihlLHQsbixyKXshciYmdCBpbiBlfHwoZVt0XT1uKX0sZnVuY3Rpb24obixyLGkpe2Zvcih2YXIgYSBpbiByKWUuY2FsbChyLGEpJiZ0KG4sYSxyW2FdLGkpfX0oYS5oYXNPd25Qcm9wZXJ0eSksQj1mdW5jdGlvbihlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gbnVsbD09PWV8fCJvYmplY3QiIT09dCYmImZ1bmN0aW9uIiE9PXR9LHo9Yy5pc05hTnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1lfSxOPXtUb0ludGVnZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHoodCk/dD0wOjAhPT10JiZ0IT09MS8wJiZ0IT09LSgxLzApJiYodD0odD4wfHwtMSkqTWF0aC5mbG9vcihNYXRoLmFicyh0KSkpLHR9LFRvUHJpbWl0aXZlOmZ1bmN0aW9uKHQpe3ZhciBuLHIsaTtpZihCKHQpKXJldHVybiB0O2lmKHI9dC52YWx1ZU9mLGUocikmJihuPXIuY2FsbCh0KSxCKG4pKSlyZXR1cm4gbjtpZihpPXQudG9TdHJpbmcsZShpKSYmKG49aS5jYWxsKHQpLEIobikpKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3J9LFRvT2JqZWN0OmZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiK2UrIiB0byBvYmplY3QiKTtyZXR1cm4gaShlKX0sVG9VaW50MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+Pj4wfX0sJD1mdW5jdGlvbigpe307cShzLHtiaW5kOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7aWYoIWUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAiK24pO2Zvcih2YXIgcixhPWguY2FsbChhcmd1bWVudHMsMSkscz1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiByKXt2YXIgZT1iLmNhbGwobix0aGlzLGcuY2FsbChhLGguY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIGkoZSk9PT1lP2U6dGhpc31yZXR1cm4gYi5jYWxsKG4sdCxnLmNhbGwoYSxoLmNhbGwoYXJndW1lbnRzKSkpfSxsPXcoMCxuLmxlbmd0aC1hLmxlbmd0aCksdT1bXSxjPTA7YzxsO2MrKylkLmNhbGwodSwiJCIrYyk7cmV0dXJuIHI9bygiYmluZGVyIiwicmV0dXJuIGZ1bmN0aW9uICgiK3kuY2FsbCh1LCIsIikrIil7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSIpKHMpLG4ucHJvdG90eXBlJiYoJC5wcm90b3R5cGU9bi5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3ICQsJC5wcm90b3R5cGU9bnVsbCkscn19KTt2YXIgRj12LmJpbmQoYS5oYXNPd25Qcm9wZXJ0eSksVj12LmJpbmQoYS50b1N0cmluZyksSD12LmJpbmQoaCksWT1iLmJpbmQoaCksSj12LmJpbmQodS5zbGljZSksVz12LmJpbmQodS5zcGxpdCksUT12LmJpbmQodS5pbmRleE9mKSxHPXYuYmluZChkKSxLPXYuYmluZChhLnByb3BlcnR5SXNFbnVtZXJhYmxlKSxYPXYuYmluZChyLnNvcnQpLFo9bi5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09VihlKX0sZWU9MSE9PVtdLnVuc2hpZnQoMCk7cShyLHt1bnNoaWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG0uYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMubGVuZ3RofX0sZWUpLHEobix7aXNBcnJheTpafSk7dmFyIHRlPWkoImEiKSxuZT0iYSIhPT10ZVswXXx8ISgwIGluIHRlKSxyZT1mdW5jdGlvbihlKXt2YXIgdD0hMCxuPSEwLHI9ITE7aWYoZSl0cnl7ZS5jYWxsKCJmb28iLGZ1bmN0aW9uKGUsbixyKXsib2JqZWN0IiE9dHlwZW9mIHImJih0PSExKX0pLGUuY2FsbChbMV0sZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bj0ic3RyaW5nIj09dHlwZW9mIHRoaXN9LCJ4Iil9Y2F0Y2goaSl7cj0hMH1yZXR1cm4hIWUmJiFyJiZ0JiZufTtxKHIse2ZvckVhY2g6ZnVuY3Rpb24odCl7dmFyIG4scj1OLlRvT2JqZWN0KHRoaXMpLGk9bmUmJkwodGhpcyk/Vyh0aGlzLCIiKTpyLGE9LTEsbz1OLlRvVWludDMyKGkubGVuZ3RoKTtpZihhcmd1bWVudHMubGVuZ3RoPjEmJihuPWFyZ3VtZW50c1sxXSksIWUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKDsrK2E8bzspYSBpbiBpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuP3QoaVthXSxhLHIpOnQuY2FsbChuLGlbYV0sYSxyKSl9fSwhcmUoci5mb3JFYWNoKSkscShyLHttYXA6ZnVuY3Rpb24odCl7dmFyIHIsaT1OLlRvT2JqZWN0KHRoaXMpLGE9bmUmJkwodGhpcyk/Vyh0aGlzLCIiKTppLG89Ti5Ub1VpbnQzMihhLmxlbmd0aCkscz1uKG8pO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmKHI9YXJndW1lbnRzWzFdKSwhZSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Zvcih2YXIgbD0wO2w8bztsKyspbCBpbiBhJiYoInVuZGVmaW5lZCI9PXR5cGVvZiByP3NbbF09dChhW2xdLGwsaSk6c1tsXT10LmNhbGwocixhW2xdLGwsaSkpO3JldHVybiBzfX0sIXJlKHIubWFwKSkscShyLHtmaWx0ZXI6ZnVuY3Rpb24odCl7dmFyIG4scixpPU4uVG9PYmplY3QodGhpcyksYT1uZSYmTCh0aGlzKT9XKHRoaXMsIiIpOmksbz1OLlRvVWludDMyKGEubGVuZ3RoKSxzPVtdO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmKHI9YXJndW1lbnRzWzFdKSwhZSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Zvcih2YXIgbD0wO2w8bztsKyspbCBpbiBhJiYobj1hW2xdLCgidW5kZWZpbmVkIj09dHlwZW9mIHI/dChuLGwsaSk6dC5jYWxsKHIsbixsLGkpKSYmRyhzLG4pKTtyZXR1cm4gc319LCFyZShyLmZpbHRlcikpLHEocix7ZXZlcnk6ZnVuY3Rpb24odCl7dmFyIG4scj1OLlRvT2JqZWN0KHRoaXMpLGk9bmUmJkwodGhpcyk/Vyh0aGlzLCIiKTpyLGE9Ti5Ub1VpbnQzMihpLmxlbmd0aCk7aWYoYXJndW1lbnRzLmxlbmd0aD4xJiYobj1hcmd1bWVudHNbMV0pLCFlKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IodmFyIG89MDtvPGE7bysrKWlmKG8gaW4gaSYmISgidW5kZWZpbmVkIj09dHlwZW9mIG4/dChpW29dLG8scik6dC5jYWxsKG4saVtvXSxvLHIpKSlyZXR1cm4hMTtyZXR1cm4hMH19LCFyZShyLmV2ZXJ5KSkscShyLHtzb21lOmZ1bmN0aW9uKHQpe3ZhciBuLHI9Ti5Ub09iamVjdCh0aGlzKSxpPW5lJiZMKHRoaXMpP1codGhpcywiIik6cixhPU4uVG9VaW50MzIoaS5sZW5ndGgpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSYmKG49YXJndW1lbnRzWzFdKSwhZSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29tZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IodmFyIG89MDtvPGE7bysrKWlmKG8gaW4gaSYmKCJ1bmRlZmluZWQiPT10eXBlb2Ygbj90KGlbb10sbyxyKTp0LmNhbGwobixpW29dLG8scikpKXJldHVybiEwO3JldHVybiExfX0sIXJlKHIuc29tZSkpO3ZhciBpZT0hMTtyLnJlZHVjZSYmKGllPSJvYmplY3QiPT10eXBlb2Ygci5yZWR1Y2UuY2FsbCgiZXM1IixmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gcn0pKSxxKHIse3JlZHVjZTpmdW5jdGlvbih0KXt2YXIgbj1OLlRvT2JqZWN0KHRoaXMpLHI9bmUmJkwodGhpcyk/Vyh0aGlzLCIiKTpuLGk9Ti5Ub1VpbnQzMihyLmxlbmd0aCk7aWYoIWUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJlZHVjZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZigwPT09aSYmMT09PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigicmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO3ZhciBhLG89MDtpZihhcmd1bWVudHMubGVuZ3RoPj0yKWE9YXJndW1lbnRzWzFdO2Vsc2UgZm9yKDs7KXtpZihvIGluIHIpe2E9cltvKytdO2JyZWFrfWlmKCsrbz49aSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDtvPGk7bysrKW8gaW4gciYmKGE9dChhLHJbb10sbyxuKSk7cmV0dXJuIGF9fSwhaWUpO3ZhciBhZT0hMTtyLnJlZHVjZVJpZ2h0JiYoYWU9Im9iamVjdCI9PXR5cGVvZiByLnJlZHVjZVJpZ2h0LmNhbGwoImVzNSIsZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHJ9KSkscShyLHtyZWR1Y2VSaWdodDpmdW5jdGlvbih0KXt2YXIgbj1OLlRvT2JqZWN0KHRoaXMpLHI9bmUmJkwodGhpcyk/Vyh0aGlzLCIiKTpuLGk9Ti5Ub1VpbnQzMihyLmxlbmd0aCk7aWYoIWUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2lmKDA9PT1pJiYxPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2VSaWdodCBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTt2YXIgYSxvPWktMTtpZihhcmd1bWVudHMubGVuZ3RoPj0yKWE9YXJndW1lbnRzWzFdO2Vsc2UgZm9yKDs7KXtpZihvIGluIHIpe2E9cltvLS1dO2JyZWFrfWlmKC0tbzwwKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZVJpZ2h0IG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWlmKG88MClyZXR1cm4gYTtkbyBvIGluIHImJihhPXQoYSxyW29dLG8sbikpO3doaWxlKG8tLSk7cmV0dXJuIGF9fSwhYWUpO3ZhciBvZT1yLmluZGV4T2YmJlswLDFdLmluZGV4T2YoMSwyKSE9PS0xO3Eocix7aW5kZXhPZjpmdW5jdGlvbihlKXt2YXIgdD1uZSYmTCh0aGlzKT9XKHRoaXMsIiIpOk4uVG9PYmplY3QodGhpcyksbj1OLlRvVWludDMyKHQubGVuZ3RoKTtpZigwPT09bilyZXR1cm4tMTt2YXIgcj0wO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihyPU4uVG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSkpLHI9cj49MD9yOncoMCxuK3IpO3I8bjtyKyspaWYociBpbiB0JiZ0W3JdPT09ZSlyZXR1cm4gcjtyZXR1cm4tMX19LG9lKTt2YXIgc2U9ci5sYXN0SW5kZXhPZiYmWzAsMV0ubGFzdEluZGV4T2YoMCwtMykhPT0tMTtxKHIse2xhc3RJbmRleE9mOmZ1bmN0aW9uKGUpe3ZhciB0PW5lJiZMKHRoaXMpP1codGhpcywiIik6Ti5Ub09iamVjdCh0aGlzKSxuPU4uVG9VaW50MzIodC5sZW5ndGgpO2lmKDA9PT1uKXJldHVybi0xO3ZhciByPW4tMTtmb3IoYXJndW1lbnRzLmxlbmd0aD4xJiYocj1fKHIsTi5Ub0ludGVnZXIoYXJndW1lbnRzWzFdKSkpLHI9cj49MD9yOm4tTWF0aC5hYnMocik7cj49MDtyLS0paWYociBpbiB0JiZlPT09dFtyXSlyZXR1cm4gcjtyZXR1cm4tMX19LHNlKTt2YXIgbGU9ZnVuY3Rpb24oKXt2YXIgZT1bMSwyXSx0PWUuc3BsaWNlKCk7cmV0dXJuIDI9PT1lLmxlbmd0aCYmWih0KSYmMD09PXQubGVuZ3RofSgpO3Eocix7c3BsaWNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP1tdOmYuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sIWxlKTt2YXIgdWU9ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gci5zcGxpY2UuY2FsbChlLDAsMCwxKSwxPT09ZS5sZW5ndGh9KCk7cShyLHtzcGxpY2U6ZnVuY3Rpb24oZSx0KXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTt2YXIgbj1hcmd1bWVudHM7cmV0dXJuIHRoaXMubGVuZ3RoPXcoTi5Ub0ludGVnZXIodGhpcy5sZW5ndGgpLDApLGFyZ3VtZW50cy5sZW5ndGg+MCYmIm51bWJlciIhPXR5cGVvZiB0JiYobj1IKGFyZ3VtZW50cyksbi5sZW5ndGg8Mj9HKG4sdGhpcy5sZW5ndGgtZSk6blsxXT1OLlRvSW50ZWdlcih0KSksZi5hcHBseSh0aGlzLG4pfX0sIXVlKTt2YXIgY2U9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgbigxZTUpO3JldHVybiBlWzhdPSJ4IixlLnNwbGljZSgxLDEpLDc9PT1lLmluZGV4T2YoIngiKX0oKSxwZT1mdW5jdGlvbigpe3ZhciBlPTI1Nix0PVtdO3JldHVybiB0W2VdPSJhIix0LnNwbGljZShlKzEsMCwiYiIpLCJhIj09PXRbZV19KCk7cShyLHtzcGxpY2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1OLlRvT2JqZWN0KHRoaXMpLGk9W10sYT1OLlRvVWludDMyKHIubGVuZ3RoKSxvPU4uVG9JbnRlZ2VyKGUpLHM9bzwwP3coYStvLDApOl8obyxhKSx1PV8odyhOLlRvSW50ZWdlcih0KSwwKSxhLXMpLGM9MDtjPHU7KW49bChzK2MpLEYocixuKSYmKGlbY109cltuXSksYys9MTt2YXIgcCxoPUgoYXJndW1lbnRzLDIpLGY9aC5sZW5ndGg7aWYoZjx1KXtjPXM7Zm9yKHZhciBkPWEtdTtjPGQ7KW49bChjK3UpLHA9bChjK2YpLEYocixuKT9yW3BdPXJbbl06ZGVsZXRlIHJbcF0sYys9MTtjPWE7Zm9yKHZhciBtPWEtdStmO2M+bTspZGVsZXRlIHJbYy0xXSxjLT0xfWVsc2UgaWYoZj51KWZvcihjPWEtdTtjPnM7KW49bChjK3UtMSkscD1sKGMrZi0xKSxGKHIsbik/cltwXT1yW25dOmRlbGV0ZSByW3BdLGMtPTE7Yz1zO2Zvcih2YXIgZz0wO2c8aC5sZW5ndGg7KytnKXJbY109aFtnXSxjKz0xO3JldHVybiByLmxlbmd0aD1hLXUrZixpfX0sIWNlfHwhcGUpO3ZhciBoZSxmZT1yLmpvaW47dHJ5e2hlPSIxLDIsMyIhPT1BcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKCIxMjMiLCIsIil9Y2F0Y2goZGUpe2hlPSEwfWhlJiZxKHIse2pvaW46ZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCI9PXR5cGVvZiBlPyIsIjplO3JldHVybiBmZS5jYWxsKEwodGhpcyk/Vyh0aGlzLCIiKTp0aGlzLHQpfX0saGUpO3ZhciBtZT0iMSwyIiE9PVsxLDJdLmpvaW4odm9pZCAwKTttZSYmcShyLHtqb2luOmZ1bmN0aW9uKGUpe3ZhciB0PSJ1bmRlZmluZWQiPT10eXBlb2YgZT8iLCI6ZTtyZXR1cm4gZmUuY2FsbCh0aGlzLHQpfX0sbWUpO3ZhciBnZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9Ti5Ub09iamVjdCh0aGlzKSxuPU4uVG9VaW50MzIodC5sZW5ndGgpLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7KXRbbityXT1hcmd1bWVudHNbcl0scis9MTtyZXR1cm4gdC5sZW5ndGg9bityLG4rcn0seWU9ZnVuY3Rpb24oKXt2YXIgZT17fSx0PUFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwoZSx2b2lkIDApO3JldHVybiAxIT09dHx8MSE9PWUubGVuZ3RofHwidW5kZWZpbmVkIiE9dHlwZW9mIGVbMF18fCFGKGUsMCl9KCk7cShyLHtwdXNoOmZ1bmN0aW9uKGUpe3JldHVybiBaKHRoaXMpP2QuYXBwbHkodGhpcyxhcmd1bWVudHMpOmdlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHllKTt2YXIgdmU9ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PWUucHVzaCh2b2lkIDApO3JldHVybiAxIT09dHx8MSE9PWUubGVuZ3RofHwidW5kZWZpbmVkIiE9dHlwZW9mIGVbMF18fCFGKGUsMCl9KCk7cShyLHtwdXNoOmdlfSx2ZSkscShyLHtzbGljZTpmdW5jdGlvbihlLHQpe3ZhciBuPUwodGhpcyk/Vyh0aGlzLCIiKTp0aGlzO3JldHVybiBZKG4sYXJndW1lbnRzKX19LG5lKTt2YXIgYmU9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuWzEsMl0uc29ydChudWxsKSxbMSwyXS5zb3J0KHt9KSwhMH1jYXRjaChlKXt9cmV0dXJuITF9KCksd2U9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuWzEsMl0uc29ydCgvYS8pLCExfWNhdGNoKGUpe31yZXR1cm4hMH0oKSxfZT1mdW5jdGlvbigpe3RyeXtyZXR1cm5bMSwyXS5zb3J0KHZvaWQgMCksITB9Y2F0Y2goZSl7fXJldHVybiExfSgpO3Eocix7c29ydDpmdW5jdGlvbih0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHQpcmV0dXJuIFgodGhpcyk7aWYoIWUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnNvcnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7cmV0dXJuIFgodGhpcyx0KX19LGJlfHwhX2V8fCF3ZSk7dmFyIHhlPSFLKHt0b1N0cmluZzpudWxsfSwidG9TdHJpbmciKSxBZT1LKGZ1bmN0aW9uKCl7fSwicHJvdG90eXBlIiksU2U9IUYoIngiLCIwIiksamU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gdCYmdC5wcm90b3R5cGU9PT1lfSxFZT17JHdpbmRvdzohMCwkY29uc29sZTohMCwkcGFyZW50OiEwLCRzZWxmOiEwLCRmcmFtZTohMCwkZnJhbWVzOiEwLCRmcmFtZUVsZW1lbnQ6ITAsJHdlYmtpdEluZGV4ZWREQjohMCwkd2Via2l0U3RvcmFnZUluZm86ITAsJGV4dGVybmFsOiEwfSxPZT1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93KXJldHVybiExO2Zvcih2YXIgZSBpbiB3aW5kb3cpdHJ5eyFFZVsiJCIrZV0mJkYod2luZG93LGUpJiZudWxsIT09d2luZG93W2VdJiYib2JqZWN0Ij09dHlwZW9mIHdpbmRvd1tlXSYmamUod2luZG93W2VdKX1jYXRjaCh0KXtyZXR1cm4hMH1yZXR1cm4hMX0oKSxrZT1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IU9lKXJldHVybiBqZShlKTt0cnl7cmV0dXJuIGplKGUpfWNhdGNoKHQpe3JldHVybiExfX0sVGU9WyJ0b1N0cmluZyIsInRvTG9jYWxlU3RyaW5nIiwidmFsdWVPZiIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY29uc3RydWN0b3IiXSxDZT1UZS5sZW5ndGgsSWU9ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1WKGUpfSxEZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCYmdC5sZW5ndGg+PTAmJiFaKHQpJiZlKHQuY2FsbGVlKX0sTGU9SWUoYXJndW1lbnRzKT9JZTpEZTtxKGkse2tleXM6ZnVuY3Rpb24odCl7dmFyIG49ZSh0KSxyPUxlKHQpLGk9bnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCxhPWkmJkwodCk7aWYoIWkmJiFuJiYhcil0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Iik7dmFyIG89W10scz1BZSYmbjtpZihhJiZTZXx8cilmb3IodmFyIHU9MDt1PHQubGVuZ3RoOysrdSlHKG8sbCh1KSk7aWYoIXIpZm9yKHZhciBjIGluIHQpcyYmInByb3RvdHlwZSI9PT1jfHwhRih0LGMpfHxHKG8sbChjKSk7aWYoeGUpZm9yKHZhciBwPWtlKHQpLGg9MDtoPENlO2grKyl7dmFyIGY9VGVbaF07cCYmImNvbnN0cnVjdG9yIj09PWZ8fCFGKHQsZil8fEcobyxmKX1yZXR1cm4gb319KTt2YXIgTWU9aS5rZXlzJiZmdW5jdGlvbigpe3JldHVybiAyPT09aS5rZXlzKGFyZ3VtZW50cykubGVuZ3RofSgxLDIpLFJlPWkua2V5cyYmZnVuY3Rpb24oKXt2YXIgZT1pLmtleXMoYXJndW1lbnRzKTtyZXR1cm4gMSE9PWFyZ3VtZW50cy5sZW5ndGh8fDEhPT1lLmxlbmd0aHx8MSE9PWVbMF19KDEpLFVlPWkua2V5cztxKGkse2tleXM6ZnVuY3Rpb24oZSl7cmV0dXJuIFVlKExlKGUpP0goZSk6ZSl9fSwhTWV8fFJlKTt2YXIgUGUscWUsQmU9MCE9PW5ldyBEYXRlKCgtMHhjNzgyYjViMzQyYjI0KSkuZ2V0VVRDTW9udGgoKSx6ZT1uZXcgRGF0ZSgoLTB4NTVkMzE4ZDU2YTcyNCkpLE5lPW5ldyBEYXRlKDE0NDk2NjI0ZTUpLCRlPSJNb24sIDAxIEphbiAtNDU4NzUgMTE6NTk6NTkgR01UIiE9PXplLnRvVVRDU3RyaW5nKCksRmU9emUuZ2V0VGltZXpvbmVPZmZzZXQoKTtGZTwtNzIwPyhQZT0iVHVlIEphbiAwMiAtNDU4NzUiIT09emUudG9EYXRlU3RyaW5nKCkscWU9IS9eVGh1IERlYyAxMCAyMDE1IFxkXGQ6XGRcZDpcZFxkIEdNVFstXCtdXGRcZFxkXGQoPzogfCQpLy50ZXN0KE5lLnRvU3RyaW5nKCkpKTooUGU9Ik1vbiBKYW4gMDEgLTQ1ODc1IiE9PXplLnRvRGF0ZVN0cmluZygpLHFlPSEvXldlZCBEZWMgMDkgMjAxNSBcZFxkOlxkXGQ6XGRcZCBHTVRbLVwrXVxkXGRcZFxkKD86IHwkKS8udGVzdChOZS50b1N0cmluZygpKSk7dmFyIFZlPXYuYmluZChEYXRlLnByb3RvdHlwZS5nZXRGdWxsWWVhciksSGU9di5iaW5kKERhdGUucHJvdG90eXBlLmdldE1vbnRoKSxZZT12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0RGF0ZSksSmU9di5iaW5kKERhdGUucHJvdG90eXBlLmdldFVUQ0Z1bGxZZWFyKSxXZT12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDTW9udGgpLFFlPXYuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENEYXRlKSxHZT12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDRGF5KSxLZT12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDSG91cnMpLFhlPXYuYmluZChEYXRlLnByb3RvdHlwZS5nZXRVVENNaW51dGVzKSxaZT12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VVRDU2Vjb25kcyksZXQ9di5iaW5kKERhdGUucHJvdG90eXBlLmdldFVUQ01pbGxpc2Vjb25kcyksdHQ9WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxudD1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLHJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFllKG5ldyBEYXRlKHQsZSwwKSl9O3EoRGF0ZS5wcm90b3R5cGUse2dldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgZT1WZSh0aGlzKTtyZXR1cm4gZTwwJiZIZSh0aGlzKT4xMT9lKzE6ZX0sZ2V0TW9udGg6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciBlPVZlKHRoaXMpLHQ9SGUodGhpcyk7cmV0dXJuIGU8MCYmdD4xMT8wOnR9LGdldERhdGU6ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciBlPVZlKHRoaXMpLHQ9SGUodGhpcyksbj1ZZSh0aGlzKTtpZihlPDAmJnQ+MTEpe2lmKDEyPT09dClyZXR1cm4gbjt2YXIgcj1ydCgwLGUrMSk7cmV0dXJuIHItbisxfXJldHVybiBufSxnZXRVVENGdWxsWWVhcjpmdW5jdGlvbigpe2lmKCEodGhpcyYmdGhpcyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuIik7dmFyIGU9SmUodGhpcyk7cmV0dXJuIGU8MCYmV2UodGhpcyk+MTE/ZSsxOmV9LGdldFVUQ01vbnRoOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgZT1KZSh0aGlzKSx0PVdlKHRoaXMpO3JldHVybiBlPDAmJnQ+MTE/MDp0fSxnZXRVVENEYXRlOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgZT1KZSh0aGlzKSx0PVdlKHRoaXMpLG49UWUodGhpcyk7aWYoZTwwJiZ0PjExKXtpZigxMj09PXQpcmV0dXJuIG47dmFyIHI9cnQoMCxlKzEpO3JldHVybiByLW4rMX1yZXR1cm4gbn19LEJlKSxxKERhdGUucHJvdG90eXBlLHt0b1VUQ1N0cmluZzpmdW5jdGlvbigpe2lmKCEodGhpcyYmdGhpcyBpbnN0YW5jZW9mIERhdGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRoaXMgaXMgbm90IGEgRGF0ZSBvYmplY3QuIik7dmFyIGU9R2UodGhpcyksdD1RZSh0aGlzKSxuPVdlKHRoaXMpLHI9SmUodGhpcyksaT1LZSh0aGlzKSxhPVhlKHRoaXMpLG89WmUodGhpcyk7cmV0dXJuIHR0W2VdKyIsICIrKHQ8MTA/IjAiK3Q6dCkrIiAiK250W25dKyIgIityKyIgIisoaTwxMD8iMCIraTppKSsiOiIrKGE8MTA/IjAiK2E6YSkrIjoiKyhvPDEwPyIwIitvOm8pKyIgR01UIn19LEJlfHwkZSkscShEYXRlLnByb3RvdHlwZSx7dG9EYXRlU3RyaW5nOmZ1bmN0aW9uKCl7aWYoISh0aGlzJiZ0aGlzIGluc3RhbmNlb2YgRGF0ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBub3QgYSBEYXRlIG9iamVjdC4iKTt2YXIgZT10aGlzLmdldERheSgpLHQ9dGhpcy5nZXREYXRlKCksbj10aGlzLmdldE1vbnRoKCkscj10aGlzLmdldEZ1bGxZZWFyKCk7cmV0dXJuIHR0W2VdKyIgIitudFtuXSsiICIrKHQ8MTA/IjAiK3Q6dCkrIiAiK3J9fSxCZXx8UGUpLChCZXx8cWUpJiYoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZighKHRoaXMmJnRoaXMgaW5zdGFuY2VvZiBEYXRlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG5vdCBhIERhdGUgb2JqZWN0LiIpO3ZhciBlPXRoaXMuZ2V0RGF5KCksdD10aGlzLmdldERhdGUoKSxuPXRoaXMuZ2V0TW9udGgoKSxyPXRoaXMuZ2V0RnVsbFllYXIoKSxpPXRoaXMuZ2V0SG91cnMoKSxhPXRoaXMuZ2V0TWludXRlcygpLG89dGhpcy5nZXRTZWNvbmRzKCkscz10aGlzLmdldFRpbWV6b25lT2Zmc2V0KCksbD1NYXRoLmZsb29yKE1hdGguYWJzKHMpLzYwKSx1PU1hdGguZmxvb3IoTWF0aC5hYnMocyklNjApOworcmV0dXJuIHR0W2VdKyIgIitudFtuXSsiICIrKHQ8MTA/IjAiK3Q6dCkrIiAiK3IrIiAiKyhpPDEwPyIwIitpOmkpKyI6IisoYTwxMD8iMCIrYTphKSsiOiIrKG88MTA/IjAiK286bykrIiBHTVQiKyhzPjA/Ii0iOiIrIikrKGw8MTA/IjAiK2w6bCkrKHU8MTA/IjAiK3U6dSl9LFAmJmkuZGVmaW5lUHJvcGVydHkoRGF0ZS5wcm90b3R5cGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITB9KSk7dmFyIGl0PS02MjE5ODc1NTJlNSxhdD0iLTAwMDAwMSIsb3Q9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJm5ldyBEYXRlKGl0KS50b0lTT1N0cmluZygpLmluZGV4T2YoYXQpPT09LTEsc3Q9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJiIxOTY5LTEyLTMxVDIzOjU5OjU5Ljk5OVoiIT09bmV3IERhdGUoKC0xKSkudG9JU09TdHJpbmcoKSxsdD12LmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSk7cShEYXRlLnByb3RvdHlwZSx7dG9JU09TdHJpbmc6ZnVuY3Rpb24oKXtpZighaXNGaW5pdGUodGhpcyl8fCFpc0Zpbml0ZShsdCh0aGlzKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkRhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nIGNhbGxlZCBvbiBub24tZmluaXRlIHZhbHVlLiIpO3ZhciBlPUplKHRoaXMpLHQ9V2UodGhpcyk7ZSs9TWF0aC5mbG9vcih0LzEyKSx0PSh0JTEyKzEyKSUxMjt2YXIgbj1bdCsxLFFlKHRoaXMpLEtlKHRoaXMpLFhlKHRoaXMpLFplKHRoaXMpXTtlPShlPDA/Ii0iOmU+OTk5OT8iKyI6IiIpK0ooIjAwMDAwIitNYXRoLmFicyhlKSwwPD1lJiZlPD05OTk5Py00Oi02KTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoOysrciluW3JdPUooIjAwIituW3JdLC0yKTtyZXR1cm4gZSsiLSIrSChuLDAsMikuam9pbigiLSIpKyJUIitIKG4sMikuam9pbigiOiIpKyIuIitKKCIwMDAiK2V0KHRoaXMpLC0zKSsiWiJ9fSxvdHx8c3QpO3ZhciB1dD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9KU09OJiZudWxsPT09bmV3IERhdGUoTmFOKS50b0pTT04oKSYmbmV3IERhdGUoaXQpLnRvSlNPTigpLmluZGV4T2YoYXQpIT09LTEmJkRhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHt0b0lTT1N0cmluZzpmdW5jdGlvbigpe3JldHVybiEwfX0pfWNhdGNoKGUpe3JldHVybiExfX0oKTt1dHx8KERhdGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbih0KXt2YXIgbj1pKHRoaXMpLHI9Ti5Ub1ByaW1pdGl2ZShuKTtpZigibnVtYmVyIj09dHlwZW9mIHImJiFpc0Zpbml0ZShyKSlyZXR1cm4gbnVsbDt2YXIgYT1uLnRvSVNPU3RyaW5nO2lmKCFlKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRvSVNPU3RyaW5nIHByb3BlcnR5IGlzIG5vdCBjYWxsYWJsZSIpO3JldHVybiBhLmNhbGwobil9KTt2YXIgY3Q9MWUxNT09PURhdGUucGFyc2UoIiswMzM2NTgtMDktMjdUMDE6NDY6NDAuMDAwWiIpLHB0PSFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTA0LTA0VDI0OjAwOjAwLjUwMFoiKSl8fCFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTExLTMxVDIzOjU5OjU5LjAwMFoiKSl8fCFpc05hTihEYXRlLnBhcnNlKCIyMDEyLTEyLTMxVDIzOjU5OjYwLjAwMFoiKSksaHQ9aXNOYU4oRGF0ZS5wYXJzZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIikpO2lmKGh0fHxwdHx8IWN0KXt2YXIgZnQ9TWF0aC5wb3coMiwzMSktMSxkdD16KG5ldyBEYXRlKDE5NzAsMCwxLDAsMCwwLGZ0KzEpLmdldFRpbWUoKSk7RGF0ZT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihuLHIsaSxhLG8scyx1KXt2YXIgYyxwPWFyZ3VtZW50cy5sZW5ndGg7aWYodGhpcyBpbnN0YW5jZW9mIGUpe3ZhciBoPXMsZj11O2lmKGR0JiZwPj03JiZ1PmZ0KXt2YXIgZD1NYXRoLmZsb29yKHUvZnQpKmZ0LG09TWF0aC5mbG9vcihkLzFlMyk7aCs9bSxmLT0xZTMqbX1jPTE9PT1wJiZsKG4pPT09bj9uZXcgZSh0LnBhcnNlKG4pKTpwPj03P25ldyBlKG4scixpLGEsbyxoLGYpOnA+PTY/bmV3IGUobixyLGksYSxvLGgpOnA+PTU/bmV3IGUobixyLGksYSxvKTpwPj00P25ldyBlKG4scixpLGEpOnA+PTM/bmV3IGUobixyLGkpOnA+PTI/bmV3IGUobixyKTpwPj0xP25ldyBlKG4gaW5zdGFuY2VvZiBlPytuOm4pOm5ldyBlfWVsc2UgYz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gQihjKXx8cShjLHtjb25zdHJ1Y3Rvcjp0fSwhMCksY30sbj1uZXcgUmVnRXhwKCJeKFxcZHs0fXxbKy1dXFxkezZ9KSg/Oi0oXFxkezJ9KSg/Oi0oXFxkezJ9KSg/OlQoXFxkezJ9KTooXFxkezJ9KSg/OjooXFxkezJ9KSg/OihcXC5cXGR7MSx9KSk/KT8oWnwoPzooWy0rXSkoXFxkezJ9KTooXFxkezJ9KSkpPyk/KT8pPyQiKSxyPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzQsMzY1XSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dD4xPzE6MDtyZXR1cm4gclt0XStNYXRoLmZsb29yKChlLTE5NjkrbikvNCktTWF0aC5mbG9vcigoZS0xOTAxK24pLzEwMCkrTWF0aC5mbG9vcigoZS0xNjAxK24pLzQwMCkrMzY1KihlLTE5NzApfSxhPWZ1bmN0aW9uKHQpe3ZhciBuPTAscj10O2lmKGR0JiZyPmZ0KXt2YXIgaT1NYXRoLmZsb29yKHIvZnQpKmZ0LGE9TWF0aC5mbG9vcihpLzFlMyk7bis9YSxyLT0xZTMqYX1yZXR1cm4gYyhuZXcgZSgxOTcwLDAsMSwwLDAsbixyKSl9O2Zvcih2YXIgbyBpbiBlKUYoZSxvKSYmKHRbb109ZVtvXSk7cSh0LHtub3c6ZS5ub3csVVRDOmUuVVRDfSwhMCksdC5wcm90b3R5cGU9ZS5wcm90b3R5cGUscSh0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6dH0sITApO3ZhciBzPWZ1bmN0aW9uKHQpe3ZhciByPW4uZXhlYyh0KTtpZihyKXt2YXIgbyxzPWMoclsxXSksbD1jKHJbMl18fDEpLTEsdT1jKHJbM118fDEpLTEscD1jKHJbNF18fDApLGg9YyhyWzVdfHwwKSxmPWMocls2XXx8MCksZD1NYXRoLmZsb29yKDFlMypjKHJbN118fDApKSxtPUJvb2xlYW4ocls0XSYmIXJbOF0pLGc9Ii0iPT09cls5XT8xOi0xLHk9YyhyWzEwXXx8MCksdj1jKHJbMTFdfHwwKSxiPWg+MHx8Zj4wfHxkPjA7cmV0dXJuIHA8KGI/MjQ6MjUpJiZoPDYwJiZmPDYwJiZkPDFlMyYmbD4tMSYmbDwxMiYmeTwyNCYmdjw2MCYmdT4tMSYmdTxpKHMsbCsxKS1pKHMsbCkmJihvPTYwKigyNCooaShzLGwpK3UpK3AreSpnKSxvPTFlMyooNjAqKG8raCt2KmcpK2YpK2QsbSYmKG89YShvKSksLTg2NGUxMzw9byYmbzw9ODY0ZTEzKT9vOk5hTn1yZXR1cm4gZS5wYXJzZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3JldHVybiBxKHQse3BhcnNlOnN9KSx0fShEYXRlKX1EYXRlLm5vd3x8KERhdGUubm93PWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9KTt2YXIgbXQ9cC50b0ZpeGVkJiYoIjAuMDAwIiE9PThlLTUudG9GaXhlZCgzKXx8IjEiIT09LjkudG9GaXhlZCgwKXx8IjEuMjUiIT09MS4yNTUudG9GaXhlZCgyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKSxndD17YmFzZToxZTcsc2l6ZTo2LGRhdGE6WzAsMCwwLDAsMCwwXSxtdWx0aXBseTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0tMSxyPXQ7KytuPGd0LnNpemU7KXIrPWUqZ3QuZGF0YVtuXSxndC5kYXRhW25dPXIlZ3QuYmFzZSxyPU1hdGguZmxvb3Ioci9ndC5iYXNlKX0sZGl2aWRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1ndC5zaXplLG49MDstLXQ+PTA7KW4rPWd0LmRhdGFbdF0sZ3QuZGF0YVt0XT1NYXRoLmZsb29yKG4vZSksbj1uJWUqZ3QuYmFzZX0sbnVtVG9TdHJpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGU9Z3Quc2l6ZSx0PSIiOy0tZT49MDspaWYoIiIhPT10fHwwPT09ZXx8MCE9PWd0LmRhdGFbZV0pe3ZhciBuPWwoZ3QuZGF0YVtlXSk7IiI9PT10P3Q9bjp0Kz1KKCIwMDAwMDAwIiwwLDctbi5sZW5ndGgpK259cmV0dXJuIHR9LHBvdzpmdW5jdGlvbiBVdChlLHQsbil7cmV0dXJuIDA9PT10P246dCUyPT09MT9VdChlLHQtMSxuKmUpOlV0KGUqZSx0LzIsbil9LGxvZzpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPWU7bj49NDA5NjspdCs9MTIsbi89NDA5Njtmb3IoO24+PTI7KXQrPTEsbi89MjtyZXR1cm4gdH19LHl0PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLGEsbyxzLHU7aWYodD1jKGUpLHQ9eih0KT8wOk1hdGguZmxvb3IodCksdDwwfHx0PjIwKXRocm93IG5ldyBSYW5nZUVycm9yKCJOdW1iZXIudG9GaXhlZCBjYWxsZWQgd2l0aCBpbnZhbGlkIG51bWJlciBvZiBkZWNpbWFscyIpO2lmKG49Yyh0aGlzKSx6KG4pKXJldHVybiJOYU4iO2lmKG48PS0xZTIxfHxuPj0xZTIxKXJldHVybiBsKG4pO2lmKHI9IiIsbjwwJiYocj0iLSIsbj0tbiksaT0iMCIsbj4xZS0yMSlpZihhPWd0LmxvZyhuKmd0LnBvdygyLDY5LDEpKS02OSxvPWE8MD9uKmd0LnBvdygyLC1hLDEpOm4vZ3QucG93KDIsYSwxKSxvKj00NTAzNTk5NjI3MzcwNDk2LGE9NTItYSxhPjApe2ZvcihndC5tdWx0aXBseSgwLG8pLHM9dDtzPj03OylndC5tdWx0aXBseSgxZTcsMCkscy09Nztmb3IoZ3QubXVsdGlwbHkoZ3QucG93KDEwLHMsMSksMCkscz1hLTE7cz49MjM7KWd0LmRpdmlkZSgxPDwyMykscy09MjM7Z3QuZGl2aWRlKDE8PHMpLGd0Lm11bHRpcGx5KDEsMSksZ3QuZGl2aWRlKDIpLGk9Z3QubnVtVG9TdHJpbmcoKX1lbHNlIGd0Lm11bHRpcGx5KDAsbyksZ3QubXVsdGlwbHkoMTw8LWEsMCksaT1ndC5udW1Ub1N0cmluZygpK0ooIjAuMDAwMDAwMDAwMDAwMDAwMDAwMDAiLDIsMit0KTtyZXR1cm4gdD4wPyh1PWkubGVuZ3RoLGk9dTw9dD9yK0ooIjAuMDAwMDAwMDAwMDAwMDAwMDAwMCIsMCx0LXUrMikraTpyK0ooaSwwLHUtdCkrIi4iK0ooaSx1LXQpKTppPXIraSxpfTtxKHAse3RvRml4ZWQ6eXR9LG10KTt2YXIgdnQ9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIjEiPT09MS4udG9QcmVjaXNpb24odm9pZCAwKX1jYXRjaChlKXtyZXR1cm4hMH19KCksYnQ9cC50b1ByZWNpc2lvbjtxKHAse3RvUHJlY2lzaW9uOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZT9idC5jYWxsKHRoaXMpOmJ0LmNhbGwodGhpcyxlKX19LHZ0KSwyIT09ImFiIi5zcGxpdCgvKD86YWIpKi8pLmxlbmd0aHx8NCE9PSIuIi5zcGxpdCgvKC4/KSguPykvKS5sZW5ndGh8fCJ0Ij09PSJ0ZXNzdCIuc3BsaXQoLyhzKSovKVsxXXx8NCE9PSJ0ZXN0Ii5zcGxpdCgvKD86KS8sLTEpLmxlbmd0aHx8IiIuc3BsaXQoLy4/LykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MT8hZnVuY3Rpb24oKXt2YXIgZT0idW5kZWZpbmVkIj09dHlwZW9mLygpPz8vLmV4ZWMoIiIpWzFdLG49TWF0aC5wb3coMiwzMiktMTt1LnNwbGl0PWZ1bmN0aW9uKHIsaSl7dmFyIGE9U3RyaW5nKHRoaXMpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgciYmMD09PWkpcmV0dXJuW107aWYoIXQocikpcmV0dXJuIFcodGhpcyxyLGkpO3ZhciBvLHMsbCx1LGM9W10scD0oci5pZ25vcmVDYXNlPyJpIjoiIikrKHIubXVsdGlsaW5lPyJtIjoiIikrKHIudW5pY29kZT8idSI6IiIpKyhyLnN0aWNreT8ieSI6IiIpLGg9MCxmPW5ldyBSZWdFeHAoci5zb3VyY2UscCsiZyIpO2V8fChvPW5ldyBSZWdFeHAoIl4iK2Yuc291cmNlKyIkKD8hXFxzKSIscCkpO3ZhciBtPSJ1bmRlZmluZWQiPT10eXBlb2YgaT9uOk4uVG9VaW50MzIoaSk7Zm9yKHM9Zi5leGVjKGEpO3MmJihsPXMuaW5kZXgrc1swXS5sZW5ndGgsIShsPmgmJihHKGMsSihhLGgscy5pbmRleCkpLCFlJiZzLmxlbmd0aD4xJiZzWzBdLnJlcGxhY2UobyxmdW5jdGlvbigpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aC0yO2UrKykidW5kZWZpbmVkIj09dHlwZW9mIGFyZ3VtZW50c1tlXSYmKHNbZV09dm9pZCAwKX0pLHMubGVuZ3RoPjEmJnMuaW5kZXg8YS5sZW5ndGgmJmQuYXBwbHkoYyxIKHMsMSkpLHU9c1swXS5sZW5ndGgsaD1sLGMubGVuZ3RoPj1tKSkpOylmLmxhc3RJbmRleD09PXMuaW5kZXgmJmYubGFzdEluZGV4Kysscz1mLmV4ZWMoYSk7cmV0dXJuIGg9PT1hLmxlbmd0aD8hdSYmZi50ZXN0KCIiKXx8RyhjLCIiKTpHKGMsSihhLGgpKSxjLmxlbmd0aD5tP0goYywwLG0pOmN9fSgpOiIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoJiYodS5zcGxpdD1mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZSYmMD09PXQ/W106Vyh0aGlzLGUsdCl9KTt2YXIgd3Q9dS5yZXBsYWNlLF90PWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIngiLnJlcGxhY2UoL3goLik/L2csZnVuY3Rpb24odCxuKXtHKGUsbil9KSwxPT09ZS5sZW5ndGgmJiJ1bmRlZmluZWQiPT10eXBlb2YgZVswXX0oKTtfdHx8KHUucmVwbGFjZT1mdW5jdGlvbihuLHIpe3ZhciBpPWUociksYT10KG4pJiYvXClbKj9dLy50ZXN0KG4uc291cmNlKTtpZihpJiZhKXt2YXIgbz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGk9bi5sYXN0SW5kZXg7bi5sYXN0SW5kZXg9MDt2YXIgYT1uLmV4ZWMoZSl8fFtdO3JldHVybiBuLmxhc3RJbmRleD1pLEcoYSxhcmd1bWVudHNbdC0yXSxhcmd1bWVudHNbdC0xXSksci5hcHBseSh0aGlzLGEpfTtyZXR1cm4gd3QuY2FsbCh0aGlzLG4sbyl9cmV0dXJuIHd0LmNhbGwodGhpcyxuLHIpfSk7dmFyIHh0PXUuc3Vic3RyLEF0PSIiLnN1YnN0ciYmImIiIT09IjBiIi5zdWJzdHIoLTEpO3EodSx7c3Vic3RyOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gZTwwJiYobj13KHRoaXMubGVuZ3RoK2UsMCkpLHh0LmNhbGwodGhpcyxuLHQpfX0sQXQpO3ZhciBTdD0iXHRcblx4MEJcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGf44CAXHUyMDI4XHUyMDI5XHVmZWZmIixqdD0i4oCLIixFdD0iWyIrU3QrIl0iLE90PW5ldyBSZWdFeHAoIl4iK0V0K0V0KyIqIiksa3Q9bmV3IFJlZ0V4cChFdCtFdCsiKiQiKSxUdD11LnRyaW0mJihTdC50cmltKCl8fCFqdC50cmltKCkpO3EodSx7dHJpbTpmdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpc3x8bnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiK3RoaXMrIiB0byBvYmplY3QiKTtyZXR1cm4gbCh0aGlzKS5yZXBsYWNlKE90LCIiKS5yZXBsYWNlKGt0LCIiKX19LFR0KTt2YXIgQ3Q9di5iaW5kKFN0cmluZy5wcm90b3R5cGUudHJpbSksSXQ9dS5sYXN0SW5kZXhPZiYmImFiY+OBguOBhCIubGFzdEluZGV4T2YoIuOBguOBhCIsMikhPT0tMTtxKHUse2xhc3RJbmRleE9mOmZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpc3x8bnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FuJ3QgY29udmVydCAiK3RoaXMrIiB0byBvYmplY3QiKTtmb3IodmFyIHQ9bCh0aGlzKSxuPWwoZSkscj1hcmd1bWVudHMubGVuZ3RoPjE/Yyhhcmd1bWVudHNbMV0pOk5hTixpPXoocik/MS8wOk4uVG9JbnRlZ2VyKHIpLGE9Xyh3KGksMCksdC5sZW5ndGgpLG89bi5sZW5ndGgscz1hK287cz4wOyl7cz13KDAscy1vKTt2YXIgdT1RKEoodCxzLGErbyksbik7aWYodSE9PS0xKXJldHVybiBzK3V9cmV0dXJuLTF9fSxJdCk7dmFyIER0PXUubGFzdEluZGV4T2Y7aWYocSh1LHtsYXN0SW5kZXhPZjpmdW5jdGlvbihlKXtyZXR1cm4gRHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sMSE9PXUubGFzdEluZGV4T2YubGVuZ3RoKSw4PT09cGFyc2VJbnQoU3QrIjA4IikmJjIyPT09cGFyc2VJbnQoU3QrIjB4MTYiKXx8KHBhcnNlSW50PWZ1bmN0aW9uKGUpe3ZhciB0PS9eW1wtK10/MFt4WF0vO3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBpPUN0KFN0cmluZyhuKSksYT1jKHIpfHwodC50ZXN0KGkpPzE2OjEwKTtyZXR1cm4gZShpLGEpfX0ocGFyc2VJbnQpKSwxL3BhcnNlRmxvYXQoIi0wIikhPT0tKDEvMCkmJihwYXJzZUZsb2F0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1DdChTdHJpbmcodCkpLHI9ZShuKTtyZXR1cm4gMD09PXImJiItIj09PUoobiwwLDEpPy0wOnJ9fShwYXJzZUZsb2F0KSksIlJhbmdlRXJyb3I6IHRlc3QiIT09U3RyaW5nKG5ldyBSYW5nZUVycm9yKCJ0ZXN0IikpKXt2YXIgTHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHRoaXN8fG51bGw9PT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbid0IGNvbnZlcnQgIit0aGlzKyIgdG8gb2JqZWN0Iik7dmFyIGU9dGhpcy5uYW1lOyJ1bmRlZmluZWQiPT10eXBlb2YgZT9lPSJFcnJvciI6InN0cmluZyIhPXR5cGVvZiBlJiYoZT1sKGUpKTt2YXIgdD10aGlzLm1lc3NhZ2U7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiB0P3Q9IiI6InN0cmluZyIhPXR5cGVvZiB0JiYodD1sKHQpKSxlP3Q/ZSsiOiAiK3Q6ZTp0fTtFcnJvci5wcm90b3R5cGUudG9TdHJpbmc9THR9aWYoUCl7dmFyIE10PWZ1bmN0aW9uKGUsdCl7aWYoSyhlLHQpKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7bi5jb25maWd1cmFibGUmJihuLmVudW1lcmFibGU9ITEsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKSl9fTtNdChFcnJvci5wcm90b3R5cGUsIm1lc3NhZ2UiKSwiIiE9PUVycm9yLnByb3RvdHlwZS5tZXNzYWdlJiYoRXJyb3IucHJvdG90eXBlLm1lc3NhZ2U9IiIpLE10KEVycm9yLnByb3RvdHlwZSwibmFtZSIpfWlmKCIvYS9naW0iIT09U3RyaW5nKC9hL2dpbSkpe3ZhciBSdD1mdW5jdGlvbigpe3ZhciBlPSIvIit0aGlzLnNvdXJjZSsiLyI7cmV0dXJuIHRoaXMuZ2xvYmFsJiYoZSs9ImciKSx0aGlzLmlnbm9yZUNhc2UmJihlKz0iaSIpLHRoaXMubXVsdGlsaW5lJiYoZSs9Im0iKSxlfTtSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nPVJ0fX0pLEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoInNhbml0aXplIixmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdm9pZCAwPT09ZT8iIjoodD1zYW5pdGl6ZUh0bWwoZSx7YWxsb3dlZFRhZ3M6WyJkaXYiLCJzcGFuIiwiYiIsImkiLCJlbSIsInN0cm9uZyIsImEiLCJiciIsInRhYmxlIiwidGJvZHkiLCJ0ciIsInRoIiwidGQiXSxhbGxvd2VkQXR0cmlidXRlczp7ZGl2OlsiY2xhc3MiXSxzcGFuOlsiY2xhc3MiXSx0YWJsZTpbImNsYXNzIl0sdGQ6WyJjbGFzcyJdLHRoOlsiY29sc3BhbiJdLGE6WyJocmVmIl19fSksbmV3IEhhbmRsZWJhcnMuU2FmZVN0cmluZyh0KSl9KSxIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCJyZW5kZXJUZXh0UGFyYW0iLGZ1bmN0aW9uKGUpe3ZhciB0LG49InRleHQiLHI9IiIsaT1lLnR5cGV8fGUuc2NoZW1hJiZlLnNjaGVtYS50eXBlfHwiIixhPSJhcnJheSI9PT1pLnRvTG93ZXJDYXNlKCl8fGUuYWxsb3dNdWx0aXBsZSxvPWEmJkFycmF5LmlzQXJyYXkoZVsiZGVmYXVsdCJdKT9lWyJkZWZhdWx0Il0uam9pbigiXG4iKTplWyJkZWZhdWx0Il0scz1IYW5kbGViYXJzLlV0aWxzLmVzY2FwZUV4cHJlc3Npb24oZS5uYW1lKSxsPUhhbmRsZWJhcnMuVXRpbHMuZXNjYXBlRXhwcmVzc2lvbihlLnZhbHVlSWQpO2k9SGFuZGxlYmFycy5VdGlscy5lc2NhcGVFeHByZXNzaW9uKGkpO3ZhciB1PU9iamVjdC5rZXlzKGUpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUubWF0Y2goL15YLWRhdGEtL2kpfSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrPSIgIituLnN1YnN0cmluZygyLG4ubGVuZ3RoKSsiPSciK2Vbbl0rIicifSwiIik7aWYoZS5mb3JtYXQmJiJwYXNzd29yZCI9PT1lLmZvcm1hdCYmKG49InBhc3N3b3JkIiksbCYmKHI9IiBpZD0nIitsKyInIiksbz1vP3Nhbml0aXplSHRtbChvKToiIixhKXQ9Ijx0ZXh0YXJlYSBjbGFzcz0nYm9keS10ZXh0YXJlYSIrKGUucmVxdWlyZWQ/IiByZXF1aXJlZCI6IiIpKyInIG5hbWU9JyIrcysiJyIrcit1LHQrPSIgcGxhY2Vob2xkZXI9J1Byb3ZpZGUgbXVsdGlwbGUgdmFsdWVzIGluIG5ldyBsaW5lcyIrKGUucmVxdWlyZWQ/IiAoYXQgbGVhc3Qgb25lIHJlcXVpcmVkKS4iOiIuIikrIic+Iix0Kz1vKyI8L3RleHRhcmVhPiI7ZWxzZXt2YXIgYz0icGFyYW1ldGVyIjtlLnJlcXVpcmVkJiYoYys9IiByZXF1aXJlZCIpLHQ9IjxpbnB1dCBjbGFzcz0nIitjKyInIG1pbmxlbmd0aD0nIisoZS5yZXF1aXJlZD8xOjApKyInIix0Kz0iIG5hbWU9JyIrcysiJyBwbGFjZWhvbGRlcj0nIisoZS5yZXF1aXJlZD8iKHJlcXVpcmVkKSI6IiIpKyInIityK3UsdCs9IiB0eXBlPSciK24rIicgdmFsdWU9JyIrbysiJy8+In1yZXR1cm4gbmV3IEhhbmRsZWJhcnMuU2FmZVN0cmluZyh0KX0pLEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoImlmQ29uZCIsZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHQpe2Nhc2UiPT0iOnJldHVybiBlPT1uP3IuZm4odGhpcyk6ci5pbnZlcnNlKHRoaXMpO2Nhc2UiPT09IjpyZXR1cm4gZT09PW4/ci5mbih0aGlzKTpyLmludmVyc2UodGhpcyk7Y2FzZSI8IjpyZXR1cm4gZTxuP3IuZm4odGhpcyk6ci5pbnZlcnNlKHRoaXMpO2Nhc2UiPD0iOnJldHVybiBlPD1uP3IuZm4odGhpcyk6ci5pbnZlcnNlKHRoaXMpO2Nhc2UiPiI6cmV0dXJuIGU+bj9yLmZuKHRoaXMpOnIuaW52ZXJzZSh0aGlzKTtjYXNlIj49IjpyZXR1cm4gZT49bj9yLmZuKHRoaXMpOnIuaW52ZXJzZSh0aGlzKTtjYXNlIiYmIjpyZXR1cm4gZSYmbj9yLmZuKHRoaXMpOnIuaW52ZXJzZSh0aGlzKTtjYXNlInx8IjpyZXR1cm4gZXx8bj9yLmZuKHRoaXMpOnIuaW52ZXJzZSh0aGlzKTtkZWZhdWx0OnJldHVybiByLmludmVyc2UodGhpcyl9fSksSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigiZXNjYXBlIixmdW5jdGlvbihlKXt2YXIgdD1IYW5kbGViYXJzLlV0aWxzLmVzY2FwZUV4cHJlc3Npb24oZSk7cmV0dXJuIG5ldyBIYW5kbGViYXJzLlNhZmVTdHJpbmcodCl9KSxmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5zYW5pdGl6ZUh0bWw9ZSgpfX0oZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gaShvLHMpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGw9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJmwpcmV0dXJuIGwobywhMCk7aWYoYSlyZXR1cm4gYShvLCEwKTt2YXIgdT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cgdS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIix1fXZhciBjPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gaShuP246ZSl9LGMsYy5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9Zm9yKHZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLG89MDtvPHIubGVuZ3RoO28rKylpKHJbb10pO3JldHVybiBpfSh7MTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtlJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3QoZVtuXSxuKX0pfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9ZnVuY3Rpb24gYShlLHQsbil7ZnVuY3Rpb24gYyhlLHQpe3ZhciBuPXRoaXM7dGhpcy50YWc9ZSx0aGlzLmF0dHJpYnM9dHx8e30sdGhpcy50YWdQb3NpdGlvbj1kLmxlbmd0aCx0aGlzLnRleHQ9IiIsdGhpcy51cGRhdGVQYXJlbnROb2RlVGV4dD1mdW5jdGlvbigpe2lmKHgubGVuZ3RoKXt2YXIgZT14W3gubGVuZ3RoLTFdO2UudGV4dCs9bi50ZXh0fX19ZnVuY3Rpb24gcChlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihlKz0iIiksZS5yZXBsYWNlKC9cJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoL1w+L2csIiZndDsiKS5yZXBsYWNlKC9cIi9nLCImcXVvdDsiKX1mdW5jdGlvbiBoKGUsbil7bj1uLnJlcGxhY2UoL1tceDAwLVx4MjBdKy9nLCIiKSxuPW4ucmVwbGFjZSgvPFwhXC1cLS4qP1wtXC1cPi9nLCIiKTt2YXIgcj1uLm1hdGNoKC9eKFthLXpBLVpdKylcOi8pO2lmKCFyKXJldHVybiExO3ZhciBhPXJbMV0udG9Mb3dlckNhc2UoKTtyZXR1cm4gaSh0LmFsbG93ZWRTY2hlbWVzQnlUYWcsZSk/dC5hbGxvd2VkU2NoZW1lc0J5VGFnW2VdLmluZGV4T2YoYSk9PT0tMTohdC5hbGxvd2VkU2NoZW1lc3x8dC5hbGxvd2VkU2NoZW1lcy5pbmRleE9mKGEpPT09LTF9ZnVuY3Rpb24gZihlLHQpe3JldHVybiB0PyhlPWUuc3BsaXQoL1xzKy8pLGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB0LmluZGV4T2YoZSkhPT0tMX0pLmpvaW4oIiAiKSk6ZX12YXIgZD0iIjt0Pyh0PXMoYS5kZWZhdWx0cyx0KSx0LnBhcnNlcj90LnBhcnNlcj1zKHUsdC5wYXJzZXIpOnQucGFyc2VyPXUpOih0PWEuZGVmYXVsdHMsdC5wYXJzZXI9dSk7dmFyIG0sZyx5PXQubm9uVGV4dFRhZ3N8fFsic2NyaXB0Iiwic3R5bGUiLCJ0ZXh0YXJlYSJdO3QuYWxsb3dlZEF0dHJpYnV0ZXMmJihtPXt9LGc9e30scih0LmFsbG93ZWRBdHRyaWJ1dGVzLGZ1bmN0aW9uKGUsdCl7bVt0XT1bXTt2YXIgbj1bXTtlLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pbmRleE9mKCIqIik+PTA/bi5wdXNoKGwoZSkucmVwbGFjZSgvXFxcKi9nLCIuKiIpKTptW3RdLnB1c2goZSl9KSxnW3RdPW5ldyBSZWdFeHAoIl4oIituLmpvaW4oInwiKSsiKSQiKX0pKTt2YXIgdj17fTtyKHQuYWxsb3dlZENsYXNzZXMsZnVuY3Rpb24oZSx0KXttJiYoaShtLHQpfHwobVt0XT1bXSksbVt0XS5wdXNoKCJjbGFzcyIpKSx2W3RdPWV9KTt2YXIgYix3PXt9O3IodC50cmFuc2Zvcm1UYWdzLGZ1bmN0aW9uKGUsdCl7dmFyIG47ImZ1bmN0aW9uIj09dHlwZW9mIGU/bj1lOiJzdHJpbmciPT10eXBlb2YgZSYmKG49YS5zaW1wbGVUcmFuc2Zvcm0oZSkpLCIqIj09PXQ/Yj1uOndbdF09bn0pO3ZhciBfPTAseD1bXSxBPXt9LFM9e30saj0hMSxFPTAsTz1uZXcgby5QYXJzZXIoe29ub3BlbnRhZzpmdW5jdGlvbihlLG4pe2lmKGopcmV0dXJuIHZvaWQgRSsrO3ZhciBhPW5ldyBjKGUsbik7eC5wdXNoKGEpO3ZhciBvLHM9ITEsbD0hIWEudGV4dDtpKHcsZSkmJihvPXdbZV0oZSxuKSxhLmF0dHJpYnM9bj1vLmF0dHJpYnMsdm9pZCAwIT09by50ZXh0JiYoYS5pbm5lclRleHQ9by50ZXh0KSxlIT09by50YWdOYW1lJiYoYS5uYW1lPWU9by50YWdOYW1lLFNbX109by50YWdOYW1lKSksYiYmKG89YihlLG4pLGEuYXR0cmlicz1uPW8uYXR0cmlicyxlIT09by50YWdOYW1lJiYoYS5uYW1lPWU9by50YWdOYW1lLFNbX109by50YWdOYW1lKSksdC5hbGxvd2VkVGFncyYmdC5hbGxvd2VkVGFncy5pbmRleE9mKGUpPT09LTEmJihzPSEwLHkuaW5kZXhPZihlKSE9PS0xJiYoaj0hMCxFPTEpLEFbX109ITApLF8rKyxzfHwoZCs9IjwiK2UsKCFtfHxpKG0sZSl8fG1bIioiXSkmJnIobixmdW5jdGlvbih0LG4pe2lmKCFtfHxpKG0sZSkmJm1bZV0uaW5kZXhPZihuKSE9PS0xfHxtWyIqIl0mJm1bIioiXS5pbmRleE9mKG4pIT09LTF8fGkoZyxlKSYmZ1tlXS50ZXN0KG4pfHxnWyIqIl0mJmdbIioiXS50ZXN0KG4pKXtpZigoImhyZWYiPT09bnx8InNyYyI9PT1uKSYmaChlLHQpKXJldHVybiB2b2lkIGRlbGV0ZSBhLmF0dHJpYnNbbl07aWYoImNsYXNzIj09PW4mJih0PWYodCx2W2VdKSwhdC5sZW5ndGgpKXJldHVybiB2b2lkIGRlbGV0ZSBhLmF0dHJpYnNbbl07ZCs9IiAiK24sdC5sZW5ndGgmJihkKz0nPSInK3AodCkrJyInKX1lbHNlIGRlbGV0ZSBhLmF0dHJpYnNbbl19KSx0LnNlbGZDbG9zaW5nLmluZGV4T2YoZSkhPT0tMT9kKz0iIC8+IjooZCs9Ij4iLCFhLmlubmVyVGV4dHx8bHx8dC50ZXh0RmlsdGVyfHwoZCs9YS5pbm5lclRleHQpKSl9LG9udGV4dDpmdW5jdGlvbihlKXtpZighail7dmFyIG4scj14W3gubGVuZ3RoLTFdO2lmKHImJihuPXIudGFnLGU9dm9pZCAwIT09ci5pbm5lclRleHQ/ci5pbm5lclRleHQ6ZSksInNjcmlwdCI9PT1ufHwic3R5bGUiPT09bilkKz1lO2Vsc2V7dmFyIGk9cChlKTtkKz10LnRleHRGaWx0ZXI/dC50ZXh0RmlsdGVyKGkpOml9aWYoeC5sZW5ndGgpe3ZhciBhPXhbeC5sZW5ndGgtMV07YS50ZXh0Kz1lfX19LG9uY2xvc2V0YWc6ZnVuY3Rpb24oZSl7aWYoail7aWYoRS0tLEUpcmV0dXJuO2o9ITF9dmFyIG49eC5wb3AoKTtpZihuKXtpZihqPSExLF8tLSxBW19dKXJldHVybiBkZWxldGUgQVtfXSx2b2lkIG4udXBkYXRlUGFyZW50Tm9kZVRleHQoKTtpZihTW19dJiYoZT1TW19dLGRlbGV0ZSBTW19dKSx0LmV4Y2x1c2l2ZUZpbHRlciYmdC5leGNsdXNpdmVGaWx0ZXIobikpcmV0dXJuIHZvaWQoZD1kLnN1YnN0cigwLG4udGFnUG9zaXRpb24pKTtuLnVwZGF0ZVBhcmVudE5vZGVUZXh0KCksdC5zZWxmQ2xvc2luZy5pbmRleE9mKGUpPT09LTEmJihkKz0iPC8iK2UrIj4iKX19fSx0LnBhcnNlcik7cmV0dXJuIE8ud3JpdGUoZSksTy5lbmQoKSxkfXZhciBvPWUoImh0bWxwYXJzZXIyIikscz1lKCJ4dGVuZCIpLGw9ZSgicmVnZXhwLXF1b3RlIik7dC5leHBvcnRzPWE7dmFyIHU9e2RlY29kZUVudGl0aWVzOiEwfTthLmRlZmF1bHRzPXthbGxvd2VkVGFnczpbImgzIiwiaDQiLCJoNSIsImg2IiwiYmxvY2txdW90ZSIsInAiLCJhIiwidWwiLCJvbCIsIm5sIiwibGkiLCJiIiwiaSIsInN0cm9uZyIsImVtIiwic3RyaWtlIiwiY29kZSIsImhyIiwiYnIiLCJkaXYiLCJ0YWJsZSIsInRoZWFkIiwiY2FwdGlvbiIsInRib2R5IiwidHIiLCJ0aCIsInRkIiwicHJlIl0sYWxsb3dlZEF0dHJpYnV0ZXM6e2E6WyJocmVmIiwibmFtZSIsInRhcmdldCJdLGltZzpbInNyYyJdfSxzZWxmQ2xvc2luZzpbImltZyIsImJyIiwiaHIiLCJhcmVhIiwiYmFzZSIsImJhc2Vmb250IiwiaW5wdXQiLCJsaW5rIiwibWV0YSJdLGFsbG93ZWRTY2hlbWVzOlsiaHR0cCIsImh0dHBzIiwiZnRwIiwibWFpbHRvIl0sYWxsb3dlZFNjaGVtZXNCeVRhZzp7fX0sYS5zaW1wbGVUcmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuPXZvaWQgMD09PW58fG4sdD10fHx7fSxmdW5jdGlvbihyLGkpe3ZhciBhO2lmKG4pZm9yKGEgaW4gdClpW2FdPXRbYV07ZWxzZSBpPXQ7cmV0dXJue3RhZ05hbWU6ZSxhdHRyaWJzOml9fX19LHtodG1scGFyc2VyMjozNiwicmVnZXhwLXF1b3RlIjo1NCx4dGVuZDo1OH1dLDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLG49ZS5sZW5ndGg7dDxuOysrdClsW3RdPWVbdF0sdVtlLmNoYXJDb2RlQXQodCldPXQ7dVsiLSIuY2hhckNvZGVBdCgwKV09NjIsdVsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gaShlKXt2YXIgdCxuLHIsaSxhLG8scz1lLmxlbmd0aDtpZihzJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTthPSI9Ij09PWVbcy0yXT8yOiI9Ij09PWVbcy0xXT8xOjAsbz1uZXcgYygzKnMvNC1hKSxyPWE+MD9zLTQ6czt2YXIgbD0wO2Zvcih0PTAsbj0wO3Q8cjt0Kz00LG4rPTMpaT11W2UuY2hhckNvZGVBdCh0KV08PDE4fHVbZS5jaGFyQ29kZUF0KHQrMSldPDwxMnx1W2UuY2hhckNvZGVBdCh0KzIpXTw8Nnx1W2UuY2hhckNvZGVBdCh0KzMpXSxvW2wrK109aT4+MTYmMjU1LG9bbCsrXT1pPj44JjI1NSxvW2wrK109MjU1Jmk7cmV0dXJuIDI9PT1hPyhpPXVbZS5jaGFyQ29kZUF0KHQpXTw8Mnx1W2UuY2hhckNvZGVBdCh0KzEpXT4+NCxvW2wrK109MjU1JmkpOjE9PT1hJiYoaT11W2UuY2hhckNvZGVBdCh0KV08PDEwfHVbZS5jaGFyQ29kZUF0KHQrMSldPDw0fHVbZS5jaGFyQ29kZUF0KHQrMildPj4yLG9bbCsrXT1pPj44JjI1NSxvW2wrK109MjU1JmkpLG99ZnVuY3Rpb24gYShlKXtyZXR1cm4gbFtlPj4xOCY2M10rbFtlPj4xMiY2M10rbFtlPj42JjYzXStsWzYzJmVdfWZ1bmN0aW9uIG8oZSx0LG4pe2Zvcih2YXIgcixpPVtdLG89dDtvPG47bys9MylyPShlW29dPDwxNikrKGVbbysxXTw8OCkrZVtvKzJdLGkucHVzaChhKHIpKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBzKGUpe2Zvcih2YXIgdCxuPWUubGVuZ3RoLHI9biUzLGk9IiIsYT1bXSxzPTE2MzgzLHU9MCxjPW4tcjt1PGM7dSs9cylhLnB1c2gobyhlLHUsdStzPmM/Yzp1K3MpKTtyZXR1cm4gMT09PXI/KHQ9ZVtuLTFdLGkrPWxbdD4+Ml0saSs9bFt0PDw0JjYzXSxpKz0iPT0iKToyPT09ciYmKHQ9KGVbbi0yXTw8OCkrZVtuLTFdLGkrPWxbdD4+MTBdLGkrPWxbdD4+NCY2M10saSs9bFt0PDwyJjYzXSxpKz0iPSIpLGEucHVzaChpKSxhLmpvaW4oIiIpfW4udG9CeXRlQXJyYXk9aSxuLmZyb21CeXRlQXJyYXk9czt2YXIgbD1bXSx1PVtdLGM9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXk7cigpfSx7fV0sMzpbZnVuY3Rpb24oZSx0LG4pe30se31dLDQ6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciByPWUoImJ1ZmZlciIpLGk9ci5CdWZmZXIsYT1yLlNsb3dCdWZmZXIsbz1yLmtNYXhMZW5ndGh8fDIxNDc0ODM2NDc7bi5hbGxvYz1mdW5jdGlvbihlLHQsbil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGkuYWxsb2MpcmV0dXJuIGkuYWxsb2MoZSx0LG4pO2lmKCJudW1iZXIiPT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IG5vdCBiZSBudW1iZXIiKTtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2l6ZSBtdXN0IGJlIGEgbnVtYmVyIik7aWYoZT5vKXRocm93IG5ldyBSYW5nZUVycm9yKCJzaXplIGlzIHRvbyBsYXJnZSIpO3ZhciByPW4sYT10O3ZvaWQgMD09PWEmJihyPXZvaWQgMCxhPTApO3ZhciBzPW5ldyBpKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgYSlmb3IodmFyIGw9bmV3IGkoYSxyKSx1PWwubGVuZ3RoLGM9LTE7KytjPGU7KXNbY109bFtjJXVdO2Vsc2Ugcy5maWxsKGEpO3JldHVybiBzfSxuLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmFsbG9jVW5zYWZlKXJldHVybiBpLmFsbG9jVW5zYWZlKGUpO2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIG11c3QgYmUgYSBudW1iZXIiKTtpZihlPm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIik7cmV0dXJuIG5ldyBpKGUpfSxuLmZyb209ZnVuY3Rpb24oZSxuLHIpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmZyb20mJighdC5VaW50OEFycmF5fHxVaW50OEFycmF5LmZyb20hPT1pLmZyb20pKXJldHVybiBpLmZyb20oZSxuLHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBuZXcgaShlLG4pO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJmUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dmFyIGE9bjtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbmV3IGkoZSk7InVuZGVmaW5lZCI9PXR5cGVvZiBhJiYoYT0wKTt2YXIgbz1yO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbyYmKG89ZS5ieXRlTGVuZ3RoLWEpLGE+PWUuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKG8+ZS5ieXRlTGVuZ3RoLWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gbmV3IGkoZS5zbGljZShhLGErbykpfWlmKGkuaXNCdWZmZXIoZSkpe3ZhciBzPW5ldyBpKGUubGVuZ3RoKTtyZXR1cm4gZS5jb3B5KHMsMCwwLGUubGVuZ3RoKSxzfWlmKGUpe2lmKEFycmF5LmlzQXJyYXkoZSl8fCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gZSlyZXR1cm4gbmV3IGkoZSk7aWYoIkJ1ZmZlciI9PT1lLnR5cGUmJkFycmF5LmlzQXJyYXkoZS5kYXRhKSlyZXR1cm4gbmV3IGkoZS5kYXRhKX10aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9LG4uYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpLmFsbG9jVW5zYWZlU2xvdylyZXR1cm4gaS5hbGxvY1Vuc2FmZVNsb3coZSk7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoInNpemUgbXVzdCBiZSBhIG51bWJlciIpO2lmKGU+PW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNpemUgaXMgdG9vIGxhcmdlIik7cmV0dXJuIG5ldyBhKGUpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se2J1ZmZlcjo1fV0sNTpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RyeXt2YXIgZT1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gZS5fX3Byb3RvX189e19fcHJvdG9fXzpVaW50OEFycmF5LnByb3RvdHlwZSxmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fSw0Mj09PWUuZm9vKCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnN1YmFycmF5JiYwPT09ZS5zdWJhcnJheSgxLDEpLmJ5dGVMZW5ndGh9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGkoKXtyZXR1cm4gby5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBhKGUsdCl7aWYoaSgpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIG8uVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSxlLl9fcHJvdG9fXz1vLnByb3RvdHlwZSk6KG51bGw9PT1lJiYoZT1uZXcgbyh0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBvKGUsdCxuKXtpZighKG8uVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIG8pKXJldHVybiBuZXcgbyhlLHQsbik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBjKHRoaXMsZSl9cmV0dXJuIHModGhpcyxlLHQsbil9ZnVuY3Rpb24gcyhlLHQsbixyKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mKGUsdCxuLHIpOiJzdHJpbmciPT10eXBlb2YgdD9wKGUsdCxuKTpkKGUsdCl9ZnVuY3Rpb24gbChlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIHUoZSx0LG4scil7cmV0dXJuIGwodCksdDw9MD9hKGUsdCk6dm9pZCAwIT09bj8ic3RyaW5nIj09dHlwZW9mIHI/YShlLHQpLmZpbGwobixyKTphKGUsdCkuZmlsbChuKTphKGUsdCl9ZnVuY3Rpb24gYyhlLHQpe2lmKGwodCksZT1hKGUsdDwwPzA6MHxtKHQpKSwhby5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgbj0wO248dDsrK24pZVtuXT0wO3JldHVybiBlfWZ1bmN0aW9uIHAoZSx0LG4pe2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIiIhPT1ufHwobj0idXRmOCIpLCFvLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIHI9MHx5KHQsbik7ZT1hKGUscik7dmFyIGk9ZS53cml0ZSh0LG4pO3JldHVybiBpIT09ciYmKGU9ZS5zbGljZSgwLGkpKSxlfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj10Lmxlbmd0aDwwPzA6MHxtKHQubGVuZ3RoKTtlPWEoZSxuKTtmb3IodmFyIHI9MDtyPG47cis9MSllW3JdPTI1NSZ0W3JdO3JldHVybiBlfWZ1bmN0aW9uIGYoZSx0LG4scil7aWYodC5ieXRlTGVuZ3RoLG48MHx8dC5ieXRlTGVuZ3RoPG4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8bisocnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gdD12b2lkIDA9PT1uJiZ2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxuKTpuZXcgVWludDhBcnJheSh0LG4sciksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQsZS5fX3Byb3RvX189by5wcm90b3R5cGUpOmU9aChlLHQpLGV9ZnVuY3Rpb24gZChlLHQpe2lmKG8uaXNCdWZmZXIodCkpe3ZhciBuPTB8bSh0Lmxlbmd0aCk7cmV0dXJuIGU9YShlLG4pLDA9PT1lLmxlbmd0aD9lOih0LmNvcHkoZSwwLDAsbiksZSl9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fEcodC5sZW5ndGgpP2EoZSwwKTpoKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJloodC5kYXRhKSlyZXR1cm4gaChlLHQuZGF0YSl9dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfWZ1bmN0aW9uIG0oZSl7aWYoZT49aSgpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitpKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIGcoZSl7cmV0dXJuK2UhPWUmJihlPTApLG8uYWxsb2MoK2UpfWZ1bmN0aW9uIHkoZSx0KXtpZihvLmlzQnVmZmVyKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgbj1lLmxlbmd0aDtpZigwPT09bilyZXR1cm4gMDtmb3IodmFyIHI9ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gbjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBIKGUpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqbjtjYXNlImhleCI6cmV0dXJuIG4+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVyhlKS5sZW5ndGg7ZGVmYXVsdDppZihyKXJldHVybiBIKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLHI9ITB9fWZ1bmN0aW9uIHYoZSx0LG4pe3ZhciByPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1ufHxuPnRoaXMubGVuZ3RoKSYmKG49dGhpcy5sZW5ndGgpLG48PTApcmV0dXJuIiI7aWYobj4+Pj0wLHQ+Pj49MCxuPD10KXJldHVybiIiO2ZvcihlfHwoZT0idXRmOCIpOzspc3dpdGNoKGUpe2Nhc2UiaGV4IjpyZXR1cm4gTCh0aGlzLHQsbik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gVCh0aGlzLHQsbik7Y2FzZSJhc2NpaSI6cmV0dXJuIEkodGhpcyx0LG4pO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIEQodGhpcyx0LG4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gayh0aGlzLHQsbik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBNKHRoaXMsdCxuKTtkZWZhdWx0OmlmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLHI9ITB9fWZ1bmN0aW9uIGIoZSx0LG4pe3ZhciByPWVbdF07ZVt0XT1lW25dLGVbbl09cn1mdW5jdGlvbiB3KGUsdCxuLHIsaSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygbj8ocj1uLG49MCk6bj4yMTQ3NDgzNjQ3P249MjE0NzQ4MzY0NzpuPC0yMTQ3NDgzNjQ4JiYobj0tMjE0NzQ4MzY0OCksbj0rbixpc05hTihuKSYmKG49aT8wOmUubGVuZ3RoLTEpLG48MCYmKG49ZS5sZW5ndGgrbiksbj49ZS5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7bj1lLmxlbmd0aC0xfWVsc2UgaWYobjwwKXtpZighaSlyZXR1cm4tMTtuPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1vLmZyb20odCxyKSksby5pc0J1ZmZlcih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOl8oZSx0LG4scixpKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ9MjU1JnQsby5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQsbik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQsbik6XyhlLFt0XSxuLHIsaSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gXyhlLHQsbixyLGkpe2Z1bmN0aW9uIGEoZSx0KXtyZXR1cm4gMT09PW8/ZVt0XTplLnJlYWRVSW50MTZCRSh0Km8pfXZhciBvPTEscz1lLmxlbmd0aCxsPXQubGVuZ3RoO2lmKHZvaWQgMCE9PXImJihyPVN0cmluZyhyKS50b0xvd2VyQ2FzZSgpLCJ1Y3MyIj09PXJ8fCJ1Y3MtMiI9PT1yfHwidXRmMTZsZSI9PT1yfHwidXRmLTE2bGUiPT09cikpe2lmKGUubGVuZ3RoPDJ8fHQubGVuZ3RoPDIpcmV0dXJuLTE7bz0yLHMvPTIsbC89MixuLz0yfXZhciB1O2lmKGkpe3ZhciBjPS0xO2Zvcih1PW47dTxzO3UrKylpZihhKGUsdSk9PT1hKHQsYz09PS0xPzA6dS1jKSl7aWYoYz09PS0xJiYoYz11KSx1LWMrMT09PWwpcmV0dXJuIGMqb31lbHNlIGMhPT0tMSYmKHUtPXUtYyksYz0tMX1lbHNlIGZvcihuK2w+cyYmKG49cy1sKSx1PW47dT49MDt1LS0pe2Zvcih2YXIgcD0hMCxoPTA7aDxsO2grKylpZihhKGUsdStoKSE9PWEodCxoKSl7cD0hMTticmVha31pZihwKXJldHVybiB1fXJldHVybi0xfWZ1bmN0aW9uIHgoZSx0LG4scil7bj1OdW1iZXIobil8fDA7dmFyIGk9ZS5sZW5ndGgtbjtyPyhyPU51bWJlcihyKSxyPmkmJihyPWkpKTpyPWk7dmFyIGE9dC5sZW5ndGg7aWYoYSUyIT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtyPmEvMiYmKHI9YS8yKTtmb3IodmFyIG89MDtvPHI7KytvKXt2YXIgcz1wYXJzZUludCh0LnN1YnN0cigyKm8sMiksMTYpO2lmKGlzTmFOKHMpKXJldHVybiBvO2VbbitvXT1zfXJldHVybiBvfWZ1bmN0aW9uIEEoZSx0LG4scil7cmV0dXJuIFEoSCh0LGUubGVuZ3RoLW4pLGUsbixyKX1mdW5jdGlvbiBTKGUsdCxuLHIpe3JldHVybiBRKFkodCksZSxuLHIpfWZ1bmN0aW9uIGooZSx0LG4scil7cmV0dXJuIFMoZSx0LG4scil9ZnVuY3Rpb24gRShlLHQsbixyKXtyZXR1cm4gUShXKHQpLGUsbixyKX1mdW5jdGlvbiBPKGUsdCxuLHIpe3JldHVybiBRKEoodCxlLmxlbmd0aC1uKSxlLG4scil9ZnVuY3Rpb24gayhlLHQsbil7cmV0dXJuIDA9PT10JiZuPT09ZS5sZW5ndGg/Sy5mcm9tQnl0ZUFycmF5KGUpOksuZnJvbUJ5dGVBcnJheShlLnNsaWNlKHQsbikpfWZ1bmN0aW9uIFQoZSx0LG4pe249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKHZhciByPVtdLGk9dDtpPG47KXt2YXIgYT1lW2ldLG89bnVsbCxzPWE+MjM5PzQ6YT4yMjM/MzphPjE5MT8yOjE7aWYoaStzPD1uKXt2YXIgbCx1LGMscDtzd2l0Y2gocyl7Y2FzZSAxOmE8MTI4JiYobz1hKTticmVhaztjYXNlIDI6bD1lW2krMV0sMTI4PT09KDE5MiZsKSYmKHA9KDMxJmEpPDw2fDYzJmwscD4xMjcmJihvPXApKTticmVhaztjYXNlIDM6bD1lW2krMV0sdT1lW2krMl0sMTI4PT09KDE5MiZsKSYmMTI4PT09KDE5MiZ1KSYmKHA9KDE1JmEpPDwxMnwoNjMmbCk8PDZ8NjMmdSxwPjIwNDcmJihwPDU1Mjk2fHxwPjU3MzQzKSYmKG89cCkpO2JyZWFrO2Nhc2UgNDpsPWVbaSsxXSx1PWVbaSsyXSxjPWVbaSszXSwxMjg9PT0oMTkyJmwpJiYxMjg9PT0oMTkyJnUpJiYxMjg9PT0oMTkyJmMpJiYocD0oMTUmYSk8PDE4fCg2MyZsKTw8MTJ8KDYzJnUpPDw2fDYzJmMscD42NTUzNSYmcDwxMTE0MTEyJiYobz1wKSl9fW51bGw9PT1vPyhvPTY1NTMzLHM9MSk6bz42NTUzNSYmKG8tPTY1NTM2LHIucHVzaChvPj4+MTAmMTAyM3w1NTI5Niksbz01NjMyMHwxMDIzJm8pLHIucHVzaChvKSxpKz1zfXJldHVybiBDKHIpfWZ1bmN0aW9uIEMoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9ZWUpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO2Zvcih2YXIgbj0iIixyPTA7cjx0OyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKHIscis9ZWUpKTtyZXR1cm4gbn1mdW5jdGlvbiBJKGUsdCxuKXt2YXIgcj0iIjtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2Zvcih2YXIgaT10O2k8bjsrK2kpcis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gRChlLHQsbil7dmFyIHI9IiI7bj1NYXRoLm1pbihlLmxlbmd0aCxuKTtmb3IodmFyIGk9dDtpPG47KytpKXIrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gTChlLHQsbil7dmFyIHI9ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIW58fG48MHx8bj5yKSYmKG49cik7Zm9yKHZhciBpPSIiLGE9dDthPG47KythKWkrPVYoZVthXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTShlLHQsbil7Zm9yKHZhciByPWUuc2xpY2UodCxuKSxpPSIiLGE9MDthPHIubGVuZ3RoO2ErPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShyW2FdKzI1NipyW2ErMV0pO3JldHVybiBpfWZ1bmN0aW9uIFIoZSx0LG4pe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0Pm4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBVKGUsdCxuLHIsaSxhKXtpZighby5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5pfHx0PGEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKG4rcj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUChlLHQsbixyKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBpPTAsYT1NYXRoLm1pbihlLmxlbmd0aC1uLDIpO2k8YTsrK2kpZVtuK2ldPSh0JjI1NTw8OCoocj9pOjEtaSkpPj4+OCoocj9pOjEtaSl9ZnVuY3Rpb24gcShlLHQsbixyKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGk9MCxhPU1hdGgubWluKGUubGVuZ3RoLW4sNCk7aTxhOysraSllW24raV09dD4+PjgqKHI/aTozLWkpJjI1NX1mdW5jdGlvbiBCKGUsdCxuLHIsaSxhKXtpZihuK3I+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24geihlLHQsbixyLGkpe3JldHVybiBpfHxCKGUsdCxuLDQsMy40MDI4MjM0NjYzODUyODg2ZTM4LC0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgpLFgud3JpdGUoZSx0LG4sciwyMyw0KSxuKzR9ZnVuY3Rpb24gTihlLHQsbixyLGkpe3JldHVybiBpfHxCKGUsdCxuLDgsMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCwtMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCksWC53cml0ZShlLHQsbixyLDUyLDgpLG4rOH1mdW5jdGlvbiAkKGUpe2lmKGU9RihlKS5yZXBsYWNlKHRlLCIiKSxlLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9PTA7KWUrPSI9IjtyZXR1cm4gZX1mdW5jdGlvbiBGKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9ZnVuY3Rpb24gVihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gSChlLHQpe3Q9dHx8MS8wO2Zvcih2YXIgbixyPWUubGVuZ3RoLGk9bnVsbCxhPVtdLG89MDtvPHI7KytvKXtpZihuPWUuY2hhckNvZGVBdChvKSxuPjU1Mjk1JiZuPDU3MzQ0KXtpZighaSl7aWYobj41NjMxOSl7KHQtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PXIpeyh0LT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPW47Y29udGludWV9aWYobjw1NjMyMCl7KHQtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpLGk9bjtjb250aW51ZX1uPShpLTU1Mjk2PDwxMHxuLTU2MzIwKSs2NTUzNn1lbHNlIGkmJih0LT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwsbjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2EucHVzaChuKX1lbHNlIGlmKG48MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7YS5wdXNoKG4+PjZ8MTkyLDYzJm58MTI4KX1lbHNlIGlmKG48NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2EucHVzaChuPj4xMnwyMjQsbj4+NiY2M3wxMjgsNjMmbnwxMjgpfWVsc2V7aWYoIShuPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7YS5wdXNoKG4+PjE4fDI0MCxuPj4xMiY2M3wxMjgsbj4+NiY2M3wxMjgsNjMmbnwxMjgpfX1yZXR1cm4gYX1mdW5jdGlvbiBZKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDsrK24pdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQobikpO3JldHVybiB0fWZ1bmN0aW9uIEooZSx0KXtmb3IodmFyIG4scixpLGE9W10sbz0wO288ZS5sZW5ndGgmJiEoKHQtPTIpPDApOysrbyluPWUuY2hhckNvZGVBdChvKSxyPW4+PjgsaT1uJTI1NixhLnB1c2goaSksYS5wdXNoKHIpO3JldHVybiBhfWZ1bmN0aW9uIFcoZSl7cmV0dXJuIEsudG9CeXRlQXJyYXkoJChlKSl9ZnVuY3Rpb24gUShlLHQsbixyKXtmb3IodmFyIGk9MDtpPHImJiEoaStuPj10Lmxlbmd0aHx8aT49ZS5sZW5ndGgpOysraSl0W2krbl09ZVtpXTtyZXR1cm4gaX1mdW5jdGlvbiBHKGUpe3JldHVybiBlIT09ZX12YXIgSz1lKCJiYXNlNjQtanMiKSxYPWUoImllZWU3NTQiKSxaPWUoImlzYXJyYXkiKTtuLkJ1ZmZlcj1vLG4uU2xvd0J1ZmZlcj1nLG4uSU5TUEVDVF9NQVhfQllURVM9NTAsby5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMCE9PXQuVFlQRURfQVJSQVlfU1VQUE9SVD90LlRZUEVEX0FSUkFZX1NVUFBPUlQ6cigpLG4ua01heExlbmd0aD1pKCksby5wb29sU2l6ZT04MTkyLG8uX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPW8ucHJvdG90eXBlLGV9LG8uZnJvbT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHMobnVsbCxlLHQsbil9LG8uVFlQRURfQVJSQVlfU1VQUE9SVCYmKG8ucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxvLl9fcHJvdG9fXz1VaW50OEFycmF5LCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuc3BlY2llcyYmb1tTeW1ib2wuc3BlY2llc109PT1vJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobyxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25maWd1cmFibGU6ITB9KSksby5hbGxvYz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHUobnVsbCxlLHQsbil9LG8uYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGMobnVsbCxlKX0sby5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGMobnVsbCxlKX0sby5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9LG8uY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFvLmlzQnVmZmVyKGUpfHwhby5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciBuPWUubGVuZ3RoLHI9dC5sZW5ndGgsaT0wLGE9TWF0aC5taW4obixyKTtpPGE7KytpKWlmKGVbaV0hPT10W2ldKXtuPWVbaV0scj10W2ldO2JyZWFrfXJldHVybiBuPHI/LTE6cjxuPzE6MH0sby5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxvLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFaKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG8uYWxsb2MoMCk7dmFyIG47aWYodm9pZCAwPT09dClmb3IodD0wLG49MDtuPGUubGVuZ3RoOysrbil0Kz1lW25dLmxlbmd0aDt2YXIgcj1vLmFsbG9jVW5zYWZlKHQpLGk9MDtmb3Iobj0wO248ZS5sZW5ndGg7KytuKXt2YXIgYT1lW25dO2lmKCFvLmlzQnVmZmVyKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTthLmNvcHkocixpKSxpKz1hLmxlbmd0aH1yZXR1cm4gcn0sby5ieXRlTGVuZ3RoPXksby5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLG8ucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTIpYih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NCliKHRoaXMsdCx0KzMpLGIodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OCliKHRoaXMsdCx0KzcpLGIodGhpcyx0KzEsdCs2KSxiKHRoaXMsdCsyLHQrNSksYih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP1QodGhpcywwLGUpOnYuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxvLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIW8uaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09ZXx8MD09PW8uY29tcGFyZSh0aGlzLGUpfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiIsdD1uLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsdCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPnQmJihlKz0iIC4uLiAiKSksIjxCdWZmZXIgIitlKyI+In0sby5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQsbixyLGkpe2lmKCFvLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1uJiYobj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PXImJihyPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSx0PDB8fG4+ZS5sZW5ndGh8fHI8MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocj49aSYmdD49bilyZXR1cm4gMDtpZihyPj1pKXJldHVybi0xO2lmKHQ+PW4pcmV0dXJuIDE7aWYodD4+Pj0wLG4+Pj49MCxyPj4+PTAsaT4+Pj0wLHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgYT1pLXIscz1uLXQsbD1NYXRoLm1pbihhLHMpLHU9dGhpcy5zbGljZShyLGkpLGM9ZS5zbGljZSh0LG4pLHA9MDtwPGw7KytwKWlmKHVbcF0hPT1jW3BdKXthPXVbcF0scz1jW3BdO2JyZWFrfXJldHVybiBhPHM/LTE6czxhPzE6MH0sby5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmluZGV4T2YoZSx0LG4pIT09LTF9LG8ucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB3KHRoaXMsZSx0LG4sITApfSxvLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHcodGhpcyxlLHQsbiwhMSl9LG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHZvaWQgMD09PXQpcj0idXRmOCIsbj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1uJiYic3RyaW5nIj09dHlwZW9mIHQpcj10LG49dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0PTB8dCxpc0Zpbml0ZShuKT8obj0wfG4sdm9pZCAwPT09ciYmKHI9InV0ZjgiKSk6KHI9bixuPXZvaWQgMCl9dmFyIGk9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09bnx8bj5pKSYmKG49aSksZS5sZW5ndGg+MCYmKG48MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtyfHwocj0idXRmOCIpO2Zvcih2YXIgYT0hMTs7KXN3aXRjaChyKXtjYXNlImhleCI6cmV0dXJuIHgodGhpcyxlLHQsbik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gQSh0aGlzLGUsdCxuKTtjYXNlImFzY2lpIjpyZXR1cm4gUyh0aGlzLGUsdCxuKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBqKHRoaXMsZSx0LG4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gRSh0aGlzLGUsdCxuKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIE8odGhpcyxlLHQsbik7ZGVmYXVsdDppZihhKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7cj0oIiIrcikudG9Mb3dlckNhc2UoKSxhPSEwfX0sby5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgZWU9NDA5NjtvLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMubGVuZ3RoO2U9fn5lLHQ9dm9pZCAwPT09dD9uOn5+dCxlPDA/KGUrPW4sZTwwJiYoZT0wKSk6ZT5uJiYoZT1uKSx0PDA/KHQrPW4sdDwwJiYodD0wKSk6dD5uJiYodD1uKSwKK3Q8ZSYmKHQ9ZSk7dmFyIHI7aWYoby5UWVBFRF9BUlJBWV9TVVBQT1JUKXI9dGhpcy5zdWJhcnJheShlLHQpLHIuX19wcm90b19fPW8ucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IG8oaSwodm9pZCAwKSk7Zm9yKHZhciBhPTA7YTxpOysrYSlyW2FdPXRoaXNbYStlXX1yZXR1cm4gcn0sby5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQsbil7ZT0wfGUsdD0wfHQsbnx8UihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgcj10aGlzW2VdLGk9MSxhPTA7KythPHQmJihpKj0yNTYpOylyKz10aGlzW2UrYV0qaTtyZXR1cm4gcn0sby5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQsbil7ZT0wfGUsdD0wfHQsbnx8UihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgcj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspcis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gcn0sby5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFIoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxvLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxvLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxvLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LG8ucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxSKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sby5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxuKXtlPTB8ZSx0PTB8dCxufHxSKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciByPXRoaXNbZV0saT0xLGE9MDsrK2E8dCYmKGkqPTI1Nik7KXIrPXRoaXNbZSthXSppO3JldHVybiBpKj0xMjgscj49aSYmKHItPU1hdGgucG93KDIsOCp0KSkscn0sby5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxuKXtlPTB8ZSx0PTB8dCxufHxSKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciByPXQsaT0xLGE9dGhpc1tlKy0tcl07cj4wJiYoaSo9MjU2KTspYSs9dGhpc1tlKy0tcl0qaTtyZXR1cm4gaSo9MTI4LGE+PWkmJihhLT1NYXRoLnBvdygyLDgqdCkpLGF9LG8ucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFIoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8oMjU1LXRoaXNbZV0rMSkqLTE6dGhpc1tlXX0sby5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXt0fHxSKGUsMix0aGlzLmxlbmd0aCk7dmFyIG49dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4Jm4/NDI5NDkwMTc2MHxuOm59LG8ucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8UihlLDIsdGhpcy5sZW5ndGgpO3ZhciBuPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZuPzQyOTQ5MDE3NjB8bjpufSxvLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxSKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxvLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxSKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxvLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxSKGUsNCx0aGlzLmxlbmd0aCksWC5yZWFkKHRoaXMsZSwhMCwyMyw0KX0sby5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UihlLDQsdGhpcy5sZW5ndGgpLFgucmVhZCh0aGlzLGUsITEsMjMsNCl9LG8ucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxSKGUsOCx0aGlzLmxlbmd0aCksWC5yZWFkKHRoaXMsZSwhMCw1Miw4KX0sby5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFIoZSw4LHRoaXMubGVuZ3RoKSxYLnJlYWQodGhpcyxlLCExLDUyLDgpfSxvLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQsbixyKXtpZihlPStlLHQ9MHx0LG49MHxuLCFyKXt2YXIgaT1NYXRoLnBvdygyLDgqbiktMTtVKHRoaXMsZSx0LG4saSwwKX12YXIgYT0xLG89MDtmb3IodGhpc1t0XT0yNTUmZTsrK288biYmKGEqPTI1Nik7KXRoaXNbdCtvXT1lL2EmMjU1O3JldHVybiB0K259LG8ucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9K2UsdD0wfHQsbj0wfG4sIXIpe3ZhciBpPU1hdGgucG93KDIsOCpuKS0xO1UodGhpcyxlLHQsbixpLDApfXZhciBhPW4tMSxvPTE7Zm9yKHRoaXNbdCthXT0yNTUmZTstLWE+PTAmJihvKj0yNTYpOyl0aGlzW3QrYV09ZS9vJjI1NTtyZXR1cm4gdCtufSxvLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxVKHRoaXMsZSx0LDEsMjU1LDApLG8uVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LG8ucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fFUodGhpcyxlLHQsMiw2NTUzNSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpQKHRoaXMsZSx0LCEwKSx0KzJ9LG8ucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fFUodGhpcyxlLHQsMiw2NTUzNSwwKSxvLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpQKHRoaXMsZSx0LCExKSx0KzJ9LG8ucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fFUodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpxKHRoaXMsZSx0LCEwKSx0KzR9LG8ucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fFUodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpxKHRoaXMsZSx0LCExKSx0KzR9LG8ucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0PTB8dCwhcil7dmFyIGk9TWF0aC5wb3coMiw4Km4tMSk7VSh0aGlzLGUsdCxuLGktMSwtaSl9dmFyIGE9MCxvPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrYTxuJiYobyo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCthLTFdJiYocz0xKSx0aGlzW3QrYV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrbn0sby5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQsbixyKXtpZihlPStlLHQ9MHx0LCFyKXt2YXIgaT1NYXRoLnBvdygyLDgqbi0xKTtVKHRoaXMsZSx0LG4saS0xLC1pKX12YXIgYT1uLTEsbz0xLHM9MDtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKG8qPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QrYSsxXSYmKHM9MSksdGhpc1t0K2FdPShlL28+PjApLXMmMjU1O3JldHVybiB0K259LG8ucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD0wfHQsbnx8VSh0aGlzLGUsdCwxLDEyNywtMTI4KSxvLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LG8ucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD0wfHQsbnx8VSh0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6UCh0aGlzLGUsdCwhMCksdCsyfSxvLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fFUodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLG8uVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOlAodGhpcyxlLHQsITEpLHQrMn0sby5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxVKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOnEodGhpcyxlLHQsITApLHQrNH0sby5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxVKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksby5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOnEodGhpcyxlLHQsITEpLHQrNH0sby5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geih0aGlzLGUsdCwhMCxuKX0sby5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geih0aGlzLGUsdCwhMSxuKX0sby5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE4odGhpcyxlLHQsITAsbil9LG8ucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBOKHRoaXMsZSx0LCExLG4pfSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxuLHIpe2lmKG58fChuPTApLHJ8fDA9PT1yfHwocj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxyPjAmJnI8biYmKHI9bikscj09PW4pcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwfHxuPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtyPnRoaXMubGVuZ3RoJiYocj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxyLW4mJihyPWUubGVuZ3RoLXQrbik7dmFyIGksYT1yLW47aWYodGhpcz09PWUmJm48dCYmdDxyKWZvcihpPWEtMTtpPj0wOy0taSllW2krdF09dGhpc1tpK25dO2Vsc2UgaWYoYTwxZTN8fCFvLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGk9MDtpPGE7KytpKWVbaSt0XT10aGlzW2krbl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkobixuK2EpLHQpO3JldHVybiBhfSxvLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhyPXQsdD0wLG49dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgbiYmKHI9bixuPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBpPWUuY2hhckNvZGVBdCgwKTtpPDI1NiYmKGU9aSl9aWYodm9pZCAwIT09ciYmInN0cmluZyIhPXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIHImJiFvLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIityKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZT0yNTUmZSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxuKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPD10KXJldHVybiB0aGlzO3Q+Pj49MCxuPXZvaWQgMD09PW4/dGhpcy5sZW5ndGg6bj4+PjAsZXx8KGU9MCk7dmFyIGE7aWYoIm51bWJlciI9PXR5cGVvZiBlKWZvcihhPXQ7YTxuOysrYSl0aGlzW2FdPWU7ZWxzZXt2YXIgcz1vLmlzQnVmZmVyKGUpP2U6SChuZXcgbyhlLHIpLnRvU3RyaW5nKCkpLGw9cy5sZW5ndGg7Zm9yKGE9MDthPG4tdDsrK2EpdGhpc1thK3RdPXNbYSVsXX1yZXR1cm4gdGhpc307dmFyIHRlPS9bXitcLzAtOUEtWmEtei1fXS9nfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7ImJhc2U2NC1qcyI6MixpZWVlNzU0OjM3LGlzYXJyYXk6NDB9XSw2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXk/QXJyYXkuaXNBcnJheShlKToiW29iamVjdCBBcnJheV0iPT09ZyhlKX1mdW5jdGlvbiByKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbnVsbD09PWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBzKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX1mdW5jdGlvbiBsKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX1mdW5jdGlvbiB1KGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIltvYmplY3QgUmVnRXhwXSI9PT1nKGUpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1mdW5jdGlvbiBoKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PWcoZSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4iW29iamVjdCBFcnJvcl0iPT09ZyhlKXx8ZSBpbnN0YW5jZW9mIEVycm9yfWZ1bmN0aW9uIGQoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gbShlKXtyZXR1cm4gbnVsbD09PWV8fCJib29sZWFuIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZXx8InN0cmluZyI9PXR5cGVvZiBlfHwic3ltYm9sIj09dHlwZW9mIGV8fCJ1bmRlZmluZWQiPT10eXBlb2YgZX1mdW5jdGlvbiBnKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9bi5pc0FycmF5PXQsbi5pc0Jvb2xlYW49cixuLmlzTnVsbD1pLG4uaXNOdWxsT3JVbmRlZmluZWQ9YSxuLmlzTnVtYmVyPW8sbi5pc1N0cmluZz1zLG4uaXNTeW1ib2w9bCxuLmlzVW5kZWZpbmVkPXUsbi5pc1JlZ0V4cD1jLG4uaXNPYmplY3Q9cCxuLmlzRGF0ZT1oLG4uaXNFcnJvcj1mLG4uaXNGdW5jdGlvbj1kLG4uaXNQcmltaXRpdmU9bSxuLmlzQnVmZmVyPWUuaXNCdWZmZXJ9KS5jYWxsKHRoaXMse2lzQnVmZmVyOmUoIi4uLy4uL2lzLWJ1ZmZlci9pbmRleC5qcyIpfSl9LHsiLi4vLi4vaXMtYnVmZmVyL2luZGV4LmpzIjozOX1dLDc6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7aWYoZSl7dmFyIG4scj0iIjtmb3IodmFyIGkgaW4gZSluPWVbaV0sciYmKHIrPSIgIikscis9IW4mJnBbaV0/aTppKyc9IicrKHQuZGVjb2RlRW50aXRpZXM/Yy5lbmNvZGVYTUwobik6bikrJyInO3JldHVybiByfX1mdW5jdGlvbiBpKGUsdCl7InN2ZyI9PT1lLm5hbWUmJih0PXtkZWNvZGVFbnRpdGllczp0LmRlY29kZUVudGl0aWVzLHhtbE1vZGU6ITB9KTt2YXIgbj0iPCIrZS5uYW1lLGk9cihlLmF0dHJpYnMsdCk7cmV0dXJuIGkmJihuKz0iICIraSksIXQueG1sTW9kZXx8ZS5jaGlsZHJlbiYmMCE9PWUuY2hpbGRyZW4ubGVuZ3RoPyhuKz0iPiIsZS5jaGlsZHJlbiYmKG4rPWQoZS5jaGlsZHJlbix0KSksZltlLm5hbWVdJiYhdC54bWxNb2RlfHwobis9IjwvIitlLm5hbWUrIj4iKSk6bis9Ii8+IixufWZ1bmN0aW9uIGEoZSl7cmV0dXJuIjwiK2UuZGF0YSsiPiJ9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWUuZGF0YXx8IiI7cmV0dXJuIXQuZGVjb2RlRW50aXRpZXN8fGUucGFyZW50JiZlLnBhcmVudC5uYW1lIGluIGh8fChuPWMuZW5jb2RlWE1MKG4pKSxufWZ1bmN0aW9uIHMoZSl7cmV0dXJuIjwhW0NEQVRBWyIrZS5jaGlsZHJlblswXS5kYXRhKyJdXT4ifWZ1bmN0aW9uIGwoZSl7cmV0dXJuIjwhLS0iK2UuZGF0YSsiLS0+In12YXIgdT1lKCJkb21lbGVtZW50dHlwZSIpLGM9ZSgiZW50aXRpZXMiKSxwPXtfX3Byb3RvX186bnVsbCxhbGxvd2Z1bGxzY3JlZW46ITAsYXN5bmM6ITAsYXV0b2ZvY3VzOiEwLGF1dG9wbGF5OiEwLGNoZWNrZWQ6ITAsY29udHJvbHM6ITAsImRlZmF1bHQiOiEwLGRlZmVyOiEwLGRpc2FibGVkOiEwLGhpZGRlbjohMCxpc21hcDohMCxsb29wOiEwLG11bHRpcGxlOiEwLG11dGVkOiEwLG9wZW46ITAscmVhZG9ubHk6ITAscmVxdWlyZWQ6ITAscmV2ZXJzZWQ6ITAsc2NvcGVkOiEwLHNlYW1sZXNzOiEwLHNlbGVjdGVkOiEwLHR5cGVtdXN0bWF0Y2g6ITB9LGg9e19fcHJvdG9fXzpudWxsLHN0eWxlOiEwLHNjcmlwdDohMCx4bXA6ITAsaWZyYW1lOiEwLG5vZW1iZWQ6ITAsbm9mcmFtZXM6ITAscGxhaW50ZXh0OiEwLG5vc2NyaXB0OiEwfSxmPXtfX3Byb3RvX186bnVsbCxhcmVhOiEwLGJhc2U6ITAsYmFzZWZvbnQ6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsZnJhbWU6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGlzaW5kZXg6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxkPXQuZXhwb3J0cz1mdW5jdGlvbihlLHQpe0FycmF5LmlzQXJyYXkoZSl8fGUuY2hlZXJpb3x8KGU9W2VdKSx0PXR8fHt9O2Zvcih2YXIgbj0iIixyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBjPWVbcl07bis9InJvb3QiPT09Yy50eXBlP2QoYy5jaGlsZHJlbix0KTp1LmlzVGFnKGMpP2koYyx0KTpjLnR5cGU9PT11LkRpcmVjdGl2ZT9hKGMpOmMudHlwZT09PXUuQ29tbWVudD9sKGMpOmMudHlwZT09PXUuQ0RBVEE/cyhjKTpvKGMsdCl9cmV0dXJuIG59fSx7ZG9tZWxlbWVudHR5cGU6OCxlbnRpdGllczoyMH1dLDg6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9e1RleHQ6InRleHQiLERpcmVjdGl2ZToiZGlyZWN0aXZlIixDb21tZW50OiJjb21tZW50IixTY3JpcHQ6InNjcmlwdCIsU3R5bGU6InN0eWxlIixUYWc6InRhZyIsQ0RBVEE6ImNkYXRhIixpc1RhZzpmdW5jdGlvbihlKXtyZXR1cm4idGFnIj09PWUudHlwZXx8InNjcmlwdCI9PT1lLnR5cGV8fCJzdHlsZSI9PT1lLnR5cGV9fX0se31dLDk6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9e1RleHQ6InRleHQiLERpcmVjdGl2ZToiZGlyZWN0aXZlIixDb21tZW50OiJjb21tZW50IixTY3JpcHQ6InNjcmlwdCIsU3R5bGU6InN0eWxlIixUYWc6InRhZyIsQ0RBVEE6ImNkYXRhIixEb2N0eXBlOiJkb2N0eXBlIixpc1RhZzpmdW5jdGlvbihlKXtyZXR1cm4idGFnIj09PWUudHlwZXx8InNjcmlwdCI9PT1lLnR5cGV8fCJzdHlsZSI9PT1lLnR5cGV9fX0se31dLDEwOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7Im9iamVjdCI9PXR5cGVvZiBlPyhuPXQsdD1lLGU9bnVsbCk6ImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1sKSx0aGlzLl9jYWxsYmFjaz1lLHRoaXMuX29wdGlvbnM9dHx8bCx0aGlzLl9lbGVtZW50Q0I9bix0aGlzLmRvbT1bXSx0aGlzLl9kb25lPSExLHRoaXMuX3RhZ1N0YWNrPVtdLHRoaXMuX3BhcnNlcj10aGlzLl9wYXJzZXJ8fG51bGx9dmFyIGk9ZSgiZG9tZWxlbWVudHR5cGUiKSxhPS9ccysvZyxvPWUoIi4vbGliL25vZGUiKSxzPWUoIi4vbGliL2VsZW1lbnQiKSxsPXtub3JtYWxpemVXaGl0ZXNwYWNlOiExLHdpdGhTdGFydEluZGljZXM6ITF9O3IucHJvdG90eXBlLm9ucGFyc2VyaW5pdD1mdW5jdGlvbihlKXt0aGlzLl9wYXJzZXI9ZX0sci5wcm90b3R5cGUub25yZXNldD1mdW5jdGlvbigpe3IuY2FsbCh0aGlzLHRoaXMuX2NhbGxiYWNrLHRoaXMuX29wdGlvbnMsdGhpcy5fZWxlbWVudENCKX0sci5wcm90b3R5cGUub25lbmQ9ZnVuY3Rpb24oKXt0aGlzLl9kb25lfHwodGhpcy5fZG9uZT0hMCx0aGlzLl9wYXJzZXI9bnVsbCx0aGlzLl9oYW5kbGVDYWxsYmFjayhudWxsKSl9LHIucHJvdG90eXBlLl9oYW5kbGVDYWxsYmFjaz1yLnByb3RvdHlwZS5vbmVycm9yPWZ1bmN0aW9uKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9jYWxsYmFjayl0aGlzLl9jYWxsYmFjayhlLHRoaXMuZG9tKTtlbHNlIGlmKGUpdGhyb3cgZX0sci5wcm90b3R5cGUub25jbG9zZXRhZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX3RhZ1N0YWNrLnBvcCgpO3RoaXMuX2VsZW1lbnRDQiYmdGhpcy5fZWxlbWVudENCKGUpfSxyLnByb3RvdHlwZS5fYWRkRG9tRWxlbWVudD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90YWdTdGFja1t0aGlzLl90YWdTdGFjay5sZW5ndGgtMV0sbj10P3QuY2hpbGRyZW46dGhpcy5kb20scj1uW24ubGVuZ3RoLTFdO2UubmV4dD1udWxsLHRoaXMuX29wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcyYmKGUuc3RhcnRJbmRleD10aGlzLl9wYXJzZXIuc3RhcnRJbmRleCksdGhpcy5fb3B0aW9ucy53aXRoRG9tTHZsMSYmKGUuX19wcm90b19fPSJ0YWciPT09ZS50eXBlP3M6bykscj8oZS5wcmV2PXIsci5uZXh0PWUpOmUucHJldj1udWxsLG4ucHVzaChlKSxlLnBhcmVudD10fHxudWxsfSxyLnByb3RvdHlwZS5vbm9wZW50YWc9ZnVuY3Rpb24oZSx0KXt2YXIgbj17dHlwZToic2NyaXB0Ij09PWU/aS5TY3JpcHQ6InN0eWxlIj09PWU/aS5TdHlsZTppLlRhZyxuYW1lOmUsYXR0cmliczp0LGNoaWxkcmVuOltdfTt0aGlzLl9hZGREb21FbGVtZW50KG4pLHRoaXMuX3RhZ1N0YWNrLnB1c2gobil9LHIucHJvdG90eXBlLm9udGV4dD1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX29wdGlvbnMubm9ybWFsaXplV2hpdGVzcGFjZXx8dGhpcy5fb3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlOyF0aGlzLl90YWdTdGFjay5sZW5ndGgmJnRoaXMuZG9tLmxlbmd0aCYmKHQ9dGhpcy5kb21bdGhpcy5kb20ubGVuZ3RoLTFdKS50eXBlPT09aS5UZXh0P24/dC5kYXRhPSh0LmRhdGErZSkucmVwbGFjZShhLCIgIik6dC5kYXRhKz1lOnRoaXMuX3RhZ1N0YWNrLmxlbmd0aCYmKHQ9dGhpcy5fdGFnU3RhY2tbdGhpcy5fdGFnU3RhY2subGVuZ3RoLTFdKSYmKHQ9dC5jaGlsZHJlblt0LmNoaWxkcmVuLmxlbmd0aC0xXSkmJnQudHlwZT09PWkuVGV4dD9uP3QuZGF0YT0odC5kYXRhK2UpLnJlcGxhY2UoYSwiICIpOnQuZGF0YSs9ZToobiYmKGU9ZS5yZXBsYWNlKGEsIiAiKSksdGhpcy5fYWRkRG9tRWxlbWVudCh7ZGF0YTplLHR5cGU6aS5UZXh0fSkpfSxyLnByb3RvdHlwZS5vbmNvbW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdGFnU3RhY2tbdGhpcy5fdGFnU3RhY2subGVuZ3RoLTFdO2lmKHQmJnQudHlwZT09PWkuQ29tbWVudClyZXR1cm4gdm9pZCh0LmRhdGErPWUpO3ZhciBuPXtkYXRhOmUsdHlwZTppLkNvbW1lbnR9O3RoaXMuX2FkZERvbUVsZW1lbnQobiksdGhpcy5fdGFnU3RhY2sucHVzaChuKX0sci5wcm90b3R5cGUub25jZGF0YXN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGU9e2NoaWxkcmVuOlt7ZGF0YToiIix0eXBlOmkuVGV4dH1dLHR5cGU6aS5DREFUQX07dGhpcy5fYWRkRG9tRWxlbWVudChlKSx0aGlzLl90YWdTdGFjay5wdXNoKGUpfSxyLnByb3RvdHlwZS5vbmNvbW1lbnRlbmQ9ci5wcm90b3R5cGUub25jZGF0YWVuZD1mdW5jdGlvbigpe3RoaXMuX3RhZ1N0YWNrLnBvcCgpfSxyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbj1mdW5jdGlvbihlLHQpe3RoaXMuX2FkZERvbUVsZW1lbnQoe25hbWU6ZSxkYXRhOnQsdHlwZTppLkRpcmVjdGl2ZX0pfSx0LmV4cG9ydHM9cn0seyIuL2xpYi9lbGVtZW50IjoxMSwiLi9saWIvbm9kZSI6MTIsZG9tZWxlbWVudHR5cGU6OX1dLDExOltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9ub2RlIiksaT10LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZShyKSxhPXt0YWdOYW1lOiJuYW1lIn07T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1hW2VdO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW3RdfHxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbdF09ZSxlfX0pfSl9LHsiLi9ub2RlIjoxMn1dLDEyOltmdW5jdGlvbihlLHQsbil7dmFyIHI9dC5leHBvcnRzPXtnZXQgZmlyc3RDaGlsZCgpe3ZhciBlPXRoaXMuY2hpbGRyZW47cmV0dXJuIGUmJmVbMF18fG51bGx9LGdldCBsYXN0Q2hpbGQoKXt2YXIgZT10aGlzLmNoaWxkcmVuO3JldHVybiBlJiZlW2UubGVuZ3RoLTFdfHxudWxsfSxnZXQgbm9kZVR5cGUoKXtyZXR1cm4gYVt0aGlzLnR5cGVdfHxhLmVsZW1lbnR9fSxpPXt0YWdOYW1lOiJuYW1lIixjaGlsZE5vZGVzOiJjaGlsZHJlbiIscGFyZW50Tm9kZToicGFyZW50IixwcmV2aW91c1NpYmxpbmc6InByZXYiLG5leHRTaWJsaW5nOiJuZXh0Iixub2RlVmFsdWU6ImRhdGEifSxhPXtlbGVtZW50OjEsdGV4dDozLGNkYXRhOjQsY29tbWVudDo4fTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWlbZV07T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF18fG51bGx9LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1t0XT1lLGV9fSl9KX0se31dLDEzOltmdW5jdGlvbihlLHQsbil7dmFyIHI9dC5leHBvcnRzO1tlKCIuL2xpYi9zdHJpbmdpZnkiKSxlKCIuL2xpYi90cmF2ZXJzYWwiKSxlKCIuL2xpYi9tYW5pcHVsYXRpb24iKSxlKCIuL2xpYi9xdWVyeWluZyIpLGUoIi4vbGliL2xlZ2FjeSIpLGUoIi4vbGliL2hlbHBlcnMiKV0uZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JbdF09ZVt0XS5iaW5kKHIpfSl9KX0seyIuL2xpYi9oZWxwZXJzIjoxNCwiLi9saWIvbGVnYWN5IjoxNSwiLi9saWIvbWFuaXB1bGF0aW9uIjoxNiwiLi9saWIvcXVlcnlpbmciOjE3LCIuL2xpYi9zdHJpbmdpZnkiOjE4LCIuL2xpYi90cmF2ZXJzYWwiOjE5fV0sMTQ6W2Z1bmN0aW9uKGUsdCxuKXtuLnJlbW92ZVN1YnNldHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWUubGVuZ3RoOy0taT4tMTspe2Zvcih0PW49ZVtpXSxlW2ldPW51bGwscj0hMDtuOyl7aWYoZS5pbmRleE9mKG4pPi0xKXtyPSExLGUuc3BsaWNlKGksMSk7YnJlYWt9bj1uLnBhcmVudH1yJiYoZVtpXT10KX1yZXR1cm4gZX07dmFyIHI9e0RJU0NPTk5FQ1RFRDoxLFBSRUNFRElORzoyLEZPTExPV0lORzo0LENPTlRBSU5TOjgsQ09OVEFJTkVEX0JZOjE2fSxpPW4uY29tcGFyZURvY3VtZW50UG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbixpLGEsbyxzLGwsdT1bXSxjPVtdO2lmKGU9PT10KXJldHVybiAwO2ZvcihuPWU7bjspdS51bnNoaWZ0KG4pLG49bi5wYXJlbnQ7Zm9yKG49dDtuOyljLnVuc2hpZnQobiksbj1uLnBhcmVudDtmb3IobD0wO3VbbF09PT1jW2xdOylsKys7cmV0dXJuIDA9PT1sP3IuRElTQ09OTkVDVEVEOihpPXVbbC0xXSxhPWkuY2hpbGRyZW4sbz11W2xdLHM9Y1tsXSxhLmluZGV4T2Yobyk+YS5pbmRleE9mKHMpP2k9PT10P3IuRk9MTE9XSU5HfHIuQ09OVEFJTkVEX0JZOnIuRk9MTE9XSU5HOmk9PT1lP3IuUFJFQ0VESU5HfHIuQ09OVEFJTlM6ci5QUkVDRURJTkcpfTtuLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixhPWUubGVuZ3RoO2ZvcihlPWUuc2xpY2UoKTstLWE+LTE7KXQ9ZVthXSxuPWUuaW5kZXhPZih0KSxuPi0xJiZuPGEmJmUuc3BsaWNlKGEsMSk7cmV0dXJuIGUuc29ydChmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSx0KTtyZXR1cm4gbiZyLlBSRUNFRElORz8tMTpuJnIuRk9MTE9XSU5HPzE6MH0pLGV9fSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24obil7cmV0dXJuIG4uYXR0cmlicyYmdChuLmF0dHJpYnNbZV0pfTpmdW5jdGlvbihuKXtyZXR1cm4gbi5hdHRyaWJzJiZuLmF0dHJpYnNbZV09PT10fX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlKG4pfHx0KG4pfX12YXIgYT1lKCJkb21lbGVtZW50dHlwZSIpLG89bi5pc1RhZz1hLmlzVGFnO24udGVzdEVsZW1lbnQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXtpZigidGFnX25hbWUiPT09bil7aWYoIW8odCl8fCFlLnRhZ19uYW1lKHQubmFtZSkpcmV0dXJuITF9ZWxzZSBpZigidGFnX3R5cGUiPT09bil7aWYoIWUudGFnX3R5cGUodC50eXBlKSlyZXR1cm4hMX1lbHNlIGlmKCJ0YWdfY29udGFpbnMiPT09bil7aWYobyh0KXx8IWUudGFnX2NvbnRhaW5zKHQuZGF0YSkpcmV0dXJuITF9ZWxzZSBpZighdC5hdHRyaWJzfHwhZVtuXSh0LmF0dHJpYnNbbl0pKXJldHVybiExfWVsc2U7cmV0dXJuITB9O3ZhciBzPXt0YWdfbmFtZTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbih0KXtyZXR1cm4gbyh0KSYmZSh0Lm5hbWUpfToiKiI9PT1lP286ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkmJnQubmFtZT09PWV9fSx0YWdfdHlwZTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbih0KXtyZXR1cm4gZSh0LnR5cGUpfTpmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ZX19LHRhZ19jb250YWluczpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbih0KXtyZXR1cm4hbyh0KSYmZSh0LmRhdGEpfTpmdW5jdGlvbih0KXtyZXR1cm4hbyh0KSYmdC5kYXRhPT09ZX19fTtuLmdldEVsZW1lbnRzPWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciBvPU9iamVjdC5rZXlzKGUpLm1hcChmdW5jdGlvbih0KXt2YXIgbj1lW3RdO3JldHVybiB0IGluIHM/c1t0XShuKTpyKHQsbil9KTtyZXR1cm4gMD09PW8ubGVuZ3RoP1tdOnRoaXMuZmlsdGVyKG8ucmVkdWNlKGkpLHQsbixhKX0sbi5nZXRFbGVtZW50QnlJZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl8fCh0PVt0XSksdGhpcy5maW5kT25lKHIoImlkIixlKSx0LG4hPT0hMSl9LG4uZ2V0RWxlbWVudHNCeVRhZ05hbWU9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKHMudGFnX25hbWUoZSksdCxuLHIpfSxuLmdldEVsZW1lbnRzQnlUYWdUeXBlPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihzLnRhZ190eXBlKGUpLHQsbixyKX19LHtkb21lbGVtZW50dHlwZTo5fV0sMTY6W2Z1bmN0aW9uKGUsdCxuKXtuLnJlbW92ZUVsZW1lbnQ9ZnVuY3Rpb24oZSl7aWYoZS5wcmV2JiYoZS5wcmV2Lm5leHQ9ZS5uZXh0KSxlLm5leHQmJihlLm5leHQucHJldj1lLnByZXYpLGUucGFyZW50KXt2YXIgdD1lLnBhcmVudC5jaGlsZHJlbjt0LnNwbGljZSh0Lmxhc3RJbmRleE9mKGUpLDEpfX0sbi5yZXBsYWNlRWxlbWVudD1mdW5jdGlvbihlLHQpe3ZhciBuPXQucHJldj1lLnByZXY7biYmKG4ubmV4dD10KTt2YXIgcj10Lm5leHQ9ZS5uZXh0O3ImJihyLnByZXY9dCk7dmFyIGk9dC5wYXJlbnQ9ZS5wYXJlbnQ7aWYoaSl7dmFyIGE9aS5jaGlsZHJlbjthW2EubGFzdEluZGV4T2YoZSldPXR9fSxuLmFwcGVuZENoaWxkPWZ1bmN0aW9uKGUsdCl7aWYodC5wYXJlbnQ9ZSwxIT09ZS5jaGlsZHJlbi5wdXNoKHQpKXt2YXIgbj1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTJdO24ubmV4dD10LHQucHJldj1uLHQubmV4dD1udWxsfX0sbi5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnBhcmVudCxyPWUubmV4dDtpZih0Lm5leHQ9cix0LnByZXY9ZSxlLm5leHQ9dCx0LnBhcmVudD1uLHIpe2lmKHIucHJldj10LG4pe3ZhciBpPW4uY2hpbGRyZW47aS5zcGxpY2UoaS5sYXN0SW5kZXhPZihyKSwwLHQpfX1lbHNlIG4mJm4uY2hpbGRyZW4ucHVzaCh0KX0sbi5wcmVwZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wYXJlbnQ7aWYobil7dmFyIHI9bi5jaGlsZHJlbjtyLnNwbGljZShyLmxhc3RJbmRleE9mKGUpLDAsdCl9ZS5wcmV2JiYoZS5wcmV2Lm5leHQ9dCksdC5wYXJlbnQ9bix0LnByZXY9ZS5wcmV2LHQubmV4dD1lLGUucHJldj10fX0se31dLDE3OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKSwibnVtYmVyIj09dHlwZW9mIHImJmlzRmluaXRlKHIpfHwocj0xLzApLGkoZSx0LG4hPT0hMSxyKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2Zvcih2YXIgYSxvPVtdLHM9MCxsPXQubGVuZ3RoO3M8bCYmIShlKHRbc10pJiYoby5wdXNoKHRbc10pLC0tcjw9MCkpJiYoYT10W3NdLmNoaWxkcmVuLCEobiYmYSYmYS5sZW5ndGg+MCYmKGE9aShlLGEsbixyKSxvPW8uY29uY2F0KGEpLHItPWEubGVuZ3RoLHI8PTApKSk7cysrKTtyZXR1cm4gb31mdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKGUodFtuXSkpcmV0dXJuIHRbbl07cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgbj1udWxsLHI9MCxpPXQubGVuZ3RoO3I8aSYmIW47cisrKXUodFtyXSkmJihlKHRbcl0pP249dFtyXTp0W3JdLmNoaWxkcmVuLmxlbmd0aD4wJiYobj1vKGUsdFtyXS5jaGlsZHJlbikpKTtyZXR1cm4gbn1mdW5jdGlvbiBzKGUsdCl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKHUodFtuXSkmJihlKHRbbl0pfHx0W25dLmNoaWxkcmVuLmxlbmd0aD4wJiZzKGUsdFtuXS5jaGlsZHJlbikpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGwoZSx0KXtmb3IodmFyIG49W10scj0wLGk9dC5sZW5ndGg7cjxpO3IrKyl1KHRbcl0pJiYoZSh0W3JdKSYmbi5wdXNoKHRbcl0pLHRbcl0uY2hpbGRyZW4ubGVuZ3RoPjAmJihuPW4uY29uY2F0KGwoZSx0W3JdLmNoaWxkcmVuKSkpKTtyZXR1cm4gbn12YXIgdT1lKCJkb21lbGVtZW50dHlwZSIpLmlzVGFnO3QuZXhwb3J0cz17ZmlsdGVyOnIsZmluZDppLGZpbmRPbmVDaGlsZDphLGZpbmRPbmU6byxleGlzdHNPbmU6cyxmaW5kQWxsOmx9fSx7ZG9tZWxlbWVudHR5cGU6OX1dLDE4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBlLmNoaWxkcmVuP2UuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvKGUsdCl9KS5qb2luKCIiKToiIn1mdW5jdGlvbiBpKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKGkpLmpvaW4oIiIpOnMoZSl8fGUudHlwZT09PWEuQ0RBVEE/aShlLmNoaWxkcmVuKTplLnR5cGU9PT1hLlRleHQ/ZS5kYXRhOiIifXZhciBhPWUoImRvbWVsZW1lbnR0eXBlIiksbz1lKCJkb20tc2VyaWFsaXplciIpLHM9YS5pc1RhZzt0LmV4cG9ydHM9e2dldElubmVySFRNTDpyLGdldE91dGVySFRNTDpvLGdldFRleHQ6aX19LHsiZG9tLXNlcmlhbGl6ZXIiOjcsZG9tZWxlbWVudHR5cGU6OX1dLDE5OltmdW5jdGlvbihlLHQsbil7dmFyIHI9bi5nZXRDaGlsZHJlbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5jaGlsZHJlbn0saT1uLmdldFBhcmVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnR9O24uZ2V0U2libGluZ3M9ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtyZXR1cm4gdD9yKHQpOltlXX0sbi5nZXRBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmF0dHJpYnMmJmUuYXR0cmlic1t0XX0sbi5oYXNBdHRyaWI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hIWUuYXR0cmlicyYmaGFzT3duUHJvcGVydHkuY2FsbChlLmF0dHJpYnMsdCl9LG4uZ2V0TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5uYW1lfX0se31dLDIwOltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9saWIvZW5jb2RlLmpzIiksaT1lKCIuL2xpYi9kZWNvZGUuanMiKTtuLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybighdHx8dDw9MD9pLlhNTDppLkhUTUwpKGUpfSxuLmRlY29kZVN0cmljdD1mdW5jdGlvbihlLHQpe3JldHVybighdHx8dDw9MD9pLlhNTDppLkhUTUxTdHJpY3QpKGUpfSxuLmVuY29kZT1mdW5jdGlvbihlLHQpe3JldHVybighdHx8dDw9MD9yLlhNTDpyLkhUTUwpKGUpfSxuLmVuY29kZVhNTD1yLlhNTCxuLmVuY29kZUhUTUw0PW4uZW5jb2RlSFRNTDU9bi5lbmNvZGVIVE1MPXIuSFRNTCxuLmRlY29kZVhNTD1uLmRlY29kZVhNTFN0cmljdD1pLlhNTCxuLmRlY29kZUhUTUw0PW4uZGVjb2RlSFRNTDU9bi5kZWNvZGVIVE1MPWkuSFRNTCxuLmRlY29kZUhUTUw0U3RyaWN0PW4uZGVjb2RlSFRNTDVTdHJpY3Q9bi5kZWNvZGVIVE1MU3RyaWN0PWkuSFRNTFN0cmljdCxuLmVzY2FwZT1yLmVzY2FwZX0seyIuL2xpYi9kZWNvZGUuanMiOjIxLCIuL2xpYi9lbmNvZGUuanMiOjIzfV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciB0PU9iamVjdC5rZXlzKGUpLmpvaW4oInwiKSxuPWEoZSk7dCs9InwjW3hYXVtcXGRhLWZBLUZdK3wjXFxkKyI7dmFyIHI9bmV3IFJlZ0V4cCgiJig/OiIrdCsiKTsiLCJnIik7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShyLG4pfX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIGU8dD8xOi0xfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiIjIj09PXQuY2hhckF0KDEpP3UoIlgiPT09dC5jaGFyQXQoMil8fCJ4Ij09PXQuY2hhckF0KDIpP3BhcnNlSW50KHQuc3Vic3RyKDMpLDE2KTpwYXJzZUludCh0LnN1YnN0cigyKSwxMCkpOmVbdC5zbGljZSgxLC0xKV19fXZhciBvPWUoIi4uL21hcHMvZW50aXRpZXMuanNvbiIpLHM9ZSgiLi4vbWFwcy9sZWdhY3kuanNvbiIpLGw9ZSgiLi4vbWFwcy94bWwuanNvbiIpLHU9ZSgiLi9kZWNvZGVfY29kZXBvaW50LmpzIiksYz1yKGwpLHA9cihvKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4iOyIhPT1lLnN1YnN0cigtMSkmJihlKz0iOyIpLGMoZSl9Zm9yKHZhciB0PU9iamVjdC5rZXlzKHMpLnNvcnQoaSksbj1PYmplY3Qua2V5cyhvKS5zb3J0KGkpLHI9MCxsPTA7cjxuLmxlbmd0aDtyKyspdFtsXT09PW5bcl0/KG5bcl0rPSI7PyIsbCsrKTpuW3JdKz0iOyI7dmFyIHU9bmV3IFJlZ0V4cCgiJig/OiIrbi5qb2luKCJ8IikrInwjW3hYXVtcXGRhLWZBLUZdKzs/fCNcXGQrOz8pIiwiZyIpLGM9YShvKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKHUsZSl9fSgpO3QuZXhwb3J0cz17WE1MOmMsSFRNTDpoLEhUTUxTdHJpY3Q6cH19LHsiLi4vbWFwcy9lbnRpdGllcy5qc29uIjoyNSwiLi4vbWFwcy9sZWdhY3kuanNvbiI6MjYsIi4uL21hcHMveG1sLmpzb24iOjI3LCIuL2RlY29kZV9jb2RlcG9pbnQuanMiOjIyfV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe2lmKGU+PTU1Mjk2JiZlPD01NzM0M3x8ZT4xMTE0MTExKXJldHVybiLvv70iO2UgaW4gaSYmKGU9aVtlXSk7dmFyIHQ9IiI7cmV0dXJuIGU+NjU1MzUmJihlLT02NTUzNix0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU+Pj4xMCYxMDIzfDU1Mjk2KSxlPTU2MzIwfDEwMjMmZSksdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlKX12YXIgaT1lKCIuLi9tYXBzL2RlY29kZS5qc29uIik7dC5leHBvcnRzPXJ9LHsiLi4vbWFwcy9kZWNvZGUuanNvbiI6MjR9XSwyMzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnNvcnQoKS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gdFtlW25dXT0iJiIrbisiOyIsdH0se30pfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9W10sbj1bXTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihlKXsxPT09ZS5sZW5ndGg/dC5wdXNoKCJcXCIrZSk6bi5wdXNoKGUpfSksbi51bnNoaWZ0KCJbIit0LmpvaW4oIiIpKyJdIiksbmV3IFJlZ0V4cChuLmpvaW4oInwiKSwiZyIpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIiYjeCIrZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKyI7In1mdW5jdGlvbiBvKGUpe3ZhciB0PWUuY2hhckNvZGVBdCgwKSxuPWUuY2hhckNvZGVBdCgxKSxyPTEwMjQqKHQtNTUyOTYpK24tNTYzMjArNjU1MzY7cmV0dXJuIiYjeCIrci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSsiOyJ9ZnVuY3Rpb24gcyhlLHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGVbdF19cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UodCxuKS5yZXBsYWNlKGQsbykucmVwbGFjZShmLGEpfX1mdW5jdGlvbiBsKGUpe3JldHVybiBlLnJlcGxhY2UobSxhKS5yZXBsYWNlKGQsbykucmVwbGFjZShmLGEpfXZhciB1PXIoZSgiLi4vbWFwcy94bWwuanNvbiIpKSxjPWkodSk7bi5YTUw9cyh1LGMpO3ZhciBwPXIoZSgiLi4vbWFwcy9lbnRpdGllcy5qc29uIikpLGg9aShwKTtuLkhUTUw9cyhwLGgpO3ZhciBmPS9bXlwwLVx4N0ZdL2csZD0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csbT1pKHUpO24uZXNjYXBlPWx9LHsiLi4vbWFwcy9lbnRpdGllcy5qc29uIjoyNSwiLi4vbWFwcy94bWwuanNvbiI6Mjd9XSwyNDpbZnVuY3Rpb24oZSx0LG4pe3QuZXhwb3J0cz17MDo2NTUzMywxMjg6ODM2NCwxMzA6ODIxOCwxMzE6NDAyLDEzMjo4MjIyLDEzMzo4MjMwLDEzNDo4MjI0LDEzNTo4MjI1LDEzNjo3MTAsMTM3OjgyNDAsMTM4OjM1MiwxMzk6ODI0OSwxNDA6MzM4LDE0MjozODEsMTQ1OjgyMTYsMTQ2OjgyMTcsMTQ3OjgyMjAsMTQ4OjgyMjEsMTQ5OjgyMjYsMTUwOjgyMTEsMTUxOjgyMTIsMTUyOjczMiwxNTM6ODQ4MiwxNTQ6MzUzLDE1NTo4MjUwLDE1NjozMzksMTU4OjM4MiwxNTk6Mzc2fX0se31dLDI1OltmdW5jdGlvbihlLHQsbil7dC5leHBvcnRzPXtBYWN1dGU6IsOBIixhYWN1dGU6IsOhIixBYnJldmU6IsSCIixhYnJldmU6IsSDIixhYzoi4oi+IixhY2Q6IuKIvyIsYWNFOiLiiL7MsyIsQWNpcmM6IsOCIixhY2lyYzoiw6IiLGFjdXRlOiLCtCIsQWN5OiLQkCIsYWN5OiLQsCIsQUVsaWc6IsOGIixhZWxpZzoiw6YiLGFmOiLigaEiLEFmcjoi8J2UhCIsYWZyOiLwnZSeIixBZ3JhdmU6IsOAIixhZ3JhdmU6IsOgIixhbGVmc3ltOiLihLUiLGFsZXBoOiLihLUiLEFscGhhOiLOkSIsYWxwaGE6Is6xIixBbWFjcjoixIAiLGFtYWNyOiLEgSIsYW1hbGc6IuKovyIsYW1wOiImIixBTVA6IiYiLGFuZGFuZDoi4qmVIixBbmQ6IuKpkyIsYW5kOiLiiKciLGFuZGQ6IuKpnCIsYW5kc2xvcGU6IuKpmCIsYW5kdjoi4qmaIixhbmc6IuKIoCIsYW5nZToi4qakIixhbmdsZToi4oigIixhbmdtc2RhYToi4qaoIixhbmdtc2RhYjoi4qapIixhbmdtc2RhYzoi4qaqIixhbmdtc2RhZDoi4qarIixhbmdtc2RhZToi4qasIixhbmdtc2RhZjoi4qatIixhbmdtc2RhZzoi4qauIixhbmdtc2RhaDoi4qavIixhbmdtc2Q6IuKIoSIsYW5ncnQ6IuKInyIsYW5ncnR2Yjoi4oq+IixhbmdydHZiZDoi4qadIixhbmdzcGg6IuKIoiIsYW5nc3Q6IsOFIixhbmd6YXJyOiLijbwiLEFvZ29uOiLEhCIsYW9nb246IsSFIixBb3BmOiLwnZS4Iixhb3BmOiLwnZWSIixhcGFjaXI6IuKpryIsYXA6IuKJiCIsYXBFOiLiqbAiLGFwZToi4omKIixhcGlkOiLiiYsiLGFwb3M6IiciLEFwcGx5RnVuY3Rpb246IuKBoSIsYXBwcm94OiLiiYgiLGFwcHJveGVxOiLiiYoiLEFyaW5nOiLDhSIsYXJpbmc6IsOlIixBc2NyOiLwnZKcIixhc2NyOiLwnZK2IixBc3NpZ246IuKJlCIsYXN0OiIqIixhc3ltcDoi4omIIixhc3ltcGVxOiLiiY0iLEF0aWxkZToiw4MiLGF0aWxkZToiw6MiLEF1bWw6IsOEIixhdW1sOiLDpCIsYXdjb25pbnQ6IuKIsyIsYXdpbnQ6IuKokSIsYmFja2Nvbmc6IuKJjCIsYmFja2Vwc2lsb246Is+2IixiYWNrcHJpbWU6IuKAtSIsYmFja3NpbToi4oi9IixiYWNrc2ltZXE6IuKLjSIsQmFja3NsYXNoOiLiiJYiLEJhcnY6IuKrpyIsYmFydmVlOiLiir0iLGJhcndlZDoi4oyFIixCYXJ3ZWQ6IuKMhiIsYmFyd2VkZ2U6IuKMhSIsYmJyazoi4o61IixiYnJrdGJyazoi4o62IixiY29uZzoi4omMIixCY3k6ItCRIixiY3k6ItCxIixiZHF1bzoi4oCeIixiZWNhdXM6IuKItSIsYmVjYXVzZToi4oi1IixCZWNhdXNlOiLiiLUiLGJlbXB0eXY6IuKmsCIsYmVwc2k6Is+2IixiZXJub3U6IuKErCIsQmVybm91bGxpczoi4oSsIixCZXRhOiLOkiIsYmV0YToizrIiLGJldGg6IuKEtiIsYmV0d2Vlbjoi4omsIixCZnI6IvCdlIUiLGJmcjoi8J2UnyIsYmlnY2FwOiLii4IiLGJpZ2NpcmM6IuKXryIsYmlnY3VwOiLii4MiLGJpZ29kb3Q6IuKogCIsYmlnb3BsdXM6IuKogSIsYmlnb3RpbWVzOiLiqIIiLGJpZ3NxY3VwOiLiqIYiLGJpZ3N0YXI6IuKYhSIsYmlndHJpYW5nbGVkb3duOiLilr0iLGJpZ3RyaWFuZ2xldXA6IuKWsyIsYmlndXBsdXM6IuKohCIsYmlndmVlOiLii4EiLGJpZ3dlZGdlOiLii4AiLGJrYXJvdzoi4qSNIixibGFja2xvemVuZ2U6IuKnqyIsYmxhY2tzcXVhcmU6IuKWqiIsYmxhY2t0cmlhbmdsZToi4pa0IixibGFja3RyaWFuZ2xlZG93bjoi4pa+IixibGFja3RyaWFuZ2xlbGVmdDoi4peCIixibGFja3RyaWFuZ2xlcmlnaHQ6IuKWuCIsYmxhbms6IuKQoyIsYmxrMTI6IuKWkiIsYmxrMTQ6IuKWkSIsYmxrMzQ6IuKWkyIsYmxvY2s6IuKWiCIsYm5lOiI94oOlIixibmVxdWl2OiLiiaHig6UiLGJOb3Q6IuKrrSIsYm5vdDoi4oyQIixCb3BmOiLwnZS5Iixib3BmOiLwnZWTIixib3Q6IuKKpSIsYm90dG9tOiLiiqUiLGJvd3RpZToi4ouIIixib3hib3g6IuKniSIsYm94ZGw6IuKUkCIsYm94ZEw6IuKVlSIsYm94RGw6IuKVliIsYm94REw6IuKVlyIsYm94ZHI6IuKUjCIsYm94ZFI6IuKVkiIsYm94RHI6IuKVkyIsYm94RFI6IuKVlCIsYm94aDoi4pSAIixib3hIOiLilZAiLGJveGhkOiLilKwiLGJveEhkOiLilaQiLGJveGhEOiLilaUiLGJveEhEOiLilaYiLGJveGh1OiLilLQiLGJveEh1OiLilaciLGJveGhVOiLilagiLGJveEhVOiLilakiLGJveG1pbnVzOiLiip8iLGJveHBsdXM6IuKKniIsYm94dGltZXM6IuKKoCIsYm94dWw6IuKUmCIsYm94dUw6IuKVmyIsYm94VWw6IuKVnCIsYm94VUw6IuKVnSIsYm94dXI6IuKUlCIsYm94dVI6IuKVmCIsYm94VXI6IuKVmSIsYm94VVI6IuKVmiIsYm94djoi4pSCIixib3hWOiLilZEiLGJveHZoOiLilLwiLGJveHZIOiLilaoiLGJveFZoOiLilasiLGJveFZIOiLilawiLGJveHZsOiLilKQiLGJveHZMOiLilaEiLGJveFZsOiLilaIiLGJveFZMOiLilaMiLGJveHZyOiLilJwiLGJveHZSOiLilZ4iLGJveFZyOiLilZ8iLGJveFZSOiLilaAiLGJwcmltZToi4oC1IixicmV2ZToiy5giLEJyZXZlOiLLmCIsYnJ2YmFyOiLCpiIsYnNjcjoi8J2StyIsQnNjcjoi4oSsIixic2VtaToi4oGPIixic2ltOiLiiL0iLGJzaW1lOiLii40iLGJzb2xiOiLip4UiLGJzb2w6IlxcIixic29saHN1Yjoi4p+IIixidWxsOiLigKIiLGJ1bGxldDoi4oCiIixidW1wOiLiiY4iLGJ1bXBFOiLiqq4iLGJ1bXBlOiLiiY8iLEJ1bXBlcToi4omOIixidW1wZXE6IuKJjyIsQ2FjdXRlOiLEhiIsY2FjdXRlOiLEhyIsY2FwYW5kOiLiqYQiLGNhcGJyY3VwOiLiqYkiLGNhcGNhcDoi4qmLIixjYXA6IuKIqSIsQ2FwOiLii5IiLGNhcGN1cDoi4qmHIixjYXBkb3Q6IuKpgCIsQ2FwaXRhbERpZmZlcmVudGlhbEQ6IuKFhSIsY2Fwczoi4oip77iAIixjYXJldDoi4oGBIixjYXJvbjoiy4ciLENheWxleXM6IuKErSIsY2NhcHM6IuKpjSIsQ2Nhcm9uOiLEjCIsY2Nhcm9uOiLEjSIsQ2NlZGlsOiLDhyIsY2NlZGlsOiLDpyIsQ2NpcmM6IsSIIixjY2lyYzoixIkiLENjb25pbnQ6IuKIsCIsY2N1cHM6IuKpjCIsY2N1cHNzbToi4qmQIixDZG90OiLEiiIsY2RvdDoixIsiLGNlZGlsOiLCuCIsQ2VkaWxsYToiwrgiLGNlbXB0eXY6IuKmsiIsY2VudDoiwqIiLGNlbnRlcmRvdDoiwrciLENlbnRlckRvdDoiwrciLGNmcjoi8J2UoCIsQ2ZyOiLihK0iLENIY3k6ItCnIixjaGN5OiLRhyIsY2hlY2s6IuKckyIsY2hlY2ttYXJrOiLinJMiLENoaToizqciLGNoaToiz4ciLGNpcmM6IsuGIixjaXJjZXE6IuKJlyIsY2lyY2xlYXJyb3dsZWZ0OiLihroiLGNpcmNsZWFycm93cmlnaHQ6IuKGuyIsY2lyY2xlZGFzdDoi4oqbIixjaXJjbGVkY2lyYzoi4oqaIixjaXJjbGVkZGFzaDoi4oqdIixDaXJjbGVEb3Q6IuKKmSIsY2lyY2xlZFI6IsKuIixjaXJjbGVkUzoi4pOIIixDaXJjbGVNaW51czoi4oqWIixDaXJjbGVQbHVzOiLiipUiLENpcmNsZVRpbWVzOiLiipciLGNpcjoi4peLIixjaXJFOiLip4MiLGNpcmU6IuKJlyIsY2lyZm5pbnQ6IuKokCIsY2lybWlkOiLiq68iLGNpcnNjaXI6IuKngiIsQ2xvY2t3aXNlQ29udG91ckludGVncmFsOiLiiLIiLENsb3NlQ3VybHlEb3VibGVRdW90ZToi4oCdIixDbG9zZUN1cmx5UXVvdGU6IuKAmSIsY2x1YnM6IuKZoyIsY2x1YnN1aXQ6IuKZoyIsY29sb246IjoiLENvbG9uOiLiiLciLENvbG9uZToi4qm0Iixjb2xvbmU6IuKJlCIsY29sb25lcToi4omUIixjb21tYToiLCIsY29tbWF0OiJAIixjb21wOiLiiIEiLGNvbXBmbjoi4oiYIixjb21wbGVtZW50OiLiiIEiLGNvbXBsZXhlczoi4oSCIixjb25nOiLiiYUiLGNvbmdkb3Q6IuKprSIsQ29uZ3J1ZW50OiLiiaEiLGNvbmludDoi4oiuIixDb25pbnQ6IuKIryIsQ29udG91ckludGVncmFsOiLiiK4iLGNvcGY6IvCdlZQiLENvcGY6IuKEgiIsY29wcm9kOiLiiJAiLENvcHJvZHVjdDoi4oiQIixjb3B5OiLCqSIsQ09QWToiwqkiLGNvcHlzcjoi4oSXIixDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsOiLiiLMiLGNyYXJyOiLihrUiLGNyb3NzOiLinJciLENyb3NzOiLiqK8iLENzY3I6IvCdkp4iLGNzY3I6IvCdkrgiLGNzdWI6IuKrjyIsY3N1YmU6IuKrkSIsY3N1cDoi4quQIixjc3VwZToi4quSIixjdGRvdDoi4ouvIixjdWRhcnJsOiLipLgiLGN1ZGFycnI6IuKktSIsY3VlcHI6IuKLniIsY3Vlc2M6IuKLnyIsY3VsYXJyOiLihrYiLGN1bGFycnA6IuKkvSIsY3VwYnJjYXA6IuKpiCIsY3VwY2FwOiLiqYYiLEN1cENhcDoi4omNIixjdXA6IuKIqiIsQ3VwOiLii5MiLGN1cGN1cDoi4qmKIixjdXBkb3Q6IuKKjSIsY3Vwb3I6IuKphSIsY3Vwczoi4oiq77iAIixjdXJhcnI6IuKGtyIsY3VyYXJybToi4qS8IixjdXJseWVxcHJlYzoi4oueIixjdXJseWVxc3VjYzoi4oufIixjdXJseXZlZToi4ouOIixjdXJseXdlZGdlOiLii48iLGN1cnJlbjoiwqQiLGN1cnZlYXJyb3dsZWZ0OiLihrYiLGN1cnZlYXJyb3dyaWdodDoi4oa3IixjdXZlZToi4ouOIixjdXdlZDoi4ouPIixjd2NvbmludDoi4oiyIixjd2ludDoi4oixIixjeWxjdHk6IuKMrSIsZGFnZ2VyOiLigKAiLERhZ2dlcjoi4oChIixkYWxldGg6IuKEuCIsZGFycjoi4oaTIixEYXJyOiLihqEiLGRBcnI6IuKHkyIsZGFzaDoi4oCQIixEYXNodjoi4qukIixkYXNodjoi4oqjIixkYmthcm93OiLipI8iLGRibGFjOiLLnSIsRGNhcm9uOiLEjiIsZGNhcm9uOiLEjyIsRGN5OiLQlCIsZGN5OiLQtCIsZGRhZ2dlcjoi4oChIixkZGFycjoi4oeKIixERDoi4oWFIixkZDoi4oWGIixERG90cmFoZDoi4qSRIixkZG90c2VxOiLiqbciLGRlZzoiwrAiLERlbDoi4oiHIixEZWx0YToizpQiLGRlbHRhOiLOtCIsZGVtcHR5djoi4qaxIixkZmlzaHQ6IuKlvyIsRGZyOiLwnZSHIixkZnI6IvCdlKEiLGRIYXI6IuKlpSIsZGhhcmw6IuKHgyIsZGhhcnI6IuKHgiIsRGlhY3JpdGljYWxBY3V0ZToiwrQiLERpYWNyaXRpY2FsRG90OiLLmSIsRGlhY3JpdGljYWxEb3VibGVBY3V0ZToiy50iLERpYWNyaXRpY2FsR3JhdmU6ImAiLERpYWNyaXRpY2FsVGlsZGU6IsucIixkaWFtOiLii4QiLGRpYW1vbmQ6IuKLhCIsRGlhbW9uZDoi4ouEIixkaWFtb25kc3VpdDoi4pmmIixkaWFtczoi4pmmIixkaWU6IsKoIixEaWZmZXJlbnRpYWxEOiLihYYiLGRpZ2FtbWE6Is+dIixkaXNpbjoi4ouyIixkaXY6IsO3IixkaXZpZGU6IsO3IixkaXZpZGVvbnRpbWVzOiLii4ciLGRpdm9ueDoi4ouHIixESmN5OiLQgiIsZGpjeToi0ZIiLGRsY29ybjoi4oyeIixkbGNyb3A6IuKMjSIsZG9sbGFyOiIkIixEb3BmOiLwnZS7Iixkb3BmOiLwnZWVIixEb3Q6IsKoIixkb3Q6IsuZIixEb3REb3Q6IuKDnCIsZG90ZXE6IuKJkCIsZG90ZXFkb3Q6IuKJkSIsRG90RXF1YWw6IuKJkCIsZG90bWludXM6IuKIuCIsZG90cGx1czoi4oiUIixkb3RzcXVhcmU6IuKKoSIsZG91YmxlYmFyd2VkZ2U6IuKMhiIsRG91YmxlQ29udG91ckludGVncmFsOiLiiK8iLERvdWJsZURvdDoiwqgiLERvdWJsZURvd25BcnJvdzoi4oeTIixEb3VibGVMZWZ0QXJyb3c6IuKHkCIsRG91YmxlTGVmdFJpZ2h0QXJyb3c6IuKHlCIsRG91YmxlTGVmdFRlZToi4qukIixEb3VibGVMb25nTGVmdEFycm93OiLin7giLERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzoi4p+6IixEb3VibGVMb25nUmlnaHRBcnJvdzoi4p+5IixEb3VibGVSaWdodEFycm93OiLih5IiLERvdWJsZVJpZ2h0VGVlOiLiiqgiLERvdWJsZVVwQXJyb3c6IuKHkSIsRG91YmxlVXBEb3duQXJyb3c6IuKHlSIsRG91YmxlVmVydGljYWxCYXI6IuKIpSIsRG93bkFycm93QmFyOiLipJMiLGRvd25hcnJvdzoi4oaTIixEb3duQXJyb3c6IuKGkyIsRG93bmFycm93OiLih5MiLERvd25BcnJvd1VwQXJyb3c6IuKHtSIsRG93bkJyZXZlOiLMkSIsZG93bmRvd25hcnJvd3M6IuKHiiIsZG93bmhhcnBvb25sZWZ0OiLih4MiLGRvd25oYXJwb29ucmlnaHQ6IuKHgiIsRG93bkxlZnRSaWdodFZlY3Rvcjoi4qWQIixEb3duTGVmdFRlZVZlY3Rvcjoi4qWeIixEb3duTGVmdFZlY3RvckJhcjoi4qWWIixEb3duTGVmdFZlY3Rvcjoi4oa9IixEb3duUmlnaHRUZWVWZWN0b3I6IuKlnyIsRG93blJpZ2h0VmVjdG9yQmFyOiLipZciLERvd25SaWdodFZlY3Rvcjoi4oeBIixEb3duVGVlQXJyb3c6IuKGpyIsRG93blRlZToi4oqkIixkcmJrYXJvdzoi4qSQIixkcmNvcm46IuKMnyIsZHJjcm9wOiLijIwiLERzY3I6IvCdkp8iLGRzY3I6IvCdkrkiLERTY3k6ItCFIixkc2N5OiLRlSIsZHNvbDoi4qe2IixEc3Ryb2s6IsSQIixkc3Ryb2s6IsSRIixkdGRvdDoi4ouxIixkdHJpOiLilr8iLGR0cmlmOiLilr4iLGR1YXJyOiLih7UiLGR1aGFyOiLipa8iLGR3YW5nbGU6IuKmpiIsRFpjeToi0I8iLGR6Y3k6ItGfIixkemlncmFycjoi4p+/IixFYWN1dGU6IsOJIixlYWN1dGU6IsOpIixlYXN0ZXI6IuKpriIsRWNhcm9uOiLEmiIsZWNhcm9uOiLEmyIsRWNpcmM6IsOKIixlY2lyYzoiw6oiLGVjaXI6IuKJliIsZWNvbG9uOiLiiZUiLEVjeToi0K0iLGVjeToi0Y0iLGVERG90OiLiqbciLEVkb3Q6IsSWIixlZG90OiLElyIsZURvdDoi4omRIixlZToi4oWHIixlZkRvdDoi4omSIixFZnI6IvCdlIgiLGVmcjoi8J2UoiIsZWc6IuKqmiIsRWdyYXZlOiLDiCIsZWdyYXZlOiLDqCIsZWdzOiLiqpYiLGVnc2RvdDoi4qqYIixlbDoi4qqZIixFbGVtZW50OiLiiIgiLGVsaW50ZXJzOiLij6ciLGVsbDoi4oSTIixlbHM6IuKqlSIsZWxzZG90OiLiqpciLEVtYWNyOiLEkiIsZW1hY3I6IsSTIixlbXB0eToi4oiFIixlbXB0eXNldDoi4oiFIixFbXB0eVNtYWxsU3F1YXJlOiLil7siLGVtcHR5djoi4oiFIixFbXB0eVZlcnlTbWFsbFNxdWFyZToi4parIixlbXNwMTM6IuKAhCIsZW1zcDE0OiLigIUiLGVtc3A6IuKAgyIsRU5HOiLFiiIsZW5nOiLFiyIsZW5zcDoi4oCCIixFb2dvbjoixJgiLGVvZ29uOiLEmSIsRW9wZjoi8J2UvCIsZW9wZjoi8J2VliIsZXBhcjoi4ouVIixlcGFyc2w6IuKnoyIsZXBsdXM6IuKpsSIsZXBzaToizrUiLEVwc2lsb246Is6VIixlcHNpbG9uOiLOtSIsZXBzaXY6Is+1IixlcWNpcmM6IuKJliIsZXFjb2xvbjoi4omVIixlcXNpbToi4omCIixlcXNsYW50Z3RyOiLiqpYiLGVxc2xhbnRsZXNzOiLiqpUiLEVxdWFsOiLiqbUiLGVxdWFsczoiPSIsRXF1YWxUaWxkZToi4omCIixlcXVlc3Q6IuKJnyIsRXF1aWxpYnJpdW06IuKHjCIsZXF1aXY6IuKJoSIsZXF1aXZERDoi4qm4IixlcXZwYXJzbDoi4qelIixlcmFycjoi4qWxIixlckRvdDoi4omTIixlc2NyOiLihK8iLEVzY3I6IuKEsCIsZXNkb3Q6IuKJkCIsRXNpbToi4qmzIixlc2ltOiLiiYIiLEV0YToizpciLGV0YToizrciLEVUSDoiw5AiLGV0aDoiw7AiLEV1bWw6IsOLIixldW1sOiLDqyIsZXVybzoi4oKsIixleGNsOiIhIixleGlzdDoi4oiDIixFeGlzdHM6IuKIgyIsZXhwZWN0YXRpb246IuKEsCIsZXhwb25lbnRpYWxlOiLihYciLEV4cG9uZW50aWFsRToi4oWHIixmYWxsaW5nZG90c2VxOiLiiZIiLEZjeToi0KQiLGZjeToi0YQiLGZlbWFsZToi4pmAIixmZmlsaWc6Iu+sgyIsZmZsaWc6Iu+sgCIsZmZsbGlnOiLvrIQiLEZmcjoi8J2UiSIsZmZyOiLwnZSjIixmaWxpZzoi76yBIixGaWxsZWRTbWFsbFNxdWFyZToi4pe8IixGaWxsZWRWZXJ5U21hbGxTcXVhcmU6IuKWqiIsZmpsaWc6ImZqIixmbGF0OiLima0iLGZsbGlnOiLvrIIiLGZsdG5zOiLilrEiLGZub2Y6IsaSIixGb3BmOiLwnZS9Iixmb3BmOiLwnZWXIixmb3JhbGw6IuKIgCIsRm9yQWxsOiLiiIAiLGZvcms6IuKLlCIsZm9ya3Y6IuKrmSIsRm91cmllcnRyZjoi4oSxIixmcGFydGludDoi4qiNIixmcmFjMTI6IsK9IixmcmFjMTM6IuKFkyIsZnJhYzE0OiLCvCIsZnJhYzE1OiLihZUiLGZyYWMxNjoi4oWZIixmcmFjMTg6IuKFmyIsZnJhYzIzOiLihZQiLGZyYWMyNToi4oWWIixmcmFjMzQ6IsK+IixmcmFjMzU6IuKFlyIsZnJhYzM4OiLihZwiLGZyYWM0NToi4oWYIixmcmFjNTY6IuKFmiIsZnJhYzU4OiLihZ0iLGZyYWM3ODoi4oWeIixmcmFzbDoi4oGEIixmcm93bjoi4oyiIixmc2NyOiLwnZK7IixGc2NyOiLihLEiLGdhY3V0ZToix7UiLEdhbW1hOiLOkyIsZ2FtbWE6Is6zIixHYW1tYWQ6Is+cIixnYW1tYWQ6Is+dIixnYXA6IuKqhiIsR2JyZXZlOiLEniIsZ2JyZXZlOiLEnyIsR2NlZGlsOiLEoiIsR2NpcmM6IsScIixnY2lyYzoixJ0iLEdjeToi0JMiLGdjeToi0LMiLEdkb3Q6IsSgIixnZG90OiLEoSIsZ2U6IuKJpSIsZ0U6IuKJpyIsZ0VsOiLiqowiLGdlbDoi4oubIixnZXE6IuKJpSIsZ2VxcToi4omnIixnZXFzbGFudDoi4qm+IixnZXNjYzoi4qqpIixnZXM6IuKpviIsZ2VzZG90OiLiqoAiLGdlc2RvdG86IuKqgiIsZ2VzZG90b2w6IuKqhCIsZ2VzbDoi4oub77iAIixnZXNsZXM6IuKqlCIsR2ZyOiLwnZSKIixnZnI6IvCdlKQiLGdnOiLiiasiLEdnOiLii5kiLGdnZzoi4ouZIixnaW1lbDoi4oS3IixHSmN5OiLQgyIsZ2pjeToi0ZMiLGdsYToi4qqlIixnbDoi4om3IixnbEU6IuKqkiIsZ2xqOiLiqqQiLGduYXA6IuKqiiIsZ25hcHByb3g6IuKqiiIsZ25lOiLiqogiLGduRToi4ompIixnbmVxOiLiqogiLGduZXFxOiLiiakiLGduc2ltOiLii6ciLEdvcGY6IvCdlL4iLGdvcGY6IvCdlZgiLGdyYXZlOiJgIixHcmVhdGVyRXF1YWw6IuKJpSIsR3JlYXRlckVxdWFsTGVzczoi4oubIixHcmVhdGVyRnVsbEVxdWFsOiLiiaciLEdyZWF0ZXJHcmVhdGVyOiLiqqIiLEdyZWF0ZXJMZXNzOiLiibciLEdyZWF0ZXJTbGFudEVxdWFsOiLiqb4iLEdyZWF0ZXJUaWxkZToi4omzIixHc2NyOiLwnZKiIixnc2NyOiLihIoiLGdzaW06IuKJsyIsZ3NpbWU6IuKqjiIsZ3NpbWw6IuKqkCIsZ3RjYzoi4qqnIixndGNpcjoi4qm6IixndDoiPiIsR1Q6Ij4iLEd0OiLiiasiLGd0ZG90OiLii5ciLGd0bFBhcjoi4qaVIixndHF1ZXN0OiLiqbwiLGd0cmFwcHJveDoi4qqGIixndHJhcnI6IuKluCIsZ3RyZG90OiLii5ciLGd0cmVxbGVzczoi4oubIixndHJlcXFsZXNzOiLiqowiLGd0cmxlc3M6IuKJtyIsZ3Ryc2ltOiLiibMiLGd2ZXJ0bmVxcToi4omp77iAIixndm5FOiLiianvuIAiLEhhY2VrOiLLhyIsaGFpcnNwOiLigIoiLGhhbGY6IsK9IixoYW1pbHQ6IuKEiyIsSEFSRGN5OiLQqiIsaGFyZGN5OiLRiiIsaGFycmNpcjoi4qWIIixoYXJyOiLihpQiLGhBcnI6IuKHlCIsaGFycnc6IuKGrSIsSGF0OiJeIixoYmFyOiLihI8iLEhjaXJjOiLEpCIsaGNpcmM6IsSlIixoZWFydHM6IuKZpSIsaGVhcnRzdWl0OiLimaUiLGhlbGxpcDoi4oCmIixoZXJjb246IuKKuSIsaGZyOiLwnZSlIixIZnI6IuKEjCIsSGlsYmVydFNwYWNlOiLihIsiLGhrc2Vhcm93OiLipKUiLGhrc3dhcm93OiLipKYiLGhvYXJyOiLih78iLGhvbXRodDoi4oi7Iixob29rbGVmdGFycm93OiLihqkiLGhvb2tyaWdodGFycm93OiLihqoiLGhvcGY6IvCdlZkiLEhvcGY6IuKEjSIsaG9yYmFyOiLigJUiLEhvcml6b250YWxMaW5lOiLilIAiLGhzY3I6IvCdkr0iLEhzY3I6IuKEiyIsaHNsYXNoOiLihI8iLEhzdHJvazoixKYiLGhzdHJvazoixKciLEh1bXBEb3duSHVtcDoi4omOIixIdW1wRXF1YWw6IuKJjyIsaHlidWxsOiLigYMiLGh5cGhlbjoi4oCQIixJYWN1dGU6IsONIixpYWN1dGU6IsOtIixpYzoi4oGjIixJY2lyYzoiw44iLGljaXJjOiLDriIsSWN5OiLQmCIsaWN5OiLQuCIsSWRvdDoixLAiLElFY3k6ItCVIixpZWN5OiLQtSIsaWV4Y2w6IsKhIixpZmY6IuKHlCIsaWZyOiLwnZSmIixJZnI6IuKEkSIsSWdyYXZlOiLDjCIsaWdyYXZlOiLDrCIsaWk6IuKFiCIsaWlpaW50OiLiqIwiLGlpaW50OiLiiK0iLGlpbmZpbjoi4qecIixpaW90YToi4oSpIixJSmxpZzoixLIiLGlqbGlnOiLEsyIsSW1hY3I6IsSqIixpbWFjcjoixKsiLGltYWdlOiLihJEiLEltYWdpbmFyeUk6IuKFiCIsaW1hZ2xpbmU6IuKEkCIsaW1hZ3BhcnQ6IuKEkSIsaW1hdGg6IsSxIixJbToi4oSRIixpbW9mOiLiirciLGltcGVkOiLGtSIsSW1wbGllczoi4oeSIixpbmNhcmU6IuKEhSIsImluIjoi4oiIIixpbmZpbjoi4oieIixpbmZpbnRpZToi4qedIixpbm9kb3Q6IsSxIixpbnRjYWw6IuKKuiIsImludCI6IuKIqyIsSW50OiLiiKwiLGludGVnZXJzOiLihKQiLEludGVncmFsOiLiiKsiLGludGVyY2FsOiLiiroiLEludGVyc2VjdGlvbjoi4ouCIixpbnRsYXJoazoi4qiXIixpbnRwcm9kOiLiqLwiLEludmlzaWJsZUNvbW1hOiLigaMiLEludmlzaWJsZVRpbWVzOiLigaIiLElPY3k6ItCBIixpb2N5OiLRkSIsSW9nb246IsSuIixpb2dvbjoixK8iLElvcGY6IvCdlYAiLGlvcGY6IvCdlZoiLElvdGE6Is6ZIixpb3RhOiLOuSIsaXByb2Q6IuKovCIsaXF1ZXN0OiLCvyIsaXNjcjoi8J2SviIsSXNjcjoi4oSQIixpc2luOiLiiIgiLGlzaW5kb3Q6IuKLtSIsaXNpbkU6IuKLuSIsaXNpbnM6IuKLtCIsaXNpbnN2OiLii7MiLGlzaW52OiLiiIgiLGl0OiLigaIiLEl0aWxkZToixKgiLGl0aWxkZToixKkiLEl1a2N5OiLQhiIsaXVrY3k6ItGWIixJdW1sOiLDjyIsaXVtbDoiw68iLEpjaXJjOiLEtCIsamNpcmM6IsS1IixKY3k6ItCZIixqY3k6ItC5IixKZnI6IvCdlI0iLGpmcjoi8J2UpyIsam1hdGg6Isi3IixKb3BmOiLwnZWBIixqb3BmOiLwnZWbIixKc2NyOiLwnZKlIixqc2NyOiLwnZK/IixKc2VyY3k6ItCIIixqc2VyY3k6ItGYIixKdWtjeToi0IQiLGp1a2N5OiLRlCIsS2FwcGE6Is6aIixrYXBwYToizroiLGthcHBhdjoiz7AiLEtjZWRpbDoixLYiLGtjZWRpbDoixLciLEtjeToi0JoiLGtjeToi0LoiLEtmcjoi8J2UjiIsa2ZyOiLwnZSoIixrZ3JlZW46IsS4IixLSGN5OiLQpSIsa2hjeToi0YUiLEtKY3k6ItCMIixramN5OiLRnCIsS29wZjoi8J2VgiIsa29wZjoi8J2VnCIsS3Njcjoi8J2SpiIsa3Njcjoi8J2TgCIsbEFhcnI6IuKHmiIsTGFjdXRlOiLEuSIsbGFjdXRlOiLEuiIsbGFlbXB0eXY6IuKmtCIsbGFncmFuOiLihJIiLExhbWJkYToizpsiLGxhbWJkYToizrsiLGxhbmc6IuKfqCIsTGFuZzoi4p+qIixsYW5nZDoi4qaRIixsYW5nbGU6IuKfqCIsbGFwOiLiqoUiLExhcGxhY2V0cmY6IuKEkiIsbGFxdW86IsKrIixsYXJyYjoi4oekIixsYXJyYmZzOiLipJ8iLGxhcnI6IuKGkCIsTGFycjoi4oaeIixsQXJyOiLih5AiLGxhcnJmczoi4qSdIixsYXJyaGs6IuKGqSIsbGFycmxwOiLihqsiLGxhcnJwbDoi4qS5IixsYXJyc2ltOiLipbMiLGxhcnJ0bDoi4oaiIixsYXRhaWw6IuKkmSIsbEF0YWlsOiLipJsiLGxhdDoi4qqrIixsYXRlOiLiqq0iLGxhdGVzOiLiqq3vuIAiLGxiYXJyOiLipIwiLGxCYXJyOiLipI4iLGxiYnJrOiLinbIiLGxicmFjZToieyIsbGJyYWNrOiJbIixsYnJrZToi4qaLIixsYnJrc2xkOiLipo8iLGxicmtzbHU6IuKmjSIsTGNhcm9uOiLEvSIsbGNhcm9uOiLEviIsTGNlZGlsOiLEuyIsbGNlZGlsOiLEvCIsbGNlaWw6IuKMiCIsbGN1YjoieyIsTGN5OiLQmyIsbGN5OiLQuyIsbGRjYToi4qS2IixsZHF1bzoi4oCcIixsZHF1b3I6IuKAniIsbGRyZGhhcjoi4qWnIixsZHJ1c2hhcjoi4qWLIixsZHNoOiLihrIiLGxlOiLiiaQiLGxFOiLiiaYiLExlZnRBbmdsZUJyYWNrZXQ6IuKfqCIsTGVmdEFycm93QmFyOiLih6QiLGxlZnRhcnJvdzoi4oaQIixMZWZ0QXJyb3c6IuKGkCIsTGVmdGFycm93OiLih5AiLExlZnRBcnJvd1JpZ2h0QXJyb3c6IuKHhiIsbGVmdGFycm93dGFpbDoi4oaiIixMZWZ0Q2VpbGluZzoi4oyIIixMZWZ0RG91YmxlQnJhY2tldDoi4p+mIixMZWZ0RG93blRlZVZlY3Rvcjoi4qWhIixMZWZ0RG93blZlY3RvckJhcjoi4qWZIixMZWZ0RG93blZlY3Rvcjoi4oeDIixMZWZ0Rmxvb3I6IuKMiiIsbGVmdGhhcnBvb25kb3duOiLihr0iLGxlZnRoYXJwb29udXA6IuKGvCIsbGVmdGxlZnRhcnJvd3M6IuKHhyIsbGVmdHJpZ2h0YXJyb3c6IuKGlCIsTGVmdFJpZ2h0QXJyb3c6IuKGlCIsTGVmdHJpZ2h0YXJyb3c6IuKHlCIsbGVmdHJpZ2h0YXJyb3dzOiLih4YiLGxlZnRyaWdodGhhcnBvb25zOiLih4siLGxlZnRyaWdodHNxdWlnYXJyb3c6IuKGrSIsTGVmdFJpZ2h0VmVjdG9yOiLipY4iLExlZnRUZWVBcnJvdzoi4oakIixMZWZ0VGVlOiLiiqMiLExlZnRUZWVWZWN0b3I6IuKlmiIsbGVmdHRocmVldGltZXM6IuKLiyIsTGVmdFRyaWFuZ2xlQmFyOiLip48iLExlZnRUcmlhbmdsZToi4oqyIixMZWZ0VHJpYW5nbGVFcXVhbDoi4oq0IixMZWZ0VXBEb3duVmVjdG9yOiLipZEiLExlZnRVcFRlZVZlY3Rvcjoi4qWgIixMZWZ0VXBWZWN0b3JCYXI6IuKlmCIsTGVmdFVwVmVjdG9yOiLihr8iLExlZnRWZWN0b3JCYXI6IuKlkiIsTGVmdFZlY3Rvcjoi4oa8IixsRWc6IuKqiyIsbGVnOiLii5oiLGxlcToi4omkIixsZXFxOiLiiaYiLGxlcXNsYW50OiLiqb0iLGxlc2NjOiLiqqgiLGxlczoi4qm9IixsZXNkb3Q6IuKpvyIsbGVzZG90bzoi4qqBIixsZXNkb3Rvcjoi4qqDIixsZXNnOiLii5rvuIAiLGxlc2dlczoi4qqTIixsZXNzYXBwcm94OiLiqoUiLGxlc3Nkb3Q6IuKLliIsbGVzc2VxZ3RyOiLii5oiLGxlc3NlcXFndHI6IuKqiyIsTGVzc0VxdWFsR3JlYXRlcjoi4ouaIixMZXNzRnVsbEVxdWFsOiLiiaYiLExlc3NHcmVhdGVyOiLiibYiLGxlc3NndHI6IuKJtiIsTGVzc0xlc3M6IuKqoSIsbGVzc3NpbToi4omyIixMZXNzU2xhbnRFcXVhbDoi4qm9IixMZXNzVGlsZGU6IuKJsiIsbGZpc2h0OiLipbwiLGxmbG9vcjoi4oyKIixMZnI6IvCdlI8iLGxmcjoi8J2UqSIsbGc6IuKJtiIsbGdFOiLiqpEiLGxIYXI6IuKloiIsbGhhcmQ6IuKGvSIsbGhhcnU6IuKGvCIsbGhhcnVsOiLipaoiLGxoYmxrOiLiloQiLExKY3k6ItCJIixsamN5OiLRmSIsbGxhcnI6IuKHhyIsbGw6IuKJqiIsTGw6IuKLmCIsbGxjb3JuZXI6IuKMniIsTGxlZnRhcnJvdzoi4oeaIixsbGhhcmQ6IuKlqyIsCitsbHRyaToi4pe6IixMbWlkb3Q6IsS/IixsbWlkb3Q6IsWAIixsbW91c3RhY2hlOiLijrAiLGxtb3VzdDoi4o6wIixsbmFwOiLiqokiLGxuYXBwcm94OiLiqokiLGxuZToi4qqHIixsbkU6IuKJqCIsbG5lcToi4qqHIixsbmVxcToi4omoIixsbnNpbToi4oumIixsb2FuZzoi4p+sIixsb2Fycjoi4oe9Iixsb2Jyazoi4p+mIixsb25nbGVmdGFycm93OiLin7UiLExvbmdMZWZ0QXJyb3c6IuKftSIsTG9uZ2xlZnRhcnJvdzoi4p+4Iixsb25nbGVmdHJpZ2h0YXJyb3c6IuKftyIsTG9uZ0xlZnRSaWdodEFycm93OiLin7ciLExvbmdsZWZ0cmlnaHRhcnJvdzoi4p+6Iixsb25nbWFwc3RvOiLin7wiLGxvbmdyaWdodGFycm93OiLin7YiLExvbmdSaWdodEFycm93OiLin7YiLExvbmdyaWdodGFycm93OiLin7kiLGxvb3BhcnJvd2xlZnQ6IuKGqyIsbG9vcGFycm93cmlnaHQ6IuKGrCIsbG9wYXI6IuKmhSIsTG9wZjoi8J2VgyIsbG9wZjoi8J2VnSIsbG9wbHVzOiLiqK0iLGxvdGltZXM6IuKotCIsbG93YXN0OiLiiJciLGxvd2JhcjoiXyIsTG93ZXJMZWZ0QXJyb3c6IuKGmSIsTG93ZXJSaWdodEFycm93OiLihpgiLGxvejoi4peKIixsb3plbmdlOiLil4oiLGxvemY6IuKnqyIsbHBhcjoiKCIsbHBhcmx0OiLippMiLGxyYXJyOiLih4YiLGxyY29ybmVyOiLijJ8iLGxyaGFyOiLih4siLGxyaGFyZDoi4qWtIixscm06IuKAjiIsbHJ0cmk6IuKKvyIsbHNhcXVvOiLigLkiLGxzY3I6IvCdk4EiLExzY3I6IuKEkiIsbHNoOiLihrAiLExzaDoi4oawIixsc2ltOiLiibIiLGxzaW1lOiLiqo0iLGxzaW1nOiLiqo8iLGxzcWI6IlsiLGxzcXVvOiLigJgiLGxzcXVvcjoi4oCaIixMc3Ryb2s6IsWBIixsc3Ryb2s6IsWCIixsdGNjOiLiqqYiLGx0Y2lyOiLiqbkiLGx0OiI8IixMVDoiPCIsTHQ6IuKJqiIsbHRkb3Q6IuKLliIsbHRocmVlOiLii4siLGx0aW1lczoi4ouJIixsdGxhcnI6IuKltiIsbHRxdWVzdDoi4qm7IixsdHJpOiLil4MiLGx0cmllOiLiirQiLGx0cmlmOiLil4IiLGx0clBhcjoi4qaWIixsdXJkc2hhcjoi4qWKIixsdXJ1aGFyOiLipaYiLGx2ZXJ0bmVxcToi4omo77iAIixsdm5FOiLiiajvuIAiLG1hY3I6IsKvIixtYWxlOiLimYIiLG1hbHQ6IuKcoCIsbWFsdGVzZToi4pygIixNYXA6IuKkhSIsbWFwOiLihqYiLG1hcHN0bzoi4oamIixtYXBzdG9kb3duOiLihqciLG1hcHN0b2xlZnQ6IuKGpCIsbWFwc3RvdXA6IuKGpSIsbWFya2VyOiLilq4iLG1jb21tYToi4qipIixNY3k6ItCcIixtY3k6ItC8IixtZGFzaDoi4oCUIixtRERvdDoi4oi6IixtZWFzdXJlZGFuZ2xlOiLiiKEiLE1lZGl1bVNwYWNlOiLigZ8iLE1lbGxpbnRyZjoi4oSzIixNZnI6IvCdlJAiLG1mcjoi8J2UqiIsbWhvOiLihKciLG1pY3JvOiLCtSIsbWlkYXN0OiIqIixtaWRjaXI6IuKrsCIsbWlkOiLiiKMiLG1pZGRvdDoiwrciLG1pbnVzYjoi4oqfIixtaW51czoi4oiSIixtaW51c2Q6IuKIuCIsbWludXNkdToi4qiqIixNaW51c1BsdXM6IuKIkyIsbWxjcDoi4qubIixtbGRyOiLigKYiLG1ucGx1czoi4oiTIixtb2RlbHM6IuKKpyIsTW9wZjoi8J2VhCIsbW9wZjoi8J2VniIsbXA6IuKIkyIsbXNjcjoi8J2TgiIsTXNjcjoi4oSzIixtc3Rwb3M6IuKIviIsTXU6Is6cIixtdToizrwiLG11bHRpbWFwOiLiirgiLG11bWFwOiLiirgiLG5hYmxhOiLiiIciLE5hY3V0ZToixYMiLG5hY3V0ZToixYQiLG5hbmc6IuKIoOKDkiIsbmFwOiLiiYkiLG5hcEU6IuKpsMy4IixuYXBpZDoi4omLzLgiLG5hcG9zOiLFiSIsbmFwcHJveDoi4omJIixuYXR1cmFsOiLima4iLG5hdHVyYWxzOiLihJUiLG5hdHVyOiLima4iLG5ic3A6IsKgIixuYnVtcDoi4omOzLgiLG5idW1wZToi4omPzLgiLG5jYXA6IuKpgyIsTmNhcm9uOiLFhyIsbmNhcm9uOiLFiCIsTmNlZGlsOiLFhSIsbmNlZGlsOiLFhiIsbmNvbmc6IuKJhyIsbmNvbmdkb3Q6IuKprcy4IixuY3VwOiLiqYIiLE5jeToi0J0iLG5jeToi0L0iLG5kYXNoOiLigJMiLG5lYXJoazoi4qSkIixuZWFycjoi4oaXIixuZUFycjoi4oeXIixuZWFycm93OiLihpciLG5lOiLiiaAiLG5lZG90OiLiiZDMuCIsTmVnYXRpdmVNZWRpdW1TcGFjZToi4oCLIixOZWdhdGl2ZVRoaWNrU3BhY2U6IuKAiyIsTmVnYXRpdmVUaGluU3BhY2U6IuKAiyIsTmVnYXRpdmVWZXJ5VGhpblNwYWNlOiLigIsiLG5lcXVpdjoi4omiIixuZXNlYXI6IuKkqCIsbmVzaW06IuKJgsy4IixOZXN0ZWRHcmVhdGVyR3JlYXRlcjoi4omrIixOZXN0ZWRMZXNzTGVzczoi4omqIixOZXdMaW5lOiJcbiIsbmV4aXN0OiLiiIQiLG5leGlzdHM6IuKIhCIsTmZyOiLwnZSRIixuZnI6IvCdlKsiLG5nRToi4omnzLgiLG5nZToi4omxIixuZ2VxOiLiibEiLG5nZXFxOiLiiafMuCIsbmdlcXNsYW50OiLiqb7MuCIsbmdlczoi4qm+zLgiLG5HZzoi4ouZzLgiLG5nc2ltOiLiibUiLG5HdDoi4omr4oOSIixuZ3Q6IuKJryIsbmd0cjoi4omvIixuR3R2OiLiiavMuCIsbmhhcnI6IuKGriIsbmhBcnI6IuKHjiIsbmhwYXI6IuKrsiIsbmk6IuKIiyIsbmlzOiLii7wiLG5pc2Q6IuKLuiIsbml2OiLiiIsiLE5KY3k6ItCKIixuamN5OiLRmiIsbmxhcnI6IuKGmiIsbmxBcnI6IuKHjSIsbmxkcjoi4oClIixubEU6IuKJpsy4IixubGU6IuKJsCIsbmxlZnRhcnJvdzoi4oaaIixuTGVmdGFycm93OiLih40iLG5sZWZ0cmlnaHRhcnJvdzoi4oauIixuTGVmdHJpZ2h0YXJyb3c6IuKHjiIsbmxlcToi4omwIixubGVxcToi4ommzLgiLG5sZXFzbGFudDoi4qm9zLgiLG5sZXM6IuKpvcy4IixubGVzczoi4omuIixuTGw6IuKLmMy4IixubHNpbToi4om0IixuTHQ6IuKJquKDkiIsbmx0OiLiia4iLG5sdHJpOiLii6oiLG5sdHJpZToi4ousIixuTHR2OiLiiarMuCIsbm1pZDoi4oikIixOb0JyZWFrOiLigaAiLE5vbkJyZWFraW5nU3BhY2U6IsKgIixub3BmOiLwnZWfIixOb3BmOiLihJUiLE5vdDoi4qusIixub3Q6IsKsIixOb3RDb25ncnVlbnQ6IuKJoiIsTm90Q3VwQ2FwOiLiia0iLE5vdERvdWJsZVZlcnRpY2FsQmFyOiLiiKYiLE5vdEVsZW1lbnQ6IuKIiSIsTm90RXF1YWw6IuKJoCIsTm90RXF1YWxUaWxkZToi4omCzLgiLE5vdEV4aXN0czoi4oiEIixOb3RHcmVhdGVyOiLiia8iLE5vdEdyZWF0ZXJFcXVhbDoi4omxIixOb3RHcmVhdGVyRnVsbEVxdWFsOiLiiafMuCIsTm90R3JlYXRlckdyZWF0ZXI6IuKJq8y4IixOb3RHcmVhdGVyTGVzczoi4om5IixOb3RHcmVhdGVyU2xhbnRFcXVhbDoi4qm+zLgiLE5vdEdyZWF0ZXJUaWxkZToi4om1IixOb3RIdW1wRG93bkh1bXA6IuKJjsy4IixOb3RIdW1wRXF1YWw6IuKJj8y4Iixub3Rpbjoi4oiJIixub3RpbmRvdDoi4ou1zLgiLG5vdGluRToi4ou5zLgiLG5vdGludmE6IuKIiSIsbm90aW52Yjoi4ou3Iixub3RpbnZjOiLii7YiLE5vdExlZnRUcmlhbmdsZUJhcjoi4qePzLgiLE5vdExlZnRUcmlhbmdsZToi4ouqIixOb3RMZWZ0VHJpYW5nbGVFcXVhbDoi4ousIixOb3RMZXNzOiLiia4iLE5vdExlc3NFcXVhbDoi4omwIixOb3RMZXNzR3JlYXRlcjoi4om4IixOb3RMZXNzTGVzczoi4omqzLgiLE5vdExlc3NTbGFudEVxdWFsOiLiqb3MuCIsTm90TGVzc1RpbGRlOiLiibQiLE5vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyOiLiqqLMuCIsTm90TmVzdGVkTGVzc0xlc3M6IuKqocy4Iixub3RuaToi4oiMIixub3RuaXZhOiLiiIwiLG5vdG5pdmI6IuKLviIsbm90bml2Yzoi4ou9IixOb3RQcmVjZWRlczoi4oqAIixOb3RQcmVjZWRlc0VxdWFsOiLiqq/MuCIsTm90UHJlY2VkZXNTbGFudEVxdWFsOiLii6AiLE5vdFJldmVyc2VFbGVtZW50OiLiiIwiLE5vdFJpZ2h0VHJpYW5nbGVCYXI6IuKnkMy4IixOb3RSaWdodFRyaWFuZ2xlOiLii6siLE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDoi4outIixOb3RTcXVhcmVTdWJzZXQ6IuKKj8y4IixOb3RTcXVhcmVTdWJzZXRFcXVhbDoi4ouiIixOb3RTcXVhcmVTdXBlcnNldDoi4oqQzLgiLE5vdFNxdWFyZVN1cGVyc2V0RXF1YWw6IuKLoyIsTm90U3Vic2V0OiLiioLig5IiLE5vdFN1YnNldEVxdWFsOiLiiogiLE5vdFN1Y2NlZWRzOiLiioEiLE5vdFN1Y2NlZWRzRXF1YWw6IuKqsMy4IixOb3RTdWNjZWVkc1NsYW50RXF1YWw6IuKLoSIsTm90U3VjY2VlZHNUaWxkZToi4om/zLgiLE5vdFN1cGVyc2V0OiLiioPig5IiLE5vdFN1cGVyc2V0RXF1YWw6IuKKiSIsTm90VGlsZGU6IuKJgSIsTm90VGlsZGVFcXVhbDoi4omEIixOb3RUaWxkZUZ1bGxFcXVhbDoi4omHIixOb3RUaWxkZVRpbGRlOiLiiYkiLE5vdFZlcnRpY2FsQmFyOiLiiKQiLG5wYXJhbGxlbDoi4oimIixucGFyOiLiiKYiLG5wYXJzbDoi4qu94oOlIixucGFydDoi4oiCzLgiLG5wb2xpbnQ6IuKolCIsbnByOiLiioAiLG5wcmN1ZToi4ougIixucHJlYzoi4oqAIixucHJlY2VxOiLiqq/MuCIsbnByZToi4qqvzLgiLG5yYXJyYzoi4qSzzLgiLG5yYXJyOiLihpsiLG5yQXJyOiLih48iLG5yYXJydzoi4oadzLgiLG5yaWdodGFycm93OiLihpsiLG5SaWdodGFycm93OiLih48iLG5ydHJpOiLii6siLG5ydHJpZToi4outIixuc2M6IuKKgSIsbnNjY3VlOiLii6EiLG5zY2U6IuKqsMy4IixOc2NyOiLwnZKpIixuc2NyOiLwnZODIixuc2hvcnRtaWQ6IuKIpCIsbnNob3J0cGFyYWxsZWw6IuKIpiIsbnNpbToi4omBIixuc2ltZToi4omEIixuc2ltZXE6IuKJhCIsbnNtaWQ6IuKIpCIsbnNwYXI6IuKIpiIsbnNxc3ViZToi4ouiIixuc3FzdXBlOiLii6MiLG5zdWI6IuKKhCIsbnN1YkU6IuKrhcy4Iixuc3ViZToi4oqIIixuc3Vic2V0OiLiioLig5IiLG5zdWJzZXRlcToi4oqIIixuc3Vic2V0ZXFxOiLiq4XMuCIsbnN1Y2M6IuKKgSIsbnN1Y2NlcToi4qqwzLgiLG5zdXA6IuKKhSIsbnN1cEU6IuKrhsy4Iixuc3VwZToi4oqJIixuc3Vwc2V0OiLiioPig5IiLG5zdXBzZXRlcToi4oqJIixuc3Vwc2V0ZXFxOiLiq4bMuCIsbnRnbDoi4om5IixOdGlsZGU6IsORIixudGlsZGU6IsOxIixudGxnOiLiibgiLG50cmlhbmdsZWxlZnQ6IuKLqiIsbnRyaWFuZ2xlbGVmdGVxOiLii6wiLG50cmlhbmdsZXJpZ2h0OiLii6siLG50cmlhbmdsZXJpZ2h0ZXE6IuKLrSIsTnU6Is6dIixudToizr0iLG51bToiIyIsbnVtZXJvOiLihJYiLG51bXNwOiLigIciLG52YXA6IuKJjeKDkiIsbnZkYXNoOiLiiqwiLG52RGFzaDoi4oqtIixuVmRhc2g6IuKKriIsblZEYXNoOiLiiq8iLG52Z2U6IuKJpeKDkiIsbnZndDoiPuKDkiIsbnZIYXJyOiLipIQiLG52aW5maW46IuKnniIsbnZsQXJyOiLipIIiLG52bGU6IuKJpOKDkiIsbnZsdDoiPOKDkiIsbnZsdHJpZToi4oq04oOSIixudnJBcnI6IuKkgyIsbnZydHJpZToi4oq14oOSIixudnNpbToi4oi84oOSIixud2FyaGs6IuKkoyIsbndhcnI6IuKGliIsbndBcnI6IuKHliIsbndhcnJvdzoi4oaWIixud25lYXI6IuKkpyIsT2FjdXRlOiLDkyIsb2FjdXRlOiLDsyIsb2FzdDoi4oqbIixPY2lyYzoiw5QiLG9jaXJjOiLDtCIsb2Npcjoi4oqaIixPY3k6ItCeIixvY3k6ItC+IixvZGFzaDoi4oqdIixPZGJsYWM6IsWQIixvZGJsYWM6IsWRIixvZGl2OiLiqLgiLG9kb3Q6IuKKmSIsb2Rzb2xkOiLiprwiLE9FbGlnOiLFkiIsb2VsaWc6IsWTIixvZmNpcjoi4qa/IixPZnI6IvCdlJIiLG9mcjoi8J2UrCIsb2dvbjoiy5siLE9ncmF2ZToiw5IiLG9ncmF2ZToiw7IiLG9ndDoi4qeBIixvaGJhcjoi4qa1IixvaG06Is6pIixvaW50OiLiiK4iLG9sYXJyOiLihroiLG9sY2lyOiLipr4iLG9sY3Jvc3M6IuKmuyIsb2xpbmU6IuKAviIsb2x0OiLip4AiLE9tYWNyOiLFjCIsb21hY3I6IsWNIixPbWVnYToizqkiLG9tZWdhOiLPiSIsT21pY3Jvbjoizp8iLG9taWNyb246Is6/IixvbWlkOiLiprYiLG9taW51czoi4oqWIixPb3BmOiLwnZWGIixvb3BmOiLwnZWgIixvcGFyOiLiprciLE9wZW5DdXJseURvdWJsZVF1b3RlOiLigJwiLE9wZW5DdXJseVF1b3RlOiLigJgiLG9wZXJwOiLiprkiLG9wbHVzOiLiipUiLG9yYXJyOiLihrsiLE9yOiLiqZQiLG9yOiLiiKgiLG9yZDoi4qmdIixvcmRlcjoi4oS0IixvcmRlcm9mOiLihLQiLG9yZGY6IsKqIixvcmRtOiLCuiIsb3JpZ29mOiLiirYiLG9yb3I6IuKpliIsb3JzbG9wZToi4qmXIixvcnY6IuKpmyIsb1M6IuKTiCIsT3Njcjoi8J2SqiIsb3Njcjoi4oS0IixPc2xhc2g6IsOYIixvc2xhc2g6IsO4Iixvc29sOiLiipgiLE90aWxkZToiw5UiLG90aWxkZToiw7UiLG90aW1lc2FzOiLiqLYiLE90aW1lczoi4qi3IixvdGltZXM6IuKKlyIsT3VtbDoiw5YiLG91bWw6IsO2IixvdmJhcjoi4oy9IixPdmVyQmFyOiLigL4iLE92ZXJCcmFjZToi4o+eIixPdmVyQnJhY2tldDoi4o60IixPdmVyUGFyZW50aGVzaXM6IuKPnCIscGFyYToiwrYiLHBhcmFsbGVsOiLiiKUiLHBhcjoi4oilIixwYXJzaW06IuKrsyIscGFyc2w6IuKrvSIscGFydDoi4oiCIixQYXJ0aWFsRDoi4oiCIixQY3k6ItCfIixwY3k6ItC/IixwZXJjbnQ6IiUiLHBlcmlvZDoiLiIscGVybWlsOiLigLAiLHBlcnA6IuKKpSIscGVydGVuazoi4oCxIixQZnI6IvCdlJMiLHBmcjoi8J2UrSIsUGhpOiLOpiIscGhpOiLPhiIscGhpdjoiz5UiLHBobW1hdDoi4oSzIixwaG9uZToi4piOIixQaToizqAiLHBpOiLPgCIscGl0Y2hmb3JrOiLii5QiLHBpdjoiz5YiLHBsYW5jazoi4oSPIixwbGFuY2toOiLihI4iLHBsYW5rdjoi4oSPIixwbHVzYWNpcjoi4qijIixwbHVzYjoi4oqeIixwbHVzY2lyOiLiqKIiLHBsdXM6IisiLHBsdXNkbzoi4oiUIixwbHVzZHU6IuKopSIscGx1c2U6IuKpsiIsUGx1c01pbnVzOiLCsSIscGx1c21uOiLCsSIscGx1c3NpbToi4qimIixwbHVzdHdvOiLiqKciLHBtOiLCsSIsUG9pbmNhcmVwbGFuZToi4oSMIixwb2ludGludDoi4qiVIixwb3BmOiLwnZWhIixQb3BmOiLihJkiLHBvdW5kOiLCoyIscHJhcDoi4qq3IixQcjoi4qq7Iixwcjoi4om6IixwcmN1ZToi4om8IixwcmVjYXBwcm94OiLiqrciLHByZWM6IuKJuiIscHJlY2N1cmx5ZXE6IuKJvCIsUHJlY2VkZXM6IuKJuiIsUHJlY2VkZXNFcXVhbDoi4qqvIixQcmVjZWRlc1NsYW50RXF1YWw6IuKJvCIsUHJlY2VkZXNUaWxkZToi4om+IixwcmVjZXE6IuKqryIscHJlY25hcHByb3g6IuKquSIscHJlY25lcXE6IuKqtSIscHJlY25zaW06IuKLqCIscHJlOiLiqq8iLHByRToi4qqzIixwcmVjc2ltOiLiib4iLHByaW1lOiLigLIiLFByaW1lOiLigLMiLHByaW1lczoi4oSZIixwcm5hcDoi4qq5Iixwcm5FOiLiqrUiLHBybnNpbToi4ouoIixwcm9kOiLiiI8iLFByb2R1Y3Q6IuKIjyIscHJvZmFsYXI6IuKMriIscHJvZmxpbmU6IuKMkiIscHJvZnN1cmY6IuKMkyIscHJvcDoi4oidIixQcm9wb3J0aW9uYWw6IuKInSIsUHJvcG9ydGlvbjoi4oi3Iixwcm9wdG86IuKInSIscHJzaW06IuKJviIscHJ1cmVsOiLiirAiLFBzY3I6IvCdkqsiLHBzY3I6IvCdk4UiLFBzaToizqgiLHBzaToiz4giLHB1bmNzcDoi4oCIIixRZnI6IvCdlJQiLHFmcjoi8J2UriIscWludDoi4qiMIixxb3BmOiLwnZWiIixRb3BmOiLihJoiLHFwcmltZToi4oGXIixRc2NyOiLwnZKsIixxc2NyOiLwnZOGIixxdWF0ZXJuaW9uczoi4oSNIixxdWF0aW50OiLiqJYiLHF1ZXN0OiI/IixxdWVzdGVxOiLiiZ8iLHF1b3Q6JyInLFFVT1Q6JyInLHJBYXJyOiLih5siLHJhY2U6IuKIvcyxIixSYWN1dGU6IsWUIixyYWN1dGU6IsWVIixyYWRpYzoi4oiaIixyYWVtcHR5djoi4qazIixyYW5nOiLin6kiLFJhbmc6IuKfqyIscmFuZ2Q6IuKmkiIscmFuZ2U6IuKmpSIscmFuZ2xlOiLin6kiLHJhcXVvOiLCuyIscmFycmFwOiLipbUiLHJhcnJiOiLih6UiLHJhcnJiZnM6IuKkoCIscmFycmM6IuKksyIscmFycjoi4oaSIixSYXJyOiLihqAiLHJBcnI6IuKHkiIscmFycmZzOiLipJ4iLHJhcnJoazoi4oaqIixyYXJybHA6IuKGrCIscmFycnBsOiLipYUiLHJhcnJzaW06IuKltCIsUmFycnRsOiLipJYiLHJhcnJ0bDoi4oajIixyYXJydzoi4oadIixyYXRhaWw6IuKkmiIsckF0YWlsOiLipJwiLHJhdGlvOiLiiLYiLHJhdGlvbmFsczoi4oSaIixyYmFycjoi4qSNIixyQmFycjoi4qSPIixSQmFycjoi4qSQIixyYmJyazoi4p2zIixyYnJhY2U6In0iLHJicmFjazoiXSIscmJya2U6IuKmjCIscmJya3NsZDoi4qaOIixyYnJrc2x1OiLippAiLFJjYXJvbjoixZgiLHJjYXJvbjoixZkiLFJjZWRpbDoixZYiLHJjZWRpbDoixZciLHJjZWlsOiLijIkiLHJjdWI6In0iLFJjeToi0KAiLHJjeToi0YAiLHJkY2E6IuKktyIscmRsZGhhcjoi4qWpIixyZHF1bzoi4oCdIixyZHF1b3I6IuKAnSIscmRzaDoi4oazIixyZWFsOiLihJwiLHJlYWxpbmU6IuKEmyIscmVhbHBhcnQ6IuKEnCIscmVhbHM6IuKEnSIsUmU6IuKEnCIscmVjdDoi4patIixyZWc6IsKuIixSRUc6IsKuIixSZXZlcnNlRWxlbWVudDoi4oiLIixSZXZlcnNlRXF1aWxpYnJpdW06IuKHiyIsUmV2ZXJzZVVwRXF1aWxpYnJpdW06IuKlryIscmZpc2h0OiLipb0iLHJmbG9vcjoi4oyLIixyZnI6IvCdlK8iLFJmcjoi4oScIixySGFyOiLipaQiLHJoYXJkOiLih4EiLHJoYXJ1OiLih4AiLHJoYXJ1bDoi4qWsIixSaG86Is6hIixyaG86Is+BIixyaG92OiLPsSIsUmlnaHRBbmdsZUJyYWNrZXQ6IuKfqSIsUmlnaHRBcnJvd0Jhcjoi4oelIixyaWdodGFycm93OiLihpIiLFJpZ2h0QXJyb3c6IuKGkiIsUmlnaHRhcnJvdzoi4oeSIixSaWdodEFycm93TGVmdEFycm93OiLih4QiLHJpZ2h0YXJyb3d0YWlsOiLihqMiLFJpZ2h0Q2VpbGluZzoi4oyJIixSaWdodERvdWJsZUJyYWNrZXQ6IuKfpyIsUmlnaHREb3duVGVlVmVjdG9yOiLipZ0iLFJpZ2h0RG93blZlY3RvckJhcjoi4qWVIixSaWdodERvd25WZWN0b3I6IuKHgiIsUmlnaHRGbG9vcjoi4oyLIixyaWdodGhhcnBvb25kb3duOiLih4EiLHJpZ2h0aGFycG9vbnVwOiLih4AiLHJpZ2h0bGVmdGFycm93czoi4oeEIixyaWdodGxlZnRoYXJwb29uczoi4oeMIixyaWdodHJpZ2h0YXJyb3dzOiLih4kiLHJpZ2h0c3F1aWdhcnJvdzoi4oadIixSaWdodFRlZUFycm93OiLihqYiLFJpZ2h0VGVlOiLiiqIiLFJpZ2h0VGVlVmVjdG9yOiLipZsiLHJpZ2h0dGhyZWV0aW1lczoi4ouMIixSaWdodFRyaWFuZ2xlQmFyOiLip5AiLFJpZ2h0VHJpYW5nbGU6IuKKsyIsUmlnaHRUcmlhbmdsZUVxdWFsOiLiirUiLFJpZ2h0VXBEb3duVmVjdG9yOiLipY8iLFJpZ2h0VXBUZWVWZWN0b3I6IuKlnCIsUmlnaHRVcFZlY3RvckJhcjoi4qWUIixSaWdodFVwVmVjdG9yOiLihr4iLFJpZ2h0VmVjdG9yQmFyOiLipZMiLFJpZ2h0VmVjdG9yOiLih4AiLHJpbmc6IsuaIixyaXNpbmdkb3RzZXE6IuKJkyIscmxhcnI6IuKHhCIscmxoYXI6IuKHjCIscmxtOiLigI8iLHJtb3VzdGFjaGU6IuKOsSIscm1vdXN0OiLijrEiLHJubWlkOiLiq64iLHJvYW5nOiLin60iLHJvYXJyOiLih74iLHJvYnJrOiLin6ciLHJvcGFyOiLipoYiLHJvcGY6IvCdlaMiLFJvcGY6IuKEnSIscm9wbHVzOiLiqK4iLHJvdGltZXM6IuKotSIsUm91bmRJbXBsaWVzOiLipbAiLHJwYXI6IikiLHJwYXJndDoi4qaUIixycHBvbGludDoi4qiSIixycmFycjoi4oeJIixScmlnaHRhcnJvdzoi4oebIixyc2FxdW86IuKAuiIscnNjcjoi8J2ThyIsUnNjcjoi4oSbIixyc2g6IuKGsSIsUnNoOiLihrEiLHJzcWI6Il0iLHJzcXVvOiLigJkiLHJzcXVvcjoi4oCZIixydGhyZWU6IuKLjCIscnRpbWVzOiLii4oiLHJ0cmk6IuKWuSIscnRyaWU6IuKKtSIscnRyaWY6IuKWuCIscnRyaWx0cmk6IuKnjiIsUnVsZURlbGF5ZWQ6IuKntCIscnVsdWhhcjoi4qWoIixyeDoi4oSeIixTYWN1dGU6IsWaIixzYWN1dGU6IsWbIixzYnF1bzoi4oCaIixzY2FwOiLiqrgiLFNjYXJvbjoixaAiLHNjYXJvbjoixaEiLFNjOiLiqrwiLHNjOiLiibsiLHNjY3VlOiLiib0iLHNjZToi4qqwIixzY0U6IuKqtCIsU2NlZGlsOiLFniIsc2NlZGlsOiLFnyIsU2NpcmM6IsWcIixzY2lyYzoixZ0iLHNjbmFwOiLiqroiLHNjbkU6IuKqtiIsc2Nuc2ltOiLii6kiLHNjcG9saW50OiLiqJMiLHNjc2ltOiLiib8iLFNjeToi0KEiLHNjeToi0YEiLHNkb3RiOiLiiqEiLHNkb3Q6IuKLhSIsc2RvdGU6IuKppiIsc2VhcmhrOiLipKUiLHNlYXJyOiLihpgiLHNlQXJyOiLih5giLHNlYXJyb3c6IuKGmCIsc2VjdDoiwqciLHNlbWk6IjsiLHNlc3dhcjoi4qSpIixzZXRtaW51czoi4oiWIixzZXRtbjoi4oiWIixzZXh0OiLinLYiLFNmcjoi8J2UliIsc2ZyOiLwnZSwIixzZnJvd246IuKMoiIsc2hhcnA6IuKZryIsU0hDSGN5OiLQqSIsc2hjaGN5OiLRiSIsU0hjeToi0KgiLHNoY3k6ItGIIixTaG9ydERvd25BcnJvdzoi4oaTIixTaG9ydExlZnRBcnJvdzoi4oaQIixzaG9ydG1pZDoi4oijIixzaG9ydHBhcmFsbGVsOiLiiKUiLFNob3J0UmlnaHRBcnJvdzoi4oaSIixTaG9ydFVwQXJyb3c6IuKGkSIsc2h5OiLCrSIsU2lnbWE6Is6jIixzaWdtYToiz4MiLHNpZ21hZjoiz4IiLHNpZ21hdjoiz4IiLHNpbToi4oi8IixzaW1kb3Q6IuKpqiIsc2ltZToi4omDIixzaW1lcToi4omDIixzaW1nOiLiqp4iLHNpbWdFOiLiqqAiLHNpbWw6IuKqnSIsc2ltbEU6IuKqnyIsc2ltbmU6IuKJhiIsc2ltcGx1czoi4qikIixzaW1yYXJyOiLipbIiLHNsYXJyOiLihpAiLFNtYWxsQ2lyY2xlOiLiiJgiLHNtYWxsc2V0bWludXM6IuKIliIsc21hc2hwOiLiqLMiLHNtZXBhcnNsOiLip6QiLHNtaWQ6IuKIoyIsc21pbGU6IuKMoyIsc210OiLiqqoiLHNtdGU6IuKqrCIsc210ZXM6IuKqrO+4gCIsU09GVGN5OiLQrCIsc29mdGN5OiLRjCIsc29sYmFyOiLijL8iLHNvbGI6IuKnhCIsc29sOiIvIixTb3BmOiLwnZWKIixzb3BmOiLwnZWkIixzcGFkZXM6IuKZoCIsc3BhZGVzdWl0OiLimaAiLHNwYXI6IuKIpSIsc3FjYXA6IuKKkyIsc3FjYXBzOiLiipPvuIAiLHNxY3VwOiLiipQiLHNxY3Vwczoi4oqU77iAIixTcXJ0OiLiiJoiLHNxc3ViOiLiio8iLHNxc3ViZToi4oqRIixzcXN1YnNldDoi4oqPIixzcXN1YnNldGVxOiLiipEiLHNxc3VwOiLiipAiLHNxc3VwZToi4oqSIixzcXN1cHNldDoi4oqQIixzcXN1cHNldGVxOiLiipIiLHNxdWFyZToi4pahIixTcXVhcmU6IuKWoSIsU3F1YXJlSW50ZXJzZWN0aW9uOiLiipMiLFNxdWFyZVN1YnNldDoi4oqPIixTcXVhcmVTdWJzZXRFcXVhbDoi4oqRIixTcXVhcmVTdXBlcnNldDoi4oqQIixTcXVhcmVTdXBlcnNldEVxdWFsOiLiipIiLFNxdWFyZVVuaW9uOiLiipQiLHNxdWFyZjoi4paqIixzcXU6IuKWoSIsc3F1Zjoi4paqIixzcmFycjoi4oaSIixTc2NyOiLwnZKuIixzc2NyOiLwnZOIIixzc2V0bW46IuKIliIsc3NtaWxlOiLijKMiLHNzdGFyZjoi4ouGIixTdGFyOiLii4YiLHN0YXI6IuKYhiIsc3RhcmY6IuKYhSIsc3RyYWlnaHRlcHNpbG9uOiLPtSIsc3RyYWlnaHRwaGk6Is+VIixzdHJuczoiwq8iLHN1Yjoi4oqCIixTdWI6IuKLkCIsc3ViZG90OiLiqr0iLHN1YkU6IuKrhSIsc3ViZToi4oqGIixzdWJlZG90OiLiq4MiLHN1Ym11bHQ6IuKrgSIsc3VibkU6IuKriyIsc3VibmU6IuKKiiIsc3VicGx1czoi4qq/IixzdWJyYXJyOiLipbkiLHN1YnNldDoi4oqCIixTdWJzZXQ6IuKLkCIsc3Vic2V0ZXE6IuKKhiIsc3Vic2V0ZXFxOiLiq4UiLFN1YnNldEVxdWFsOiLiioYiLHN1YnNldG5lcToi4oqKIixzdWJzZXRuZXFxOiLiq4siLHN1YnNpbToi4quHIixzdWJzdWI6IuKrlSIsc3Vic3VwOiLiq5MiLHN1Y2NhcHByb3g6IuKquCIsc3VjYzoi4om7IixzdWNjY3VybHllcToi4om9IixTdWNjZWVkczoi4om7IixTdWNjZWVkc0VxdWFsOiLiqrAiLFN1Y2NlZWRzU2xhbnRFcXVhbDoi4om9IixTdWNjZWVkc1RpbGRlOiLiib8iLHN1Y2NlcToi4qqwIixzdWNjbmFwcHJveDoi4qq6IixzdWNjbmVxcToi4qq2IixzdWNjbnNpbToi4oupIixzdWNjc2ltOiLiib8iLFN1Y2hUaGF0OiLiiIsiLHN1bToi4oiRIixTdW06IuKIkSIsc3VuZzoi4pmqIixzdXAxOiLCuSIsc3VwMjoiwrIiLHN1cDM6IsKzIixzdXA6IuKKgyIsU3VwOiLii5EiLHN1cGRvdDoi4qq+IixzdXBkc3ViOiLiq5giLHN1cEU6IuKrhiIsc3VwZToi4oqHIixzdXBlZG90OiLiq4QiLFN1cGVyc2V0OiLiioMiLFN1cGVyc2V0RXF1YWw6IuKKhyIsc3VwaHNvbDoi4p+JIixzdXBoc3ViOiLiq5ciLHN1cGxhcnI6IuKluyIsc3VwbXVsdDoi4quCIixzdXBuRToi4quMIixzdXBuZToi4oqLIixzdXBwbHVzOiLiq4AiLHN1cHNldDoi4oqDIixTdXBzZXQ6IuKLkSIsc3Vwc2V0ZXE6IuKKhyIsc3Vwc2V0ZXFxOiLiq4YiLHN1cHNldG5lcToi4oqLIixzdXBzZXRuZXFxOiLiq4wiLHN1cHNpbToi4quIIixzdXBzdWI6IuKrlCIsc3Vwc3VwOiLiq5YiLHN3YXJoazoi4qSmIixzd2Fycjoi4oaZIixzd0Fycjoi4oeZIixzd2Fycm93OiLihpkiLHN3bndhcjoi4qSqIixzemxpZzoiw58iLFRhYjoiXHQiLHRhcmdldDoi4oyWIixUYXU6Is6kIix0YXU6Is+EIix0YnJrOiLijrQiLFRjYXJvbjoixaQiLHRjYXJvbjoixaUiLFRjZWRpbDoixaIiLHRjZWRpbDoixaMiLFRjeToi0KIiLHRjeToi0YIiLHRkb3Q6IuKDmyIsdGVscmVjOiLijJUiLFRmcjoi8J2UlyIsdGZyOiLwnZSxIix0aGVyZTQ6IuKItCIsdGhlcmVmb3JlOiLiiLQiLFRoZXJlZm9yZToi4oi0IixUaGV0YToizpgiLHRoZXRhOiLOuCIsdGhldGFzeW06Is+RIix0aGV0YXY6Is+RIix0aGlja2FwcHJveDoi4omIIix0aGlja3NpbToi4oi8IixUaGlja1NwYWNlOiLigZ/igIoiLFRoaW5TcGFjZToi4oCJIix0aGluc3A6IuKAiSIsdGhrYXA6IuKJiCIsdGhrc2ltOiLiiLwiLFRIT1JOOiLDniIsdGhvcm46IsO+Iix0aWxkZToiy5wiLFRpbGRlOiLiiLwiLFRpbGRlRXF1YWw6IuKJgyIsVGlsZGVGdWxsRXF1YWw6IuKJhSIsVGlsZGVUaWxkZToi4omIIix0aW1lc2Jhcjoi4qixIix0aW1lc2I6IuKKoCIsdGltZXM6IsOXIix0aW1lc2Q6IuKosCIsdGludDoi4oitIix0b2VhOiLipKgiLHRvcGJvdDoi4oy2Iix0b3BjaXI6IuKrsSIsdG9wOiLiiqQiLFRvcGY6IvCdlYsiLHRvcGY6IvCdlaUiLHRvcGZvcms6IuKrmiIsdG9zYToi4qSpIix0cHJpbWU6IuKAtCIsdHJhZGU6IuKEoiIsVFJBREU6IuKEoiIsdHJpYW5nbGU6IuKWtSIsdHJpYW5nbGVkb3duOiLilr8iLHRyaWFuZ2xlbGVmdDoi4peDIix0cmlhbmdsZWxlZnRlcToi4oq0Iix0cmlhbmdsZXE6IuKJnCIsdHJpYW5nbGVyaWdodDoi4pa5Iix0cmlhbmdsZXJpZ2h0ZXE6IuKKtSIsdHJpZG90OiLil6wiLHRyaWU6IuKJnCIsdHJpbWludXM6IuKouiIsVHJpcGxlRG90OiLig5siLHRyaXBsdXM6IuKouSIsdHJpc2I6IuKnjSIsdHJpdGltZToi4qi7Iix0cnBleml1bToi4o+iIixUc2NyOiLwnZKvIix0c2NyOiLwnZOJIixUU2N5OiLQpiIsdHNjeToi0YYiLFRTSGN5OiLQiyIsdHNoY3k6ItGbIixUc3Ryb2s6IsWmIix0c3Ryb2s6IsWnIix0d2l4dDoi4omsIix0d29oZWFkbGVmdGFycm93OiLihp4iLHR3b2hlYWRyaWdodGFycm93OiLihqAiLFVhY3V0ZToiw5oiLHVhY3V0ZToiw7oiLHVhcnI6IuKGkSIsVWFycjoi4oafIix1QXJyOiLih5EiLFVhcnJvY2lyOiLipYkiLFVicmN5OiLQjiIsdWJyY3k6ItGeIixVYnJldmU6IsWsIix1YnJldmU6IsWtIixVY2lyYzoiw5siLHVjaXJjOiLDuyIsVWN5OiLQoyIsdWN5OiLRgyIsdWRhcnI6IuKHhSIsVWRibGFjOiLFsCIsdWRibGFjOiLFsSIsdWRoYXI6IuKlriIsdWZpc2h0OiLipb4iLFVmcjoi8J2UmCIsdWZyOiLwnZSyIixVZ3JhdmU6IsOZIix1Z3JhdmU6IsO5Iix1SGFyOiLipaMiLHVoYXJsOiLihr8iLHVoYXJyOiLihr4iLHVoYmxrOiLiloAiLHVsY29ybjoi4oycIix1bGNvcm5lcjoi4oycIix1bGNyb3A6IuKMjyIsdWx0cmk6IuKXuCIsVW1hY3I6IsWqIix1bWFjcjoixasiLHVtbDoiwqgiLFVuZGVyQmFyOiJfIixVbmRlckJyYWNlOiLij58iLFVuZGVyQnJhY2tldDoi4o61IixVbmRlclBhcmVudGhlc2lzOiLij50iLFVuaW9uOiLii4MiLFVuaW9uUGx1czoi4oqOIixVb2dvbjoixbIiLHVvZ29uOiLFsyIsVW9wZjoi8J2VjCIsdW9wZjoi8J2VpiIsVXBBcnJvd0Jhcjoi4qSSIix1cGFycm93OiLihpEiLFVwQXJyb3c6IuKGkSIsVXBhcnJvdzoi4oeRIixVcEFycm93RG93bkFycm93OiLih4UiLHVwZG93bmFycm93OiLihpUiLFVwRG93bkFycm93OiLihpUiLFVwZG93bmFycm93OiLih5UiLFVwRXF1aWxpYnJpdW06IuKlriIsdXBoYXJwb29ubGVmdDoi4oa/Iix1cGhhcnBvb25yaWdodDoi4oa+Iix1cGx1czoi4oqOIixVcHBlckxlZnRBcnJvdzoi4oaWIixVcHBlclJpZ2h0QXJyb3c6IuKGlyIsdXBzaToiz4UiLFVwc2k6Is+SIix1cHNpaDoiz5IiLFVwc2lsb246Is6lIix1cHNpbG9uOiLPhSIsVXBUZWVBcnJvdzoi4oalIixVcFRlZToi4oqlIix1cHVwYXJyb3dzOiLih4giLHVyY29ybjoi4oydIix1cmNvcm5lcjoi4oydIix1cmNyb3A6IuKMjiIsVXJpbmc6IsWuIix1cmluZzoixa8iLHVydHJpOiLil7kiLFVzY3I6IvCdkrAiLHVzY3I6IvCdk4oiLHV0ZG90OiLii7AiLFV0aWxkZToixagiLHV0aWxkZToixakiLHV0cmk6IuKWtSIsdXRyaWY6IuKWtCIsdXVhcnI6IuKHiCIsVXVtbDoiw5wiLHV1bWw6IsO8Iix1d2FuZ2xlOiLipqciLHZhbmdydDoi4qacIix2YXJlcHNpbG9uOiLPtSIsdmFya2FwcGE6Is+wIix2YXJub3RoaW5nOiLiiIUiLHZhcnBoaToiz5UiLHZhcnBpOiLPliIsdmFycHJvcHRvOiLiiJ0iLHZhcnI6IuKGlSIsdkFycjoi4oeVIix2YXJyaG86Is+xIix2YXJzaWdtYToiz4IiLHZhcnN1YnNldG5lcToi4oqK77iAIix2YXJzdWJzZXRuZXFxOiLiq4vvuIAiLHZhcnN1cHNldG5lcToi4oqL77iAIix2YXJzdXBzZXRuZXFxOiLiq4zvuIAiLHZhcnRoZXRhOiLPkSIsdmFydHJpYW5nbGVsZWZ0OiLiirIiLHZhcnRyaWFuZ2xlcmlnaHQ6IuKKsyIsdkJhcjoi4quoIixWYmFyOiLiq6siLHZCYXJ2OiLiq6kiLFZjeToi0JIiLHZjeToi0LIiLHZkYXNoOiLiiqIiLHZEYXNoOiLiiqgiLFZkYXNoOiLiiqkiLFZEYXNoOiLiiqsiLFZkYXNobDoi4qumIix2ZWViYXI6IuKKuyIsdmVlOiLiiKgiLFZlZToi4ouBIix2ZWVlcToi4omaIix2ZWxsaXA6IuKLriIsdmVyYmFyOiJ8IixWZXJiYXI6IuKAliIsdmVydDoifCIsVmVydDoi4oCWIixWZXJ0aWNhbEJhcjoi4oijIixWZXJ0aWNhbExpbmU6InwiLFZlcnRpY2FsU2VwYXJhdG9yOiLinZgiLFZlcnRpY2FsVGlsZGU6IuKJgCIsVmVyeVRoaW5TcGFjZToi4oCKIixWZnI6IvCdlJkiLHZmcjoi8J2UsyIsdmx0cmk6IuKKsiIsdm5zdWI6IuKKguKDkiIsdm5zdXA6IuKKg+KDkiIsVm9wZjoi8J2VjSIsdm9wZjoi8J2VpyIsdnByb3A6IuKInSIsdnJ0cmk6IuKKsyIsVnNjcjoi8J2SsSIsdnNjcjoi8J2TiyIsdnN1Ym5FOiLiq4vvuIAiLHZzdWJuZToi4oqK77iAIix2c3VwbkU6IuKrjO+4gCIsdnN1cG5lOiLiiovvuIAiLFZ2ZGFzaDoi4oqqIix2emlnemFnOiLippoiLFdjaXJjOiLFtCIsd2NpcmM6IsW1Iix3ZWRiYXI6IuKpnyIsd2VkZ2U6IuKIpyIsV2VkZ2U6IuKLgCIsd2VkZ2VxOiLiiZkiLHdlaWVycDoi4oSYIixXZnI6IvCdlJoiLHdmcjoi8J2UtCIsV29wZjoi8J2VjiIsd29wZjoi8J2VqCIsd3A6IuKEmCIsd3I6IuKJgCIsd3JlYXRoOiLiiYAiLFdzY3I6IvCdkrIiLHdzY3I6IvCdk4wiLHhjYXA6IuKLgiIseGNpcmM6IuKXryIseGN1cDoi4ouDIix4ZHRyaToi4pa9IixYZnI6IvCdlJsiLHhmcjoi8J2UtSIseGhhcnI6IuKftyIseGhBcnI6IuKfuiIsWGk6Is6eIix4aToizr4iLHhsYXJyOiLin7UiLHhsQXJyOiLin7giLHhtYXA6IuKfvCIseG5pczoi4ou7Iix4b2RvdDoi4qiAIixYb3BmOiLwnZWPIix4b3BmOiLwnZWpIix4b3BsdXM6IuKogSIseG90aW1lOiLiqIIiLHhyYXJyOiLin7YiLHhyQXJyOiLin7kiLFhzY3I6IvCdkrMiLHhzY3I6IvCdk40iLHhzcWN1cDoi4qiGIix4dXBsdXM6IuKohCIseHV0cmk6IuKWsyIseHZlZToi4ouBIix4d2VkZ2U6IuKLgCIsWWFjdXRlOiLDnSIseWFjdXRlOiLDvSIsWUFjeToi0K8iLHlhY3k6ItGPIixZY2lyYzoixbYiLHljaXJjOiLFtyIsWWN5OiLQqyIseWN5OiLRiyIseWVuOiLCpSIsWWZyOiLwnZScIix5ZnI6IvCdlLYiLFlJY3k6ItCHIix5aWN5OiLRlyIsWW9wZjoi8J2VkCIseW9wZjoi8J2VqiIsWXNjcjoi8J2StCIseXNjcjoi8J2TjiIsWVVjeToi0K4iLHl1Y3k6ItGOIix5dW1sOiLDvyIsWXVtbDoixbgiLFphY3V0ZToixbkiLHphY3V0ZToixboiLFpjYXJvbjoixb0iLHpjYXJvbjoixb4iLFpjeToi0JciLHpjeToi0LciLFpkb3Q6IsW7Iix6ZG90OiLFvCIsemVldHJmOiLihKgiLFplcm9XaWR0aFNwYWNlOiLigIsiLFpldGE6Is6WIix6ZXRhOiLOtiIsemZyOiLwnZS3IixaZnI6IuKEqCIsWkhjeToi0JYiLHpoY3k6ItC2Iix6aWdyYXJyOiLih50iLHpvcGY6IvCdlasiLFpvcGY6IuKEpCIsWnNjcjoi8J2StSIsenNjcjoi8J2TjyIsendqOiLigI0iLHp3bmo6IuKAjCJ9fSx7fV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9e0FhY3V0ZToiw4EiLGFhY3V0ZToiw6EiLEFjaXJjOiLDgiIsYWNpcmM6IsOiIixhY3V0ZToiwrQiLEFFbGlnOiLDhiIsYWVsaWc6IsOmIixBZ3JhdmU6IsOAIixhZ3JhdmU6IsOgIixhbXA6IiYiLEFNUDoiJiIsQXJpbmc6IsOFIixhcmluZzoiw6UiLEF0aWxkZToiw4MiLGF0aWxkZToiw6MiLEF1bWw6IsOEIixhdW1sOiLDpCIsYnJ2YmFyOiLCpiIsQ2NlZGlsOiLDhyIsY2NlZGlsOiLDpyIsY2VkaWw6IsK4IixjZW50OiLCoiIsY29weToiwqkiLENPUFk6IsKpIixjdXJyZW46IsKkIixkZWc6IsKwIixkaXZpZGU6IsO3IixFYWN1dGU6IsOJIixlYWN1dGU6IsOpIixFY2lyYzoiw4oiLGVjaXJjOiLDqiIsRWdyYXZlOiLDiCIsZWdyYXZlOiLDqCIsRVRIOiLDkCIsZXRoOiLDsCIsRXVtbDoiw4siLGV1bWw6IsOrIixmcmFjMTI6IsK9IixmcmFjMTQ6IsK8IixmcmFjMzQ6IsK+IixndDoiPiIsR1Q6Ij4iLElhY3V0ZToiw40iLGlhY3V0ZToiw60iLEljaXJjOiLDjiIsaWNpcmM6IsOuIixpZXhjbDoiwqEiLElncmF2ZToiw4wiLGlncmF2ZToiw6wiLGlxdWVzdDoiwr8iLEl1bWw6IsOPIixpdW1sOiLDryIsbGFxdW86IsKrIixsdDoiPCIsTFQ6IjwiLG1hY3I6IsKvIixtaWNybzoiwrUiLG1pZGRvdDoiwrciLG5ic3A6IsKgIixub3Q6IsKsIixOdGlsZGU6IsORIixudGlsZGU6IsOxIixPYWN1dGU6IsOTIixvYWN1dGU6IsOzIixPY2lyYzoiw5QiLG9jaXJjOiLDtCIsT2dyYXZlOiLDkiIsb2dyYXZlOiLDsiIsb3JkZjoiwqoiLG9yZG06IsK6IixPc2xhc2g6IsOYIixvc2xhc2g6IsO4IixPdGlsZGU6IsOVIixvdGlsZGU6IsO1IixPdW1sOiLDliIsb3VtbDoiw7YiLHBhcmE6IsK2IixwbHVzbW46IsKxIixwb3VuZDoiwqMiLHF1b3Q6JyInLFFVT1Q6JyInLHJhcXVvOiLCuyIscmVnOiLCriIsUkVHOiLCriIsc2VjdDoiwqciLHNoeToiwq0iLHN1cDE6IsK5IixzdXAyOiLCsiIsc3VwMzoiwrMiLHN6bGlnOiLDnyIsVEhPUk46IsOeIix0aG9ybjoiw74iLHRpbWVzOiLDlyIsVWFjdXRlOiLDmiIsdWFjdXRlOiLDuiIsVWNpcmM6IsObIix1Y2lyYzoiw7siLFVncmF2ZToiw5kiLHVncmF2ZToiw7kiLHVtbDoiwqgiLFV1bWw6IsOcIix1dW1sOiLDvCIsWWFjdXRlOiLDnSIseWFjdXRlOiLDvSIseWVuOiLCpSIseXVtbDoiw78ifX0se31dLDI3OltmdW5jdGlvbihlLHQsbil7dC5leHBvcnRzPXthbXA6IiYiLGFwb3M6IiciLGd0OiI+IixsdDoiPCIscXVvdDonIid9fSx7fV0sMjg6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50c3x8e30sdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfWZ1bmN0aW9uIGkoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9ZnVuY3Rpb24gYShlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHZvaWQgMD09PWV9dC5leHBvcnRzPXIsci5FdmVudEVtaXR0ZXI9cixyLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMCxyLmRlZmF1bHRNYXhMaXN0ZW5lcnM9MTAsci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe2lmKCFhKGUpfHxlPDB8fGlzTmFOKGUpKXRocm93IFR5cGVFcnJvcigibiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LHIucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGEsbCx1O2lmKHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksImVycm9yIj09PWUmJighdGhpcy5fZXZlbnRzLmVycm9yfHxvKHRoaXMuX2V2ZW50cy5lcnJvcikmJiF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSl7aWYodD1hcmd1bWVudHNbMV0sdCBpbnN0YW5jZW9mIEVycm9yKXRocm93IHQ7dmFyIGM9bmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgImVycm9yIiBldmVudC4gKCcrdCsiKSIpO3Rocm93IGMuY29udGV4dD10LGN9aWYobj10aGlzLl9ldmVudHNbZV0scyhuKSlyZXR1cm4hMTtpZihpKG4pKXN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6bi5jYWxsKHRoaXMpO2JyZWFrO2Nhc2UgMjpuLmNhbGwodGhpcyxhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2UgMzpuLmNhbGwodGhpcyxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTticmVhaztkZWZhdWx0OmE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG4uYXBwbHkodGhpcyxhKX1lbHNlIGlmKG8obikpZm9yKGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHU9bi5zbGljZSgpLHI9dS5sZW5ndGgsbD0wO2w8cjtsKyspdVtsXS5hcHBseSh0aGlzLGEpO3JldHVybiEwfSxyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKCFpKHQpKXRocm93IFR5cGVFcnJvcigibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7cmV0dXJuIHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksdGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyJiZ0aGlzLmVtaXQoIm5ld0xpc3RlbmVyIixlLGkodC5saXN0ZW5lcik/dC5saXN0ZW5lcjp0KSx0aGlzLl9ldmVudHNbZV0/byh0aGlzLl9ldmVudHNbZV0pP3RoaXMuX2V2ZW50c1tlXS5wdXNoKHQpOnRoaXMuX2V2ZW50c1tlXT1bdGhpcy5fZXZlbnRzW2VdLHRdOnRoaXMuX2V2ZW50c1tlXT10LG8odGhpcy5fZXZlbnRzW2VdKSYmIXRoaXMuX2V2ZW50c1tlXS53YXJuZWQmJihuPXModGhpcy5fbWF4TGlzdGVuZXJzKT9yLmRlZmF1bHRNYXhMaXN0ZW5lcnM6dGhpcy5fbWF4TGlzdGVuZXJzLG4mJm4+MCYmdGhpcy5fZXZlbnRzW2VdLmxlbmd0aD5uJiYodGhpcy5fZXZlbnRzW2VdLndhcm5lZD0hMCxjb25zb2xlLmVycm9yKCIobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LiIsdGhpcy5fZXZlbnRzW2VdLmxlbmd0aCksImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUudHJhY2UmJmNvbnNvbGUudHJhY2UoKSkpLHRoaXN9LHIucHJvdG90eXBlLm9uPXIucHJvdG90eXBlLmFkZExpc3RlbmVyLHIucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7dGhpcy5yZW1vdmVMaXN0ZW5lcihlLG4pLHJ8fChyPSEwLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1pZighaSh0KSl0aHJvdyBUeXBlRXJyb3IoImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbiIpO3ZhciByPSExO3JldHVybiBuLmxpc3RlbmVyPXQsdGhpcy5vbihlLG4pLHRoaXN9LHIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixhLHM7aWYoIWkodCkpdGhyb3cgVHlwZUVycm9yKCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtpZighdGhpcy5fZXZlbnRzfHwhdGhpcy5fZXZlbnRzW2VdKXJldHVybiB0aGlzO2lmKG49dGhpcy5fZXZlbnRzW2VdLGE9bi5sZW5ndGgscj0tMSxuPT09dHx8aShuLmxpc3RlbmVyKSYmbi5saXN0ZW5lcj09PXQpZGVsZXRlIHRoaXMuX2V2ZW50c1tlXSx0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsdCk7ZWxzZSBpZihvKG4pKXtmb3Iocz1hO3MtLSA+MDspaWYobltzXT09PXR8fG5bc10ubGlzdGVuZXImJm5bc10ubGlzdGVuZXI9PT10KXtyPXM7YnJlYWt9aWYocjwwKXJldHVybiB0aGlzOzE9PT1uLmxlbmd0aD8obi5sZW5ndGg9MCxkZWxldGUgdGhpcy5fZXZlbnRzW2VdKTpuLnNwbGljZShyLDEpLHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsZSx0KX1yZXR1cm4gdGhpc30sci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0LG47aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpcztpZighdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9ldmVudHM9e306dGhpcy5fZXZlbnRzW2VdJiZkZWxldGUgdGhpcy5fZXZlbnRzW2VdLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2Zvcih0IGluIHRoaXMuX2V2ZW50cykicmVtb3ZlTGlzdGVuZXIiIT09dCYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnModCk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz17fSx0aGlzfWlmKG49dGhpcy5fZXZlbnRzW2VdLGkobikpdGhpcy5yZW1vdmVMaXN0ZW5lcihlLG4pO2Vsc2UgaWYobilmb3IoO24ubGVuZ3RoOyl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsbltuLmxlbmd0aC0xXSk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9ldmVudHNbZV0sdGhpc30sci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzW2VdP2kodGhpcy5fZXZlbnRzW2VdKT9bdGhpcy5fZXZlbnRzW2VdXTp0aGlzLl9ldmVudHNbZV0uc2xpY2UoKTpbXX0sci5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlKXtpZih0aGlzLl9ldmVudHMpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZihpKHQpKXJldHVybiAxO2lmKHQpcmV0dXJuIHQubGVuZ3RofXJldHVybiAwfSxyLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5saXN0ZW5lckNvdW50KHQpfX0se31dLDI5OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXt0aGlzLl9jYnM9ZXx8e30sdGhpcy5ldmVudHM9W119dC5leHBvcnRzPXI7dmFyIGk9ZSgiLi8iKS5FVkVOVFM7T2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbihlKXtpZigwPT09aVtlXSllPSJvbiIrZSxyLnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3RoaXMuZXZlbnRzLnB1c2goW2VdKSx0aGlzLl9jYnNbZV0mJnRoaXMuX2Nic1tlXSgpfTtlbHNlIGlmKDE9PT1pW2VdKWU9Im9uIitlLHIucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQpe3RoaXMuZXZlbnRzLnB1c2goW2UsdF0pLHRoaXMuX2Nic1tlXSYmdGhpcy5fY2JzW2VdKHQpfTtlbHNle2lmKDIhPT1pW2VdKXRocm93IEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIik7ZT0ib24iK2Usci5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuKXt0aGlzLmV2ZW50cy5wdXNoKFtlLHQsbl0pLHRoaXMuX2Nic1tlXSYmdGhpcy5fY2JzW2VdKHQsbil9fX0pLHIucHJvdG90eXBlLm9ucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cz1bXSx0aGlzLl9jYnMub25yZXNldCYmdGhpcy5fY2JzLm9ucmVzZXQoKX0sci5wcm90b3R5cGUucmVzdGFydD1mdW5jdGlvbigpe3RoaXMuX2Nicy5vbnJlc2V0JiZ0aGlzLl9jYnMub25yZXNldCgpO2Zvcih2YXIgZT0wLHQ9dGhpcy5ldmVudHMubGVuZ3RoO2U8dDtlKyspaWYodGhpcy5fY2JzW3RoaXMuZXZlbnRzW2VdWzBdXSl7dmFyIG49dGhpcy5ldmVudHNbZV0ubGVuZ3RoOzE9PT1uP3RoaXMuX2Nic1t0aGlzLmV2ZW50c1tlXVswXV0oKToyPT09bj90aGlzLl9jYnNbdGhpcy5ldmVudHNbZV1bMF1dKHRoaXMuZXZlbnRzW2VdWzFdKTp0aGlzLl9jYnNbdGhpcy5ldmVudHNbZV1bMF1dKHRoaXMuZXZlbnRzW2VdWzFdLHRoaXMuZXZlbnRzW2VdWzJdKX19fSx7Ii4vIjozNn1dLDMwOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3RoaXMuaW5pdChlLHQpfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gYy5nZXRFbGVtZW50c0J5VGFnTmFtZShlLHQsITApfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4gYy5nZXRFbGVtZW50c0J5VGFnTmFtZShlLHQsITAsMSlbMF19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuIGMuZ2V0VGV4dChjLmdldEVsZW1lbnRzQnlUYWdOYW1lKGUsdCxuLDEpKS50cmltKCl9ZnVuY3Rpb24gcyhlLHQsbixyLGkpe3ZhciBhPW8obixyLGkpO2EmJihlW3RdPWEpfXZhciBsPWUoIi4vaW5kZXguanMiKSx1PWwuRG9tSGFuZGxlcixjPWwuRG9tVXRpbHM7ZSgiaW5oZXJpdHMiKShyLHUpLHIucHJvdG90eXBlLmluaXQ9dTt2YXIgcD1mdW5jdGlvbihlKXtyZXR1cm4icnNzIj09PWV8fCJmZWVkIj09PWV8fCJyZGY6UkRGIj09PWV9O3IucHJvdG90eXBlLm9uZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuPXt9LHI9YShwLHRoaXMuZG9tKTtyJiYoImZlZWQiPT09ci5uYW1lPyh0PXIuY2hpbGRyZW4sbi50eXBlPSJhdG9tIixzKG4sImlkIiwiaWQiLHQpLHMobiwidGl0bGUiLCJ0aXRsZSIsdCksKGU9YSgibGluayIsdCkpJiYoZT1lLmF0dHJpYnMpJiYoZT1lLmhyZWYpJiYobi5saW5rPWUpLHMobiwiZGVzY3JpcHRpb24iLCJzdWJ0aXRsZSIsdCksKGU9bygidXBkYXRlZCIsdCkpJiYobi51cGRhdGVkPW5ldyBEYXRlKGUpKSxzKG4sImF1dGhvciIsImVtYWlsIix0LCEwKSxuLml0ZW1zPWkoImVudHJ5Iix0KS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQsbj17fTtyZXR1cm4gZT1lLmNoaWxkcmVuLHMobiwiaWQiLCJpZCIsZSkscyhuLCJ0aXRsZSIsInRpdGxlIixlKSwodD1hKCJsaW5rIixlKSkmJih0PXQuYXR0cmlicykmJih0PXQuaHJlZikmJihuLmxpbms9dCksKHQ9bygic3VtbWFyeSIsZSl8fG8oImNvbnRlbnQiLGUpKSYmKG4uZGVzY3JpcHRpb249dCksKHQ9bygidXBkYXRlZCIsZSkpJiYobi5wdWJEYXRlPW5ldyBEYXRlKHQpKSxufSkpOih0PWEoImNoYW5uZWwiLHIuY2hpbGRyZW4pLmNoaWxkcmVuLG4udHlwZT1yLm5hbWUuc3Vic3RyKDAsMyksbi5pZD0iIixzKG4sInRpdGxlIiwidGl0bGUiLHQpLHMobiwibGluayIsImxpbmsiLHQpLHMobiwiZGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsdCksKGU9bygibGFzdEJ1aWxkRGF0ZSIsdCkpJiYobi51cGRhdGVkPW5ldyBEYXRlKGUpKSxzKG4sImF1dGhvciIsIm1hbmFnaW5nRWRpdG9yIix0LCEwKSxuLml0ZW1zPWkoIml0ZW0iLHIuY2hpbGRyZW4pLm1hcChmdW5jdGlvbihlKXt2YXIgdCxuPXt9O3JldHVybiBlPWUuY2hpbGRyZW4scyhuLCJpZCIsImd1aWQiLGUpLHMobiwidGl0bGUiLCJ0aXRsZSIsZSkscyhuLCJsaW5rIiwibGluayIsZSkscyhuLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIixlKSwodD1vKCJwdWJEYXRlIixlKSkmJihuLnB1YkRhdGU9bmV3IERhdGUodCkpLG59KSkpLHRoaXMuZG9tPW4sdS5wcm90b3R5cGUuX2hhbmRsZUNhbGxiYWNrLmNhbGwodGhpcyxyP251bGw6RXJyb3IoImNvdWxkbid0IGZpbmQgcm9vdCBvZiBmZWVkIikpfSx0LmV4cG9ydHM9cn0seyIuL2luZGV4LmpzIjozNixpbmhlcml0czozOH1dLDMxOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3RoaXMuX29wdGlvbnM9dHx8e30sdGhpcy5fY2JzPWV8fHt9LHRoaXMuX3RhZ25hbWU9IiIsdGhpcy5fYXR0cmlibmFtZT0iIix0aGlzLl9hdHRyaWJ2YWx1ZT0iIix0aGlzLl9hdHRyaWJzPW51bGwsdGhpcy5fc3RhY2s9W10sdGhpcy5zdGFydEluZGV4PTAsdGhpcy5lbmRJbmRleD1udWxsLHRoaXMuX2xvd2VyQ2FzZVRhZ05hbWVzPSJsb3dlckNhc2VUYWdzImluIHRoaXMuX29wdGlvbnM/ISF0aGlzLl9vcHRpb25zLmxvd2VyQ2FzZVRhZ3M6IXRoaXMuX29wdGlvbnMueG1sTW9kZSx0aGlzLl9sb3dlckNhc2VBdHRyaWJ1dGVOYW1lcz0ibG93ZXJDYXNlQXR0cmlidXRlTmFtZXMiaW4gdGhpcy5fb3B0aW9ucz8hIXRoaXMuX29wdGlvbnMubG93ZXJDYXNlQXR0cmlidXRlTmFtZXM6IXRoaXMuX29wdGlvbnMueG1sTW9kZSx0aGlzLl9vcHRpb25zLlRva2VuaXplciYmKGk9dGhpcy5fb3B0aW9ucy5Ub2tlbml6ZXIpLHRoaXMuX3Rva2VuaXplcj1uZXcgaSh0aGlzLl9vcHRpb25zLHRoaXMpLHRoaXMuX2Nicy5vbnBhcnNlcmluaXQmJnRoaXMuX2Nicy5vbnBhcnNlcmluaXQodGhpcyl9dmFyIGk9ZSgiLi9Ub2tlbml6ZXIuanMiKSxhPXtpbnB1dDohMCxvcHRpb246ITAsb3B0Z3JvdXA6ITAsc2VsZWN0OiEwLGJ1dHRvbjohMCxkYXRhbGlzdDohMCx0ZXh0YXJlYTohMH0sbz17dHI6e3RyOiEwLHRoOiEwLHRkOiEwfSx0aDp7dGg6ITB9LHRkOnt0aGVhZDohMCx0aDohMCx0ZDohMH0sYm9keTp7aGVhZDohMCxsaW5rOiEwLHNjcmlwdDohMH0sbGk6e2xpOiEwfSxwOntwOiEwfSxoMTp7cDohMH0saDI6e3A6ITB9LGgzOntwOiEwfSxoNDp7cDohMH0saDU6e3A6ITB9LGg2OntwOiEwfSxzZWxlY3Q6YSxpbnB1dDphLG91dHB1dDphLGJ1dHRvbjphLGRhdGFsaXN0OmEsdGV4dGFyZWE6YSxvcHRpb246e29wdGlvbjohMH0sb3B0Z3JvdXA6e29wdGdyb3VwOiEwfX0scz17X19wcm90b19fOm51bGwsYXJlYTohMCxiYXNlOiEwLGJhc2Vmb250OiEwLGJyOiEwLGNvbDohMCxjb21tYW5kOiEwLGVtYmVkOiEwLGZyYW1lOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxpc2luZGV4OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMCxwYXRoOiEwLGNpcmNsZTohMCxlbGxpcHNlOiEwLGxpbmU6ITAscmVjdDohMCx1c2U6ITAsc3RvcDohMCxwb2x5bGluZTohMCxwb2x5Z29uOiEwfSxsPS9cc3xcLy87ZSgiaW5oZXJpdHMiKShyLGUoImV2ZW50cyIpLkV2ZW50RW1pdHRlciksci5wcm90b3R5cGUuX3VwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKGUpe251bGw9PT10aGlzLmVuZEluZGV4P3RoaXMuX3Rva2VuaXplci5fc2VjdGlvblN0YXJ0PD1lP3RoaXMuc3RhcnRJbmRleD0wOnRoaXMuc3RhcnRJbmRleD10aGlzLl90b2tlbml6ZXIuX3NlY3Rpb25TdGFydC1lOnRoaXMuc3RhcnRJbmRleD10aGlzLmVuZEluZGV4KzEsdGhpcy5lbmRJbmRleD10aGlzLl90b2tlbml6ZXIuZ2V0QWJzb2x1dGVJbmRleCgpfSxyLnByb3RvdHlwZS5vbnRleHQ9ZnVuY3Rpb24oZSl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5lbmRJbmRleC0tLHRoaXMuX2Nicy5vbnRleHQmJnRoaXMuX2Nicy5vbnRleHQoZSl9LHIucHJvdG90eXBlLm9ub3BlbnRhZ25hbWU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJihlPWUudG9Mb3dlckNhc2UoKSksdGhpcy5fdGFnbmFtZT1lLCF0aGlzLl9vcHRpb25zLnhtbE1vZGUmJmUgaW4gbylmb3IodmFyIHQ7KHQ9dGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdKWluIG9bZV07dGhpcy5vbmNsb3NldGFnKHQpKTshdGhpcy5fb3B0aW9ucy54bWxNb2RlJiZlIGluIHN8fHRoaXMuX3N0YWNrLnB1c2goZSksdGhpcy5fY2JzLm9ub3BlbnRhZ25hbWUmJnRoaXMuX2Nicy5vbm9wZW50YWduYW1lKGUpLHRoaXMuX2Nicy5vbm9wZW50YWcmJih0aGlzLl9hdHRyaWJzPXt9KX0sci5wcm90b3R5cGUub25vcGVudGFnZW5kPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5fYXR0cmlicyYmKHRoaXMuX2Nicy5vbm9wZW50YWcmJnRoaXMuX2Nicy5vbm9wZW50YWcodGhpcy5fdGFnbmFtZSx0aGlzLl9hdHRyaWJzKSx0aGlzLl9hdHRyaWJzPW51bGwpLCF0aGlzLl9vcHRpb25zLnhtbE1vZGUmJnRoaXMuX2Nicy5vbmNsb3NldGFnJiZ0aGlzLl90YWduYW1lIGluIHMmJnRoaXMuX2Nicy5vbmNsb3NldGFnKHRoaXMuX3RhZ25hbWUpLHRoaXMuX3RhZ25hbWU9IiJ9LHIucHJvdG90eXBlLm9uY2xvc2V0YWc9ZnVuY3Rpb24oZSl7aWYodGhpcy5fdXBkYXRlUG9zaXRpb24oMSksdGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJihlPWUudG9Mb3dlckNhc2UoKSksIXRoaXMuX3N0YWNrLmxlbmd0aHx8ZSBpbiBzJiYhdGhpcy5fb3B0aW9ucy54bWxNb2RlKXRoaXMuX29wdGlvbnMueG1sTW9kZXx8ImJyIiE9PWUmJiJwIiE9PWV8fCh0aGlzLm9ub3BlbnRhZ25hbWUoZSksdGhpcy5fY2xvc2VDdXJyZW50VGFnKCkpO2Vsc2V7dmFyIHQ9dGhpcy5fc3RhY2subGFzdEluZGV4T2YoZSk7aWYodCE9PS0xKWlmKHRoaXMuX2Nicy5vbmNsb3NldGFnKWZvcih0PXRoaXMuX3N0YWNrLmxlbmd0aC10O3QtLTspdGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fc3RhY2sucG9wKCkpO2Vsc2UgdGhpcy5fc3RhY2subGVuZ3RoPXQ7ZWxzZSJwIiE9PWV8fHRoaXMuX29wdGlvbnMueG1sTW9kZXx8KHRoaXMub25vcGVudGFnbmFtZShlKSx0aGlzLl9jbG9zZUN1cnJlbnRUYWcoKSl9fSxyLnByb3RvdHlwZS5vbnNlbGZjbG9zaW5ndGFnPWZ1bmN0aW9uKCl7dGhpcy5fb3B0aW9ucy54bWxNb2RlfHx0aGlzLl9vcHRpb25zLnJlY29nbml6ZVNlbGZDbG9zaW5nP3RoaXMuX2Nsb3NlQ3VycmVudFRhZygpOnRoaXMub25vcGVudGFnZW5kKCl9LHIucHJvdG90eXBlLl9jbG9zZUN1cnJlbnRUYWc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90YWduYW1lO3RoaXMub25vcGVudGFnZW5kKCksdGhpcy5fc3RhY2tbdGhpcy5fc3RhY2subGVuZ3RoLTFdPT09ZSYmKHRoaXMuX2Nicy5vbmNsb3NldGFnJiZ0aGlzLl9jYnMub25jbG9zZXRhZyhlKSx0aGlzLl9zdGFjay5wb3AoKSl9LHIucHJvdG90eXBlLm9uYXR0cmlibmFtZT1mdW5jdGlvbihlKXt0aGlzLl9sb3dlckNhc2VBdHRyaWJ1dGVOYW1lcyYmKGU9ZS50b0xvd2VyQ2FzZSgpKSx0aGlzLl9hdHRyaWJuYW1lPWV9LHIucHJvdG90eXBlLm9uYXR0cmliZGF0YT1mdW5jdGlvbihlKXt0aGlzLl9hdHRyaWJ2YWx1ZSs9ZX0sci5wcm90b3R5cGUub25hdHRyaWJlbmQ9ZnVuY3Rpb24oKXt0aGlzLl9jYnMub25hdHRyaWJ1dGUmJnRoaXMuX2Nicy5vbmF0dHJpYnV0ZSh0aGlzLl9hdHRyaWJuYW1lLHRoaXMuX2F0dHJpYnZhbHVlKSx0aGlzLl9hdHRyaWJzJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX2F0dHJpYnMsdGhpcy5fYXR0cmlibmFtZSkmJih0aGlzLl9hdHRyaWJzW3RoaXMuX2F0dHJpYm5hbWVdPXRoaXMuX2F0dHJpYnZhbHVlKSx0aGlzLl9hdHRyaWJuYW1lPSIiLHRoaXMuX2F0dHJpYnZhbHVlPSIifSxyLnByb3RvdHlwZS5fZ2V0SW5zdHJ1Y3Rpb25OYW1lPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VhcmNoKGwpLG49dDwwP2U6ZS5zdWJzdHIoMCx0KTtyZXR1cm4gdGhpcy5fbG93ZXJDYXNlVGFnTmFtZXMmJihuPW4udG9Mb3dlckNhc2UoKSksbn0sci5wcm90b3R5cGUub25kZWNsYXJhdGlvbj1mdW5jdGlvbihlKXtpZih0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24pe3ZhciB0PXRoaXMuX2dldEluc3RydWN0aW9uTmFtZShlKTt0aGlzLl9jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24oIiEiK3QsIiEiK2UpfX0sci5wcm90b3R5cGUub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb249ZnVuY3Rpb24oZSl7aWYodGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKXt2YXIgdD10aGlzLl9nZXRJbnN0cnVjdGlvbk5hbWUoZSk7dGhpcy5fY2JzLm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKCI/Iit0LCI/IitlKX19LHIucHJvdG90eXBlLm9uY29tbWVudD1mdW5jdGlvbihlKXt0aGlzLl91cGRhdGVQb3NpdGlvbig0KSx0aGlzLl9jYnMub25jb21tZW50JiZ0aGlzLl9jYnMub25jb21tZW50KGUpLHRoaXMuX2Nicy5vbmNvbW1lbnRlbmQmJnRoaXMuX2Nicy5vbmNvbW1lbnRlbmQoKX0sci5wcm90b3R5cGUub25jZGF0YT1mdW5jdGlvbihlKXt0aGlzLl91cGRhdGVQb3NpdGlvbigxKSx0aGlzLl9vcHRpb25zLnhtbE1vZGV8fHRoaXMuX29wdGlvbnMucmVjb2duaXplQ0RBVEE/KHRoaXMuX2Nicy5vbmNkYXRhc3RhcnQmJnRoaXMuX2Nicy5vbmNkYXRhc3RhcnQoKSx0aGlzLl9jYnMub250ZXh0JiZ0aGlzLl9jYnMub250ZXh0KGUpLHRoaXMuX2Nicy5vbmNkYXRhZW5kJiZ0aGlzLl9jYnMub25jZGF0YWVuZCgpKTp0aGlzLm9uY29tbWVudCgiW0NEQVRBWyIrZSsiXV0iKX0sci5wcm90b3R5cGUub25lcnJvcj1mdW5jdGlvbihlKXt0aGlzLl9jYnMub25lcnJvciYmdGhpcy5fY2JzLm9uZXJyb3IoZSl9LHIucHJvdG90eXBlLm9uZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy5fY2JzLm9uY2xvc2V0YWcpZm9yKHZhciBlPXRoaXMuX3N0YWNrLmxlbmd0aDtlPjA7dGhpcy5fY2JzLm9uY2xvc2V0YWcodGhpcy5fc3RhY2tbLS1lXSkpO3RoaXMuX2Nicy5vbmVuZCYmdGhpcy5fY2JzLm9uZW5kKCl9LHIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5fY2JzLm9ucmVzZXQmJnRoaXMuX2Nicy5vbnJlc2V0KCksdGhpcy5fdG9rZW5pemVyLnJlc2V0KCksdGhpcy5fdGFnbmFtZT0iIix0aGlzLl9hdHRyaWJuYW1lPSIiLHRoaXMuX2F0dHJpYnM9bnVsbCx0aGlzLl9zdGFjaz1bXSx0aGlzLl9jYnMub25wYXJzZXJpbml0JiZ0aGlzLl9jYnMub25wYXJzZXJpbml0KHRoaXMpfSxyLnByb3RvdHlwZS5wYXJzZUNvbXBsZXRlPWZ1bmN0aW9uKGUpe3RoaXMucmVzZXQoKSx0aGlzLmVuZChlKX0sci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5fdG9rZW5pemVyLndyaXRlKGUpfSxyLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSl7dGhpcy5fdG9rZW5pemVyLmVuZChlKX0sci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt0aGlzLl90b2tlbml6ZXIucGF1c2UoKX0sci5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dGhpcy5fdG9rZW5pemVyLnJlc3VtZSgpfSxyLnByb3RvdHlwZS5wYXJzZUNodW5rPXIucHJvdG90eXBlLndyaXRlLHIucHJvdG90eXBlLmRvbmU9ci5wcm90b3R5cGUuZW5kLHQuZXhwb3J0cz1yfSx7Ii4vVG9rZW5pemVyLmpzIjozNCxldmVudHM6MjgsaW5oZXJpdHM6Mzh9XSwzMjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dGhpcy5fY2JzPWV8fHt9fXQuZXhwb3J0cz1yO3ZhciBpPWUoIi4vIikuRVZFTlRTO09iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoMD09PWlbZV0pZT0ib24iK2Usci5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXt0aGlzLl9jYnNbZV0mJnRoaXMuX2Nic1tlXSgpfTtlbHNlIGlmKDE9PT1pW2VdKWU9Im9uIitlLHIucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQpe3RoaXMuX2Nic1tlXSYmdGhpcy5fY2JzW2VdKHQpfTtlbHNle2lmKDIhPT1pW2VdKXRocm93IEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIik7ZT0ib24iK2Usci5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxuKXt0aGlzLl9jYnNbZV0mJnRoaXMuX2Nic1tlXSh0LG4pfX19KX0seyIuLyI6MzZ9XSwzMzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7YS5jYWxsKHRoaXMsbmV3IGkodGhpcyksZSl9ZnVuY3Rpb24gaShlKXt0aGlzLnNjb3BlPWV9dC5leHBvcnRzPXI7dmFyIGE9ZSgiLi9Xcml0YWJsZVN0cmVhbS5qcyIpO2UoImluaGVyaXRzIikocixhKSxyLnByb3RvdHlwZS5yZWFkYWJsZT0hMDt2YXIgbz1lKCIuLi8iKS5FVkVOVFM7T2JqZWN0LmtleXMobykuZm9yRWFjaChmdW5jdGlvbihlKXtpZigwPT09b1tlXSlpLnByb3RvdHlwZVsib24iK2VdPWZ1bmN0aW9uKCl7dGhpcy5zY29wZS5lbWl0KGUpfTtlbHNlIGlmKDE9PT1vW2VdKWkucHJvdG90eXBlWyJvbiIrZV09ZnVuY3Rpb24odCl7dGhpcy5zY29wZS5lbWl0KGUsdCl9O2Vsc2V7aWYoMiE9PW9bZV0pdGhyb3cgRXJyb3IoIndyb25nIG51bWJlciBvZiBhcmd1bWVudHMhIik7aS5wcm90b3R5cGVbIm9uIitlXT1mdW5jdGlvbih0LG4pe3RoaXMuc2NvcGUuZW1pdChlLHQsbil9fX0pfSx7Ii4uLyI6MzYsIi4vV3JpdGFibGVTdHJlYW0uanMiOjM1LGluaGVyaXRzOjM4fV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIj09PWV8fCJcbiI9PT1lfHwiXHQiPT09ZXx8IlxmIj09PWV8fCJcciI9PT1lfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7bj09PWUmJih0aGlzLl9zdGF0ZT10KX19ZnVuY3Rpb24gYShlLHQsbil7dmFyIHI9ZS50b0xvd2VyQ2FzZSgpO3JldHVybiBlPT09cj9mdW5jdGlvbihlKXtlPT09cj90aGlzLl9zdGF0ZT10Oih0aGlzLl9zdGF0ZT1uLHRoaXMuX2luZGV4LS0pfTpmdW5jdGlvbihpKXtpPT09cnx8aT09PWU/dGhpcy5fc3RhdGU9dDoodGhpcy5fc3RhdGU9bix0aGlzLl9pbmRleC0tKX19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gZnVuY3Rpb24ocil7cj09PW58fHI9PT1lP3RoaXMuX3N0YXRlPXQ6KHRoaXMuX3N0YXRlPW0sdGhpcy5faW5kZXgtLSl9fWZ1bmN0aW9uIHMoZSx0KXt0aGlzLl9zdGF0ZT1mLHRoaXMuX2J1ZmZlcj0iIix0aGlzLl9zZWN0aW9uU3RhcnQ9MCx0aGlzLl9pbmRleD0wLHRoaXMuX2J1ZmZlck9mZnNldD0wLHRoaXMuX2Jhc2VTdGF0ZT1mLHRoaXMuX3NwZWNpYWw9bWUsdGhpcy5fY2JzPXQsdGhpcy5fcnVubmluZz0hMCx0aGlzLl9lbmRlZD0hMSx0aGlzLl94bWxNb2RlPSEoIWV8fCFlLnhtbE1vZGUpLHRoaXMuX2RlY29kZUVudGl0aWVzPSEoIWV8fCFlLmRlY29kZUVudGl0aWVzKX10LmV4cG9ydHM9czt2YXIgbD1lKCJlbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC5qcyIpLHU9ZSgiZW50aXRpZXMvbWFwcy9lbnRpdGllcy5qc29uIiksYz1lKCJlbnRpdGllcy9tYXBzL2xlZ2FjeS5qc29uIikscD1lKCJlbnRpdGllcy9tYXBzL3htbC5qc29uIiksaD0wLGY9aCsrLGQ9aCsrLG09aCsrLGc9aCsrLHk9aCsrLHY9aCsrLGI9aCsrLHc9aCsrLF89aCsrLHg9aCsrLEE9aCsrLFM9aCsrLGo9aCsrLEU9aCsrLE89aCsrLGs9aCsrLFQ9aCsrLEM9aCsrLEk9aCsrLEQ9aCsrLEw9aCsrLE09aCsrLFI9aCsrLFU9aCsrLFA9aCsrLHE9aCsrLEI9aCsrLHo9aCsrLE49aCsrLCQ9aCsrLEY9aCsrLFY9aCsrLEg9aCsrLFk9aCsrLEo9aCsrLFc9aCsrLFE9aCsrLEc9aCsrLEs9aCsrLFg9aCsrLFo9aCsrLGVlPWgrKyx0ZT1oKyssbmU9aCsrLHJlPWgrKyxpZT1oKyssYWU9aCsrLG9lPWgrKyxzZT1oKyssbGU9aCsrLHVlPWgrKyxjZT1oKysscGU9aCsrLGhlPWgrKyxmZT1oKyssZGU9MCxtZT1kZSsrLGdlPWRlKysseWU9ZGUrKztzLnByb3RvdHlwZS5fc3RhdGVUZXh0PWZ1bmN0aW9uKGUpeyI8Ij09PWU/KHRoaXMuX2luZGV4PnRoaXMuX3NlY3Rpb25TdGFydCYmdGhpcy5fY2JzLm9udGV4dCh0aGlzLl9nZXRTZWN0aW9uKCkpLHRoaXMuX3N0YXRlPWQsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmdGhpcy5fc3BlY2lhbD09PW1lJiYiJiI9PT1lJiYodGhpcy5faW5kZXg+dGhpcy5fc2VjdGlvblN0YXJ0JiZ0aGlzLl9jYnMub250ZXh0KHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fYmFzZVN0YXRlPWYsdGhpcy5fc3RhdGU9dWUsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KX0scy5wcm90b3R5cGUuX3N0YXRlQmVmb3JlVGFnTmFtZT1mdW5jdGlvbihlKXsiLyI9PT1lP3RoaXMuX3N0YXRlPXk6IjwiPT09ZT8odGhpcy5fY2JzLm9udGV4dCh0aGlzLl9nZXRTZWN0aW9uKCkpLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCk6Ij4iPT09ZXx8dGhpcy5fc3BlY2lhbCE9PW1lfHxyKGUpP3RoaXMuX3N0YXRlPWY6IiEiPT09ZT8odGhpcy5fc3RhdGU9Tyx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6Ij8iPT09ZT8odGhpcy5fc3RhdGU9VCx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6KHRoaXMuX3N0YXRlPXRoaXMuX3htbE1vZGV8fCJzIiE9PWUmJiJTIiE9PWU/bTpGLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LHMucHJvdG90eXBlLl9zdGF0ZUluVGFnTmFtZT1mdW5jdGlvbihlKXsoIi8iPT09ZXx8Ij4iPT09ZXx8cihlKSkmJih0aGlzLl9lbWl0VG9rZW4oIm9ub3BlbnRhZ25hbWUiKSx0aGlzLl9zdGF0ZT13LHRoaXMuX2luZGV4LS0pfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDbG9zZWluZ1RhZ05hbWU9ZnVuY3Rpb24oZSl7cihlKXx8KCI+Ij09PWU/dGhpcy5fc3RhdGU9Zjp0aGlzLl9zcGVjaWFsIT09bWU/InMiPT09ZXx8IlMiPT09ZT90aGlzLl9zdGF0ZT1WOih0aGlzLl9zdGF0ZT1mLHRoaXMuX2luZGV4LS0pOih0aGlzLl9zdGF0ZT12LHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCkpfSxzLnByb3RvdHlwZS5fc3RhdGVJbkNsb3NlaW5nVGFnTmFtZT1mdW5jdGlvbihlKXsoIj4iPT09ZXx8cihlKSkmJih0aGlzLl9lbWl0VG9rZW4oIm9uY2xvc2V0YWciKSx0aGlzLl9zdGF0ZT1iLHRoaXMuX2luZGV4LS0pfSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlckNsb3NlaW5nVGFnTmFtZT1mdW5jdGlvbihlKXsiPiI9PT1lJiYodGhpcy5fc3RhdGU9Zix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSl9LHMucHJvdG90eXBlLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZU5hbWU9ZnVuY3Rpb24oZSl7Ij4iPT09ZT8odGhpcy5fY2JzLm9ub3BlbnRhZ2VuZCgpLHRoaXMuX3N0YXRlPWYsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOiIvIj09PWU/dGhpcy5fc3RhdGU9ZzpyKGUpfHwodGhpcy5fc3RhdGU9Xyx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxzLnByb3RvdHlwZS5fc3RhdGVJblNlbGZDbG9zaW5nVGFnPWZ1bmN0aW9uKGUpeyI+Ij09PWU/KHRoaXMuX2Nicy5vbnNlbGZjbG9zaW5ndGFnKCksdGhpcy5fc3RhdGU9Zix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6cihlKXx8KHRoaXMuX3N0YXRlPXcsdGhpcy5faW5kZXgtLSl9LHMucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlTmFtZT1mdW5jdGlvbihlKXsoIj0iPT09ZXx8Ii8iPT09ZXx8Ij4iPT09ZXx8cihlKSkmJih0aGlzLl9jYnMub25hdHRyaWJuYW1lKHRoaXMuX2dldFNlY3Rpb24oKSksdGhpcy5fc2VjdGlvblN0YXJ0PS0xLHRoaXMuX3N0YXRlPXgsdGhpcy5faW5kZXgtLSl9LHMucHJvdG90eXBlLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZT1mdW5jdGlvbihlKXsiPSI9PT1lP3RoaXMuX3N0YXRlPUE6Ii8iPT09ZXx8Ij4iPT09ZT8odGhpcy5fY2JzLm9uYXR0cmliZW5kKCksdGhpcy5fc3RhdGU9dyx0aGlzLl9pbmRleC0tKTpyKGUpfHwodGhpcy5fY2JzLm9uYXR0cmliZW5kKCksdGhpcy5fc3RhdGU9Xyx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVWYWx1ZT1mdW5jdGlvbihlKXsnIic9PT1lPyh0aGlzLl9zdGF0ZT1TLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKToiJyI9PT1lPyh0aGlzLl9zdGF0ZT1qLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKTpyKGUpfHwodGhpcy5fc3RhdGU9RSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgsdGhpcy5faW5kZXgtLSl9LHMucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZXM9ZnVuY3Rpb24oZSl7JyInPT09ZT8odGhpcy5fZW1pdFRva2VuKCJvbmF0dHJpYmRhdGEiKSx0aGlzLl9jYnMub25hdHRyaWJlbmQoKSx0aGlzLl9zdGF0ZT13KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmIiYiPT09ZSYmKHRoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIiksdGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlLHRoaXMuX3N0YXRlPXVlLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LHMucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZXM9ZnVuY3Rpb24oZSl7IiciPT09ZT8odGhpcy5fZW1pdFRva2VuKCJvbmF0dHJpYmRhdGEiKSx0aGlzLl9jYnMub25hdHRyaWJlbmQoKSx0aGlzLl9zdGF0ZT13KTp0aGlzLl9kZWNvZGVFbnRpdGllcyYmIiYiPT09ZSYmKHRoaXMuX2VtaXRUb2tlbigib25hdHRyaWJkYXRhIiksdGhpcy5fYmFzZVN0YXRlPXRoaXMuX3N0YXRlLHRoaXMuX3N0YXRlPXVlLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCl9LHMucHJvdG90eXBlLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVOb1F1b3Rlcz1mdW5jdGlvbihlKXtyKGUpfHwiPiI9PT1lPyh0aGlzLl9lbWl0VG9rZW4oIm9uYXR0cmliZGF0YSIpLHRoaXMuX2Nicy5vbmF0dHJpYmVuZCgpLHRoaXMuX3N0YXRlPXcsdGhpcy5faW5kZXgtLSk6dGhpcy5fZGVjb2RlRW50aXRpZXMmJiImIj09PWUmJih0aGlzLl9lbWl0VG9rZW4oIm9uYXR0cmliZGF0YSIpLHRoaXMuX2Jhc2VTdGF0ZT10aGlzLl9zdGF0ZSx0aGlzLl9zdGF0ZT11ZSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgpfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVEZWNsYXJhdGlvbj1mdW5jdGlvbihlKXt0aGlzLl9zdGF0ZT0iWyI9PT1lP006Ii0iPT09ZT9DOmt9LHMucHJvdG90eXBlLl9zdGF0ZUluRGVjbGFyYXRpb249ZnVuY3Rpb24oZSl7CisiPiI9PT1lJiYodGhpcy5fY2JzLm9uZGVjbGFyYXRpb24odGhpcy5fZ2V0U2VjdGlvbigpKSx0aGlzLl9zdGF0ZT1mLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleCsxKX0scy5wcm90b3R5cGUuX3N0YXRlSW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb249ZnVuY3Rpb24oZSl7Ij4iPT09ZSYmKHRoaXMuX2Nicy5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbih0aGlzLl9nZXRTZWN0aW9uKCkpLHRoaXMuX3N0YXRlPWYsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDb21tZW50PWZ1bmN0aW9uKGUpeyItIj09PWU/KHRoaXMuX3N0YXRlPUksdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4KzEpOnRoaXMuX3N0YXRlPWt9LHMucHJvdG90eXBlLl9zdGF0ZUluQ29tbWVudD1mdW5jdGlvbihlKXsiLSI9PT1lJiYodGhpcy5fc3RhdGU9RCl9LHMucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ29tbWVudDE9ZnVuY3Rpb24oZSl7Ii0iPT09ZT90aGlzLl9zdGF0ZT1MOnRoaXMuX3N0YXRlPUl9LHMucHJvdG90eXBlLl9zdGF0ZUFmdGVyQ29tbWVudDI9ZnVuY3Rpb24oZSl7Ij4iPT09ZT8odGhpcy5fY2JzLm9uY29tbWVudCh0aGlzLl9idWZmZXIuc3Vic3RyaW5nKHRoaXMuX3NlY3Rpb25TdGFydCx0aGlzLl9pbmRleC0yKSksdGhpcy5fc3RhdGU9Zix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6Ii0iIT09ZSYmKHRoaXMuX3N0YXRlPUkpfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTE9YSgiQyIsUixrKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTI9YSgiRCIsVSxrKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTM9YSgiQSIsUCxrKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTQ9YSgiVCIscSxrKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTU9YSgiQSIsQixrKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVDZGF0YTY9ZnVuY3Rpb24oZSl7IlsiPT09ZT8odGhpcy5fc3RhdGU9eix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6KHRoaXMuX3N0YXRlPWssdGhpcy5faW5kZXgtLSl9LHMucHJvdG90eXBlLl9zdGF0ZUluQ2RhdGE9ZnVuY3Rpb24oZSl7Il0iPT09ZSYmKHRoaXMuX3N0YXRlPU4pfSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlckNkYXRhMT1pKCJdIiwkKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlckNkYXRhMj1mdW5jdGlvbihlKXsiPiI9PT1lPyh0aGlzLl9jYnMub25jZGF0YSh0aGlzLl9idWZmZXIuc3Vic3RyaW5nKHRoaXMuX3NlY3Rpb25TdGFydCx0aGlzLl9pbmRleC0yKSksdGhpcy5fc3RhdGU9Zix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSk6Il0iIT09ZSYmKHRoaXMuX3N0YXRlPXopfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTcGVjaWFsPWZ1bmN0aW9uKGUpeyJjIj09PWV8fCJDIj09PWU/dGhpcy5fc3RhdGU9SDoidCI9PT1lfHwiVCI9PT1lP3RoaXMuX3N0YXRlPXRlOih0aGlzLl9zdGF0ZT1tLHRoaXMuX2luZGV4LS0pfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTcGVjaWFsRW5kPWZ1bmN0aW9uKGUpe3RoaXMuX3NwZWNpYWwhPT1nZXx8ImMiIT09ZSYmIkMiIT09ZT90aGlzLl9zcGVjaWFsIT09eWV8fCJ0IiE9PWUmJiJUIiE9PWU/dGhpcy5fc3RhdGU9Zjp0aGlzLl9zdGF0ZT1hZTp0aGlzLl9zdGF0ZT1HfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTY3JpcHQxPW8oIlIiLFkpLHMucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDI9bygiSSIsSikscy5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU2NyaXB0Mz1vKCJQIixXKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTY3JpcHQ0PW8oIlQiLFEpLHMucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVNjcmlwdDU9ZnVuY3Rpb24oZSl7KCIvIj09PWV8fCI+Ij09PWV8fHIoZSkpJiYodGhpcy5fc3BlY2lhbD1nZSksdGhpcy5fc3RhdGU9bSx0aGlzLl9pbmRleC0tfSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDE9YSgiUiIsSyxmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDI9YSgiSSIsWCxmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDM9YSgiUCIsWixmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclNjcmlwdDQ9YSgiVCIsZWUsZikscy5wcm90b3R5cGUuX3N0YXRlQWZ0ZXJTY3JpcHQ1PWZ1bmN0aW9uKGUpeyI+Ij09PWV8fHIoZSk/KHRoaXMuX3NwZWNpYWw9bWUsdGhpcy5fc3RhdGU9dix0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgtNix0aGlzLl9pbmRleC0tKTp0aGlzLl9zdGF0ZT1mfSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTdHlsZTE9bygiWSIsbmUpLHMucHJvdG90eXBlLl9zdGF0ZUJlZm9yZVN0eWxlMj1vKCJMIixyZSkscy5wcm90b3R5cGUuX3N0YXRlQmVmb3JlU3R5bGUzPW8oIkUiLGllKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVTdHlsZTQ9ZnVuY3Rpb24oZSl7KCIvIj09PWV8fCI+Ij09PWV8fHIoZSkpJiYodGhpcy5fc3BlY2lhbD15ZSksdGhpcy5fc3RhdGU9bSx0aGlzLl9pbmRleC0tfSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclN0eWxlMT1hKCJZIixvZSxmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclN0eWxlMj1hKCJMIixzZSxmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclN0eWxlMz1hKCJFIixsZSxmKSxzLnByb3RvdHlwZS5fc3RhdGVBZnRlclN0eWxlND1mdW5jdGlvbihlKXsiPiI9PT1lfHxyKGUpPyh0aGlzLl9zcGVjaWFsPW1lLHRoaXMuX3N0YXRlPXYsdGhpcy5fc2VjdGlvblN0YXJ0PXRoaXMuX2luZGV4LTUsdGhpcy5faW5kZXgtLSk6dGhpcy5fc3RhdGU9Zn0scy5wcm90b3R5cGUuX3N0YXRlQmVmb3JlRW50aXR5PWEoIiMiLGNlLHBlKSxzLnByb3RvdHlwZS5fc3RhdGVCZWZvcmVOdW1lcmljRW50aXR5PWEoIlgiLGZlLGhlKSxzLnByb3RvdHlwZS5fcGFyc2VOYW1lZEVudGl0eVN0cmljdD1mdW5jdGlvbigpe2lmKHRoaXMuX3NlY3Rpb25TdGFydCsxPHRoaXMuX2luZGV4KXt2YXIgZT10aGlzLl9idWZmZXIuc3Vic3RyaW5nKHRoaXMuX3NlY3Rpb25TdGFydCsxLHRoaXMuX2luZGV4KSx0PXRoaXMuX3htbE1vZGU/cDp1O3QuaGFzT3duUHJvcGVydHkoZSkmJih0aGlzLl9lbWl0UGFydGlhbCh0W2VdKSx0aGlzLl9zZWN0aW9uU3RhcnQ9dGhpcy5faW5kZXgrMSl9fSxzLnByb3RvdHlwZS5fcGFyc2VMZWdhY3lFbnRpdHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9zZWN0aW9uU3RhcnQrMSx0PXRoaXMuX2luZGV4LWU7Zm9yKHQ+NiYmKHQ9Nik7dD49Mjspe3ZhciBuPXRoaXMuX2J1ZmZlci5zdWJzdHIoZSx0KTtpZihjLmhhc093blByb3BlcnR5KG4pKXJldHVybiB0aGlzLl9lbWl0UGFydGlhbChjW25dKSx2b2lkKHRoaXMuX3NlY3Rpb25TdGFydCs9dCsxKTt0LS19fSxzLnByb3RvdHlwZS5fc3RhdGVJbk5hbWVkRW50aXR5PWZ1bmN0aW9uKGUpeyI7Ij09PWU/KHRoaXMuX3BhcnNlTmFtZWRFbnRpdHlTdHJpY3QoKSx0aGlzLl9zZWN0aW9uU3RhcnQrMTx0aGlzLl9pbmRleCYmIXRoaXMuX3htbE1vZGUmJnRoaXMuX3BhcnNlTGVnYWN5RW50aXR5KCksdGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlKTooZTwiYSJ8fGU+InoiKSYmKGU8IkEifHxlPiJaIikmJihlPCIwInx8ZT4iOSIpJiYodGhpcy5feG1sTW9kZXx8dGhpcy5fc2VjdGlvblN0YXJ0KzE9PT10aGlzLl9pbmRleHx8KHRoaXMuX2Jhc2VTdGF0ZSE9PWY/Ij0iIT09ZSYmdGhpcy5fcGFyc2VOYW1lZEVudGl0eVN0cmljdCgpOnRoaXMuX3BhcnNlTGVnYWN5RW50aXR5KCkpLHRoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZSx0aGlzLl9pbmRleC0tKX0scy5wcm90b3R5cGUuX2RlY29kZU51bWVyaWNFbnRpdHk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9zZWN0aW9uU3RhcnQrZTtpZihuIT09dGhpcy5faW5kZXgpe3ZhciByPXRoaXMuX2J1ZmZlci5zdWJzdHJpbmcobix0aGlzLl9pbmRleCksaT1wYXJzZUludChyLHQpO3RoaXMuX2VtaXRQYXJ0aWFsKGwoaSkpLHRoaXMuX3NlY3Rpb25TdGFydD10aGlzLl9pbmRleH1lbHNlIHRoaXMuX3NlY3Rpb25TdGFydC0tO3RoaXMuX3N0YXRlPXRoaXMuX2Jhc2VTdGF0ZX0scy5wcm90b3R5cGUuX3N0YXRlSW5OdW1lcmljRW50aXR5PWZ1bmN0aW9uKGUpeyI7Ij09PWU/KHRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMiwxMCksdGhpcy5fc2VjdGlvblN0YXJ0KyspOihlPCIwInx8ZT4iOSIpJiYodGhpcy5feG1sTW9kZT90aGlzLl9zdGF0ZT10aGlzLl9iYXNlU3RhdGU6dGhpcy5fZGVjb2RlTnVtZXJpY0VudGl0eSgyLDEwKSx0aGlzLl9pbmRleC0tKX0scy5wcm90b3R5cGUuX3N0YXRlSW5IZXhFbnRpdHk9ZnVuY3Rpb24oZSl7IjsiPT09ZT8odGhpcy5fZGVjb2RlTnVtZXJpY0VudGl0eSgzLDE2KSx0aGlzLl9zZWN0aW9uU3RhcnQrKyk6KGU8ImEifHxlPiJmIikmJihlPCJBInx8ZT4iRiIpJiYoZTwiMCJ8fGU+IjkiKSYmKHRoaXMuX3htbE1vZGU/dGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlOnRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMywxNiksdGhpcy5faW5kZXgtLSl9LHMucHJvdG90eXBlLl9jbGVhbnVwPWZ1bmN0aW9uKCl7dGhpcy5fc2VjdGlvblN0YXJ0PDA/KHRoaXMuX2J1ZmZlcj0iIix0aGlzLl9pbmRleD0wLHRoaXMuX2J1ZmZlck9mZnNldCs9dGhpcy5faW5kZXgpOnRoaXMuX3J1bm5pbmcmJih0aGlzLl9zdGF0ZT09PWY/KHRoaXMuX3NlY3Rpb25TdGFydCE9PXRoaXMuX2luZGV4JiZ0aGlzLl9jYnMub250ZXh0KHRoaXMuX2J1ZmZlci5zdWJzdHIodGhpcy5fc2VjdGlvblN0YXJ0KSksdGhpcy5fYnVmZmVyPSIiLHRoaXMuX2J1ZmZlck9mZnNldCs9dGhpcy5faW5kZXgsdGhpcy5faW5kZXg9MCk6dGhpcy5fc2VjdGlvblN0YXJ0PT09dGhpcy5faW5kZXg/KHRoaXMuX2J1ZmZlcj0iIix0aGlzLl9idWZmZXJPZmZzZXQrPXRoaXMuX2luZGV4LHRoaXMuX2luZGV4PTApOih0aGlzLl9idWZmZXI9dGhpcy5fYnVmZmVyLnN1YnN0cih0aGlzLl9zZWN0aW9uU3RhcnQpLHRoaXMuX2luZGV4LT10aGlzLl9zZWN0aW9uU3RhcnQsdGhpcy5fYnVmZmVyT2Zmc2V0Kz10aGlzLl9zZWN0aW9uU3RhcnQpLHRoaXMuX3NlY3Rpb25TdGFydD0wKX0scy5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSl7dGhpcy5fZW5kZWQmJnRoaXMuX2Nicy5vbmVycm9yKEVycm9yKCIud3JpdGUoKSBhZnRlciBkb25lISIpKSx0aGlzLl9idWZmZXIrPWUsdGhpcy5fcGFyc2UoKX0scy5wcm90b3R5cGUuX3BhcnNlPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9pbmRleDx0aGlzLl9idWZmZXIubGVuZ3RoJiZ0aGlzLl9ydW5uaW5nOyl7dmFyIGU9dGhpcy5fYnVmZmVyLmNoYXJBdCh0aGlzLl9pbmRleCk7dGhpcy5fc3RhdGU9PT1mP3RoaXMuX3N0YXRlVGV4dChlKTp0aGlzLl9zdGF0ZT09PWQ/dGhpcy5fc3RhdGVCZWZvcmVUYWdOYW1lKGUpOnRoaXMuX3N0YXRlPT09bT90aGlzLl9zdGF0ZUluVGFnTmFtZShlKTp0aGlzLl9zdGF0ZT09PXk/dGhpcy5fc3RhdGVCZWZvcmVDbG9zZWluZ1RhZ05hbWUoZSk6dGhpcy5fc3RhdGU9PT12P3RoaXMuX3N0YXRlSW5DbG9zZWluZ1RhZ05hbWUoZSk6dGhpcy5fc3RhdGU9PT1iP3RoaXMuX3N0YXRlQWZ0ZXJDbG9zZWluZ1RhZ05hbWUoZSk6dGhpcy5fc3RhdGU9PT1nP3RoaXMuX3N0YXRlSW5TZWxmQ2xvc2luZ1RhZyhlKTp0aGlzLl9zdGF0ZT09PXc/dGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGUpOnRoaXMuX3N0YXRlPT09Xz90aGlzLl9zdGF0ZUluQXR0cmlidXRlTmFtZShlKTp0aGlzLl9zdGF0ZT09PXg/dGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZU5hbWUoZSk6dGhpcy5fc3RhdGU9PT1BP3RoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoZSk6dGhpcy5fc3RhdGU9PT1TP3RoaXMuX3N0YXRlSW5BdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlcyhlKTp0aGlzLl9zdGF0ZT09PWo/dGhpcy5fc3RhdGVJbkF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVzKGUpOnRoaXMuX3N0YXRlPT09RT90aGlzLl9zdGF0ZUluQXR0cmlidXRlVmFsdWVOb1F1b3RlcyhlKTp0aGlzLl9zdGF0ZT09PU8/dGhpcy5fc3RhdGVCZWZvcmVEZWNsYXJhdGlvbihlKTp0aGlzLl9zdGF0ZT09PWs/dGhpcy5fc3RhdGVJbkRlY2xhcmF0aW9uKGUpOnRoaXMuX3N0YXRlPT09VD90aGlzLl9zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUpOnRoaXMuX3N0YXRlPT09Qz90aGlzLl9zdGF0ZUJlZm9yZUNvbW1lbnQoZSk6dGhpcy5fc3RhdGU9PT1JP3RoaXMuX3N0YXRlSW5Db21tZW50KGUpOnRoaXMuX3N0YXRlPT09RD90aGlzLl9zdGF0ZUFmdGVyQ29tbWVudDEoZSk6dGhpcy5fc3RhdGU9PT1MP3RoaXMuX3N0YXRlQWZ0ZXJDb21tZW50MihlKTp0aGlzLl9zdGF0ZT09PU0/dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTEoZSk6dGhpcy5fc3RhdGU9PT1SP3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGEyKGUpOnRoaXMuX3N0YXRlPT09VT90aGlzLl9zdGF0ZUJlZm9yZUNkYXRhMyhlKTp0aGlzLl9zdGF0ZT09PVA/dGhpcy5fc3RhdGVCZWZvcmVDZGF0YTQoZSk6dGhpcy5fc3RhdGU9PT1xP3RoaXMuX3N0YXRlQmVmb3JlQ2RhdGE1KGUpOnRoaXMuX3N0YXRlPT09Qj90aGlzLl9zdGF0ZUJlZm9yZUNkYXRhNihlKTp0aGlzLl9zdGF0ZT09PXo/dGhpcy5fc3RhdGVJbkNkYXRhKGUpOnRoaXMuX3N0YXRlPT09Tj90aGlzLl9zdGF0ZUFmdGVyQ2RhdGExKGUpOnRoaXMuX3N0YXRlPT09JD90aGlzLl9zdGF0ZUFmdGVyQ2RhdGEyKGUpOnRoaXMuX3N0YXRlPT09Rj90aGlzLl9zdGF0ZUJlZm9yZVNwZWNpYWwoZSk6dGhpcy5fc3RhdGU9PT1WP3RoaXMuX3N0YXRlQmVmb3JlU3BlY2lhbEVuZChlKTp0aGlzLl9zdGF0ZT09PUg/dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQxKGUpOnRoaXMuX3N0YXRlPT09WT90aGlzLl9zdGF0ZUJlZm9yZVNjcmlwdDIoZSk6dGhpcy5fc3RhdGU9PT1KP3RoaXMuX3N0YXRlQmVmb3JlU2NyaXB0MyhlKTp0aGlzLl9zdGF0ZT09PVc/dGhpcy5fc3RhdGVCZWZvcmVTY3JpcHQ0KGUpOnRoaXMuX3N0YXRlPT09UT90aGlzLl9zdGF0ZUJlZm9yZVNjcmlwdDUoZSk6dGhpcy5fc3RhdGU9PT1HP3RoaXMuX3N0YXRlQWZ0ZXJTY3JpcHQxKGUpOnRoaXMuX3N0YXRlPT09Sz90aGlzLl9zdGF0ZUFmdGVyU2NyaXB0MihlKTp0aGlzLl9zdGF0ZT09PVg/dGhpcy5fc3RhdGVBZnRlclNjcmlwdDMoZSk6dGhpcy5fc3RhdGU9PT1aP3RoaXMuX3N0YXRlQWZ0ZXJTY3JpcHQ0KGUpOnRoaXMuX3N0YXRlPT09ZWU/dGhpcy5fc3RhdGVBZnRlclNjcmlwdDUoZSk6dGhpcy5fc3RhdGU9PT10ZT90aGlzLl9zdGF0ZUJlZm9yZVN0eWxlMShlKTp0aGlzLl9zdGF0ZT09PW5lP3RoaXMuX3N0YXRlQmVmb3JlU3R5bGUyKGUpOnRoaXMuX3N0YXRlPT09cmU/dGhpcy5fc3RhdGVCZWZvcmVTdHlsZTMoZSk6dGhpcy5fc3RhdGU9PT1pZT90aGlzLl9zdGF0ZUJlZm9yZVN0eWxlNChlKTp0aGlzLl9zdGF0ZT09PWFlP3RoaXMuX3N0YXRlQWZ0ZXJTdHlsZTEoZSk6dGhpcy5fc3RhdGU9PT1vZT90aGlzLl9zdGF0ZUFmdGVyU3R5bGUyKGUpOnRoaXMuX3N0YXRlPT09c2U/dGhpcy5fc3RhdGVBZnRlclN0eWxlMyhlKTp0aGlzLl9zdGF0ZT09PWxlP3RoaXMuX3N0YXRlQWZ0ZXJTdHlsZTQoZSk6dGhpcy5fc3RhdGU9PT11ZT90aGlzLl9zdGF0ZUJlZm9yZUVudGl0eShlKTp0aGlzLl9zdGF0ZT09PWNlP3RoaXMuX3N0YXRlQmVmb3JlTnVtZXJpY0VudGl0eShlKTp0aGlzLl9zdGF0ZT09PXBlP3RoaXMuX3N0YXRlSW5OYW1lZEVudGl0eShlKTp0aGlzLl9zdGF0ZT09PWhlP3RoaXMuX3N0YXRlSW5OdW1lcmljRW50aXR5KGUpOnRoaXMuX3N0YXRlPT09ZmU/dGhpcy5fc3RhdGVJbkhleEVudGl0eShlKTp0aGlzLl9jYnMub25lcnJvcihFcnJvcigidW5rbm93biBfc3RhdGUiKSx0aGlzLl9zdGF0ZSksdGhpcy5faW5kZXgrK310aGlzLl9jbGVhbnVwKCl9LHMucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7dGhpcy5fcnVubmluZz0hMX0scy5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dGhpcy5fcnVubmluZz0hMCx0aGlzLl9pbmRleDx0aGlzLl9idWZmZXIubGVuZ3RoJiZ0aGlzLl9wYXJzZSgpLHRoaXMuX2VuZGVkJiZ0aGlzLl9maW5pc2goKX0scy5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUpe3RoaXMuX2VuZGVkJiZ0aGlzLl9jYnMub25lcnJvcihFcnJvcigiLmVuZCgpIGFmdGVyIGRvbmUhIikpLGUmJnRoaXMud3JpdGUoZSksdGhpcy5fZW5kZWQ9ITAsdGhpcy5fcnVubmluZyYmdGhpcy5fZmluaXNoKCl9LHMucHJvdG90eXBlLl9maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9zZWN0aW9uU3RhcnQ8dGhpcy5faW5kZXgmJnRoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpLHRoaXMuX2Nicy5vbmVuZCgpfSxzLnByb3RvdHlwZS5faGFuZGxlVHJhaWxpbmdEYXRhPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fYnVmZmVyLnN1YnN0cih0aGlzLl9zZWN0aW9uU3RhcnQpO3RoaXMuX3N0YXRlPT09enx8dGhpcy5fc3RhdGU9PT1OfHx0aGlzLl9zdGF0ZT09PSQ/dGhpcy5fY2JzLm9uY2RhdGEoZSk6dGhpcy5fc3RhdGU9PT1JfHx0aGlzLl9zdGF0ZT09PUR8fHRoaXMuX3N0YXRlPT09TD90aGlzLl9jYnMub25jb21tZW50KGUpOnRoaXMuX3N0YXRlIT09cGV8fHRoaXMuX3htbE1vZGU/dGhpcy5fc3RhdGUhPT1oZXx8dGhpcy5feG1sTW9kZT90aGlzLl9zdGF0ZSE9PWZlfHx0aGlzLl94bWxNb2RlP3RoaXMuX3N0YXRlIT09bSYmdGhpcy5fc3RhdGUhPT13JiZ0aGlzLl9zdGF0ZSE9PUEmJnRoaXMuX3N0YXRlIT09eCYmdGhpcy5fc3RhdGUhPT1fJiZ0aGlzLl9zdGF0ZSE9PWomJnRoaXMuX3N0YXRlIT09UyYmdGhpcy5fc3RhdGUhPT1FJiZ0aGlzLl9zdGF0ZSE9PXYmJnRoaXMuX2Nicy5vbnRleHQoZSk6KHRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMywxNiksdGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4JiYodGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlLHRoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpKSk6KHRoaXMuX2RlY29kZU51bWVyaWNFbnRpdHkoMiwxMCksdGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4JiYodGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlLHRoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpKSk6KHRoaXMuX3BhcnNlTGVnYWN5RW50aXR5KCksdGhpcy5fc2VjdGlvblN0YXJ0PHRoaXMuX2luZGV4JiYodGhpcy5fc3RhdGU9dGhpcy5fYmFzZVN0YXRlLHRoaXMuX2hhbmRsZVRyYWlsaW5nRGF0YSgpKSl9LHMucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cy5jYWxsKHRoaXMse3htbE1vZGU6dGhpcy5feG1sTW9kZSxkZWNvZGVFbnRpdGllczp0aGlzLl9kZWNvZGVFbnRpdGllc30sdGhpcy5fY2JzKX0scy5wcm90b3R5cGUuZ2V0QWJzb2x1dGVJbmRleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJPZmZzZXQrdGhpcy5faW5kZXh9LHMucHJvdG90eXBlLl9nZXRTZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1ZmZlci5zdWJzdHJpbmcodGhpcy5fc2VjdGlvblN0YXJ0LHRoaXMuX2luZGV4KX0scy5wcm90b3R5cGUuX2VtaXRUb2tlbj1mdW5jdGlvbihlKXt0aGlzLl9jYnNbZV0odGhpcy5fZ2V0U2VjdGlvbigpKSx0aGlzLl9zZWN0aW9uU3RhcnQ9LTF9LHMucHJvdG90eXBlLl9lbWl0UGFydGlhbD1mdW5jdGlvbihlKXt0aGlzLl9iYXNlU3RhdGUhPT1mP3RoaXMuX2Nicy5vbmF0dHJpYmRhdGEoZSk6dGhpcy5fY2JzLm9udGV4dChlKX19LHsiZW50aXRpZXMvbGliL2RlY29kZV9jb2RlcG9pbnQuanMiOjIyLCJlbnRpdGllcy9tYXBzL2VudGl0aWVzLmpzb24iOjI1LCJlbnRpdGllcy9tYXBzL2xlZ2FjeS5qc29uIjoyNiwiZW50aXRpZXMvbWFwcy94bWwuanNvbiI6Mjd9XSwzNTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj10aGlzLl9wYXJzZXI9bmV3IGkoZSx0KSxyPXRoaXMuX2RlY29kZXI9bmV3IG87YS5jYWxsKHRoaXMse2RlY29kZVN0cmluZ3M6ITF9KSx0aGlzLm9uY2UoImZpbmlzaCIsZnVuY3Rpb24oKXtuLmVuZChyLmVuZCgpKX0pfXQuZXhwb3J0cz1yO3ZhciBpPWUoIi4vUGFyc2VyLmpzIiksYT1lKCJzdHJlYW0iKS5Xcml0YWJsZXx8ZSgicmVhZGFibGUtc3RyZWFtIikuV3JpdGFibGUsbz1lKCJzdHJpbmdfZGVjb2RlciIpLlN0cmluZ0RlY29kZXIscz1lKCJidWZmZXIiKS5CdWZmZXI7ZSgiaW5oZXJpdHMiKShyLGEpLGEucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihlLHQsbil7ZSBpbnN0YW5jZW9mIHMmJihlPXRoaXMuX2RlY29kZXIud3JpdGUoZSkpLHRoaXMuX3BhcnNlci53cml0ZShlKSxuKCl9fSx7Ii4vUGFyc2VyLmpzIjozMSxidWZmZXI6NSxpbmhlcml0czozOCwicmVhZGFibGUtc3RyZWFtIjozLHN0cmVhbTo1NSxzdHJpbmdfZGVjb2Rlcjo1Nn1dLDM2OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLG4pe3JldHVybiBkZWxldGUgdC5leHBvcnRzW2VdLHQuZXhwb3J0c1tlXT1uLG59dmFyIGk9ZSgiLi9QYXJzZXIuanMiKSxhPWUoImRvbWhhbmRsZXIiKTt0LmV4cG9ydHM9e1BhcnNlcjppLFRva2VuaXplcjplKCIuL1Rva2VuaXplci5qcyIpLEVsZW1lbnRUeXBlOmUoImRvbWVsZW1lbnR0eXBlIiksRG9tSGFuZGxlcjphLGdldCBGZWVkSGFuZGxlcigpe3JldHVybiByKCJGZWVkSGFuZGxlciIsZSgiLi9GZWVkSGFuZGxlci5qcyIpKX0sZ2V0IFN0cmVhbSgpe3JldHVybiByKCJTdHJlYW0iLGUoIi4vU3RyZWFtLmpzIikpfSxnZXQgV3JpdGFibGVTdHJlYW0oKXtyZXR1cm4gcigiV3JpdGFibGVTdHJlYW0iLGUoIi4vV3JpdGFibGVTdHJlYW0uanMiKSl9LGdldCBQcm94eUhhbmRsZXIoKXtyZXR1cm4gcigiUHJveHlIYW5kbGVyIixlKCIuL1Byb3h5SGFuZGxlci5qcyIpKX0sZ2V0IERvbVV0aWxzKCl7cmV0dXJuIHIoIkRvbVV0aWxzIixlKCJkb211dGlscyIpKX0sZ2V0IENvbGxlY3RpbmdIYW5kbGVyKCl7cmV0dXJuIHIoIkNvbGxlY3RpbmdIYW5kbGVyIixlKCIuL0NvbGxlY3RpbmdIYW5kbGVyLmpzIikpfSxEZWZhdWx0SGFuZGxlcjphLGdldCBSc3NIYW5kbGVyKCl7cmV0dXJuIHIoIlJzc0hhbmRsZXIiLHRoaXMuRmVlZEhhbmRsZXIpfSxwYXJzZURPTTpmdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBhKHQpO3JldHVybiBuZXcgaShuLHQpLmVuZChlKSxuLmRvbX0scGFyc2VGZWVkOmZ1bmN0aW9uKGUsbil7dmFyIHI9bmV3IHQuZXhwb3J0cy5GZWVkSGFuZGxlcihuKTtyZXR1cm4gbmV3IGkocixuKS5lbmQoZSksci5kb219LGNyZWF0ZURvbVN0cmVhbTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bmV3IGEoZSx0LG4pO3JldHVybiBuZXcgaShyLHQpfSxFVkVOVFM6e2F0dHJpYnV0ZToyLGNkYXRhc3RhcnQ6MCxjZGF0YWVuZDowLHRleHQ6MSxwcm9jZXNzaW5naW5zdHJ1Y3Rpb246Mixjb21tZW50OjEsY29tbWVudGVuZDowLGNsb3NldGFnOjEsb3BlbnRhZzoyLG9wZW50YWduYW1lOjEsZXJyb3I6MSxlbmQ6MH19fSx7Ii4vQ29sbGVjdGluZ0hhbmRsZXIuanMiOjI5LCIuL0ZlZWRIYW5kbGVyLmpzIjozMCwiLi9QYXJzZXIuanMiOjMxLCIuL1Byb3h5SGFuZGxlci5qcyI6MzIsIi4vU3RyZWFtLmpzIjozMywiLi9Ub2tlbml6ZXIuanMiOjM0LCIuL1dyaXRhYmxlU3RyZWFtLmpzIjozNSxkb21lbGVtZW50dHlwZTo5LGRvbWhhbmRsZXI6MTAsZG9tdXRpbHM6MTN9XSwzNzpbZnVuY3Rpb24oZSx0LG4pe24ucmVhZD1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG8scz04Kmktci0xLGw9KDE8PHMpLTEsdT1sPj4xLGM9LTcscD1uP2ktMTowLGg9bj8tMToxLGY9ZVt0K3BdO2ZvcihwKz1oLGE9ZiYoMTw8LWMpLTEsZj4+PS1jLGMrPXM7Yz4wO2E9MjU2KmErZVt0K3BdLHArPWgsYy09OCk7Zm9yKG89YSYoMTw8LWMpLTEsYT4+PS1jLGMrPXI7Yz4wO289MjU2Km8rZVt0K3BdLHArPWgsYy09OCk7aWYoMD09PWEpYT0xLXU7ZWxzZXtpZihhPT09bClyZXR1cm4gbz9OYU46KGY/LTE6MSkqKDEvMCk7bys9TWF0aC5wb3coMixyKSxhLT11fXJldHVybihmPy0xOjEpKm8qTWF0aC5wb3coMixhLXIpfSxuLndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbyxzLGwsdT04KmEtaS0xLGM9KDE8PHUpLTEscD1jPj4xLGg9MjM9PT1pP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxmPXI/MDphLTEsZD1yPzE6LTEsbT10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLG89Yyk6KG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoobD1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSxsKj0yKSx0Kz1vK3A+PTE/aC9sOmgqTWF0aC5wb3coMiwxLXApLHQqbD49MiYmKG8rKyxsLz0yKSxvK3A+PWM/KHM9MCxvPWMpOm8rcD49MT8ocz0odCpsLTEpKk1hdGgucG93KDIsaSksbys9cCk6KHM9dCpNYXRoLnBvdygyLHAtMSkqTWF0aC5wb3coMixpKSxvPTApKTtpPj04O2VbbitmXT0yNTUmcyxmKz1kLHMvPTI1NixpLT04KTtmb3Iobz1vPDxpfHMsdSs9aTt1PjA7ZVtuK2ZdPTI1NSZvLGYrPWQsby89MjU2LHUtPTgpO2VbbitmLWRdfD0xMjgqbX19LHt9XSwzODpbZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Uuc3VwZXJfPXQsZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9OnQuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Uuc3VwZXJfPXQ7dmFyIG49ZnVuY3Rpb24oKXt9O24ucHJvdG90eXBlPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyBuLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9fSx7fV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJnIoZS5zbGljZSgwLDApKX10LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJihyKGUpfHxpKGUpfHwhIWUuX2lzQnVmZmVyKX19LHt9XSw0MDpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1yLmNhbGwoZSl9fSx7fV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxuLHIsaSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignImNhbGxiYWNrIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTt2YXIgYSxvLHM9YXJndW1lbnRzLmxlbmd0aDtzd2l0Y2gocyl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gZS5uZXh0VGljayh0KTtjYXNlIDI6cmV0dXJuIGUubmV4dFRpY2soZnVuY3Rpb24oKXt0LmNhbGwobnVsbCxuKX0pO2Nhc2UgMzpyZXR1cm4gZS5uZXh0VGljayhmdW5jdGlvbigpe3QuY2FsbChudWxsLG4scil9KTtjYXNlIDQ6cmV0dXJuIGUubmV4dFRpY2soZnVuY3Rpb24oKXt0LmNhbGwobnVsbCxuLHIsaSl9KTtkZWZhdWx0OmZvcihhPW5ldyBBcnJheShzLTEpLG89MDtvPGEubGVuZ3RoOylhW28rK109YXJndW1lbnRzW29dO3JldHVybiBlLm5leHRUaWNrKGZ1bmN0aW9uKCl7dC5hcHBseShudWxsLGEpfSl9fSFlLnZlcnNpb258fDA9PT1lLnZlcnNpb24uaW5kZXhPZigidjAuIil8fDA9PT1lLnZlcnNpb24uaW5kZXhPZigidjEuIikmJjAhPT1lLnZlcnNpb24uaW5kZXhPZigidjEuOC4iKT90LmV4cG9ydHM9bjp0LmV4cG9ydHM9ZS5uZXh0VGlja30pLmNhbGwodGhpcyxlKCJfcHJvY2VzcyIpKX0se19wcm9jZXNzOjQyfV0sNDI6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gYShlKXtpZihwPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChwPT09cnx8IXApJiZzZXRUaW1lb3V0KXJldHVybiBwPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gcChlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gcC5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gcC5jYWxsKHRoaXMsZSwwKX19fWZ1bmN0aW9uIG8oZSl7aWYoaD09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChoPT09aXx8IWgpJiZjbGVhclRpbWVvdXQpcmV0dXJuIGg9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIGgoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBoLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gaC5jYWxsKHRoaXMsZSl9fX1mdW5jdGlvbiBzKCl7ZyYmZCYmKGc9ITEsZC5sZW5ndGg/bT1kLmNvbmNhdChtKTp5PS0xLG0ubGVuZ3RoJiZsKCkpfWZ1bmN0aW9uIGwoKXtpZighZyl7dmFyIGU9YShzKTtnPSEwO2Zvcih2YXIgdD1tLmxlbmd0aDt0Oyl7Zm9yKGQ9bSxtPVtdOysreTx0OylkJiZkW3ldLnJ1bigpO3k9LTEsdD1tLmxlbmd0aH1kPW51bGwsZz0hMSxvKGUpfX1mdW5jdGlvbiB1KGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gYygpe312YXIgcCxoLGY9dC5leHBvcnRzPXt9OyFmdW5jdGlvbigpe3RyeXtwPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6cn1jYXRjaChlKXtwPXJ9dHJ5e2g9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6aX1jYXRjaChlKXtoPWl9fSgpO3ZhciBkLG09W10sZz0hMSx5PS0xO2YubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTttLnB1c2gobmV3IHUoZSx0KSksMSE9PW0ubGVuZ3RofHxnfHxhKGwpfSx1LnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxmLnRpdGxlPSJicm93c2VyIixmLmJyb3dzZXI9ITAsZi5lbnY9e30sZi5hcmd2PVtdLGYudmVyc2lvbj0iIixmLnZlcnNpb25zPXt9LGYub249YyxmLmFkZExpc3RlbmVyPWMsZi5vbmNlPWMsZi5vZmY9YyxmLnJlbW92ZUxpc3RlbmVyPWMsZi5yZW1vdmVBbGxMaXN0ZW5lcnM9YyxmLmVtaXQ9YyxmLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxmLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sZi5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxmLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sNDM6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9ZSgiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiKX0seyIuL2xpYi9fc3RyZWFtX2R1cGxleC5qcyI6NDR9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygcj8odS5jYWxsKHRoaXMsZSksYy5jYWxsKHRoaXMsZSksZSYmZS5yZWFkYWJsZT09PSExJiYodGhpcy5yZWFkYWJsZT0hMSksZSYmZS53cml0YWJsZT09PSExJiYodGhpcy53cml0YWJsZT0hMSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLGUmJmUuYWxsb3dIYWxmT3Blbj09PSExJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExKSx2b2lkIHRoaXMub25jZSgiZW5kIixpKSk6bmV3IHIoZSl9ZnVuY3Rpb24gaSgpe3RoaXMuYWxsb3dIYWxmT3Blbnx8dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8cyhhLHRoaXMpfWZ1bmN0aW9uIGEoZSl7ZS5lbmQoKX12YXIgbz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciBuIGluIGUpdC5wdXNoKG4pO3JldHVybiB0fTt0LmV4cG9ydHM9cjt2YXIgcz1lKCJwcm9jZXNzLW5leHRpY2stYXJncyIpLGw9ZSgiY29yZS11dGlsLWlzIik7bC5pbmhlcml0cz1lKCJpbmhlcml0cyIpO3ZhciB1PWUoIi4vX3N0cmVhbV9yZWFkYWJsZSIpLGM9ZSgiLi9fc3RyZWFtX3dyaXRhYmxlIik7bC5pbmhlcml0cyhyLHUpO2Zvcih2YXIgcD1vKGMucHJvdG90eXBlKSxoPTA7aDxwLmxlbmd0aDtoKyspe3ZhciBmPXBbaF07ci5wcm90b3R5cGVbZl18fChyLnByb3RvdHlwZVtmXT1jLnByb3RvdHlwZVtmXSl9fSx7Ii4vX3N0cmVhbV9yZWFkYWJsZSI6NDYsIi4vX3N0cmVhbV93cml0YWJsZSI6NDgsImNvcmUtdXRpbC1pcyI6Nixpbmhlcml0czozOCwicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOjQxfV0sNDU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHI/dm9pZCBpLmNhbGwodGhpcyxlKTpuZXcgcihlKX10LmV4cG9ydHM9cjt2YXIgaT1lKCIuL19zdHJlYW1fdHJhbnNmb3JtIiksYT1lKCJjb3JlLXV0aWwtaXMiKTthLmluaGVyaXRzPWUoImluaGVyaXRzIiksYS5pbmhlcml0cyhyLGkpLHIucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LG4pe24obnVsbCxlKX19LHsiLi9fc3RyZWFtX3RyYW5zZm9ybSI6NDcsImNvcmUtdXRpbC1pcyI6Nixpbmhlcml0czozOH1dLDQ2OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wcmVwZW5kTGlzdGVuZXI/ZS5wcmVwZW5kTGlzdGVuZXIodCxuKTp2b2lkKGUuX2V2ZW50cyYmZS5fZXZlbnRzW3RdP0MoZS5fZXZlbnRzW3RdKT9lLl9ldmVudHNbdF0udW5zaGlmdChuKTplLl9ldmVudHNbdF09W24sZS5fZXZlbnRzW3RdXTplLm9uKHQsbikpfWZ1bmN0aW9uIGkodCxuKXt6PXp8fGUoIi4vX3N0cmVhbV9kdXBsZXgiKSx0PXR8fHt9LHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxuIGluc3RhbmNlb2YgeiYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhdC5yZWFkYWJsZU9iamVjdE1vZGUpO3ZhciByPXQuaGlnaFdhdGVyTWFyayxpPXRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NDt0aGlzLmhpZ2hXYXRlck1hcms9cnx8MD09PXI/cjppLHRoaXMuaGlnaFdhdGVyTWFyaz1+fnRoaXMuaGlnaFdhdGVyTWFyayx0aGlzLmJ1ZmZlcj1uZXcgQix0aGlzLmxlbmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxlPSExLHRoaXMuZW1pdHRlZFJlYWRhYmxlPSExLHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLnJhbk91dD0hMSx0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCx0LmVuY29kaW5nJiYocXx8KHE9ZSgic3RyaW5nX2RlY29kZXIvIikuU3RyaW5nRGVjb2RlciksdGhpcy5kZWNvZGVyPW5ldyBxKHQuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gej16fHxlKCIuL19zdHJlYW1fZHVwbGV4IiksdGhpcyBpbnN0YW5jZW9mIGE/KHRoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IGkodCx0aGlzKSx0aGlzLnJlYWRhYmxlPSEwLHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlYWQmJih0aGlzLl9yZWFkPXQucmVhZCksdm9pZCBJLmNhbGwodGhpcykpOm5ldyBhKHQpfWZ1bmN0aW9uIG8oZSx0LG4scixpKXt2YXIgYT1jKHQsbik7aWYoYSllLmVtaXQoImVycm9yIixhKTtlbHNlIGlmKG51bGw9PT1uKXQucmVhZGluZz0hMSxwKGUsdCk7ZWxzZSBpZih0Lm9iamVjdE1vZGV8fG4mJm4ubGVuZ3RoPjApaWYodC5lbmRlZCYmIWkpe3ZhciBvPW5ldyBFcnJvcigic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKTtlLmVtaXQoImVycm9yIixvKX1lbHNlIGlmKHQuZW5kRW1pdHRlZCYmaSl7dmFyIGw9bmV3IEVycm9yKCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCIpO2UuZW1pdCgiZXJyb3IiLGwpfWVsc2V7dmFyIHU7IXQuZGVjb2Rlcnx8aXx8cnx8KG49dC5kZWNvZGVyLndyaXRlKG4pLHU9IXQub2JqZWN0TW9kZSYmMD09PW4ubGVuZ3RoKSxpfHwodC5yZWFkaW5nPSExKSx1fHwodC5mbG93aW5nJiYwPT09dC5sZW5ndGgmJiF0LnN5bmM/KGUuZW1pdCgiZGF0YSIsbiksZS5yZWFkKDApKToodC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoLGk/dC5idWZmZXIudW5zaGlmdChuKTp0LmJ1ZmZlci5wdXNoKG4pLHQubmVlZFJlYWRhYmxlJiZoKGUpKSksZChlLHQpfWVsc2UgaXx8KHQucmVhZGluZz0hMSk7cmV0dXJuIHModCl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4hZS5lbmRlZCYmKGUubmVlZFJlYWRhYmxlfHxlLmxlbmd0aDxlLmhpZ2hXYXRlck1hcmt8fDA9PT1lLmxlbmd0aCl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZT49Tj9lPU46KGUtLSxlfD1lPj4+MSxlfD1lPj4+MixlfD1lPj4+NCxlfD1lPj4+OCxlfD1lPj4+MTYsZSsrKSxlfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gZTw9MHx8MD09PXQubGVuZ3RoJiZ0LmVuZGVkPzA6dC5vYmplY3RNb2RlPzE6ZSE9PWU/dC5mbG93aW5nJiZ0Lmxlbmd0aD90LmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOnQubGVuZ3RoOihlPnQuaGlnaFdhdGVyTWFyayYmKHQuaGlnaFdhdGVyTWFyaz1sKGUpKSxlPD10Lmxlbmd0aD9lOnQuZW5kZWQ/dC5sZW5ndGg6KHQubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBjKGUsdCl7dmFyIG49bnVsbDtyZXR1cm4gTC5pc0J1ZmZlcih0KXx8InN0cmluZyI9PXR5cGVvZiB0fHxudWxsPT09dHx8dm9pZCAwPT09dHx8ZS5vYmplY3RNb2RlfHwobj1uZXcgVHlwZUVycm9yKCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rIikpLG59ZnVuY3Rpb24gcChlLHQpe2lmKCF0LmVuZGVkKXtpZih0LmRlY29kZXIpe3ZhciBuPXQuZGVjb2Rlci5lbmQoKTtuJiZuLmxlbmd0aCYmKHQuYnVmZmVyLnB1c2gobiksdC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoKX10LmVuZGVkPSEwLGgoZSl9fWZ1bmN0aW9uIGgoZSl7dmFyIHQ9ZS5fcmVhZGFibGVTdGF0ZTt0Lm5lZWRSZWFkYWJsZT0hMSx0LmVtaXR0ZWRSZWFkYWJsZXx8KFAoImVtaXRSZWFkYWJsZSIsdC5mbG93aW5nKSx0LmVtaXR0ZWRSZWFkYWJsZT0hMCx0LnN5bmM/VChmLGUpOmYoZSkpfWZ1bmN0aW9uIGYoZSl7UCgiZW1pdCByZWFkYWJsZSIpLGUuZW1pdCgicmVhZGFibGUiKSx3KGUpfWZ1bmN0aW9uIGQoZSx0KXt0LnJlYWRpbmdNb3JlfHwodC5yZWFkaW5nTW9yZT0hMCxUKG0sZSx0KSl9ZnVuY3Rpb24gbShlLHQpe2Zvcih2YXIgbj10Lmxlbmd0aDshdC5yZWFkaW5nJiYhdC5mbG93aW5nJiYhdC5lbmRlZCYmdC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrJiYoUCgibWF5YmVSZWFkTW9yZSByZWFkIDAiKSxlLnJlYWQoMCksbiE9PXQubGVuZ3RoKTspbj10Lmxlbmd0aDt0LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcmVhZGFibGVTdGF0ZTtQKCJwaXBlT25EcmFpbiIsdC5hd2FpdERyYWluKSx0LmF3YWl0RHJhaW4mJnQuYXdhaXREcmFpbi0tLDA9PT10LmF3YWl0RHJhaW4mJkQoZSwiZGF0YSIpJiYodC5mbG93aW5nPSEwLHcoZSkpfX1mdW5jdGlvbiB5KGUpe1AoInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCIpLGUucmVhZCgwKX1mdW5jdGlvbiB2KGUsdCl7dC5yZXN1bWVTY2hlZHVsZWR8fCh0LnJlc3VtZVNjaGVkdWxlZD0hMCxUKGIsZSx0KSl9ZnVuY3Rpb24gYihlLHQpe3QucmVhZGluZ3x8KFAoInJlc3VtZSByZWFkIDAiKSxlLnJlYWQoMCkpLHQucmVzdW1lU2NoZWR1bGVkPSExLHQuYXdhaXREcmFpbj0wLGUuZW1pdCgicmVzdW1lIiksdyhlKSx0LmZsb3dpbmcmJiF0LnJlYWRpbmcmJmUucmVhZCgwKX1mdW5jdGlvbiB3KGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7Zm9yKFAoImZsb3ciLHQuZmxvd2luZyk7dC5mbG93aW5nJiZudWxsIT09ZS5yZWFkKCk7KTt9ZnVuY3Rpb24gXyhlLHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbjtyZXR1cm4gdC5vYmplY3RNb2RlP249dC5idWZmZXIuc2hpZnQoKTohZXx8ZT49dC5sZW5ndGg/KG49dC5kZWNvZGVyP3QuYnVmZmVyLmpvaW4oIiIpOjE9PT10LmJ1ZmZlci5sZW5ndGg/dC5idWZmZXIuaGVhZC5kYXRhOnQuYnVmZmVyLmNvbmNhdCh0Lmxlbmd0aCksdC5idWZmZXIuY2xlYXIoKSk6bj14KGUsdC5idWZmZXIsdC5kZWNvZGVyKSxufWZ1bmN0aW9uIHgoZSx0LG4pe3ZhciByO3JldHVybiBlPHQuaGVhZC5kYXRhLmxlbmd0aD8ocj10LmhlYWQuZGF0YS5zbGljZSgwLGUpLHQuaGVhZC5kYXRhPXQuaGVhZC5kYXRhLnNsaWNlKGUpKTpyPWU9PT10LmhlYWQuZGF0YS5sZW5ndGg/dC5zaGlmdCgpOm4/QShlLHQpOlMoZSx0KSxyfWZ1bmN0aW9uIEEoZSx0KXt2YXIgbj10LmhlYWQscj0xLGk9bi5kYXRhO2ZvcihlLT1pLmxlbmd0aDtuPW4ubmV4dDspe3ZhciBhPW4uZGF0YSxvPWU+YS5sZW5ndGg/YS5sZW5ndGg6ZTtpZihpKz1vPT09YS5sZW5ndGg/YTphLnNsaWNlKDAsZSksZS09bywwPT09ZSl7bz09PWEubGVuZ3RoPygrK3Isbi5uZXh0P3QuaGVhZD1uLm5leHQ6dC5oZWFkPXQudGFpbD1udWxsKToodC5oZWFkPW4sbi5kYXRhPWEuc2xpY2UobykpO2JyZWFrfSsrcn1yZXR1cm4gdC5sZW5ndGgtPXIsaX1mdW5jdGlvbiBTKGUsdCl7dmFyIG49TS5hbGxvY1Vuc2FmZShlKSxyPXQuaGVhZCxpPTE7Zm9yKHIuZGF0YS5jb3B5KG4pLGUtPXIuZGF0YS5sZW5ndGg7cj1yLm5leHQ7KXt2YXIgYT1yLmRhdGEsbz1lPmEubGVuZ3RoP2EubGVuZ3RoOmU7aWYoYS5jb3B5KG4sbi5sZW5ndGgtZSwwLG8pLGUtPW8sMD09PWUpe289PT1hLmxlbmd0aD8oKytpLHIubmV4dD90LmhlYWQ9ci5uZXh0OnQuaGVhZD10LnRhaWw9bnVsbCk6KHQuaGVhZD1yLHIuZGF0YT1hLnNsaWNlKG8pKTticmVha30rK2l9cmV0dXJuIHQubGVuZ3RoLT1pLG59ZnVuY3Rpb24gaihlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2lmKHQubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCciZW5kUmVhZGFibGUoKSIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTt0LmVuZEVtaXR0ZWR8fCh0LmVuZGVkPSEwLFQoRSx0LGUpKX1mdW5jdGlvbiBFKGUsdCl7ZS5lbmRFbWl0dGVkfHwwIT09ZS5sZW5ndGh8fChlLmVuZEVtaXR0ZWQ9ITAsdC5yZWFkYWJsZT0hMSx0LmVtaXQoImVuZCIpKX1mdW5jdGlvbiBPKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQoZVtuXSxuKX1mdW5jdGlvbiBrKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfXQuZXhwb3J0cz1hO3ZhciBUPWUoInByb2Nlc3MtbmV4dGljay1hcmdzIiksQz1lKCJpc2FycmF5Iik7YS5SZWFkYWJsZVN0YXRlPWk7dmFyIEksRD0oZSgiZXZlbnRzIikuRXZlbnRFbWl0dGVyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGlzdGVuZXJzKHQpLmxlbmd0aH0pOyFmdW5jdGlvbigpe3RyeXtJPWUoInN0cmVhbSIpfWNhdGNoKHQpe31maW5hbGx5e0l8fChJPWUoImV2ZW50cyIpLkV2ZW50RW1pdHRlcil9fSgpO3ZhciBMPWUoImJ1ZmZlciIpLkJ1ZmZlcixNPWUoImJ1ZmZlci1zaGltcyIpLFI9ZSgiY29yZS11dGlsLWlzIik7Ui5pbmhlcml0cz1lKCJpbmhlcml0cyIpO3ZhciBVPWUoInV0aWwiKSxQPXZvaWQgMDtQPVUmJlUuZGVidWdsb2c/VS5kZWJ1Z2xvZygic3RyZWFtIik6ZnVuY3Rpb24oKXt9O3ZhciBxLEI9ZSgiLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QiKTtSLmluaGVyaXRzKGEsSSk7dmFyIHosejthLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gbi5vYmplY3RNb2RlfHwic3RyaW5nIiE9dHlwZW9mIGV8fCh0PXR8fG4uZGVmYXVsdEVuY29kaW5nLHQhPT1uLmVuY29kaW5nJiYoZT1NLmZyb20oZSx0KSx0PSIiKSksbyh0aGlzLG4sZSx0LCExKX0sYS5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBvKHRoaXMsdCxlLCIiLCEwKX0sYS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPT09ITF9LGEucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBxfHwocT1lKCJzdHJpbmdfZGVjb2Rlci8iKS5TdHJpbmdEZWNvZGVyKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9bmV3IHEodCksdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10LHRoaXN9O3ZhciBOPTgzODg2MDg7YS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlKXtQKCJyZWFkIixlKSxlPXBhcnNlSW50KGUsMTApO3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGUsbj1lO2lmKDAhPT1lJiYodC5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT1lJiZ0Lm5lZWRSZWFkYWJsZSYmKHQubGVuZ3RoPj10LmhpZ2hXYXRlck1hcmt8fHQuZW5kZWQpKXJldHVybiBQKCJyZWFkOiBlbWl0UmVhZGFibGUiLHQubGVuZ3RoLHQuZW5kZWQpLDA9PT10Lmxlbmd0aCYmdC5lbmRlZD9qKHRoaXMpOmgodGhpcyksbnVsbDtpZihlPXUoZSx0KSwwPT09ZSYmdC5lbmRlZClyZXR1cm4gMD09PXQubGVuZ3RoJiZqKHRoaXMpLG51bGw7dmFyIHI9dC5uZWVkUmVhZGFibGU7UCgibmVlZCByZWFkYWJsZSIsciksKDA9PT10Lmxlbmd0aHx8dC5sZW5ndGgtZTx0LmhpZ2hXYXRlck1hcmspJiYocj0hMCxQKCJsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyayIscikpLHQuZW5kZWR8fHQucmVhZGluZz8ocj0hMSxQKCJyZWFkaW5nIG9yIGVuZGVkIixyKSk6ciYmKFAoImRvIHJlYWQiKSx0LnJlYWRpbmc9ITAsdC5zeW5jPSEwLDA9PT10Lmxlbmd0aCYmKHQubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKHQuaGlnaFdhdGVyTWFyayksdC5zeW5jPSExLHQucmVhZGluZ3x8KGU9dShuLHQpKSk7dmFyIGk7cmV0dXJuIGk9ZT4wP18oZSx0KTpudWxsLG51bGw9PT1pPyh0Lm5lZWRSZWFkYWJsZT0hMCxlPTApOnQubGVuZ3RoLT1lLDA9PT10Lmxlbmd0aCYmKHQuZW5kZWR8fCh0Lm5lZWRSZWFkYWJsZT0hMCksbiE9PWUmJnQuZW5kZWQmJmoodGhpcykpLG51bGwhPT1pJiZ0aGlzLmVtaXQoImRhdGEiLGkpLGl9LGEucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKGUpe3RoaXMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIikpfSxhLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaShlKXtQKCJvbnVucGlwZSIpLGU9PT1oJiZvKCl9ZnVuY3Rpb24gYSgpe1AoIm9uZW5kIiksZS5lbmQoKX1mdW5jdGlvbiBvKCl7UCgiY2xlYW51cCIpLGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIix1KSxlLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLGMpLGUucmVtb3ZlTGlzdGVuZXIoImRyYWluIix5KSxlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsbCksZS5yZW1vdmVMaXN0ZW5lcigidW5waXBlIixpKSxoLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGEpLGgucmVtb3ZlTGlzdGVuZXIoImVuZCIsbyksaC5yZW1vdmVMaXN0ZW5lcigiZGF0YSIscyksdj0hMCwhZi5hd2FpdERyYWlufHxlLl93cml0YWJsZVN0YXRlJiYhZS5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fHkoKX1mdW5jdGlvbiBzKHQpe1AoIm9uZGF0YSIpLGI9ITE7dmFyIG49ZS53cml0ZSh0KTshMSE9PW58fGJ8fCgoMT09PWYucGlwZXNDb3VudCYmZi5waXBlcz09PWV8fGYucGlwZXNDb3VudD4xJiZrKGYucGlwZXMsZSkhPT0tMSkmJiF2JiYoUCgiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlIixoLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pLGguX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrLGI9ITApLGgucGF1c2UoKSl9ZnVuY3Rpb24gbCh0KXtQKCJvbmVycm9yIix0KSxwKCksZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLGwpLDA9PT1EKGUsImVycm9yIikmJmUuZW1pdCgiZXJyb3IiLHQpfWZ1bmN0aW9uIHUoKXtlLnJlbW92ZUxpc3RlbmVyKCJmaW5pc2giLGMpLHAoKX1mdW5jdGlvbiBjKCl7UCgib25maW5pc2giKSxlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsdSkscCgpfWZ1bmN0aW9uIHAoKXtQKCJ1bnBpcGUiKSxoLnVucGlwZShlKX12YXIgaD10aGlzLGY9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2goZi5waXBlc0NvdW50KXtjYXNlIDA6Zi5waXBlcz1lO2JyZWFrO2Nhc2UgMTpmLnBpcGVzPVtmLnBpcGVzLGVdO2JyZWFrO2RlZmF1bHQ6Zi5waXBlcy5wdXNoKGUpfWYucGlwZXNDb3VudCs9MSxQKCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLGYucGlwZXNDb3VudCx0KTt2YXIgZD0oIXR8fHQuZW5kIT09ITEpJiZlIT09bi5zdGRvdXQmJmUhPT1uLnN0ZGVycixtPWQ/YTpvO2YuZW5kRW1pdHRlZD9UKG0pOmgub25jZSgiZW5kIixtKSxlLm9uKCJ1bnBpcGUiLGkpO3ZhciB5PWcoaCk7ZS5vbigiZHJhaW4iLHkpO3ZhciB2PSExLGI9ITE7cmV0dXJuIGgub24oImRhdGEiLHMpLHIoZSwiZXJyb3IiLGwpLGUub25jZSgiY2xvc2UiLHUpLGUub25jZSgiZmluaXNoIixjKSxlLmVtaXQoInBpcGUiLGgpLGYuZmxvd2luZ3x8KFAoInBpcGUgcmVzdW1lIiksaC5yZXN1bWUoKSksZX0sYS5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGU7aWYoMD09PXQucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09dC5waXBlc0NvdW50KXJldHVybiBlJiZlIT09dC5waXBlcz90aGlzOihlfHwoZT10LnBpcGVzKSx0LnBpcGVzPW51bGwsdC5waXBlc0NvdW50PTAsdC5mbG93aW5nPSExLGUmJmUuZW1pdCgidW5waXBlIix0aGlzKSx0aGlzKTtpZighZSl7dmFyIG49dC5waXBlcyxyPXQucGlwZXNDb3VudDt0LnBpcGVzPW51bGwsdC5waXBlc0NvdW50PTAsdC5mbG93aW5nPSExO2Zvcih2YXIgaT0wO2k8cjtpKyspbltpXS5lbWl0KCJ1bnBpcGUiLHRoaXMpO3JldHVybiB0aGlzfXZhciBhPWsodC5waXBlcyxlKTtyZXR1cm4gYT09PS0xP3RoaXM6KHQucGlwZXMuc3BsaWNlKGEsMSksdC5waXBlc0NvdW50LT0xLDE9PT10LnBpcGVzQ291bnQmJih0LnBpcGVzPXQucGlwZXNbMF0pLGUuZW1pdCgidW5waXBlIix0aGlzKSx0aGlzKX0sYS5wcm90b3R5cGUub249ZnVuY3Rpb24oZSx0KXt2YXIgbj1JLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsZSx0KTtpZigiZGF0YSI9PT1lKXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyE9PSExJiZ0aGlzLnJlc3VtZSgpO2Vsc2UgaWYoInJlYWRhYmxlIj09PWUpe3ZhciByPXRoaXMuX3JlYWRhYmxlU3RhdGU7ci5lbmRFbWl0dGVkfHxyLnJlYWRhYmxlTGlzdGVuaW5nfHwoci5yZWFkYWJsZUxpc3RlbmluZz1yLm5lZWRSZWFkYWJsZT0hMCxyLmVtaXR0ZWRSZWFkYWJsZT0hMSxyLnJlYWRpbmc/ci5sZW5ndGgmJmgodGhpcyxyKTpUKHksdGhpcykpfXJldHVybiBufSxhLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1hLnByb3RvdHlwZS5vbixhLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBlLmZsb3dpbmd8fChQKCJyZXN1bWUiKSxlLmZsb3dpbmc9ITAsdih0aGlzLGUpKSx0aGlzfSxhLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBQKCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJihQKCJwYXVzZSIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXN9LGEucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZGFibGVTdGF0ZSxuPSExLHI9dGhpcztlLm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYoUCgid3JhcHBlZCBlbmQiKSx0LmRlY29kZXImJiF0LmVuZGVkKXt2YXIgZT10LmRlY29kZXIuZW5kKCk7ZSYmZS5sZW5ndGgmJnIucHVzaChlKX1yLnB1c2gobnVsbCl9KSxlLm9uKCJkYXRhIixmdW5jdGlvbihpKXtpZihQKCJ3cmFwcGVkIGRhdGEiKSx0LmRlY29kZXImJihpPXQuZGVjb2Rlci53cml0ZShpKSksKCF0Lm9iamVjdE1vZGV8fG51bGwhPT1pJiZ2b2lkIDAhPT1pKSYmKHQub2JqZWN0TW9kZXx8aSYmaS5sZW5ndGgpKXt2YXIgYT1yLnB1c2goaSk7YXx8KG49ITAsZS5wYXVzZSgpKX19KTtmb3IodmFyIGkgaW4gZSl2b2lkIDA9PT10aGlzW2ldJiYiZnVuY3Rpb24iPT10eXBlb2YgZVtpXSYmKHRoaXNbaV09ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGVbdF0uYXBwbHkoZSxhcmd1bWVudHMpfX0oaSkpO3ZhciBhPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO3JldHVybiBPKGEsZnVuY3Rpb24odCl7ZS5vbih0LHIuZW1pdC5iaW5kKHIsdCkpfSksci5fcmVhZD1mdW5jdGlvbih0KXtQKCJ3cmFwcGVkIF9yZWFkIix0KSxuJiYobj0hMSxlLnJlc3VtZSgpKX0scn0sYS5fZnJvbUxpc3Q9X30pLmNhbGwodGhpcyxlKCJfcHJvY2VzcyIpKX0seyIuL19zdHJlYW1fZHVwbGV4Ijo0NCwiLi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QiOjQ5LF9wcm9jZXNzOjQyLGJ1ZmZlcjo1LCJidWZmZXItc2hpbXMiOjQsImNvcmUtdXRpbC1pcyI6NixldmVudHM6MjgsaW5oZXJpdHM6MzgsaXNhcnJheTo0MCwicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOjQxLCJzdHJpbmdfZGVjb2Rlci8iOjU2LHV0aWw6M31dLDQ3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5hZnRlclRyYW5zZm9ybT1mdW5jdGlvbih0LG4pe3JldHVybiBpKGUsdCxuKX0sdGhpcy5uZWVkVHJhbnNmb3JtPSExLHRoaXMudHJhbnNmb3JtaW5nPSExLHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVjaHVuaz1udWxsLHRoaXMud3JpdGVlbmNvZGluZz1udWxsfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuX3RyYW5zZm9ybVN0YXRlO3IudHJhbnNmb3JtaW5nPSExO3ZhciBpPXIud3JpdGVjYjtpZighaSlyZXR1cm4gZS5lbWl0KCJlcnJvciIsbmV3IEVycm9yKCJubyB3cml0ZWNiIGluIFRyYW5zZm9ybSBjbGFzcyIpKTtyLndyaXRlY2h1bms9bnVsbCxyLndyaXRlY2I9bnVsbCxudWxsIT09biYmdm9pZCAwIT09biYmZS5wdXNoKG4pLGkodCk7dmFyIGE9ZS5fcmVhZGFibGVTdGF0ZTthLnJlYWRpbmc9ITEsKGEubmVlZFJlYWRhYmxlfHxhLmxlbmd0aDxhLmhpZ2hXYXRlck1hcmspJiZlLl9yZWFkKGEuaGlnaFdhdGVyTWFyayl9ZnVuY3Rpb24gYShlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBhKSlyZXR1cm4gbmV3IGEoZSk7cy5jYWxsKHRoaXMsZSksdGhpcy5fdHJhbnNmb3JtU3RhdGU9bmV3IHIodGhpcyk7dmFyIHQ9dGhpczt0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsZSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnRyYW5zZm9ybSYmKHRoaXMuX3RyYW5zZm9ybT1lLnRyYW5zZm9ybSksImZ1bmN0aW9uIj09dHlwZW9mIGUuZmx1c2gmJih0aGlzLl9mbHVzaD1lLmZsdXNoKSksdGhpcy5vbmNlKCJwcmVmaW5pc2giLGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX2ZsdXNoP3RoaXMuX2ZsdXNoKGZ1bmN0aW9uKGUpe28odCxlKX0pOm8odCl9KX1mdW5jdGlvbiBvKGUsdCl7aWYodClyZXR1cm4gZS5lbWl0KCJlcnJvciIsdCk7dmFyIG49ZS5fd3JpdGFibGVTdGF0ZSxyPWUuX3RyYW5zZm9ybVN0YXRlO2lmKG4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwIik7aWYoci50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IEVycm9yKCJDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gc3RpbGwgdHJhbnNmb3JtaW5nIik7cmV0dXJuIGUucHVzaChudWxsKX10LmV4cG9ydHM9YTt2YXIgcz1lKCIuL19zdHJlYW1fZHVwbGV4IiksbD1lKCJjb3JlLXV0aWwtaXMiKTtsLmluaGVyaXRzPWUoImluaGVyaXRzIiksbC5pbmhlcml0cyhhLHMpLGEucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT0hMSxzLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxlLHQpfSxhLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxuKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxhLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKHIud3JpdGVjYj1uLHIud3JpdGVjaHVuaz1lLHIud3JpdGVlbmNvZGluZz10LCFyLnRyYW5zZm9ybWluZyl7dmFyIGk9dGhpcy5fcmVhZGFibGVTdGF0ZTsoci5uZWVkVHJhbnNmb3JtfHxpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfX0sYS5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbCE9PXQud3JpdGVjaHVuayYmdC53cml0ZWNiJiYhdC50cmFuc2Zvcm1pbmc/KHQudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybSh0LndyaXRlY2h1bmssdC53cml0ZWVuY29kaW5nLHQuYWZ0ZXJUcmFuc2Zvcm0pKTp0Lm5lZWRUcmFuc2Zvcm09ITB9fSx7Ii4vX3N0cmVhbV9kdXBsZXgiOjQ0LCJjb3JlLXV0aWwtaXMiOjYsaW5oZXJpdHM6Mzh9XSw0ODpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBpKGUsdCxuKXt0aGlzLmNodW5rPWUsdGhpcy5lbmNvZGluZz10LHRoaXMuY2FsbGJhY2s9bix0aGlzLm5leHQ9bnVsbH1mdW5jdGlvbiBhKHQsbil7Qz1DfHxlKCIuL19zdHJlYW1fZHVwbGV4IiksdD10fHx7fSx0aGlzLm9iamVjdE1vZGU9ISF0Lm9iamVjdE1vZGUsbiBpbnN0YW5jZW9mIEMmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXQud3JpdGFibGVPYmplY3RNb2RlKTt2YXIgcj10LmhpZ2hXYXRlck1hcmssaT10aGlzLm9iamVjdE1vZGU/MTY6MTYzODQ7dGhpcy5oaWdoV2F0ZXJNYXJrPXJ8fDA9PT1yP3I6aSx0aGlzLmhpZ2hXYXRlck1hcms9fn50aGlzLmhpZ2hXYXRlck1hcmssdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExO3ZhciBhPXQuZGVjb2RlU3RyaW5ncz09PSExO3RoaXMuZGVjb2RlU3RyaW5ncz0hYSx0aGlzLmRlZmF1bHRFbmNvZGluZz10LmRlZmF1bHRFbmNvZGluZ3x8InV0ZjgiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oZSl7ZChuLGUpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyB4KHRoaXMpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIEM9Q3x8ZSgiLi9fc3RyZWFtX2R1cGxleCIpLHRoaXMgaW5zdGFuY2VvZiBvfHx0aGlzIGluc3RhbmNlb2YgQz8odGhpcy5fd3JpdGFibGVTdGF0ZT1uZXcgYSh0LHRoaXMpLHRoaXMud3JpdGFibGU9ITAsdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LndyaXRlJiYodGhpcy5fd3JpdGU9dC53cml0ZSksImZ1bmN0aW9uIj09dHlwZW9mIHQud3JpdGV2JiYodGhpcy5fd3JpdGV2PXQud3JpdGV2KSksdm9pZCBFLmNhbGwodGhpcykpOm5ldyBvKHQpfWZ1bmN0aW9uIHMoZSx0KXt2YXIgbj1uZXcgRXJyb3IoIndyaXRlIGFmdGVyIGVuZCIpO2UuZW1pdCgiZXJyb3IiLG4pLEEodCxuKX1mdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpPSEwLGE9ITE7cmV0dXJuIG51bGw9PT1uP2E9bmV3IFR5cGVFcnJvcigiTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0iKTprLmlzQnVmZmVyKG4pfHwic3RyaW5nIj09dHlwZW9mIG58fHZvaWQgMD09PW58fHQub2JqZWN0TW9kZXx8KGE9bmV3IFR5cGVFcnJvcigiSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuayIpKSxhJiYoZS5lbWl0KCJlcnJvciIsYSksQShyLGEpLGk9ITEpLGl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIGUub2JqZWN0TW9kZXx8ZS5kZWNvZGVTdHJpbmdzPT09ITF8fCJzdHJpbmciIT10eXBlb2YgdHx8KHQ9VC5mcm9tKHQsbikpLHR9ZnVuY3Rpb24gYyhlLHQsbixyLGEpe249dSh0LG4sciksay5pc0J1ZmZlcihuKSYmKHI9ImJ1ZmZlciIpO3ZhciBvPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoO3QubGVuZ3RoKz1vO3ZhciBzPXQubGVuZ3RoPHQuaGlnaFdhdGVyTWFyaztpZihzfHwodC5uZWVkRHJhaW49ITApLHQud3JpdGluZ3x8dC5jb3JrZWQpe3ZhciBsPXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDt0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bmV3IGkobixyLGEpLGw/bC5uZXh0PXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDp0LmJ1ZmZlcmVkUmVxdWVzdD10Lmxhc3RCdWZmZXJlZFJlcXVlc3QsdC5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIHAoZSx0LCExLG8sbixyLGEpO3JldHVybiBzfWZ1bmN0aW9uIHAoZSx0LG4scixpLGEsbyl7dC53cml0ZWxlbj1yLHQud3JpdGVjYj1vLHQud3JpdGluZz0hMCx0LnN5bmM9ITAsbj9lLl93cml0ZXYoaSx0Lm9ud3JpdGUpOmUuX3dyaXRlKGksYSx0Lm9ud3JpdGUpLHQuc3luYz0hMX1mdW5jdGlvbiBoKGUsdCxuLHIsaSl7LS10LnBlbmRpbmdjYixuP0EoaSxyKTppKHIpLGUuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLGUuZW1pdCgiZXJyb3IiLHIpfWZ1bmN0aW9uIGYoZSl7ZS53cml0aW5nPSExLGUud3JpdGVjYj1udWxsLGUubGVuZ3RoLT1lLndyaXRlbGVuLGUud3JpdGVsZW49MH1mdW5jdGlvbiBkKGUsdCl7dmFyIG49ZS5fd3JpdGFibGVTdGF0ZSxyPW4uc3luYyxpPW4ud3JpdGVjYjtpZihmKG4pLHQpaChlLG4scix0LGkpO2Vsc2V7dmFyIGE9dihuKTthfHxuLmNvcmtlZHx8bi5idWZmZXJQcm9jZXNzaW5nfHwhbi5idWZmZXJlZFJlcXVlc3R8fHkoZSxuKSxyP1MobSxlLG4sYSxpKTptKGUsbixhLGkpfX1mdW5jdGlvbiBtKGUsdCxuLHIpe258fGcoZSx0KSx0LnBlbmRpbmdjYi0tLHIoKSx3KGUsdCl9ZnVuY3Rpb24gZyhlLHQpezA9PT10Lmxlbmd0aCYmdC5uZWVkRHJhaW4mJih0Lm5lZWREcmFpbj0hMSxlLmVtaXQoImRyYWluIikpfWZ1bmN0aW9uIHkoZSx0KXt0LmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIG49dC5idWZmZXJlZFJlcXVlc3Q7aWYoZS5fd3JpdGV2JiZuJiZuLm5leHQpe3ZhciByPXQuYnVmZmVyZWRSZXF1ZXN0Q291bnQsaT1uZXcgQXJyYXkociksYT10LmNvcmtlZFJlcXVlc3RzRnJlZTthLmVudHJ5PW47Zm9yKHZhciBvPTA7bjspaVtvXT1uLG49bi5uZXh0LG8rPTE7cChlLHQsITAsdC5sZW5ndGgsaSwiIixhLmZpbmlzaCksdC5wZW5kaW5nY2IrKyx0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxhLm5leHQ/KHQuY29ya2VkUmVxdWVzdHNGcmVlPWEubmV4dCxhLm5leHQ9bnVsbCk6dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IHgodCl9ZWxzZXtmb3IoO247KXt2YXIgcz1uLmNodW5rLGw9bi5lbmNvZGluZyx1PW4uY2FsbGJhY2ssYz10Lm9iamVjdE1vZGU/MTpzLmxlbmd0aDtpZihwKGUsdCwhMSxjLHMsbCx1KSxuPW4ubmV4dCx0LndyaXRpbmcpYnJlYWs7Cit9bnVsbD09PW4mJih0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9dC5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHQuYnVmZmVyZWRSZXF1ZXN0PW4sdC5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGUuZW5kaW5nJiYwPT09ZS5sZW5ndGgmJm51bGw9PT1lLmJ1ZmZlcmVkUmVxdWVzdCYmIWUuZmluaXNoZWQmJiFlLndyaXRpbmd9ZnVuY3Rpb24gYihlLHQpe3QucHJlZmluaXNoZWR8fCh0LnByZWZpbmlzaGVkPSEwLGUuZW1pdCgicHJlZmluaXNoIikpfWZ1bmN0aW9uIHcoZSx0KXt2YXIgbj12KHQpO3JldHVybiBuJiYoMD09PXQucGVuZGluZ2NiPyhiKGUsdCksdC5maW5pc2hlZD0hMCxlLmVtaXQoImZpbmlzaCIpKTpiKGUsdCkpLG59ZnVuY3Rpb24gXyhlLHQsbil7dC5lbmRpbmc9ITAsdyhlLHQpLG4mJih0LmZpbmlzaGVkP0Eobik6ZS5vbmNlKCJmaW5pc2giLG4pKSx0LmVuZGVkPSEwLGUud3JpdGFibGU9ITF9ZnVuY3Rpb24geChlKXt2YXIgdD10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbihuKXt2YXIgcj10LmVudHJ5O2Zvcih0LmVudHJ5PW51bGw7cjspe3ZhciBpPXIuY2FsbGJhY2s7ZS5wZW5kaW5nY2ItLSxpKG4pLHI9ci5uZXh0fWUuY29ya2VkUmVxdWVzdHNGcmVlP2UuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9dDplLmNvcmtlZFJlcXVlc3RzRnJlZT10fX10LmV4cG9ydHM9bzt2YXIgQT1lKCJwcm9jZXNzLW5leHRpY2stYXJncyIpLFM9IW4uYnJvd3NlciYmWyJ2MC4xMCIsInYwLjkuIl0uaW5kZXhPZihuLnZlcnNpb24uc2xpY2UoMCw1KSk+LTE/c2V0SW1tZWRpYXRlOkE7by5Xcml0YWJsZVN0YXRlPWE7dmFyIGo9ZSgiY29yZS11dGlsLWlzIik7ai5pbmhlcml0cz1lKCJpbmhlcml0cyIpO3ZhciBFLE89e2RlcHJlY2F0ZTplKCJ1dGlsLWRlcHJlY2F0ZSIpfTshZnVuY3Rpb24oKXt0cnl7RT1lKCJzdHJlYW0iKX1jYXRjaCh0KXt9ZmluYWxseXtFfHwoRT1lKCJldmVudHMiKS5FdmVudEVtaXR0ZXIpfX0oKTt2YXIgaz1lKCJidWZmZXIiKS5CdWZmZXIsVD1lKCJidWZmZXItc2hpbXMiKTtqLmluaGVyaXRzKG8sRSk7dmFyIEM7YS5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuYnVmZmVyZWRSZXF1ZXN0LHQ9W107ZTspdC5wdXNoKGUpLGU9ZS5uZXh0O3JldHVybiB0fSxmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsImJ1ZmZlciIse2dldDpPLmRlcHJlY2F0ZShmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iKX0pfWNhdGNoKGUpe319KCk7dmFyIEM7by5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe3RoaXMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcigiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpKX0sby5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXRoaXMuX3dyaXRhYmxlU3RhdGUsYT0hMTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLGsuaXNCdWZmZXIoZSk/dD0iYnVmZmVyIjp0fHwodD1pLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPXIpLGkuZW5kZWQ/cyh0aGlzLG4pOmwodGhpcyxpLGUsbikmJihpLnBlbmRpbmdjYisrLGE9Yyh0aGlzLGksZSx0LG4pKSxhfSxvLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtlLmNvcmtlZCsrfSxvLnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl93cml0YWJsZVN0YXRlO2UuY29ya2VkJiYoZS5jb3JrZWQtLSxlLndyaXRpbmd8fGUuY29ya2VkfHxlLmZpbmlzaGVkfHxlLmJ1ZmZlclByb2Nlc3Npbmd8fCFlLmJ1ZmZlcmVkUmVxdWVzdHx8eSh0aGlzLGUpKX0sby5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKSwhKFsiaGV4IiwidXRmOCIsInV0Zi04IiwiYXNjaWkiLCJiaW5hcnkiLCJiYXNlNjQiLCJ1Y3MyIiwidWNzLTIiLCJ1dGYxNmxlIiwidXRmLTE2bGUiLCJyYXciXS5pbmRleE9mKChlKyIiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9ZSx0aGlzfSxvLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LG4pe24obmV3IEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKSl9LG8ucHJvdG90eXBlLl93cml0ZXY9bnVsbCxvLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3dyaXRhYmxlU3RhdGU7ImZ1bmN0aW9uIj09dHlwZW9mIGU/KG49ZSxlPW51bGwsdD1udWxsKToiZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLG51bGwhPT1lJiZ2b2lkIDAhPT1lJiZ0aGlzLndyaXRlKGUsdCksci5jb3JrZWQmJihyLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLHIuZW5kaW5nfHxyLmZpbmlzaGVkfHxfKHRoaXMscixuKX19KS5jYWxsKHRoaXMsZSgiX3Byb2Nlc3MiKSl9LHsiLi9fc3RyZWFtX2R1cGxleCI6NDQsX3Byb2Nlc3M6NDIsYnVmZmVyOjUsImJ1ZmZlci1zaGltcyI6NCwiY29yZS11dGlsLWlzIjo2LGV2ZW50czoyOCxpbmhlcml0czozOCwicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOjQxLCJ1dGlsLWRlcHJlY2F0ZSI6NTd9XSw0OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH12YXIgaT0oZSgiYnVmZmVyIikuQnVmZmVyLGUoImJ1ZmZlci1zaGltcyIpKTt0LmV4cG9ydHM9cixyLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUpe3ZhciB0PXtkYXRhOmUsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy50YWlsPXQsKyt0aGlzLmxlbmd0aH0sci5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbihlKXt2YXIgdD17ZGF0YTplLG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9dCksdGhpcy5oZWFkPXQsKyt0aGlzLmxlbmd0aH0sci5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciBlPXRoaXMuaGVhZC5kYXRhO3JldHVybiAxPT09dGhpcy5sZW5ndGg/dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsOnRoaXMuaGVhZD10aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLGV9fSxyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfSxyLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGUpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4iIjtmb3IodmFyIHQ9dGhpcy5oZWFkLG49IiIrdC5kYXRhO3Q9dC5uZXh0OyluKz1lK3QuZGF0YTtyZXR1cm4gbn0sci5wcm90b3R5cGUuY29uY2F0PWZ1bmN0aW9uKGUpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gaS5hbGxvYygwKTtpZigxPT09dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXMuaGVhZC5kYXRhO2Zvcih2YXIgdD1pLmFsbG9jVW5zYWZlKGU+Pj4wKSxuPXRoaXMuaGVhZCxyPTA7bjspbi5kYXRhLmNvcHkodCxyKSxyKz1uLmRhdGEubGVuZ3RoLG49bi5uZXh0O3JldHVybiB0fX0se2J1ZmZlcjo1LCJidWZmZXItc2hpbXMiOjR9XSw1MDpbZnVuY3Rpb24oZSx0LG4pe3QuZXhwb3J0cz1lKCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIil9LHsiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyI6NDV9XSw1MTpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihyKXt2YXIgaT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gZSgic3RyZWFtIil9Y2F0Y2godCl7fX0oKTtuPXQuZXhwb3J0cz1lKCIuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiksbi5TdHJlYW09aXx8bixuLlJlYWRhYmxlPW4sbi5Xcml0YWJsZT1lKCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiksbi5EdXBsZXg9ZSgiLi9saWIvX3N0cmVhbV9kdXBsZXguanMiKSxuLlRyYW5zZm9ybT1lKCIuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIpLG4uUGFzc1Rocm91Z2g9ZSgiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIpLCFyLmJyb3dzZXImJiJkaXNhYmxlIj09PXIuZW52LlJFQURBQkxFX1NUUkVBTSYmaSYmKHQuZXhwb3J0cz1pKX0pLmNhbGwodGhpcyxlKCJfcHJvY2VzcyIpKX0seyIuL2xpYi9fc3RyZWFtX2R1cGxleC5qcyI6NDQsIi4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiOjQ1LCIuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIjo0NiwiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiOjQ3LCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIjo0OCxfcHJvY2Vzczo0Mn1dLDUyOltmdW5jdGlvbihlLHQsbil7dC5leHBvcnRzPWUoIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIil9LHsiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiOjQ3fV0sNTM6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9ZSgiLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIpfSx7Ii4vbGliL19zdHJlYW1fd3JpdGFibGUuanMiOjQ4fV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWy1cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9fSx7fV0sNTU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7aS5jYWxsKHRoaXMpfXQuZXhwb3J0cz1yO3ZhciBpPWUoImV2ZW50cyIpLkV2ZW50RW1pdHRlcixhPWUoImluaGVyaXRzIik7YShyLGkpLHIuUmVhZGFibGU9ZSgicmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIiksci5Xcml0YWJsZT1lKCJyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMiKSxyLkR1cGxleD1lKCJyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiksci5UcmFuc2Zvcm09ZSgicmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcyIpLHIuUGFzc1Rocm91Z2g9ZSgicmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiksci5TdHJlYW09cixyLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtlLndyaXRhYmxlJiYhMT09PWUud3JpdGUodCkmJnUucGF1c2UmJnUucGF1c2UoKX1mdW5jdGlvbiByKCl7dS5yZWFkYWJsZSYmdS5yZXN1bWUmJnUucmVzdW1lKCl9ZnVuY3Rpb24gYSgpe2N8fChjPSEwLGUuZW5kKCkpfWZ1bmN0aW9uIG8oKXtjfHwoYz0hMCwiZnVuY3Rpb24iPT10eXBlb2YgZS5kZXN0cm95JiZlLmRlc3Ryb3koKSl9ZnVuY3Rpb24gcyhlKXtpZihsKCksMD09PWkubGlzdGVuZXJDb3VudCh0aGlzLCJlcnJvciIpKXRocm93IGV9ZnVuY3Rpb24gbCgpe3UucmVtb3ZlTGlzdGVuZXIoImRhdGEiLG4pLGUucmVtb3ZlTGlzdGVuZXIoImRyYWluIixyKSx1LnJlbW92ZUxpc3RlbmVyKCJlbmQiLGEpLHUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixvKSx1LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIscyksZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLHMpLHUucmVtb3ZlTGlzdGVuZXIoImVuZCIsbCksdS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLGwpLGUucmVtb3ZlTGlzdGVuZXIoImNsb3NlIixsKX12YXIgdT10aGlzO3Uub24oImRhdGEiLG4pLGUub24oImRyYWluIixyKSxlLl9pc1N0ZGlvfHx0JiZ0LmVuZD09PSExfHwodS5vbigiZW5kIixhKSx1Lm9uKCJjbG9zZSIsbykpO3ZhciBjPSExO3JldHVybiB1Lm9uKCJlcnJvciIscyksZS5vbigiZXJyb3IiLHMpLHUub24oImVuZCIsbCksdS5vbigiY2xvc2UiLGwpLGUub24oImNsb3NlIixsKSxlLmVtaXQoInBpcGUiLHUpLGV9fSx7ZXZlbnRzOjI4LGluaGVyaXRzOjM4LCJyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIjo0MywicmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIjo1MCwicmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIjo1MSwicmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcyI6NTIsInJlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyI6NTN9XSw1NjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYoZSYmIWwoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gYShlKXt0aGlzLmNoYXJSZWNlaXZlZD1lLmxlbmd0aCUyLHRoaXMuY2hhckxlbmd0aD10aGlzLmNoYXJSZWNlaXZlZD8yOjB9ZnVuY3Rpb24gbyhlKXt0aGlzLmNoYXJSZWNlaXZlZD1lLmxlbmd0aCUzLHRoaXMuY2hhckxlbmd0aD10aGlzLmNoYXJSZWNlaXZlZD8zOjB9dmFyIHM9ZSgiYnVmZmVyIikuQnVmZmVyLGw9cy5pc0VuY29kaW5nfHxmdW5jdGlvbihlKXtzd2l0Y2goZSYmZS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpjYXNlInJhdyI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LHU9bi5TdHJpbmdEZWNvZGVyPWZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLmVuY29kaW5nPShlfHwidXRmOCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXS8sIiIpLHIoZSksdGhpcy5lbmNvZGluZyl7Y2FzZSJ1dGY4Ijp0aGlzLnN1cnJvZ2F0ZVNpemU9MzticmVhaztjYXNlInVjczIiOmNhc2UidXRmMTZsZSI6dGhpcy5zdXJyb2dhdGVTaXplPTIsdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhcj1hO2JyZWFrO2Nhc2UiYmFzZTY0Ijp0aGlzLnN1cnJvZ2F0ZVNpemU9Myx0aGlzLmRldGVjdEluY29tcGxldGVDaGFyPW87YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCh0aGlzLndyaXRlPWkpfXRoaXMuY2hhckJ1ZmZlcj1uZXcgcyg2KSx0aGlzLmNoYXJSZWNlaXZlZD0wLHRoaXMuY2hhckxlbmd0aD0wfTt1LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9IiI7dGhpcy5jaGFyTGVuZ3RoOyl7dmFyIG49ZS5sZW5ndGg+PXRoaXMuY2hhckxlbmd0aC10aGlzLmNoYXJSZWNlaXZlZD90aGlzLmNoYXJMZW5ndGgtdGhpcy5jaGFyUmVjZWl2ZWQ6ZS5sZW5ndGg7aWYoZS5jb3B5KHRoaXMuY2hhckJ1ZmZlcix0aGlzLmNoYXJSZWNlaXZlZCwwLG4pLHRoaXMuY2hhclJlY2VpdmVkKz1uLHRoaXMuY2hhclJlY2VpdmVkPHRoaXMuY2hhckxlbmd0aClyZXR1cm4iIjtlPWUuc2xpY2UobixlLmxlbmd0aCksdD10aGlzLmNoYXJCdWZmZXIuc2xpY2UoMCx0aGlzLmNoYXJMZW5ndGgpLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO3ZhciByPXQuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKTtpZighKHI+PTU1Mjk2JiZyPD01NjMxOSkpe2lmKHRoaXMuY2hhclJlY2VpdmVkPXRoaXMuY2hhckxlbmd0aD0wLDA9PT1lLmxlbmd0aClyZXR1cm4gdDticmVha310aGlzLmNoYXJMZW5ndGgrPXRoaXMuc3Vycm9nYXRlU2l6ZSx0PSIifXRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoZSk7dmFyIGk9ZS5sZW5ndGg7dGhpcy5jaGFyTGVuZ3RoJiYoZS5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLGUubGVuZ3RoLXRoaXMuY2hhclJlY2VpdmVkLGkpLGktPXRoaXMuY2hhclJlY2VpdmVkKSx0Kz1lLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCxpKTt2YXIgaT10Lmxlbmd0aC0xLHI9dC5jaGFyQ29kZUF0KGkpO2lmKHI+PTU1Mjk2JiZyPD01NjMxOSl7dmFyIGE9dGhpcy5zdXJyb2dhdGVTaXplO3JldHVybiB0aGlzLmNoYXJMZW5ndGgrPWEsdGhpcy5jaGFyUmVjZWl2ZWQrPWEsdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLGEsMCxhKSxlLmNvcHkodGhpcy5jaGFyQnVmZmVyLDAsMCxhKSx0LnN1YnN0cmluZygwLGkpfXJldHVybiB0fSx1LnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhcj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGg+PTM/MzplLmxlbmd0aDt0PjA7dC0tKXt2YXIgbj1lW2UubGVuZ3RoLXRdO2lmKDE9PXQmJm4+PjU9PTYpe3RoaXMuY2hhckxlbmd0aD0yO2JyZWFrfWlmKHQ8PTImJm4+PjQ9PTE0KXt0aGlzLmNoYXJMZW5ndGg9MzticmVha31pZih0PD0zJiZuPj4zPT0zMCl7dGhpcy5jaGFyTGVuZ3RoPTQ7YnJlYWt9fXRoaXMuY2hhclJlY2VpdmVkPXR9LHUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlKXt2YXIgdD0iIjtpZihlJiZlLmxlbmd0aCYmKHQ9dGhpcy53cml0ZShlKSksdGhpcy5jaGFyUmVjZWl2ZWQpe3ZhciBuPXRoaXMuY2hhclJlY2VpdmVkLHI9dGhpcy5jaGFyQnVmZmVyLGk9dGhpcy5lbmNvZGluZzt0Kz1yLnNsaWNlKDAsbikudG9TdHJpbmcoaSl9cmV0dXJuIHR9fSx7YnVmZmVyOjV9XSw1NzpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUsdCl7ZnVuY3Rpb24gbigpe2lmKCFpKXtpZihyKCJ0aHJvd0RlcHJlY2F0aW9uIikpdGhyb3cgbmV3IEVycm9yKHQpO3IoInRyYWNlRGVwcmVjYXRpb24iKT9jb25zb2xlLnRyYWNlKHQpOmNvbnNvbGUud2Fybih0KSxpPSEwfXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pZihyKCJub0RlcHJlY2F0aW9uIikpcmV0dXJuIGU7dmFyIGk9ITE7cmV0dXJuIG59ZnVuY3Rpb24gcih0KXt0cnl7aWYoIWUubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKG4pe3JldHVybiExfXZhciByPWUubG9jYWxTdG9yYWdlW3RdO3JldHVybiBudWxsIT1yJiYidHJ1ZSI9PT1TdHJpbmcocikudG9Mb3dlckNhc2UoKX10LmV4cG9ydHM9bn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDU4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe2Zvcih2YXIgZT17fSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKWkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX10LmV4cG9ydHM9cjt2YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5fSx7fV19LHt9LFsxXSkoMSl9KSxmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5Td2FnZ2VyQ2xpZW50PWUoKX19KGZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uIG4oZSx0LHIpe2Z1bmN0aW9uIGkobyxzKXtpZighdFtvXSl7aWYoIWVbb10pe3ZhciBsPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFzJiZsKXJldHVybiBsKG8sITApO2lmKGEpcmV0dXJuIGEobywhMCk7dmFyIHU9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Rocm93IHUuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsdX12YXIgYz10W29dPXtleHBvcnRzOnt9fTtlW29dWzBdLmNhbGwoYy5leHBvcnRzLGZ1bmN0aW9uKHQpe3ZhciBuPWVbb11bMV1bdF07cmV0dXJuIGkobj9uOnQpfSxjLGMuZXhwb3J0cyxuLGUsdCxyKX1yZXR1cm4gdFtvXS5leHBvcnRzfWZvcih2YXIgYT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxvPTA7bzxyLmxlbmd0aDtvKyspaShyW29dKTtyZXR1cm4gaX0oezE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi9saWIvYXV0aCIpLGk9ZSgiLi9saWIvaGVscGVycyIpLGE9ZSgiLi9saWIvY2xpZW50Iiksbz1mdW5jdGlvbihlLHQpe3JldHVybiBpLmxvZygnVGhpcyBpcyBkZXByZWNhdGVkLCB1c2UgIm5ldyBTd2FnZ2VyQ2xpZW50IiBpbnN0ZWFkLicpLG5ldyBhKGUsdCl9O0FycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dHx8MCxyPXRoaXMubGVuZ3RoO248cjtuKyspaWYodGhpc1tuXT09PWUpcmV0dXJuIG47cmV0dXJuLTF9KSxTdHJpbmcucHJvdG90eXBlLnRyaW18fChTdHJpbmcucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KSxTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRofHwoU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbmRleE9mKGUsdGhpcy5sZW5ndGgtZS5sZW5ndGgpIT09LTF9KSx0LmV4cG9ydHM9YSxhLkFwaUtleUF1dGhvcml6YXRpb249ci5BcGlLZXlBdXRob3JpemF0aW9uLGEuUGFzc3dvcmRBdXRob3JpemF0aW9uPXIuUGFzc3dvcmRBdXRob3JpemF0aW9uLGEuQ29va2llQXV0aG9yaXphdGlvbj1yLkNvb2tpZUF1dGhvcml6YXRpb24sYS5Td2FnZ2VyQXBpPW8sYS5Td2FnZ2VyQ2xpZW50PW8sYS5TY2hlbWFNYXJrdXA9ZSgiLi9saWIvc2NoZW1hLW1hcmt1cCIpfSx7Ii4vbGliL2F1dGgiOjIsIi4vbGliL2NsaWVudCI6MywiLi9saWIvaGVscGVycyI6NCwiLi9saWIvc2NoZW1hLW1hcmt1cCI6N31dLDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi9oZWxwZXJzIiksaT1lKCJidG9hIiksYT1lKCJjb29raWVqYXIiKS5Db29raWVKYXIsbz17ZWFjaDplKCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZWFjaCIpLGluY2x1ZGVzOmUoImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9pbmNsdWRlcyIpLGlzT2JqZWN0OmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCIpLGlzQXJyYXk6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXkiKX0scz10LmV4cG9ydHMuU3dhZ2dlckF1dGhvcml6YXRpb25zPWZ1bmN0aW9uKGUpe3RoaXMuYXV0aHo9ZXx8e319O3MucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQpe2lmKG8uaXNPYmplY3QoZSkpZm9yKHZhciBuIGluIGUpdGhpcy5hdXRoeltuXT1lW25dO2Vsc2Uic3RyaW5nIj09dHlwZW9mIGUmJih0aGlzLmF1dGh6W2VdPXQpO3JldHVybiB0fSxzLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF1dGh6W2VdfSxzLnByb3RvdHlwZS5hcHBseT1mdW5jdGlvbihlLHQpe3ZhciBuPSEwLHI9IXQsaT1bXSxhPWUuY2xpZW50QXV0aG9yaXphdGlvbnN8fHRoaXMuYXV0aHo7cmV0dXJuIG8uZWFjaCh0LGZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiB0JiZpLnB1c2godCksby5lYWNoKGUsZnVuY3Rpb24oZSx0KXtpLnB1c2godCl9KX0pLG8uZWFjaChhLGZ1bmN0aW9uKHQsYSl7aWYocnx8by5pbmNsdWRlcyhpLGEpKXt2YXIgcz10LmFwcGx5KGUpO249biYmISFzfX0pLG59O3ZhciBsPXQuZXhwb3J0cy5BcGlLZXlBdXRob3JpemF0aW9uPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLm5hbWU9ZSx0aGlzLnZhbHVlPXQsdGhpcy50eXBlPW59O2wucHJvdG90eXBlLmFwcGx5PWZ1bmN0aW9uKGUpe2lmKCJxdWVyeSI9PT10aGlzLnR5cGUpe3ZhciB0O2lmKGUudXJsLmluZGV4T2YoIj8iKT4wKXt0PWUudXJsLnN1YnN0cmluZyhlLnVybC5pbmRleE9mKCI/IikrMSk7dmFyIG49dC5zcGxpdCgiJiIpO2lmKG4mJm4ubGVuZ3RoPjApZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBpPW5bcl0uc3BsaXQoIj0iKTtpZihpJiZpLmxlbmd0aD4wJiZpWzBdPT09dGhpcy5uYW1lKXJldHVybiExfX1yZXR1cm4gZS51cmwuaW5kZXhPZigiPyIpPjA/ZS51cmw9ZS51cmwrIiYiK3RoaXMubmFtZSsiPSIrdGhpcy52YWx1ZTplLnVybD1lLnVybCsiPyIrdGhpcy5uYW1lKyI9Iit0aGlzLnZhbHVlLCEwfWlmKCJoZWFkZXIiPT09dGhpcy50eXBlKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5oZWFkZXJzW3RoaXMubmFtZV0mJihlLmhlYWRlcnNbdGhpcy5uYW1lXT10aGlzLnZhbHVlKSwhMH07dmFyIHU9dC5leHBvcnRzLkNvb2tpZUF1dGhvcml6YXRpb249ZnVuY3Rpb24oZSl7dGhpcy5jb29raWU9ZX07dS5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29va2llSmFyPWUuY29va2llSmFyfHxuZXcgYSxlLmNvb2tpZUphci5zZXRDb29raWUodGhpcy5jb29raWUpLCEwfTt2YXIgYz10LmV4cG9ydHMuUGFzc3dvcmRBdXRob3JpemF0aW9uPWZ1bmN0aW9uKGUsdCl7Mz09PWFyZ3VtZW50cy5sZW5ndGgmJihyLmxvZygiUGFzc3dvcmRBdXRob3JpemF0aW9uOiB0aGUgJ25hbWUnIGFyZ3VtZW50IGhhcyBiZWVuIHJlbW92ZWQsIHBhc3Mgb25seSB1c2VybmFtZSBhbmQgcGFzc3dvcmQiKSxlPWFyZ3VtZW50c1sxXSx0PWFyZ3VtZW50c1syXSksdGhpcy51c2VybmFtZT1lLHRoaXMucGFzc3dvcmQ9dH07Yy5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlLmhlYWRlcnMuQXV0aG9yaXphdGlvbiYmKGUuaGVhZGVycy5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2kodGhpcy51c2VybmFtZSsiOiIrdGhpcy5wYXNzd29yZCkpLCEwfX0seyIuL2hlbHBlcnMiOjQsYnRvYToxMyxjb29raWVqYXI6MTgsImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9lYWNoIjo1MiwibG9kYXNoLWNvbXBhdC9jb2xsZWN0aW9uL2luY2x1ZGVzIjo1NSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXkiOjE0MCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0IjoxNDR9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtiaW5kOmUoImxvZGFzaC1jb21wYXQvZnVuY3Rpb24vYmluZCIpLGNsb25lRGVlcDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvY2xvbmVEZWVwIiksZmluZDplKCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZmluZCIpLGZvckVhY2g6ZSgibG9kYXNoLWNvbXBhdC9jb2xsZWN0aW9uL2ZvckVhY2giKSxpbmRleE9mOmUoImxvZGFzaC1jb21wYXQvYXJyYXkvaW5kZXhPZiIpLGlzQXJyYXk6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXkiKSxpc09iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiKSxpc0Z1bmN0aW9uOmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc0Z1bmN0aW9uIiksaXNQbGFpbk9iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCIpLGlzVW5kZWZpbmVkOmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc1VuZGVmaW5lZCIpfSxpPWUoIi4vYXV0aCIpLGE9ZSgiLi9oZWxwZXJzIiksbz1lKCIuL3R5cGVzL21vZGVsIikscz1lKCIuL3R5cGVzL29wZXJhdGlvbiIpLGw9ZSgiLi90eXBlcy9vcGVyYXRpb25Hcm91cCIpLHU9ZSgiLi9yZXNvbHZlciIpLGM9ZSgiLi9odHRwIikscD1lKCIuL3NwZWMtY29udmVydGVyIiksaD1lKCJxIiksZj1bImFwaXMiLCJhdXRob3JpemF0aW9uU2NoZW1lIiwiYXV0aG9yaXphdGlvbnMiLCJiYXNlUGF0aCIsImJ1aWxkIiwiYnVpbGRGcm9tMV8xU3BlYyIsImJ1aWxkRnJvbTFfMlNwZWMiLCJidWlsZEZyb21TcGVjIiwiY2xpZW50QXV0aG9yaXphdGlvbnMiLCJjb252ZXJ0SW5mbyIsImRlYnVnIiwiZGVmYXVsdEVycm9yQ2FsbGJhY2siLCJkZWZhdWx0U3VjY2Vzc0NhbGxiYWNrIiwiZW5hYmxlQ29va2llcyIsImZhaWwiLCJmYWlsdXJlIiwiZmluaXNoIiwiaGVscCIsImhvc3QiLCJpZEZyb21PcCIsImluZm8iLCJpbml0aWFsaXplIiwiaXNCdWlsdCIsImlzVmFsaWQiLCJtb2RlbFByb3BlcnR5TWFjcm8iLCJtb2RlbHMiLCJtb2RlbHNBcnJheSIsIm9wdGlvbnMiLCJwYXJhbWV0ZXJNYWNybyIsInBhcnNlVXJpIiwicHJvZ3Jlc3MiLCJyZXNvdXJjZUNvdW50Iiwic2FtcGxlTW9kZWxzIiwic2VsZlJlZmxlY3QiLCJzZXRDb25zb2xpZGF0ZWRNb2RlbHMiLCJzcGVjIiwic3VwcG9ydGVkU3VibWl0TWV0aG9kcyIsInN3YWdnZXJSZXF1ZXN0SGVhZGVycyIsInRhZ0Zyb21MYWJlbCIsInRpdGxlIiwidXJsIiwidXNlSlF1ZXJ5IiwianF1ZXJ5QWpheENhY2hlIl0sZD1bImFwaXMiLCJhc0N1cmwiLCJkZXNjcmlwdGlvbiIsImV4dGVybmFsRG9jcyIsImhlbHAiLCJsYWJlbCIsIm5hbWUiLCJvcGVyYXRpb24iLCJvcGVyYXRpb25zIiwib3BlcmF0aW9uc0FycmF5IiwicGF0aCIsInRhZyJdLG09WyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyIsInBhdGNoIiwicG9zdCIsInB1dCJdLGc9dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuYXV0aG9yaXphdGlvbnM9bnVsbCx0aGlzLmF1dGhvcml6YXRpb25TY2hlbWU9bnVsbCx0aGlzLmJhc2VQYXRoPW51bGwsdGhpcy5kZWJ1Zz0hMSx0aGlzLmVuYWJsZUNvb2tpZXM9ITEsdGhpcy5pbmZvPW51bGwsdGhpcy5pc0J1aWx0PSExLHRoaXMuaXNWYWxpZD0hMSx0aGlzLm1vZGVsc0FycmF5PVtdLHRoaXMucmVzb3VyY2VDb3VudD0wLHRoaXMudXJsPW51bGwsdGhpcy51c2VKUXVlcnk9ITEsdGhpcy5qcXVlcnlBamF4Q2FjaGU9ITEsdGhpcy5zd2FnZ2VyT2JqZWN0PXt9LHRoaXMuZGVmZXJyZWRDbGllbnQ9dm9pZCAwLHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnM9bmV3IGkuU3dhZ2dlckF1dGhvcml6YXRpb25zLCJ1bmRlZmluZWQiIT10eXBlb2YgZT90aGlzLmluaXRpYWxpemUoZSx0KTp0aGlzfTtnLnByb3RvdHlwZS5pbml0aWFsaXplPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5tb2RlbHM9e30sdGhpcy5zYW1wbGVNb2RlbHM9e30sInN0cmluZyI9PXR5cGVvZiBlP3RoaXMudXJsPWU6ci5pc09iamVjdChlKSYmKHQ9ZSx0aGlzLnVybD10LnVybCksdGhpcy51cmwmJnRoaXMudXJsLmluZGV4T2YoImh0dHA6Iik9PT0tMSYmdGhpcy51cmwuaW5kZXhPZigiaHR0cHM6Iik9PT0tMSYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmxvY2F0aW9uJiYodGhpcy51cmw9d2luZG93LmxvY2F0aW9uLm9yaWdpbit0aGlzLnVybCksdD10fHx7fSx0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zLmFkZCh0LmF1dGhvcml6YXRpb25zKSx0aGlzLnN3YWdnZXJSZXF1ZXN0SGVhZGVycz10LnN3YWdnZXJSZXF1ZXN0SGVhZGVyc3x8ImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCwqLyoiLHRoaXMuZGVmYXVsdFN1Y2Nlc3NDYWxsYmFjaz10LmRlZmF1bHRTdWNjZXNzQ2FsbGJhY2t8fG51bGwsdGhpcy5kZWZhdWx0RXJyb3JDYWxsYmFjaz10LmRlZmF1bHRFcnJvckNhbGxiYWNrfHxudWxsLHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvPXQubW9kZWxQcm9wZXJ0eU1hY3JvfHxudWxsLHRoaXMuY29ubmVjdGlvbkFnZW50PXQuY29ubmVjdGlvbkFnZW50fHxudWxsLHRoaXMucGFyYW1ldGVyTWFjcm89dC5wYXJhbWV0ZXJNYWNyb3x8bnVsbCx0aGlzLnVzZVByb21pc2U9dC51c2VQcm9taXNlfHxudWxsLHRoaXMudGltZW91dD10LnRpbWVvdXR8fG51bGwsdGhpcy5mZXRjaFNwZWNUaW1lb3V0PSJ1bmRlZmluZWQiIT10eXBlb2YgdC5mZXRjaFNwZWNUaW1lb3V0P3QuZmV0Y2hTcGVjVGltZW91dDp0LnRpbWVvdXR8fG51bGwsdGhpcy51c2VQcm9taXNlJiYodGhpcy5kZWZlcnJlZENsaWVudD1oLmRlZmVyKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1Y2Nlc3MmJih0aGlzLnN1Y2Nlc3M9dC5zdWNjZXNzKSx0LnVzZUpRdWVyeSYmKHRoaXMudXNlSlF1ZXJ5PXQudXNlSlF1ZXJ5KSx0LmpxdWVyeUFqYXhDYWNoZSYmKHRoaXMuanF1ZXJ5QWpheENhY2hlPXQuanF1ZXJ5QWpheENhY2hlKSx0LmVuYWJsZUNvb2tpZXMmJih0aGlzLmVuYWJsZUNvb2tpZXM9dC5lbmFibGVDb29raWVzKSx0aGlzLm9wdGlvbnM9dHx8e30sdGhpcy5vcHRpb25zLnRpbWVvdXQ9dGhpcy50aW1lb3V0LHRoaXMub3B0aW9ucy5mZXRjaFNwZWNUaW1lb3V0PXRoaXMuZmV0Y2hTcGVjVGltZW91dCx0aGlzLnN1cHBvcnRlZFN1Ym1pdE1ldGhvZHM9dC5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzfHxbXSx0aGlzLmZhaWx1cmU9dC5mYWlsdXJlfHxmdW5jdGlvbihlKXt0aHJvdyBlfSx0aGlzLnByb2dyZXNzPXQucHJvZ3Jlc3N8fGZ1bmN0aW9uKCl7fSx0aGlzLnNwZWM9ci5jbG9uZURlZXAodC5zcGVjKSx0LnNjaGVtZSYmKHRoaXMuc2NoZW1lPXQuc2NoZW1lKSx0aGlzLnVzZVByb21pc2V8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1Y2Nlc3MpcmV0dXJuIHRoaXMucmVhZHk9ITAsdGhpcy5idWlsZCgpfSxnLnByb3RvdHlwZS5idWlsZD1mdW5jdGlvbihlKXtpZih0aGlzLmlzQnVpbHQpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpczt0aGlzLnNwZWM/dGhpcy5wcm9ncmVzcygiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdDsgUGxlYXNlIHdhaXQuIik6dGhpcy5wcm9ncmVzcygiZmV0Y2hpbmcgcmVzb3VyY2UgbGlzdDogIit0aGlzLnVybCsiOyBQbGVhc2Ugd2FpdC4iKTt2YXIgbj17dXNlSlF1ZXJ5OnRoaXMudXNlSlF1ZXJ5LGpxdWVyeUFqYXhDYWNoZTp0aGlzLmpxdWVyeUFqYXhDYWNoZSxjb25uZWN0aW9uQWdlbnQ6dGhpcy5jb25uZWN0aW9uQWdlbnQsZW5hYmxlQ29va2llczp0aGlzLmVuYWJsZUNvb2tpZXMsdXJsOnRoaXMudXJsLG1ldGhvZDoiZ2V0IixoZWFkZXJzOnthY2NlcHQ6dGhpcy5zd2FnZ2VyUmVxdWVzdEhlYWRlcnN9LG9uOntlcnJvcjpmdW5jdGlvbihlKXtyZXR1cm4gdCYmdC51cmwmJiJodHRwIiE9PXQudXJsLnN1YnN0cmluZygwLDQpP3QuZmFpbCgiUGxlYXNlIHNwZWNpZnkgdGhlIHByb3RvY29sIGZvciAiK3QudXJsKTohZS5lcnJPYmp8fCJFQ09OTkFCT1JURUQiIT09ZS5lcnJPYmouY29kZSYmZS5lcnJPYmoubWVzc2FnZS5pbmRleE9mKCJ0aW1lb3V0Iik9PT0tMT8wPT09ZS5zdGF0dXM/dC5mYWlsKCJDYW4ndCByZWFkIGZyb20gc2VydmVyLiAgSXQgbWF5IG5vdCBoYXZlIHRoZSBhcHByb3ByaWF0ZSBhY2Nlc3MtY29udHJvbC1vcmlnaW4gc2V0dGluZ3MuIik6NDA0PT09ZS5zdGF0dXM/dC5mYWlsKCJDYW4ndCByZWFkIHN3YWdnZXIgSlNPTiBmcm9tICIrdC51cmwpOnQuZmFpbChlLnN0YXR1cysiIDogIitlLnN0YXR1c1RleHQrIiAiK3QudXJsKTp0LmZhaWwoIlJlcXVlc3QgdGltZWQgb3V0IGFmdGVyICIrdC5mZXRjaFNwZWNUaW1lb3V0KyJtcyIpfSxyZXNwb25zZTpmdW5jdGlvbihlKXt2YXIgbj1lLm9iajtpZighbilyZXR1cm4gdC5mYWlsKCJmYWlsZWQgdG8gcGFyc2UgSlNPTi9ZQU1MIHJlc3BvbnNlIik7aWYodC5zd2FnZ2VyVmVyc2lvbj1uLnN3YWdnZXJWZXJzaW9uLHQuc3dhZ2dlck9iamVjdD1uLG4uc3dhZ2dlciYmMj09PXBhcnNlSW50KG4uc3dhZ2dlcikpdC5zd2FnZ2VyVmVyc2lvbj1uLnN3YWdnZXIsKG5ldyB1KS5yZXNvbHZlKG4sdC51cmwsdC5idWlsZEZyb21TcGVjLHQpLHQuaXNWYWxpZD0hMDtlbHNle3ZhciByPW5ldyBwO3Qub2xkU3dhZ2dlck9iamVjdD10LnN3YWdnZXJPYmplY3Qsci5zZXREb2N1bWVudGF0aW9uTG9jYXRpb24odC51cmwpLHIuY29udmVydChuLHQuY2xpZW50QXV0aG9yaXphdGlvbnMsdC5vcHRpb25zLGZ1bmN0aW9uKGUpe3Quc3dhZ2dlck9iamVjdD1lLChuZXcgdSkucmVzb2x2ZShlLHQudXJsLHQuYnVpbGRGcm9tU3BlYyx0KSx0LmlzVmFsaWQ9ITB9KX19fX07aWYodGhpcy5mZXRjaFNwZWNUaW1lb3V0JiYobi50aW1lb3V0PXRoaXMuZmV0Y2hTcGVjVGltZW91dCksdGhpcy5zcGVjJiYib2JqZWN0Ij09dHlwZW9mIHRoaXMuc3BlYyl0LnN3YWdnZXJPYmplY3Q9dGhpcy5zcGVjLHNldFRpbWVvdXQoZnVuY3Rpb24oKXsobmV3IHUpLnJlc29sdmUodC5zcGVjLHQudXJsLHQuYnVpbGRGcm9tU3BlYyx0KX0sMTApO2Vsc2V7aWYodGhpcy5jbGllbnRBdXRob3JpemF0aW9ucy5hcHBseShuKSxlKXJldHVybiBuOyhuZXcgYykuZXhlY3V0ZShuLHRoaXMub3B0aW9ucyl9cmV0dXJuIHRoaXMudXNlUHJvbWlzZT90aGlzLmRlZmVycmVkQ2xpZW50LnByb21pc2U6dGhpc30sZy5wcm90b3R5cGUuYnVpbGRGcm9tU3BlYz1mdW5jdGlvbihlKXtpZih0aGlzLmlzQnVpbHQpcmV0dXJuIHRoaXM7dGhpcy5hcGlzPXt9LHRoaXMuYXBpc0FycmF5PVtdLHRoaXMuYmFzZVBhdGg9ZS5iYXNlUGF0aHx8IiIsdGhpcy5jb25zdW1lcz1lLmNvbnN1bWVzLHRoaXMuaG9zdD1lLmhvc3R8fCIiLHRoaXMuaW5mbz1lLmluZm98fHt9LHRoaXMucHJvZHVjZXM9ZS5wcm9kdWNlcyx0aGlzLnNjaGVtZXM9ZS5zY2hlbWVzfHxbXSx0aGlzLnNlY3VyaXR5RGVmaW5pdGlvbnM9ci5jbG9uZURlZXAoZS5zZWN1cml0eURlZmluaXRpb25zKSx0aGlzLnNlY3VyaXR5PWUuc2VjdXJpdHksdGhpcy50aXRsZT1lLnRpdGxlfHwiIjt2YXIgdCxuLGksdSxjPXt9LHA9dGhpcztpZihlLmV4dGVybmFsRG9jcyYmKHRoaXMuZXh0ZXJuYWxEb2NzPWUuZXh0ZXJuYWxEb2NzKSx0aGlzLmF1dGhTY2hlbWVzPXRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyx0aGlzLnNlY3VyaXR5RGVmaW5pdGlvbnMpZm9yKHQgaW4gdGhpcy5zZWN1cml0eURlZmluaXRpb25zKXt2YXIgaD10aGlzLnNlY3VyaXR5RGVmaW5pdGlvbnNbdF07aC52ZW5kb3JFeHRlbnNpb25zPXt9O2Zvcih2YXIgZyBpbiBoKWlmKGEuZXh0cmFjdEV4dGVuc2lvbnMoZyxoKSwic2NvcGVzIj09PWcpe3ZhciB5PWhbZ107aWYoIm9iamVjdCI9PXR5cGVvZiB5KXt5LnZlbmRvckV4dGVuc2lvbnM9e307Zm9yKHZhciB2IGluIHkpYS5leHRyYWN0RXh0ZW5zaW9ucyh2LHkpLDA9PT12LmluZGV4T2YoIngtIikmJmRlbGV0ZSB5W3ZdfX19aWYoQXJyYXkuaXNBcnJheShlLnRhZ3MpKWZvcihjPXt9LG49MDtuPGUudGFncy5sZW5ndGg7bisrKXt2YXIgYj1yLmNsb25lRGVlcChlLnRhZ3Nbbl0pO2NbYi5uYW1lXT1iO2Zvcih1IGluIGIpe2lmKCJleHRlcm5hbERvY3MiPT09dSYmIm9iamVjdCI9PXR5cGVvZiBiW3VdKWZvcih2YXIgdyBpbiBiW3VdKWEuZXh0cmFjdEV4dGVuc2lvbnModyxiW3VdKTthLmV4dHJhY3RFeHRlbnNpb25zKHUsYil9fWlmKCJzdHJpbmciPT10eXBlb2YgdGhpcy51cmwpe2lmKGk9dGhpcy5wYXJzZVVyaSh0aGlzLnVybCksInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLnNjaGVtZSYmInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLnNjaGVtZXN8fDA9PT10aGlzLnNjaGVtZXMubGVuZ3RoKSJ1bmRlZmluZWQiIT10eXBlb2YgaSYmInVuZGVmaW5lZCIhPXR5cGVvZiBpLnNjaGVtZSYmKHRoaXMuc2NoZW1lPWkuc2NoZW1lKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cubG9jYXRpb24/dGhpcy5zY2hlbWU9d2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoIjoiLCIiKTp0aGlzLnNjaGVtZT1pLnNjaGVtZXx8Imh0dHAiO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmxvY2F0aW9uJiYwPT09d2luZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoImNocm9tZS1leHRlbnNpb24iKSl0aGlzLnNjaGVtZT1pLnNjaGVtZTtlbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpcy5zY2hlbWUpaWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmxvY2F0aW9uKXt2YXIgXz13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wucmVwbGFjZSgiOiIsIiIpOyJodHRwcyI9PT1fJiZ0aGlzLnNjaGVtZXMuaW5kZXhPZihfKT09PS0xPyhhLmxvZygiQ2Fubm90IGNhbGwgYSBodHRwIHNlcnZlciBmcm9tIGh0dHBzIGluc2lkZSBhIGJyb3dzZXIhIiksdGhpcy5zY2hlbWU9Imh0dHAiKTp0aGlzLnNjaGVtZXMuaW5kZXhPZihfKSE9PS0xP3RoaXMuc2NoZW1lPV86dGhpcy5zY2hlbWVzLmluZGV4T2YoImh0dHBzIikhPT0tMT90aGlzLnNjaGVtZT0iaHR0cHMiOnRoaXMuc2NoZW1lPSJodHRwIn1lbHNlIHRoaXMuc2NoZW1lPXRoaXMuc2NoZW1lc1swXXx8aS5zY2hlbWU7InVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLmhvc3QmJiIiIT09dGhpcy5ob3N0fHwodGhpcy5ob3N0PWkuaG9zdCxpLnBvcnQmJih0aGlzLmhvc3Q9dGhpcy5ob3N0KyI6IitpLnBvcnQpKX1lbHNlInVuZGVmaW5lZCI9PXR5cGVvZiB0aGlzLnNjaGVtZXN8fDA9PT10aGlzLnNjaGVtZXMubGVuZ3RoP3RoaXMuc2NoZW1lPSJodHRwIjoidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMuc2NoZW1lJiYodGhpcy5zY2hlbWU9dGhpcy5zY2hlbWVzWzBdKTt0aGlzLmRlZmluaXRpb25zPWUuZGVmaW5pdGlvbnM7Zm9yKHQgaW4gdGhpcy5kZWZpbml0aW9ucyl7dmFyIHg9bmV3IG8odCx0aGlzLmRlZmluaXRpb25zW3RdLHRoaXMubW9kZWxzLHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvKTt4JiYodGhpcy5tb2RlbHNbdF09eCl9cC5hcGlzLmhlbHA9ci5iaW5kKHAuaGVscCxwKSxyLmZvckVhY2goZS5wYXRocyxmdW5jdGlvbihlLHQpe3IuaXNQbGFpbk9iamVjdChlKSYmci5mb3JFYWNoKG0sZnVuY3Rpb24obil7dmFyIGk9ZVtuXTtpZighci5pc1VuZGVmaW5lZChpKSl7aWYoIXIuaXNQbGFpbk9iamVjdChpKSlyZXR1cm4gdm9pZCBhLmxvZygiVGhlICciK24rIicgb3BlcmF0aW9uIGZvciAnIit0KyInIHBhdGggaXMgbm90IGFuIE9wZXJhdGlvbiBPYmplY3QiKTt2YXIgbz1pLnRhZ3M7IXIuaXNVbmRlZmluZWQobykmJnIuaXNBcnJheShvKSYmMCE9PW8ubGVuZ3RofHwobz1pLnRhZ3M9WyJkZWZhdWx0Il0pO3ZhciBoPXAuaWRGcm9tT3AodCxuLGkpLG09bmV3IHMocCxpLnNjaGVtZSxoLG4sdCxpLHAuZGVmaW5pdGlvbnMscC5tb2RlbHMscC5jbGllbnRBdXRob3JpemF0aW9ucyk7bS5jb25uZWN0aW9uQWdlbnQ9cC5jb25uZWN0aW9uQWdlbnQsbS52ZW5kb3JFeHRlbnNpb25zPXt9O2Zvcih1IGluIGkpYS5leHRyYWN0RXh0ZW5zaW9ucyh1LG0saVt1XSk7aWYobS5leHRlcm5hbERvY3M9aS5leHRlcm5hbERvY3MsbS5leHRlcm5hbERvY3Mpe20uZXh0ZXJuYWxEb2NzPXIuY2xvbmVEZWVwKG0uZXh0ZXJuYWxEb2NzKSxtLmV4dGVybmFsRG9jcy52ZW5kb3JFeHRlbnNpb25zPXt9O2Zvcih1IGluIG0uZXh0ZXJuYWxEb2NzKWEuZXh0cmFjdEV4dGVuc2lvbnModSxtLmV4dGVybmFsRG9jcyl9ci5mb3JFYWNoKG8sZnVuY3Rpb24oZSl7dmFyIHQ9ci5pbmRleE9mKGYsZSk+LTE/Il8iK2U6ZSxuPXIuaW5kZXhPZihkLGUpPi0xPyJfIitlOmUsaT1wW3RdO2lmKHQhPT1lJiZhLmxvZygiVGhlICciK2UrIicgdGFnIGNvbmZsaWN0cyB3aXRoIGEgU3dhZ2dlckNsaWVudCBmdW5jdGlvbi9wcm9wZXJ0eSBuYW1lLiAgVXNlICdjbGllbnQuIit0KyInIG9yICdjbGllbnQuYXBpcy4iK2UrIicgaW5zdGVhZCBvZiAnY2xpZW50LiIrZSsiJy4iKSxuIT09ZSYmYS5sb2coIlRoZSAnIitlKyInIHRhZyBjb25mbGljdHMgd2l0aCBhIFN3YWdnZXJDbGllbnQgb3BlcmF0aW9uIGZ1bmN0aW9uL3Byb3BlcnR5IG5hbWUuICBVc2UgJ2NsaWVudC5hcGlzLiIrbisiJyBpbnN0ZWFkIG9mICdjbGllbnQuYXBpcy4iK2UrIicuIiksci5pbmRleE9mKGQsaCk+LTEmJihhLmxvZygiVGhlICciK2grIicgb3BlcmF0aW9uSWQgY29uZmxpY3RzIHdpdGggYSBTd2FnZ2VyQ2xpZW50IG9wZXJhdGlvbiBmdW5jdGlvbi9wcm9wZXJ0eSBuYW1lLiAgVXNlICdjbGllbnQuYXBpcy4iK24rIi5fIitoKyInIGluc3RlYWQgb2YgJ2NsaWVudC5hcGlzLiIrbisiLiIraCsiJy4iKSxoPSJfIitoLG0ubmlja25hbWU9aCksci5pc1VuZGVmaW5lZChpKSl7aT1wW3RdPXAuYXBpc1tuXT17fSxpLm9wZXJhdGlvbnM9e30saS5sYWJlbD1uLGkuYXBpcz17fTt2YXIgbz1jW2VdO3IuaXNVbmRlZmluZWQobyl8fChpLmRlc2NyaXB0aW9uPW8uZGVzY3JpcHRpb24saS5leHRlcm5hbERvY3M9by5leHRlcm5hbERvY3MsaS52ZW5kb3JFeHRlbnNpb25zPW8udmVuZG9yRXh0ZW5zaW9ucykscFt0XS5oZWxwPXIuYmluZChwLmhlbHAsaSkscC5hcGlzQXJyYXkucHVzaChuZXcgbChlLGkuZGVzY3JpcHRpb24saS5leHRlcm5hbERvY3MsbSkpfWg9cC5tYWtlVW5pcXVlT3BlcmF0aW9uSWQoaCxwLmFwaXNbbl0pLHIuaXNGdW5jdGlvbihpLmhlbHApfHwoaS5oZWxwPXIuYmluZChwLmhlbHAsaSkpLHAuYXBpc1tuXVtoXT1pW2hdPXIuYmluZChtLmV4ZWN1dGUsbSkscC5hcGlzW25dW2hdLmhlbHA9aVtoXS5oZWxwPXIuYmluZChtLmhlbHAsbSkscC5hcGlzW25dW2hdLmFzQ3VybD1pW2hdLmFzQ3VybD1yLmJpbmQobS5hc0N1cmwsbSksaS5hcGlzW2hdPWkub3BlcmF0aW9uc1toXT1tO3ZhciBzPXIuZmluZChwLmFwaXNBcnJheSxmdW5jdGlvbih0KXtyZXR1cm4gdC50YWc9PT1lfSk7cyYmcy5vcGVyYXRpb25zQXJyYXkucHVzaChtKX0pfX0pfSk7dmFyIEE9W107cmV0dXJuIHIuZm9yRWFjaChPYmplY3Qua2V5cyhjKSxmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBwLmFwaXNBcnJheSl7dmFyIG49cC5hcGlzQXJyYXlbdF07biYmZT09PW4ubmFtZSYmKEEucHVzaChuKSxwLmFwaXNBcnJheVt0XT1udWxsKX19KSxyLmZvckVhY2gocC5hcGlzQXJyYXksZnVuY3Rpb24oZSl7ZSYmQS5wdXNoKGUpfSkscC5hcGlzQXJyYXk9QSxyLmZvckVhY2goZS5kZWZpbml0aW9ucyxmdW5jdGlvbihlLHQpe2UuaWQ9dC50b0xvd2VyQ2FzZSgpLGUubmFtZT10LHAubW9kZWxzQXJyYXkucHVzaChlKX0pLHRoaXMuaXNCdWlsdD0hMCx0aGlzLnVzZVByb21pc2U/KHRoaXMuaXNWYWxpZD0hMCx0aGlzLmlzQnVpbHQ9ITAsdGhpcy5kZWZlcnJlZENsaWVudC5yZXNvbHZlKHRoaXMpLHRoaXMuZGVmZXJyZWRDbGllbnQucHJvbWlzZSk6KHRoaXMuc3VjY2VzcyYmdGhpcy5zdWNjZXNzKCksdGhpcyl9LGcucHJvdG90eXBlLm1ha2VVbmlxdWVPcGVyYXRpb25JZD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLGk9ZTs7KXt2YXIgYT0hMTtpZihyLmZvckVhY2godC5vcGVyYXRpb25zLGZ1bmN0aW9uKGUpe2Uubmlja25hbWU9PT1pJiYoYT0hMCl9KSwhYSlyZXR1cm4gaTtpPWUrIl8iK24sbisrfXJldHVybiBlfSxnLnByb3RvdHlwZS5wYXJzZVVyaT1mdW5jdGlvbihlKXt2YXIgdD0vXigoKChbXjpcLyNcP10rOik/KD86KFwvXC8pKCg/OigoW146QFwvI1w/XSspKD86XDooW146QFwvI1w/XSspKT8pQCk/KChbXjpcLyNcP1xdXFtdK3xcW1teXC9cXUAjP10rXF0pKD86XDooWzAtOV0rKSk/KSk/KT8pPygoXC8/KD86W15cL1w/I10rXC8rKSopKFteXD8jXSopKSk/KFw/W14jXSspPykoIy4qKT8vLG49dC5leGVjKGUpO3JldHVybntzY2hlbWU6bls0XT9uWzRdLnJlcGxhY2UoIjoiLCIiKTp2b2lkIDAsaG9zdDpuWzExXSxwb3J0Om5bMTJdLHBhdGg6blsxNV19fSxnLnByb3RvdHlwZS5oZWxwPWZ1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiB0aGlzIGluc3RhbmNlb2YgZz9yLmZvckVhY2godGhpcy5hcGlzLGZ1bmN0aW9uKGUsbil7ci5pc1BsYWluT2JqZWN0KGUpJiYodCs9Im9wZXJhdGlvbnMgZm9yIHRoZSAnIituKyInIHRhZ1xuIixyLmZvckVhY2goZS5vcGVyYXRpb25zLGZ1bmN0aW9uKGUsbil7dCs9IiAgKiAiK24rIjogIitlLnN1bW1hcnkrIlxuIn0pKX0pOih0aGlzIGluc3RhbmNlb2YgbHx8ci5pc1BsYWluT2JqZWN0KHRoaXMpKSYmKHQrPSJvcGVyYXRpb25zIGZvciB0aGUgJyIrdGhpcy5sYWJlbCsiJyB0YWdcbiIsci5mb3JFYWNoKHRoaXMuYXBpcyxmdW5jdGlvbihlLG4pe3QrPSIgICogIituKyI6ICIrZS5zdW1tYXJ5KyJcbiJ9KSksZT90OihhLmxvZyh0KSx0KX0sZy5wcm90b3R5cGUudGFnRnJvbUxhYmVsPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnLnByb3RvdHlwZS5pZEZyb21PcD1mdW5jdGlvbihlLHQsbil7biYmbi5vcGVyYXRpb25JZHx8KG49bnx8e30sbi5vcGVyYXRpb25JZD10KyJfIitlKTt2YXIgcj1uLm9wZXJhdGlvbklkLnJlcGxhY2UoL1tccyFAIyQlXiYqKClfKz1cW3tcXX07Ojw+fC5cLz8sXFwnIiItXS9nLCJfIil8fGUuc3Vic3RyaW5nKDEpKyJfIit0O3JldHVybiByPXIucmVwbGFjZSgvKChfKXsyLH0pL2csIl8iKSxyPXIucmVwbGFjZSgvXihfKSovZywiIikscj1yLnJlcGxhY2UoLyhbX10pKiQvZywiIil9LGcucHJvdG90eXBlLnNldEhvc3Q9ZnVuY3Rpb24oZSl7dGhpcy5ob3N0PWUsdGhpcy5hcGlzJiZyLmZvckVhY2godGhpcy5hcGlzLGZ1bmN0aW9uKHQpe3Qub3BlcmF0aW9ucyYmci5mb3JFYWNoKHQub3BlcmF0aW9ucyxmdW5jdGlvbih0KXt0Lmhvc3Q9ZX0pfSl9LGcucHJvdG90eXBlLnNldEJhc2VQYXRoPWZ1bmN0aW9uKGUpe3RoaXMuYmFzZVBhdGg9ZSx0aGlzLmFwaXMmJnIuZm9yRWFjaCh0aGlzLmFwaXMsZnVuY3Rpb24odCl7dC5vcGVyYXRpb25zJiZyLmZvckVhY2godC5vcGVyYXRpb25zLGZ1bmN0aW9uKHQpe3QuYmFzZVBhdGg9ZX0pfSl9LGcucHJvdG90eXBlLnNldFNjaGVtZXM9ZnVuY3Rpb24oZSl7dGhpcy5zY2hlbWVzPWUsZSYmZS5sZW5ndGg+MCYmdGhpcy5hcGlzJiZyLmZvckVhY2godGhpcy5hcGlzLGZ1bmN0aW9uKHQpe3Qub3BlcmF0aW9ucyYmci5mb3JFYWNoKHQub3BlcmF0aW9ucyxmdW5jdGlvbih0KXt0LnNjaGVtZT1lWzBdfSl9KX0sZy5wcm90b3R5cGUuZmFpbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51c2VQcm9taXNlPyh0aGlzLmRlZmVycmVkQ2xpZW50LnJlamVjdChlKSx0aGlzLmRlZmVycmVkQ2xpZW50LnByb21pc2UpOnZvaWQodGhpcy5mYWlsdXJlP3RoaXMuZmFpbHVyZShlKTp0aGlzLmZhaWx1cmUoZSkpfX0seyIuL2F1dGgiOjIsIi4vaGVscGVycyI6NCwiLi9odHRwIjo1LCIuL3Jlc29sdmVyIjo2LCIuL3NwZWMtY29udmVydGVyIjo4LCIuL3R5cGVzL21vZGVsIjo5LCIuL3R5cGVzL29wZXJhdGlvbiI6MTAsIi4vdHlwZXMvb3BlcmF0aW9uR3JvdXAiOjExLCJsb2Rhc2gtY29tcGF0L2FycmF5L2luZGV4T2YiOjQ5LCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZmluZCI6NTMsImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9mb3JFYWNoIjo1NCwibG9kYXNoLWNvbXBhdC9mdW5jdGlvbi9iaW5kIjo1OCwibG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCI6MTM4LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheSI6MTQwLCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNGdW5jdGlvbiI6MTQyLCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiOjE0NCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QiOjE0NSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzVW5kZWZpbmVkIjoxNDgscToxNTd9XSw0OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17aXNQbGFpbk9iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCIpLGluZGV4T2Y6ZSgibG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mIil9O3QuZXhwb3J0cy5fX2JpbmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fTt2YXIgaT10LmV4cG9ydHMubG9nPWZ1bmN0aW9uKCl7Y29uc29sZSYmInRlc3QiIT09bi5lbnYuTk9ERV9FTlYmJmNvbnNvbGUubG9nKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cylbMF0pfTt0LmV4cG9ydHMuZmFpbD1mdW5jdGlvbihlKXtpKGUpfSx0LmV4cG9ydHMub3B0aW9uSHRtbD1mdW5jdGlvbihlLHQpe3JldHVybic8dHI+PHRkIGNsYXNzPSJvcHRpb25OYW1lIj4nK2UrIjo8L3RkPjx0ZD4iK3QrIjwvdGQ+PC90cj4ifTt2YXIgYT10LmV4cG9ydHMucmVzb2x2ZVNjaGVtYT1mdW5jdGlvbihlKXtyZXR1cm4gci5pc1BsYWluT2JqZWN0KGUuc2NoZW1hKSYmKGU9YShlLnNjaGVtYSkpLGV9O3QuZXhwb3J0cy5zaW1wbGVSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlP251bGw6MD09PWUuaW5kZXhPZigiIy9kZWZpbml0aW9ucy8iKT9lLnN1YnN0cmluZygiIy9kZWZpbml0aW9ucy8iLmxlbmd0aCk6ZX0sdC5leHBvcnRzLmV4dHJhY3RFeHRlbnNpb25zPWZ1bmN0aW9uKGUsdCxuKXtlJiZ0JiYic3RyaW5nIj09dHlwZW9mIGUmJjA9PT1lLmluZGV4T2YoIngtIikmJih0LnZlbmRvckV4dGVuc2lvbnM9dC52ZW5kb3JFeHRlbnNpb25zfHx7fSxuP3QudmVuZG9yRXh0ZW5zaW9uc1tlXT1uOnQudmVuZG9yRXh0ZW5zaW9uc1tlXT10W2VdKX19KS5jYWxsKHRoaXMsZSgiX3Byb2Nlc3MiKSl9LHtfcHJvY2VzczoxMiwibG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mIjo0OSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzUGxhaW5PYmplY3QiOjE0NX1dLDU6W2Z1bmN0aW9uKHQsbixyKXsoZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO3ZhciBpPXQoIi4vaGVscGVycyIpLGE9dCgic3VwZXJhZ2VudCIpLG89dCgianMteWFtbCIpLHM9e2lzT2JqZWN0OnQoImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCIpLGtleXM6dCgibG9kYXNoLWNvbXBhdC9vYmplY3Qva2V5cyIpfSxsPWZ1bmN0aW9uKCl7dGhpcy50eXBlPSJKUXVlcnlIdHRwQ2xpZW50In0sdT1mdW5jdGlvbigpe3RoaXMudHlwZT0iU3VwZXJhZ2VudEh0dHBDbGllbnQifSxjPW4uZXhwb3J0cz1mdW5jdGlvbigpe307Yy5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbih0LG4pe3ZhciByO3I9biYmbi5jbGllbnQ/bi5jbGllbnQ6bmV3IHUobiksci5vcHRzPW58fHt9LG4mJm4ucmVxdWVzdEFnZW50JiYoYT1uLnJlcXVlc3RBZ2VudCk7dmFyIGk9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmpRdWVyeSYmKGk9ITApLCJvcHRpb25zIj09PXQubWV0aG9kLnRvTG93ZXJDYXNlKCkmJiJTdXBlcmFnZW50SHR0cENsaWVudCI9PT1yLnR5cGUmJihlKCJmb3JjaW5nIGpRdWVyeSBhcyBPUFRJT05TIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFN1cGVyQWdlbnQiKSx0LnVzZUpRdWVyeT0hMCksdGhpcy5pc0ludGVybmV0RXhwbG9yZXIoKSYmKHQudXNlSlF1ZXJ5PT09ITF8fCFpKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24hIEpRdWVyeSBpcyByZXF1aXJlZCBidXQgbm90IGF2YWlsYWJsZSIpOyh0JiZ0LnVzZUpRdWVyeT09PSEwfHx0aGlzLmlzSW50ZXJuZXRFeHBsb3JlcigpJiZpKSYmKHI9bmV3IGwobikpO3ZhciBvPXQub24ucmVzcG9uc2UsYz10Lm9uLmVycm9yLHA9ZnVuY3Rpb24oZSl7cmV0dXJuIG4mJm4ucmVxdWVzdEludGVyY2VwdG9yJiYoZT1uLnJlcXVlc3RJbnRlcmNlcHRvci5hcHBseShlKSksZX0saD1mdW5jdGlvbihlKXtyZXR1cm4gbiYmbi5yZXNwb25zZUludGVyY2VwdG9yJiYoZT1uLnJlc3BvbnNlSW50ZXJjZXB0b3IuYXBwbHkoZSxbdF0pKSxvKGUpfSxmPWZ1bmN0aW9uKGUpe24mJm4ucmVzcG9uc2VJbnRlcmNlcHRvciYmKGU9bi5yZXNwb25zZUludGVyY2VwdG9yLmFwcGx5KGUsW3RdKSksYyhlKX07cmV0dXJuIHQub24uZXJyb3I9ZnVuY3Rpb24oZSl7ZihlKX0sdC5vbi5yZXNwb25zZT1mdW5jdGlvbihlKXtlJiZlLnN0YXR1cz49NDAwP2YoZSk6aChlKX0scy5pc09iamVjdCh0KSYmcy5pc09iamVjdCh0LmJvZHkpJiZ0LmJvZHkudHlwZSYmImZvcm1EYXRhIj09PXQuYm9keS50eXBlJiZuLnVzZUpRdWVyeSYmKHQuY29udGVudFR5cGU9ITEsdC5wcm9jZXNzRGF0YT0hMSxkZWxldGUgdC5oZWFkZXJzWyJDb250ZW50LVR5cGUiXSksdD1wKHQpfHx0LHQuYmVmb3JlU2VuZD90LmJlZm9yZVNlbmQoZnVuY3Rpb24oZSl7ci5leGVjdXRlKGV8fHQpfSk6ci5leGVjdXRlKHQpLHQuZGVmZXJyZWQ/dC5kZWZlcnJlZC5wcm9taXNlOnR9LGMucHJvdG90eXBlLmlzSW50ZXJuZXRFeHBsb3Jlcj1mdW5jdGlvbigpe3ZhciBlPSExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50KXt2YXIgdD1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7aWYodC5pbmRleE9mKCJtc2llIikhPT0tMSl7dmFyIG49cGFyc2VJbnQodC5zcGxpdCgibXNpZSIpWzFdKTtuPD04JiYoZT0hMCl9fXJldHVybiBlfSxsLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMualF1ZXJ5fHwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmpRdWVyeSxuPWUub24scj1lO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgdHx8dD09PSExKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiEgSlF1ZXJ5IGlzIHJlcXVpcmVkIGJ1dCBub3QgYXZhaWxhYmxlIik7cmV0dXJuIGUudHlwZT1lLm1ldGhvZCxlLmNhY2hlPWUuanF1ZXJ5QWpheENhY2hlLGUuZGF0YT1lLmJvZHksZGVsZXRlIGUuanF1ZXJ5QWpheENhY2hlLGRlbGV0ZSBlLnVzZUpRdWVyeSxkZWxldGUgZS5ib2R5LGUuY29tcGxldGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXt9LGE9ZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5zcGxpdCgiXG4iKSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc10udHJpbSgpO2lmKDAhPT1sLmxlbmd0aCl7dmFyIHU9bC5pbmRleE9mKCI6Iik7aWYodSE9PS0xKXt2YXIgYz1sLnN1YnN0cmluZygwLHUpLnRyaW0oKSxwPWwuc3Vic3RyaW5nKHUrMSkudHJpbSgpO3RbY109cH1lbHNlIHRbbF09bnVsbH19dmFyIGg9e3VybDpyLnVybCxtZXRob2Q6ci5tZXRob2Qsc3RhdHVzOmUuc3RhdHVzLHN0YXR1c1RleHQ6ZS5zdGF0dXNUZXh0LGRhdGE6ZS5yZXNwb25zZVRleHQsaGVhZGVyczp0fTt0cnl7dmFyIGY9ZS5yZXNwb25zZUpTT058fG8uc2FmZUxvYWQoZS5yZXNwb25zZVRleHQpO2gub2JqPSJzdHJpbmciPT10eXBlb2YgZj97fTpmfWNhdGNoKGQpe2kubG9nKCJ1bmFibGUgdG8gcGFyc2UgSlNPTi9ZQU1MIGNvbnRlbnQiKX1pZihoLm9iaj1oLm9ianx8bnVsbCxlLnN0YXR1cz49MjAwJiZlLnN0YXR1czwzMDApbi5yZXNwb25zZShoKTtlbHNle2lmKCEoMD09PWUuc3RhdHVzfHxlLnN0YXR1cz49NDAwJiZlLnN0YXR1czw1OTkpKXJldHVybiBuLnJlc3BvbnNlKGgpO24uZXJyb3IoaCl9fSx0LnN1cHBvcnQuY29ycz0hMCx0LmFqYXgoZSl9LHUucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tZXRob2QudG9Mb3dlckNhc2UoKSxuPWUudGltZW91dDsiZGVsZXRlIj09PXQmJih0PSJkZWwiKTt2YXIgbD1lLmhlYWRlcnN8fHt9LHU9YVt0XShlLnVybCk7ZS5jb25uZWN0aW9uQWdlbnQmJnUuYWdlbnQoZS5jb25uZWN0aW9uQWdlbnQpLG4mJnUudGltZW91dChuKSxlLmVuYWJsZUNvb2tpZXMmJnUud2l0aENyZWRlbnRpYWxzKCk7dmFyIGM9ZS5oZWFkZXJzLkFjY2VwdDtpZih0aGlzLmJpbmFyeVJlcXVlc3QoYykmJnUub24oInJlcXVlc3QiLGZ1bmN0aW9uKCl7dGhpcy54aHImJih0aGlzLnhoci5yZXNwb25zZVR5cGU9ImJsb2IiKX0pLGUuYm9keSlpZihzLmlzT2JqZWN0KGUuYm9keSkpe3ZhciBwPWUuaGVhZGVyc1siQ29udGVudC1UeXBlIl18fCIiO2lmKDA9PT1wLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKSlpZihkZWxldGUgbFsiQ29udGVudC1UeXBlIl0sIltvYmplY3QgRm9ybURhdGFdIj09PXt9LnRvU3RyaW5nLmFwcGx5KGUuYm9keSkpdS5zZW5kKGUuYm9keSk7ZWxzZXt2YXIgaCxmLGQ7Zm9yKGggaW4gZS5ib2R5KWlmKGY9ZS5ib2R5W2hdLEFycmF5LmlzQXJyYXkoZikpZm9yKGQgaW4gZil1LmZpZWxkKGgsZCk7ZWxzZSB1LmZpZWxkKGgsZil9ZWxzZSBzLmlzT2JqZWN0KGUuYm9keSkmJihlLmJvZHk9SlNPTi5zdHJpbmdpZnkoZS5ib2R5KSx1LnNlbmQoZS5ib2R5KSl9ZWxzZSB1LnNlbmQoZS5ib2R5KTt2YXIgbTtmb3IobSBpbiBsKXUuc2V0KG0sbFttXSk7ImZ1bmN0aW9uIj09dHlwZW9mIHUuYnVmZmVyJiZ1LmJ1ZmZlcigpLHUuZW5kKGZ1bmN0aW9uKHQsbil7bj1ufHx7c3RhdHVzOjAsaGVhZGVyczp7ZXJyb3I6Im5vIHJlc3BvbnNlIGZyb20gc2VydmVyIn19O3ZhciBhLGw9e3VybDplLnVybCxtZXRob2Q6ZS5tZXRob2QsaGVhZGVyczpuLmhlYWRlcnN9O2lmKCF0JiZuLmVycm9yJiYodD1uLmVycm9yKSx0JiZlLm9uJiZlLm9uLmVycm9yKXtpZihsLmVyck9iaj10LGwuc3RhdHVzPW4/bi5zdGF0dXM6NTAwLGwuc3RhdHVzVGV4dD1uP24udGV4dDp0Lm1lc3NhZ2Usbi5oZWFkZXJzJiZuLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdJiZuLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT49MCl0cnl7bC5vYmo9SlNPTi5wYXJzZShsLnN0YXR1c1RleHQpfWNhdGNoKHUpe2wub2JqPW51bGx9YT1lLm9uLmVycm9yfWVsc2UgaWYobiYmZS5vbiYmZS5vbi5yZXNwb25zZSl7dmFyIGM7aWYobi5ib2R5JiZzLmtleXMobi5ib2R5KS5sZW5ndGg+MCljPW4uYm9keTtlbHNlIHRyeXtjPW8uc2FmZUxvYWQobi50ZXh0KSxjPSJzdHJpbmciPT10eXBlb2YgYz9udWxsOmN9Y2F0Y2godSl7aS5sb2coImNhbm5vdCBwYXJzZSBKU09OL1lBTUwgY29udGVudCIpfSJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmlzQnVmZmVyKGMpP2wuZGF0YT1jOmwub2JqPSJvYmplY3QiPT10eXBlb2YgYz9jOm51bGwsbC5zdGF0dXM9bi5zdGF0dXMsbC5zdGF0dXNUZXh0PW4udGV4dCxhPWUub24ucmVzcG9uc2V9bi54aHImJm4ueGhyLnJlc3BvbnNlP2wuZGF0YT1uLnhoci5yZXNwb25zZTpsLmRhdGF8fChsLmRhdGE9bC5zdGF0dXNUZXh0KSxhJiZhKGwpfSl9LHUucHJvdG90eXBlLmJpbmFyeVJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYoL15pbWFnZS9pLnRlc3QoZSl8fC9eYXBwbGljYXRpb25cL3BkZi8udGVzdChlKXx8L15hcHBsaWNhdGlvblwvb2N0ZXQtc3RyZWFtLy50ZXN0KGUpKX19KS5jYWxsKHRoaXMsdCgiYnVmZmVyIikuQnVmZmVyKX0seyIuL2hlbHBlcnMiOjQsYnVmZmVyOjE0LCJqcy15YW1sIjoxOSwibG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0IjoxNDQsImxvZGFzaC1jb21wYXQvb2JqZWN0L2tleXMiOjE0OSxzdXBlcmFnZW50OjE1OH1dLDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17fSxuPS9bYS16XSs6XC9cLy9pLmV4ZWMoZSk7biYmKHQucHJvdG89blswXS5zbGljZSgwLC0zKSxlPWUuc2xpY2UodC5wcm90by5sZW5ndGgrMSkpLCIvLyI9PT1lLnNsaWNlKDAsMikmJih0LmRvbWFpbj1lLnNsaWNlKDIpLnNwbGl0KCIvIilbMF0sZT1lLnNsaWNlKDIrdC5kb21haW4ubGVuZ3RoKSk7dmFyIHI9ZS5zcGxpdCgiIyIpO3JldHVybiByWzBdLmxlbmd0aCYmKHQucGF0aD1yWzBdKSxyLmxlbmd0aD4xJiYodC5mcmFnbWVudD1yLnNsaWNlKDEpLmpvaW4oIiMiKSksdH1mdW5jdGlvbiBpKGUpe3ZhciB0PWUucGF0aDtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMCE9PWUuZnJhZ21lbnQmJih0Kz0iIyIrZS5mcmFnbWVudCksdm9pZCAwIT09ZS5kb21haW4mJigiLyI9PT10LnNsaWNlKDAsMSkmJih0PXQuc2xpY2UoMSkpLHQ9Ii8vIitlLmRvbWFpbisiLyIrdCx2b2lkIDAhPT1lLnByb3RvJiYodD1lLnByb3RvKyI6Iit0KSksdH1mdW5jdGlvbiBhKGUsdCl7dmFyIG49cih0KTtpZih2b2lkIDAhPT1uLmRvbWFpbilyZXR1cm4gdDt2YXIgYT1yKGUpO2lmKHZvaWQgMD09PW4ucGF0aClhLmZyYWdtZW50PW4uZnJhZ21lbnQ7ZWxzZSBpZigiLyI9PT1uLnBhdGguc2xpY2UoMCwxKSlhLnBhdGg9bi5wYXRoLGEuZnJhZ21lbnQ9bi5mcmFnbWVudDtlbHNle3ZhciBvPXZvaWQgMD09PWEucGF0aD9bXTphLnBhdGguc3BsaXQoIi8iKSxzPW4ucGF0aC5zcGxpdCgiLyIpO2ZvcihvLmxlbmd0aCYmby5wb3AoKTsiLi4iPT09c1swXXx8Ii4iPT09c1swXTspIi4uIj09PXNbMF0mJm8ucG9wKCkscy5zaGlmdCgpO2EucGF0aD1vLmNvbmNhdChzKS5qb2luKCIvIiksYS5mcmFnbWVudD1uLmZyYWdtZW50fXJldHVybiBpKGEpfXZhciBvPWUoIi4vaHR0cCIpLHM9e2lzT2JqZWN0OmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCIpLGNsb25lRGVlcDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvY2xvbmVEZWVwIiksaXNBcnJheTplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheSIpLGlzU3RyaW5nOmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc1N0cmluZyIpfSxsPXQuZXhwb3J0cz1mdW5jdGlvbigpe3RoaXMuZmFpbGVkVXJscz1bXSx0aGlzLnJlc29sdmVyQ2FjaGU9e30sdGhpcy5wZW5kaW5nVXJscz17fX07bC5wcm90b3R5cGUucHJvY2Vzc0FsbE9mPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXsKK3ZhciBvLHMsbDtuWyJ4LXJlc29sdmVkLWZyb20iXT1bIiMvZGVmaW5pdGlvbnMvIit0XTt2YXIgdT1uLmFsbE9mO2Zvcih1LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS4kcmVmJiZ0LiRyZWY/MDplLiRyZWY/LTE6MX0pLG89MDtvPHUubGVuZ3RoO28rKylsPXVbb10scz0iL2RlZmluaXRpb25zLyIrdCsiL2FsbE9mIix0aGlzLnJlc29sdmVJbmxpbmUoZSxhLGwscixpLHMpfSxsLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuc3BlYz1lO3ZhciBpLGEsbD10LHU9bixjPXIscD17fTsiZnVuY3Rpb24iPT10eXBlb2YgdCYmKGw9bnVsbCx1PXQsYz1uKTt2YXIgaCxmPWw7dGhpcy5zY29wZT1jfHx0aGlzLHRoaXMuaXRlcmF0aW9uPXRoaXMuaXRlcmF0aW9ufHwwLHRoaXMuc2NvcGUub3B0aW9ucyYmdGhpcy5zY29wZS5vcHRpb25zLnJlcXVlc3RJbnRlcmNlcHRvciYmKHAucmVxdWVzdEludGVyY2VwdG9yPXRoaXMuc2NvcGUub3B0aW9ucy5yZXF1ZXN0SW50ZXJjZXB0b3IpLHRoaXMuc2NvcGUub3B0aW9ucyYmdGhpcy5zY29wZS5vcHRpb25zLnJlc3BvbnNlSW50ZXJjZXB0b3ImJihwLnJlc3BvbnNlSW50ZXJjZXB0b3I9dGhpcy5zY29wZS5vcHRpb25zLnJlc3BvbnNlSW50ZXJjZXB0b3IpO3ZhciBkLG0sZyx5LHYsYix3LF89MCx4PXt9LEE9e30sUz1bXTtlLmRlZmluaXRpb25zPWUuZGVmaW5pdGlvbnN8fHt9O2ZvcihkIGluIGUuZGVmaW5pdGlvbnMpe3ZhciBqPWUuZGVmaW5pdGlvbnNbZF07aWYoai4kcmVmKXRoaXMucmVzb2x2ZUlubGluZShsLGUsaixTLEEsaik7ZWxzZXtmb3IoeSBpbiBqLnByb3BlcnRpZXMpZz1qLnByb3BlcnRpZXNbeV0scy5pc0FycmF5KGcuYWxsT2YpP3RoaXMucHJvY2Vzc0FsbE9mKGwsZCxnLFMsQSxlKTp0aGlzLnJlc29sdmVUbyhsLGcsUywiL2RlZmluaXRpb25zIik7ai5hbGxPZiYmdGhpcy5wcm9jZXNzQWxsT2YobCxkLGosUyxBLGUpfX1lLnBhcmFtZXRlcnM9ZS5wYXJhbWV0ZXJzfHx7fTtmb3IoZCBpbiBlLnBhcmFtZXRlcnMpe2lmKHY9ZS5wYXJhbWV0ZXJzW2RdLCJib2R5Ij09PXZbImluIl0mJnYuc2NoZW1hKWlmKHMuaXNBcnJheSh2LnNjaGVtYS5hbGxPZikpe2g9ImlubGluZV9tb2RlbCI7dmFyIEU9aDtmb3IoYj0hMSx3PTA7IWI7KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUuZGVmaW5pdGlvbnNbRV0pe2I9ITA7YnJlYWt9RT1oKyJfIit3LHcrK31lLmRlZmluaXRpb25zW0VdPXthbGxPZjp2LnNjaGVtYS5hbGxPZn0sZGVsZXRlIHYuc2NoZW1hLmFsbE9mLHYuc2NoZW1hLiRyZWY9IiMvZGVmaW5pdGlvbnMvIitFLHRoaXMucHJvY2Vzc0FsbE9mKGwsRSxlLmRlZmluaXRpb25zW0VdLFMsQSxlKX1lbHNlIHRoaXMucmVzb2x2ZVRvKGwsdi5zY2hlbWEsUyxpKTt2LiRyZWYmJnRoaXMucmVzb2x2ZUlubGluZShsLGUsdixTLEEsdi4kcmVmKX1mb3IoZCBpbiBlLnBhdGhzKXt2YXIgTyxrLFQ7aWYobT1lLnBhdGhzW2RdLCJvYmplY3QiPT10eXBlb2YgbSl7Zm9yKE8gaW4gbSlpZigiJHJlZiI9PT1PKWk9Ii9wYXRocyIrZCx0aGlzLnJlc29sdmVJbmxpbmUobCxlLG0sUyxBLGkpO2Vsc2V7az1tW09dO3ZhciBDPW0ucGFyYW1ldGVyc3x8W10sST1rLnBhcmFtZXRlcnN8fFtdO0MuZm9yRWFjaChmdW5jdGlvbihlKXtJLnVuc2hpZnQoZSl9KSwicGFyYW1ldGVycyIhPT1PJiZzLmlzT2JqZWN0KGspJiYoay5wYXJhbWV0ZXJzPWsucGFyYW1ldGVyc3x8SSk7Zm9yKGEgaW4gSSl7aWYodj1JW2FdLGk9Ii9wYXRocyIrZCsiLyIrTysiL3BhcmFtZXRlcnMiLCJib2R5Ij09PXZbImluIl0mJnYuc2NoZW1hKWlmKHMuaXNBcnJheSh2LnNjaGVtYS5hbGxPZikpe2ZvcihoPSJpbmxpbmVfbW9kZWwiLGQ9aCxiPSExLHc9MDshYjspe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZS5kZWZpbml0aW9uc1tkXSl7Yj0hMDticmVha31kPWgrIl8iK3csdysrfWUuZGVmaW5pdGlvbnNbZF09e2FsbE9mOnYuc2NoZW1hLmFsbE9mfSxkZWxldGUgdi5zY2hlbWEuYWxsT2Ysdi5zY2hlbWEuJHJlZj0iIy9kZWZpbml0aW9ucy8iK2QsdGhpcy5wcm9jZXNzQWxsT2YobCxkLGUuZGVmaW5pdGlvbnNbZF0sUyxBLGUpfWVsc2UgdGhpcy5yZXNvbHZlVG8obCx2LnNjaGVtYSxTLGkpO3YuJHJlZiYmdGhpcy5yZXNvbHZlSW5saW5lKGwsZSx2LFMsQSx2LiRyZWYpfWZvcihUIGluIGsucmVzcG9uc2VzKXt2YXIgRD1rLnJlc3BvbnNlc1tUXTtpZihpPSIvcGF0aHMiK2QrIi8iK08rIi9yZXNwb25zZXMvIitULHMuaXNPYmplY3QoRCkmJihELiRyZWYmJnRoaXMucmVzb2x2ZUlubGluZShsLGUsRCxTLEEsaSksRC5zY2hlbWEpKXt2YXIgTD1EO2lmKHMuaXNBcnJheShMLnNjaGVtYS5hbGxPZikpe2ZvcihoPSJpbmxpbmVfbW9kZWwiLGQ9aCxiPSExLHc9MDshYjspe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZS5kZWZpbml0aW9uc1tkXSl7Yj0hMDticmVha31kPWgrIl8iK3csdysrfWUuZGVmaW5pdGlvbnNbZF09e2FsbE9mOkwuc2NoZW1hLmFsbE9mfSxkZWxldGUgTC5zY2hlbWEuYWxsT2YsZGVsZXRlIEwuc2NoZW1hLnR5cGUsTC5zY2hlbWEuJHJlZj0iIy9kZWZpbml0aW9ucy8iK2QsdGhpcy5wcm9jZXNzQWxsT2YobCxkLGUuZGVmaW5pdGlvbnNbZF0sUyxBLGUpfWVsc2UiYXJyYXkiPT09TC5zY2hlbWEudHlwZT9MLnNjaGVtYS5pdGVtcyYmTC5zY2hlbWEuaXRlbXMuJHJlZiYmdGhpcy5yZXNvbHZlSW5saW5lKGwsZSxMLnNjaGVtYS5pdGVtcyxTLEEsaSk6dGhpcy5yZXNvbHZlVG8obCxELnNjaGVtYSxTLGkpfX19bS5wYXJhbWV0ZXJzPVtdfX12YXIgTSxSPTAsVT1bXSxQPVM7Zm9yKGE9MDthPFAubGVuZ3RoO2ErKyl7dmFyIHE9UFthXTtpZihsPT09cS5yb290KXtpZigicmVmIj09PXEucmVzb2x2ZUFzKXt2YXIgQix6PSgocS5yb290fHwiIikrIi8iK3Eua2V5KS5zcGxpdCgiLyIpLE49W10sJD0iIjtpZihxLmtleS5pbmRleE9mKCIuLi8iKT49MCl7Zm9yKHZhciBGPTA7Rjx6Lmxlbmd0aDtGKyspIi4uIj09PXpbRl0/Tj1OLnNsaWNlKDAsTi5sZW5ndGgtMSk6Ti5wdXNoKHpbRl0pO2ZvcihCPTA7QjxOLmxlbmd0aDtCKyspQj4wJiYoJCs9Ii8iKSwkKz1OW0JdO3Eucm9vdD0kLFUucHVzaChxKX1lbHNlIGlmKE09cS5rZXkuc3BsaXQoIiMiKSwyPT09TS5sZW5ndGgpezAhPT1NWzBdLmluZGV4T2YoImh0dHA6IikmJjAhPT1NWzBdLmluZGV4T2YoImh0dHBzOiIpfHwocS5yb290PU1bMF0pLGk9TVsxXS5zcGxpdCgiLyIpO3ZhciBWLEg9ZTtmb3IoQj0wO0I8aS5sZW5ndGg7QisrKXt2YXIgWT1pW0JdO2lmKCIiIT09WSl7aWYoSD1IW1ldLCJ1bmRlZmluZWQiPT10eXBlb2YgSCl7Vj1udWxsO2JyZWFrfVY9SH19bnVsbD09PVYmJlUucHVzaChxKX19ZWxzZSBpZigiaW5saW5lIj09PXEucmVzb2x2ZUFzKXtpZihxLmtleSYmcS5rZXkuaW5kZXhPZigiIyIpPT09LTEmJiIvIiE9PXEua2V5LmNoYXJBdCgwKSl7Zm9yKE09cS5yb290LnNwbGl0KCIvIiksaT0iIixhPTA7YTxNLmxlbmd0aC0xO2ErKylpKz1NW2FdKyIvIjtpKz1xLmtleSxxLnJvb3Q9aSxxLmxvY2F0aW9uPSIifVUucHVzaChxKX19ZWxzZSBVLnB1c2gocSl9Uj1VLmxlbmd0aDtmb3IodmFyIEo9e30sVz0wO1c8VS5sZW5ndGg7VysrKSFmdW5jdGlvbihlLHQsbixyLGkpe2lmKGUucm9vdCYmZS5yb290IT09bClpZihuLmZhaWxlZFVybHMuaW5kZXhPZihlLnJvb3QpPT09LTEpe3ZhciBhPXt1c2VKUXVlcnk6ITEsdXJsOmUucm9vdCxtZXRob2Q6ImdldCIsaGVhZGVyczp7YWNjZXB0Om4uc2NvcGUuc3dhZ2dlclJlcXVlc3RIZWFkZXJzfHwiYXBwbGljYXRpb24vanNvbiJ9LG9uOntlcnJvcjpmdW5jdGlvbihpKXtfKz0xLGNvbnNvbGUubG9nKCJmYWlsZWQgdXJsOiAiK2EudXJsKSxuLmZhaWxlZFVybHMucHVzaChhLnVybCksciYmZGVsZXRlIHJbZS5yb290XSxBW2Uua2V5XT17cm9vdDplLnJvb3QsbG9jYXRpb246ZS5sb2NhdGlvbn0sXz09PVImJm4uZmluaXNoKHQsZixTLHgsQSx1KX0scmVzcG9uc2U6ZnVuY3Rpb24oaSl7dmFyIGE9aS5vYmo7ciYmZGVsZXRlIHJbZS5yb290XSxuLnJlc29sdmVyQ2FjaGUmJihuLnJlc29sdmVyQ2FjaGVbZS5yb290XT1hKSxuLnJlc29sdmVJdGVtKGEsZS5yb290LFMseCxBLGUpLF8rPTEsXz09PVImJm4uZmluaXNoKHQsZixTLHgsQSx1KX19fTtjJiZjLmZldGNoU3BlY1RpbWVvdXQmJihhLnRpbWVvdXQ9Yy5mZXRjaFNwZWNUaW1lb3V0KSxjJiZjLmNsaWVudEF1dGhvcml6YXRpb25zJiZjLmNsaWVudEF1dGhvcml6YXRpb25zLmFwcGx5KGEpLGZ1bmN0aW9uIGgoKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoclthLnVybF0paCgpO2Vsc2V7dmFyIGU9bi5yZXNvbHZlckNhY2hlW2EudXJsXTtzLmlzT2JqZWN0KGUpP2Eub24ucmVzcG9uc2Uoe29iajplfSk6KHJbYS51cmxdPSEwLChuZXcgbykuZXhlY3V0ZShhLHApKX19LDApfSgpfWVsc2UgXys9MSxBW2Uua2V5XT17cm9vdDplLnJvb3QsbG9jYXRpb246ZS5sb2NhdGlvbn0sXz09PVImJm4uZmluaXNoKHQsZixTLHgsQSx1KTtlbHNlIG4ucmVzb2x2ZUl0ZW0odCxmLFMseCxBLGUpLF8rPTEsXz09PVImJm4uZmluaXNoKHQsbCxTLHgsQSx1LCEwKX0oVVtXXSxlLHRoaXMsSixXKTswPT09T2JqZWN0LmtleXMoVSkubGVuZ3RoJiZ0aGlzLmZpbmlzaChlLGYsUyx4LEEsdSl9LGwucHJvdG90eXBlLnJlc29sdmVJdGVtPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbz1hLmxvY2F0aW9uLHM9ZSxsPW8uc3BsaXQoIi8iKTtpZigiIiE9PW8pZm9yKHZhciB1PTA7dTxsLmxlbmd0aDt1Kyspe3ZhciBjPWxbdV07aWYoYy5pbmRleE9mKCJ+MSIpIT09LTEmJihjPWxbdV0ucmVwbGFjZSgvfjAvZywifiIpLnJlcGxhY2UoL34xL2csIi8iKSwiLyIhPT1jLmNoYXJBdCgwKSYmKGM9Ii8iK2MpKSwidW5kZWZpbmVkIj09dHlwZW9mIHN8fG51bGw9PT1zKWJyZWFrO2lmKCIiPT09YyYmdT09PWwubGVuZ3RoLTEmJmwubGVuZ3RoPjEpe3M9bnVsbDticmVha31jLmxlbmd0aD4wJiYocz1zW2NdKX12YXIgcD1hLmtleTtsPWEua2V5LnNwbGl0KCIvIik7dmFyIGg9bFtsLmxlbmd0aC0xXTtoLmluZGV4T2YoIiMiKT49MCYmKGg9aC5zcGxpdCgiIyIpWzFdKSxudWxsIT09cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzP3JbcF09e25hbWU6aCxvYmo6cyxrZXk6YS5rZXkscm9vdDphLnJvb3R9OmlbcF09e3Jvb3Q6YS5yb290LGxvY2F0aW9uOmEubG9jYXRpb259fSxsLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSx0LG4scixpLGEsbyl7dmFyIHMsbDtmb3IocyBpbiBuKXt2YXIgdT1uW3NdLGM9dS5rZXkscD1yW2NdO2lmKHApaWYoZS5kZWZpbml0aW9ucz1lLmRlZmluaXRpb25zfHx7fSwicmVmIj09PXUucmVzb2x2ZUFzKXtpZihvIT09ITApZm9yKGMgaW4gcC5vYmopbD10aGlzLnJldGFpblJvb3QoYyxwLm9ialtjXSx1LnJvb3QpLHAub2JqW2NdPWw7ZS5kZWZpbml0aW9uc1twLm5hbWVdPXAub2JqLHUub2JqLiRyZWY9IiMvZGVmaW5pdGlvbnMvIitwLm5hbWV9ZWxzZSBpZigiaW5saW5lIj09PXUucmVzb2x2ZUFzKXt2YXIgaD11Lm9iajtoWyJ4LXJlc29sdmVkLWZyb20iXT1bdS5rZXldLGRlbGV0ZSBoLiRyZWY7Zm9yKGMgaW4gcC5vYmopbD1wLm9ialtjXSxvIT09ITAmJihsPXRoaXMucmV0YWluUm9vdChjLHAub2JqW2NdLHUucm9vdCkpLGhbY109bH19dmFyIGY9dGhpcy5jb3VudFVucmVzb2x2ZWRSZWZzKGUpOzA9PT1mfHx0aGlzLml0ZXJhdGlvbj41Pyh0aGlzLnJlc29sdmVBbGxPZihlLmRlZmluaXRpb25zKSx0aGlzLnJlc29sdmVyQ2FjaGU9bnVsbCxhLmNhbGwodGhpcy5zY29wZSxlLGkpKToodGhpcy5pdGVyYXRpb24rPTEsdGhpcy5yZXNvbHZlKGUsdCxhLHRoaXMuc2NvcGUpKX0sbC5wcm90b3R5cGUuY291bnRVbnJlc29sdmVkUmVmcz1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuZ2V0UmVmcyhlKSxyPVtdLGk9W107Zm9yKHQgaW4gbikwPT09dC5pbmRleE9mKCIjIik/ci5wdXNoKHQuc3Vic3RyaW5nKDEpKTppLnB1c2godCk7Zm9yKHQ9MDt0PHIubGVuZ3RoO3QrKylmb3IodmFyIGE9clt0XSxvPWEuc3BsaXQoIi8iKSxzPWUsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgdT1vW2xdO2lmKCIiIT09dSYmKHM9c1t1XSwidW5kZWZpbmVkIj09dHlwZW9mIHMpKXtpLnB1c2goYSk7YnJlYWt9fXJldHVybiBpLmxlbmd0aH0sbC5wcm90b3R5cGUuZ2V0UmVmcz1mdW5jdGlvbihlLHQpe3Q9dHx8ZTt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgaT10W3JdO2lmKCIkcmVmIj09PXImJiJzdHJpbmciPT10eXBlb2YgaSluW2ldPW51bGw7ZWxzZSBpZihzLmlzT2JqZWN0KGkpKXt2YXIgYT10aGlzLmdldFJlZnMoaSk7Zm9yKHZhciBvIGluIGEpbltvXT1udWxsfX1yZXR1cm4gbn0sbC5wcm90b3R5cGUucmV0YWluUm9vdD1mdW5jdGlvbihlLHQsbil7aWYocy5pc09iamVjdCh0KSlmb3IodmFyIHIgaW4gdCl7dmFyIGk9dFtyXTsiJHJlZiI9PT1yJiYic3RyaW5nIj09dHlwZW9mIGk/dFtyXT1hKG4saSk6cy5pc09iamVjdChpKSYmdGhpcy5yZXRhaW5Sb290KHIsaSxuKX1lbHNlIHMuaXNTdHJpbmcodCkmJiIkcmVmIj09PWUmJih0PWEobix0KSk7cmV0dXJuIHR9LGwucHJvdG90eXBlLnJlc29sdmVJbmxpbmU9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBvLHMsbCx1LGM9bi4kcmVmLHA9bi4kcmVmLGg9ITE7aWYoZT1lfHwiIixwKXtpZigwPT09cC5pbmRleE9mKCIuLi8iKSl7Zm9yKHM9cC5zcGxpdCgiLi4vIiksbD1lLnNwbGl0KCIvIikscD0iIixvPTA7bzxzLmxlbmd0aDtvKyspIiI9PT1zW29dP2w9bC5zbGljZSgwLGwubGVuZ3RoLTEpOnArPXNbb107Zm9yKGU9IiIsbz0wO288bC5sZW5ndGgtMTtvKyspbz4wJiYoZSs9Ii8iKSxlKz1sW29dO2g9ITB9aWYocC5pbmRleE9mKCIjIik+PTApaWYoMD09PXAuaW5kZXhPZigiLyIpKXU9cC5zcGxpdCgiIyIpLHM9ZS5zcGxpdCgiLy8iKSxsPXNbMV0uc3BsaXQoIi8iKSxlPXNbMF0rIi8vIitsWzBdK3VbMF0sYT11WzFdO2Vsc2V7aWYodT1wLnNwbGl0KCIjIiksIiIhPT11WzBdKXtpZihsPWUuc3BsaXQoIi8iKSxsPWwuc2xpY2UoMCxsLmxlbmd0aC0xKSwhaCl7ZT0iIjtmb3IodmFyIGY9MDtmPGwubGVuZ3RoO2YrKylmPjAmJihlKz0iLyIpLGUrPWxbZl19ZSs9Ii8iK3Auc3BsaXQoIiMiKVswXX1hPXVbMV19aWYoMD09PXAuaW5kZXhPZigiaHR0cDoiKXx8MD09PXAuaW5kZXhPZigiaHR0cHM6IikpcC5pbmRleE9mKCIjIik+PTA/KGU9cC5zcGxpdCgiIyIpWzBdLGE9cC5zcGxpdCgiIyIpWzFdKTooZT1wLGE9IiIpLHIucHVzaCh7b2JqOm4scmVzb2x2ZUFzOiJpbmxpbmUiLHJvb3Q6ZSxrZXk6Yyxsb2NhdGlvbjphfSk7ZWxzZSBpZigwPT09cC5pbmRleE9mKCIjIikpYT1wLnNwbGl0KCIjIilbMV0sci5wdXNoKHtvYmo6bixyZXNvbHZlQXM6ImlubGluZSIscm9vdDplLGtleTpjLGxvY2F0aW9uOmF9KTtlbHNlIGlmKDA9PT1wLmluZGV4T2YoIi8iKSYmcC5pbmRleE9mKCIjIik9PT0tMSl7YT1wO3ZhciBkPWUubWF0Y2goL15odHRwcz9cOlwvXC8oW15cLz8jXSspKD86W1wvPyNdfCQpL2kpO2QmJihlPWRbMF0rcC5zdWJzdHJpbmcoMSksYT0iIiksci5wdXNoKHtvYmo6bixyZXNvbHZlQXM6ImlubGluZSIscm9vdDplLGtleTpjLGxvY2F0aW9uOmF9KX1lbHNlIHIucHVzaCh7b2JqOm4scmVzb2x2ZUFzOiJpbmxpbmUiLHJvb3Q6ZSxrZXk6Yyxsb2NhdGlvbjphfSl9ZWxzZSJhcnJheSI9PT1uLnR5cGUmJnRoaXMucmVzb2x2ZVRvKGUsbi5pdGVtcyxyLGEpfSxsLnByb3RvdHlwZS5yZXNvbHZlVG89ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksYSxvPXQuJHJlZixsPWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBvJiZudWxsIT09byl7aWYoby5pbmRleE9mKCIjIik+PTApe3ZhciB1PW8uc3BsaXQoIiMiKTtpZih1WzBdJiYwPT09by5pbmRleE9mKCIvIikpO2Vsc2UgaWYoIXVbMF18fDAhPT11WzBdLmluZGV4T2YoImh0dHA6IikmJjAhPT11WzBdLmluZGV4T2YoImh0dHBzOiIpKXtpZih1WzBdJiZ1WzBdLmxlbmd0aD4wKXtmb3IoaT1lLnNwbGl0KCIvIiksbD0iIixhPTA7YTxpLmxlbmd0aC0xO2ErKylsKz1pW2FdKyIvIjtsKz11WzBdfX1lbHNlIGw9dVswXSxvPXVbMV07cj11WzFdfWVsc2UgaWYoMD09PW8uaW5kZXhPZigiaHR0cDoiKXx8MD09PW8uaW5kZXhPZigiaHR0cHM6IikpbD1vLHI9IiI7ZWxzZXtmb3IoaT1lLnNwbGl0KCIvIiksbD0iIixhPTA7YTxpLmxlbmd0aC0xO2ErKylsKz1pW2FdKyIvIjtsKz1vLHI9IiJ9bi5wdXNoKHtvYmo6dCxyZXNvbHZlQXM6InJlZiIscm9vdDpsLGtleTpvLGxvY2F0aW9uOnJ9KX1lbHNlIGlmKCJhcnJheSI9PT10LnR5cGUpe3ZhciBjPXQuaXRlbXM7dGhpcy5yZXNvbHZlVG8oZSxjLG4scil9ZWxzZSBpZih0JiYodC5wcm9wZXJ0aWVzfHx0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzKSl7dmFyIHA9dGhpcy51bmlxdWVOYW1lKCJpbmxpbmVfbW9kZWwiKTt0LnRpdGxlJiYocD10aGlzLnVuaXF1ZU5hbWUodC50aXRsZSkpLGRlbGV0ZSB0LnRpdGxlLHRoaXMuc3BlYy5kZWZpbml0aW9uc1twXT1zLmNsb25lRGVlcCh0KSx0LiRyZWY9IiMvZGVmaW5pdGlvbnMvIitwLGRlbGV0ZSB0LnR5cGUsZGVsZXRlIHQucHJvcGVydGllc319LGwucHJvdG90eXBlLnVuaXF1ZU5hbWU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUsbj0wOzspe2lmKCFzLmlzT2JqZWN0KHRoaXMuc3BlYy5kZWZpbml0aW9uc1t0XSkpcmV0dXJuIHQ7dD1lKyJfIituLG4rK319LGwucHJvdG90eXBlLnJlc29sdmVBbGxPZj1mdW5jdGlvbihlLHQsbil7bj1ufHwwLHQ9dHx8ZTt2YXIgcjtmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGkpKXt2YXIgYT10W2ldO2lmKG51bGw9PT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIlN3YWdnZXIgMi4wIGRvZXMgbm90IHN1cHBvcnQgbnVsbCB0eXBlcyAoIit0KyIpLiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXNwZWMvaXNzdWVzLzIyOS4iKTtpZigib2JqZWN0Ij09dHlwZW9mIGEmJnRoaXMucmVzb2x2ZUFsbE9mKGUsYSxuKzEpLGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5hbGxPZil7dmFyIG89YS5hbGxPZjtpZihzLmlzQXJyYXkobykpe3ZhciBsPXMuY2xvbmVEZWVwKGEpO2RlbGV0ZSBsLmFsbE9mLGxbIngtY29tcG9zZWQiXT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIGFbIngtcmVzb2x2ZWQtZnJvbSJdJiYobFsieC1yZXNvbHZlZC1mcm9tIl09YVsieC1yZXNvbHZlZC1mcm9tIl0pO2Zvcih2YXIgdT0wO3U8by5sZW5ndGg7dSsrKXt2YXIgYz1vW3VdLHA9InNlbGYiOyJ1bmRlZmluZWQiIT10eXBlb2YgY1sieC1yZXNvbHZlZC1mcm9tIl0mJihwPWNbIngtcmVzb2x2ZWQtZnJvbSJdWzBdKTtmb3IodmFyIGggaW4gYylpZihsLmhhc093blByb3BlcnR5KGgpKWlmKCJwcm9wZXJ0aWVzIj09PWgpe3ZhciBmPWNbaF07Zm9yKHIgaW4gZil7bC5wcm9wZXJ0aWVzW3JdPXMuY2xvbmVEZWVwKGZbcl0pO3ZhciBkPWZbcl1bIngtcmVzb2x2ZWQtZnJvbSJdOyJ1bmRlZmluZWQiIT10eXBlb2YgZCYmInNlbGYiIT09ZHx8KGQ9cCksbC5wcm9wZXJ0aWVzW3JdWyJ4LXJlc29sdmVkLWZyb20iXT1kfX1lbHNlIGlmKCJyZXF1aXJlZCI9PT1oKXtmb3IodmFyIG09bC5yZXF1aXJlZC5jb25jYXQoY1toXSksZz0wO2c8bS5sZW5ndGg7KytnKWZvcih2YXIgeT1nKzE7eTxtLmxlbmd0aDsrK3kpbVtnXT09PW1beV0mJm0uc3BsaWNlKHktLSwxKTtsLnJlcXVpcmVkPW19ZWxzZSJ4LXJlc29sdmVkLWZyb20iPT09aCYmbFsieC1yZXNvbHZlZC1mcm9tIl0ucHVzaChwKTtlbHNlIGlmKGxbaF09cy5jbG9uZURlZXAoY1toXSksInByb3BlcnRpZXMiPT09aClmb3IociBpbiBsW2hdKWxbaF1bcl1bIngtcmVzb2x2ZWQtZnJvbSJdPXB9dFtpXT1sfX19fX0seyIuL2h0dHAiOjUsImxvZGFzaC1jb21wYXQvbGFuZy9jbG9uZURlZXAiOjEzOCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzQXJyYXkiOjE0MCwibG9kYXNoLWNvbXBhdC9sYW5nL2lzT2JqZWN0IjoxNDQsImxvZGFzaC1jb21wYXQvbGFuZy9pc1N0cmluZyI6MTQ2fV0sNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2hlbHBlcnMiKSxpPXtpc1BsYWluT2JqZWN0OmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0IiksaXNVbmRlZmluZWQ6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2lzVW5kZWZpbmVkIiksaXNBcnJheTplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNBcnJheSIpLGlzT2JqZWN0OmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCIpLGlzRW1wdHk6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2lzRW1wdHkiKSxtYXA6ZSgibG9kYXNoLWNvbXBhdC9jb2xsZWN0aW9uL21hcCIpLGluZGV4T2Y6ZSgibG9kYXNoLWNvbXBhdC9hcnJheS9pbmRleE9mIiksY2xvbmVEZWVwOmUoImxvZGFzaC1jb21wYXQvbGFuZy9jbG9uZURlZXAiKSxrZXlzOmUoImxvZGFzaC1jb21wYXQvb2JqZWN0L2tleXMiKSxmb3JFYWNoOmUoImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9mb3JFYWNoIil9LGE9dC5leHBvcnRzLm9wdGlvbkh0bWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4nPHRyPjx0ZCBjbGFzcz0ib3B0aW9uTmFtZSI+JytlKyI6PC90ZD48dGQ+Iit0KyI8L3RkPjwvdHI+In07dC5leHBvcnRzLnR5cGVGcm9tSnNvblNjaGVtYT1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiJpbnRlZ2VyIj09PWUmJiJpbnQzMiI9PT10P249ImludGVnZXIiOiJpbnRlZ2VyIj09PWUmJiJpbnQ2NCI9PT10P249ImxvbmciOiJpbnRlZ2VyIj09PWUmJiJ1bmRlZmluZWQiPT10eXBlb2YgdD9uPSJsb25nIjoic3RyaW5nIj09PWUmJiJkYXRlLXRpbWUiPT09dD9uPSJkYXRlLXRpbWUiOiJzdHJpbmciPT09ZSYmImRhdGUiPT09dD9uPSJkYXRlIjoibnVtYmVyIj09PWUmJiJmbG9hdCI9PT10P249ImZsb2F0IjoibnVtYmVyIj09PWUmJiJkb3VibGUiPT09dD9uPSJkb3VibGUiOiJudW1iZXIiPT09ZSYmInVuZGVmaW5lZCI9PXR5cGVvZiB0P249ImRvdWJsZSI6ImJvb2xlYW4iPT09ZT9uPSJib29sZWFuIjoic3RyaW5nIj09PWUmJihuPSJzdHJpbmciKSxufTt2YXIgbz10LmV4cG9ydHMuZ2V0U3RyaW5nU2lnbmF0dXJlPWZ1bmN0aW9uKGUsdCl7dmFyIG49IiI7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBlLiRyZWY/bis9ci5zaW1wbGVSZWYoZS4kcmVmKToidW5kZWZpbmVkIj09dHlwZW9mIGUudHlwZT9uKz0ib2JqZWN0IjoiYXJyYXkiPT09ZS50eXBlP3Q/bis9byhlLml0ZW1zfHxlLiRyZWZ8fHt9KToobis9IkFycmF5WyIsbis9byhlLml0ZW1zfHxlLiRyZWZ8fHt9KSxuKz0iXSIpOm4rPSJpbnRlZ2VyIj09PWUudHlwZSYmImludDMyIj09PWUuZm9ybWF0PyJpbnRlZ2VyIjoiaW50ZWdlciI9PT1lLnR5cGUmJiJpbnQ2NCI9PT1lLmZvcm1hdD8ibG9uZyI6ImludGVnZXIiPT09ZS50eXBlJiYidW5kZWZpbmVkIj09dHlwZW9mIGUuZm9ybWF0PyJsb25nIjoic3RyaW5nIj09PWUudHlwZSYmImRhdGUtdGltZSI9PT1lLmZvcm1hdD8iZGF0ZS10aW1lIjoic3RyaW5nIj09PWUudHlwZSYmImRhdGUiPT09ZS5mb3JtYXQ/ImRhdGUiOiJzdHJpbmciPT09ZS50eXBlJiYidW5kZWZpbmVkIj09dHlwZW9mIGUuZm9ybWF0PyJzdHJpbmciOiJudW1iZXIiPT09ZS50eXBlJiYiZmxvYXQiPT09ZS5mb3JtYXQ/ImZsb2F0IjoibnVtYmVyIj09PWUudHlwZSYmImRvdWJsZSI9PT1lLmZvcm1hdD8iZG91YmxlIjoibnVtYmVyIj09PWUudHlwZSYmInVuZGVmaW5lZCI9PXR5cGVvZiBlLmZvcm1hdD8iZG91YmxlIjoiYm9vbGVhbiI9PT1lLnR5cGU/ImJvb2xlYW4iOmUuJHJlZj9yLnNpbXBsZVJlZihlLiRyZWYpOmUudHlwZSxufSxzPXQuZXhwb3J0cy5zY2hlbWFUb0pTT049ZnVuY3Rpb24oZSx0LG4sYSl7ZT1yLnJlc29sdmVTY2hlbWEoZSksImZ1bmN0aW9uIiE9dHlwZW9mIGEmJihhPWZ1bmN0aW9uKGUpe3JldHVybihlfHx7fSlbImRlZmF1bHQiXX0pLG49bnx8e307dmFyIG8sbCx1PWUudHlwZXx8Im9iamVjdCIsYz1lLmZvcm1hdDtyZXR1cm4gaS5pc1VuZGVmaW5lZChlLmV4YW1wbGUpP2kuaXNVbmRlZmluZWQoZS5pdGVtcykmJmkuaXNBcnJheShlWyJlbnVtIl0pJiYobD1lWyJlbnVtIl1bMF0pOmw9ZS5leGFtcGxlLGkuaXNVbmRlZmluZWQobCkmJihlLiRyZWY/KG89dFtyLnNpbXBsZVJlZihlLiRyZWYpXSxpLmlzVW5kZWZpbmVkKG8pfHwoaS5pc1VuZGVmaW5lZChuW28ubmFtZV0pPyhuW28ubmFtZV09byxsPXMoby5kZWZpbml0aW9uLHQsbixhKSxkZWxldGUgbltvLm5hbWVdKTpsPSJhcnJheSI9PT1vLnR5cGU/W106e30pKTppLmlzVW5kZWZpbmVkKGVbImRlZmF1bHQiXSk/InN0cmluZyI9PT11P2w9ImRhdGUtdGltZSI9PT1jPyhuZXcgRGF0ZSkudG9JU09TdHJpbmcoKToiZGF0ZSI9PT1jPyhuZXcgRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdCgiVCIpWzBdOiJzdHJpbmciOiJpbnRlZ2VyIj09PXU/bD0wOiJudW1iZXIiPT09dT9sPTA6ImJvb2xlYW4iPT09dT9sPSEwOiJvYmplY3QiPT09dT8obD17fSxpLmZvckVhY2goZS5wcm9wZXJ0aWVzLGZ1bmN0aW9uKGUscil7dmFyIG89aS5jbG9uZURlZXAoZSk7b1siZGVmYXVsdCJdPWEoZSksbFtyXT1zKG8sdCxuLGEpfSkpOiJhcnJheSI9PT11JiYobD1bXSxpLmlzQXJyYXkoZS5pdGVtcyk/aS5mb3JFYWNoKGUuaXRlbXMsZnVuY3Rpb24oZSl7bC5wdXNoKHMoZSx0LG4sYSkpfSk6aS5pc1BsYWluT2JqZWN0KGUuaXRlbXMpP2wucHVzaChzKGUuaXRlbXMsdCxuLGEpKTppLmlzVW5kZWZpbmVkKGUuaXRlbXMpP2wucHVzaCh7fSk6ci5sb2coIkFycmF5IHR5cGUncyAnaXRlbXMnIHByb3BlcnR5IGlzIG5vdCBhbiBhcnJheSBvciBhbiBvYmplY3QsIGNhbm5vdCBwcm9jZXNzIikpOmw9ZVsiZGVmYXVsdCJdKSxsfTt0LmV4cG9ydHMuc2NoZW1hVG9IVE1MPWZ1bmN0aW9uKGUsdCxuLG8pe2Z1bmN0aW9uIHMoZSx0LGEpe3ZhciBvLHM9dDtyZXR1cm4gZS4kcmVmPyhzPWUudGl0bGV8fHIuc2ltcGxlUmVmKGUuJHJlZiksbz1uW3NdKTppLmlzVW5kZWZpbmVkKHQpJiYocz1lLnRpdGxlfHwiSW5saW5lIE1vZGVsICIrICsrbSxvPXtkZWZpbml0aW9uOmV9KSxhIT09ITAmJihmW3NdPWkuaXNVbmRlZmluZWQobyk/e306by5kZWZpbml0aW9uKSxzfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9JzxzcGFuIGNsYXNzPSJwcm9wVHlwZSI+JyxuPWUudHlwZXx8Im9iamVjdCI7cmV0dXJuIGUuJHJlZj90Kz1zKGUsci5zaW1wbGVSZWYoZS4kcmVmKSk6Im9iamVjdCI9PT1uP3QrPWkuaXNVbmRlZmluZWQoZS5wcm9wZXJ0aWVzKT8ib2JqZWN0IjpzKGUpOiJhcnJheSI9PT1uPyh0Kz0iQXJyYXlbIixpLmlzQXJyYXkoZS5pdGVtcyk/dCs9aS5tYXAoZS5pdGVtcyxzKS5qb2luKCIsIik6aS5pc1BsYWluT2JqZWN0KGUuaXRlbXMpP3QrPWkuaXNVbmRlZmluZWQoZS5pdGVtcy4kcmVmKT9pLmlzVW5kZWZpbmVkKGUuaXRlbXMudHlwZSl8fGkuaW5kZXhPZihbImFycmF5Iiwib2JqZWN0Il0sZS5pdGVtcy50eXBlKSE9PS0xP3MoZS5pdGVtcyk6ZS5pdGVtcy50eXBlOnMoZS5pdGVtcyxyLnNpbXBsZVJlZihlLml0ZW1zLiRyZWYpKTooci5sb2coIkFycmF5IHR5cGUncyAnaXRlbXMnIHNjaGVtYSBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBjYW5ub3QgcHJvY2VzcyIpLHQrPSJvYmplY3QiKSx0Kz0iXSIpOnQrPWUudHlwZSx0Kz0iPC9zcGFuPiJ9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPSIiLHI9ZS50eXBlfHwib2JqZWN0IixvPSJhcnJheSI9PT1yO3N3aXRjaChvJiYocj1pLmlzUGxhaW5PYmplY3QoZS5pdGVtcykmJiFpLmlzVW5kZWZpbmVkKGUuaXRlbXMudHlwZSk/ZS5pdGVtcy50eXBlOiJvYmplY3QiKSxpLmlzVW5kZWZpbmVkKGVbImRlZmF1bHQiXSl8fChuKz1hKCJEZWZhdWx0IixlWyJkZWZhdWx0Il0pKSxyKXtjYXNlInN0cmluZyI6ZS5taW5MZW5ndGgmJihuKz1hKCJNaW4uIExlbmd0aCIsZS5taW5MZW5ndGgpKSxlLm1heExlbmd0aCYmKG4rPWEoIk1heC4gTGVuZ3RoIixlLm1heExlbmd0aCkpLGUucGF0dGVybiYmKG4rPWEoIlJlZy4gRXhwLiIsZS5wYXR0ZXJuKSk7YnJlYWs7Y2FzZSJpbnRlZ2VyIjpjYXNlIm51bWJlciI6ZS5taW5pbXVtJiYobis9YSgiTWluLiBWYWx1ZSIsZS5taW5pbXVtKSksZS5leGNsdXNpdmVNaW5pbXVtJiYobis9YSgiRXhjbHVzaXZlIE1pbi4iLCJ0cnVlIikpLGUubWF4aW11bSYmKG4rPWEoIk1heC4gVmFsdWUiLGUubWF4aW11bSkpLGUuZXhjbHVzaXZlTWF4aW11bSYmKG4rPWEoIkV4Y2x1c2l2ZSBNYXguIiwidHJ1ZSIpKSxlLm11bHRpcGxlT2YmJihuKz1hKCJNdWx0aXBsZSBPZiIsZS5tdWx0aXBsZU9mKSl9aWYobyYmKGUubWluSXRlbXMmJihuKz1hKCJNaW4uIEl0ZW1zIixlLm1pbkl0ZW1zKSksZS5tYXhJdGVtcyYmKG4rPWEoIk1heC4gSXRlbXMiLGUubWF4SXRlbXMpKSxlLnVuaXF1ZUl0ZW1zJiYobis9YSgiVW5pcXVlIEl0ZW1zIiwidHJ1ZSIpKSxlLmNvbGxlY3Rpb25Gb3JtYXQmJihuKz1hKCJDb2xsLiBGb3JtYXQiLGUuY29sbGVjdGlvbkZvcm1hdCkpKSxpLmlzVW5kZWZpbmVkKGUuaXRlbXMpJiZpLmlzQXJyYXkoZVsiZW51bSJdKSl7dmFyIHM7cz0ibnVtYmVyIj09PXJ8fCJpbnRlZ2VyIj09PXI/ZVsiZW51bSJdLmpvaW4oIiwgIik6JyInK2VbImVudW0iXS5qb2luKCciLCAiJykrJyInLG4rPWEoIkVudW0iLHMpfXJldHVybiBuLmxlbmd0aD4wJiYodD0nPHNwYW4gY2xhc3M9InByb3BXcmFwIj4nK3QrJzx0YWJsZSBjbGFzcz0ib3B0aW9uc1dyYXBwZXIiPjx0cj48dGggY29sc3Bhbj0iMiI+JytyKyI8L3RoPjwvdHI+IituKyI8L3RhYmxlPjwvc3Bhbj4iKSx0fWZ1bmN0aW9uIGMoZSx0KXt2YXIgYT1lLnR5cGV8fCJvYmplY3QiLGM9ImFycmF5Ij09PWUudHlwZSxmPXArdCsiICIrKGM/IlsiOiJ7IikraDtpZih0JiZkLnB1c2godCksYylpLmlzQXJyYXkoZS5pdGVtcyk/Zis9IjxkaXY+IitpLm1hcChlLml0ZW1zLGZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZXx8Im9iamVjdCI7cmV0dXJuIGkuaXNVbmRlZmluZWQoZS4kcmVmKT9pLmluZGV4T2YoWyJhcnJheSIsIm9iamVjdCJdLHQpPi0xPyJvYmplY3QiPT09dCYmaS5pc1VuZGVmaW5lZChlLnByb3BlcnRpZXMpPyJvYmplY3QiOnMoZSk6dShlLHQpOnMoZSxyLnNpbXBsZVJlZihlLiRyZWYpKX0pLmpvaW4oIiw8L2Rpdj48ZGl2PiIpOmkuaXNQbGFpbk9iamVjdChlLml0ZW1zKT9mKz1pLmlzVW5kZWZpbmVkKGUuaXRlbXMuJHJlZik/aS5pbmRleE9mKFsiYXJyYXkiLCJvYmplY3QiXSxlLml0ZW1zLnR5cGV8fCJvYmplY3QiKT4tMT8oaS5pc1VuZGVmaW5lZChlLml0ZW1zLnR5cGUpfHwib2JqZWN0Ij09PWUuaXRlbXMudHlwZSkmJmkuaXNVbmRlZmluZWQoZS5pdGVtcy5wcm9wZXJ0aWVzKT8iPGRpdj5vYmplY3Q8L2Rpdj4iOiI8ZGl2PiIrcyhlLml0ZW1zKSsiPC9kaXY+IjoiPGRpdj4iK3UoZS5pdGVtcyxlLml0ZW1zLnR5cGUpKyI8L2Rpdj4iOiI8ZGl2PiIrcyhlLml0ZW1zLHIuc2ltcGxlUmVmKGUuaXRlbXMuJHJlZikpKyI8L2Rpdj4iOihyLmxvZygiQXJyYXkgdHlwZSdzICdpdGVtcycgcHJvcGVydHkgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgY2Fubm90IHByb2Nlc3MiKSxmKz0iPGRpdj5vYmplY3Q8L2Rpdj4iKTtlbHNlIGlmKGUuJHJlZilmKz0iPGRpdj4iK3MoZSx0KSsiPC9kaXY+IjtlbHNlIGlmKCJvYmplY3QiPT09YSl7aWYoaS5pc1BsYWluT2JqZWN0KGUucHJvcGVydGllcykpe3ZhciBtPWkubWFwKGUucHJvcGVydGllcyxmdW5jdGlvbih0LGEpe3ZhciBzLGMscD1pLmluZGV4T2YoZS5yZXF1aXJlZCxhKT49MCxoPWkuY2xvbmVEZWVwKHQpLGY9cD8icmVxdWlyZWQiOiIiLGQ9JzxzcGFuIGNsYXNzPSJwcm9wTmFtZSAnK2YrJyI+JythKyI8L3NwYW4+ICgiO3JldHVybiBoWyJkZWZhdWx0Il09byhoKSxoPXIucmVzb2x2ZVNjaGVtYShoKSxjPXQuZGVzY3JpcHRpb258fGguZGVzY3JpcHRpb24saS5pc1VuZGVmaW5lZChoLiRyZWYpfHwocz1uW3Iuc2ltcGxlUmVmKGguJHJlZildLGkuaXNVbmRlZmluZWQocyl8fGkuaW5kZXhPZihbdm9pZCAwLCJhcnJheSIsIm9iamVjdCJdLHMuZGVmaW5pdGlvbi50eXBlKSE9PS0xfHwoaD1yLnJlc29sdmVTY2hlbWEocy5kZWZpbml0aW9uKSkpLGQrPWwoaCkscHx8KGQrPScsIDxzcGFuIGNsYXNzPSJwcm9wT3B0S2V5Ij5vcHRpb25hbDwvc3Bhbj4nKSx0LnJlYWRPbmx5JiYoZCs9JywgPHNwYW4gY2xhc3M9InByb3BSZWFkT25seSI+cmVhZCBvbmx5PC9zcGFuPicpLGQrPSIpIixpLmlzVW5kZWZpbmVkKGMpfHwoZCs9JzogPHNwYW4gY2xhc3M9InByb3BEZXNjIj4nK2MrIjwvc3Bhbj4iKSxoWyJlbnVtIl0mJihkKz0nID0gPHNwYW4gY2xhc3M9InByb3BWYWxzIj5bXCcnK2hbImVudW0iXS5qb2luKCInLCAnIikrIiddPC9zcGFuPiIpLCI8ZGl2IisodC5yZWFkT25seT8nIGNsYXNzPSJyZWFkT25seSInOiIiKSsiPiIrdShoLGQpfSkuam9pbigiLDwvZGl2PiIpO20mJihmKz1tKyI8L2Rpdj4iKX19ZWxzZSBmKz0iPGRpdj4iK3UoZSxhKSsiPC9kaXY+IjtyZXR1cm4gZitwKyhjPyJdIjoifSIpK2h9dmFyIHA9JzxzcGFuIGNsYXNzPSJzdHJvbmciPicsaD0iPC9zcGFuPiI7aWYoaS5pc09iamVjdChhcmd1bWVudHNbMF0pJiYoZT12b2lkIDAsdD1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0sbz1hcmd1bWVudHNbMl0pLG49bnx8e30sdD1yLnJlc29sdmVTY2hlbWEodCksaS5pc0VtcHR5KHQpKXJldHVybiBwKyJFbXB0eSIraDtpZigic3RyaW5nIj09dHlwZW9mIHQuJHJlZiYmKGU9ci5zaW1wbGVSZWYodC4kcmVmKSx0PW5bZV0sInVuZGVmaW5lZCI9PXR5cGVvZiB0KSlyZXR1cm4gcCtlKyIgaXMgbm90IGRlZmluZWQhIitoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9dC50aXRsZXx8IklubGluZSBNb2RlbCIpLHQuZGVmaW5pdGlvbiYmKHQ9dC5kZWZpbml0aW9uKSwiZnVuY3Rpb24iIT10eXBlb2YgbyYmKG89ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fHt9KVsiZGVmYXVsdCJdfSk7Zm9yKHZhciBmPXt9LGQ9W10sbT0wLGc9Yyh0LGUpO2kua2V5cyhmKS5sZW5ndGg+MDspaS5mb3JFYWNoKGYsZnVuY3Rpb24oZSx0KXt2YXIgbj1pLmluZGV4T2YoZCx0KT4tMTtkZWxldGUgZlt0XSxufHwoZC5wdXNoKHQpLGcrPSI8YnIgLz4iK2MoZSx0KSl9KTtyZXR1cm4gZ319LHsiLi9oZWxwZXJzIjo0LCJsb2Rhc2gtY29tcGF0L2FycmF5L2luZGV4T2YiOjQ5LCJsb2Rhc2gtY29tcGF0L2NvbGxlY3Rpb24vZm9yRWFjaCI6NTQsImxvZGFzaC1jb21wYXQvY29sbGVjdGlvbi9tYXAiOjU2LCJsb2Rhc2gtY29tcGF0L2xhbmcvY2xvbmVEZWVwIjoxMzgsImxvZGFzaC1jb21wYXQvbGFuZy9pc0FycmF5IjoxNDAsImxvZGFzaC1jb21wYXQvbGFuZy9pc0VtcHR5IjoxNDEsImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCI6MTQ0LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCI6MTQ1LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNVbmRlZmluZWQiOjE0OCwibG9kYXNoLWNvbXBhdC9vYmplY3Qva2V5cyI6MTQ5fV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2h0dHAiKSxpPXtpc09iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiKX0sYT10LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLmVycm9ycz1bXSx0aGlzLndhcm5pbmdzPVtdLHRoaXMubW9kZWxNYXA9e319O2EucHJvdG90eXBlLnNldERvY3VtZW50YXRpb25Mb2NhdGlvbj1mdW5jdGlvbihlKXt0aGlzLmRvY0xvY2F0aW9uPWV9LGEucHJvdG90eXBlLmNvbnZlcnQ9ZnVuY3Rpb24oZSx0LG4scil7aWYoIWV8fCFBcnJheS5pc0FycmF5KGUuYXBpcykpcmV0dXJuIHRoaXMuZmluaXNoKHIsbnVsbCk7dGhpcy5jbGllbnRBdXRob3JpemF0aW9ucz10O3ZhciBpPXtzd2FnZ2VyOiIyLjAifTtpLm9yaWdpbmFsVmVyc2lvbj1lLnN3YWdnZXJWZXJzaW9uLHRoaXMuYXBpSW5mbyhlLGkpLHRoaXMuc2VjdXJpdHlEZWZpbml0aW9ucyhlLGkpLGUuYmFzZVBhdGgmJnRoaXMuc2V0RG9jdW1lbnRhdGlvbkxvY2F0aW9uKGUuYmFzZVBhdGgpO3ZhciBhLG89ITE7Zm9yKGE9MDthPGUuYXBpcy5sZW5ndGg7YSsrKXt2YXIgcz1lLmFwaXNbYV07QXJyYXkuaXNBcnJheShzLm9wZXJhdGlvbnMpJiYobz0hMCl9bz8odGhpcy5kZWNsYXJhdGlvbihlLGkpLHRoaXMuZmluaXNoKHIsaSkpOnRoaXMucmVzb3VyY2VMaXN0aW5nKGUsaSxuLHIpfSxhLnByb3RvdHlwZS5kZWNsYXJhdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuLHIsYSxvO2lmKGUuYXBpcyl7MD09PWUuYmFzZVBhdGguaW5kZXhPZigiaHR0cDovLyIpPyhhPWUuYmFzZVBhdGguc3Vic3RyaW5nKCJodHRwOi8vIi5sZW5ndGgpLG89YS5pbmRleE9mKCIvIiksbz4wPyh0Lmhvc3Q9YS5zdWJzdHJpbmcoMCxvKSx0LmJhc2VQYXRoPWEuc3Vic3RyaW5nKG8pKToodC5ob3N0PWEsdC5iYXNlUGF0aD0iLyIpKTowPT09ZS5iYXNlUGF0aC5pbmRleE9mKCJodHRwczovLyIpPyhhPWUuYmFzZVBhdGguc3Vic3RyaW5nKCJodHRwczovLyIubGVuZ3RoKSxvPWEuaW5kZXhPZigiLyIpLG8+MD8odC5ob3N0PWEuc3Vic3RyaW5nKDAsbyksdC5iYXNlUGF0aD1hLnN1YnN0cmluZyhvKSk6KHQuaG9zdD1hLHQuYmFzZVBhdGg9Ii8iKSk6dC5iYXNlUGF0aD1lLmJhc2VQYXRoO3ZhciBzO2lmKGUuYXV0aG9yaXphdGlvbnMmJihzPWUuYXV0aG9yaXphdGlvbnMpLGUuY29uc3VtZXMmJih0LmNvbnN1bWVzPWUuY29uc3VtZXMpLGUucHJvZHVjZXMmJih0LnByb2R1Y2VzPWUucHJvZHVjZXMpLGkuaXNPYmplY3QoZSkpZm9yKG4gaW4gZS5tb2RlbHMpe3ZhciBsPWUubW9kZWxzW25dLHU9bC5pZHx8bjt0aGlzLm1vZGVsTWFwW3VdPW59Zm9yKHI9MDtyPGUuYXBpcy5sZW5ndGg7cisrKXt2YXIgYz1lLmFwaXNbcl0scD1jLnBhdGgsaD1jLm9wZXJhdGlvbnM7dGhpcy5vcGVyYXRpb25zKHAsZS5yZXNvdXJjZVBhdGgsaCxzLHQpfXZhciBmPWUubW9kZWxzfHx7fTt0aGlzLm1vZGVscyhmLHQpfX0sYS5wcm90b3R5cGUubW9kZWxzPWZ1bmN0aW9uKGUsdCl7aWYoaS5pc09iamVjdChlKSl7dmFyIG47dC5kZWZpbml0aW9ucz10LmRlZmluaXRpb25zfHx7fTtmb3IobiBpbiBlKXt2YXIgcixhPWVbbl0sbz1bXSxzPXtwcm9wZXJ0aWVzOnt9fTtmb3IociBpbiBhLnByb3BlcnRpZXMpe3ZhciBsPWEucHJvcGVydGllc1tyXSx1PXt9O3RoaXMuZGF0YVR5cGUobCx1KSxsLmRlc2NyaXB0aW9uJiYodS5kZXNjcmlwdGlvbj1sLmRlc2NyaXB0aW9uKSxsWyJlbnVtIl0mJih1WyJlbnVtIl09bFsiZW51bSJdKSwiYm9vbGVhbiI9PXR5cGVvZiBsLnJlcXVpcmVkJiZsLnJlcXVpcmVkPT09ITAmJm8ucHVzaChyKSwic3RyaW5nIj09dHlwZW9mIGwucmVxdWlyZWQmJiJ0cnVlIj09PWwucmVxdWlyZWQmJm8ucHVzaChyKSxzLnByb3BlcnRpZXNbcl09dX1vLmxlbmd0aD4wP3MucmVxdWlyZWQ9bzpzLnJlcXVpcmVkPWEucmVxdWlyZWQsdC5kZWZpbml0aW9uc1tuXT1zfX19LGEucHJvdG90eXBlLmV4dHJhY3RUYWc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8ImRlZmF1bHQiO3JldHVybiAwIT09dC5pbmRleE9mKCJodHRwOiIpJiYwIT09dC5pbmRleE9mKCJodHRwczoiKXx8KHQ9dC5zcGxpdChbIi8iXSksdD10W3QubGVuZ3RoLTFdLnN1YnN0cmluZygpKSx0LmVuZHNXaXRoKCIuanNvbiIpJiYodD10LnN1YnN0cmluZygwLHQubGVuZ3RoLSIuanNvbiIubGVuZ3RoKSksdC5yZXBsYWNlKCIvIiwiIil9LGEucHJvdG90eXBlLm9wZXJhdGlvbnM9ZnVuY3Rpb24oZSx0LG4scixpKXtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgYTtpLnBhdGhzfHwoaS5wYXRocz17fSk7dmFyIG89aS5wYXRoc1tlXXx8e30scz10aGlzLmV4dHJhY3RUYWcodCk7aS50YWdzPWkudGFnc3x8W107dmFyIGw9ITE7Zm9yKGE9MDthPGkudGFncy5sZW5ndGg7YSsrKXt2YXIgdT1pLnRhZ3NbYV07dS5uYW1lPT09cyYmKGw9ITApfWZvcihsfHxpLnRhZ3MucHVzaCh7bmFtZTpzfSksYT0wO2E8bi5sZW5ndGg7YSsrKXt2YXIgYz1uW2FdLHA9KGMubWV0aG9kfHxjLmh0dHBNZXRob2QpLnRvTG93ZXJDYXNlKCksaD17dGFnczpbc119LGY9Yy5hdXRob3JpemF0aW9ucztpZihmJiYwPT09T2JqZWN0LmtleXMoZikubGVuZ3RoJiYoZj1yKSwidW5kZWZpbmVkIiE9dHlwZW9mIGYpe3ZhciBkO2Zvcih2YXIgbSBpbiBmKXtoLnNlY3VyaXR5PWguc2VjdXJpdHl8fFtdO3ZhciBnPWZbbV07aWYoZyl7dmFyIHk9W107Zm9yKHZhciB2IGluIGcpeS5wdXNoKGdbdl0uc2NvcGUpO2Q9e30sZFttXT15LGguc2VjdXJpdHkucHVzaChkKX1lbHNlIGQ9e30sZFttXT1bXSxoLnNlY3VyaXR5LnB1c2goZCl9fWMuY29uc3VtZXM/aC5jb25zdW1lcz1jLmNvbnN1bWVzOmkuY29uc3VtZXMmJihoLmNvbnN1bWVzPWkuY29uc3VtZXMpLGMucHJvZHVjZXM/aC5wcm9kdWNlcz1jLnByb2R1Y2VzOmkucHJvZHVjZXMmJihoLnByb2R1Y2VzPWkucHJvZHVjZXMpLGMuc3VtbWFyeSYmKGguc3VtbWFyeT1jLnN1bW1hcnkpLGMubm90ZXMmJihoLmRlc2NyaXB0aW9uPWMubm90ZXMpLGMubmlja25hbWUmJihoLm9wZXJhdGlvbklkPWMubmlja25hbWUpLGMuZGVwcmVjYXRlZCYmKGguZGVwcmVjYXRlZD1jLmRlcHJlY2F0ZWQpLHRoaXMuYXV0aG9yaXphdGlvbnMoZixpKSx0aGlzLnBhcmFtZXRlcnMoaCxjLnBhcmFtZXRlcnMsaSksdGhpcy5yZXNwb25zZU1lc3NhZ2VzKGgsYyxpKSxvW3BdPWh9aS5wYXRoc1tlXT1vfX0sYS5wcm90b3R5cGUucmVzcG9uc2VNZXNzYWdlcz1mdW5jdGlvbihlLHQpe2lmKGkuaXNPYmplY3QodCkpe3ZhciBuPXt9O3RoaXMuZGF0YVR5cGUodCxuKSwhbi5zY2hlbWEmJm4udHlwZSYmKG49e3NjaGVtYTpufSksZS5yZXNwb25zZXM9ZS5yZXNwb25zZXN8fHt9O3ZhciByPSExO2lmKEFycmF5LmlzQXJyYXkodC5yZXNwb25zZU1lc3NhZ2VzKSl7dmFyIGEsbz10LnJlc3BvbnNlTWVzc2FnZXM7Zm9yKGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHM9b1thXSxsPXtkZXNjcmlwdGlvbjpzLm1lc3NhZ2V9OzIwMD09PXMuY29kZSYmKHI9ITApLHMucmVzcG9uc2VNb2RlbCYmKGwuc2NoZW1hPXskcmVmOiIjL2RlZmluaXRpb25zLyIrcy5yZXNwb25zZU1vZGVsfSksZS5yZXNwb25zZXNbIiIrcy5jb2RlXT1sfX1yP2UucmVzcG9uc2VzWyJkZWZhdWx0Il09bjplLnJlc3BvbnNlc1syMDBdPW59fSxhLnByb3RvdHlwZS5hdXRob3JpemF0aW9ucz1mdW5jdGlvbihlKXshaS5pc09iamVjdChlKX0sYS5wcm90b3R5cGUucGFyYW1ldGVycz1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl0saT17fTtpZihpLm5hbWU9ci5uYW1lLGkuZGVzY3JpcHRpb249ci5kZXNjcmlwdGlvbixpLnJlcXVpcmVkPXIucmVxdWlyZWQsaVsiaW4iXT1yLnBhcmFtVHlwZSwiYm9keSI9PT1pWyJpbiJdJiYoaS5uYW1lPSJib2R5IiksImZvcm0iPT09aVsiaW4iXSYmKGlbImluIl09ImZvcm1EYXRhIiksclsiZW51bSJdJiYoaVsiZW51bSJdPXJbImVudW0iXSksci5hbGxvd011bHRpcGxlPT09ITB8fCJ0cnVlIj09PXIuYWxsb3dNdWx0aXBsZSl7dmFyIGE9e307aWYodGhpcy5kYXRhVHlwZShyLGEpLGkudHlwZT0iYXJyYXkiLGkuaXRlbXM9YSxyLmFsbG93YWJsZVZhbHVlcyl7dmFyIG89ci5hbGxvd2FibGVWYWx1ZXM7IkxJU1QiPT09by52YWx1ZVR5cGUmJihpWyJlbnVtIl09by52YWx1ZXMpfX1lbHNlIHRoaXMuZGF0YVR5cGUocixpKTsidW5kZWZpbmVkIiE9dHlwZW9mIHIuZGVmYXVsdFZhbHVlJiYoaVsiZGVmYXVsdCJdPXIuZGVmYXVsdFZhbHVlKSxlLnBhcmFtZXRlcnM9ZS5wYXJhbWV0ZXJzfHxbXSxlLnBhcmFtZXRlcnMucHVzaChpKX19fSxhLnByb3RvdHlwZS5kYXRhVHlwZT1mdW5jdGlvbihlLHQpe2lmKGkuaXNPYmplY3QoZSkpe2UubWluaW11bSYmKHQubWluaW11bT1lLm1pbmltdW0pLGUubWF4aW11bSYmKHQubWF4aW11bT1lLm1heGltdW0pLGUuZm9ybWF0JiYodC5mb3JtYXQ9ZS5mb3JtYXQpLCJ1bmRlZmluZWQiIT10eXBlb2YgZS5kZWZhdWx0VmFsdWUmJih0WyJkZWZhdWx0Il09ZS5kZWZhdWx0VmFsdWUpO3ZhciBuPXRoaXMudG9Kc29uU2NoZW1hKGUpO24mJih0PXR8fHt9LG4udHlwZSYmKHQudHlwZT1uLnR5cGUpLG4uZm9ybWF0JiYodC5mb3JtYXQ9bi5mb3JtYXQpLG4uJHJlZiYmKHQuc2NoZW1hPXskcmVmOm4uJHJlZn0pLG4uaXRlbXMmJih0Lml0ZW1zPW4uaXRlbXMpKX19LGEucHJvdG90eXBlLnRvSnNvblNjaGVtYT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4ib2JqZWN0Ijt2YXIgdD1lLnR5cGV8fGUuZGF0YVR5cGV8fGUucmVzcG9uc2VDbGFzc3x8IiIsbj10LnRvTG93ZXJDYXNlKCkscj0oZS5mb3JtYXR8fCIiKS50b0xvd2VyQ2FzZSgpO2lmKDA9PT1uLmluZGV4T2YoImxpc3RbIikpe3ZhciBpPXQuc3Vic3RyaW5nKDUsdC5sZW5ndGgtMSksYT10aGlzLnRvSnNvblNjaGVtYSh7dHlwZTppfSk7cmV0dXJue3R5cGU6ImFycmF5IixpdGVtczphfX1pZigiaW50Ij09PW58fCJpbnRlZ2VyIj09PW4mJiJpbnQzMiI9PT1yKXJldHVybnt0eXBlOiJpbnRlZ2VyIixmb3JtYXQ6ImludDMyIn07aWYoImxvbmciPT09bnx8ImludGVnZXIiPT09biYmImludDY0Ij09PXIpcmV0dXJue3R5cGU6ImludGVnZXIiLGZvcm1hdDoiaW50NjQifTtpZigiaW50ZWdlciI9PT1uKXJldHVybnt0eXBlOiJpbnRlZ2VyIixmb3JtYXQ6ImludDY0In07aWYoImZsb2F0Ij09PW58fCJudW1iZXIiPT09biYmImZsb2F0Ij09PXIpcmV0dXJue3R5cGU6Im51bWJlciIsZm9ybWF0OiJmbG9hdCJ9O2lmKCJkb3VibGUiPT09bnx8Im51bWJlciI9PT1uJiYiZG91YmxlIj09PXIpcmV0dXJue3R5cGU6Im51bWJlciIsZm9ybWF0OiJkb3VibGUifTtpZigic3RyaW5nIj09PW4mJiJkYXRlLXRpbWUiPT09cnx8ImRhdGUiPT09bilyZXR1cm57dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUtdGltZSJ9O2lmKCJzdHJpbmciPT09bilyZXR1cm57dHlwZToic3RyaW5nIn07aWYoImZpbGUiPT09bilyZXR1cm57dHlwZToiZmlsZSJ9O2lmKCJib29sZWFuIj09PW4pcmV0dXJue3R5cGU6ImJvb2xlYW4ifTtpZigiYm9vbGVhbiI9PT1uKXJldHVybnt0eXBlOiJib29sZWFuIn07aWYoImFycmF5Ij09PW58fCJsaXN0Ij09PW4pe2lmKGUuaXRlbXMpe3ZhciBvPXRoaXMudG9Kc29uU2NoZW1hKGUuaXRlbXMpO3JldHVybnt0eXBlOiJhcnJheSIsaXRlbXM6b319cmV0dXJue3R5cGU6ImFycmF5IixpdGVtczp7dHlwZToib2JqZWN0In19fXJldHVybiBlLiRyZWY/eyRyZWY6dGhpcy5tb2RlbE1hcFtlLiRyZWZdPyIjL2RlZmluaXRpb25zLyIrdGhpcy5tb2RlbE1hcFtlLiRyZWZdOmUuJHJlZn06InZvaWQiPT09bnx8IiI9PT1uP3t9OnRoaXMubW9kZWxNYXBbZS50eXBlXT97JHJlZjoiIy9kZWZpbml0aW9ucy8iK3RoaXMubW9kZWxNYXBbZS50eXBlXX06e3R5cGU6ZS50eXBlfX0sYS5wcm90b3R5cGUucmVzb3VyY2VMaXN0aW5nPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhLG89MCxzPXRoaXMsbD1lLmFwaXMubGVuZ3RoLHU9dCxjPXt9O24mJm4ucmVxdWVzdEludGVyY2VwdG9yJiYoYy5yZXF1ZXN0SW50ZXJjZXB0b3I9bi5yZXF1ZXN0SW50ZXJjZXB0b3IpLG4mJm4ucmVzcG9uc2VJbnRlcmNlcHRvciYmKGMucmVzcG9uc2VJbnRlcmNlcHRvcj1uLnJlc3BvbnNlSW50ZXJjZXB0b3IpO3ZhciBwPSJhcHBsaWNhdGlvbi9qc29uIjtmb3IobiYmbi5zd2FnZ2VyUmVxdWVzdEhlYWRlcnMmJihwPW4uc3dhZ2dlclJlcXVlc3RIZWFkZXJzKSwwPT09bCYmdGhpcy5maW5pc2goaSx0KSxhPTA7YTxsO2ErKyl7dmFyIGg9ZS5hcGlzW2FdLGY9aC5wYXRoLGQ9dGhpcy5nZXRBYnNvbHV0ZVBhdGgoZS5zd2FnZ2VyVmVyc2lvbix0aGlzLmRvY0xvY2F0aW9uLGYpO2guZGVzY3JpcHRpb24mJih0LnRhZ3M9dC50YWdzfHxbXSx0LnRhZ3MucHVzaCh7bmFtZTp0aGlzLmV4dHJhY3RUYWcoaC5wYXRoKSxkZXNjcmlwdGlvbjpoLmRlc2NyaXB0aW9ufHwiIn0pKTt2YXIgbT17dXJsOmQsaGVhZGVyczp7YWNjZXB0OnB9LG9uOnt9LG1ldGhvZDoiZ2V0Iix0aW1lb3V0Om4udGltZW91dH07bS5vbi5yZXNwb25zZT1mdW5jdGlvbihlKXtvKz0xO3ZhciB0PWUub2JqO3QmJnMuZGVjbGFyYXRpb24odCx1KSxvPT09bCYmcy5maW5pc2goaSx1KX0sbS5vbi5lcnJvcj1mdW5jdGlvbihlKXtjb25zb2xlLmVycm9yKGUpLG8rPTEsbz09PWwmJnMuZmluaXNoKGksdSl9LHRoaXMuY2xpZW50QXV0aG9yaXphdGlvbnMmJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zLmFwcGx5JiZ0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zLmFwcGx5KG0pLChuZXcgcikuZXhlY3V0ZShtLGMpfX0sYS5wcm90b3R5cGUuZ2V0QWJzb2x1dGVQYXRoPWZ1bmN0aW9uKGUsdCxuKXtpZigiMS4wIj09PWUmJnQuZW5kc1dpdGgoIi5qc29uIikpe3ZhciByPXQubGFzdEluZGV4T2YoIi8iKTtyPjAmJih0PXQuc3Vic3RyaW5nKDAscikpfXZhciBpPXQ7cmV0dXJuIDA9PT1uLmluZGV4T2YoImh0dHA6Iil8fDA9PT1uLmluZGV4T2YoImh0dHBzOiIpP2k9bjoodC5lbmRzV2l0aCgiLyIpJiYoaT10LnN1YnN0cmluZygwLHQubGVuZ3RoLTEpKSxpKz1uKSxpPWkucmVwbGFjZSgie2Zvcm1hdH0iLCJqc29uIil9LGEucHJvdG90eXBlLnNlY3VyaXR5RGVmaW5pdGlvbnM9ZnVuY3Rpb24oZSx0KXtpZihlLmF1dGhvcml6YXRpb25zKXt2YXIgbjtmb3IobiBpbiBlLmF1dGhvcml6YXRpb25zKXt2YXIgcj0hMSxpPXt2ZW5kb3JFeHRlbnNpb25zOnt9fSxhPWUuYXV0aG9yaXphdGlvbnNbbl07aWYoImFwaUtleSI9PT1hLnR5cGUpaS50eXBlPSJhcGlLZXkiLGlbImluIl09YS5wYXNzQXMsaS5uYW1lPWEua2V5bmFtZXx8bixyPSEwO2Vsc2UgaWYoImJhc2ljQXV0aCI9PT1hLnR5cGUpaS50eXBlPSJiYXNpY0F1dGgiLHI9ITA7ZWxzZSBpZigib2F1dGgyIj09PWEudHlwZSl7dmFyIG8scz1hLnNjb3Blc3x8W10sbD17fTtmb3IobyBpbiBzKXt2YXIgdT1zW29dO2xbdS5zY29wZV09dS5kZXNjcmlwdGlvbn1pZihpLnR5cGU9Im9hdXRoMiIsbz4wJiYoaS5zY29wZXM9bCksYS5ncmFudFR5cGVzKXtpZihhLmdyYW50VHlwZXMuaW1wbGljaXQpe3ZhciBjPWEuZ3JhbnRUeXBlcy5pbXBsaWNpdDtpLmZsb3c9ImltcGxpY2l0IixpLmF1dGhvcml6YXRpb25Vcmw9Yy5sb2dpbkVuZHBvaW50LHI9ITB9aWYoYS5ncmFudFR5cGVzLmF1dGhvcml6YXRpb25fY29kZSYmIWkuZmxvdyl7dmFyIHA9YS5ncmFudFR5cGVzLmF1dGhvcml6YXRpb25fY29kZTtpLmZsb3c9ImFjY2Vzc0NvZGUiLGkuYXV0aG9yaXphdGlvblVybD1wLnRva2VuUmVxdWVzdEVuZHBvaW50LnVybCxpLnRva2VuVXJsPXAudG9rZW5FbmRwb2ludC51cmwscj0hMH19fXImJih0LnNlY3VyaXR5RGVmaW5pdGlvbnM9dC5zZWN1cml0eURlZmluaXRpb25zfHx7fSx0LnNlY3VyaXR5RGVmaW5pdGlvbnNbbl09aSl9fX0sYS5wcm90b3R5cGUuYXBpSW5mbz1mdW5jdGlvbihlLHQpe2lmKGUuaW5mbyl7dmFyIG49ZS5pbmZvO3QuaW5mbz17fSxuLmNvbnRhY3QmJih0LmluZm8uY29udGFjdD17fSx0LmluZm8uY29udGFjdC5lbWFpbD1uLmNvbnRhY3QpLG4uZGVzY3JpcHRpb24mJih0LmluZm8uZGVzY3JpcHRpb249bi5kZXNjcmlwdGlvbiksbi50aXRsZSYmKHQuaW5mby50aXRsZT1uLnRpdGxlKSxuLnRlcm1zT2ZTZXJ2aWNlVXJsJiYodC5pbmZvLnRlcm1zT2ZTZXJ2aWNlPW4udGVybXNPZlNlcnZpY2VVcmwpLChuLmxpY2Vuc2V8fG4ubGljZW5zZVVybCkmJih0LmxpY2Vuc2U9e30sbi5saWNlbnNlJiYodC5saWNlbnNlLm5hbWU9bi5saWNlbnNlKSxuLmxpY2Vuc2VVcmwmJih0LmxpY2Vuc2UudXJsPW4ubGljZW5zZVVybCkpfWVsc2UgdGhpcy53YXJuaW5ncy5wdXNoKCJtaXNzaW5nIGluZm8gc2VjdGlvbiIpfSxhLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSx0KXtlKHQpfX0seyIuL2h0dHAiOjUsImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCI6MTQ0fV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0oZSgiLi4vaGVscGVycyIpLmxvZyx7aXNQbGFpbk9iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNQbGFpbk9iamVjdCIpLGlzU3RyaW5nOmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc1N0cmluZyIpfSksaT1lKCIuLi9zY2hlbWEtbWFya3VwLmpzIiksYT1lKCJqcy15YW1sIiksbz10LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZGVmaW5pdGlvbj10fHx7fSx0aGlzLmlzQXJyYXk9ImFycmF5Ij09PXQudHlwZSx0aGlzLm1vZGVscz1ufHx7fSx0aGlzLm5hbWU9ZXx8dC50aXRsZXx8IklubGluZSBNb2RlbCIsdGhpcy5tb2RlbFByb3BlcnR5TWFjcm89cnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGVbImRlZmF1bHQiXX0sdGhpc307by5wcm90b3R5cGUuY3JlYXRlSlNPTlNhbXBsZT1vLnByb3RvdHlwZS5nZXRTYW1wbGVWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gZT1lfHx7fSxlW3RoaXMubmFtZV09dGhpcyx0aGlzLmV4YW1wbGVzJiZyLmlzUGxhaW5PYmplY3QodGhpcy5leGFtcGxlcykmJnRoaXMuZXhhbXBsZXNbImFwcGxpY2F0aW9uL2pzb24iXT8odGhpcy5kZWZpbml0aW9uLmV4YW1wbGU9dGhpcy5leGFtcGxlc1siYXBwbGljYXRpb24vanNvbiJdLHIuaXNTdHJpbmcodGhpcy5kZWZpbml0aW9uLmV4YW1wbGUpJiYodGhpcy5kZWZpbml0aW9uLmV4YW1wbGU9YS5zYWZlTG9hZCh0aGlzLmRlZmluaXRpb24uZXhhbXBsZSkpKTp0aGlzLmRlZmluaXRpb24uZXhhbXBsZXx8KHRoaXMuZGVmaW5pdGlvbi5leGFtcGxlPXRoaXMuZXhhbXBsZXMpLGkuc2NoZW1hVG9KU09OKHRoaXMuZGVmaW5pdGlvbix0aGlzLm1vZGVscyxlLHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvKX0sby5wcm90b3R5cGUuZ2V0TW9ja1NpZ25hdHVyZT1mdW5jdGlvbigpe3JldHVybiBpLnNjaGVtYVRvSFRNTCh0aGlzLm5hbWUsdGhpcy5kZWZpbml0aW9uLHRoaXMubW9kZWxzLHRoaXMubW9kZWxQcm9wZXJ0eU1hY3JvKX19LHsiLi4vaGVscGVycyI6NCwiLi4vc2NoZW1hLW1hcmt1cC5qcyI6NywianMteWFtbCI6MTksImxvZGFzaC1jb21wYXQvbGFuZy9pc1BsYWluT2JqZWN0IjoxNDUsImxvZGFzaC1jb21wYXQvbGFuZy9pc1N0cmluZyI6MTQ2fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKGkuaXNFbXB0eSh0KSlyZXR1cm4gZVswXTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoZS5pbmRleE9mKHRbbl0pPi0xKXJldHVybiB0W25dO3JldHVybiBlWzBdfXZhciBpPXtjbG9uZURlZXA6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2Nsb25lRGVlcCIpLGlzVW5kZWZpbmVkOmUoImxvZGFzaC1jb21wYXQvbGFuZy9pc1VuZGVmaW5lZCIpLGlzRW1wdHk6ZSgibG9kYXNoLWNvbXBhdC9sYW5nL2lzRW1wdHkiKSxpc09iamVjdDplKCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNPYmplY3QiKX0sYT1lKCIuLi9oZWxwZXJzIiksbz1lKCIuL21vZGVsIikscz1lKCIuLi9odHRwIiksbD1lKCJxIiksdT10LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scixpLHMsbCx1LGMpe3ZhciBwPVtdO2U9ZXx8e30scz1zfHx7fSxlJiZlLm9wdGlvbnMmJih0aGlzLmNsaWVudD1lLm9wdGlvbnMuY2xpZW50fHxudWxsLHRoaXMucmVxdWVzdEludGVyY2VwdG9yPWUub3B0aW9ucy5yZXF1ZXN0SW50ZXJjZXB0b3J8fG51bGwsdGhpcy5yZXNwb25zZUludGVyY2VwdG9yPWUub3B0aW9ucy5yZXNwb25zZUludGVyY2VwdG9yfHxudWxsLHRoaXMucmVxdWVzdEFnZW50PWUub3B0aW9ucy5yZXF1ZXN0QWdlbnQpLHRoaXMuYXV0aG9yaXphdGlvbnM9cy5zZWN1cml0eSx0aGlzLmJhc2VQYXRoPWUuYmFzZVBhdGh8fCIvIix0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zPWMsdGhpcy5jb25zdW1lcz1zLmNvbnN1bWVzfHxlLmNvbnN1bWVzfHxbImFwcGxpY2F0aW9uL2pzb24iXSx0aGlzLnByb2R1Y2VzPXMucHJvZHVjZXN8fGUucHJvZHVjZXN8fFsiYXBwbGljYXRpb24vanNvbiJdLHRoaXMuZGVwcmVjYXRlZD1zLmRlcHJlY2F0ZWQsdGhpcy5kZXNjcmlwdGlvbj1zLmRlc2NyaXB0aW9uLHRoaXMuaG9zdD1lLmhvc3QsdGhpcy5tZXRob2Q9cnx8cC5wdXNoKCJPcGVyYXRpb24gIituKyIgaXMgbWlzc2luZyBtZXRob2QuIiksdGhpcy5tb2RlbHM9dXx8e30sdGhpcy5uaWNrbmFtZT1ufHxwLnB1c2goIk9wZXJhdGlvbnMgbXVzdCBoYXZlIGEgbmlja25hbWUuIiksdGhpcy5vcGVyYXRpb249cyx0aGlzLm9wZXJhdGlvbnM9e30sdGhpcy5wYXJhbWV0ZXJzPW51bGwhPT1zP3MucGFyYW1ldGVyc3x8W106e30sdGhpcy5wYXJlbnQ9ZSx0aGlzLnBhdGg9aXx8cC5wdXNoKCJPcGVyYXRpb24gIit0aGlzLm5pY2tuYW1lKyIgaXMgbWlzc2luZyBwYXRoLiIpLHRoaXMucmVzcG9uc2VzPXMucmVzcG9uc2VzfHx7fSx0aGlzLnNjaGVtZT10fHxlLnNjaGVtZXx8Imh0dHAiLHRoaXMuc2NoZW1lcz1zLnNjaGVtZXN8fGUuc2NoZW1lcyx0aGlzLnNlY3VyaXR5PXMuc2VjdXJpdHl8fGUuc2VjdXJpdHksdGhpcy5zdW1tYXJ5PXMuc3VtbWFyeXx8IiIsdGhpcy50aW1lb3V0PWUudGltZW91dCx0aGlzLnR5cGU9bnVsbCx0aGlzLnVzZUpRdWVyeT1lLnVzZUpRdWVyeSx0aGlzLmpxdWVyeUFqYXhDYWNoZT1lLmpxdWVyeUFqYXhDYWNoZSx0aGlzLmVuYWJsZUNvb2tpZXM9ZS5lbmFibGVDb29raWVzO3ZhciBoO2lmKHRoaXMuaG9zdHx8KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3RoaXMuaG9zdD13aW5kb3cubG9jYXRpb24uaG9zdDp0aGlzLmhvc3Q9ImxvY2FsaG9zdCIpLHRoaXMucGFyYW1ldGVyTWFjcm89ZS5wYXJhbWV0ZXJNYWNyb3x8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdFsiZGVmYXVsdCJdfSx0aGlzLmlubGluZU1vZGVscz1bXSwiLyIhPT10aGlzLmJhc2VQYXRoJiYiLyI9PT10aGlzLmJhc2VQYXRoLnNsaWNlKC0xKSYmKHRoaXMuYmFzZVBhdGg9dGhpcy5iYXNlUGF0aC5zbGljZSgwLC0xKSksInN0cmluZyI9PXR5cGVvZiB0aGlzLmRlcHJlY2F0ZWQpc3dpdGNoKHRoaXMuZGVwcmVjYXRlZC50b0xvd2VyQ2FzZSgpKXtjYXNlInRydWUiOmNhc2UieWVzIjpjYXNlIjEiOnRoaXMuZGVwcmVjYXRlZD0hMDticmVhaztjYXNlImZhbHNlIjpjYXNlIm5vIjpjYXNlIjAiOmNhc2UgbnVsbDp0aGlzLmRlcHJlY2F0ZWQ9ITE7YnJlYWs7ZGVmYXVsdDp0aGlzLmRlcHJlY2F0ZWQ9Qm9vbGVhbih0aGlzLmRlcHJlY2F0ZWQpfXZhciBmLGQ7aWYobClmb3IoaCBpbiBsKWQ9bmV3IG8oaCxsW2hdLHRoaXMubW9kZWxzLGUubW9kZWxQcm9wZXJ0eU1hY3JvKSxkJiYodGhpcy5tb2RlbHNbaF09ZCk7ZWxzZSBsPXt9O2ZvcihmPTA7Zjx0aGlzLnBhcmFtZXRlcnMubGVuZ3RoO2YrKyl7dmFyIG0sZz10aGlzLnBhcmFtZXRlcnNbZl07Z1siZGVmYXVsdCJdPXRoaXMucGFyYW1ldGVyTWFjcm8odGhpcyxnKSwiYXJyYXkiPT09Zy50eXBlJiYoZy5pc0xpc3Q9ITAsZy5hbGxvd011bHRpcGxlPSEwKTt2YXIgeT10aGlzLmdldFR5cGUoZyk7eSYmImJvb2xlYW4iPT09eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkmJihnLmFsbG93YWJsZVZhbHVlcz17fSxnLmlzTGlzdD0hMCxnWyJlbnVtIl09WyEwLCExXSk7Zm9yKGggaW4gZylhLmV4dHJhY3RFeHRlbnNpb25zKGgsZyk7InVuZGVmaW5lZCIhPXR5cGVvZiBnWyJ4LWV4YW1wbGUiXSYmKG09Z1sieC1leGFtcGxlIl0sZ1siZGVmYXVsdCJdPW0pLGdbIngtZXhhbXBsZXMiXSYmKG09Z1sieC1leGFtcGxlcyJdWyJkZWZhdWx0Il0sInVuZGVmaW5lZCIhPXR5cGVvZiBtJiYoZ1siZGVmYXVsdCJdPW0pKTt2YXIgdj1nWyJlbnVtIl18fGcuaXRlbXMmJmcuaXRlbXNbImVudW0iXTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHYpe3ZhciBiO2ZvcihnLmFsbG93YWJsZVZhbHVlcz17fSxnLmFsbG93YWJsZVZhbHVlcy52YWx1ZXM9W10sZy5hbGxvd2FibGVWYWx1ZXMuZGVzY3JpcHRpdmVWYWx1ZXM9W10sYj0wO2I8di5sZW5ndGg7YisrKXt2YXIgdz12W2JdLF89dz09PWdbImRlZmF1bHQiXXx8dysiIj09PWdbImRlZmF1bHQiXTtnLmFsbG93YWJsZVZhbHVlcy52YWx1ZXMucHVzaCh3KSxnLmFsbG93YWJsZVZhbHVlcy5kZXNjcmlwdGl2ZVZhbHVlcy5wdXNoKHt2YWx1ZTp3KyIiLGlzRGVmYXVsdDpffSl9fSJhcnJheSI9PT1nLnR5cGUmJih5PVt5XSwidW5kZWZpbmVkIj09dHlwZW9mIGcuYWxsb3dhYmxlVmFsdWVzJiYoZGVsZXRlIGcuaXNMaXN0LGRlbGV0ZSBnLmFsbG93TXVsdGlwbGUpKSxnLm1vZGVsU2lnbmF0dXJlPXt0eXBlOnksZGVmaW5pdGlvbnM6dGhpcy5tb2RlbHN9LGcuc2lnbmF0dXJlPXRoaXMuZ2V0TW9kZWxTaWduYXR1cmUoeSx0aGlzLm1vZGVscykudG9TdHJpbmcoKSxnLnNhbXBsZUpTT049dGhpcy5nZXRNb2RlbFNhbXBsZUpTT04oeSx0aGlzLm1vZGVscyksZy5yZXNwb25zZUNsYXNzU2lnbmF0dXJlPWcuc2lnbmF0dXJlfXZhciB4LEEsUyxqPXRoaXMucmVzcG9uc2VzO2pbMjAwXT8oUz1qWzIwMF0sQT0iMjAwIik6alsyMDFdPyhTPWpbMjAxXSxBPSIyMDEiKTpqWzIwMl0/KFM9alsyMDJdLEE9IjIwMiIpOmpbMjAzXT8oUz1qWzIwM10sQT0iMjAzIik6alsyMDRdPyhTPWpbMjA0XSxBPSIyMDQiKTpqWzIwNV0/KFM9alsyMDVdLEE9IjIwNSIpOmpbMjA2XT8oUz1qWzIwNl0sQT0iMjA2Iik6alsiZGVmYXVsdCJdJiYoUz1qWyJkZWZhdWx0Il0sQT0iZGVmYXVsdCIpO2Zvcih4IGluIGopaWYoYS5leHRyYWN0RXh0ZW5zaW9ucyh4LGopLCJzdHJpbmciPT10eXBlb2YgeCYmeC5pbmRleE9mKCJ4LSIpPT09LTEpe3ZhciBFPWpbeF07aWYoIm9iamVjdCI9PXR5cGVvZiBFJiYib2JqZWN0Ij09dHlwZW9mIEUuaGVhZGVycyl7dmFyIE89RS5oZWFkZXJzO2Zvcih2YXIgayBpbiBPKXt2YXIgVD1PW2tdO2lmKCJvYmplY3QiPT10eXBlb2YgVClmb3IodmFyIEMgaW4gVClhLmV4dHJhY3RFeHRlbnNpb25zKEMsVCl9fX1pZihTKWZvcih4IGluIFMpYS5leHRyYWN0RXh0ZW5zaW9ucyh4LFMpO2lmKFMmJlMuc2NoZW1hKXt2YXIgSSxEPXRoaXMucmVzb2x2ZU1vZGVsKFMuc2NoZW1hLGwpO2RlbGV0ZSBqW0FdLEQ/KHRoaXMuc3VjY2Vzc1Jlc3BvbnNlPXt9LEk9dGhpcy5zdWNjZXNzUmVzcG9uc2VbQV09RCk6Uy5zY2hlbWEudHlwZSYmIm9iamVjdCIhPT1TLnNjaGVtYS50eXBlJiYiYXJyYXkiIT09Uy5zY2hlbWEudHlwZT8odGhpcy5zdWNjZXNzUmVzcG9uc2U9e30sST10aGlzLnN1Y2Nlc3NSZXNwb25zZVtBXT1TLnNjaGVtYSk6KHRoaXMuc3VjY2Vzc1Jlc3BvbnNlPXt9LEk9dGhpcy5zdWNjZXNzUmVzcG9uc2VbQV09bmV3IG8oKHZvaWQgMCksUy5zY2hlbWF8fHt9LHRoaXMubW9kZWxzLGUubW9kZWxQcm9wZXJ0eU1hY3JvKSksSSYmKEkudmVuZG9yRXh0ZW5zaW9ucz1TLnZlbmRvckV4dGVuc2lvbnMsUy5kZXNjcmlwdGlvbiYmKEkuZGVzY3JpcHRpb249Uy5kZXNjcmlwdGlvbiksUy5leGFtcGxlcyYmKEkuZXhhbXBsZXM9Uy5leGFtcGxlcyksUy5oZWFkZXJzJiYoSS5oZWFkZXJzPVMuaGVhZGVycykpLHRoaXMudHlwZT1TfXJldHVybiBwLmxlbmd0aD4wJiZ0aGlzLnJlc291cmNlJiZ0aGlzLnJlc291cmNlLmFwaSYmdGhpcy5yZXNvdXJjZS5hcGkuZmFpbCYmdGhpcy5yZXNvdXJjZS5hcGkuZmFpbChwKSx0aGlzfTt1LnByb3RvdHlwZS5pc0RlZmF1bHRBcnJheUl0ZW1WYWx1ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0WyJkZWZhdWx0Il0mJkFycmF5LmlzQXJyYXkodFsiZGVmYXVsdCJdKT90WyJkZWZhdWx0Il0uaW5kZXhPZihlKSE9PS0xOmU9PT10WyJkZWZhdWx0Il19LHUucHJvdG90eXBlLmdldFR5cGU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnR5cGUscj1lLmZvcm1hdCxpPSExOyJpbnRlZ2VyIj09PW4mJiJpbnQzMiI9PT1yP3Q9ImludGVnZXIiOiJpbnRlZ2VyIj09PW4mJiJpbnQ2NCI9PT1yP3Q9ImxvbmciOiJpbnRlZ2VyIj09PW4/dD0iaW50ZWdlciI6InN0cmluZyI9PT1uP3Q9ImRhdGUtdGltZSI9PT1yPyJkYXRlLXRpbWUiOiJkYXRlIj09PXI/ImRhdGUiOiJzdHJpbmciOiJudW1iZXIiPT09biYmImZsb2F0Ij09PXI/dD0iZmxvYXQiOiJudW1iZXIiPT09biYmImRvdWJsZSI9PT1yP3Q9ImRvdWJsZSI6Im51bWJlciI9PT1uP3Q9ImRvdWJsZSI6ImJvb2xlYW4iPT09bj90PSJib29sZWFuIjoiYXJyYXkiPT09bj8oaT0hMCwKK2UuaXRlbXMmJih0PXRoaXMuZ2V0VHlwZShlLml0ZW1zKSkpOiJmaWxlIj09PW4mJih0PSJmaWxlIiksZS4kcmVmJiYodD1hLnNpbXBsZVJlZihlLiRyZWYpKTt2YXIgbz1lLnNjaGVtYTtpZihvKXt2YXIgcz1vLiRyZWY7cmV0dXJuIHM/KHM9YS5zaW1wbGVSZWYocyksaT9bc106cyk6Im9iamVjdCI9PT1vLnR5cGU/dGhpcy5hZGRJbmxpbmVNb2RlbChvKTp0aGlzLmdldFR5cGUobyl9cmV0dXJuIGk/W3RdOnR9LHUucHJvdG90eXBlLmFkZElubGluZU1vZGVsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaW5saW5lTW9kZWxzLmxlbmd0aCxuPXRoaXMucmVzb2x2ZU1vZGVsKGUse30pO3JldHVybiBuPyh0aGlzLmlubGluZU1vZGVscy5wdXNoKG4pLCJJbmxpbmUgTW9kZWwgIit0KTpudWxsfSx1LnByb3RvdHlwZS5nZXRJbmxpbmVNb2RlbD1mdW5jdGlvbihlKXtpZigvXklubGluZSBNb2RlbCBcZCskLy50ZXN0KGUpKXt2YXIgdD1wYXJzZUludChlLnN1YnN0cigiSW5saW5lIE1vZGVsIi5sZW5ndGgpLnRyaW0oKSwxMCksbj10aGlzLmlubGluZU1vZGVsc1t0XTtyZXR1cm4gbn1yZXR1cm4gbnVsbH0sdS5wcm90b3R5cGUucmVzb2x2ZU1vZGVsPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlLiRyZWYpe3ZhciBuPWUuJHJlZjtpZigwPT09bi5pbmRleE9mKCIjL2RlZmluaXRpb25zLyIpJiYobj1uLnN1YnN0cmluZygiIy9kZWZpbml0aW9ucy8iLmxlbmd0aCkpLHRbbl0pcmV0dXJuIG5ldyBvKG4sdFtuXSx0aGlzLm1vZGVscyx0aGlzLnBhcmVudC5tb2RlbFByb3BlcnR5TWFjcm8pfWVsc2UgaWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoIm9iamVjdCI9PT1lLnR5cGV8fGkuaXNVbmRlZmluZWQoZS50eXBlKSkpcmV0dXJuIG5ldyBvKCh2b2lkIDApLGUsdGhpcy5tb2RlbHMsdGhpcy5wYXJlbnQubW9kZWxQcm9wZXJ0eU1hY3JvKTtyZXR1cm4gbnVsbH0sdS5wcm90b3R5cGUuaGVscD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy5uaWNrbmFtZSsiOiAiK3RoaXMuc3VtbWFyeSsiXG4iLG49MDtuPHRoaXMucGFyYW1ldGVycy5sZW5ndGg7bisrKXt2YXIgcj10aGlzLnBhcmFtZXRlcnNbbl0saT1yLnNpZ25hdHVyZTt0Kz0iXG4gICogIityLm5hbWUrIiAoIitpKyIpOiAiK3IuZGVzY3JpcHRpb259cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlJiZhLmxvZyh0KSx0fSx1LnByb3RvdHlwZS5nZXRNb2RlbFNpZ25hdHVyZT1mdW5jdGlvbihlLHQpe3ZhciBuLHI7cmV0dXJuIGUgaW5zdGFuY2VvZiBBcnJheSYmKHI9ITAsZT1lWzBdKSwidW5kZWZpbmVkIj09dHlwZW9mIGU/KGU9InVuZGVmaW5lZCIsbj0hMCk6dFtlXT8oZT10W2VdLG49ITEpOnRoaXMuZ2V0SW5saW5lTW9kZWwoZSk/KGU9dGhpcy5nZXRJbmxpbmVNb2RlbChlKSxuPSExKTpuPSEwLG4/cj8iQXJyYXlbIitlKyJdIjplLnRvU3RyaW5nKCk6cj8iQXJyYXlbIitlLmdldE1vY2tTaWduYXR1cmUoKSsiXSI6ZS5nZXRNb2NrU2lnbmF0dXJlKCl9LHUucHJvdG90eXBlLnN1cHBvcnRIZWFkZXJQYXJhbXM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdS5wcm90b3R5cGUuc3VwcG9ydGVkU3VibWl0TWV0aG9kcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudC5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzfSx1LnByb3RvdHlwZS5nZXRIZWFkZXJQYXJhbXM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuc2V0Q29udGVudFR5cGVzKGUse30pLG49e30scj0wO3I8dGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDtyKyspe3ZhciBpPXRoaXMucGFyYW1ldGVyc1tyXTsiaGVhZGVyIj09PWlbImluIl0mJihuW2kubmFtZS50b0xvd2VyQ2FzZSgpXT1pKX1mb3IodmFyIGEgaW4gZSl7dmFyIG89blthLnRvTG93ZXJDYXNlKCldO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygbyl7dmFyIHM9ZVthXTtBcnJheS5pc0FycmF5KHMpJiYocz1zLnRvU3RyaW5nKCkpLHRbby5uYW1lXT1zfX1yZXR1cm4gdH0sdS5wcm90b3R5cGUudXJsaWZ5PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXt9LHI9dGhpcy5wYXRoLnJlcGxhY2UoLyMuKi8sIiIpLGk9IiIsYT0wO2E8dGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDthKyspe3ZhciBvPXRoaXMucGFyYW1ldGVyc1thXTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGVbby5uYW1lXSl7dmFyIHM7aWYoInN0cmluZyI9PT1vLnR5cGUmJiJwYXNzd29yZCI9PT1vLmZvcm1hdCYmdCYmKHM9ITApLCJwYXRoIj09PW9bImluIl0pe3ZhciBsPW5ldyBSZWdFeHAoInsiK28ubmFtZSsifSIsImdpIiksdT1lW28ubmFtZV07QXJyYXkuaXNBcnJheSh1KT91PXRoaXMuZW5jb2RlUGF0aENvbGxlY3Rpb24oby5jb2xsZWN0aW9uRm9ybWF0LG8ubmFtZSx1LHMpOiJ1bmRlZmluZWQiIT10eXBlb2Ygb1sieC1lc2NhcGUiXSYmb1sieC1lc2NhcGUiXSE9PSEwfHwodT10aGlzLmVuY29kZVBhdGhQYXJhbSh1LHMpKSxyPXIucmVwbGFjZShsLHUpfWVsc2UgaWYoInF1ZXJ5Ij09PW9bImluIl0mJiJ1bmRlZmluZWQiIT10eXBlb2YgZVtvLm5hbWVdKWlmKGkrPSIiPT09aSYmci5pbmRleE9mKCI/Iik8MD8iPyI6IiYiLCJ1bmRlZmluZWQiIT10eXBlb2Ygby5jb2xsZWN0aW9uRm9ybWF0KXt2YXIgYz1lW28ubmFtZV07aSs9QXJyYXkuaXNBcnJheShjKT90aGlzLmVuY29kZVF1ZXJ5Q29sbGVjdGlvbihvLmNvbGxlY3Rpb25Gb3JtYXQsby5uYW1lLGMscyk6dGhpcy5lbmNvZGVRdWVyeUtleShvLm5hbWUpKyI9Iit0aGlzLmVuY29kZVF1ZXJ5UGFyYW0oZVtvLm5hbWVdLHMpfWVsc2UgaSs9dGhpcy5lbmNvZGVRdWVyeUtleShvLm5hbWUpKyI9Iit0aGlzLmVuY29kZVF1ZXJ5UGFyYW0oZVtvLm5hbWVdLHMpO2Vsc2UiZm9ybURhdGEiPT09b1siaW4iXSYmKG5bby5uYW1lXT1lW28ubmFtZV0pfWVsc2UgaWYoInF1ZXJ5Ij09PW9bImluIl0mJiJ1bmRlZmluZWQiPT10eXBlb2YgZVtvLm5hbWVdJiZvLmFsbG93RW1wdHlWYWx1ZT09PSEwKWlmKGkrPSIiPT09aSYmci5pbmRleE9mKCI/Iik8MD8iPyI6IiYiLCJ1bmRlZmluZWQiIT10eXBlb2Ygby5jb2xsZWN0aW9uRm9ybWF0fHwiYXJyYXkiPT09by50eXBlKXt2YXIgYyxwPW8uY29sbGVjdGlvbkZvcm1hdHx8Im11bHRpIjtpKz1BcnJheS5pc0FycmF5KGMpP3RoaXMuZW5jb2RlUXVlcnlDb2xsZWN0aW9uKHAsby5uYW1lLGMscyk6dGhpcy5lbmNvZGVRdWVyeUNvbGxlY3Rpb24ocCxvLm5hbWUsW2NdLHMpfWVsc2UgaSs9dGhpcy5lbmNvZGVRdWVyeUtleShvLm5hbWUpKyI9Iit0aGlzLmVuY29kZVF1ZXJ5UGFyYW0oIiIscyl9dmFyIGg9dGhpcy5zY2hlbWUrIjovLyIrdGhpcy5ob3N0O3JldHVybiIvIiE9PXRoaXMuYmFzZVBhdGgmJihoKz10aGlzLmJhc2VQYXRoKSxoK3IraX0sdS5wcm90b3R5cGUuZ2V0TWlzc2luZ1BhcmFtcz1mdW5jdGlvbihlKXt2YXIgdCxuPVtdO2Zvcih0PTA7dDx0aGlzLnBhcmFtZXRlcnMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5wYXJhbWV0ZXJzW3RdO3IucmVxdWlyZWQ9PT0hMCYmInVuZGVmaW5lZCI9PXR5cGVvZiBlW3IubmFtZV0mJihuPXIubmFtZSl9cmV0dXJuIG59LHUucHJvdG90eXBlLmdldEJvZHk9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcixpLGEsbyxzLGw9e30sdT0hMSxwPTA7cDx0aGlzLnBhcmFtZXRlcnMubGVuZ3RoO3ArKylpZihpPXRoaXMucGFyYW1ldGVyc1twXSwidW5kZWZpbmVkIiE9dHlwZW9mIHRbaS5uYW1lXSl7dmFyIGg7InN0cmluZyI9PT1pLnR5cGUmJiJwYXNzd29yZCI9PT1pLmZvcm1hdCYmKGg9InBhc3N3b3JkIiksImJvZHkiPT09aVsiaW4iXT9hPXRbaS5uYW1lXToiZm9ybURhdGEiPT09aVsiaW4iXSYmKGxbaS5uYW1lXT17cGFyYW06aSx2YWx1ZTp0W2kubmFtZV0scGFzc3dvcmQ6aH0scj0hMCl9ZWxzZSJib2R5Ij09PWlbImluIl0mJih1PSEwKTtpZih1JiYidW5kZWZpbmVkIj09dHlwZW9mIGEpe3ZhciBmPWVbIkNvbnRlbnQtVHlwZSJdO2YmJjA9PT1mLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKSYmKGE9Int9Iil9dmFyIGQ9ITE7aWYoZVsiQ29udGVudC1UeXBlIl0mJmVbIkNvbnRlbnQtVHlwZSJdLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT49MCYmKGQ9ITApLHImJiFkKXt2YXIgbT0iIjtmb3IobyBpbiBsKXtpPWxbb10ucGFyYW0scz1sW29dLnZhbHVlO3ZhciBnO24mJm4ubWFza1Bhc3N3b3JkcyYmKGc9bFtvXS5wYXNzd29yZCksInVuZGVmaW5lZCIhPXR5cGVvZiBzJiYoQXJyYXkuaXNBcnJheShzKT8oIiIhPT1tJiYobSs9IiYiKSxtKz10aGlzLmVuY29kZVF1ZXJ5Q29sbGVjdGlvbihpLmNvbGxlY3Rpb25Gb3JtYXQsbyxzLGcpKTooIiIhPT1tJiYobSs9IiYiKSxtKz1lbmNvZGVVUklDb21wb25lbnQobykrIj0iK2MoZW5jb2RlVVJJQ29tcG9uZW50KHMpLGcpKSl9YT1tfWVsc2UgaWYoZCl7dmFyIHk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEZvcm1EYXRhKXt5PW5ldyBGb3JtRGF0YSx5LnR5cGU9ImZvcm1EYXRhIjtmb3IobyBpbiBsKWlmKGk9bFtvXS5wYXJhbSxzPXRbb10sInVuZGVmaW5lZCIhPXR5cGVvZiBzKWlmKCJbb2JqZWN0IEZpbGVdIj09PXt9LnRvU3RyaW5nLmFwcGx5KHMpKXkuYXBwZW5kKG8scyk7ZWxzZSBpZigiZmlsZSI9PT1zLnR5cGUmJnMudmFsdWUpeS5hcHBlbmQobyxzLnZhbHVlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocykpaWYoIm11bHRpIj09PWkuY29sbGVjdGlvbkZvcm1hdCl7eVsiZGVsZXRlIl0obyk7Zm9yKHZhciB2IGluIHMpeS5hcHBlbmQobyxzW3ZdKX1lbHNlIHkuYXBwZW5kKG8sdGhpcy5lbmNvZGVRdWVyeUNvbGxlY3Rpb24oaS5jb2xsZWN0aW9uRm9ybWF0LG8scykuc3BsaXQoIj0iKS5zbGljZSgxKS5qb2luKCI9IikpO2Vsc2UgeS5hcHBlbmQobyxzKTthPXl9ZWxzZXt5PXt9O2ZvcihvIGluIGwpaWYocz10W29dLEFycmF5LmlzQXJyYXkocykpe3ZhciBiLHc9aS5jb2xsZWN0aW9uRm9ybWF0fHwibXVsdGkiO2lmKCJzc3YiPT09dyliPSIgIjtlbHNlIGlmKCJwaXBlcyI9PT13KWI9InwiO2Vsc2UgaWYoInRzdiI9PT13KWI9Ilx0IjtlbHNle2lmKCJtdWx0aSI9PT13KXt5W29dPXM7YnJlYWt9Yj0iLCJ9dmFyIF87cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe18/Xys9YjpfPSIiLF8rPWV9KSx5W29dPV99ZWxzZSB5W29dPXM7YT15fWVbIkNvbnRlbnQtVHlwZSJdPSJtdWx0aXBhcnQvZm9ybS1kYXRhIn1yZXR1cm4gYX0sdS5wcm90b3R5cGUuZ2V0TW9kZWxTYW1wbGVKU09OPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixhO2lmKHQ9dHx8e30sbj1lIGluc3RhbmNlb2YgQXJyYXksYT1uP2VbMF06ZSx0W2FdP3I9dFthXS5jcmVhdGVKU09OU2FtcGxlKCk6dGhpcy5nZXRJbmxpbmVNb2RlbChhKSYmKHI9dGhpcy5nZXRJbmxpbmVNb2RlbChhKS5jcmVhdGVKU09OU2FtcGxlKCkpLHIpe2lmKHI9bj9bcl06ciwic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIHI7aWYoaS5pc09iamVjdChyKSl7dmFyIG89cjtpZihyIGluc3RhbmNlb2YgQXJyYXkmJnIubGVuZ3RoPjAmJihvPXJbMF0pLG8ubm9kZU5hbWUmJiJOb2RlIj09dHlwZW9mIG8pe3ZhciBzPShuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcobyk7cmV0dXJuIHRoaXMuZm9ybWF0WG1sKHMpfXJldHVybiBKU09OLnN0cmluZ2lmeShyLG51bGwsMil9cmV0dXJuIHJ9fSx1LnByb3RvdHlwZVsiZG8iXT1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiB0aGlzLmV4ZWN1dGUoZSx0LG4scixpKX0sdS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciB1LGMscCxoLGY9ZXx8e30sZD17fTtpLmlzT2JqZWN0KHQpJiYoZD10LHU9bixjPXIpLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBkLnRpbWVvdXQ/ZC50aW1lb3V0OnRoaXMudGltZW91dCx0aGlzLmNsaWVudCYmKGQuY2xpZW50PXRoaXMuY2xpZW50KSx0aGlzLnJlcXVlc3RBZ2VudCYmKGQucmVxdWVzdEFnZW50PXRoaXMucmVxdWVzdEFnZW50KSwhZC5yZXF1ZXN0SW50ZXJjZXB0b3ImJnRoaXMucmVxdWVzdEludGVyY2VwdG9yJiYoZC5yZXF1ZXN0SW50ZXJjZXB0b3I9dGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3IpLCFkLnJlc3BvbnNlSW50ZXJjZXB0b3ImJnRoaXMucmVzcG9uc2VJbnRlcmNlcHRvciYmKGQucmVzcG9uc2VJbnRlcmNlcHRvcj10aGlzLnJlc3BvbnNlSW50ZXJjZXB0b3IpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYodT10LGM9biksdGhpcy5wYXJlbnQudXNlUHJvbWlzZT9wPWwuZGVmZXIoKToodT11fHx0aGlzLnBhcmVudC5kZWZhdWx0U3VjY2Vzc0NhbGxiYWNrfHxhLmxvZyxjPWN8fHRoaXMucGFyZW50LmRlZmF1bHRFcnJvckNhbGxiYWNrfHxhLmxvZyksInVuZGVmaW5lZCI9PXR5cGVvZiBkLnVzZUpRdWVyeSYmKGQudXNlSlF1ZXJ5PXRoaXMudXNlSlF1ZXJ5KSwidW5kZWZpbmVkIj09dHlwZW9mIGQuanF1ZXJ5QWpheENhY2hlJiYoZC5qcXVlcnlBamF4Q2FjaGU9dGhpcy5qcXVlcnlBamF4Q2FjaGUpLCJ1bmRlZmluZWQiPT10eXBlb2YgZC5lbmFibGVDb29raWVzJiYoZC5lbmFibGVDb29raWVzPXRoaXMuZW5hYmxlQ29va2llcyk7dmFyIG09dGhpcy5nZXRNaXNzaW5nUGFyYW1zKGYpO2lmKG0ubGVuZ3RoPjApe3ZhciBnPSJtaXNzaW5nIHJlcXVpcmVkIHBhcmFtczogIittO3JldHVybiBhLmZhaWwoZyksdGhpcy5wYXJlbnQudXNlUHJvbWlzZT8ocC5yZWplY3QoZykscC5wcm9taXNlKTooYyhnLG8pLHt9KX12YXIgeSx2PXRoaXMuZ2V0SGVhZGVyUGFyYW1zKGYpLGI9dGhpcy5zZXRDb250ZW50VHlwZXMoZixkKSx3PXt9O2Zvcih5IGluIHYpd1t5XT12W3ldO2Zvcih5IGluIGIpd1t5XT1iW3ldO3ZhciBfPXRoaXMuZ2V0Qm9keShiLGYsZCkseD10aGlzLnVybGlmeShmLGQubWFza1Bhc3N3b3Jkcyk7aWYoeC5pbmRleE9mKCIue2Zvcm1hdH0iKT4wJiZ3KXt2YXIgQT13LkFjY2VwdHx8dy5hY2NlcHQ7QSYmQS5pbmRleE9mKCJqc29uIik+MD94PXgucmVwbGFjZSgiLntmb3JtYXR9IiwiLmpzb24iKTpBJiZBLmluZGV4T2YoInhtbCIpPjAmJih4PXgucmVwbGFjZSgiLntmb3JtYXR9IiwiLnhtbCIpKX12YXIgUz17dXJsOngsbWV0aG9kOnRoaXMubWV0aG9kLnRvVXBwZXJDYXNlKCksYm9keTpfLGVuYWJsZUNvb2tpZXM6ZC5lbmFibGVDb29raWVzLHVzZUpRdWVyeTpkLnVzZUpRdWVyeSxqcXVlcnlBamF4Q2FjaGU6ZC5qcXVlcnlBamF4Q2FjaGUsZGVmZXJyZWQ6cCxoZWFkZXJzOncsY2xpZW50QXV0aG9yaXphdGlvbnM6ZC5jbGllbnRBdXRob3JpemF0aW9ucyxvcGVyYXRpb246dGhpcyxjb25uZWN0aW9uQWdlbnQ6dGhpcy5jb25uZWN0aW9uQWdlbnQsb246e3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe3JldHVybiBwPyhwLnJlc29sdmUoZSkscC5wcm9taXNlKTp1KGUsbyl9LGVycm9yOmZ1bmN0aW9uKGUpe3JldHVybiBwPyhwLnJlamVjdChlKSxwLnByb21pc2UpOmMoZSxvKX19fTtyZXR1cm4gaCYmKFMudGltZW91dD1oKSx0aGlzLmNsaWVudEF1dGhvcml6YXRpb25zLmFwcGx5KFMsdGhpcy5vcGVyYXRpb24uc2VjdXJpdHkpLGQubW9jaz09PSEwPyhkLnJlcXVlc3RJbnRlcmNlcHRvciYmZC5yZXF1ZXN0SW50ZXJjZXB0b3IuYXBwbHkoUyksUyk6KG5ldyBzKS5leGVjdXRlKFMsZCl9LHUucHJvdG90eXBlLnNldENvbnRlbnRUeXBlcz1mdW5jdGlvbihlLHQpe3ZhciBuLGksbz10aGlzLnBhcmFtZXRlcnMscz1lLnBhcmFtZXRlckNvbnRlbnRUeXBlfHxyKHRoaXMuY29uc3VtZXMsWyJhcHBsaWNhdGlvbi9qc29uIiwiYXBwbGljYXRpb24veWFtbCJdKSxsPXQucmVzcG9uc2VDb250ZW50VHlwZXx8cih0aGlzLnByb2R1Y2VzLFsiYXBwbGljYXRpb24vanNvbiIsImFwcGxpY2F0aW9uL3lhbWwiXSksdT1bXSxjPVtdLHA9e307Zm9yKGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGg9b1tpXTtpZigiZm9ybURhdGEiPT09aFsiaW4iXSkiZmlsZSI9PT1oLnR5cGU/dS5wdXNoKGgpOmMucHVzaChoKTtlbHNlIGlmKCJoZWFkZXIiPT09aFsiaW4iXSYmdCl7dmFyIGY9aC5uYW1lLGQ9dFtoLm5hbWVdOyJ1bmRlZmluZWQiIT10eXBlb2YgdFtoLm5hbWVdJiYocFtmXT1kKX1lbHNlImJvZHkiPT09aFsiaW4iXSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlW2gubmFtZV0mJihuPWVbaC5uYW1lXSl9dmFyIG09bnx8dS5sZW5ndGh8fGMubGVuZ3RoO2lmKCJwb3N0Ij09PXRoaXMubWV0aG9kfHwicHV0Ij09PXRoaXMubWV0aG9kfHwicGF0Y2giPT09dGhpcy5tZXRob2R8fCgiZGVsZXRlIj09PXRoaXMubWV0aG9kfHwiZ2V0Ij09PXRoaXMubWV0aG9kKSYmbSl7aWYodC5yZXF1ZXN0Q29udGVudFR5cGUmJihzPXQucmVxdWVzdENvbnRlbnRUeXBlKSxjLmxlbmd0aD4wKXtpZihzPXZvaWQgMCx0LnJlcXVlc3RDb250ZW50VHlwZSlzPXQucmVxdWVzdENvbnRlbnRUeXBlO2Vsc2UgaWYodS5sZW5ndGg+MClzPSJtdWx0aXBhcnQvZm9ybS1kYXRhIjtlbHNlIGlmKHRoaXMuY29uc3VtZXMmJnRoaXMuY29uc3VtZXMubGVuZ3RoPjApZm9yKHZhciBnIGluIHRoaXMuY29uc3VtZXMpe3ZhciB5PXRoaXMuY29uc3VtZXNbZ107MCE9PXkuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJjAhPT15LmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKXx8KHM9eSl9InVuZGVmaW5lZCI9PXR5cGVvZiBzJiYocz0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIil9fWVsc2Ugcz1udWxsO3JldHVybiBzJiZ0aGlzLmNvbnN1bWVzJiZ0aGlzLmNvbnN1bWVzLmluZGV4T2Yocyk9PT0tMSYmYS5sb2coInNlcnZlciBkb2Vzbid0IGNvbnN1bWUgIitzKyIsIHRyeSAiK0pTT04uc3RyaW5naWZ5KHRoaXMuY29uc3VtZXMpKSx0aGlzLm1hdGNoZXNBY2NlcHQobCl8fGEubG9nKCJzZXJ2ZXIgY2FuJ3QgcHJvZHVjZSAiK2wpLHMmJiIiIT09bnx8ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI9PT1zP3BbIkNvbnRlbnQtVHlwZSJdPXM6dGhpcy5jb25zdW1lcyYmdGhpcy5jb25zdW1lcy5sZW5ndGg+MCYmImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI9PT10aGlzLmNvbnN1bWVzWzBdJiYocFsiQ29udGVudC1UeXBlIl09dGhpcy5jb25zdW1lc1swXSksbCYmKHAuQWNjZXB0PWwpLHB9LHUucHJvdG90eXBlLm1hdGNoZXNBY2NlcHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCF0aGlzLnByb2R1Y2VzfHwodGhpcy5wcm9kdWNlcy5pbmRleE9mKGUpIT09LTF8fHRoaXMucHJvZHVjZXMuaW5kZXhPZigiKi8qIikhPT0tMSl9LHUucHJvdG90eXBlLmFzQ3VybD1mdW5jdGlvbihlLHQpe3ZhciBuPXttb2NrOiEwLG1hc2tQYXNzd29yZHM6ITB9O2lmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIHIgaW4gdCluW3JdPXRbcl07dmFyIGE9dGhpcy5leGVjdXRlKGUsbik7dGhpcy5jbGllbnRBdXRob3JpemF0aW9ucy5hcHBseShhLHRoaXMub3BlcmF0aW9uLnNlY3VyaXR5KTt2YXIgbz1bXTtpZihvLnB1c2goIi1YICIrdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKSksInVuZGVmaW5lZCIhPXR5cGVvZiBhLmhlYWRlcnMpe3ZhciBzO2ZvcihzIGluIGEuaGVhZGVycyl7dmFyIGw9YS5oZWFkZXJzW3NdOyJzdHJpbmciPT10eXBlb2YgbCYmKGw9bC5yZXBsYWNlKC9cJy9nLCJcXHUwMDI3IikpLG8ucHVzaCgiLS1oZWFkZXIgJyIrcysiOiAiK2wrIiciKX19dmFyIHU9ITEscD0hMSxoPWEuaGVhZGVyc1siQ29udGVudC1UeXBlIl07aWYoaCYmMD09PWguaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik/dT0hMDpoJiYwPT09aC5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIikmJih1PSEwLHA9ITApLGEuYm9keSl7dmFyIGY7aWYoaS5pc09iamVjdChhLmJvZHkpKXtpZihwKXtwPSEwO2Zvcih2YXIgZD0wO2Q8dGhpcy5wYXJhbWV0ZXJzLmxlbmd0aDtkKyspe3ZhciBtPXRoaXMucGFyYW1ldGVyc1tkXTtpZigiZm9ybURhdGEiPT09bVsiaW4iXSl7Znx8KGY9IiIpO3ZhciBnO2lmKGc9ImZ1bmN0aW9uIj09dHlwZW9mIEZvcm1EYXRhJiZhLmJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YT9hLmJvZHkuZ2V0QWxsKG0ubmFtZSk6YS5ib2R5W20ubmFtZV0paWYoImZpbGUiPT09bS50eXBlKWcubmFtZSYmKGYrPSItRiAiK20ubmFtZSsnPUAiJytnLm5hbWUrJyIgJyk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGcpKWlmKCJtdWx0aSI9PT1tLmNvbGxlY3Rpb25Gb3JtYXQpZm9yKHZhciB5IGluIGcpZis9Ii1GICIrdGhpcy5lbmNvZGVRdWVyeUtleShtLm5hbWUpKyI9IitjKGdbeV0sbS5mb3JtYXQpKyIgIjtlbHNlIGYrPSItRiAiK3RoaXMuZW5jb2RlUXVlcnlDb2xsZWN0aW9uKG0uY29sbGVjdGlvbkZvcm1hdCxtLm5hbWUsYyhnLG0uZm9ybWF0KSkrIiAiO2Vsc2UgZis9Ii1GICIrdGhpcy5lbmNvZGVRdWVyeUtleShtLm5hbWUpKyI9IitjKGcsbS5mb3JtYXQpKyIgIn19fWZ8fChmPUpTT04uc3RyaW5naWZ5KGEuYm9keSkpfWVsc2UgZj1hLmJvZHk7Zj1mLnJlcGxhY2UoL1wnL2csIiUyNyIpLnJlcGxhY2UoL1xuL2csIiBcXCBcbiAiKSx1fHwoZj1mLnJlcGxhY2UoLyYvZywiJTI2IikpLHA/by5wdXNoKGYpOm8ucHVzaCgiLWQgJyIrZi5yZXBsYWNlKC9AL2csIiU0MCIpKyInIil9cmV0dXJuImN1cmwgIitvLmpvaW4oIiAiKSsiICciK2EudXJsKyInIn0sdS5wcm90b3R5cGUuZW5jb2RlUGF0aENvbGxlY3Rpb249ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksYT0iIixvPSIiO2ZvcihvPSJzc3YiPT09ZT8iJTIwIjoidHN2Ij09PWU/IiUwOSI6InBpcGVzIj09PWU/InwiOiIsIixpPTA7aTxuLmxlbmd0aDtpKyspMD09PWk/YT10aGlzLmVuY29kZVF1ZXJ5UGFyYW0obltpXSxyKTphKz1vK3RoaXMuZW5jb2RlUXVlcnlQYXJhbShuW2ldLHIpO3JldHVybiBhfSx1LnByb3RvdHlwZS5lbmNvZGVRdWVyeUNvbGxlY3Rpb249ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksYT0iIjtpZihlPWV8fCJkZWZhdWx0IiwiZGVmYXVsdCI9PT1lfHwibXVsdGkiPT09ZSlmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKWk+MCYmKGErPSImIiksYSs9dGhpcy5lbmNvZGVRdWVyeUtleSh0KSsiPSIrYyh0aGlzLmVuY29kZVF1ZXJ5UGFyYW0obltpXSkscik7ZWxzZXt2YXIgbz0iIjtpZigiY3N2Ij09PWUpbz0iLCI7ZWxzZSBpZigic3N2Ij09PWUpbz0iJTIwIjtlbHNlIGlmKCJ0c3YiPT09ZSlvPSIlMDkiO2Vsc2UgaWYoInBpcGVzIj09PWUpbz0ifCI7ZWxzZSBpZigiYnJhY2tldHMiPT09ZSlmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKTAhPT1pJiYoYSs9IiYiKSxhKz10aGlzLmVuY29kZVF1ZXJ5S2V5KHQpKyJbXT0iK2ModGhpcy5lbmNvZGVRdWVyeVBhcmFtKG5baV0pLHIpO2lmKCIiIT09bylmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKTA9PT1pP2E9dGhpcy5lbmNvZGVRdWVyeUtleSh0KSsiPSIrdGhpcy5lbmNvZGVRdWVyeVBhcmFtKG5baV0pOmErPW8rdGhpcy5lbmNvZGVRdWVyeVBhcmFtKG5baV0pfXJldHVybiBhfSx1LnByb3RvdHlwZS5lbmNvZGVRdWVyeUtleT1mdW5jdGlvbihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoIiU1QiIsIlsiKS5yZXBsYWNlKCIlNUQiLCJdIikucmVwbGFjZSgiJTI0IiwiJCIpfSx1LnByb3RvdHlwZS5lbmNvZGVRdWVyeVBhcmFtPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IioqKioqKiI6dm9pZCAwIT09ZSYmbnVsbCE9PWU/ZW5jb2RlVVJJQ29tcG9uZW50KGUpOiIifSx1LnByb3RvdHlwZS5lbmNvZGVQYXRoUGFyYW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUsdCl9O3ZhciBjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYicGFzc3dvcmQiPT09dD8iKioqKioqIjplfX0seyIuLi9oZWxwZXJzIjo0LCIuLi9odHRwIjo1LCIuL21vZGVsIjo5LCJsb2Rhc2gtY29tcGF0L2xhbmcvY2xvbmVEZWVwIjoxMzgsImxvZGFzaC1jb21wYXQvbGFuZy9pc0VtcHR5IjoxNDEsImxvZGFzaC1jb21wYXQvbGFuZy9pc09iamVjdCI6MTQ0LCJsb2Rhc2gtY29tcGF0L2xhbmcvaXNVbmRlZmluZWQiOjE0OCxxOjE1N31dLDExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXQuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXt0aGlzLmRlc2NyaXB0aW9uPXQsdGhpcy5leHRlcm5hbERvY3M9bix0aGlzLm5hbWU9ZSx0aGlzLm9wZXJhdGlvbj1yLHRoaXMub3BlcmF0aW9uc0FycmF5PVtdLHRoaXMucGF0aD1lLHRoaXMudGFnPWV9O3IucHJvdG90eXBlLnNvcnQ9ZnVuY3Rpb24oKXt9fSx7fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7aWYoIXMpe3M9ITA7Zm9yKHZhciBlLHQ9by5sZW5ndGg7dDspe2U9byxvPVtdO2Zvcih2YXIgbj0tMTsrK248dDspZVtuXSgpO3Q9by5sZW5ndGh9cz0hMX19ZnVuY3Rpb24gaSgpe312YXIgYT10LmV4cG9ydHM9e30sbz1bXSxzPSExO2EubmV4dFRpY2s9ZnVuY3Rpb24oZSl7by5wdXNoKGUpLHN8fHNldFRpbWVvdXQociwwKX0sYS50aXRsZT0iYnJvd3NlciIsYS5icm93c2VyPSEwLGEuZW52PXt9LGEuYXJndj1bXSxhLnZlcnNpb249IiIsYS52ZXJzaW9ucz17fSxhLm9uPWksYS5hZGRMaXN0ZW5lcj1pLGEub25jZT1pLGEub2ZmPWksYS5yZW1vdmVMaXN0ZW5lcj1pLGEucmVtb3ZlQWxsTGlzdGVuZXJzPWksYS5lbWl0PWksYS5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sYS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGEuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sYS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0se31dLDEzOltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKHQpe3ZhciBuO3JldHVybiBuPXQgaW5zdGFuY2VvZiBlP3Q6bmV3IGUodC50b1N0cmluZygpLCJiaW5hcnkiKSxuLnRvU3RyaW5nKCJiYXNlNjQiKX10LmV4cG9ydHM9bn0oKX0pLmNhbGwodGhpcyxlKCJidWZmZXIiKS5CdWZmZXIpfSx7YnVmZmVyOjE0fV0sMTQ6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7cmV0dXJuIGkuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk/KHRoaXMubGVuZ3RoPTAsdGhpcy5wYXJlbnQ9dm9pZCAwLCJudW1iZXIiPT10eXBlb2YgZT9hKHRoaXMsZSk6InN0cmluZyI9PXR5cGVvZiBlP28odGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06InV0ZjgiKTpzKHRoaXMsZSkpOmFyZ3VtZW50cy5sZW5ndGg+MT9uZXcgaShlLGFyZ3VtZW50c1sxXSk6bmV3IGkoZSl9ZnVuY3Rpb24gYShlLHQpe2lmKGU9ZChlLHQ8MD8wOjB8bSh0KSksIWkuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIG49MDtuPHQ7bisrKWVbbl09MDtyZXR1cm4gZX1mdW5jdGlvbiBvKGUsdCxuKXsic3RyaW5nIj09dHlwZW9mIG4mJiIiIT09bnx8KG49InV0ZjgiKTt2YXIgcj0wfHkodCxuKTtyZXR1cm4gZT1kKGUsciksZS53cml0ZSh0LG4pLGV9ZnVuY3Rpb24gcyhlLHQpe2lmKGkuaXNCdWZmZXIodCkpcmV0dXJuIGwoZSx0KTtpZihRKHQpKXJldHVybiB1KGUsdCk7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJtdXN0IHN0YXJ0IHdpdGggbnVtYmVyLCBidWZmZXIsIGFycmF5IG9yIHN0cmluZyIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXIpe2lmKHQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIGMoZSx0KTtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIHAoZSx0KX1yZXR1cm4gdC5sZW5ndGg/aChlLHQpOmYoZSx0KX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49MHxtKHQubGVuZ3RoKTtyZXR1cm4gZT1kKGUsbiksdC5jb3B5KGUsMCwwLG4pLGV9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPTB8bSh0Lmxlbmd0aCk7ZT1kKGUsbik7Zm9yKHZhciByPTA7cjxuO3IrPTEpZVtyXT0yNTUmdFtyXTtyZXR1cm4gZX1mdW5jdGlvbiBjKGUsdCl7dmFyIG49MHxtKHQubGVuZ3RoKTtlPWQoZSxuKTtmb3IodmFyIHI9MDtyPG47cis9MSllW3JdPTI1NSZ0W3JdO3JldHVybiBlfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gaS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0LmJ5dGVMZW5ndGgsZT1pLl9hdWdtZW50KG5ldyBVaW50OEFycmF5KHQpKSk6ZT1jKGUsbmV3IFVpbnQ4QXJyYXkodCkpLGV9ZnVuY3Rpb24gaChlLHQpe3ZhciBuPTB8bSh0Lmxlbmd0aCk7ZT1kKGUsbik7Zm9yKHZhciByPTA7cjxuO3IrPTEpZVtyXT0yNTUmdFtyXTtyZXR1cm4gZX1mdW5jdGlvbiBmKGUsdCl7dmFyIG4scj0wOyJCdWZmZXIiPT09dC50eXBlJiZRKHQuZGF0YSkmJihuPXQuZGF0YSxyPTB8bShuLmxlbmd0aCkpLGU9ZChlLHIpO2Zvcih2YXIgaT0wO2k8cjtpKz0xKWVbaV09MjU1Jm5baV07cmV0dXJuIGV9ZnVuY3Rpb24gZChlLHQpe2kuVFlQRURfQVJSQVlfU1VQUE9SVD9lPWkuX2F1Z21lbnQobmV3IFVpbnQ4QXJyYXkodCkpOihlLmxlbmd0aD10LGUuX2lzQnVmZmVyPSEwKTt2YXIgbj0wIT09dCYmdDw9aS5wb29sU2l6ZT4+PjE7cmV0dXJuIG4mJihlLnBhcmVudD1HKSxlfWZ1bmN0aW9uIG0oZSl7aWYoZT49cigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IityKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIGcoZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBnKSlyZXR1cm4gbmV3IGcoZSx0KTt2YXIgbj1uZXcgaShlLHQpO3JldHVybiBkZWxldGUgbi5wYXJlbnQsbn1mdW5jdGlvbiB5KGUsdCl7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgbj1lLmxlbmd0aDtpZigwPT09bilyZXR1cm4gMDtmb3IodmFyIHI9ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UicmF3IjpjYXNlInJhd3MiOnJldHVybiBuO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuICQoZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipuO2Nhc2UiaGV4IjpyZXR1cm4gbj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBIKGUpLmxlbmd0aDtkZWZhdWx0OmlmKHIpcmV0dXJuICQoZSkubGVuZ3RoO3Q9KCIiK3QpLnRvTG93ZXJDYXNlKCkscj0hMH19ZnVuY3Rpb24gdihlLHQsbil7dmFyIHI9ITE7aWYodD0wfHQsbj12b2lkIDA9PT1ufHxuPT09MS8wP3RoaXMubGVuZ3RoOjB8bixlfHwoZT0idXRmOCIpLHQ8MCYmKHQ9MCksbj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLG48PXQpcmV0dXJuIiI7Zm9yKDs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIEModGhpcyx0LG4pO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEUodGhpcyx0LG4pO2Nhc2UiYXNjaWkiOnJldHVybiBrKHRoaXMsdCxuKTtjYXNlImJpbmFyeSI6cmV0dXJuIFQodGhpcyx0LG4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gaih0aGlzLHQsbik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBJKHRoaXMsdCxuKTtkZWZhdWx0OmlmKHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLHI9ITB9fWZ1bmN0aW9uIGIoZSx0LG4scil7bj1OdW1iZXIobil8fDA7dmFyIGk9ZS5sZW5ndGgtbjtyPyhyPU51bWJlcihyKSxyPmkmJihyPWkpKTpyPWk7dmFyIGE9dC5sZW5ndGg7aWYoYSUyIT09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO3I+YS8yJiYocj1hLzIpO2Zvcih2YXIgbz0wO288cjtvKyspe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqbywyKSwxNik7aWYoaXNOYU4ocykpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtlW24rb109c31yZXR1cm4gb31mdW5jdGlvbiB3KGUsdCxuLHIpe3JldHVybiBZKCQodCxlLmxlbmd0aC1uKSxlLG4scil9ZnVuY3Rpb24gXyhlLHQsbixyKXtyZXR1cm4gWShGKHQpLGUsbixyKX1mdW5jdGlvbiB4KGUsdCxuLHIpe3JldHVybiBfKGUsdCxuLHIpfWZ1bmN0aW9uIEEoZSx0LG4scil7cmV0dXJuIFkoSCh0KSxlLG4scil9ZnVuY3Rpb24gUyhlLHQsbixyKXtyZXR1cm4gWShWKHQsZS5sZW5ndGgtbiksZSxuLHIpfWZ1bmN0aW9uIGooZSx0LG4pe3JldHVybiAwPT09dCYmbj09PWUubGVuZ3RoP0ouZnJvbUJ5dGVBcnJheShlKTpKLmZyb21CeXRlQXJyYXkoZS5zbGljZSh0LG4pKX1mdW5jdGlvbiBFKGUsdCxuKXtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2Zvcih2YXIgcj1bXSxpPXQ7aTxuOyl7dmFyIGE9ZVtpXSxvPW51bGwscz1hPjIzOT80OmE+MjIzPzM6YT4xOTE/MjoxO2lmKGkrczw9bil7dmFyIGwsdSxjLHA7c3dpdGNoKHMpe2Nhc2UgMTphPDEyOCYmKG89YSk7YnJlYWs7Y2FzZSAyOmw9ZVtpKzFdLDEyOD09PSgxOTImbCkmJihwPSgzMSZhKTw8Nnw2MyZsLHA+MTI3JiYobz1wKSk7YnJlYWs7Y2FzZSAzOmw9ZVtpKzFdLHU9ZVtpKzJdLDEyOD09PSgxOTImbCkmJjEyOD09PSgxOTImdSkmJihwPSgxNSZhKTw8MTJ8KDYzJmwpPDw2fDYzJnUscD4yMDQ3JiYocDw1NTI5Nnx8cD41NzM0MykmJihvPXApKTticmVhaztjYXNlIDQ6bD1lW2krMV0sdT1lW2krMl0sYz1lW2krM10sMTI4PT09KDE5MiZsKSYmMTI4PT09KDE5MiZ1KSYmMTI4PT09KDE5MiZjKSYmKHA9KDE1JmEpPDwxOHwoNjMmbCk8PDEyfCg2MyZ1KTw8Nnw2MyZjLHA+NjU1MzUmJnA8MTExNDExMiYmKG89cCkpfX1udWxsPT09bz8obz02NTUzMyxzPTEpOm8+NjU1MzUmJihvLT02NTUzNixyLnB1c2gobz4+PjEwJjEwMjN8NTUyOTYpLG89NTYzMjB8MTAyMyZvKSxyLnB1c2gobyksaSs9c31yZXR1cm4gTyhyKX1mdW5jdGlvbiBPKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PUspcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO2Zvcih2YXIgbj0iIixyPTA7cjx0OyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKHIscis9SykpO3JldHVybiBufWZ1bmN0aW9uIGsoZSx0LG4pe3ZhciByPSIiO249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKHZhciBpPXQ7aTxuO2krKylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2ldKTtyZXR1cm4gcn1mdW5jdGlvbiBUKGUsdCxuKXt2YXIgcj0iIjtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2Zvcih2YXIgaT10O2k8bjtpKyspcis9U3RyaW5nLmZyb21DaGFyQ29kZShlW2ldKTtyZXR1cm4gcn1mdW5jdGlvbiBDKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghbnx8bjwwfHxuPnIpJiYobj1yKTtmb3IodmFyIGk9IiIsYT10O2E8bjthKyspaSs9TihlW2FdKTtyZXR1cm4gaX1mdW5jdGlvbiBJKGUsdCxuKXtmb3IodmFyIHI9ZS5zbGljZSh0LG4pLGk9IiIsYT0wO2E8ci5sZW5ndGg7YSs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJbYV0rMjU2KnJbYSsxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gRChlLHQsbil7aWYoZSUxIT09MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihlK3Q+bil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIEwoZSx0LG4scixhLG8pe2lmKCFpLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImJ1ZmZlciBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlIik7aWYodD5hfHx0PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInZhbHVlIGlzIG91dCBvZiBib3VuZHMiKTtpZihuK3I+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIE0oZSx0LG4scil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgaT0wLGE9TWF0aC5taW4oZS5sZW5ndGgtbiwyKTtpPGE7aSsrKWVbbitpXT0odCYyNTU8PDgqKHI/aToxLWkpKT4+PjgqKHI/aToxLWkpfWZ1bmN0aW9uIFIoZSx0LG4scil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBpPTAsYT1NYXRoLm1pbihlLmxlbmd0aC1uLDQpO2k8YTtpKyspZVtuK2ldPXQ+Pj44KihyP2k6My1pKSYyNTV9ZnVuY3Rpb24gVShlLHQsbixyLGksYSl7aWYodD5pfHx0PGEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInZhbHVlIGlzIG91dCBvZiBib3VuZHMiKTtpZihuK3I+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImluZGV4IG91dCBvZiByYW5nZSIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUChlLHQsbixyLGkpe3JldHVybiBpfHxVKGUsdCxuLDQsMy40MDI4MjM0NjYzODUyODg2ZTM4LC0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgpLFcud3JpdGUoZSx0LG4sciwyMyw0KSxuKzR9ZnVuY3Rpb24gcShlLHQsbixyLGkpe3JldHVybiBpfHxVKGUsdCxuLDgsMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCwtMS43OTc2OTMxMzQ4NjIzMTU3ZTMwOCksVy53cml0ZShlLHQsbixyLDUyLDgpLG4rOH1mdW5jdGlvbiBCKGUpe2lmKGU9eihlKS5yZXBsYWNlKFosIiIpLGUubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtlLmxlbmd0aCU0IT09MDspZSs9Ij0iO3JldHVybiBlfWZ1bmN0aW9uIHooZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX1mdW5jdGlvbiBOKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiAkKGUsdCl7dD10fHwxLzA7Zm9yKHZhciBuLHI9ZS5sZW5ndGgsaT1udWxsLGE9W10sbz0wO288cjtvKyspe2lmKG49ZS5jaGFyQ29kZUF0KG8pLG4+NTUyOTUmJm48NTczNDQpe2lmKCFpKXtpZihuPjU2MzE5KXsodC09Myk+LTEmJmEucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYobysxPT09cil7KHQtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9bjtjb250aW51ZX1pZihuPDU2MzIwKXsodC09Myk+LTEmJmEucHVzaCgyMzksMTkxLDE4OSksaT1uO2NvbnRpbnVlfW49aS01NTI5Njw8MTB8bi01NjMyMHw2NTUzNn1lbHNlIGkmJih0LT0zKT4tMSYmYS5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwsbjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2EucHVzaChuKX1lbHNlIGlmKG48MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7YS5wdXNoKG4+PjZ8MTkyLDYzJm58MTI4KX1lbHNlIGlmKG48NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2EucHVzaChuPj4xMnwyMjQsbj4+NiY2M3wxMjgsNjMmbnwxMjgpfWVsc2V7aWYoIShuPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7YS5wdXNoKG4+PjE4fDI0MCxuPj4xMiY2M3wxMjgsbj4+NiY2M3wxMjgsNjMmbnwxMjgpfX1yZXR1cm4gYX1mdW5jdGlvbiBGKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQobikpO3JldHVybiB0fWZ1bmN0aW9uIFYoZSx0KXtmb3IodmFyIG4scixpLGE9W10sbz0wO288ZS5sZW5ndGgmJiEoKHQtPTIpPDApO28rKyluPWUuY2hhckNvZGVBdChvKSxyPW4+PjgsaT1uJTI1NixhLnB1c2goaSksYS5wdXNoKHIpO3JldHVybiBhfWZ1bmN0aW9uIEgoZSl7cmV0dXJuIEoudG9CeXRlQXJyYXkoQihlKSl9ZnVuY3Rpb24gWShlLHQsbixyKXtmb3IodmFyIGk9MDtpPHImJiEoaStuPj10Lmxlbmd0aHx8aT49ZS5sZW5ndGgpO2krKyl0W2krbl09ZVtpXTtyZXR1cm4gaX12YXIgSj1lKCJiYXNlNjQtanMiKSxXPWUoImllZWU3NTQiKSxRPWUoImlzLWFycmF5Iik7bi5CdWZmZXI9aSxuLlNsb3dCdWZmZXI9ZyxuLklOU1BFQ1RfTUFYX0JZVEVTPTUwLGkucG9vbFNpemU9ODE5Mjt2YXIgRz17fTtpLlRZUEVEX0FSUkFZX1NVUFBPUlQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXRyeXt2YXIgdD1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gdC5mb289ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9LHQuY29uc3RydWN0b3I9ZSw0Mj09PXQuZm9vKCkmJnQuY29uc3RydWN0b3I9PT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJhcnJheSYmMD09PXQuc3ViYXJyYXkoMSwxKS5ieXRlTGVuZ3RofWNhdGNoKG4pe3JldHVybiExfX0oKSxpLmlzQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX0saS5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIWkuaXNCdWZmZXIoZSl8fCFpLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIG49ZS5sZW5ndGgscj10Lmxlbmd0aCxhPTAsbz1NYXRoLm1pbihuLHIpO2E8byYmZVthXT09PXRbYV07KSsrYTtyZXR1cm4gYSE9PW8mJihuPWVbYV0scj10W2FdKSxuPHI/LTE6cjxuPzE6MH0saS5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInJhdyI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxpLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFRKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImxpc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzLiIpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbmV3IGkoMCk7dmFyIG47aWYodm9pZCAwPT09dClmb3IodD0wLG49MDtuPGUubGVuZ3RoO24rKyl0Kz1lW25dLmxlbmd0aDt2YXIgcj1uZXcgaSh0KSxhPTA7Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIG89ZVtuXTtvLmNvcHkocixhKSxhKz1vLmxlbmd0aH1yZXR1cm4gcn0saS5ieXRlTGVuZ3RoPXksaS5wcm90b3R5cGUubGVuZ3RoPXZvaWQgMCxpLnByb3RvdHlwZS5wYXJlbnQ9dm9pZCAwLGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/RSh0aGlzLDAsZSk6di5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGkucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighaS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09aS5jb21wYXJlKHRoaXMsZSl9LGkucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PW4uSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCx0KS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+dCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxpLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUpe2lmKCFpLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWU/MDppLmNvbXBhcmUodGhpcyxlKX0saS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0LG4pe2Zvcih2YXIgcj0tMSxpPTA7bitpPGUubGVuZ3RoO2krKylpZihlW24raV09PT10W3I9PT0tMT8wOmktcl0pe2lmKHI9PT0tMSYmKHI9aSksaS1yKzE9PT10Lmxlbmd0aClyZXR1cm4gbityfWVsc2Ugcj0tMTtyZXR1cm4tMX1pZih0PjIxNDc0ODM2NDc/dD0yMTQ3NDgzNjQ3OnQ8LTIxNDc0ODM2NDgmJih0PS0yMTQ3NDgzNjQ4KSx0Pj49MCwwPT09dGhpcy5sZW5ndGgpcmV0dXJuLTE7aWYodD49dGhpcy5sZW5ndGgpcmV0dXJuLTE7aWYodDwwJiYodD1NYXRoLm1heCh0aGlzLmxlbmd0aCt0LDApKSwic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIDA9PT1lLmxlbmd0aD8tMTpTdHJpbmcucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLGUsdCk7aWYoaS5pc0J1ZmZlcihlKSlyZXR1cm4gbih0aGlzLGUsdCk7aWYoIm51bWJlciI9PXR5cGVvZiBlKXJldHVybiBpLlRZUEVEX0FSUkFZX1NVUFBPUlQmJiJmdW5jdGlvbiI9PT1VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLGUsdCk6bih0aGlzLFtlXSx0KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX0saS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLmxvZygiLmdldCgpIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB1c2luZyBhcnJheSBpbmRleGVzIGluc3RlYWQuIiksdGhpcy5yZWFkVUludDgoZSl9LGkucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLmxvZygiLnNldCgpIGlzIGRlcHJlY2F0ZWQuIEFjY2VzcyB1c2luZyBhcnJheSBpbmRleGVzIGluc3RlYWQuIiksdGhpcy53cml0ZVVJbnQ4KGUsdCl9LGkucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKHZvaWQgMD09PXQpcj0idXRmOCIsbj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1uJiYic3RyaW5nIj09dHlwZW9mIHQpcj10LG49dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYoaXNGaW5pdGUodCkpdD0wfHQsaXNGaW5pdGUobik/KG49MHxuLHZvaWQgMD09PXImJihyPSJ1dGY4IikpOihyPW4sbj12b2lkIDApO2Vsc2V7dmFyIGk9cjtyPXQsdD0wfG4sbj1pfXZhciBhPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PW58fG4+YSkmJihuPWEpLGUubGVuZ3RoPjAmJihuPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7cnx8KHI9InV0ZjgiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gocil7Y2FzZSJoZXgiOnJldHVybiBiKHRoaXMsZSx0LG4pO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIHcodGhpcyxlLHQsbik7Y2FzZSJhc2NpaSI6cmV0dXJuIF8odGhpcyxlLHQsbik7Y2FzZSJiaW5hcnkiOnJldHVybiB4KHRoaXMsZSx0LG4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gQSh0aGlzLGUsdCxuKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIFModGhpcyxlLHQsbik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7cj0oIiIrcikudG9Mb3dlckNhc2UoKSxvPSEwfX0saS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgSz00MDk2O2kucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5sZW5ndGg7ZT1+fmUsdD12b2lkIDA9PT10P246fn50LGU8MD8oZSs9bixlPDAmJihlPTApKTplPm4mJihlPW4pLHQ8MD8odCs9bix0PDAmJih0PTApKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSk7dmFyIHI7aWYoaS5UWVBFRF9BUlJBWV9TVVBQT1JUKXI9aS5fYXVnbWVudCh0aGlzLnN1YmFycmF5KGUsdCkpO2Vsc2V7dmFyIGE9dC1lO3I9bmV3IGkoYSwodm9pZCAwKSk7Zm9yKHZhciBvPTA7bzxhO28rKylyW29dPXRoaXNbbytlXX1yZXR1cm4gci5sZW5ndGgmJihyLnBhcmVudD10aGlzLnBhcmVudHx8dGhpcykscn0saS5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQsbil7ZT0wfGUsdD0wfHQsbnx8RChlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgcj10aGlzW2VdLGk9MSxhPTA7KythPHQmJihpKj0yNTYpOylyKz10aGlzW2UrYV0qaTtyZXR1cm4gcn0saS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQsbil7ZT0wfGUsdD0wfHQsbnx8RChlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgcj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspcis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gcn0saS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEQoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxpLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8RChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxpLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8RChlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxpLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8RChlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGkucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxEKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0saS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxuKXtlPTB8ZSx0PTB8dCxufHxEKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciByPXRoaXNbZV0saT0xLGE9MDsrK2E8dCYmKGkqPTI1Nik7KXIrPXRoaXNbZSthXSppO3JldHVybiBpKj0xMjgscj49aSYmKHItPU1hdGgucG93KDIsOCp0KSkscn0saS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxuKXtlPTB8ZSx0PTB8dCxufHxEKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciByPXQsaT0xLGE9dGhpc1tlKy0tcl07cj4wJiYoaSo9MjU2KTspYSs9dGhpc1tlKy0tcl0qaTtyZXR1cm4gaSo9MTI4LGE+PWkmJihhLT1NYXRoLnBvdygyLDgqdCkpLGF9LGkucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEQoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8oMjU1LXRoaXNbZV0rMSkqLTE6dGhpc1tlXX0saS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXt0fHxEKGUsMix0aGlzLmxlbmd0aCk7dmFyIG49dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4Jm4/NDI5NDkwMTc2MHxuOm59LGkucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8RChlLDIsdGhpcy5sZW5ndGgpO3ZhciBuPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZuPzQyOTQ5MDE3NjB8bjpufSxpLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxEKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxpLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxEKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxpLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxEKGUsNCx0aGlzLmxlbmd0aCksVy5yZWFkKHRoaXMsZSwhMCwyMyw0KX0saS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8RChlLDQsdGhpcy5sZW5ndGgpLFcucmVhZCh0aGlzLGUsITEsMjMsNCl9LGkucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxEKGUsOCx0aGlzLmxlbmd0aCksVy5yZWFkKHRoaXMsZSwhMCw1Miw4KX0saS5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEQoZSw4LHRoaXMubGVuZ3RoKSxXLnJlYWQodGhpcyxlLCExLDUyLDgpfSxpLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQsbixyKXtlPStlLHQ9MHx0LG49MHxuLHJ8fEwodGhpcyxlLHQsbixNYXRoLnBvdygyLDgqbiksMCk7dmFyIGk9MSxhPTA7Zm9yKHRoaXNbdF09MjU1JmU7KythPG4mJihpKj0yNTYpOyl0aGlzW3QrYV09ZS9pJjI1NTtyZXR1cm4gdCtufSxpLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQsbixyKXtlPStlLHQ9MHx0LG49MHxuLHJ8fEwodGhpcyxlLHQsbixNYXRoLnBvdygyLDgqbiksMCk7dmFyIGk9bi0xLGE9MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKGEqPTI1Nik7KXRoaXNbdCtpXT1lL2EmMjU1O3JldHVybiB0K259LGkucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fEwodGhpcyxlLHQsMSwyNTUsMCksaS5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPWUsdCsxfSxpLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxMKHRoaXMsZSx0LDIsNjU1MzUsMCksaS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWUsdGhpc1t0KzFdPWU+Pj44KTpNKHRoaXMsZSx0LCEwKSx0KzJ9LGkucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fEwodGhpcyxlLHQsMiw2NTUzNSwwKSxpLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPWUpOk0odGhpcyxlLHQsITEpLHQrMn0saS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD0wfHQsbnx8TCh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksaS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09ZSk6Uih0aGlzLGUsdCwhMCksdCs0fSxpLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxMKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxpLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT1lKTpSKHRoaXMsZSx0LCExKSx0KzR9LGkucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0PTB8dCwhcil7dmFyIGk9TWF0aC5wb3coMiw4Km4tMSk7TCh0aGlzLGUsdCxuLGktMSwtaSl9dmFyIGE9MCxvPTEscz1lPDA/MTowO2Zvcih0aGlzW3RdPTI1NSZlOysrYTxuJiYobyo9MjU2KTspdGhpc1t0K2FdPShlL28+PjApLXMmMjU1O3JldHVybiB0K259LGkucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0PTB8dCwhcil7dmFyIGk9TWF0aC5wb3coMiw4Km4tMSk7TCh0aGlzLGUsdCxuLGktMSwtaSl9dmFyIGE9bi0xLG89MSxzPWU8MD8xOjA7Zm9yKHRoaXNbdCthXT0yNTUmZTstLWE+PTAmJihvKj0yNTYpOyl0aGlzW3QrYV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrbn0saS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0PTB8dCxufHxMKHRoaXMsZSx0LDEsMTI3LC0xMjgpLGkuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPWUsdCsxfSxpLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fEwodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGkuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lLHRoaXNbdCsxXT1lPj4+OCk6TSh0aGlzLGUsdCwhMCksdCsyfSxpLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fEwodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGkuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09ZSk6TSh0aGlzLGUsdCwhMSksdCsyfSxpLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHQ9MHx0LG58fEwodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxpLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpSKHRoaXMsZSx0LCEwKSx0KzR9LGkucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdD0wfHQsbnx8TCh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLGkuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPWUpOlIodGhpcyxlLHQsITEpLHQrNH0saS5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUCh0aGlzLGUsdCwhMCxuKX0saS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUCh0aGlzLGUsdCwhMSxuKX0saS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHEodGhpcyxlLHQsITAsbil9LGkucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBxKHRoaXMsZSx0LCExLG4pfSxpLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxuLHIpe2lmKG58fChuPTApLHJ8fDA9PT1yfHwocj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxyPjAmJnI8biYmKHI9bikscj09PW4pcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwfHxuPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtyPnRoaXMubGVuZ3RoJiYocj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxyLW4mJihyPWUubGVuZ3RoLXQrbik7dmFyIGEsbz1yLW47aWYodGhpcz09PWUmJm48dCYmdDxyKWZvcihhPW8tMTthPj0wO2EtLSllW2ErdF09dGhpc1thK25dO2Vsc2UgaWYobzwxZTN8fCFpLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPG87YSsrKWVbYSt0XT10aGlzW2Erbl07ZWxzZSBlLl9zZXQodGhpcy5zdWJhcnJheShuLG4rbyksdCk7cmV0dXJuIG99LGkucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LG4pe2lmKGV8fChlPTApLHR8fCh0PTApLG58fChuPXRoaXMubGVuZ3RoKSxuPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImVuZCA8IHN0YXJ0Iik7aWYobiE9PXQmJjAhPT10aGlzLmxlbmd0aCl7aWYodDwwfHx0Pj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MHx8bj50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiZW5kIG91dCBvZiBib3VuZHMiKTt2YXIgcjtpZigibnVtYmVyIj09dHlwZW9mIGUpZm9yKHI9dDtyPG47cisrKXRoaXNbcl09ZTtlbHNle3ZhciBpPSQoZS50b1N0cmluZygpKSxhPWkubGVuZ3RoO2ZvcihyPXQ7cjxuO3IrKyl0aGlzW3JdPWlbciVhXX1yZXR1cm4gdGhpc319LGkucHJvdG90eXBlLnRvQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkpe2lmKGkuVFlQRURfQVJSQVlfU1VQUE9SVClyZXR1cm4gbmV3IGkodGhpcykuYnVmZmVyO2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCksdD0wLG49ZS5sZW5ndGg7dDxuO3QrPTEpZVt0XT10aGlzW3RdO3JldHVybiBlLmJ1ZmZlcn10aHJvdyBuZXcgVHlwZUVycm9yKCJCdWZmZXIudG9BcnJheUJ1ZmZlciBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlciIpfTt2YXIgWD1pLnByb3RvdHlwZTtpLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yPWksZS5faXNCdWZmZXI9ITAsZS5fc2V0PWUuc2V0LGUuZ2V0PVguZ2V0LGUuc2V0PVguc2V0LGUud3JpdGU9WC53cml0ZSxlLnRvU3RyaW5nPVgudG9TdHJpbmcsZS50b0xvY2FsZVN0cmluZz1YLnRvU3RyaW5nLGUudG9KU09OPVgudG9KU09OLGUuZXF1YWxzPVguZXF1YWxzLGUuY29tcGFyZT1YLmNvbXBhcmUsZS5pbmRleE9mPVguaW5kZXhPZixlLmNvcHk9WC5jb3B5LGUuc2xpY2U9WC5zbGljZSxlLnJlYWRVSW50TEU9WC5yZWFkVUludExFLGUucmVhZFVJbnRCRT1YLnJlYWRVSW50QkUsZS5yZWFkVUludDg9WC5yZWFkVUludDgsZS5yZWFkVUludDE2TEU9WC5yZWFkVUludDE2TEUsZS5yZWFkVUludDE2QkU9WC5yZWFkVUludDE2QkUsZS5yZWFkVUludDMyTEU9WC5yZWFkVUludDMyTEUsZS5yZWFkVUludDMyQkU9WC5yZWFkVUludDMyQkUsZS5yZWFkSW50TEU9WC5yZWFkSW50TEUsZS5yZWFkSW50QkU9WC5yZWFkSW50QkUsZS5yZWFkSW50OD1YLnJlYWRJbnQ4LGUucmVhZEludDE2TEU9WC5yZWFkSW50MTZMRSxlLnJlYWRJbnQxNkJFPVgucmVhZEludDE2QkUsZS5yZWFkSW50MzJMRT1YLnJlYWRJbnQzMkxFLGUucmVhZEludDMyQkU9WC5yZWFkSW50MzJCRSxlLnJlYWRGbG9hdExFPVgucmVhZEZsb2F0TEUsZS5yZWFkRmxvYXRCRT1YLnJlYWRGbG9hdEJFLGUucmVhZERvdWJsZUxFPVgucmVhZERvdWJsZUxFLGUucmVhZERvdWJsZUJFPVgucmVhZERvdWJsZUJFLGUud3JpdGVVSW50OD1YLndyaXRlVUludDgsZS53cml0ZVVJbnRMRT1YLndyaXRlVUludExFLGUud3JpdGVVSW50QkU9WC53cml0ZVVJbnRCRSxlLndyaXRlVUludDE2TEU9WC53cml0ZVVJbnQxNkxFLGUud3JpdGVVSW50MTZCRT1YLndyaXRlVUludDE2QkUsZS53cml0ZVVJbnQzMkxFPVgud3JpdGVVSW50MzJMRSxlLndyaXRlVUludDMyQkU9WC53cml0ZVVJbnQzMkJFLGUud3JpdGVJbnRMRT1YLndyaXRlSW50TEUsZS53cml0ZUludEJFPVgud3JpdGVJbnRCRSxlLndyaXRlSW50OD1YLndyaXRlSW50OCxlLndyaXRlSW50MTZMRT1YLndyaXRlSW50MTZMRSxlLndyaXRlSW50MTZCRT1YLndyaXRlSW50MTZCRSxlLndyaXRlSW50MzJMRT1YLndyaXRlSW50MzJMRSxlLndyaXRlSW50MzJCRT1YLndyaXRlSW50MzJCRSxlLndyaXRlRmxvYXRMRT1YLndyaXRlRmxvYXRMRSxlLndyaXRlRmxvYXRCRT1YLndyaXRlRmxvYXRCRSxlLndyaXRlRG91YmxlTEU9WC53cml0ZURvdWJsZUxFLGUud3JpdGVEb3VibGVCRT1YLndyaXRlRG91YmxlQkUsZS5maWxsPVguZmlsbCxlLmluc3BlY3Q9WC5pbnNwZWN0LGUudG9BcnJheUJ1ZmZlcj1YLnRvQXJyYXlCdWZmZXIsZX07dmFyIFo9L1teK1wvMC05QS1aYS16LV9dL2d9LHsiYmFzZTY0LWpzIjoxNSxpZWVlNzU0OjE2LCJpcy1hcnJheSI6MTd9XSwxNTpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dmFyIHQ9ZS5jaGFyQ29kZUF0KDApO3JldHVybiB0PT09b3x8dD09PXA/NjI6dD09PXN8fHQ9PT1oPzYzOnQ8bD8tMTp0PGwrMTA/dC1sKzI2KzI2OnQ8YysyNj90LWM6dDx1KzI2P3QtdSsyNjp2b2lkIDB9ZnVuY3Rpb24gbihlKXtmdW5jdGlvbiBuKGUpe3VbcCsrXT1lfXZhciByLGksbyxzLGwsdTtpZihlLmxlbmd0aCU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIGM9ZS5sZW5ndGg7bD0iPSI9PT1lLmNoYXJBdChjLTIpPzI6Ij0iPT09ZS5jaGFyQXQoYy0xKT8xOjAsdT1uZXcgYSgzKmUubGVuZ3RoLzQtbCksbz1sPjA/ZS5sZW5ndGgtNDplLmxlbmd0aDt2YXIgcD0wO2ZvcihyPTAsaT0wO3I8bztyKz00LGkrPTMpcz10KGUuY2hhckF0KHIpKTw8MTh8dChlLmNoYXJBdChyKzEpKTw8MTJ8dChlLmNoYXJBdChyKzIpKTw8Nnx0KGUuY2hhckF0KHIrMykpLG4oKDE2NzExNjgwJnMpPj4xNiksbigoNjUyODAmcyk+PjgpLG4oMjU1JnMpO3JldHVybiAyPT09bD8ocz10KGUuY2hhckF0KHIpKTw8Mnx0KGUuY2hhckF0KHIrMSkpPj40LG4oMjU1JnMpKToxPT09bCYmKHM9dChlLmNoYXJBdChyKSk8PDEwfHQoZS5jaGFyQXQocisxKSk8PDR8dChlLmNoYXJBdChyKzIpKT4+MiwKK24ocz4+OCYyNTUpLG4oMjU1JnMpKSx1fWZ1bmN0aW9uIGkoZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gci5jaGFyQXQoZSl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gdChlPj4xOCY2MykrdChlPj4xMiY2MykrdChlPj42JjYzKSt0KDYzJmUpfXZhciBpLGEsbyxzPWUubGVuZ3RoJTMsbD0iIjtmb3IoaT0wLG89ZS5sZW5ndGgtcztpPG87aSs9MylhPShlW2ldPDwxNikrKGVbaSsxXTw8OCkrZVtpKzJdLGwrPW4oYSk7c3dpdGNoKHMpe2Nhc2UgMTphPWVbZS5sZW5ndGgtMV0sbCs9dChhPj4yKSxsKz10KGE8PDQmNjMpLGwrPSI9PSI7YnJlYWs7Y2FzZSAyOmE9KGVbZS5sZW5ndGgtMl08PDgpK2VbZS5sZW5ndGgtMV0sbCs9dChhPj4xMCksbCs9dChhPj40JjYzKSxsKz10KGE8PDImNjMpLGwrPSI9In1yZXR1cm4gbH12YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvPSIrIi5jaGFyQ29kZUF0KDApLHM9Ii8iLmNoYXJDb2RlQXQoMCksbD0iMCIuY2hhckNvZGVBdCgwKSx1PSJhIi5jaGFyQ29kZUF0KDApLGM9IkEiLmNoYXJDb2RlQXQoMCkscD0iLSIuY2hhckNvZGVBdCgwKSxoPSJfIi5jaGFyQ29kZUF0KDApO2UudG9CeXRlQXJyYXk9bixlLmZyb21CeXRlQXJyYXk9aX0oInVuZGVmaW5lZCI9PXR5cGVvZiBuP3RoaXMuYmFzZTY0anM9e306bil9LHt9XSwxNjpbZnVuY3Rpb24oZSx0LG4pe24ucmVhZD1mdW5jdGlvbihlLHQsbixyLGkpe3ZhciBhLG8scz04Kmktci0xLGw9KDE8PHMpLTEsdT1sPj4xLGM9LTcscD1uP2ktMTowLGg9bj8tMToxLGY9ZVt0K3BdO2ZvcihwKz1oLGE9ZiYoMTw8LWMpLTEsZj4+PS1jLGMrPXM7Yz4wO2E9MjU2KmErZVt0K3BdLHArPWgsYy09OCk7Zm9yKG89YSYoMTw8LWMpLTEsYT4+PS1jLGMrPXI7Yz4wO289MjU2Km8rZVt0K3BdLHArPWgsYy09OCk7aWYoMD09PWEpYT0xLXU7ZWxzZXtpZihhPT09bClyZXR1cm4gbz9OYU46KGY/LTE6MSkqKDEvMCk7bys9TWF0aC5wb3coMixyKSxhLT11fXJldHVybihmPy0xOjEpKm8qTWF0aC5wb3coMixhLXIpfSxuLndyaXRlPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbyxzLGwsdT04KmEtaS0xLGM9KDE8PHUpLTEscD1jPj4xLGg9MjM9PT1pP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxmPXI/MDphLTEsZD1yPzE6LTEsbT10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLG89Yyk6KG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoobD1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSxsKj0yKSx0Kz1vK3A+PTE/aC9sOmgqTWF0aC5wb3coMiwxLXApLHQqbD49MiYmKG8rKyxsLz0yKSxvK3A+PWM/KHM9MCxvPWMpOm8rcD49MT8ocz0odCpsLTEpKk1hdGgucG93KDIsaSksbys9cCk6KHM9dCpNYXRoLnBvdygyLHAtMSkqTWF0aC5wb3coMixpKSxvPTApKTtpPj04O2VbbitmXT0yNTUmcyxmKz1kLHMvPTI1NixpLT04KTtmb3Iobz1vPDxpfHMsdSs9aTt1PjA7ZVtuK2ZdPTI1NSZvLGYrPWQsby89MjU2LHUtPTgpO2VbbitmLWRdfD0xMjgqbX19LHt9XSwxNzpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPUFycmF5LmlzQXJyYXksaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3QuZXhwb3J0cz1yfHxmdW5jdGlvbihlKXtyZXR1cm4hIWUmJiJbb2JqZWN0IEFycmF5XSI9PWkuY2FsbChlKX19LHt9XSwxODpbZnVuY3Rpb24oZSx0LG4peyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKHQsbixyLGkpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgZT8odGhpcy5kb21haW49dHx8dm9pZCAwLHRoaXMucGF0aD1ufHwiLyIsdGhpcy5zZWN1cmU9ISFyLHRoaXMuc2NyaXB0PSEhaSx0aGlzKTpuZXcgZSh0LG4scixpKX1mdW5jdGlvbiB0KGUsbixyKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHQ/ZTp0aGlzIGluc3RhbmNlb2YgdD8odGhpcy5uYW1lPW51bGwsdGhpcy52YWx1ZT1udWxsLHRoaXMuZXhwaXJhdGlvbl9kYXRlPTEvMCx0aGlzLnBhdGg9U3RyaW5nKHJ8fCIvIiksdGhpcy5leHBsaWNpdF9wYXRoPSExLHRoaXMuZG9tYWluPW58fG51bGwsdGhpcy5leHBsaWNpdF9kb21haW49ITEsdGhpcy5zZWN1cmU9ITEsdGhpcy5ub3NjcmlwdD0hMSxlJiZ0aGlzLnBhcnNlKGUsbixyKSx0aGlzKTpuZXcgdChlLG4scil9ZnVuY3Rpb24gcigpe3ZhciBlLG4saTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHI/KGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnNldENvb2tpZT1mdW5jdGlvbihyLGEsbyl7dmFyIHMsbDtpZihyPW5ldyB0KHIsYSxvKSxzPXIuZXhwaXJhdGlvbl9kYXRlPD1EYXRlLm5vdygpLHZvaWQgMCE9PWVbci5uYW1lXSl7Zm9yKG49ZVtyLm5hbWVdLGw9MDtsPG4ubGVuZ3RoO2wrPTEpaWYoaT1uW2xdLGkuY29sbGlkZXNXaXRoKHIpKXJldHVybiBzPyhuLnNwbGljZShsLDEpLDA9PT1uLmxlbmd0aCYmZGVsZXRlIGVbci5uYW1lXSwhMSk6KG5bbF09cixyKTtyZXR1cm4hcyYmKG4ucHVzaChyKSxyKX1yZXR1cm4hcyYmKGVbci5uYW1lXT1bcl0sZVtyLm5hbWVdKX0sdGhpcy5nZXRDb29raWU9ZnVuY3Rpb24odCxyKXt2YXIgaSxhO2lmKG49ZVt0XSlmb3IoYT0wO2E8bi5sZW5ndGg7YSs9MSlpZihpPW5bYV0saS5leHBpcmF0aW9uX2RhdGU8PURhdGUubm93KCkpMD09PW4ubGVuZ3RoJiZkZWxldGUgZVtpLm5hbWVdO2Vsc2UgaWYoaS5tYXRjaGVzKHIpKXJldHVybiBpfSx0aGlzLmdldENvb2tpZXM9ZnVuY3Rpb24odCl7dmFyIG4scixpPVtdO2ZvcihuIGluIGUpcj10aGlzLmdldENvb2tpZShuLHQpLHImJmkucHVzaChyKTtyZXR1cm4gaS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBpLmpvaW4oIjoiKX0saS50b1ZhbHVlU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRvVmFsdWVTdHJpbmcoKX0pLmpvaW4oIjsiKX0saX0sdGhpcyk6bmV3IHJ9bi5Db29raWVBY2Nlc3NJbmZvPWUsbi5Db29raWU9dCx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPVt0aGlzLm5hbWUrIj0iK3RoaXMudmFsdWVdO3JldHVybiB0aGlzLmV4cGlyYXRpb25fZGF0ZSE9PTEvMCYmZS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUodGhpcy5leHBpcmF0aW9uX2RhdGUpLnRvR01UU3RyaW5nKCkpLHRoaXMuZG9tYWluJiZlLnB1c2goImRvbWFpbj0iK3RoaXMuZG9tYWluKSx0aGlzLnBhdGgmJmUucHVzaCgicGF0aD0iK3RoaXMucGF0aCksdGhpcy5zZWN1cmUmJmUucHVzaCgic2VjdXJlIiksdGhpcy5ub3NjcmlwdCYmZS5wdXNoKCJodHRwb25seSIpLGUuam9pbigiOyAiKX0sdC5wcm90b3R5cGUudG9WYWx1ZVN0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUrIj0iK3RoaXMudmFsdWV9O3ZhciBpPS9bOl0oPz1ccypbYS16QS1aMC05X1wtXStccypbPV0pL2c7dC5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oZSxuLHIpe2lmKHRoaXMgaW5zdGFuY2VvZiB0KXt2YXIgaSxhPWUuc3BsaXQoIjsiKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSksbz1hWzBdLm1hdGNoKC8oW149XSspPShbXHNcU10qKS8pLHM9b1sxXSxsPW9bMl07Zm9yKHRoaXMubmFtZT1zLHRoaXMudmFsdWU9bCxpPTE7aTxhLmxlbmd0aDtpKz0xKXN3aXRjaChvPWFbaV0ubWF0Y2goLyhbXj1dKykoPzo9KFtcc1xTXSopKT8vKSxzPW9bMV0udHJpbSgpLnRvTG93ZXJDYXNlKCksbD1vWzJdLHMpe2Nhc2UiaHR0cG9ubHkiOnRoaXMubm9zY3JpcHQ9ITA7YnJlYWs7Y2FzZSJleHBpcmVzIjp0aGlzLmV4cGlyYXRpb25fZGF0ZT1sP051bWJlcihEYXRlLnBhcnNlKGwpKToxLzA7YnJlYWs7Y2FzZSJwYXRoIjp0aGlzLnBhdGg9bD9sLnRyaW0oKToiIix0aGlzLmV4cGxpY2l0X3BhdGg9ITA7YnJlYWs7Y2FzZSJkb21haW4iOnRoaXMuZG9tYWluPWw/bC50cmltKCk6IiIsdGhpcy5leHBsaWNpdF9kb21haW49ISF0aGlzLmRvbWFpbjticmVhaztjYXNlInNlY3VyZSI6dGhpcy5zZWN1cmU9ITB9cmV0dXJuIHRoaXMuZXhwbGljaXRfcGF0aHx8KHRoaXMucGF0aD1yfHwiLyIpLHRoaXMuZXhwbGljaXRfZG9tYWlufHwodGhpcy5kb21haW49biksdGhpc31yZXR1cm4obmV3IHQpLnBhcnNlKGUsbixyKX0sdC5wcm90b3R5cGUubWF0Y2hlcz1mdW5jdGlvbihlKXtyZXR1cm4hKHRoaXMubm9zY3JpcHQmJmUuc2NyaXB0fHx0aGlzLnNlY3VyZSYmIWUuc2VjdXJlfHwhdGhpcy5jb2xsaWRlc1dpdGgoZSkpfSx0LnByb3RvdHlwZS5jb2xsaWRlc1dpdGg9ZnVuY3Rpb24oZSl7aWYodGhpcy5wYXRoJiYhZS5wYXRofHx0aGlzLmRvbWFpbiYmIWUuZG9tYWluKXJldHVybiExO2lmKHRoaXMucGF0aCYmMCE9PWUucGF0aC5pbmRleE9mKHRoaXMucGF0aCkpcmV0dXJuITE7aWYodGhpcy5leHBsaWNpdF9wYXRoJiYwIT09ZS5wYXRoLmluZGV4T2YodGhpcy5wYXRoKSlyZXR1cm4hMTt2YXIgdD1lLmRvbWFpbiYmZS5kb21haW4ucmVwbGFjZSgvXltcLl0vLCIiKSxuPXRoaXMuZG9tYWluJiZ0aGlzLmRvbWFpbi5yZXBsYWNlKC9eW1wuXS8sIiIpO2lmKG49PT10KXJldHVybiEwO2lmKG4pe2lmKCF0aGlzLmV4cGxpY2l0X2RvbWFpbilyZXR1cm4hMTt2YXIgcj10LmluZGV4T2Yobik7cmV0dXJuIHIhPT0tMSYmcj09PXQubGVuZ3RoLW4ubGVuZ3RofXJldHVybiEwfSxuLkNvb2tpZUphcj1yLHIucHJvdG90eXBlLnNldENvb2tpZXM9ZnVuY3Rpb24oZSxuLHIpe2U9QXJyYXkuaXNBcnJheShlKT9lOmUuc3BsaXQoaSk7dmFyIGEsbyxzPVtdO2ZvcihlPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLG4scil9KSxhPTA7YTxlLmxlbmd0aDthKz0xKW89ZVthXSx0aGlzLnNldENvb2tpZShvLG4scikmJnMucHVzaChvKTtyZXR1cm4gc319KCl9LHt9XSwxOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuL2xpYi9qcy15YW1sLmpzIik7dC5leHBvcnRzPXJ9LHsiLi9saWIvanMteWFtbC5qcyI6MjB9XSwyMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiRnVuY3Rpb24gIitlKyIgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQuIil9fXZhciBpPWUoIi4vanMteWFtbC9sb2FkZXIiKSxhPWUoIi4vanMteWFtbC9kdW1wZXIiKTt0LmV4cG9ydHMuVHlwZT1lKCIuL2pzLXlhbWwvdHlwZSIpLHQuZXhwb3J0cy5TY2hlbWE9ZSgiLi9qcy15YW1sL3NjaGVtYSIpLHQuZXhwb3J0cy5GQUlMU0FGRV9TQ0hFTUE9ZSgiLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZSIpLHQuZXhwb3J0cy5KU09OX1NDSEVNQT1lKCIuL2pzLXlhbWwvc2NoZW1hL2pzb24iKSx0LmV4cG9ydHMuQ09SRV9TQ0hFTUE9ZSgiLi9qcy15YW1sL3NjaGVtYS9jb3JlIiksdC5leHBvcnRzLkRFRkFVTFRfU0FGRV9TQ0hFTUE9ZSgiLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUiKSx0LmV4cG9ydHMuREVGQVVMVF9GVUxMX1NDSEVNQT1lKCIuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCIpLHQuZXhwb3J0cy5sb2FkPWkubG9hZCx0LmV4cG9ydHMubG9hZEFsbD1pLmxvYWRBbGwsdC5leHBvcnRzLnNhZmVMb2FkPWkuc2FmZUxvYWQsdC5leHBvcnRzLnNhZmVMb2FkQWxsPWkuc2FmZUxvYWRBbGwsdC5leHBvcnRzLmR1bXA9YS5kdW1wLHQuZXhwb3J0cy5zYWZlRHVtcD1hLnNhZmVEdW1wLHQuZXhwb3J0cy5ZQU1MRXhjZXB0aW9uPWUoIi4vanMteWFtbC9leGNlcHRpb24iKSx0LmV4cG9ydHMuTUlOSU1BTF9TQ0hFTUE9ZSgiLi9qcy15YW1sL3NjaGVtYS9mYWlsc2FmZSIpLHQuZXhwb3J0cy5TQUZFX1NDSEVNQT1lKCIuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfc2FmZSIpLHQuZXhwb3J0cy5ERUZBVUxUX1NDSEVNQT1lKCIuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCIpLHQuZXhwb3J0cy5zY2FuPXIoInNjYW4iKSx0LmV4cG9ydHMucGFyc2U9cigicGFyc2UiKSx0LmV4cG9ydHMuY29tcG9zZT1yKCJjb21wb3NlIiksdC5leHBvcnRzLmFkZENvbnN0cnVjdG9yPXIoImFkZENvbnN0cnVjdG9yIil9LHsiLi9qcy15YW1sL2R1bXBlciI6MjIsIi4vanMteWFtbC9leGNlcHRpb24iOjIzLCIuL2pzLXlhbWwvbG9hZGVyIjoyNCwiLi9qcy15YW1sL3NjaGVtYSI6MjYsIi4vanMteWFtbC9zY2hlbWEvY29yZSI6MjcsIi4vanMteWFtbC9zY2hlbWEvZGVmYXVsdF9mdWxsIjoyOCwiLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUiOjI5LCIuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlIjozMCwiLi9qcy15YW1sL3NjaGVtYS9qc29uIjozMSwiLi9qcy15YW1sL3R5cGUiOjMyfV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGV8fG51bGw9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZX1mdW5jdGlvbiBhKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6cihlKT9bXTpbZV19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuLHIsaSxhO2lmKHQpZm9yKGE9T2JqZWN0LmtleXModCksbj0wLHI9YS5sZW5ndGg7bjxyO24rPTEpaT1hW25dLGVbaV09dFtpXTtyZXR1cm4gZX1mdW5jdGlvbiBzKGUsdCl7dmFyIG4scj0iIjtmb3Iobj0wO248dDtuKz0xKXIrPWU7cmV0dXJuIHJ9ZnVuY3Rpb24gbChlKXtyZXR1cm4gMD09PWUmJk51bWJlci5ORUdBVElWRV9JTkZJTklUWT09PTEvZX10LmV4cG9ydHMuaXNOb3RoaW5nPXIsdC5leHBvcnRzLmlzT2JqZWN0PWksdC5leHBvcnRzLnRvQXJyYXk9YSx0LmV4cG9ydHMucmVwZWF0PXMsdC5leHBvcnRzLmlzTmVnYXRpdmVaZXJvPWwsdC5leHBvcnRzLmV4dGVuZD1vfSx7fV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuLHIsaSxhLG8scyxsO2lmKG51bGw9PT10KXJldHVybnt9O2ZvcihuPXt9LHI9T2JqZWN0LmtleXModCksaT0wLGE9ci5sZW5ndGg7aTxhO2krPTEpbz1yW2ldLHM9U3RyaW5nKHRbb10pLCIhISI9PT1vLnNsaWNlKDAsMikmJihvPSJ0YWc6eWFtbC5vcmcsMjAwMjoiK28uc2xpY2UoMikpLGw9ZS5jb21waWxlZFR5cGVNYXBbb10sbCYmUi5jYWxsKGwuc3R5bGVBbGlhc2VzLHMpJiYocz1sLnN0eWxlQWxpYXNlc1tzXSksbltvXT1zO3JldHVybiBufWZ1bmN0aW9uIGkoZSl7dmFyIHQsbixyO2lmKHQ9ZS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxlPD0yNTUpbj0ieCIscj0yO2Vsc2UgaWYoZTw9NjU1MzUpbj0idSIscj00O2Vsc2V7aWYoIShlPD00Mjk0OTY3Mjk1KSl0aHJvdyBuZXcgSSgiY29kZSBwb2ludCB3aXRoaW4gYSBzdHJpbmcgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gMHhGRkZGRkZGRiIpO249IlUiLHI9OH1yZXR1cm4iXFwiK24rQy5yZXBlYXQoIjAiLHItdC5sZW5ndGgpK3R9ZnVuY3Rpb24gYShlKXt0aGlzLnNjaGVtYT1lLnNjaGVtYXx8RCx0aGlzLmluZGVudD1NYXRoLm1heCgxLGUuaW5kZW50fHwyKSx0aGlzLnNraXBJbnZhbGlkPWUuc2tpcEludmFsaWR8fCExLHRoaXMuZmxvd0xldmVsPUMuaXNOb3RoaW5nKGUuZmxvd0xldmVsKT8tMTplLmZsb3dMZXZlbCx0aGlzLnN0eWxlTWFwPXIodGhpcy5zY2hlbWEsZS5zdHlsZXN8fG51bGwpLHRoaXMuc29ydEtleXM9ZS5zb3J0S2V5c3x8ITEsdGhpcy5saW5lV2lkdGg9ZS5saW5lV2lkdGh8fDgwLHRoaXMubm9SZWZzPWUubm9SZWZzfHwhMSx0aGlzLm5vQ29tcGF0TW9kZT1lLm5vQ29tcGF0TW9kZXx8ITEsdGhpcy5pbXBsaWNpdFR5cGVzPXRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQsdGhpcy5leHBsaWNpdFR5cGVzPXRoaXMuc2NoZW1hLmNvbXBpbGVkRXhwbGljaXQsdGhpcy50YWc9bnVsbCx0aGlzLnJlc3VsdD0iIix0aGlzLmR1cGxpY2F0ZXM9W10sdGhpcy51c2VkRHVwbGljYXRlcz1udWxsfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG4scj1DLnJlcGVhdCgiICIsdCksaT0wLGE9LTEsbz0iIixzPWUubGVuZ3RoO2k8czspYT1lLmluZGV4T2YoIlxuIixpKSxhPT09LTE/KG49ZS5zbGljZShpKSxpPXMpOihuPWUuc2xpY2UoaSxhKzEpLGk9YSsxKSxuLmxlbmd0aCYmIlxuIiE9PW4mJihvKz1yKSxvKz1uO3JldHVybiBvfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4iXG4iK0MucmVwZWF0KCIgIixlLmluZGVudCp0KX1mdW5jdGlvbiBsKGUsdCl7dmFyIG4scixpO2ZvcihuPTAscj1lLmltcGxpY2l0VHlwZXMubGVuZ3RoO248cjtuKz0xKWlmKGk9ZS5pbXBsaWNpdFR5cGVzW25dLGkucmVzb2x2ZSh0KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB1KGUpe3JldHVybiBlPT09cXx8ZT09PVV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gMzI8PWUmJmU8PTEyNnx8MTYxPD1lJiZlPD01NTI5NSYmODIzMiE9PWUmJjgyMzMhPT1lfHw1NzM0NDw9ZSYmZTw9NjU1MzMmJjY1Mjc5IT09ZXx8NjU1MzY8PWUmJmU8PTExMTQxMTF9ZnVuY3Rpb24gcChlKXtyZXR1cm4gYyhlKSYmNjUyNzkhPT1lJiZlIT09WSYmZSE9PVgmJmUhPT1aJiZlIT09dGUmJmUhPT1yZSYmZSE9PVcmJmUhPT1OfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGMoZSkmJjY1Mjc5IT09ZSYmIXUoZSkmJmUhPT1KJiZlIT09RyYmZSE9PVcmJmUhPT1ZJiZlIT09WCYmZSE9PVomJmUhPT10ZSYmZSE9PXJlJiZlIT09TiYmZSE9PUYmJmUhPT1IJiZlIT09QiYmZSE9PW5lJiZlIT09USYmZSE9PVYmJmUhPT16JiZlIT09JCYmZSE9PUsmJmUhPT1lZX1mdW5jdGlvbiBmKGUsdCxuLHIsaSl7dmFyIGEsbyxzPSExLGw9ITEsZj1yIT09LTEsZD0tMSxtPWgoZS5jaGFyQ29kZUF0KDApKSYmIXUoZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpKTtpZih0KWZvcihhPTA7YTxlLmxlbmd0aDthKyspe2lmKG89ZS5jaGFyQ29kZUF0KGEpLCFjKG8pKXJldHVybiBjZTttPW0mJnAobyl9ZWxzZXtmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKXtpZihvPWUuY2hhckNvZGVBdChhKSxvPT09UClzPSEwLGYmJihsPWx8fGEtZC0xPnImJiIgIiE9PWVbZCsxXSxkPWEpO2Vsc2UgaWYoIWMobykpcmV0dXJuIGNlO209bSYmcChvKX1sPWx8fGYmJmEtZC0xPnImJiIgIiE9PWVbZCsxXX1yZXR1cm4gc3x8bD8iICI9PT1lWzBdJiZuPjk/Y2U6bD91ZTpsZTptJiYhaShlKT9vZTpzZX1mdW5jdGlvbiBkKGUsdCxuLHIpe2UuZHVtcD1mdW5jdGlvbigpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIGwoZSx0KX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIicnIjtpZighZS5ub0NvbXBhdE1vZGUmJmFlLmluZGV4T2YodCkhPT0tMSlyZXR1cm4iJyIrdCsiJyI7dmFyIGE9ZS5pbmRlbnQqTWF0aC5tYXgoMSxuKSxzPWUubGluZVdpZHRoPT09LTE/LTE6TWF0aC5tYXgoTWF0aC5taW4oZS5saW5lV2lkdGgsNDApLGUubGluZVdpZHRoLWEpLHU9cnx8ZS5mbG93TGV2ZWw+LTEmJm4+PWUuZmxvd0xldmVsO3N3aXRjaChmKHQsdSxlLmluZGVudCxzLGkpKXtjYXNlIG9lOnJldHVybiB0O2Nhc2Ugc2U6cmV0dXJuIiciK3QucmVwbGFjZSgvJy9nLCInJyIpKyInIjtjYXNlIGxlOnJldHVybiJ8IittKHQsZS5pbmRlbnQpK2cobyh0LGEpKTtjYXNlIHVlOnJldHVybiI+IittKHQsZS5pbmRlbnQpK2cobyh5KHQscyksYSkpO2Nhc2UgY2U6cmV0dXJuJyInK2IodCxzKSsnIic7ZGVmYXVsdDp0aHJvdyBuZXcgSSgiaW1wb3NzaWJsZSBlcnJvcjogaW52YWxpZCBzY2FsYXIgc3R5bGUiKX19KCl9ZnVuY3Rpb24gbShlLHQpe3ZhciBuPSIgIj09PWVbMF0/U3RyaW5nKHQpOiIiLHI9IlxuIj09PWVbZS5sZW5ndGgtMV0saT1yJiYoIlxuIj09PWVbZS5sZW5ndGgtMl18fCJcbiI9PT1lKSxhPWk/IisiOnI/IiI6Ii0iO3JldHVybiBuK2ErIlxuIn1mdW5jdGlvbiBnKGUpe3JldHVybiJcbiI9PT1lW2UubGVuZ3RoLTFdP2Uuc2xpY2UoMCwtMSk6ZX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciBuLHIsaT0vKFxuKykoW15cbl0qKS9nLGE9ZnVuY3Rpb24oKXt2YXIgbj1lLmluZGV4T2YoIlxuIik7cmV0dXJuIG49biE9PS0xP246ZS5sZW5ndGgsaS5sYXN0SW5kZXg9bix2KGUuc2xpY2UoMCxuKSx0KX0oKSxvPSJcbiI9PT1lWzBdfHwiICI9PT1lWzBdO3I9aS5leGVjKGUpOyl7dmFyIHM9clsxXSxsPXJbMl07bj0iICI9PT1sWzBdLGErPXMrKG98fG58fCIiPT09bD8iIjoiXG4iKSt2KGwsdCksbz1ufXJldHVybiBhfWZ1bmN0aW9uIHYoZSx0KXtpZigiIj09PWV8fCIgIj09PWVbMF0pcmV0dXJuIGU7Zm9yKHZhciBuLHIsaT0vIFteIF0vZyxhPTAsbz0wLHM9MCxsPSIiO249aS5leGVjKGUpOylzPW4uaW5kZXgscy1hPnQmJihyPW8+YT9vOnMsbCs9IlxuIitlLnNsaWNlKGEsciksYT1yKzEpLG89cztyZXR1cm4gbCs9IlxuIixsKz1lLmxlbmd0aC1hPnQmJm8+YT9lLnNsaWNlKGEsbykrIlxuIitlLnNsaWNlKG8rMSk6ZS5zbGljZShhKSxsLnNsaWNlKDEpfWZ1bmN0aW9uIGIoZSl7Zm9yKHZhciB0LG4scj0iIixhPTA7YTxlLmxlbmd0aDthKyspdD1lLmNoYXJDb2RlQXQoYSksbj1pZVt0XSxyKz0hbiYmYyh0KT9lW2FdOm58fGkodCk7cmV0dXJuIHJ9ZnVuY3Rpb24gdyhlLHQsbil7dmFyIHIsaSxhPSIiLG89ZS50YWc7Zm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTtyKz0xKWooZSx0LG5bcl0sITEsITEpJiYoMCE9PXImJihhKz0iLCAiKSxhKz1lLmR1bXApO2UudGFnPW8sZS5kdW1wPSJbIithKyJdIn1mdW5jdGlvbiBfKGUsdCxuLHIpe3ZhciBpLGEsbz0iIixsPWUudGFnO2ZvcihpPTAsYT1uLmxlbmd0aDtpPGE7aSs9MSlqKGUsdCsxLG5baV0sITAsITApJiYociYmMD09PWl8fChvKz1zKGUsdCkpLG8rPSItICIrZS5kdW1wKTtlLnRhZz1sLGUuZHVtcD1vfHwiW10ifWZ1bmN0aW9uIHgoZSx0LG4pe3ZhciByLGksYSxvLHMsbD0iIix1PWUudGFnLGM9T2JqZWN0LmtleXMobik7Zm9yKHI9MCxpPWMubGVuZ3RoO3I8aTtyKz0xKXM9IiIsMCE9PXImJihzKz0iLCAiKSxhPWNbcl0sbz1uW2FdLGooZSx0LGEsITEsITEpJiYoZS5kdW1wLmxlbmd0aD4xMDI0JiYocys9Ij8gIikscys9ZS5kdW1wKyI6ICIsaihlLHQsbywhMSwhMSkmJihzKz1lLmR1bXAsbCs9cykpO2UudGFnPXUsZS5kdW1wPSJ7IitsKyJ9In1mdW5jdGlvbiBBKGUsdCxuLHIpe3ZhciBpLGEsbyxsLHUsYyxwPSIiLGg9ZS50YWcsZj1PYmplY3Qua2V5cyhuKTtpZihlLnNvcnRLZXlzPT09ITApZi5zb3J0KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5zb3J0S2V5cylmLnNvcnQoZS5zb3J0S2V5cyk7ZWxzZSBpZihlLnNvcnRLZXlzKXRocm93IG5ldyBJKCJzb3J0S2V5cyBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uIik7Zm9yKGk9MCxhPWYubGVuZ3RoO2k8YTtpKz0xKWM9IiIsciYmMD09PWl8fChjKz1zKGUsdCkpLG89ZltpXSxsPW5bb10saihlLHQrMSxvLCEwLCEwLCEwKSYmKHU9bnVsbCE9PWUudGFnJiYiPyIhPT1lLnRhZ3x8ZS5kdW1wJiZlLmR1bXAubGVuZ3RoPjEwMjQsdSYmKGMrPWUuZHVtcCYmUD09PWUuZHVtcC5jaGFyQ29kZUF0KDApPyI/IjoiPyAiKSxjKz1lLmR1bXAsdSYmKGMrPXMoZSx0KSksaihlLHQrMSxsLCEwLHUpJiYoYys9ZS5kdW1wJiZQPT09ZS5kdW1wLmNoYXJDb2RlQXQoMCk/IjoiOiI6ICIsYys9ZS5kdW1wLHArPWMpKTtlLnRhZz1oLGUuZHVtcD1wfHwie30ifWZ1bmN0aW9uIFMoZSx0LG4pe3ZhciByLGksYSxvLHMsbDtmb3IoaT1uP2UuZXhwbGljaXRUeXBlczplLmltcGxpY2l0VHlwZXMsYT0wLG89aS5sZW5ndGg7YTxvO2ErPTEpaWYocz1pW2FdLChzLmluc3RhbmNlT2Z8fHMucHJlZGljYXRlKSYmKCFzLmluc3RhbmNlT2Z8fCJvYmplY3QiPT10eXBlb2YgdCYmdCBpbnN0YW5jZW9mIHMuaW5zdGFuY2VPZikmJighcy5wcmVkaWNhdGV8fHMucHJlZGljYXRlKHQpKSl7aWYoZS50YWc9bj9zLnRhZzoiPyIscy5yZXByZXNlbnQpe2lmKGw9ZS5zdHlsZU1hcFtzLnRhZ118fHMuZGVmYXVsdFN0eWxlLCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1NLmNhbGwocy5yZXByZXNlbnQpKXI9cy5yZXByZXNlbnQodCxsKTtlbHNle2lmKCFSLmNhbGwocy5yZXByZXNlbnQsbCkpdGhyb3cgbmV3IEkoIiE8IitzLnRhZysnPiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgIicrbCsnIiBzdHlsZScpO3I9cy5yZXByZXNlbnRbbF0odCxsKX1lLmR1bXA9cn1yZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBqKGUsdCxuLHIsaSxhKXtlLnRhZz1udWxsLGUuZHVtcD1uLFMoZSxuLCExKXx8UyhlLG4sITApO3ZhciBvPU0uY2FsbChlLmR1bXApO3ImJihyPWUuZmxvd0xldmVsPDB8fGUuZmxvd0xldmVsPnQpO3ZhciBzLGwsdT0iW29iamVjdCBPYmplY3RdIj09PW98fCJbb2JqZWN0IEFycmF5XSI9PT1vO2lmKHUmJihzPWUuZHVwbGljYXRlcy5pbmRleE9mKG4pLGw9cyE9PS0xKSwobnVsbCE9PWUudGFnJiYiPyIhPT1lLnRhZ3x8bHx8MiE9PWUuaW5kZW50JiZ0PjApJiYoaT0hMSksbCYmZS51c2VkRHVwbGljYXRlc1tzXSllLmR1bXA9IipyZWZfIitzO2Vsc2V7aWYodSYmbCYmIWUudXNlZER1cGxpY2F0ZXNbc10mJihlLnVzZWREdXBsaWNhdGVzW3NdPSEwKSwiW29iamVjdCBPYmplY3RdIj09PW8pciYmMCE9PU9iamVjdC5rZXlzKGUuZHVtcCkubGVuZ3RoPyhBKGUsdCxlLmR1bXAsaSksbCYmKGUuZHVtcD0iJnJlZl8iK3MrZS5kdW1wKSk6KHgoZSx0LGUuZHVtcCksbCYmKGUuZHVtcD0iJnJlZl8iK3MrIiAiK2UuZHVtcCkpO2Vsc2UgaWYoIltvYmplY3QgQXJyYXldIj09PW8pciYmMCE9PWUuZHVtcC5sZW5ndGg/KF8oZSx0LGUuZHVtcCxpKSxsJiYoZS5kdW1wPSImcmVmXyIrcytlLmR1bXApKToodyhlLHQsZS5kdW1wKSxsJiYoZS5kdW1wPSImcmVmXyIrcysiICIrZS5kdW1wKSk7ZWxzZXtpZigiW29iamVjdCBTdHJpbmddIiE9PW8pe2lmKGUuc2tpcEludmFsaWQpcmV0dXJuITE7dGhyb3cgbmV3IEkoInVuYWNjZXB0YWJsZSBraW5kIG9mIGFuIG9iamVjdCB0byBkdW1wICIrbyl9Ij8iIT09ZS50YWcmJmQoZSxlLmR1bXAsdCxhKX1udWxsIT09ZS50YWcmJiI/IiE9PWUudGFnJiYoZS5kdW1wPSIhPCIrZS50YWcrIj4gIitlLmR1bXApfXJldHVybiEwfWZ1bmN0aW9uIEUoZSx0KXt2YXIgbixyLGk9W10sYT1bXTtmb3IoTyhlLGksYSksbj0wLHI9YS5sZW5ndGg7bjxyO24rPTEpdC5kdXBsaWNhdGVzLnB1c2goaVthW25dXSk7dC51c2VkRHVwbGljYXRlcz1uZXcgQXJyYXkocil9ZnVuY3Rpb24gTyhlLHQsbil7dmFyIHIsaSxhO2lmKG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUpaWYoaT10LmluZGV4T2YoZSksaSE9PS0xKW4uaW5kZXhPZihpKT09PS0xJiZuLnB1c2goaSk7ZWxzZSBpZih0LnB1c2goZSksQXJyYXkuaXNBcnJheShlKSlmb3IoaT0wLGE9ZS5sZW5ndGg7aTxhO2krPTEpTyhlW2ldLHQsbik7ZWxzZSBmb3Iocj1PYmplY3Qua2V5cyhlKSxpPTAsYT1yLmxlbmd0aDtpPGE7aSs9MSlPKGVbcltpXV0sdCxuKX1mdW5jdGlvbiBrKGUsdCl7dD10fHx7fTt2YXIgbj1uZXcgYSh0KTtyZXR1cm4gbi5ub1JlZnN8fEUoZSxuKSxqKG4sMCxlLCEwLCEwKT9uLmR1bXArIlxuIjoiIn1mdW5jdGlvbiBUKGUsdCl7cmV0dXJuIGsoZSxDLmV4dGVuZCh7c2NoZW1hOkx9LHQpKX12YXIgQz1lKCIuL2NvbW1vbiIpLEk9ZSgiLi9leGNlcHRpb24iKSxEPWUoIi4vc2NoZW1hL2RlZmF1bHRfZnVsbCIpLEw9ZSgiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIiksTT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxVPTksUD0xMCxxPTMyLEI9MzMsej0zNCxOPTM1LCQ9MzcsRj0zOCxWPTM5LEg9NDIsWT00NCxKPTQ1LFc9NTgsUT02MixHPTYzLEs9NjQsWD05MSxaPTkzLGVlPTk2LHRlPTEyMyxuZT0xMjQscmU9MTI1LGllPXt9O2llWzBdPSJcXDAiLGllWzddPSJcXGEiLGllWzhdPSJcXGIiLGllWzldPSJcXHQiLGllWzEwXT0iXFxuIixpZVsxMV09IlxcdiIsaWVbMTJdPSJcXGYiLGllWzEzXT0iXFxyIixpZVsyN109IlxcZSIsaWVbMzRdPSdcXCInLGllWzkyXT0iXFxcXCIsaWVbMTMzXT0iXFxOIixpZVsxNjBdPSJcXF8iLGllWzgyMzJdPSJcXEwiLGllWzgyMzNdPSJcXFAiO3ZhciBhZT1bInkiLCJZIiwieWVzIiwiWWVzIiwiWUVTIiwib24iLCJPbiIsIk9OIiwibiIsIk4iLCJubyIsIk5vIiwiTk8iLCJvZmYiLCJPZmYiLCJPRkYiXSxvZT0xLHNlPTIsbGU9Myx1ZT00LGNlPTU7dC5leHBvcnRzLmR1bXA9ayx0LmV4cG9ydHMuc2FmZUR1bXA9VH0seyIuL2NvbW1vbiI6MjEsIi4vZXhjZXB0aW9uIjoyMywiLi9zY2hlbWEvZGVmYXVsdF9mdWxsIjoyOCwiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIjoyOX1dLDIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtFcnJvci5jYWxsKHRoaXMpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz0obmV3IEVycm9yKS5zdGFja3x8IiIsdGhpcy5uYW1lPSJZQU1MRXhjZXB0aW9uIix0aGlzLnJlYXNvbj1lLHRoaXMubWFyaz10LHRoaXMubWVzc2FnZT0odGhpcy5yZWFzb258fCIodW5rbm93biByZWFzb24pIikrKHRoaXMubWFyaz8iICIrdGhpcy5tYXJrLnRvU3RyaW5nKCk6IiIpfXIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubmFtZSsiOiAiO3JldHVybiB0Kz10aGlzLnJlYXNvbnx8Iih1bmtub3duIHJlYXNvbikiLCFlJiZ0aGlzLm1hcmsmJih0Kz0iICIrdGhpcy5tYXJrLnRvU3RyaW5nKCkpLHR9LHQuZXhwb3J0cz1yfSx7fV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gMTA9PT1lfHwxMz09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gOT09PWV8fDMyPT09ZX1mdW5jdGlvbiBhKGUpe3JldHVybiA5PT09ZXx8MzI9PT1lfHwxMD09PWV8fDEzPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiA0ND09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjM9PT1lfHwxMjU9PT1lfWZ1bmN0aW9uIHMoZSl7dmFyIHQ7cmV0dXJuIDQ4PD1lJiZlPD01Nz9lLTQ4Oih0PTMyfGUsOTc8PXQmJnQ8PTEwMj90LTk3KzEwOi0xKX1mdW5jdGlvbiBsKGUpe3JldHVybiAxMjA9PT1lPzI6MTE3PT09ZT80Ojg1PT09ZT84OjB9ZnVuY3Rpb24gdShlKXtyZXR1cm4gNDg8PWUmJmU8PTU3P2UtNDg6LTF9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gNDg9PT1lPyJcMCI6OTc9PT1lPyIHIjo5OD09PWU/IlxiIjoxMTY9PT1lPyJcdCI6OT09PWU/Ilx0IjoxMTA9PT1lPyJcbiI6MTE4PT09ZT8iXHgwQiI6MTAyPT09ZT8iXGYiOjExND09PWU/IlxyIjoxMDE9PT1lPyIbIjozMj09PWU/IiAiOjM0PT09ZT8nIic6NDc9PT1lPyIvIjo5Mj09PWU/IlxcIjo3OD09PWU/IsKFIjo5NT09PWU/IsKgIjo3Nj09PWU/Ilx1MjAyOCI6ODA9PT1lPyJcdTIwMjkiOiIifWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGU8PTY1NTM1P1N0cmluZy5mcm9tQ2hhckNvZGUoZSk6U3RyaW5nLmZyb21DaGFyQ29kZSgoZS02NTUzNj4+MTApKzU1Mjk2LChlLTY1NTM2JjEwMjMpKzU2MzIwKX1mdW5jdGlvbiBoKGUsdCl7dGhpcy5pbnB1dD1lLHRoaXMuZmlsZW5hbWU9dC5maWxlbmFtZXx8bnVsbCx0aGlzLnNjaGVtYT10LnNjaGVtYXx8Vix0aGlzLm9uV2FybmluZz10Lm9uV2FybmluZ3x8bnVsbCx0aGlzLmxlZ2FjeT10LmxlZ2FjeXx8ITEsdGhpcy5qc29uPXQuanNvbnx8ITEsdGhpcy5saXN0ZW5lcj10Lmxpc3RlbmVyfHxudWxsLHRoaXMuaW1wbGljaXRUeXBlcz10aGlzLnNjaGVtYS5jb21waWxlZEltcGxpY2l0LHRoaXMudHlwZU1hcD10aGlzLnNjaGVtYS5jb21waWxlZFR5cGVNYXAsdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5wb3NpdGlvbj0wLHRoaXMubGluZT0wLHRoaXMubGluZVN0YXJ0PTAsdGhpcy5saW5lSW5kZW50PTAsdGhpcy5kb2N1bWVudHM9W119ZnVuY3Rpb24gZihlLHQpe3JldHVybiBuZXcgTih0LG5ldyAkKGUuZmlsZW5hbWUsZS5pbnB1dCxlLnBvc2l0aW9uLGUubGluZSxlLnBvc2l0aW9uLWUubGluZVN0YXJ0KSl9ZnVuY3Rpb24gZChlLHQpe3Rocm93IGYoZSx0KX1mdW5jdGlvbiBtKGUsdCl7ZS5vbldhcm5pbmcmJmUub25XYXJuaW5nLmNhbGwobnVsbCxmKGUsdCkpfWZ1bmN0aW9uIGcoZSx0LG4scil7dmFyIGksYSxvLHM7aWYodDxuKXtpZihzPWUuaW5wdXQuc2xpY2UodCxuKSxyKWZvcihpPTAsYT1zLmxlbmd0aDtpPGE7aSs9MSlvPXMuY2hhckNvZGVBdChpKSw5PT09b3x8MzI8PW8mJm88PTExMTQxMTF8fGQoZSwiZXhwZWN0ZWQgdmFsaWQgSlNPTiBjaGFyYWN0ZXIiKTtlbHNlIFoudGVzdChzKSYmZChlLCJ0aGUgc3RyZWFtIGNvbnRhaW5zIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyIpO2UucmVzdWx0Kz1zfX1mdW5jdGlvbiB5KGUsdCxuLHIpe3ZhciBpLGEsbyxzO2Zvcih6LmlzT2JqZWN0KG4pfHxkKGUsImNhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlIiksaT1PYmplY3Qua2V5cyhuKSxvPTAscz1pLmxlbmd0aDtvPHM7bys9MSlhPWlbb10sSC5jYWxsKHQsYSl8fCh0W2FdPW5bYV0sclthXT0hMCl9ZnVuY3Rpb24gdihlLHQsbixyLGksYSl7dmFyIG8scztpZihpPVN0cmluZyhpKSxudWxsPT09dCYmKHQ9e30pLCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZSI9PT1yKWlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKG89MCxzPWEubGVuZ3RoO288cztvKz0xKXkoZSx0LGFbb10sbik7ZWxzZSB5KGUsdCxhLG4pO2Vsc2UgZS5qc29ufHxILmNhbGwobixpKXx8IUguY2FsbCh0LGkpfHxkKGUsImR1cGxpY2F0ZWQgbWFwcGluZyBrZXkiKSx0W2ldPWEsZGVsZXRlIG5baV07cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXt2YXIgdDt0PWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSwxMD09PXQ/ZS5wb3NpdGlvbisrOjEzPT09dD8oZS5wb3NpdGlvbisrLDEwPT09ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pJiZlLnBvc2l0aW9uKyspOmQoZSwiYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkIiksZS5saW5lKz0xLGUubGluZVN0YXJ0PWUucG9zaXRpb259ZnVuY3Rpb24gdyhlLHQsbil7Zm9yKHZhciBhPTAsbz1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbik7MCE9PW87KXtmb3IoO2kobyk7KW89ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7aWYodCYmMzU9PT1vKWRvIG89ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7d2hpbGUoMTAhPT1vJiYxMyE9PW8mJjAhPT1vKTtpZighcihvKSlicmVhaztmb3IoYihlKSxvPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSxhKyssZS5saW5lSW5kZW50PTA7MzI9PT1vOyllLmxpbmVJbmRlbnQrKyxvPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pfXJldHVybiBuIT09LTEmJjAhPT1hJiZlLmxpbmVJbmRlbnQ8biYmbShlLCJkZWZpY2llbnQgaW5kZW50YXRpb24iKSxhfWZ1bmN0aW9uIF8oZSl7dmFyIHQsbj1lLnBvc2l0aW9uO3JldHVybiB0PWUuaW5wdXQuY2hhckNvZGVBdChuKSwhKDQ1IT09dCYmNDYhPT10fHx0IT09ZS5pbnB1dC5jaGFyQ29kZUF0KG4rMSl8fHQhPT1lLmlucHV0LmNoYXJDb2RlQXQobisyKXx8KG4rPTMsdD1lLmlucHV0LmNoYXJDb2RlQXQobiksMCE9PXQmJiFhKHQpKSl9ZnVuY3Rpb24geChlLHQpezE9PT10P2UucmVzdWx0Kz0iICI6dD4xJiYoZS5yZXN1bHQrPXoucmVwZWF0KCJcbiIsdC0xKSl9ZnVuY3Rpb24gQShlLHQsbil7dmFyIHMsbCx1LGMscCxoLGYsZCxtLHk9ZS5raW5kLHY9ZS5yZXN1bHQ7aWYobT1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbiksYShtKXx8byhtKXx8MzU9PT1tfHwzOD09PW18fDQyPT09bXx8MzM9PT1tfHwxMjQ9PT1tfHw2Mj09PW18fDM5PT09bXx8MzQ9PT1tfHwzNz09PW18fDY0PT09bXx8OTY9PT1tKXJldHVybiExO2lmKCg2Mz09PW18fDQ1PT09bSkmJihsPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKzEpLGEobCl8fG4mJm8obCkpKXJldHVybiExO2ZvcihlLmtpbmQ9InNjYWxhciIsZS5yZXN1bHQ9IiIsdT1jPWUucG9zaXRpb24scD0hMTswIT09bTspe2lmKDU4PT09bSl7aWYobD1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbisxKSxhKGwpfHxuJiZvKGwpKWJyZWFrfWVsc2UgaWYoMzU9PT1tKXtpZihzPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uLTEpLGEocykpYnJlYWt9ZWxzZXtpZihlLnBvc2l0aW9uPT09ZS5saW5lU3RhcnQmJl8oZSl8fG4mJm8obSkpYnJlYWs7aWYocihtKSl7aWYoaD1lLmxpbmUsZj1lLmxpbmVTdGFydCxkPWUubGluZUluZGVudCx3KGUsITEsLTEpLGUubGluZUluZGVudD49dCl7cD0hMCxtPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKTtjb250aW51ZX1lLnBvc2l0aW9uPWMsZS5saW5lPWgsZS5saW5lU3RhcnQ9ZixlLmxpbmVJbmRlbnQ9ZDticmVha319cCYmKGcoZSx1LGMsITEpLHgoZSxlLmxpbmUtaCksdT1jPWUucG9zaXRpb24scD0hMSksaShtKXx8KGM9ZS5wb3NpdGlvbisxKSxtPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pfXJldHVybiBnKGUsdSxjLCExKSwhIWUucmVzdWx0fHwoZS5raW5kPXksZS5yZXN1bHQ9diwhMSl9ZnVuY3Rpb24gUyhlLHQpe3ZhciBuLGksYTtpZihuPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSwzOSE9PW4pcmV0dXJuITE7Zm9yKGUua2luZD0ic2NhbGFyIixlLnJlc3VsdD0iIixlLnBvc2l0aW9uKyssaT1hPWUucG9zaXRpb247MCE9PShuPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSk7KWlmKDM5PT09bil7aWYoZyhlLGksZS5wb3NpdGlvbiwhMCksbj1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSwzOSE9PW4pcmV0dXJuITA7aT1hPWUucG9zaXRpb24sZS5wb3NpdGlvbisrfWVsc2UgcihuKT8oZyhlLGksYSwhMCkseChlLHcoZSwhMSx0KSksaT1hPWUucG9zaXRpb24pOmUucG9zaXRpb249PT1lLmxpbmVTdGFydCYmXyhlKT9kKGUsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhciIpOihlLnBvc2l0aW9uKyssYT1lLnBvc2l0aW9uKTtkKGUsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXIiKX1mdW5jdGlvbiBqKGUsdCl7dmFyIG4saSxhLG8sdSxjO2lmKGM9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pLDM0IT09YylyZXR1cm4hMTtmb3IoZS5raW5kPSJzY2FsYXIiLGUucmVzdWx0PSIiLGUucG9zaXRpb24rKyxuPWk9ZS5wb3NpdGlvbjswIT09KGM9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pKTspe2lmKDM0PT09YylyZXR1cm4gZyhlLG4sZS5wb3NpdGlvbiwhMCksZS5wb3NpdGlvbisrLCEwO2lmKDkyPT09Yyl7aWYoZyhlLG4sZS5wb3NpdGlvbiwhMCksYz1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSxyKGMpKXcoZSwhMSx0KTtlbHNlIGlmKGM8MjU2JiZpZVtjXSllLnJlc3VsdCs9YWVbY10sZS5wb3NpdGlvbisrO2Vsc2UgaWYoKHU9bChjKSk+MCl7Zm9yKGE9dSxvPTA7YT4wO2EtLSljPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pLCh1PXMoYykpPj0wP289KG88PDQpK3U6ZChlLCJleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIiKTtlLnJlc3VsdCs9cChvKSxlLnBvc2l0aW9uKyt9ZWxzZSBkKGUsInVua25vd24gZXNjYXBlIHNlcXVlbmNlIik7bj1pPWUucG9zaXRpb259ZWxzZSByKGMpPyhnKGUsbixpLCEwKSx4KGUsdyhlLCExLHQpKSxuPWk9ZS5wb3NpdGlvbik6ZS5wb3NpdGlvbj09PWUubGluZVN0YXJ0JiZfKGUpP2QoZSwidW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyIik6KGUucG9zaXRpb24rKyxpPWUucG9zaXRpb24pfWQoZSwidW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhciIpfWZ1bmN0aW9uIEUoZSx0KXt2YXIgbixyLGksbyxzLGwsdSxjLHAsaCxmLG09ITAsZz1lLnRhZyx5PWUuYW5jaG9yLGI9e307aWYoZj1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbiksOTE9PT1mKW89OTMsdT0hMSxyPVtdO2Vsc2V7aWYoMTIzIT09ZilyZXR1cm4hMTtvPTEyNSx1PSEwLHI9e319Zm9yKG51bGwhPT1lLmFuY2hvciYmKGUuYW5jaG9yTWFwW2UuYW5jaG9yXT1yKSxmPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pOzAhPT1mOyl7aWYodyhlLCEwLHQpLGY9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pLGY9PT1vKXJldHVybiBlLnBvc2l0aW9uKyssZS50YWc9ZyxlLmFuY2hvcj15LGUua2luZD11PyJtYXBwaW5nIjoic2VxdWVuY2UiLGUucmVzdWx0PXIsITA7bXx8ZChlLCJtaXNzZWQgY29tbWEgYmV0d2VlbiBmbG93IGNvbGxlY3Rpb24gZW50cmllcyIpLHA9Yz1oPW51bGwscz1sPSExLDYzPT09ZiYmKGk9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24rMSksYShpKSYmKHM9bD0hMCxlLnBvc2l0aW9uKyssdyhlLCEwLHQpKSksbj1lLmxpbmUsTChlLHQsWSwhMSwhMCkscD1lLnRhZyxjPWUucmVzdWx0LHcoZSwhMCx0KSxmPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSwhbCYmZS5saW5lIT09bnx8NTghPT1mfHwocz0hMCxmPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pLHcoZSwhMCx0KSxMKGUsdCxZLCExLCEwKSxoPWUucmVzdWx0KSx1P3YoZSxyLGIscCxjLGgpOnM/ci5wdXNoKHYoZSxudWxsLGIscCxjLGgpKTpyLnB1c2goYyksdyhlLCEwLHQpLGY9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pLDQ0PT09Zj8obT0hMCxmPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pKTptPSExfWQoZSwidW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb24iKX1mdW5jdGlvbiBPKGUsdCl7dmFyIG4sYSxvLHMsbD1HLGM9ITEscD0hMSxoPXQsZj0wLG09ITE7aWYocz1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbiksMTI0PT09cylhPSExO2Vsc2V7aWYoNjIhPT1zKXJldHVybiExO2E9ITB9Zm9yKGUua2luZD0ic2NhbGFyIixlLnJlc3VsdD0iIjswIT09czspaWYocz1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSw0Mz09PXN8fDQ1PT09cylHPT09bD9sPTQzPT09cz9YOks6ZChlLCJyZXBlYXQgb2YgYSBjaG9tcGluZyBtb2RlIGlkZW50aWZpZXIiKTtlbHNle2lmKCEoKG89dShzKSk+PTApKWJyZWFrOzA9PT1vP2QoZSwiYmFkIGV4cGxpY2l0IGluZGVudGF0aW9uIHdpZHRoIG9mIGEgYmxvY2sgc2NhbGFyOyBpdCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9uZSIpOnA/ZChlLCJyZXBlYXQgb2YgYW4gaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllciIpOihoPXQrby0xLHA9ITApfWlmKGkocykpe2RvIHM9ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7d2hpbGUoaShzKSk7aWYoMzU9PT1zKWRvIHM9ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7d2hpbGUoIXIocykmJjAhPT1zKX1mb3IoOzAhPT1zOyl7Zm9yKGIoZSksZS5saW5lSW5kZW50PTAscz1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbik7KCFwfHxlLmxpbmVJbmRlbnQ8aCkmJjMyPT09czspZS5saW5lSW5kZW50Kysscz1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKTtpZighcCYmZS5saW5lSW5kZW50PmgmJihoPWUubGluZUluZGVudCkscihzKSlmKys7ZWxzZXtpZihlLmxpbmVJbmRlbnQ8aCl7bD09PVg/ZS5yZXN1bHQrPXoucmVwZWF0KCJcbiIsYz8xK2Y6Zik6bD09PUcmJmMmJihlLnJlc3VsdCs9IlxuIik7YnJlYWt9Zm9yKGE/aShzKT8obT0hMCxlLnJlc3VsdCs9ei5yZXBlYXQoIlxuIixjPzErZjpmKSk6bT8obT0hMSxlLnJlc3VsdCs9ei5yZXBlYXQoIlxuIixmKzEpKTowPT09Zj9jJiYoZS5yZXN1bHQrPSIgIik6ZS5yZXN1bHQrPXoucmVwZWF0KCJcbiIsZik6ZS5yZXN1bHQrPXoucmVwZWF0KCJcbiIsYz8xK2Y6ZiksYz0hMCxwPSEwLGY9MCxuPWUucG9zaXRpb247IXIocykmJjAhPT1zOylzPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pO2coZSxuLGUucG9zaXRpb24sITEpfX1yZXR1cm4hMH1mdW5jdGlvbiBrKGUsdCl7dmFyIG4scixpLG89ZS50YWcscz1lLmFuY2hvcixsPVtdLHU9ITE7Zm9yKG51bGwhPT1lLmFuY2hvciYmKGUuYW5jaG9yTWFwW2UuYW5jaG9yXT1sKSxpPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKTswIT09aSYmNDU9PT1pJiYocj1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbisxKSxhKHIpKTspaWYodT0hMCxlLnBvc2l0aW9uKyssdyhlLCEwLC0xKSYmZS5saW5lSW5kZW50PD10KWwucHVzaChudWxsKSxpPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKTtlbHNlIGlmKG49ZS5saW5lLEwoZSx0LFcsITEsITApLGwucHVzaChlLnJlc3VsdCksdyhlLCEwLC0xKSxpPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSwoZS5saW5lPT09bnx8ZS5saW5lSW5kZW50PnQpJiYwIT09aSlkKGUsImJhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Iik7ZWxzZSBpZihlLmxpbmVJbmRlbnQ8dClicmVhaztyZXR1cm4hIXUmJihlLnRhZz1vLGUuYW5jaG9yPXMsZS5raW5kPSJzZXF1ZW5jZSIsZS5yZXN1bHQ9bCwhMCl9ZnVuY3Rpb24gVChlLHQsbil7dmFyIHIsbyxzLGwsdT1lLnRhZyxjPWUuYW5jaG9yLHA9e30saD17fSxmPW51bGwsbT1udWxsLGc9bnVsbCx5PSExLGI9ITE7Zm9yKG51bGwhPT1lLmFuY2hvciYmKGUuYW5jaG9yTWFwW2UuYW5jaG9yXT1wKSxsPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKTswIT09bDspe2lmKHI9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24rMSkscz1lLmxpbmUsNjMhPT1sJiY1OCE9PWx8fCFhKHIpKXtpZighTChlLG4sSiwhMSwhMCkpYnJlYWs7aWYoZS5saW5lPT09cyl7Zm9yKGw9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pO2kobCk7KWw9ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7aWYoNTg9PT1sKWw9ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbiksYShsKXx8ZChlLCJhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzIGV4cGVjdGVkIGFmdGVyIHRoZSBrZXktdmFsdWUgc2VwYXJhdG9yIHdpdGhpbiBhIGJsb2NrIG1hcHBpbmciKSx5JiYodihlLHAsaCxmLG0sbnVsbCksZj1tPWc9bnVsbCksYj0hMCx5PSExLG89ITEsZj1lLnRhZyxtPWUucmVzdWx0O2Vsc2V7aWYoIWIpcmV0dXJuIGUudGFnPXUsZS5hbmNob3I9YywhMDtkKGUsImNhbiBub3QgcmVhZCBhbiBpbXBsaWNpdCBtYXBwaW5nIHBhaXI7IGEgY29sb24gaXMgbWlzc2VkIil9fWVsc2V7aWYoIWIpcmV0dXJuIGUudGFnPXUsZS5hbmNob3I9YywhMDtkKGUsImNhbiBub3QgcmVhZCBhIGJsb2NrIG1hcHBpbmcgZW50cnk7IGEgbXVsdGlsaW5lIGtleSBtYXkgbm90IGJlIGFuIGltcGxpY2l0IGtleSIpfX1lbHNlIDYzPT09bD8oeSYmKHYoZSxwLGgsZixtLG51bGwpLGY9bT1nPW51bGwpLGI9ITAseT0hMCxvPSEwKTp5Pyh5PSExLG89ITApOmQoZSwiaW5jb21wbGV0ZSBleHBsaWNpdCBtYXBwaW5nIHBhaXI7IGEga2V5IG5vZGUgaXMgbWlzc2VkIiksZS5wb3NpdGlvbis9MSxsPXI7aWYoKGUubGluZT09PXN8fGUubGluZUluZGVudD50KSYmKEwoZSx0LFEsITAsbykmJih5P209ZS5yZXN1bHQ6Zz1lLnJlc3VsdCkseXx8KHYoZSxwLGgsZixtLGcpLGY9bT1nPW51bGwpLHcoZSwhMCwtMSksbD1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbikpLGUubGluZUluZGVudD50JiYwIT09bClkKGUsImJhZCBpbmRlbnRhdGlvbiBvZiBhIG1hcHBpbmcgZW50cnkiKTtlbHNlIGlmKGUubGluZUluZGVudDx0KWJyZWFrfXJldHVybiB5JiZ2KGUscCxoLGYsbSxudWxsKSxiJiYoZS50YWc9dSxlLmFuY2hvcj1jLGUua2luZD0ibWFwcGluZyIsZS5yZXN1bHQ9cCksYn1mdW5jdGlvbiBDKGUpe3ZhciB0LG4scixpLG89ITEscz0hMTtpZihpPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSwzMyE9PWkpcmV0dXJuITE7aWYobnVsbCE9PWUudGFnJiZkKGUsImR1cGxpY2F0aW9uIG9mIGEgdGFnIHByb3BlcnR5IiksaT1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSw2MD09PWk/KG89ITAsaT1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSk6MzM9PT1pPyhzPSEwLG49IiEhIixpPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pKTpuPSIhIix0PWUucG9zaXRpb24sbyl7ZG8gaT1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKTt3aGlsZSgwIT09aSYmNjIhPT1pKTtlLnBvc2l0aW9uPGUubGVuZ3RoPyhyPWUuaW5wdXQuc2xpY2UodCxlLnBvc2l0aW9uKSxpPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pKTpkKGUsInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnIil9ZWxzZXtmb3IoOzAhPT1pJiYhYShpKTspMzM9PT1pJiYocz9kKGUsInRhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZXhjbGFtYXRpb24gbWFya3MiKToobj1lLmlucHV0LnNsaWNlKHQtMSxlLnBvc2l0aW9uKzEpLG5lLnRlc3Qobil8fGQoZSwibmFtZWQgdGFnIGhhbmRsZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnMiKSxzPSEwLHQ9ZS5wb3NpdGlvbisxKSksaT1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKTtyPWUuaW5wdXQuc2xpY2UodCxlLnBvc2l0aW9uKSx0ZS50ZXN0KHIpJiZkKGUsInRhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVycyIpfXJldHVybiByJiYhcmUudGVzdChyKSYmZChlLCJ0YWcgbmFtZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnM6ICIrciksbz9lLnRhZz1yOkguY2FsbChlLnRhZ01hcCxuKT9lLnRhZz1lLnRhZ01hcFtuXStyOiIhIj09PW4/ZS50YWc9IiEiK3I6IiEhIj09PW4/ZS50YWc9InRhZzp5YW1sLm9yZywyMDAyOiIrcjpkKGUsJ3VuZGVjbGFyZWQgdGFnIGhhbmRsZSAiJytuKyciJyksITB9ZnVuY3Rpb24gSShlKXt2YXIgdCxuO2lmKG49ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pLDM4IT09bilyZXR1cm4hMTtmb3IobnVsbCE9PWUuYW5jaG9yJiZkKGUsImR1cGxpY2F0aW9uIG9mIGFuIGFuY2hvciBwcm9wZXJ0eSIpLG49ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbiksdD1lLnBvc2l0aW9uOzAhPT1uJiYhYShuKSYmIW8obik7KW49ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7cmV0dXJuIGUucG9zaXRpb249PT10JiZkKGUsIm5hbWUgb2YgYW4gYW5jaG9yIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIiKSxlLmFuY2hvcj1lLmlucHV0LnNsaWNlKHQsZS5wb3NpdGlvbiksITB9ZnVuY3Rpb24gRChlKXt2YXIgdCxuLHI7aWYocj1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbiksNDIhPT1yKXJldHVybiExO2ZvcihyPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pLHQ9ZS5wb3NpdGlvbjswIT09ciYmIWEocikmJiFvKHIpOylyPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pO3JldHVybiBlLnBvc2l0aW9uPT09dCYmZChlLCJuYW1lIG9mIGFuIGFsaWFzIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIiKSxuPWUuaW5wdXQuc2xpY2UodCxlLnBvc2l0aW9uKSxlLmFuY2hvck1hcC5oYXNPd25Qcm9wZXJ0eShuKXx8ZChlLCd1bmlkZW50aWZpZWQgYWxpYXMgIicrbisnIicpLGUucmVzdWx0PWUuYW5jaG9yTWFwW25dLHcoZSwhMCwtMSksITB9ZnVuY3Rpb24gTChlLHQsbixyLGkpe3ZhciBhLG8scyxsLHUsYyxwLGgsZj0xLG09ITEsZz0hMTtpZihudWxsIT09ZS5saXN0ZW5lciYmZS5saXN0ZW5lcigib3BlbiIsZSksZS50YWc9bnVsbCxlLmFuY2hvcj1udWxsLGUua2luZD1udWxsLGUucmVzdWx0PW51bGwsYT1vPXM9UT09PW58fFc9PT1uLHImJncoZSwhMCwtMSkmJihtPSEwLGUubGluZUluZGVudD50P2Y9MTplLmxpbmVJbmRlbnQ9PT10P2Y9MDplLmxpbmVJbmRlbnQ8dCYmKGY9LTEpKSwxPT09Zilmb3IoO0MoZSl8fEkoZSk7KXcoZSwhMCwtMSk/KG09ITAscz1hLGUubGluZUluZGVudD50P2Y9MTplLmxpbmVJbmRlbnQ9PT10P2Y9MDplLmxpbmVJbmRlbnQ8dCYmKGY9LTEpKTpzPSExO2lmKHMmJihzPW18fGkpLDEhPT1mJiZRIT09bnx8KHA9WT09PW58fEo9PT1uP3Q6dCsxLGg9ZS5wb3NpdGlvbi1lLmxpbmVTdGFydCwxPT09Zj9zJiYoayhlLGgpfHxUKGUsaCxwKSl8fEUoZSxwKT9nPSEwOihvJiZPKGUscCl8fFMoZSxwKXx8aihlLHApP2c9ITA6RChlKT8oZz0hMCxudWxsPT09ZS50YWcmJm51bGw9PT1lLmFuY2hvcnx8ZChlLCJhbGlhcyBub2RlIHNob3VsZCBub3QgaGF2ZSBhbnkgcHJvcGVydGllcyIpKTpBKGUscCxZPT09bikmJihnPSEwLG51bGw9PT1lLnRhZyYmKGUudGFnPSI/IikpLG51bGwhPT1lLmFuY2hvciYmKGUuYW5jaG9yTWFwW2UuYW5jaG9yXT1lLnJlc3VsdCkpOjA9PT1mJiYoZz1zJiZrKGUsaCkpKSxudWxsIT09ZS50YWcmJiIhIiE9PWUudGFnKWlmKCI/Ij09PWUudGFnKXtmb3IobD0wLHU9ZS5pbXBsaWNpdFR5cGVzLmxlbmd0aDtsPHU7bCs9MSlpZihjPWUuaW1wbGljaXRUeXBlc1tsXSxjLnJlc29sdmUoZS5yZXN1bHQpKXtlLnJlc3VsdD1jLmNvbnN0cnVjdChlLnJlc3VsdCksZS50YWc9Yy50YWcsbnVsbCE9PWUuYW5jaG9yJiYoZS5hbmNob3JNYXBbZS5hbmNob3JdPWUucmVzdWx0KTticmVha319ZWxzZSBILmNhbGwoZS50eXBlTWFwLGUudGFnKT8oYz1lLnR5cGVNYXBbZS50YWddLG51bGwhPT1lLnJlc3VsdCYmYy5raW5kIT09ZS5raW5kJiZkKGUsInVuYWNjZXB0YWJsZSBub2RlIGtpbmQgZm9yICE8IitlLnRhZysnPiB0YWc7IGl0IHNob3VsZCBiZSAiJytjLmtpbmQrJyIsIG5vdCAiJytlLmtpbmQrJyInKSxjLnJlc29sdmUoZS5yZXN1bHQpPyhlLnJlc3VsdD1jLmNvbnN0cnVjdChlLnJlc3VsdCksbnVsbCE9PWUuYW5jaG9yJiYoZS5hbmNob3JNYXBbZS5hbmNob3JdPWUucmVzdWx0KSk6ZChlLCJjYW5ub3QgcmVzb2x2ZSBhIG5vZGUgd2l0aCAhPCIrZS50YWcrIj4gZXhwbGljaXQgdGFnIikpOmQoZSwidW5rbm93biB0YWcgITwiK2UudGFnKyI+Iik7cmV0dXJuIG51bGwhPT1lLmxpc3RlbmVyJiZlLmxpc3RlbmVyKCJjbG9zZSIsZSksbnVsbCE9PWUudGFnfHxudWxsIT09ZS5hbmNob3J8fGd9ZnVuY3Rpb24gTShlKXt2YXIgdCxuLG8scyxsPWUucG9zaXRpb24sdT0hMTtmb3IoZS52ZXJzaW9uPW51bGwsZS5jaGVja0xpbmVCcmVha3M9ZS5sZWdhY3ksZS50YWdNYXA9e30sZS5hbmNob3JNYXA9e307MCE9PShzPWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKSkmJih3KGUsITAsLTEpLHM9ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pLCEoZS5saW5lSW5kZW50PjB8fDM3IT09cykpOyl7Zm9yKHU9ITAscz1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKSx0PWUucG9zaXRpb247MCE9PXMmJiFhKHMpOylzPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pO2ZvcihuPWUuaW5wdXQuc2xpY2UodCxlLnBvc2l0aW9uKSxvPVtdLG4ubGVuZ3RoPDEmJmQoZSwiZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoIik7MCE9PXM7KXtmb3IoO2kocyk7KXM9ZS5pbnB1dC5jaGFyQ29kZUF0KCsrZS5wb3NpdGlvbik7aWYoMzU9PT1zKXtkbyBzPWUuaW5wdXQuY2hhckNvZGVBdCgrK2UucG9zaXRpb24pO3doaWxlKDAhPT1zJiYhcihzKSk7YnJlYWt9aWYocihzKSlicmVhaztmb3IodD1lLnBvc2l0aW9uOzAhPT1zJiYhYShzKTspcz1lLmlucHV0LmNoYXJDb2RlQXQoKytlLnBvc2l0aW9uKTtvLnB1c2goZS5pbnB1dC5zbGljZSh0LGUucG9zaXRpb24pKX0wIT09cyYmYihlKSxILmNhbGwoc2Usbik/c2Vbbl0oZSxuLG8pOm0oZSwndW5rbm93biBkb2N1bWVudCBkaXJlY3RpdmUgIicrbisnIicpfXJldHVybiB3KGUsITAsLTEpLDA9PT1lLmxpbmVJbmRlbnQmJjQ1PT09ZS5pbnB1dC5jaGFyQ29kZUF0KGUucG9zaXRpb24pJiY0NT09PWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKzEpJiY0NT09PWUuaW5wdXQuY2hhckNvZGVBdChlLnBvc2l0aW9uKzIpPyhlLnBvc2l0aW9uKz0zLHcoZSwhMCwtMSkpOnUmJmQoZSwiZGlyZWN0aXZlcyBlbmQgbWFyayBpcyBleHBlY3RlZCIpLEwoZSxlLmxpbmVJbmRlbnQtMSxRLCExLCEwKSx3KGUsITAsLTEpLGUuY2hlY2tMaW5lQnJlYWtzJiZlZS50ZXN0KGUuaW5wdXQuc2xpY2UobCxlLnBvc2l0aW9uKSkmJm0oZSwibm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50IiksZS5kb2N1bWVudHMucHVzaChlLnJlc3VsdCksZS5wb3NpdGlvbj09PWUubGluZVN0YXJ0JiZfKGUpP3ZvaWQoNDY9PT1lLmlucHV0LmNoYXJDb2RlQXQoZS5wb3NpdGlvbikmJihlLnBvc2l0aW9uKz0zLHcoZSwhMCwtMSkpKTp2b2lkKGUucG9zaXRpb248ZS5sZW5ndGgtMSYmZChlLCJlbmQgb2YgdGhlIHN0cmVhbSBvciBhIGRvY3VtZW50IHNlcGFyYXRvciBpcyBleHBlY3RlZCIpKX1mdW5jdGlvbiBSKGUsdCl7ZT1TdHJpbmcoZSksdD10fHx7fSwwIT09ZS5sZW5ndGgmJigxMCE9PWUuY2hhckNvZGVBdChlLmxlbmd0aC0xKSYmMTMhPT1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSkmJihlKz0iXG4iKSw2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSkpO3ZhciBuPW5ldyBoKGUsdCk7Zm9yKG4uaW5wdXQrPSJcMCI7MzI9PT1uLmlucHV0LmNoYXJDb2RlQXQobi5wb3NpdGlvbik7KW4ubGluZUluZGVudCs9MSxuLnBvc2l0aW9uKz0xO2Zvcig7bi5wb3NpdGlvbjxuLmxlbmd0aC0xOylNKG4pO3JldHVybiBuLmRvY3VtZW50c31mdW5jdGlvbiBVKGUsdCxuKXt2YXIgcixpLGE9UihlLG4pO2ZvcihyPTAsaT1hLmxlbmd0aDtyPGk7cis9MSl0KGFbcl0pfWZ1bmN0aW9uIFAoZSx0KXt2YXIgbj1SKGUsdCk7aWYoMCE9PW4ubGVuZ3RoKXtpZigxPT09bi5sZW5ndGgpcmV0dXJuIG5bMF07dGhyb3cgbmV3IE4oImV4cGVjdGVkIGEgc2luZ2xlIGRvY3VtZW50IGluIHRoZSBzdHJlYW0sIGJ1dCBmb3VuZCBtb3JlIil9fWZ1bmN0aW9uIHEoZSx0LG4pe1UoZSx0LHouZXh0ZW5kKHtzY2hlbWE6Rn0sbikpfWZ1bmN0aW9uIEIoZSx0KXtyZXR1cm4gUChlLHouZXh0ZW5kKHtzY2hlbWE6Rn0sdCkpfWZvcih2YXIgej1lKCIuL2NvbW1vbiIpLE49ZSgiLi9leGNlcHRpb24iKSwkPWUoIi4vbWFyayIpLEY9ZSgiLi9zY2hlbWEvZGVmYXVsdF9zYWZlIiksVj1lKCIuL3NjaGVtYS9kZWZhdWx0X2Z1bGwiKSxIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksWT0xLEo9MixXPTMsUT00LEc9MSxLPTIsWD0zLFo9L1tceDAwLVx4MDhceDBCXHgwQ1x4MEUtXHgxRlx4N0YtXHg4NFx4ODYtXHg5Rlx1RkZGRVx1RkZGRl18W1x1RDgwMC1cdURCRkZdKD8hW1x1REMwMC1cdURGRkZdKXwoPzpbXlx1RDgwMC1cdURCRkZdfF4pW1x1REMwMC1cdURGRkZdLyxlZT0vW1x4ODVcdTIwMjhcdTIwMjldLyx0ZT0vWyxcW1xdXHtcfV0vLG5lPS9eKD86IXwhIXwhW2EtelwtXSshKSQvaSxyZT0vXig/OiF8W14sXFtcXVx7XH1dKSg/OiVbMC05YS1mXXsyfXxbMC05YS16XC0jO1wvXD86QCY9XCtcJCxfXC4hflwqJ1woXClcW1xdXSkqJC9pLGllPW5ldyBBcnJheSgyNTYpLGFlPW5ldyBBcnJheSgyNTYpLG9lPTA7b2U8MjU2O29lKyspaWVbb2VdPWMob2UpPzE6MCxhZVtvZV09YyhvZSk7dmFyIHNlPXtZQU1MOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLGE7bnVsbCE9PWUudmVyc2lvbiYmZChlLCJkdXBsaWNhdGlvbiBvZiAlWUFNTCBkaXJlY3RpdmUiKSwxIT09bi5sZW5ndGgmJmQoZSwiWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudCIpLHI9L14oWzAtOV0rKVwuKFswLTldKykkLy5leGVjKG5bMF0pLG51bGw9PT1yJiZkKGUsImlsbC1mb3JtZWQgYXJndW1lbnQgb2YgdGhlIFlBTUwgZGlyZWN0aXZlIiksaT1wYXJzZUludChyWzFdLDEwKSxhPXBhcnNlSW50KHJbMl0sMTApLDEhPT1pJiZkKGUsInVuYWNjZXB0YWJsZSBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IiksZS52ZXJzaW9uPW5bMF0sZS5jaGVja0xpbmVCcmVha3M9YTwyLDEhPT1hJiYyIT09YSYmbShlLCJ1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Iil9LFRBRzpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTsyIT09bi5sZW5ndGgmJmQoZSwiVEFHIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgdHdvIGFyZ3VtZW50cyIpLHI9blswXSxpPW5bMV0sbmUudGVzdChyKXx8ZChlLCJpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZSIpLEguY2FsbChlLnRhZ01hcCxyKSYmZChlLCd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciAiJytyKyciIHRhZyBoYW5kbGUnKSxyZS50ZXN0KGkpfHxkKGUsImlsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZSIpLGUudGFnTWFwW3JdPWl9fTt0LmV4cG9ydHMubG9hZEFsbD1VLHQuZXhwb3J0cy5sb2FkPVAsdC5leHBvcnRzLnNhZmVMb2FkQWxsPXEsdC5leHBvcnRzLnNhZmVMb2FkPUJ9LHsiLi9jb21tb24iOjIxLCIuL2V4Y2VwdGlvbiI6MjMsIi4vbWFyayI6MjUsIi4vc2NoZW1hL2RlZmF1bHRfZnVsbCI6MjgsIi4vc2NoZW1hL2RlZmF1bHRfc2FmZSI6Mjl9XSwyNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsaSl7dGhpcy5uYW1lPWUsdGhpcy5idWZmZXI9dCx0aGlzLnBvc2l0aW9uPW4sdGhpcy5saW5lPXIsdGhpcy5jb2x1bW49aX12YXIgaT1lKCIuL2NvbW1vbiIpO3IucHJvdG90eXBlLmdldFNuaXBwZXQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGEsbyxzO2lmKCF0aGlzLmJ1ZmZlcilyZXR1cm4gbnVsbDtmb3IoZT1lfHw0LHQ9dHx8NzUsbj0iIixyPXRoaXMucG9zaXRpb247cj4wJiYiXDBcclxuwoVcdTIwMjhcdTIwMjkiLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KHItMSkpPT09LTE7KWlmKHItPTEsdGhpcy5wb3NpdGlvbi1yPnQvMi0xKXtuPSIgLi4uICIscis9NTticmVha31mb3IoYT0iIixvPXRoaXMucG9zaXRpb247bzx0aGlzLmJ1ZmZlci5sZW5ndGgmJiJcMFxyXG7ChVx1MjAyOFx1MjAyOSIuaW5kZXhPZih0aGlzLmJ1ZmZlci5jaGFyQXQobykpPT09LTE7KWlmKG8rPTEsby10aGlzLnBvc2l0aW9uPnQvMi0xKXthPSIgLi4uICIsby09NTticmVha31yZXR1cm4gcz10aGlzLmJ1ZmZlci5zbGljZShyLG8pLGkucmVwZWF0KCIgIixlKStuK3MrYSsiXG4iK2kucmVwZWF0KCIgIixlK3RoaXMucG9zaXRpb24tcituLmxlbmd0aCkrIl4ifSxyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbihlKXt2YXIgdCxuPSIiO3JldHVybiB0aGlzLm5hbWUmJihuKz0naW4gIicrdGhpcy5uYW1lKyciICcpLG4rPSJhdCBsaW5lICIrKHRoaXMubGluZSsxKSsiLCBjb2x1bW4gIisodGhpcy5jb2x1bW4rMSksZXx8KHQ9dGhpcy5nZXRTbmlwcGV0KCksdCYmKG4rPSI6XG4iK3QpKSxufSx0LmV4cG9ydHM9cn0seyIuL2NvbW1vbiI6MjF9XSwyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgaT1bXTtyZXR1cm4gZS5pbmNsdWRlLmZvckVhY2goZnVuY3Rpb24oZSl7bj1yKGUsdCxuKX0pLGVbdF0uZm9yRWFjaChmdW5jdGlvbihlKXtuLmZvckVhY2goZnVuY3Rpb24odCxuKXt0LnRhZz09PWUudGFnJiZpLnB1c2gobil9KSxuLnB1c2goZSl9KSxuLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBpLmluZGV4T2YodCk9PT0tMX0pfWZ1bmN0aW9uIGkoKXtmdW5jdGlvbiBlKGUpe3JbZS50YWddPWV9dmFyIHQsbixyPXt9O2Zvcih0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0Kz0xKWFyZ3VtZW50c1t0XS5mb3JFYWNoKGUpO3JldHVybiByfWZ1bmN0aW9uIGEoZSl7dGhpcy5pbmNsdWRlPWUuaW5jbHVkZXx8W10sdGhpcy5pbXBsaWNpdD1lLmltcGxpY2l0fHxbXSwKK3RoaXMuZXhwbGljaXQ9ZS5leHBsaWNpdHx8W10sdGhpcy5pbXBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUubG9hZEtpbmQmJiJzY2FsYXIiIT09ZS5sb2FkS2luZCl0aHJvdyBuZXcgcygiVGhlcmUgaXMgYSBub24tc2NhbGFyIHR5cGUgaW4gdGhlIGltcGxpY2l0IGxpc3Qgb2YgYSBzY2hlbWEuIEltcGxpY2l0IHJlc29sdmluZyBvZiBzdWNoIHR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQuIil9KSx0aGlzLmNvbXBpbGVkSW1wbGljaXQ9cih0aGlzLCJpbXBsaWNpdCIsW10pLHRoaXMuY29tcGlsZWRFeHBsaWNpdD1yKHRoaXMsImV4cGxpY2l0IixbXSksdGhpcy5jb21waWxlZFR5cGVNYXA9aSh0aGlzLmNvbXBpbGVkSW1wbGljaXQsdGhpcy5jb21waWxlZEV4cGxpY2l0KX12YXIgbz1lKCIuL2NvbW1vbiIpLHM9ZSgiLi9leGNlcHRpb24iKSxsPWUoIi4vdHlwZSIpO2EuREVGQVVMVD1udWxsLGEuY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIGUsdDtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOmU9YS5ERUZBVUxULHQ9YXJndW1lbnRzWzBdO2JyZWFrO2Nhc2UgMjplPWFyZ3VtZW50c1swXSx0PWFyZ3VtZW50c1sxXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBzKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBTY2hlbWEuY3JlYXRlIGZ1bmN0aW9uIil9aWYoZT1vLnRvQXJyYXkoZSksdD1vLnRvQXJyYXkodCksIWUuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBhfSkpdGhyb3cgbmV3IHMoIlNwZWNpZmllZCBsaXN0IG9mIHN1cGVyIHNjaGVtYXMgKG9yIGEgc2luZ2xlIFNjaGVtYSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVNjaGVtYSBvYmplY3QuIik7aWYoIXQuZXZlcnkoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBsfSkpdGhyb3cgbmV3IHMoIlNwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4iKTtyZXR1cm4gbmV3IGEoe2luY2x1ZGU6ZSxleHBsaWNpdDp0fSl9LHQuZXhwb3J0cz1hfSx7Ii4vY29tbW9uIjoyMSwiLi9leGNlcHRpb24iOjIzLCIuL3R5cGUiOjMyfV0sMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vc2NoZW1hIik7dC5leHBvcnRzPW5ldyByKHtpbmNsdWRlOltlKCIuL2pzb24iKV19KX0seyIuLi9zY2hlbWEiOjI2LCIuL2pzb24iOjMxfV0sMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgiLi4vc2NoZW1hIik7dC5leHBvcnRzPXIuREVGQVVMVD1uZXcgcih7aW5jbHVkZTpbZSgiLi9kZWZhdWx0X3NhZmUiKV0sZXhwbGljaXQ6W2UoIi4uL3R5cGUvanMvdW5kZWZpbmVkIiksZSgiLi4vdHlwZS9qcy9yZWdleHAiKSxlKCIuLi90eXBlL2pzL2Z1bmN0aW9uIildfSl9LHsiLi4vc2NoZW1hIjoyNiwiLi4vdHlwZS9qcy9mdW5jdGlvbiI6MzcsIi4uL3R5cGUvanMvcmVnZXhwIjozOCwiLi4vdHlwZS9qcy91bmRlZmluZWQiOjM5LCIuL2RlZmF1bHRfc2FmZSI6Mjl9XSwyOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9zY2hlbWEiKTt0LmV4cG9ydHM9bmV3IHIoe2luY2x1ZGU6W2UoIi4vY29yZSIpXSxpbXBsaWNpdDpbZSgiLi4vdHlwZS90aW1lc3RhbXAiKSxlKCIuLi90eXBlL21lcmdlIildLGV4cGxpY2l0OltlKCIuLi90eXBlL2JpbmFyeSIpLGUoIi4uL3R5cGUvb21hcCIpLGUoIi4uL3R5cGUvcGFpcnMiKSxlKCIuLi90eXBlL3NldCIpXX0pfSx7Ii4uL3NjaGVtYSI6MjYsIi4uL3R5cGUvYmluYXJ5IjozMywiLi4vdHlwZS9tZXJnZSI6NDEsIi4uL3R5cGUvb21hcCI6NDMsIi4uL3R5cGUvcGFpcnMiOjQ0LCIuLi90eXBlL3NldCI6NDYsIi4uL3R5cGUvdGltZXN0YW1wIjo0OCwiLi9jb3JlIjoyN31dLDMwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoIi4uL3NjaGVtYSIpO3QuZXhwb3J0cz1uZXcgcih7ZXhwbGljaXQ6W2UoIi4uL3R5cGUvc3RyIiksZSgiLi4vdHlwZS9zZXEiKSxlKCIuLi90eXBlL21hcCIpXX0pfSx7Ii4uL3NjaGVtYSI6MjYsIi4uL3R5cGUvbWFwIjo0MCwiLi4vdHlwZS9zZXEiOjQ1LCIuLi90eXBlL3N0ciI6NDd9XSwzMTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi9zY2hlbWEiKTt0LmV4cG9ydHM9bmV3IHIoe2luY2x1ZGU6W2UoIi4vZmFpbHNhZmUiKV0saW1wbGljaXQ6W2UoIi4uL3R5cGUvbnVsbCIpLGUoIi4uL3R5cGUvYm9vbCIpLGUoIi4uL3R5cGUvaW50IiksZSgiLi4vdHlwZS9mbG9hdCIpXX0pfSx7Ii4uL3NjaGVtYSI6MjYsIi4uL3R5cGUvYm9vbCI6MzQsIi4uL3R5cGUvZmxvYXQiOjM1LCIuLi90eXBlL2ludCI6MzYsIi4uL3R5cGUvbnVsbCI6NDIsIi4vZmFpbHNhZmUiOjMwfV0sMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17fTtyZXR1cm4gbnVsbCE9PWUmJk9iamVjdC5rZXlzKGUpLmZvckVhY2goZnVuY3Rpb24obil7ZVtuXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbU3RyaW5nKGUpXT1ufSl9KSx0fWZ1bmN0aW9uIGkoZSx0KXtpZih0PXR8fHt9LE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24odCl7aWYoby5pbmRleE9mKHQpPT09LTEpdGhyb3cgbmV3IGEoJ1Vua25vd24gb3B0aW9uICInK3QrJyIgaXMgbWV0IGluIGRlZmluaXRpb24gb2YgIicrZSsnIiBZQU1MIHR5cGUuJyl9KSx0aGlzLnRhZz1lLHRoaXMua2luZD10LmtpbmR8fG51bGwsdGhpcy5yZXNvbHZlPXQucmVzb2x2ZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdGhpcy5jb25zdHJ1Y3Q9dC5jb25zdHJ1Y3R8fGZ1bmN0aW9uKGUpe3JldHVybiBlfSx0aGlzLmluc3RhbmNlT2Y9dC5pbnN0YW5jZU9mfHxudWxsLHRoaXMucHJlZGljYXRlPXQucHJlZGljYXRlfHxudWxsLHRoaXMucmVwcmVzZW50PXQucmVwcmVzZW50fHxudWxsLHRoaXMuZGVmYXVsdFN0eWxlPXQuZGVmYXVsdFN0eWxlfHxudWxsLHRoaXMuc3R5bGVBbGlhc2VzPXIodC5zdHlsZUFsaWFzZXN8fG51bGwpLHMuaW5kZXhPZih0aGlzLmtpbmQpPT09LTEpdGhyb3cgbmV3IGEoJ1Vua25vd24ga2luZCAiJyt0aGlzLmtpbmQrJyIgaXMgc3BlY2lmaWVkIGZvciAiJytlKyciIFlBTUwgdHlwZS4nKX12YXIgYT1lKCIuL2V4Y2VwdGlvbiIpLG89WyJraW5kIiwicmVzb2x2ZSIsImNvbnN0cnVjdCIsImluc3RhbmNlT2YiLCJwcmVkaWNhdGUiLCJyZXByZXNlbnQiLCJkZWZhdWx0U3R5bGUiLCJzdHlsZUFsaWFzZXMiXSxzPVsic2NhbGFyIiwic2VxdWVuY2UiLCJtYXBwaW5nIl07dC5leHBvcnRzPWl9LHsiLi9leGNlcHRpb24iOjIzfV0sMzM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZSlyZXR1cm4hMTt2YXIgdCxuLHI9MCxpPWUubGVuZ3RoLGE9cDtmb3Iobj0wO248aTtuKyspaWYodD1hLmluZGV4T2YoZS5jaGFyQXQobikpLCEodD42NCkpe2lmKHQ8MClyZXR1cm4hMTtyKz02fXJldHVybiByJTg9PT0wfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbixyPWUucmVwbGFjZSgvW1xyXG49XS9nLCIiKSxpPXIubGVuZ3RoLGE9cCxvPTAsbD1bXTtmb3IodD0wO3Q8aTt0KyspdCU0PT09MCYmdCYmKGwucHVzaChvPj4xNiYyNTUpLGwucHVzaChvPj44JjI1NSksbC5wdXNoKDI1NSZvKSksbz1vPDw2fGEuaW5kZXhPZihyLmNoYXJBdCh0KSk7cmV0dXJuIG49aSU0KjYsMD09PW4/KGwucHVzaChvPj4xNiYyNTUpLGwucHVzaChvPj44JjI1NSksbC5wdXNoKDI1NSZvKSk6MTg9PT1uPyhsLnB1c2gobz4+MTAmMjU1KSxsLnB1c2gobz4+MiYyNTUpKToxMj09PW4mJmwucHVzaChvPj40JjI1NSkscz9uZXcgcyhsKTpsfWZ1bmN0aW9uIGEoZSl7dmFyIHQsbixyPSIiLGk9MCxhPWUubGVuZ3RoLG89cDtmb3IodD0wO3Q8YTt0KyspdCUzPT09MCYmdCYmKHIrPW9baT4+MTgmNjNdLHIrPW9baT4+MTImNjNdLHIrPW9baT4+NiY2M10scis9b1s2MyZpXSksaT0oaTw8OCkrZVt0XTtyZXR1cm4gbj1hJTMsMD09PW4/KHIrPW9baT4+MTgmNjNdLHIrPW9baT4+MTImNjNdLHIrPW9baT4+NiY2M10scis9b1s2MyZpXSk6Mj09PW4/KHIrPW9baT4+MTAmNjNdLHIrPW9baT4+NCY2M10scis9b1tpPDwyJjYzXSxyKz1vWzY0XSk6MT09PW4mJihyKz1vW2k+PjImNjNdLHIrPW9baTw8NCY2M10scis9b1s2NF0scis9b1s2NF0pLHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gcyYmcy5pc0J1ZmZlcihlKX12YXIgczt0cnl7dmFyIGw9ZTtzPWwoImJ1ZmZlciIpLkJ1ZmZlcn1jYXRjaCh1KXt9dmFyIGM9ZSgiLi4vdHlwZSIpLHA9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XG5cciI7dC5leHBvcnRzPW5ldyBjKCJ0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnkiLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6cixjb25zdHJ1Y3Q6aSxwcmVkaWNhdGU6byxyZXByZXNlbnQ6YX0pfSx7Ii4uL3R5cGUiOjMyfV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZSlyZXR1cm4hMTt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gND09PXQmJigidHJ1ZSI9PT1lfHwiVHJ1ZSI9PT1lfHwiVFJVRSI9PT1lKXx8NT09PXQmJigiZmFsc2UiPT09ZXx8IkZhbHNlIj09PWV8fCJGQUxTRSI9PT1lKX1mdW5jdGlvbiBpKGUpe3JldHVybiJ0cnVlIj09PWV8fCJUcnVlIj09PWV8fCJUUlVFIj09PWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4iW29iamVjdCBCb29sZWFuXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIG89ZSgiLi4vdHlwZSIpO3QuZXhwb3J0cz1uZXcgbygidGFnOnlhbWwub3JnLDIwMDI6Ym9vbCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTpyLGNvbnN0cnVjdDppLHByZWRpY2F0ZTphLHJlcHJlc2VudDp7bG93ZXJjYXNlOmZ1bmN0aW9uKGUpe3JldHVybiBlPyJ0cnVlIjoiZmFsc2UifSx1cHBlcmNhc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/IlRSVUUiOiJGQUxTRSJ9LGNhbWVsY2FzZTpmdW5jdGlvbihlKXtyZXR1cm4gZT8iVHJ1ZSI6IkZhbHNlIn19LGRlZmF1bHRTdHlsZToibG93ZXJjYXNlIn0pfSx7Ii4uL3R5cGUiOjMyfV0sMzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbnVsbCE9PWUmJiEhdS50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIHQsbixyLGk7cmV0dXJuIHQ9ZS5yZXBsYWNlKC9fL2csIiIpLnRvTG93ZXJDYXNlKCksbj0iLSI9PT10WzBdPy0xOjEsaT1bXSwiKy0iLmluZGV4T2YodFswXSk+PTAmJih0PXQuc2xpY2UoMSkpLCIuaW5mIj09PXQ/MT09PW4/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOk51bWJlci5ORUdBVElWRV9JTkZJTklUWToiLm5hbiI9PT10P05hTjp0LmluZGV4T2YoIjoiKT49MD8odC5zcGxpdCgiOiIpLmZvckVhY2goZnVuY3Rpb24oZSl7aS51bnNoaWZ0KHBhcnNlRmxvYXQoZSwxMCkpfSksdD0wLHI9MSxpLmZvckVhY2goZnVuY3Rpb24oZSl7dCs9ZSpyLHIqPTYwfSksbip0KTpuKnBhcnNlRmxvYXQodCwxMCl9ZnVuY3Rpb24gYShlLHQpe3ZhciBuO2lmKGlzTmFOKGUpKXN3aXRjaCh0KXtjYXNlImxvd2VyY2FzZSI6cmV0dXJuIi5uYW4iO2Nhc2UidXBwZXJjYXNlIjpyZXR1cm4iLk5BTiI7Y2FzZSJjYW1lbGNhc2UiOnJldHVybiIuTmFOIn1lbHNlIGlmKE51bWJlci5QT1NJVElWRV9JTkZJTklUWT09PWUpc3dpdGNoKHQpe2Nhc2UibG93ZXJjYXNlIjpyZXR1cm4iLmluZiI7Y2FzZSJ1cHBlcmNhc2UiOnJldHVybiIuSU5GIjtjYXNlImNhbWVsY2FzZSI6cmV0dXJuIi5JbmYifWVsc2UgaWYoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZPT09ZSlzd2l0Y2godCl7Y2FzZSJsb3dlcmNhc2UiOnJldHVybiItLmluZiI7Y2FzZSJ1cHBlcmNhc2UiOnJldHVybiItLklORiI7Y2FzZSJjYW1lbGNhc2UiOnJldHVybiItLkluZiJ9ZWxzZSBpZihzLmlzTmVnYXRpdmVaZXJvKGUpKXJldHVybiItMC4wIjtyZXR1cm4gbj1lLnRvU3RyaW5nKDEwKSxjLnRlc3Qobik/bi5yZXBsYWNlKCJlIiwiLmUiKTpufWZ1bmN0aW9uIG8oZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkmJihlJTEhPT0wfHxzLmlzTmVnYXRpdmVaZXJvKGUpKX12YXIgcz1lKCIuLi9jb21tb24iKSxsPWUoIi4uL3R5cGUiKSx1PW5ldyBSZWdFeHAoIl4oPzpbLStdPyg/OlswLTldWzAtOV9dKilcXC5bMC05X10qKD86W2VFXVstK11bMC05XSspP3xcXC5bMC05X10rKD86W2VFXVstK11bMC05XSspP3xbLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFwuWzAtOV9dKnxbLStdP1xcLig/OmluZnxJbmZ8SU5GKXxcXC4oPzpuYW58TmFOfE5BTikpJCIpLGM9L15bLStdP1swLTldK2UvO3QuZXhwb3J0cz1uZXcgbCgidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQiLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6cixjb25zdHJ1Y3Q6aSxwcmVkaWNhdGU6byxyZXByZXNlbnQ6YSxkZWZhdWx0U3R5bGU6Imxvd2VyY2FzZSJ9KX0seyIuLi9jb21tb24iOjIxLCIuLi90eXBlIjozMn1dLDM2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIDQ4PD1lJiZlPD01N3x8NjU8PWUmJmU8PTcwfHw5Nzw9ZSYmZTw9MTAyfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIDQ4PD1lJiZlPD01NX1mdW5jdGlvbiBhKGUpe3JldHVybiA0ODw9ZSYmZTw9NTd9ZnVuY3Rpb24gbyhlKXtpZihudWxsPT09ZSlyZXR1cm4hMTt2YXIgdCxuPWUubGVuZ3RoLG89MCxzPSExO2lmKCFuKXJldHVybiExO2lmKHQ9ZVtvXSwiLSIhPT10JiYiKyIhPT10fHwodD1lWysrb10pLCIwIj09PXQpe2lmKG8rMT09PW4pcmV0dXJuITA7aWYodD1lWysrb10sImIiPT09dCl7Zm9yKG8rKztvPG47bysrKWlmKHQ9ZVtvXSwiXyIhPT10KXtpZigiMCIhPT10JiYiMSIhPT10KXJldHVybiExO3M9ITB9cmV0dXJuIHN9aWYoIngiPT09dCl7Zm9yKG8rKztvPG47bysrKWlmKHQ9ZVtvXSwiXyIhPT10KXtpZighcihlLmNoYXJDb2RlQXQobykpKXJldHVybiExO3M9ITB9cmV0dXJuIHN9Zm9yKDtvPG47bysrKWlmKHQ9ZVtvXSwiXyIhPT10KXtpZighaShlLmNoYXJDb2RlQXQobykpKXJldHVybiExO3M9ITB9cmV0dXJuIHN9Zm9yKDtvPG47bysrKWlmKHQ9ZVtvXSwiXyIhPT10KXtpZigiOiI9PT10KWJyZWFrO2lmKCFhKGUuY2hhckNvZGVBdChvKSkpcmV0dXJuITE7cz0hMH1yZXR1cm4hIXMmJigiOiIhPT10fHwvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QoZS5zbGljZShvKSkpfWZ1bmN0aW9uIHMoZSl7dmFyIHQsbixyPWUsaT0xLGE9W107cmV0dXJuIHIuaW5kZXhPZigiXyIpIT09LTEmJihyPXIucmVwbGFjZSgvXy9nLCIiKSksdD1yWzBdLCItIiE9PXQmJiIrIiE9PXR8fCgiLSI9PT10JiYoaT0tMSkscj1yLnNsaWNlKDEpLHQ9clswXSksIjAiPT09cj8wOiIwIj09PXQ/ImIiPT09clsxXT9pKnBhcnNlSW50KHIuc2xpY2UoMiksMik6IngiPT09clsxXT9pKnBhcnNlSW50KHIsMTYpOmkqcGFyc2VJbnQociw4KTpyLmluZGV4T2YoIjoiKSE9PS0xPyhyLnNwbGl0KCI6IikuZm9yRWFjaChmdW5jdGlvbihlKXthLnVuc2hpZnQocGFyc2VJbnQoZSwxMCkpfSkscj0wLG49MSxhLmZvckVhY2goZnVuY3Rpb24oZSl7cis9ZSpuLG4qPTYwfSksaSpyKTppKnBhcnNlSW50KHIsMTApfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkmJmUlMT09PTAmJiF1LmlzTmVnYXRpdmVaZXJvKGUpfXZhciB1PWUoIi4uL2NvbW1vbiIpLGM9ZSgiLi4vdHlwZSIpO3QuZXhwb3J0cz1uZXcgYygidGFnOnlhbWwub3JnLDIwMDI6aW50Iix7a2luZDoic2NhbGFyIixyZXNvbHZlOm8sY29uc3RydWN0OnMscHJlZGljYXRlOmwscmVwcmVzZW50OntiaW5hcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIjBiIitlLnRvU3RyaW5nKDIpfSxvY3RhbDpmdW5jdGlvbihlKXtyZXR1cm4iMCIrZS50b1N0cmluZyg4KX0sZGVjaW1hbDpmdW5jdGlvbihlKXtyZXR1cm4gZS50b1N0cmluZygxMCl9LGhleGFkZWNpbWFsOmZ1bmN0aW9uKGUpe3JldHVybiIweCIrZS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX19LGRlZmF1bHRTdHlsZToiZGVjaW1hbCIsc3R5bGVBbGlhc2VzOntiaW5hcnk6WzIsImJpbiJdLG9jdGFsOls4LCJvY3QiXSxkZWNpbWFsOlsxMCwiZGVjIl0saGV4YWRlY2ltYWw6WzE2LCJoZXgiXX19KX0seyIuLi9jb21tb24iOjIxLCIuLi90eXBlIjozMn1dLDM3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWUpcmV0dXJuITE7dHJ5e3ZhciB0PSIoIitlKyIpIixuPXMucGFyc2UodCx7cmFuZ2U6ITB9KTtyZXR1cm4iUHJvZ3JhbSI9PT1uLnR5cGUmJjE9PT1uLmJvZHkubGVuZ3RoJiYiRXhwcmVzc2lvblN0YXRlbWVudCI9PT1uLmJvZHlbMF0udHlwZSYmIkZ1bmN0aW9uRXhwcmVzc2lvbiI9PT1uLmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlfWNhdGNoKHIpe3JldHVybiExfX1mdW5jdGlvbiBpKGUpe3ZhciB0LG49IigiK2UrIikiLHI9cy5wYXJzZShuLHtyYW5nZTohMH0pLGk9W107aWYoIlByb2dyYW0iIT09ci50eXBlfHwxIT09ci5ib2R5Lmxlbmd0aHx8IkV4cHJlc3Npb25TdGF0ZW1lbnQiIT09ci5ib2R5WzBdLnR5cGV8fCJGdW5jdGlvbkV4cHJlc3Npb24iIT09ci5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byByZXNvbHZlIGZ1bmN0aW9uIik7cmV0dXJuIHIuYm9keVswXS5leHByZXNzaW9uLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2kucHVzaChlLm5hbWUpfSksdD1yLmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnJhbmdlLG5ldyBGdW5jdGlvbihpLG4uc2xpY2UodFswXSsxLHRbMV0tMSkpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGUudG9TdHJpbmcoKX1mdW5jdGlvbiBvKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHM7dHJ5e3ZhciBsPWU7cz1sKCJlc3ByaW1hIil9Y2F0Y2godSl7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJihzPXdpbmRvdy5lc3ByaW1hKX12YXIgYz1lKCIuLi8uLi90eXBlIik7dC5leHBvcnRzPW5ldyBjKCJ0YWc6eWFtbC5vcmcsMjAwMjpqcy9mdW5jdGlvbiIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTpyLGNvbnN0cnVjdDppLHByZWRpY2F0ZTpvLHJlcHJlc2VudDphfSl9LHsiLi4vLi4vdHlwZSI6MzJ9XSwzODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lKXJldHVybiExO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4hMTt2YXIgdD1lLG49L1wvKFtnaW1dKikkLy5leGVjKGUpLHI9IiI7aWYoIi8iPT09dFswXSl7aWYobiYmKHI9blsxXSksci5sZW5ndGg+MylyZXR1cm4hMTtpZigiLyIhPT10W3QubGVuZ3RoLXIubGVuZ3RoLTFdKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZSxuPS9cLyhbZ2ltXSopJC8uZXhlYyhlKSxyPSIiO3JldHVybiIvIj09PXRbMF0mJihuJiYocj1uWzFdKSx0PXQuc2xpY2UoMSx0Lmxlbmd0aC1yLmxlbmd0aC0xKSksbmV3IFJlZ0V4cCh0LHIpfWZ1bmN0aW9uIGEoZSl7dmFyIHQ9Ii8iK2Uuc291cmNlKyIvIjtyZXR1cm4gZS5nbG9iYWwmJih0Kz0iZyIpLGUubXVsdGlsaW5lJiYodCs9Im0iKSxlLmlnbm9yZUNhc2UmJih0Kz0iaSIpLHR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgcz1lKCIuLi8uLi90eXBlIik7dC5leHBvcnRzPW5ldyBzKCJ0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHAiLHtraW5kOiJzY2FsYXIiLHJlc29sdmU6cixjb25zdHJ1Y3Q6aSxwcmVkaWNhdGU6byxyZXByZXNlbnQ6YX0pfSx7Ii4uLy4uL3R5cGUiOjMyfV0sMzk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiEwfWZ1bmN0aW9uIGkoKXt9ZnVuY3Rpb24gYSgpe3JldHVybiIifWZ1bmN0aW9uIG8oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlfXZhciBzPWUoIi4uLy4uL3R5cGUiKTt0LmV4cG9ydHM9bmV3IHMoInRhZzp5YW1sLm9yZywyMDAyOmpzL3VuZGVmaW5lZCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTpyLGNvbnN0cnVjdDppLHByZWRpY2F0ZTpvLHJlcHJlc2VudDphfSl9LHsiLi4vLi4vdHlwZSI6MzJ9XSw0MDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi90eXBlIik7dC5leHBvcnRzPW5ldyByKCJ0YWc6eWFtbC5vcmcsMjAwMjptYXAiLHtraW5kOiJtYXBwaW5nIixjb25zdHJ1Y3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lP2U6e319fSl9LHsiLi4vdHlwZSI6MzJ9XSw0MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiI8PCI9PT1lfHxudWxsPT09ZX12YXIgaT1lKCIuLi90eXBlIik7dC5leHBvcnRzPW5ldyBpKCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZSIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTpyfSl9LHsiLi4vdHlwZSI6MzJ9XSw0MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciB0PWUubGVuZ3RoO3JldHVybiAxPT09dCYmIn4iPT09ZXx8ND09PXQmJigibnVsbCI9PT1lfHwiTnVsbCI9PT1lfHwiTlVMTCI9PT1lKX1mdW5jdGlvbiBpKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbD09PWV9dmFyIG89ZSgiLi4vdHlwZSIpO3QuZXhwb3J0cz1uZXcgbygidGFnOnlhbWwub3JnLDIwMDI6bnVsbCIse2tpbmQ6InNjYWxhciIscmVzb2x2ZTpyLGNvbnN0cnVjdDppLHByZWRpY2F0ZTphLHJlcHJlc2VudDp7Y2Fub25pY2FsOmZ1bmN0aW9uKCl7cmV0dXJuIn4ifSxsb3dlcmNhc2U6ZnVuY3Rpb24oKXtyZXR1cm4ibnVsbCJ9LHVwcGVyY2FzZTpmdW5jdGlvbigpe3JldHVybiJOVUxMIn0sY2FtZWxjYXNlOmZ1bmN0aW9uKCl7cmV0dXJuIk51bGwifX0sZGVmYXVsdFN0eWxlOiJsb3dlcmNhc2UifSl9LHsiLi4vdHlwZSI6MzJ9XSw0MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciB0LG4scixpLGEsbD1bXSx1PWU7Zm9yKHQ9MCxuPXUubGVuZ3RoO3Q8bjt0Kz0xKXtpZihyPXVbdF0sYT0hMSwiW29iamVjdCBPYmplY3RdIiE9PXMuY2FsbChyKSlyZXR1cm4hMTtmb3IoaSBpbiByKWlmKG8uY2FsbChyLGkpKXtpZihhKXJldHVybiExO2E9ITB9aWYoIWEpcmV0dXJuITE7aWYobC5pbmRleE9mKGkpIT09LTEpcmV0dXJuITE7bC5wdXNoKGkpfXJldHVybiEwfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG51bGwhPT1lP2U6W119dmFyIGE9ZSgiLi4vdHlwZSIpLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dC5leHBvcnRzPW5ldyBhKCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwIix7a2luZDoic2VxdWVuY2UiLHJlc29sdmU6cixjb25zdHJ1Y3Q6aX0pfSx7Ii4uL3R5cGUiOjMyfV0sNDQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgdCxuLHIsaSxhLHM9ZTtmb3IoYT1uZXcgQXJyYXkocy5sZW5ndGgpLHQ9MCxuPXMubGVuZ3RoO3Q8bjt0Kz0xKXtpZihyPXNbdF0sIltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwocikpcmV0dXJuITE7aWYoaT1PYmplY3Qua2V5cyhyKSwxIT09aS5sZW5ndGgpcmV0dXJuITE7YVt0XT1baVswXSxyW2lbMF1dXX1yZXR1cm4hMH1mdW5jdGlvbiBpKGUpe2lmKG51bGw9PT1lKXJldHVybltdO3ZhciB0LG4scixpLGEsbz1lO2ZvcihhPW5ldyBBcnJheShvLmxlbmd0aCksdD0wLG49by5sZW5ndGg7dDxuO3QrPTEpcj1vW3RdLGk9T2JqZWN0LmtleXMociksYVt0XT1baVswXSxyW2lbMF1dXTtyZXR1cm4gYX12YXIgYT1lKCIuLi90eXBlIiksbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3QuZXhwb3J0cz1uZXcgYSgidGFnOnlhbWwub3JnLDIwMDI6cGFpcnMiLHtraW5kOiJzZXF1ZW5jZSIscmVzb2x2ZTpyLGNvbnN0cnVjdDppfSl9LHsiLi4vdHlwZSI6MzJ9XSw0NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi90eXBlIik7dC5leHBvcnRzPW5ldyByKCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXEiLHtraW5kOiJzZXF1ZW5jZSIsY29uc3RydWN0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZT9lOltdfX0pfSx7Ii4uL3R5cGUiOjMyfV0sNDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgdCxuPWU7Zm9yKHQgaW4gbilpZihvLmNhbGwobix0KSYmbnVsbCE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gaShlKXtyZXR1cm4gbnVsbCE9PWU/ZTp7fX12YXIgYT1lKCIuLi90eXBlIiksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1uZXcgYSgidGFnOnlhbWwub3JnLDIwMDI6c2V0Iix7a2luZDoibWFwcGluZyIscmVzb2x2ZTpyLGNvbnN0cnVjdDppfSl9LHsiLi4vdHlwZSI6MzJ9XSw0NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKCIuLi90eXBlIik7dC5leHBvcnRzPW5ldyByKCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHIiLHtraW5kOiJzY2FsYXIiLGNvbnN0cnVjdDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWU/ZToiIn19KX0seyIuLi90eXBlIjozMn1dLDQ4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGwhPT1lJiYobnVsbCE9PXMuZXhlYyhlKXx8bnVsbCE9PWwuZXhlYyhlKSl9ZnVuY3Rpb24gaShlKXt2YXIgdCxuLHIsaSxhLG8sdSxjLHAsaCxmPTAsZD1udWxsO2lmKHQ9cy5leGVjKGUpLG51bGw9PT10JiYodD1sLmV4ZWMoZSkpLG51bGw9PT10KXRocm93IG5ldyBFcnJvcigiRGF0ZSByZXNvbHZlIGVycm9yIik7aWYobj0rdFsxXSxyPSt0WzJdLTEsaT0rdFszXSwhdFs0XSlyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMobixyLGkpKTtpZihhPSt0WzRdLG89K3RbNV0sdT0rdFs2XSx0WzddKXtmb3IoZj10WzddLnNsaWNlKDAsMyk7Zi5sZW5ndGg8MzspZis9IjAiO2Y9K2Z9cmV0dXJuIHRbOV0mJihjPSt0WzEwXSxwPSsodFsxMV18fDApLGQ9NmU0Kig2MCpjK3ApLCItIj09PXRbOV0mJihkPS1kKSksaD1uZXcgRGF0ZShEYXRlLlVUQyhuLHIsaSxhLG8sdSxmKSksZCYmaC5zZXRUaW1lKGguZ2V0VGltZSgpLWQpLGh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZS50b0lTT1N0cmluZygpfXZhciBvPWUoIi4uL3R5cGUiKSxzPW5ldyBSZWdFeHAoIl4oWzAtOV1bMC05XVswLTldWzAtOV0pLShbMC05XVswLTldKS0oWzAtOV1bMC05XSkkIiksbD1uZXcgUmVnRXhwKCJeKFswLTldWzAtOV1bMC05XVswLTldKS0oWzAtOV1bMC05XT8pLShbMC05XVswLTldPykoPzpbVHRdfFsgXFx0XSspKFswLTldWzAtOV0/KTooWzAtOV1bMC05XSk6KFswLTldWzAtOV0pKD86XFwuKFswLTldKikpPyg/OlsgXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pKD86OihbMC05XVswLTldKSk/KSk/JCIpO3QuZXhwb3J0cz1uZXcgbygidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wIix7a2luZDoic2NhbGFyIixyZXNvbHZlOnIsY29uc3RydWN0OmksaW5zdGFuY2VPZjpEYXRlLHJlcHJlc2VudDphfSl9LHsiLi4vdHlwZSI6MzJ9XSw0OTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPWU/ZS5sZW5ndGg6MDtpZighcilyZXR1cm4tMTtpZigibnVtYmVyIj09dHlwZW9mIG4pbj1uPDA/byhyK24sMCk6bjtlbHNlIGlmKG4pe3ZhciBzPWEoZSx0KTtyZXR1cm4gczxyJiYodD09PXQ/dD09PWVbc106ZVtzXSE9PWVbc10pP3M6LTF9cmV0dXJuIGkoZSx0LG58fDApfXZhciBpPWUoIi4uL2ludGVybmFsL2Jhc2VJbmRleE9mIiksYT1lKCIuLi9pbnRlcm5hbC9iaW5hcnlJbmRleCIpLG89TWF0aC5tYXg7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvYmFzZUluZGV4T2YiOjc4LCIuLi9pbnRlcm5hbC9iaW5hcnlJbmRleCI6OTJ9XSw1MDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZT9lLmxlbmd0aDowO3JldHVybiB0P2VbdC0xXTp2b2lkIDB9dC5leHBvcnRzPXJ9LHt9XSw1MTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYobChlKSYmIXMoZSkmJiEoZSBpbnN0YW5jZW9mIGkpKXtpZihlIGluc3RhbmNlb2YgYSlyZXR1cm4gZTtpZihwLmNhbGwoZSwiX19jaGFpbl9fIikmJnAuY2FsbChlLCJfX3dyYXBwZWRfXyIpKXJldHVybiB1KGUpfXJldHVybiBuZXcgYShlKX12YXIgaT1lKCIuLi9pbnRlcm5hbC9MYXp5V3JhcHBlciIpLGE9ZSgiLi4vaW50ZXJuYWwvTG9kYXNoV3JhcHBlciIpLG89ZSgiLi4vaW50ZXJuYWwvYmFzZUxvZGFzaCIpLHM9ZSgiLi4vbGFuZy9pc0FycmF5IiksbD1lKCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiKSx1PWUoIi4uL2ludGVybmFsL3dyYXBwZXJDbG9uZSIpLGM9T2JqZWN0LnByb3RvdHlwZSxwPWMuaGFzT3duUHJvcGVydHk7ci5wcm90b3R5cGU9by5wcm90b3R5cGUsdC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvTGF6eVdyYXBwZXIiOjYwLCIuLi9pbnRlcm5hbC9Mb2Rhc2hXcmFwcGVyIjo2MSwiLi4vaW50ZXJuYWwvYmFzZUxvZGFzaCI6ODIsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2LCIuLi9pbnRlcm5hbC93cmFwcGVyQ2xvbmUiOjEzNywiLi4vbGFuZy9pc0FycmF5IjoxNDB9XSw1MjpbZnVuY3Rpb24oZSx0LG4pe3QuZXhwb3J0cz1lKCIuL2ZvckVhY2giKX0seyIuL2ZvckVhY2giOjU0fV0sNTM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9pbnRlcm5hbC9iYXNlRWFjaCIpLGk9ZSgiLi4vaW50ZXJuYWwvY3JlYXRlRmluZCIpLGE9aShyKTt0LmV4cG9ydHM9YX0seyIuLi9pbnRlcm5hbC9iYXNlRWFjaCI6NzEsIi4uL2ludGVybmFsL2NyZWF0ZUZpbmQiOjEwMn1dLDU0OltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vaW50ZXJuYWwvYXJyYXlFYWNoIiksaT1lKCIuLi9pbnRlcm5hbC9iYXNlRWFjaCIpLGE9ZSgiLi4vaW50ZXJuYWwvY3JlYXRlRm9yRWFjaCIpLG89YShyLGkpO3QuZXhwb3J0cz1vfSx7Ii4uL2ludGVybmFsL2FycmF5RWFjaCI6NjMsIi4uL2ludGVybmFsL2Jhc2VFYWNoIjo3MSwiLi4vaW50ZXJuYWwvY3JlYXRlRm9yRWFjaCI6MTAzfV0sNTU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuLHIpe3ZhciBoPWU/YShlKTowO3JldHVybiBsKGgpfHwoZT1jKGUpLGg9ZS5sZW5ndGgpLG49Im51bWJlciIhPXR5cGVvZiBufHxyJiZzKHQsbixyKT8wOm48MD9wKGgrbiwwKTpufHwwLCJzdHJpbmciPT10eXBlb2YgZXx8IW8oZSkmJnUoZSk/bjw9aCYmZS5pbmRleE9mKHQsbik+LTE6ISFoJiZpKGUsdCxuKT4tMX12YXIgaT1lKCIuLi9pbnRlcm5hbC9iYXNlSW5kZXhPZiIpLGE9ZSgiLi4vaW50ZXJuYWwvZ2V0TGVuZ3RoIiksbz1lKCIuLi9sYW5nL2lzQXJyYXkiKSxzPWUoIi4uL2ludGVybmFsL2lzSXRlcmF0ZWVDYWxsIiksbD1lKCIuLi9pbnRlcm5hbC9pc0xlbmd0aCIpLHU9ZSgiLi4vbGFuZy9pc1N0cmluZyIpLGM9ZSgiLi4vb2JqZWN0L3ZhbHVlcyIpLHA9TWF0aC5tYXg7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvYmFzZUluZGV4T2YiOjc4LCIuLi9pbnRlcm5hbC9nZXRMZW5ndGgiOjExMiwiLi4vaW50ZXJuYWwvaXNJdGVyYXRlZUNhbGwiOjEyMiwiLi4vaW50ZXJuYWwvaXNMZW5ndGgiOjEyNSwiLi4vbGFuZy9pc0FycmF5IjoxNDAsIi4uL2xhbmcvaXNTdHJpbmciOjE0NiwiLi4vb2JqZWN0L3ZhbHVlcyI6MTUyfV0sNTY6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1zKGUpP2k6bztyZXR1cm4gdD1hKHQsbiwzKSxyKGUsdCl9dmFyIGk9ZSgiLi4vaW50ZXJuYWwvYXJyYXlNYXAiKSxhPWUoIi4uL2ludGVybmFsL2Jhc2VDYWxsYmFjayIpLG89ZSgiLi4vaW50ZXJuYWwvYmFzZU1hcCIpLHM9ZSgiLi4vbGFuZy9pc0FycmF5Iik7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvYXJyYXlNYXAiOjY0LCIuLi9pbnRlcm5hbC9iYXNlQ2FsbGJhY2siOjY3LCIuLi9pbnRlcm5hbC9iYXNlTWFwIjo4MywiLi4vbGFuZy9pc0FycmF5IjoxNDB9XSw1NzpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2ludGVybmFsL2dldE5hdGl2ZSIpLGk9cihEYXRlLCJub3ciKSxhPWl8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3QuZXhwb3J0cz1hfSx7Ii4uL2ludGVybmFsL2dldE5hdGl2ZSI6MTE0fV0sNTg6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuLi9pbnRlcm5hbC9jcmVhdGVXcmFwcGVyIiksaT1lKCIuLi9pbnRlcm5hbC9yZXBsYWNlSG9sZGVycyIpLGE9ZSgiLi9yZXN0UGFyYW0iKSxvPTEscz0zMixsPWEoZnVuY3Rpb24oZSx0LG4pe3ZhciBhPW87aWYobi5sZW5ndGgpe3ZhciB1PWkobixsLnBsYWNlaG9sZGVyKTthfD1zfXJldHVybiByKGUsYSx0LG4sdSl9KTtsLnBsYWNlaG9sZGVyPXt9LHQuZXhwb3J0cz1sfSx7Ii4uL2ludGVybmFsL2NyZWF0ZVdyYXBwZXIiOjEwNiwiLi4vaW50ZXJuYWwvcmVwbGFjZUhvbGRlcnMiOjEzMiwiLi9yZXN0UGFyYW0iOjU5fV0sNTk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTtyZXR1cm4gdD1hKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTordHx8MCwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMscj0tMSxpPWEobi5sZW5ndGgtdCwwKSxvPUFycmF5KGkpOysrcjxpOylvW3JdPW5bdCtyXTtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiBlLmNhbGwodGhpcyxvKTtjYXNlIDE6cmV0dXJuIGUuY2FsbCh0aGlzLG5bMF0sbyk7Y2FzZSAyOnJldHVybiBlLmNhbGwodGhpcyxuWzBdLG5bMV0sbyl9dmFyIHM9QXJyYXkodCsxKTtmb3Iocj0tMTsrK3I8dDspc1tyXT1uW3JdO3JldHVybiBzW3RdPW8sZS5hcHBseSh0aGlzLHMpfX12YXIgaT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsYT1NYXRoLm1heDt0LmV4cG9ydHM9cn0se31dLDYwOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXt0aGlzLl9fd3JhcHBlZF9fPWUsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fZGlyX189MSx0aGlzLl9fZmlsdGVyZWRfXz0hMSx0aGlzLl9faXRlcmF0ZWVzX189W10sdGhpcy5fX3Rha2VDb3VudF9fPW8sdGhpcy5fX3ZpZXdzX189W119dmFyIGk9ZSgiLi9iYXNlQ3JlYXRlIiksYT1lKCIuL2Jhc2VMb2Rhc2giKSxvPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyLnByb3RvdHlwZT1pKGEucHJvdG90eXBlKSxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHQuZXhwb3J0cz1yfSx7Ii4vYmFzZUNyZWF0ZSI6NzAsIi4vYmFzZUxvZGFzaCI6ODJ9XSw2MTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPW58fFtdLHRoaXMuX19jaGFpbl9fPSEhdH12YXIgaT1lKCIuL2Jhc2VDcmVhdGUiKSxhPWUoIi4vYmFzZUxvZGFzaCIpO3IucHJvdG90eXBlPWkoYS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXIsdC5leHBvcnRzPXJ9LHsiLi9iYXNlQ3JlYXRlIjo3MCwiLi9iYXNlTG9kYXNoIjo4Mn1dLDYyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPS0xLHI9ZS5sZW5ndGg7Zm9yKHR8fCh0PUFycmF5KHIpKTsrK248cjspdFtuXT1lW25dO3JldHVybiB0fXQuZXhwb3J0cz1yfSx7fV0sNjM6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPS0xLHI9ZS5sZW5ndGg7KytuPHImJnQoZVtuXSxuLGUpIT09ITE7KTtyZXR1cm4gZX10LmV4cG9ydHM9cn0se31dLDY0OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoLGk9QXJyYXkocik7KytuPHI7KWlbbl09dChlW25dLG4sZSk7cmV0dXJuIGl9dC5leHBvcnRzPXJ9LHt9XSw2NTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49LTEscj1lLmxlbmd0aDsrK248cjspaWYodChlW25dLG4sZSkpcmV0dXJuITA7cmV0dXJuITF9dC5leHBvcnRzPXJ9LHt9XSw2NjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dD9lOmkodCxhKHQpLGUpfXZhciBpPWUoIi4vYmFzZUNvcHkiKSxhPWUoIi4uL29iamVjdC9rZXlzIik7dC5leHBvcnRzPXJ9LHsiLi4vb2JqZWN0L2tleXMiOjE0OSwiLi9iYXNlQ29weSI6Njl9XSw2NzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXR5cGVvZiBlO3JldHVybiJmdW5jdGlvbiI9PXI/dm9pZCAwPT09dD9lOm8oZSx0LG4pOm51bGw9PWU/czoib2JqZWN0Ij09cj9pKGUpOnZvaWQgMD09PXQ/bChlKTphKGUsdCl9dmFyIGk9ZSgiLi9iYXNlTWF0Y2hlcyIpLGE9ZSgiLi9iYXNlTWF0Y2hlc1Byb3BlcnR5Iiksbz1lKCIuL2JpbmRDYWxsYmFjayIpLHM9ZSgiLi4vdXRpbGl0eS9pZGVudGl0eSIpLGw9ZSgiLi4vdXRpbGl0eS9wcm9wZXJ0eSIpO3QuZXhwb3J0cz1yfSx7Ii4uL3V0aWxpdHkvaWRlbnRpdHkiOjE1NCwiLi4vdXRpbGl0eS9wcm9wZXJ0eSI6MTU2LCIuL2Jhc2VNYXRjaGVzIjo4NCwiLi9iYXNlTWF0Y2hlc1Byb3BlcnR5Ijo4NSwiLi9iaW5kQ2FsbGJhY2siOjk0fV0sNjg6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuLG0sZyx5LHYpe3ZhciB3O2lmKG4mJih3PWc/bihlLG0sZyk6bihlKSksdm9pZCAwIT09dylyZXR1cm4gdztpZighZihlKSlyZXR1cm4gZTt2YXIgXz1wKGUpO2lmKF8pe2lmKHc9bChlKSwhdClyZXR1cm4gaShlLHcpfWVsc2V7dmFyIEE9Qi5jYWxsKGUpLFM9QT09YjtpZihBIT14JiZBIT1kJiYoIVN8fGcpKXJldHVybiBQW0FdP3UoZSxBLHQpOmc/ZTp7fTtpZihoKGUpKXJldHVybiBnP2U6e307aWYodz1jKFM/e306ZSksIXQpcmV0dXJuIG8odyxlKX15fHwoeT1bXSksdnx8KHY9W10pO2Zvcih2YXIgaj15Lmxlbmd0aDtqLS07KWlmKHlbal09PWUpcmV0dXJuIHZbal07cmV0dXJuIHkucHVzaChlKSx2LnB1c2godyksKF8/YTpzKShlLGZ1bmN0aW9uKGksYSl7d1thXT1yKGksdCxuLGEsZSx5LHYpfSksd312YXIgaT1lKCIuL2FycmF5Q29weSIpLGE9ZSgiLi9hcnJheUVhY2giKSxvPWUoIi4vYmFzZUFzc2lnbiIpLHM9ZSgiLi9iYXNlRm9yT3duIiksbD1lKCIuL2luaXRDbG9uZUFycmF5IiksdT1lKCIuL2luaXRDbG9uZUJ5VGFnIiksYz1lKCIuL2luaXRDbG9uZU9iamVjdCIpLHA9ZSgiLi4vbGFuZy9pc0FycmF5IiksaD1lKCIuL2lzSG9zdE9iamVjdCIpLGY9ZSgiLi4vbGFuZy9pc09iamVjdCIpLGQ9IltvYmplY3QgQXJndW1lbnRzXSIsbT0iW29iamVjdCBBcnJheV0iLGc9IltvYmplY3QgQm9vbGVhbl0iLHk9IltvYmplY3QgRGF0ZV0iLHY9IltvYmplY3QgRXJyb3JdIixiPSJbb2JqZWN0IEZ1bmN0aW9uXSIsdz0iW29iamVjdCBNYXBdIixfPSJbb2JqZWN0IE51bWJlcl0iLHg9IltvYmplY3QgT2JqZWN0XSIsQT0iW29iamVjdCBSZWdFeHBdIixTPSJbb2JqZWN0IFNldF0iLGo9IltvYmplY3QgU3RyaW5nXSIsRT0iW29iamVjdCBXZWFrTWFwXSIsTz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLGs9IltvYmplY3QgRmxvYXQzMkFycmF5XSIsVD0iW29iamVjdCBGbG9hdDY0QXJyYXldIixDPSJbb2JqZWN0IEludDhBcnJheV0iLEk9IltvYmplY3QgSW50MTZBcnJheV0iLEQ9IltvYmplY3QgSW50MzJBcnJheV0iLEw9IltvYmplY3QgVWludDhBcnJheV0iLE09IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixSPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsVT0iW29iamVjdCBVaW50MzJBcnJheV0iLFA9e307UFtkXT1QW21dPVBbT109UFtnXT1QW3ldPVBba109UFtUXT1QW0NdPVBbSV09UFtEXT1QW19dPVBbeF09UFtBXT1QW2pdPVBbTF09UFtNXT1QW1JdPVBbVV09ITAsUFt2XT1QW2JdPVBbd109UFtTXT1QW0VdPSExO3ZhciBxPU9iamVjdC5wcm90b3R5cGUsQj1xLnRvU3RyaW5nO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4vYXJyYXlDb3B5Ijo2MiwiLi9hcnJheUVhY2giOjYzLCIuL2Jhc2VBc3NpZ24iOjY2LCIuL2Jhc2VGb3JPd24iOjc2LCIuL2luaXRDbG9uZUFycmF5IjoxMTYsIi4vaW5pdENsb25lQnlUYWciOjExNywiLi9pbml0Q2xvbmVPYmplY3QiOjExOCwiLi9pc0hvc3RPYmplY3QiOjEyMH1dLDY5OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7bnx8KG49e30pO2Zvcih2YXIgcj0tMSxpPXQubGVuZ3RoOysrcjxpOyl7dmFyIGE9dFtyXTtuW2FdPWVbYV19cmV0dXJuIG59dC5leHBvcnRzPXJ9LHt9XSw3MDpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2xhbmcvaXNPYmplY3QiKSxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZnVuY3Rpb24odCl7aWYocih0KSl7ZS5wcm90b3R5cGU9dDt2YXIgbj1uZXcgZTtlLnByb3RvdHlwZT12b2lkIDB9cmV0dXJuIG58fHt9fX0oKTt0LmV4cG9ydHM9aX0seyIuLi9sYW5nL2lzT2JqZWN0IjoxNDR9XSw3MTpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vYmFzZUZvck93biIpLGk9ZSgiLi9jcmVhdGVCYXNlRWFjaCIpLGE9aShyKTt0LmV4cG9ydHM9YX0seyIuL2Jhc2VGb3JPd24iOjc2LCIuL2NyZWF0ZUJhc2VFYWNoIjo5OH1dLDcyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgaTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixhKXtpZih0KGUsbixhKSlyZXR1cm4gaT1yP246ZSwhMX0pLGl9dC5leHBvcnRzPXJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe2Zvcih2YXIgcj1lLmxlbmd0aCxpPW4/cjotMTtuP2ktLTorK2k8cjspaWYodChlW2ldLGksZSkpcmV0dXJuIGk7cmV0dXJuLTF9dC5leHBvcnRzPXJ9LHt9XSw3NDpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vY3JlYXRlQmFzZUZvciIpLGk9cigpO3QuZXhwb3J0cz1pfSx7Ii4vY3JlYXRlQmFzZUZvciI6OTl9XSw3NTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gaShlLHQsYSl9dmFyIGk9ZSgiLi9iYXNlRm9yIiksYT1lKCIuLi9vYmplY3Qva2V5c0luIik7dC5leHBvcnRzPXJ9LHsiLi4vb2JqZWN0L2tleXNJbiI6MTUwLCIuL2Jhc2VGb3IiOjc0fV0sNzY6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGkoZSx0LGEpfXZhciBpPWUoIi4vYmFzZUZvciIpLGE9ZSgiLi4vb2JqZWN0L2tleXMiKTt0LmV4cG9ydHM9cn0seyIuLi9vYmplY3Qva2V5cyI6MTQ5LCIuL2Jhc2VGb3IiOjc0fV0sNzc6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXtpZihudWxsIT1lKXtlPWkoZSksdm9pZCAwIT09biYmbiBpbiBlJiYodD1bbl0pO2Zvcih2YXIgcj0wLGE9dC5sZW5ndGg7bnVsbCE9ZSYmcjxhOyllPWkoZSlbdFtyKytdXTtyZXR1cm4gciYmcj09YT9lOnZvaWQgMH19dmFyIGk9ZSgiLi90b09iamVjdCIpO3QuZXhwb3J0cz1yfSx7Ii4vdG9PYmplY3QiOjEzNX1dLDc4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7aWYodCE9PXQpcmV0dXJuIGkoZSxuKTtmb3IodmFyIHI9bi0xLGE9ZS5sZW5ndGg7KytyPGE7KWlmKGVbcl09PT10KXJldHVybiByO3JldHVybi0xfXZhciBpPWUoIi4vaW5kZXhPZk5hTiIpO3QuZXhwb3J0cz1yfSx7Ii4vaW5kZXhPZk5hTiI6MTE1fV0sNzk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuLHMsbCx1KXtyZXR1cm4gZT09PXR8fChudWxsPT1lfHxudWxsPT10fHwhYShlKSYmIW8odCk/ZSE9PWUmJnQhPT10OmkoZSx0LHIsbixzLGwsdSkpfXZhciBpPWUoIi4vYmFzZUlzRXF1YWxEZWVwIiksYT1lKCIuLi9sYW5nL2lzT2JqZWN0Iiksbz1lKCIuL2lzT2JqZWN0TGlrZSIpO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi9iYXNlSXNFcXVhbERlZXAiOjgwLCIuL2lzT2JqZWN0TGlrZSI6MTI2fV0sODA6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuLHIsZixnLHkpe3ZhciB2PXMoZSksYj1zKHQpLHc9cCxfPXA7dnx8KHc9bS5jYWxsKGUpLHc9PWM/dz1oOnchPWgmJih2PXUoZSkpKSxifHwoXz1tLmNhbGwodCksXz09Yz9fPWg6XyE9aCYmKGI9dSh0KSkpO3ZhciB4PXc9PWgmJiFsKGUpLEE9Xz09aCYmIWwodCksUz13PT1fO2lmKFMmJiF2JiYheClyZXR1cm4gYShlLHQsdyk7aWYoIWYpe3ZhciBqPXgmJmQuY2FsbChlLCJfX3dyYXBwZWRfXyIpLEU9QSYmZC5jYWxsKHQsIl9fd3JhcHBlZF9fIik7aWYoanx8RSlyZXR1cm4gbihqP2UudmFsdWUoKTplLEU/dC52YWx1ZSgpOnQscixmLGcseSl9aWYoIVMpcmV0dXJuITE7Z3x8KGc9W10pLHl8fCh5PVtdKTtmb3IodmFyIE89Zy5sZW5ndGg7Ty0tOylpZihnW09dPT1lKXJldHVybiB5W09dPT10O2cucHVzaChlKSx5LnB1c2godCk7dmFyIGs9KHY/aTpvKShlLHQsbixyLGYsZyx5KTtyZXR1cm4gZy5wb3AoKSx5LnBvcCgpLGt9dmFyIGk9ZSgiLi9lcXVhbEFycmF5cyIpLGE9ZSgiLi9lcXVhbEJ5VGFnIiksbz1lKCIuL2VxdWFsT2JqZWN0cyIpLHM9ZSgiLi4vbGFuZy9pc0FycmF5IiksbD1lKCIuL2lzSG9zdE9iamVjdCIpLHU9ZSgiLi4vbGFuZy9pc1R5cGVkQXJyYXkiKSxjPSJbb2JqZWN0IEFyZ3VtZW50c10iLHA9IltvYmplY3QgQXJyYXldIixoPSJbb2JqZWN0IE9iamVjdF0iLGY9T2JqZWN0LnByb3RvdHlwZSxkPWYuaGFzT3duUHJvcGVydHksbT1mLnRvU3RyaW5nO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuLi9sYW5nL2lzVHlwZWRBcnJheSI6MTQ3LCIuL2VxdWFsQXJyYXlzIjoxMDcsIi4vZXF1YWxCeVRhZyI6MTA4LCIuL2VxdWFsT2JqZWN0cyI6MTA5LCIuL2lzSG9zdE9iamVjdCI6MTIwfV0sODE6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj10Lmxlbmd0aCxvPXIscz0hbjtpZihudWxsPT1lKXJldHVybiFvO2ZvcihlPWEoZSk7ci0tOyl7dmFyIGw9dFtyXTtpZihzJiZsWzJdP2xbMV0hPT1lW2xbMF1dOiEobFswXWluIGUpKXJldHVybiExfWZvcig7KytyPG87KXtsPXRbcl07dmFyIHU9bFswXSxjPWVbdV0scD1sWzFdO2lmKHMmJmxbMl0pe2lmKHZvaWQgMD09PWMmJiEodSBpbiBlKSlyZXR1cm4hMX1lbHNle3ZhciBoPW4/bihjLHAsdSk6dm9pZCAwO2lmKCEodm9pZCAwPT09aD9pKHAsYyxuLCEwKTpoKSlyZXR1cm4hMX19cmV0dXJuITB9dmFyIGk9ZSgiLi9iYXNlSXNFcXVhbCIpLGE9ZSgiLi90b09iamVjdCIpO3QuZXhwb3J0cz1yfSx7Ii4vYmFzZUlzRXF1YWwiOjc5LCIuL3RvT2JqZWN0IjoxMzV9XSw4MjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoKXt9dC5leHBvcnRzPXJ9LHt9XSw4MzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj0tMSxyPWEoZSk/QXJyYXkoZS5sZW5ndGgpOltdO3JldHVybiBpKGUsZnVuY3Rpb24oZSxpLGEpe3JbKytuXT10KGUsaSxhKX0pLHJ9dmFyIGk9ZSgiLi9iYXNlRWFjaCIpLGE9ZSgiLi9pc0FycmF5TGlrZSIpO3QuZXhwb3J0cz1yfSx7Ii4vYmFzZUVhY2giOjcxLCIuL2lzQXJyYXlMaWtlIjoxMTl9XSw4NDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ9YShlKTtpZigxPT10Lmxlbmd0aCYmdFswXVsyXSl7dmFyIG49dFswXVswXSxyPXRbMF1bMV07cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYoZT1vKGUpLGVbbl09PT1yJiYodm9pZCAwIT09cnx8biBpbiBlKSl9fXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gaShlLHQpfX12YXIgaT1lKCIuL2Jhc2VJc01hdGNoIiksYT1lKCIuL2dldE1hdGNoRGF0YSIpLG89ZSgiLi90b09iamVjdCIpO3QuZXhwb3J0cz1yfSx7Ii4vYmFzZUlzTWF0Y2giOjgxLCIuL2dldE1hdGNoRGF0YSI6MTEzLCIuL3RvT2JqZWN0IjoxMzV9XSw4NTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1zKGUpLHI9bChlKSYmdSh0KSxmPWUrIiI7cmV0dXJuIGU9aChlKSxmdW5jdGlvbihzKXtpZihudWxsPT1zKXJldHVybiExO3ZhciBsPWY7aWYocz1wKHMpLChufHwhcikmJiEobCBpbiBzKSl7aWYocz0xPT1lLmxlbmd0aD9zOmkocyxvKGUsMCwtMSkpLG51bGw9PXMpcmV0dXJuITE7bD1jKGUpLHM9cChzKX1yZXR1cm4gc1tsXT09PXQ/dm9pZCAwIT09dHx8bCBpbiBzOmEodCxzW2xdLHZvaWQgMCwhMCl9fXZhciBpPWUoIi4vYmFzZUdldCIpLGE9ZSgiLi9iYXNlSXNFcXVhbCIpLG89ZSgiLi9iYXNlU2xpY2UiKSxzPWUoIi4uL2xhbmcvaXNBcnJheSIpLGw9ZSgiLi9pc0tleSIpLHU9ZSgiLi9pc1N0cmljdENvbXBhcmFibGUiKSxjPWUoIi4uL2FycmF5L2xhc3QiKSxwPWUoIi4vdG9PYmplY3QiKSxoPWUoIi4vdG9QYXRoIik7dC5leHBvcnRzPXJ9LHsiLi4vYXJyYXkvbGFzdCI6NTAsIi4uL2xhbmcvaXNBcnJheSI6MTQwLCIuL2Jhc2VHZXQiOjc3LCIuL2Jhc2VJc0VxdWFsIjo3OSwiLi9iYXNlU2xpY2UiOjg5LCIuL2lzS2V5IjoxMjMsIi4vaXNTdHJpY3RDb21wYXJhYmxlIjoxMjcsIi4vdG9PYmplY3QiOjEzNSwiLi90b1BhdGgiOjEzNn1dLDg2OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOmkodClbZV19fXZhciBpPWUoIi4vdG9PYmplY3QiKTt0LmV4cG9ydHM9cn0seyIuL3RvT2JqZWN0IjoxMzV9XSw4NzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZSsiIjtyZXR1cm4gZT1hKGUpLGZ1bmN0aW9uKG4pe3JldHVybiBpKG4sZSx0KX19dmFyIGk9ZSgiLi9iYXNlR2V0IiksYT1lKCIuL3RvUGF0aCIpO3QuZXhwb3J0cz1yfSx7Ii4vYmFzZUdldCI6NzcsIi4vdG9QYXRoIjoxMzZ9XSw4ODpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL3V0aWxpdHkvaWRlbnRpdHkiKSxpPWUoIi4vbWV0YU1hcCIpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpLnNldChlLHQpLGV9OnI7dC5leHBvcnRzPWF9LHsiLi4vdXRpbGl0eS9pZGVudGl0eSI6MTU0LCIuL21ldGFNYXAiOjEyOX1dLDg5OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9LTEsaT1lLmxlbmd0aDt0PW51bGw9PXQ/MDordHx8MCx0PDAmJih0PS10Pmk/MDppK3QpLG49dm9pZCAwPT09bnx8bj5pP2k6K258fDAsbjwwJiYobis9aSksaT10Pm4/MDpuLXQ+Pj4wLHQ+Pj49MDtmb3IodmFyIGE9QXJyYXkoaSk7KytyPGk7KWFbcl09ZVtyK3RdO3JldHVybiBhfXQuZXhwb3J0cz1yfSx7fV0sOTA6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9dC5leHBvcnRzPXJ9LHt9XSw5MTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49LTEscj10Lmxlbmd0aCxpPUFycmF5KHIpOysrbjxyOylpW25dPWVbdFtuXV07cmV0dXJuIGl9dC5leHBvcnRzPXJ9LHt9XSw5MjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPTAsbz1lP2UubGVuZ3RoOnI7aWYoIm51bWJlciI9PXR5cGVvZiB0JiZ0PT09dCYmbzw9cyl7Zm9yKDtyPG87KXt2YXIgbD1yK28+Pj4xLHU9ZVtsXTsobj91PD10OnU8dCkmJm51bGwhPT11P3I9bCsxOm89bH1yZXR1cm4gb31yZXR1cm4gaShlLHQsYSxuKX12YXIgaT1lKCIuL2JpbmFyeUluZGV4QnkiKSxhPWUoIi4uL3V0aWxpdHkvaWRlbnRpdHkiKSxvPTQyOTQ5NjcyOTUscz1vPj4+MTt0LmV4cG9ydHM9cn0seyIuLi91dGlsaXR5L2lkZW50aXR5IjoxNTQsIi4vYmluYXJ5SW5kZXhCeSI6OTN9XSw5MzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4scil7dD1uKHQpO2Zvcih2YXIgbz0wLGw9ZT9lLmxlbmd0aDowLHU9dCE9PXQsYz1udWxsPT09dCxwPXZvaWQgMD09PXQ7bzxsOyl7dmFyIGg9aSgobytsKS8yKSxmPW4oZVtoXSksZD12b2lkIDAhPT1mLG09Zj09PWY7aWYodSl2YXIgZz1tfHxyO2Vsc2UgZz1jP20mJmQmJihyfHxudWxsIT1mKTpwP20mJihyfHxkKTpudWxsIT1mJiYocj9mPD10OmY8dCk7Zz9vPWgrMTpsPWh9cmV0dXJuIGEobCxzKX12YXIgaT1NYXRoLmZsb29yLGE9TWF0aC5taW4sbz00Mjk0OTY3Mjk1LHM9by0xO3QuZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gaTtpZih2b2lkIDA9PT10KXJldHVybiBlO3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlLmNhbGwodCxuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGUuY2FsbCh0LG4scixpKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihuLHIsaSxhKXtyZXR1cm4gZS5jYWxsKHQsbixyLGksYSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24obixyLGksYSxvKXtyZXR1cm4gZS5jYWxsKHQsbixyLGksYSxvKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX12YXIgaT1lKCIuLi91dGlsaXR5L2lkZW50aXR5Iik7dC5leHBvcnRzPXJ9LHsiLi4vdXRpbGl0eS9pZGVudGl0eSI6MTU0fV0sOTU6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihlKXt2YXIgdD1uZXcgcihlLmJ5dGVMZW5ndGgpLG49bmV3IGkodCk7cmV0dXJuIG4uc2V0KG5ldyBpKGUpKSx0fXZhciByPWUuQXJyYXlCdWZmZXIsaT1lLlVpbnQ4QXJyYXk7dC5leHBvcnRzPW59KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSw5NjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe2Zvcih2YXIgcj1uLmxlbmd0aCxhPS0xLG89aShlLmxlbmd0aC1yLDApLHM9LTEsbD10Lmxlbmd0aCx1PUFycmF5KGwrbyk7KytzPGw7KXVbc109dFtzXTtmb3IoOysrYTxyOyl1W25bYV1dPWVbYV07Zm9yKDtvLS07KXVbcysrXT1lW2ErK107cmV0dXJuIHV9dmFyIGk9TWF0aC5tYXg7dC5leHBvcnRzPXJ9LHt9XSw5NzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe2Zvcih2YXIgcj0tMSxhPW4ubGVuZ3RoLG89LTEscz1pKGUubGVuZ3RoLWEsMCksbD0tMSx1PXQubGVuZ3RoLGM9QXJyYXkocyt1KTsrK288czspY1tvXT1lW29dO2Zvcih2YXIgcD1vOysrbDx1OyljW3ArbF09dFtsXTtmb3IoOysrcjxhOyljW3ArbltyXV09ZVtvKytdO3JldHVybiBjfXZhciBpPU1hdGgubWF4O3QuZXhwb3J0cz1yfSx7fV0sOTg6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7dmFyIHM9bj9pKG4pOjA7aWYoIWEocykpcmV0dXJuIGUobixyKTtmb3IodmFyIGw9dD9zOi0xLHU9byhuKTsodD9sLS06KytsPHMpJiZyKHVbbF0sbCx1KSE9PSExOyk7cmV0dXJuIG59fXZhciBpPWUoIi4vZ2V0TGVuZ3RoIiksYT1lKCIuL2lzTGVuZ3RoIiksbz1lKCIuL3RvT2JqZWN0Iik7dC5leHBvcnRzPXJ9LHsiLi9nZXRMZW5ndGgiOjExMiwiLi9pc0xlbmd0aCI6MTI1LCIuL3RvT2JqZWN0IjoxMzV9XSw5OTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIGE9aSh0KSxvPXIodCkscz1vLmxlbmd0aCxsPWU/czotMTtlP2wtLTorK2w8czspe3ZhciB1PW9bbF07aWYobihhW3VdLHUsYSk9PT0hMSlicmVha31yZXR1cm4gdH19dmFyIGk9ZSgiLi90b09iamVjdCIpO3QuZXhwb3J0cz1yfSx7Ii4vdG9PYmplY3QiOjEzNX1dLDEwMDpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXtmdW5jdGlvbiByKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciBpPXRoaXMmJnRoaXMhPT1uJiZ0aGlzIGluc3RhbmNlb2Ygcj9hOmU7cmV0dXJuIGkuYXBwbHkodCxhcmd1bWVudHMpfXZhciBhPWkoZSk7cmV0dXJuIHJ9dmFyIGk9ZSgiLi9jcmVhdGVDdG9yV3JhcHBlciIpO3QuZXhwb3J0cz1yfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vY3JlYXRlQ3RvcldyYXBwZXIiOjEwMX1dLDEwMTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgZTtjYXNlIDE6cmV0dXJuIG5ldyBlKHRbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IGUodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10pO2Nhc2UgNTpyZXR1cm4gbmV3IGUodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdKTtjYXNlIDY6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdKTtjYXNlIDc6cmV0dXJuIG5ldyBlKHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0pfXZhciBuPWkoZS5wcm90b3R5cGUpLHI9ZS5hcHBseShuLHQpO3JldHVybiBhKHIpP3I6bn19dmFyIGk9ZSgiLi9iYXNlQ3JlYXRlIiksYT1lKCIuLi9sYW5nL2lzT2JqZWN0Iik7dC5leHBvcnRzPXJ9LHsiLi4vbGFuZy9pc09iamVjdCI6MTQ0LCIuL2Jhc2VDcmVhdGUiOjcwfV0sMTAyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIsbCl7aWYocj1pKHIsbCwzKSxzKG4pKXt2YXIgdT1vKG4scix0KTtyZXR1cm4gdT4tMT9uW3VdOnZvaWQgMH1yZXR1cm4gYShuLHIsZSl9fXZhciBpPWUoIi4vYmFzZUNhbGxiYWNrIiksYT1lKCIuL2Jhc2VGaW5kIiksbz1lKCIuL2Jhc2VGaW5kSW5kZXgiKSxzPWUoIi4uL2xhbmcvaXNBcnJheSIpO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuL2Jhc2VDYWxsYmFjayI6NjcsIi4vYmFzZUZpbmQiOjcyLCIuL2Jhc2VGaW5kSW5kZXgiOjczfV0sMTAzOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBmdW5jdGlvbihuLHIsbyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJnZvaWQgMD09PW8mJmEobik/ZShuLHIpOnQobixpKHIsbywzKSl9fXZhciBpPWUoIi4vYmluZENhbGxiYWNrIiksYT1lKCIuLi9sYW5nL2lzQXJyYXkiKTt0LmV4cG9ydHM9cn0seyIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi9iaW5kQ2FsbGJhY2siOjk0fV0sMTA0OltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHIoZSx0LF8seCxBLFMsaixFLE8sayl7ZnVuY3Rpb24gVCgpe2Zvcih2YXIgZD1hcmd1bWVudHMubGVuZ3RoLG09ZCxnPUFycmF5KGQpO20tLTspZ1ttXT1hcmd1bWVudHNbbV07aWYoeCYmKGc9YShnLHgsQSkpLFMmJihnPW8oZyxTLGopKSxMfHxSKXt2YXIgYj1ULnBsYWNlaG9sZGVyLFA9YyhnLGIpO2lmKGQtPVAubGVuZ3RoLGQ8ayl7dmFyIHE9RT9pKEUpOnZvaWQgMCxCPXcoay1kLDApLHo9TD9QOnZvaWQgMCxOPUw/dm9pZCAwOlAsJD1MP2c6dm9pZCAwLEY9TD92b2lkIDA6Zzt0fD1MP3k6dix0Jj1+KEw/djp5KSxNfHwodCY9fihofGYpKTt2YXIgVj1bZSx0LF8sJCx6LEYsTixxLE8sQl0sSD1yLmFwcGx5KHZvaWQgMCxWKTtyZXR1cm4gbChlKSYmcChILFYpLEgucGxhY2Vob2xkZXI9YixIfX12YXIgWT1JP186dGhpcyxKPUQ/WVtlXTplO3JldHVybiBFJiYoZz11KGcsRSkpLEMmJk88Zy5sZW5ndGgmJihnLmxlbmd0aD1PKSx0aGlzJiZ0aGlzIT09biYmdGhpcyBpbnN0YW5jZW9mIFQmJihKPVV8fHMoZSkpLEouYXBwbHkoWSxnKX12YXIgQz10JmIsST10JmgsRD10JmYsTD10Jm0sTT10JmQsUj10JmcsVT1EP3ZvaWQgMDpzKGUpO3JldHVybiBUfXZhciBpPWUoIi4vYXJyYXlDb3B5IiksYT1lKCIuL2NvbXBvc2VBcmdzIiksbz1lKCIuL2NvbXBvc2VBcmdzUmlnaHQiKSxzPWUoIi4vY3JlYXRlQ3RvcldyYXBwZXIiKSxsPWUoIi4vaXNMYXppYWJsZSIpLHU9ZSgiLi9yZW9yZGVyIiksYz1lKCIuL3JlcGxhY2VIb2xkZXJzIikscD1lKCIuL3NldERhdGEiKSxoPTEsZj0yLGQ9NCxtPTgsZz0xNix5PTMyLHY9NjQsYj0xMjgsdz1NYXRoLm1heDt0LmV4cG9ydHM9cn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2FycmF5Q29weSI6NjIsIi4vY29tcG9zZUFyZ3MiOjk2LCIuL2NvbXBvc2VBcmdzUmlnaHQiOjk3LCIuL2NyZWF0ZUN0b3JXcmFwcGVyIjoxMDEsIi4vaXNMYXppYWJsZSI6MTI0LCIuL3Jlb3JkZXIiOjEzMSwiLi9yZXBsYWNlSG9sZGVycyI6MTMyLCIuL3NldERhdGEiOjEzM31dLDEwNTpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXtmdW5jdGlvbiByKGUsdCxyLG8pe2Z1bmN0aW9uIHMoKXtmb3IodmFyIHQ9LTEsaT1hcmd1bWVudHMubGVuZ3RoLGE9LTEsYz1vLmxlbmd0aCxwPUFycmF5KGMraSk7KythPGM7KXBbYV09b1thXTtmb3IoO2ktLTspcFthKytdPWFyZ3VtZW50c1srK3RdO3ZhciBoPXRoaXMmJnRoaXMhPT1uJiZ0aGlzIGluc3RhbmNlb2Ygcz91OmU7cmV0dXJuIGguYXBwbHkobD9yOnRoaXMscCl9dmFyIGw9dCZhLHU9aShlKTtyZXR1cm4gc312YXIgaT1lKCIuL2NyZWF0ZUN0b3JXcmFwcGVyIiksYT0xO3QuZXhwb3J0cz1yfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vY3JlYXRlQ3RvcldyYXBwZXIiOjEwMX1dLDEwNjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4scix5LHYsYix3KXt2YXIgXz10Jmg7aWYoIV8mJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IobSk7dmFyIHg9cj9yLmxlbmd0aDowO2lmKHh8fCh0Jj1+KGZ8ZCkscj15PXZvaWQgMCkseC09eT95Lmxlbmd0aDowLHQmZCl7dmFyIEE9cixTPXk7cj15PXZvaWQgMH12YXIgaj1fP3ZvaWQgMDpsKGUpLEU9W2UsdCxuLHIseSxBLFMsdixiLHddO2lmKGomJih1KEUsaiksdD1FWzFdLHc9RVs5XSksRVs5XT1udWxsPT13P18/MDplLmxlbmd0aDpnKHcteCwwKXx8MCx0PT1wKXZhciBPPWEoRVswXSxFWzJdKTtlbHNlIE89dCE9ZiYmdCE9KHB8Zil8fEVbNF0ubGVuZ3RoP28uYXBwbHkodm9pZCAwLEUpOnMuYXBwbHkodm9pZCAwLEUpO3ZhciBrPWo/aTpjO3JldHVybiBrKE8sRSl9dmFyIGk9ZSgiLi9iYXNlU2V0RGF0YSIpLGE9ZSgiLi9jcmVhdGVCaW5kV3JhcHBlciIpLG89ZSgiLi9jcmVhdGVIeWJyaWRXcmFwcGVyIikscz1lKCIuL2NyZWF0ZVBhcnRpYWxXcmFwcGVyIiksbD1lKCIuL2dldERhdGEiKSx1PWUoIi4vbWVyZ2VEYXRhIiksYz1lKCIuL3NldERhdGEiKSxwPTEsaD0yLGY9MzIsZD02NCxtPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIixnPU1hdGgubWF4O3QuZXhwb3J0cz1yfSx7Ii4vYmFzZVNldERhdGEiOjg4LCIuL2NyZWF0ZUJpbmRXcmFwcGVyIjoxMDAsIi4vY3JlYXRlSHlicmlkV3JhcHBlciI6MTA0LCIuL2NyZWF0ZVBhcnRpYWxXcmFwcGVyIjoxMDUsIi4vZ2V0RGF0YSI6MTEwLCIuL21lcmdlRGF0YSI6MTI4LCIuL3NldERhdGEiOjEzM31dLDEwNzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4scixhLG8scyl7dmFyIGw9LTEsdT1lLmxlbmd0aCxjPXQubGVuZ3RoO2lmKHUhPWMmJiEoYSYmYz51KSlyZXR1cm4hMTtmb3IoOysrbDx1Oyl7dmFyIHA9ZVtsXSxoPXRbbF0sZj1yP3IoYT9oOnAsYT9wOmgsbCk6dm9pZCAwO2lmKHZvaWQgMCE9PWYpe2lmKGYpY29udGludWU7cmV0dXJuITF9aWYoYSl7CitpZighaSh0LGZ1bmN0aW9uKGUpe3JldHVybiBwPT09ZXx8bihwLGUscixhLG8scyl9KSlyZXR1cm4hMX1lbHNlIGlmKHAhPT1oJiYhbihwLGgscixhLG8scykpcmV0dXJuITF9cmV0dXJuITB9dmFyIGk9ZSgiLi9hcnJheVNvbWUiKTt0LmV4cG9ydHM9cn0seyIuL2FycmF5U29tZSI6NjV9XSwxMDg6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXtzd2l0Y2gobil7Y2FzZSBpOmNhc2UgYTpyZXR1cm4rZT09K3Q7Y2FzZSBvOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBzOnJldHVybiBlIT0rZT90IT0rdDplPT0rdDtjYXNlIGw6Y2FzZSB1OnJldHVybiBlPT10KyIifXJldHVybiExfXZhciBpPSJbb2JqZWN0IEJvb2xlYW5dIixhPSJbb2JqZWN0IERhdGVdIixvPSJbb2JqZWN0IEVycm9yXSIscz0iW29iamVjdCBOdW1iZXJdIixsPSJbb2JqZWN0IFJlZ0V4cF0iLHU9IltvYmplY3QgU3RyaW5nXSI7dC5leHBvcnRzPXJ9LHt9XSwxMDk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuLHIsYSxzLGwpe3ZhciB1PWkoZSksYz11Lmxlbmd0aCxwPWkodCksaD1wLmxlbmd0aDtpZihjIT1oJiYhYSlyZXR1cm4hMTtmb3IodmFyIGY9YztmLS07KXt2YXIgZD11W2ZdO2lmKCEoYT9kIGluIHQ6by5jYWxsKHQsZCkpKXJldHVybiExfWZvcih2YXIgbT1hOysrZjxjOyl7ZD11W2ZdO3ZhciBnPWVbZF0seT10W2RdLHY9cj9yKGE/eTpnLGE/Zzp5LGQpOnZvaWQgMDtpZighKHZvaWQgMD09PXY/bihnLHkscixhLHMsbCk6dikpcmV0dXJuITE7bXx8KG09ImNvbnN0cnVjdG9yIj09ZCl9aWYoIW0pe3ZhciBiPWUuY29uc3RydWN0b3Isdz10LmNvbnN0cnVjdG9yO2lmKGIhPXcmJiJjb25zdHJ1Y3RvciJpbiBlJiYiY29uc3RydWN0b3IiaW4gdCYmISgiZnVuY3Rpb24iPT10eXBlb2YgYiYmYiBpbnN0YW5jZW9mIGImJiJmdW5jdGlvbiI9PXR5cGVvZiB3JiZ3IGluc3RhbmNlb2YgdykpcmV0dXJuITF9cmV0dXJuITB9dmFyIGk9ZSgiLi4vb2JqZWN0L2tleXMiKSxhPU9iamVjdC5wcm90b3R5cGUsbz1hLmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1yfSx7Ii4uL29iamVjdC9rZXlzIjoxNDl9XSwxMTA6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL21ldGFNYXAiKSxpPWUoIi4uL3V0aWxpdHkvbm9vcCIpLGE9cj9mdW5jdGlvbihlKXtyZXR1cm4gci5nZXQoZSl9Omk7dC5leHBvcnRzPWF9LHsiLi4vdXRpbGl0eS9ub29wIjoxNTUsIi4vbWV0YU1hcCI6MTI5fV0sMTExOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9ZS5uYW1lKyIiLG49aVt0XSxyPW4/bi5sZW5ndGg6MDtyLS07KXt2YXIgYT1uW3JdLG89YS5mdW5jO2lmKG51bGw9PW98fG89PWUpcmV0dXJuIGEubmFtZX1yZXR1cm4gdH12YXIgaT1lKCIuL3JlYWxOYW1lcyIpO3QuZXhwb3J0cz1yfSx7Ii4vcmVhbE5hbWVzIjoxMzB9XSwxMTI6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1lKCIuL2Jhc2VQcm9wZXJ0eSIpLGk9cigibGVuZ3RoIik7dC5leHBvcnRzPWl9LHsiLi9iYXNlUHJvcGVydHkiOjg2fV0sMTEzOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9YShlKSxuPXQubGVuZ3RoO24tLTspdFtuXVsyXT1pKHRbbl1bMV0pO3JldHVybiB0fXZhciBpPWUoIi4vaXNTdHJpY3RDb21wYXJhYmxlIiksYT1lKCIuLi9vYmplY3QvcGFpcnMiKTt0LmV4cG9ydHM9cn0seyIuLi9vYmplY3QvcGFpcnMiOjE1MSwiLi9pc1N0cmljdENvbXBhcmFibGUiOjEyN31dLDExNDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1udWxsPT1lP3ZvaWQgMDplW3RdO3JldHVybiBpKG4pP246dm9pZCAwfXZhciBpPWUoIi4uL2xhbmcvaXNOYXRpdmUiKTt0LmV4cG9ydHM9cn0seyIuLi9sYW5nL2lzTmF0aXZlIjoxNDN9XSwxMTU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCxuKXtmb3IodmFyIHI9ZS5sZW5ndGgsaT10KyhuPzA6LTEpO24/aS0tOisraTxyOyl7dmFyIGE9ZVtpXTtpZihhIT09YSlyZXR1cm4gaX1yZXR1cm4tMX10LmV4cG9ydHM9cn0se31dLDExNjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ9ZS5sZW5ndGgsbj1uZXcgZS5jb25zdHJ1Y3Rvcih0KTtyZXR1cm4gdCYmInN0cmluZyI9PXR5cGVvZiBlWzBdJiZhLmNhbGwoZSwiaW5kZXgiKSYmKG4uaW5kZXg9ZS5pbmRleCxuLmlucHV0PWUuaW5wdXQpLG59dmFyIGk9T2JqZWN0LnByb3RvdHlwZSxhPWkuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPXJ9LHt9XSwxMTc6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24obil7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9ZS5jb25zdHJ1Y3Rvcjtzd2l0Y2godCl7Y2FzZSBjOnJldHVybiBpKGUpO2Nhc2UgYTpjYXNlIG86cmV0dXJuIG5ldyByKCgrZSkpO2Nhc2UgcDpjYXNlIGg6Y2FzZSBmOmNhc2UgZDpjYXNlIG06Y2FzZSBnOmNhc2UgeTpjYXNlIHY6Y2FzZSBiOnIgaW5zdGFuY2VvZiByJiYocj14W3RdKTt2YXIgXz1lLmJ1ZmZlcjtyZXR1cm4gbmV3IHIobj9pKF8pOl8sZS5ieXRlT2Zmc2V0LGUubGVuZ3RoKTtjYXNlIHM6Y2FzZSB1OnJldHVybiBuZXcgcihlKTtjYXNlIGw6dmFyIEE9bmV3IHIoZS5zb3VyY2Usdy5leGVjKGUpKTtBLmxhc3RJbmRleD1lLmxhc3RJbmRleH1yZXR1cm4gQX12YXIgaT1lKCIuL2J1ZmZlckNsb25lIiksYT0iW29iamVjdCBCb29sZWFuXSIsbz0iW29iamVjdCBEYXRlXSIscz0iW29iamVjdCBOdW1iZXJdIixsPSJbb2JqZWN0IFJlZ0V4cF0iLHU9IltvYmplY3QgU3RyaW5nXSIsYz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLHA9IltvYmplY3QgRmxvYXQzMkFycmF5XSIsaD0iW29iamVjdCBGbG9hdDY0QXJyYXldIixmPSJbb2JqZWN0IEludDhBcnJheV0iLGQ9IltvYmplY3QgSW50MTZBcnJheV0iLG09IltvYmplY3QgSW50MzJBcnJheV0iLGc9IltvYmplY3QgVWludDhBcnJheV0iLHk9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIix2PSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsYj0iW29iamVjdCBVaW50MzJBcnJheV0iLHc9L1x3KiQvLF89bi5VaW50OEFycmF5LHg9e307eFtwXT1uLkZsb2F0MzJBcnJheSx4W2hdPW4uRmxvYXQ2NEFycmF5LHhbZl09bi5JbnQ4QXJyYXkseFtkXT1uLkludDE2QXJyYXkseFttXT1uLkludDMyQXJyYXkseFtnXT1fLHhbeV09bi5VaW50OENsYW1wZWRBcnJheSx4W3ZdPW4uVWludDE2QXJyYXkseFtiXT1uLlVpbnQzMkFycmF5LHQuZXhwb3J0cz1yfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vYnVmZmVyQ2xvbmUiOjk1fV0sMTE4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0IGluc3RhbmNlb2YgdHx8KHQ9T2JqZWN0KSxuZXcgdH10LmV4cG9ydHM9cn0se31dLDExOTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGwhPWUmJmEoaShlKSl9dmFyIGk9ZSgiLi9nZXRMZW5ndGgiKSxhPWUoIi4vaXNMZW5ndGgiKTt0LmV4cG9ydHM9cn0seyIuL2dldExlbmd0aCI6MTEyLCIuL2lzTGVuZ3RoIjoxMjV9XSwxMjA6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbigpe3RyeXtPYmplY3Qoe3RvU3RyaW5nOjB9KyIiKX1jYXRjaChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMX19cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYic3RyaW5nIj09dHlwZW9mKGUrIiIpfX0oKTt0LmV4cG9ydHM9cn0se31dLDEyMTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT0ibnVtYmVyIj09dHlwZW9mIGV8fGkudGVzdChlKT8rZTotMSx0PW51bGw9PXQ/YTp0LGU+LTEmJmUlMT09MCYmZTx0fXZhciBpPS9eXGQrJC8sYT05MDA3MTk5MjU0NzQwOTkxO3QuZXhwb3J0cz1yfSx7fV0sMTIyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7aWYoIW8obikpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7aWYoIm51bWJlciI9PXI/aShuKSYmYSh0LG4ubGVuZ3RoKToic3RyaW5nIj09ciYmdCBpbiBuKXt2YXIgcz1uW3RdO3JldHVybiBlPT09ZT9lPT09czpzIT09c31yZXR1cm4hMX12YXIgaT1lKCIuL2lzQXJyYXlMaWtlIiksYT1lKCIuL2lzSW5kZXgiKSxvPWUoIi4uL2xhbmcvaXNPYmplY3QiKTt0LmV4cG9ydHM9cn0seyIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4vaXNBcnJheUxpa2UiOjExOSwiLi9pc0luZGV4IjoxMjF9XSwxMjM6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7dmFyIG49dHlwZW9mIGU7aWYoInN0cmluZyI9PW4mJnMudGVzdChlKXx8Im51bWJlciI9PW4pcmV0dXJuITA7aWYoaShlKSlyZXR1cm4hMTt2YXIgcj0hby50ZXN0KGUpO3JldHVybiByfHxudWxsIT10JiZlIGluIGEodCl9dmFyIGk9ZSgiLi4vbGFuZy9pc0FycmF5IiksYT1lKCIuL3RvT2JqZWN0Iiksbz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXG5cXF18XFwuKSo/XDEpXF0vLHM9L15cdyokLzt0LmV4cG9ydHM9cn0seyIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi90b09iamVjdCI6MTM1fV0sMTI0OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXt2YXIgdD1vKGUpLG49c1t0XTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbnx8ISh0IGluIGkucHJvdG90eXBlKSlyZXR1cm4hMTtpZihlPT09bilyZXR1cm4hMDt2YXIgcj1hKG4pO3JldHVybiEhciYmZT09PXJbMF19dmFyIGk9ZSgiLi9MYXp5V3JhcHBlciIpLGE9ZSgiLi9nZXREYXRhIiksbz1lKCIuL2dldEZ1bmNOYW1lIikscz1lKCIuLi9jaGFpbi9sb2Rhc2giKTt0LmV4cG9ydHM9cn0seyIuLi9jaGFpbi9sb2Rhc2giOjUxLCIuL0xhenlXcmFwcGVyIjo2MCwiLi9nZXREYXRhIjoxMTAsIi4vZ2V0RnVuY05hbWUiOjExMX1dLDEyNTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZlPi0xJiZlJTE9PTAmJmU8PWl9dmFyIGk9OTAwNzE5OTI1NDc0MDk5MTt0LmV4cG9ydHM9cn0se31dLDEyNjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuISFlJiYib2JqZWN0Ij09dHlwZW9mIGV9dC5leHBvcnRzPXJ9LHt9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBlPT09ZSYmIWkoZSl9dmFyIGk9ZSgiLi4vbGFuZy9pc09iamVjdCIpO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNPYmplY3QiOjE0NH1dLDEyODpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1lWzFdLHI9dFsxXSxtPW58cixnPW08cCx5PXI9PXAmJm49PWN8fHI9PXAmJm49PWgmJmVbN10ubGVuZ3RoPD10WzhdfHxyPT0ocHxoKSYmbj09YztpZighZyYmIXkpcmV0dXJuIGU7ciZsJiYoZVsyXT10WzJdLG18PW4mbD8wOnUpO3ZhciB2PXRbM107aWYodil7dmFyIGI9ZVszXTtlWzNdPWI/YShiLHYsdFs0XSk6aSh2KSxlWzRdPWI/cyhlWzNdLGYpOmkodFs0XSl9cmV0dXJuIHY9dFs1XSx2JiYoYj1lWzVdLGVbNV09Yj9vKGIsdix0WzZdKTppKHYpLGVbNl09Yj9zKGVbNV0sZik6aSh0WzZdKSksdj10WzddLHYmJihlWzddPWkodikpLHImcCYmKGVbOF09bnVsbD09ZVs4XT90WzhdOmQoZVs4XSx0WzhdKSksbnVsbD09ZVs5XSYmKGVbOV09dFs5XSksZVswXT10WzBdLGVbMV09bSxlfXZhciBpPWUoIi4vYXJyYXlDb3B5IiksYT1lKCIuL2NvbXBvc2VBcmdzIiksbz1lKCIuL2NvbXBvc2VBcmdzUmlnaHQiKSxzPWUoIi4vcmVwbGFjZUhvbGRlcnMiKSxsPTEsdT00LGM9OCxwPTEyOCxoPTI1NixmPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIixkPU1hdGgubWluO3QuZXhwb3J0cz1yfSx7Ii4vYXJyYXlDb3B5Ijo2MiwiLi9jb21wb3NlQXJncyI6OTYsIi4vY29tcG9zZUFyZ3NSaWdodCI6OTcsIi4vcmVwbGFjZUhvbGRlcnMiOjEzMn1dLDEyOTpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihuKXt2YXIgcj1lKCIuL2dldE5hdGl2ZSIpLGk9cihuLCJXZWFrTWFwIiksYT1pJiZuZXcgaTt0LmV4cG9ydHM9YX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2dldE5hdGl2ZSI6MTE0fV0sMTMwOltmdW5jdGlvbihlLHQsbil7dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwxMzE6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPWUubGVuZ3RoLHI9byh0Lmxlbmd0aCxuKSxzPWkoZSk7ci0tOyl7dmFyIGw9dFtyXTtlW3JdPWEobCxuKT9zW2xdOnZvaWQgMH1yZXR1cm4gZX12YXIgaT1lKCIuL2FycmF5Q29weSIpLGE9ZSgiLi9pc0luZGV4Iiksbz1NYXRoLm1pbjt0LmV4cG9ydHM9cn0seyIuL2FycmF5Q29weSI6NjIsIi4vaXNJbmRleCI6MTIxfV0sMTMyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0tMSxyPWUubGVuZ3RoLGE9LTEsbz1bXTsrK248cjspZVtuXT09PXQmJihlW25dPWksb1srK2FdPW4pO3JldHVybiBvfXZhciBpPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIjt0LmV4cG9ydHM9cn0se31dLDEzMzpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4vYmFzZVNldERhdGEiKSxpPWUoIi4uL2RhdGUvbm93IiksYT0xNTAsbz0xNixzPWZ1bmN0aW9uKCl7dmFyIGU9MCx0PTA7cmV0dXJuIGZ1bmN0aW9uKG4scyl7dmFyIGw9aSgpLHU9by0obC10KTtpZih0PWwsdT4wKXtpZigrK2U+PWEpcmV0dXJuIG59ZWxzZSBlPTA7cmV0dXJuIHIobixzKX19KCk7dC5leHBvcnRzPXN9LHsiLi4vZGF0ZS9ub3ciOjU3LCIuL2Jhc2VTZXREYXRhIjo4OH1dLDEzNDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PXUoZSksbj10Lmxlbmd0aCxyPW4mJmUubGVuZ3RoLGM9ISFyJiZzKHIpJiYoYShlKXx8aShlKXx8bChlKSksaD0tMSxmPVtdOysraDxuOyl7dmFyIGQ9dFtoXTsoYyYmbyhkLHIpfHxwLmNhbGwoZSxkKSkmJmYucHVzaChkKX1yZXR1cm4gZn12YXIgaT1lKCIuLi9sYW5nL2lzQXJndW1lbnRzIiksYT1lKCIuLi9sYW5nL2lzQXJyYXkiKSxvPWUoIi4vaXNJbmRleCIpLHM9ZSgiLi9pc0xlbmd0aCIpLGw9ZSgiLi4vbGFuZy9pc1N0cmluZyIpLHU9ZSgiLi4vb2JqZWN0L2tleXNJbiIpLGM9T2JqZWN0LnByb3RvdHlwZSxwPWMuaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPXJ9LHsiLi4vbGFuZy9pc0FyZ3VtZW50cyI6MTM5LCIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi4vbGFuZy9pc1N0cmluZyI6MTQ2LCIuLi9vYmplY3Qva2V5c0luIjoxNTAsIi4vaXNJbmRleCI6MTIxLCIuL2lzTGVuZ3RoIjoxMjV9XSwxMzU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe2lmKG8udW5pbmRleGVkQ2hhcnMmJmEoZSkpe2Zvcih2YXIgdD0tMSxuPWUubGVuZ3RoLHI9T2JqZWN0KGUpOysrdDxuOylyW3RdPWUuY2hhckF0KHQpO3JldHVybiByfXJldHVybiBpKGUpP2U6T2JqZWN0KGUpfXZhciBpPWUoIi4uL2xhbmcvaXNPYmplY3QiKSxhPWUoIi4uL2xhbmcvaXNTdHJpbmciKSxvPWUoIi4uL3N1cHBvcnQiKTt0LmV4cG9ydHM9cn0seyIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4uL2xhbmcvaXNTdHJpbmciOjE0NiwiLi4vc3VwcG9ydCI6MTUzfV0sMTM2OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtpZihhKGUpKXJldHVybiBlO3ZhciB0PVtdO3JldHVybiBpKGUpLnJlcGxhY2UobyxmdW5jdGlvbihlLG4scixpKXt0LnB1c2gocj9pLnJlcGxhY2UocywiJDEiKTpufHxlKX0pLHR9dmFyIGk9ZSgiLi9iYXNlVG9TdHJpbmciKSxhPWUoIi4uL2xhbmcvaXNBcnJheSIpLG89L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXG5cXF18XFwuKSo/KVwyKVxdL2cscz0vXFwoXFwpPy9nO3QuZXhwb3J0cz1yfSx7Ii4uL2xhbmcvaXNBcnJheSI6MTQwLCIuL2Jhc2VUb1N0cmluZyI6OTB9XSwxMzc6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBlIGluc3RhbmNlb2YgaT9lLmNsb25lKCk6bmV3IGEoZS5fX3dyYXBwZWRfXyxlLl9fY2hhaW5fXyxvKGUuX19hY3Rpb25zX18pKX12YXIgaT1lKCIuL0xhenlXcmFwcGVyIiksYT1lKCIuL0xvZGFzaFdyYXBwZXIiKSxvPWUoIi4vYXJyYXlDb3B5Iik7dC5leHBvcnRzPXJ9LHsiLi9MYXp5V3JhcHBlciI6NjAsIi4vTG9kYXNoV3JhcHBlciI6NjEsIi4vYXJyYXlDb3B5Ijo2Mn1dLDEzODpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P2koZSwhMCxhKHQsbiwzKSk6aShlLCEwKX12YXIgaT1lKCIuLi9pbnRlcm5hbC9iYXNlQ2xvbmUiKSxhPWUoIi4uL2ludGVybmFsL2JpbmRDYWxsYmFjayIpO3QuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2Jhc2VDbG9uZSI6NjgsIi4uL2ludGVybmFsL2JpbmRDYWxsYmFjayI6OTR9XSwxMzk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBhKGUpJiZpKGUpJiZzLmNhbGwoZSwiY2FsbGVlIikmJiFsLmNhbGwoZSwiY2FsbGVlIil9dmFyIGk9ZSgiLi4vaW50ZXJuYWwvaXNBcnJheUxpa2UiKSxhPWUoIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSIpLG89T2JqZWN0LnByb3RvdHlwZSxzPW8uaGFzT3duUHJvcGVydHksbD1vLnByb3BlcnR5SXNFbnVtZXJhYmxlO3QuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2lzQXJyYXlMaWtlIjoxMTksIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2fV0sMTQwOltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi4vaW50ZXJuYWwvZ2V0TmF0aXZlIiksaT1lKCIuLi9pbnRlcm5hbC9pc0xlbmd0aCIpLGE9ZSgiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIiksbz0iW29iamVjdCBBcnJheV0iLHM9T2JqZWN0LnByb3RvdHlwZSxsPXMudG9TdHJpbmcsdT1yKEFycmF5LCJpc0FycmF5IiksYz11fHxmdW5jdGlvbihlKXtyZXR1cm4gYShlKSYmaShlLmxlbmd0aCkmJmwuY2FsbChlKT09b307dC5leHBvcnRzPWN9LHsiLi4vaW50ZXJuYWwvZ2V0TmF0aXZlIjoxMTQsIi4uL2ludGVybmFsL2lzTGVuZ3RoIjoxMjUsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2fV0sMTQxOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbnVsbD09ZXx8KG8oZSkmJihhKGUpfHx1KGUpfHxpKGUpfHxsKGUpJiZzKGUuc3BsaWNlKSk/IWUubGVuZ3RoOiFjKGUpLmxlbmd0aCl9dmFyIGk9ZSgiLi9pc0FyZ3VtZW50cyIpLGE9ZSgiLi9pc0FycmF5Iiksbz1lKCIuLi9pbnRlcm5hbC9pc0FycmF5TGlrZSIpLHM9ZSgiLi9pc0Z1bmN0aW9uIiksbD1lKCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiKSx1PWUoIi4vaXNTdHJpbmciKSxjPWUoIi4uL29iamVjdC9rZXlzIik7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvaXNBcnJheUxpa2UiOjExOSwiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIjoxMjYsIi4uL29iamVjdC9rZXlzIjoxNDksIi4vaXNBcmd1bWVudHMiOjEzOSwiLi9pc0FycmF5IjoxNDAsIi4vaXNGdW5jdGlvbiI6MTQyLCIuL2lzU3RyaW5nIjoxNDZ9XSwxNDI6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBpKGUpJiZzLmNhbGwoZSk9PWF9dmFyIGk9ZSgiLi9pc09iamVjdCIpLGE9IltvYmplY3QgRnVuY3Rpb25dIixvPU9iamVjdC5wcm90b3R5cGUscz1vLnRvU3RyaW5nO3QuZXhwb3J0cz1yfSx7Ii4vaXNPYmplY3QiOjE0NH1dLDE0MzpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG51bGwhPWUmJihpKGUpP3AudGVzdCh1LmNhbGwoZSkpOm8oZSkmJihhKGUpP3A6cykudGVzdChlKSl9dmFyIGk9ZSgiLi9pc0Z1bmN0aW9uIiksYT1lKCIuLi9pbnRlcm5hbC9pc0hvc3RPYmplY3QiKSxvPWUoIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSIpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sbD1PYmplY3QucHJvdG90eXBlLHU9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLGM9bC5oYXNPd25Qcm9wZXJ0eSxwPVJlZ0V4cCgiXiIrdS5jYWxsKGMpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3QuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2lzSG9zdE9iamVjdCI6MTIwLCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiOjEyNiwiLi9pc0Z1bmN0aW9uIjoxNDJ9XSwxNDQ6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiEhZSYmKCJvYmplY3QiPT10fHwiZnVuY3Rpb24iPT10KX10LmV4cG9ydHM9cn0se31dLDE0NTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7dmFyIHQ7aWYoIXMoZSl8fGguY2FsbChlKSE9dXx8byhlKXx8YShlKXx8IXAuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiYodD1lLmNvbnN0cnVjdG9yLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiYhKHQgaW5zdGFuY2VvZiB0KSkpcmV0dXJuITE7dmFyIG47cmV0dXJuIGwub3duTGFzdD8oaShlLGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbj1wLmNhbGwocix0KSwhMX0pLG4hPT0hMSk6KGkoZSxmdW5jdGlvbihlLHQpe249dH0pLHZvaWQgMD09PW58fHAuY2FsbChlLG4pKX12YXIgaT1lKCIuLi9pbnRlcm5hbC9iYXNlRm9ySW4iKSxhPWUoIi4vaXNBcmd1bWVudHMiKSxvPWUoIi4uL2ludGVybmFsL2lzSG9zdE9iamVjdCIpLHM9ZSgiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIiksbD1lKCIuLi9zdXBwb3J0IiksdT0iW29iamVjdCBPYmplY3RdIixjPU9iamVjdC5wcm90b3R5cGUscD1jLmhhc093blByb3BlcnR5LGg9Yy50b1N0cmluZzt0LmV4cG9ydHM9cn0seyIuLi9pbnRlcm5hbC9iYXNlRm9ySW4iOjc1LCIuLi9pbnRlcm5hbC9pc0hvc3RPYmplY3QiOjEyMCwiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIjoxMjYsIi4uL3N1cHBvcnQiOjE1MywiLi9pc0FyZ3VtZW50cyI6MTM5fV0sMTQ2OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fGkoZSkmJnMuY2FsbChlKT09YX12YXIgaT1lKCIuLi9pbnRlcm5hbC9pc09iamVjdExpa2UiKSxhPSJbb2JqZWN0IFN0cmluZ10iLG89T2JqZWN0LnByb3RvdHlwZSxzPW8udG9TdHJpbmc7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvaXNPYmplY3RMaWtlIjoxMjZ9XSwxNDc6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBhKGUpJiZpKGUubGVuZ3RoKSYmISFUW0kuY2FsbChlKV19dmFyIGk9ZSgiLi4vaW50ZXJuYWwvaXNMZW5ndGgiKSxhPWUoIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSIpLG89IltvYmplY3QgQXJndW1lbnRzXSIscz0iW29iamVjdCBBcnJheV0iLGw9IltvYmplY3QgQm9vbGVhbl0iLHU9IltvYmplY3QgRGF0ZV0iLGM9IltvYmplY3QgRXJyb3JdIixwPSJbb2JqZWN0IEZ1bmN0aW9uXSIsaD0iW29iamVjdCBNYXBdIixmPSJbb2JqZWN0IE51bWJlcl0iLGQ9IltvYmplY3QgT2JqZWN0XSIsbT0iW29iamVjdCBSZWdFeHBdIixnPSJbb2JqZWN0IFNldF0iLHk9IltvYmplY3QgU3RyaW5nXSIsdj0iW29iamVjdCBXZWFrTWFwXSIsYj0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLHc9IltvYmplY3QgRmxvYXQzMkFycmF5XSIsXz0iW29iamVjdCBGbG9hdDY0QXJyYXldIix4PSJbb2JqZWN0IEludDhBcnJheV0iLEE9IltvYmplY3QgSW50MTZBcnJheV0iLFM9IltvYmplY3QgSW50MzJBcnJheV0iLGo9IltvYmplY3QgVWludDhBcnJheV0iLEU9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixPPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsaz0iW29iamVjdCBVaW50MzJBcnJheV0iLFQ9e307VFt3XT1UW19dPVRbeF09VFtBXT1UW1NdPVRbal09VFtFXT1UW09dPVRba109ITAsVFtvXT1UW3NdPVRbYl09VFtsXT1UW3VdPVRbY109VFtwXT1UW2hdPVRbZl09VFtkXT1UW21dPVRbZ109VFt5XT1UW3ZdPSExO3ZhciBDPU9iamVjdC5wcm90b3R5cGUsST1DLnRvU3RyaW5nO3QuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2lzTGVuZ3RoIjoxMjUsIi4uL2ludGVybmFsL2lzT2JqZWN0TGlrZSI6MTI2fV0sMTQ4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwPT09ZX10LmV4cG9ydHM9cn0se31dLDE0OTpbZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUoIi4uL2ludGVybmFsL2dldE5hdGl2ZSIpLGk9ZSgiLi4vaW50ZXJuYWwvaXNBcnJheUxpa2UiKSxhPWUoIi4uL2xhbmcvaXNPYmplY3QiKSxvPWUoIi4uL2ludGVybmFsL3NoaW1LZXlzIikscz1lKCIuLi9zdXBwb3J0IiksbD1yKE9iamVjdCwia2V5cyIpLHU9bD9mdW5jdGlvbihlKXt2YXIgdD1udWxsPT1lP3ZvaWQgMDplLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LnByb3RvdHlwZT09PWV8fCgiZnVuY3Rpb24iPT10eXBlb2YgZT9zLmVudW1Qcm90b3R5cGVzOmkoZSkpP28oZSk6YShlKT9sKGUpOltdfTpvO3QuZXhwb3J0cz11fSx7Ii4uL2ludGVybmFsL2dldE5hdGl2ZSI6MTE0LCIuLi9pbnRlcm5hbC9pc0FycmF5TGlrZSI6MTE5LCIuLi9pbnRlcm5hbC9zaGltS2V5cyI6MTM0LCIuLi9sYW5nL2lzT2JqZWN0IjoxNDQsIi4uL3N1cHBvcnQiOjE1M31dLDE1MDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09ZSlyZXR1cm5bXTtjKGUpfHwoZT1PYmplY3QoZSkpO3ZhciB0PWUubGVuZ3RoO3Q9dCYmdSh0KSYmKG8oZSl8fGEoZSl8fHAoZSkpJiZ0fHwwO2Zvcih2YXIgbj1lLmNvbnN0cnVjdG9yLHI9LTEsaT1zKG4pJiZuLnByb3RvdHlwZXx8UyxmPWk9PT1lLGQ9QXJyYXkodCksbT10PjAseT1oLmVudW1FcnJvclByb3BzJiYoZT09PUF8fGUgaW5zdGFuY2VvZiBFcnJvciksdj1oLmVudW1Qcm90b3R5cGVzJiZzKGUpOysrcjx0OylkW3JdPXIrIiI7Zm9yKHZhciB3IGluIGUpdiYmInByb3RvdHlwZSI9PXd8fHkmJigibWVzc2FnZSI9PXd8fCJuYW1lIj09dyl8fG0mJmwodyx0KXx8ImNvbnN0cnVjdG9yIj09dyYmKGZ8fCFFLmNhbGwoZSx3KSl8fGQucHVzaCh3KTtpZihoLm5vbkVudW1TaGFkb3dzJiZlIT09Uyl7dmFyIFQ9ZT09PWo/XzplPT09QT9nOk8uY2FsbChlKSxDPWtbVF18fGtbYl07Zm9yKFQ9PWImJihpPVMpLHQ9eC5sZW5ndGg7dC0tOyl7dz14W3RdO3ZhciBJPUNbd107ZiYmSXx8KEk/IUUuY2FsbChlLHcpOmVbd109PT1pW3ddKXx8ZC5wdXNoKHcpfX1yZXR1cm4gZH12YXIgaT1lKCIuLi9pbnRlcm5hbC9hcnJheUVhY2giKSxhPWUoIi4uL2xhbmcvaXNBcmd1bWVudHMiKSxvPWUoIi4uL2xhbmcvaXNBcnJheSIpLHM9ZSgiLi4vbGFuZy9pc0Z1bmN0aW9uIiksbD1lKCIuLi9pbnRlcm5hbC9pc0luZGV4IiksdT1lKCIuLi9pbnRlcm5hbC9pc0xlbmd0aCIpLGM9ZSgiLi4vbGFuZy9pc09iamVjdCIpLHA9ZSgiLi4vbGFuZy9pc1N0cmluZyIpLGg9ZSgiLi4vc3VwcG9ydCIpLGY9IltvYmplY3QgQXJyYXldIixkPSJbb2JqZWN0IEJvb2xlYW5dIixtPSJbb2JqZWN0IERhdGVdIixnPSJbb2JqZWN0IEVycm9yXSIseT0iW29iamVjdCBGdW5jdGlvbl0iLHY9IltvYmplY3QgTnVtYmVyXSIsYj0iW29iamVjdCBPYmplY3RdIix3PSJbb2JqZWN0IFJlZ0V4cF0iLF89IltvYmplY3QgU3RyaW5nXSIseD1bImNvbnN0cnVjdG9yIiwiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b0xvY2FsZVN0cmluZyIsInRvU3RyaW5nIiwidmFsdWVPZiJdLEE9RXJyb3IucHJvdG90eXBlLFM9T2JqZWN0LnByb3RvdHlwZSxqPVN0cmluZy5wcm90b3R5cGUsRT1TLmhhc093blByb3BlcnR5LE89Uy50b1N0cmluZyxrPXt9O2tbZl09a1ttXT1rW3ZdPXtjb25zdHJ1Y3RvcjohMCx0b0xvY2FsZVN0cmluZzohMCx0b1N0cmluZzohMCx2YWx1ZU9mOiEwfSxrW2RdPWtbX109e2NvbnN0cnVjdG9yOiEwLHRvU3RyaW5nOiEwLHZhbHVlT2Y6ITB9LGtbZ109a1t5XT1rW3ddPXtjb25zdHJ1Y3RvcjohMCx0b1N0cmluZzohMH0sa1tiXT17Y29uc3RydWN0b3I6ITB9LGkoeCxmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gaylpZihFLmNhbGwoayx0KSl7dmFyIG49a1t0XTtuW2VdPUUuY2FsbChuLGUpfX0pLHQuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2FycmF5RWFjaCI6NjMsIi4uL2ludGVybmFsL2lzSW5kZXgiOjEyMSwiLi4vaW50ZXJuYWwvaXNMZW5ndGgiOjEyNSwiLi4vbGFuZy9pc0FyZ3VtZW50cyI6MTM5LCIuLi9sYW5nL2lzQXJyYXkiOjE0MCwiLi4vbGFuZy9pc0Z1bmN0aW9uIjoxNDIsIi4uL2xhbmcvaXNPYmplY3QiOjE0NCwiLi4vbGFuZy9pc1N0cmluZyI6MTQ2LCIuLi9zdXBwb3J0IjoxNTN9XSwxNTE6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe2U9YShlKTtmb3IodmFyIHQ9LTEsbj1pKGUpLHI9bi5sZW5ndGgsbz1BcnJheShyKTsrK3Q8cjspe3ZhciBzPW5bdF07b1t0XT1bcyxlW3NdXX1yZXR1cm4gb312YXIgaT1lKCIuL2tleXMiKSxhPWUoIi4uL2ludGVybmFsL3RvT2JqZWN0Iik7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvdG9PYmplY3QiOjEzNSwiLi9rZXlzIjoxNDl9XSwxNTI6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBpKGUsYShlKSl9dmFyIGk9ZSgiLi4vaW50ZXJuYWwvYmFzZVZhbHVlcyIpLGE9ZSgiLi9rZXlzIik7dC5leHBvcnRzPXJ9LHsiLi4vaW50ZXJuYWwvYmFzZVZhbHVlcyI6OTEsIi4va2V5cyI6MTQ5fV0sMTUzOltmdW5jdGlvbihlLHQsbil7dmFyIHI9QXJyYXkucHJvdG90eXBlLGk9RXJyb3IucHJvdG90eXBlLGE9T2JqZWN0LnByb3RvdHlwZSxvPWEucHJvcGVydHlJc0VudW1lcmFibGUscz1yLnNwbGljZSxsPXt9OyFmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbigpe3RoaXMueD1lfSxuPXswOmUsbGVuZ3RoOmV9LHI9W107dC5wcm90b3R5cGU9e3ZhbHVlT2Y6ZSx5OmV9O2Zvcih2YXIgYSBpbiBuZXcgdClyLnB1c2goYSk7bC5lbnVtRXJyb3JQcm9wcz1vLmNhbGwoaSwibWVzc2FnZSIpfHxvLmNhbGwoaSwibmFtZSIpLGwuZW51bVByb3RvdHlwZXM9by5jYWxsKHQsInByb3RvdHlwZSIpLGwubm9uRW51bVNoYWRvd3M9IS92YWx1ZU9mLy50ZXN0KHIpLGwub3duTGFzdD0ieCIhPXJbMF0sbC5zcGxpY2VPYmplY3RzPShzLmNhbGwobiwwLDEpLCFuWzBdKSxsLnVuaW5kZXhlZENoYXJzPSJ4IlswXStPYmplY3QoIngiKVswXSE9Inh4In0oMSwwKSx0LmV4cG9ydHM9bH0se31dLDE1NDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9dC5leHBvcnRzPXJ9LHt9XSwxNTU6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKCl7fXQuZXhwb3J0cz1yfSx7fV0sMTU2OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKT9pKGUpOmEoZSl9dmFyIGk9ZSgiLi4vaW50ZXJuYWwvYmFzZVByb3BlcnR5IiksYT1lKCIuLi9pbnRlcm5hbC9iYXNlUHJvcGVydHlEZWVwIiksbz1lKCIuLi9pbnRlcm5hbC9pc0tleSIpO3QuZXhwb3J0cz1yfSx7Ii4uL2ludGVybmFsL2Jhc2VQcm9wZXJ0eSI6ODYsIi4uL2ludGVybmFsL2Jhc2VQcm9wZXJ0eURlZXAiOjg3LCIuLi9pbnRlcm5hbC9pc0tleSI6MTIzfV0sMTU3OltmdW5jdGlvbihlLG4scil7KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGJvb3RzdHJhcClib290c3RyYXAoInByb21pc2UiLGUpO2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiByJiYib2JqZWN0Ij09dHlwZW9mIG4pbi5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0LmFtZCl0KGUpO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBzZXMpe2lmKCFzZXMub2soKSlyZXR1cm47c2VzLm1ha2VRPWV9ZWxzZXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCI9PXR5cGVvZiBzZWxmKXRocm93IG5ldyBFcnJvcigiVGhpcyBlbnZpcm9ubWVudCB3YXMgbm90IGFudGljaXBhdGVkIGJ5IFEuIFBsZWFzZSBmaWxlIGEgYnVnLiIpO3ZhciBpPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpzZWxmLGE9aS5RO2kuUT1lKCksaS5RLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gaS5RPWEsdGhpc319fShmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBRLmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gbihlKXtyZXR1cm4gZT09PU9iamVjdChlKX1mdW5jdGlvbiByKGUpe3JldHVybiJbb2JqZWN0IFN0b3BJdGVyYXRpb25dIj09PXJlKGUpfHxlIGluc3RhbmNlb2YgSH1mdW5jdGlvbiBpKGUsdCl7aWYoJCYmdC5zdGFjayYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS5zdGFjayYmZS5zdGFjay5pbmRleE9mKGllKT09PS0xKXtmb3IodmFyIG49W10scj10O3I7cj1yLnNvdXJjZSlyLnN0YWNrJiZuLnVuc2hpZnQoci5zdGFjayk7bi51bnNoaWZ0KGUuc3RhY2spO3ZhciBpPW4uam9pbigiXG4iK2llKyJcbiIpO2Uuc3RhY2s9YShpKX19ZnVuY3Rpb24gYShlKXtmb3IodmFyIHQ9ZS5zcGxpdCgiXG4iKSxuPVtdLHI9MDtyPHQubGVuZ3RoOysrcil7dmFyIGk9dFtyXTtsKGkpfHxvKGkpfHwhaXx8bi5wdXNoKGkpfXJldHVybiBuLmpvaW4oIlxuIil9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5pbmRleE9mKCIobW9kdWxlLmpzOiIpIT09LTF8fGUuaW5kZXhPZigiKG5vZGUuanM6IikhPT0tMX1mdW5jdGlvbiBzKGUpe3ZhciB0PS9hdCAuKyBcKCguKyk6KFxkKyk6KD86XGQrKVwpJC8uZXhlYyhlKTtpZih0KXJldHVyblt0WzFdLE51bWJlcih0WzJdKV07dmFyIG49L2F0IChbXiBdKyk6KFxkKyk6KD86XGQrKSQvLmV4ZWMoZSk7aWYobilyZXR1cm5bblsxXSxOdW1iZXIoblsyXSldO3ZhciByPS8uKkAoLispOihcZCspJC8uZXhlYyhlKTtyZXR1cm4gcj9bclsxXSxOdW1iZXIoclsyXSldOnZvaWQgMH1mdW5jdGlvbiBsKGUpe3ZhciB0PXMoZSk7aWYoIXQpcmV0dXJuITE7dmFyIG49dFswXSxyPXRbMV07cmV0dXJuIG49PT1WJiZyPj1ZJiZyPD11ZX1mdW5jdGlvbiB1KCl7aWYoJCl0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGUpe3ZhciB0PWUuc3RhY2suc3BsaXQoIlxuIiksbj10WzBdLmluZGV4T2YoIkAiKT4wP3RbMV06dFsyXSxyPXMobik7aWYoIXIpcmV0dXJuO3JldHVybiBWPXJbMF0sclsxXX19ZnVuY3Rpb24gYyhlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4odCsiIGlzIGRlcHJlY2F0ZWQsIHVzZSAiK24rIiBpbnN0ZWFkLiIsbmV3IEVycm9yKCIiKS5zdGFjayksZS5hcHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBtP2U6YihlKT9rKGUpOk8oZSl9ZnVuY3Rpb24gaCgpe2Z1bmN0aW9uIGUoZSl7dD1lLGEuc291cmNlPWUsSyhuLGZ1bmN0aW9uKHQsbil7cC5uZXh0VGljayhmdW5jdGlvbigpe2UucHJvbWlzZURpc3BhdGNoLmFwcGx5KGUsbil9KX0sdm9pZCAwKSxuPXZvaWQgMCxyPXZvaWQgMH12YXIgdCxuPVtdLHI9W10saT1lZShoLnByb3RvdHlwZSksYT1lZShtLnByb3RvdHlwZSk7aWYoYS5wcm9taXNlRGlzcGF0Y2g9ZnVuY3Rpb24oZSxpLGEpe3ZhciBvPUcoYXJndW1lbnRzKTtuPyhuLnB1c2gobyksIndoZW4iPT09aSYmYVsxXSYmci5wdXNoKGFbMV0pKTpwLm5leHRUaWNrKGZ1bmN0aW9uKCl7dC5wcm9taXNlRGlzcGF0Y2guYXBwbHkodCxvKX0pfSxhLnZhbHVlT2Y9ZnVuY3Rpb24oKXtpZihuKXJldHVybiBhO3ZhciBlPXkodCk7cmV0dXJuIHYoZSkmJih0PWUpLGV9LGEuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0P3QuaW5zcGVjdCgpOntzdGF0ZToicGVuZGluZyJ9fSxwLmxvbmdTdGFja1N1cHBvcnQmJiQpdHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChvKXthLnN0YWNrPW8uc3RhY2suc3Vic3RyaW5nKG8uc3RhY2suaW5kZXhPZigiXG4iKSsxKX1yZXR1cm4gaS5wcm9taXNlPWEsaS5yZXNvbHZlPWZ1bmN0aW9uKG4pe3R8fGUocChuKSl9LGkuZnVsZmlsbD1mdW5jdGlvbihuKXt0fHxlKE8obikpfSxpLnJlamVjdD1mdW5jdGlvbihuKXt0fHxlKEUobikpfSxpLm5vdGlmeT1mdW5jdGlvbihlKXt0fHxLKHIsZnVuY3Rpb24odCxuKXtwLm5leHRUaWNrKGZ1bmN0aW9uKCl7bihlKX0pfSx2b2lkIDApfSxpfWZ1bmN0aW9uIGYoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigicmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0PWgoKTt0cnl7ZSh0LnJlc29sdmUsdC5yZWplY3QsdC5ub3RpZnkpfWNhdGNoKG4pe3QucmVqZWN0KG4pfXJldHVybiB0LnByb21pc2V9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZihmdW5jdGlvbih0LG4pe2Zvcih2YXIgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKylwKGVbcl0pLnRoZW4odCxuKX0pfWZ1bmN0aW9uIG0oZSx0LG4pe3ZvaWQgMD09PXQmJih0PWZ1bmN0aW9uKGUpe3JldHVybiBFKG5ldyBFcnJvcigiUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IG9wZXJhdGlvbjogIitlKSl9KSx2b2lkIDA9PT1uJiYobj1mdW5jdGlvbigpe3JldHVybntzdGF0ZToidW5rbm93biJ9fSk7dmFyIHI9ZWUobS5wcm90b3R5cGUpO2lmKHIucHJvbWlzZURpc3BhdGNoPWZ1bmN0aW9uKG4saSxhKXt2YXIgbzt0cnl7bz1lW2ldP2VbaV0uYXBwbHkocixhKTp0LmNhbGwocixpLGEpfWNhdGNoKHMpe289RShzKX1uJiZuKG8pfSxyLmluc3BlY3Q9bixuKXt2YXIgaT1uKCk7InJlamVjdGVkIj09PWkuc3RhdGUmJihyLmV4Y2VwdGlvbj1pLnJlYXNvbiksci52YWx1ZU9mPWZ1bmN0aW9uKCl7dmFyIGU9bigpO3JldHVybiJwZW5kaW5nIj09PWUuc3RhdGV8fCJyZWplY3RlZCI9PT1lLnN0YXRlP3I6ZS52YWx1ZX19cmV0dXJuIHJ9ZnVuY3Rpb24gZyhlLHQsbixyKXtyZXR1cm4gcChlKS50aGVuKHQsbixyKX1mdW5jdGlvbiB5KGUpe2lmKHYoZSkpe3ZhciB0PWUuaW5zcGVjdCgpO2lmKCJmdWxmaWxsZWQiPT09dC5zdGF0ZSlyZXR1cm4gdC52YWx1ZX1yZXR1cm4gZX1mdW5jdGlvbiB2KGUpe3JldHVybiBlIGluc3RhbmNlb2YgbX1mdW5jdGlvbiBiKGUpe3JldHVybiBuKGUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVufWZ1bmN0aW9uIHcoZSl7cmV0dXJuIHYoZSkmJiJwZW5kaW5nIj09PWUuaW5zcGVjdCgpLnN0YXRlfWZ1bmN0aW9uIF8oZSl7cmV0dXJuIXYoZSl8fCJmdWxmaWxsZWQiPT09ZS5pbnNwZWN0KCkuc3RhdGV9ZnVuY3Rpb24geChlKXtyZXR1cm4gdihlKSYmInJlamVjdGVkIj09PWUuaW5zcGVjdCgpLnN0YXRlfWZ1bmN0aW9uIEEoKXthZS5sZW5ndGg9MCxvZS5sZW5ndGg9MCxsZXx8KGxlPSEwKX1mdW5jdGlvbiBTKHQsbil7bGUmJigib2JqZWN0Ij09dHlwZW9mIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmVtaXQmJnAubmV4dFRpY2sucnVuQWZ0ZXIoZnVuY3Rpb24oKXtYKG9lLHQpIT09LTEmJihlLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIsbix0KSxzZS5wdXNoKHQpKX0pLG9lLnB1c2godCksbiYmInVuZGVmaW5lZCIhPXR5cGVvZiBuLnN0YWNrP2FlLnB1c2gobi5zdGFjayk6YWUucHVzaCgiKG5vIHN0YWNrKSAiK24pKX1mdW5jdGlvbiBqKHQpe2lmKGxlKXt2YXIgbj1YKG9lLHQpO24hPT0tMSYmKCJvYmplY3QiPT10eXBlb2YgZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZW1pdCYmcC5uZXh0VGljay5ydW5BZnRlcihmdW5jdGlvbigpe3ZhciByPVgoc2UsdCk7ciE9PS0xJiYoZS5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIixhZVtuXSx0KSxzZS5zcGxpY2UociwxKSl9KSxvZS5zcGxpY2UobiwxKSxhZS5zcGxpY2UobiwxKSl9fWZ1bmN0aW9uIEUoZSl7dmFyIHQ9bSh7d2hlbjpmdW5jdGlvbih0KXtyZXR1cm4gdCYmaih0aGlzKSx0P3QoZSk6dGhpc319LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOiJyZWplY3RlZCIscmVhc29uOmV9fSk7cmV0dXJuIFModCxlKSx0fWZ1bmN0aW9uIE8oZSl7cmV0dXJuIG0oe3doZW46ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSxzZXQ6ZnVuY3Rpb24odCxuKXtlW3RdPW59LCJkZWxldGUiOmZ1bmN0aW9uKHQpe2RlbGV0ZSBlW3RdfSxwb3N0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PT10fHx2b2lkIDA9PT10P2UuYXBwbHkodm9pZCAwLG4pOmVbdF0uYXBwbHkoZSxuKX0sYXBwbHk6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5hcHBseSh0LG4pfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIG5lKGUpfX0sdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOiJmdWxmaWxsZWQiLHZhbHVlOmV9fSl9ZnVuY3Rpb24gayhlKXt2YXIgdD1oKCk7cmV0dXJuIHAubmV4dFRpY2soZnVuY3Rpb24oKXt0cnl7ZS50aGVuKHQucmVzb2x2ZSx0LnJlamVjdCx0Lm5vdGlmeSl9Y2F0Y2gobil7dC5yZWplY3Qobil9fSksdC5wcm9taXNlfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIG0oe2lzRGVmOmZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gUihlLHQsbil9LGZ1bmN0aW9uKCl7cmV0dXJuIHAoZSkuaW5zcGVjdCgpfSl9ZnVuY3Rpb24gQyhlLHQsbil7cmV0dXJuIHAoZSkuc3ByZWFkKHQsbil9ZnVuY3Rpb24gSShlKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsdCl7dmFyIG87aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBTdG9wSXRlcmF0aW9uKXt0cnl7bz1uW2VdKHQpfWNhdGNoKHMpe3JldHVybiBFKHMpfXJldHVybiBvLmRvbmU/cChvLnZhbHVlKTpnKG8udmFsdWUsaSxhKX10cnl7bz1uW2VdKHQpfWNhdGNoKHMpe3JldHVybiByKHMpP3Aocy52YWx1ZSk6RShzKX1yZXR1cm4gZyhvLGksYSl9dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksaT10LmJpbmQodCwibmV4dCIpLGE9dC5iaW5kKHQsInRocm93Iik7cmV0dXJuIGkoKX19ZnVuY3Rpb24gRChlKXtwLmRvbmUocC5hc3luYyhlKSgpKX1mdW5jdGlvbiBMKGUpe3Rocm93IG5ldyBIKGUpfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEMoW3RoaXMsVShhcmd1bWVudHMpXSxmdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHQsbil9KX19ZnVuY3Rpb24gUihlLHQsbil7cmV0dXJuIHAoZSkuZGlzcGF0Y2godCxuKX1mdW5jdGlvbiBVKGUpe3JldHVybiBnKGUsZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWgoKTtyZXR1cm4gSyhlLGZ1bmN0aW9uKHIsaSxhKXt2YXIgbzt2KGkpJiYiZnVsZmlsbGVkIj09PShvPWkuaW5zcGVjdCgpKS5zdGF0ZT9lW2FdPW8udmFsdWU6KCsrdCxnKGksZnVuY3Rpb24ocil7ZVthXT1yLDA9PT0tLXQmJm4ucmVzb2x2ZShlKX0sbi5yZWplY3QsZnVuY3Rpb24oZSl7bi5ub3RpZnkoe2luZGV4OmEsdmFsdWU6ZX0pfSkpfSx2b2lkIDApLDA9PT10JiZuLnJlc29sdmUoZSksbi5wcm9taXNlfSl9ZnVuY3Rpb24gUChlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHAucmVzb2x2ZSgpO3ZhciB0PXAuZGVmZXIoKSxuPTA7cmV0dXJuIEsoZSxmdW5jdGlvbihyLGksYSl7ZnVuY3Rpb24gbyhlKXt0LnJlc29sdmUoZSl9ZnVuY3Rpb24gcygpe24tLSwwPT09biYmdC5yZWplY3QobmV3IEVycm9yKCJDYW4ndCBnZXQgZnVsZmlsbG1lbnQgdmFsdWUgZnJvbSBhbnkgcHJvbWlzZSwgYWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWQuIikpfWZ1bmN0aW9uIGwoZSl7dC5ub3RpZnkoe2luZGV4OmEsdmFsdWU6ZX0pfXZhciB1PWVbYV07bisrLGcodSxvLHMsbCl9LHZvaWQgMCksdC5wcm9taXNlfWZ1bmN0aW9uIHEoZSl7cmV0dXJuIGcoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT1aKGUscCksZyhVKFooZSxmdW5jdGlvbihlKXtyZXR1cm4gZyhlLEosSil9KSksZnVuY3Rpb24oKXtyZXR1cm4gZX0pfSl9ZnVuY3Rpb24gQihlKXtyZXR1cm4gcChlKS5hbGxTZXR0bGVkKCl9ZnVuY3Rpb24geihlLHQpe3JldHVybiBwKGUpLnRoZW4odm9pZCAwLHZvaWQgMCx0KX1mdW5jdGlvbiBOKGUsdCl7cmV0dXJuIHAoZSkubm9kZWlmeSh0KX12YXIgJD0hMTt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKEYpeyQ9ISFGLnN0YWNrfXZhciBWLEgsWT11KCksSj1mdW5jdGlvbigpe30sVz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtmb3IodmFyIGUsdDtyLm5leHQ7KXI9ci5uZXh0LGU9ci50YXNrLHIudGFzaz12b2lkIDAsdD1yLmRvbWFpbix0JiYoci5kb21haW49dm9pZCAwLHQuZW50ZXIoKSksbihlLHQpO2Zvcig7bC5sZW5ndGg7KWU9bC5wb3AoKSxuKGUpO2E9ITF9ZnVuY3Rpb24gbihlLG4pe3RyeXtlKCl9Y2F0Y2gocil7aWYocyl0aHJvdyBuJiZuLmV4aXQoKSxzZXRUaW1lb3V0KHQsMCksbiYmbi5lbnRlcigpLHI7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHJ9LDApfW4mJm4uZXhpdCgpfXZhciByPXt0YXNrOnZvaWQgMCxuZXh0Om51bGx9LGk9cixhPSExLG89dm9pZCAwLHM9ITEsbD1bXTtpZihXPWZ1bmN0aW9uKHQpe2k9aS5uZXh0PXt0YXNrOnQsZG9tYWluOnMmJmUuZG9tYWluLG5leHQ6bnVsbH0sYXx8KGE9ITAsbygpKX0sIm9iamVjdCI9PXR5cGVvZiBlJiYiW29iamVjdCBwcm9jZXNzXSI9PT1lLnRvU3RyaW5nKCkmJmUubmV4dFRpY2spcz0hMCxvPWZ1bmN0aW9uKCl7ZS5uZXh0VGljayh0KX07ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2Ygc2V0SW1tZWRpYXRlKW89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/c2V0SW1tZWRpYXRlLmJpbmQod2luZG93LHQpOmZ1bmN0aW9uKCl7c2V0SW1tZWRpYXRlKHQpfTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciB1PW5ldyBNZXNzYWdlQ2hhbm5lbDt1LnBvcnQxLm9ubWVzc2FnZT1mdW5jdGlvbigpe289Yyx1LnBvcnQxLm9ubWVzc2FnZT10LHQoKX07dmFyIGM9ZnVuY3Rpb24oKXt1LnBvcnQyLnBvc3RNZXNzYWdlKDApfTtvPWZ1bmN0aW9uKCl7c2V0VGltZW91dCh0LDApLGMoKX19ZWxzZSBvPWZ1bmN0aW9uKCl7c2V0VGltZW91dCh0LDApfTtyZXR1cm4gVy5ydW5BZnRlcj1mdW5jdGlvbihlKXtsLnB1c2goZSksYXx8KGE9ITAsbygpKX0sV30oKSxRPUZ1bmN0aW9uLmNhbGwsRz10KEFycmF5LnByb3RvdHlwZS5zbGljZSksSz10KEFycmF5LnByb3RvdHlwZS5yZWR1Y2V8fGZ1bmN0aW9uKGUsdCl7dmFyIG49MCxyPXRoaXMubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7Oyl7aWYobiBpbiB0aGlzKXt0PXRoaXNbbisrXTticmVha31pZigrK24+PXIpdGhyb3cgbmV3IFR5cGVFcnJvcn1mb3IoO248cjtuKyspbiBpbiB0aGlzJiYodD1lKHQsdGhpc1tuXSxuKSk7cmV0dXJuIHR9KSxYPXQoQXJyYXkucHJvdG90eXBlLmluZGV4T2Z8fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKWlmKHRoaXNbdF09PT1lKXJldHVybiB0O3JldHVybi0xfSksWj10KEFycmF5LnByb3RvdHlwZS5tYXB8fGZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPVtdO3JldHVybiBLKG4sZnVuY3Rpb24oaSxhLG8pe3IucHVzaChlLmNhbGwodCxhLG8sbikpfSx2b2lkIDApLHJ9KSxlZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZT1lLG5ldyB0fSx0ZT10KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLG5lPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gZSl0ZShlLG4pJiZ0LnB1c2gobik7cmV0dXJuIHR9LHJlPXQoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyk7SD0idW5kZWZpbmVkIiE9dHlwZW9mIFJldHVyblZhbHVlP1JldHVyblZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMudmFsdWU9ZX07dmFyIGllPSJGcm9tIHByZXZpb3VzIGV2ZW50OiI7cC5yZXNvbHZlPXAscC5uZXh0VGljaz1XLHAubG9uZ1N0YWNrU3VwcG9ydD0hMSwib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuZW52JiZlLmVudi5RX0RFQlVHJiYocC5sb25nU3RhY2tTdXBwb3J0PSEwKSxwLmRlZmVyPWgsaC5wcm90b3R5cGUubWFrZU5vZGVSZXNvbHZlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dD9lLnJlamVjdCh0KTphcmd1bWVudHMubGVuZ3RoPjI/ZS5yZXNvbHZlKEcoYXJndW1lbnRzLDEpKTplLnJlc29sdmUobil9fSxwLlByb21pc2U9ZixwLnByb21pc2U9ZixmLnJhY2U9ZCxmLmFsbD1VLGYucmVqZWN0PUUsZi5yZXNvbHZlPXAscC5wYXNzQnlDb3B5PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxtLnByb3RvdHlwZS5wYXNzQnlDb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHAuam9pbj1mdW5jdGlvbihlLHQpe3JldHVybiBwKGUpLmpvaW4odCl9LG0ucHJvdG90eXBlLmpvaW49ZnVuY3Rpb24oZSl7cmV0dXJuIHAoW3RoaXMsZV0pLnNwcmVhZChmdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiQ2FuJ3Qgam9pbjogbm90IHRoZSBzYW1lOiAiK2UrIiAiK3QpfSl9LHAucmFjZT1kLG0ucHJvdG90eXBlLnJhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aGVuKHAucmFjZSl9LHAubWFrZVByb21pc2U9bSxtLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IFByb21pc2VdIn0sbS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcih0KXt0cnl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0KTp0fWNhdGNoKG4pe3JldHVybiBFKG4pfX1mdW5jdGlvbiBhKGUpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXtpKGUscyk7dHJ5e3JldHVybiB0KGUpfWNhdGNoKG4pe3JldHVybiBFKG4pfX1yZXR1cm4gRShlKX1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24oZSk6ZX12YXIgcz10aGlzLGw9aCgpLHU9ITE7cmV0dXJuIHAubmV4dFRpY2soZnVuY3Rpb24oKXtzLnByb21pc2VEaXNwYXRjaChmdW5jdGlvbihlKXt1fHwodT0hMCxsLnJlc29sdmUocihlKSkpfSwid2hlbiIsW2Z1bmN0aW9uKGUpe3V8fCh1PSEwLGwucmVzb2x2ZShhKGUpKSl9XSl9KSxzLnByb21pc2VEaXNwYXRjaCh2b2lkIDAsIndoZW4iLFt2b2lkIDAsZnVuY3Rpb24oZSl7dmFyIHQsbj0hMTt0cnl7dD1vKGUpfWNhdGNoKHIpe2lmKG49ITAsIXAub25lcnJvcil0aHJvdyByO3Aub25lcnJvcihyKX1ufHxsLm5vdGlmeSh0KX1dKSxsLnByb21pc2V9LHAudGFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSkudGFwKHQpfSxtLnByb3RvdHlwZS50YXA9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9cChlKSx0aGlzLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuZmNhbGwodCkudGhlblJlc29sdmUodCl9KX0scC53aGVuPWcsbS5wcm90b3R5cGUudGhlblJlc29sdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbigpe3JldHVybiBlfSl9LHAudGhlblJlc29sdmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKS50aGVuUmVzb2x2ZSh0KX0sbS5wcm90b3R5cGUudGhlblJlamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgZX0pfSxwLnRoZW5SZWplY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKS50aGVuUmVqZWN0KHQpfSxwLm5lYXJlcj15LHAuaXNQcm9taXNlPXYscC5pc1Byb21pc2VBbGlrZT1iLHAuaXNQZW5kaW5nPXcsbS5wcm90b3R5cGUuaXNQZW5kaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInBlbmRpbmciPT09dGhpcy5pbnNwZWN0KCkuc3RhdGV9LHAuaXNGdWxmaWxsZWQ9XyxtLnByb3RvdHlwZS5pc0Z1bGZpbGxlZD1mdW5jdGlvbigpe3JldHVybiJmdWxmaWxsZWQiPT09dGhpcy5pbnNwZWN0KCkuc3RhdGV9LHAuaXNSZWplY3RlZD14LG0ucHJvdG90eXBlLmlzUmVqZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4icmVqZWN0ZWQiPT09dGhpcy5pbnNwZWN0KCkuc3RhdGV9O3ZhciBhZT1bXSxvZT1bXSxzZT1bXSxsZT0hMDtwLnJlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucz1BLHAuZ2V0VW5oYW5kbGVkUmVhc29ucz1mdW5jdGlvbigpe3JldHVybiBhZS5zbGljZSgpfSxwLnN0b3BVbmhhbmRsZWRSZWplY3Rpb25UcmFja2luZz1mdW5jdGlvbigpe0EoKSxsZT0hMX0sQSgpLHAucmVqZWN0PUUscC5mdWxmaWxsPU8scC5tYXN0ZXI9VCxwLnNwcmVhZD1DLG0ucHJvdG90eXBlLnNwcmVhZD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmFsbCgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodm9pZCAwLHQpfSx0KX0scC5hc3luYz1JLHAuc3Bhd249RCxwWyJyZXR1cm4iXT1MLHAucHJvbWlzZWQ9TSxwLmRpc3BhdGNoPVIsbS5wcm90b3R5cGUuZGlzcGF0Y2g9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9aCgpO3JldHVybiBwLm5leHRUaWNrKGZ1bmN0aW9uKCl7bi5wcm9taXNlRGlzcGF0Y2goci5yZXNvbHZlLGUsdCl9KSxyLnByb21pc2V9LHAuZ2V0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSkuZGlzcGF0Y2goImdldCIsW3RdKX0sbS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpc3BhdGNoKCJnZXQiLFtlXSl9LHAuc2V0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcChlKS5kaXNwYXRjaCgic2V0IixbdCxuXSl9LG0ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmRpc3BhdGNoKCJzZXQiLFtlLHRdKX0scC5kZWw9cFsiZGVsZXRlIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKS5kaXNwYXRjaCgiZGVsZXRlIixbdF0pfSxtLnByb3RvdHlwZS5kZWw9bS5wcm90b3R5cGVbImRlbGV0ZSJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpc3BhdGNoKCJkZWxldGUiLFtlXSl9LHAubWFwcGx5PXAucG9zdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHAoZSkuZGlzcGF0Y2goInBvc3QiLFt0LG5dKX0sbS5wcm90b3R5cGUubWFwcGx5PW0ucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgicG9zdCIsW2UsdF0pfSxwLnNlbmQ9cC5tY2FsbD1wLmludm9rZT1mdW5jdGlvbihlLHQpe3JldHVybiBwKGUpLmRpc3BhdGNoKCJwb3N0IixbdCxHKGFyZ3VtZW50cywyKV0pfSxtLnByb3RvdHlwZS5zZW5kPW0ucHJvdG90eXBlLm1jYWxsPW0ucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgicG9zdCIsW2UsRyhhcmd1bWVudHMsMSldKX0scC5mYXBwbHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKS5kaXNwYXRjaCgiYXBwbHkiLFt2b2lkIDAsdF0pfSxtLnByb3RvdHlwZS5mYXBwbHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLGVdKX0scFsidHJ5Il09cC5mY2FsbD1mdW5jdGlvbihlKXtyZXR1cm4gcChlKS5kaXNwYXRjaCgiYXBwbHkiLFt2b2lkIDAsRyhhcmd1bWVudHMsMSldKX0sbS5wcm90b3R5cGUuZmNhbGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgiYXBwbHkiLFt2b2lkIDAsRyhhcmd1bWVudHMpXSl9LHAuZmJpbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKSxuPUcoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmRpc3BhdGNoKCJhcHBseSIsW3RoaXMsbi5jb25jYXQoRyhhcmd1bWVudHMpKV0pfX0sbS5wcm90b3R5cGUuZmJpbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9Ryhhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmRpc3BhdGNoKCJhcHBseSIsW3RoaXMsdC5jb25jYXQoRyhhcmd1bWVudHMpKV0pfX0scC5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUpLmRpc3BhdGNoKCJrZXlzIixbXSl9LG0ucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgia2V5cyIsW10pfSxwLmFsbD1VLG0ucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfSxwLmFueT1QLG0ucHJvdG90eXBlLmFueT1mdW5jdGlvbigpe3JldHVybiBQKHRoaXMpfSxwLmFsbFJlc29sdmVkPWMocSwiYWxsUmVzb2x2ZWQiLCJhbGxTZXR0bGVkIiksbS5wcm90b3R5cGUuYWxsUmVzb2x2ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcSh0aGlzKX0scC5hbGxTZXR0bGVkPUIsbS5wcm90b3R5cGUuYWxsU2V0dGxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIFUoWihlLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5pbnNwZWN0KCl9cmV0dXJuIGU9cChlKSxlLnRoZW4odCx0KX0pKX0pfSxwLmZhaWw9cFsiY2F0Y2giXT1mdW5jdGlvbihlLHQpe3JldHVybiBwKGUpLnRoZW4odm9pZCAwLHQpfSxtLnByb3RvdHlwZS5mYWlsPW0ucHJvdG90eXBlWyJjYXRjaCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGUpfSxwLnByb2dyZXNzPXosbS5wcm90b3R5cGUucHJvZ3Jlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsdm9pZCAwLGUpfSxwLmZpbj1wWyJmaW5hbGx5Il09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKVsiZmluYWxseSJdKHQpfSxtLnByb3RvdHlwZS5maW49bS5wcm90b3R5cGVbImZpbmFsbHkiXT1mdW5jdGlvbihlKXtyZXR1cm4gZT1wKGUpLHRoaXMudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZS5mY2FsbCgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdH0pfSxmdW5jdGlvbih0KXtyZXR1cm4gZS5mY2FsbCgpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyB0fSl9KX0scC5kb25lPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBwKGUpLmRvbmUodCxuLHIpfSxtLnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKHQsbixyKXt2YXIgYT1mdW5jdGlvbihlKXtwLm5leHRUaWNrKGZ1bmN0aW9uKCl7aWYoaShlLG8pLCFwLm9uZXJyb3IpdGhyb3cgZTtwLm9uZXJyb3IoZSl9KX0sbz10fHxufHxyP3RoaXMudGhlbih0LG4scik6dGhpczsib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuZG9tYWluJiYoYT1lLmRvbWFpbi5iaW5kKGEpKSxvLnRoZW4odm9pZCAwLGEpfSxwLnRpbWVvdXQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwKGUpLnRpbWVvdXQodCxuKX0sbS5wcm90b3R5cGUudGltZW91dD1mdW5jdGlvbihlLHQpe3ZhciBuPWgoKSxyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0JiYic3RyaW5nIiE9dHlwZW9mIHR8fCh0PW5ldyBFcnJvcih0fHwiVGltZWQgb3V0IGFmdGVyICIrZSsiIG1zIiksdC5jb2RlPSJFVElNRURPVVQiKSxuLnJlamVjdCh0KX0sZSk7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQociksbi5yZXNvbHZlKGUpfSxmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQociksbi5yZWplY3QoZSl9LG4ubm90aWZ5KSxuLnByb21pc2V9LHAuZGVsYXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ZSxlPXZvaWQgMCkscChlKS5kZWxheSh0KX0sbS5wcm90b3R5cGUuZGVsYXk9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbih0KXt2YXIgbj1oKCk7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnJlc29sdmUodCl9LGUpLG4ucHJvbWlzZX0pfSxwLm5mYXBwbHk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKS5uZmFwcGx5KHQpfSxtLnByb3RvdHlwZS5uZmFwcGx5PWZ1bmN0aW9uKGUpe3ZhciB0PWgoKSxuPUcoZSk7cmV0dXJuIG4ucHVzaCh0Lm1ha2VOb2RlUmVzb2x2ZXIoKSksdGhpcy5mYXBwbHkobikuZmFpbCh0LnJlamVjdCksdC5wcm9taXNlfSxwLm5mY2FsbD1mdW5jdGlvbihlKXt2YXIgdD1HKGFyZ3VtZW50cywxKTtyZXR1cm4gcChlKS5uZmFwcGx5KHQpfSxtLnByb3RvdHlwZS5uZmNhbGw9ZnVuY3Rpb24oKXt2YXIgZT1HKGFyZ3VtZW50cyksdD1oKCk7cmV0dXJuIGUucHVzaCh0Lm1ha2VOb2RlUmVzb2x2ZXIoKSksdGhpcy5mYXBwbHkoZSkuZmFpbCh0LnJlamVjdCksdC5wcm9taXNlfSxwLm5mYmluZD1wLmRlbm9kZWlmeT1mdW5jdGlvbihlKXt2YXIgdD1HKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmNvbmNhdChHKGFyZ3VtZW50cykpLHI9aCgpO3JldHVybiBuLnB1c2goci5tYWtlTm9kZVJlc29sdmVyKCkpLHAoZSkuZmFwcGx5KG4pLmZhaWwoci5yZWplY3QpLHIucHJvbWlzZX19LG0ucHJvdG90eXBlLm5mYmluZD1tLnByb3RvdHlwZS5kZW5vZGVpZnk9ZnVuY3Rpb24oKXt2YXIgZT1HKGFyZ3VtZW50cyk7cmV0dXJuIGUudW5zaGlmdCh0aGlzKSxwLmRlbm9kZWlmeS5hcHBseSh2b2lkIDAsZSl9LHAubmJpbmQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1HKGFyZ3VtZW50cywyKTtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfXZhciBpPW4uY29uY2F0KEcoYXJndW1lbnRzKSksYT1oKCk7cmV0dXJuIGkucHVzaChhLm1ha2VOb2RlUmVzb2x2ZXIoKSkscChyKS5mYXBwbHkoaSkuZmFpbChhLnJlamVjdCksYS5wcm9taXNlfX0sbS5wcm90b3R5cGUubmJpbmQ9ZnVuY3Rpb24oKXt2YXIgZT1HKGFyZ3VtZW50cywwKTtyZXR1cm4gZS51bnNoaWZ0KHRoaXMpLHAubmJpbmQuYXBwbHkodm9pZCAwLGUpfSxwLm5tYXBwbHk9cC5ucG9zdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHAoZSkubnBvc3QodCxuKX0sbS5wcm90b3R5cGUubm1hcHBseT1tLnByb3RvdHlwZS5ucG9zdD1mdW5jdGlvbihlLHQpe3ZhciBuPUcodHx8W10pLHI9aCgpO3JldHVybiBuLnB1c2goci5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZGlzcGF0Y2goInBvc3QiLFtlLG5dKS5mYWlsKHIucmVqZWN0KSxyLnByb21pc2V9LHAubnNlbmQ9cC5ubWNhbGw9cC5uaW52b2tlPWZ1bmN0aW9uKGUsdCl7dmFyIG49Ryhhcmd1bWVudHMsMikscj1oKCk7cmV0dXJuIG4ucHVzaChyLm1ha2VOb2RlUmVzb2x2ZXIoKSkscChlKS5kaXNwYXRjaCgicG9zdCIsW3Qsbl0pLmZhaWwoci5yZWplY3QpLHIucHJvbWlzZX0sbS5wcm90b3R5cGUubnNlbmQ9bS5wcm90b3R5cGUubm1jYWxsPW0ucHJvdG90eXBlLm5pbnZva2U9ZnVuY3Rpb24oZSl7dmFyIHQ9Ryhhcmd1bWVudHMsMSksbj1oKCk7cmV0dXJuIHQucHVzaChuLm1ha2VOb2RlUmVzb2x2ZXIoKSksdGhpcy5kaXNwYXRjaCgicG9zdCIsW2UsdF0pLmZhaWwobi5yZWplY3QpLG4ucHJvbWlzZX0scC5ub2RlaWZ5PU4sbS5wcm90b3R5cGUubm9kZWlmeT1mdW5jdGlvbihlKXtyZXR1cm4gZT92b2lkIHRoaXMudGhlbihmdW5jdGlvbih0KXtwLm5leHRUaWNrKGZ1bmN0aW9uKCl7ZShudWxsLHQpfSl9LGZ1bmN0aW9uKHQpe3AubmV4dFRpY2soZnVuY3Rpb24oKXtlKHQpfSl9KTp0aGlzfSxwLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlEubm9Db25mbGljdCBvbmx5IHdvcmtzIHdoZW4gUSBpcyB1c2VkIGFzIGEgZ2xvYmFsIil9O3ZhciB1ZT11KCk7cmV0dXJuIHB9KX0pLmNhbGwodGhpcyxlKCJfcHJvY2VzcyIpKX0se19wcm9jZXNzOjEyfV0sMTU4OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBpKGUpe2lmKCF5KGUpKXJldHVybiBlO3ZhciB0PVtdO2Zvcih2YXIgbiBpbiBlKWEodCxuLGVbbl0pO3JldHVybiB0LmpvaW4oIiYiKX1mdW5jdGlvbiBhKGUsdCxuKXtpZihudWxsIT1uKWlmKEFycmF5LmlzQXJyYXkobikpbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2EoZSx0LG4pfSk7ZWxzZSBpZih5KG4pKWZvcih2YXIgciBpbiBuKWEoZSx0KyJbIityKyJdIixuW3JdKTtlbHNlIGUucHVzaChlbmNvZGVVUklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChuKSk7ZWxzZSBudWxsPT09biYmZS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCh0KSl9ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQsbixyPXt9LGk9ZS5zcGxpdCgiJiIpLGE9MCxvPWkubGVuZ3RoO2E8bzsrK2EpdD1pW2FdLG49dC5pbmRleE9mKCI9Iiksbj09LTE/cltkZWNvZGVVUklDb21wb25lbnQodCldPSIiOnJbZGVjb2RlVVJJQ29tcG9uZW50KHQuc2xpY2UoMCxuKSldPWRlY29kZVVSSUNvbXBvbmVudCh0LnNsaWNlKG4rMSkpOworcmV0dXJuIHJ9ZnVuY3Rpb24gcyhlKXt2YXIgdCxuLHIsaSxhPWUuc3BsaXQoL1xyP1xuLyksbz17fTthLnBvcCgpO2Zvcih2YXIgcz0wLGw9YS5sZW5ndGg7czxsOysrcyluPWFbc10sdD1uLmluZGV4T2YoIjoiKSxyPW4uc2xpY2UoMCx0KS50b0xvd2VyQ2FzZSgpLGk9YihuLnNsaWNlKHQrMSkpLG9bcl09aTtyZXR1cm4gb31mdW5jdGlvbiBsKGUpe3JldHVybi9bXC8rXWpzb25cYi8udGVzdChlKX1mdW5jdGlvbiB1KGUpe3JldHVybiBlLnNwbGl0KC8gKjsgKi8pLnNoaWZ0KCl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZS5zcGxpdCgvICo7ICovKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj10LnNwbGl0KC8gKj0gKi8pLHI9bi5zaGlmdCgpLGk9bi5zaGlmdCgpO3JldHVybiByJiZpJiYoZVtyXT1pKSxlfSx7fSl9ZnVuY3Rpb24gcChlLHQpe3Q9dHx8e30sdGhpcy5yZXE9ZSx0aGlzLnhocj10aGlzLnJlcS54aHIsdGhpcy50ZXh0PSJIRUFEIiE9dGhpcy5yZXEubWV0aG9kJiYoIiI9PT10aGlzLnhoci5yZXNwb25zZVR5cGV8fCJ0ZXh0Ij09PXRoaXMueGhyLnJlc3BvbnNlVHlwZSl8fCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpcy54aHIucmVzcG9uc2VUeXBlP3RoaXMueGhyLnJlc3BvbnNlVGV4dDpudWxsLHRoaXMuc3RhdHVzVGV4dD10aGlzLnJlcS54aHIuc3RhdHVzVGV4dCx0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHRoaXMueGhyLnN0YXR1cyksdGhpcy5oZWFkZXI9dGhpcy5oZWFkZXJzPXModGhpcy54aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHRoaXMuaGVhZGVyWyJjb250ZW50LXR5cGUiXT10aGlzLnhoci5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIiksdGhpcy5fc2V0SGVhZGVyUHJvcGVydGllcyh0aGlzLmhlYWRlciksdGhpcy5ib2R5PSJIRUFEIiE9dGhpcy5yZXEubWV0aG9kP3RoaXMuX3BhcnNlQm9keSh0aGlzLnRleHQ/dGhpcy50ZXh0OnRoaXMueGhyLnJlc3BvbnNlKTpudWxsfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj10aGlzO3RoaXMuX3F1ZXJ5PXRoaXMuX3F1ZXJ5fHxbXSx0aGlzLm1ldGhvZD1lLHRoaXMudXJsPXQsdGhpcy5oZWFkZXI9e30sdGhpcy5faGVhZGVyPXt9LHRoaXMub24oImVuZCIsZnVuY3Rpb24oKXt2YXIgZT1udWxsLHQ9bnVsbDt0cnl7dD1uZXcgcChuKX1jYXRjaChyKXtyZXR1cm4gZT1uZXcgRXJyb3IoIlBhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlIiksZS5wYXJzZT0hMCxlLm9yaWdpbmFsPXIsZS5yYXdSZXNwb25zZT1uLnhociYmbi54aHIucmVzcG9uc2VUZXh0P24ueGhyLnJlc3BvbnNlVGV4dDpudWxsLGUuc3RhdHVzQ29kZT1uLnhociYmbi54aHIuc3RhdHVzP24ueGhyLnN0YXR1czpudWxsLG4uY2FsbGJhY2soZSl9bi5lbWl0KCJyZXNwb25zZSIsdCk7dmFyIGk7dHJ5eyh0LnN0YXR1czwyMDB8fHQuc3RhdHVzPj0zMDApJiYoaT1uZXcgRXJyb3IodC5zdGF0dXNUZXh0fHwiVW5zdWNjZXNzZnVsIEhUVFAgcmVzcG9uc2UiKSxpLm9yaWdpbmFsPWUsaS5yZXNwb25zZT10LGkuc3RhdHVzPXQuc3RhdHVzKX1jYXRjaChyKXtpPXJ9aT9uLmNhbGxiYWNrKGksdCk6bi5jYWxsYmFjayhudWxsLHQpfSl9ZnVuY3Rpb24gZihlLHQpe3ZhciBuPXYoIkRFTEVURSIsZSk7cmV0dXJuIHQmJm4uZW5kKHQpLG59dmFyIGQ7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/ZD13aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP2Q9c2VsZjooY29uc29sZS53YXJuKCJVc2luZyBicm93c2VyLW9ubHkgdmVyc2lvbiBvZiBzdXBlcmFnZW50IGluIG5vbi1icm93c2VyIGVudmlyb25tZW50IiksZD10aGlzKTt2YXIgbT1lKCJlbWl0dGVyIiksZz1lKCIuL3JlcXVlc3QtYmFzZSIpLHk9ZSgiLi9pcy1vYmplY3QiKSx2PXQuZXhwb3J0cz1lKCIuL3JlcXVlc3QiKS5iaW5kKG51bGwsaCk7di5nZXRYSFI9ZnVuY3Rpb24oKXtpZighKCFkLlhNTEh0dHBSZXF1ZXN0fHxkLmxvY2F0aW9uJiYiZmlsZToiPT1kLmxvY2F0aW9uLnByb3RvY29sJiZkLkFjdGl2ZVhPYmplY3QpKXJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChlKXt9dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAuNi4wIil9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQLjMuMCIpfWNhdGNoKGUpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpfWNhdGNoKGUpe310aHJvdyBFcnJvcigiQnJvd3Nlci1vbmx5IHZlcmlzb24gb2Ygc3VwZXJhZ2VudCBjb3VsZCBub3QgZmluZCBYSFIiKX07dmFyIGI9IiIudHJpbT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyheXHMqfFxzKiQpL2csIiIpfTt2LnNlcmlhbGl6ZU9iamVjdD1pLHYucGFyc2VTdHJpbmc9byx2LnR5cGVzPXtodG1sOiJ0ZXh0L2h0bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24iLHhtbDoiYXBwbGljYXRpb24veG1sIix1cmxlbmNvZGVkOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLGZvcm06ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsImZvcm0tZGF0YSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9LHYuc2VyaWFsaXplPXsiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjppLCJhcHBsaWNhdGlvbi9qc29uIjpKU09OLnN0cmluZ2lmeX0sdi5wYXJzZT17ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI6bywiYXBwbGljYXRpb24vanNvbiI6SlNPTi5wYXJzZX0scC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhlYWRlcltlLnRvTG93ZXJDYXNlKCldfSxwLnByb3RvdHlwZS5fc2V0SGVhZGVyUHJvcGVydGllcz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhlYWRlclsiY29udGVudC10eXBlIl18fCIiO3RoaXMudHlwZT11KHQpO3ZhciBuPWModCk7Zm9yKHZhciByIGluIG4pdGhpc1tyXT1uW3JdfSxwLnByb3RvdHlwZS5fcGFyc2VCb2R5PWZ1bmN0aW9uKGUpe3ZhciB0PXYucGFyc2VbdGhpcy50eXBlXTtyZXR1cm4hdCYmbCh0aGlzLnR5cGUpJiYodD12LnBhcnNlWyJhcHBsaWNhdGlvbi9qc29uIl0pLHQmJmUmJihlLmxlbmd0aHx8ZSBpbnN0YW5jZW9mIE9iamVjdCk/dChlKTpudWxsfSxwLnByb3RvdHlwZS5fc2V0U3RhdHVzUHJvcGVydGllcz1mdW5jdGlvbihlKXsxMjIzPT09ZSYmKGU9MjA0KTt2YXIgdD1lLzEwMHwwO3RoaXMuc3RhdHVzPXRoaXMuc3RhdHVzQ29kZT1lLHRoaXMuc3RhdHVzVHlwZT10LHRoaXMuaW5mbz0xPT10LHRoaXMub2s9Mj09dCx0aGlzLmNsaWVudEVycm9yPTQ9PXQsdGhpcy5zZXJ2ZXJFcnJvcj01PT10LHRoaXMuZXJyb3I9KDQ9PXR8fDU9PXQpJiZ0aGlzLnRvRXJyb3IoKSx0aGlzLmFjY2VwdGVkPTIwMj09ZSx0aGlzLm5vQ29udGVudD0yMDQ9PWUsdGhpcy5iYWRSZXF1ZXN0PTQwMD09ZSx0aGlzLnVuYXV0aG9yaXplZD00MDE9PWUsdGhpcy5ub3RBY2NlcHRhYmxlPTQwNj09ZSx0aGlzLm5vdEZvdW5kPTQwND09ZSx0aGlzLmZvcmJpZGRlbj00MDM9PWV9LHAucHJvdG90eXBlLnRvRXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlcSx0PWUubWV0aG9kLG49ZS51cmwscj0iY2Fubm90ICIrdCsiICIrbisiICgiK3RoaXMuc3RhdHVzKyIpIixpPW5ldyBFcnJvcihyKTtyZXR1cm4gaS5zdGF0dXM9dGhpcy5zdGF0dXMsaS5tZXRob2Q9dCxpLnVybD1uLGl9LHYuUmVzcG9uc2U9cCxtKGgucHJvdG90eXBlKTtmb3IodmFyIHcgaW4gZyloLnByb3RvdHlwZVt3XT1nW3ddO2gucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0KCJDb250ZW50LVR5cGUiLHYudHlwZXNbZV18fGUpLHRoaXN9LGgucHJvdG90eXBlLnJlc3BvbnNlVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlPWUsdGhpc30saC5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldCgiQWNjZXB0Iix2LnR5cGVzW2VdfHxlKSx0aGlzfSxoLnByb3RvdHlwZS5hdXRoPWZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2gobnx8KG49e3R5cGU6ImJhc2ljIn0pLG4udHlwZSl7Y2FzZSJiYXNpYyI6dmFyIHI9YnRvYShlKyI6Iit0KTt0aGlzLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrcik7YnJlYWs7Y2FzZSJhdXRvIjp0aGlzLnVzZXJuYW1lPWUsdGhpcy5wYXNzd29yZD10fXJldHVybiB0aGlzfSxoLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihlPWkoZSkpLGUmJnRoaXMuX3F1ZXJ5LnB1c2goZSksdGhpc30saC5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fZ2V0Rm9ybURhdGEoKS5hcHBlbmQoZSx0LG58fHQubmFtZSksdGhpc30saC5wcm90b3R5cGUuX2dldEZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1EYXRhfHwodGhpcy5fZm9ybURhdGE9bmV3IGQuRm9ybURhdGEpLHRoaXMuX2Zvcm1EYXRhfSxoLnByb3RvdHlwZS5jYWxsYmFjaz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NhbGxiYWNrO3RoaXMuY2xlYXJUaW1lb3V0KCksbihlLHQpfSxoLnByb3RvdHlwZS5jcm9zc0RvbWFpbkVycm9yPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEVycm9yKCJSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcblBvc3NpYmxlIGNhdXNlczogdGhlIG5ldHdvcmsgaXMgb2ZmbGluZSwgT3JpZ2luIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiwgdGhlIHBhZ2UgaXMgYmVpbmcgdW5sb2FkZWQsIGV0Yy4iKTtlLmNyb3NzRG9tYWluPSEwLGUuc3RhdHVzPXRoaXMuc3RhdHVzLGUubWV0aG9kPXRoaXMubWV0aG9kLGUudXJsPXRoaXMudXJsLHRoaXMuY2FsbGJhY2soZSl9LGgucHJvdG90eXBlLl90aW1lb3V0RXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl90aW1lb3V0LHQ9bmV3IEVycm9yKCJ0aW1lb3V0IG9mICIrZSsibXMgZXhjZWVkZWQiKTt0LnRpbWVvdXQ9ZSx0aGlzLmNhbGxiYWNrKHQpfSxoLnByb3RvdHlwZS5fYXBwZW5kUXVlcnlTdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9xdWVyeS5qb2luKCImIik7ZSYmKHRoaXMudXJsKz1+dGhpcy51cmwuaW5kZXhPZigiPyIpPyImIitlOiI/IitlKX0saC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnhocj12LmdldFhIUigpLGk9dGhpcy5fdGltZW91dCxhPXRoaXMuX2Zvcm1EYXRhfHx0aGlzLl9kYXRhO3RoaXMuX2NhbGxiYWNrPWV8fHIsbi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT1uLnJlYWR5U3RhdGUpe3ZhciBlO3RyeXtlPW4uc3RhdHVzfWNhdGNoKHIpe2U9MH1pZigwPT1lKXtpZih0LnRpbWVkb3V0KXJldHVybiB0Ll90aW1lb3V0RXJyb3IoKTtpZih0Ll9hYm9ydGVkKXJldHVybjtyZXR1cm4gdC5jcm9zc0RvbWFpbkVycm9yKCl9dC5lbWl0KCJlbmQiKX19O3ZhciBvPWZ1bmN0aW9uKGUpe2UudG90YWw+MCYmKGUucGVyY2VudD1lLmxvYWRlZC9lLnRvdGFsKjEwMCksZS5kaXJlY3Rpb249ImRvd25sb2FkIix0LmVtaXQoInByb2dyZXNzIixlKX07dGhpcy5oYXNMaXN0ZW5lcnMoInByb2dyZXNzIikmJihuLm9ucHJvZ3Jlc3M9byk7dHJ5e24udXBsb2FkJiZ0aGlzLmhhc0xpc3RlbmVycygicHJvZ3Jlc3MiKSYmKG4udXBsb2FkLm9ucHJvZ3Jlc3M9byl9Y2F0Y2gocyl7fWlmKGkmJiF0aGlzLl90aW1lciYmKHRoaXMuX3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnRpbWVkb3V0PSEwLHQuYWJvcnQoKX0saSkpLHRoaXMuX2FwcGVuZFF1ZXJ5U3RyaW5nKCksdGhpcy51c2VybmFtZSYmdGhpcy5wYXNzd29yZD9uLm9wZW4odGhpcy5tZXRob2QsdGhpcy51cmwsITAsdGhpcy51c2VybmFtZSx0aGlzLnBhc3N3b3JkKTpuLm9wZW4odGhpcy5tZXRob2QsdGhpcy51cmwsITApLHRoaXMuX3dpdGhDcmVkZW50aWFscyYmKG4ud2l0aENyZWRlbnRpYWxzPSEwKSwiR0VUIiE9dGhpcy5tZXRob2QmJiJIRUFEIiE9dGhpcy5tZXRob2QmJiJzdHJpbmciIT10eXBlb2YgYSYmIXRoaXMuX2lzSG9zdChhKSl7dmFyIHU9dGhpcy5faGVhZGVyWyJjb250ZW50LXR5cGUiXSxjPXRoaXMuX3NlcmlhbGl6ZXJ8fHYuc2VyaWFsaXplW3U/dS5zcGxpdCgiOyIpWzBdOiIiXTshYyYmbCh1KSYmKGM9di5zZXJpYWxpemVbImFwcGxpY2F0aW9uL2pzb24iXSksYyYmKGE9YyhhKSl9Zm9yKHZhciBwIGluIHRoaXMuaGVhZGVyKW51bGwhPXRoaXMuaGVhZGVyW3BdJiZuLnNldFJlcXVlc3RIZWFkZXIocCx0aGlzLmhlYWRlcltwXSk7cmV0dXJuIHRoaXMuX3Jlc3BvbnNlVHlwZSYmKG4ucmVzcG9uc2VUeXBlPXRoaXMuX3Jlc3BvbnNlVHlwZSksdGhpcy5lbWl0KCJyZXF1ZXN0Iix0aGlzKSxuLnNlbmQoInVuZGVmaW5lZCIhPXR5cGVvZiBhP2E6bnVsbCksdGhpc30sdi5SZXF1ZXN0PWgsdi5nZXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXYoIkdFVCIsZSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSx0JiZyLnF1ZXJ5KHQpLG4mJnIuZW5kKG4pLHJ9LHYuaGVhZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9digiSEVBRCIsZSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSx0JiZyLnNlbmQodCksbiYmci5lbmQobikscn0sdi5vcHRpb25zPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj12KCJPUFRJT05TIixlKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxuJiZyLmVuZChuKSxyfSx2LmRlbD1mLHZbImRlbGV0ZSJdPWYsdi5wYXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9digiUEFUQ0giLGUpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksdCYmci5zZW5kKHQpLG4mJnIuZW5kKG4pLHJ9LHYucG9zdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9digiUE9TVCIsZSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSx0JiZyLnNlbmQodCksbiYmci5lbmQobikscn0sdi5wdXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXYoIlBVVCIsZSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSx0JiZyLnNlbmQodCksbiYmci5lbmQobikscn19LHsiLi9pcy1vYmplY3QiOjE1OSwiLi9yZXF1ZXN0IjoxNjEsIi4vcmVxdWVzdC1iYXNlIjoxNjAsZW1pdHRlcjoxNjJ9XSwxNTk6W2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfXQuZXhwb3J0cz1yfSx7fV0sMTYwOltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgiLi9pcy1vYmplY3QiKTtuLmNsZWFyVGltZW91dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90aW1lb3V0PTAsY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKSx0aGlzfSxuLnBhcnNlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJzZXI9ZSx0aGlzfSxuLnNlcmlhbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fc2VyaWFsaXplcj1lLHRoaXN9LG4udGltZW91dD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdGltZW91dD1lLHRoaXN9LG4udGhlbj1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSl7dmFyIG49dGhpczt0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe24uZW5kKGZ1bmN0aW9uKG4scil7bj90KG4pOmUocil9KX0pfXJldHVybiB0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZS50aGVuKGUsdCl9LG4udXNlPWZ1bmN0aW9uKGUpe3JldHVybiBlKHRoaXMpLHRoaXN9LG4uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9oZWFkZXJbZS50b0xvd2VyQ2FzZSgpXX0sbi5nZXRIZWFkZXI9bi5nZXQsbi5zZXQ9ZnVuY3Rpb24oZSx0KXtpZihyKGUpKXtmb3IodmFyIG4gaW4gZSl0aGlzLnNldChuLGVbbl0pO3JldHVybiB0aGlzfXJldHVybiB0aGlzLl9oZWFkZXJbZS50b0xvd2VyQ2FzZSgpXT10LHRoaXMuaGVhZGVyW2VdPXQsdGhpc30sbi51bnNldD1mdW5jdGlvbihlKXtyZXR1cm4gZGVsZXRlIHRoaXMuX2hlYWRlcltlLnRvTG93ZXJDYXNlKCldLGRlbGV0ZSB0aGlzLmhlYWRlcltlXSx0aGlzfSxuLmZpZWxkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGUsdCksdGhpc30sbi5hYm9ydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hYm9ydGVkP3RoaXM6KHRoaXMuX2Fib3J0ZWQ9ITAsdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksdGhpcy5yZXEmJnRoaXMucmVxLmFib3J0KCksdGhpcy5jbGVhclRpbWVvdXQoKSx0aGlzLmVtaXQoImFib3J0IiksdGhpcyl9LG4ud2l0aENyZWRlbnRpYWxzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpdGhDcmVkZW50aWFscz0hMCx0aGlzfSxuLnJlZGlyZWN0cz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbWF4UmVkaXJlY3RzPWUsdGhpc30sbi50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWV0aG9kOnRoaXMubWV0aG9kLHVybDp0aGlzLnVybCxkYXRhOnRoaXMuX2RhdGEsaGVhZGVyczp0aGlzLl9oZWFkZXJ9fSxuLl9pc0hvc3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9e30udG9TdHJpbmcuY2FsbChlKTtzd2l0Y2godCl7Y2FzZSJbb2JqZWN0IEZpbGVdIjpjYXNlIltvYmplY3QgQmxvYl0iOmNhc2UiW29iamVjdCBGb3JtRGF0YV0iOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxuLnNlbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKSxuPXRoaXMuX2hlYWRlclsiY29udGVudC10eXBlIl07aWYodCYmcih0aGlzLl9kYXRhKSlmb3IodmFyIGkgaW4gZSl0aGlzLl9kYXRhW2ldPWVbaV07ZWxzZSJzdHJpbmciPT10eXBlb2YgZT8obnx8dGhpcy50eXBlKCJmb3JtIiksbj10aGlzLl9oZWFkZXJbImNvbnRlbnQtdHlwZSJdLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiPT1uP3RoaXMuX2RhdGE9dGhpcy5fZGF0YT90aGlzLl9kYXRhKyImIitlOmU6dGhpcy5fZGF0YT0odGhpcy5fZGF0YXx8IiIpK2UpOnRoaXMuX2RhdGE9ZTtyZXR1cm4hdHx8dGhpcy5faXNIb3N0KGUpP3RoaXM6KG58fHRoaXMudHlwZSgianNvbiIpLHRoaXMpfX0seyIuL2lzLW9iamVjdCI6MTU5fV0sMTYxOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bmV3IGUoIkdFVCIsdCkuZW5kKG4pOjI9PWFyZ3VtZW50cy5sZW5ndGg/bmV3IGUoIkdFVCIsdCk6bmV3IGUodCxuKX10LmV4cG9ydHM9cn0se31dLDE2MjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYoZSlyZXR1cm4gaShlKX1mdW5jdGlvbiBpKGUpe2Zvcih2YXIgdCBpbiByLnByb3RvdHlwZSllW3RdPXIucHJvdG90eXBlW3RdO3JldHVybiBlfSJ1bmRlZmluZWQiIT10eXBlb2YgdCYmKHQuZXhwb3J0cz1yKSxyLnByb3RvdHlwZS5vbj1yLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LCh0aGlzLl9jYWxsYmFja3NbIiQiK2VdPXRoaXMuX2NhbGxiYWNrc1siJCIrZV18fFtdKS5wdXNoKHQpLHRoaXN9LHIucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7dGhpcy5vZmYoZSxuKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gbi5mbj10LHRoaXMub24oZSxuKSx0aGlzfSxyLnByb3RvdHlwZS5vZmY9ci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSwwPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl9jYWxsYmFja3M9e30sdGhpczt2YXIgbj10aGlzLl9jYWxsYmFja3NbIiQiK2VdO2lmKCFuKXJldHVybiB0aGlzO2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbIiQiK2VdLHRoaXM7Zm9yKHZhciByLGk9MDtpPG4ubGVuZ3RoO2krKylpZihyPW5baV0scj09PXR8fHIuZm49PT10KXtuLnNwbGljZShpLDEpO2JyZWFrfXJldHVybiB0aGlzfSxyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O3ZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG49dGhpcy5fY2FsbGJhY2tzWyIkIitlXTtpZihuKXtuPW4uc2xpY2UoMCk7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7KytyKW5bcl0uYXBwbHkodGhpcyx0KX1yZXR1cm4gdGhpc30sci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSx0aGlzLl9jYWxsYmFja3NbIiQiK2VdfHxbXX0sci5wcm90b3R5cGUuaGFzTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiEhdGhpcy5saXN0ZW5lcnMoZSkubGVuZ3RofX0se31dfSx7fSxbMV0pKDEpfSksd2luZG93LlN3YWdnZXJVaT1CYWNrYm9uZS5Sb3V0ZXIuZXh0ZW5kKHtkb21faWQ6InN3YWdnZXJfdWkiLG9wdGlvbnM6bnVsbCxhcGk6bnVsbCxoZWFkZXJWaWV3Om51bGwsbWFpblZpZXc6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe2U9ZXx8e30sIm1vZGVsIiE9PWUuZGVmYXVsdE1vZGVsUmVuZGVyaW5nJiYoZS5kZWZhdWx0TW9kZWxSZW5kZXJpbmc9InNjaGVtYSIpLGUuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZHx8KGUuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZD0xZTUpLGUuZG9tX2lkJiYodGhpcy5kb21faWQ9ZS5kb21faWQsZGVsZXRlIGUuZG9tX2lkKSxlLnN1cHBvcnRlZFN1Ym1pdE1ldGhvZHN8fChlLnN1cHBvcnRlZFN1Ym1pdE1ldGhvZHM9WyJnZXQiLCJwdXQiLCJwb3N0IiwiZGVsZXRlIiwiaGVhZCIsIm9wdGlvbnMiLCJwYXRjaCJdKSwic3RyaW5nIj09dHlwZW9mIGUub2F1dGgyUmVkaXJlY3RVcmwmJih3aW5kb3cub0F1dGhSZWRpcmVjdFVybD1lLm9hdXRoMlJlZGlyZWN0VXJsKSwkKCIjIit0aGlzLmRvbV9pZCkubGVuZ3RofHwkKCJib2R5IikuYXBwZW5kKCc8ZGl2IGlkPSInK3RoaXMuZG9tX2lkKyciPjwvZGl2PicpLHRoaXMub3B0aW9ucz1lLG1hcmtlZC5zZXRPcHRpb25zKHtnZm06ITB9KTt2YXIgdD10aGlzO3RoaXMub3B0aW9ucy5zdWNjZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIHQucmVuZGVyKCl9LHRoaXMub3B0aW9ucy5wcm9ncmVzcz1mdW5jdGlvbihlKXtyZXR1cm4gdC5zaG93TWVzc2FnZShlKX0sdGhpcy5vcHRpb25zLmZhaWx1cmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQub25Mb2FkRmFpbHVyZShlKX0sdGhpcy5oZWFkZXJWaWV3PW5ldyBTd2FnZ2VyVWkuVmlld3MuSGVhZGVyVmlldyh7ZWw6JCgiI2hlYWRlciIpfSksdGhpcy5oZWFkZXJWaWV3Lm9uKCJ1cGRhdGUtc3dhZ2dlci11aSIsZnVuY3Rpb24oZSl7cmV0dXJuIHQudXBkYXRlU3dhZ2dlclVpKGUpfSksSlNPTkVkaXRvci5kZWZhdWx0cy5pY29ubGlicy5zd2FnZ2VyPUpTT05FZGl0b3IuQWJzdHJhY3RJY29uTGliLmV4dGVuZCh7bWFwcGluZzp7Y29sbGFwc2U6ImNvbGxhcHNlIixleHBhbmQ6ImV4cGFuZCJ9LGljb25fcHJlZml4OiJzd2FnZ2VyLSJ9KX0sc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dGhpcy5vcHRpb25zW2VdPXR9LGdldE9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zW2VdfSx1cGRhdGVTd2FnZ2VyVWk6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zLnVybD1lLnVybCx0aGlzLmxvYWQoKX0sbG9hZDpmdW5jdGlvbigpe3RoaXMubWFpblZpZXcmJnRoaXMubWFpblZpZXcuY2xlYXIoKSx0aGlzLmF1dGhWaWV3JiZ0aGlzLmF1dGhWaWV3LnJlbW92ZSgpO3ZhciBlPXRoaXMub3B0aW9ucy51cmw7ZSYmMCE9PWUuaW5kZXhPZigiaHR0cCIpJiYoZT10aGlzLmJ1aWxkVXJsKHdpbmRvdy5sb2NhdGlvbi5ocmVmLnRvU3RyaW5nKCksZSkpLHRoaXMuYXBpJiYodGhpcy5vcHRpb25zLmF1dGhvcml6YXRpb25zPXRoaXMuYXBpLmNsaWVudEF1dGhvcml6YXRpb25zLmF1dGh6KSx0aGlzLm9wdGlvbnMudXJsPWUsdGhpcy5oZWFkZXJWaWV3LnVwZGF0ZShlKSx0aGlzLmFwaT1uZXcgU3dhZ2dlckNsaWVudCh0aGlzLm9wdGlvbnMpfSxjb2xsYXBzZUFsbDpmdW5jdGlvbigpe0RvY3MuY29sbGFwc2VFbmRwb2ludExpc3RGb3JSZXNvdXJjZSgiIil9LGxpc3RBbGw6ZnVuY3Rpb24oKXtEb2NzLmNvbGxhcHNlT3BlcmF0aW9uc0ZvclJlc291cmNlKCIiKX0sZXhwYW5kQWxsOmZ1bmN0aW9uKCl7RG9jcy5leHBhbmRPcGVyYXRpb25zRm9yUmVzb3VyY2UoIiIpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZTtzd2l0Y2godGhpcy5zaG93TWVzc2FnZSgiRmluaXNoZWQgTG9hZGluZyBSZXNvdXJjZSBJbmZvcm1hdGlvbi4gUmVuZGVyaW5nIFN3YWdnZXIgVUkuLi4iKSx0aGlzLm1haW5WaWV3PW5ldyBTd2FnZ2VyVWkuVmlld3MuTWFpblZpZXcoe21vZGVsOnRoaXMuYXBpLGVsOiQoIiMiK3RoaXMuZG9tX2lkKSxzd2FnZ2VyT3B0aW9uczp0aGlzLm9wdGlvbnMscm91dGVyOnRoaXN9KS5yZW5kZXIoKSxfLmlzRW1wdHkodGhpcy5hcGkuc2VjdXJpdHlEZWZpbml0aW9ucyl8fChlPV8ubWFwKHRoaXMuYXBpLnNlY3VyaXR5RGVmaW5pdGlvbnMsZnVuY3Rpb24oZSx0KXt2YXIgbj17fTtyZXR1cm4gblt0XT1lLG59KSx0aGlzLmF1dGhWaWV3PW5ldyBTd2FnZ2VyVWkuVmlld3MuQXV0aEJ1dHRvblZpZXcoe2RhdGE6U3dhZ2dlclVpLnV0aWxzLnBhcnNlU2VjdXJpdHlEZWZpbml0aW9ucyhlKSxyb3V0ZXI6dGhpc30pLCQoIiNhdXRoX2NvbnRhaW5lciIpLmFwcGVuZCh0aGlzLmF1dGhWaWV3LnJlbmRlcigpLmVsKSksdGhpcy5zaG93TWVzc2FnZSgpLHRoaXMub3B0aW9ucy5kb2NFeHBhbnNpb24pe2Nhc2UiZnVsbCI6dGhpcy5leHBhbmRBbGwoKTticmVhaztjYXNlImxpc3QiOnRoaXMubGlzdEFsbCgpfXRoaXMucmVuZGVyR0ZNKCksdGhpcy5vcHRpb25zLm9uQ29tcGxldGUmJnRoaXMub3B0aW9ucy5vbkNvbXBsZXRlKHRoaXMuYXBpLHRoaXMpLHNldFRpbWVvdXQoRG9jcy5zaGViYW5nLmJpbmQodGhpcyksMTAwKX0sYnVpbGRVcmw6ZnVuY3Rpb24oZSx0KXtpZigwPT09dC5pbmRleE9mKCIvIikpe3ZhciBuPWUuc3BsaXQoIi8iKTtyZXR1cm4gZT1uWzBdKyIvLyIrblsyXSxlK3R9dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGUuaW5kZXhPZigiPyIpPi0xJiYocj1NYXRoLm1pbihyLGUuaW5kZXhPZigiPyIpKSksZS5pbmRleE9mKCIjIik+LTEmJihyPU1hdGgubWluKHIsZS5pbmRleE9mKCIjIikpKSxlPWUuc3Vic3RyaW5nKDAsciksZS5pbmRleE9mKCIvIixlLmxlbmd0aC0xKSE9PS0xP2UrdDplKyIvIit0fSxzaG93TWVzc2FnZTpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0iIik7dmFyIHQ9JCgiI21lc3NhZ2UtYmFyIik7dC5yZW1vdmVDbGFzcygibWVzc2FnZS1mYWlsIiksdC5hZGRDbGFzcygibWVzc2FnZS1zdWNjZXNzIiksdC50ZXh0KGUpLHdpbmRvdy5Td2FnZ2VyVHJhbnNsYXRvciYmd2luZG93LlN3YWdnZXJUcmFuc2xhdG9yLnRyYW5zbGF0ZSh0KX0sb25Mb2FkRmFpbHVyZTpmdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT0iIiksJCgiI21lc3NhZ2UtYmFyIikucmVtb3ZlQ2xhc3MoIm1lc3NhZ2Utc3VjY2VzcyIpLCQoIiNtZXNzYWdlLWJhciIpLmFkZENsYXNzKCJtZXNzYWdlLWZhaWwiKTt2YXIgdD0kKCIjbWVzc2FnZS1iYXIiKS50ZXh0KGUpO3JldHVybiB0aGlzLm9wdGlvbnMub25GYWlsdXJlJiZ0aGlzLm9wdGlvbnMub25GYWlsdXJlKGUpLHR9LHJlbmRlckdGTTpmdW5jdGlvbigpeyQoIi5tYXJrZG93biIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmh0bWwobWFya2VkKCQodGhpcykuaHRtbCgpKSl9KSwkKCIucHJvcERlc2MiLCIubW9kZWwtc2lnbmF0dXJlIC5kZXNjcmlwdGlvbiIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmh0bWwobWFya2VkKCQodGhpcykuaHRtbCgpKSkuYWRkQ2xhc3MoIm1hcmtkb3duIil9KX19KSx3aW5kb3cuU3dhZ2dlclVpLlZpZXdzPXt9LHdpbmRvdy5Td2FnZ2VyVWkuTW9kZWxzPXt9LHdpbmRvdy5Td2FnZ2VyVWkuQ29sbGVjdGlvbnM9e30sd2luZG93LlN3YWdnZXJVaS5wYXJ0aWFscz17fSx3aW5kb3cuU3dhZ2dlclVpLnV0aWxzPXt9LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXsiY29uc29sZSJpbiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oZSl9d2luZG93LmF1dGhvcml6YXRpb25zPXthZGQ6ZnVuY3Rpb24oKXtpZihlKCJVc2luZyB3aW5kb3cuYXV0aG9yaXphdGlvbnMgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBTd2FnZ2VyVWkuYXBpLmNsaWVudEF1dGhvcml6YXRpb25zLmFkZCgpLiIpLCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LnN3YWdnZXJVaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ3aW5kb3cuc3dhZ2dlclVpIGlzIG5vdCBkZWZpbmVkIik7d2luZG93LnN3YWdnZXJVaSBpbnN0YW5jZW9mIFN3YWdnZXJVaSYmd2luZG93LnN3YWdnZXJVaS5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkLmFwcGx5KHdpbmRvdy5zd2FnZ2VyVWkuYXBpLmNsaWVudEF1dGhvcml6YXRpb25zLGFyZ3VtZW50cyl9fSx3aW5kb3cuQXBpS2V5QXV0aG9yaXphdGlvbj1mdW5jdGlvbigpe2UoIndpbmRvdy5BcGlLZXlBdXRob3JpemF0aW9uIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgU3dhZ2dlckNsaWVudC5BcGlLZXlBdXRob3JpemF0aW9uLiIpLFN3YWdnZXJDbGllbnQuQXBpS2V5QXV0aG9yaXphdGlvbi5hcHBseSh3aW5kb3csYXJndW1lbnRzKX0sd2luZG93LlBhc3N3b3JkQXV0aG9yaXphdGlvbj1mdW5jdGlvbigpe2UoIndpbmRvdy5QYXNzd29yZEF1dGhvcml6YXRpb24gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBTd2FnZ2VyQ2xpZW50LlBhc3N3b3JkQXV0aG9yaXphdGlvbi4iKSxTd2FnZ2VyQ2xpZW50LlBhc3N3b3JkQXV0aG9yaXphdGlvbi5hcHBseSh3aW5kb3csYXJndW1lbnRzKX19KCksZnVuY3Rpb24oZSx0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImIiXSxmdW5jdGlvbihuKXtyZXR1cm4gZS5Td2FnZ2VyVWk9dChuKX0pOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz10KHJlcXVpcmUoImIiKSk6ZS5Td2FnZ2VyVWk9dChlLmIpfSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIFN3YWdnZXJVaX0pLHdpbmRvdy5Td2FnZ2VyVWkudXRpbHM9e3BhcnNlU2VjdXJpdHlEZWZpbml0aW9uczpmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5hc3NpZ24oe30sdCkscj1bXSxpPVtdLGE9W10sbz13aW5kb3cuU3dhZ2dlclVpLnV0aWxzO3JldHVybiBBcnJheS5pc0FycmF5KGUpPyhlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9e30scz17fTtmb3IodmFyIGwgaW4gZSlpZihBcnJheS5pc0FycmF5KGVbbF0pKXtpZighbltsXSljb250aW51ZTtpZihuW2xdPW5bbF18fHt9LCJvYXV0aDIiPT09bltsXS50eXBlKXtzW2xdPU9iamVjdC5hc3NpZ24oe30sbltsXSksc1tsXS5zY29wZXM9T2JqZWN0LmFzc2lnbih7fSxuW2xdLnNjb3Blcyk7Zm9yKHZhciB1IGluIHNbbF0uc2NvcGVzKWVbbF0uaW5kZXhPZih1KTwwJiZkZWxldGUgc1tsXS5zY29wZXNbdV07c1tsXS5zY29wZXM9by5wYXJzZU9hdXRoMlNjb3BlcyhzW2xdLnNjb3BlcyksYT1fLm1lcmdlKGEsc1tsXS5zY29wZXMpfWVsc2UgdFtsXT1PYmplY3QuYXNzaWduKHt9LG5bbF0pfWVsc2Uib2F1dGgyIj09PWVbbF0udHlwZT8oc1tsXT1PYmplY3QuYXNzaWduKHt9LGVbbF0pLHNbbF0uc2NvcGVzPW8ucGFyc2VPYXV0aDJTY29wZXMoc1tsXS5zY29wZXMpLGE9Xy5tZXJnZShhLHNbbF0uc2NvcGVzKSk6dFtsXT1lW2xdO18uaXNFbXB0eSh0KXx8aS5wdXNoKHQpLF8uaXNFbXB0eShzKXx8ci5wdXNoKHMpfSkse2F1dGhzOmksb2F1dGgyOnIsc2NvcGVzOmF9KTpudWxsfSxwYXJzZU9hdXRoMlNjb3BlczpmdW5jdGlvbihlKXt2YXIgdCxuPU9iamVjdC5hc3NpZ24oe30sZSkscj1bXTtmb3IodCBpbiBuKXIucHVzaCh7c2NvcGU6dCxkZXNjcmlwdGlvbjpuW3RdfSk7cmV0dXJuIHJ9LHNhbml0aXplOmZ1bmN0aW9uKGUpe3JldHVybiBlPWUucmVwbGFjZSgvPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSwiIiksZT1lLnJlcGxhY2UoLyhvblx3Kz0iW14iXSoiKSoob25cdys9J1teJ10qJykqKG9uXHcrPVx3KlwoXHcqXCkpKi9naSwiIil9fSxTd2FnZ2VyVWkuTW9kZWxzLkFwaUtleUF1dGhNb2RlbD1CYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOnsiaW4iOiIiLG5hbWU6IiIsdGl0bGU6IiIsdmFsdWU6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLm9uKCJjaGFuZ2UiLHRoaXMudmFsaWRhdGUpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciBlPSEhdGhpcy5nZXQoInZhbHVlIik7cmV0dXJuIHRoaXMuc2V0KCJ2YWxpZCIsZSksZX19KSxTd2FnZ2VyVWkuVmlld3MuQXBpS2V5QXV0aFZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2V2ZW50czp7ImNoYW5nZSAuaW5wdXRfYXBpS2V5X2VudHJ5IjoiYXBpS2V5Q2hhbmdlIn0sc2VsZWN0b3JzOnthcGlrZXlJbnB1dDoiLmlucHV0X2FwaUtleV9lbnRyeSJ9LHRlbXBsYXRlOkhhbmRsZWJhcnMudGVtcGxhdGVzLmFwaWtleV9hdXRoLGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWV8fHt9LHRoaXMucm91dGVyPXRoaXMub3B0aW9ucy5yb3V0ZXJ9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5odG1sKHRoaXMudGVtcGxhdGUodGhpcy5tb2RlbC50b0pTT04oKSkpLHRoaXN9LGFwaUtleUNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD0kKGUudGFyZ2V0KS52YWwoKTt0JiZ0aGlzLiQodGhpcy5zZWxlY3RvcnMuYXBpa2V5SW5wdXQpLnJlbW92ZUNsYXNzKCJlcnJvciIpLHRoaXMubW9kZWwuc2V0KCJ2YWx1ZSIsdCl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2RlbC52YWxpZGF0ZSgpfSxoaWdobGlnaHRJbnZhbGlkOmZ1bmN0aW9uKCl7dGhpcy5pc1ZhbGlkKCl8fHRoaXMuJCh0aGlzLnNlbGVjdG9ycy5hcGlrZXlJbnB1dCkuYWRkQ2xhc3MoImVycm9yIil9fSksU3dhZ2dlclVpLlZpZXdzLkF1dGhCdXR0b25WaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtldmVudHM6eyJjbGljayAuYXV0aG9yaXplX19idG4iOiJhdXRob3JpemVCdG5DbGljayJ9LHRwbHM6e3BvcHVwOkhhbmRsZWJhcnMudGVtcGxhdGVzLnBvcHVwLGF1dGhCdG46SGFuZGxlYmFycy50ZW1wbGF0ZXMuYXV0aF9idXR0b24sYXV0aEJ0bk9wZXJhdGlvbjpIYW5kbGViYXJzLnRlbXBsYXRlcy5hdXRoX2J1dHRvbl9vcGVyYXRpb259LGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWV8fHt9LHRoaXMub3B0aW9ucy5kYXRhPXRoaXMub3B0aW9ucy5kYXRhfHx7fSx0aGlzLmlzT3BlcmF0aW9uPXRoaXMub3B0aW9ucy5pc09wZXJhdGlvbix0aGlzLm1vZGVsPXRoaXMubW9kZWx8fHt9LHRoaXMucm91dGVyPXRoaXMub3B0aW9ucy5yb3V0ZXIsdGhpcy5hdXRocz10aGlzLm9wdGlvbnMuZGF0YS5vYXV0aDIuY29uY2F0KHRoaXMub3B0aW9ucy5kYXRhLmF1dGhzKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5pc09wZXJhdGlvbj8iYXV0aEJ0bk9wZXJhdGlvbiI6ImF1dGhCdG4iO3JldHVybiB0aGlzLiRhdXRoRWw9dGhpcy5yZW5kZXJBdXRocyh0aGlzLmF1dGhzKSx0aGlzLiRlbC5odG1sKHRoaXMudHBsc1tlXSh0aGlzLm1vZGVsKSksdGhpc30sYXV0aG9yaXplQnRuQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5wcmV2ZW50RGVmYXVsdCgpLHQ9e3RpdGxlOiJBdmFpbGFibGUgYXV0aG9yaXphdGlvbnMiLGNvbnRlbnQ6dGhpcy4kYXV0aEVsfSx0aGlzLnJlbmRlcigpLHRoaXMucG9wdXA9bmV3IFN3YWdnZXJVaS5WaWV3cy5Qb3B1cFZpZXcoe21vZGVsOnR9KSx0aGlzLnBvcHVwLnJlbmRlcigpfSxyZW5kZXJBdXRoczpmdW5jdGlvbihlKXt2YXIgdD0kKCI8ZGl2PiIpLG49ITE7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1uZXcgU3dhZ2dlclVpLlZpZXdzLkF1dGhWaWV3KHtkYXRhOmUscm91dGVyOnRoaXMucm91dGVyfSksaT1yLnJlbmRlcigpLmVsO3QuYXBwZW5kKGkpLHIuaXNMb2dvdXQmJihuPSEwKX0sdGhpcyksdGhpcy5tb2RlbC5pc0xvZ291dD1uLHR9fSksU3dhZ2dlclVpLkNvbGxlY3Rpb25zLkF1dGhzQ29sbGVjdGlvbj1CYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Y29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2VbMF09dGhpcy5wYXJzZShlWzBdKSxCYWNrYm9uZS5Db2xsZWN0aW9uLmFwcGx5KHRoaXMsZSl9LGFkZDpmdW5jdGlvbihlKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO0FycmF5LmlzQXJyYXkoZSk/dFswXT1fLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhbmRsZU9uZShlKX0sdGhpcyk6dFswXT10aGlzLmhhbmRsZU9uZShlKSxCYWNrYm9uZS5Db2xsZWN0aW9uLnByb3RvdHlwZS5hZGQuYXBwbHkodGhpcyx0KX0saGFuZGxlT25lOmZ1bmN0aW9uKGUpe3ZhciB0PWU7aWYoIShlIGluc3RhbmNlb2YgQmFja2JvbmUuTW9kZWwpKXN3aXRjaChlLnR5cGUpe2Nhc2Uib2F1dGgyIjp0PW5ldyBTd2FnZ2VyVWkuTW9kZWxzLk9hdXRoMk1vZGVsKGUpO2JyZWFrO2Nhc2UiYmFzaWMiOnQ9bmV3IFN3YWdnZXJVaS5Nb2RlbHMuQmFzaWNBdXRoTW9kZWwoZSk7YnJlYWs7Y2FzZSJhcGlLZXkiOnQ9bmV3IFN3YWdnZXJVaS5Nb2RlbHMuQXBpS2V5QXV0aE1vZGVsKGUpO2JyZWFrO2RlZmF1bHQ6dD1uZXcgQmFja2JvbmUuTW9kZWwoZSl9cmV0dXJuIHR9LGlzVmFsaWQ6ZnVuY3Rpb24oKXt2YXIgZT0hMDtyZXR1cm4gdGhpcy5tb2RlbHMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnZhbGlkYXRlKCl8fChlPSExKX0pLGV9LGlzQXV0aG9yaXplZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aD09PXRoaXMud2hlcmUoe2lzTG9nb3V0OiEwfSkubGVuZ3RofSxpc1BhcnRpYWxseUF1dGhvcml6ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aGVyZSh7aXNMb2dvdXQ6ITB9KS5sZW5ndGg+MH0scGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuc3dhZ2dlclVpJiYodD1PYmplY3QuYXNzaWduKHt9LHdpbmRvdy5zd2FnZ2VyVWkuYXBpLmNsaWVudEF1dGhvcml6YXRpb25zLmF1dGh6KSksXy5tYXAoZSxmdW5jdGlvbihlLG4pe3ZhciByPXRbbl0mJiJiYXNpYyI9PT1lLnR5cGUmJnRbbl0udXNlcm5hbWUmJnRbbl0ucGFzc3dvcmQ7cmV0dXJuIF8uZXh0ZW5kKGUse3RpdGxlOm59KSwodFtuXXx8cikmJl8uZXh0ZW5kKGUse2lzTG9nb3V0OiEwLHZhbHVlOnI/dm9pZCAwOnRbbl0udmFsdWUsdXNlcm5hbWU6cj90W25dLnVzZXJuYW1lOnZvaWQgMCxwYXNzd29yZDpyP3Rbbl0ucGFzc3dvcmQ6dm9pZCAwLHZhbGlkOiEwfSksZX0pfX0pLFN3YWdnZXJVaS5WaWV3cy5BdXRoc0NvbGxlY3Rpb25WaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1lfHx7fSx0aGlzLm9wdGlvbnMuZGF0YT10aGlzLm9wdGlvbnMuZGF0YXx8e30sdGhpcy5yb3V0ZXI9dGhpcy5vcHRpb25zLnJvdXRlcix0aGlzLmNvbGxlY3Rpb249bmV3IFN3YWdnZXJVaS5Db2xsZWN0aW9ucy5BdXRoc0NvbGxlY3Rpb24oZS5kYXRhKSx0aGlzLiRpbm5lckVsPSQoIjxkaXY+IiksdGhpcy5hdXRoVmlld3M9W119LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbihlKXt0aGlzLnJlbmRlck9uZUF1dGgoZSl9LHRoaXMpLHRoaXMuJGVsLmh0bWwodGhpcy4kaW5uZXJFbC5odG1sKCk/dGhpcy4kaW5uZXJFbDoiIiksdGhpc30scmVuZGVyT25lQXV0aDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLmdldCgidHlwZSIpOyJhcGlLZXkiPT09aT9yPSJBcGlLZXlBdXRoVmlldyI6ImJhc2ljIj09PWkmJjA9PT10aGlzLiRpbm5lckVsLmZpbmQoIi5iYXNpY19hdXRoX2NvbnRhaW5lciIpLmxlbmd0aD9yPSJCYXNpY0F1dGhWaWV3Ijoib2F1dGgyIj09PWkmJihyPSJPYXV0aDJWaWV3IiksciYmKG49bmV3IFN3YWdnZXJVaS5WaWV3c1tyXSh7bW9kZWw6ZSxyb3V0ZXI6dGhpcy5yb3V0ZXJ9KSx0PW4ucmVuZGVyKCkuZWwsdGhpcy5hdXRoVmlld3MucHVzaChuKSksdGhpcy4kaW5uZXJFbC5hcHBlbmQodCl9LGhpZ2hsaWdodEludmFsaWQ6ZnVuY3Rpb24oKXt0aGlzLmF1dGhWaWV3cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuaGlnaGxpZ2h0SW52YWxpZCgpfSx0aGlzKX19KSxTd2FnZ2VyVWkuVmlld3MuQXV0aFZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2V2ZW50czp7ImNsaWNrIC5hdXRoX3N1Ym1pdF9fYnV0dG9uIjoiYXV0aG9yaXplQ2xpY2siLCJjbGljayAuYXV0aF9sb2dvdXRfX2J1dHRvbiI6ImxvZ291dENsaWNrIn0sdHBsczp7bWFpbjpIYW5kbGViYXJzLnRlbXBsYXRlcy5hdXRoX3ZpZXd9LHNlbGVjdG9yczp7aW5uZXJFbDoiLmF1dGhfaW5uZXIiLGF1dGhCdG46Ii5hdXRoX3N1Ym1pdF9fYnV0dG9uIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9ZXx8e30sZS5kYXRhPWUuZGF0YXx8e30sdGhpcy5yb3V0ZXI9dGhpcy5vcHRpb25zLnJvdXRlcix0aGlzLmF1dGhzQ29sbGVjdGlvblZpZXc9bmV3IFN3YWdnZXJVaS5WaWV3cy5BdXRoc0NvbGxlY3Rpb25WaWV3KHtkYXRhOmUuZGF0YX0pLHRoaXMuJGVsLmh0bWwodGhpcy50cGxzLm1haW4oe2lzTG9nb3V0OnRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmlzQXV0aG9yaXplZCgpLGlzQXV0aG9yaXplZDp0aGlzLmF1dGhzQ29sbGVjdGlvblZpZXcuY29sbGVjdGlvbi5pc1BhcnRpYWxseUF1dGhvcml6ZWQoKX0pKSx0aGlzLiRpbm5lckVsPXRoaXMuJCh0aGlzLnNlbGVjdG9ycy5pbm5lckVsKSx0aGlzLmlzTG9nb3V0PXRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5jb2xsZWN0aW9uLmlzUGFydGlhbGx5QXV0aG9yaXplZCgpfSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kaW5uZXJFbC5odG1sKHRoaXMuYXV0aHNDb2xsZWN0aW9uVmlldy5yZW5kZXIoKS5lbCksdGhpc30sYXV0aG9yaXplQ2xpY2s6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5hdXRoc0NvbGxlY3Rpb25WaWV3LmNvbGxlY3Rpb24uaXNWYWxpZCgpP3RoaXMuYXV0aG9yaXplKCk6dGhpcy5hdXRoc0NvbGxlY3Rpb25WaWV3LmhpZ2hsaWdodEludmFsaWQoKX0sYXV0aG9yaXplOmZ1bmN0aW9uKCl7dGhpcy5hdXRoc0NvbGxlY3Rpb25WaWV3LmNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5nZXQoInR5cGUiKTsiYXBpS2V5Ij09PXI/KHQ9bmV3IFN3YWdnZXJDbGllbnQuQXBpS2V5QXV0aG9yaXphdGlvbihlLmdldCgibmFtZSIpLGUuZ2V0KCJ2YWx1ZSIpLGUuZ2V0KCJpbiIpKSx0aGlzLnJvdXRlci5hcGkuY2xpZW50QXV0aG9yaXphdGlvbnMuYWRkKGUuZ2V0KCJ0aXRsZSIpLHQpKToiYmFzaWMiPT09cj8obj1uZXcgU3dhZ2dlckNsaWVudC5QYXNzd29yZEF1dGhvcml6YXRpb24oZS5nZXQoInVzZXJuYW1lIiksZS5nZXQoInBhc3N3b3JkIikpLHRoaXMucm91dGVyLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5hZGQoZS5nZXQoInRpdGxlIiksbikpOiJvYXV0aDIiPT09ciYmdGhpcy5oYW5kbGVPYXV0aDJMb2dpbihlKX0sdGhpcyksdGhpcy5yb3V0ZXIubG9hZCgpfSxsb2dvdXRDbGljazpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5hdXRoc0NvbGxlY3Rpb25WaWV3LmNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbihlKXt3aW5kb3cuc3dhZ2dlclVpLmFwaS5jbGllbnRBdXRob3JpemF0aW9ucy5yZW1vdmUoZS5nZXQoInRpdGxlIikpfSksdGhpcy5yb3V0ZXIubG9hZCgpfSxoYW5kbGVPYXV0aDJMb2dpbjpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlLnZlbmRvckV4dGVuc2lvbnNbIngtdG9rZW5OYW1lIl18fGUudG9rZW5OYW1lfXZhciBuLHIsaSxhPXdpbmRvdy5sb2NhdGlvbixvPWxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygwLGxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpLHM9YS5wcm90b2NvbCsiLy8iK2EuaG9zdCtvKyIvbzJjLmh0bWwiLGw9d2luZG93Lm9BdXRoUmVkaXJlY3RVcmx8fHMsdT1udWxsLGM9Xy5tYXAoZS5nZXQoInNjb3BlcyIpLGZ1bmN0aW9uKGUpe2lmKGUuY2hlY2tlZClyZXR1cm4gZS5zY29wZX0pLHA9d2luZG93LnN3YWdnZXJVaUF1dGh8fCh3aW5kb3cuc3dhZ2dlclVpQXV0aD17fSk7cC5PQXV0aFNjaGVtZUtleT1lLmdldCgidGl0bGUiKSx3aW5kb3cuZW5hYmxlZFNjb3Blcz1jO3ZhciBoPWUuZ2V0KCJmbG93Iik7aWYoIm9hdXRoMiIhPT1lLmdldCgidHlwZSIpfHwhaHx8ImltcGxpY2l0IiE9PWgmJiJhY2Nlc3NDb2RlIiE9PWgpe2lmKCJvYXV0aDIiPT09ZS5nZXQoInR5cGUiKSYmaCYmImFwcGxpY2F0aW9uIj09PWgpcmV0dXJuIHI9ZS5hdHRyaWJ1dGVzLHAudG9rZW5OYW1lPXQocil8fCJhY2Nlc3NfdG9rZW4iLHZvaWQgdGhpcy5jbGllbnRDcmVkZW50aWFsc0Zsb3coYyxyLHAuT0F1dGhTY2hlbWVLZXkpO2lmKCJvYXV0aDIiPT09ZS5nZXQoInR5cGUiKSYmaCYmInBhc3N3b3JkIj09PWgpcmV0dXJuIHI9ZS5hdHRyaWJ1dGVzLHAudG9rZW5OYW1lPXQocil8fCJhY2Nlc3NfdG9rZW4iLHZvaWQgdGhpcy5wYXNzd29yZEZsb3coYyxyLHAuT0F1dGhTY2hlbWVLZXkpO2lmKGUuZ2V0KCJncmFudFR5cGVzIikpe3ZhciBmPWUuZ2V0KCJncmFudFR5cGVzIik7Zm9yKHZhciBkIGluIGYpZi5oYXNPd25Qcm9wZXJ0eShkKSYmImltcGxpY2l0Ij09PWQ/KHI9ZltkXSxpPXIubG9naW5FbmRwb2ludC51cmwsdT1yLmxvZ2luRW5kcG9pbnQudXJsKyI/cmVzcG9uc2VfdHlwZT10b2tlbiIscC50b2tlbk5hbWU9dChyKSk6Zi5oYXNPd25Qcm9wZXJ0eShkKSYmImFjY2Vzc0NvZGUiPT09ZCYmKHI9ZltkXSxpPXIudG9rZW5SZXF1ZXN0RW5kcG9pbnQudXJsLHU9ci50b2tlblJlcXVlc3RFbmRwb2ludC51cmwrIj9yZXNwb25zZV90eXBlPWNvZGUiLHAudG9rZW5OYW1lPXQocikpfX1lbHNlIHI9ZS5hdHRyaWJ1dGVzLHU9ci5hdXRob3JpemF0aW9uVXJsKyI/cmVzcG9uc2VfdHlwZT0iKygiaW1wbGljaXQiPT09aD8idG9rZW4iOiJjb2RlIikscC50b2tlbk5hbWU9dChyKXx8ImFjY2Vzc190b2tlbiIscC50b2tlblVybD0iYWNjZXNzQ29kZSI9PT1oP3IudG9rZW5Vcmw6bnVsbCxuPXAuT0F1dGhTY2hlbWVLZXk7cmVkaXJlY3RfdXJpPWwsdSs9IiZyZWRpcmVjdF91cmk9IitlbmNvZGVVUklDb21wb25lbnQobCksdSs9IiZyZWFsbT0iK2VuY29kZVVSSUNvbXBvbmVudChyZWFsbSksdSs9IiZjbGllbnRfaWQ9IitlbmNvZGVVUklDb21wb25lbnQoY2xpZW50SWQpLHUrPSImc2NvcGU9IitlbmNvZGVVUklDb21wb25lbnQoYy5qb2luKHNjb3BlU2VwYXJhdG9yKSksdSs9IiZzdGF0ZT0iK2VuY29kZVVSSUNvbXBvbmVudChuKTtmb3IodmFyIG0gaW4gYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zKXUrPSImIittKyI9IitlbmNvZGVVUklDb21wb25lbnQoYWRkaXRpb25hbFF1ZXJ5U3RyaW5nUGFyYW1zW21dKTt3aW5kb3cub3Blbih1KX0sY2xpZW50Q3JlZGVudGlhbHNGbG93OmZ1bmN0aW9uKGUsdCxuKXt0aGlzLmFjY2Vzc1Rva2VuUmVxdWVzdChlLHQsbiwiY2xpZW50X2NyZWRlbnRpYWxzIil9LHBhc3N3b3JkRmxvdzpmdW5jdGlvbihlLHQsbil7dGhpcy5hY2Nlc3NUb2tlblJlcXVlc3QoZSx0LG4sInBhc3N3b3JkIix7dXNlcm5hbWU6dC51c2VybmFtZSxwYXNzd29yZDp0LnBhc3N3b3JkfSl9LGFjY2Vzc1Rva2VuUmVxdWVzdDpmdW5jdGlvbihlLHQsbixyLGkpe2k9JC5leHRlbmQoe30se3Njb3BlOmUuam9pbigiICIpLGdyYW50X3R5cGU6cn0saSk7dmFyIGE9e307c3dpdGNoKHQuY2xpZW50QXV0aGVudGljYXRpb25UeXBlKXtjYXNlImJhc2ljIjphLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYSh0LmNsaWVudElkKyI6Iit0LmNsaWVudFNlY3JldCk7YnJlYWs7Y2FzZSJyZXF1ZXN0LWJvZHkiOmkuY2xpZW50X2lkPXQuY2xpZW50SWQsaS5jbGllbnRfc2VjcmV0PXQuY2xpZW50U2VjcmV0fSQuYWpheCh7dXJsOnQudG9rZW5VcmwsdHlwZToiUE9TVCIsZGF0YTppLGhlYWRlcnM6YSxzdWNjZXNzOmZ1bmN0aW9uKGUpe29uT0F1dGhDb21wbGV0ZShlLG4pfSxlcnJvcjpmdW5jdGlvbigpe29uT0F1dGhDb21wbGV0ZSgiIil9fSl9fSksU3dhZ2dlclVpLk1vZGVscy5CYXNpY0F1dGhNb2RlbD1CYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOnt1c2VybmFtZToiIixwYXNzd29yZDoiIix0aXRsZToiYmFzaWMifSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5vbigiY2hhbmdlIix0aGlzLnZhbGlkYXRlKX0sdmFsaWRhdGU6ZnVuY3Rpb24oKXt2YXIgZT0hIXRoaXMuZ2V0KCJwYXNzd29yZCIpJiYhIXRoaXMuZ2V0KCJ1c2VybmFtZSIpO3JldHVybiB0aGlzLnNldCgidmFsaWQiLGUpLGV9fSksU3dhZ2dlclVpLlZpZXdzLkJhc2ljQXV0aFZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPWV8fHt9LHRoaXMucm91dGVyPXRoaXMub3B0aW9ucy5yb3V0ZXJ9LGV2ZW50czp7ImNoYW5nZSAuYXV0aF9pbnB1dCI6ImlucHV0Q2hhbmdlIn0sc2VsZWN0b3JzOnt1c2VybmFtZUlucHV0OiIuYmFzaWNfYXV0aF9fdXNlcm5hbWUiLHBhc3N3b3JkSW5wdXQ6Ii5iYXNpY19hdXRoX19wYXNzd29yZCJ9LGNsczp7ZXJyb3I6ImVycm9yIn0sdGVtcGxhdGU6SGFuZGxlYmFycy50ZW1wbGF0ZXMuYmFzaWNfYXV0aCxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gJCh0aGlzLmVsKS5odG1sKHRoaXMudGVtcGxhdGUodGhpcy5tb2RlbC50b0pTT04oKSkpLHRoaXN9LGlucHV0Q2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PSQoZS50YXJnZXQpLG49dC52YWwoKSxyPXQucHJvcCgibmFtZSIpO24mJnQucmVtb3ZlQ2xhc3ModGhpcy5jbHMuZXJyb3IpLHRoaXMubW9kZWwuc2V0KHIsbil9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2RlbC52YWxpZGF0ZSgpfSxoaWdobGlnaHRJbnZhbGlkOmZ1bmN0aW9uKCl7dGhpcy5tb2RlbC5nZXQoInVzZXJuYW1lIil8fHRoaXMuJCh0aGlzLnNlbGVjdG9ycy51c2VybmFtZUlucHV0KS5hZGRDbGFzcyh0aGlzLmNscy5lcnJvcil9fSksU3dhZ2dlclVpLlZpZXdzLkNvbnRlbnRUeXBlVmlldz1CYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scmVuZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9kZWwuY29udGVudFR5cGVJZD0iY3QiK01hdGgucmFuZG9tKCksJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLmNvbnRlbnRfdHlwZSh0aGlzLm1vZGVsKSksdGhpc319KSxTd2FnZ2VyVWkuVmlld3MuSGVhZGVyVmlldz1CYWNrYm9uZS5WaWV3LmV4dGVuZCh7ZXZlbnRzOnsiY2xpY2sgI3Nob3ctcGV0LXN0b3JlLWljb24iOiJzaG93UGV0U3RvcmUiLCJjbGljayAjZXhwbG9yZSI6InNob3dDdXN0b20iLCJzdWJtaXQgI2FwaV9zZWxlY3RvciI6InNob3dDdXN0b20iLCJrZXl1cCAjaW5wdXRfYmFzZVVybCI6InNob3dDdXN0b21PbktleXVwIiwia2V5dXAgI2lucHV0X2FwaUtleSI6InNob3dDdXN0b21PbktleXVwIn0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sc2hvd1BldFN0b3JlOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyKCJ1cGRhdGUtc3dhZ2dlci11aSIse3VybDoiaHR0cDovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uIn0pfSxzaG93Q3VzdG9tT25LZXl1cDpmdW5jdGlvbihlKXsxMz09PWUua2V5Q29kZSYmdGhpcy5zaG93Q3VzdG9tKCl9LHNob3dDdXN0b206ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMudHJpZ2dlcigidXBkYXRlLXN3YWdnZXItdWkiLHt1cmw6JCgiI2lucHV0X2Jhc2VVcmwiKS52YWwoKX0pfSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKSwkKCIjaW5wdXRfYmFzZVVybCIpLnZhbChlKSxuJiZ0aGlzLnRyaWdnZXIoInVwZGF0ZS1zd2FnZ2VyLXVpIix7dXJsOmV9KX19KSxTd2FnZ2VyVWkuVmlld3MuTWFpblZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2FwaXNTb3J0ZXI6e2FscGhhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubmFtZS5sb2NhbGVDb21wYXJlKHQubmFtZSl9fSxvcGVyYXRpb25zU29ydGVyczp7YWxwaGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5wYXRoLmxvY2FsZUNvbXBhcmUodC5wYXRoKX0sbWV0aG9kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWV0aG9kLmxvY2FsZUNvbXBhcmUodC5tZXRob2QpfX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaTtpZihlPWV8fHt9LHRoaXMucm91dGVyPWUucm91dGVyLGUuc3dhZ2dlck9wdGlvbnMuYXBpc1NvcnRlciYmKHQ9ZS5zd2FnZ2VyT3B0aW9ucy5hcGlzU29ydGVyLG49Xy5pc0Z1bmN0aW9uKHQpP3Q6dGhpcy5hcGlzU29ydGVyW3RdLF8uaXNGdW5jdGlvbihuKSYmdGhpcy5tb2RlbC5hcGlzQXJyYXkuc29ydChuKSksZS5zd2FnZ2VyT3B0aW9ucy5vcGVyYXRpb25zU29ydGVyJiYodD1lLnN3YWdnZXJPcHRpb25zLm9wZXJhdGlvbnNTb3J0ZXIsbj1fLmlzRnVuY3Rpb24odCk/dDp0aGlzLm9wZXJhdGlvbnNTb3J0ZXJzW3RdLF8uaXNGdW5jdGlvbihuKSkpZm9yKHIgaW4gdGhpcy5tb2RlbC5hcGlzQXJyYXkpdGhpcy5tb2RlbC5hcGlzQXJyYXlbcl0ub3BlcmF0aW9uc0FycmF5LnNvcnQobik7dGhpcy5tb2RlbC5hdXRocz1bXTtmb3IociBpbiB0aGlzLm1vZGVsLnNlY3VyaXR5RGVmaW5pdGlvbnMpaT10aGlzLm1vZGVsLnNlY3VyaXR5RGVmaW5pdGlvbnNbcl0sdGhpcy5tb2RlbC5hdXRocy5wdXNoKHtuYW1lOnIsdHlwZTppLnR5cGUsdmFsdWU6aX0pOyJ2YWxpZGF0b3JVcmwiaW4gZS5zd2FnZ2VyT3B0aW9ucz90aGlzLm1vZGVsLnZhbGlkYXRvclVybD1lLnN3YWdnZXJPcHRpb25zLnZhbGlkYXRvclVybDp0aGlzLm1vZGVsLnVybC5pbmRleE9mKCJsb2NhbGhvc3QiKT4wfHx0aGlzLm1vZGVsLnVybC5pbmRleE9mKCIxMjcuMC4wLjEiKT4wP3RoaXMubW9kZWwudmFsaWRhdG9yVXJsPW51bGw6dGhpcy5tb2RlbC52YWxpZGF0b3JVcmw9Ii8vb25saW5lLnN3YWdnZXIuaW8vdmFsaWRhdG9yIjt2YXIgYTtmb3IoYSBpbiB0aGlzLm1vZGVsLmRlZmluaXRpb25zKXRoaXMubW9kZWwuZGVmaW5pdGlvbnNbYV0udHlwZXx8KHRoaXMubW9kZWwuZGVmaW5pdGlvbnNbYV0udHlwZT0ib2JqZWN0Iil9LHJlbmRlcjpmdW5jdGlvbigpeyQodGhpcy5lbCkuaHRtbChIYW5kbGViYXJzLnRlbXBsYXRlcy5tYWluKHRoaXMubW9kZWwpKSx0aGlzLmluZm89dGhpcy4kKCIuaW5mbyIpWzBdLHRoaXMuaW5mbyYmdGhpcy5pbmZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLm9uTGlua0NsaWNrLCEwKSx0aGlzLm1vZGVsLnNlY3VyaXR5RGVmaW5pdGlvbnM9dGhpcy5tb2RlbC5zZWN1cml0eURlZmluaXRpb25zfHx7fTtmb3IodmFyIGU9e30sdD0wLG49MDtuPHRoaXMubW9kZWwuYXBpc0FycmF5Lmxlbmd0aDtuKyspe2Zvcih2YXIgcj10aGlzLm1vZGVsLmFwaXNBcnJheVtuXSxpPXIubmFtZTsidW5kZWZpbmVkIiE9dHlwZW9mIGVbaV07KWk9aSsiXyIrdCx0Kz0xO3IuaWQ9c2FuaXRpemVIdG1sKGkpLGVbaV09cix0aGlzLmFkZFJlc291cmNlKHIsdGhpcy5tb2RlbC5hdXRocyl9cmV0dXJuICQoIi5wcm9wV3JhcCIpLmhvdmVyKGZ1bmN0aW9uKCl7JCgiLm9wdGlvbnNXcmFwcGVyIiwkKHRoaXMpKS5zaG93KCl9LGZ1bmN0aW9uKCl7JCgiLm9wdGlvbnNXcmFwcGVyIiwkKHRoaXMpKS5oaWRlKCl9KSx0aGlzfSxhZGRSZXNvdXJjZTpmdW5jdGlvbihlLHQpe2UuaWQ9ZS5pZC5yZXBsYWNlKC9bXmEtekEtWlxkXS9nLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCl9KSxlLmRlZmluaXRpb25zPXRoaXMubW9kZWwuZGVmaW5pdGlvbnM7dmFyIG49bmV3IFN3YWdnZXJVaS5WaWV3cy5SZXNvdXJjZVZpZXcoe21vZGVsOmUscm91dGVyOnRoaXMucm91dGVyLHRhZ05hbWU6ImxpIixpZDoicmVzb3VyY2VfIitlLmlkLGNsYXNzTmFtZToicmVzb3VyY2UiLGF1dGhzOnQsc3dhZ2dlck9wdGlvbnM6dGhpcy5vcHRpb25zLnN3YWdnZXJPcHRpb25zfSk7JCgiI3Jlc291cmNlcyIsdGhpcy5lbCkuYXBwZW5kKG4ucmVuZGVyKCkuZWwpfSxjbGVhcjpmdW5jdGlvbigpeyQodGhpcy5lbCkuaHRtbCgiIil9LG9uTGlua0NsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0OyJBIj09PXQudGFnTmFtZSYmdC5ocmVmJiYhdC50YXJnZXQmJihlLnByZXZlbnREZWZhdWx0KCksd2luZG93Lm9wZW4odC5ocmVmLCJfYmxhbmsiKSl9fSksU3dhZ2dlclVpLk1vZGVscy5PYXV0aDJNb2RlbD1CYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntzY29wZXM6e30saXNQYXNzd29yZEZsb3c6ITEsY2xpZW50QXV0aGVudGljYXRpb25UeXBlOiJub25lIn0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe2lmKHRoaXMuYXR0cmlidXRlcyYmdGhpcy5hdHRyaWJ1dGVzLnNjb3Blcyl7dmFyIGUsdD1fLmNsb25lRGVlcCh0aGlzLmF0dHJpYnV0ZXMpLG49W107Zm9yKGUgaW4gdC5zY29wZXMpe3ZhciByPXQuc2NvcGVzW2VdOyJzdHJpbmciPT10eXBlb2Ygci5kZXNjcmlwdGlvbiYmKG5bcl09dC5zY29wZXNbZV0sbi5wdXNoKHQuc2NvcGVzW2VdKSl9dC5zY29wZXM9bix0aGlzLmF0dHJpYnV0ZXM9dH1pZih0aGlzLmF0dHJpYnV0ZXMmJnRoaXMuYXR0cmlidXRlcy5mbG93KXt2YXIgaT10aGlzLmF0dHJpYnV0ZXMuZmxvdzt0aGlzLnNldCgiaXNQYXNzd29yZEZsb3ciLCJwYXNzd29yZCI9PT1pKSx0aGlzLnNldCgicmVxdWlyZUNsaWVudEF1dGhlbnRpY2F0aW9uIiwiYXBwbGljYXRpb24iPT09aSksdGhpcy5zZXQoImNsaWVudEF1dGhlbnRpY2F0aW9uIiwicGFzc3dvcmQiPT09aXx8ImFwcGxpY2F0aW9uIj09PWkpfXRoaXMub24oImNoYW5nZSIsdGhpcy52YWxpZGF0ZSl9LHNldFNjb3BlczpmdW5jdGlvbihlLHQpe3ZhciBuPV8uZXh0ZW5kKHt9LHRoaXMuYXR0cmlidXRlcykscj1fLmZpbmRJbmRleChuLnNjb3BlcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5zY29wZT09PWV9KTtuLnNjb3Blc1tyXS5jaGVja2VkPXQsdGhpcy5zZXQobiksdGhpcy52YWxpZGF0ZSgpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciBlPSExO2lmKHRoaXMuZ2V0KCJpc1Bhc3N3b3JkRmxvdyIpJiYhdGhpcy5nZXQoInVzZXJuYW1lIikpcmV0dXJuITE7aWYodGhpcy5nZXQoImNsaWVudEF1dGhlbnRpY2F0aW9uVHlwZSIpaW5bImJhc2ljIiwicmVxdWVzdC1ib2R5Il0mJiF0aGlzLmdldCgiY2xpZW50SWQiKSlyZXR1cm4hMTt2YXIgdD10aGlzLmdldCgic2NvcGVzIiksbj1fLmZpbmRJbmRleCh0LGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWQ9PT0hMH0pO3JldHVybiB0Lmxlbmd0aD4wJiZuPj0wJiYoZT0hMCksMD09PXQubGVuZ3RoJiYoZT0hMCksdGhpcy5zZXQoInZhbGlkIixlKSxlfX0pLFN3YWdnZXJVaS5WaWV3cy5PYXV0aDJWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtldmVudHM6eyJjaGFuZ2UgLm9hdXRoLXNjb3BlIjoic2NvcGVDaGFuZ2UiLCJjaGFuZ2UgLm9hdXRoLXVzZXJuYW1lIjoic2V0VXNlcm5hbWUiLCJjaGFuZ2UgLm9hdXRoLXBhc3N3b3JkIjoic2V0UGFzc3dvcmQiLCJjaGFuZ2UgLm9hdXRoLWNsaWVudC1hdXRoZW50aWNhdGlvbi10eXBlIjoic2V0Q2xpZW50QXV0aGVudGljYXRpb25UeXBlIiwiY2hhbmdlIC5vYXV0aC1jbGllbnQtaWQiOiJzZXRDbGllbnRJZCIsImNoYW5nZSAub2F1dGgtY2xpZW50LXNlY3JldCI6InNldENsaWVudFNlY3JldCJ9LHRlbXBsYXRlOkhhbmRsZWJhcnMudGVtcGxhdGVzLm9hdXRoMixjbHM6e2Vycm9yOiJlcnJvciJ9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5odG1sKHRoaXMudGVtcGxhdGUodGhpcy5tb2RlbC50b0pTT04oKSkpLHRoaXN9LHNjb3BlQ2hhbmdlOmZ1bmN0aW9uKGUpe3ZhciB0PSQoZS50YXJnZXQpLnByb3AoImNoZWNrZWQiKSxuPSQoZS50YXJnZXQpLmRhdGEoInNjb3BlIik7dGhpcy5tb2RlbC5zZXRTY29wZXMobix0KX0sc2V0VXNlcm5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9JChlLnRhcmdldCkudmFsKCk7dGhpcy5tb2RlbC5zZXQoInVzZXJuYW1lIix0KSx0JiYkKGUudGFyZ2V0KS5yZW1vdmVDbGFzcyh0aGlzLmNscy5lcnJvcil9LHNldFBhc3N3b3JkOmZ1bmN0aW9uKGUpe3RoaXMubW9kZWwuc2V0KCJwYXNzd29yZCIsJChlLnRhcmdldCkudmFsKCkpfSxzZXRDbGllbnRBdXRoZW50aWNhdGlvblR5cGU6ZnVuY3Rpb24oZSl7dmFyIHQ9JChlLnRhcmdldCkudmFsKCksbj10aGlzLiRlbDtzd2l0Y2godGhpcy5tb2RlbC5zZXQoImNsaWVudEF1dGhlbnRpY2F0aW9uVHlwZSIsdCksdCl7Y2FzZSJub25lIjpuLmZpbmQoIi5vYXV0aC1jbGllbnQtYXV0aGVudGljYXRpb24iKS5oaWRlKCk7YnJlYWs7Y2FzZSJiYXNpYyI6Y2FzZSJyZXF1ZXN0LWJvZHkiOm4uZmluZCgiLm9hdXRoLWNsaWVudC1pZCIpLnJlbW92ZUNsYXNzKHRoaXMuY2xzLmVycm9yKSxuLmZpbmQoIi5vYXV0aC1jbGllbnQtYXV0aGVudGljYXRpb24iKS5zaG93KCl9fSxzZXRDbGllbnRJZDpmdW5jdGlvbihlKXt2YXIgdD0kKGUudGFyZ2V0KS52YWwoKTt0aGlzLm1vZGVsLnNldCgiY2xpZW50SWQiLHQpLHQmJiQoZS50YXJnZXQpLnJlbW92ZUNsYXNzKHRoaXMuY2xzLmVycm9yKX0sc2V0Q2xpZW50U2VjcmV0OmZ1bmN0aW9uKGUpe3RoaXMubW9kZWwuc2V0KCJjbGllbnRTZWNyZXQiLCQoZS50YXJnZXQpLnZhbCgpKSwkKGUudGFyZ2V0KS5yZW1vdmVDbGFzcygiZXJyb3IiKX0saGlnaGxpZ2h0SW52YWxpZDpmdW5jdGlvbigpe3RoaXMubW9kZWwuZ2V0KCJ1c2VybmFtZSIpfHx0aGlzLiRlbC5maW5kKCIub2F1dGgtdXNlcm5hbWUiKS5hZGRDbGFzcyh0aGlzLmNscy5lcnJvciksdGhpcy5tb2RlbC5nZXQoImNsaWVudElkIil8fHRoaXMuJGVsLmZpbmQoIi5vYXV0aC1jbGllbnQtaWQiKS5hZGRDbGFzcyh0aGlzLmNscy5lcnJvcil9fSksU3dhZ2dlclVpLlZpZXdzLk9wZXJhdGlvblZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2ludm9jYXRpb25Vcmw6bnVsbCxldmVudHM6eyJzdWJtaXQgLnNhbmRib3giOiJzdWJtaXRPcGVyYXRpb24iLCJjbGljayAuc3VibWl0Ijoic3VibWl0T3BlcmF0aW9uIiwiY2xpY2sgLnJlc3BvbnNlX2hpZGVyIjoiaGlkZVJlc3BvbnNlIiwiY2xpY2sgLnRvZ2dsZU9wZXJhdGlvbiI6InRvZ2dsZU9wZXJhdGlvbkNvbnRlbnQiLCJtb3VzZWVudGVyIC5hcGktaWMiOiJtb3VzZUVudGVyIiwiZGJsY2xpY2sgLmN1cmwiOiJzZWxlY3RUZXh0IiwiY2hhbmdlIFtuYW1lPXJlc3BvbnNlQ29udGVudFR5cGVdIjoic2hvd1NuaXBwZXQifSxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3JldHVybiBlPWV8fHt9LHRoaXMucm91dGVyPWUucm91dGVyLHRoaXMuYXV0aHM9ZS5hdXRocyx0aGlzLnBhcmVudElkPXRoaXMubW9kZWwucGFyZW50SWQsdGhpcy5uaWNrbmFtZT10aGlzLm1vZGVsLm5pY2tuYW1lLHRoaXMubW9kZWwuZW5jb2RlZFBhcmVudElkPWVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnBhcmVudElkKSxlLnN3YWdnZXJPcHRpb25zJiYodGhpcy5tb2RlbC5kZWZhdWx0UmVuZGVyaW5nPWUuc3dhZ2dlck9wdGlvbnMuZGVmYXVsdE1vZGVsUmVuZGVyaW5nLGUuc3dhZ2dlck9wdGlvbnMuc2hvd1JlcXVlc3RIZWFkZXJzJiYodGhpcy5tb2RlbC5zaG93UmVxdWVzdEhlYWRlcnM9ITApLGUuc3dhZ2dlck9wdGlvbnMuc2hvd09wZXJhdGlvbklkcyYmKHRoaXMubW9kZWwuc2hvd09wZXJhdGlvbklkcz0hMCkpLAordGhpc30sc2VsZWN0VGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9ZG9jdW1lbnQsaT1lLnRhcmdldC5maXJzdENoaWxkO3IuYm9keS5jcmVhdGVUZXh0UmFuZ2U/KHQ9ZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKSx0Lm1vdmVUb0VsZW1lbnRUZXh0KGkpLHQuc2VsZWN0KCkpOndpbmRvdy5nZXRTZWxlY3Rpb24mJihuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSx0PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCksdC5zZWxlY3ROb2RlQ29udGVudHMoaSksbi5yZW1vdmVBbGxSYW5nZXMoKSxuLmFkZFJhbmdlKHQpKX0sbW91c2VFbnRlcjpmdW5jdGlvbihlKXt2YXIgdD0kKHRoaXMuZWwpLmZpbmQoIi5jb250ZW50Iiksbj1lLnBhZ2VYLHI9ZS5wYWdlWSxpPSQod2luZG93KS5zY3JvbGxMZWZ0KCksYT0kKHdpbmRvdykuc2Nyb2xsVG9wKCksbz1pKyQod2luZG93KS53aWR0aCgpLHM9YSskKHdpbmRvdykuaGVpZ2h0KCksbD10LndpZHRoKCksdT10LmhlaWdodCgpO24rbD5vJiYobj1vLWwpLG48aSYmKG49aSkscit1PnMmJihyPXMtdSkscjxhJiYocj1hKTt2YXIgYz17fTtjLnRvcD1yLGMubGVmdD1uLHQuY3NzKGMpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLGEsbyxzLGwsdSxjLHAsaCxmLGQsbSxnLHksdixiLHcseCxBLFMsaixFLE8sayxULEMsSSxELEwsTSxSLFUsUCxxLEIseixOO2lmKGE9alF1ZXJ5LmluQXJyYXkodGhpcy5tb2RlbC5tZXRob2QsdGhpcy5tb2RlbC5zdXBwb3J0ZWRTdWJtaXRNZXRob2RzKCkpPj0wLGF8fCh0aGlzLm1vZGVsLmlzUmVhZE9ubHk9ITApLHRoaXMubW9kZWwuZGVzY3JpcHRpb249dGhpcy5tb2RlbC5kZXNjcmlwdGlvbnx8dGhpcy5tb2RlbC5ub3Rlcyx0aGlzLm1vZGVsLm9hdXRoPW51bGwsbT10aGlzLm1vZGVsLmF1dGhvcml6YXRpb25zfHx0aGlzLm1vZGVsLnNlY3VyaXR5KWlmKEFycmF5LmlzQXJyYXkobSkpZm9yKGw9MCx1PW0ubGVuZ3RoO2w8dTtsKyspe249bVtsXTtmb3IocyBpbiBuKWZvcihlIGluIHRoaXMuYXV0aHMpaWYodD10aGlzLmF1dGhzW2VdLHM9PT10Lm5hbWUmJiJvYXV0aDIiPT09dC50eXBlKXt0aGlzLm1vZGVsLm9hdXRoPXt9LHRoaXMubW9kZWwub2F1dGguc2NvcGVzPVtdLEE9dC52YWx1ZS5zY29wZXM7Zm9yKG8gaW4gQSlQPUFbb10sRD1uW3NdLmluZGV4T2YobyksRD49MCYmKHk9e3Njb3BlOm8sZGVzY3JpcHRpb246UH0sdGhpcy5tb2RlbC5vYXV0aC5zY29wZXMucHVzaCh5KSl9fWVsc2UgZm9yKG8gaW4gbSlpZihQPW1bb10sIm9hdXRoMiI9PT1vKWZvcihudWxsPT09dGhpcy5tb2RlbC5vYXV0aCYmKHRoaXMubW9kZWwub2F1dGg9e30pLHZvaWQgMD09PXRoaXMubW9kZWwub2F1dGguc2NvcGVzJiYodGhpcy5tb2RlbC5vYXV0aC5zY29wZXM9W10pLGQ9MCxjPVAubGVuZ3RoO2Q8YztkKyspeT1QW2RdLHRoaXMubW9kZWwub2F1dGguc2NvcGVzLnB1c2goeSk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLm1vZGVsLnJlc3BvbnNlcyl7dGhpcy5tb2RlbC5yZXNwb25zZU1lc3NhZ2VzPVtdLFM9dGhpcy5tb2RlbC5yZXNwb25zZXM7Zm9yKHIgaW4gUylxPVNbcl0sQz1udWxsLEk9dGhpcy5tb2RlbC5yZXNwb25zZXNbcl0uc2NoZW1hLEkmJkkuJHJlZiYmKEM9SS4kcmVmLEMuaW5kZXhPZigiIy9kZWZpbml0aW9ucy8iKSE9PS0xJiYoQz1DLnJlcGxhY2UoL14uKiNcL2RlZmluaXRpb25zXC8vLCIiKSkpLHRoaXMubW9kZWwucmVzcG9uc2VNZXNzYWdlcy5wdXNoKHtjb2RlOnIsbWVzc2FnZTpxLmRlc2NyaXB0aW9uLHJlc3BvbnNlTW9kZWw6QyxoZWFkZXJzOnEuaGVhZGVycyxzY2hlbWE6SX0pfWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgdGhpcy5tb2RlbC5yZXNwb25zZU1lc3NhZ2VzJiYodGhpcy5tb2RlbC5yZXNwb25zZU1lc3NhZ2VzPVtdKSxMPW51bGwsQj10aGlzLm1vZGVsLnByb2R1Y2VzLHo9dGhpcy5jb250YWlucyhCLCJ4bWwiKSxOPSF6fHx0aGlzLmNvbnRhaW5zKEIsImpzb24iKSx0aGlzLm1vZGVsLnN1Y2Nlc3NSZXNwb25zZSl7Uj10aGlzLm1vZGVsLnN1Y2Nlc3NSZXNwb25zZTtmb3IocyBpbiBSKXE9UltzXSx0aGlzLm1vZGVsLnN1Y2Nlc3NDb2RlPXMsIm9iamVjdCI9PXR5cGVvZiBxJiYiZnVuY3Rpb24iPT10eXBlb2YgcS5jcmVhdGVKU09OU2FtcGxlPyh0aGlzLm1vZGVsLnN1Y2Nlc3NEZXNjcmlwdGlvbj1xLmRlc2NyaXB0aW9uLHRoaXMubW9kZWwuaGVhZGVycz10aGlzLnBhcnNlUmVzcG9uc2VIZWFkZXJzKHEuaGVhZGVycyksTD17c2FtcGxlSlNPTjohIU4mJkpTT04uc3RyaW5naWZ5KFN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuY3JlYXRlSlNPTlNhbXBsZShxKSx2b2lkIDAsMiksaXNQYXJhbTohMSxzYW1wbGVYTUw6ISF6JiZTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmNyZWF0ZVhNTFNhbXBsZShxLm5hbWUscS5kZWZpbml0aW9uLHEubW9kZWxzKSxzaWduYXR1cmU6U3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5nZXRNb2RlbFNpZ25hdHVyZShxLm5hbWUscS5kZWZpbml0aW9uLHEubW9kZWxzLHEubW9kZWxQcm9wZXJ0eU1hY3JvKX0pOkw9e3NpZ25hdHVyZTpTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmdldFByaW1pdGl2ZVNpZ25hdHVyZShxKX19ZWxzZSB0aGlzLm1vZGVsLnJlc3BvbnNlQ2xhc3NTaWduYXR1cmUmJiJzdHJpbmciIT09dGhpcy5tb2RlbC5yZXNwb25zZUNsYXNzU2lnbmF0dXJlJiYoTD17c2FtcGxlSlNPTjp0aGlzLm1vZGVsLnJlc3BvbnNlU2FtcGxlSlNPTixpc1BhcmFtOiExLHNpZ25hdHVyZTp0aGlzLm1vZGVsLnJlc3BvbnNlQ2xhc3NTaWduYXR1cmV9KTtmb3IoJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLm9wZXJhdGlvbih0aGlzLm1vZGVsKSksTD8oTC5kZWZhdWx0UmVuZGVyaW5nPXRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZyxUPW5ldyBTd2FnZ2VyVWkuVmlld3MuU2lnbmF0dXJlVmlldyh7bW9kZWw6TCxyb3V0ZXI6dGhpcy5yb3V0ZXIsdGFnTmFtZToiZGl2In0pLCQoIi5tb2RlbC1zaWduYXR1cmUiLCQodGhpcy5lbCkpLmFwcGVuZChULnJlbmRlcigpLmVsKSk6KHRoaXMubW9kZWwucmVzcG9uc2VDbGFzc1NpZ25hdHVyZT0ic3RyaW5nIiwkKCIubW9kZWwtc2lnbmF0dXJlIiwkKHRoaXMuZWwpKS5odG1sKHRoaXMubW9kZWwudHlwZSkpLGk9e2lzUGFyYW06ITF9LGkuY29uc3VtZXM9dGhpcy5tb2RlbC5jb25zdW1lcyxpLnByb2R1Y2VzPXRoaXMubW9kZWwucHJvZHVjZXMsaj10aGlzLm1vZGVsLnBhcmFtZXRlcnMsZz0wLHA9ai5sZW5ndGg7ZzxwO2crKyliPWpbZ10sVT1iLnR5cGV8fGIuZGF0YVR5cGV8fCIiLCJ1bmRlZmluZWQiPT10eXBlb2YgVSYmKEM9Yi5zY2hlbWEsQyYmQy4kcmVmJiYoeD1DLiRyZWYsVT0wPT09eC5pbmRleE9mKCIjL2RlZmluaXRpb25zLyIpP3guc3Vic3RyaW5nKCIjL2RlZmluaXRpb25zLyIubGVuZ3RoKTp4KSksVSYmImZpbGUiPT09VS50b0xvd2VyQ2FzZSgpJiYoaS5jb25zdW1lc3x8KGkuY29uc3VtZXM9Im11bHRpcGFydC9mb3JtLWRhdGEiKSksYi50eXBlPVU7Zm9yKGs9bmV3IFN3YWdnZXJVaS5WaWV3cy5SZXNwb25zZUNvbnRlbnRUeXBlVmlldyh7bW9kZWw6aSxyb3V0ZXI6dGhpcy5yb3V0ZXJ9KSwkKCIucmVzcG9uc2UtY29udGVudC10eXBlIiwkKHRoaXMuZWwpKS5hcHBlbmQoay5yZW5kZXIoKS5lbCksRT10aGlzLm1vZGVsLnBhcmFtZXRlcnMsdj0wLGg9RS5sZW5ndGg7djxoO3YrKyliPUVbdl0sdGhpcy5hZGRQYXJhbWV0ZXIoYixpLmNvbnN1bWVzKTtmb3IoTz10aGlzLm1vZGVsLnJlc3BvbnNlTWVzc2FnZXMsdz0wLGY9Ty5sZW5ndGg7dzxmO3crKylNPU9bd10sTS5pc1hNTD16LE0uaXNKU09OPU4sXy5pc1VuZGVmaW5lZChNLmhlYWRlcnMpfHwoTS5oZWFkZXJzPXRoaXMucGFyc2VIZWFkZXJzVHlwZShNLmhlYWRlcnMpKSx0aGlzLmFkZFN0YXR1c0NvZGUoTSk7aWYoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsLnNlY3VyaXR5KSl7dmFyIEY9U3dhZ2dlclVpLnV0aWxzLnBhcnNlU2VjdXJpdHlEZWZpbml0aW9ucyh0aGlzLm1vZGVsLnNlY3VyaXR5LHRoaXMubW9kZWwucGFyZW50LnNlY3VyaXR5RGVmaW5pdGlvbnMpO0YuaXNMb2dvdXQ9IV8uaXNFbXB0eSh0aGlzLm1vZGVsLmNsaWVudEF1dGhvcml6YXRpb25zLmF1dGh6KSx0aGlzLmF1dGhWaWV3PW5ldyBTd2FnZ2VyVWkuVmlld3MuQXV0aEJ1dHRvblZpZXcoe2RhdGE6Rixyb3V0ZXI6dGhpcy5yb3V0ZXIsaXNPcGVyYXRpb246ITAsbW9kZWw6e3Njb3BlczpGLnNjb3Blc319KSx0aGlzLiQoIi5hdXRob3JpemUtd3JhcHBlciIpLmFwcGVuZCh0aGlzLmF1dGhWaWV3LnJlbmRlcigpLmVsKX1yZXR1cm4gdGhpcy5zaG93U25pcHBldCgpLHRoaXN9LHBhcnNlSGVhZGVyc1R5cGU6ZnVuY3Rpb24oZSl7dmFyIHQ9e3N0cmluZzp7ImRhdGUtdGltZSI6ImRhdGVUaW1lIixkYXRlOiJkYXRlIn19O3JldHVybiBfLmZvckVhY2goZSxmdW5jdGlvbihlKXt2YXIgbjtlPWV8fHt9LG49dFtlLnR5cGVdJiZ0W2UudHlwZV1bZS5mb3JtYXRdLF8uaXNVbmRlZmluZWQobil8fChlLnR5cGU9bil9KSxlfSxjb250YWluczpmdW5jdGlvbihlLHQpe3JldHVybiBlLmZpbHRlcihmdW5jdGlvbihlKXtpZihlLmluZGV4T2YodCk+LTEpcmV0dXJuITB9KS5sZW5ndGh9LHBhcnNlUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKGUpe3ZhciB0PSI7ICIsbj1fLmNsb25lKGUpO3JldHVybiBfLmZvckVhY2gobixmdW5jdGlvbihlKXt2YXIgbj1bXTtfLmZvckVhY2goZSxmdW5jdGlvbihlLHQpe3ZhciByPVsidHlwZSIsImRlc2NyaXB0aW9uIl07ci5pbmRleE9mKHQudG9Mb3dlckNhc2UoKSk9PT0tMSYmbi5wdXNoKHQrIjogIitlKX0pLG4uam9pbih0KSxlLm90aGVyPW59KSxufSxhZGRQYXJhbWV0ZXI6ZnVuY3Rpb24oZSx0KXtlLmNvbnN1bWVzPXQsZS5kZWZhdWx0UmVuZGVyaW5nPXRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZyxlLnNjaGVtYSYmKCQuZXh0ZW5kKCEwLGUuc2NoZW1hLHRoaXMubW9kZWwuZGVmaW5pdGlvbnNbZS50eXBlXSksZS5zY2hlbWEuZGVmaW5pdGlvbnM9dGhpcy5tb2RlbC5kZWZpbml0aW9ucyxlLnNjaGVtYS50eXBlfHwoZS5zY2hlbWEudHlwZT0ib2JqZWN0IiksZS5zY2hlbWEudGl0bGV8fChlLnNjaGVtYS50aXRsZT0iICIpKTt2YXIgbj1uZXcgU3dhZ2dlclVpLlZpZXdzLlBhcmFtZXRlclZpZXcoe21vZGVsOmUsdGFnTmFtZToidHIiLHJlYWRPbmx5OnRoaXMubW9kZWwuaXNSZWFkT25seSxzd2FnZ2VyT3B0aW9uczp0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnN9KTskKCIub3BlcmF0aW9uLXBhcmFtcyIsJCh0aGlzLmVsKSkuYXBwZW5kKG4ucmVuZGVyKCkuZWwpfSxhZGRTdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe2UuZGVmYXVsdFJlbmRlcmluZz10aGlzLm1vZGVsLmRlZmF1bHRSZW5kZXJpbmc7dmFyIHQ9bmV3IFN3YWdnZXJVaS5WaWV3cy5TdGF0dXNDb2RlVmlldyh7bW9kZWw6ZSx0YWdOYW1lOiJ0ciIscm91dGVyOnRoaXMucm91dGVyfSk7JCgiLm9wZXJhdGlvbi1zdGF0dXMiLCQodGhpcy5lbCkpLmFwcGVuZCh0LnJlbmRlcigpLmVsKX0sc3VibWl0T3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLGE7aWYobnVsbCE9PWUmJmUucHJldmVudERlZmF1bHQoKSxuPSQoIi5zYW5kYm94IiwkKHRoaXMuZWwpKSx0PSEwLG4uZmluZCgiaW5wdXQucmVxdWlyZWQiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiZXJyb3IiKSwiIj09PWpRdWVyeS50cmltKCQodGhpcykudmFsKCkpJiYoJCh0aGlzKS5hZGRDbGFzcygiZXJyb3IiKSwkKHRoaXMpLndpZ2dsZSh7Y2FsbGJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7JChlKS5mb2N1cygpfX0odGhpcyl9KSx0PSExKX0pLG4uZmluZCgidGV4dGFyZWEucmVxdWlyZWQ6dmlzaWJsZSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCJlcnJvciIpLCIiPT09alF1ZXJ5LnRyaW0oJCh0aGlzKS52YWwoKSkmJigkKHRoaXMpLmFkZENsYXNzKCJlcnJvciIpLCQodGhpcykud2lnZ2xlKHtjYWxsYmFjazpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gJChlKS5mb2N1cygpfX0odGhpcyl9KSx0PSExKX0pLG4uZmluZCgic2VsZWN0LnJlcXVpcmVkIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoImVycm9yIiksdGhpcy5zZWxlY3RlZEluZGV4PT09LTEmJigkKHRoaXMpLmFkZENsYXNzKCJlcnJvciIpLCQodGhpcykud2lnZ2xlKHtjYWxsYmFjazpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXskKGUpLmZvY3VzKCl9fSh0aGlzKX0pLHQ9ITEpfSksdCl7aWYoaT10aGlzLmdldElucHV0TWFwKG4pLHI9dGhpcy5pc0ZpbGVVcGxvYWQobiksYT17cGFyZW50OnRoaXN9LHRoaXMub3B0aW9ucy5zd2FnZ2VyT3B0aW9ucylmb3IodmFyIG8gaW4gdGhpcy5vcHRpb25zLnN3YWdnZXJPcHRpb25zKWFbb109dGhpcy5vcHRpb25zLnN3YWdnZXJPcHRpb25zW29dO3ZhciBzO2ZvcihzPTA7czx0aGlzLm1vZGVsLnBhcmFtZXRlcnMubGVuZ3RoO3MrKyl7dmFyIGw9dGhpcy5tb2RlbC5wYXJhbWV0ZXJzW3NdO2lmKGwuanNvbkVkaXRvciYmbC5qc29uRWRpdG9yLmlzRW5hYmxlZCgpKXt2YXIgdT1sLmpzb25FZGl0b3IuZ2V0VmFsdWUoKTtpW2wubmFtZV09SlNPTi5zdHJpbmdpZnkodSl9fXJldHVybiBhLnJlc3BvbnNlQ29udGVudFR5cGU9JCgiZGl2IHNlbGVjdFtuYW1lPXJlc3BvbnNlQ29udGVudFR5cGVdIiwkKHRoaXMuZWwpKS52YWwoKSxhLnJlcXVlc3RDb250ZW50VHlwZT0kKCJkaXYgc2VsZWN0W25hbWU9cGFyYW1ldGVyQ29udGVudFR5cGVdIiwkKHRoaXMuZWwpKS52YWwoKSwkKCIucmVzcG9uc2VfdGhyb2JiZXIiLCQodGhpcy5lbCkpLnNob3coKSxyPygkKCIucmVxdWVzdF91cmwiLCQodGhpcy5lbCkpLmh0bWwoIjxwcmU+PC9wcmU+IiksJCgiLnJlcXVlc3RfdXJsIHByZSIsJCh0aGlzLmVsKSkudGV4dCh0aGlzLmludm9jYXRpb25VcmwpLGEudXNlSlF1ZXJ5PSEwLGkucGFyYW1ldGVyQ29udGVudFR5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiLHRoaXMubWFwPWksdGhpcy5tb2RlbC5leGVjdXRlKGksYSx0aGlzLnNob3dDb21wbGV0ZVN0YXR1cyx0aGlzLnNob3dFcnJvclN0YXR1cyx0aGlzKSk6KHRoaXMubWFwPWksdGhpcy5tb2RlbC5leGVjdXRlKGksYSx0aGlzLnNob3dDb21wbGV0ZVN0YXR1cyx0aGlzLnNob3dFcnJvclN0YXR1cyx0aGlzKSl9fSxnZXRJbnB1dE1hcDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxhLG8scyxsLHUsYyxwLGg7Zm9yKHQ9e30sbj1lLmZpbmQoImlucHV0Iikscj0wLGk9bi5sZW5ndGg7cjxpO3IrKylhPW5bcl0sbnVsbCE9PWEudmFsdWUmJmpRdWVyeS50cmltKGEudmFsdWUpLmxlbmd0aD4wJiYodFthLm5hbWVdPWEudmFsdWUpLCJmaWxlIj09PWEudHlwZSYmKHRbYS5uYW1lXT1hLmZpbGVzWzBdKTtmb3Iobz1lLmZpbmQoInRleHRhcmVhIikscz0wLGw9by5sZW5ndGg7czxsO3MrKylhPW9bc10sdT10aGlzLmdldFRleHRBcmVhVmFsdWUoYSksbnVsbCE9PXUmJmpRdWVyeS50cmltKHUpLmxlbmd0aD4wJiYodFthLm5hbWVdPXUpO2ZvcihjPWUuZmluZCgic2VsZWN0IikscD0wLGg9Yy5sZW5ndGg7cDxoO3ArKylhPWNbcF0sdT10aGlzLmdldFNlbGVjdGVkVmFsdWUoYSksbnVsbCE9PXUmJmpRdWVyeS50cmltKHUpLmxlbmd0aD4wJiYodFthLm5hbWVdPXUpO3JldHVybiB0fSxpc0ZpbGVVcGxvYWQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksYT0hMTtmb3IodD1lLmZpbmQoImlucHV0Iiksbj0wLHI9dC5sZW5ndGg7bjxyO24rKylpPXRbbl0sImZpbGUiPT09aS50eXBlJiYoYT0hMCk7cmV0dXJuIGF9LHN1Y2Nlc3M6ZnVuY3Rpb24oZSx0KXt0LnNob3dDb21wbGV0ZVN0YXR1cyhlKX0sd3JhcDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxhLG8scztmb3Iocj17fSxuPWUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkuc3BsaXQoIlxyIiksYT0wLG89bi5sZW5ndGg7YTxvO2ErKylpPW5bYV0sdD1pLm1hdGNoKC9eKFteOl0qPyk6KC4qKSQvKSx0fHwodD1bXSksdC5zaGlmdCgpLHZvaWQgMCE9PXRbMF0mJnZvaWQgMCE9PXRbMV0mJihyW3RbMF0udHJpbSgpXT10WzFdLnRyaW0oKSk7cmV0dXJuIHM9e30scy5jb250ZW50PXt9LHMuY29udGVudC5kYXRhPWUucmVzcG9uc2VUZXh0LHMuaGVhZGVycz1yLHMucmVxdWVzdD17fSxzLnJlcXVlc3QudXJsPXRoaXMuaW52b2NhdGlvblVybCxzLnN0YXR1cz1lLnN0YXR1cyxzfSxnZXRTZWxlY3RlZFZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUubXVsdGlwbGUpe2Zvcih2YXIgdD1bXSxuPTAscj1lLm9wdGlvbnMubGVuZ3RoO248cjtuKyspe3ZhciBpPWUub3B0aW9uc1tuXTtpLnNlbGVjdGVkJiZ0LnB1c2goaS52YWx1ZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfXJldHVybiBlLnZhbHVlfSxoaWRlUmVzcG9uc2U6ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLCQoIi5yZXNwb25zZSIsJCh0aGlzLmVsKSkuc2xpZGVVcCgpLCQoIi5yZXNwb25zZV9oaWRlciIsJCh0aGlzLmVsKSkuZmFkZU91dCgpfSxzaG93UmVzcG9uc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9SlNPTi5zdHJpbmdpZnkoZSxudWxsLCJcdCIpLnJlcGxhY2UoL1xuL2csIjxicj4iKTskKCIucmVzcG9uc2VfYm9keSIsJCh0aGlzLmVsKSkuaHRtbChfLmVzY2FwZSh0KSl9LHNob3dFcnJvclN0YXR1czpmdW5jdGlvbihlLHQpe3Quc2hvd1N0YXR1cyhlKX0sc2hvd0NvbXBsZXRlU3RhdHVzOmZ1bmN0aW9uKGUsdCl7dC5zaG93U3RhdHVzKGUpfSxmb3JtYXRYbWw6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksYSxvLHMsbCx1LGMscCxoLGY7Zm9yKHA9Lyg+KSg8KShcLyopL2csZj0vWyBdKiguKilbIF0rXG4vZyx0PS8oPC4rPikoLitcbikvZyxlPWUucmVwbGFjZSgvXHJcbi9nLCJcbiIpLnJlcGxhY2UocCwiJDFcbiQyJDMiKS5yZXBsYWNlKGYsIiQxXG4iKS5yZXBsYWNlKHQsIiQxXG4kMiIpLGM9MCxyPSIiLGw9ZS5zcGxpdCgiXG4iKSxpPTAsbz0ib3RoZXIiLGg9eyJzaW5nbGUtPnNpbmdsZSI6MCwic2luZ2xlLT5jbG9zaW5nIjotMSwic2luZ2xlLT5vcGVuaW5nIjowLCJzaW5nbGUtPm90aGVyIjowLCJjbG9zaW5nLT5zaW5nbGUiOjAsImNsb3NpbmctPmNsb3NpbmciOi0xLCJjbG9zaW5nLT5vcGVuaW5nIjowLCJjbG9zaW5nLT5vdGhlciI6MCwib3BlbmluZy0+c2luZ2xlIjoxLCJvcGVuaW5nLT5jbG9zaW5nIjowLCJvcGVuaW5nLT5vcGVuaW5nIjoxLCJvcGVuaW5nLT5vdGhlciI6MSwib3RoZXItPnNpbmdsZSI6MCwib3RoZXItPmNsb3NpbmciOi0xLCJvdGhlci0+b3BlbmluZyI6MCwib3RoZXItPm90aGVyIjowfSxuPWZ1bmN0aW9uKGUpe3ZhciB0LG4sYSxzLGwsdSxjO3U9e3NpbmdsZTpCb29sZWFuKGUubWF0Y2goLzwuK1wvPi8pKSxjbG9zaW5nOkJvb2xlYW4oZS5tYXRjaCgvPFwvLis+LykpLG9wZW5pbmc6Qm9vbGVhbihlLm1hdGNoKC88W14hP10uKj4vKSl9LGw9ZnVuY3Rpb24oKXt2YXIgZTtlPVtdO2ZvcihhIGluIHUpYz11W2FdLGMmJmUucHVzaChhKTtyZXR1cm4gZX0oKVswXSxsPXZvaWQgMD09PWw/Im90aGVyIjpsLHQ9bysiLT4iK2wsbz1sLHM9IiIsaSs9aFt0XSxzPWZ1bmN0aW9uKCl7dmFyIGUsdCxyO2ZvcihyPVtdLG49ZT0wLHQ9aTswPD10P2U8dDplPnQ7bj0wPD10PysrZTotLWUpci5wdXNoKCIgICIpO3JldHVybiByfSgpLmpvaW4oIiIpLCJvcGVuaW5nLT5jbG9zaW5nIj09PXQ/cj1yLnN1YnN0cigwLHIubGVuZ3RoLTEpK2UrIlxuIjpyKz1zK2UrIlxuIn0sYT0wLHM9bC5sZW5ndGg7YTxzO2ErKyl1PWxbYV0sbih1KTtyZXR1cm4gcn0sc2hvd1N0YXR1czpmdW5jdGlvbihlKXt2YXIgdCxuO3ZvaWQgMD09PWUuY29udGVudD8obj1lLmRhdGEsdD1lLnVybCk6KG49ZS5jb250ZW50LmRhdGEsdD1lLnJlcXVlc3QudXJsKTt2YXIgcj1lLmhlYWRlcnM7InN0cmluZyI9PXR5cGVvZiBuJiYobj1qUXVlcnkudHJpbShuKSk7dmFyIGk9bnVsbDtyJiYoaT1yWyJDb250ZW50LVR5cGUiXXx8clsiY29udGVudC10eXBlIl0saSYmKGk9aS5zcGxpdCgiOyIpWzBdLnRyaW0oKSkpLCQoIi5yZXNwb25zZV9ib2R5IiwkKHRoaXMuZWwpKS5yZW1vdmVDbGFzcygianNvbiIpLCQoIi5yZXNwb25zZV9ib2R5IiwkKHRoaXMuZWwpKS5yZW1vdmVDbGFzcygieG1sIik7dmFyIGEsbyxzPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImF1ZGlvIik7cmV0dXJuISghdC5jYW5QbGF5VHlwZXx8IXQuY2FuUGxheVR5cGUoZSkucmVwbGFjZSgvbm8vLCIiKSl9LGw9ITE7aWYobilpZigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIj09PWl8fHJbIkNvbnRlbnQtRGlzcG9zaXRpb24iXSYmL2F0dGFjaG1lbnQvLnRlc3QoclsiQ29udGVudC1EaXNwb3NpdGlvbiJdKXx8clsiY29udGVudC1kaXNwb3NpdGlvbiJdJiYvYXR0YWNobWVudC8udGVzdChyWyJjb250ZW50LWRpc3Bvc2l0aW9uIl0pfHxyWyJDb250ZW50LURlc2NyaXB0aW9uIl0mJi9GaWxlIFRyYW5zZmVyLy50ZXN0KHJbIkNvbnRlbnQtRGVzY3JpcHRpb24iXSl8fHJbImNvbnRlbnQtZGVzY3JpcHRpb24iXSYmL0ZpbGUgVHJhbnNmZXIvLnRlc3QoclsiY29udGVudC1kZXNjcmlwdGlvbiJdKSlpZigiQmxvYiJpbiB3aW5kb3cpe3ZhciB1LGM9aXx8InRleHQvaHRtbCIscD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7aWYoIltvYmplY3QgQmxvYl0iPT09e30udG9TdHJpbmcuYXBwbHkobikpdT13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuKTtlbHNle3ZhciBoPVtdO2gucHVzaChuKSx1PXdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKGgse3R5cGU6Y30pKX12YXIgZj1lLnVybC5zdWJzdHIoZS51cmwubGFzdEluZGV4T2YoIi8iKSsxKSxkPVtjLGYsdV0uam9pbigiOiIpLG09clsiY29udGVudC1kaXNwb3NpdGlvbiJdfHxyWyJDb250ZW50LURpc3Bvc2l0aW9uIl07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBtKXt2YXIgZz0vZmlsZW5hbWU9KFteO10qKTs/Ly5leGVjKG0pO251bGwhPT1nJiZnLmxlbmd0aD4xJiYoZD1nWzFdLGY9ZCl9cC5zZXRBdHRyaWJ1dGUoImhyZWYiLHUpLHAuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsZCkscC5pbm5lclRleHQ9IkRvd25sb2FkICIrZixhPSQoIjxkaXYvPiIpLmFwcGVuZChwKSxsPSEwfWVsc2UgYT0kKCc8cHJlIGNsYXNzPSJqc29uIiAvPicpLmFwcGVuZCgiRG93bmxvYWQgaGVhZGVycyBkZXRlY3RlZCBidXQgeW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZG93bmxvYWRpbmcgYmluYXJ5IHZpYSBYSFIgKEJsb2IpLiIpO2Vsc2UgaWYoImFwcGxpY2F0aW9uL2pzb24iPT09aXx8L1wranNvbiQvLnRlc3QoaSkpe3ZhciB5PW51bGw7dHJ5e3k9SlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShuKSxudWxsLCIgICIpfWNhdGNoKHYpe3k9ImNhbid0IHBhcnNlIEpTT04uICBSYXcgcmVzdWx0OlxuXG4iK259bz0kKCI8Y29kZSAvPiIpLnRleHQoeSksYT0kKCc8cHJlIGNsYXNzPSJqc29uIiAvPicpLmFwcGVuZChvKX1lbHNlIGlmKCJhcHBsaWNhdGlvbi94bWwiPT09aXx8L1wreG1sJC8udGVzdChpKSlvPSQoIjxjb2RlIC8+IikudGV4dCh0aGlzLmZvcm1hdFhtbChuKSksYT0kKCc8cHJlIGNsYXNzPSJ4bWwiIC8+JykuYXBwZW5kKG8pO2Vsc2UgaWYoInRleHQvaHRtbCI9PT1pKW89JCgiPGNvZGUgLz4iKS5odG1sKF8uZXNjYXBlKG4pKSxhPSQoJzxwcmUgY2xhc3M9InhtbCIgLz4nKS5hcHBlbmQobyk7ZWxzZSBpZigvdGV4dFwvcGxhaW4vLnRlc3QoaSkpbz0kKCI8Y29kZSAvPiIpLnRleHQobiksYT0kKCc8cHJlIGNsYXNzPSJwbGFpbiIgLz4nKS5hcHBlbmQobyk7ZWxzZSBpZigvXmltYWdlXC8vLnRlc3QoaSkpe3ZhciBiPXdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkwsdz1iLmNyZWF0ZU9iamVjdFVSTChuKTthPSQoIjxpbWc+IikuYXR0cigic3JjIix3KX1lbHNlL15hdWRpb1wvLy50ZXN0KGkpJiZzKGkpP2E9JCgiPGF1ZGlvIGNvbnRyb2xzPiIpLmFwcGVuZCgkKCI8c291cmNlPiIpLmF0dHIoInNyYyIsdCkuYXR0cigidHlwZSIsaSkpOnIubG9jYXRpb258fHIuTG9jYXRpb24/d2luZG93LmxvY2F0aW9uPWUudXJsOihvPSQoIjxjb2RlIC8+IikudGV4dChuKSxhPSQoJzxwcmUgY2xhc3M9Impzb24iIC8+JykuYXBwZW5kKG8pKTtlbHNlIG89JCgiPGNvZGUgLz4iKS50ZXh0KCJubyBjb250ZW50IiksYT0kKCc8cHJlIGNsYXNzPSJqc29uIiAvPicpLmFwcGVuZChvKTt2YXIgeD1hOyQoIi5yZXF1ZXN0X3VybCIsJCh0aGlzLmVsKSkuaHRtbCgiPHByZT48L3ByZT4iKSwkKCIucmVxdWVzdF91cmwgcHJlIiwkKHRoaXMuZWwpKS50ZXh0KHQpLCQoIi5yZXNwb25zZV9jb2RlIiwkKHRoaXMuZWwpKS5odG1sKCI8cHJlPiIrZS5zdGF0dXMrIjwvcHJlPiIpLCQoIi5yZXNwb25zZV9ib2R5IiwkKHRoaXMuZWwpKS5odG1sKHgpLCQoIi5yZXNwb25zZV9oZWFkZXJzIiwkKHRoaXMuZWwpKS5odG1sKCI8cHJlPiIrXy5lc2NhcGUoSlNPTi5zdHJpbmdpZnkoZS5oZWFkZXJzLG51bGwsIiAgIikpLnJlcGxhY2UoL1xuL2csIjxicj4iKSsiPC9wcmU+IiksJCgiLnJlc3BvbnNlIiwkKHRoaXMuZWwpKS5zbGlkZURvd24oKSwkKCIucmVzcG9uc2VfaGlkZXIiLCQodGhpcy5lbCkpLnNob3coKSwkKCIucmVzcG9uc2VfdGhyb2JiZXIiLCQodGhpcy5lbCkpLmhpZGUoKTt2YXIgQT10aGlzLm1vZGVsLmFzQ3VybCh0aGlzLm1hcCx7cmVzcG9uc2VDb250ZW50VHlwZTppfSk7QT1BLnJlcGxhY2UoIiEiLCImIzMzOyIpLCQoImRpdi5jdXJsIiwkKHRoaXMuZWwpKS5odG1sKCI8cHJlPiIrXy5lc2NhcGUoQSkrIjwvcHJlPiIpO3ZhciBTPXRoaXMub3B0aW9ucy5zd2FnZ2VyT3B0aW9ucztpZihTLnNob3dSZXF1ZXN0SGVhZGVycyl7dmFyIGo9JCgiLnNhbmRib3giLCQodGhpcy5lbCkpLEU9dGhpcy5nZXRJbnB1dE1hcChqKSxPPXRoaXMubW9kZWwuZ2V0SGVhZGVyUGFyYW1zKEUpO2RlbGV0ZSBPWyJDb250ZW50LVR5cGUiXSwkKCIucmVxdWVzdF9oZWFkZXJzIiwkKHRoaXMuZWwpKS5odG1sKCI8cHJlPiIrXy5lc2NhcGUoSlNPTi5zdHJpbmdpZnkoTyxudWxsLCIgICIpKS5yZXBsYWNlKC9cbi9nLCI8YnI+IikrIjwvcHJlPiIpfVMucmVzcG9uc2VIb29rcyYmUy5yZXNwb25zZUhvb2tzW3RoaXMubmlja25hbWVdJiZTLnJlc3BvbnNlSG9va3NbdGhpcy5uaWNrbmFtZV0oZSx0aGlzKTt2YXIgaz0kKCIucmVzcG9uc2VfYm9keSIsJCh0aGlzLmVsKSlbMF07cmV0dXJuIFMuaGlnaGxpZ2h0U2l6ZVRocmVzaG9sZCYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLmRhdGEmJmUuZGF0YS5sZW5ndGg+Uy5oaWdobGlnaHRTaXplVGhyZXNob2xkfHxsP2s6aGxqcy5oaWdobGlnaHRCbG9jayhrKX0sdG9nZ2xlT3BlcmF0aW9uQ29udGVudDpmdW5jdGlvbihlKXt2YXIgdD0kKCIjIitEb2NzLmVzY2FwZVJlc291cmNlTmFtZSh0aGlzLnBhcmVudElkKyJfIit0aGlzLm5pY2tuYW1lKyJfY29udGVudCIpKTt0LmlzKCI6dmlzaWJsZSIpPygkLmJicS5wdXNoU3RhdGUoIiMvIiwyKSxlLnByZXZlbnREZWZhdWx0KCksRG9jcy5jb2xsYXBzZU9wZXJhdGlvbih0KSk6RG9jcy5leHBhbmRPcGVyYXRpb24odCl9LGdldFRleHRBcmVhVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk7aWYobnVsbD09PWUudmFsdWV8fDA9PT1qUXVlcnkudHJpbShlLnZhbHVlKS5sZW5ndGgpcmV0dXJuIG51bGw7aWYodD10aGlzLmdldFBhcmFtQnlOYW1lKGUubmFtZSksdCYmdC50eXBlJiYiYXJyYXkiPT09dC50eXBlLnRvTG93ZXJDYXNlKCkpe2ZvcihuPWUudmFsdWUuc3BsaXQoIlxuIikscj1bXSxpPTA7aTxuLmxlbmd0aDtpKyspbnVsbCE9PW5baV0mJmpRdWVyeS50cmltKG5baV0pLmxlbmd0aD4wJiZyLnB1c2gobltpXSk7cmV0dXJuIHIubGVuZ3RoPjA/cjpudWxsfXJldHVybiBlLnZhbHVlfSxzaG93U25pcHBldDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy4kKCJbbmFtZT1yZXNwb25zZUNvbnRlbnRUeXBlXSIpLG49dGhpcy4kKCIub3BlcmF0aW9uLXN0YXR1cyAuc25pcHBldF94bWwsIC5yZXNwb25zZS1jbGFzcyAuc25pcHBldF94bWwiKSxyPXRoaXMuJCgiLm9wZXJhdGlvbi1zdGF0dXMgLnNuaXBwZXRfanNvbiwgLnJlc3BvbnNlLWNsYXNzIC5zbmlwcGV0X2pzb24iKTt0Lmxlbmd0aCYmKGU9dC52YWwoKSxlLmluZGV4T2YoInhtbCIpPi0xPyhuLnNob3coKSxyLmhpZGUoKSk6KHIuc2hvdygpLG4uaGlkZSgpKSl9LGdldFBhcmFtQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKHRoaXMubW9kZWwucGFyYW1ldGVycylmb3IodD0wO3Q8dGhpcy5tb2RlbC5wYXJhbWV0ZXJzLmxlbmd0aDt0KyspaWYodGhpcy5tb2RlbC5wYXJhbWV0ZXJzW3RdLm5hbWU9PT1lKXJldHVybiB0aGlzLm1vZGVsLnBhcmFtZXRlcnNbdF07cmV0dXJuIG51bGx9fSksU3dhZ2dlclVpLlZpZXdzLlBhcmFtZXRlckNvbnRlbnRUeXBlVmlldz1CYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scmVuZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9kZWwucGFyYW1ldGVyQ29udGVudFR5cGVJZD0icGN0IitNYXRoLnJhbmRvbSgpLCQodGhpcy5lbCkuaHRtbChIYW5kbGViYXJzLnRlbXBsYXRlcy5wYXJhbWV0ZXJfY29udGVudF90eXBlKHRoaXMubW9kZWwpKSx0aGlzfX0pLFN3YWdnZXJVaS5WaWV3cy5QYXJhbWV0ZXJWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtldmVudHM6eyJjaGFuZ2UgW25hbWU9cGFyYW1ldGVyQ29udGVudFR5cGVdIjoidG9nZ2xlUGFyYW1ldGVyU25pcHBldCJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXtIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCJpc0FycmF5IixmdW5jdGlvbihlLHQpe3ZhciBuPWUudHlwZSYmZS50eXBlLnRvTG93ZXJDYXNlKCk7cmV0dXJuImFycmF5Ij09PW58fGUuYWxsb3dNdWx0aXBsZT90LmZuKHRoaXMpOnQuaW52ZXJzZSh0aGlzKX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcy5tb2RlbC50eXBlfHx0aGlzLm1vZGVsLmRhdGFUeXBlLHI9dGhpcy5tb2RlbC5tb2RlbFNpZ25hdHVyZS50eXBlLGk9dGhpcy5tb2RlbC5tb2RlbFNpZ25hdHVyZS5kZWZpbml0aW9ucyxhPXRoaXMubW9kZWwuc2NoZW1hfHx7fSxvPXRoaXMubW9kZWwuY29uc3VtZXN8fFtdO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbiYmYS4kcmVmKXt2YXIgcz1hLiRyZWY7bj0wPT09cy5pbmRleE9mKCIjL2RlZmluaXRpb25zLyIpP3Muc3Vic3RyaW5nKCIjL2RlZmluaXRpb25zLyIubGVuZ3RoKTpzfXRoaXMubW9kZWwudHlwZT1uLHRoaXMubW9kZWwucGFyYW1UeXBlPXRoaXMubW9kZWxbImluIl18fHRoaXMubW9kZWwucGFyYW1UeXBlLHRoaXMubW9kZWwuaXNCb2R5PSJib2R5Ij09PXRoaXMubW9kZWwucGFyYW1UeXBlfHwiYm9keSI9PT10aGlzLm1vZGVsWyJpbiJdLHRoaXMubW9kZWwuaXNGaWxlPW4mJiJmaWxlIj09PW4udG9Mb3dlckNhc2UoKSwidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMubW9kZWxbImRlZmF1bHQiXSYmKHRoaXMubW9kZWxbImRlZmF1bHQiXT10aGlzLm1vZGVsLmRlZmF1bHRWYWx1ZSksdGhpcy5tb2RlbC5oYXNEZWZhdWx0PSJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5tb2RlbFsiZGVmYXVsdCJdLHRoaXMubW9kZWwudmFsdWVJZD0ibSIrdGhpcy5tb2RlbC5uYW1lK01hdGgucmFuZG9tKCksdGhpcy5tb2RlbC5hbGxvd2FibGVWYWx1ZXMmJih0aGlzLm1vZGVsLmlzTGlzdD0hMCk7dmFyIGw9dGhpcy5jb250YWlucyhvLCJ4bWwiKSx1PSFsfHx0aGlzLmNvbnRhaW5zKG8sImpzb24iKTtlPVN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuY3JlYXRlUGFyYW1ldGVySlNPTlNhbXBsZShyLGkpO3ZhciBjPXRoaXMudGVtcGxhdGUoKTskKHRoaXMuZWwpLmh0bWwoYyh0aGlzLm1vZGVsKSk7dmFyIHA9e3NhbXBsZUpTT046ISF1JiZlLHNhbXBsZVhNTDohKCFlfHwhbCkmJlN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuY3JlYXRlWE1MU2FtcGxlKCIiLGEsaSwhMCksaXNQYXJhbTohMCxzaWduYXR1cmU6U3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5nZXRQYXJhbWV0ZXJNb2RlbFNpZ25hdHVyZShyLGkpLGRlZmF1bHRSZW5kZXJpbmc6dGhpcy5tb2RlbC5kZWZhdWx0UmVuZGVyaW5nfTtlPyh0PW5ldyBTd2FnZ2VyVWkuVmlld3MuU2lnbmF0dXJlVmlldyh7bW9kZWw6cCx0YWdOYW1lOiJkaXYifSksJCgiLm1vZGVsLXNpZ25hdHVyZSIsJCh0aGlzLmVsKSkuYXBwZW5kKHQucmVuZGVyKCkuZWwpKTokKCIubW9kZWwtc2lnbmF0dXJlIiwkKHRoaXMuZWwpKS5odG1sKHRoaXMubW9kZWwuc2lnbmF0dXJlKTt2YXIgaD0hMTtpZih0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnMuanNvbkVkaXRvciYmdGhpcy5tb2RlbC5pc0JvZHkmJnRoaXMubW9kZWwuc2NoZW1hKXt2YXIgZj0kKHRoaXMuZWwpO3RoaXMubW9kZWwuanNvbkVkaXRvcj1uZXcgSlNPTkVkaXRvcigkKCIuZWRpdG9yX2hvbGRlciIsZilbMF0se3NjaGVtYTp0aGlzLm1vZGVsLnNjaGVtYSxzdGFydHZhbDp0aGlzLm1vZGVsWyJkZWZhdWx0Il0sYWpheDohMCxkaXNhYmxlX3Byb3BlcnRpZXM6ITAsZGlzYWJsZV9lZGl0X2pzb246ITAsaWNvbmxpYjoic3dhZ2dlciJ9KSxwLmpzb25FZGl0b3I9dGhpcy5tb2RlbC5qc29uRWRpdG9yLCQoIi5ib2R5LXRleHRhcmVhIixmKS5oaWRlKCksJCgiLmVkaXRvcl9ob2xkZXIiLGYpLnNob3coKSwkKCIucGFyYW1ldGVyLWNvbnRlbnQtdHlwZSIsZikuY2hhbmdlKGZ1bmN0aW9uKGUpeyJhcHBsaWNhdGlvbi94bWwiPT09ZS50YXJnZXQudmFsdWU/KCQoIi5ib2R5LXRleHRhcmVhIixmKS5zaG93KCksJCgiLmVkaXRvcl9ob2xkZXIiLGYpLmhpZGUoKSx0aGlzLm1vZGVsLmpzb25FZGl0b3IuZGlzYWJsZSgpKTooJCgiLmJvZHktdGV4dGFyZWEiLGYpLmhpZGUoKSwkKCIuZWRpdG9yX2hvbGRlciIsZikuc2hvdygpLHRoaXMubW9kZWwuanNvbkVkaXRvci5lbmFibGUoKSl9KX10aGlzLm1vZGVsLmlzQm9keSYmKGg9ITApO3ZhciBkPXtpc1BhcmFtOmh9O2lmKGQuY29uc3VtZXM9dGhpcy5tb2RlbC5jb25zdW1lcyxoKXt2YXIgbT1uZXcgU3dhZ2dlclVpLlZpZXdzLlBhcmFtZXRlckNvbnRlbnRUeXBlVmlldyh7bW9kZWw6ZH0pOyQoIi5wYXJhbWV0ZXItY29udGVudC10eXBlIiwkKHRoaXMuZWwpKS5hcHBlbmQobS5yZW5kZXIoKS5lbCksdGhpcy50b2dnbGVQYXJhbWV0ZXJTbmlwcGV0KCl9ZWxzZXt2YXIgZz1uZXcgU3dhZ2dlclVpLlZpZXdzLlJlc3BvbnNlQ29udGVudFR5cGVWaWV3KHttb2RlbDpkfSk7JCgiLnJlc3BvbnNlLWNvbnRlbnQtdHlwZSIsJCh0aGlzLmVsKSkuYXBwZW5kKGcucmVuZGVyKCkuZWwpLHRoaXMudG9nZ2xlUmVzcG9uc2VTbmlwcGV0KCl9cmV0dXJuIHRoaXN9LGNvbnRhaW5zOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUpe2lmKGUuaW5kZXhPZih0KT4tMSlyZXR1cm4hMH0pLmxlbmd0aH0sdG9nZ2xlUGFyYW1ldGVyU25pcHBldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJCgiW25hbWU9cGFyYW1ldGVyQ29udGVudFR5cGVdIikudmFsKCk7dGhpcy50b2dnbGVTbmlwcGV0KGUpfSx0b2dnbGVSZXNwb25zZVNuaXBwZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQoIltuYW1lPXJlc3BvbnNlQ29udGVudFR5cGVdIik7ZS5sZW5ndGgmJnRoaXMudG9nZ2xlU25pcHBldChlLnZhbCgpKX0sdG9nZ2xlU25pcHBldDpmdW5jdGlvbihlKXtlPWV8fCIiLGUuaW5kZXhPZigieG1sIik+LTE/KHRoaXMuJCgiLnNuaXBwZXRfeG1sIikuc2hvdygpLHRoaXMuJCgiLnNuaXBwZXRfanNvbiIpLmhpZGUoKSk6KHRoaXMuJCgiLnNuaXBwZXRfanNvbiIpLnNob3coKSx0aGlzLiQoIi5zbmlwcGV0X3htbCIpLmhpZGUoKSl9LHRlbXBsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9kZWwuaXNMaXN0P0hhbmRsZWJhcnMudGVtcGxhdGVzLnBhcmFtX2xpc3Q6dGhpcy5vcHRpb25zLnJlYWRPbmx5P3RoaXMubW9kZWwucmVxdWlyZWQ/SGFuZGxlYmFycy50ZW1wbGF0ZXMucGFyYW1fcmVhZG9ubHlfcmVxdWlyZWQ6SGFuZGxlYmFycy50ZW1wbGF0ZXMucGFyYW1fcmVhZG9ubHk6dGhpcy5tb2RlbC5yZXF1aXJlZD9IYW5kbGViYXJzLnRlbXBsYXRlcy5wYXJhbV9yZXF1aXJlZDpIYW5kbGViYXJzLnRlbXBsYXRlcy5wYXJhbX19KSxTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdCxpPWUubmFtZSxhPWUuZGVmaW5pdGlvbixvPWUuY29uZmlnLHM9ZS5tb2RlbHMsbD1lLmNvbmZpZy5pc1BhcmFtLHU9W10sYz1hLnByb3BlcnRpZXMscD1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLGg9YS54bWwsZj1iKGgpO3JldHVybiBmJiZ1LnB1c2goZiksY3x8cD8oYz1jfHx7fSx0PV8ubWFwKGMsZnVuY3Rpb24oZSx0KXt2YXIgbixpO3JldHVybiBsJiZlLnJlYWRPbmx5PyIiOihuPWUueG1sfHx7fSxpPXIodCxlLHMsbyksbi5hdHRyaWJ1dGU/KHUucHVzaChpKSwiIik6aSl9KS5qb2luKCIiKSxwJiYodCs9IjwhLS0gYWRkaXRpb25hbCBlbGVtZW50cyBhbGxvd2VkIC0tPiIpLHkoaSx0LHUpKTpuKCl9ZnVuY3Rpb24gdChlLHQpe3JldHVybiB5KGUsIjwhLS0gSW5maW5pdGUgbG9vcCAkcmVmOiIrdCsiIC0tPiIpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGU9ZT8iOiAiK2U6IiIsIjwhLS0gaW52YWxpZCBYTUwiK2UrIiAtLT4ifWZ1bmN0aW9uIHIocixpLHMsbCl7dmFyIHUsYyxwPV8uaXNPYmplY3QoaSk/aS4kcmVmOm51bGw7bD1sfHx7fSxsLm1vZGVsc1RvSWdub3JlPWwubW9kZWxzVG9JZ25vcmV8fFtdO3ZhciBoPV8uaXNTdHJpbmcocCk/YShwLHIscyxsKTpvKHIsaSxzLGwpO2lmKCFoKXJldHVybiBuKCk7c3dpdGNoKGgudHlwZSl7Y2FzZSJhcnJheSI6dT13KGgpO2JyZWFrO2Nhc2Uib2JqZWN0Ijp1PWUoaCk7YnJlYWs7Y2FzZSJsb29wIjp1PXQoaC5uYW1lLGguY29uZmlnLmxvb3BUbyk7YnJlYWs7ZGVmYXVsdDp1PUEoaCl9cmV0dXJuIHAmJiJsb29wIiE9PWgudHlwZSYmKGM9bC5tb2RlbHNUb0lnbm9yZS5pbmRleE9mKHApLGM+LTEmJmwubW9kZWxzVG9JZ25vcmUuc3BsaWNlKGMsMSkpLHV9ZnVuY3Rpb24gaShlLHQsbixyLGkpe2lmKGFyZ3VtZW50cy5sZW5ndGg8NCl0aHJvdyBuZXcgRXJyb3I7dGhpcy5jb25maWc9aXx8e30sdGhpcy5jb25maWcubW9kZWxzVG9JZ25vcmU9dGhpcy5jb25maWcubW9kZWxzVG9JZ25vcmV8fFtdLHRoaXMubmFtZT12KGUsbi54bWwpLHRoaXMuZGVmaW5pdGlvbj1uLHRoaXMubW9kZWxzPXIsdGhpcy50eXBlPXR9ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgYT11KGUpLG89blthXXx8e30scz1vLmRlZmluaXRpb24mJm8uZGVmaW5pdGlvbi50eXBlP28uZGVmaW5pdGlvbi50eXBlOiJvYmplY3QiO3JldHVybiB0PW8uZGVmaW5pdGlvbiYmby5kZWZpbml0aW9uLnhtbCYmby5kZWZpbml0aW9uLnhtbC5uYW1lP3R8fG8uZGVmaW5pdGlvbi54bWwubmFtZXx8by5uYW1lOnR8fG8ubmFtZSxyLm1vZGVsc1RvSWdub3JlLmluZGV4T2YoZSk+LTE/KHM9Imxvb3AiLHIubG9vcFRvPWEpOnIubW9kZWxzVG9JZ25vcmUucHVzaChlKSxvLmRlZmluaXRpb24/bmV3IGkodCxzLG8uZGVmaW5pdGlvbixuLHIpOm51bGx9ZnVuY3Rpb24gbyhlLHQsbixyKXt2YXIgYT10LnR5cGV8fCJvYmplY3QiO3JldHVybiB0LnhtbCYmdC54bWwubmFtZSYmKGU9dC54bWwubmFtZXx8ZSksdD9uZXcgaShlLGEsdCxuLHIpOm51bGx9ZnVuY3Rpb24gcyhlLHQsbixpKXt2YXIgYT0nPD94bWwgdmVyc2lvbj0iMS4wIj8+JztyZXR1cm4gcChhK3IoZSx0LG4se2lzUGFyYW06aX0pKX12YXIgbD1mdW5jdGlvbihlKXtyZXR1cm4gXy5pc1BsYWluT2JqZWN0KGUuc2NoZW1hKSYmKGU9bChlLnNjaGVtYSkpLGV9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBlP251bGw6MD09PWUuaW5kZXhPZigiIy9kZWZpbml0aW9ucy8iKT9lLnN1YnN0cmluZygiIy9kZWZpbml0aW9ucy8iLmxlbmd0aCk6ZX0sYz1mdW5jdGlvbihlKXtpZigvXklubGluZSBNb2RlbCBcZCskLy50ZXN0KGUpJiZ0aGlzLmlubGluZU1vZGVscyl7dmFyIHQ9cGFyc2VJbnQoZS5zdWJzdHIoIklubGluZSBNb2RlbCIubGVuZ3RoKS50cmltKCksMTApLG49dGhpcy5pbmxpbmVNb2RlbHNbdF07cmV0dXJuIG59cmV0dXJuIG51bGx9LHA9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksYSxvLHMsbCx1LGMscCxoLGY7Zm9yKHA9Lyg+KSg8KShcLyopL2csZj0vWyBdKiguKilbIF0rXG4vZyx0PS8oPC4rPikoLitcbikvZyxlPWUucmVwbGFjZShwLCIkMVxuJDIkMyIpLnJlcGxhY2UoZiwiJDFcbiIpLnJlcGxhY2UodCwiJDFcbiQyIiksYz0wLHI9IiIsbD1lLnNwbGl0KCJcbiIpLGk9MCxvPSJvdGhlciIsaD17InNpbmdsZS0+c2luZ2xlIjowLCJzaW5nbGUtPmNsb3NpbmciOi0xLCJzaW5nbGUtPm9wZW5pbmciOjAsInNpbmdsZS0+b3RoZXIiOjAsImNsb3NpbmctPnNpbmdsZSI6MCwiY2xvc2luZy0+Y2xvc2luZyI6LTEsImNsb3NpbmctPm9wZW5pbmciOjAsImNsb3NpbmctPm90aGVyIjowLCJvcGVuaW5nLT5zaW5nbGUiOjEsIm9wZW5pbmctPmNsb3NpbmciOjAsIm9wZW5pbmctPm9wZW5pbmciOjEsIm9wZW5pbmctPm90aGVyIjoxLCJvdGhlci0+c2luZ2xlIjowLCJvdGhlci0+Y2xvc2luZyI6LTEsIm90aGVyLT5vcGVuaW5nIjowLCJvdGhlci0+b3RoZXIiOjB9LG49ZnVuY3Rpb24oZSl7dmFyIHQsbixhLHMsbCx1LGM7dT17c2luZ2xlOkJvb2xlYW4oZS5tYXRjaCgvPC4rXC8+LykpLGNsb3Npbmc6Qm9vbGVhbihlLm1hdGNoKC88XC8uKz4vKSksb3BlbmluZzpCb29sZWFuKGUubWF0Y2goLzxbXiE/XS4qPi8pKX0sbD1mdW5jdGlvbigpe3ZhciBlO2U9W107Zm9yKGEgaW4gdSljPXVbYV0sYyYmZS5wdXNoKGEpO3JldHVybiBlfSgpWzBdLGw9dm9pZCAwPT09bD8ib3RoZXIiOmwsdD1vKyItPiIrbCxvPWwscz0iIixpKz1oW3RdLHM9ZnVuY3Rpb24oKXt2YXIgZSx0LHI7Zm9yKHI9W10sbj1lPTAsdD1pOzA8PXQ/ZTx0OmU+dDtuPTA8PXQ/KytlOi0tZSlyLnB1c2goIiAgIik7cmV0dXJuIHJ9KCkuam9pbigiIiksIm9wZW5pbmctPmNsb3NpbmciPT09dD9yPXIuc3Vic3RyKDAsci5sZW5ndGgtMSkrZSsiXG4iOnIrPXMrZSsiXG4ifSxhPTAscz1sLmxlbmd0aDthPHM7YSsrKXU9bFthXSxuKHUpO3JldHVybiByfSxoPWZ1bmN0aW9uKGUsdCxuLHIpe2Z1bmN0aW9uIGkoZSx0LHIpe3ZhciBpLGE9dDtyZXR1cm4gZS4kcmVmPyhhPWUudGl0bGV8fHUoZS4kcmVmKSxpPW5bdShlLiRyZWYpXSk6Xy5pc1VuZGVmaW5lZCh0KSYmKGE9ZS50aXRsZXx8IklubGluZSBNb2RlbCAiKyArK20saT17ZGVmaW5pdGlvbjplfSksciE9PSEwJiYoZlthXT1fLmlzVW5kZWZpbmVkKGkpP3t9OmkuZGVmaW5pdGlvbiksYX1mdW5jdGlvbiBhKGUpe3ZhciB0PSc8c3BhbiBjbGFzcz0icHJvcFR5cGUiPicsbj1lLnR5cGV8fCJvYmplY3QiO3JldHVybiBlLiRyZWY/dCs9aShlLHUoZS4kcmVmKSk6Im9iamVjdCI9PT1uP3QrPV8uaXNVbmRlZmluZWQoZS5wcm9wZXJ0aWVzKT8ib2JqZWN0IjppKGUpOiJhcnJheSI9PT1uPyh0Kz0iQXJyYXlbIixfLmlzQXJyYXkoZS5pdGVtcyk/dCs9Xy5tYXAoZS5pdGVtcyxpKS5qb2luKCIsIik6Xy5pc1BsYWluT2JqZWN0KGUuaXRlbXMpP3QrPV8uaXNVbmRlZmluZWQoZS5pdGVtcy4kcmVmKT9fLmlzVW5kZWZpbmVkKGUuaXRlbXMudHlwZSl8fF8uaW5kZXhPZihbImFycmF5Iiwib2JqZWN0Il0sZS5pdGVtcy50eXBlKSE9PS0xP2koZS5pdGVtcyk6ZS5pdGVtcy50eXBlOmkoZS5pdGVtcyx1KGUuaXRlbXMuJHJlZikpOihjb25zb2xlLmxvZygiQXJyYXkgdHlwZSdzICdpdGVtcycgc2NoZW1hIGlzIG5vdCBhbiBhcnJheSBvciBhbiBvYmplY3QsIGNhbm5vdCBwcm9jZXNzIiksdCs9Im9iamVjdCIpLHQrPSJdIik6dCs9ZS50eXBlLHQrPSI8L3NwYW4+In1mdW5jdGlvbiBvKGUsdCl7dmFyIG49IiIscj1lLnR5cGV8fCJvYmplY3QiLGk9ImFycmF5Ij09PXI7c3dpdGNoKF8uaXNVbmRlZmluZWQoZS5kZXNjcmlwdGlvbil8fCh0Kz0nOiA8c3BhbiBjbGFzcz0icHJvcERlc2MiPicrZS5kZXNjcmlwdGlvbisiPC9zcGFuPiIpLGVbImVudW0iXSYmKHQrPScgPSA8c3BhbiBjbGFzcz0icHJvcFZhbHMiPltcJycrZVsiZW51bSJdLmpvaW4oIicsICciKSsiJ108L3NwYW4+IiksaSYmKHI9Xy5pc1BsYWluT2JqZWN0KGUuaXRlbXMpJiYhXy5pc1VuZGVmaW5lZChlLml0ZW1zLnR5cGUpP2UuaXRlbXMudHlwZToib2JqZWN0IiksXy5pc1VuZGVmaW5lZChlWyJkZWZhdWx0Il0pfHwobis9aCgiRGVmYXVsdCIsZVsiZGVmYXVsdCJdKSkscil7Y2FzZSJzdHJpbmciOmUubWluTGVuZ3RoJiYobis9aCgiTWluLiBMZW5ndGgiLGUubWluTGVuZ3RoKSksZS5tYXhMZW5ndGgmJihuKz1oKCJNYXguIExlbmd0aCIsZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihuKz1oKCJSZWcuIEV4cC4iLGUucGF0dGVybikpO2JyZWFrO2Nhc2UiaW50ZWdlciI6Y2FzZSJudW1iZXIiOmUubWluaW11bSYmKG4rPWgoIk1pbi4gVmFsdWUiLGUubWluaW11bSkpLGUuZXhjbHVzaXZlTWluaW11bSYmKG4rPWgoIkV4Y2x1c2l2ZSBNaW4uIiwidHJ1ZSIpKSxlLm1heGltdW0mJihuKz1oKCJNYXguIFZhbHVlIixlLm1heGltdW0pKSxlLmV4Y2x1c2l2ZU1heGltdW0mJihuKz1oKCJFeGNsdXNpdmUgTWF4LiIsInRydWUiKSksZS5tdWx0aXBsZU9mJiYobis9aCgiTXVsdGlwbGUgT2YiLGUubXVsdGlwbGVPZikpfWlmKGkmJihlLm1pbkl0ZW1zJiYobis9aCgiTWluLiBJdGVtcyIsZS5taW5JdGVtcykpLGUubWF4SXRlbXMmJihuKz1oKCJNYXguIEl0ZW1zIixlLm1heEl0ZW1zKSksZS51bmlxdWVJdGVtcyYmKG4rPWgoIlVuaXF1ZSBJdGVtcyIsInRydWUiKSksZS5jb2xsZWN0aW9uRm9ybWF0JiYobis9aCgiQ29sbC4gRm9ybWF0IixlLmNvbGxlY3Rpb25Gb3JtYXQpKSksXy5pc1VuZGVmaW5lZChlLml0ZW1zKSYmXy5pc0FycmF5KGVbImVudW0iXSkpe3ZhciBhO2E9Im51bWJlciI9PT1yfHwiaW50ZWdlciI9PT1yP2VbImVudW0iXS5qb2luKCIsICIpOiciJytlWyJlbnVtIl0uam9pbignIiwgIicpKyciJyxuKz1oKCJFbnVtIixhKX1yZXR1cm4gbi5sZW5ndGg+MCYmKHQ9JzxzcGFuIGNsYXNzPSJwcm9wV3JhcCI+Jyt0Kyc8dGFibGUgY2xhc3M9Im9wdGlvbnNXcmFwcGVyIj48dHI+PHRoIGNvbHNwYW49IjIiPicrcisiPC90aD48L3RyPiIrbisiPC90YWJsZT48L3NwYW4+IiksdH1mdW5jdGlvbiBzKGUsdCl7dmFyIHMsaD1lLnR5cGV8fCJvYmplY3QiLGY9ImFycmF5Ij09PWUudHlwZSxtPWMrdCsiICIrKGY/IlsiOiJ7IikrcDtyZXR1cm4gdCYmZC5wdXNoKHQpLGY/Xy5pc0FycmF5KGUuaXRlbXMpP20rPSI8ZGl2PiIrXy5tYXAoZS5pdGVtcyxmdW5jdGlvbihlKXt2YXIgdD1lLnR5cGV8fCJvYmplY3QiO3JldHVybiBfLmlzVW5kZWZpbmVkKGUuJHJlZik/Xy5pbmRleE9mKFsiYXJyYXkiLCJvYmplY3QiXSx0KT4tMT8ib2JqZWN0Ij09PXQmJl8uaXNVbmRlZmluZWQoZS5wcm9wZXJ0aWVzKT8ib2JqZWN0IjppKGUpOm8oZSx0KTppKGUsdShlLiRyZWYpKX0pLmpvaW4oIiw8L2Rpdj48ZGl2PiIpOl8uaXNQbGFpbk9iamVjdChlLml0ZW1zKT9tKz1fLmlzVW5kZWZpbmVkKGUuaXRlbXMuJHJlZik/Xy5pbmRleE9mKFsiYXJyYXkiLCJvYmplY3QiXSxlLml0ZW1zLnR5cGV8fCJvYmplY3QiKT4tMT8oXy5pc1VuZGVmaW5lZChlLml0ZW1zLnR5cGUpfHwib2JqZWN0Ij09PWUuaXRlbXMudHlwZSkmJl8uaXNVbmRlZmluZWQoZS5pdGVtcy5wcm9wZXJ0aWVzKT8iPGRpdj5vYmplY3Q8L2Rpdj4iOiI8ZGl2PiIraShlLml0ZW1zKSsiPC9kaXY+IjoiPGRpdj4iK28oZS5pdGVtcyxlLml0ZW1zLnR5cGUpKyI8L2Rpdj4iOiI8ZGl2PiIraShlLml0ZW1zLHUoZS5pdGVtcy4kcmVmKSkrIjwvZGl2PiI6KGNvbnNvbGUubG9nKCJBcnJheSB0eXBlJ3MgJ2l0ZW1zJyBwcm9wZXJ0eSBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBjYW5ub3QgcHJvY2VzcyIpLG0rPSI8ZGl2Pm9iamVjdDwvZGl2PiIpOmUuJHJlZj9tKz0iPGRpdj4iK2koZSx0KSsiPC9kaXY+Ijoib2JqZWN0Ij09PWg/KF8uaXNQbGFpbk9iamVjdChlLnByb3BlcnRpZXMpJiYocz1fLm1hcChlLnByb3BlcnRpZXMsZnVuY3Rpb24odCxpKXt2YXIgcyxjPV8uaW5kZXhPZihlLnJlcXVpcmVkLGkpPj0wLHA9Xy5jbG9uZURlZXAodCksaD1jPyJyZXF1aXJlZCI6IiIsZj0nPHNwYW4gY2xhc3M9InByb3BOYW1lICcraCsnIj4nK2krIjwvc3Bhbj4gKCI7cmV0dXJuIHBbImRlZmF1bHQiXT1yKHApLHA9bChwKSxfLmlzVW5kZWZpbmVkKHAuJHJlZil8fChzPW5bdShwLiRyZWYpXSxfLmlzVW5kZWZpbmVkKHMpfHxfLmluZGV4T2YoW3ZvaWQgMCwiYXJyYXkiLCJvYmplY3QiXSxzLmRlZmluaXRpb24udHlwZSkhPT0tMXx8KHA9bChzLmRlZmluaXRpb24pKSksZis9YShwKSxjfHwoZis9JywgPHNwYW4gY2xhc3M9InByb3BPcHRLZXkiPm9wdGlvbmFsPC9zcGFuPicpLHQucmVhZE9ubHkmJihmKz0nLCA8c3BhbiBjbGFzcz0icHJvcFJlYWRPbmx5Ij5yZWFkIG9ubHk8L3NwYW4+JyksZis9IikiLCI8ZGl2IisodC5yZWFkT25seT8nIGNsYXNzPSJyZWFkT25seSInOiIiKSsiPiIrbyhwLGYpfSkuam9pbigiLDwvZGl2PiIpKSxzJiYobSs9cysiPC9kaXY+IikpOm0rPSI8ZGl2PiIrbyhlLGgpKyI8L2Rpdj4iLG0rYysoZj8iXSI6In0iKStwfXZhciBjPSc8c3BhbiBjbGFzcz0ic3Ryb25nIj4nLHA9Ijwvc3Bhbj4iLGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4nPHRyPjx0ZCBjbGFzcz0ib3B0aW9uTmFtZSI+JytlKyI6PC90ZD48dGQ+Iit0KyI8L3RkPjwvdHI+In07aWYoXy5pc09iamVjdChhcmd1bWVudHNbMF0pJiYoZT12b2lkIDAsdD1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbMV0scj1hcmd1bWVudHNbMl0pLG49bnx8e30sdD1sKHQpLF8uaXNFbXB0eSh0KSlyZXR1cm4gYysiRW1wdHkiK3A7aWYoInN0cmluZyI9PXR5cGVvZiB0LiRyZWYmJihlPXUodC4kcmVmKSx0PW5bZV0sInVuZGVmaW5lZCI9PXR5cGVvZiB0KSlyZXR1cm4gYytlKyIgaXMgbm90IGRlZmluZWQhIitwOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9dC50aXRsZXx8IklubGluZSBNb2RlbCIpLHQuZGVmaW5pdGlvbiYmKHQ9dC5kZWZpbml0aW9uKSwiZnVuY3Rpb24iIT10eXBlb2YgciYmKHI9ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fHt9KVsiZGVmYXVsdCJdfSk7Zm9yKHZhciBmPXt9LGQ9W10sbT0wLGc9cyh0LGUpO18ua2V5cyhmKS5sZW5ndGg+MDspXy5mb3JFYWNoKGYsZnVuY3Rpb24oZSx0KXt2YXIgbj1fLmluZGV4T2YoZCx0KT4tMTtkZWxldGUgZlt0XSxufHwoZC5wdXNoKHQpLGcrPSI8YnIgLz4iK3MoZSx0KSl9KTtyZXR1cm4gZ30sZj1mdW5jdGlvbihlLHQsbixyKXtlPWwoZSksImZ1bmN0aW9uIiE9dHlwZW9mIHImJihyPWZ1bmN0aW9uKGUpe3JldHVybihlfHx7fSlbImRlZmF1bHQiXX0pLG49bnx8e307dmFyIGksYSxvPWUudHlwZXx8Im9iamVjdCIscz1lLmZvcm1hdDtyZXR1cm4gXy5pc1VuZGVmaW5lZChlLmV4YW1wbGUpP18uaXNVbmRlZmluZWQoZS5pdGVtcykmJl8uaXNBcnJheShlWyJlbnVtIl0pJiYoYT1lWyJlbnVtIl1bMF0pOmE9ZS5leGFtcGxlLF8uaXNVbmRlZmluZWQoYSkmJihlLiRyZWY/KGk9dFt1KGUuJHJlZildLF8uaXNVbmRlZmluZWQoaSl8fChfLmlzVW5kZWZpbmVkKG5baS5uYW1lXSk/KG5baS5uYW1lXT1pLGE9ZihpLmRlZmluaXRpb24sdCxuLHIpLGRlbGV0ZSBuW2kubmFtZV0pOmE9ImFycmF5Ij09PWkudHlwZT9bXTp7fSkpOl8uaXNVbmRlZmluZWQoZVsiZGVmYXVsdCJdKT8ic3RyaW5nIj09PW8/YT0iZGF0ZS10aW1lIj09PXM/KG5ldyBEYXRlKS50b0lTT1N0cmluZygpOiJkYXRlIj09PXM/KG5ldyBEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KCJUIilbMF06InN0cmluZyI6ImludGVnZXIiPT09bz9hPTA6Im51bWJlciI9PT1vP2E9MDoiYm9vbGVhbiI9PT1vP2E9ITA6Im9iamVjdCI9PT1vPyhhPXt9LF8uZm9yRWFjaChlLnByb3BlcnRpZXMsZnVuY3Rpb24oZSxpKXt2YXIgbz1fLmNsb25lRGVlcChlKTtvWyJkZWZhdWx0Il09cihlKSxhW2ldPWYobyx0LG4scil9KSk6ImFycmF5Ij09PW8mJihhPVtdLF8uaXNBcnJheShlLml0ZW1zKT9fLmZvckVhY2goZS5pdGVtcyxmdW5jdGlvbihlKXthLnB1c2goZihlLHQsbixyKSl9KTpfLmlzUGxhaW5PYmplY3QoZS5pdGVtcyk/YS5wdXNoKGYoZS5pdGVtcyx0LG4scikpOl8uaXNVbmRlZmluZWQoZS5pdGVtcyk/YS5wdXNoKHt9KTpjb25zb2xlLmxvZygiQXJyYXkgdHlwZSdzICdpdGVtcycgcHJvcGVydHkgaXMgbm90IGFuIGFycmF5IG9yIGFuIG9iamVjdCwgY2Fubm90IHByb2Nlc3MiKSk6YT1lWyJkZWZhdWx0Il0pLGF9LGQ9ZnVuY3Rpb24oZSx0KXtpZih0PXR8fHt9LHRbZS5uYW1lXT1lLGUuZXhhbXBsZXMmJl8uaXNQbGFpbk9iamVjdChlLmV4YW1wbGVzKSl7ZT1fLmNsb25lRGVlcChlKTt2YXIgbj1PYmplY3Qua2V5cyhlLmV4YW1wbGVzKTtfLmZvckVhY2gobixmdW5jdGlvbihuKXtpZigwPT09bi5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIikpe3ZhciByPWUuZXhhbXBsZXNbbl07cmV0dXJuIF8uaXNTdHJpbmcocikmJihyPWpzeWFtbC5zYWZlTG9hZChyKSksZS5kZWZpbml0aW9uLmV4YW1wbGU9cixmKGUuZGVmaW5pdGlvbixyLHQsZS5tb2RlbFByb3BlcnR5TWFjcm8pfX0pfWlmKGUuZXhhbXBsZXMpe2U9Xy5jbG9uZURlZXAoZSk7dmFyIHI9ZS5leGFtcGxlcztyZXR1cm4gXy5pc1N0cmluZyhyKSYmKHI9anN5YW1sLnNhZmVMb2FkKHIpKSxlLmRlZmluaXRpb24uZXhhbXBsZT1yLGYoZS5kZWZpbml0aW9uLHIsdCxlLm1vZGVsUHJvcGVydHlNYWNybyl9cmV0dXJuIGYoZS5kZWZpbml0aW9uLGUubW9kZWxzLHQsZS5tb2RlbFByb3BlcnR5TWFjcm8pfSxtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4gZSBpbnN0YW5jZW9mIEFycmF5JiYocj0hMCxlPWVbMF0pLCJ1bmRlZmluZWQiPT10eXBlb2YgZT8oZT0idW5kZWZpbmVkIixuPSEwKTp0W2VdPyhlPXRbZV0sbj0hMSk6YyhlKT8oZT1jKGUpLG49ITEpOm49ITAsbj9yPyJBcnJheVsiK2UrIl0iOmUudG9TdHJpbmcoKTpyPyJBcnJheVsiK2goZS5uYW1lLGUuZGVmaW5pdGlvbixlLm1vZGVscyxlLm1vZGVsUHJvcGVydHlNYWNybykrIl0iOmgoZS5uYW1lLGUuZGVmaW5pdGlvbixlLm1vZGVscyxlLm1vZGVsUHJvcGVydHlNYWNybyl9LGc9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYodD10fHx7fSxuPWUgaW5zdGFuY2VvZiBBcnJheSxpPW4/ZVswXTplLHRbaV0/cj1kKHRbaV0pOmMoaSkmJihyPWQoYyhpKSkpLHIpe2lmKHI9bj9bcl06ciwic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIHI7aWYoXy5pc09iamVjdChyKSl7dmFyIGE9cjtpZihyIGluc3RhbmNlb2YgQXJyYXkmJnIubGVuZ3RoPjAmJihhPXJbMF0pLGEubm9kZU5hbWUmJiJOb2RlIj09dHlwZW9mIGEpe3ZhciBvPShuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoYSk7cmV0dXJuIHAobyl9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHIsbnVsbCwyKX1yZXR1cm4gcn19LHk9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLGE7cmV0dXJuIHI9cnx8W10sYT1yLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iICIrZS5uYW1lKyc9IicrZS52YWx1ZSsnIid9KS5qb2luKCIiKSxlPyhpPVsiPCIsZSxhLCI+Iix0LCI8LyIsZSwiPiJdLGkuam9pbigiIikpOm4oIk5vZGUgbmFtZSBpcyBub3QgcHJvdmlkZWQiKX0sdj1mdW5jdGlvbihlLHQpe3ZhciBuPWV8fCIiO3JldHVybiB0PXR8fHt9LHQucHJlZml4JiYobj10LnByZWZpeCsiOiIrbiksbn0sYj1mdW5jdGlvbihlKXt2YXIgdD0iIixuPSJ4bWxucyI7cmV0dXJuIGU9ZXx8e30sZS5uYW1lc3BhY2U/KHQ9ZS5uYW1lc3BhY2UsZS5wcmVmaXgmJihuKz0iOiIrZS5wcmVmaXgpLHtuYW1lOm4sdmFsdWU6dH0pOnR9LHc9ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLm5hbWUsYT1lLmNvbmZpZyxvPWUuZGVmaW5pdGlvbixzPWUubW9kZWxzLGw9by5pdGVtcyx1PW8ueG1sfHx7fSxjPWIodSkscD1bXTtpZighbClyZXR1cm4gbigpO3ZhciBoPWk7cmV0dXJuIGwueG1sJiZsLnhtbC5uYW1lJiYoaD1sLnhtbC5uYW1lKSx0PXIoaCxsLHMsYSksYyYmcC5wdXNoKGMpLHUud3JhcHBlZCYmKHQ9eShpLHQscCkpLHR9LHg9ZnVuY3Rpb24oZSl7dmFyIHQsbjtzd2l0Y2goZT1lfHx7fSxuPWUuaXRlbXN8fHt9LHQ9ZS50eXBlfHwiIil7Y2FzZSJvYmplY3QiOnJldHVybiJPYmplY3QgaXMgbm90IGEgcHJpbWl0aXZlIjtjYXNlImFycmF5IjpyZXR1cm4iQXJyYXlbIisobi5mb3JtYXR8fG4udHlwZSkrIl0iO2RlZmF1bHQ6cmV0dXJuIGUuZm9ybWF0fHx0fX0sQT1mdW5jdGlvbihlKXt2YXIgdCxyPWUubmFtZSxpPWUuZGVmaW5pdGlvbixhPXtzdHJpbmc6e2RhdGU6bmV3IERhdGUoMSkudG9JU09TdHJpbmcoKS5zcGxpdCgiVCIpWzBdLCJkYXRlLXRpbWUiOm5ldyBEYXRlKDEpLnRvSVNPU3RyaW5nKCksImRlZmF1bHQiOiJzdHJpbmcifSxpbnRlZ2VyOnsiZGVmYXVsdCI6MX0sbnVtYmVyOnsiZGVmYXVsdCI6MS4xfSwiYm9vbGVhbiI6eyJkZWZhdWx0IjohMH19LG89aS50eXBlLHM9aS5mb3JtYXQsbD1pLnhtbHx8e30sdT1iKGwpLGM9W107cmV0dXJuIF8ua2V5cyhhKS5pbmRleE9mKG8pPDA/bigpOih0PV8uaXNBcnJheShpWyJlbnVtIl0pP2lbImVudW0iXVswXTppLmV4YW1wbGV8fGFbb11bc118fGFbb11bImRlZmF1bHQiXSxsLmF0dHJpYnV0ZT97bmFtZTpyLHZhbHVlOnR9Oih1JiZjLnB1c2godSkseShyLHQsYykpKX07cmV0dXJue2dldE1vZGVsU2lnbmF0dXJlOmgsY3JlYXRlSlNPTlNhbXBsZTpkLGdldFBhcmFtZXRlck1vZGVsU2lnbmF0dXJlOm0sY3JlYXRlUGFyYW1ldGVySlNPTlNhbXBsZTpnLGNyZWF0ZVNjaGVtYVhNTDpyLGNyZWF0ZVhNTFNhbXBsZTpzLGdldFByaW1pdGl2ZVNpZ25hdHVyZTp4fX0oKSxTd2FnZ2VyVWkuVmlld3MuUG9wdXBWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtldmVudHM6eyJjbGljayAuYXBpLXBvcHVwLWNhbmNlbCI6ImNhbmNlbENsaWNrIn0sdGVtcGxhdGU6SGFuZGxlYmFycy50ZW1wbGF0ZXMucG9wdXAsY2xhc3NOYW1lOiJhcGktcG9wdXAtZGlhbG9nIixzZWxlY3RvcnM6e2NvbnRlbnQ6Ii5hcGktcG9wdXAtY29udGVudCIsbWFpbjoiI3N3YWdnZXItdWktY29udGFpbmVyIn0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuJGVsLmh0bWwodGhpcy50ZW1wbGF0ZSh0aGlzLm1vZGVsKSl9LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQodGhpcy5zZWxlY3RvcnMuY29udGVudCkuYXBwZW5kKHRoaXMubW9kZWwuY29udGVudCksJCh0aGlzLnNlbGVjdG9ycy5tYWluKS5maXJzdCgpLmFwcGVuZCh0aGlzLmVsKSx0aGlzLnNob3dQb3B1cCgpLHRoaXN9LHNob3dQb3B1cDpmdW5jdGlvbigpe3RoaXMuJGVsLnNob3coKX0sY2FuY2VsQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZSgpfX0pLFN3YWdnZXJVaS5WaWV3cy5SZXNvdXJjZVZpZXc9QmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7ZT1lfHx7fSx0aGlzLnJvdXRlcj1lLnJvdXRlcix0aGlzLmF1dGhzPWUuYXV0aHMsIiI9PT10aGlzLm1vZGVsLmRlc2NyaXB0aW9uJiYodGhpcy5tb2RlbC5kZXNjcmlwdGlvbj1udWxsKSx0aGlzLm1vZGVsLmRlc2NyaXB0aW9uJiYodGhpcy5tb2RlbC5zdW1tYXJ5PXRoaXMubW9kZWwuZGVzY3JpcHRpb24pLHRoaXMubnVtYmVyPTB9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXt9OyQodGhpcy5lbCkuaHRtbChIYW5kbGViYXJzLnRlbXBsYXRlcy5yZXNvdXJjZSh0aGlzLm1vZGVsKSk7Zm9yKHZhciB0PTA7dDx0aGlzLm1vZGVsLm9wZXJhdGlvbnNBcnJheS5sZW5ndGg7dCsrKXtmb3IodmFyIG49dGhpcy5tb2RlbC5vcGVyYXRpb25zQXJyYXlbdF0scj0wLGk9bi5uaWNrbmFtZTsidW5kZWZpbmVkIiE9dHlwZW9mIGVbaV07KWk9aSsiXyIrcixyKz0xO2VbaV09bixuLm5pY2tuYW1lPWksbi5wYXJlbnRJZD10aGlzLm1vZGVsLmlkLG4uZGVmaW5pdGlvbnM9dGhpcy5tb2RlbC5kZWZpbml0aW9ucyx0aGlzLmFkZE9wZXJhdGlvbihuKX1yZXR1cm4gJCgiLnRvZ2dsZUVuZHBvaW50TGlzdCIsdGhpcy5lbCkuY2xpY2sodGhpcy5jYWxsRG9jcy5iaW5kKHRoaXMsInRvZ2dsZUVuZHBvaW50TGlzdEZvclJlc291cmNlIikpLCQoIi5jb2xsYXBzZVJlc291cmNlIix0aGlzLmVsKS5jbGljayh0aGlzLmNhbGxEb2NzLmJpbmQodGhpcywiY29sbGFwc2VPcGVyYXRpb25zRm9yUmVzb3VyY2UiKSksJCgiLmV4cGFuZFJlc291cmNlIix0aGlzLmVsKS5jbGljayh0aGlzLmNhbGxEb2NzLmJpbmQodGhpcywiZXhwYW5kT3BlcmF0aW9uc0ZvclJlc291cmNlIikpLHRoaXN9LGFkZE9wZXJhdGlvbjpmdW5jdGlvbihlKXtlLm51bWJlcj10aGlzLm51bWJlcjt2YXIgdD1uZXcgU3dhZ2dlclVpLlZpZXdzLk9wZXJhdGlvblZpZXcoe21vZGVsOmUscm91dGVyOnRoaXMucm91dGVyLHRhZ05hbWU6ImxpIixjbGFzc05hbWU6ImVuZHBvaW50Iixzd2FnZ2VyT3B0aW9uczp0aGlzLm9wdGlvbnMuc3dhZ2dlck9wdGlvbnMsYXV0aHM6dGhpcy5hdXRoc30pOyQoIi5lbmRwb2ludHMiLCQodGhpcy5lbCkpLmFwcGVuZCh0LnJlbmRlcigpLmVsKSx0aGlzLm51bWJlcisrfSxjYWxsRG9jczpmdW5jdGlvbihlLHQpe3QucHJldmVudERlZmF1bHQoKSxEb2NzW2VdKHQuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtaWQiKSl9fSksU3dhZ2dlclVpLlZpZXdzLlJlc3BvbnNlQ29udGVudFR5cGVWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2RlbC5yZXNwb25zZUNvbnRlbnRUeXBlSWQ9InJjdCIrTWF0aC5yYW5kb20oKSwkKHRoaXMuZWwpLmh0bWwoSGFuZGxlYmFycy50ZW1wbGF0ZXMucmVzcG9uc2VfY29udGVudF90eXBlKHRoaXMubW9kZWwpKSx0aGlzfX0pLFN3YWdnZXJVaS5WaWV3cy5TaWduYXR1cmVWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtldmVudHM6eyJjbGljayBhLmRlc2NyaXB0aW9uLWxpbmsiOiJzd2l0Y2hUb0Rlc2NyaXB0aW9uIiwiY2xpY2sgYS5zbmlwcGV0LWxpbmsiOiJzd2l0Y2hUb1NuaXBwZXQiLCJtb3VzZWRvd24gLnNuaXBwZXRfanNvbiI6Impzb25TbmlwcGV0TW91c2VEb3duIiwibW91c2Vkb3duIC5zbmlwcGV0X3htbCI6InhtbFNuaXBwZXRNb3VzZURvd24ifSxpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gJCh0aGlzLmVsKS5odG1sKEhhbmRsZWJhcnMudGVtcGxhdGVzLnNpZ25hdHVyZSh0aGlzLm1vZGVsKSksIm1vZGVsIj09PXRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZz90aGlzLnN3aXRjaFRvRGVzY3JpcHRpb24oKTp0aGlzLnN3aXRjaFRvU25pcHBldCgpLHRoaXN9LHN3aXRjaFRvRGVzY3JpcHRpb246ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLCQoIi5zbmlwcGV0IiwkKHRoaXMuZWwpKS5oaWRlKCksJCgiLmRlc2NyaXB0aW9uIiwkKHRoaXMuZWwpKS5zaG93KCksJCgiLmRlc2NyaXB0aW9uLWxpbmsiLCQodGhpcy5lbCkpLmFkZENsYXNzKCJzZWxlY3RlZCIpLCQoIi5zbmlwcGV0LWxpbmsiLCQodGhpcy5lbCkpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpfSxzd2l0Y2hUb1NuaXBwZXQ6ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpLCQoIi5zbmlwcGV0IiwkKHRoaXMuZWwpKS5zaG93KCksJCgiLmRlc2NyaXB0aW9uIiwkKHRoaXMuZWwpKS5oaWRlKCksJCgiLnNuaXBwZXQtbGluayIsJCh0aGlzLmVsKSkuYWRkQ2xhc3MoInNlbGVjdGVkIiksJCgiLmRlc2NyaXB0aW9uLWxpbmsiLCQodGhpcy5lbCkpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpfSxzbmlwcGV0VG9UZXh0QXJlYTpmdW5jdGlvbihlKXt2YXIgdD0kKCJ0ZXh0YXJlYSIsJCh0aGlzLmVsLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlKSk7IiIhPT0kLnRyaW0odC52YWwoKSkmJnQucHJvcCgicGxhY2Vob2xkZXIiKSE9PXQudmFsKCl8fCh0LnZhbChlKSwKK3RoaXMubW9kZWwuanNvbkVkaXRvciYmdGhpcy5tb2RlbC5qc29uRWRpdG9yLmlzRW5hYmxlZCgpJiZ0aGlzLm1vZGVsLmpzb25FZGl0b3Iuc2V0VmFsdWUoSlNPTi5wYXJzZSh0aGlzLm1vZGVsLnNhbXBsZUpTT04pKSl9LGpzb25TbmlwcGV0TW91c2VEb3duOmZ1bmN0aW9uKGUpe3RoaXMubW9kZWwuaXNQYXJhbSYmKGUmJmUucHJldmVudERlZmF1bHQoKSx0aGlzLnNuaXBwZXRUb1RleHRBcmVhKHRoaXMubW9kZWwuc2FtcGxlSlNPTikpfSx4bWxTbmlwcGV0TW91c2VEb3duOmZ1bmN0aW9uKGUpe3RoaXMubW9kZWwuaXNQYXJhbSYmKGUmJmUucHJldmVudERlZmF1bHQoKSx0aGlzLnNuaXBwZXRUb1RleHRBcmVhKHRoaXMubW9kZWwuc2FtcGxlWE1MKSl9fSksU3dhZ2dlclVpLlZpZXdzLlN0YXR1c0NvZGVWaWV3PUJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1lfHx7fSx0aGlzLnJvdXRlcj10aGlzLm9wdGlvbnMucm91dGVyfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZSx0LG49dGhpcy5yb3V0ZXIuYXBpLm1vZGVsc1t0aGlzLm1vZGVsLnJlc3BvbnNlTW9kZWxdO3JldHVybiAkKHRoaXMuZWwpLmh0bWwoSGFuZGxlYmFycy50ZW1wbGF0ZXMuc3RhdHVzX2NvZGUodGhpcy5tb2RlbCkpLGU9dGhpcy5yb3V0ZXIuYXBpLm1vZGVscy5oYXNPd25Qcm9wZXJ0eSh0aGlzLm1vZGVsLnJlc3BvbnNlTW9kZWwpP3tzYW1wbGVKU09OOkpTT04uc3RyaW5naWZ5KFN3YWdnZXJVaS5wYXJ0aWFscy5zaWduYXR1cmUuY3JlYXRlSlNPTlNhbXBsZShuKSx2b2lkIDAsMiksc2FtcGxlWE1MOiEhdGhpcy5tb2RlbC5pc1hNTCYmU3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5jcmVhdGVYTUxTYW1wbGUoIiIsdGhpcy5tb2RlbC5zY2hlbWEsdGhpcy5yb3V0ZXIuYXBpLm1vZGVscyksaXNQYXJhbTohMSxzaWduYXR1cmU6U3dhZ2dlclVpLnBhcnRpYWxzLnNpZ25hdHVyZS5nZXRNb2RlbFNpZ25hdHVyZSh0aGlzLm1vZGVsLnJlc3BvbnNlTW9kZWwsbix0aGlzLnJvdXRlci5hcGkubW9kZWxzKSxkZWZhdWx0UmVuZGVyaW5nOnRoaXMubW9kZWwuZGVmYXVsdFJlbmRlcmluZ306e3NpZ25hdHVyZTpTd2FnZ2VyVWkucGFydGlhbHMuc2lnbmF0dXJlLmdldFByaW1pdGl2ZVNpZ25hdHVyZSh0aGlzLm1vZGVsLnNjaGVtYSl9LHQ9bmV3IFN3YWdnZXJVaS5WaWV3cy5TaWduYXR1cmVWaWV3KHttb2RlbDplLHRhZ05hbWU6ImRpdiJ9KSwkKCIubW9kZWwtc2lnbmF0dXJlIix0aGlzLiRlbCkuYXBwZW5kKHQucmVuZGVyKCkuZWwpLHRoaXN9fSl9KS5jYWxsKHRoaXMpOwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9zd2FnZ2VyLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvbWFpbi9yZXNvdXJjZXMvc3dhZ2dlci11aS9kaXN0L3N3YWdnZXIuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTk4NTliCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL21haW4vcmVzb3VyY2VzL3N3YWdnZXItdWkvZGlzdC9zd2FnZ2VyLmpzb24KQEAgLTAsMCArMSwxOTU3IEBACit7DQorICAic3dhZ2dlciIgOiAiMi4wIiwNCisgICJpbmZvIiA6IHsNCisgICAgInZlcnNpb24iIDogIjAuMy4wLVNOQVBTSE9UIiwNCisgICAgInRpdGxlIiA6ICJDb250cm9sbGVyIEJsdWVwcmludCBTZXJ2aWNlIg0KKyAgfSwNCisgICJiYXNlUGF0aCIgOiAiL2FwaS9jb250cm9sbGVyLWJsdWVwcmludHMvdjEiLA0KKyAgInNjaGVtZXMiIDogWyAiaHR0cCIsICJodHRwcyIgXSwNCisgICJwYXRocyIgOiB7DQorICAgICIvc2VydmljZS9jb25maWdtb2RlbCIgOiB7DQorICAgICAgInBvc3QiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgTW9kZWwgVHlwZSBieSBUYWdzIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAic2F2ZUNvbmZpZ01vZGVsIiwNCisgICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCisgICAgICAgICAgImluIiA6ICJib2R5IiwNCisgICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ29uZmlnTW9kZWwiDQorICAgICAgICAgIH0NCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1NlcnZpY2VUZW1wbGF0ZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL2NvbmZpZ21vZGVsL3tpZH0iIDogew0KKyAgICAgICJnZXQiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBTZWFyY2ggU2VydmljZSBUZW1wbGF0ZSIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImdldENvbmZpZ01vZGVsIiwNCisgICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCisgICAgICAgICAgIm5hbWUiIDogImlkIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiaW50NjQiDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Db25maWdNb2RlbCINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlbGV0ZSIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGRlbGV0ZSBDb25maWdNb2RlbC4iLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVDb25maWdNb2RlbCIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJpZCIsDQorICAgICAgICAgICJpbiIgOiAicGF0aCIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAiaW50ZWdlciIsDQorICAgICAgICAgICJmb3JtYXQiIDogImludDY0Ig0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL2NvbmZpZ21vZGVsYnluYW1lL3tuYW1lfS92ZXJzaW9uL3t2ZXJzaW9ufSIgOiB7DQorICAgICAgImdldCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIFNlYXJjaCBTZXJ2aWNlIFRlbXBsYXRlIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAiZ2V0Q29uZmlnTW9kZWxCeU5hbWVBbmRWZXJzaW9uIiwNCisgICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCisgICAgICAgICAgIm5hbWUiIDogIm5hbWUiLA0KKyAgICAgICAgICAiaW4iIDogInBhdGgiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sIHsNCisgICAgICAgICAgIm5hbWUiIDogInZlcnNpb24iLA0KKyAgICAgICAgICAiaW4iIDogInBhdGgiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmZpZ01vZGVsIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvY29uZmlnbW9kZWxjbG9uZS97aWR9IiA6IHsNCisgICAgICAiZ2V0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gY3JlYXRlIGRlZmF1bHQgU2VydmljZSBUZW1wbGF0ZSIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImdldENsb25lQ29uZmlnTW9kZWwiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAibmFtZSIgOiAiaWQiLA0KKyAgICAgICAgICAiaW4iIDogInBhdGgiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KKyAgICAgICAgICAiZm9ybWF0IiA6ICJpbnQ2NCINCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmZpZ01vZGVsIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvY29uZmlnbW9kZWxpbml0aWFsL3tuYW1lfSIgOiB7DQorICAgICAgImdldCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGNyZWF0ZSBkZWZhdWx0IFNlcnZpY2UgVGVtcGxhdGUiLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJnZXRJbml0aWFsQ29uZmlnTW9kZWwiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAibmFtZSIgOiAibmFtZSIsDQorICAgICAgICAgICJpbiIgOiAicGF0aCIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ29uZmlnTW9kZWwiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNDA0IiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSINCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjUwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICIvc2VydmljZS9jb25maWdtb2RlbHB1Ymxpc2gve2lkfSIgOiB7DQorICAgICAgImdldCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBNb2RlbCBUeXBlIGJ5IFRhZ3MiLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJwdWJsaXNoQ29uZmlnTW9kZWwiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAibmFtZSIgOiAiaWQiLA0KKyAgICAgICAgICAiaW4iIDogInBhdGgiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KKyAgICAgICAgICAiZm9ybWF0IiA6ICJpbnQ2NCINCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmZpZ01vZGVsIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvY29uZmlnbW9kZWxzZWFyY2gve3RhZ3N9IiA6IHsNCisgICAgICAiZ2V0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gU2VhcmNoIFNlcnZpY2UgVGVtcGxhdGUiLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJzZWFyY2hDb25maWdNb2RlbHMiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAibmFtZSIgOiAidGFncyIsDQorICAgICAgICAgICJpbiIgOiAicGF0aCIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ29uZmlnTW9kZWwiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNDA0IiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSINCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjUwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICIvc2VydmljZS9kaWN0aW9uYXJ5IiA6IHsNCisgICAgICAicG9zdCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIFNhdmUgUmVzb3VyY2UgZGljdGlvbmFyeSBUeXBlIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAic2F2ZVJlc291cmNlRGljdGlvbmFyeSIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJpbiIgOiAiYm9keSIsDQorICAgICAgICAgICJuYW1lIiA6ICJib2R5IiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Jlc291cmNlRGljdGlvbmFyeSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVzb3VyY2VEaWN0aW9uYXJ5Ig0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvZGljdGlvbmFyeS97bmFtZX0iIDogew0KKyAgICAgICJnZXQiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgUmVzb3VyY2UgZGljdGlvbmFyeSIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImdldFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZSIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJuYW1lIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9SZXNvdXJjZURpY3Rpb25hcnkiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNDA0IiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSINCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjUwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZWxldGUiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBkZWxldGUgUmVzb3VyY2VEaWN0aW9uYXJ5IFR5cGUiLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJkZWxldGVSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWUiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAibmFtZSIgOiAibmFtZSIsDQorICAgICAgICAgICJpbiIgOiAicGF0aCIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL2RpY3Rpb25hcnlieW5hbWVzIiA6IHsNCisgICAgICAicG9zdCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBSZXNvdXJjZURpY3Rpb25hcnkgVHlwZSBieSBuYW1lcyIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogInNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZXMiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAiaW4iIDogImJvZHkiLA0KKyAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Jlc291cmNlRGljdGlvbmFyeSINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL2RpY3Rpb25hcnlzZWFyY2gve3RhZ3N9IiA6IHsNCisgICAgICAiZ2V0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gc2VhcmNoIFJlc291cmNlIGRpY3Rpb25hcnkgYnkgdGFncyIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogInNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5VGFncyIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJ0YWdzIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVzb3VyY2VEaWN0aW9uYXJ5Ig0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvbW9kZWx0eXBlIiA6IHsNCisgICAgICAicG9zdCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIFNhdmUgTW9kZWwgVHlwZSIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogInNhdmVNb2RlbFR5cGUiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAiaW4iIDogImJvZHkiLA0KKyAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Nb2RlbFR5cGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL01vZGVsVHlwZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL21vZGVsdHlwZS97bmFtZX0iIDogew0KKyAgICAgICJnZXQiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgTW9kZWwgVHlwZSBieSBpZCIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImdldE1vZGVsVHlwZUJ5TmFtZSIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJuYW1lIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Nb2RlbFR5cGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNDA0IiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSINCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjUwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZWxldGUiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBkZWxldGUgTW9kZWwgVHlwZSIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImRlbGV0ZU1vZGVsVHlwZUJ5TmFtZSIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJuYW1lIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvbW9kZWx0eXBlYnlkZWZpbml0aW9uL3tkZWZpbml0aW9uVHlwZX0iIDogew0KKyAgICAgICJnZXQiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgTW9kZWwgVHlwZSBieSB0YWdzIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAiZ2V0TW9kZWxUeXBlQnlEZWZpbml0aW9uVHlwZSIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJkZWZpbml0aW9uVHlwZSIsDQorICAgICAgICAgICJpbiIgOiAicGF0aCIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL01vZGVsVHlwZSINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL21vZGVsdHlwZXNlYXJjaC97dGFnc30iIDogew0KKyAgICAgICJnZXQiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgTW9kZWwgVHlwZSBieSB0YWdzIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAic2VhcmNoTW9kZWxUeXBlcyIsDQorICAgICAgICAiY29uc3VtZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwcm9kdWNlcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInBhcmFtZXRlcnMiIDogWyB7DQorICAgICAgICAgICJuYW1lIiA6ICJ0YWdzIiwNCisgICAgICAgICAgImluIiA6ICJwYXRoIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvTW9kZWxUeXBlIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvcmVzb3VyY2Vhc3NpZ25tZW50L2F1dG9tYXAiIDogew0KKyAgICAgICJwb3N0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gYXV0byBtYXAgZm9yIHRoZSBSZXNvdXJjZSBhc3NpZ25tZW50cyIsDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogIiIsDQorICAgICAgICAib3BlcmF0aW9uSWQiIDogImF1dG9NYXAiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAiaW4iIDogImJvZHkiLA0KKyAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9SZXNvdXJjZUFzc2lnbm1lbnQiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9BdXRvTWFwUmVzcG9uc2UiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNDA0IiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSINCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjUwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICIvc2VydmljZS9yZXNvdXJjZWFzc2lnbm1lbnQvZ2VuZXJhdGUiIDogew0KKyAgICAgICJwb3N0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gYXV0byBtYXAgZm9yIHRoZSBSZXNvdXJjZSBNYXBwaW5nIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAiZ2VuZXJhdGVSZXNvdXJjZUFzc2lnbm1lbnRzIiwNCisgICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCisgICAgICAgICAgImluIiA6ICJib2R5IiwNCisgICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ29uZmlnTW9kZWxDb250ZW50Ig0KKyAgICAgICAgICB9DQorICAgICAgICB9IF0sDQorICAgICAgICAicmVzcG9uc2VzIiA6IHsNCisgICAgICAgICAgIjIwMCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJzdWNjZXNzZnVsIG9wZXJhdGlvbiIsDQorICAgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVzb3VyY2VBc3NpZ25tZW50Ig0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIjQwNCIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICI1MDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiL3NlcnZpY2UvcmVzb3VyY2Vhc3NpZ25tZW50L3ZhbGlkYXRlIiA6IHsNCisgICAgICAicG9zdCIgOiB7DQorICAgICAgICAic3VtbWFyeSIgOiAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIHZhbGlkYXRlIFJlc291cmNlIGFzc2lnbm1lbnRzIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAidmFsaWRhdGVSZXNvdXJjZUFzc2lnbm1lbnRzIiwNCisgICAgICAgICJjb25zdW1lcyIgOiBbICJhcHBsaWNhdGlvbi9qc29uIiBdLA0KKyAgICAgICAgInByb2R1Y2VzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicGFyYW1ldGVycyIgOiBbIHsNCisgICAgICAgICAgImluIiA6ICJib2R5IiwNCisgICAgICAgICAgIm5hbWUiIDogImJvZHkiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInNjaGVtYSIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVzb3VyY2VBc3NpZ25tZW50Ig0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSBdLA0KKyAgICAgICAgInJlc3BvbnNlcyIgOiB7DQorICAgICAgICAgICIyMDAiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAic3VjY2Vzc2Z1bCBvcGVyYXRpb24iLA0KKyAgICAgICAgICAgICJzY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Jlc291cmNlQXNzaWdubWVudCINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL3NlcnZpY2V0ZW1wbGF0ZS9lbnJpY2giIDogew0KKyAgICAgICJwb3N0IiA6IHsNCisgICAgICAgICJzdW1tYXJ5IiA6ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gZW5yaWNoIHNlcnZpY2UgdGVtcGxhdGUiLA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgIm9wZXJhdGlvbklkIiA6ICJlbnJpY2hTZXJ2aWNlVGVtcGxhdGUiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAiaW4iIDogImJvZHkiLA0KKyAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9TZXJ2aWNlVGVtcGxhdGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1NlcnZpY2VUZW1wbGF0ZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIi9zZXJ2aWNlL3NlcnZpY2V0ZW1wbGF0ZS92YWxpZGF0ZSIgOiB7DQorICAgICAgInBvc3QiIDogew0KKyAgICAgICAgInN1bW1hcnkiIDogIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byB2YWxpZGF0ZSBzZXJ2aWNlIHRlbXBsYXRlIiwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICJvcGVyYXRpb25JZCIgOiAidmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUiLA0KKyAgICAgICAgImNvbnN1bWVzIiA6IFsgImFwcGxpY2F0aW9uL2pzb24iIF0sDQorICAgICAgICAicHJvZHVjZXMiIDogWyAiYXBwbGljYXRpb24vanNvbiIgXSwNCisgICAgICAgICJwYXJhbWV0ZXJzIiA6IFsgew0KKyAgICAgICAgICAiaW4iIDogImJvZHkiLA0KKyAgICAgICAgICAibmFtZSIgOiAiYm9keSIsDQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9TZXJ2aWNlVGVtcGxhdGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0gXSwNCisgICAgICAgICJyZXNwb25zZXMiIDogew0KKyAgICAgICAgICAiMjAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogInN1Y2Nlc3NmdWwgb3BlcmF0aW9uIiwNCisgICAgICAgICAgICAic2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1NlcnZpY2VUZW1wbGF0ZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICI0MDQiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBub3QgYXZhaWxhYmxlIg0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiNTAwIiA6IHsNCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJkZWZpbml0aW9ucyIgOiB7DQorICAgICJBY3Rpdml0eSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlbGVnYXRlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiaW5saW5lcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJzZXRfc3RhdGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjYWxsX29wZXJhdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiQXJ0aWZhY3REZWZpbml0aW9uIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAidHlwZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImZpbGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXBvc2l0b3J5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSnNvbk5vZGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiY29udGVudCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1hcHBpbmdDb250ZW50IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVwbG95X1BhdGgiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkFydGlmYWN0VHlwZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1ldGFkYXRhIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQXR0cmlidXRlRGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImRlcml2ZWRfZnJvbSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1pbWVfdHlwZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImZpbGVfZXh0IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiQXR0cmlidXRlRGVmaW5pdGlvbiIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInN0YXR1cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImdldF9kZWZhdWx0IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgIH0sDQorICAgICAgICAiZW50cnlfc2NoZW1hIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJBdXRvTWFwUmVzcG9uc2UiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJyZXNvdXJjZUFzc2lnbm1lbnRzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9SZXNvdXJjZUFzc2lnbm1lbnQiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiZGF0YURpY3Rpb25hcmllcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVzb3VyY2VEaWN0aW9uYXJ5Ig0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiQ2FwYWJpbGl0eUFzc2lnbm1lbnQiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSnNvbk5vZGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0pzb25Ob2RlIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiQ2FwYWJpbGl0eURlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJ0eXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgIm9jY3VycmVuY2VzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInZhbGlkX3NvdXJjZV90eXBlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkNvbmRpdGlvbkNsYXVzZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImFuZCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgIm9yIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiYXNzZXJ0IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJDb25maWdNb2RlbCIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInJlcXVpcmVkIiA6IFsgImFydGlmYWN0TmFtZSIsICJhcnRpZmFjdFZlcnNpb24iLCAicHVibGlzaGVkIiwgInRhZ3MiLCAidXBkYXRlZEJ5IiBdLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJpZCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiaW50NjQiDQorICAgICAgICB9LA0KKyAgICAgICAgInNlcnZpY2VVVUlEIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGlzdHJpYnV0aW9uSWQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJzZXJ2aWNlTmFtZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInNlcnZpY2VEZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlc291cmNlVVVJRCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlc291cmNlSW5zdGFuY2VOYW1lIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicmVzb3VyY2VOYW1lIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicmVzb3VyY2VWZXJzaW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicmVzb3VyY2VUeXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3RVVUlkIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3RUeXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3RWZXJzaW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3REZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImludGVybmFsVmVyc2lvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiaW50MzIiDQorICAgICAgICB9LA0KKyAgICAgICAgImNyZWF0ZWREYXRlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQorICAgICAgICAgICJmb3JtYXQiIDogImRhdGUtdGltZSINCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3ROYW1lIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicHVibGlzaGVkIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidXBkYXRlZEJ5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidGFncyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImNvbmZpZ01vZGVsQ29udGVudHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmZpZ01vZGVsQ29udGVudCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkNvbmZpZ01vZGVsQ29udGVudCIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInJlcXVpcmVkIiA6IFsgImNvbnRlbnQiLCAiY29udGVudFR5cGUiLCAibmFtZSIgXSwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiaWQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiaW50ZWdlciIsDQorICAgICAgICAgICJmb3JtYXQiIDogImludDY0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJuYW1lIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiY29udGVudFR5cGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb25maWdNb2RlbCIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmZpZ01vZGVsIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImNvbnRlbnQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjcmVhdGlvbkRhdGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiZGF0ZS10aW1lIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkNvbnN0cmFpbnRDbGF1c2UiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJlcXVhbCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICB9LA0KKyAgICAgICAgImdyZWF0ZXJfdGhhbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICB9LA0KKyAgICAgICAgImdyZWF0ZXJfb3JfZXF1YWwiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJsZXNzX3RoYW4iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJsZXNzX29yX2VxdWFsIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgIH0sDQorICAgICAgICAiaW5fcmFuZ2UiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJ2YWxpZF92YWx1ZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAibGVuZ3RoIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgIH0sDQorICAgICAgICAibWluX2xlbmd0aCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICB9LA0KKyAgICAgICAgIm1heF9sZW5ndGgiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJwYXR0ZXJuIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJDcmVkZW50aWFsIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAicHJvdG9jb2wiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ0b2tlbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImtleXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInVzZXIiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ0b2tlbl90eXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJEYXRhVHlwZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1ldGFkYXRhIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQXR0cmlidXRlRGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImNvbnN0cmFpbnRzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiZGVyaXZlZF9mcm9tIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJFbnRyeVNjaGVtYSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgInR5cGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb25zdHJhaW50cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiSW1wbGVtZW50YXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJwcmltYXJ5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVwZW5kZW5jaWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiSW1wb3J0RGVmaW5pdGlvbiIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImZpbGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXBvc2l0b3J5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAibmFtZXNwYWNlX3VyaSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm5hbWVzcGFjZV9wcmVmaXgiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkludGVyZmFjZUFzc2lnbm1lbnQiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvT3BlcmF0aW9uQXNzaWdubWVudCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnB1dHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Kc29uTm9kZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIkludGVyZmFjZURlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJ0eXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAib3BlcmF0aW9ucyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL09wZXJhdGlvbkRlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiSnNvbk5vZGUiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJhcnJheSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJudWxsIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImJvb2xlYW4iDQorICAgICAgICB9LA0KKyAgICAgICAgImZsb2F0IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImJvb2xlYW4iDQorICAgICAgICB9LA0KKyAgICAgICAgIm5vZGVUeXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQorICAgICAgICAgICJlbnVtIiA6IFsgIkFSUkFZIiwgIkJJTkFSWSIsICJCT09MRUFOIiwgIk1JU1NJTkciLCAiTlVMTCIsICJOVU1CRVIiLCAiT0JKRUNUIiwgIlBPSk8iLCAiU1RSSU5HIiBdDQorICAgICAgICB9LA0KKyAgICAgICAgIm51bWJlciIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2YWx1ZU5vZGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiY29udGFpbmVyTm9kZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJtaXNzaW5nTm9kZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJvYmplY3QiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAicG9qbyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlZ3JhbE51bWJlciIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJzaG9ydCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAibG9uZyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkb3VibGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiYmlnRGVjaW1hbCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJiaWdJbnRlZ2VyIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImJvb2xlYW4iDQorICAgICAgICB9LA0KKyAgICAgICAgInRleHR1YWwiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiYm9vbGVhbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJiaW5hcnkiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiZmxvYXRpbmdQb2ludE51bWJlciIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIk1vZGVsVHlwZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInJlcXVpcmVkIiA6IFsgImRlZmluaXRpb24iLCAiZGVmaW5pdGlvblR5cGUiLCAiZGVyaXZlZEZyb20iLCAiZGVzY3JpcHRpb24iLCAibW9kZWxOYW1lIiwgInRhZ3MiLCAidXBkYXRlZEJ5IiwgInZlcnNpb24iIF0sDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgIm1vZGVsTmFtZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImRlcml2ZWRGcm9tIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVmaW5pdGlvblR5cGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZWZpbml0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidGFncyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImNyZWF0aW9uRGF0ZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZm9ybWF0IiA6ICJkYXRlLXRpbWUiDQorICAgICAgICB9LA0KKyAgICAgICAgInVwZGF0ZWRCeSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiTm9kZUZpbHRlckRlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIk5vZGVUZW1wbGF0ZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1ldGFkYXRhIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJkaXJlY3RpdmVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Kc29uTm9kZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSnNvbk5vZGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ2FwYWJpbGl0eUFzc2lnbm1lbnQiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicmVxdWlyZW1lbnRzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVxdWlyZW1lbnRBc3NpZ25tZW50Ig0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9JbnRlcmZhY2VBc3NpZ25tZW50Ig0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0FydGlmYWN0RGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJjb3B5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAibm9kZV9maWx0ZXIiIDogew0KKyAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Ob2RlRmlsdGVyRGVmaW5pdGlvbiINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJOb2RlVHlwZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1ldGFkYXRhIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQXR0cmlidXRlRGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NhcGFiaWxpdHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVtZW50cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1JlcXVpcmVtZW50RGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSW50ZXJmYWNlRGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhcnRpZmFjdHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9BcnRpZmFjdERlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiZGVyaXZlZF9mcm9tIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJPcGVyYXRpb25Bc3NpZ25tZW50IiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbXBsZW1lbnRhdGlvbiIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0ltcGxlbWVudGF0aW9uIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnB1dHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Kc29uTm9kZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJvdXRwdXRzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSnNvbk5vZGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJPcGVyYXRpb25EZWZpbml0aW9uIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbXBsZW1lbnRhdGlvbiIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0ltcGxlbWVudGF0aW9uIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnB1dHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qcm9wZXJ0eURlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAib3V0cHV0cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Byb3BlcnR5RGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIlBvbGljeURlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJ0eXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJtZXRhZGF0YSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0pzb25Ob2RlIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInRhcmdldHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJQb2xpY3lUeXBlIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAibWV0YWRhdGEiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImF0dHJpYnV0ZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9BdHRyaWJ1dGVEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qcm9wZXJ0eURlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidGFyZ2V0cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXJpdmVkX2Zyb20iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIlByZUNvbmRpdGlvbkRlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJ0YXJnZXQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb25kaXRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NvbmRpdGlvbkNsYXVzZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0YXJnZXRfcmVsYXRpb25zaGlwIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJQcm9wZXJ0eURlZmluaXRpb24iIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVkIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImJvb2xlYW4iDQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJzdGF0dXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb25zdHJhaW50cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvQ29uc3RyYWludENsYXVzZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ2YWx1ZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICB9LA0KKyAgICAgICAgImRlZmF1bHQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0Ig0KKyAgICAgICAgfSwNCisgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9FbnRyeVNjaGVtYSINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJSZWxhdGlvbnNoaXBUZW1wbGF0ZSIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgInR5cGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1ldGFkYXRhIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUHJvcGVydHlEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImF0dHJpYnV0ZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Kc29uTm9kZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSW50ZXJmYWNlRGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJjb3B5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJSZXBvc2l0b3J5RGVmaW5pdGlvbiIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidXJsIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiY3JlZGVudGlhbCIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0NyZWRlbnRpYWwiDQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiUmVxdWlyZW1lbnRBc3NpZ25tZW50IiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiY2FwYWJpbGl0eSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm5vZGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZWxhdGlvbnNoaXAiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIlJlcXVpcmVtZW50RGVmaW5pdGlvbiIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0eSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm5vZGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZWxhdGlvbnNoaXAiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJvY2N1cnJlbmNlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIlJlc291cmNlQXNzaWdubWVudCIgOiB7DQorICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgIm5hbWUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Byb3BlcnR5RGVmaW5pdGlvbiINCisgICAgICAgIH0sDQorICAgICAgICAiaW5wdXQtcGFyYW0iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiZGljdGlvbmFyeS1uYW1lIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXBlbmRlbmNpZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiaW50MzIiDQorICAgICAgICB9LA0KKyAgICAgICAgInN0YXR1cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgIm1lc3NhZ2UiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ1cGRhdGVkLWRhdGUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgImZvcm1hdCIgOiAiZGF0ZS10aW1lIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ1cGRhdGVkLWJ5IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJSZXNvdXJjZURpY3Rpb25hcnkiIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJyZXF1aXJlZCIgOiBbICJkYXRhVHlwZSIsICJkZWZpbml0aW9uIiwgImRlc2NyaXB0aW9uIiwgIm5hbWUiLCAicmVzb3VyY2VQYXRoIiwgInJlc291cmNlVHlwZSIsICJ0YWdzIiwgInVwZGF0ZWRCeSIgXSwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAibmFtZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlc291cmNlUGF0aCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlc291cmNlVHlwZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImRhdGFUeXBlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZW50cnlTY2hlbWEiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2YWxpZFZhbHVlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInNhbXBsZVZhbHVlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVmaW5pdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidGFncyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImNyZWF0aW9uRGF0ZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZm9ybWF0IiA6ICJkYXRlLXRpbWUiDQorICAgICAgICB9LA0KKyAgICAgICAgInVwZGF0ZWRCeSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiU2VydmljZVRlbXBsYXRlIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAibWV0YWRhdGEiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImRlc2NyaXB0aW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicmVwb3NpdG9yaWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvUmVwb3NpdG9yeURlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW1wb3J0cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJhcnJheSIsDQorICAgICAgICAgICJpdGVtcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvSW1wb3J0RGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0b3NjYV9kZWZpbml0aW9uc192ZXJzaW9uIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZHNsX2RlZmluaXRpb25zIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhcnRpZmFjdF90eXBlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL0FydGlmYWN0VHlwZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJkYXRhX3R5cGVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvRGF0YVR5cGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAibm9kZV90eXBlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL05vZGVUeXBlIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInBvbGljeV90eXBlcyIgOiB7DQorICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1BvbGljeVR5cGUiDQorICAgICAgICB9LA0KKyAgICAgICAgInRvcG9sb2d5X3RlbXBsYXRlIiA6IHsNCisgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvVG9wb2xvZ3lUZW1wbGF0ZSINCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJTdGVwIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ0YXJnZXQiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJhY3Rpdml0aWVzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9BY3Rpdml0eSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0YXJnZXRfcmVsYXRpb25zaGlwIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAib3BlcmF0aW9uX2hvc3QiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJvbl9zdWNjZXNzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgIm9uX2ZhaWx1cmUiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAiYXJyYXkiLA0KKyAgICAgICAgICAiaXRlbXMiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJUb3BvbG9neVRlbXBsYXRlIiA6IHsNCisgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iIDogew0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnB1dHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qcm9wZXJ0eURlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicG9saWNpZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qb2xpY3lEZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgIm91dHB1dHMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Qcm9wZXJ0eURlZmluaXRpb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAid29ya2Zsb3dzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvV29ya2Zsb3ciDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAibm9kZV90ZW1wbGF0ZXMiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwNCisgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9Ob2RlVGVtcGxhdGUiDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicmVsYXRpb25zaGlwX3RlbXBsYXRlcyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1JlbGF0aW9uc2hpcFRlbXBsYXRlIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInN1YnN0aXR1dGlvbl9tYXBwaW5ncyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiDQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAiV29ya2Zsb3ciIDogew0KKyAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInN0ZXBzIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsDQorICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgIiRyZWYiIDogIiMvZGVmaW5pdGlvbnMvU3RlcCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcmVjb25kaXRpb25zIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogImFycmF5IiwNCisgICAgICAgICAgIml0ZW1zIiA6IHsNCisgICAgICAgICAgICAiJHJlZiIgOiAiIy9kZWZpbml0aW9ucy9QcmVDb25kaXRpb25EZWZpbml0aW9uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImlucHV0cyIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLA0KKyAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICIkcmVmIiA6ICIjL2RlZmluaXRpb25zL1Byb3BlcnR5RGVmaW5pdGlvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvQ29udHJvbGxlckJsdXByaW50c0FwcGxpY2F0aW9uVGVzdC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmRiZGUwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvYXBwbGljYXRpb24vc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0NvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvblRlc3QuamF2YQpAQCAtMCwwICsxLDU0IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzOw0KKw0KK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlOw0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QudGVzdC5jb250ZXh0LlNwcmluZ0Jvb3RUZXN0Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QudGVzdC5jb250ZXh0LlNwcmluZ0Jvb3RUZXN0LldlYkVudmlyb25tZW50Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QudGVzdC53ZWIuY2xpZW50LlRlc3RSZXN0VGVtcGxhdGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuaHR0cC5IdHRwU3RhdHVzOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmh0dHAuUmVzcG9uc2VFbnRpdHk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudGVzdC5jb250ZXh0Lmp1bml0NC5TcHJpbmdSdW5uZXI7DQorDQoraW1wb3J0IHN0YXRpYyBvcmcuYXNzZXJ0ai5jb3JlLmFwaS5Bc3NlcnRpb25zLmFzc2VydFRoYXQ7DQorDQorQFJ1bldpdGgoU3ByaW5nUnVubmVyLmNsYXNzKQ0KK0BTcHJpbmdCb290VGVzdCh3ZWJFbnZpcm9ubWVudCA9IFdlYkVudmlyb25tZW50LlJBTkRPTV9QT1JUKQ0KK3B1YmxpYyBjbGFzcyBDb250cm9sbGVyQmx1cHJpbnRzQXBwbGljYXRpb25UZXN0IHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENvbnRyb2xsZXJCbHVwcmludHNBcHBsaWNhdGlvblRlc3QuY2xhc3MpOw0KKw0KKyAgICBAQXV0b3dpcmVkDQorICAgIHByaXZhdGUgVGVzdFJlc3RUZW1wbGF0ZSByZXN0VGVtcGxhdGU7DQorDQorICAgIEBCZWZvcmUNCisgICAgcHVibGljIHZvaWQgc2V0VXAoKXsNCisNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0Q29uZmlnTW9kZWwoKSB7DQorDQorICAgICAgICBSZXNwb25zZUVudGl0eTxTdHJpbmc+IGVudGl0eSA9IHRoaXMucmVzdFRlbXBsYXRlDQorICAgICAgICAgICAgICAgIC5nZXRGb3JFbnRpdHkoIi9hcGkvY29udHJvbGxlci1ibHVlcHJpbnRzL3YxL3NlcnZpY2UvY29uZmlnbW9kZWwvMSIsIFN0cmluZy5jbGFzcyk7DQorICAgICAgICBhc3NlcnRUaGF0KGVudGl0eS5nZXRTdGF0dXNDb2RlKCkpLmlzRXF1YWxUbyhIdHRwU3RhdHVzLk9LKTsNCisgICAgfQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvdGVzdC9yZXNvdXJjZXMvYXBwbGljYXRpb24ucHJvcGVydGllcyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL2FwcGxpY2F0aW9uL3NyYy90ZXN0L3Jlc291cmNlcy9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MDU3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9hcHBsaWNhdGlvbi9zcmMvdGVzdC9yZXNvdXJjZXMvYXBwbGljYXRpb24ucHJvcGVydGllcwpAQCAtMCwwICsxLDY1IEBACisjDQorIyBDb3B5cmlnaHQgqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorIw0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjDQorIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIw0KKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIw0KKw0KK2luZm8uYnVpbGQuYXJ0aWZhY3Q9QHByb2plY3QuYXJ0aWZhY3RJZEANCitpbmZvLmJ1aWxkLm5hbWU9QHByb2plY3QubmFtZUANCitpbmZvLmJ1aWxkLmRlc2NyaXB0aW9uPUBwcm9qZWN0LmRlc2NyaXB0aW9uQA0KK2luZm8uYnVpbGQudmVyc2lvbj1AcHJvamVjdC52ZXJzaW9uQA0KK2luZm8uYnVpbGQuZ3JvdXBJZD1AcHJvamVjdC5ncm91cElkQA0KK2xvZ2dpbmcubGV2ZWwucm9vdD1pbmZvDQorDQorc2VydmVyLmNvbnRleHRQYXRoPS8NCitzZXJ2ZXIuc2VydmxldC1wYXRoPS8NCitzcHJpbmcuamVyc2V5LmFwcGxpY2F0aW9uLXBhdGg9L2FwaS9jb250cm9sbGVyLWJsdWVwcmludHMvdjENCitzZXJ2ZXIucm91dGluZ1BhdGg9L2FwaQ0KKw0KK21vdHMuYXBwbGljYXRpb24uYWNyb255bT1NT1RTX0lEDQorcGxhdGZvcm0uaWRlbnRpZmllcj1BSlNDN19KRVJTRVkNCisjc3ByaW5nLmF1dG9jb25maWd1cmUuZXhjbHVkZT1vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5qZGJjLkRhdGFTb3VyY2VBdXRvQ29uZmlndXJhdGlvbixvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5vcm0uanBhLkhpYmVybmF0ZUpwYUF1dG9Db25maWd1cmF0aW9uDQorDQorI2xvZ2dpbmcucGF0dGVybi5jb25zb2xlPSVjbHIoJWR7eXl5eS1NTS1kZCBISDptbTpzcy5TU1N9KXtmYWludH0gJWNsciglNXApICVjbHIoJCB0aHJlYWRJZDoge1BJRDotIH0pe21hZ2VudGF9ICVjbHIoLS0tKXtmYWludH0gJWNscihbIGhvc3RuYW1lOiAlWHtob3N0bmFtZX0gc2VydmljZU5hbWU6ICVYe3NlcnZpY2VOYW1lfSB2ZXJzaW9uOiAlWHt2ZXJzaW9ufSB0cmFuc2FjdGlvbklkOiAlWHt0cmFuc2FjdGlvbklkfSByZXF1ZXN0VGltZVN0YW1wOiAlWHtyZXF1ZXN0VGltZXN0YW1wfSAgcmVzcG9uc2VUaW1lU3RhbXA6ICVYe3Jlc3BvbnNlVGltZXN0YW1wfSBkdXJhdGlvbjogJVh7ZHVyYXRpb259XSl7eWVsbG93fSAlY2xyKFslMTUuMTV0XSl7ZmFpbnR9ICVjbHIoJS00MC40MGxvZ2dlcnszOX0pe2N5YW59ICVjbHIoOil7ZmFpbnR9ICVtJW4ld2V4DQorDQorI1RoZSBtYXggbnVtYmVyIG9mIGFjdGl2ZSB0aHJlYWRzIGluIHRoaXMgcG9vbA0KK3NlcnZlci50b21jYXQubWF4LXRocmVhZHM9MjAwDQorI1RoZSBtaW5pbXVtIG51bWJlciBvZiB0aHJlYWRzIGFsd2F5cyBrZXB0IGFsaXZlDQorc2VydmVyLnRvbWNhdC5taW4tU3BhcmUtVGhyZWFkcz0yNQ0KKyNUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZWZvcmUgYW4gaWRsZSB0aHJlYWQgc2h1dHNkb3duLCB1bmxlc3MgdGhlIG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcyBhcmUgbGVzcyBvciBlcXVhbCB0byBtaW5TcGFyZVRocmVhZHMNCitzZXJ2ZXIudG9tY2F0Lm1heC1pZGxlLXRpbWU9NjAwMDANCisNCisjZm9yIGNoYW5naW5nIHRoZSB0b21jYXQgcG9ydC4uLg0KKyNzZXJ2ZXIucG9ydD04MDgxDQorDQorI1NlcnZsZXQgY29udGV4dCBwYXJhbWV0ZXJzDQorc2VydmVyLmNvbnRleHRfcGFyYW1ldGVycy5wLW5hbWU9dmFsdWUgI2NvbnRleHQgcGFyYW1ldGVyIHdpdGggcC1uYW1lIGFzIGtleSBhbmQgdmFsdWUgYXMgdmFsdWUuDQorDQorIyBtYWtlIHRoaXMgdHJ1ZSBmb3IgQUFGIGF1dGhlbnRpY2F0aW9uIGFuZCBwbGFjZSBjYWRpLnByb3BlcnRpZXMgaW50byBldGMgZm9sZGVyDQorYWFmLmVuYWJsZWQ9ZmFsc2UNCisNCisjIHNldCB0byB0cnVlIHRvIGVuYWJsZSB2ZXJzaW9uIHByb3h5DQorI2l2cC5lbmFibGVkPWZhbHNlDQorDQorbG9nZ2luZy5sZXZlbC5vcmcuc3ByaW5nZnJhbWV3b3JrLndlYj1JTkZPDQorbG9nZ2luZy5sZXZlbC5vcmcuaGliZXJuYXRlLlNRTD13YXJuDQorbG9nZ2luZy5sZXZlbC5vcmcuaGliZXJuYXRlLnR5cGUuZGVzY3JpcHRvci5zcWw9ZGVidWcNCisNCitzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLnNob3dfc3FsPXRydWUNCitzcHJpbmcuanBhLnByb3BlcnRpZXMuaGliZXJuYXRlLnVzZV9zcWxfY29tbWVudHM9dHJ1ZQ0KK3NwcmluZy5qcGEucHJvcGVydGllcy5oaWJlcm5hdGUuZm9ybWF0X3NxbD10cnVlDQorDQorI0xvYWQgQmx1ZXByaW50cw0KKyMgYmx1ZXByaW50cy5sb2FkLmluaXRpYWwtZGF0YSBtYXkgYmUgb3ZlcnJpZGRlbiBieSBFTlYgdmFyaWFibGVzDQorYmx1ZXByaW50cy5sb2FkLmluaXRpYWwtZGF0YT10cnVlDQorYmx1ZXByaW50cy5sb2FkLnBhdGg9bG9hZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzVlMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uCkBAIC0wLDAgKzEsNDExIEBACit7DQorICAibWV0YWRhdGEiOiB7DQorICAgICJ0ZW1wbGF0ZV9hdXRob3IiOiAiQnJpbmRhIFNhbnRoIE11dGh1cmFtYWxpbmdhbSIsDQorICAgICJhdXRob3ItZW1haWwiOiAiYnJpbmRhc2FudGhAZ21haWwuY29tIiwNCisgICAgInVzZXItZ3JvdXBzIiA6ICJBRE1JTiwgT1BFUkFUSU9OIiwNCisgICAgInRlbXBsYXRlX25hbWUiOiAiYmFzZWNvbmZpZ3VyYXRpb24iLA0KKyAgICAidGVtcGxhdGVfdmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICJ0ZW1wbGF0ZV90YWdzIjogImJyaW5kYSwgdG9zY2EiDQorICB9LA0KKyAgInRvcG9sb2d5X3RlbXBsYXRlIjogew0KKyAgICAiaW5wdXRzIjogew0KKyAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAic2NvcGUtdHlwZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAiaG9zdG5hbWUiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIm5vZGVfdGVtcGxhdGVzIjogew0KKyAgICAgICJhY3RpdmF0ZS1wcm9jZXNzIjogew0KKyAgICAgICAgInR5cGUiOiAiYnBtbi1hY3RpdmF0ZSIsDQorICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgInByb2Nlc3MtbmFtZSI6IHsgImdldF9pbnB1dCIgOiAiYWN0aW9uLW5hbWUiIH0sDQorICAgICAgICAgICJ2ZXJzaW9uIiA6IHsgImdldF9wcm9wZXJ0eSIgOiBbIlNFTEYiLCAicHJvY2Vzcy1uYW1lIl0gfSwNCisgICAgICAgICAgImNvbnRlbnQiOiB7ICJnZXRfYXJ0aWZhY3QiIDogWyJTRUxGIiwgImFjdGl2YXRlLXByb2Nlc3MiXSB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyI6IHsNCisgICAgICAgICAgImFjdGl2YXRlLXByb2Nlc3MiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtYnBtbi1jYW11bmRhIiwNCisgICAgICAgICAgICAiZmlsZSI6ICJQbGFucy9BY3RpdmF0ZVByb2Nlc3MuYnBtbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQiOiB7DQorICAgICAgICAidHlwZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAicHJvcGVydGllcyI6ew0KKyAgICAgICAgICAicmVxdWVzdC1pZCI6IFsiMTIzNCIsICIxMjM0Il0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIjogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogeyAiZ2V0X2lucHV0IiA6ICJhY3Rpb24tbmFtZSIgfSwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7ICJnZXRfaW5wdXQiIDogInJlcXVlc3QtaWQiIH0sDQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogeyAiZ2V0X2lucHV0IiA6ICJob3N0bmFtZSIgfSwNCisgICAgICAgICAgICAgICAgICAidGVtcGxhdGUtY29udGVudCI6IHsgImdldF9hcnRpZmFjdCIgOiBbIlNFTEYiLCAiYmFzZWNvbmZpZy10ZW1wbGF0ZSJdIH0sDQorICAgICAgICAgICAgICAgICAgIm1hcHBpbmctY29udGVudCI6IHsgImdldF9hcnRpZmFjdCIgOiBbIlNFTEYiLCAiYmFzZWNvbmZpZy1tYXBwaW5nIl0gfQ0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiAiIiwNCisgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIiINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhcnRpZmFjdHMiOiB7DQorICAgICAgICAgICJiYXNlY29uZmlnLXRlbXBsYXRlIjogew0KKyAgICAgICAgICAgICJ0eXBlIjogImFydGlmYWN0LXRlbXBsYXRlLXZlbG9jaXR5IiwNCisgICAgICAgICAgICAiZmlsZSI6ICJUZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwiDQorICAgICAgICAgIH0sDQorICAgICAgICAgICJiYXNlY29uZmlnLW1hcHBpbmciOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZSIsDQorICAgICAgICAgICAgImZpbGUiOiAiTWFwcGluZ3MvYmFzZWNvbmZpZy1tYXBwaW5nLmpzb24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXB5Ijogew0KKyAgICAgICAgInR5cGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKyAgICAgICAgInByb3BlcnRpZXMiOnsNCisgICAgICAgICAgInJlcXVlc3QtaWQiOiBbIjEyMzQiLCAiMTIzNCJdDQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJEZWZhdWx0Q29tcG9uZW50Tm9kZSI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgICAiaW1wbGVtZW50YXRpb24iIDp7DQorICAgICAgICAgICAgICAgICAgInByaW1hcnkiIDogImNvbXBvbmVudC1zY3JpcHQiDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogeyAiZ2V0X2lucHV0IiA6ICJhY3Rpb24tbmFtZSIgfQ0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiAiIiwNCisgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIiINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJhcnRpZmFjdHMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtc2NyaXB0Ijogew0KKyAgICAgICAgICAgICJ0eXBlIjogImFydGlmYWN0LXNjcmlwdC1weXRob24iLA0KKyAgICAgICAgICAgICJmaWxlIjogIlNjcmlwdHMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwiDQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0sDQorICAgICJ3b3JrZmxvd3MiOnsNCisgICAgICAiYWN0aXZhdGUtcHJvY2VzcyI6ew0KKyAgICAgICAgInN0ZXBzIiA6IHsNCisgICAgICAgICAgICAiY2FsbC1yZXNvdXJjZS1hc3NpZ25tZW50IiA6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiSW52b2tlIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IiwNCisgICAgICAgICAgICAgICJ0YXJnZXQiIDogInJlc291cmNlLWFzc2lnbm1lbnQiLA0KKyAgICAgICAgICAgICAgImFjdGl2aXRpZXMiIDogWw0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgImNhbGxfb3BlcmF0aW9uIjogIlJlc291cmNlQXNzaWdubWVudE5vZGUucHJvY2VzcyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICJvbl9zdWNjZXNzIiA6IFsNCisgICAgICAgICAgICAgICAgImRvd25sb2FkLWJhc2Vjb25maWciDQorICAgICAgICAgICAgICBdDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgImRvd25sb2FkLWJhc2Vjb25maWciIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQ2FsbCBEb3dubG9hZCBCYXNlIENvbmZpZyBDb21wb25lbnQiLA0KKyAgICAgICAgICAgICJ0YXJnZXQiIDogImFjdGl2YXRlLW5ldGNvbmYiLA0KKyAgICAgICAgICAgICJhY3Rpdml0aWVzIiA6IFsNCisgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgImNhbGxfb3BlcmF0aW9uIjogIk5ldGNvbmZUcmFuc2FjdGlvbk5vZGUucHJvY2VzcyINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICJvbl9zdWNjZXNzIiA6IFsNCisgICAgICAgICAgICAgICJkb3dubG9hZC1saWNlbmNlIg0KKyAgICAgICAgICAgIF0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgImRvd25sb2FkLWxpY2VuY2UiIDogew0KKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQ2FsbCBEb3dubG9hZCBMaWNlbmNlIENvbXBvbmVudCIsDQorICAgICAgICAgICAgInRhcmdldCIgOiAiYWN0aXZhdGUtbmV0Y29uZiIsDQorICAgICAgICAgICAgImFjdGl2aXRpZXMiIDogWw0KKyAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAiY2FsbF9vcGVyYXRpb24iOiAiTmV0Y29uZlRyYW5zYWN0aW9uTm9kZS5wcm9jZXNzIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIF0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJhcnRpZmFjdF90eXBlcyI6IHsNCisgICAgImFydGlmYWN0LXRlbXBsYXRlLXZlbG9jaXR5Ijogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgVmVsb2NpdHkgVGVtcGxhdGUgdXNlZCBmb3IgQ29uZmlndXJhdGlvbiIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJ2dGwiDQorICAgICAgXSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbiINCisgICAgfSwNCisgICAgImFydGlmYWN0LW1hcHBpbmctcmVzb3VyY2UiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIiBWZWxvY2l0eSBUZW1wbGF0ZSBSZXNvdXJjZSBNYXBwaW5nIEZpbGUgdXNlZCBhbG9uZyB3aXRoIENvbmZpZ3VyYXRpb24gdGVtcGxhdGUiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAiZmlsZV9leHQiOiBbDQorICAgICAgICAianNvbiINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3Qtc2NyaXB0LWtvdGxpbiI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiIEtvdGxpbiBTY3JpcHQgVGVtcGxhdGUgdXNlZCBmb3IgQ29uZmlndXJhdGlvbiIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJrdCINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbiI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiIEtvdGxpbiBTY3JpcHQgVGVtcGxhdGUgdXNlZCBmb3IgQ29uZmlndXJhdGlvbiIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJweSINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3QtYnBtbi1jYW11bmRhIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgQ2FtdW5kYSBCUE0gRmlsZSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJicG1uIg0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1jb21wb25lbnQtamFyIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wb25lbnQgSmFyIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgImphciINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9DQorICB9LA0KKyAgIm5vZGVfdHlwZXMiOiB7DQorICAgICJicG1uLWFjdGl2YXRlIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEJQTU4gQWN0aXZhdGUgbm9kZSB0eXBlIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicHJvY2Vzcy1uYW1lIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgImRlZmF1bHQiIDogIkxBVEVTVCINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KKyAgICB9LA0KKyAgICAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ijogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInR5cGUiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0T3BlcmF0aW9uIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAidmFsaWRhdGUiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInZhbGlkYXRlIGZvciBhY3Rpb24iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImFydGlmYWN0cyIgOnsNCisgICAgICAgICJjb21wb25lbnQtamFyIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcG9uZW50IEphciIsDQorICAgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbXBvbmVudC1qYXIiLA0KKyAgICAgICAgICAiZmlsZSI6ICJDb21wb25lbnQvYmFzZWNvbXBvbmVudC5qYXIiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLlJvb3QiDQorICAgIH0sDQorICAgICJ0b3NjYS5ub2Rlcy5jb21wb25lbnQuUHl0aG9uIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgUHl0aG9uIENvbXBvbmVudCBBUEkiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJ0eXBlIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAiRGVmYXVsdE9wZXJhdGlvbiI6IHsNCisgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgInZhbGlkYXRlIjogew0KKyAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ2YWxpZGF0ZSBmb3IgYWN0aW9uIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJhcnRpZmFjdHMiIDp7DQorICAgICAgICAiY29tcG9uZW50LWphciI6IHsNCisgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBvbmVudCBKYXIiLA0KKyAgICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1jb21wb25lbnQtamFyIiwNCisgICAgICAgICAgImZpbGUiOiAiQ29tcG9uZW50L2Jhc2Vjb21wb25lbnQuamFyIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Sb290Ig0KKyAgICB9LA0KKyAgICAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQgQVBJIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAicmVxdWVzdC1pZCI6IHsNCisgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAiRGVmYXVsdENvbXBvbmVudE5vZGUiOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZWNpcGUgTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWQgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciByZXNvdXJjZS1pZCBzaG91bGQgYmUgcHJlc2VudCIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZS1jb250ZW50Ijogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yIHJlc291cmNlLWlkIHNob3VsZCBiZSBwcmVzZW50IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgIm1hcHBpbmctY29udGVudCI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWQgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciByZXNvdXJjZS1pZCBzaG91bGQgYmUgcHJlc2VudCIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic3RhdHVzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCisgICAgfSwNCisgICAgImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50LXB5dGhvbiI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0Q29tcG9uZW50Tm9kZSI6IHsNCisgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlY2lwZSBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic3RhdHVzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLmNvbXBvbmVudC5QeXRob24iDQorICAgIH0NCisgIH0sDQorICAiZGF0YV90eXBlcyI6IHsNCisgICAgInNhbXBsZS1wcm9wZXJ0eSIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgc2FtcGxlIGRhdGEgdHlwZSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInByb2Nlc3MtbmFtZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgICAgICJkZWZhdWx0IiA6ICJMQVRFU1QiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIiA6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisgICAgfQ0KKyAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9NYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWJmYjUxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9NYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sNCisgICJhc3NpZ25tZW50cyI6ICJTYW1wbGUgQXNzaWdubWVudHMiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1BsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTRjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1BsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uCkBAIC0wLDAgKzEsNjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGJwbW46ZGVmaW5pdGlvbnMgeG1sbnM6YnBtbj0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9NT0RFTCINCisgICAgICAgICAgICAgICAgICB4bWxuczpicG1uZGk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL0JQTU4vMjAxMDA1MjQvREkiDQorICAgICAgICAgICAgICAgICAgeG1sbnM6ZGk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL0RELzIwMTAwNTI0L0RJIiB4bWxuczpkYz0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREMiDQorICAgICAgICAgICAgICAgICAgeG1sbnM6Y2FtdW5kYT0iaHR0cDovL2NhbXVuZGEub3JnL3NjaGVtYS8xLjAvYnBtbiINCisgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiBpZD0iRGVmaW5pdGlvbnNfMSINCisgICAgICAgICAgICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9icG1uLmlvL3NjaGVtYS9icG1uIiBleHBvcnRlcj0iQ2FtdW5kYSBNb2RlbGVyIiBleHBvcnRlclZlcnNpb249IjEuMTEuMiI+DQorICAgIDxicG1uOnByb2Nlc3MgaWQ9IkFjdGl2YXRlUHJvY2VzcyIgaXNFeGVjdXRhYmxlPSJ0cnVlIj4NCisgICAgICAgIDxicG1uOnN0YXJ0RXZlbnQgaWQ9IlN0YXJ0RXZlbnRfMSI+DQorICAgICAgICAgICAgPGJwbW46b3V0Z29pbmc+U2VxdWVuY2VGbG93XzBsMGRxNTg8L2JwbW46b3V0Z29pbmc+DQorICAgICAgICA8L2JwbW46c3RhcnRFdmVudD4NCisgICAgICAgIDxicG1uOmVuZEV2ZW50IGlkPSJFbmRFdmVudF8xcHIwa2lsIj4NCisgICAgICAgICAgICA8YnBtbjppbmNvbWluZz5TZXF1ZW5jZUZsb3dfMWF5MGs2cDwvYnBtbjppbmNvbWluZz4NCisgICAgICAgIDwvYnBtbjplbmRFdmVudD4NCisgICAgICAgIDxicG1uOnNlcXVlbmNlRmxvdyBpZD0iU2VxdWVuY2VGbG93XzBsMGRxNTgiIHNvdXJjZVJlZj0iU3RhcnRFdmVudF8xIiB0YXJnZXRSZWY9ImFjdGl2YXRlX2RldmljZV90YXNrIi8+DQorICAgICAgICA8YnBtbjpzZXF1ZW5jZUZsb3cgaWQ9IlNlcXVlbmNlRmxvd18xYXkwazZwIiBzb3VyY2VSZWY9ImFjdGl2YXRlX2RldmljZV90YXNrIiB0YXJnZXRSZWY9IkVuZEV2ZW50XzFwcjBraWwiLz4NCisgICAgICAgIDxicG1uOnNlcnZpY2VUYXNrIGlkPSJhY3RpdmF0ZV9kZXZpY2VfdGFzayIgbmFtZT0iQWN0aXZhdGUgRGV2aWNlIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtdW5kYTpkZWxlZ2F0ZUV4cHJlc3Npb249IiR7Y29tcG9uZW50RGVsZWdhdGVTZXJ2aWNlfSI+DQorICAgICAgICAgICAgPGJwbW46ZXh0ZW5zaW9uRWxlbWVudHM+DQorICAgICAgICAgICAgICAgIDxjYW11bmRhOmlucHV0T3V0cHV0Pg0KKyAgICAgICAgICAgICAgICAgICAgPGNhbXVuZGE6aW5wdXRQYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3IiPjwhW0NEQVRBW3Jlc291cmNlLWFzc2lnbm1lbnQNCitdXT48L2NhbXVuZGE6aW5wdXRQYXJhbWV0ZXI+DQorICAgICAgICAgICAgICAgIDwvY2FtdW5kYTppbnB1dE91dHB1dD4NCisgICAgICAgICAgICA8L2JwbW46ZXh0ZW5zaW9uRWxlbWVudHM+DQorICAgICAgICAgICAgPGJwbW46aW5jb21pbmc+U2VxdWVuY2VGbG93XzBsMGRxNTg8L2JwbW46aW5jb21pbmc+DQorICAgICAgICAgICAgPGJwbW46b3V0Z29pbmc+U2VxdWVuY2VGbG93XzFheTBrNnA8L2JwbW46b3V0Z29pbmc+DQorICAgICAgICA8L2JwbW46c2VydmljZVRhc2s+DQorICAgIDwvYnBtbjpwcm9jZXNzPg0KKyAgICA8YnBtbmRpOkJQTU5EaWFncmFtIGlkPSJCUE1ORGlhZ3JhbV8xIj4NCisgICAgICAgIDxicG1uZGk6QlBNTlBsYW5lIGlkPSJCUE1OUGxhbmVfMSIgYnBtbkVsZW1lbnQ9IkFjdGl2YXRlUHJvY2VzcyI+DQorICAgICAgICAgICAgPGJwbW5kaTpCUE1OU2hhcGUgaWQ9Il9CUE1OU2hhcGVfU3RhcnRFdmVudF8yIiBicG1uRWxlbWVudD0iU3RhcnRFdmVudF8xIj4NCisgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSIxNzUiIHk9IjE0MyIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2Ii8+DQorICAgICAgICAgICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSIxNDgiIHk9IjE3OSIgd2lkdGg9IjkwIiBoZWlnaHQ9IjIwIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+DQorICAgICAgICAgICAgPGJwbW5kaTpCUE1OU2hhcGUgaWQ9IkVuZEV2ZW50XzFwcjBraWxfZGkiIGJwbW5FbGVtZW50PSJFbmRFdmVudF8xcHIwa2lsIj4NCisgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSI1NzUiIHk9IjExNCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjM2Ii8+DQorICAgICAgICAgICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSI1OTMiIHk9IjE1NCIgd2lkdGg9IjAiIGhlaWdodD0iMTIiLz4NCisgICAgICAgICAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJTZXF1ZW5jZUZsb3dfMGwwZHE1OF9kaSIgYnBtbkVsZW1lbnQ9IlNlcXVlbmNlRmxvd18wbDBkcTU4Ij4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iMjExIiB5PSIxNjEiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iMjczIiB5PSIxNjEiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iMjczIiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iMzM0IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjI4OCIgeT0iMTQ5IiB3aWR0aD0iMCIgaGVpZ2h0PSIxMiIvPg0KKyAgICAgICAgICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgPC9icG1uZGk6QlBNTkVkZ2U+DQorICAgICAgICAgICAgPGJwbW5kaTpCUE1ORWRnZSBpZD0iU2VxdWVuY2VGbG93XzFheTBrNnBfZGkiIGJwbW5FbGVtZW50PSJTZXF1ZW5jZUZsb3dfMWF5MGs2cCI+DQorICAgICAgICAgICAgICAgIDxkaTp3YXlwb2ludCB4c2k6dHlwZT0iZGM6UG9pbnQiIHg9IjQzNCIgeT0iMTQ5Ii8+DQorICAgICAgICAgICAgICAgIDxkaTp3YXlwb2ludCB4c2k6dHlwZT0iZGM6UG9pbnQiIHg9IjUwNSIgeT0iMTQ5Ii8+DQorICAgICAgICAgICAgICAgIDxkaTp3YXlwb2ludCB4c2k6dHlwZT0iZGM6UG9pbnQiIHg9IjUwNSIgeT0iMTMyIi8+DQorICAgICAgICAgICAgICAgIDxkaTp3YXlwb2ludCB4c2k6dHlwZT0iZGM6UG9pbnQiIHg9IjU3NSIgeT0iMTMyIi8+DQorICAgICAgICAgICAgICAgIDxicG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSI1MjAiIHk9IjEzNC41IiB3aWR0aD0iMCIgaGVpZ2h0PSIxMiIvPg0KKyAgICAgICAgICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgPC9icG1uZGk6QlBNTkVkZ2U+DQorICAgICAgICAgICAgPGJwbW5kaTpCUE1OU2hhcGUgaWQ9IlNlcnZpY2VUYXNrXzBlOGVrNGZfZGkiIGJwbW5FbGVtZW50PSJhY3RpdmF0ZV9kZXZpY2VfdGFzayI+DQorICAgICAgICAgICAgICAgIDxkYzpCb3VuZHMgeD0iMzM0IiB5PSIxMDkiIHdpZHRoPSIxMDAiIGhlaWdodD0iODAiLz4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1OU2hhcGU+DQorICAgICAgICA8L2JwbW5kaTpCUE1OUGxhbmU+DQorICAgIDwvYnBtbmRpOkJQTU5EaWFncmFtPg0KKzwvYnBtbjpkZWZpbml0aW9ucz4NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1NjcmlwdHMvU2FtcGxlUHl0aG9uQ29tcG9uZW50Tm9kZS5weSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMTk4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1NjcmlwdHMvU2FtcGxlUHl0aG9uQ29tcG9uZW50Tm9kZS5weQpAQCAtMCwwICsxLDggQEAKK2Zyb20gY29tLmJydml0aC5vcmNoZXN0cmF0b3IuY29yZS5pbnRlcmZhY2VzIGltcG9ydCBDb21wb25lbnROb2RlDQorDQorY2xhc3MgU2FtcGxlUHl0aG9uQ29tcG9uZW50Tm9kZShDb21wb25lbnROb2RlKToNCisgICAgZGVmIHByZXBhcmUoc2VsZiwgY29udGV4dCwgY29tcG9uZW50Q29udGV4dCk6DQorICAgICAgICByZXR1cm4gTm9uZQ0KKw0KKyAgICBkZWYgcHJlcGFyZShzZWxmLCBjb250ZXh0LCBjb21wb25lbnRDb250ZXh0KToNCisgICAgICAgIHJldHVybiBOb25lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9TY3JpcHRzL19faW5pdF9fLnB5IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9TY3JpcHRzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1NjcmlwdHMvX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjM4YzE1Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhCkBAIC0wLDAgKzEsOCBAQAorVE9TQ0EtTWV0YS1GaWxlLVZlcnNpb246IDEuMC4wDQorQ1NBUi1WZXJzaW9uOiAxLjANCitDcmVhdGVkLUJ5OiBCcmluZGEgU2FudGggTQ0KK0VudHJ5LURlZmluaXRpb25zOiBEZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uDQorVGVtcGxhdGUtVGFnczogQnJpbmRhIFNhbnRoLCBhY3RpdmF0aW9uLWJsdWVwcmludA0KKw0KK05hbWU6IFBsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uDQorQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi92bmQub2FzaXMuYnBtbg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vVGVtcGxhdGVzL2Jhc2Vjb25maWctdGVtcGxhdGUudnRsIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2YzU5MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vVGVtcGxhdGVzL2Jhc2Vjb25maWctdGVtcGxhdGUudnRsCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMgU2FtcGxlIFZlbG9jaXR5IFRlbXBsYXRlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9fX2luaXRfXy5weSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvRGVmaW5pdGlvbnMvc2FtcGxlLW5vZGV0eXBlLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL0RlZmluaXRpb25zL3NhbXBsZS1ub2RldHlwZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDY5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL0RlZmluaXRpb25zL3NhbXBsZS1ub2RldHlwZS5qc29uCkBAIC0wLDAgKzEsMzQgQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IEFQSSIsDQorICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAicHJvcGVydGllcyI6IHsNCisgICAgInR5cGUiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgIH0NCisgIH0sDQorICAiaW50ZXJmYWNlcyI6IHsNCisgICAgIkRlZmF1bHRPcGVyYXRpb24iOiB7DQorICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAidmFsaWRhdGUiOiB7DQorICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInZhbGlkYXRlIGZvciBhY3Rpb24iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9LA0KKyAgImFydGlmYWN0cyIgOnsNCisgICAgImNvbXBvbmVudC1qYXIiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBvbmVudCBKYXIiLA0KKyAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbXBvbmVudC1qYXIiLA0KKyAgICAgICJmaWxlIjogIkNvbXBvbmVudC9iYXNlY29tcG9uZW50LmphciINCisgICAgfQ0KKyAgfSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuUm9vdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9EZWZpbml0aW9ucy9zaW1wbGUtYmFzZWNvbmZpZy5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9EZWZpbml0aW9ucy9zaW1wbGUtYmFzZWNvbmZpZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OGYzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL0RlZmluaXRpb25zL3NpbXBsZS1iYXNlY29uZmlnLmpzb24KQEAgLTAsMCArMSwzNDUgQEAKK3sNCisgICJtZXRhZGF0YSI6IHsNCisgICAgInRlbXBsYXRlX2F1dGhvciI6ICJCcmluZGEgU2FudGgiLA0KKyAgICAidGVtcGxhdGVfbmFtZSI6ICJzaW1wbGUtYmFzZWNvbmZpZyIsDQorICAgICJ0ZW1wbGF0ZV92ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgInNlcnZpY2UtdHlwZSI6ICJTYW1wbGUgU2VydmljZSIsDQorICAgICJyZWxlYXNlIjogIjE4MDYiLA0KKyAgICAidm5mLXR5cGUiOiAiVlBFIg0KKyAgfSwNCisgICJ0b3BvbG9neV90ZW1wbGF0ZSI6IHsNCisgICAgImlucHV0cyI6IHsNCisgICAgICAicmVxdWVzdC1pZCI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAic2VydmljZS1pbnN0YW5jZS1pZCI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAic2NvcGUtdHlwZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImhvc3RuYW1lIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9DQorICAgIH0sDQorICAgICJub2RlX3RlbXBsYXRlcyI6IHsNCisgICAgICAidnBlLW5ldGNvbmYtZGV2aWNlIjogew0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgIm5ldGNvbmYiOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAibG9naW4ta2V5IjogInNkbmMiLA0KKyAgICAgICAgICAgICAgImxvZ2luLWFjY291bnQiOiAic25kYy1sb2NhbCIsDQorICAgICAgICAgICAgICAic291cmNlIjogImxvY2FsIiwNCisgICAgICAgICAgICAgICJ0YXJnZXQtaXAtYWRkcmVzcyI6ICJ7XCJnZXRfYXR0cmlidXRlXCI6XCJsbzAtbG9jYWwtaXB2NC1hZGRyZXNzXCJ9IiwNCisgICAgICAgICAgICAgICJwb3J0LW51bWJlciI6IDIyLA0KKyAgICAgICAgICAgICAgImNvbm5lY3Rpb24tdGltZS1vdXQiOiAzMA0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0eXBlIjogInZuZi1uZXRjb25mLWRldmljZSINCisgICAgICB9LA0KKyAgICAgICJhY3RpdmF0ZS1uZXRjb25mLWNvbXBvbmVudCI6IHsNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtbm9kZSI6IHt9DQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVtZW50cyI6IHsNCisgICAgICAgICAgIm5ldGNvbmYtY29ubmVjdGlvbiI6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJuZXRjb25mIiwNCisgICAgICAgICAgICAibm9kZSI6ICJ2cGUtbmV0Y29uZi1kZXZpY2UiLA0KKyAgICAgICAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5Db25uZWN0c1RvIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZkV4ZWN1dG9yTm9kZSI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcImFjdGlvbi1uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJ0ZW1wbGF0ZV9uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb25cIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJyZXF1ZXN0LWlkXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogInsgXCJnZXRfaW5wdXRcIiA6IFwiaG9zdG5hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uLXNjcmlwdCI6ICJleGVjdXRpb24tc2NyaXB0Ig0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVzcG9uc2UtZGF0YSI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJuZXRjb25mLWV4ZWN1dG9yLWJhc2Vjb25maWcucmVzcG9uc2UtZGF0YVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwibmV0Y29uZi1leGVjdXRvci1iYXNlY29uZmlnLnN0YXR1c1wiIH0iDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJpbXBsZW1lbnRhdGlvbiIgOiB7DQorICAgICAgICAgICAgICAgICAgInByaW1hcnkiIDogImZpbGU6Ly9uZXRjb25mX2FkYXB0b3IvRGVmYXVsdEJhc2VMaWNlbmNlQ29uZmlnLnB5Ig0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiOiAiY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IiDQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1yYS1jb21wb25lbnQiOiB7DQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiY29tcG9uZW50LW5vZGUiOiB7fQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAib3JnLW9wZW5lY29tcC1zZG5jLWNvbmZpZy1hc3NpZ25tZW50LXNlcnZpY2UtQ29uZmlnQXNzaWdubWVudE5vZGUiOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAidGVtcGxhdGUtbmFtZXMiOiBbDQorICAgICAgICAgICAgICAgICAgICAiYmFzZS1jb25maWctdGVtcGxhdGUiLA0KKyAgICAgICAgICAgICAgICAgICAgImxpY2VuY2UtdGVtcGxhdGUiDQorICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiAieyBcImdldF9pbnB1dFwiIDogXCJhY3Rpb24tbmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwidGVtcGxhdGVfbmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLXR5cGUiOiAidm5mLXR5cGUiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1ZXN0LWlkIjogInsgXCJnZXRfaW5wdXRcIiA6IFwicmVxdWVzdC1pZFwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcImhvc3RuYW1lXCIgfSINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogInN1Y2Nlc3MiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAic3RhdHVzIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiDQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iOiB7DQorICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgIm1vZGUiOiAic3luYyIsDQorICAgICAgICAgICJ2ZXJzaW9uIjogIkxBVEVTVCIsDQorICAgICAgICAgICJpcy1zdGFydC1mbG93IjogImZhbHNlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICAgIm5vZGUiOiAicmVzb3VyY2UtYXNzaWdubWVudC1yYS1jb21wb25lbnQiLA0KKyAgICAgICAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiZGctbm9kZSI6IHt9LA0KKyAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJ0eXBlIjogImpzb24iDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJDT05GSUciOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAiUmVzb3VyY2VBc3NpZ25tZW50Ijogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJwYXJhbXMiOiBbXQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiOiAiZGctcmVzb3VyY2UtYXNzaWdubWVudCINCisgICAgICB9LA0KKyAgICAgICJhY3RpdmF0ZS1hY3Rpb24iOiB7DQorICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgIm1vZGUiOiAic3luYyIsDQorICAgICAgICAgICJ2ZXJzaW9uIjogIkxBVEVTVCIsDQorICAgICAgICAgICJpcy1zdGFydC1mbG93IjogImZhbHNlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICAgIm5vZGUiOiAiYWN0aXZhdGUtbmV0Y29uZi1jb21wb25lbnQiLA0KKyAgICAgICAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiZGctbm9kZSI6IHt9LA0KKyAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJ0eXBlIjogImpzb24iDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJDT05GSUciOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAiQWN0aXZhdGVOZXRjb25mIjogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJwYXJhbXMiOiBbXQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiOiAiZGctYWN0aXZhdGUtbmV0Y29uZiINCisgICAgICB9LA0KKyAgICAgICJiYXNlLWNvbmZpZy10ZW1wbGF0ZSI6IHsNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgImNvbnRlbnQiOiAiZGI6Ly9iYXNlLWNvbmZpZy10ZW1wbGF0ZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJtYXBwaW5nIjogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgIm1hcHBpbmciOiBbDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJidW5kbGUtbWFjIiwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwNCisgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnRzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgICB7fQ0KKyAgICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogIiINCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAiYnVuZGxlLW1hYyIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogImRiIiwNCisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIg0KKyAgICAgICAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAwDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ3YW4tYWdncmVnYXRlLWlwdjQtYWRkcmVzc2VzIiwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiIiwNCisgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJsaXN0IiwNCisgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIiwNCisgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50cyI6IFsNCisgICAgICAgICAgICAgICAgICAgICAge30NCisgICAgICAgICAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIjogew0KKyAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJkdC12NC1hZ2dyZWdhdGUiDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIjogIndhbi1hZ2dyZWdhdGUtaXB2NC1hZGRyZXNzZXMiLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSI6ICJtZHNhbCIsDQorICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IFsNCisgICAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLWluc3RhbmNlLWlkIiwNCisgICAgICAgICAgICAgICAgICAgICJvYW0tbmV0d29yay1yb2xlIiwNCisgICAgICAgICAgICAgICAgICAgICJvYW0tdjQtaXAtdHlwZSAiLA0KKyAgICAgICAgICAgICAgICAgICAgIm9hbS12bS10eXBlIg0KKyAgICAgICAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAwDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJob3N0bmFtZSIsDQorICAgICAgICAgICAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAiaG9zdG5hbWUiLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSI6ICJpbnB1dCIsDQorICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAwLA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IGZhbHNlDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXJ2aWNlIiwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJzZXJ2aWNlIiwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiAiaW5wdXQiLA0KKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogMCwNCisgICAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iOiBmYWxzZQ0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogImlucHV0IiwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDAsDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogZmFsc2UNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgXQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAiYWN0aW9uLW5hbWVzIjogWw0KKyAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LWFjdGlvbiINCisgICAgICAgICAgXQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSINCisgICAgICB9LA0KKyAgICAgICJsaWNlbmNlLXRlbXBsYXRlIjogew0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAiY29udGVudCI6ICJkYjovL2xpY2VuY2UtdGVtcGxhdGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAibWFwcGluZyI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJtYXBwaW5nIjogWw0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibGljZW5zZXMiLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnRzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgICB7fQ0KKyAgICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImR0LWxpY2Vuc2Uta2V5Ig0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJsaWNlbnNlcyIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogIm1kc2FsIiwNCisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgInNlcnZpY2UtaW5zdGFuY2UtaWQiDQorICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDANCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICJuYW1lIjogInNlcnZpY2UtaW5zdGFuY2UtaWQiLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIjogInNlcnZpY2UtaW5zdGFuY2UtaWQiLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSI6ICJpbnB1dCIsDQorICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAwLA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IGZhbHNlDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIF0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgImFjdGlvbi1uYW1lcyI6IFsNCisgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iDQorICAgICAgICAgIF0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1jb25maWctdGVtcGxhdGUiDQorICAgICAgfQ0KKyAgICB9DQorICB9LA0KKyAgIm5vZGVfdHlwZXMiOiB7DQorICB9LA0KKyAgImRhdGFfdHlwZXMiOiB7DQorICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvTWFwcGluZ3MvYmFzZWNvbmZpZy1tYXBwaW5nLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYmZiNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uCkBAIC0wLDAgKzEsMyBAQAorew0KKyAgImFzc2lnbm1lbnRzIjogIlNhbXBsZSBBc3NpZ25tZW50cyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9QbGFucy9BY3RpdmF0ZVByb2Nlc3MuYnBtbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5NGMwZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4KQEAgLTAsMCArMSw2NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8YnBtbjpkZWZpbml0aW9ucyB4bWxuczpicG1uPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L01PREVMIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOmJwbW5kaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9ESSINCisgICAgICAgICAgICAgICAgICB4bWxuczpkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOmRjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyINCisgICAgICAgICAgICAgICAgICB4bWxuczpjYW11bmRhPSJodHRwOi8vY2FtdW5kYS5vcmcvc2NoZW1hLzEuMC9icG1uIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIGlkPSJEZWZpbml0aW9uc18xIg0KKyAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vc2NoZW1hL2JwbW4iIGV4cG9ydGVyPSJDYW11bmRhIE1vZGVsZXIiIGV4cG9ydGVyVmVyc2lvbj0iMS4xMS4yIj4NCisgICAgPGJwbW46cHJvY2VzcyBpZD0iQWN0aXZhdGVQcm9jZXNzIiBpc0V4ZWN1dGFibGU9InRydWUiPg0KKyAgICAgICAgPGJwbW46c3RhcnRFdmVudCBpZD0iU3RhcnRFdmVudF8xIj4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzdGFydEV2ZW50Pg0KKyAgICAgICAgPGJwbW46ZW5kRXZlbnQgaWQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgIDxicG1uOmluY29taW5nPlNlcXVlbmNlRmxvd18xYXkwazZwPC9icG1uOmluY29taW5nPg0KKyAgICAgICAgPC9icG1uOmVuZEV2ZW50Pg0KKyAgICAgICAgPGJwbW46c2VxdWVuY2VGbG93IGlkPSJTZXF1ZW5jZUZsb3dfMGwwZHE1OCIgc291cmNlUmVmPSJTdGFydEV2ZW50XzEiIHRhcmdldFJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siLz4NCisgICAgICAgIDxicG1uOnNlcXVlbmNlRmxvdyBpZD0iU2VxdWVuY2VGbG93XzFheTBrNnAiIHNvdXJjZVJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siIHRhcmdldFJlZj0iRW5kRXZlbnRfMXByMGtpbCIvPg0KKyAgICAgICAgPGJwbW46c2VydmljZVRhc2sgaWQ9ImFjdGl2YXRlX2RldmljZV90YXNrIiBuYW1lPSJBY3RpdmF0ZSBEZXZpY2UiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW11bmRhOmRlbGVnYXRlRXhwcmVzc2lvbj0iJHtjb21wb25lbnREZWxlZ2F0ZVNlcnZpY2V9Ij4NCisgICAgICAgICAgICA8YnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICAgICAgPGNhbXVuZGE6aW5wdXRPdXRwdXQ+DQorICAgICAgICAgICAgICAgICAgICA8Y2FtdW5kYTppbnB1dFBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciI+PCFbQ0RBVEFbcmVzb3VyY2UtYXNzaWdubWVudA0KK11dPjwvY2FtdW5kYTppbnB1dFBhcmFtZXRlcj4NCisgICAgICAgICAgICAgICAgPC9jYW11bmRhOmlucHV0T3V0cHV0Pg0KKyAgICAgICAgICAgIDwvYnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICA8YnBtbjppbmNvbWluZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjppbmNvbWluZz4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMWF5MGs2cDwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzZXJ2aWNlVGFzaz4NCisgICAgPC9icG1uOnByb2Nlc3M+DQorICAgIDxicG1uZGk6QlBNTkRpYWdyYW0gaWQ9IkJQTU5EaWFncmFtXzEiPg0KKyAgICAgICAgPGJwbW5kaTpCUE1OUGxhbmUgaWQ9IkJQTU5QbGFuZV8xIiBicG1uRWxlbWVudD0iQWN0aXZhdGVQcm9jZXNzIj4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iX0JQTU5TaGFwZV9TdGFydEV2ZW50XzIiIGJwbW5FbGVtZW50PSJTdGFydEV2ZW50XzEiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE3NSIgeT0iMTQzIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE0OCIgeT0iMTc5IiB3aWR0aD0iOTAiIGhlaWdodD0iMjAiLz4NCisgICAgICAgICAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iRW5kRXZlbnRfMXByMGtpbF9kaSIgYnBtbkVsZW1lbnQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU3NSIgeT0iMTE0IiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU5MyIgeT0iMTU0IiB3aWR0aD0iMCIgaGVpZ2h0PSIxMiIvPg0KKyAgICAgICAgICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPg0KKyAgICAgICAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IlNlcXVlbmNlRmxvd18wbDBkcTU4X2RpIiBicG1uRWxlbWVudD0iU2VxdWVuY2VGbG93XzBsMGRxNTgiPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyMTEiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIzMzQiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICAgICAgICAgIDxkYzpCb3VuZHMgeD0iMjg4IiB5PSIxNDkiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJTZXF1ZW5jZUZsb3dfMWF5MGs2cF9kaSIgYnBtbkVsZW1lbnQ9IlNlcXVlbmNlRmxvd18xYXkwazZwIj4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNDM0IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTc1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjUyMCIgeT0iMTM0LjUiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iU2VydmljZVRhc2tfMGU4ZWs0Zl9kaSIgYnBtbkVsZW1lbnQ9ImFjdGl2YXRlX2RldmljZV90YXNrIj4NCisgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSIzMzQiIHk9IjEwOSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIvPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgIDwvYnBtbmRpOkJQTU5QbGFuZT4NCisgICAgPC9icG1uZGk6QlBNTkRpYWdyYW0+DQorPC9icG1uOmRlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9TY3JpcHRzL1NhbXBsZVB5dGhvbkNvbXBvbmVudE5vZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIxOThjNwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5CkBAIC0wLDAgKzEsOCBAQAorZnJvbSBjb20uYnJ2aXRoLm9yY2hlc3RyYXRvci5jb3JlLmludGVyZmFjZXMgaW1wb3J0IENvbXBvbmVudE5vZGUNCisNCitjbGFzcyBTYW1wbGVQeXRob25Db21wb25lbnROb2RlKENvbXBvbmVudE5vZGUpOg0KKyAgICBkZWYgcHJlcGFyZShzZWxmLCBjb250ZXh0LCBjb21wb25lbnRDb250ZXh0KToNCisgICAgICAgIHJldHVybiBOb25lDQorDQorICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbnRleHQsIGNvbXBvbmVudENvbnRleHQpOg0KKyAgICAgICAgcmV0dXJuIE5vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL1NjcmlwdHMvX19pbml0X18ucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL1NjcmlwdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvU2NyaXB0cy9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YWU1ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEKQEAgLTAsMCArMSw4IEBACitUT1NDQS1NZXRhLUZpbGUtVmVyc2lvbjogMS4wLjANCitDU0FSLVZlcnNpb246IDEuMA0KK0NyZWF0ZWQtQnk6IEJyaW5kYSBTYW50aCBNDQorRW50cnktRGVmaW5pdGlvbnM6IERlZmluaXRpb25zL3NpbXBsZS1iYXNlY29uZmlnLmpzb24NCitUZW1wbGF0ZS1UYWdzOiB2cnItdGVzdCwgQnJpbmRhIFNhbnRoDQorDQorTmFtZTogUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4NCitDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5icG1uDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UZW1wbGF0ZXMvYmFzZS1jb25maWctdGVtcGxhdGUudnRsIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UZW1wbGF0ZXMvYmFzZS1jb25maWctdGVtcGxhdGUudnRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZGJhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL1RlbXBsYXRlcy9iYXNlLWNvbmZpZy10ZW1wbGF0ZS52dGwKQEAgLTAsMCArMSw0MCBAQAorIDxjb25maWc+DQorCSAgICAgICAgPGNvbmZpZ3VyYXRpb24+DQorCSAgICAgICAgCTxncm91cHM+DQorCQkJCTxuYW1lPiR7Z3JvdXAtbmFtZX08L25hbWU+DQorCQkJCTxyb3V0aW5nLWluc3RhbmNlcz4NCisJCQkJCTxpbnN0YW5jZT4NCisJCQkJCQk8bmFtZT4mbHQ7KiZndDs8L25hbWU+DQorCQkJCQkJPHByb3RvY29scz4NCisJCQkJCQkJPHBpbT4NCisJCQkJCQkJCTxkZW5zZS1ncm91cHM+DQorCQkJCQkJCQkJPGR5bmFtaWMtcmVqZWN0IC8+DQorCQkJCQkJCQkJPHBpbS1kZW5zZS1ncm91cC10eXBlPg0KKwkJCQkJCQkJCQk8bmFtZT4yMjQuMC4xLjQwLzMyPC9uYW1lPg0KKwkJCQkJCQkJCTwvcGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQkJPHBpbS1kZW5zZS1ncm91cC10eXBlPg0KKwkJCQkJCQkJCQk8bmFtZT4yMjQuMC4xLjM5LzMyPC9uYW1lPg0KKwkJCQkJCQkJCTwvcGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQkJPHBpbS1kZW5zZS1ncm91cC10eXBlPg0KKwkJCQkJCQkJCQk8bmFtZT4yMjQuMC4wLjAvNDwvbmFtZT4NCisJCQkJCQkJCQkJPHJlamVjdCAvPg0KKwkJCQkJCQkJCTwvcGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQk8L2RlbnNlLWdyb3Vwcz4NCisJCQkJCQkJCTxycD4NCisJCQkJCQkJCQk8YXV0by1ycD4NCisJCQkJCQkJCQkJPGRpc2NvdmVyeSAvPg0KKwkJCQkJCQkJCTwvYXV0by1ycD4NCisJCQkJCQkJCTwvcnA+DQorCQkJCQkJCQk8aW50ZXJmYWNlPg0KKwkJCQkJCQkJCTxuYW1lPiZsdDsqJmd0OzwvbmFtZT4NCisJCQkJCQkJCQk8ZGlzYWJsZSAvPg0KKwkJCQkJCQkJCTxwcmlvcml0eT4xMDAwPC9wcmlvcml0eT4NCisJCQkJCQkJCTwvaW50ZXJmYWNlPg0KKwkJCQkJCQkJPHJlc2V0LXRyYWNraW5nLWJpdCAvPg0KKwkJCQkJCQk8L3BpbT4NCisJCQkJCQk8L3Byb3RvY29scz4NCisJCQkJCTwvaW5zdGFuY2U+DQorCQkJCTwvcm91dGluZy1pbnN0YW5jZXM+DQorCQkJPC9ncm91cHM+DQorCQk8L2NvbmZpZ3VyYXRpb24+DQorCTwvY29uZmlnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvVGVtcGxhdGVzL2Jhc2Vjb25maWctdGVtcGxhdGUudnRsIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2YzU5MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvVGVtcGxhdGVzL2Jhc2Vjb25maWctdGVtcGxhdGUudnRsCkBAIC0wLDAgKzEgQEAKK1RoaXMgaXMgU2FtcGxlIFZlbG9jaXR5IFRlbXBsYXRlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UZW1wbGF0ZXMvbGljZW5jZS10ZW1wbGF0ZS52dGwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL1RlbXBsYXRlcy9saWNlbmNlLXRlbXBsYXRlLnZ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjY5NzRmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9UZW1wbGF0ZXMvbGljZW5jZS10ZW1wbGF0ZS52dGwKQEAgLTAsMCArMSw0IEBACisgPGNvbmZpZz4NCisJICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisJICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorCSAgICAgICAgIDwvY29uZmlnPg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL2JsdWVwcmludHMvc2ltcGxlLWJhc2Vjb25maWcvX19pbml0X18ucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9ibHVlcHJpbnRzL3NpbXBsZS1iYXNlY29uZmlnL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LW1hcHBpbmctcmVzb3VyY2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTMyNjFiCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LW1hcHBpbmctcmVzb3VyY2UuanNvbgpAQCAtMCwwICsxLDggQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICIgVmVsb2NpdHkgVGVtcGxhdGUgUmVzb3VyY2UgTWFwcGluZyBGaWxlIHVzZWQgYWxvbmcgd2l0aCBDb25maWd1cmF0aW9uIHRlbXBsYXRlIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJmaWxlX2V4dCI6IFsNCisgICAgImpzb24iDQorICBdLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC1zY3JpcHQtcHl0aG9uLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OGQyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbi5qc29uCkBAIC0wLDAgKzEsOCBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIiBLb3RsaW4gU2NyaXB0IFRlbXBsYXRlIHVzZWQgZm9yIENvbmZpZ3VyYXRpb24iLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImZpbGVfZXh0IjogWw0KKyAgICAicHkiDQorICBdLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LXRlbXBsYXRlLXZlbG9jaXR5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5NWQzOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eS5qc29uCkBAIC0wLDAgKzEsOCBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIiBWZWxvY2l0eSBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJmaWxlX2V4dCI6IFsNCisgICAgInZ0bCINCisgIF0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbiINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL3Rvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbi5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL3Rvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2M5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvdG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uLmpzb24KQEAgLTAsMCArMSw1IEBACit7DQorICAiZGVzY3JpcHRpb24iOiAiVE9TQ0EgYmFzZSB0eXBlIGZvciBpbXBsZW1lbnRhdGlvbiBhcnRpZmFjdHMiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuUm9vdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcHJvcGVydHkuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXByb3BlcnR5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4NGIxMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXByb3BlcnR5Lmpzb24KQEAgLTAsMCArMSwyNyBAQAorew0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEVudHJ5IHBvaW50IElucHV0IERhdGEgVHlwZSwgd2hpY2ggaXMgZHluYW1pYyBkYXRhdHlwZSwgVGhlIHBhcmFtZXRlciBuYW1lcyB3aWxsIGJlIHBvcHVsYXRlZCBkdXJpbmcgdGhlIERlc2lnbiB0aW1lIGZvciBlYWNoIGlucHV0cyIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJInR5cGUiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJImRlc2NyaXB0aW9uIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkicmVxdWlyZWQiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCX0sDQorCQkiZGVmYXVsdCI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzk4MTZlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCkBAIC0wLDAgKzEsNDYgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IERhdGEgVHlwZSIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJInByb3BlcnR5Ijogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQl9LA0KKwkJImlucHV0LXBhcmFtIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCX0sDQorCQkiZGljdGlvbmFyeS1uYW1lIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiZGljdGlvbmFyeS1zb3VyY2UiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJkZXBlbmRlbmNpZXMiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfSwNCisJCSJzdGF0dXMiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJtZXNzYWdlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkidXBkYXRlZC1kYXRlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkidXBkYXRlZC1ieSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LWxpY2Vuc2Uta2V5Lmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC1saWNlbnNlLWtleS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzMxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC1saWNlbnNlLWtleS5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBkdC1wbGljZW5zZS1rZXkgRGF0YSBUeXBlIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkibGljZW5zZS1rZXkiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LXY0LWFnZ3JlZ2F0ZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZHQtdjQtYWdncmVnYXRlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyYTdmOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LXY0LWFnZ3JlZ2F0ZS5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBkdC12NC1hZ2dyZWdhdGUgRGF0YSBUeXBlIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkiaXB2NC1hZGRyZXNzIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJpcHY0LXBsZW4iOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiaW50ZWdlciINCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvdG9zY2EuZGF0YXR5cGVzLkNyZWRlbnRpYWwuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL3Rvc2NhLmRhdGF0eXBlcy5DcmVkZW50aWFsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwYTU1MQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL3Rvc2NhLmRhdGF0eXBlcy5DcmVkZW50aWFsLmpzb24KQEAgLTAsMCArMSwzMSBAQAorew0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImRlc2NyaXB0aW9uIjogIkNyZWRlbnRpYWwiLA0KKyAgInByb3BlcnRpZXMiOiB7DQorICAgICJwcm90b2NvbCI6IHsNCisgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgIH0sDQorICAgICJ0b2tlbl90eXBlIjogew0KKyAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAiZGVmYXVsdCIgOiAicGFzc3dvcmQiDQorICAgIH0sDQorICAgICJ0b2tlbiI6IHsNCisgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgIH0sDQorICAgICJrZXlzIjogew0KKyAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAidXNlciI6IHsNCisgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgIH0NCisgIH0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9hcnRpZmFjdC1jb25maWctdGVtcGxhdGUuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2FydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOWJiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9hcnRpZmFjdC1jb25maWctdGVtcGxhdGUuanNvbgpAQCAtMCwwICsxLDM3IEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIENvbmZpZ3VyYXRpb24gVmVsb2NpdHkgVGVtcGxhdGUiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJImFjdGlvbi1uYW1lcyI6IHsNCisJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9DQorCQl9DQorCX0sDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiY29udGVudCI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkiY29udGVudCI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0NCisJCQl9DQorCQl9LA0KKwkJIm1hcHBpbmciOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5NYXBwaW5nIiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJIm1hcHBpbmciOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkidHlwZSI6ICJkYXRhdHlwZS1yZXNvdXJjZS1hc3NpZ25tZW50Ig0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkFydGlmYWN0Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtY29uZmlnLWdlbmVyYXRvci5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LWNvbmZpZy1nZW5lcmF0b3IuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjRmOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LWNvbmZpZy1nZW5lcmF0b3IuanNvbgpAQCAtMCwwICsxLDcyIEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEdlbmVyYXRlIENvbmZpZ3VyYXRpb24gQ29tcG9uZW50IEFQSSIsDQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJImNhcGFiaWxpdGllcyI6IHsNCisJCSJjb21wb25lbnQtbm9kZSI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCX0NCisJfSwNCisJImludGVyZmFjZXMiOiB7DQorCQkib3JnLW9wZW5lY29tcC1zZG5jLWNvbmZpZy1nZW5lcmF0b3Itc2VydmljZS1Db25maWdHZW5lcmF0b3JOb2RlIjogew0KKwkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkicHJvY2VzcyI6IHsNCisJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJInRlbXBsYXRlLWRhdGEiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJDb25kaXRpb25hbCA6IEpTT04gc3RyaW5nIHdoaWNoIGlzIHVzZWQgdG8gbWFzaCB3aXRoIHRlbXBsYXRlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciAoIHJlc291cmNlLWlkIGFuZCByZXNvdXJjZS10eXBlICkgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInRlbXBsYXRlLWNvbnRlbnQiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJDb25kaXRpb25hbCA6IER5bmFtaWMgVGVtcGxhdGUgdXNlZCB0byBnZW5lcmF0ZSBDb25maWd1cmF0aW9uLiIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkicmVzb3VyY2UtdHlwZSI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkNvbmRpdGlvbmFsIDogcmVzb3VyY2UtdHlwZSB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yICggcmVzb3VyY2UtaWQgYW5kIHJlc291cmNlLXR5cGUgKSBzaG91bGQgYmUgcHJlc2VudCIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkicmVxdWVzdC1pZCI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInJlc291cmNlLWlkIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yICggcmVzb3VyY2UtaWQgYW5kIHJlc291cmNlLXR5cGUgKSBzaG91bGQgYmUgcHJlc2VudCIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkiYWN0aW9uLW5hbWUiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJDb25kaXRpb25hbCA6IEFjdGlvbiBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJ0ZW1wbGF0ZS1uYW1lIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBOYW1lIG9mIHRoZSBBcnRpZmFjdCBOb2RlIFRlbXBsYXRlLCB0byBnZXQgdGhlIHRlbXBsYXRlIENvbnRlbnQuIElmIHRlbXBsYXRlLWNvbnRlbnQgaXMgcHJlc2VudCwgdGhlbiBjb250ZW50IHdvbnQgYmUgcmV0ZXJpdmVkIGZyb20gdGhlIEFydGlmYWN0IE5vZGUgVGVtcGxhdGUuIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0NCisJCQkJCX0sDQorCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkiZ2VuZXJhdGVkLWNvbmZpZyI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkdlbmVyYXRlZCBDb25maWd1cmF0aW9uIGZvciB0aGUgVGVtcGxhdGUgYWRuIFJlc291cmNlIERhdGEiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkibWFzay1pbmZvIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiSWYgdGVtcGxhdGUgY29udGFpbnMgbWFzayBlbmNyaXB0aW9uIGtleXMsIHRoZW4gdGhpcyBtYXNrLWluZm8gZmllbGQgd2lsbCBiZSBnZW5lcmF0ZWQsIFRoaXMgSlNPTiBDb250ZW50IGFsbGlnbnMgdG8gdGhlIGJlYW4gb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuY3VzdG9tLk1hc2tJbmZvICIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkic3RhdHVzIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkNjY3YQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yLmpzb24KQEAgLTAsMCArMSw3OSBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgTmV0Y29uZiBUcmFuc2FjdGlvbiBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICB9DQorICB9LA0KKyAgInJlcXVpcmVtZW50cyI6IHsNCisgICAgIm5ldGNvbmYtY29ubmVjdGlvbiI6IHsNCisgICAgICAiY2FwYWJpbGl0eSI6ICJuZXRjb25mIiwNCisgICAgICAibm9kZSI6ICJ2bmYtbmV0Y29uZi1kZXZpY2UiLA0KKyAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5Db25uZWN0c1RvIg0KKyAgICB9DQorICB9LA0KKyAgImludGVyZmFjZXMiOiB7DQorICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZkV4ZWN1dG9yTm9kZSI6IHsNCisgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS1uYW1lIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNlcnZpY2UgVGVtcGxhdGUgTmFtZSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIFZlcnNpb24iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIFR5cGUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBJZCB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNlcnZhdGlvbi1pZCI6IHsNCisJCQkJImRlc2NyaXB0aW9uIjogIlJlc2VydmF0aW9uIElkIHVzZWQgdG8gc2VuZCB0byBOUE0iLA0KKwkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCX0sDQorICAgICAgICAgICAgImV4ZWN1dGlvbi1zY3JpcHQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHl0aG9uIFNjcmlwdCB0byBFeGVjdXRlIGZvciB0aGlzIENvbXBvbmVudCBhY3Rpb24sIEl0IHNob3VsZCByZWZlciBhbnkgb25lIG9mIFByeXRob24gQXJ0aWZhY3QgRGVmaW5pdGlvbiBmb3IgdGhpcyBOb2RlIFRlbXBsYXRlLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgInJlc3BvbnNlLWRhdGEiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRXhlY3V0aW9uIFJlc3BvbnNlIERhdGEgaW4gSlNPTiBmb3JtYXQuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInN0YXR1cyI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdGF0dXMgb2YgdGhlIENvbXBvbmVudCBFeGVjdXRpb24gKCBzdWNjZXNzIG9yIGZhaWx1cmUgKSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGMwMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpAQCAtMCwwICsxLDY4IEBACit7DQorICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICB9DQorICB9LA0KKyAgImludGVyZmFjZXMiOiB7DQorICAgICJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLWFzc2lnbm1lbnQtc2VydmljZS1Db25maWdBc3NpZ25tZW50Tm9kZSI6IHsNCisgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBOYW1lLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIFZlcnNpb24uIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IHR5cGUuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAidGVtcGxhdGUtbmFtZXMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgYXJ0aWZhY3QgTm9kZSBUZW1wbGF0ZXMsIHRvIGdldCB0aGUgdGVtcGxhdGUgQ29udGVudC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCwgVW5pcXVlIElkIGZvciB0aGUgcmVxdWVzdC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBJZC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSBvZiB0aGUgcHJvY2VzcyIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1hY3RpdmF0ZS1uZXRjb25mLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1hY3RpdmF0ZS1uZXRjb25mLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzOGRmMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWFjdGl2YXRlLW5ldGNvbmYuanNvbgpAQCAtMCwwICsxLDY2IEBACit7CisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgRG93bmxvYWQgTmV0Y29uZiBEaXJlY3RlZCBHcmFwaCIsCisJInZlcnNpb24iOiAiMS4wLjAiLAorCSJwcm9wZXJ0aWVzIjogeworCQkibW9kZSI6IHsKKwkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJInR5cGUiOiAic3RyaW5nIiwKKwkJCSJkZWZhdWx0IjogInN5bmMiCisJCX0sCisJCSJ2ZXJzaW9uIjogeworCQkJInJlcXVpcmVkIjogZmFsc2UsCisJCQkidHlwZSI6ICJzdHJpbmciLAorCQkJImRlZmF1bHQiOiAiTEFURVNUIgorCQl9LAorCQkiaXMtc3RhcnQtZmxvdyI6IHsKKwkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJInR5cGUiOiAiYm9vbGVhbiIsCisJCQkiZGVmYXVsdCI6ICJmYWxzZSIKKwkJfQorCX0sCisJImNhcGFiaWxpdGllcyI6IHsKKwkJImRnLW5vZGUiOiB7CisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSIKKwkJfSwKKwkJImNvbnRlbnQiOiB7CisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLAorCQkJInByb3BlcnRpZXMiOiB7CisJCQkJInR5cGUiOiB7CisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJCQkidHlwZSI6ICJzdHJpbmciLAorCQkJCQkiZGVmYXVsdCI6ICJqc29uIgorCQkJCX0sCisJCQkJImNvbnRlbnQiOiB7CisJCQkJCSJyZXF1aXJlZCI6IHRydWUsCisJCQkJCSJ0eXBlIjogInN0cmluZyIKKwkJCQl9CisJCQl9CisJCX0KKwl9LAorCSJyZXF1aXJlbWVudHMiOiB7CisJCSJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsKKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwKKwkJCSJub2RlIjogImNvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yIiwKKwkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iCisJCX0KKwl9LAorCSJpbnRlcmZhY2VzIjogeworCQkiQ09ORklHIjogeworCQkJIm9wZXJhdGlvbnMiOiB7CisJCQkJIkFjdGl2YXRlTmV0Y29uZiI6IHsKKwkJCQkJImlucHV0cyI6IHsKKwkJCQkJCSJwYXJhbXMiOiB7CisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsCisJCQkJCQkJInR5cGUiOiAibGlzdCIsCisJCQkJCQkJImVudHJ5X3NjaGVtYSI6IHsKKwkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiCisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfSwKKwkKKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkRHIgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWNvbmZpZy1nZW5lcmF0b3IuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWNvbmZpZy1nZW5lcmF0b3IuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGJhY2UwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctY29uZmlnLWdlbmVyYXRvci5qc29uCkBAIC0wLDAgKzEsNjUgQEAKK3sNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgQWN0aXZhdGUgREcgZm9yIENvbmZpZyBHZW5lcmF0b3IgRGlyZWN0ZWQgR3JhcGgiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJIm1vZGUiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJzeW5jIg0KKwkJfSwNCisJCSJ2ZXJzaW9uIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAiTEFURVNUIg0KKwkJfSwNCisJCSJpcy1zdGFydC1mbG93Ijogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogImJvb2xlYW4iLA0KKwkJCSJkZWZhdWx0IjogImZhbHNlIg0KKwkJfQ0KKwl9LA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJImRnLW5vZGUiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQl9LA0KKwkJImNvbnRlbnQiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJInR5cGUiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJqc29uIg0KKwkJCQl9LA0KKwkJCQkiY29udGVudCI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJyZXF1aXJlbWVudHMiOiB7DQorCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7DQorCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCSJub2RlIjogImNvbXBvbmVudC1jb25maWctZ2VuZXJhdG9yIiwNCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKwkJfQ0KKwl9LA0KKwkiaW50ZXJmYWNlcyI6IHsNCisJCSJDT05GSUciOiB7DQorCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCSJHZW5lcmF0ZUNvbmZpZ3VyYXRpb24iOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJwYXJhbXMiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5Ig0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkRHIg0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ24tYWN0aXZhdGUuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLXJlc291cmNlLWFzc2lnbi1hY3RpdmF0ZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OGZhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ24tYWN0aXZhdGUuanNvbgpAQCAtMCwwICsxLDcwIEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbiBhbmQgQWN0aXZhdGUgTmV0Y29uZiBEaXJlY3RlZCBHcmFwaCIsDQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkibW9kZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogInN5bmMiDQorCQl9LA0KKwkJInZlcnNpb24iOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJMQVRFU1QiDQorCQl9LA0KKwkJImlzLXN0YXJ0LWZsb3ciOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiYm9vbGVhbiIsDQorCQkJImRlZmF1bHQiOiAiZmFsc2UiDQorCQl9DQorCX0sDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiZGctbm9kZSI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCX0sDQorCQkiY29udGVudCI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkidHlwZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogImpzb24iDQorCQkJCX0sDQorCQkJCSJjb250ZW50Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJyZXF1aXJlbWVudHMiOiB7DQorCQkicmEtY29tcG9uZW50Ijogew0KKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkibm9kZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCX0sDQorCQkibmV0Y29uZi1jb21wb25lbnQiOiB7DQorCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCSJub2RlIjogImNvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yIiwNCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKwkJfQ0KKwl9LA0KKwkiaW50ZXJmYWNlcyI6IHsNCisJCSJDT05GSUciOiB7DQorCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCSJSZXNvdXJjZUFzc2lnbkFuZEFjdGl2YXRlIjogew0KKwkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkicGFyYW1zIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAibGlzdCIsDQorCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWdubWVudC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZmJiNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ25tZW50Lmpzb24KQEAgLTAsMCArMSw2NSBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IERpcmVjdGVkIEdyYXBoIiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJtb2RlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAic3luYyINCisJCX0sDQorCQkidmVyc2lvbiI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogIkxBVEVTVCINCisJCX0sDQorCQkiaXMtc3RhcnQtZmxvdyI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkiZGVmYXVsdCI6ICJmYWxzZSINCisJCX0NCisJfSwNCisJImNhcGFiaWxpdGllcyI6IHsNCisJCSJkZy1ub2RlIjogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKwkJfSwNCisJCSJjb250ZW50Ijogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJ0eXBlIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAianNvbiINCisJCQkJfSwNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJInJlcXVpcmVtZW50cyI6IHsNCisJCSJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisJCQkiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorCQkJIm5vZGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKwkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorCQl9DQorCX0sDQorCSJpbnRlcmZhY2VzIjogew0KKwkJIkNPTkZJRyI6IHsNCisJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJIlJlc291cmNlQXNzaWdubWVudCI6IHsNCisJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJInBhcmFtcyI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuREciDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL3ZuZi1uZXRjb25mLWRldmljZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvdm5mLW5ldGNvbmYtZGV2aWNlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1NzNiYQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL3ZuZi1uZXRjb25mLWRldmljZS5qc29uCkBAIC0wLDAgKzEsNDIgQEAKK3sNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgVk5GIERldmljZSB3aXRoIE5ldGNvbmYgIENhcGFiaWxpdHkiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkibmV0Y29uZiI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5Lk5ldGNvbmYiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkibG9naW4ta2V5Ijogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJzZG5jIg0KKwkJCQl9LA0KKwkJCQkibG9naW4tYWNjb3VudCI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAic2RuYy10YWNhY3MiDQorCQkJCX0sDQorCQkJCSJzb3VyY2UiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogIm5wbSINCisJCQkJfSwNCisJCQkJInRhcmdldC1pcC1hZGRyZXNzIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJfSwNCisJCQkJInBvcnQtbnVtYmVyIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJImRlZmF1bHQiOiA4MzANCisJCQkJfSwNCisJCQkJImNvbm5lY3Rpb24tdGltZS1vdXQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJImRlZmF1bHQiOiAzMA0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLlZuZiINCisJDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9wb20ueG1sIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU4OGRkMgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9wb20ueG1sCkBAIC0wLDAgKzEsMTA5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIH4gQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgIH4NCisgIH4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICB+DQorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgIH4NCisgIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgIC0tPg0KKw0KKzxwcm9qZWN0DQorICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy94c2QvbWF2ZW4tNC4wLjAueHNkIg0KKyAgICAgICAgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCINCisgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KKyAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorICAgIDxwYXJlbnQ+DQorICAgICAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPg0KKyAgICAgICAgPGFydGlmYWN0SWQ+Y29udHJvbGxlcmJsdWVwcmludHMtbW9kdWxlczwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDx2ZXJzaW9uPjAuMy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKyAgICA8L3BhcmVudD4NCisgICAgPGFydGlmYWN0SWQ+Y29udHJvbGxlcmJsdWVwcmludHMtY29yZTwvYXJ0aWZhY3RJZD4NCisgICAgPG5hbWU+Q29udHJvbGxlciBCbHVlcHJpbnRzIENvcmU8L25hbWU+DQorDQorICAgIDxkZXBlbmRlbmNpZXM+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuamV0YnJhaW5zLmtvdGxpbjwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tc3RkbGliPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmpldGJyYWlucy5rb3RsaW48L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+a290bGluLXJlZmxlY3Q8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZmFzdGVyeG1sLmphY2tzb24ubW9kdWxlPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tbW9kdWxlLWtvdGxpbjwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgICAgIDxkZXBlbmRlbmN5Pg0KKyAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tZGF0YWJpbmQ8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZmFzdGVyeG1sLmphY2tzb24uY29yZTwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLWFubm90YXRpb25zPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmNvcmU8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1jb3JlPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFmb3JtYXQ8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+amFja3Nvbi1kYXRhZm9ybWF0LXhtbDwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgICAgIDxkZXBlbmRlbmN5Pg0KKyAgICAgICAgICAgIDxncm91cElkPmNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhZm9ybWF0PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tZGF0YWZvcm1hdC15YW1sPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmZhc3RlcnhtbC5qYWNrc29uLm1vZHVsZTwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qYWNrc29uLW1vZHVsZS1qc29uU2NoZW1hPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbGFuZzM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29sbGVjdGlvbnM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWlvPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtaW88L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZ29vZ2xlLmd1YXZhPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnlhbWw8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+c25ha2V5YW1sPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+Y29tLmpheXdheS5qc29ucGF0aDwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qc29uLXBhdGg8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuamV0YnJhaW5zLmtvdGxpbjwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tdGVzdDwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorPCEtLSAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNsZjRqPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnNsZjRqLXNpbXBsZTwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4tLT4NCisgICAgPC9kZXBlbmRlbmNpZXM+DQorDQorPC9wcm9qZWN0Pg0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL0JsdWVQcmludENvbnN0YW50cy5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL0JsdWVQcmludENvbnN0YW50cy5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmRkNTMwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQmx1ZVByaW50Q29uc3RhbnRzLmt0CkBAIC0wLDAgKzEsMTI1IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgQmx1ZVByaW50Q29uc3RhbnRzIHsNCisNCisgICAgY29uc3QgdmFsIFRZUEVfREVGQVVMVDogU3RyaW5nID0gImRlZmF1bHQiDQorDQorICAgIGNvbnN0IHZhbCBEQVRBX1RZUEVfU1RSSU5HOiBTdHJpbmcgPSAic3RyaW5nIg0KKyAgICBjb25zdCB2YWwgREFUQV9UWVBFX0lOVEVHRVI6IFN0cmluZyA9ICJpbnRlZ2VyIg0KKyAgICBjb25zdCB2YWwgREFUQV9UWVBFX0ZMT0FUOiBTdHJpbmcgPSAiZmxvYXQiDQorICAgIGNvbnN0IHZhbCBEQVRBX1RZUEVfQk9PTEVBTjogU3RyaW5nID0gImJvb2xlYW4iDQorICAgIGNvbnN0IHZhbCBEQVRBX1RZUEVfVElNRVNUQU1QOiBTdHJpbmcgPSAidGltZXN0YW1wIg0KKyAgICBjb25zdCB2YWwgREFUQV9UWVBFX05VTEw6IFN0cmluZyA9ICJudWxsIg0KKyAgICBjb25zdCB2YWwgREFUQV9UWVBFX0xJU1Q6IFN0cmluZyA9ICJsaXN0Ig0KKyAgICBjb25zdCB2YWwgREFUQV9UWVBFX01BUDogU3RyaW5nID0gIm1hcCINCisNCisgICAgY29uc3QgdmFsIFVTRVJfU1lTVEVNOiBTdHJpbmcgPSAiU3lzdGVtIg0KKw0KKyAgICBjb25zdCB2YWwgTU9ERUxfQ09OVEVOVF9UWVBFX0pTT046IFN0cmluZyA9ICJKU09OIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfQ09OVEVOVF9UWVBFX1lBTUw6IFN0cmluZyA9ICJZQU1MIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfQ09OVEVOVF9UWVBFX1lBTkc6IFN0cmluZyA9ICJZQU5HIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfQ09OVEVOVF9UWVBFX1NDSEVNQTogU3RyaW5nID0gIlNDSEVNQSINCisNCisgICAgY29uc3QgdmFsIFBBVEhfRElWSURFUjogU3RyaW5nID0gIi8iDQorICAgIGNvbnN0IHZhbCBQQVRIX0lOUFVUUzogU3RyaW5nID0gImlucHV0cyINCisgICAgY29uc3QgdmFsIFBBVEhfTk9ERV9XT1JLRkxPV1M6IFN0cmluZyA9ICJ3b3JrZmxvd3MiDQorICAgIGNvbnN0IHZhbCBQQVRIX05PREVfVEVNUExBVEVTOiBTdHJpbmcgPSAibm9kZV90ZW1wbGF0ZXMiDQorICAgIGNvbnN0IHZhbCBQQVRIX0NBUEFCSUxJVElFUzogU3RyaW5nID0gImNhcGFiaWxpdGllcyINCisgICAgY29uc3QgdmFsIFBBVEhfUkVRVUlSRU1FTlRTOiBTdHJpbmcgPSAicmVxdWlyZW1lbnRzIg0KKyAgICBjb25zdCB2YWwgUEFUSF9JTlRFUkZBQ0VTOiBTdHJpbmcgPSAiaW50ZXJmYWNlcyINCisgICAgY29uc3QgdmFsIFBBVEhfT1BFUkFUSU9OUzogU3RyaW5nID0gIm9wZXJhdGlvbnMiDQorICAgIGNvbnN0IHZhbCBQQVRIX09VVFBVVFM6IFN0cmluZyA9ICJvdXRwdXRzIg0KKyAgICBjb25zdCB2YWwgUEFUSF9QUk9QRVJUSUVTOiBTdHJpbmcgPSAicHJvcGVydGllcyINCisgICAgY29uc3QgdmFsIFBBVEhfQVRUUklCVVRFUzogU3RyaW5nID0gImF0dHJpYnV0ZXMiDQorICAgIGNvbnN0IHZhbCBQQVRIX0FSVElGQUNUUzogU3RyaW5nID0gImFydGlmYWN0cyINCisNCisgICAgY29uc3QgdmFsIE1PREVMX0RFRklOSVRJT05fVFlQRV9OT0RFX1RZUEU6IFN0cmluZyA9ICJub2RlX3R5cGUiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9ERUZJTklUSU9OX1RZUEVfQVJUSUZBQ1RfVFlQRTogU3RyaW5nID0gImFydGlmYWN0X3R5cGUiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9ERUZJTklUSU9OX1RZUEVfQ0FQQUJJTElUWV9UWVBFOiBTdHJpbmcgPSAiY2FwYWJpbGl0eV90eXBlIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfREVGSU5JVElPTl9UWVBFX1JFTEFUSU9OU0hJUF9UWVBFOiBTdHJpbmcgPSAicmVsYXRpb25zaGlwX3R5cGUiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9ERUZJTklUSU9OX1RZUEVfREFUQV9UWVBFOiBTdHJpbmcgPSAiZGF0YV90eXBlIg0KKw0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9EQVRBVFlQRVNfUk9PVDogU3RyaW5nID0gInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9OT0RFU19ST09UOiBTdHJpbmcgPSAidG9zY2Eubm9kZXMuUm9vdCINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfR1JPVVBTX1JPT1Q6IFN0cmluZyA9ICJ0b3NjYS5ncm91cHMuUm9vdCINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfUkVMQVRJT05TSElQU19ST09UOiBTdHJpbmcgPSAidG9zY2EucmVsYXRpb25zaGlwcy5Sb290Ig0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9BUlRJRkFDVFNfUk9PVDogU3RyaW5nID0gInRvc2NhLmFydGlmYWN0cy5Sb290Ig0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9DQVBBQklMSVRJRVNfUk9PVDogU3RyaW5nID0gInRvc2NhLmNhcGFiaWxpdGllcy5Sb290Ig0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9JTlRFUkZBQ0VTX1JPT1Q6IFN0cmluZyA9ICJ0b3NjYS5pbnRlcmZhY2VzLlJvb3QiDQorDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX1JFTEFUSU9OU0hJUFNfREVQRU5EU19PTiA9ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfUkVMQVRJT05TSElQU19IT1NURURfT04gPSAidG9zY2EucmVsYXRpb25zaGlwcy5Ib3N0ZWRPbiINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfUkVMQVRJT05TSElQU19DT05ORUNUU19UTyA9ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkNvbm5lY3RzVG8iDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX1JFTEFUSU9OU0hJUFNfQVRUQUNIX1RPID0gInRvc2NhLnJlbGF0aW9uc2hpcHMuQXR0YWNoZXNUbyINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfUkVMQVRJT05TSElQU19ST1VURVNfVE8gPSAidG9zY2EucmVsYXRpb25zaGlwcy5Sb3V0ZXNUbyINCisNCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfTk9ERVNfQ09NUE9ORU5UX0pBVkE6IFN0cmluZyA9ICJ0b3NjYS5ub2Rlcy5jb21wb25lbnQuSmF2YSINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfTk9ERVNfQ09NUE9ORU5UX0JVTkRMRTogU3RyaW5nID0gInRvc2NhLm5vZGVzLmNvbXBvbmVudC5CdW5kbGUiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX05PREVTX0NPTVBPTkVOVF9TQ1JJUFQ6IFN0cmluZyA9ICJ0b3NjYS5ub2Rlcy5jb21wb25lbnQuU2NyaXB0Ig0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9OT0RFU19DT01QT05FTlRfUFlUSE9OOiBTdHJpbmcgPSAidG9zY2Eubm9kZXMuY29tcG9uZW50LlB5dGhvbiINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfTk9ERVNfQ09NUE9ORU5UX0pBVkFfU0NSSVBUOiBTdHJpbmcgPSAidG9zY2Eubm9kZXMuY29tcG9uZW50LkphdmFTY3JpcHQiDQorDQorICAgIGNvbnN0IHZhbCBFWFBSRVNTSU9OX0dFVF9JTlBVVDogU3RyaW5nID0gImdldF9pbnB1dCINCisgICAgY29uc3QgdmFsIEVYUFJFU1NJT05fR0VUX0FUVFJJQlVURTogU3RyaW5nID0gImdldF9hdHRyaWJ1dGUiDQorICAgIGNvbnN0IHZhbCBFWFBSRVNTSU9OX0dFVF9BUlRJRkFDVDogU3RyaW5nID0gImdldF9hcnRpZmFjdCINCisgICAgY29uc3QgdmFsIEVYUFJFU1NJT05fR0VUX1BST1BFUlRZOiBTdHJpbmcgPSAiZ2V0X3Byb3BlcnR5Ig0KKyAgICBjb25zdCB2YWwgRVhQUkVTU0lPTl9HRVRfT1BFUkFUSU9OX09VVFBVVDogU3RyaW5nID0gImdldF9vcGVyYXRpb25fb3V0cHV0Ig0KKyAgICBjb25zdCB2YWwgRVhQUkVTU0lPTl9HRVRfTk9ERV9PRl9UWVBFOiBTdHJpbmcgPSAiZ2V0X25vZGVzX29mX3R5cGUiDQorDQorICAgIGNvbnN0IHZhbCBQUk9QRVJUWV9CTFVFUFJJTlRfUFJPQ0VTU19JRDogU3RyaW5nID0gImJsdWVwcmludC1wcm9jZXNzLWlkIg0KKyAgICBjb25zdCB2YWwgUFJPUEVSVFlfQkxVRVBSSU5UX0JBU0VfUEFUSDogU3RyaW5nID0gImJsdWVwcmludC1iYXNlUGF0aCINCisgICAgY29uc3QgdmFsIFBST1BFUlRZX0JMVUVQUklOVF9SVU5USU1FOiBTdHJpbmcgPSAiYmx1ZXByaW50LXJ1bnRpbWUiDQorICAgIGNvbnN0IHZhbCBQUk9QRVJUWV9CTFVFUFJJTlRfSU5QVVRTX0RBVEE6IFN0cmluZyA9ICJibHVlcHJpbnQtaW5wdXRzLWRhdGEiDQorICAgIGNvbnN0IHZhbCBQUk9QRVJUWV9CTFVFUFJJTlRfQ09OVEVYVDogU3RyaW5nID0gImJsdWVwcmludC1jb250ZXh0Ig0KKyAgICBjb25zdCB2YWwgUFJPUEVSVFlfQkxVRVBSSU5UX05BTUU6IFN0cmluZyA9ICJ0ZW1wbGF0ZV9uYW1lIg0KKyAgICBjb25zdCB2YWwgUFJPUEVSVFlfQkxVRVBSSU5UX1ZFUlNJT046IFN0cmluZyA9ICJ0ZW1wbGF0ZV92ZXJzaW9uIg0KKw0KKyAgICBjb25zdCB2YWwgVE9TQ0FfTUVUQURBVEFfRU5UUllfREVGSU5JVElPTl9GSUxFOiBTdHJpbmcgPSAiVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YSINCisgICAgY29uc3QgdmFsIFRPU0NBX1BMQU5TX0RJUjogU3RyaW5nID0gIlBsYW5zIg0KKyAgICBjb25zdCB2YWwgVE9TQ0FfU0NSSVBUU19ESVI6IFN0cmluZyA9ICJTY3JpcHRzIg0KKyAgICBjb25zdCB2YWwgVE9TQ0FfTUFQUElOR1NfRElSOiBTdHJpbmcgPSAiTWFwcGluZ3MiDQorICAgIGNvbnN0IHZhbCBUT1NDQV9URU1QTEFURVNfRElSOiBTdHJpbmcgPSAiVGVtcGxhdGVzIg0KKw0KKyAgICBjb25zdCB2YWwgTUVUQURBVEFfVVNFUl9HUk9VUFMgPSAidXNlci1ncm91cHMiDQorICAgIGNvbnN0IHZhbCBNRVRBREFUQV9URU1QTEFURV9OQU1FID0gInRlbXBsYXRlX25hbWUiDQorICAgIGNvbnN0IHZhbCBNRVRBREFUQV9URU1QTEFURV9WRVJTSU9OID0gInRlbXBsYXRlX3ZlcnNpb24iDQorICAgIGNvbnN0IHZhbCBNRVRBREFUQV9URU1QTEFURV9BVVRIT1IgPSAidGVtcGxhdGVfYXV0aG9yIg0KKyAgICBjb25zdCB2YWwgTUVUQURBVEFfVEVNUExBVEVfVEFHUyA9ICJ0ZW1wbGF0ZV90YWdzIg0KKw0KKyAgICBjb25zdCB2YWwgUEFZTE9BRF9DT05URU5UID0gInBheWxvYWQtY29udGVudCINCisgICAgY29uc3QgdmFsIFBBWUxPQURfREFUQSA9ICJwYXlsb2FkLWRhdGEiDQorICAgIGNvbnN0IHZhbCBTRUxFQ1RPUiA9ICJzZWxlY3RvciINCisgICAgY29uc3QgdmFsIFBST1BFUlRZX0NVUlJFTlRfSU5URVJGQUNFID0gImN1cnJlbnQtaW50ZXJmYWNlIg0KKyAgICBjb25zdCB2YWwgUFJPUEVSVFlfQ1VSUkVOVF9PUEVSQVRJT04gPSAiY3VycmVudC1vcGVyYXRpb24iDQorICAgIGNvbnN0IHZhbCBQUk9QRVJUWV9DVVJSRU5UX0lNUExFTUVOVEFUSU9OID0gImN1cnJlbnQtaW1wbGVtZW50YXRpb24iDQorDQorICAgIGNvbnN0IHZhbCBQUk9QRVJUWV9BQ1RJT05fTkFNRSA9ICJhY3Rpb24iDQorDQorICAgIGNvbnN0IHZhbCBPUEVSQVRJT05fUFJPQ0VTUyA9ICJwcm9jZXNzIg0KKyAgICBjb25zdCB2YWwgT1BFUkFUSU9OX1BSRVBBUkUgPSAicHJlcGFyZSINCisNCisgICAgY29uc3QgdmFsIEJMVUVQUklOVF9SRVRSSUVWRV9UWVBFX0RCID0gImRiIg0KKyAgICBjb25zdCB2YWwgQkxVRVBSSU5UX1JFVFJJRVZFX1RZUEVfRklMRSA9ICJmaWxlIg0KKyAgICBjb25zdCB2YWwgQkxVRVBSSU5UX1JFVFJJRVZFX1RZUEVfUkVQTyA9ICJyZXBvIg0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9CbHVlUHJpbnRFeGNlcHRpb24ua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9CbHVlUHJpbnRFeGNlcHRpb24ua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzODZjMgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL0JsdWVQcmludEV4Y2VwdGlvbi5rdApAQCAtMCwwICsxLDQ5IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitjbGFzcyBCbHVlUHJpbnRFeGNlcHRpb24gOiBFeGNlcHRpb24gew0KKw0KKyAgICB2YXIgY29kZTogSW50ID0gMTAwDQorDQorICAgIGNvbnN0cnVjdG9yKGNhdXNlOiBUaHJvd2FibGUpIDogc3VwZXIoY2F1c2UpDQorICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IFN0cmluZykgOiBzdXBlcihtZXNzYWdlKQ0KKyAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBTdHJpbmcsIGNhdXNlOiBUaHJvd2FibGUpIDogc3VwZXIobWVzc2FnZSwgY2F1c2UpDQorICAgIGNvbnN0cnVjdG9yKGNhdXNlOiBUaHJvd2FibGUsIG1lc3NhZ2U6IFN0cmluZywgdmFyYXJnIGFyZ3M6IEFueT8pIDogc3VwZXIoU3RyaW5nLmZvcm1hdChtZXNzYWdlLCAqYXJncyksIGNhdXNlKQ0KKw0KKyAgICBjb25zdHJ1Y3Rvcihjb2RlOiBJbnQsIGNhdXNlOiBUaHJvd2FibGUpIDogc3VwZXIoY2F1c2UpIHsNCisgICAgICAgIHRoaXMuY29kZSA9IGNvZGUNCisgICAgfQ0KKw0KKyAgICBjb25zdHJ1Y3Rvcihjb2RlOiBJbnQsIG1lc3NhZ2U6IFN0cmluZykgOiBzdXBlcihtZXNzYWdlKSB7DQorICAgICAgICB0aGlzLmNvZGUgPSBjb2RlDQorICAgIH0NCisNCisgICAgY29uc3RydWN0b3IoY29kZTogSW50LCBtZXNzYWdlOiBTdHJpbmcsIGNhdXNlOiBUaHJvd2FibGUpIDogc3VwZXIobWVzc2FnZSwgY2F1c2UpIHsNCisgICAgICAgIHRoaXMuY29kZSA9IGNvZGUNCisgICAgfQ0KKw0KKyAgICBjb25zdHJ1Y3Rvcihjb2RlOiBJbnQsIGNhdXNlOiBUaHJvd2FibGUsIG1lc3NhZ2U6IFN0cmluZywgdmFyYXJnIGFyZ3M6IEFueT8pDQorICAgICAgICAgICAgOiBzdXBlcihTdHJpbmcuZm9ybWF0KG1lc3NhZ2UsICphcmdzKSwgY2F1c2UpIHsNCisgICAgICAgIHRoaXMuY29kZSA9IGNvZGUNCisgICAgfQ0KK30NCisNCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9CbHVlUHJpbnRUeXBlcy5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL0JsdWVQcmludFR5cGVzLmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYzgxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9CbHVlUHJpbnRUeXBlcy5rdApAQCAtMCwwICsxLDkxIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgQmx1ZVByaW50VHlwZXMgew0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biB2YWxpZE1vZGVsVHlwZXMoKTogTGlzdDxTdHJpbmc+IHsNCisgICAgICAgIHZhbCB2YWxpZFR5cGVzOiBNdXRhYmxlTGlzdDxTdHJpbmc+ID0gYXJyYXlMaXN0T2YoKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9EQVRBX1RZUEUpDQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0FSVElGQUNUX1RZUEUpDQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX05PREVfVFlQRSkNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfQ0FQQUJJTElUWV9UWVBFKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9SRUxBVElPTlNISVBfVFlQRSkNCisgICAgICAgIHJldHVybiB2YWxpZFR5cGVzDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gdmFsaWRQcm9wZXJ0eVR5cGVzKCk6IExpc3Q8U3RyaW5nPiB7DQorICAgICAgICB2YWwgdmFsaWRUeXBlczogTXV0YWJsZUxpc3Q8U3RyaW5nPiA9IGFycmF5TGlzdE9mKCkNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9JTlRFR0VSKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9GTE9BVCkNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfQk9PTEVBTikNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfVElNRVNUQU1QKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9OVUxMKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9MSVNUKQ0KKyAgICAgICAgcmV0dXJuIHZhbGlkVHlwZXMNCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biB2YWxpZFByaW1pdGl2ZVR5cGVzKCk6IExpc3Q8U3RyaW5nPiB7DQorICAgICAgICB2YWwgdmFsaWRUeXBlczogTXV0YWJsZUxpc3Q8U3RyaW5nPiA9IGFycmF5TGlzdE9mKCkNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9JTlRFR0VSKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9GTE9BVCkNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfQk9PTEVBTikNCisgICAgICAgIHZhbGlkVHlwZXMuYWRkKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfVElNRVNUQU1QKQ0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9OVUxMKQ0KKyAgICAgICAgcmV0dXJuIHZhbGlkVHlwZXMNCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biB2YWxpZENvbGxlY3Rpb25UeXBlcygpOiBMaXN0PFN0cmluZz4gew0KKyAgICAgICAgdmFsIHZhbGlkVHlwZXM6IE11dGFibGVMaXN0PFN0cmluZz4gPSBhcnJheUxpc3RPZigpDQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0xJU1QpDQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX01BUCkNCisgICAgICAgIHJldHVybiB2YWxpZFR5cGVzDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gdmFsaWRDb21tYW5kcygpOiBMaXN0PFN0cmluZz4gew0KKyAgICAgICAgcmV0dXJuIGxpc3RPZihCbHVlUHJpbnRDb25zdGFudHMuRVhQUkVTU0lPTl9HRVRfSU5QVVQsDQorICAgICAgICAgICAgICAgIEJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9BVFRSSUJVVEUsDQorICAgICAgICAgICAgICAgIEJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9QUk9QRVJUWSwNCisgICAgICAgICAgICAgICAgQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX0FSVElGQUNULA0KKyAgICAgICAgICAgICAgICBCbHVlUHJpbnRDb25zdGFudHMuRVhQUkVTU0lPTl9HRVRfT1BFUkFUSU9OX09VVFBVVCwNCisgICAgICAgICAgICAgICAgQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX05PREVfT0ZfVFlQRSkNCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biByb290Tm9kZVR5cGVzKCk6IExpc3Q8U3RyaW5nPiB7DQorICAgICAgICByZXR1cm4gbGlzdE9mKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9UWVBFX05PREVTX1JPT1QpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gcm9vdERhdGFUeXBlcygpOiBMaXN0PFN0cmluZz4gew0KKyAgICAgICAgcmV0dXJuIGxpc3RPZihCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfVFlQRV9EQVRBVFlQRVNfUk9PVCkNCisgICAgfQ0KKw0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9Db25maWdNb2RlbENvbnN0YW50Lmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ29uZmlnTW9kZWxDb25zdGFudC5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjVhNzhmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ29uZmlnTW9kZWxDb25zdGFudC5rdApAQCAtMCwwICsxLDUyIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgQ29uZmlnTW9kZWxDb25zdGFudCB7DQorDQorICAgIGNvbnN0IHZhbCBNT0RFTF9DT05URU5UX1RZUEVfVE9TQ0FfSlNPTiA9ICJUT1NDQV9KU09OIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfQ09OVEVOVF9UWVBFX1RFTVBMQVRFID0gIlRFTVBMQVRFIg0KKw0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9EQVRBX1RZUEUgPSAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX0RBVEFfVFlQRV9EWU5BTUlDID0gInRvc2NhLmRhdGF0eXBlcy5EeW5hbWljIg0KKw0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9OT0RFX0RHID0gInRvc2NhLm5vZGVzLkRHIg0KKyAgICBjb25zdCB2YWwgTU9ERUxfVFlQRV9OT0RFX0NPTVBPTkVOVCA9ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX05PREVfVk5GID0gInRvc2NhLm5vZGVzLlZuZiINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfTk9ERV9BUlRJRkFDVCA9ICJ0b3NjYS5ub2Rlcy5BcnRpZmFjdCINCisNCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfQ0FQQUJJTElUWV9ORVRDT05GID0gInRvc2NhLmNhcGFiaWxpdHkuTmV0Y29uZiINCisgICAgY29uc3QgdmFsIE1PREVMX1RZUEVfQ0FQQUJJTElUWV9TU0ggPSAidG9zY2EuY2FwYWJpbGl0eS5Tc2giDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX0NBUEFCSUxJVFlfU0ZUUCA9ICJ0b3NjYS5jYXBhYmlsaXR5LlNmdHAiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX0NBUEFCSUxJVFlfQ0hFRiA9ICJ0b3NjYS5jYXBhYmlsaXR5LkNoZWYiDQorICAgIGNvbnN0IHZhbCBNT0RFTF9UWVBFX0NBUEFCSUxJVFlfQU5TSUJMRUYgPSAidG9zY2EuY2FwYWJpbGl0eS5BbnNpYmxlIg0KKw0KKyAgICBjb25zdCB2YWwgQ0FQQUJJTElUWV9QUk9QRVJUWV9NQVBQSU5HID0gIm1hcHBpbmciDQorDQorICAgIGNvbnN0IHZhbCBTT1VSQ0VfSU5QVVQgPSAiaW5wdXQiDQorICAgIGNvbnN0IHZhbCBTT1VSQ0VfREVGQVVMVCA9ICJkZWZhdWx0Ig0KKyAgICBjb25zdCB2YWwgU09VUkNFX01EU0FMID0gIm1kc2FsIg0KKyAgICBjb25zdCB2YWwgU09VUkNFX0RCID0gImRiIg0KKw0KKyAgICBjb25zdCB2YWwgUFJPUEVSVFlfUkVDSVBFX05BTUVTID0gImFjdGlvbi1uYW1lcyINCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ3VzdG9tRnVuY3Rpb25zLmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ3VzdG9tRnVuY3Rpb25zLmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDJmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9DdXN0b21GdW5jdGlvbnMua3QKQEAgLTAsMCArMSw3NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlDQorDQoraW1wb3J0IG9yZy5zbGY0ai5oZWxwZXJzLk1lc3NhZ2VGb3JtYXR0ZXINCitpbXBvcnQgamF2YS5pby5GaWxlDQoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW0NCitpbXBvcnQga290bGluLnJlZmxlY3QuS0NsYXNzDQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorDQorZnVuIGZvcm1hdChtZXNzYWdlOiBTdHJpbmcsIHZhcmFyZyBhcmdzOiBBbnk/KSA6IFN0cmluZ3sNCisgICAgaWYoYXJncyAhPSBudWxsICYmIGFyZ3MuaXNOb3RFbXB0eSgpKXsNCisgICAgICAgIHJldHVybiBNZXNzYWdlRm9ybWF0dGVyLmFycmF5Rm9ybWF0KG1lc3NhZ2UsIGFyZ3MpLm1lc3NhZ2UNCisgICAgfQ0KKyAgIHJldHVybiBtZXNzYWdlDQorfQ0KKw0KK2Z1biA8VCA6IEFueT4gTXV0YWJsZU1hcDxTdHJpbmcsICo+LmdldENhc3RPcHRpb25hbFZhbHVlKGtleTogU3RyaW5nLCB2YWx1ZVR5cGU6IEtDbGFzczxUPik6IFQ/IHsNCisgICAgaWYgKGNvbnRhaW5zS2V5KGtleSkpIHsNCisgICAgICAgIHJldHVybiBnZXQoa2V5KSBhcz8gVA0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgcmV0dXJuIG51bGwNCisgICAgfQ0KK30NCisNCitmdW4gPFQgOiBBbnk+IE11dGFibGVNYXA8U3RyaW5nLCAqPi5nZXRDYXN0VmFsdWUoa2V5OiBTdHJpbmcsIHZhbHVlVHlwZTogS0NsYXNzPFQ+KTogVCB7DQorICAgIGlmIChjb250YWluc0tleShrZXkpKSB7DQorICAgICAgICByZXR1cm4gZ2V0KGtleSkgYXMgVA0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKCJjb3VsZG4ndCBmaW5kIHRoZSBrZXkgIiArIGtleSkNCisgICAgfQ0KK30NCisNCitmdW4gY2hlY2tOb3RFbXB0eSh2YWx1ZSA6IFN0cmluZz8pIDogQm9vbGVhbnsNCisgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUuaXNOb3RFbXB0eSgpDQorfQ0KKw0KK2Z1biBjaGVja05vdEVtcHR5TlRocm93KHZhbHVlIDogU3RyaW5nPywgbWVzc2FnZSA6IFN0cmluZz8gPSB2YWx1ZS5wbHVzKCIgaXMgbnVsbC9lbXB0eSAiKSkgOiBCb29sZWFuew0KKyAgICB2YWwgbm90RW1wdHkgPSB2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmlzTm90RW1wdHkoKQ0KKyAgICBpZighbm90RW1wdHkpew0KKyAgICAgICAgdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKG1lc3NhZ2UhISkNCisgICAgfQ0KKyAgICByZXR1cm4gbm90RW1wdHkNCit9DQorDQorZnVuIElucHV0U3RyZWFtLnRvRmlsZShwYXRoOiBTdHJpbmcpIDogRmlsZSB7DQorICAgIHZhbCBmaWxlID0gRmlsZShwYXRoKQ0KKyAgICBmaWxlLm91dHB1dFN0cmVhbSgpLnVzZSB7IHRoaXMuY29weVRvKGl0KSB9DQorICAgIHJldHVybiBmaWxlDQorfQ0KKw0KKw0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL09yY2hlc3RyYXRvckV4Y2VwdGlvbi5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL09yY2hlc3RyYXRvckV4Y2VwdGlvbi5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGFiYWQxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvT3JjaGVzdHJhdG9yRXhjZXB0aW9uLmt0CkBAIC0wLDAgKzEsNDggQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZQ0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK2NsYXNzIE9yY2hlc3RyYXRvckV4Y2VwdGlvbiA6IEV4Y2VwdGlvbiB7DQorICAgIHZhciBjb2RlOiBJbnQgPSAxMDANCisNCisgICAgY29uc3RydWN0b3IobWVzc2FnZTogU3RyaW5nLCBjYXVzZTogVGhyb3dhYmxlKSA6IHN1cGVyKG1lc3NhZ2UsIGNhdXNlKQ0KKyAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBTdHJpbmcpIDogc3VwZXIobWVzc2FnZSkNCisgICAgY29uc3RydWN0b3IoY2F1c2U6IFRocm93YWJsZSkgOiBzdXBlcihjYXVzZSkNCisgICAgY29uc3RydWN0b3IoY2F1c2U6IFRocm93YWJsZSwgbWVzc2FnZTogU3RyaW5nLCB2YXJhcmcgYXJnczogQW55PykgOiBzdXBlcihmb3JtYXQobWVzc2FnZSwgKmFyZ3MpLCBjYXVzZSkNCisNCisgICAgY29uc3RydWN0b3IoY29kZTogSW50LCBjYXVzZTogVGhyb3dhYmxlKSA6IHN1cGVyKGNhdXNlKSB7DQorICAgICAgICB0aGlzLmNvZGUgPSBjb2RlDQorICAgIH0NCisNCisgICAgY29uc3RydWN0b3IoY29kZTogSW50LCBtZXNzYWdlOiBTdHJpbmcpIDogc3VwZXIobWVzc2FnZSkgew0KKyAgICAgICAgdGhpcy5jb2RlID0gY29kZQ0KKyAgICB9DQorDQorICAgIGNvbnN0cnVjdG9yKGNvZGU6IEludCwgbWVzc2FnZTogU3RyaW5nLCBjYXVzZTogVGhyb3dhYmxlKSA6IHN1cGVyKG1lc3NhZ2UsIGNhdXNlKSB7DQorICAgICAgICB0aGlzLmNvZGUgPSBjb2RlDQorICAgIH0NCisNCisgICAgY29uc3RydWN0b3IoY29kZTogSW50LCBjYXVzZTogVGhyb3dhYmxlLCBtZXNzYWdlOiBTdHJpbmcsIHZhcmFyZyBhcmdzOiBBbnk/KQ0KKyAgICAgICAgICAgIDogc3VwZXIoU3RyaW5nLmZvcm1hdChtZXNzYWdlLCAqYXJncyksIGNhdXNlKSB7DQorICAgICAgICB0aGlzLmNvZGUgPSBjb2RlDQorICAgIH0NCit9DQorDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvZGF0YS9CbHVlUHJpbnRFeHByZXNzaW9uRGF0YS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2RhdGEvQmx1ZVByaW50RXhwcmVzc2lvbkRhdGEua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBlYjEzZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2RhdGEvQmx1ZVByaW50RXhwcmVzc2lvbkRhdGEua3QKQEAgLTAsMCArMSw3MCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGENCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLk9iamVjdE5vZGUNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitkYXRhIGNsYXNzIEV4cHJlc3Npb25EYXRhKA0KKyAgICAgICAgdmFyIGlzRXhwcmVzc2lvbjogQm9vbGVhbiA9IGZhbHNlLA0KKyAgICAgICAgdmFyIHZhbHVlTm9kZTogSnNvbk5vZGUsDQorICAgICAgICB2YXIgZXhwcmVzc2lvbk5vZGU6IE9iamVjdE5vZGU/ID0gbnVsbCwNCisgICAgICAgIHZhciBpbnB1dEV4cHJlc3Npb246IElucHV0RXhwcmVzc2lvbj8gPSBudWxsLA0KKyAgICAgICAgdmFyIHByb3BlcnR5RXhwcmVzc2lvbjogUHJvcGVydHlFeHByZXNzaW9uPyA9IG51bGwsDQorICAgICAgICB2YXIgYXR0cmlidXRlRXhwcmVzc2lvbjogQXR0cmlidXRlRXhwcmVzc2lvbj8gPSBudWxsLA0KKyAgICAgICAgdmFyIGFydGlmYWN0RXhwcmVzc2lvbjogQXJ0aWZhY3RFeHByZXNzaW9uPyA9IG51bGwsDQorICAgICAgICB2YXIgb3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbjogT3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbj8gPSBudWxsLA0KKyAgICAgICAgdmFyIGNvbW1hbmQ6IFN0cmluZz8gPSBudWxsDQorKQ0KKw0KK2RhdGEgY2xhc3MgSW5wdXRFeHByZXNzaW9uKA0KKyAgICAgICAgdmFyIHByb3BlcnR5TmFtZTogU3RyaW5nDQorKQ0KKw0KK2RhdGEgY2xhc3MgUHJvcGVydHlFeHByZXNzaW9uKA0KKyAgICAgICAgdmFyIG1vZGVsYWJsZUVudGl0eU5hbWU6IFN0cmluZyA9ICJTRUxGIiwNCisgICAgICAgIHZhciByZXFPckNhcEVudGl0eU5hbWU6IFN0cmluZz8gPSBudWxsLA0KKyAgICAgICAgdmFyIHByb3BlcnR5TmFtZTogU3RyaW5nLA0KKyAgICAgICAgdmFyIHN1YlByb3BlcnR5TmFtZTogU3RyaW5nPyAgPSBudWxsDQorKQ0KKw0KK2RhdGEgY2xhc3MgQXR0cmlidXRlRXhwcmVzc2lvbigNCisgICAgICAgIHZhciBtb2RlbGFibGVFbnRpdHlOYW1lOiBTdHJpbmcgPSAiU0VMRiIsDQorICAgICAgICB2YXIgcmVxT3JDYXBFbnRpdHlOYW1lOiBTdHJpbmc/ID0gbnVsbCwNCisgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lOiBTdHJpbmcsDQorICAgICAgICB2YXIgc3ViQXR0cmlidXRlTmFtZTogU3RyaW5nPyA9IG51bGwNCispDQorDQorZGF0YSBjbGFzcyBBcnRpZmFjdEV4cHJlc3Npb24oDQorICAgICAgICB2YWwgbW9kZWxhYmxlRW50aXR5TmFtZTogU3RyaW5nID0gIlNFTEYiLA0KKyAgICAgICAgdmFsIGFydGlmYWN0TmFtZTogU3RyaW5nLA0KKyAgICAgICAgdmFsIGxvY2F0aW9uOiBTdHJpbmc/ID0gICJMT0NBTF9GSUxFIiwNCisgICAgICAgIHZhbCByZW1vdmU6IEJvb2xlYW4/ID0gZmFsc2UNCispDQorDQorZGF0YSBjbGFzcyBPcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uKA0KKyAgICAgICAgdmFsIG1vZGVsYWJsZUVudGl0eU5hbWU6IFN0cmluZyA9ICJTRUxGIiwNCisgICAgICAgIHZhbCBpbnRlcmZhY2VOYW1lOiBTdHJpbmcsDQorICAgICAgICB2YWwgb3BlcmF0aW9uTmFtZTogU3RyaW5nLA0KKyAgICAgICAgdmFsIHByb3BlcnR5TmFtZTogU3RyaW5nDQorKQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2RhdGEvQmx1ZVByaW50TW9kZWwua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9kYXRhL0JsdWVQcmludE1vZGVsLmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNjc3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9kYXRhL0JsdWVQcmludE1vZGVsLmt0CkBAIC0wLDAgKzEsNjA0IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YQ0KKw0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uSWdub3JlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25Qcm9wZXJ0eQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQuSnNvbk5vZGUNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvcGVuIGNsYXNzIEVudGl0eVR5cGUgew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIHZhciB2ZXJzaW9uOiBTdHJpbmcgPSAiMS4wLjAiDQorICAgIHZhciBtZXRhZGF0YTogTXV0YWJsZU1hcDxTdHJpbmcsIFN0cmluZz4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZGVyaXZlZF9mcm9tIikNCisgICAgbGF0ZWluaXQgdmFyIGRlcml2ZWRGcm9tOiBTdHJpbmcNCisgICAgdmFyIGF0dHJpYnV0ZXM6IE11dGFibGVNYXA8U3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uPj8gPSBudWxsDQorICAgIHZhciBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gPSBudWxsDQorfQ0KKw0KKy8qDQorIDUuMy4yIHRvc2NhLmRhdGF0eXBlcy5vcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5DcmVkZW50aWFsDQorIFRoZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5DcmVkZW50aWFsIHR5cGUgaXMgYSBjb21wbGV4IFRPU0NBIGRhdGEgVHlwZSB1c2VkIHdoZW4gZGVzY3JpYmluZw0KKyBhdXRob3JpemF0aW9uIGNyZWRlbnRpYWxzIHVzZWQgdG8gYWNjZXNzIG5ldHdvcmsgYWNjZXNzaWJsZSByZXNvdXJjZXMuDQorICovDQorY2xhc3MgQ3JlZGVudGlhbCB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBwcm90b2NvbDogU3RyaW5nPyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoInRva2VuX3R5cGUiKQ0KKyAgICBsYXRlaW5pdCB2YXIgdG9rZW5UeXBlOiBTdHJpbmcNCisgICAgbGF0ZWluaXQgdmFyIHRva2VuOiBTdHJpbmcNCisgICAgdmFyIGtleXM6IE11dGFibGVNYXA8U3RyaW5nLCBTdHJpbmc+PyA9IG51bGwNCisgICAgbGF0ZWluaXQgdmFyIHVzZXI6IFN0cmluZw0KK30NCisNCisvKg0KKzMuNS4yIENvbnN0cmFpbnQgY2xhdXNlDQorQSBjb25zdHJhaW50IGNsYXVzZSBkZWZpbmVzIGFuIG9wZXJhdGlvbiBhbG9uZyB3aXRoIG9uZSBvciBtb3JlIGNvbXBhdGlibGUgdmFsdWVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgY29uc3RyYWludCBvbiBhIHByb3BlcnR5IG9yIHBhcmFtZXRlcuKAmXMgYWxsb3dlZCB2YWx1ZXMgd2hlbiBpdCBpcyBkZWZpbmVkIGluIGEgVE9TQ0EgU2VydmljZSBUZW1wbGF0ZSBvciBvbmUgb2YgaXRzIGVudGl0aWVzLg0KKyAqLw0KK2NsYXNzIENvbnN0cmFpbnRDbGF1c2Ugew0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZXF1YWwiKQ0KKyAgICB2YXIgZXF1YWw6IEFueT8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJncmVhdGVyX3RoYW4iKQ0KKyAgICB2YXIgZ3JlYXRlclRoYW46IEFueT8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJncmVhdGVyX29yX2VxdWFsIikNCisgICAgdmFyIGdyZWF0ZXJPckVxdWFsOiBBbnk/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibGVzc190aGFuIikNCisgICAgdmFyIGxlc3NUaGFuOiBBbnk/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibGVzc19vcl9lcXVhbCIpDQorICAgIHZhciBsZXNzT3JFcXVhbDogQW55PyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoImluX3JhbmdlIikNCisgICAgdmFyIGluUmFuZ2U6IEFueT8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJ2YWxpZF92YWx1ZXMiKQ0KKyAgICB2YXIgdmFsaWRWYWx1ZXM6IE11dGFibGVMaXN0PEFueT4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibGVuZ3RoIikNCisgICAgdmFyIGxlbmd0aDogQW55PyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoIm1pbl9sZW5ndGgiKQ0KKyAgICB2YXIgbWluTGVuZ3RoOiBBbnk/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibWF4X2xlbmd0aCIpDQorICAgIHZhciBtYXhMZW5ndGg6IEFueT8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJwYXR0ZXJuIikNCisgICAgdmFyIHBhdHRlcm46IFN0cmluZz8gPSBudWxsDQorfQ0KKw0KKy8qDQorMy41LjQgTm9kZSBGaWx0ZXIgZGVmaW5pdGlvbg0KK0Egbm9kZSBmaWx0ZXIgZGVmaW5pdGlvbiBkZWZpbmVzIGNyaXRlcmlhIGZvciBzZWxlY3Rpb24gb2YgYSBUT1NDQSBOb2RlIFRlbXBsYXRlIGJhc2VkIHVwb24gdGhlIHRlbXBsYXRl4oCZcyBwcm9wZXJ0eSB2YWx1ZXMsIGNhcGFiaWxpdGllcyBhbmQgY2FwYWJpbGl0eSBwcm9wZXJ0aWVzLg0KKyAqLw0KKw0KK2NsYXNzIE5vZGVGaWx0ZXJEZWZpbml0aW9uIHsNCisgICAgdmFyIHByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIGNhcGFiaWxpdGllcyA6IE11dGFibGVMaXN0PFN0cmluZz4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNS41IFJlcG9zaXRvcnkgZGVmaW5pdGlvbg0KKyBBIHJlcG9zaXRvcnkgZGVmaW5pdGlvbiBkZWZpbmVzIGEgbmFtZWQgZXh0ZXJuYWwgcmVwb3NpdG9yeSB3aGljaCBjb250YWlucyBkZXBsb3ltZW50DQorIGFuZCBpbXBsZW1lbnRhdGlvbiBhcnRpZmFjdHMgdGhhdCBhcmUgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIFRPU0NBIFNlcnZpY2UgVGVtcGxhdGUuDQorKi8NCitjbGFzcyBSZXBvc2l0b3J5RGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgbGF0ZWluaXQgdmFyIHVybDogU3RyaW5nDQorICAgIHZhciBjcmVkZW50aWFsOiBDcmVkZW50aWFsPyA9IG51bGwNCit9DQorDQorDQorLyoNCiszLjUuNiBBcnRpZmFjdCBkZWZpbml0aW9uDQorQW4gYXJ0aWZhY3QgZGVmaW5pdGlvbiBkZWZpbmVzIGEgbmFtZWQsIHR5cGVkIGZpbGUgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIE5vZGUgVHlwZQ0KK29yIE5vZGUgVGVtcGxhdGUgYW5kIHVzZWQgYnkgb3JjaGVzdHJhdGlvbiBlbmdpbmUgdG8gZmFjaWxpdGF0ZSBkZXBsb3ltZW50IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBpbnRlcmZhY2Ugb3BlcmF0aW9ucy4NCisgKi8NCitjbGFzcyBBcnRpZmFjdERlZmluaXRpb24gew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgdHlwZTogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGZpbGU6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciByZXBvc2l0b3J5OiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJkZXBsb3lfUGF0aCIpDQorICAgIHZhciBkZXBsb3lQYXRoOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgcHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIEpzb25Ob2RlPj8gPSBudWxsDQorICAgIHZhciBjb250ZW50OiBTdHJpbmc/ID0gbnVsbA0KKyAgICBARGVwcmVjYXRlZCgiTWFwcGluZyBjb250ZW50IGlzIGRlZmluZSBieSB0aGUgVHlwZSIpDQorICAgIHZhciBtYXBwaW5nQ29udGVudDogU3RyaW5nPyA9IG51bGwNCit9DQorDQorDQorLyoNCiszLjUuNyBJbXBvcnQgZGVmaW5pdGlvbg0KK0FuIGltcG9ydCBkZWZpbml0aW9uIGlzIHVzZWQgd2l0aGluIGEgVE9TQ0EgU2VydmljZSBUZW1wbGF0ZSB0byBsb2NhdGUgYW5kIHVuaXF1ZWx5IG5hbWUNCithbm90aGVyIFRPU0NBIFNlcnZpY2UgVGVtcGxhdGUgZmlsZSB3aGljaCBoYXMgdHlwZSBhbmQgdGVtcGxhdGUgZGVmaW5pdGlvbnMgdG8gYmUgaW1wb3J0ZWQgKGluY2x1ZGVkKQ0KK2FuZCByZWZlcmVuY2VkIHdpdGhpbiBhbm90aGVyIFNlcnZpY2UgVGVtcGxhdGUuDQorICovDQorY2xhc3MgSW1wb3J0RGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIGxhdGVpbml0IHZhciBmaWxlOiBTdHJpbmcNCisgICAgdmFyIHJlcG9zaXRvcnk6IFN0cmluZz8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJuYW1lc3BhY2VfdXJpIikNCisgICAgdmFyIG5hbWVzcGFjZVVyaTogU3RyaW5nPyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoIm5hbWVzcGFjZV9wcmVmaXgiKQ0KKyAgICB2YXIgbmFtZXNwYWNlUHJlZml4OiBTdHJpbmc/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNS44IFByb3BlcnR5IGRlZmluaXRpb24gQSBwcm9wZXJ0eSBkZWZpbml0aW9uIGRlZmluZXMgYSBuYW1lZCwgdHlwZWQgdmFsdWUgYW5kIHJlbGF0ZWQgZGF0YSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4NCitlbnRpdHkgZGVmaW5lZCBpbiB0aGlzIHNwZWNpZmljYXRpb24gKGUuZy4sIE5vZGUgVHlwZXMsIFJlbGF0aW9uc2hpcCBUeXBlcywgQ2FwYWJpbGl0eSBUeXBlcywgZXRjLikuDQorUHJvcGVydGllcyBhcmUgdXNlZCBieSB0ZW1wbGF0ZSBhdXRob3JzIHRvIHByb3ZpZGUgaW5wdXQgdmFsdWVzIHRvIFRPU0NBIGVudGl0aWVzIHdoaWNoIGluZGljYXRlIHRoZWlyIOKAnGRlc2lyZWQgc3RhdGXigJ0gd2hlbiB0aGV5IGFyZQ0KK2luc3RhbnRpYXRlZC4gVGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUgZ2V0X3Byb3BlcnR5IGZ1bmN0aW9uIHdpdGhpbiBUT1NDQSBTZXJ2aWNlIFRlbXBsYXRlcy4NCisgKi8NCitjbGFzcyBQcm9wZXJ0eURlZmluaXRpb24gew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIHZhciByZXF1aXJlZDogQm9vbGVhbj8gPSBudWxsDQorICAgIHZhciB0eXBlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZGVmYXVsdCIpDQorICAgIHZhciBkZWZhdWx0VmFsdWU6IEFueT8gPSBudWxsDQorICAgIHZhciBzdGF0dXM6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBjb25zdHJhaW50czogTXV0YWJsZUxpc3Q8Q29uc3RyYWludENsYXVzZT4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZW50cnlfc2NoZW1hIikNCisgICAgdmFyIGVudHJ5U2NoZW1hOiBFbnRyeVNjaGVtYT8gPSBudWxsDQorICAgIHZhciB2YWx1ZTogQW55PyA9IG51bGwNCit9DQorDQorDQorLyoNCiszLjUuMTAgQXR0cmlidXRlIGRlZmluaXRpb24NCisNCitBbiBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBkZWZpbmVzIGEgbmFtZWQsIHR5cGVkIHZhbHVlIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBlbnRpdHkgZGVmaW5lZCBpbiB0aGlzDQorc3BlY2lmaWNhdGlvbiAoZS5nLiwgYSBOb2RlLCBSZWxhdGlvbnNoaXAgb3IgQ2FwYWJpbGl0eSBUeXBlKS4gIFNwZWNpZmljYWxseSwgaXQgaXMgdXNlZCB0byBleHBvc2UgdGhlDQor4oCcYWN0dWFsIHN0YXRl4oCdIG9mIHNvbWUgcHJvcGVydHkgb2YgYSBUT1NDQSBlbnRpdHkgYWZ0ZXIgaXQgaGFzIGJlZW4gZGVwbG95ZWQgYW5kIGluc3RhbnRpYXRlZA0KKyhhcyBzZXQgYnkgdGhlIFRPU0NBIG9yY2hlc3RyYXRvcikuIEF0dHJpYnV0ZSB2YWx1ZXMgY2FuIGJlIHJldHJpZXZlZCB2aWEgdGhlIGdldF9hdHRyaWJ1dGUgZnVuY3Rpb24NCitmcm9tIHRoZSBpbnN0YW5jZSBtb2RlbCBhbmQgdXNlZCBhcyB2YWx1ZXMgdG8gb3RoZXIgZW50aXRpZXMgd2l0aGluIFRPU0NBIFNlcnZpY2UgVGVtcGxhdGVzLg0KKyAqLw0KKw0KK2NsYXNzIEF0dHJpYnV0ZURlZmluaXRpb24gew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIGxhdGVpbml0IHZhciB0eXBlOiBTdHJpbmcNCisgICAgQEpzb25Qcm9wZXJ0eSgiZGVmYXVsdCIpDQorICAgIHZhciBfZGVmYXVsdDogQW55PyA9IG51bGwNCisgICAgdmFyIHN0YXR1czogU3RyaW5nPyA9IG51bGwNCisgICAgQEpzb25Qcm9wZXJ0eSgiZW50cnlfc2NoZW1hIikNCisgICAgdmFyIGVudHJ5X3NjaGVtYTogU3RyaW5nPyA9IG51bGwNCit9DQorDQorLyoNCiszLjUuMTMgT3BlcmF0aW9uIGRlZmluaXRpb24NCitBbiBvcGVyYXRpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbmFtZWQgZnVuY3Rpb24gb3IgcHJvY2VkdXJlIHRoYXQgY2FuIGJlIGJvdW5kIHRvIGFuIGltcGxlbWVudGF0aW9uIGFydGlmYWN0IChlLmcuLCBhIHNjcmlwdCkuDQorICovDQorY2xhc3MgT3BlcmF0aW9uRGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGltcGxlbWVudGF0aW9uOiBJbXBsZW1lbnRhdGlvbj8gPSBudWxsDQorICAgIHZhciBpbnB1dHM6IE11dGFibGVNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIG91dHB1dHM6IE11dGFibGVNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+PyA9IG51bGwNCit9DQorDQorY2xhc3MgSW1wbGVtZW50YXRpb24gew0KKyAgICB2YXIgcHJpbWFyeTogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGRlcGVuZGVuY2llczogTXV0YWJsZUxpc3Q8U3RyaW5nPj8gPSBudWxsDQorfQ0KKw0KKy8qDQorMy41LjE0IEludGVyZmFjZSBkZWZpbml0aW9uDQorQW4gaW50ZXJmYWNlIGRlZmluaXRpb24gZGVmaW5lcyBhIG5hbWVkIGludGVyZmFjZSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBOb2RlIG9yIFJlbGF0aW9uc2hpcCBUeXBlDQorICovDQorY2xhc3MgSW50ZXJmYWNlRGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciB0eXBlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgb3BlcmF0aW9uczogTXV0YWJsZU1hcDxTdHJpbmcsIE9wZXJhdGlvbkRlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIGlucHV0czogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNS4xNSBFdmVudCBGaWx0ZXIgZGVmaW5pdGlvbg0KK0FuIGV2ZW50IGZpbHRlciBkZWZpbml0aW9uIGRlZmluZXMgY3JpdGVyaWEgZm9yIHNlbGVjdGlvbiBvZiBhbiBhdHRyaWJ1dGUsIGZvciB0aGUgcHVycG9zZSBvZiBtb25pdG9yaW5nIGl0LCB3aXRoaW4gYSBUT1NDQSBlbnRpdHksIG9yIG9uZSBpdHMgY2FwYWJpbGl0aWVzLg0KKyAqLw0KK2NsYXNzIEV2ZW50RmlsdGVyRGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIGxhdGVpbml0IHZhciBub2RlOiBTdHJpbmcNCisgICAgdmFyIHJlcXVpcmVtZW50OiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgY2FwYWJpbGl0eTogU3RyaW5nPyA9IG51bGwNCit9DQorDQorLyoNCiszLjUuMTYgVHJpZ2dlciBkZWZpbml0aW9uIFRPRE8NCitBIHRyaWdnZXIgZGVmaW5pdGlvbiBkZWZpbmVzIHRoZSBldmVudCwgY29uZGl0aW9uIGFuZCBhY3Rpb24gdGhhdCBpcyB1c2VkIHRvIOKAnHRyaWdnZXLigJ0gYSBwb2xpY3kgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLg0KKyAqLw0KK2NsYXNzIFRyaWdnZXJEZWZpbml0aW9uIHsNCisgICAgQGdldDpKc29uSWdub3JlDQorICAgIHZhciBpZDogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGRlc2NyaXB0aW9uOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZXZlbnRfdHlwZSIpDQorICAgIGxhdGVpbml0IHZhciBldmVudFR5cGU6IFN0cmluZw0KKyAgICBsYXRlaW5pdCB2YXIgYWN0aW9uOiBTdHJpbmcNCit9DQorDQorLyoNCisgICAgMy41LjE3IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLldvcmtmbG93IGFjdGl2aXR5IGRlZmluaXRpb24NCisgICAgQSB3b3JrZmxvdyBhY3Rpdml0eSBkZWZpbmVzIGFuIG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQgaW4gYSBUT1NDQSB3b3JrZmxvdy4gQWN0aXZpdGllcyBhbGxvd3MgdG86DQorICAgIMK3IERlbGVnYXRlIHRoZSB3b3JrZmxvdyBmb3IgYSBub2RlIGV4cGVjdGVkIHRvIGJlIHByb3ZpZGVkIAlieSB0aGUgb3JjaGVzdHJhdG9yDQorICAgIMK3IFNldCB0aGUgc3RhdGUgb2YgYSBub2RlDQorICAgIMK3IENhbGwgYW4gb3BlcmF0aW9uCWRlZmluZWQgb24gYSBUT1NDQSBpbnRlcmZhY2Ugb2YgYSBub2RlLCByZWxhdGlvbnNoaXAgb3IgZ3JvdXANCisgICAgwrcgSW5saW5lIGFub3RoZXIgd29ya2Zsb3cgZGVmaW5lZCBpbiB0aGUgdG9wb2xvZ3kgKHRvIGFsbG93IHJldXNhYmlsaXR5KQ0KKyAqLw0KK2NsYXNzIEFjdGl2aXR5IHsNCisgICAgdmFyIGRlbGVnYXRlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic2V0X3N0YXRlIikNCisgICAgdmFyIHNldFN0YXRlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiY2FsbF9vcGVyYXRpb24iKQ0KKyAgICB2YXIgY2FsbE9wZXJhdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGlubGluZXM6IEFycmF5TGlzdDxTdHJpbmc+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjUuMjAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuV29ya2Zsb3cgcHJlY29uZGl0aW9uIGRlZmluaXRpb24NCitBIHdvcmtmbG93IGNvbmRpdGlvbiBjYW4gYmUgdXNlZCBhcyBhIGZpbHRlciBvciBwcmVjb25kaXRpb24gdG8gY2hlY2sgaWYgYSB3b3JrZmxvdyBjYW4gYmUgcHJvY2Vzc2VkIG9yIG5vdCBiYXNlZCBvbiB0aGUgc3RhdGUgb2YgdGhlIGluc3RhbmNlcyBvZiBhIFRPU0NBIHRvcG9sb2d5IGRlcGxveW1lbnQuIFdoZW4gbm90IG1ldCwgdGhlIHdvcmtmbG93IHdpbGwgbm90IGJlIHRyaWdnZXJlZC4NCisgKi8NCitjbGFzcyBQcmVDb25kaXRpb25EZWZpbml0aW9uIHsNCisgICAgQGdldDpKc29uSWdub3JlDQorICAgIHZhciBpZDogU3RyaW5nPyA9IG51bGwNCisgICAgbGF0ZWluaXQgdmFyIHRhcmdldDogU3RyaW5nDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJ0YXJnZXRfcmVsYXRpb25zaGlwIikNCisgICAgbGF0ZWluaXQgdmFyIHRhcmdldFJlbGF0aW9uc2hpcDogU3RyaW5nDQorICAgIGxhdGVpbml0IHZhciBjb25kaXRpb246IEFycmF5TGlzdDxDb25kaXRpb25DbGF1c2U+DQorfQ0KKw0KKy8qDQorMy41LjIxIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLldvcmtmbG93IHN0ZXAgZGVmaW5pdGlvbg0KK0Egd29ya2Zsb3cgc3RlcCBhbGxvd3MgdG8gZGVmaW5lIG9uZSBvciBtdWx0aXBsZSBzZXF1ZW5jZWQgYWN0aXZpdGllcyBpbiBhIHdvcmtmbG93IGFuZCBob3cgdGhleSBhcmUgY29ubmVjdGVkIHRvIG90aGVyIHN0ZXBzIGluIHRoZSB3b3JrZmxvdy4gVGhleSBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBvZiBhIGRlY2xhcmF0aXZlIHdvcmtmbG93Lg0KKyAqLw0KK2NsYXNzIFN0ZXAgew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIHZhciB0YXJnZXQ6IFN0cmluZz8gPSBudWxsDQorICAgIEBKc29uUHJvcGVydHkoInRhcmdldF9yZWxhdGlvbnNoaXAiKQ0KKyAgICB2YXIgdGFyZ2V0UmVsYXRpb25zaGlwOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBASnNvblByb3BlcnR5KCJvcGVyYXRpb25faG9zdCIpDQorICAgIHZhciBvcGVyYXRpb25Ib3N0OiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgYWN0aXZpdGllczogQXJyYXlMaXN0PEFjdGl2aXR5Pj8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJvbl9zdWNjZXNzIikNCisgICAgdmFyIG9uU3VjY2VzczogQXJyYXlMaXN0PFN0cmluZz4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgib25fZmFpbHVyZSIpDQorICAgIHZhciBvbkZhaWx1cmU6IEFycmF5TGlzdDxTdHJpbmc+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjYuMiBDYXBhYmlsaXR5IGRlZmluaXRpb24NCitBIGNhcGFiaWxpdHkgZGVmaW5pdGlvbiBkZWZpbmVzIGEgbmFtZWQsIHR5cGVkIHNldCBvZiBkYXRhIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBOb2RlIFR5cGUgb3IgTm9kZSBUZW1wbGF0ZSB0byBkZXNjcmliZSBhIHRyYW5zcGFyZW50IGNhcGFiaWxpdHkgb3IgZmVhdHVyZSBvZiB0aGUgc29mdHdhcmUgY29tcG9uZW50IHRoZSBub2RlIGRlc2NyaWJlcy4NCisgKi8NCisNCitjbGFzcyBDYXBhYmlsaXR5RGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciB0eXBlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJ2YWxpZF9zb3VyY2VfdHlwZXMiKQ0KKyAgICB2YXIgdmFsaWRTb3VyY2VUeXBlczogTXV0YWJsZUxpc3Q8U3RyaW5nPj8gPSBudWxsDQorICAgIHZhciBvY2N1cnJlbmNlczogTXV0YWJsZUxpc3Q8QW55Pj8gPSBudWxsDQorfQ0KKw0KKy8qDQorMy42LjMgUmVxdWlyZW1lbnQgZGVmaW5pdGlvbg0KK1RoZSBSZXF1aXJlbWVudCBkZWZpbml0aW9uIGRlc2NyaWJlcyBhIG5hbWVkIHJlcXVpcmVtZW50IChkZXBlbmRlbmNpZXMpIG9mIGEgVE9TQ0EgTm9kZSBUeXBlIG9yIE5vZGUgdGVtcGxhdGUgd2hpY2ggbmVlZHMgdG8gYmUgZnVsZmlsbGVkIGJ5IGEgbWF0Y2hpbmcgQ2FwYWJpbGl0eSBkZWZpbml0aW9uIGRlY2xhcmVkIGJ5IGFub3RoZXIgVE9TQ0EgbW9kZWxhYmxlIGVudGl0eS4gIFRoZSByZXF1aXJlbWVudCBkZWZpbml0aW9uIG1heSBpdHNlbGYgaW5jbHVkZSB0aGUgc3BlY2lmaWMgbmFtZSBvZiB0aGUgZnVsZmlsbGluZyBlbnRpdHkgKGV4cGxpY2l0bHkpIG9yIHByb3ZpZGUgYW4gYWJzdHJhY3QgdHlwZSwgYWxvbmcgd2l0aCBhZGRpdGlvbmFsIGZpbHRlcmluZyBjaGFyYWN0ZXJpc3RpY3MsIHRoYXQgYSBUT1NDQSBvcmNoZXN0cmF0b3IgY2FuIHVzZSB0byBmdWxmaWxsIHRoZSBjYXBhYmlsaXR5IGF0IHJ1bnRpbWUgKGltcGxpY2l0bHkpLg0KKyAqLw0KK2NsYXNzIFJlcXVpcmVtZW50RGVmaW5pdGlvbiB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGNhcGFiaWxpdHk6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBub2RlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgcmVsYXRpb25zaGlwOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgb2NjdXJyZW5jZXM6IE11dGFibGVMaXN0PEFueT4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNi40IEFydGlmYWN0IFR5cGUNCitBbiBBcnRpZmFjdCBUeXBlIGlzIGEgcmV1c2FibGUgZW50aXR5IHRoYXQgZGVmaW5lcyB0aGUgdHlwZSBvZiBvbmUgb3IgbW9yZSBmaWxlcyB0aGF0IGFyZSB1c2VkIHRvIGRlZmluZSBpbXBsZW1lbnRhdGlvbiBvciBkZXBsb3ltZW50IGFydGlmYWN0cyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5vZGVzIG9yIHJlbGF0aW9uc2hpcHMgb24gdGhlaXIgb3BlcmF0aW9ucy4NCisgKi8NCitjbGFzcyBBcnRpZmFjdFR5cGUgOiBFbnRpdHlUeXBlKCkgew0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibWltZV90eXBlIikNCisgICAgdmFyIG1pbWVUeXBlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZmlsZV9leHQiKQ0KKyAgICB2YXIgZmlsZUV4dDogTXV0YWJsZUxpc3Q8U3RyaW5nPj8gPSBudWxsDQorDQorfQ0KKw0KKy8qDQorMy42LjYgRGF0YSBUeXBlDQorQSBEYXRhIFR5cGUgZGVmaW5pdGlvbiBkZWZpbmVzIHRoZSBzY2hlbWEgZm9yIG5ldyBuYW1lZCBkYXRhdHlwZXMgaW4gVE9TQ0EuDQorICovDQorDQorY2xhc3MgRGF0YVR5cGUgOiBFbnRpdHlUeXBlKCl7DQorICAgIHZhciBjb25zdHJhaW50czogTXV0YWJsZUxpc3Q8TXV0YWJsZU1hcDxTdHJpbmcsIEFueT4+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjYuOSBOb2RlIFR5cGUNCitBIE5vZGUgVHlwZSBpcyBhIHJldXNhYmxlIGVudGl0eSB0aGF0IGRlZmluZXMgdGhlIHR5cGUgb2Ygb25lIG9yIG1vcmUgTm9kZSBUZW1wbGF0ZXMuIEFzIHN1Y2gsIGEgTm9kZSBUeXBlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBvYnNlcnZhYmxlIHByb3BlcnRpZXMgdmlhIGEgUHJvcGVydGllcyBEZWZpbml0aW9uLCB0aGUgUmVxdWlyZW1lbnRzIGFuZCBDYXBhYmlsaXRpZXMgb2YgdGhlIG5vZGUgYXMgd2VsbCBhcyBpdHMgc3VwcG9ydGVkIGludGVyZmFjZXMuDQorDQorICovDQorDQorY2xhc3MgTm9kZVR5cGUgOiBFbnRpdHlUeXBlKCkgew0KKyAgICB2YXIgY2FwYWJpbGl0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgQ2FwYWJpbGl0eURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIHJlcXVpcmVtZW50czogTXV0YWJsZU1hcDxTdHJpbmcsIFJlcXVpcmVtZW50RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICB2YXIgaW50ZXJmYWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEludGVyZmFjZURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIGFydGlmYWN0czogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0RGVmaW5pdGlvbj4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNi44IFJlcXVpcmVtZW50IFR5cGUNCitBIFJlcXVpcmVtZW50IFR5cGUgaXMgYSByZXVzYWJsZSBlbnRpdHkgdGhhdCBkZXNjcmliZXMgYSBraW5kIG9mIHJlcXVpcmVtZW50IHRoYXQgYSBOb2RlIFR5cGUgY2FuIGRlY2xhcmUgdG8gZXhwb3NlLiAgVGhlIFRPU0NBIFNpbXBsZSBQcm9maWxlIHNlZWtzIHRvIHNpbXBsaWZ5IHRoZSBuZWVkIGZvciBkZWNsYXJpbmcgc3BlY2lmaWMgUmVxdWlyZW1lbnQgVHlwZXMgZnJvbSBub2RlcyBhbmQgaW5zdGVhZCByZWx5IHVwb24gbm9kZXMgZGVjbGFyaW5nIHRoZWlyIGZlYXR1cmVzIHNldHMgdXNpbmcgVE9TQ0EgQ2FwYWJpbGl0eSBUeXBlcyBhbG9uZyB3aXRoIGEgbmFtZWQgRmVhdHVyZSBub3RhdGlvbi4NCisgKi8NCisNCitjbGFzcyBSZXF1aXJlbWVudFR5cGUgOiBFbnRpdHlUeXBlKCkgew0KKyAgICB2YXIgcmVxdWlyZW1lbnRzOiBNdXRhYmxlTWFwPFN0cmluZywgUmVxdWlyZW1lbnREZWZpbml0aW9uPj8gPSBudWxsDQorICAgIHZhciBjYXBhYmlsaXRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBDYXBhYmlsaXR5RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICB2YXIgaW50ZXJmYWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEludGVyZmFjZURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIGFydGlmYWN0czogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0RGVmaW5pdGlvbj4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNi4xMCBSZWxhdGlvbnNoaXAgVHlwZQ0KK0EgUmVsYXRpb25zaGlwIFR5cGUgaXMgYSByZXVzYWJsZSBlbnRpdHkgdGhhdCBkZWZpbmVzIHRoZSB0eXBlIG9mIG9uZSBvciBtb3JlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBOb2RlIFR5cGVzIG9yIE5vZGUgVGVtcGxhdGVzLg0KKyovDQorDQorY2xhc3MgUmVsYXRpb25zaGlwVHlwZSA6IEVudGl0eVR5cGUoKSB7DQorICAgIHZhciBpbnRlcmZhY2VzOiBNdXRhYmxlTWFwPFN0cmluZywgSW50ZXJmYWNlRGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgidmFsaWRfdGFyZ2V0X3R5cGVzIikNCisgICAgdmFyIHZhbGlkVGFyZ2V0VHlwZXM6IEFycmF5TGlzdDxTdHJpbmc+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjYuMTEgR3JvdXAgVHlwZQ0KK0EgR3JvdXAgVHlwZSBkZWZpbmVzIGxvZ2ljYWwgZ3JvdXBpbmcgdHlwZXMgZm9yIG5vZGVzLCB0eXBpY2FsbHkgZm9yIGRpZmZlcmVudCBtYW5hZ2VtZW50IHB1cnBvc2VzLg0KK0dyb3VwcyBjYW4gZWZmZWN0aXZlbHkgYmUgdmlld2VkIGFzIGxvZ2ljYWwgbm9kZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIHBoeXNpY2FsIGRlcGxveW1lbnQgdG9wb2xvZ3kNCisgb2YgYW4gYXBwbGljYXRpb24sIHlldCBjYW4gaGF2ZSBjYXBhYmlsaXRpZXMgYW5kIHRoZSBhYmlsaXR5IHRvIGF0dGFjaCBwb2xpY2llcyBhbmQgaW50ZXJmYWNlcw0KKyB0aGF0IGNhbiBiZSBhcHBsaWVkIChkZXBlbmRpbmcgb24gdGhlIGdyb3VwIHR5cGUpIHRvIGl0cyBtZW1iZXIgbm9kZXMuDQorICovDQorDQorY2xhc3MgR3JvdXBUeXBlIDogRW50aXR5VHlwZSgpIHsNCisgICAgdmFyIG1lbWJlcnM6IE11dGFibGVMaXN0PFN0cmluZz4/ID0gbnVsbA0KKyAgICB2YXIgcmVxdWlyZW1lbnRzOiBBcnJheUxpc3Q8UmVxdWlyZW1lbnREZWZpbml0aW9uPj8gPSBudWxsDQorICAgIHZhciBjYXBhYmlsaXRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBDYXBhYmlsaXR5RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICB2YXIgaW50ZXJmYWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEludGVyZmFjZURlZmluaXRpb24+PyA9IG51bGwNCisNCit9DQorDQorLyoNCisgICAgMy42LjEyIFBvbGljeSBUeXBlDQorICAgIEEgUG9saWN5IFR5cGUgZGVmaW5lcyBhIHR5cGUgb2YgcmVxdWlyZW1lbnQgdGhhdCBhZmZlY3RzIG9yIGdvdmVybnMgYW4gYXBwbGljYXRpb24gb3Igc2VydmljZeKAmXMNCisgICAgdG9wb2xvZ3kgYXQgc29tZSBzdGFnZSBvZiBpdHMgbGlmZWN5Y2xlLCBidXQgaXMgbm90IGV4cGxpY2l0bHkgcGFydCBvZiB0aGUgdG9wb2xvZ3kgaXRzZWxmDQorICAgIChpLmUuLCBpdCBkb2VzIG5vdCBwcmV2ZW50IHRoZSBhcHBsaWNhdGlvbiBvciBzZXJ2aWNlIGZyb20gYmVpbmcgZGVwbG95ZWQgb3IgcnVuIGlmIGl0IGRpZCBub3QgZXhpc3QpLg0KKyAqLw0KK2NsYXNzIFBvbGljeVR5cGUgOiBFbnRpdHlUeXBlKCl7DQorICAgIGxhdGVpbml0IHZhciB0YXJnZXRzOiBNdXRhYmxlTGlzdDxTdHJpbmc+DQorfQ0KKw0KKy8qDQorMy43LjEgQ2FwYWJpbGl0eSBhc3NpZ25tZW50DQorQSBjYXBhYmlsaXR5IGFzc2lnbm1lbnQgYWxsb3dzIG5vZGUgdGVtcGxhdGUgYXV0aG9ycyB0byBhc3NpZ24gdmFsdWVzIHRvIHByb3BlcnRpZXMgYW5kIGF0dHJpYnV0ZXMgZm9yIGEgbmFtZWQgY2FwYWJpbGl0eSBkZWZpbml0aW9uIHRoYXQgaXMgcGFydCBvZiBhIE5vZGUgVGVtcGxhdGXigJlzIHR5cGUgZGVmaW5pdGlvbi4NCisgKi8NCitjbGFzcyBDYXBhYmlsaXR5QXNzaWdubWVudCB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBhdHRyaWJ1dGVzOiBNdXRhYmxlTWFwPFN0cmluZywgSnNvbk5vZGU+PyA9IG51bGwNCisgICAgdmFyIHByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBKc29uTm9kZT4/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNy40IFJlbGF0aW9uc2hpcCBUZW1wbGF0ZQ0KK0EgUmVsYXRpb25zaGlwIFRlbXBsYXRlIHNwZWNpZmllcyB0aGUgb2NjdXJyZW5jZSBvZiBhIG1hbmFnZWFibGUgcmVsYXRpb25zaGlwIGJldHdlZW4gbm9kZSB0ZW1wbGF0ZXMgYXMgcGFydCBvZiBhbiBhcHBsaWNhdGlvbuKAmXMgdG9wb2xvZ3kgbW9kZWwgdGhhdCBpcyBkZWZpbmVkIGluIGEgVE9TQ0EgU2VydmljZSBUZW1wbGF0ZS4gIEEgUmVsYXRpb25zaGlwIHRlbXBsYXRlIGlzIGFuIGluc3RhbmNlIG9mIGEgc3BlY2lmaWVkIFJlbGF0aW9uc2hpcCBUeXBlIGFuZCBjYW4gcHJvdmlkZSBjdXN0b21pemVkIHByb3BlcnRpZXMsIGNvbnN0cmFpbnRzIG9yIG9wZXJhdGlvbnMgd2hpY2ggb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHByb3ZpZGVkIGJ5IGl0cyBSZWxhdGlvbnNoaXAgVHlwZSBhbmQgaXRzIGltcGxlbWVudGF0aW9ucy4NCisgKi8NCitjbGFzcyBHcm91cERlZmluaXRpb24gew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBsYXRlaW5pdCB2YXIgdHlwZTogU3RyaW5nDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIG1ldGFkYXRhIDogTXV0YWJsZU1hcDxTdHJpbmcsIFN0cmluZz4/ID0gbnVsbA0KKyAgICB2YXIgcHJvcGVydGllcyA6IE11dGFibGVNYXA8U3RyaW5nLCBKc29uTm9kZT4/ID0gbnVsbA0KKyAgICB2YXIgbWVtYmVycyA9IEFycmF5TGlzdDxTdHJpbmc+KCkNCisgICAgdmFyIGludGVyZmFjZXMgOiBNdXRhYmxlTWFwPFN0cmluZywgSW50ZXJmYWNlRGVmaW5pdGlvbj4/PSBudWxsDQorfQ0KKw0KKy8qDQorMy43LjYgUG9saWN5IGRlZmluaXRpb24NCitBIHBvbGljeSBkZWZpbml0aW9uIGRlZmluZXMgYSBwb2xpY3kgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgVE9TQ0EgdG9wb2xvZ3kgb3IgdG9wLWxldmVsIGVudGl0eSBkZWZpbml0aW9uIChlLmcuLCBncm91cCBkZWZpbml0aW9uLCBub2RlIHRlbXBsYXRlLCBldGMuKS4NCisgKi8NCitjbGFzcyBQb2xpY3lEZWZpbml0aW9uIHsNCisgICAgQGdldDpKc29uSWdub3JlDQorICAgIHZhciBpZDogU3RyaW5nPyA9IG51bGwNCisgICAgbGF0ZWluaXQgdmFyIHR5cGU6IFN0cmluZw0KKyAgICB2YXIgZGVzY3JpcHRpb246IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBtZXRhZGF0YTogTXV0YWJsZU1hcDxTdHJpbmcsIFN0cmluZz4/ID0gbnVsbA0KKyAgICB2YXIgcHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIEpzb25Ob2RlPj8gPSBudWxsDQorICAgIHZhciB0YXJnZXRzOiBNdXRhYmxlTGlzdDxTdHJpbmc+PyA9IG51bGwNCit9DQorDQorDQorLyoNCiszLjggVG9wb2xvZ3kgVGVtcGxhdGUgZGVmaW5pdGlvbg0KK1RoaXMgc2VjdGlvbiBkZWZpbmVzIHRoZSB0b3BvbG9neSB0ZW1wbGF0ZSBvZiBhIGNsb3VkIGFwcGxpY2F0aW9uLiBUaGUgbWFpbiBpbmdyZWRpZW50cyBvZiB0aGUgdG9wb2xvZ3kgdGVtcGxhdGUgYXJlIG5vZGUgdGVtcGxhdGVzIHJlcHJlc2VudGluZyBjb21wb25lbnRzIG9mIHRoZSBhcHBsaWNhdGlvbiBhbmQgcmVsYXRpb25zaGlwIHRlbXBsYXRlcyByZXByZXNlbnRpbmcgbGlua3MgYmV0d2VlbiB0aGUgY29tcG9uZW50cy4gVGhlc2UgZWxlbWVudHMgYXJlIGRlZmluZWQgaW4gdGhlIG5lc3RlZCBub2RlX3RlbXBsYXRlcyBzZWN0aW9uIGFuZCB0aGUgbmVzdGVkIHJlbGF0aW9uc2hpcF90ZW1wbGF0ZXMgc2VjdGlvbnMsIHJlc3BlY3RpdmVseS4gIEZ1cnRoZXJtb3JlLCBhIHRvcG9sb2d5IHRlbXBsYXRlIGFsbG93cyBmb3IgZGVmaW5pbmcgaW5wdXQgcGFyYW1ldGVycywgb3V0cHV0IHBhcmFtZXRlcnMgYXMgd2VsbCBhcyBncm91cGluZyBvZiBub2RlIHRlbXBsYXRlcy4NCisgKi8NCitjbGFzcyBUb3BvbG9neVRlbXBsYXRlIHsNCisgICAgQGdldDpKc29uSWdub3JlDQorICAgIHZhciBpZDogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGRlc2NyaXB0aW9uOiBTdHJpbmc/ID0gbnVsbA0KKyAgICB2YXIgaW5wdXRzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJub2RlX3RlbXBsYXRlcyIpDQorICAgIHZhciBub2RlVGVtcGxhdGVzOiBNdXRhYmxlTWFwPFN0cmluZywgTm9kZVRlbXBsYXRlPj8gPSBudWxsDQorICAgIEBnZXQ6SnNvblByb3BlcnR5KCJyZWxhdGlvbnNoaXBfdGVtcGxhdGVzIikNCisgICAgdmFyIHJlbGF0aW9uc2hpcFRlbXBsYXRlczogTXV0YWJsZU1hcDxTdHJpbmcsIFJlbGF0aW9uc2hpcFRlbXBsYXRlPj8gPSBudWxsDQorICAgIHZhciBwb2xpY2llczogTXV0YWJsZU1hcDxTdHJpbmcsIFBvbGljeURlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIG91dHB1dHM6IE11dGFibGVNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+PyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoInN1YnN0aXR1dGlvbl9tYXBwaW5ncyIpDQorICAgIHZhciBzdWJzdGl0dXRpb25NYXBwaW5nczogQW55PyA9IG51bGwNCisgICAgdmFyIHdvcmtmbG93czogTXV0YWJsZU1hcDxTdHJpbmcsIFdvcmtmbG93Pj8gPSBudWxsDQorfQ0KKw0KK2NsYXNzIFN1YnN0aXR1dGlvbk1hcHBpbmcgew0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibm9kZV90eXBlIikNCisgICAgbGF0ZWluaXQgdmFyIG5vZGVUeXBlOiBTdHJpbmcNCisgICAgbGF0ZWluaXQgdmFyIGNhcGFiaWxpdGllczogQXJyYXlMaXN0PFN0cmluZz4NCisgICAgbGF0ZWluaXQgdmFyIHJlcXVpcmVtZW50czogQXJyYXlMaXN0PFN0cmluZz4NCit9DQorDQorY2xhc3MgRW50cnlTY2hlbWEgew0KKyAgICBsYXRlaW5pdCB2YXIgdHlwZTogU3RyaW5nDQorICAgIHZhciBjb25zdHJhaW50czogTXV0YWJsZUxpc3Q8TXV0YWJsZU1hcDxTdHJpbmcsIEFueT4+PyA9IG51bGwNCit9DQorDQorY2xhc3MgSW50ZXJmYWNlQXNzaWdubWVudCB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBvcGVyYXRpb25zOiBNdXRhYmxlTWFwPFN0cmluZywgT3BlcmF0aW9uQXNzaWdubWVudD4/ID0gbnVsbA0KKyAgICB2YXIgaW5wdXRzOiBNdXRhYmxlTWFwPFN0cmluZywgSnNvbk5vZGU+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjcuMyBOb2RlIFRlbXBsYXRlDQorQSBOb2RlIFRlbXBsYXRlIHNwZWNpZmllcyB0aGUgb2NjdXJyZW5jZSBvZiBhIG1hbmFnZWFibGUgc29mdHdhcmUgY29tcG9uZW50IGFzIHBhcnQgb2YgYW4gYXBwbGljYXRpb27igJlzIHRvcG9sb2d5IG1vZGVsIHdoaWNoIGlzIGRlZmluZWQgaW4gYSBUT1NDQSBTZXJ2aWNlIFRlbXBsYXRlLiAgQSBOb2RlIHRlbXBsYXRlIGlzIGFuIGluc3RhbmNlIG9mIGEgc3BlY2lmaWVkIE5vZGUgVHlwZSBhbmQgY2FuIHByb3ZpZGUgY3VzdG9taXplZCBwcm9wZXJ0aWVzLCBjb25zdHJhaW50cyBvciBvcGVyYXRpb25zIHdoaWNoIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyBwcm92aWRlZCBieSBpdHMgTm9kZSBUeXBlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zLg0KKyAqLw0KKw0KK2NsYXNzIE5vZGVUZW1wbGF0ZSB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgbGF0ZWluaXQgdmFyIHR5cGU6IFN0cmluZw0KKyAgICB2YXIgbWV0YWRhdGE6IE11dGFibGVNYXA8U3RyaW5nLCBTdHJpbmc+PyA9IG51bGwNCisgICAgdmFyIGRpcmVjdGl2ZXM6IE11dGFibGVMaXN0PFN0cmluZz4/ID0gbnVsbA0KKyAgICAvL0BnZXQ6SnNvblNlcmlhbGl6ZSh1c2luZyA9IFByb3BlcnR5RGVmaW5pdGlvblZhbHVlU2VyaWFsaXplcjo6Y2xhc3MpDQorICAgIHZhciBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgSnNvbk5vZGU+PyA9IG51bGwNCisgICAgdmFyIGF0dHJpYnV0ZXM6IE11dGFibGVNYXA8U3RyaW5nLCBKc29uTm9kZT4/ID0gbnVsbA0KKyAgICB2YXIgY2FwYWJpbGl0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgQ2FwYWJpbGl0eUFzc2lnbm1lbnQ+PyA9IG51bGwNCisgICAgdmFyIHJlcXVpcmVtZW50czogTXV0YWJsZU1hcDxTdHJpbmcsIFJlcXVpcmVtZW50QXNzaWdubWVudD4/ID0gbnVsbA0KKyAgICB2YXIgaW50ZXJmYWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEludGVyZmFjZUFzc2lnbm1lbnQ+PyA9IG51bGwNCisgICAgdmFyIGFydGlmYWN0czogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibm9kZV9maWx0ZXIiKQ0KKyAgICB2YXIgbm9kZUZpbHRlcjogTm9kZUZpbHRlckRlZmluaXRpb24/ID0gbnVsbA0KKyAgICB2YXIgY29weTogU3RyaW5nPyA9IG51bGwNCit9DQorDQorY2xhc3MgT3BlcmF0aW9uQXNzaWdubWVudCB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGltcGxlbWVudGF0aW9uOiBJbXBsZW1lbnRhdGlvbj8gPSBudWxsDQorICAgIHZhciBpbnB1dHM6IE11dGFibGVNYXA8U3RyaW5nLCBKc29uTm9kZT4/ID0gbnVsbA0KKyAgICB2YXIgb3V0cHV0czogTXV0YWJsZU1hcDxTdHJpbmcsIEpzb25Ob2RlPj8gPSBudWxsDQorfQ0KKw0KKy8qDQorMy43LjQgUmVsYXRpb25zaGlwIFRlbXBsYXRlDQorQSBSZWxhdGlvbnNoaXAgVGVtcGxhdGUgc3BlY2lmaWVzIHRoZSBvY2N1cnJlbmNlIG9mIGEgbWFuYWdlYWJsZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBub2RlIHRlbXBsYXRlcyBhcyBwYXJ0IG9mIGFuIGFwcGxpY2F0aW9u4oCZcyB0b3BvbG9neSBtb2RlbCB0aGF0IGlzIGRlZmluZWQgaW4gYSBUT1NDQSBTZXJ2aWNlIFRlbXBsYXRlLiAgQSBSZWxhdGlvbnNoaXAgdGVtcGxhdGUgaXMgYW4gaW5zdGFuY2Ugb2YgYSBzcGVjaWZpZWQgUmVsYXRpb25zaGlwIFR5cGUgYW5kIGNhbiBwcm92aWRlIGN1c3RvbWl6ZWQgcHJvcGVydGllcywgY29uc3RyYWludHMgb3Igb3BlcmF0aW9ucyB3aGljaCBvdmVycmlkZSB0aGUgZGVmYXVsdHMgcHJvdmlkZWQgYnkgaXRzIFJlbGF0aW9uc2hpcCBUeXBlIGFuZCBpdHMgaW1wbGVtZW50YXRpb25zLg0KKyAqLw0KKw0KK2NsYXNzIFJlbGF0aW9uc2hpcFRlbXBsYXRlIHsNCisgICAgdmFyIHR5cGU6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIG1ldGFkYXRhOiBNdXRhYmxlTWFwPFN0cmluZywgU3RyaW5nPj8gPSBudWxsDQorICAgIHZhciBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gPSBudWxsDQorICAgIHZhciBhdHRyaWJ1dGVzOiBNdXRhYmxlTWFwPFN0cmluZywgSnNvbk5vZGU+PyA9IG51bGwNCisgICAgdmFyIGludGVyZmFjZXM6IE11dGFibGVNYXA8U3RyaW5nLCBJbnRlcmZhY2VEZWZpbml0aW9uPj8gPSBudWxsDQorICAgIHZhciBjb3B5OiBTdHJpbmc/ID0gbnVsbA0KK30NCisNCisvKg0KKzMuNy4yIFJlcXVpcmVtZW50IGFzc2lnbm1lbnQNCitBIFJlcXVpcmVtZW50IGFzc2lnbm1lbnQgYWxsb3dzIHRlbXBsYXRlIGF1dGhvcnMgdG8gcHJvdmlkZSBlaXRoZXIgY29uY3JldGUgbmFtZXMgb2YgVE9TQ0EgdGVtcGxhdGVzIG9yIHByb3ZpZGUgYWJzdHJhY3Qgc2VsZWN0aW9uIGNyaXRlcmlhIGZvciBwcm92aWRlcnMgdG8gdXNlIHRvIGZpbmQgbWF0Y2hpbmcgVE9TQ0EgdGVtcGxhdGVzIHRoYXQgYXJlIHVzZWQgdG8gZnVsZmlsbCBhIG5hbWVkIHJlcXVpcmVtZW504oCZcyBkZWNsYXJlZCBUT1NDQSBOb2RlIFR5cGUuDQorICovDQorDQorY2xhc3MgUmVxdWlyZW1lbnRBc3NpZ25tZW50IHsNCisgICAgQGdldDpKc29uSWdub3JlDQorICAgIHZhciBpZDogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIGNhcGFiaWxpdHk6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBub2RlOiBTdHJpbmc/ID0gbnVsbA0KKyAgICAvL1JlbGF0aW9uc2hpcCBUeXBlIG9yIFJlbGF0aW9uc2hpcCBUZW1wbGF0ZQ0KKyAgICB2YXIgcmVsYXRpb25zaGlwOiBTdHJpbmc/ID0gbnVsbA0KK30NCisNCisNCitjbGFzcyBXb3JrZmxvdyB7DQorICAgIEBnZXQ6SnNvbklnbm9yZQ0KKyAgICB2YXIgaWQ6IFN0cmluZz8gPSBudWxsDQorICAgIHZhciBkZXNjcmlwdGlvbjogU3RyaW5nPyA9IG51bGwNCisgICAgdmFyIHN0ZXBzOiBNdXRhYmxlTWFwPFN0cmluZywgU3RlcD4/ID0gbnVsbA0KKyAgICB2YXIgcHJlY29uZGl0aW9uczogQXJyYXlMaXN0PFByZUNvbmRpdGlvbkRlZmluaXRpb24+PyA9IG51bGwNCisgICAgdmFyIGlucHV0czogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4/ID0gbnVsbA0KK30NCisNCisNCitjbGFzcyBDb25kaXRpb25DbGF1c2Ugew0KKyAgICB2YXIgYW5kOiBBcnJheUxpc3Q8TXV0YWJsZU1hcDxTdHJpbmcsIEFueT4+PyA9IG51bGwNCisgICAgdmFyIG9yOiBBcnJheUxpc3Q8TXV0YWJsZU1hcDxTdHJpbmcsIEFueT4+PyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoImFzc2VydCIpDQorICAgIHZhciBhc3NlcnRDb25kaXRpb25zOiBBcnJheUxpc3Q8TXV0YWJsZU1hcDxTdHJpbmcsIEFueT4+PyA9IG51bGwNCit9DQorDQorLyoNCiszLjkgU2VydmljZSBUZW1wbGF0ZSBkZWZpbml0aW9uDQorQSBUT1NDQSBTZXJ2aWNlIFRlbXBsYXRlIChZQU1MKSBkb2N1bWVudCBjb250YWlucyBlbGVtZW50IGRlZmluaXRpb25zIG9mIGJ1aWxkaW5nIGJsb2NrcyBmb3IgY2xvdWQgYXBwbGljYXRpb24sIG9yIGNvbXBsZXRlIG1vZGVscyBvZiBjbG91ZCBhcHBsaWNhdGlvbnMuIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHRvcC1sZXZlbCBzdHJ1Y3R1cmFsIGVsZW1lbnRzIChUT1NDQSBrZXluYW1lcykgYWxvbmcgd2l0aCB0aGVpciBncmFtbWFycywgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYXBwZWFyIGluIGEgVE9TQ0EgU2VydmljZSBUZW1wbGF0ZSBkb2N1bWVudC4NCisgKi8NCisNCitjbGFzcyBTZXJ2aWNlVGVtcGxhdGUgew0KKyAgICBAZ2V0Okpzb25JZ25vcmUNCisgICAgdmFyIGlkOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgidG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbiIpDQorICAgIHZhciB0b3NjYURlZmluaXRpb25zVmVyc2lvbjogU3RyaW5nID0gImNvbnRyb2xsZXJfYmx1ZXByaW50XzFfMF8wIg0KKyAgICB2YXIgbWV0YWRhdGE6IE11dGFibGVNYXA8U3RyaW5nLCBTdHJpbmc+PyA9IG51bGwNCisgICAgdmFyIGRlc2NyaXB0aW9uOiBTdHJpbmc/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZHNsX2RlZmluaXRpb25zIikNCisgICAgdmFyIGRzbERlZmluaXRpb25zOiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pj8gPSBudWxsDQorICAgIHZhciByZXBvc2l0b3JpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBSZXBvc2l0b3J5RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICB2YXIgaW1wb3J0czogTXV0YWJsZUxpc3Q8SW1wb3J0RGVmaW5pdGlvbj4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiYXJ0aWZhY3RfdHlwZXMiKQ0KKyAgICB2YXIgYXJ0aWZhY3RUeXBlczogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0VHlwZT4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgiZGF0YV90eXBlcyIpDQorICAgIHZhciBkYXRhVHlwZXM6IE11dGFibGVNYXA8U3RyaW5nLCBEYXRhVHlwZT4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgibm9kZV90eXBlcyIpDQorICAgIHZhciBub2RlVHlwZXM6IE11dGFibGVNYXA8U3RyaW5nLCBOb2RlVHlwZT4/ID0gbnVsbA0KKyAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgicG9saWN5X3R5cGVzIikNCisgICAgdmFyIHBvbGljeVR5cGVzOiBQb2xpY3lUeXBlPyA9IG51bGwNCisgICAgQGdldDpKc29uUHJvcGVydHkoInRvcG9sb2d5X3RlbXBsYXRlIikNCisgICAgdmFyIHRvcG9sb2d5VGVtcGxhdGU6IFRvcG9sb2d5VGVtcGxhdGU/ID0gbnVsbA0KK30NCisNCitjbGFzcyBUb3NjYU1ldGFEYXRhIHsNCisgICAgbGF0ZWluaXQgdmFyIHRvc2NhTWV0YUZpbGVWZXJzaW9uOiBTdHJpbmcNCisgICAgbGF0ZWluaXQgdmFyIGNzYXJWZXJzaW9uOiBTdHJpbmcNCisgICAgbGF0ZWluaXQgdmFyIGNyZWF0ZWRCeTogU3RyaW5nDQorICAgIGxhdGVpbml0IHZhciBlbnRpdHlEZWZpbml0aW9uczogU3RyaW5nDQorICAgIHZhciB0ZW1wbGF0ZVRhZ3M6IFN0cmluZz8gPSBudWxsDQorfQ0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50RW5oYW5jZXJGYWN0b3J5Lmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvZmFjdG9yeS9CbHVlUHJpbnRFbmhhbmNlckZhY3Rvcnkua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEyOTYzNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50RW5oYW5jZXJGYWN0b3J5Lmt0CkBAIC0wLDAgKzEsNDUgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mYWN0b3J5DQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludEVuaGFuY2VyU2VydmljZQ0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQorDQorDQorLyoqDQorICogQmx1ZVByaW50RW5oYW5jZXJGYWN0b3J5DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKg0KKyAqLw0KKw0KK29iamVjdCBCbHVlUHJpbnRFbmhhbmNlckZhY3Rvcnkgew0KKyAgICBwcml2YXRlIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorDQorICAgIHZhciBibHVlUHJpbnRFbmhhbmNlclNlcnZpY2VzOiBNdXRhYmxlTWFwPFN0cmluZywgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlPiA9IEhhc2hNYXAoKQ0KKw0KKyAgICBmdW4gcmVnaXN0ZXIoa2V5OiBTdHJpbmcsIGJsdWVQcmludEVuaGFuY2VyU2VydmljZTogQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlKSB7DQorICAgICAgICBibHVlUHJpbnRFbmhhbmNlclNlcnZpY2VzW2tleV0gPSBibHVlUHJpbnRFbmhhbmNlclNlcnZpY2UNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogQ2FsbGVkIGJ5IGNsaWVudHMgdG8gZ2V0IGEgQmx1ZXByaW50IFBhcnNlciBmb3IgdGhlIEJsdWVwcmludCBwYXJzZXIgdHlwZQ0KKyAgICAgKi8NCisgICAgZnVuIGluc3RhbmNlKGtleTogU3RyaW5nKTogQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlPyB7DQorICAgICAgICByZXR1cm4gYmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlcy5nZXQoa2V5KQ0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGViMGU2Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvZmFjdG9yeS9CbHVlUHJpbnRQYXJzZXJGYWN0b3J5Lmt0CkBAIC0wLDAgKzEsNTEgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mYWN0b3J5DQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludFBhcnNlckRlZmF1bHRTZXJ2aWNlDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludFBhcnNlclNlcnZpY2UNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KKw0KKy8qKg0KKyAqDQorICogQmx1ZVByaW50UGFyc2VyRmFjdG9yeQ0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorDQorb2JqZWN0IEJsdWVQcmludFBhcnNlckZhY3Rvcnkgew0KKyAgICBwcml2YXRlIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorDQorICAgIHZhciBibHVlUHJpbnRQYXJzZXJTZXJ2aWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEJsdWVQcmludFBhcnNlclNlcnZpY2U+ID0gSGFzaE1hcCgpDQorDQorICAgIGluaXQgew0KKyAgICAgICAgbG9nZ2VyLmluZm8oIkluaXRpYWxpc2VkIGRlZmF1bHQgQmx1ZVByaW50UGFyc2VyIFNlcnZpY2UgIikNCisgICAgICAgIGJsdWVQcmludFBhcnNlclNlcnZpY2VzLnB1dChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlRZUEVfREVGQVVMVCwgQmx1ZVByaW50UGFyc2VyRGVmYXVsdFNlcnZpY2UoKSkNCisgICAgfQ0KKw0KKyAgICBmdW4gcmVnaXN0ZXIoa2V5OlN0cmluZywgYmx1ZVByaW50UGFyc2VyU2VydmljZTogQmx1ZVByaW50UGFyc2VyU2VydmljZSl7DQorICAgICAgICBibHVlUHJpbnRQYXJzZXJTZXJ2aWNlcy5wdXQoa2V5LCBibHVlUHJpbnRQYXJzZXJTZXJ2aWNlKQ0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBDYWxsZWQgYnkgY2xpZW50cyB0byBnZXQgYSBCbHVlcHJpbnQgUGFyc2VyIGZvciB0aGUgQmx1ZXByaW50IHBhcnNlciB0eXBlDQorICAgICAqLw0KKyAgICBmdW4gaW5zdGFuY2Uoa2V5IDogU3RyaW5nKSA6IEJsdWVQcmludFBhcnNlclNlcnZpY2U/IHsNCisgICAgICAgIHJldHVybiBibHVlUHJpbnRQYXJzZXJTZXJ2aWNlcy5nZXQoa2V5KQ0KKyAgICB9DQorfQ0KKw0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50VmFsaWRhdG9yRmFjdG9yeS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL2ZhY3RvcnkvQmx1ZVByaW50VmFsaWRhdG9yRmFjdG9yeS5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2Y3ODhhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvZmFjdG9yeS9CbHVlUHJpbnRWYWxpZGF0b3JGYWN0b3J5Lmt0CkBAIC0wLDAgKzEsNDUgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mYWN0b3J5DQorDQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludFZhbGlkYXRvckRlZmF1bHRTZXJ2aWNlDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludFZhbGlkYXRvclNlcnZpY2UNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCisNCitvYmplY3QgQmx1ZVByaW50VmFsaWRhdG9yRmFjdG9yeSB7DQorDQorICAgIHZhciBibHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlczogTXV0YWJsZU1hcDxTdHJpbmcsIEJsdWVQcmludFZhbGlkYXRvclNlcnZpY2U+ID0gSGFzaE1hcCgpDQorDQorICAgIGluaXQgew0KKyAgICAgICAgYmx1ZVByaW50VmFsaWRhdG9yU2VydmljZXNbb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5UWVBFX0RFRkFVTFRdID0gQmx1ZVByaW50VmFsaWRhdG9yRGVmYXVsdFNlcnZpY2UoKQ0KKyAgICB9DQorDQorICAgIGZ1biByZWdpc3RlcihrZXk6U3RyaW5nLCBibHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlOiBCbHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlKXsNCisgICAgICAgIGJsdWVQcmludFZhbGlkYXRvclNlcnZpY2VzW2tleV0gPSBibHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlDQorICAgIH0NCisNCisgICAgZnVuIGluc3RhbmNlKGtleSA6IFN0cmluZykgOiBCbHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlP3sNCisgICAgICAgIHJldHVybiBibHVlUHJpbnRWYWxpZGF0b3JTZXJ2aWNlc1trZXldDQorICAgIH0NCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRDaGFpbmVkU2VydmljZS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50Q2hhaW5lZFNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1MTc2MwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50Q2hhaW5lZFNlcnZpY2Uua3QKQEAgLTAsMCArMSwxMTcgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRUeXBlcw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS4qDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorY2xhc3MgQmx1ZVByaW50Q2hhaW5lZFNlcnZpY2Ugew0KKyAgICB2YXIgYnBjIDogQmx1ZVByaW50Q29udGV4dA0KKw0KKyAgICBjb25zdHJ1Y3RvcihicGMgOiBCbHVlUHJpbnRDb250ZXh0KXsNCisgICAgICAgIHRoaXMuYnBjID0gYnBjDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUeXBlQ2hhaW5lZChub2RlVHlwZU5hbWU6IFN0cmluZyk6IE5vZGVUeXBlIHsNCisNCisgICAgICAgIHZhbCBub2RlVHlwZTogTm9kZVR5cGUgPSBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGVOYW1lKQ0KKyAgICAgICAgdmFsIGF0dHJpYnV0ZXMgPSBoYXNoTWFwT2Y8U3RyaW5nLCBBdHRyaWJ1dGVEZWZpbml0aW9uPigpDQorICAgICAgICB2YWwgcHJvcGVydGllcyA9IGhhc2hNYXBPZjxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4oKQ0KKyAgICAgICAgdmFsIHJlcXVpcmVtZW50cyA9IGhhc2hNYXBPZjxTdHJpbmcsIFJlcXVpcmVtZW50RGVmaW5pdGlvbj4oKQ0KKyAgICAgICAgdmFsIGNhcGFiaWxpdGllcyA9IGhhc2hNYXBPZjxTdHJpbmcsIENhcGFiaWxpdHlEZWZpbml0aW9uPigpDQorICAgICAgICB2YWwgaW50ZXJmYWNlcyA9IGhhc2hNYXBPZjxTdHJpbmcsIEludGVyZmFjZURlZmluaXRpb24+KCkNCisgICAgICAgIHZhbCBhcnRpZmFjdHMgPSBoYXNoTWFwT2Y8U3RyaW5nLCBBcnRpZmFjdERlZmluaXRpb24+KCkNCisNCisgICAgICAgIHJlY05vZGVUeXBlc0NoYWluZWQobm9kZVR5cGVOYW1lKS5mb3JFYWNoIHsgbm9kZVR5cGUgLT4NCisNCisgICAgICAgICAgICB2YWwgc3ViQXR0cmlidXRlcyA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGUuaWQhISkuYXR0cmlidXRlcw0KKyAgICAgICAgICAgIGlmIChzdWJBdHRyaWJ1dGVzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5wdXRBbGwoc3ViQXR0cmlidXRlcykNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgdmFsIHN1YlByb3BlcnRpZXMgPSAgYnBjLm5vZGVUeXBlQnlOYW1lKG5vZGVUeXBlLmlkISEpLnByb3BlcnRpZXMNCisgICAgICAgICAgICBpZiAoc3ViUHJvcGVydGllcyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHByb3BlcnRpZXMucHV0QWxsKHN1YlByb3BlcnRpZXMpDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHZhbCBzdWJSZXF1aXJlbWVudHMgPSAgYnBjLm5vZGVUeXBlQnlOYW1lKG5vZGVUeXBlLmlkISEpLnJlcXVpcmVtZW50cw0KKyAgICAgICAgICAgIGlmIChzdWJSZXF1aXJlbWVudHMgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMucHV0QWxsKHN1YlJlcXVpcmVtZW50cykNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgdmFsIHN1YkNhcGFiaWxpdGllcyA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGUuaWQhISkuY2FwYWJpbGl0aWVzDQorICAgICAgICAgICAgaWYgKHN1YkNhcGFiaWxpdGllcyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5wdXRBbGwoc3ViQ2FwYWJpbGl0aWVzKQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB2YWwgc3ViSW50ZXJmYWNlcyA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGUuaWQhISkuaW50ZXJmYWNlcw0KKyAgICAgICAgICAgIGlmIChzdWJJbnRlcmZhY2VzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgaW50ZXJmYWNlcy5wdXRBbGwoc3ViSW50ZXJmYWNlcykNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgdmFsIHN1YkFydGlmYWN0cyA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGUuaWQhISkuYXJ0aWZhY3RzDQorICAgICAgICAgICAgaWYgKHN1YkFydGlmYWN0cyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGFydGlmYWN0cy5wdXRBbGwoc3ViQXJ0aWZhY3RzKQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG5vZGVUeXBlLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzDQorICAgICAgICBub2RlVHlwZS5wcm9wZXJ0aWVzID0gcHJvcGVydGllcw0KKyAgICAgICAgbm9kZVR5cGUucmVxdWlyZW1lbnRzID0gcmVxdWlyZW1lbnRzDQorICAgICAgICBub2RlVHlwZS5jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXMNCisgICAgICAgIG5vZGVUeXBlLmludGVyZmFjZXMgPSBpbnRlcmZhY2VzDQorICAgICAgICBub2RlVHlwZS5hcnRpZmFjdHMgPSBhcnRpZmFjdHMNCisgICAgICAgIHJldHVybiBub2RlVHlwZQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVHlwZUNoYWluZWRQcm9wZXJ0aWVzKG5vZGVUeXBlTmFtZTogU3RyaW5nKTogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4/IHsNCisgICAgICAgIHZhbCBub2RlVHlwZSA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGVOYW1lKQ0KKyAgICAgICAgdmFsIHByb3BlcnRpZXMgPSBoYXNoTWFwT2Y8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+KCkNCisNCisgICAgICAgIHJlY05vZGVUeXBlc0NoYWluZWQobm9kZVR5cGVOYW1lKS5mb3JFYWNoIHsgbm9kZVR5cGUgLT4NCisgICAgICAgICAgICB2YWwgc3ViUHJvcGVydGllcyA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGUuaWQhISkucHJvcGVydGllcw0KKyAgICAgICAgICAgIGlmIChzdWJQcm9wZXJ0aWVzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXRBbGwoc3ViUHJvcGVydGllcykNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcHJvcGVydGllcw0KKyAgICB9DQorDQorICAgIHByaXZhdGUgZnVuIHJlY05vZGVUeXBlc0NoYWluZWQobm9kZVR5cGVOYW1lOiBTdHJpbmcsIG5vZGVUeXBlczogTXV0YWJsZUxpc3Q8Tm9kZVR5cGU+PyA9IGFycmF5TGlzdE9mKCkpOiBNdXRhYmxlTGlzdDxOb2RlVHlwZT4gew0KKyAgICAgICAgdmFsIG5vZGVUeXBlOiBOb2RlVHlwZSA9ICBicGMubm9kZVR5cGVCeU5hbWUobm9kZVR5cGVOYW1lKQ0KKyAgICAgICAgbm9kZVR5cGUuaWQgPSBub2RlVHlwZU5hbWUNCisgICAgICAgIHZhbCBkZXJpdmVkRnJvbTogU3RyaW5nID0gbm9kZVR5cGUuZGVyaXZlZEZyb20NCisgICAgICAgIGlmICghQmx1ZVByaW50VHlwZXMucm9vdE5vZGVUeXBlcygpLmNvbnRhaW5zKGRlcml2ZWRGcm9tKSkgew0KKyAgICAgICAgICAgIHJlY05vZGVUeXBlc0NoYWluZWQoZGVyaXZlZEZyb20sIG5vZGVUeXBlcykNCisgICAgICAgIH0NCisgICAgICAgIG5vZGVUeXBlcyEhLmFkZChub2RlVHlwZSkNCisgICAgICAgIHJldHVybiBub2RlVHlwZXMNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIGZ1biByZWNEYXRhVHlwZXNDaGFpbmVkKGRhdGFUeXBlTmFtZTogU3RyaW5nLCBkYXRhVHlwZXM6IE11dGFibGVMaXN0PERhdGFUeXBlPj8gPSBhcnJheUxpc3RPZigpKTogTXV0YWJsZUxpc3Q8RGF0YVR5cGU+IHsNCisgICAgICAgIHZhbCBkYXRhVHlwZTogRGF0YVR5cGUgPSAgYnBjLmRhdGFUeXBlQnlOYW1lKGRhdGFUeXBlTmFtZSkhIQ0KKyAgICAgICAgZGF0YVR5cGUuaWQgPSBkYXRhVHlwZU5hbWUNCisgICAgICAgIHZhbCBkZXJpdmVkRnJvbTogU3RyaW5nID0gZGF0YVR5cGUuZGVyaXZlZEZyb20NCisgICAgICAgIGlmICghQmx1ZVByaW50VHlwZXMucm9vdERhdGFUeXBlcygpLmNvbnRhaW5zKGRlcml2ZWRGcm9tKSkgew0KKyAgICAgICAgICAgIHJlY0RhdGFUeXBlc0NoYWluZWQoZGVyaXZlZEZyb20sIGRhdGFUeXBlcykNCisgICAgICAgIH0NCisgICAgICAgIGRhdGFUeXBlcyEhLmFkZChkYXRhVHlwZSkNCisgICAgICAgIHJldHVybiBkYXRhVHlwZXMNCisgICAgfQ0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludENvbnRleHQua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludENvbnRleHQua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRlMWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50Q29udGV4dC5rdApAQCAtMCwwICsxLDE3NyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnNlcnZpY2UNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb24NCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuKg0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXINCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3RvcnkNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitjbGFzcyBCbHVlUHJpbnRDb250ZXh0KHNlcnZpY2VUZW1wbGF0ZTogU2VydmljZVRlbXBsYXRlKSB7DQorDQorICAgIHByaXZhdGUgdmFsIGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpczo6Y2xhc3MudG9TdHJpbmcoKSkNCisNCisgICAgdmFsIHNlcnZpY2VUZW1wbGF0ZTogU2VydmljZVRlbXBsYXRlID0gc2VydmljZVRlbXBsYXRlDQorDQorICAgIHZhbCBpbXBvcnRzOiBMaXN0PEltcG9ydERlZmluaXRpb24+PyA9IHNlcnZpY2VUZW1wbGF0ZS5pbXBvcnRzDQorDQorICAgIHZhbCBtZXRhZGF0YTogTXV0YWJsZU1hcDxTdHJpbmcsIFN0cmluZz4/ID0gc2VydmljZVRlbXBsYXRlLm1ldGFkYXRhDQorDQorICAgIHZhbCBkYXRhVHlwZXM6IE11dGFibGVNYXA8U3RyaW5nLCBEYXRhVHlwZT4/ID0gc2VydmljZVRlbXBsYXRlLmRhdGFUeXBlcw0KKw0KKyAgICB2YWwgaW5wdXRzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gPSBzZXJ2aWNlVGVtcGxhdGUudG9wb2xvZ3lUZW1wbGF0ZT8uaW5wdXRzDQorDQorICAgIHZhbCB3b3JrZmxvd3M6IE11dGFibGVNYXA8U3RyaW5nLCBXb3JrZmxvdz4/ID0gc2VydmljZVRlbXBsYXRlLnRvcG9sb2d5VGVtcGxhdGU/LndvcmtmbG93cw0KKw0KKyAgICBmdW4gYmx1ZXByaW50SnNvbihwcmV0dHk6IEJvb2xlYW4gPSBmYWxzZSk6IFN0cmluZyA9IHByaW50KCJqc29uIiwgcHJldHR5KQ0KKw0KKyAgICBmdW4gYmx1ZXByaW50WWFtbChwcmV0dHk6IEJvb2xlYW4gPSBmYWxzZSk6IFN0cmluZyA9IHByaW50KCJ5YW1sIiwgcHJldHR5KQ0KKw0KKyAgICBwcml2YXRlIGZ1biBwcmludCh0eXBlOiBTdHJpbmc/ID0gImpzb24iLCBwcmV0dHk6IEJvb2xlYW4gPSBmYWxzZSk6IFN0cmluZyB7DQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLmdldEpzb24oc2VydmljZVRlbXBsYXRlLCBwcmV0dHkpDQorICAgIH0NCisNCisgICAgLy8gV29ya2Zsb3cNCisgICAgZnVuIHdvcmtmbG93QnlOYW1lKG5hbWU6IFN0cmluZyk6IFdvcmtmbG93PyA9IHdvcmtmbG93cz8uZ2V0KG5hbWUpDQorDQorICAgIC8vIERhdGEgVHlwZQ0KKyAgICBmdW4gZGF0YVR5cGVCeU5hbWUobmFtZTogU3RyaW5nKTogRGF0YVR5cGU/ID0gZGF0YVR5cGVzPy5nZXQobmFtZSkNCisNCisgICAgLy8gQXJ0aWZhY3QgVHlwZQ0KKyAgICB2YWwgYXJ0aWZhY3RUeXBlczogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0VHlwZT4/ID0gc2VydmljZVRlbXBsYXRlLmFydGlmYWN0VHlwZXMNCisNCisgICAgLy8gTm9kZSBUeXBlIE1ldGhvZHMNCisgICAgdmFsIG5vZGVUeXBlczogTXV0YWJsZU1hcDxTdHJpbmcsIE5vZGVUeXBlPj8gPSBzZXJ2aWNlVGVtcGxhdGUubm9kZVR5cGVzDQorDQorICAgIGZ1biBub2RlVHlwZUJ5TmFtZShuYW1lOiBTdHJpbmcpOiBOb2RlVHlwZSA9DQorICAgICAgICAgICAgbm9kZVR5cGVzPy5nZXQobmFtZSkgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkZhaWxlZCB0byBnZXQgbm9kZSB0eXBlIGZvciB0aGUgbmFtZSA6ICVzIiwgbmFtZSkpDQorDQorICAgIGZ1biBub2RlVHlwZURlcml2ZWRGcm9tKG5hbWU6IFN0cmluZyk6IE11dGFibGVNYXA8U3RyaW5nLCBOb2RlVHlwZT4/IHsNCisgICAgICAgIHJldHVybiBub2RlVHlwZXM/LmZpbHRlclZhbHVlcyB7IG5vZGVUeXBlIC0+IG5vZGVUeXBlLmRlcml2ZWRGcm9tID09IG5hbWUgfT8udG9NdXRhYmxlTWFwKCkNCisgICAgfQ0KKw0KKyAgICBmdW4gbm9kZVR5cGVJbnRlcmZhY2Uobm9kZVR5cGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZyk6IEludGVyZmFjZURlZmluaXRpb24/IHsNCisgICAgICAgIHJldHVybiBub2RlVHlwZUJ5TmFtZShub2RlVHlwZU5hbWUpLmludGVyZmFjZXM/LnZhbHVlcz8uZmlyc3QoKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbihub2RlVHlwZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcpOiBPcGVyYXRpb25EZWZpbml0aW9uPyB7DQorICAgICAgICByZXR1cm4gbm9kZVR5cGVJbnRlcmZhY2Uobm9kZVR5cGVOYW1lLCBpbnRlcmZhY2VOYW1lKT8ub3BlcmF0aW9ucz8uZ2V0KG9wZXJhdGlvbk5hbWUpDQorICAgIH0NCisNCisgICAgZnVuIGludGVyZmFjZU5hbWVGb3JOb2RlVHlwZShub2RlVHlwZU5hbWU6IFN0cmluZyk6IFN0cmluZz8gew0KKyAgICAgICAgcmV0dXJuIG5vZGVUeXBlQnlOYW1lKG5vZGVUeXBlTmFtZSkuaW50ZXJmYWNlcz8ua2V5cz8uZmlyc3QoKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbklucHV0cyhub2RlVHlwZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcpOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPj8gew0KKyAgICAgICAgcmV0dXJuIG5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uKG5vZGVUeXBlTmFtZSwgaW50ZXJmYWNlTmFtZSwgb3BlcmF0aW9uTmFtZSk/LmlucHV0cw0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbk91dHB1dHMobm9kZVR5cGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZywgb3BlcmF0aW9uTmFtZTogU3RyaW5nKTogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4/IHsNCisgICAgICAgIHJldHVybiBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbihub2RlVHlwZU5hbWUsIGludGVyZmFjZU5hbWUsIG9wZXJhdGlvbk5hbWUpPy5vdXRwdXRzDQorICAgIH0NCisNCisgICAgLy8gTm9kZSBUZW1wbGF0ZSBNZXRob2RzDQorICAgIHZhbCBub2RlVGVtcGxhdGVzOiBNdXRhYmxlTWFwPFN0cmluZywgTm9kZVRlbXBsYXRlPj8gPSBzZXJ2aWNlVGVtcGxhdGUudG9wb2xvZ3lUZW1wbGF0ZT8ubm9kZVRlbXBsYXRlcw0KKw0KKyAgICBmdW4gbm9kZVRlbXBsYXRlQnlOYW1lKG5hbWU6IFN0cmluZyk6IE5vZGVUZW1wbGF0ZSA9DQorICAgICAgICAgICAgbm9kZVRlbXBsYXRlcz8uZ2V0KG5hbWUpID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbigiRmFpbGVkIHRvIGdldCBub2RlIHRlbXBsYXRlIGZvciB0aGUgbmFtZSAiICsgbmFtZSkNCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUZvck5vZGVUeXBlKG5hbWU6IFN0cmluZyk6IE11dGFibGVNYXA8U3RyaW5nLCBOb2RlVGVtcGxhdGU+PyB7DQorICAgICAgICByZXR1cm4gbm9kZVRlbXBsYXRlcz8uZmlsdGVyVmFsdWVzIHsgbm9kZVRlbXBsYXRlIC0+IG5vZGVUZW1wbGF0ZS50eXBlID09IG5hbWUgfT8udG9NdXRhYmxlTWFwKCkNCisgICAgfQ0KKw0KKyAgICBmdW4gbm9kZVRlbXBsYXRlTm9kZVR5cGUobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nKTogTm9kZVR5cGUgew0KKyAgICAgICAgdmFsIG5vZGVUZW1wbGF0ZVR5cGU6IFN0cmluZyA9IG5vZGVUZW1wbGF0ZUJ5TmFtZShub2RlVGVtcGxhdGVOYW1lKS50eXBlDQorICAgICAgICByZXR1cm4gbm9kZVR5cGVCeU5hbWUobm9kZVRlbXBsYXRlVHlwZSkNCisgICAgfQ0KKw0KKyAgICBmdW4gbm9kZVRlbXBsYXRlUHJvcGVydHkobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCBwcm9wZXJ0eU5hbWU6IFN0cmluZyk6IEFueT8gew0KKyAgICAgICAgcmV0dXJuIG5vZGVUZW1wbGF0ZUJ5TmFtZShub2RlVGVtcGxhdGVOYW1lKS5wcm9wZXJ0aWVzPy5nZXQocHJvcGVydHlOYW1lKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVGVtcGxhdGVBcnRpZmFjdHMobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nKTogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0RGVmaW5pdGlvbj4/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuYXJ0aWZhY3RzDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUFydGlmYWN0KG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgYXJ0aWZhY3ROYW1lOiBTdHJpbmcpOiBBcnRpZmFjdERlZmluaXRpb24/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVBcnRpZmFjdHMobm9kZVRlbXBsYXRlTmFtZSk/LmdldChhcnRpZmFjdE5hbWUpDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUZpcnN0SW50ZXJmYWNlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZyk6IEludGVyZmFjZUFzc2lnbm1lbnQ/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuaW50ZXJmYWNlcz8udmFsdWVzPy5maXJzdCgpDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUZpcnN0SW50ZXJmYWNlTmFtZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcpOiBTdHJpbmc/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuaW50ZXJmYWNlcz8ua2V5cz8uZmlyc3QoKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVGVtcGxhdGVGaXJzdEludGVyZmFjZUZpcnN0T3BlcmF0aW9uTmFtZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcpOiBTdHJpbmc/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVGaXJzdEludGVyZmFjZShub2RlVGVtcGxhdGVOYW1lKT8ub3BlcmF0aW9ucz8ua2V5cz8uZmlyc3QoKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVGVtcGxhdGVJbnRlcmZhY2VPcGVyYXRpb25JbnB1dHMobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCBpbnRlcmZhY2VOYW1lOiBTdHJpbmcsIG9wZXJhdGlvbk5hbWU6IFN0cmluZyk6IE11dGFibGVNYXA8U3RyaW5nLCBKc29uTm9kZT4/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuaW50ZXJmYWNlcz8uZ2V0KGludGVyZmFjZU5hbWUpPy5vcGVyYXRpb25zPy5nZXQob3BlcmF0aW9uTmFtZSk/LmlucHV0cw0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVGVtcGxhdGVJbnRlcmZhY2VPcGVyYXRpb25PdXRwdXRzKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcpOiBNdXRhYmxlTWFwPFN0cmluZywgSnNvbk5vZGU+PyB7DQorICAgICAgICByZXR1cm4gbm9kZVRlbXBsYXRlQnlOYW1lKG5vZGVUZW1wbGF0ZU5hbWUpLmludGVyZmFjZXM/LmdldChpbnRlcmZhY2VOYW1lKT8ub3BlcmF0aW9ucz8uZ2V0KG9wZXJhdGlvbk5hbWUpPy5vdXRwdXRzDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUludGVyZmFjZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZyk6IEludGVyZmFjZUFzc2lnbm1lbnQ/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuaW50ZXJmYWNlcz8uZ2V0KGludGVyZmFjZU5hbWUpDQorICAgIH0NCisNCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUludGVyZmFjZU9wZXJhdGlvbihub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZywgb3BlcmF0aW9uTmFtZTogU3RyaW5nKTogT3BlcmF0aW9uQXNzaWdubWVudD8gew0KKyAgICAgICAgcmV0dXJuIG5vZGVUZW1wbGF0ZUludGVyZmFjZShub2RlVGVtcGxhdGVOYW1lLCBpbnRlcmZhY2VOYW1lKT8ub3BlcmF0aW9ucz8uZ2V0KG9wZXJhdGlvbk5hbWUpDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUNhcGFiaWxpdHkobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCBjYXBhYmlsaXR5TmFtZTogU3RyaW5nKTogQ2FwYWJpbGl0eUFzc2lnbm1lbnQ/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkuY2FwYWJpbGl0aWVzPy5nZXQoY2FwYWJpbGl0eU5hbWUpDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZVJlcXVpcmVtZW50KG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgcmVxdWlyZW1lbnROYW1lOiBTdHJpbmcpOiBSZXF1aXJlbWVudEFzc2lnbm1lbnQ/IHsNCisgICAgICAgIHJldHVybiBub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkucmVxdWlyZW1lbnRzPy5nZXQocmVxdWlyZW1lbnROYW1lKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVGVtcGxhdGVSZXF1aXJlbWVudE5vZGUobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCByZXF1aXJlbWVudE5hbWU6IFN0cmluZyk6IE5vZGVUZW1wbGF0ZSB7DQorICAgICAgICB2YWwgbm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nID0gbm9kZVRlbXBsYXRlQnlOYW1lKG5vZGVUZW1wbGF0ZU5hbWUpLnJlcXVpcmVtZW50cz8uZ2V0KHJlcXVpcmVtZW50TmFtZSk/Lm5vZGUNCisgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoImZhaWxlZCB0byBnZXQgbm9kZSBuYW1lIGZvciBub2RlIHRlbXBsYXRlJ3MgKCVzKSByZXF1aXJlbWVudCdzICglcykgIiArIG5vZGVUZW1wbGF0ZU5hbWUsIHJlcXVpcmVtZW50TmFtZSkpDQorICAgICAgICByZXR1cm4gbm9kZVRlbXBsYXRlQnlOYW1lKG5vZGVUZW1wbGF0ZU5hbWUpDQorICAgIH0NCisNCisgICAgZnVuIG5vZGVUZW1wbGF0ZUNhcGFiaWxpdHlQcm9wZXJ0eShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGNhcGFiaWxpdHlOYW1lOiBTdHJpbmcsIHByb3BlcnR5TmFtZTogU3RyaW5nKTogQW55PyB7DQorICAgICAgICByZXR1cm4gbm9kZVRlbXBsYXRlQ2FwYWJpbGl0eShub2RlVGVtcGxhdGVOYW1lLCBjYXBhYmlsaXR5TmFtZSk/LnByb3BlcnRpZXM/LmdldChwcm9wZXJ0eU5hbWUpDQorICAgIH0NCisNCisgICAgLy8gQ2hhaW5lZCBGdW5jdGlvbnMNCisNCisgICAgZnVuIG5vZGVUeXBlQ2hhaW5lZChub2RlVHlwZU5hbWU6IFN0cmluZyk6IE5vZGVUeXBlIHsNCisgICAgICAgIHJldHVybiBCbHVlUHJpbnRDaGFpbmVkU2VydmljZSh0aGlzKS5ub2RlVHlwZUNoYWluZWQobm9kZVR5cGVOYW1lKQ0KKyAgICB9DQorDQorICAgIGZ1biBub2RlVHlwZUNoYWluZWRQcm9wZXJ0aWVzKG5vZGVUeXBlTmFtZTogU3RyaW5nKTogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4/IHsNCisgICAgICAgIHJldHVybiBCbHVlUHJpbnRDaGFpbmVkU2VydmljZSh0aGlzKS5ub2RlVHlwZUNoYWluZWRQcm9wZXJ0aWVzKG5vZGVUeXBlTmFtZSkNCisgICAgfQ0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2Uua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2OWQ1MAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RW5oYW5jZXJSZXBvU2VydmljZS5rdApAQCAtMCwwICsxLDkyIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZQ0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uRmlsZVV0aWxzDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbg0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS4qDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHMNCitpbXBvcnQgamF2YS5pby5GaWxlDQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlDQoraW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldA0KKw0KKy8qKg0KKyAqIEJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKg0KKyAqLw0KKw0KK2ludGVyZmFjZSBCbHVlUHJpbnRFbmhhbmNlclJlcG9TZXJ2aWNlIDogU2VyaWFsaXphYmxlIHsNCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZ2V0Tm9kZVR5cGUobm9kZVR5cGVOYW1lOiBTdHJpbmcpOiBOb2RlVHlwZT8NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZ2V0RGF0YVR5cGUoZGF0YVR5cGVOYW1lOiBTdHJpbmcpOiBEYXRhVHlwZT8NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZ2V0QXJ0aWZhY3RUeXBlKGFydGlmYWN0VHlwZU5hbWU6IFN0cmluZyk6IEFydGlmYWN0VHlwZT8NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZ2V0UmVsYXRpb25zaGlwVHlwZShyZWxhdGlvbnNoaXBUeXBlTmFtZTogU3RyaW5nKTogUmVsYXRpb25zaGlwVHlwZT8NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZ2V0Q2FwYWJpbGl0eURlZmluaXRpb24oY2FwYWJpbGl0eURlZmluaXRpb25OYW1lOiBTdHJpbmcpOiBDYXBhYmlsaXR5RGVmaW5pdGlvbj8NCisNCit9DQorDQorDQorY2xhc3MgQmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2UodmFsIGJhc2VQYXRoOiBTdHJpbmcpIDogQmx1ZVByaW50RW5oYW5jZXJSZXBvU2VydmljZSB7DQorDQorICAgIHZhbCBkYXRhVHlwZVBhdGggPSBiYXNlUGF0aC5wbHVzKEJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9EQVRBX1RZUEUpDQorICAgIHZhbCBub2RlVHlwZVBhdGggPSBiYXNlUGF0aC5wbHVzKEJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9OT0RFX1RZUEUpDQorICAgIHZhbCBhcnRpZmFjdFR5cGVQYXRoID0gYmFzZVBhdGgucGx1cyhCbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5wbHVzKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfQVJUSUZBQ1RfVFlQRSkNCisgICAgdmFsIGNhcGFiaWxpdHlUeXBlUGF0aCA9IGJhc2VQYXRoLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikucGx1cyhCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0NBUEFCSUxJVFlfVFlQRSkNCisgICAgdmFsIHJlbGF0aW9uc2hpcFR5cGVQYXRoID0gYmFzZVBhdGgucGx1cyhCbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5wbHVzKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfUkVMQVRJT05TSElQX1RZUEUpDQorICAgIHZhbCBleHRlbnNpb24gPSAiLmpzb24iDQorDQorICAgIG92ZXJyaWRlIGZ1biBnZXREYXRhVHlwZShkYXRhVHlwZU5hbWU6IFN0cmluZyk6IERhdGFUeXBlPyB7DQorICAgICAgICB2YWwgY29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKEZpbGUoZGF0YVR5cGVQYXRoLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikNCisgICAgICAgICAgICAgICAgLnBsdXMoZGF0YVR5cGVOYW1lKS5wbHVzKGV4dGVuc2lvbikpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50KQ0KKyAgICB9DQorDQorICAgIG92ZXJyaWRlIGZ1biBnZXROb2RlVHlwZShub2RlVHlwZU5hbWU6IFN0cmluZyk6IE5vZGVUeXBlPyB7DQorICAgICAgICB2YWwgY29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKEZpbGUobm9kZVR5cGVQYXRoLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikNCisgICAgICAgICAgICAgICAgLnBsdXMobm9kZVR5cGVOYW1lKS5wbHVzKGV4dGVuc2lvbikpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50KQ0KKyAgICB9DQorDQorICAgIG92ZXJyaWRlIGZ1biBnZXRBcnRpZmFjdFR5cGUoYXJ0aWZhY3RUeXBlTmFtZTogU3RyaW5nKTogQXJ0aWZhY3RUeXBlPyB7DQorICAgICAgICB2YWwgY29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKEZpbGUoYXJ0aWZhY3RUeXBlUGF0aC5wbHVzKEJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpDQorICAgICAgICAgICAgICAgIC5wbHVzKGFydGlmYWN0VHlwZU5hbWUpLnBsdXMoZXh0ZW5zaW9uKSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSkNCisgICAgICAgIHJldHVybiBKYWNrc29uVXRpbHMucmVhZFZhbHVlKGNvbnRlbnQpDQorICAgIH0NCisNCisgICAgb3ZlcnJpZGUgZnVuIGdldFJlbGF0aW9uc2hpcFR5cGUocmVsYXRpb25zaGlwVHlwZU5hbWU6IFN0cmluZyk6IFJlbGF0aW9uc2hpcFR5cGU/IHsNCisgICAgICAgIHZhbCBjb250ZW50ID0gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcoRmlsZShyZWxhdGlvbnNoaXBUeXBlUGF0aC5wbHVzKEJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpDQorICAgICAgICAgICAgICAgIC5wbHVzKHJlbGF0aW9uc2hpcFR5cGVOYW1lKS5wbHVzKGV4dGVuc2lvbikpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50KQ0KKyAgICB9DQorDQorICAgIG92ZXJyaWRlIGZ1biBnZXRDYXBhYmlsaXR5RGVmaW5pdGlvbihjYXBhYmlsaXR5RGVmaW5pdGlvbk5hbWU6IFN0cmluZyk6IENhcGFiaWxpdHlEZWZpbml0aW9uPyB7DQorICAgICAgICB2YWwgY29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKEZpbGUoY2FwYWJpbGl0eVR5cGVQYXRoLnBsdXMoQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikNCisgICAgICAgICAgICAgICAgLnBsdXMoY2FwYWJpbGl0eURlZmluaXRpb25OYW1lKS5wbHVzKGV4dGVuc2lvbikpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50KQ0KKyAgICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlLmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRFbmhhbmNlclNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNzI4NwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlLmt0CkBAIC0wLDAgKzEsMjQwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZQ0KKw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRUeXBlcw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS4qDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mb3JtYXQNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZQ0KKw0KKy8qKg0KKyAqIEJsdWVQcmludEVuaGFuY2VyU2VydmljZQ0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICoNCisgKi8NCitpbnRlcmZhY2UgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlIDogU2VyaWFsaXphYmxlIHsNCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZW5oYW5jZShjb250ZW50OiBTdHJpbmcpOiBTZXJ2aWNlVGVtcGxhdGUNCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gZW5oYW5jZShzZXJ2aWNlVGVtcGxhdGU6IFNlcnZpY2VUZW1wbGF0ZSk6IFNlcnZpY2VUZW1wbGF0ZQ0KKw0KKyAgICAvKioNCisgICAgICogUmVhZCBCbHVlcHJpbnQgZnJvbSBDU0FSIHN0cnVjdHVyZSBEaXJlY3RvcnkNCisgICAgICovDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgZnVuIGVuaGFuY2UoZmlsZU5hbWU6IFN0cmluZywgYmFzZVBhdGg6IFN0cmluZyk6IFNlcnZpY2VUZW1wbGF0ZQ0KK30NCisNCitvcGVuIGNsYXNzIEJsdWVQcmludEVuaGFuY2VyRGVmYXVsdFNlcnZpY2UodmFsIGJsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2U6IEJsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2UpIDogQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlIHsNCisNCisgICAgcHJpdmF0ZSB2YWwgbG9nOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihCbHVlUHJpbnRFbmhhbmNlckRlZmF1bHRTZXJ2aWNlOjpjbGFzcy5qYXZhKQ0KKw0KKyAgICBsYXRlaW5pdCB2YXIgc2VydmljZVRlbXBsYXRlOiBTZXJ2aWNlVGVtcGxhdGUNCisNCisgICAgb3ZlcnJpZGUgZnVuIGVuaGFuY2UoY29udGVudDogU3RyaW5nKTogU2VydmljZVRlbXBsYXRlIHsNCisgICAgICAgIFRPRE8oIm5vdCBpbXBsZW1lbnRlZCIpIC8vVG8gY2hhbmdlIGJvZHkgb2YgY3JlYXRlZCBmdW5jdGlvbnMgdXNlIEZpbGUgfCBTZXR0aW5ncyB8IEZpbGUgVGVtcGxhdGVzLg0KKyAgICB9DQorDQorICAgIG92ZXJyaWRlIGZ1biBlbmhhbmNlKGZpbGVOYW1lOiBTdHJpbmcsIGJhc2VQYXRoOiBTdHJpbmcpOiBTZXJ2aWNlVGVtcGxhdGUgew0KKyAgICAgICAgVE9ETygibm90IGltcGxlbWVudGVkIikgLy9UbyBjaGFuZ2UgYm9keSBvZiBjcmVhdGVkIGZ1bmN0aW9ucyB1c2UgRmlsZSB8IFNldHRpbmdzIHwgRmlsZSBUZW1wbGF0ZXMuDQorICAgIH0NCisNCisgICAgb3ZlcnJpZGUgZnVuIGVuaGFuY2Uoc2VydmljZVRlbXBsYXRlOiBTZXJ2aWNlVGVtcGxhdGUpOiBTZXJ2aWNlVGVtcGxhdGUgew0KKyAgICAgICAgdGhpcy5zZXJ2aWNlVGVtcGxhdGUgPSBzZXJ2aWNlVGVtcGxhdGUNCisgICAgICAgIGluaXRpYWxDbGVhblVwKCkNCisgICAgICAgIGVucmljaFRvcG9sb2d5VGVtcGxhdGUoc2VydmljZVRlbXBsYXRlKQ0KKw0KKyAgICAgICAvLyBsb2cuaW5mbygiRW5yaWNoZWQgQmx1ZXByaW50IDpcbiB7fSIsIEphY2tzb25VdGlscy5nZXRKc29uKHNlcnZpY2VUZW1wbGF0ZSwgdHJ1ZSkpDQorICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlVGVtcGxhdGUNCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBpbml0aWFsQ2xlYW5VcCgpIHsNCisgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5hcnRpZmFjdFR5cGVzPy5jbGVhcigpDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUubm9kZVR5cGVzPy5jbGVhcigpDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZGF0YVR5cGVzPy5jbGVhcigpDQorDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuYXJ0aWZhY3RUeXBlcyA9IEhhc2hNYXAoKQ0KKyAgICAgICAgc2VydmljZVRlbXBsYXRlLm5vZGVUeXBlcyA9IEhhc2hNYXAoKQ0KKyAgICAgICAgc2VydmljZVRlbXBsYXRlLmRhdGFUeXBlcyA9IEhhc2hNYXAoKQ0KKw0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIGVucmljaFRvcG9sb2d5VGVtcGxhdGUoc2VydmljZVRlbXBsYXRlOiBTZXJ2aWNlVGVtcGxhdGUpIHsNCisgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS50b3BvbG9neVRlbXBsYXRlPy5sZXQgeyB0b3BvbG9neVRlbXBsYXRlIC0+DQorICAgICAgICAgICAgZW5yaWNoVG9wb2xvZ3lUZW1wbGF0ZUlucHV0cyh0b3BvbG9neVRlbXBsYXRlKQ0KKyAgICAgICAgICAgIGVucmljaFRvcG9sb2d5VGVtcGxhdGVOb2RlVGVtcGxhdGVzKHRvcG9sb2d5VGVtcGxhdGUpDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgb3BlbiBmdW4gZW5yaWNoVG9wb2xvZ3lUZW1wbGF0ZUlucHV0cyh0b3BvbG9neVRlbXBsYXRlOiBUb3BvbG9neVRlbXBsYXRlKSB7DQorICAgICAgICB0b3BvbG9neVRlbXBsYXRlLmlucHV0cz8ubGV0IHsgaW5wdXRzIC0+DQorICAgICAgICAgICAgZW5yaWNoUHJvcGVydHlEZWZpbml0aW9ucyhpbnB1dHMpDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgb3BlbiBmdW4gZW5yaWNoVG9wb2xvZ3lUZW1wbGF0ZU5vZGVUZW1wbGF0ZXModG9wb2xvZ3lUZW1wbGF0ZTogVG9wb2xvZ3lUZW1wbGF0ZSkgew0KKyAgICAgICAgdG9wb2xvZ3lUZW1wbGF0ZS5ub2RlVGVtcGxhdGVzPy5mb3JFYWNoIHsgbm9kZVRlbXBsYXRlTmFtZSwgbm9kZVRlbXBsYXRlIC0+DQorICAgICAgICAgICAgZW5yaWNoTm9kZVRlbXBsYXRlKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSkNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIGVucmljaE5vZGVUZW1wbGF0ZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIG5vZGVUZW1wbGF0ZTogTm9kZVRlbXBsYXRlKSB7DQorICAgICAgICB2YWwgbm9kZVR5cGVOYW1lID0gbm9kZVRlbXBsYXRlLnR5cGUNCisgICAgICAgIC8vIEdldCBOb2RlVHlwZSBmcm9tIFJlcG8gYW5kIFVwZGF0ZSBTZXJ2aWNlIFRlbXBsYXRlDQorICAgICAgICB2YWwgbm9kZVR5cGUgPSBwb3B1bGF0ZU5vZGVUeXBlKG5vZGVUeXBlTmFtZSkNCisNCisgICAgICAgIC8vIEVucmljaCBOb2RlVHlwZQ0KKyAgICAgICAgZW5yaWNoTm9kZVR5cGUobm9kZVR5cGVOYW1lLCBub2RlVHlwZSkNCisNCisgICAgICAgIC8vRW5yaWNoIE5vZGUgVGVtcGxhdGUgQXJ0aWZhY3RzDQorICAgICAgICBlbnJpY2hOb2RlVGVtcGxhdGVBcnRpZmFjdERlZmluaXRpb24obm9kZVRlbXBsYXRlTmFtZSwgbm9kZVRlbXBsYXRlKQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIGVucmljaE5vZGVUeXBlKG5vZGVUeXBlTmFtZTogU3RyaW5nLCBub2RlVHlwZTogTm9kZVR5cGUpIHsNCisNCisgICAgICAgIC8vIE5vZGVUeXBlIFByb3BlcnR5IERlZmluaXRpb25zDQorICAgICAgICBlbnJpY2hOb2RlVHlwZVByb3BlcnRpZXMobm9kZVR5cGVOYW1lLCBub2RlVHlwZSkNCisNCisgICAgICAgIC8vTm9kZVR5cGUgUmVxdWlyZW1lbnQNCisgICAgICAgIGVucmljaE5vZGVUeXBlUmVxdWlyZW1lbnRzKG5vZGVUeXBlTmFtZSwgbm9kZVR5cGUpDQorDQorICAgICAgICAvL05vZGVUeXBlIENhcGFiaWxpdHkNCisgICAgICAgIGVucmljaE5vZGVUeXBlQ2FwYWJpbGl0eVByb3BlcnRpZXMobm9kZVR5cGVOYW1lLCBub2RlVHlwZSkNCisNCisgICAgICAgIC8vTm9kZVR5cGUgSW50ZXJmYWNlDQorICAgICAgICBlbnJpY2hOb2RlVHlwZUludGVyZmFjZXMobm9kZVR5cGVOYW1lLCBub2RlVHlwZSkNCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBlbnJpY2hOb2RlVHlwZVByb3BlcnRpZXMobm9kZVR5cGVOYW1lOiBTdHJpbmcsIG5vZGVUeXBlOiBOb2RlVHlwZSkgew0KKyAgICAgICAgbm9kZVR5cGUucHJvcGVydGllcz8ubGV0IHsgZW5yaWNoUHJvcGVydHlEZWZpbml0aW9ucyhub2RlVHlwZS5wcm9wZXJ0aWVzISEpIH0NCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBlbnJpY2hOb2RlVHlwZVJlcXVpcmVtZW50cyhub2RlVHlwZU5hbWU6IFN0cmluZywgbm9kZVR5cGU6IE5vZGVUeXBlKSB7DQorDQorICAgICAgICBub2RlVHlwZS5yZXF1aXJlbWVudHM/LmZvckVhY2ggeyByZXF1aXJlbWVudERlZmluaXRpb25OYW1lLCByZXF1aXJlbWVudERlZmluaXRpb24gLT4NCisgICAgICAgICAgICAvLyBQb3B1bGF0ZSBSZXF1aXJlbWVudCBOb2RlDQorICAgICAgICAgICAgcmVxdWlyZW1lbnREZWZpbml0aW9uLm5vZGU/LmxldCB7IHJlcXVpcmVtZW50Tm9kZVR5cGVOYW1lIC0+DQorICAgICAgICAgICAgICAgIC8vIEdldCBSZXF1aXJlbWVudCBOb2RlVHlwZSBmcm9tIFJlcG8gYW5kIFVwZGF0ZSBTZXJ2aWNlIFRlbXBsYXRlDQorICAgICAgICAgICAgICAgIHZhbCByZXF1aXJlbWVudE5vZGVUeXBlID0gcG9wdWxhdGVOb2RlVHlwZShyZXF1aXJlbWVudE5vZGVUeXBlTmFtZSkNCisNCisgICAgICAgICAgICAgICAgZW5yaWNoTm9kZVR5cGUocmVxdWlyZW1lbnROb2RlVHlwZU5hbWUsIHJlcXVpcmVtZW50Tm9kZVR5cGUpDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIGVucmljaE5vZGVUeXBlQ2FwYWJpbGl0eVByb3BlcnRpZXMobm9kZVR5cGVOYW1lOiBTdHJpbmcsIG5vZGVUeXBlOiBOb2RlVHlwZSkgew0KKyAgICAgICAgbm9kZVR5cGUuY2FwYWJpbGl0aWVzPy5mb3JFYWNoIHsgY2FwYWJpbGl0eURlZmluaXRpb25OYW1lLCBjYXBhYmlsaXR5RGVmaW5pdGlvbiAtPg0KKyAgICAgICAgICAgIGNhcGFiaWxpdHlEZWZpbml0aW9uLnByb3BlcnRpZXM/LmxldCB7IHByb3BlcnRpZXMgLT4NCisgICAgICAgICAgICAgICAgZW5yaWNoUHJvcGVydHlEZWZpbml0aW9ucyhwcm9wZXJ0aWVzKQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBlbnJpY2hOb2RlVHlwZUludGVyZmFjZXMobm9kZVR5cGVOYW1lOiBTdHJpbmcsIG5vZGVUeXBlOiBOb2RlVHlwZSkgew0KKyAgICAgICAgbm9kZVR5cGUuaW50ZXJmYWNlcz8uZm9yRWFjaCB7IGludGVyZmFjZU5hbWUsIGludGVyZmFjZU9iaiAtPg0KKyAgICAgICAgICAgIC8vIFBvcHVsYXRlIE5vZGUgdHlwZSBJbnRlcmZhY2UgT3BlcmF0aW9uDQorICAgICAgICAgICAgbG9nLmluZm8oIioqKiAqKiBFbnJpY2hpbmcgTm9kZVR5cGU6IHt9IEludGVyZmFjZSB7fSIsIG5vZGVUeXBlTmFtZSwgaW50ZXJmYWNlTmFtZSkNCisgICAgICAgICAgICBwb3B1bGF0ZU5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uKG5vZGVUeXBlTmFtZSwgaW50ZXJmYWNlTmFtZSwgaW50ZXJmYWNlT2JqKQ0KKw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIHBvcHVsYXRlTm9kZVR5cGVJbnRlcmZhY2VPcGVyYXRpb24obm9kZVR5cGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlT2JqOiBJbnRlcmZhY2VEZWZpbml0aW9uKSB7DQorDQorICAgICAgICBpbnRlcmZhY2VPYmoub3BlcmF0aW9ucz8uZm9yRWFjaCB7IG9wZXJhdGlvbk5hbWUsIG9wZXJhdGlvbiAtPg0KKyAgICAgICAgICAgIGVucmljaE5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzKG5vZGVUeXBlTmFtZSwgb3BlcmF0aW9uTmFtZSwgb3BlcmF0aW9uKQ0KKyAgICAgICAgICAgIGVucmljaE5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uT3B1dHB1dHMobm9kZVR5cGVOYW1lLCBvcGVyYXRpb25OYW1lLCBvcGVyYXRpb24pDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgb3BlbiBmdW4gZW5yaWNoTm9kZVR5cGVJbnRlcmZhY2VPcGVyYXRpb25JbnB1dHMobm9kZVR5cGVOYW1lOiBTdHJpbmcsIG9wZXJhdGlvbk5hbWU6IFN0cmluZywgb3BlcmF0aW9uOiBPcGVyYXRpb25EZWZpbml0aW9uKSB7DQorICAgICAgICBvcGVyYXRpb24uaW5wdXRzPy5sZXQgeyBpbnB1dHMgLT4NCisgICAgICAgICAgICBlbnJpY2hQcm9wZXJ0eURlZmluaXRpb25zKGlucHV0cykNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBlbnJpY2hOb2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbk9wdXRwdXRzKG5vZGVUeXBlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcsIG9wZXJhdGlvbjogT3BlcmF0aW9uRGVmaW5pdGlvbikgew0KKyAgICAgICAgb3BlcmF0aW9uLm91dHB1dHM/LmxldCB7IGlucHV0cyAtPg0KKyAgICAgICAgICAgIGVucmljaFByb3BlcnR5RGVmaW5pdGlvbnMoaW5wdXRzKQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIGVucmljaFByb3BlcnR5RGVmaW5pdGlvbnMocHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4pIHsNCisNCisgICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaCB7IHByb3BlcnR5TmFtZSwgcHJvcGVydHlEZWZpbml0aW9uIC0+DQorICAgICAgICAgICAgZW5yaWNoUHJvcGVydHlEZWZpbml0aW9uKHByb3BlcnR5TmFtZSwgcHJvcGVydHlEZWZpbml0aW9uKQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIGVucmljaFByb3BlcnR5RGVmaW5pdGlvbihwcm9wZXJ0eU5hbWU6IFN0cmluZywgcHJvcGVydHlEZWZpbml0aW9uOiBQcm9wZXJ0eURlZmluaXRpb24pIHsNCisgICAgICAgIHZhbCBwcm9wZXJ0eVR5cGUgPSBwcm9wZXJ0eURlZmluaXRpb24udHlwZQ0KKyAgICAgICAgICAgICAgICA/OiB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oZm9ybWF0KCJQcm9wZXJ0eSB0eXBlIGlzIG1pc3NpbmcgZm9yIHByb3BlcnR5IDoge30iLCBwcm9wZXJ0eU5hbWUpKQ0KKyAgICAgICAgaWYgKEJsdWVQcmludFR5cGVzLnZhbGlkUHJpbWl0aXZlVHlwZXMoKS5jb250YWlucyhwcm9wZXJ0eVR5cGUpKSB7DQorDQorICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludFR5cGVzLnZhbGlkQ29sbGVjdGlvblR5cGVzKCkuY29udGFpbnMocHJvcGVydHlUeXBlKSkgew0KKyAgICAgICAgICAgIHZhbCBlbnRyeVNjaGVtYSA9IHByb3BlcnR5RGVmaW5pdGlvbi5lbnRyeVNjaGVtYQ0KKyAgICAgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKGZvcm1hdCgiRW50cnkgU2NoZW1hIGlzIG1pc3NpbmcgZm9yIGNvbGxlY3Rpb24gcHJvcGVydHkgOiB7fSIsIHByb3BlcnR5TmFtZSkpDQorDQorICAgICAgICAgICAgaWYgKCFCbHVlUHJpbnRUeXBlcy52YWxpZFByaW1pdGl2ZVR5cGVzKCkuY29udGFpbnMoZW50cnlTY2hlbWEudHlwZSkpIHsNCisgICAgICAgICAgICAgICAgcG9wdWxhdGVEYXRhVHlwZXMoZW50cnlTY2hlbWEudHlwZSkNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHBvcHVsYXRlRGF0YVR5cGVzKHByb3BlcnR5VHlwZSkNCisgICAgICAgIH0NCisNCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBlbnJpY2hOb2RlVGVtcGxhdGVBcnRpZmFjdERlZmluaXRpb24obm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCBub2RlVGVtcGxhdGU6IE5vZGVUZW1wbGF0ZSkgew0KKw0KKyAgICAgICAgbm9kZVRlbXBsYXRlLmFydGlmYWN0cz8uZm9yRWFjaCB7IGFydGlmYWN0RGVmaW5pdGlvbk5hbWUsIGFydGlmYWN0RGVmaW5pdGlvbiAtPg0KKyAgICAgICAgICAgIHZhbCBhcnRpZmFjdFR5cGVOYW1lID0gYXJ0aWZhY3REZWZpbml0aW9uLnR5cGUNCisgICAgICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoIkFydGlmYWN0IHR5cGUgaXMgbWlzc2luZyBmb3IgTm9kZVRlbXBsYXRlKHt9KSBhcnRpZmFjdCh7fSkiLCBub2RlVGVtcGxhdGVOYW1lLCBhcnRpZmFjdERlZmluaXRpb25OYW1lKSkNCisNCisgICAgICAgICAgICAvLyBQb3B1bGF0ZSBBcnRpZmFjdCBUeXBlDQorICAgICAgICAgICAgcG9wdWxhdGVBcnRpZmFjdFR5cGUoYXJ0aWZhY3RUeXBlTmFtZSkNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBvcGVuIGZ1biBwb3B1bGF0ZU5vZGVUeXBlKG5vZGVUeXBlTmFtZTogU3RyaW5nKTogTm9kZVR5cGUgew0KKyAgICAgICAgdmFsIG5vZGVUeXBlID0gYmx1ZVByaW50RW5oYW5jZXJSZXBvU2VydmljZS5nZXROb2RlVHlwZShub2RlVHlwZU5hbWUpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoIkNvdWxkbid0IGdldCBOb2RlVHlwZSh7fSkgZnJvbSByZXBvLiIsIG5vZGVUeXBlTmFtZSkpDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUubm9kZVR5cGVzPy5wdXQobm9kZVR5cGVOYW1lLCBub2RlVHlwZSkNCisgICAgICAgIHJldHVybiBub2RlVHlwZQ0KKyAgICB9DQorDQorICAgIG9wZW4gZnVuIHBvcHVsYXRlQXJ0aWZhY3RUeXBlKGFydGlmYWN0VHlwZU5hbWU6IFN0cmluZyk6IEFydGlmYWN0VHlwZSB7DQorICAgICAgICB2YWwgYXJ0aWZhY3RUeXBlID0gYmx1ZVByaW50RW5oYW5jZXJSZXBvU2VydmljZS5nZXRBcnRpZmFjdFR5cGUoYXJ0aWZhY3RUeXBlTmFtZSkNCisgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKGZvcm1hdCgiQ291bGRuJ3QgZ2V0IEFydGlmYWN0VHlwZSh7fSkgZnJvbSByZXBvLiIsIGFydGlmYWN0VHlwZU5hbWUpKQ0KKyAgICAgICAgc2VydmljZVRlbXBsYXRlLmFydGlmYWN0VHlwZXM/LnB1dChhcnRpZmFjdFR5cGVOYW1lLCBhcnRpZmFjdFR5cGUpDQorICAgICAgICByZXR1cm4gYXJ0aWZhY3RUeXBlDQorICAgIH0NCisNCisgICAgb3BlbiBmdW4gcG9wdWxhdGVEYXRhVHlwZXMoZGF0YVR5cGVOYW1lOiBTdHJpbmcpOiBEYXRhVHlwZSB7DQorICAgICAgICB2YWwgZGF0YVR5cGUgPSBibHVlUHJpbnRFbmhhbmNlclJlcG9TZXJ2aWNlLmdldERhdGFUeXBlKGRhdGFUeXBlTmFtZSkNCisgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKGZvcm1hdCgiQ291bGRuJ3QgZ2V0IERhdGFUeXBlKHt9KSBmcm9tIHJlcG8uIiwgZGF0YVR5cGVOYW1lKSkNCisgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5kYXRhVHlwZXM/LnB1dChkYXRhVHlwZU5hbWUsIGRhdGFUeXBlKQ0KKyAgICAgICAgcmV0dXJuIGRhdGFUeXBlDQorICAgIH0NCisNCit9DQorDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RXhwcmVzc2lvblNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5NTljNAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RXhwcmVzc2lvblNlcnZpY2Uua3QKQEAgLTAsMCArMSwxNzQgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5BcnJheU5vZGUNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLm5vZGUuT2JqZWN0Tm9kZQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRUeXBlcw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS4qDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHMNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK29iamVjdCBCbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZSB7DQorICAgIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIGdldEV4cHJlc3Npb25EYXRhKHByb3BlcnR5QXNzaWdubWVudDogQW55KTogRXhwcmVzc2lvbkRhdGEgew0KKyAgICAgICAgdmFsIHByb3BlcnR5QXNzaWdubWVudE5vZGU6IEpzb25Ob2RlID0gSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbU9iamVjdChwcm9wZXJ0eUFzc2lnbm1lbnQpDQorICAgICAgICByZXR1cm4gZ2V0RXhwcmVzc2lvbkRhdGEocHJvcGVydHlBc3NpZ25tZW50Tm9kZSkNCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBnZXRFeHByZXNzaW9uRGF0YShwcm9wZXJ0eUFzc2lnbm1lbnROb2RlOiBKc29uTm9kZSk6IEV4cHJlc3Npb25EYXRhIHsNCisgICAgICAgIGxvZ2dlci50cmFjZSgiQXNzaWdubWVudCBEYXRhL0V4cHJlc3Npb24gOiB7fSIsIHByb3BlcnR5QXNzaWdubWVudE5vZGUpDQorICAgICAgICB2YWwgZXhwcmVzc2lvbkRhdGEgPSBFeHByZXNzaW9uRGF0YSh2YWx1ZU5vZGUgPSBwcm9wZXJ0eUFzc2lnbm1lbnROb2RlKQ0KKyAgICAgICAgaWYgKHByb3BlcnR5QXNzaWdubWVudE5vZGUgaXMgT2JqZWN0Tm9kZSkgew0KKw0KKyAgICAgICAgICAgIHZhbCBjb21tYW5kczogU2V0PFN0cmluZz4gPSBwcm9wZXJ0eUFzc2lnbm1lbnROb2RlLmZpZWxkTmFtZXMoKS5hc1NlcXVlbmNlKCkudG9MaXN0KCkuaW50ZXJzZWN0KEJsdWVQcmludFR5cGVzLnZhbGlkQ29tbWFuZHMoKSkNCisgICAgICAgICAgICBpZiAoY29tbWFuZHMuaXNOb3RFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIGV4cHJlc3Npb25EYXRhLmlzRXhwcmVzc2lvbiA9IHRydWUNCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEuY29tbWFuZCA9IGNvbW1hbmRzLmZpcnN0KCkNCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEuZXhwcmVzc2lvbk5vZGUgPSBwcm9wZXJ0eUFzc2lnbm1lbnROb2RlDQorDQorICAgICAgICAgICAgICAgIHdoZW4gKGV4cHJlc3Npb25EYXRhLmNvbW1hbmQpIHsNCisgICAgICAgICAgICAgICAgICAgIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuRVhQUkVTU0lPTl9HRVRfSU5QVVQgLT4gew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25EYXRhLmlucHV0RXhwcmVzc2lvbiA9IHBvcHVsYXRlSW5wdXRFeHByZXNzaW9uKHByb3BlcnR5QXNzaWdubWVudE5vZGUpDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX0FUVFJJQlVURSAtPiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEuYXR0cmlidXRlRXhwcmVzc2lvbiA9IHBvcHVsYXRlQXR0cmlidXRlRXhwcmVzc2lvbihwcm9wZXJ0eUFzc2lnbm1lbnROb2RlKQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9QUk9QRVJUWSAtPiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEucHJvcGVydHlFeHByZXNzaW9uID0gcG9wdWxhdGVQcm9wZXJ0eUV4cHJlc3Npb24ocHJvcGVydHlBc3NpZ25tZW50Tm9kZSkNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuRVhQUkVTU0lPTl9HRVRfT1BFUkFUSU9OX09VVFBVVCAtPiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEub3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbiA9IHBvcHVsYXRlT3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbihwcm9wZXJ0eUFzc2lnbm1lbnROb2RlKQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9BUlRJRkFDVCAtPiB7DQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbkRhdGEuYXJ0aWZhY3RFeHByZXNzaW9uID0gcG9wdWxhdGVBcnRpZmFjdEV4cHJlc3Npb24ocHJvcGVydHlBc3NpZ25tZW50Tm9kZSkNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBleHByZXNzaW9uRGF0YQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIHBvcHVsYXRlSW5wdXRFeHByZXNzaW9uKGpzb25Ob2RlOiBKc29uTm9kZSk6IElucHV0RXhwcmVzc2lvbiB7DQorICAgICAgICByZXR1cm4gSW5wdXRFeHByZXNzaW9uKHByb3BlcnR5TmFtZSA9IGpzb25Ob2RlLmZpcnN0KCkudGV4dFZhbHVlKCkpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gcG9wdWxhdGVQcm9wZXJ0eUV4cHJlc3Npb24oanNvbk5vZGU6IEpzb25Ob2RlKTogUHJvcGVydHlFeHByZXNzaW9uIHsNCisgICAgICAgIHZhbCBhcnJheU5vZGU6IEFycmF5Tm9kZSA9IGpzb25Ob2RlLmZpcnN0KCkgYXMgQXJyYXlOb2RlDQorICAgICAgICBjaGVjayhhcnJheU5vZGUuc2l6ZSgpID49IDIpIHsNCisgICAgICAgICAgICB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgibWlzc2luZyBwcm9wZXJ0eSBleHByZXNzaW9uLCAiICsNCisgICAgICAgICAgICAgICAgICAgICJpdCBzaG91bGQgYmUgWyA8bW9kZWxhYmxlX2VudGl0eV9uYW1lPiwgPG9wdGlvbmFsX3JlcV9vcl9jYXBfbmFtZT4sIDxwcm9wZXJ0eV9uYW1lPiwgIiArDQorICAgICAgICAgICAgICAgICAgICAiPG5lc3RlZF9wcm9wZXJ0eV9uYW1lX29yX2luZGV4XzE+LCAuLi4sIDxuZXN0ZWRfcHJvcGVydHlfbmFtZV9vcl9pbmRleF9uPiBdICwgYnV0IHByZXNlbnQge30iLCBqc29uTm9kZSkpDQorICAgICAgICB9DQorICAgICAgICB2YXIgcmVxT3JDYXBFbnRpdHlOYW1lOiBTdHJpbmc/ID0gbnVsbA0KKyAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9ICIiDQorICAgICAgICB2YXIgc3ViUHJvcGVydHk6IFN0cmluZz8gPSBudWxsDQorICAgICAgICBpZiAoYXJyYXlOb2RlLnNpemUoKSA9PSAyKSB7DQorICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gYXJyYXlOb2RlWzFdLnRleHRWYWx1ZSgpDQorICAgICAgICB9IGVsc2UgaWYgKGFycmF5Tm9kZS5zaXplKCkgPT0gMykgew0KKyAgICAgICAgICAgIHJlcU9yQ2FwRW50aXR5TmFtZSA9IGFycmF5Tm9kZVsxXS50ZXh0VmFsdWUoKQ0KKyAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGFycmF5Tm9kZVsyXS50ZXh0VmFsdWUoKQ0KKyAgICAgICAgfSBlbHNlIGlmIChhcnJheU5vZGUuc2l6ZSgpID4gMykgew0KKyAgICAgICAgICAgIHJlcU9yQ2FwRW50aXR5TmFtZSA9IGFycmF5Tm9kZVsxXS50ZXh0VmFsdWUoKQ0KKyAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGFycmF5Tm9kZVsyXS50ZXh0VmFsdWUoKQ0KKyAgICAgICAgICAgIHZhbCBwcm9wZXJ0eVBhdGhzOiBMaXN0PFN0cmluZz4gPSBhcnJheU5vZGUuZmlsdGVySW5kZXhlZCB7IGluZGV4LCBvYmogLT4NCisgICAgICAgICAgICAgICAgaW5kZXggPj0gMw0KKyAgICAgICAgICAgIH0ubWFwIHsgaXQudGV4dFZhbHVlKCkgfQ0KKyAgICAgICAgICAgIHN1YlByb3BlcnR5ID0gcHJvcGVydHlQYXRocy5qb2luVG9TdHJpbmcoIi8iKQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIFByb3BlcnR5RXhwcmVzc2lvbihtb2RlbGFibGVFbnRpdHlOYW1lID0gYXJyYXlOb2RlWzBdLmFzVGV4dCgpLA0KKyAgICAgICAgICAgICAgICByZXFPckNhcEVudGl0eU5hbWUgPSByZXFPckNhcEVudGl0eU5hbWUsDQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZSwNCisgICAgICAgICAgICAgICAgc3ViUHJvcGVydHlOYW1lID0gc3ViUHJvcGVydHkNCisgICAgICAgICkNCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBwb3B1bGF0ZUF0dHJpYnV0ZUV4cHJlc3Npb24oanNvbk5vZGU6IEpzb25Ob2RlKTogQXR0cmlidXRlRXhwcmVzc2lvbiB7DQorICAgICAgICB2YWwgYXJyYXlOb2RlOiBBcnJheU5vZGUgPSBqc29uTm9kZS5maXJzdCgpIGFzIEFycmF5Tm9kZQ0KKyAgICAgICAgY2hlY2soYXJyYXlOb2RlLnNpemUoKSA+PSAzKSB7DQorICAgICAgICAgICAgdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIm1pc3NpbmcgYXR0cmlidXRlIGV4cHJlc3Npb24sICIgKw0KKyAgICAgICAgICAgICAgICAgICAgIml0IHNob3VsZCBiZSBbIDxtb2RlbGFibGVfZW50aXR5X25hbWU+LCA8b3B0aW9uYWxfcmVxX29yX2NhcF9uYW1lPiwgPGF0dHJpYnV0ZV9uYW1lPiwiICsNCisgICAgICAgICAgICAgICAgICAgICIgPG5lc3RlZF9hdHRyaWJ1dGVfbmFtZV9vcl9pbmRleF8xPiwgLi4uLCA8bmVzdGVkX2F0dHJpYnV0ZV9uYW1lX29yX2luZGV4X24+IF0gLCBidXQgcHJlc2VudCB7fSIsIGpzb25Ob2RlKSkNCisgICAgICAgIH0NCisNCisgICAgICAgIHZhciByZXFPckNhcEVudGl0eU5hbWU6IFN0cmluZz8gPSBudWxsDQorICAgICAgICB2YXIgcHJvcGVydHlOYW1lOiBTdHJpbmcgPSAiIg0KKyAgICAgICAgdmFyIHN1YlByb3BlcnR5OiBTdHJpbmc/ID0gbnVsbA0KKyAgICAgICAgaWYgKGFycmF5Tm9kZS5zaXplKCkgPT0gMikgew0KKyAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGFycmF5Tm9kZVsxXS50ZXh0VmFsdWUoKQ0KKyAgICAgICAgfSBlbHNlIGlmIChhcnJheU5vZGUuc2l6ZSgpID09IDMpIHsNCisgICAgICAgICAgICByZXFPckNhcEVudGl0eU5hbWUgPSBhcnJheU5vZGVbMV0udGV4dFZhbHVlKCkNCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBhcnJheU5vZGVbMl0udGV4dFZhbHVlKCkNCisgICAgICAgIH0gZWxzZSBpZiAoYXJyYXlOb2RlLnNpemUoKSA+IDMpIHsNCisgICAgICAgICAgICByZXFPckNhcEVudGl0eU5hbWUgPSBhcnJheU5vZGVbMV0udGV4dFZhbHVlKCkNCisgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBhcnJheU5vZGVbMl0udGV4dFZhbHVlKCkNCisgICAgICAgICAgICB2YWwgcHJvcGVydHlQYXRoczogTGlzdDxTdHJpbmc+ID0gYXJyYXlOb2RlLmZpbHRlckluZGV4ZWQgeyBpbmRleCwgb2JqIC0+DQorICAgICAgICAgICAgICAgIGluZGV4ID49IDMNCisgICAgICAgICAgICB9Lm1hcCB7IGl0LnRleHRWYWx1ZSgpIH0NCisgICAgICAgICAgICBzdWJQcm9wZXJ0eSA9IHByb3BlcnR5UGF0aHMuam9pblRvU3RyaW5nKCIvIikNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVFeHByZXNzaW9uKG1vZGVsYWJsZUVudGl0eU5hbWUgPSBhcnJheU5vZGVbMF0uYXNUZXh0KCksDQorICAgICAgICAgICAgICAgIHJlcU9yQ2FwRW50aXR5TmFtZSA9IHJlcU9yQ2FwRW50aXR5TmFtZSwNCisgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5TmFtZSwNCisgICAgICAgICAgICAgICAgc3ViQXR0cmlidXRlTmFtZSA9IHN1YlByb3BlcnR5DQorICAgICAgICApDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gcG9wdWxhdGVPcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uKGpzb25Ob2RlOiBKc29uTm9kZSk6IE9wZXJhdGlvbk91dHB1dEV4cHJlc3Npb24gew0KKyAgICAgICAgdmFsIGFycmF5Tm9kZTogQXJyYXlOb2RlID0ganNvbk5vZGUuZmlyc3QoKSBhcyBBcnJheU5vZGUNCisNCisgICAgICAgIGNoZWNrKGFycmF5Tm9kZS5zaXplKCkgPj0gNCkgew0KKyAgICAgICAgICAgIHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJtaXNzaW5nIG9wZXJhdGlvbiBvdXRwdXQgZXhwcmVzc2lvbiwgIiArDQorICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGJlICg8bW9kZWxhYmxlX2VudGl0eV9uYW1lPiwgPGludGVyZmFjZV9uYW1lPiwgPG9wZXJhdGlvbl9uYW1lPiwgPG91dHB1dF92YXJpYWJsZV9uYW1lPikgLCBidXQgcHJlc2VudCB7fSIsIGpzb25Ob2RlKSkNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBPcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uKG1vZGVsYWJsZUVudGl0eU5hbWUgPSBhcnJheU5vZGVbMF0uYXNUZXh0KCksDQorICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWUgPSBhcnJheU5vZGVbMV0uYXNUZXh0KCksDQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWUgPSBhcnJheU5vZGVbMl0uYXNUZXh0KCksDQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IGFycmF5Tm9kZVszXS5hc1RleHQoKQ0KKyAgICAgICAgKQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIHBvcHVsYXRlQXJ0aWZhY3RFeHByZXNzaW9uKGpzb25Ob2RlOiBKc29uTm9kZSk6IEFydGlmYWN0RXhwcmVzc2lvbiB7DQorICAgICAgICB2YWwgYXJyYXlOb2RlOiBBcnJheU5vZGUgPSBqc29uTm9kZS5maXJzdCgpIGFzIEFycmF5Tm9kZQ0KKw0KKyAgICAgICAgY2hlY2soYXJyYXlOb2RlLnNpemUoKSA+PSAyKSB7DQorICAgICAgICAgICAgdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIm1pc3NpbmcgYXJ0aWZhY3QgZXhwcmVzc2lvbiwgIiArDQorICAgICAgICAgICAgICAgICAgICAiaXQgc2hvdWxkIGJlIFsgPG1vZGVsYWJsZV9lbnRpdHlfbmFtZT4sIDxhcnRpZmFjdF9uYW1lPiwgPGxvY2F0aW9uPiwgPHJlbW92ZT4gXSAsIGJ1dCBwcmVzZW50IHt9IiwganNvbk5vZGUpKQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIEFydGlmYWN0RXhwcmVzc2lvbihtb2RlbGFibGVFbnRpdHlOYW1lID0gYXJyYXlOb2RlWzBdLmFzVGV4dCgpLA0KKyAgICAgICAgICAgICAgICBhcnRpZmFjdE5hbWUgPSBhcnJheU5vZGVbMV0uYXNUZXh0KCksDQorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gYXJyYXlOb2RlWzJdPy5hc1RleHQoKSA/OiAiTE9DQUxfRklMRSIsDQorICAgICAgICAgICAgICAgIHJlbW92ZSA9IGFycmF5Tm9kZVszXT8uYXNCb29sZWFuKCkgPzogZmFsc2UNCisgICAgICAgICkNCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFBhcnNlclNlcnZpY2Uua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFBhcnNlclNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I5MTcyMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50UGFyc2VyU2VydmljZS5rdApAQCAtMCwwICsxLDYyIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZQ0KKw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5TZXJ2aWNlVGVtcGxhdGUNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLlNlcnZpY2VUZW1wbGF0ZVV0aWxzDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXINCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3RvcnkNCitpbXBvcnQgamF2YS5pby5GaWxlDQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlDQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQoraW50ZXJmYWNlIEJsdWVQcmludFBhcnNlclNlcnZpY2UgOiBTZXJpYWxpemFibGUgew0KKyAgICBmdW4gcmVhZEJsdWVwcmludChjb250ZW50OiBTdHJpbmcpIDogQmx1ZVByaW50Q29udGV4dA0KKyAgICBmdW4gcmVhZEJsdWVwcmludEZpbGUoZmlsZU5hbWU6IFN0cmluZykgOiBCbHVlUHJpbnRDb250ZXh0DQorICAgIC8qKg0KKyAgICAgKiBSZWFkIEJsdWVwcmludCBmcm9tIENTQVIgc3RydWN0dXJlIERpcmVjdG9yeQ0KKyAgICAgKi8NCisgICAgZnVuIHJlYWRCbHVlcHJpbnRGaWxlKGZpbGVOYW1lOiBTdHJpbmcsIGJhc2VQYXRoIDogU3RyaW5nKSA6IEJsdWVQcmludENvbnRleHQNCit9DQorDQorY2xhc3MgQmx1ZVByaW50UGFyc2VyRGVmYXVsdFNlcnZpY2UgOiBCbHVlUHJpbnRQYXJzZXJTZXJ2aWNlIHsNCisNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICB2YXIgYmFzZVBhdGggOiBTdHJpbmcgPSBqYXZhQ2xhc3MuY2xhc3NMb2FkZXIuZ2V0UmVzb3VyY2UoIi4iKS5wYXRoDQorDQorICAgIG92ZXJyaWRlIGZ1biByZWFkQmx1ZXByaW50KGNvbnRlbnQ6IFN0cmluZyk6IEJsdWVQcmludENvbnRleHQgew0KKyAgICAgICAgcmV0dXJuIEJsdWVQcmludENvbnRleHQoU2VydmljZVRlbXBsYXRlVXRpbHMuZ2V0U2VydmljZVRlbXBsYXRlRnJvbUNvbnRlbnQoY29udGVudCkpDQorICAgIH0NCisNCisgICAgb3ZlcnJpZGUgZnVuIHJlYWRCbHVlcHJpbnRGaWxlKGZpbGVOYW1lOiBTdHJpbmcpOiBCbHVlUHJpbnRDb250ZXh0IHsNCisgICAgICAgIHJldHVybiByZWFkQmx1ZXByaW50RmlsZShmaWxlTmFtZSwgYmFzZVBhdGggKQ0KKyAgICB9DQorDQorICAgIG92ZXJyaWRlIGZ1biByZWFkQmx1ZXByaW50RmlsZShmaWxlTmFtZTogU3RyaW5nLCBiYXNlUGF0aCA6IFN0cmluZyk6IEJsdWVQcmludENvbnRleHQgew0KKyAgICAgICAgdmFsIHJvb3RGaWxlUGF0aDogU3RyaW5nID0gU3RyaW5nQnVpbGRlcigpLmFwcGVuZChiYXNlUGF0aCkuYXBwZW5kKEZpbGUuc2VwYXJhdG9yKS5hcHBlbmQoZmlsZU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIHZhbCByb290U2VydmljZVRlbXBsYXRlIDogU2VydmljZVRlbXBsYXRlID0gU2VydmljZVRlbXBsYXRlVXRpbHMuZ2V0U2VydmljZVRlbXBsYXRlKHJvb3RGaWxlUGF0aCkNCisgICAgICAgIC8vIFRPRE8oIk5lc3RlZCBMb29rdXAgSW1wbGVtZW50YXRpb24gYmFzZWQgb24gSW1wb3J0IGZpbGVzIikNCisgICAgICAgIHJldHVybiBCbHVlUHJpbnRDb250ZXh0KHJvb3RTZXJ2aWNlVGVtcGxhdGUpDQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRSdW50aW1lU2VydmljZS5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50UnVudGltZVNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzZjVmNAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50UnVudGltZVNlcnZpY2Uua3QKQEAgLTAsMCArMSwyNzQgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5OdWxsTm9kZQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5PcmNoZXN0cmF0b3JFeGNlcHRpb24NCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuQXJ0aWZhY3REZWZpbml0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLk5vZGVUZW1wbGF0ZQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5Qcm9wZXJ0eURlZmluaXRpb24NCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlscw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorY2xhc3MgQmx1ZVByaW50UnVudGltZVNlcnZpY2UodmFyIGJsdWVQcmludENvbnRleHQ6IEJsdWVQcmludENvbnRleHQsIHZhciBjb250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55PiA9IGhhc2hNYXBPZigpKSB7DQorDQorICAgIHByaXZhdGUgdmFsIGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpczo6Y2xhc3MudG9TdHJpbmcoKSkNCisNCisgICAgLyoNCisgICAgICAgIEdldCB0aGUgTm9kZSBUeXBlIERlZmluaXRpb24gZm9yIHRoZSBOb2RlIFRlbXBsYXRlLCBUaGVuIGl0ZXJhdGUgTm9kZSBUeXBlIFByb3BlcnRpZXMgYW5kIHJlc29sdmUgdGhlIGV4cHJlc3NpbmcNCisgICAgICovDQorICAgIGZ1biByZXNvbHZlTm9kZVRlbXBsYXRlUHJvcGVydGllcyhub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcpOiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pz4gew0KKyAgICAgICAgbG9nZ2VyLmluZm8oInJlc29sdmVOb2RlVGVtcGxhdGVQcm9wZXJ0eVZhbHVlcyBmb3Igbm9kZSB0ZW1wbGF0ZSAoe30pIiwgbm9kZVRlbXBsYXRlTmFtZSkNCisgICAgICAgIHZhbCBwcm9wZXJ0eUFzc2lnbm1lbnRWYWx1ZTogTXV0YWJsZU1hcDxTdHJpbmcsIEFueT8+ID0gaGFzaE1hcE9mKCkNCisNCisgICAgICAgIHZhbCBub2RlVGVtcGxhdGU6IE5vZGVUZW1wbGF0ZSA9IGJsdWVQcmludENvbnRleHQubm9kZVRlbXBsYXRlQnlOYW1lKG5vZGVUZW1wbGF0ZU5hbWUpDQorDQorICAgICAgICB2YWwgcHJvcGVydHlBc3NpZ25tZW50czogTXV0YWJsZU1hcDxTdHJpbmcsIEFueT8+ID0NCisgICAgICAgICAgICAgICAgbm9kZVRlbXBsYXRlLnByb3BlcnRpZXMgYXMgTXV0YWJsZU1hcDxTdHJpbmcsIEFueT8+DQorDQorICAgICAgICAvLyBHZXQgdGhlIE5vZGUgVHlwZSBEZWZpbml0aW9ucw0KKyAgICAgICAgdmFsIG5vZGVUeXBlUHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gPQ0KKyAgICAgICAgICAgICAgICBibHVlUHJpbnRDb250ZXh0Lm5vZGVUeXBlQ2hhaW5lZFByb3BlcnRpZXMobm9kZVRlbXBsYXRlLnR5cGUpISENCisNCisgICAgICAgIC8vIEl0ZXJhdGUgTm9kZSBUeXBlIFByb3BlcnRpZXMNCisgICAgICAgIG5vZGVUeXBlUHJvcGVydGllcy5mb3JFYWNoIHsgbm9kZVR5cGVQcm9wZXJ0eU5hbWUsIG5vZGVUeXBlUHJvcGVydHkgLT4NCisgICAgICAgICAgICAvLyBHZXQgdGhlIEV4cHJlc3Mgb3IgVmFsdWUgZm9yIHRoZSBOb2RlIFRlbXBsYXRlDQorICAgICAgICAgICAgdmFsIHByb3BlcnR5QXNzaWdubWVudDogQW55PyA9IHByb3BlcnR5QXNzaWdubWVudHNbbm9kZVR5cGVQcm9wZXJ0eU5hbWVdDQorDQorICAgICAgICAgICAgdmFyIHJlc29sdmVkVmFsdWU6IEpzb25Ob2RlID0gTnVsbE5vZGUuZ2V0SW5zdGFuY2UoKQ0KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUFzc2lnbm1lbnQgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBFeHByZXNzaW5nDQorICAgICAgICAgICAgICAgIHZhbCBwcm9wZXJ0eUFzc2lnbm1lbnRFeHByZXNzaW9uID0gUHJvcGVydHlBc3NpZ25tZW50U2VydmljZShjb250ZXh0LCB0aGlzKQ0KKyAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlID0gcHJvcGVydHlBc3NpZ25tZW50RXhwcmVzc2lvbi5yZXNvbHZlQXNzaWdubWVudEV4cHJlc3Npb24obm9kZVRlbXBsYXRlTmFtZSwgbm9kZVR5cGVQcm9wZXJ0eU5hbWUsIHByb3BlcnR5QXNzaWdubWVudCkNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAvLyBBc3NpZ24gZGVmYXVsdCB2YWx1ZSB0byB0aGUgT3BlcmF0aW9uDQorICAgICAgICAgICAgICAgIG5vZGVUeXBlUHJvcGVydHkuZGVmYXVsdFZhbHVlPy5sZXQgew0KKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IEphY2tzb25VdGlscy5qc29uTm9kZUZyb21PYmplY3Qobm9kZVR5cGVQcm9wZXJ0eS5kZWZhdWx0VmFsdWUhISkNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICAvLyBTZXQgZm9yIFJldHVybiBvZiBtZXRob2QNCisgICAgICAgICAgICBwcm9wZXJ0eUFzc2lnbm1lbnRWYWx1ZVtub2RlVHlwZVByb3BlcnR5TmFtZV0gPSByZXNvbHZlZFZhbHVlDQorICAgICAgICB9DQorICAgICAgICBsb2dnZXIuaW5mbygicmVzb2x2ZWQgcHJvcGVydHkgZGVmaW5pdGlvbiBmb3Igbm9kZSB0ZW1wbGF0ZSAoe30pLCB2YWx1ZXMgKHt9KSIsIG5vZGVUZW1wbGF0ZU5hbWUsIHByb3BlcnR5QXNzaWdubWVudFZhbHVlKQ0KKyAgICAgICAgcmV0dXJuIHByb3BlcnR5QXNzaWdubWVudFZhbHVlDQorICAgIH0NCisNCisgICAgZnVuIHJlc29sdmVOb2RlVGVtcGxhdGVJbnRlcmZhY2VPcGVyYXRpb25JbnB1dHMobm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lOiBTdHJpbmcsIG9wZXJhdGlvbk5hbWU6IFN0cmluZyk6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk/PiB7DQorICAgICAgICBsb2dnZXIuaW5mbygibm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzUmVzb2x2ZWRFeHByZXNzaW9uIGZvciBub2RlIHRlbXBsYXRlICh7fSksaW50ZXJmYWNlIG5hbWUgKHt9KSwgIiArDQorICAgICAgICAgICAgICAgICJvcGVyYXRpb25OYW1lKHt9KSIsIG5vZGVUZW1wbGF0ZU5hbWUsIGludGVyZmFjZU5hbWUsIG9wZXJhdGlvbk5hbWUpDQorDQorICAgICAgICB2YWwgcHJvcGVydHlBc3NpZ25tZW50VmFsdWU6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk/PiA9IGhhc2hNYXBPZigpDQorDQorICAgICAgICB2YWwgcHJvcGVydHlBc3NpZ25tZW50czogTXV0YWJsZU1hcDxTdHJpbmcsIEFueT4gPQ0KKyAgICAgICAgICAgICAgICBibHVlUHJpbnRDb250ZXh0Lm5vZGVUZW1wbGF0ZUludGVyZmFjZU9wZXJhdGlvbklucHV0cyhub2RlVGVtcGxhdGVOYW1lLCBpbnRlcmZhY2VOYW1lLCBvcGVyYXRpb25OYW1lKSBhcz8gTXV0YWJsZU1hcDxTdHJpbmcsIEFueT4NCisgICAgICAgICAgICAgICAgICAgICAgICA/OiB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiZmFpbGVkIHRvIGdldCBpbnB1dCBkZWZpbml0aW9ucyBmb3Igbm9kZSB0ZW1wbGF0ZSAoJXMpLCAiICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UgbmFtZSAoJXMpLCBvcGVyYXRpb25OYW1lKCVzKSIsIG5vZGVUZW1wbGF0ZU5hbWUsIGludGVyZmFjZU5hbWUsIG9wZXJhdGlvbk5hbWUpKQ0KKw0KKyAgICAgICAgdmFsIG5vZGVUeXBlTmFtZSA9IGJsdWVQcmludENvbnRleHQubm9kZVRlbXBsYXRlQnlOYW1lKG5vZGVUZW1wbGF0ZU5hbWUpLnR5cGUNCisNCisgICAgICAgIHZhbCBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbklucHV0czogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gPQ0KKyAgICAgICAgICAgICAgICBibHVlUHJpbnRDb250ZXh0Lm5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzKG5vZGVUeXBlTmFtZSwgaW50ZXJmYWNlTmFtZSwgb3BlcmF0aW9uTmFtZSkNCisgICAgICAgICAgICAgICAgICAgICAgICA/OiB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiZmFpbGVkIHRvIGdldCBpbnB1dCBkZWZpbml0aW9ucyBmb3Igbm9kZSB0eXBlICglcyksICIgKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBuYW1lICglcyksIG9wZXJhdGlvbk5hbWUoJXMpIiwgbm9kZVR5cGVOYW1lLCBpbnRlcmZhY2VOYW1lLCBvcGVyYXRpb25OYW1lKSkNCisNCisgICAgICAgIGxvZ2dlci5pbmZvKCJpbnB1dCBkZWZpbml0aW9uIGZvciBub2RlIHRlbXBsYXRlICh7fSksIHZhbHVlcyAoe30pIiwgbm9kZVRlbXBsYXRlTmFtZSwgcHJvcGVydHlBc3NpZ25tZW50cykNCisNCisgICAgICAgIC8vIEl0ZXJhdGUgTm9kZSBUeXBlIFByb3BlcnRpZXMNCisgICAgICAgIG5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzLmZvckVhY2ggeyBub2RlVHlwZVByb3BlcnR5TmFtZSwgbm9kZVR5cGVQcm9wZXJ0eSAtPg0KKyAgICAgICAgICAgIC8vIEdldCB0aGUgRXhwcmVzcyBvciBWYWx1ZSBmb3IgdGhlIE5vZGUgVGVtcGxhdGUNCisgICAgICAgICAgICB2YWwgcHJvcGVydHlBc3NpZ25tZW50OiBBbnk/ID0gcHJvcGVydHlBc3NpZ25tZW50c1tub2RlVHlwZVByb3BlcnR5TmFtZV0NCisNCisgICAgICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZTogSnNvbk5vZGUgPSBOdWxsTm9kZS5nZXRJbnN0YW5jZSgpDQorICAgICAgICAgICAgaWYgKHByb3BlcnR5QXNzaWdubWVudCAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIEV4cHJlc3NpbmcNCisgICAgICAgICAgICAgICAgdmFsIHByb3BlcnR5QXNzaWdubWVudEV4cHJlc3Npb24gPSBQcm9wZXJ0eUFzc2lnbm1lbnRTZXJ2aWNlKCBjb250ZXh0LCB0aGlzKQ0KKyAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlID0gcHJvcGVydHlBc3NpZ25tZW50RXhwcmVzc2lvbi5yZXNvbHZlQXNzaWdubWVudEV4cHJlc3Npb24obm9kZVRlbXBsYXRlTmFtZSwgbm9kZVR5cGVQcm9wZXJ0eU5hbWUsIHByb3BlcnR5QXNzaWdubWVudCkNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAvLyBBc3NpZ24gZGVmYXVsdCB2YWx1ZSB0byB0aGUgT3BlcmF0aW9uDQorICAgICAgICAgICAgICAgIG5vZGVUeXBlUHJvcGVydHkuZGVmYXVsdFZhbHVlPy5sZXQgew0KKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IEphY2tzb25VdGlscy5qc29uTm9kZUZyb21PYmplY3Qobm9kZVR5cGVQcm9wZXJ0eS5kZWZhdWx0VmFsdWUhISkNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICAvLyBTZXQgZm9yIFJldHVybiBvZiBtZXRob2QNCisgICAgICAgICAgICBwcm9wZXJ0eUFzc2lnbm1lbnRWYWx1ZVtub2RlVHlwZVByb3BlcnR5TmFtZV0gPSByZXNvbHZlZFZhbHVlDQorICAgICAgICB9DQorICAgICAgICBsb2dnZXIuaW5mbygicmVzb2x2ZWQgaW5wdXQgYXNzaWdubWVudHMgZm9yIG5vZGUgdGVtcGxhdGUgKHt9KSwgdmFsdWVzICh7fSkiLCBub2RlVGVtcGxhdGVOYW1lLCBwcm9wZXJ0eUFzc2lnbm1lbnRWYWx1ZSkNCisNCisgICAgICAgIHJldHVybiBwcm9wZXJ0eUFzc2lnbm1lbnRWYWx1ZQ0KKyAgICB9DQorDQorDQorICAgIGZ1biByZXNvbHZlTm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uT3V0cHV0cyhub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lOiBTdHJpbmcsIG9wZXJhdGlvbk5hbWU6IFN0cmluZywgY29tcG9uZW50Q29udGV4dDogTXV0YWJsZU1hcDxTdHJpbmcsIEFueT8+KTogVW5pdCB7DQorICAgICAgICBsb2dnZXIuaW5mbygibm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzUmVzb2x2ZWRFeHByZXNzaW9uIGZvciBub2RlIHRlbXBsYXRlICh7fSksaW50ZXJmYWNlIG5hbWUgKHt9KSwgIiArDQorICAgICAgICAgICAgICAgICJvcGVyYXRpb25OYW1lKHt9KSIsIG5vZGVUZW1wbGF0ZU5hbWUsIGludGVyZmFjZU5hbWUsIG9wZXJhdGlvbk5hbWUpDQorDQorICAgICAgICB2YWwgbm9kZVR5cGVOYW1lID0gYmx1ZVByaW50Q29udGV4dC5ub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkudHlwZQ0KKw0KKyAgICAgICAgdmFsIG5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uT3V0cHV0czogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gPQ0KKyAgICAgICAgICAgICAgICBibHVlUHJpbnRDb250ZXh0Lm5vZGVUeXBlSW50ZXJmYWNlT3BlcmF0aW9uT3V0cHV0cyhub2RlVHlwZU5hbWUsIGludGVyZmFjZU5hbWUsIG9wZXJhdGlvbk5hbWUpDQorICAgICAgICAgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoImZhaWxlZCB0byBnZXQgaW5wdXQgZGVmaW5pdGlvbnMgZm9yIG5vZGUgdHlwZSAoJXMpLCAiICsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UgbmFtZSAoJXMpLCBvcGVyYXRpb25OYW1lKCVzKSIsIG5vZGVUeXBlTmFtZSwgaW50ZXJmYWNlTmFtZSwgb3BlcmF0aW9uTmFtZSkpDQorDQorICAgICAgICAvLyBJdGVyYXRlIE5vZGUgVHlwZSBQcm9wZXJ0aWVzDQorICAgICAgICBub2RlVHlwZUludGVyZmFjZU9wZXJhdGlvbk91dHB1dHMuZm9yRWFjaCB7IG5vZGVUeXBlUHJvcGVydHlOYW1lLCBub2RlVHlwZVByb3BlcnR5IC0+DQorDQorICAgICAgICAgICAgdmFsIG9wZXJhdGlvbk91dHB1dFByb3BlcnR5TmFtZTogU3RyaW5nID0gU3RyaW5nQnVpbGRlcigpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgiLiIpLmFwcGVuZChpbnRlcmZhY2VOYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgiLiIpLmFwcGVuZChvcGVyYXRpb25OYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgiLiIpLmFwcGVuZChub2RlVHlwZVByb3BlcnR5TmFtZSkudG9TdHJpbmcoKQ0KKyAgICAgICAgICAgIC8vIEdldCB0aGUgVmFsdWUgZnJvbSBjb21wb25lbnQgY29udGV4dA0KKyAgICAgICAgICAgIHZhbCByZXNvbHZlZFZhbHVlOiBKc29uTm9kZSA9IGNvbXBvbmVudENvbnRleHRbb3BlcmF0aW9uT3V0cHV0UHJvcGVydHlOYW1lXSBhcz8gSnNvbk5vZGUNCisgICAgICAgICAgICAgICAgICAgID86IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisgICAgICAgICAgICAvLyBTdG9yZSAgb3BlcmF0aW9uIG91dHB1dCB2YWx1ZXMgaW50byBjb250ZXh0DQorICAgICAgICAgICAgc2V0Tm9kZVRlbXBsYXRlT3BlcmF0aW9uUHJvcGVydHlWYWx1ZShub2RlVGVtcGxhdGVOYW1lLCBpbnRlcmZhY2VOYW1lLCBvcGVyYXRpb25OYW1lLCBub2RlVHlwZVByb3BlcnR5TmFtZSwgcmVzb2x2ZWRWYWx1ZSkNCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoInJlc29sdmVkIG91dHB1dCBhc3NpZ25tZW50cyBmb3Igbm9kZSB0ZW1wbGF0ZSAoe30pLCBwcm9wZXJ0eSBuYW1lICh7fSksIHZhbHVlICh7fSkiLCBub2RlVGVtcGxhdGVOYW1lLCBub2RlVHlwZVByb3BlcnR5TmFtZSwgcmVzb2x2ZWRWYWx1ZSkNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBmdW4gcmVzb2x2ZU5vZGVUZW1wbGF0ZUFydGlmYWN0KG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnRpZmFjdE5hbWU6IFN0cmluZyk6IFN0cmluZyB7DQorICAgICAgICB2YWwgbm9kZVRlbXBsYXRlID0gYmx1ZVByaW50Q29udGV4dC5ub2RlVGVtcGxhdGVCeU5hbWUobm9kZVRlbXBsYXRlTmFtZSkNCisNCisgICAgICAgIHZhbCBhcnRpZmFjdERlZmluaXRpb246IEFydGlmYWN0RGVmaW5pdGlvbiA9IG5vZGVUZW1wbGF0ZS5hcnRpZmFjdHM/LmdldChhcnRpZmFjdE5hbWUpDQorICAgICAgICAgICAgICAgID86IHRocm93IE9yY2hlc3RyYXRvckV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmYWlsZWQgdG8gZ2V0IGFydGlmYXQgZGVmaW5pdGlvbiB7fSBmcm9tIHRoZSBub2RlIHRlbXBsYXRlIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICwgYXJ0aWZhY3ROYW1lKSkNCisgICAgICAgIHZhbCBwcm9wZXJ0eUFzc2lnbm1lbnRFeHByZXNzaW9uID0gUHJvcGVydHlBc3NpZ25tZW50U2VydmljZSggY29udGV4dCwgdGhpcykNCisgICAgICAgIHJldHVybiBwcm9wZXJ0eUFzc2lnbm1lbnRFeHByZXNzaW9uLmFydGlmYWN0Q29udGVudChhcnRpZmFjdERlZmluaXRpb24pDQorICAgIH0NCisNCisNCisgICAgZnVuIHNldElucHV0VmFsdWUocHJvcGVydHlOYW1lOiBTdHJpbmcsIHByb3BlcnR5RGVmaW5pdGlvbjogUHJvcGVydHlEZWZpbml0aW9uLCB2YWx1ZTogSnNvbk5vZGUpOiBVbml0IHsNCisgICAgICAgIHZhbCBwYXRoID0gU3RyaW5nQnVpbGRlcihvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfSU5QVVRTKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQocHJvcGVydHlOYW1lKS50b1N0cmluZygpDQorICAgICAgICBsb2dnZXIudHJhY2UoInNldHRpbmcgaW5wdXQgcGF0aCAoe30pLCB2YWx1ZXMgKHt9KSIsIHBhdGgsIHZhbHVlKQ0KKyAgICAgICAgY29udGV4dFtwYXRoXSA9IHZhbHVlDQorICAgIH0NCisNCisgICAgZnVuIHNldFdvcmtmbG93SW5wdXRWYWx1ZSh3b3JrZmxvd05hbWU6IFN0cmluZywgcHJvcGVydHlOYW1lOiBTdHJpbmcsIHZhbHVlOiBKc29uTm9kZSk6IFVuaXQgew0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfV09SS0ZMT1dTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZCh3b3JrZmxvd05hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfSU5QVVRTKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIGNvbnRleHRbcGF0aF0gPSB2YWx1ZQ0KKyAgICB9DQorDQorICAgIGZ1biBzZXROb2RlVGVtcGxhdGVQcm9wZXJ0eVZhbHVlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgcHJvcGVydHlOYW1lOiBTdHJpbmcsIHZhbHVlOiBKc29uTm9kZSk6IFVuaXQgew0KKw0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfVEVNUExBVEVTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIGNvbnRleHRbcGF0aF0gPSB2YWx1ZQ0KKyAgICB9DQorDQorICAgIGZ1biBzZXROb2RlVGVtcGxhdGVPcGVyYXRpb25Qcm9wZXJ0eVZhbHVlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcsIHByb3BlcnR5TmFtZTogU3RyaW5nLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogSnNvbk5vZGUpOiBVbml0IHsNCisgICAgICAgIHZhbCBwYXRoOiBTdHJpbmcgPSBTdHJpbmdCdWlsZGVyKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9OT0RFX1RFTVBMQVRFUykuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQobm9kZVRlbXBsYXRlTmFtZSkNCisgICAgICAgICAgICAgICAgLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9JTlRFUkZBQ0VTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChpbnRlcmZhY2VOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX09QRVJBVElPTlMpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKG9wZXJhdGlvbk5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfUFJPUEVSVElFUykNCisgICAgICAgICAgICAgICAgLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKHByb3BlcnR5TmFtZSkudG9TdHJpbmcoKQ0KKyAgICAgICAgbG9nZ2VyLnRyYWNlKCJzZXR0aW5nIG9wZXJhdGlvbiBwcm9wZXJ0eSBwYXRoICh7fSksIHZhbHVlcyAoe30pIiwgcGF0aCwgdmFsdWUpDQorICAgICAgICBjb250ZXh0W3BhdGhdID0gdmFsdWUNCisgICAgfQ0KKw0KKyAgICBmdW4gc2V0Tm9kZVRlbXBsYXRlT3BlcmF0aW9uSW5wdXRWYWx1ZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZywgb3BlcmF0aW9uTmFtZTogU3RyaW5nLCBwcm9wZXJ0eU5hbWU6IFN0cmluZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEpzb25Ob2RlKTogVW5pdCB7DQorICAgICAgICB2YWwgcGF0aDogU3RyaW5nID0gU3RyaW5nQnVpbGRlcihvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfTk9ERV9URU1QTEFURVMpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKG5vZGVUZW1wbGF0ZU5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfSU5URVJGQUNFUykuYXBwZW5kKGludGVyZmFjZU5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfT1BFUkFUSU9OUykuYXBwZW5kKG9wZXJhdGlvbk5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfSU5QVVRTKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIGNvbnRleHRbcGF0aF0gPSB2YWx1ZQ0KKyAgICB9DQorDQorICAgIGZ1biBzZXROb2RlVGVtcGxhdGVPcGVyYXRpb25PdXRwdXRWYWx1ZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGludGVyZmFjZU5hbWU6IFN0cmluZywgb3BlcmF0aW9uTmFtZTogU3RyaW5nLCBwcm9wZXJ0eU5hbWU6IFN0cmluZywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKc29uTm9kZSk6IFVuaXQgew0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfVEVNUExBVEVTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0lOVEVSRkFDRVMpLmFwcGVuZChpbnRlcmZhY2VOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX09QRVJBVElPTlMpLmFwcGVuZChvcGVyYXRpb25OYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX09VVFBVVFMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfUFJPUEVSVElFUykNCisgICAgICAgICAgICAgICAgLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKHByb3BlcnR5TmFtZSkudG9TdHJpbmcoKQ0KKyAgICAgICAgY29udGV4dFtwYXRoXSA9IHZhbHVlDQorICAgIH0NCisNCisNCisgICAgZnVuIGdldElucHV0VmFsdWUocHJvcGVydHlOYW1lOiBTdHJpbmcpOiBKc29uTm9kZSB7DQorICAgICAgICB2YWwgcGF0aCA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0lOUFVUUykNCisgICAgICAgICAgICAgICAgLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKHByb3BlcnR5TmFtZSkudG9TdHJpbmcoKQ0KKyAgICAgICAgcmV0dXJuIGNvbnRleHRbcGF0aF0gYXM/IEpzb25Ob2RlID86IE51bGxOb2RlLmluc3RhbmNlDQorICAgIH0NCisNCisgICAgZnVuIGdldE5vZGVUZW1wbGF0ZU9wZXJhdGlvbk91dHB1dFZhbHVlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgaW50ZXJmYWNlTmFtZTogU3RyaW5nLCBvcGVyYXRpb25OYW1lOiBTdHJpbmcsIHByb3BlcnR5TmFtZTogU3RyaW5nKTogSnNvbk5vZGUgew0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfVEVNUExBVEVTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0lOVEVSRkFDRVMpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKGludGVyZmFjZU5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfT1BFUkFUSU9OUykuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3BlcmF0aW9uTmFtZSkNCisgICAgICAgICAgICAgICAgLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9QUk9QRVJUSUVTKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQocHJvcGVydHlOYW1lKS50b1N0cmluZygpDQorICAgICAgICByZXR1cm4gY29udGV4dFtwYXRoXSBhcyBKc29uTm9kZQ0KKyAgICB9DQorDQorICAgIGZ1biBnZXRQcm9wZXJ0eVZhbHVlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgcHJvcGVydHlOYW1lOiBTdHJpbmcpOiBKc29uTm9kZT8gew0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfVEVNUExBVEVTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIHJldHVybiBjb250ZXh0W3BhdGhdIGFzIEpzb25Ob2RlDQorICAgIH0NCisNCisgICAgZnVuIGdldFJlcXVpcmVtZW50UHJvcGVydHlWYWx1ZShub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIHJlcXVpcmVtZW50TmFtZTogU3RyaW5nLCBwcm9wZXJ0eU5hbWU6IFN0cmluZyk6IEpzb25Ob2RlPyB7DQorICAgICAgICB2YWwgcGF0aDogU3RyaW5nID0gU3RyaW5nQnVpbGRlcihvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfTk9ERV9URU1QTEFURVMpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfRElWSURFUikuYXBwZW5kKG5vZGVUZW1wbGF0ZU5hbWUpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLlBBVEhfUkVRVUlSRU1FTlRTKS5hcHBlbmQocmVxdWlyZW1lbnROYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIHJldHVybiBjb250ZXh0W3BhdGhdIGFzIEpzb25Ob2RlDQorICAgIH0NCisNCisgICAgZnVuIGdldENhcGFiaWxpdHlQcm9wZXJ0eVZhbHVlKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgY2FwYWJpbGl0eU5hbWU6IFN0cmluZywgcHJvcGVydHlOYW1lOiBTdHJpbmcpOiBKc29uTm9kZT8gew0KKyAgICAgICAgdmFsIHBhdGg6IFN0cmluZyA9IFN0cmluZ0J1aWxkZXIob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX05PREVfVEVNUExBVEVTKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChub2RlVGVtcGxhdGVOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0NBUEFCSUxJVElFUykuYXBwZW5kKGNhcGFiaWxpdHlOYW1lKQ0KKyAgICAgICAgICAgICAgICAuYXBwZW5kKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX1BST1BFUlRJRVMpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLmFwcGVuZChwcm9wZXJ0eU5hbWUpLnRvU3RyaW5nKCkNCisgICAgICAgIHJldHVybiBjb250ZXh0W3BhdGhdIGFzIEpzb25Ob2RlDQorICAgIH0NCisNCisgICAgZnVuIGFzc2lnbklucHV0cyhqc29uTm9kZTogSnNvbk5vZGUpOiBVbml0IHsNCisgICAgICAgIGxvZ2dlci5pbmZvKCJhc3NpZ25JbnB1dHMgZnJvbSBpbnB1dCBKU09OICh7fSkiLCBqc29uTm9kZS50b1N0cmluZygpKQ0KKyAgICAgICAgYmx1ZVByaW50Q29udGV4dC5pbnB1dHM/LmZvckVhY2ggeyBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5IC0+DQorICAgICAgICAgICAgdmFsIHZhbHVlTm9kZTogSnNvbk5vZGUgPSBqc29uTm9kZS5hdCgiLyIgKyBwcm9wZXJ0eU5hbWUpID86IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisgICAgICAgICAgICBzZXRJbnB1dFZhbHVlKHByb3BlcnR5TmFtZSwgcHJvcGVydHksIHZhbHVlTm9kZSkNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBmdW4gYXNzaWduV29ya2Zsb3dJbnB1dHMod29ya2Zsb3dOYW1lOiBTdHJpbmcsIGpzb25Ob2RlOiBKc29uTm9kZSk6IFVuaXQgew0KKyAgICAgICAgbG9nZ2VyLmluZm8oImFzc2lnbiB3b3JrZmxvdyB7fSBpbnB1dCB2YWx1ZSAoe30pIiwgd29ya2Zsb3dOYW1lLCBqc29uTm9kZS50b1N0cmluZygpKQ0KKyAgICAgICAgYmx1ZVByaW50Q29udGV4dC53b3JrZmxvd0J5TmFtZSh3b3JrZmxvd05hbWUpPy5pbnB1dHM/LmZvckVhY2ggeyBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5IC0+DQorICAgICAgICAgICAgdmFsIHZhbHVlTm9kZTogSnNvbk5vZGUgPSBqc29uTm9kZS5hdCgiLyIgKyBwcm9wZXJ0eU5hbWUpID86IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisgICAgICAgICAgICBzZXRXb3JrZmxvd0lucHV0VmFsdWUod29ya2Zsb3dOYW1lLCBwcm9wZXJ0eU5hbWUsIHZhbHVlTm9kZSkNCisgICAgICAgIH0NCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFZhbGlkYXRvclNlcnZpY2Uua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFZhbGlkYXRvclNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM4M2E2NQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50VmFsaWRhdG9yU2VydmljZS5rdApAQCAtMCwwICsxLDM1MyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnNlcnZpY2UNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuUHJlY29uZGl0aW9ucw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLioNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuKg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlDQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQoraW50ZXJmYWNlIEJsdWVQcmludFZhbGlkYXRvclNlcnZpY2UgOiBTZXJpYWxpemFibGUgew0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIGZ1biB2YWxpZGF0ZUJsdWVwcmludChibHVlUHJpbnRDb250ZXh0OiBCbHVlUHJpbnRDb250ZXh0LCBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgQW55PikNCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBmdW4gdmFsaWRhdGVCbHVlcHJpbnQoc2VydmljZVRlbXBsYXRlOiBTZXJ2aWNlVGVtcGxhdGUsIHByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+KQ0KK30NCisNCitvcGVuIGNsYXNzIEJsdWVQcmludFZhbGlkYXRvckRlZmF1bHRTZXJ2aWNlIDogQmx1ZVByaW50VmFsaWRhdG9yU2VydmljZSB7DQorDQorICAgIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEJsdWVQcmludFZhbGlkYXRvckRlZmF1bHRTZXJ2aWNlOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICBsYXRlaW5pdCB2YXIgYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dA0KKyAgICBsYXRlaW5pdCB2YXIgc2VydmljZVRlbXBsYXRlOiBTZXJ2aWNlVGVtcGxhdGUNCisgICAgbGF0ZWluaXQgdmFyIHByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+DQorICAgIHZhciBtZXNzYWdlOiBTdHJpbmdCdWlsZGVyID0gU3RyaW5nQnVpbGRlcigpDQorICAgIHZhbCBzZXBlcmF0b3I6IFN0cmluZyA9ICIvIg0KKyAgICB2YXIgcGF0aHM6IE11dGFibGVMaXN0PFN0cmluZz4gPSBhcnJheUxpc3RPZigpDQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3ZlcnJpZGUgZnVuIHZhbGlkYXRlQmx1ZXByaW50KGJsdWVQcmludENvbnRleHQ6IEJsdWVQcmludENvbnRleHQsIHByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+KSB7DQorICAgICAgICB2YWxpZGF0ZUJsdWVwcmludChibHVlUHJpbnRDb250ZXh0LnNlcnZpY2VUZW1wbGF0ZSxwcm9wZXJ0aWVzKQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3ZlcnJpZGUgZnVuIHZhbGlkYXRlQmx1ZXByaW50KHNlcnZpY2VUZW1wbGF0ZTogU2VydmljZVRlbXBsYXRlLCBwcm9wZXJ0aWVzOiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pikgew0KKyAgICAgICAgdGhpcy5ibHVlUHJpbnRDb250ZXh0ID0gQmx1ZVByaW50Q29udGV4dChzZXJ2aWNlVGVtcGxhdGUpDQorICAgICAgICB0aGlzLnNlcnZpY2VUZW1wbGF0ZSA9IHNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcw0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItPiBDb25maWcgQmx1ZXByaW50IikNCisgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUubWV0YWRhdGE/LmxldCB7IHZhbGlkYXRlTWV0YWRhdGEoc2VydmljZVRlbXBsYXRlLm1ldGFkYXRhISEpIH0NCisgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuYXJ0aWZhY3RUeXBlcz8ubGV0IHsgdmFsaWRhdGVBcnRpZmFjdFR5cGVzKHNlcnZpY2VUZW1wbGF0ZS5hcnRpZmFjdFR5cGVzISEpIH0NCisgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZGF0YVR5cGVzPy5sZXQgeyB2YWxpZGF0ZURhdGFUeXBlcyhzZXJ2aWNlVGVtcGxhdGUuZGF0YVR5cGVzISEpIH0NCisgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUubm9kZVR5cGVzPy5sZXQgeyB2YWxpZGF0ZU5vZGVUeXBlcyhzZXJ2aWNlVGVtcGxhdGUubm9kZVR5cGVzISEpIH0NCisgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUudG9wb2xvZ3lUZW1wbGF0ZT8ubGV0IHsgdmFsaWRhdGVUb3BvbG9neVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZS50b3BvbG9neVRlbXBsYXRlISEpIH0NCisgICAgICAgIH0gY2F0Y2ggKGU6IEV4Y2VwdGlvbikgew0KKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigidmFsaWRhdGlvbiBmYWlsZWQgaW4gdGhlIHBhdGggOiB7fSIsIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpLCBlKQ0KKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigidmFsaWRhdGlvbiB0cmFjZSBtZXNzYWdlIDp7fSAiLCBtZXNzYWdlKQ0KKyAgICAgICAgICAgIHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihlLA0KKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0KCJmYWlsZWQgdG8gdmFsaWRhdGUgYmx1ZXByaW50IG9uIHBhdGggKHt9KSB3aXRoIG1lc3NhZ2Uge30iDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcGF0aHMuam9pblRvU3RyaW5nKHNlcGVyYXRvciksIGUubWVzc2FnZSkpDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZU1ldGFkYXRhKG1ldGFEYXRhTWFwOiBNdXRhYmxlTWFwPFN0cmluZywgU3RyaW5nPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJtZXRhZGF0YSIpDQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhtZXRhRGF0YU1hcFtCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfTkFNRV0pLCAiZmFpbGVkIHRvIGdldCB0ZW1wbGF0ZSBuYW1lIG1ldGFkYXRhIikNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKG1ldGFEYXRhTWFwW0JsdWVQcmludENvbnN0YW50cy5NRVRBREFUQV9URU1QTEFURV9WRVJTSU9OXSksICJmYWlsZWQgdG8gZ2V0IHRlbXBsYXRlIHZlcnNpb24gbWV0YWRhdGEiKQ0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsobWV0YURhdGFNYXBbQmx1ZVByaW50Q29uc3RhbnRzLk1FVEFEQVRBX1RFTVBMQVRFX1RBR1NdKSwgImZhaWxlZCB0byBnZXQgdGVtcGxhdGUgdGFncyBtZXRhZGF0YSIpDQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhtZXRhRGF0YU1hcFtCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfQVVUSE9SXSksICJmYWlsZWQgdG8gZ2V0IHRlbXBsYXRlIGF1dGhvciBtZXRhZGF0YSIpDQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhtZXRhRGF0YU1hcFtCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVVNFUl9HUk9VUFNdKSwgImZhaWxlZCB0byBnZXQgdXNlciBncm91cHMgbWV0YWRhdGEiKQ0KKyAgICAgICAgcGF0aHMucmVtb3ZlQXQocGF0aHMubGFzdEluZGV4KQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVBcnRpZmFjdFR5cGVzKGFydGlmYWN0VHlwZXM6IE11dGFibGVNYXA8U3RyaW5nLCBBcnRpZmFjdFR5cGU+KSB7DQorICAgICAgICBwYXRocy5hZGQoImFydGlmYWN0X3R5cGVzIikNCisgICAgICAgIGFydGlmYWN0VHlwZXMuZm9yRWFjaCB7IGFydGlmYWN0TmFtZSwgYXJ0aWZhY3RUeXBlIC0+DQorICAgICAgICAgICAgcGF0aHMuYWRkKGFydGlmYWN0TmFtZSkNCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItLT4gQXJ0aWZhY3QgVHlwZSA6IiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgICAgIGFydGlmYWN0VHlwZS5wcm9wZXJ0aWVzPy5sZXQgeyB2YWxpZGF0ZVByb3BlcnR5RGVmaW5pdGlvbnMoYXJ0aWZhY3RUeXBlLnByb3BlcnRpZXMhISkgfQ0KKyAgICAgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgICAgIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlRGF0YVR5cGVzKGRhdGFUeXBlczogTXV0YWJsZU1hcDxTdHJpbmcsIERhdGFUeXBlPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJkYXRhVHlwZXMiKQ0KKyAgICAgICAgZGF0YVR5cGVzLmZvckVhY2ggeyBkYXRhVHlwZU5hbWUsIGRhdGFUeXBlIC0+DQorICAgICAgICAgICAgcGF0aHMuYWRkKGRhdGFUeXBlTmFtZSkNCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItLT4gRGF0YSBUeXBlIDoiICsgcGF0aHMuam9pblRvU3RyaW5nKHNlcGVyYXRvcikpDQorICAgICAgICAgICAgZGF0YVR5cGUucHJvcGVydGllcz8ubGV0IHsgdmFsaWRhdGVQcm9wZXJ0eURlZmluaXRpb25zKGRhdGFUeXBlLnByb3BlcnRpZXMhISkgfQ0KKyAgICAgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgICAgIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlTm9kZVR5cGVzKG5vZGVUeXBlczogTXV0YWJsZU1hcDxTdHJpbmcsIE5vZGVUeXBlPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJub2RlVHlwZXMiKQ0KKyAgICAgICAgbm9kZVR5cGVzLmZvckVhY2ggeyBub2RlVHlwZU5hbWUsIG5vZGVUeXBlIC0+DQorICAgICAgICAgICAgLy8gVmFsaWRhdGUgU2luZ2xlIE5vZGUgVHlwZQ0KKyAgICAgICAgICAgIHZhbGlkYXRlTm9kZVR5cGUobm9kZVR5cGVOYW1lLG5vZGVUeXBlKQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcGF0aHMucmVtb3ZlQXQocGF0aHMubGFzdEluZGV4KQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVOb2RlVHlwZShub2RlVHlwZU5hbWU6IFN0cmluZywgbm9kZVR5cGU6IE5vZGVUeXBlKSB7DQorICAgICAgICBwYXRocy5hZGQobm9kZVR5cGVOYW1lKQ0KKyAgICAgICAgbWVzc2FnZS5hcHBlbmRsbigiLS0+IE5vZGUgVHlwZSA6IiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgdmFsIGRlcml2ZWRGcm9tOiBTdHJpbmcgPSBub2RlVHlwZS5kZXJpdmVkRnJvbQ0KKyAgICAgICAgLy9DaGVjayBEZXJpdmVkIEZyb20NCisgICAgICAgIGNoZWNrVmFsaWROb2RlVHlwZXNEZXJpdmVkRnJvbShkZXJpdmVkRnJvbSkNCisNCisgICAgICAgIG5vZGVUeXBlLnByb3BlcnRpZXM/LmxldCB7IHZhbGlkYXRlUHJvcGVydHlEZWZpbml0aW9ucyhub2RlVHlwZS5wcm9wZXJ0aWVzISEpIH0NCisgICAgICAgIG5vZGVUeXBlLmludGVyZmFjZXM/LmxldCB7IHZhbGlkYXRlSW50ZXJmYWNlRGVmaW5pdGlvbnMobm9kZVR5cGUuaW50ZXJmYWNlcyEhKSB9DQorICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZVRvcG9sb2d5VGVtcGxhdGUodG9wb2xvZ3lUZW1wbGF0ZTogVG9wb2xvZ3lUZW1wbGF0ZSkgew0KKyAgICAgICAgcGF0aHMuYWRkKCJ0b3BvbG9neSIpDQorICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItLT4gVG9wb2xvZ3kgVGVtcGxhdGUiKQ0KKyAgICAgICAgdG9wb2xvZ3lUZW1wbGF0ZS5pbnB1dHM/LmxldCB7IHZhbGlkYXRlSW5wdXRzKHRvcG9sb2d5VGVtcGxhdGUuaW5wdXRzISEpIH0NCisgICAgICAgIHRvcG9sb2d5VGVtcGxhdGUubm9kZVRlbXBsYXRlcz8ubGV0IHsgdmFsaWRhdGVOb2RlVGVtcGxhdGVzKHRvcG9sb2d5VGVtcGxhdGUubm9kZVRlbXBsYXRlcyEhKSB9DQorICAgICAgICB0b3BvbG9neVRlbXBsYXRlLndvcmtmbG93cz8ubGV0IHsgdmFsaWRhdGVXb3JrRmxvd3ModG9wb2xvZ3lUZW1wbGF0ZS53b3JrZmxvd3MhISkgfQ0KKyAgICAgICAgcGF0aHMucmVtb3ZlQXQocGF0aHMubGFzdEluZGV4KQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVJbnB1dHMoaW5wdXRzOiBNdXRhYmxlTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJpbnB1dHMiKQ0KKyAgICAgICAgbWVzc2FnZS5hcHBlbmRsbigiLS0tPiBJbnB1dCA6IiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgdmFsaWRhdGVQcm9wZXJ0eURlZmluaXRpb25zKGlucHV0cykNCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlTm9kZVRlbXBsYXRlcyhub2RlVGVtcGxhdGVzOiBNdXRhYmxlTWFwPFN0cmluZywgTm9kZVRlbXBsYXRlPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJub2RlVGVtcGxhdGVzIikNCisgICAgICAgIG5vZGVUZW1wbGF0ZXMuZm9yRWFjaCB7IG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSAtPg0KKyAgICAgICAgICAgIHZhbGlkYXRlTm9kZVRlbXBsYXRlKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSkNCisgICAgICAgIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlTm9kZVRlbXBsYXRlKG5vZGVUZW1wbGF0ZU5hbWUgOiBTdHJpbmcsIG5vZGVUZW1wbGF0ZTogTm9kZVRlbXBsYXRlKSB7DQorICAgICAgICBwYXRocy5hZGQobm9kZVRlbXBsYXRlTmFtZSkNCisgICAgICAgIG1lc3NhZ2UuYXBwZW5kbG4oIi0tLT4gTm9kZSBUZW1wbGF0ZSA6IiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgdmFsIHR5cGU6IFN0cmluZyA9IG5vZGVUZW1wbGF0ZS50eXBlDQorDQorICAgICAgICB2YWwgbm9kZVR5cGU6IE5vZGVUeXBlID0gc2VydmljZVRlbXBsYXRlLm5vZGVUeXBlcz8uZ2V0KHR5cGUpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoIkZhaWxlZCB0byBnZXQgbm9kZSB0eXBlIGRlZmluaXRpb24gIGZvciBub2RlIHRlbXBsYXRlIDoge30iLCBub2RlVGVtcGxhdGVOYW1lKSkNCisNCisgICAgICAgIG5vZGVUZW1wbGF0ZS5hcnRpZmFjdHM/LmxldCB7IHZhbGlkYXRlQXJ0aWZhY3REZWZpbml0aW9ucyhub2RlVGVtcGxhdGUuYXJ0aWZhY3RzISEpIH0NCisgICAgICAgIG5vZGVUZW1wbGF0ZS5wcm9wZXJ0aWVzPy5sZXQgeyB2YWxpZGF0ZVByb3BlcnR5QXNzaWdubWVudHMobm9kZVR5cGUucHJvcGVydGllcyEhLCBub2RlVGVtcGxhdGUucHJvcGVydGllcyEhKSB9DQorICAgICAgICBub2RlVGVtcGxhdGUuY2FwYWJpbGl0aWVzPy5sZXQgeyB2YWxpZGF0ZUNhcGFiaWxpdHlBc3NpZ25tZW50cyhub2RlVGVtcGxhdGUuY2FwYWJpbGl0aWVzISEpIH0NCisgICAgICAgIG5vZGVUZW1wbGF0ZS5yZXF1aXJlbWVudHM/LmxldCB7IHZhbGlkYXRlUmVxdWlyZW1lbnRBc3NpZ25tZW50cyhub2RlVGVtcGxhdGUucmVxdWlyZW1lbnRzISEpIH0NCisgICAgICAgIG5vZGVUZW1wbGF0ZS5pbnRlcmZhY2VzPy5sZXQgeyB2YWxpZGF0ZUludGVyZmFjZUFzc2lnbm1lbnRzKG5vZGVUZW1wbGF0ZS5pbnRlcmZhY2VzISEpIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlV29ya0Zsb3dzKHdvcmtmbG93czogTXV0YWJsZU1hcDxTdHJpbmcsIFdvcmtmbG93Pikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJ3b3JrZmxvd3MiKQ0KKyAgICAgICAgd29ya2Zsb3dzLmZvckVhY2ggeyB3b3JrZmxvd05hbWUsIHdvcmtmbG93IC0+DQorDQorICAgICAgICAgICAgLy8gVmFsaWRhdGUgU2luZ2xlIHdvcmtmbG93DQorICAgICAgICAgICAgdmFsaWRhdGVXb3JrRmxvdyh3b3JrZmxvd05hbWUsIHdvcmtmbG93KQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcGF0aHMucmVtb3ZlQXQocGF0aHMubGFzdEluZGV4KQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVXb3JrRmxvdyh3b3JrZmxvd05hbWU6U3RyaW5nLCB3b3JrZmxvdzogV29ya2Zsb3cpIHsNCisgICAgICAgIHBhdGhzLmFkZCh3b3JrZmxvd05hbWUpDQorICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItLS0+IFdvcmtmbG93IDoiICsgcGF0aHMuam9pblRvU3RyaW5nKHNlcGVyYXRvcikpDQorICAgICAgICAvLyBTdGVwIFZhbGlkYXRpb24gU3RhcnQNCisgICAgICAgIHBhdGhzLmFkZCgic3RlcHMiKQ0KKyAgICAgICAgd29ya2Zsb3cuc3RlcHM/LmZvckVhY2ggeyBzdGVwTmFtZSwgc3RlcCAtPg0KKyAgICAgICAgICAgIHBhdGhzLmFkZChzdGVwTmFtZSkNCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCItLS0tPiBTdGVwcyA6IiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgICAgIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgICAgIC8vIFN0ZXAgVmFsaWRhdGlvbiBFbmRzDQorICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZVByb3BlcnR5RGVmaW5pdGlvbnMocHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4pIHsNCisgICAgICAgIHBhdGhzLmFkZCgicHJvcGVydGllcyIpDQorICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2ggeyBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RGVmaW5pdGlvbiAtPg0KKyAgICAgICAgICAgIHBhdGhzLmFkZChwcm9wZXJ0eU5hbWUpDQorICAgICAgICAgICAgdmFsIGRhdGFUeXBlOiBTdHJpbmcgPSBwcm9wZXJ0eURlZmluaXRpb24udHlwZSEhDQorICAgICAgICAgICAgaWYgKEJsdWVQcmludFR5cGVzLnZhbGlkUHJpbWl0aXZlVHlwZXMoKS5jb250YWlucyhkYXRhVHlwZSkpIHsNCisgICAgICAgICAgICAgICAgLy8gRG8gTm90aGluZw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoQmx1ZVByaW50VHlwZXMudmFsaWRDb2xsZWN0aW9uVHlwZXMoKS5jb250YWlucyhkYXRhVHlwZSkpIHsNCisgICAgICAgICAgICAgICAgdmFsIGVudHJ5U2NoZW1hVHlwZTogU3RyaW5nID0gcHJvcGVydHlEZWZpbml0aW9uLmVudHJ5U2NoZW1hPy50eXBlDQorICAgICAgICAgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKGZvcm1hdCgiRW50cnkgc2NoZW1hIGZvciBkYXRhIHR5cGUgKHt9KSBmb3IgdGhlIHByb3BlcnR5ICh7fSkgbm90IGZvdW5kIiwgZGF0YVR5cGUsIHByb3BlcnR5TmFtZSkpDQorICAgICAgICAgICAgICAgIGNoZWNrUHJpbWl0aXZlT3JDb21wbGV4KGVudHJ5U2NoZW1hVHlwZSwgcHJvcGVydHlOYW1lKQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGNoZWNrUHJvcGVydHlEYXRhVHlwZShkYXRhVHlwZSwgcHJvcGVydHlOYW1lKQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCJwcm9wZXJ0eSAiICsgcGF0aHMuam9pblRvU3RyaW5nKHNlcGVyYXRvcikgKyAiIG9mIHR5cGUgIiArIGRhdGFUeXBlKQ0KKyAgICAgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgICAgIH0NCisgICAgICAgIHBhdGhzLnJlbW92ZUF0KHBhdGhzLmxhc3RJbmRleCkNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlUHJvcGVydHlBc3NpZ25tZW50cyhub2RlVHlwZVByb3BlcnRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogTXV0YWJsZU1hcDxTdHJpbmcsIEpzb25Ob2RlPikgew0KKyAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoIHsgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eUFzc2lnbm1lbnQgLT4NCisgICAgICAgICAgICB2YWwgcHJvcGVydHlEZWZpbml0aW9uOiBQcm9wZXJ0eURlZmluaXRpb24gPSBub2RlVHlwZVByb3BlcnRpZXNbcHJvcGVydHlOYW1lXQ0KKyAgICAgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKGZvcm1hdCgiZmFpbGVkIHRvIGdldCBkZWZpbml0aW9uIGZvciB0aGUgcHJvcGVydHkgKHt9KSIsIHByb3BlcnR5TmFtZSkpDQorICAgICAgICAgICAgLy8gQ2hlY2sgYW5kIFZhbGlkYXRlIGlmIEV4cHJlc3Npb24gTm9kZQ0KKyAgICAgICAgICAgIHZhbCBleHByZXNzaW9uRGF0YSA9IEJsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlLmdldEV4cHJlc3Npb25EYXRhKHByb3BlcnR5QXNzaWdubWVudCkNCisgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb25EYXRhLmlzRXhwcmVzc2lvbikgew0KKyAgICAgICAgICAgICAgICBjaGVja1Byb3BlcnR5VmFsdWUocHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUFzc2lnbm1lbnQpDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVBcnRpZmFjdERlZmluaXRpb25zKGFydGlmYWN0czogTXV0YWJsZU1hcDxTdHJpbmcsIEFydGlmYWN0RGVmaW5pdGlvbj4pIHsNCisgICAgICAgIHBhdGhzLmFkZCgiYXJ0aWZhY3RzIikNCisgICAgICAgIGFydGlmYWN0cy5mb3JFYWNoIHsgYXJ0aWZhY3ROYW1lLCBhcnRpZmFjdERlZmluaXRpb24gLT4NCisgICAgICAgICAgICBwYXRocy5hZGQoYXJ0aWZhY3ROYW1lKQ0KKyAgICAgICAgICAgIG1lc3NhZ2UuYXBwZW5kbG4oIlZhbGlkYXRpbmcgYXJ0aWZhY3QgIiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgICAgIHZhbCB0eXBlOiBTdHJpbmcgPSBhcnRpZmFjdERlZmluaXRpb24udHlwZQ0KKyAgICAgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKCJ0eXBlIGlzIG1pc3NpbmcgZm9yIGFydGlmYWN0IGRlZmluaXRpb24gOiIgKyBhcnRpZmFjdE5hbWUpDQorICAgICAgICAgICAgLy8gQ2hlY2sgQXJ0aWZhY3QgVHlwZQ0KKyAgICAgICAgICAgIGNoZWNrVmFsaWRBcnRpZmFjdFR5cGUodHlwZSkNCisNCisgICAgICAgICAgICB2YWwgZmlsZTogU3RyaW5nID0gYXJ0aWZhY3REZWZpbml0aW9uLmZpbGUNCisgICAgICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoImZpbGUgaXMgbWlzc2luZyBmb3IgYXJ0aWZhY3QgZGVmaW5pdGlvbiA6IHt9IiwgYXJ0aWZhY3ROYW1lKSkNCisNCisgICAgICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgICAgICB9DQorICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZUNhcGFiaWxpdHlBc3NpZ25tZW50cyhjYXBhYmlsaXRpZXM6IE11dGFibGVNYXA8U3RyaW5nLCBDYXBhYmlsaXR5QXNzaWdubWVudD4pIHsNCisNCisgICAgfQ0KKw0KKyAgICBAVGhyb3dzKEJsdWVQcmludEV4Y2VwdGlvbjo6Y2xhc3MpDQorICAgIG9wZW4gZnVuIHZhbGlkYXRlUmVxdWlyZW1lbnRBc3NpZ25tZW50cyhyZXF1aXJlbWVudHM6IE11dGFibGVNYXA8U3RyaW5nLCBSZXF1aXJlbWVudEFzc2lnbm1lbnQ+KSB7DQorDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZUludGVyZmFjZUFzc2lnbm1lbnRzKGludGVyZmFjZXM6IE11dGFibGVNYXA8U3RyaW5nLCBJbnRlcmZhY2VBc3NpZ25tZW50Pikgew0KKw0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gdmFsaWRhdGVJbnRlcmZhY2VEZWZpbml0aW9ucyhpbnRlcmZhY2VzOiBNdXRhYmxlTWFwPFN0cmluZywgSW50ZXJmYWNlRGVmaW5pdGlvbj4pIHsNCisgICAgICAgIHBhdGhzLmFkZCgiaW50ZXJmYWNlcyIpDQorICAgICAgICBpbnRlcmZhY2VzLmZvckVhY2ggeyBpbnRlcmZhY2VOYW1lLCBpbnRlcmZhY2VEZWZpbml0aW9uIC0+DQorICAgICAgICAgICAgcGF0aHMuYWRkKGludGVyZmFjZU5hbWUpDQorICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmRsbigiVmFsaWRhdGluZyA6ICIgKyBwYXRocy5qb2luVG9TdHJpbmcoc2VwZXJhdG9yKSkNCisgICAgICAgICAgICBpbnRlcmZhY2VEZWZpbml0aW9uLm9wZXJhdGlvbnM/LmxldCB7IHZhbGlkYXRlT3BlcmF0aW9uRGVmaW5pdGlvbnMoaW50ZXJmYWNlRGVmaW5pdGlvbi5vcGVyYXRpb25zISEpIH0NCisgICAgICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgICAgICB9DQorICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZU9wZXJhdGlvbkRlZmluaXRpb25zKG9wZXJhdGlvbnM6IE11dGFibGVNYXA8U3RyaW5nLCBPcGVyYXRpb25EZWZpbml0aW9uPikgew0KKyAgICAgICAgcGF0aHMuYWRkKCJvcGVyYXRpb25zIikNCisgICAgICAgIG9wZXJhdGlvbnMuZm9yRWFjaCB7IG9wZXJ0YWlvbk5hbWUsIG9wZXJhdGlvbkRlZmluaXRpb24gLT4NCisgICAgICAgICAgICBwYXRocy5hZGQob3BlcnRhaW9uTmFtZSkNCisgICAgICAgICAgICBtZXNzYWdlLmFwcGVuZGxuKCJWYWxpZGF0aW5nIDogIiArIHBhdGhzLmpvaW5Ub1N0cmluZyhzZXBlcmF0b3IpKQ0KKyAgICAgICAgICAgIG9wZXJhdGlvbkRlZmluaXRpb24uaW1wbGVtZW50YXRpb24/LmxldCB7IHZhbGlkYXRlSW1wbGVtZW50YXRpb24ob3BlcmF0aW9uRGVmaW5pdGlvbi5pbXBsZW1lbnRhdGlvbiEhKSB9DQorICAgICAgICAgICAgb3BlcmF0aW9uRGVmaW5pdGlvbi5pbnB1dHM/LmxldCB7IHZhbGlkYXRlUHJvcGVydHlEZWZpbml0aW9ucyhvcGVyYXRpb25EZWZpbml0aW9uLmlucHV0cyEhKSB9DQorICAgICAgICAgICAgb3BlcmF0aW9uRGVmaW5pdGlvbi5vdXRwdXRzPy5sZXQgeyB2YWxpZGF0ZVByb3BlcnR5RGVmaW5pdGlvbnMob3BlcmF0aW9uRGVmaW5pdGlvbi5vdXRwdXRzISEpIH0NCisgICAgICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgICAgICB9DQorICAgICAgICBwYXRocy5yZW1vdmVBdChwYXRocy5sYXN0SW5kZXgpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biB2YWxpZGF0ZUltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uOiBJbXBsZW1lbnRhdGlvbikgew0KKyAgICAgICAgY2hlY2tOb3RFbXB0eU5UaHJvdyhpbXBsZW1lbnRhdGlvbi5wcmltYXJ5KQ0KKyAgICB9DQorDQorICAgIEBUaHJvd3MoQmx1ZVByaW50RXhjZXB0aW9uOjpjbGFzcykNCisgICAgb3BlbiBmdW4gY2hlY2tWYWxpZE5vZGVUeXBlKG5vZGVUeXBlIDogU3RyaW5nKSB7DQorDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biBjaGVja1ZhbGlkQXJ0aWZhY3RUeXBlKGFydGlmYWN0VHlwZTogU3RyaW5nKSB7DQorDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuYXJ0aWZhY3RUeXBlcz8uY29udGFpbnNLZXkoYXJ0aWZhY3RUeXBlKQ0KKyAgICAgICAgICAgICAgICA/OiB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oZm9ybWF0KCJGYWlsZWQgdG8gbm9kZSB0eXBlIGRlZmluaXRpb24gZm9yIGFydGlmYWN0IGRlZmluaXRpb24gOiB7fSIsIGFydGlmYWN0VHlwZSkpDQorICAgIH0NCisNCisgICAgQFRocm93cyhCbHVlUHJpbnRFeGNlcHRpb246OmNsYXNzKQ0KKyAgICBvcGVuIGZ1biBjaGVja1ZhbGlkTm9kZVR5cGVzRGVyaXZlZEZyb20oZGVyaXZlZEZyb206IFN0cmluZykgew0KKw0KKyAgICB9DQorDQorICAgIHByaXZhdGUgZnVuIGNoZWNrUHJvcGVydHlWYWx1ZShwcm9wZXJ0eURlZmluaXRpb246IFByb3BlcnR5RGVmaW5pdGlvbiwganNvbk5vZGU6IEpzb25Ob2RlKSB7DQorICAgICAgICAvL2xvZ2dlci5pbmZvKCJ2YWxpZGF0aW5nIHBhdGggKHt9KSwgUHJvcGVydHkge30sIHZhbHVlICh7fSkiLCBwYXRocywgcHJvcGVydHlEZWZpbml0aW9uLCBqc29uTm9kZSkNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIGZ1biBjaGVja1Byb3BlcnR5RGF0YVR5cGUoZGF0YVR5cGU6IFN0cmluZywgcHJvcGVydHlOYW1lOiBTdHJpbmcpOiBCb29sZWFuIHsNCisgICAgICAgIGlmIChjaGVja0RhdGFUeXBlKGRhdGFUeXBlKSkgew0KKyAgICAgICAgICAgIHJldHVybiB0cnVlDQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoIkRhdGEgdHlwZSAoe30pIGZvciB0aGUgcHJvcGVydHkgKHt9KSBub3QgZm91bmQiLCBkYXRhVHlwZSwgcHJvcGVydHlOYW1lKSkNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIGZ1biBjaGVja1ByaW1pdGl2ZU9yQ29tcGxleChkYXRhVHlwZTogU3RyaW5nLCBwcm9wZXJ0eU5hbWU6IFN0cmluZyk6IEJvb2xlYW4gew0KKyAgICAgICAgaWYgKEJsdWVQcmludFR5cGVzLnZhbGlkUHJpbWl0aXZlVHlwZXMoKS5jb250YWlucyhkYXRhVHlwZSkgfHwgY2hlY2tEYXRhVHlwZShkYXRhVHlwZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gdHJ1ZQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBCbHVlUHJpbnRFeGNlcHRpb24oZm9ybWF0KCJEYXRhIHR5cGUgKHt9KSBmb3IgdGhlIHByb3BlcnR5ICh7fSkgaXMgbm90IHZhbGlkIiwgZGF0YVR5cGUpKQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgZnVuIGNoZWNrRGF0YVR5cGUoa2V5OiBTdHJpbmcpOiBCb29sZWFuIHsNCisgICAgICAgIHJldHVybiBzZXJ2aWNlVGVtcGxhdGUuZGF0YVR5cGVzPy5jb250YWluc0tleShrZXkpID86IGZhbHNlDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBmdW4gY2hlY2tOb2RlVHlwZShrZXk6IFN0cmluZyk6IEJvb2xlYW4gew0KKyAgICAgICAgcmV0dXJuIHNlcnZpY2VUZW1wbGF0ZS5ub2RlVHlwZXM/LmNvbnRhaW5zS2V5KGtleSkgPzogZmFsc2UNCisgICAgfQ0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL1Byb3BlcnR5QXNzaWdubWVudFNlcnZpY2Uua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL1Byb3BlcnR5QXNzaWdubWVudFNlcnZpY2Uua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4OWE2ZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvUHJvcGVydHlBc3NpZ25tZW50U2VydmljZS5rdApAQCAtMCwwICsxLDE5OCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnNlcnZpY2UNCisNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLk51bGxOb2RlDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb24NCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuKg0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5SZXNvdXJjZVJlc29sdmVyVXRpbHMNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK2NsYXNzIFByb3BlcnR5QXNzaWdubWVudFNlcnZpY2UodmFyIGNvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlOiBCbHVlUHJpbnRSdW50aW1lU2VydmljZSkgew0KKyAgICBwcml2YXRlIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorDQorICAgIHByaXZhdGUgdmFyIGJsdWVQcmludENvbnRleHQ6IEJsdWVQcmludENvbnRleHQgPSBibHVlUHJpbnRSdW50aW1lU2VydmljZS5ibHVlUHJpbnRDb250ZXh0DQorDQorLyoNCisNCitJZiBQcm9wZXJ0eSBBc3NpZ25tZW50IGlzIEV4cHJlc3Npb24uDQorICAgIEdldCB0aGUgRXhwcmVzc2lvbg0KKyAgICBSZWN1cnNzZWx5IHJlc29sdmUgdGhlIGV4cHJlc3Npb24NCisgKi8NCisNCisgICAgZnVuIHJlc29sdmVBc3NpZ25tZW50RXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGFzc2lnbm1lbnROYW1lOiBTdHJpbmcsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50OiBBbnkpOiBKc29uTm9kZSB7DQorICAgICAgICB2YXIgdmFsdWVOb2RlOiBKc29uTm9kZSA9IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisgICAgICAgIGxvZ2dlci50cmFjZSgiQXNzaWdubWVudCAoe30pIiwgYXNzaWdubWVudCkNCisgICAgICAgIHZhbCBleHByZXNzaW9uRGF0YSA9IEJsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlLmdldEV4cHJlc3Npb25EYXRhKGFzc2lnbm1lbnQpDQorDQorICAgICAgICBpZiAoZXhwcmVzc2lvbkRhdGEuaXNFeHByZXNzaW9uKSB7DQorICAgICAgICAgICAgdmFsdWVOb2RlID0gcmVzb2x2ZUV4cHJlc3Npb24obm9kZVRlbXBsYXRlTmFtZSwgYXNzaWdubWVudE5hbWUsIGV4cHJlc3Npb25EYXRhKQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB2YWx1ZU5vZGUgPSBleHByZXNzaW9uRGF0YS52YWx1ZU5vZGUNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiB2YWx1ZU5vZGUNCisgICAgfQ0KKw0KKyAgICBmdW4gcmVzb2x2ZUV4cHJlc3Npb24obm9kZVRlbXBsYXRlTmFtZTogU3RyaW5nLCBwcm9wTmFtZTogU3RyaW5nLCBleHByZXNzaW9uRGF0YTogRXhwcmVzc2lvbkRhdGEpOiBKc29uTm9kZSB7DQorDQorICAgICAgICB2YXIgdmFsdWVOb2RlOiBKc29uTm9kZSA9IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisNCisgICAgICAgIGlmKGV4cHJlc3Npb25EYXRhLmlzRXhwcmVzc2lvbikgew0KKyAgICAgICAgICAgIHZhbCBjb21tYW5kID0gZXhwcmVzc2lvbkRhdGEuY29tbWFuZCEhDQorDQorICAgICAgICAgICAgd2hlbihjb21tYW5kKXsNCisgICAgICAgICAgICAgICAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9JTlBVVCAtPnsNCisgICAgICAgICAgICAgICAgICAgIHZhbHVlTm9kZSA9IGJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlLmdldElucHV0VmFsdWUoZXhwcmVzc2lvbkRhdGEuaW5wdXRFeHByZXNzaW9uPy5wcm9wZXJ0eU5hbWUhISkNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX0FUVFJJQlVURSAtPnsNCisgICAgICAgICAgICAgICAgICAgIHZhbHVlTm9kZSA9IHJlc29sdmVBdHRyaWJ1dGVFeHByZXNzaW9uKG5vZGVUZW1wbGF0ZU5hbWUsIGV4cHJlc3Npb25EYXRhLmF0dHJpYnV0ZUV4cHJlc3Npb24hISkNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX1BST1BFUlRZIC0+ew0KKyAgICAgICAgICAgICAgICAgICAgdmFsdWVOb2RlID0gcmVzb2x2ZVByb3BlcnR5RXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lLCBleHByZXNzaW9uRGF0YS5wcm9wZXJ0eUV4cHJlc3Npb24hISkNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkVYUFJFU1NJT05fR0VUX09QRVJBVElPTl9PVVRQVVQgLT57DQorICAgICAgICAgICAgICAgICAgICB2YWx1ZU5vZGUgPSByZXNvbHZlT3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lLCBleHByZXNzaW9uRGF0YS5vcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uISEpDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9BUlRJRkFDVCAtPnsNCisgICAgICAgICAgICAgICAgICAgIHZhbHVlTm9kZSA9IHJlc29sdmVBcnRpZmFjdEV4cHJlc3Npb24obm9kZVRlbXBsYXRlTmFtZSwgZXhwcmVzc2lvbkRhdGEuYXJ0aWZhY3RFeHByZXNzaW9uISEpDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5FWFBSRVNTSU9OX0dFVF9OT0RFX09GX1RZUEUgLT57DQorDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgZWxzZSAtPnsNCisgICAgICAgICAgICAgICAgICAgIHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmb3IgcHJvcGVydHkgKHt9KSwgY29tbWFuZCAoe30pIGlzIG5vdCBzdXBwb3J0ZWQgIiwgcHJvcE5hbWUsIGNvbW1hbmQpKQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHZhbHVlTm9kZQ0KKyAgICB9DQorDQorICAgIC8qDQorICAgIGdldF9wcm9wZXJ0eTogWyA8bW9kZWxhYmxlX2VudGl0eV9uYW1lPiwgPG9wdGlvbmFsX3JlcV9vcl9jYXBfbmFtZT4sIDxwcm9wZXJ0eV9uYW1lPiwNCisgICAgPG5lc3RlZF9wcm9wZXJ0eV9uYW1lX29yX2luZGV4XzE+LCAuLi4sIDxuZXN0ZWRfcHJvcGVydHlfbmFtZV9vcl9pbmRleF9uPiBdDQorICovDQorICAgIGZ1biByZXNvbHZlQXR0cmlidXRlRXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIGF0dHJpYnV0ZUV4cHJlc3Npb246IEF0dHJpYnV0ZUV4cHJlc3Npb24pOiBKc29uTm9kZSB7DQorICAgICAgICB2YXIgdmFsdWVOb2RlOiBKc29uTm9kZSA9IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisNCisgICAgICAgIHZhbCBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlRXhwcmVzc2lvbi5hdHRyaWJ1dGVOYW1lDQorICAgICAgICB2YWwgc3ViQXR0cmlidXRlTmFtZTogU3RyaW5nPyA9IGF0dHJpYnV0ZUV4cHJlc3Npb24uc3ViQXR0cmlidXRlTmFtZQ0KKw0KKyAgICAgICAgdmFyIGF0dHJpYnV0ZU5vZGVUZW1wbGF0ZU5hbWUgPSBub2RlVGVtcGxhdGVOYW1lDQorICAgICAgICBpZiAoIWF0dHJpYnV0ZUV4cHJlc3Npb24ubW9kZWxhYmxlRW50aXR5TmFtZS5lcXVhbHMoIlNFTEYiLCB0cnVlKSkgew0KKyAgICAgICAgICAgIGF0dHJpYnV0ZU5vZGVUZW1wbGF0ZU5hbWUgPSBhdHRyaWJ1dGVFeHByZXNzaW9uLm1vZGVsYWJsZUVudGl0eU5hbWUNCisgICAgICAgIH0NCisNCisgICAgICAgIHZhbCBhdHRyaWJ1dGVFeHByZXNzaW9uID0gYmx1ZVByaW50Q29udGV4dC5ub2RlVGVtcGxhdGVCeU5hbWUoYXR0cmlidXRlTm9kZVRlbXBsYXRlTmFtZSkuYXR0cmlidXRlcz8uZ2V0KGF0dHJpYnV0ZU5hbWUpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmYWlsZWQgdG8gZ2V0IHByb3BlcnR5IGRlZmluaXRpb25zIGZvciBub2RlIHRlbXBsYXRlICh7fSkncyBwcm9wZXJ0eSBuYW1lICh7fSkgIiwgbm9kZVRlbXBsYXRlTmFtZSwgYXR0cmlidXRlTmFtZSkpDQorDQorICAgICAgICB2YXIgcHJvcGVydHlEZWZpbml0aW9uOiBBdHRyaWJ1dGVEZWZpbml0aW9uID0gYmx1ZVByaW50Q29udGV4dC5ub2RlVGVtcGxhdGVOb2RlVHlwZShhdHRyaWJ1dGVOb2RlVGVtcGxhdGVOYW1lKS5hdHRyaWJ1dGVzPy5nZXQoYXR0cmlidXRlTmFtZSkhIQ0KKw0KKyAgICAgICAgbG9nZ2VyLmluZm8oInRlbXBsYXRlIG5hbWUgKHt9KSwgcHJvcGVydHkgTmFtZSAoe30pIHJlc29sdmVkIHZhbHVlICh7fSkiLCBhdHRyaWJ1dGVOb2RlVGVtcGxhdGVOYW1lLCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVFeHByZXNzaW9uKQ0KKw0KKyAgICAgICAgLy8gQ2hlY2sgaXQgaXQgaXMgYSBuZXN0ZWQgZXhwcmVzc2lvbg0KKyAgICAgICAgdmFsdWVOb2RlID0gcmVzb2x2ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGF0dHJpYnV0ZU5vZGVUZW1wbGF0ZU5hbWUsIGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZUV4cHJlc3Npb24pDQorDQorLy8gICAgICAgIHN1YlByb3BlcnR5TmFtZT8ubGV0IHsNCisvLyAgICAgICAgICAgIHZhbHVlTm9kZSA9IHZhbHVlTm9kZS5hdChKc29uUG9pbnRlci52YWx1ZU9mKHN1YlByb3BlcnR5TmFtZSkpDQorLy8gICAgICAgIH0NCisgICAgICAgIHJldHVybiB2YWx1ZU5vZGUNCisgICAgfQ0KKw0KKyAgICAvKg0KKyAgICAgICAgZ2V0X3Byb3BlcnR5OiBbIDxtb2RlbGFibGVfZW50aXR5X25hbWU+LCA8b3B0aW9uYWxfcmVxX29yX2NhcF9uYW1lPiwgPHByb3BlcnR5X25hbWU+LA0KKyAgICAgICAgPG5lc3RlZF9wcm9wZXJ0eV9uYW1lX29yX2luZGV4XzE+LCAuLi4sIDxuZXN0ZWRfcHJvcGVydHlfbmFtZV9vcl9pbmRleF9uPiBdDQorICAgICAqLw0KKyAgICBmdW4gcmVzb2x2ZVByb3BlcnR5RXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsIHByb3BlcnR5RXhwcmVzc2lvbjogUHJvcGVydHlFeHByZXNzaW9uKTogSnNvbk5vZGUgew0KKyAgICAgICAgdmFyIHZhbHVlTm9kZTogSnNvbk5vZGUgPSBOdWxsTm9kZS5nZXRJbnN0YW5jZSgpDQorDQorICAgICAgICB2YWwgcHJvcGVydHlOYW1lID0gcHJvcGVydHlFeHByZXNzaW9uLnByb3BlcnR5TmFtZQ0KKyAgICAgICAgdmFsIHN1YlByb3BlcnR5TmFtZTogU3RyaW5nPyA9IHByb3BlcnR5RXhwcmVzc2lvbi5zdWJQcm9wZXJ0eU5hbWUNCisNCisgICAgICAgIHZhciBwcm9wZXJ0eU5vZGVUZW1wbGF0ZU5hbWUgPSBub2RlVGVtcGxhdGVOYW1lDQorICAgICAgICBpZiAoIXByb3BlcnR5RXhwcmVzc2lvbi5tb2RlbGFibGVFbnRpdHlOYW1lLmVxdWFscygiU0VMRiIsIHRydWUpKSB7DQorICAgICAgICAgICAgcHJvcGVydHlOb2RlVGVtcGxhdGVOYW1lID0gcHJvcGVydHlFeHByZXNzaW9uLm1vZGVsYWJsZUVudGl0eU5hbWUNCisgICAgICAgIH0NCisNCisgICAgICAgIHZhbCBwcm9wZXJ0eUV4cHJlc3Npb24gPSBibHVlUHJpbnRDb250ZXh0Lm5vZGVUZW1wbGF0ZUJ5TmFtZShwcm9wZXJ0eU5vZGVUZW1wbGF0ZU5hbWUpLnByb3BlcnRpZXM/LmdldChwcm9wZXJ0eU5hbWUpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmYWlsZWQgdG8gZ2V0IHByb3BlcnR5IGRlZmluaXRpb25zIGZvciBub2RlIHRlbXBsYXRlICh7fSkncyBwcm9wZXJ0eSBuYW1lICh7fSkgIiwgbm9kZVRlbXBsYXRlTmFtZSwgcHJvcGVydHlOYW1lKSkNCisNCisgICAgICAgIHZhciBwcm9wZXJ0eURlZmluaXRpb246IFByb3BlcnR5RGVmaW5pdGlvbiA9IGJsdWVQcmludENvbnRleHQubm9kZVRlbXBsYXRlTm9kZVR5cGUocHJvcGVydHlOb2RlVGVtcGxhdGVOYW1lKS5wcm9wZXJ0aWVzPy5nZXQocHJvcGVydHlOYW1lKSEhDQorDQorICAgICAgICBsb2dnZXIuaW5mbygidGVtcGxhdGUgbmFtZSAoe30pLCBwcm9wZXJ0eSBOYW1lICh7fSkgcmVzb2x2ZWQgdmFsdWUgKHt9KSIsIHByb3BlcnR5Tm9kZVRlbXBsYXRlTmFtZSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eUV4cHJlc3Npb24pDQorDQorICAgICAgICAvLyBDaGVjayBpdCBpdCBpcyBhIG5lc3RlZCBleHByZXNzaW9uDQorICAgICAgICB2YWx1ZU5vZGUgPSByZXNvbHZlQXNzaWdubWVudEV4cHJlc3Npb24ocHJvcGVydHlOb2RlVGVtcGxhdGVOYW1lLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RXhwcmVzc2lvbikNCisNCisvLyAgICAgICAgc3ViUHJvcGVydHlOYW1lPy5sZXQgew0KKy8vICAgICAgICAgICAgdmFsdWVOb2RlID0gdmFsdWVOb2RlLmF0KEpzb25Qb2ludGVyLnZhbHVlT2Yoc3ViUHJvcGVydHlOYW1lKSkNCisvLyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHZhbHVlTm9kZQ0KKyAgICB9DQorDQorICAgIC8qDQorICAgIGdldF9vcGVyYXRpb25fb3V0cHV0OiA8bW9kZWxhYmxlX2VudGl0eV9uYW1lPiwgPGludGVyZmFjZV9uYW1lPiwgPG9wZXJhdGlvbl9uYW1lPiwgPG91dHB1dF92YXJpYWJsZV9uYW1lPg0KKyAgICAgKi8NCisgICAgZnVuIHJlc29sdmVPcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uKG5vZGVUZW1wbGF0ZU5hbWU6IFN0cmluZywgb3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbjogT3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbik6IEpzb25Ob2RlIHsNCisgICAgICAgIHZhciBvdXRwdXROb2RlVGVtcGxhdGVOYW1lID0gbm9kZVRlbXBsYXRlTmFtZQ0KKyAgICAgICAgaWYgKCFvcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uLm1vZGVsYWJsZUVudGl0eU5hbWUuZXF1YWxzKCJTRUxGIiwgdHJ1ZSkpIHsNCisgICAgICAgICAgICBvdXRwdXROb2RlVGVtcGxhdGVOYW1lID0gb3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbi5tb2RlbGFibGVFbnRpdHlOYW1lDQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gYmx1ZVByaW50UnVudGltZVNlcnZpY2UuZ2V0Tm9kZVRlbXBsYXRlT3BlcmF0aW9uT3V0cHV0VmFsdWUob3V0cHV0Tm9kZVRlbXBsYXRlTmFtZSwNCisgICAgICAgICAgICAgICAgb3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbi5pbnRlcmZhY2VOYW1lLCBvcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uLm9wZXJhdGlvbk5hbWUsDQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbk91dHB1dEV4cHJlc3Npb24ucHJvcGVydHlOYW1lKQ0KKyAgICB9DQorDQorICAgIC8qDQorICAgIGdldF9hcnRpZmFjdDogWyA8bW9kZWxhYmxlX2VudGl0eV9uYW1lPiwgPGFydGlmYWN0X25hbWU+LCA8bG9jYXRpb24+LCA8cmVtb3ZlPiBdDQorICAgICAqLw0KKyAgICBmdW4gcmVzb2x2ZUFydGlmYWN0RXhwcmVzc2lvbihub2RlVGVtcGxhdGVOYW1lOiBTdHJpbmcsICBhcnRpZmFjdEV4cHJlc3Npb246IEFydGlmYWN0RXhwcmVzc2lvbik6IEpzb25Ob2RlIHsNCisNCisgICAgICAgIHZhciBhcnRpZmFjdE5vZGVUZW1wbGF0ZU5hbWUgPSBub2RlVGVtcGxhdGVOYW1lDQorICAgICAgICBpZiAoIWFydGlmYWN0RXhwcmVzc2lvbi5tb2RlbGFibGVFbnRpdHlOYW1lLmVxdWFscygiU0VMRiIsIHRydWUpKSB7DQorICAgICAgICAgICAgYXJ0aWZhY3ROb2RlVGVtcGxhdGVOYW1lID0gYXJ0aWZhY3RFeHByZXNzaW9uLm1vZGVsYWJsZUVudGl0eU5hbWUNCisgICAgICAgIH0NCisgICAgICAgIHZhbCBhcnRpZmFjdERlZmluaXRpb246IEFydGlmYWN0RGVmaW5pdGlvbiA9IGJsdWVQcmludENvbnRleHQubm9kZVRlbXBsYXRlQnlOYW1lKGFydGlmYWN0Tm9kZVRlbXBsYXRlTmFtZSkNCisgICAgICAgICAgICAgICAgLmFydGlmYWN0cz8uZ2V0KGFydGlmYWN0RXhwcmVzc2lvbi5hcnRpZmFjdE5hbWUpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmYWlsZWQgdG8gZ2V0IGFydGlmYWN0IGRlZmluaXRpb25zIGZvciBub2RlIHRlbXBsYXRlICh7fSkncyAiICsNCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJ0aWZhY3QgbmFtZSAoe30pICIsIG5vZGVUZW1wbGF0ZU5hbWUsIGFydGlmYWN0RXhwcmVzc2lvbi5hcnRpZmFjdE5hbWUpKQ0KKw0KKyAgICAgICAgcmV0dXJuIEphY2tzb25VdGlscy5qc29uTm9kZUZyb21PYmplY3QoYXJ0aWZhY3RDb250ZW50KGFydGlmYWN0RGVmaW5pdGlvbikpDQorICAgIH0NCisNCisgICAgZnVuIGFydGlmYWN0Q29udGVudChhcnRpZmFjdERlZmluaXRpb246IEFydGlmYWN0RGVmaW5pdGlvbik6IFN0cmluZyB7DQorICAgICAgICB2YWwgYmx1ZVByaW50QmFzZVBhdGg6IFN0cmluZyA9IGNvbnRleHRbb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QUk9QRVJUWV9CTFVFUFJJTlRfQkFTRV9QQVRIXSBhcz8gU3RyaW5nDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJmYWlsZWQgdG8gZ2V0IHByb3BlcnR5ICglcykgZnJvbSBjb250ZXh0Iiwgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5QUk9QRVJUWV9CTFVFUFJJTlRfQkFTRV9QQVRIKSkNCisNCisgICAgICAgIGlmIChhcnRpZmFjdERlZmluaXRpb24ucmVwb3NpdG9yeSAhPSBudWxsKSB7DQorICAgICAgICAgICAgVE9ETygpDQorICAgICAgICB9IGVsc2UgaWYgKGFydGlmYWN0RGVmaW5pdGlvbi5maWxlICE9IG51bGwpIHsNCisgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VSZXNvbHZlclV0aWxzLmdldEZpbGVDb250ZW50KGFydGlmYWN0RGVmaW5pdGlvbi5maWxlISEsIGJsdWVQcmludEJhc2VQYXRoKQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuICIiDQorICAgIH0NCit9DQorDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvQmx1ZVByaW50TWV0YWRhdGFVdGlscy5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0JsdWVQcmludE1ldGFkYXRhVXRpbHMua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkyMzZmNgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0JsdWVQcmludE1ldGFkYXRhVXRpbHMua3QKQEAgLTAsMCArMSw5NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzDQorDQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5GaWxlVXRpbHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5Ub3NjYU1ldGFEYXRhDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXINCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3RvcnkNCitpbXBvcnQgamF2YS5pby5GaWxlDQoraW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldA0KKw0KK29iamVjdCBCbHVlUHJpbnRNZXRhZGF0YVV0aWxzIHsNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biB0b3NjYU1ldGFEYXRhKGJhc2VQYXRoOiBTdHJpbmcpOiBUb3NjYU1ldGFEYXRhIHsNCisgICAgICAgIHZhbCB0b3NjYU1ldGFQYXRoID0gYmFzZVBhdGgucGx1cyhCbHVlUHJpbnRDb25zdGFudHMuUEFUSF9ESVZJREVSKS5wbHVzKCJUT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhIikNCisgICAgICAgIHJldHVybiB0b3NjYU1ldGFEYXRhRnJvbU1ldGFGaWxlKHRvc2NhTWV0YVBhdGgpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gdG9zY2FNZXRhRGF0YUZyb21NZXRhRmlsZShtZXRhRmlsZVBhdGg6IFN0cmluZyk6IFRvc2NhTWV0YURhdGEgew0KKyAgICAgICAgdmFsIHRvc2NhTWV0YURhdGEgPSBUb3NjYU1ldGFEYXRhKCkNCisgICAgICAgIHZhbCBsaW5lczogTXV0YWJsZUxpc3Q8U3RyaW5nPiA9IEZpbGVVdGlscy5yZWFkTGluZXMoRmlsZShtZXRhRmlsZVBhdGgpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICBsaW5lcy5mb3JFYWNoIHsgbGluZSAtPg0KKyAgICAgICAgICAgIGlmIChsaW5lLmNvbnRhaW5zKCI6IikpIHsNCisgICAgICAgICAgICAgICAgdmFsIGtleVZhbHVlID0gbGluZS5zcGxpdCgiOiIpDQorICAgICAgICAgICAgICAgIGlmIChrZXlWYWx1ZS5zaXplID09IDIpIHsNCisgICAgICAgICAgICAgICAgICAgIHZhbCB2YWx1ZTogU3RyaW5nID0ga2V5VmFsdWVbMV0udHJpbSgpDQorICAgICAgICAgICAgICAgICAgICB3aGVuIChrZXlWYWx1ZVswXSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICJUT1NDQS1NZXRhLUZpbGUtVmVyc2lvbiIgLT4gdG9zY2FNZXRhRGF0YS50b3NjYU1ldGFGaWxlVmVyc2lvbiA9IHZhbHVlDQorICAgICAgICAgICAgICAgICAgICAgICAgIkNTQVItVmVyc2lvbiIgLT4gdG9zY2FNZXRhRGF0YS5jc2FyVmVyc2lvbiA9IHZhbHVlDQorICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZWQtQnkiIC0+IHRvc2NhTWV0YURhdGEuY3JlYXRlZEJ5ID0gdmFsdWUNCisgICAgICAgICAgICAgICAgICAgICAgICAiRW50cnktRGVmaW5pdGlvbnMiIC0+IHRvc2NhTWV0YURhdGEuZW50aXR5RGVmaW5pdGlvbnMgPSB2YWx1ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICJUZW1wbGF0ZS1UYWdzIiAtPiB0b3NjYU1ldGFEYXRhLnRlbXBsYXRlVGFncyA9IHZhbHVlDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorDQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gdG9zY2FNZXRhRGF0YQ0KKyAgICB9DQorDQorICAgIC8qDQorICAgIGZ1biBnZXRCbHVlUHJpbnRDb250ZXh0KGJsdWVwcmludEJhc2VQYXRoOiBTdHJpbmcpOiBCbHVlUHJpbnRDb250ZXh0IHsNCisNCisgICAgICAgIHZhbCBtZXRhRGF0YUZpbGUgPSBTdHJpbmdCdWlsZGVyKCkuYXBwZW5kKGJsdWVwcmludEJhc2VQYXRoKS5hcHBlbmQoRmlsZS5zZXBhcmF0b3IpDQorICAgICAgICAgICAgICAgIC5hcHBlbmQoQmx1ZVByaW50Q29uc3RhbnRzLkRFRkFVTFRfVE9TQ0FfTUVUQURBVEFfRU5UUllfREVGSU5JVElPTl9GSUxFKS50b1N0cmluZygpDQorDQorICAgICAgICB2YWwgdG9zY2FNZXRhRGF0YTogVG9zY2FNZXRhRGF0YSA9IEJsdWVQcmludE1ldGFkYXRhVXRpbHMudG9zY2FNZXRhRGF0YShtZXRhRGF0YUZpbGUpDQorDQorICAgICAgICBsb2dnZXIuaW5mbygiUHJvY2Vzc2luZyBibHVlcHJpbnQgYmFzZSBwYXRoICh7fSkgYW5kIGVudHJ5IGRlZmluaXRpb24gZmlsZSAoe30pIiwgYmx1ZXByaW50QmFzZVBhdGgsIHRvc2NhTWV0YURhdGEuZW50aXR5RGVmaW5pdGlvbnMpDQorDQorICAgICAgICByZXR1cm4gQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5pbnN0YW5jZShCbHVlUHJpbnRDb25zdGFudHMuVFlQRV9ERUZBVUxUKSEhDQorICAgICAgICAgICAgICAgIC5yZWFkQmx1ZXByaW50RmlsZSh0b3NjYU1ldGFEYXRhLmVudGl0eURlZmluaXRpb25zISEsIGJsdWVwcmludEJhc2VQYXRoKQ0KKyAgICB9DQorDQorICAgIGZ1biBnZXRCbHVlUHJpbnRSdW50aW1lKHJlcXVlc3RJZDogU3RyaW5nLCBibHVlcHJpbnRCYXNlUGF0aDogU3RyaW5nKTogQmx1ZVByaW50UnVudGltZVNlcnZpY2Ugew0KKw0KKyAgICAgICAgdmFsIG1ldGFEYXRhRmlsZSA9IFN0cmluZ0J1aWxkZXIoKS5hcHBlbmQoYmx1ZXByaW50QmFzZVBhdGgpLmFwcGVuZChGaWxlLnNlcGFyYXRvcikNCisgICAgICAgICAgICAgICAgLmFwcGVuZChCbHVlUHJpbnRDb25zdGFudHMuREVGQVVMVF9UT1NDQV9NRVRBREFUQV9FTlRSWV9ERUZJTklUSU9OX0ZJTEUpLnRvU3RyaW5nKCkNCisNCisgICAgICAgIHZhbCB0b3NjYU1ldGFEYXRhOiBUb3NjYU1ldGFEYXRhID0gQmx1ZVByaW50TWV0YWRhdGFVdGlscy50b3NjYU1ldGFEYXRhKG1ldGFEYXRhRmlsZSkNCisNCisgICAgICAgIGxvZ2dlci5pbmZvKCJQcm9jZXNzaW5nIGJsdWVwcmludCBiYXNlIHBhdGggKHt9KSBhbmQgZW50cnkgZGVmaW5pdGlvbiBmaWxlICh7fSkiLCBibHVlcHJpbnRCYXNlUGF0aCwgdG9zY2FNZXRhRGF0YS5lbnRpdHlEZWZpbml0aW9ucykNCisNCisgICAgICAgIHZhbCBibHVlUHJpbnRDb250ZXh0OiBCbHVlUHJpbnRDb250ZXh0ID0gQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5pbnN0YW5jZShCbHVlUHJpbnRDb25zdGFudHMuVFlQRV9ERUZBVUxUKSEhDQorICAgICAgICAgICAgICAgIC5yZWFkQmx1ZXByaW50RmlsZSh0b3NjYU1ldGFEYXRhLmVudGl0eURlZmluaXRpb25zISEsIGJsdWVwcmludEJhc2VQYXRoKQ0KKw0KKyAgICAgICAgdmFsIGNvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+ID0gaGFzaE1hcE9mKCkNCisgICAgICAgIGNvbnRleHRbQmx1ZVByaW50Q29uc3RhbnRzLlBST1BFUlRZX0JMVUVQUklOVF9CQVNFX1BBVEhdID0gYmx1ZXByaW50QmFzZVBhdGgNCisgICAgICAgIGNvbnRleHRbQmx1ZVByaW50Q29uc3RhbnRzLlBST1BFUlRZX0JMVUVQUklOVF9QUk9DRVNTX0lEXSA9IHJlcXVlc3RJZA0KKw0KKyAgICAgICAgdmFsIGJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlOiBCbHVlUHJpbnRSdW50aW1lU2VydmljZSA9IEJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlKGJsdWVQcmludENvbnRleHQsIGNvbnRleHQpDQorDQorICAgICAgICByZXR1cm4gYmx1ZVByaW50UnVudGltZVNlcnZpY2UNCisgICAgfQ0KKyAgICAqLw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9CbHVlUHJpbnRSdW50aW1lVXRpbHMua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9CbHVlUHJpbnRSdW50aW1lVXRpbHMua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFkOTIwMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0JsdWVQcmludFJ1bnRpbWVVdGlscy5rdApAQCAtMCwwICsxLDU1IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLk51bGxOb2RlDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnNlcnZpY2UuQmx1ZVByaW50Q29udGV4dA0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorb2JqZWN0IEJsdWVQcmludFJ1bnRpbWVVdGlscyB7DQorICAgIHByaXZhdGUgdmFsIGxvZ2dlcjogTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpczo6Y2xhc3MudG9TdHJpbmcoKSkNCisNCisgICAgZnVuIGFzc2lnbklucHV0c0Zyb21GaWxlKGJsdWVQcmludENvbnRleHQ6IEJsdWVQcmludENvbnRleHQsIGZpbGVOYW1lOiBTdHJpbmcsIGNvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+KSB7DQorICAgICAgICB2YWwganNvbk5vZGU6IEpzb25Ob2RlID0gSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbUZpbGUoZmlsZU5hbWUpDQorICAgICAgICByZXR1cm4gYXNzaWduSW5wdXRzKGJsdWVQcmludENvbnRleHQsIGpzb25Ob2RlLCBjb250ZXh0KQ0KKyAgICB9DQorDQorICAgIGZ1biBhc3NpZ25JbnB1dHNGcm9tQ29udGVudChibHVlUHJpbnRDb250ZXh0OiBCbHVlUHJpbnRDb250ZXh0LCBjb250ZW50OiBTdHJpbmcsIGNvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+KSB7DQorICAgICAgICB2YWwganNvbk5vZGU6IEpzb25Ob2RlID0gSmFja3NvblV0aWxzLmpzb25Ob2RlKGNvbnRlbnQpDQorICAgICAgICByZXR1cm4gYXNzaWduSW5wdXRzKGJsdWVQcmludENvbnRleHQsIGpzb25Ob2RlLCBjb250ZXh0KQ0KKyAgICB9DQorDQorICAgIGZ1biBhc3NpZ25JbnB1dHMoYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dCwganNvbk5vZGU6IEpzb25Ob2RlLCBjb250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pikgew0KKyAgICAgICAgbG9nZ2VyLmluZm8oImFzc2lnbklucHV0cyBmcm9tIGlucHV0IEpTT04gKHt9KSIsIGpzb25Ob2RlLnRvU3RyaW5nKCkpDQorICAgICAgICBibHVlUHJpbnRDb250ZXh0LmlucHV0cz8uZm9yRWFjaCB7IHByb3BlcnR5TmFtZSwgcHJvcGVydHkgLT4NCisgICAgICAgICAgICB2YWwgdmFsdWVOb2RlOiBKc29uTm9kZSA9IGpzb25Ob2RlLmF0KCIvIi5wbHVzKHByb3BlcnR5TmFtZSkpID86IE51bGxOb2RlLmdldEluc3RhbmNlKCkNCisNCisgICAgICAgICAgICB2YWwgcGF0aCA9IEJsdWVQcmludENvbnN0YW50cy5QQVRIX0lOUFVUUy5wbHVzKEJsdWVQcmludENvbnN0YW50cy5QQVRIX0RJVklERVIpLnBsdXMocHJvcGVydHlOYW1lKQ0KKyAgICAgICAgICAgIGxvZ2dlci50cmFjZSgic2V0dGluZyBpbnB1dCBwYXRoICh7fSksIHZhbHVlcyAoe30pIiwgcGF0aCwgdmFsdWVOb2RlKQ0KKyAgICAgICAgICAgIGNvbnRleHRbcGF0aF0gPSB2YWx1ZU5vZGUNCisgICAgICAgIH0NCisgICAgfQ0KKw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9KYWNrc29uVXRpbHMua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9KYWNrc29uVXRpbHMua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTViMmFmNwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0phY2tzb25VdGlscy5rdApAQCAtMCwwICsxLDE3OSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25JbmNsdWRlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5jb3JlLnR5cGUuVHlwZVJlZmVyZW5jZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQuSnNvbk5vZGUNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6YXRpb25GZWF0dXJlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLkFycmF5Tm9kZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5OdWxsTm9kZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5PYmplY3ROb2RlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5tb2R1bGUua290bGluLmphY2tzb25PYmplY3RNYXBwZXINCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLkZpbGVVdGlscw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uSU9VdGlscw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRUeXBlcw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZm9ybWF0DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQoraW1wb3J0IGphdmEuaW8uRmlsZQ0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgSmFja3NvblV0aWxzIHsNCisgICAgcHJpdmF0ZSB2YWwgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSmFja3NvblV0aWxzOjpjbGFzcy5qYXZhKQ0KKw0KKyAgICBpbmxpbmUgZnVuIDxyZWlmaWVkIFQgOiBBbnk+IHJlYWRWYWx1ZShjb250ZW50OiBTdHJpbmcpOiBUID0NCisgICAgICAgICAgICBqYWNrc29uT2JqZWN0TWFwcGVyKCkucmVhZFZhbHVlKGNvbnRlbnQsIFQ6OmNsYXNzLmphdmEpDQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIDxUPiByZWFkVmFsdWUoY29udGVudDogU3RyaW5nLCB2YWx1ZVR5cGU6IENsYXNzPFQ+KTogVD8gew0KKyAgICAgICAgcmV0dXJuIGphY2tzb25PYmplY3RNYXBwZXIoKS5yZWFkVmFsdWUoY29udGVudCwgdmFsdWVUeXBlKQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIGpzb25Ob2RlRnJvbU9iamVjdChmcm9tOiBrb3RsaW4uQW55KTogSnNvbk5vZGUgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkuY29udmVydFZhbHVlKGZyb20sIEpzb25Ob2RlOjpjbGFzcy5qYXZhKQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBqc29uTm9kZUZyb21DbGFzc1BhdGhGaWxlKGZpbGVOYW1lOiBTdHJpbmcpOiBKc29uTm9kZSB7DQorICAgICAgICB2YWwgY29udGVudDogU3RyaW5nID0gSU9VdGlscy50b1N0cmluZyhKYWNrc29uVXRpbHM6OmNsYXNzLmphdmEuY2xhc3NMb2FkZXIuZ2V0UmVzb3VyY2VBc1N0cmVhbShmaWxlTmFtZSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSkNCisgICAgICAgICAgICAgICAgPzogdGhyb3cgQmx1ZVByaW50RXhjZXB0aW9uKFN0cmluZy5mb3JtYXQoIkZhaWxlZCB0byByZWFkIGpzb24gZmlsZSA6ICVzIiwgZmlsZU5hbWUpKQ0KKyAgICAgICAgcmV0dXJuIGpzb25Ob2RlKGNvbnRlbnQpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4ganNvbk5vZGVGcm9tRmlsZShmaWxlTmFtZTogU3RyaW5nKTogSnNvbk5vZGUgew0KKyAgICAgICAgdmFsIGNvbnRlbnQ6IFN0cmluZyA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKEZpbGUoZmlsZU5hbWUpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICAgICAgICAgID86IHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihmb3JtYXQoIkZhaWxlZCB0byByZWFkIGpzb24gZmlsZSA6IHt9IiwgZmlsZU5hbWUpKQ0KKyAgICAgICAgcmV0dXJuIGpzb25Ob2RlKGNvbnRlbnQpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4ganNvbk5vZGUoY29udGVudDogU3RyaW5nKTogSnNvbk5vZGUgew0KKyAgICAgICAgcmV0dXJuIGphY2tzb25PYmplY3RNYXBwZXIoKS5yZWFkVHJlZShjb250ZW50KQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIGdldEpzb24oYW55OiBrb3RsaW4uQW55KTogU3RyaW5nIHsNCisgICAgICAgIHJldHVybiBnZXRKc29uKGFueSwgZmFsc2UpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gZ2V0SnNvbihhbnk6IGtvdGxpbi5BbnksIHByZXR0eTogQm9vbGVhbiA9IGZhbHNlKTogU3RyaW5nIHsNCisgICAgICAgIHZhbCBvYmplY3RNYXBwZXIgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkNCisgICAgICAgIG9iamVjdE1hcHBlci5zZXRTZXJpYWxpemF0aW9uSW5jbHVzaW9uKEpzb25JbmNsdWRlLkluY2x1ZGUuTk9OX05VTEwpDQorICAgICAgICBpZiAocHJldHR5KSB7DQorICAgICAgICAgICAgb2JqZWN0TWFwcGVyLmVuYWJsZShTZXJpYWxpemF0aW9uRmVhdHVyZS5JTkRFTlRfT1VUUFVUKQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIG9iamVjdE1hcHBlci53cml0ZVZhbHVlQXNTdHJpbmcoYW55KQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIDxUPiBnZXRMaXN0RnJvbUpzb24oY29udGVudDogU3RyaW5nLCB2YWx1ZVR5cGU6IENsYXNzPFQ+KTogTGlzdDxUPj8gew0KKyAgICAgICAgdmFsIG9iamVjdE1hcHBlciA9IGphY2tzb25PYmplY3RNYXBwZXIoKQ0KKyAgICAgICAgdmFsIGphdmFUeXBlID0gb2JqZWN0TWFwcGVyLnR5cGVGYWN0b3J5LmNvbnN0cnVjdENvbGxlY3Rpb25UeXBlKExpc3Q6OmNsYXNzLmphdmEsIHZhbHVlVHlwZSkNCisgICAgICAgIHJldHVybiBvYmplY3RNYXBwZXIucmVhZFZhbHVlPExpc3Q8VD4+KGNvbnRlbnQsIGphdmFUeXBlKQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIDxUPiBnZXRNYXBGcm9tSnNvbihjb250ZW50OiBTdHJpbmcsIHZhbHVlVHlwZTogQ2xhc3M8VD4pOiBNdXRhYmxlTWFwPFN0cmluZywgVD4/IHsNCisgICAgICAgIHZhbCBvYmplY3RNYXBwZXIgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkNCisgICAgICAgIHZhbCB0eXBlUmVmID0gb2JqZWN0IDogVHlwZVJlZmVyZW5jZTxNdXRhYmxlTWFwPFN0cmluZywgVD4+KCkge30NCisgICAgICAgIHJldHVybiBvYmplY3RNYXBwZXIucmVhZFZhbHVlKGNvbnRlbnQsIHR5cGVSZWYpDQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gcG9wdWxhdGVQcmltaXRpdmVWYWx1ZXMoa2V5OiBTdHJpbmcsIHZhbHVlOiBBbnksIHByaW1pdGl2ZVR5cGU6IFN0cmluZywgb2JqZWN0Tm9kZTogT2JqZWN0Tm9kZSkgew0KKyAgICAgICAgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0JPT0xFQU4gPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUucHV0KGtleSwgdmFsdWUgYXMgQm9vbGVhbikNCisgICAgICAgIH0gZWxzZSBpZiAob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfSU5URUdFUiA9PSBwcmltaXRpdmVUeXBlKSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCB2YWx1ZSBhcyBJbnQpDQorICAgICAgICB9IGVsc2UgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0ZMT0FUID09IHByaW1pdGl2ZVR5cGUpIHsNCisgICAgICAgICAgICBvYmplY3ROb2RlLnB1dChrZXksIHZhbHVlIGFzIEZsb2F0KQ0KKyAgICAgICAgfSBlbHNlIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9USU1FU1RBTVAgPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUucHV0KGtleSwgdmFsdWUgYXMgU3RyaW5nKQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBvYmplY3ROb2RlLnB1dChrZXksIHZhbHVlIGFzIFN0cmluZykNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBwb3B1bGF0ZVByaW1pdGl2ZVZhbHVlcyh2YWx1ZTogQW55LCBwcmltaXRpdmVUeXBlOiBTdHJpbmcsIG9iamVjdE5vZGU6IEFycmF5Tm9kZSkgew0KKyAgICAgICAgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0JPT0xFQU4gPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUuYWRkKHZhbHVlIGFzIEJvb2xlYW4pDQorICAgICAgICB9IGVsc2UgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0lOVEVHRVIgPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUuYWRkKHZhbHVlIGFzIEludCkNCisgICAgICAgIH0gZWxzZSBpZiAob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfRkxPQVQgPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUuYWRkKHZhbHVlIGFzIEZsb2F0KQ0KKyAgICAgICAgfSBlbHNlIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9USU1FU1RBTVAgPT0gcHJpbWl0aXZlVHlwZSkgew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUuYWRkKHZhbHVlIGFzIFN0cmluZykNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5hZGQodmFsdWUgYXMgU3RyaW5nKQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIHBvcHVsYXRlUHJpbWl0aXZlRGVmYXVsdFZhbHVlcyhrZXk6IFN0cmluZywgcHJpbWl0aXZlVHlwZTogU3RyaW5nLCBvYmplY3ROb2RlOiBPYmplY3ROb2RlKSB7DQorICAgICAgICBpZiAob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfQk9PTEVBTiA9PSBwcmltaXRpdmVUeXBlKSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBmYWxzZSkNCisgICAgICAgIH0gZWxzZSBpZiAob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfSU5URUdFUiA9PSBwcmltaXRpdmVUeXBlKSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCAwKQ0KKyAgICAgICAgfSBlbHNlIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9GTE9BVCA9PSBwcmltaXRpdmVUeXBlKSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCAwLjApDQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG9iamVjdE5vZGUucHV0KGtleSwgIiIpDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQEp2bVN0YXRpYw0KKyAgICBmdW4gcG9wdWxhdGVQcmltaXRpdmVEZWZhdWx0VmFsdWVzRm9yQXJyYXlOb2RlKHByaW1pdGl2ZVR5cGU6IFN0cmluZywgYXJyYXlOb2RlOiBBcnJheU5vZGUpIHsNCisgICAgICAgIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9CT09MRUFOID09IHByaW1pdGl2ZVR5cGUpIHsNCisgICAgICAgICAgICBhcnJheU5vZGUuYWRkKGZhbHNlKQ0KKyAgICAgICAgfSBlbHNlIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9JTlRFR0VSID09IHByaW1pdGl2ZVR5cGUpIHsNCisgICAgICAgICAgICBhcnJheU5vZGUuYWRkKDApDQorICAgICAgICB9IGVsc2UgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0ZMT0FUID09IHByaW1pdGl2ZVR5cGUpIHsNCisgICAgICAgICAgICBhcnJheU5vZGUuYWRkKDAuMCkNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYXJyYXlOb2RlLmFkZCgiIikNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBwb3B1bGF0ZUpzb25Ob2RlVmFsdWVzKGtleTogU3RyaW5nLCBub2RlVmFsdWU6IEpzb25Ob2RlPywgdHlwZTogU3RyaW5nLCBvYmplY3ROb2RlOiBPYmplY3ROb2RlKSB7DQorICAgICAgICBpZiAobm9kZVZhbHVlID09IG51bGwgfHwgbm9kZVZhbHVlIGlzIE51bGxOb2RlKSB7DQorICAgICAgICAgICAgb2JqZWN0Tm9kZS5zZXQoa2V5LCBub2RlVmFsdWUpDQorICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludFR5cGVzLnZhbGlkUHJpbWl0aXZlVHlwZXMoKS5jb250YWlucyh0eXBlKSkgew0KKyAgICAgICAgICAgIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9CT09MRUFOID09IHR5cGUpIHsNCisgICAgICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBub2RlVmFsdWUuYXNCb29sZWFuKCkpDQorICAgICAgICAgICAgfSBlbHNlIGlmIChvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9JTlRFR0VSID09IHR5cGUpIHsNCisgICAgICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBub2RlVmFsdWUuYXNJbnQoKSkNCisgICAgICAgICAgICB9IGVsc2UgaWYgKG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMuREFUQV9UWVBFX0ZMT0FUID09IHR5cGUpIHsNCisgICAgICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBub2RlVmFsdWUuZmxvYXRWYWx1ZSgpKQ0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfVElNRVNUQU1QID09IHR5cGUpIHsNCisgICAgICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBub2RlVmFsdWUuYXNUZXh0KCkpDQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgb2JqZWN0Tm9kZS5wdXQoa2V5LCBub2RlVmFsdWUuYXNUZXh0KCkpDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBvYmplY3ROb2RlLnNldChrZXksIG5vZGVWYWx1ZSkNCisgICAgICAgIH0NCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9SZXNvdXJjZVJlc29sdmVyVXRpbHMua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9SZXNvdXJjZVJlc29sdmVyVXRpbHMua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2NzQ1NQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvbWFpbi9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL1Jlc291cmNlUmVzb2x2ZXJVdGlscy5rdApAQCAtMCwwICsxLDYyIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLkZpbGVVdGlscw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5jaGVja05vdEVtcHR5DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXINCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3RvcnkNCitpbXBvcnQgamF2YS5pby5GaWxlDQoraW1wb3J0IGphdmEubmV0LlVSTA0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgUmVzb3VyY2VSZXNvbHZlclV0aWxzIHsNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBnZXRGaWxlQ29udGVudChmaWxlbmFtZSA6IFN0cmluZywgYmFzZVBhdGggOiBTdHJpbmc/KTogU3RyaW5nIHsNCisgICAgICAgIGxvZ2dlci50cmFjZSgiZmlsZSAoe30pLCBiYXNlUGF0aCAoe30pICIsIGZpbGVuYW1lLCBiYXNlUGF0aCkNCisgICAgICAgIHRyeXsNCisgICAgICAgICAgICB2YXIgcmVzb2x2ZWRGaWxlTmFtZSA6IFN0cmluZyA9IGZpbGVuYW1lDQorICAgICAgICAgICAgaWYoZmlsZW5hbWUuc3RhcnRzV2l0aCgiaHR0cCIsIHRydWUpDQorICAgICAgICAgICAgICAgICAgICB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCJodHRwcyIsIHRydWUpKXsNCisgICAgICAgICAgICAgICAgdmFsIGdpdmVuVXJsIDogU3RyaW5nID0gVVJMKGZpbGVuYW1lKS50b1N0cmluZygpDQorICAgICAgICAgICAgICAgIHZhbCBzeXN0ZW1VcmwgOiBTdHJpbmcgPSBGaWxlKCIuIikudG9VUkkoKS50b1VSTCgpLnRvU3RyaW5nKCkNCisgICAgICAgICAgICAgICAgbG9nZ2VyLnRyYWNlKCJnaXZlblVybCAoe30pLCBzeXN0ZW1VcmwgKHt9KSAiLCBnaXZlblVybCwgc3lzdGVtVXJsKQ0KKyAgICAgICAgICAgICAgICBpZihnaXZlblVybC5zdGFydHNXaXRoKHN5c3RlbVVybCkpew0KKw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfWVsc2V7DQorICAgICAgICAgICAgICAgIGlmKCFmaWxlbmFtZS5zdGFydHNXaXRoKCIvIikpew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrTm90RW1wdHkoYmFzZVBhdGgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRGaWxlTmFtZSA9IGJhc2VQYXRoLnBsdXMoRmlsZS5zZXBhcmF0b3IpLnBsdXMoZmlsZW5hbWUpDQorICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEZpbGVOYW1lID0gamF2YUNsYXNzLmNsYXNzTG9hZGVyLmdldFJlc291cmNlKCIuIikucGF0aC5wbHVzKGZpbGVuYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBGaWxlVXRpbHMucmVhZEZpbGVUb1N0cmluZyhGaWxlKHJlc29sdmVkRmlsZU5hbWUpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpDQorICAgICAgICB9Y2F0Y2ggKGUgOiBFeGNlcHRpb24pew0KKyAgICAgICAgICAgIHRocm93IEJsdWVQcmludEV4Y2VwdGlvbihlLCAiZmFpbGVkIHRvIGZpbGUgKCVzKSwgYmFzZVBhdGggKCVzKSAiLCBmaWxlbmFtZSwgYmFzZVBhdGgpDQorICAgICAgICB9DQorICAgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvU2VydmljZVRlbXBsYXRlVXRpbHMua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9TZXJ2aWNlVGVtcGxhdGVVdGlscy5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmNiOWIyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvU2VydmljZVRlbXBsYXRlVXRpbHMua3QKQEAgLTAsMCArMSw0NCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzDQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5GaWxlVXRpbHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlDQoraW1wb3J0IGphdmEuaW8uRmlsZQ0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQNCisNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitvYmplY3QgU2VydmljZVRlbXBsYXRlVXRpbHMgew0KKw0KKyAgICBASnZtU3RhdGljDQorICAgIGZ1biBnZXRTZXJ2aWNlVGVtcGxhdGUoZmlsZU5hbWU6IFN0cmluZyk6IFNlcnZpY2VUZW1wbGF0ZSB7DQorICAgICAgICB2YWwgY29udGVudDogU3RyaW5nID0gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcoRmlsZShmaWxlTmFtZSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSkNCisgICAgICAgIHJldHVybiBnZXRTZXJ2aWNlVGVtcGxhdGVGcm9tQ29udGVudChjb250ZW50KQ0KKyAgICB9DQorDQorDQorICAgIEBKdm1TdGF0aWMNCisgICAgZnVuIGdldFNlcnZpY2VUZW1wbGF0ZUZyb21Db250ZW50KGNvbnRlbnQ6IFN0cmluZyk6IFNlcnZpY2VUZW1wbGF0ZSB7DQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZTxTZXJ2aWNlVGVtcGxhdGU+KGNvbnRlbnQpDQorICAgIH0NCisNCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvVG9wb2xvZ2ljYWxTb3J0aW5nVXRpbHMua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL21haW4va290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9Ub3BvbG9naWNhbFNvcnRpbmdVdGlscy5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2FmYTk3Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy9tYWluL2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvVG9wb2xvZ2ljYWxTb3J0aW5nVXRpbHMua3QKQEAgLTAsMCArMSwxMzEgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuKg0KKw0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK2NsYXNzIFRvcG9sb2dpY2FsU29ydGluZ1V0aWxzPFY+IHsNCisNCisgICAgcHJpdmF0ZSB2YWwgbmVpZ2hib3JzOiBNdXRhYmxlTWFwPFYsIE11dGFibGVMaXN0PFY+PiA9IGhhc2hNYXBPZigpDQorDQorICAgIHZhbCBpc0RhZzogQm9vbGVhbg0KKyAgICAgICAgZ2V0KCkgPSB0b3BTb3J0KCkgIT0gbnVsbA0KKw0KKyAgICBvdmVycmlkZSBmdW4gdG9TdHJpbmcoKTogU3RyaW5nIHsNCisgICAgICAgIHZhbCBzID0gU3RyaW5nQnVmZmVyKCkNCisgICAgICAgIGZvciAodiBpbiBuZWlnaGJvcnMua2V5cykNCisgICAgICAgICAgICBzLmFwcGVuZCgiXG4gICAgIiArIHYgKyAiIC0+ICIgKyBuZWlnaGJvcnNbdl0pDQorICAgICAgICByZXR1cm4gcy50b1N0cmluZygpDQorICAgIH0NCisNCisgICAgZnVuIGdldE5laWdoYm9ycygpOiBNYXA8ViwgTGlzdDxWPj4gew0KKyAgICAgICAgcmV0dXJuIG5laWdoYm9ycw0KKyAgICB9DQorDQorICAgIGZ1biBhZGQodmVydGV4OiBWKSB7DQorICAgICAgICBpZiAobmVpZ2hib3JzLmNvbnRhaW5zS2V5KHZlcnRleCkpDQorICAgICAgICAgICAgcmV0dXJuDQorICAgICAgICBuZWlnaGJvcnNbdmVydGV4XSA9IGFycmF5TGlzdE9mKCkNCisgICAgfQ0KKw0KKyAgICBvcGVyYXRvciBmdW4gY29udGFpbnModmVydGV4OiBWKTogQm9vbGVhbiB7DQorICAgICAgICByZXR1cm4gbmVpZ2hib3JzLmNvbnRhaW5zS2V5KHZlcnRleCkNCisgICAgfQ0KKw0KKyAgICBmdW4gYWRkKGZyb206IFYsIHRvOiBWKSB7DQorICAgICAgICB0aGlzLmFkZChmcm9tKQ0KKyAgICAgICAgdGhpcy5hZGQodG8pDQorICAgICAgICBuZWlnaGJvcnNbZnJvbV0/LmFkZCh0bykNCisgICAgfQ0KKw0KKyAgICBmdW4gcmVtb3ZlKGZyb206IFYsIHRvOiBWKSB7DQorICAgICAgICBpZiAoISh0aGlzLmNvbnRhaW5zKGZyb20pICYmIHRoaXMuY29udGFpbnModG8pKSkNCisgICAgICAgICAgICB0aHJvdyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5vbmV4aXN0ZW50IHZlcnRleCIpDQorICAgICAgICBuZWlnaGJvcnNbZnJvbV0/LnJlbW92ZSh0bykNCisgICAgfQ0KKw0KKyAgICBmdW4gb3V0RGVncmVlKCk6IE1hcDxWLCBJbnQ+IHsNCisgICAgICAgIHZhciByZXN1bHQ6IE11dGFibGVNYXA8ViwgSW50PiA9IGhhc2hNYXBPZigpDQorICAgICAgICBmb3IgKHYgaW4gbmVpZ2hib3JzLmtleXMpDQorICAgICAgICAgICAgcmVzdWx0W3ZdID0gbmVpZ2hib3JzW3ZdISEuc2l6ZQ0KKyAgICAgICAgcmV0dXJuIHJlc3VsdA0KKyAgICB9DQorDQorDQorICAgIGZ1biBpbkRlZ3JlZSgpOiBNdXRhYmxlTWFwPFYsIEludD4gew0KKyAgICAgICAgdmFsIHJlc3VsdCA9IEhhc2hNYXA8ViwgSW50PigpDQorICAgICAgICBmb3IgKHYgaW4gbmVpZ2hib3JzLmtleXMpDQorICAgICAgICAgICAgcmVzdWx0W3ZdID0gMCAgICAgICAvLyBBbGwgaW4tZGVncmVlcyBhcmUgMA0KKyAgICAgICAgZm9yIChmcm9tIGluIG5laWdoYm9ycy5rZXlzKSB7DQorICAgICAgICAgICAgZm9yICh0byBpbiBuZWlnaGJvcnNbZnJvbV0hISkgew0KKyAgICAgICAgICAgICAgICByZXN1bHRbdG9dID0gcmVzdWx0W3RvXSEhICsgMSAgICAgICAgICAgLy8gSW5jcmVtZW50IGluLWRlZ3JlZQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXN1bHQNCisgICAgfQ0KKw0KKyAgICBmdW4gdG9wU29ydCgpOiBMaXN0PFY+PyB7DQorICAgICAgICB2YWwgZGVncmVlID0gaW5EZWdyZWUoKQ0KKyAgICAgICAgLy8gRGV0ZXJtaW5lIGFsbCB2ZXJ0aWNlcyB3aXRoIHplcm8gaW4tZGVncmVlDQorICAgICAgICB2YWwgemVyb1ZlcnRzID0gU3RhY2s8Vj4oKSAgICAgICAgLy8gU3RhY2sgYXMgZ29vZCBhcyBhbnkgaGVyZQ0KKyAgICAgICAgZm9yICh2IGluIGRlZ3JlZS5rZXlzKSB7DQorICAgICAgICAgICAgaWYgKGRlZ3JlZVt2XSA9PSAwKSB6ZXJvVmVydHMucHVzaCh2KQ0KKyAgICAgICAgfQ0KKyAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0b3BvbG9naWNhbCBvcmRlcg0KKyAgICAgICAgdmFsIHJlc3VsdCA9IEFycmF5TGlzdDxWPigpDQorICAgICAgICB3aGlsZSAoIXplcm9WZXJ0cy5pc0VtcHR5KCkpIHsNCisgICAgICAgICAgICB2YWwgdiA9IHplcm9WZXJ0cy5wb3AoKSAgICAgICAgICAgICAgICAgIC8vIENob29zZSBhIHZlcnRleCB3aXRoIHplcm8gaW4tZGVncmVlDQorICAgICAgICAgICAgcmVzdWx0LmFkZCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IHYgaXMgbmV4dCBpbiB0b3BvbCBvcmRlcg0KKyAgICAgICAgICAgIC8vICJSZW1vdmUiIHZlcnRleCB2IGJ5IHVwZGF0aW5nIGl0cyBuZWlnaGJvcnMNCisgICAgICAgICAgICBmb3IgKG5laWdoYm9yIGluIG5laWdoYm9yc1t2XSEhKSB7DQorICAgICAgICAgICAgICAgIGRlZ3JlZVtuZWlnaGJvcl0gPSBkZWdyZWVbbmVpZ2hib3JdISEgLSAxDQorICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGFueSB2ZXJ0aWNlcyB0aGF0IG5vdyBoYXZlIHplcm8gaW4tZGVncmVlDQorICAgICAgICAgICAgICAgIGlmIChkZWdyZWVbbmVpZ2hib3JdID09IDApIHplcm9WZXJ0cy5wdXNoKG5laWdoYm9yKQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB1c2VkIHRoZSBlbnRpcmUgZ3JhcGggKGlmIG5vdCwgdGhlcmUgd2FzIGEgY3ljbGUpDQorICAgICAgICByZXR1cm4gaWYgKHJlc3VsdC5zaXplICE9IG5laWdoYm9ycy5zaXplKSBudWxsIGVsc2UgcmVzdWx0DQorICAgIH0NCisNCisNCisgICAgZnVuIGJmc0Rpc3RhbmNlKHN0YXJ0OiBWKTogTWFwPCosICo+IHsNCisgICAgICAgIHZhciBkaXN0YW5jZTogTXV0YWJsZU1hcDxWLCBJbnQ+ID0gaGFzaE1hcE9mKCkNCisgICAgICAgIC8vIEluaXRpYWxseSwgYWxsIGRpc3RhbmNlIGFyZSBpbmZpbml0eSwgZXhjZXB0IHN0YXJ0IG5vZGUNCisgICAgICAgIGZvciAodiBpbiBuZWlnaGJvcnMua2V5cykNCisgICAgICAgICAgICBkaXN0YW5jZVt2XSA9IC0xDQorICAgICAgICBkaXN0YW5jZVtzdGFydF0gPSAwDQorICAgICAgICAvLyBQcm9jZXNzIG5vZGVzIGluIHF1ZXVlIG9yZGVyDQorICAgICAgICB2YWwgcXVldWUgPSBMaW5rZWRMaXN0PFY+KCkNCisgICAgICAgIHF1ZXVlLm9mZmVyKHN0YXJ0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBsYWNlIHN0YXJ0IG5vZGUgaW4gcXVldWUNCisgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgdmFsIHYgPSBxdWV1ZS5yZW1vdmUoKQ0KKyAgICAgICAgICAgIHZhbCB2RGlzdCA9IGRpc3RhbmNlW3ZdISENCisgICAgICAgICAgICAvLyBVcGRhdGUgbmVpZ2hib3JzDQorICAgICAgICAgICAgZm9yIChuZWlnaGJvciBpbiBuZWlnaGJvcnNbdl0hISkgew0KKyAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2VbbmVpZ2hib3JdICE9IG51bGwpIGNvbnRpbnVlICAvLyBJZ25vcmUgaWYgYWxyZWFkeSBkb25lDQorICAgICAgICAgICAgICAgIGRpc3RhbmNlW25laWdoYm9yXSA9IHZEaXN0ICsgMQ0KKyAgICAgICAgICAgICAgICBxdWV1ZS5vZmZlcihuZWlnaGJvcikNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gZGlzdGFuY2UNCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9DdXN0b21GdW5jdGlvbnNUZXN0Lmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ3VzdG9tRnVuY3Rpb25zVGVzdC5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjhiN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvQ3VzdG9tRnVuY3Rpb25zVGVzdC5rdApAQCAtMCwwICsxLDM1IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUNCisNCitpbXBvcnQgb3JnLmp1bml0LlRlc3QNCitpbXBvcnQga290bGluLnRlc3QuYXNzZXJ0RXF1YWxzDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorY2xhc3MgQ3VzdG9tRnVuY3Rpb25zVGVzdCB7DQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0Rm9ybWF0KCk6IFVuaXQgew0KKyAgICAgICAgdmFsIHJldHVyblZhbHVlIDogU3RyaW5nID0gZm9ybWF0KCJUaGlzIGlzIHt9IGZvciB0aW1lcyB7fSIsICJ0ZXN0IiwgMikNCisgICAgICAgIGFzc2VydEVxdWFscygiVGhpcyBpcyB0ZXN0IGZvciB0aW1lcyAyIiwgcmV0dXJuVmFsdWUsICJGYWlsZWQgdG8gZm9ybWF0IFN0cmluZyIpDQorDQorICAgICAgICB2YWwgcmV0dXJuVmFsdWUxIDogU3RyaW5nID0gZm9ybWF0KCJUaGlzIGlzIHRlc3QgZm9yIHRpbWVzIDIiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJUaGlzIGlzIHRlc3QgZm9yIHRpbWVzIDIiLCByZXR1cm5WYWx1ZTEsICJGYWlsZWQgdG8gZm9ybWF0IGVtcHR5IGFyZ3MiKQ0KKyAgICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50Q29udGV4dFRlc3Qua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludENvbnRleHRUZXN0Lmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMmIzOWMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludENvbnRleHRUZXN0Lmt0CkBAIC0wLDAgKzEsNzAgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5GaWxlVXRpbHMNCitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZQ0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdA0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mYWN0b3J5LkJsdWVQcmludFBhcnNlckZhY3RvcnkNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlscw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQoraW1wb3J0IGphdmEuaW8uRmlsZQ0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQNCitpbXBvcnQga290bGluLnRlc3QuYXNzZXJ0Tm90TnVsbA0KKy8qKg0KKyAqDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK2NsYXNzIEJsdWVQcmludENvbnRleHRUZXN0IHsNCisNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICBsYXRlaW5pdCB2YXIgYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dA0KKw0KKyAgICBAQmVmb3JlDQorICAgIGZ1biBzZXRVcCgpIHsNCisNCisgICAgICAgIHZhbCBiYXNlcGF0aCA9ICJsb2FkL2JsdWVwcmludHMiDQorDQorICAgICAgICBibHVlUHJpbnRDb250ZXh0ID0gQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5pbnN0YW5jZShCbHVlUHJpbnRDb25zdGFudHMuVFlQRV9ERUZBVUxUKSEhDQorICAgICAgICAgICAgICAgIC5yZWFkQmx1ZXByaW50RmlsZSgiYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbiIsIGJhc2VwYXRoKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChibHVlUHJpbnRDb250ZXh0LCAiRmFpbGVkIHRvIHBvcHVsYXRlIEJsdWVwcmludCBjb250ZXh0IikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEJsdWVQcmludENvbnRleHRGcm9tQ29udGVudCgpIHsNCisgICAgICAgIHZhbCBmaWxlTmFtZSA9ICJsb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbiINCisgICAgICAgIHZhbCBjb250ZW50IDogU3RyaW5nID0gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcoRmlsZShmaWxlTmFtZSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSkNCisgICAgICAgIHZhbCBicENvbnRleHQgID0gQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5pbnN0YW5jZShCbHVlUHJpbnRDb25zdGFudHMuVFlQRV9ERUZBVUxUKSEhDQorICAgICAgICAgICAgICAgIC5yZWFkQmx1ZXByaW50KGNvbnRlbnQpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGJwQ29udGV4dCwgIkZhaWxlZCB0byBnZXQgYmx1ZXByaW50IGNvbnRlbnQiKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChicENvbnRleHQuc2VydmljZVRlbXBsYXRlLCAiRmFpbGVkIHRvIGdldCBibHVlcHJpbnQgY29udGVudCdzIHNlcnZpY2UgdGVtcGxhdGUiKQ0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0Q2hhaW5lZFByb3BlcnR5KCkgew0KKyAgICAgICAgdmFsIG5vZGVUeXBlID0gYmx1ZVByaW50Q29udGV4dC5ub2RlVHlwZUNoYWluZWQoImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IikNCisgICAgICAgIGFzc2VydE5vdE51bGwobm9kZVR5cGUsICJGYWlsZWQgdG8gZ2V0IGNoYWluZWQgbm9kZSB0eXBlIikNCisgICAgICAgIGxvZ2dlci50cmFjZSgiUHJvcGVydGllcyB7fSIsIEphY2tzb25VdGlscy5nZXRKc29uKG5vZGVUeXBlLCB0cnVlKSkNCisgICAgfQ0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlVGVzdC5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2VUZXN0Lmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNDM4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlVGVzdC5rdApAQCAtMCwwICsxLDUxIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZQ0KKw0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdA0KK2ltcG9ydCBrb3RsaW4udGVzdC5hc3NlcnROb3ROdWxsDQorDQorLyoqDQorICogQmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2VUZXN0DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKg0KKyAqLw0KK2NsYXNzIEJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlVGVzdCB7DQorDQorICAgIHZhbCBiYXNlUGF0aCA9ICJsb2FkL21vZGVsX3R5cGUiDQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0R2V0RGF0YVR5cGUoKSB7DQorICAgICAgICB2YWwgYmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2UgPSBCbHVlUHJpbnRFbmhhbmNlclJlcG9GaWxlU2VydmljZShiYXNlUGF0aCkNCisgICAgICAgIHZhbCBkYXRhVHlwZSA9IGJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlLmdldERhdGFUeXBlKCJkdC12NC1hZ2dyZWdhdGUiKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChkYXRhVHlwZSwgIkZhaWxlZCB0byBnZXQgRGF0YVR5cGUgZnJvbSByZXBvIikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEdldE5vZGVUeXBlKCkgew0KKyAgICAgICAgdmFsIGJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlID0gQmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2UoYmFzZVBhdGgpDQorICAgICAgICB2YWwgbm9kZVR5cGUgPSBibHVlUHJpbnRFbmhhbmNlclJlcG9GaWxlU2VydmljZS5nZXROb2RlVHlwZSgiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChub2RlVHlwZSwgIkZhaWxlZCB0byBnZXQgTm9kZVR5cGUgZnJvbSByZXBvIikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEdldEFydGlmYWN0VHlwZSgpIHsNCisgICAgICAgIHZhbCBibHVlUHJpbnRFbmhhbmNlclJlcG9GaWxlU2VydmljZSA9IEJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlKGJhc2VQYXRoKQ0KKyAgICAgICAgdmFsIG5vZGVUeXBlID0gYmx1ZVByaW50RW5oYW5jZXJSZXBvRmlsZVNlcnZpY2UuZ2V0QXJ0aWZhY3RUeXBlKCJhcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eSIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKG5vZGVUeXBlLCAiRmFpbGVkIHRvIGdldCBBcnRpZmFjdFR5cGUgZnJvbSByZXBvIikNCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyU2VydmljZVRlc3Qua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyU2VydmljZVRlc3Qua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZjMTg1MwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlVGVzdC5rdApAQCAtMCwwICsxLDQwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZQ0KKw0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdA0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuU2VydmljZVRlbXBsYXRlVXRpbHMNCisNCisvKioNCisgKiBCbHVlUHJpbnRFbmhhbmNlclNlcnZpY2VUZXN0DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKg0KKyAqLw0KKw0KK2NsYXNzIEJsdWVQcmludEVuaGFuY2VyU2VydmljZVRlc3Qgew0KKyAgICB2YWwgYmFzZVBhdGggPSAibG9hZC9tb2RlbF90eXBlIg0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEVucmljaEJsdWVwcmludCgpIHsNCisgICAgICAgIHZhbCBibHVlUHJpbnRFbmhhbmNlclJlcG9GaWxlU2VydmljZSA9IEJsdWVQcmludEVuaGFuY2VyUmVwb0ZpbGVTZXJ2aWNlKGJhc2VQYXRoKQ0KKyAgICAgICAgdmFsIGJsdWVQcmludEVuaGFuY2VyU2VydmljZTogQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlID0gQmx1ZVByaW50RW5oYW5jZXJEZWZhdWx0U2VydmljZShibHVlUHJpbnRFbmhhbmNlclJlcG9GaWxlU2VydmljZSkNCisNCisgICAgICAgIHZhbCBzZXJ2aWNlVGVtcGxhdGUgPSBTZXJ2aWNlVGVtcGxhdGVVdGlscy5nZXRTZXJ2aWNlVGVtcGxhdGUoImxvYWQvYmx1ZXByaW50cy9zaW1wbGUtYmFzZWNvbmZpZy9EZWZpbml0aW9ucy9zaW1wbGUtYmFzZWNvbmZpZy5qc29uIikNCisgICAgICAgIGJsdWVQcmludEVuaGFuY2VyU2VydmljZS5lbmhhbmNlKHNlcnZpY2VUZW1wbGF0ZSkNCisNCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlVGVzdC5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50RXhwcmVzc2lvblNlcnZpY2VUZXN0Lmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMWE4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlVGVzdC5rdApAQCAtMCwwICsxLDEwOSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnNlcnZpY2UNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5tb2R1bGUua290bGluLmphY2tzb25PYmplY3RNYXBwZXINCitpbXBvcnQgb3JnLmp1bml0LlRlc3QNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuRXhwcmVzc2lvbkRhdGENCitpbXBvcnQga290bGluLnRlc3QuYXNzZXJ0RXF1YWxzDQoraW1wb3J0IGtvdGxpbi50ZXN0LmFzc2VydE5vdE51bGwNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitjbGFzcyBCbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZVRlc3Qgew0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdElucHV0RXhwcmVzc2lvbigpIHsNCisgICAgICAgIHZhbCBub2RlIDogSnNvbk5vZGUgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkucmVhZFRyZWUoInsgXCJnZXRfaW5wdXRcIiA6IFwiaW5wdXQtbmFtZVwiIH0iKQ0KKyAgICAgICAgdmFsIGV4cHJlc3Npb25EYXRhIDogRXhwcmVzc2lvbkRhdGEgPSBCbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZS5nZXRFeHByZXNzaW9uRGF0YShub2RlKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChleHByZXNzaW9uRGF0YSwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgZXhwcmVzc2lvbiBkYXRhIikNCisgICAgICAgIGFzc2VydEVxdWFscyhleHByZXNzaW9uRGF0YS5pc0V4cHJlc3Npb24sIHRydWUsICJGYWlsZWQgdG8gaWRlbnRpZnkgYXMgZXhwcmVzc2lvbiIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhLmlucHV0RXhwcmVzc2lvbiwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgaW5wdXQgZXhwcmVzc2lvbiBkYXRhIikNCisgICAgICAgIGFzc2VydEVxdWFscygiaW5wdXQtbmFtZSIsIGV4cHJlc3Npb25EYXRhLmlucHV0RXhwcmVzc2lvbj8ucHJvcGVydHlOYW1lLCAiRmFpbGVkIHRvIGdldCBwcm9wZXJ0eU5hbWUgZnJvbSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0UHJvcGVydHlFeHByZXNzaW9uKCkgew0KKyAgICAgICAgdmFsIG5vZGUgOiBKc29uTm9kZSA9IGphY2tzb25PYmplY3RNYXBwZXIoKS5yZWFkVHJlZSgieyBcImdldF9wcm9wZXJ0eVwiIDogW1wiU0VMRlwiLCBcInByb3BlcnR5LW5hbWVcIl0gfSIpDQorICAgICAgICB2YWwgZXhwcmVzc2lvbkRhdGEgOiBFeHByZXNzaW9uRGF0YSA9IEJsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlLmdldEV4cHJlc3Npb25EYXRhKG5vZGUpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhLCAiIEZhaWxlZCB0byBwb3B1bGF0ZSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cHJlc3Npb25EYXRhLmlzRXhwcmVzc2lvbiwgdHJ1ZSwgIkZhaWxlZCB0byBpZGVudGlmeSBhcyBleHByZXNzaW9uIikNCisgICAgICAgIGFzc2VydE5vdE51bGwoZXhwcmVzc2lvbkRhdGEucHJvcGVydHlFeHByZXNzaW9uLCAiIEZhaWxlZCB0byBwb3B1bGF0ZSBwcm9wZXJ0eSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJTRUxGIiwgZXhwcmVzc2lvbkRhdGEucHJvcGVydHlFeHByZXNzaW9uPy5tb2RlbGFibGVFbnRpdHlOYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgbW9kZWxhYmxlRW50aXR5TmFtZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoInByb3BlcnR5LW5hbWUiLCBleHByZXNzaW9uRGF0YS5wcm9wZXJ0eUV4cHJlc3Npb24/LnByb3BlcnR5TmFtZSwgIiBGYWlsZWQgdG8gZ2V0IGV4cGVjdGVkIHByb3BlcnR5TmFtZSIpDQorDQorICAgICAgICB2YWwgbm9kZTEgOiBKc29uTm9kZSA9IGphY2tzb25PYmplY3RNYXBwZXIoKS5yZWFkVHJlZSgieyBcImdldF9wcm9wZXJ0eVwiIDogW1wiU0VMRlwiLCBcIlwiLFwicHJvcGVydHktbmFtZVwiLCBcInJlc291cmNlXCIsIFwibmFtZVwiXSB9IikNCisgICAgICAgIHZhbCBleHByZXNzaW9uRGF0YTEgIDogRXhwcmVzc2lvbkRhdGEgID0gQmx1ZVByaW50RXhwcmVzc2lvblNlcnZpY2UuZ2V0RXhwcmVzc2lvbkRhdGEobm9kZTEpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhMSwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgZXhwcmVzc2lvbiBkYXRhIikNCisgICAgICAgIGFzc2VydEVxdWFscyhleHByZXNzaW9uRGF0YTEuaXNFeHByZXNzaW9uLCB0cnVlLCAiRmFpbGVkIHRvIGlkZW50aWZ5IGFzIG5lc3RlZCBwcm9wZXJ0eSBleHByZXNzaW9uIikNCisgICAgICAgIGFzc2VydE5vdE51bGwoZXhwcmVzc2lvbkRhdGExLnByb3BlcnR5RXhwcmVzc2lvbiwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgbmVzdGVkIHByb3BlcnR5IGV4cHJlc3Npb24gZGF0YSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoIlNFTEYiLCBleHByZXNzaW9uRGF0YTEucHJvcGVydHlFeHByZXNzaW9uPy5tb2RlbGFibGVFbnRpdHlOYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgbW9kZWxhYmxlRW50aXR5TmFtZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoInByb3BlcnR5LW5hbWUiLCBleHByZXNzaW9uRGF0YTEucHJvcGVydHlFeHByZXNzaW9uPy5wcm9wZXJ0eU5hbWUsICIgRmFpbGVkIHRvIGdldCBleHBlY3RlZCBwcm9wZXJ0eU5hbWUiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJyZXNvdXJjZS9uYW1lIixleHByZXNzaW9uRGF0YTEucHJvcGVydHlFeHByZXNzaW9uPy5zdWJQcm9wZXJ0eU5hbWUsICIgRmFpbGVkIHRvIHBvcHVsYXRlIG5lc3RlZCBzdWJQcm9wZXJ0eU5hbWUgZXhwcmVzc2lvbiBkYXRhIikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEF0dHJpYnV0ZUV4cHJlc3Npb24oKSB7DQorICAgICAgICB2YWwgbm9kZSA6IEpzb25Ob2RlID0gamFja3Nvbk9iamVjdE1hcHBlcigpLnJlYWRUcmVlKCJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogW1wiU0VMRlwiLCBcIlwiLFwiYXR0cmlidXRlLW5hbWVcIiwgXCJyZXNvdXJjZVwiLCBcIm5hbWVcIl0gfSIpDQorICAgICAgICB2YWwgZXhwcmVzc2lvbkRhdGEgOiBFeHByZXNzaW9uRGF0YSA9IEJsdWVQcmludEV4cHJlc3Npb25TZXJ2aWNlLmdldEV4cHJlc3Npb25EYXRhKG5vZGUpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhLCAiIEZhaWxlZCB0byBwb3B1bGF0ZSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cHJlc3Npb25EYXRhLmlzRXhwcmVzc2lvbiwgdHJ1ZSwgIkZhaWxlZCB0byBpZGVudGlmeSBhcyBleHByZXNzaW9uIikNCisgICAgICAgIGFzc2VydE5vdE51bGwoZXhwcmVzc2lvbkRhdGEuYXR0cmlidXRlRXhwcmVzc2lvbiwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgYXR0cmlidXRlIGV4cHJlc3Npb24gZGF0YSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoIlNFTEYiLCBleHByZXNzaW9uRGF0YS5hdHRyaWJ1dGVFeHByZXNzaW9uPy5tb2RlbGFibGVFbnRpdHlOYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgbW9kZWxhYmxlRW50aXR5TmFtZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoImF0dHJpYnV0ZS1uYW1lIiwgZXhwcmVzc2lvbkRhdGEuYXR0cmlidXRlRXhwcmVzc2lvbj8uYXR0cmlidXRlTmFtZSwgIiBGYWlsZWQgdG8gZ2V0IGV4cGVjdGVkIGF0dHJpYnV0ZU5hbWUiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJyZXNvdXJjZS9uYW1lIixleHByZXNzaW9uRGF0YS5hdHRyaWJ1dGVFeHByZXNzaW9uPy5zdWJBdHRyaWJ1dGVOYW1lLCAiIEZhaWxlZCB0byBwb3B1bGF0ZSBuZXN0ZWQgc3ViQXR0cmlidXRlTmFtZSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICB9DQorDQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0T3V0cHV0T3BlcmF0aW9uRXhwcmVzc2lvbigpIHsNCisgICAgICAgIHZhbCBub2RlIDogSnNvbk5vZGUgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkucmVhZFRyZWUoInsgXCJnZXRfb3BlcmF0aW9uX291dHB1dFwiOiBbXCJTRUxGXCIsIFwiaW50ZXJmYWNlLW5hbWVcIiwgXCJvcGVyYXRpb24tbmFtZVwiLCBcIm91dHB1dC1wcm9wZXJ0eS1uYW1lXCJdIH0iKQ0KKyAgICAgICAgdmFsIGV4cHJlc3Npb25EYXRhIDogRXhwcmVzc2lvbkRhdGEgPSBCbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZS5nZXRFeHByZXNzaW9uRGF0YShub2RlKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChleHByZXNzaW9uRGF0YSwgIiBGYWlsZWQgdG8gcG9wdWxhdGUgZXhwcmVzc2lvbiBkYXRhIikNCisgICAgICAgIGFzc2VydEVxdWFscyhleHByZXNzaW9uRGF0YS5pc0V4cHJlc3Npb24sIHRydWUsICJGYWlsZWQgdG8gaWRlbnRpZnkgYXMgZXhwcmVzc2lvbiIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhLm9wZXJhdGlvbk91dHB1dEV4cHJlc3Npb24sICIgRmFpbGVkIHRvIHBvcHVsYXRlIG91dHB1dCBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJTRUxGIiwgZXhwcmVzc2lvbkRhdGEub3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbj8ubW9kZWxhYmxlRW50aXR5TmFtZSwgIiBGYWlsZWQgdG8gZ2V0IGV4cGVjdGVkIG1vZGVsYWJsZUVudGl0eU5hbWUiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJpbnRlcmZhY2UtbmFtZSIsIGV4cHJlc3Npb25EYXRhLm9wZXJhdGlvbk91dHB1dEV4cHJlc3Npb24/LmludGVyZmFjZU5hbWUsICIgRmFpbGVkIHRvIGdldCBleHBlY3RlZCBpbnRlcmZhY2VOYW1lIikNCisgICAgICAgIGFzc2VydEVxdWFscygib3BlcmF0aW9uLW5hbWUiLCBleHByZXNzaW9uRGF0YS5vcGVyYXRpb25PdXRwdXRFeHByZXNzaW9uPy5vcGVyYXRpb25OYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgb3BlcmF0aW9uTmFtZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoIm91dHB1dC1wcm9wZXJ0eS1uYW1lIiwgZXhwcmVzc2lvbkRhdGEub3BlcmF0aW9uT3V0cHV0RXhwcmVzc2lvbj8ucHJvcGVydHlOYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgcHJvcGVydHlOYW1lIikNCisgICAgfQ0KKw0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEFydGlmYWN0RXhwcmVzc2lvbigpIHsNCisgICAgICAgIHZhbCBub2RlIDogSnNvbk5vZGUgPSBqYWNrc29uT2JqZWN0TWFwcGVyKCkucmVhZFRyZWUoInsgXCJnZXRfYXJ0aWZhY3RcIiA6IFtcIlNFTEZcIiwgXCJhcnRpZmFjdC10ZW1wbGF0ZVwiXSB9IikNCisgICAgICAgIHZhbCBleHByZXNzaW9uRGF0YSA6IEV4cHJlc3Npb25EYXRhID0gQmx1ZVByaW50RXhwcmVzc2lvblNlcnZpY2UuZ2V0RXhwcmVzc2lvbkRhdGEobm9kZSkNCisgICAgICAgIGFzc2VydE5vdE51bGwoZXhwcmVzc2lvbkRhdGEsICIgRmFpbGVkIHRvIHBvcHVsYXRlIGV4cHJlc3Npb24gZGF0YSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoZXhwcmVzc2lvbkRhdGEuaXNFeHByZXNzaW9uLCB0cnVlLCAiRmFpbGVkIHRvIGlkZW50aWZ5IGFzIGV4cHJlc3Npb24iKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChleHByZXNzaW9uRGF0YS5hcnRpZmFjdEV4cHJlc3Npb24sICIgRmFpbGVkIHRvIHBvcHVsYXRlIEFydGlmYWN0IGV4cHJlc3Npb24gZGF0YSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoIlNFTEYiLCBleHByZXNzaW9uRGF0YS5hcnRpZmFjdEV4cHJlc3Npb24/Lm1vZGVsYWJsZUVudGl0eU5hbWUsICIgRmFpbGVkIHRvIGdldCBleHBlY3RlZCBtb2RlbGFibGVFbnRpdHlOYW1lIikNCisgICAgICAgIGFzc2VydEVxdWFscygiYXJ0aWZhY3QtdGVtcGxhdGUiLCBleHByZXNzaW9uRGF0YS5hcnRpZmFjdEV4cHJlc3Npb24/LmFydGlmYWN0TmFtZSwgIiBGYWlsZWQgdG8gZ2V0IGV4cGVjdGVkIGFydGlmYWN0TmFtZSIpDQorDQorDQorICAgICAgICB2YWwgbm9kZTEgOiBKc29uTm9kZSA9IGphY2tzb25PYmplY3RNYXBwZXIoKS5yZWFkVHJlZSgieyBcImdldF9hcnRpZmFjdFwiIDogW1wiU0VMRlwiLCBcImFydGlmYWN0LXRlbXBsYXRlXCIsIFwibG9jYXRpb25cIiwgdHJ1ZV0gfSIpDQorICAgICAgICB2YWwgZXhwcmVzc2lvbkRhdGExIDogRXhwcmVzc2lvbkRhdGEgPSBCbHVlUHJpbnRFeHByZXNzaW9uU2VydmljZS5nZXRFeHByZXNzaW9uRGF0YShub2RlMSkNCisgICAgICAgIGFzc2VydE5vdE51bGwoZXhwcmVzc2lvbkRhdGExLCAiIEZhaWxlZCB0byBwb3B1bGF0ZSBleHByZXNzaW9uIGRhdGEiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKGV4cHJlc3Npb25EYXRhMS5pc0V4cHJlc3Npb24sIHRydWUsICJGYWlsZWQgdG8gaWRlbnRpZnkgYXMgZXhwcmVzc2lvbiIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGV4cHJlc3Npb25EYXRhMS5hcnRpZmFjdEV4cHJlc3Npb24sICIgRmFpbGVkIHRvIHBvcHVsYXRlIEFydGlmYWN0IGV4cHJlc3Npb24gZGF0YSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoIlNFTEYiLCBleHByZXNzaW9uRGF0YTEuYXJ0aWZhY3RFeHByZXNzaW9uPy5tb2RlbGFibGVFbnRpdHlOYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgbW9kZWxhYmxlRW50aXR5TmFtZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoImFydGlmYWN0LXRlbXBsYXRlIiwgZXhwcmVzc2lvbkRhdGExLmFydGlmYWN0RXhwcmVzc2lvbj8uYXJ0aWZhY3ROYW1lLCAiIEZhaWxlZCB0byBnZXQgZXhwZWN0ZWQgYXJ0aWZhY3ROYW1lIikNCisgICAgICAgIGFzc2VydEVxdWFscygibG9jYXRpb24iLCBleHByZXNzaW9uRGF0YTEuYXJ0aWZhY3RFeHByZXNzaW9uPy5sb2NhdGlvbiwgIiBGYWlsZWQgdG8gZ2V0IGV4cGVjdGVkIGxvY2F0aW9uIikNCisgICAgICAgIGFzc2VydEVxdWFscyh0cnVlLCBleHByZXNzaW9uRGF0YTEuYXJ0aWZhY3RFeHByZXNzaW9uPy5yZW1vdmUsICIgRmFpbGVkIHRvIGdldCBleHBlY3RlZCByZW1vdmUiKQ0KKyAgICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50UGFyc2VyRmFjdG9yeVRlc3Qua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFBhcnNlckZhY3RvcnlUZXN0Lmt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMjExYWIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFBhcnNlckZhY3RvcnlUZXN0Lmt0CkBAIC0wLDAgKzEsNDIgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5mYWN0b3J5LkJsdWVQcmludFBhcnNlckZhY3RvcnkNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KK2ltcG9ydCBrb3RsaW4udGVzdC5hc3NlcnROb3ROdWxsDQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorY2xhc3MgQmx1ZVByaW50UGFyc2VyRmFjdG9yeVRlc3Qgew0KKyAgICBwcml2YXRlIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0Qmx1ZVByaW50SnNvbigpIHsNCisgICAgICAgIHZhbCBiYXNlcGF0aCA9ICJsb2FkL2JsdWVwcmludHMiDQorDQorICAgICAgICB2YWwgYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dCA9IEJsdWVQcmludFBhcnNlckZhY3RvcnkuaW5zdGFuY2Uob3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50cy5UWVBFX0RFRkFVTFQpISENCisgICAgICAgICAgICAgICAgLnJlYWRCbHVlcHJpbnRGaWxlKCJiYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uIiwgYmFzZXBhdGgpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGJsdWVQcmludENvbnRleHQsICJGYWlsZWQgdG8gcG9wdWxhdGUgQmx1ZXByaW50IGNvbnRleHQiKQ0KKyAgICAgICAgbG9nZ2VyLnRyYWNlKCJCbHVlIFByaW50IHt9IixibHVlUHJpbnRDb250ZXh0LmJsdWVwcmludEpzb24odHJ1ZSkpDQorICAgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRSdW50aW1lU2VydmljZVRlc3Qua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS9zZXJ2aWNlL0JsdWVQcmludFJ1bnRpbWVTZXJ2aWNlVGVzdC5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQxNjFhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRSdW50aW1lU2VydmljZVRlc3Qua3QKQEAgLTAsMCArMSwxMzEgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZQ0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5OdWxsTm9kZQ0KK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlDQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHMNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmZhY3RvcnkuQmx1ZVByaW50UGFyc2VyRmFjdG9yeQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuQmx1ZVByaW50UnVudGltZVV0aWxzDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHMuanNvbk5vZGVGcm9tRmlsZQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbU9iamVjdA0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5DQoraW1wb3J0IGtvdGxpbi50ZXN0LmFzc2VydEVxdWFscw0KK2ltcG9ydCBrb3RsaW4udGVzdC5hc3NlcnROb3ROdWxsDQorDQorLyoqDQorICoNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorY2xhc3MgQmx1ZVByaW50UnVudGltZVNlcnZpY2VUZXN0IHsNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKyAgICB2YWwgYmFzZXBhdGggPSAibG9hZC9ibHVlcHJpbnRzIg0KKw0KKw0KKyAgICBAQmVmb3JlDQorICAgIGZ1biBzZXRVcCgpOiBVbml0IHsNCisNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdFJlc29sdmVOb2RlVGVtcGxhdGVQcm9wZXJ0aWVzKCkgew0KKyAgICAgICAgbG9nZ2VyLmluZm8oIioqKioqKioqKioqKioqKioqKioqKioqKiB0ZXN0UmVzb2x2ZU5vZGVUZW1wbGF0ZVByb3BlcnRpZXMgKioqKioqKioqKioqKioqKioqKioqKiIpDQorICAgICAgICB2YWwgYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dCA9IEJsdWVQcmludFBhcnNlckZhY3RvcnkuaW5zdGFuY2UoQmx1ZVByaW50Q29uc3RhbnRzLlRZUEVfREVGQVVMVCkhIQ0KKyAgICAgICAgICAgICAgICAucmVhZEJsdWVwcmludEZpbGUoImJhc2Vjb25maWd1cmF0aW9uL0RlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24iLCBiYXNlcGF0aCkNCisNCisgICAgICAgIHZhbCBjb250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55PiA9IGhhc2hNYXBPZigpDQorICAgICAgICBjb250ZXh0W0JsdWVQcmludENvbnN0YW50cy5QUk9QRVJUWV9CTFVFUFJJTlRfQkFTRV9QQVRIXSA9IGJhc2VwYXRoLnBsdXMoIi9zaW1wbGUtYmFzZWNvbmZpZyIpDQorICAgICAgICB2YWwgYmx1ZVByaW50UnVudGltZVNlcnZpY2UgPSBCbHVlUHJpbnRSdW50aW1lU2VydmljZShibHVlUHJpbnRDb250ZXh0LCBjb250ZXh0KQ0KKw0KKyAgICAgICAgdmFsIGlucHV0RGF0YVBhdGggPSAgInNyYy90ZXN0L3Jlc291cmNlcy9kYXRhL2RlZmF1bHQtY29udGV4dC5qc29uIg0KKw0KKyAgICAgICAgdmFsIGlucHV0Tm9kZTogSnNvbk5vZGUgPSBqc29uTm9kZUZyb21GaWxlKGlucHV0RGF0YVBhdGgpDQorICAgICAgICBibHVlUHJpbnRSdW50aW1lU2VydmljZS5hc3NpZ25JbnB1dHMoaW5wdXROb2RlKQ0KKw0KKyAgICAgICAgdmFsIHByb3BDb250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pz4gPSBibHVlUHJpbnRSdW50aW1lU2VydmljZS5yZXNvbHZlTm9kZVRlbXBsYXRlUHJvcGVydGllcygiYWN0aXZhdGUtcHJvY2VzcyIpDQorICAgICAgICBsb2dnZXIuaW5mbygiQ29udGV4dCB7fSIgLGJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlLmNvbnRleHQpDQorDQorICAgICAgICBhc3NlcnROb3ROdWxsKHByb3BDb250ZXh0LCAiRmFpbGVkIHRvIHBvcHVsYXRlIGludGVyZmFjZSBwcm9wZXJ0eSB2YWx1ZXMiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKHByb3BDb250ZXh0LmdldCgicHJvY2Vzcy1uYW1lIiksIGpzb25Ob2RlRnJvbU9iamVjdCgic2FtcGxlLWFjdGlvbiIpLCAiRmFpbGVkIHRvIHBvcHVsYXRlIHBhcmFtZXRlciBwcm9jZXNzLW5hbWUiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKHByb3BDb250ZXh0LmdldCgidmVyc2lvbiIpLCBqc29uTm9kZUZyb21PYmplY3QoInNhbXBsZS1hY3Rpb24iKSwgIkZhaWxlZCB0byBwb3B1bGF0ZSBwYXJhbWV0ZXIgdmVyc2lvbiIpDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgZnVuIHRlc3RSZXNvbHZlTm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzKCkgew0KKyAgICAgICAgbG9nZ2VyLmluZm8oIioqKioqKioqKioqKioqKioqKioqKioqKiB0ZXN0UmVzb2x2ZU5vZGVUZW1wbGF0ZUludGVyZmFjZU9wZXJhdGlvbklucHV0cyAqKioqKioqKioqKioqKioqKioqKioqIikNCisgICAgICAgIHZhbCBibHVlUHJpbnRDb250ZXh0OiBCbHVlUHJpbnRDb250ZXh0ID0gQmx1ZVByaW50UGFyc2VyRmFjdG9yeS5pbnN0YW5jZShCbHVlUHJpbnRDb25zdGFudHMuVFlQRV9ERUZBVUxUKSEhDQorICAgICAgICAgICAgICAgIC5yZWFkQmx1ZXByaW50RmlsZSgiYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbiIsIGJhc2VwYXRoKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChibHVlUHJpbnRDb250ZXh0LCAiRmFpbGVkIHRvIHBvcHVsYXRlIEJsdWVwcmludCBjb250ZXh0IikNCisNCisgICAgICAgIHZhbCBjb250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55PiA9IGhhc2hNYXBPZigpDQorICAgICAgICBjb250ZXh0W0JsdWVQcmludENvbnN0YW50cy5QUk9QRVJUWV9CTFVFUFJJTlRfQkFTRV9QQVRIXSA9IGJhc2VwYXRoLnBsdXMoIi9zaW1wbGUtYmFzZWNvbmZpZyIpDQorDQorICAgICAgICB2YWwgaW5wdXREYXRhUGF0aCA9ICAic3JjL3Rlc3QvcmVzb3VyY2VzL2RhdGEvZGVmYXVsdC1jb250ZXh0Lmpzb24iDQorICAgICAgICBCbHVlUHJpbnRSdW50aW1lVXRpbHMuYXNzaWduSW5wdXRzRnJvbUZpbGUoYmx1ZVByaW50Q29udGV4dCwgaW5wdXREYXRhUGF0aCwgY29udGV4dCkNCisNCisNCisgICAgICAgIHZhbCBibHVlUHJpbnRSdW50aW1lU2VydmljZSA9IEJsdWVQcmludFJ1bnRpbWVTZXJ2aWNlKGJsdWVQcmludENvbnRleHQsIGNvbnRleHQpDQorDQorICAgICAgICBsb2dnZXIuaW5mbygiUHJlcGFyZWQgQ29udGV4dCB7fSIgLGNvbnRleHQpDQorDQorICAgICAgICB2YWwgaW5Db250ZXh0OiBNdXRhYmxlTWFwPFN0cmluZywgQW55Pz4gPSBibHVlUHJpbnRSdW50aW1lU2VydmljZS5yZXNvbHZlTm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uSW5wdXRzKCJyZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIiwgInByb2Nlc3MiKQ0KKw0KKyAgICAgICAgbG9nZ2VyLnRyYWNlKCJJbiBDb250ZXh0IHt9IiAsaW5Db250ZXh0KQ0KKw0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChpbkNvbnRleHQsICJGYWlsZWQgdG8gcG9wdWxhdGUgaW50ZXJmYWNlIGlucHV0IHByb3BlcnR5IHZhbHVlcyIpDQorICAgICAgICBhc3NlcnRFcXVhbHMoaW5Db250ZXh0LmdldCgiYWN0aW9uLW5hbWUiKSwganNvbk5vZGVGcm9tT2JqZWN0KCJzYW1wbGUtYWN0aW9uIiksICJGYWlsZWQgdG8gcG9wdWxhdGUgcGFyYW1ldGVyIGFjdGlvbi1uYW1lIikNCisgICAgICAgIGFzc2VydEVxdWFscyhpbkNvbnRleHQuZ2V0KCJyZXF1ZXN0LWlkIiksIGpzb25Ob2RlRnJvbU9iamVjdCgiMTIzNDUiKSwgIkZhaWxlZCB0byBwb3B1bGF0ZSBwYXJhbWV0ZXIgYWN0aW9uLW5hbWUiKQ0KKyAgICAgICAgYXNzZXJ0RXF1YWxzKGluQ29udGV4dC5nZXQoInRlbXBsYXRlLWNvbnRlbnQiKSwganNvbk5vZGVGcm9tT2JqZWN0KCJUaGlzIGlzIFNhbXBsZSBWZWxvY2l0eSBUZW1wbGF0ZSIpLCAiRmFpbGVkIHRvIHBvcHVsYXRlIHBhcmFtZXRlciBhY3Rpb24tbmFtZSIpDQorDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgZnVuIHRlc3RSZXNvbHZlTm9kZVRlbXBsYXRlSW50ZXJmYWNlT3BlcmF0aW9uT3V0cHV0cygpIHsNCisgICAgICAgIGxvZ2dlci5pbmZvKCIqKioqKioqKioqKioqKioqKioqKioqKiogdGVzdFJlc29sdmVOb2RlVGVtcGxhdGVJbnRlcmZhY2VPcGVyYXRpb25PdXRwdXRzICoqKioqKioqKioqKioqKioqKioqKioiKQ0KKyAgICAgICAgdmFsIGJsdWVQcmludENvbnRleHQ6IEJsdWVQcmludENvbnRleHQgPSBCbHVlUHJpbnRQYXJzZXJGYWN0b3J5Lmluc3RhbmNlKEJsdWVQcmludENvbnN0YW50cy5UWVBFX0RFRkFVTFQpISENCisgICAgICAgICAgICAgICAgLnJlYWRCbHVlcHJpbnRGaWxlKCJiYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uIiwgYmFzZXBhdGgpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGJsdWVQcmludENvbnRleHQsICJGYWlsZWQgdG8gcG9wdWxhdGUgQmx1ZXByaW50IGNvbnRleHQiKQ0KKw0KKyAgICAgICAgdmFsIGNvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+ID0gaGFzaE1hcE9mKCkNCisgICAgICAgIGNvbnRleHRbQmx1ZVByaW50Q29uc3RhbnRzLlBST1BFUlRZX0JMVUVQUklOVF9CQVNFX1BBVEhdID0gIGJhc2VwYXRoLnBsdXMoIi9zaW1wbGUtYmFzZWNvbmZpZyIpDQorDQorICAgICAgICB2YWwgYmx1ZVByaW50UnVudGltZVNlcnZpY2UgPSBCbHVlUHJpbnRSdW50aW1lU2VydmljZShibHVlUHJpbnRDb250ZXh0LCBjb250ZXh0KQ0KKw0KKyAgICAgICAgdmFsIGNvbXBvbmVudENvbnRleHQ6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk/PiA9IGhhc2hNYXBPZigpDQorICAgICAgICB2YWwgc3VjY2Vzc1ZhbHVlIDogSnNvbk5vZGU9IGpzb25Ob2RlRnJvbU9iamVjdCgiU3VjY2VzcyIpDQorICAgICAgICBjb21wb25lbnRDb250ZXh0WyJyZXNvdXJjZS1hc3NpZ25tZW50LkRlZmF1bHRDb21wb25lbnROb2RlLnByb2Nlc3Muc3RhdHVzIl0gPSBzdWNjZXNzVmFsdWUNCisgICAgICAgIGNvbXBvbmVudENvbnRleHRbInJlc291cmNlLWFzc2lnbm1lbnQuRGVmYXVsdENvbXBvbmVudE5vZGUucHJvY2Vzcy5yZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyJdID0gbnVsbA0KKw0KKyAgICAgICAgYmx1ZVByaW50UnVudGltZVNlcnZpY2UucmVzb2x2ZU5vZGVUZW1wbGF0ZUludGVyZmFjZU9wZXJhdGlvbk91dHB1dHMoInJlc291cmNlLWFzc2lnbm1lbnQiLA0KKyAgICAgICAgICAgICAgICAiRGVmYXVsdENvbXBvbmVudE5vZGUiLCAicHJvY2VzcyIsIGNvbXBvbmVudENvbnRleHQpDQorDQorICAgICAgICBhc3NlcnRFcXVhbHMoTnVsbE5vZGUuaW5zdGFuY2UsDQorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0KCJub2RlX3RlbXBsYXRlcy9yZXNvdXJjZS1hc3NpZ25tZW50L2ludGVyZmFjZXMvRGVmYXVsdENvbXBvbmVudE5vZGUvb3BlcmF0aW9ucy9wcm9jZXNzL3Byb3BlcnRpZXMvcmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiKSwNCisgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgb3BlcmF0aW9uIHByb3BlcnR5IHJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIikNCisNCisgICAgICAgIGFzc2VydEVxdWFscyhzdWNjZXNzVmFsdWUsDQorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0KCJub2RlX3RlbXBsYXRlcy9yZXNvdXJjZS1hc3NpZ25tZW50L2ludGVyZmFjZXMvRGVmYXVsdENvbXBvbmVudE5vZGUvb3BlcmF0aW9ucy9wcm9jZXNzL3Byb3BlcnRpZXMvc3RhdHVzIiksDQorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IG9wZXJhdGlvbiBwcm9wZXJ0eSBzdGF0dXMiKQ0KKw0KKw0KKyAgICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50VmFsaWRhdG9yRGVmYXVsdFNlcnZpY2VUZXN0Lmt0IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvc2VydmljZS9CbHVlUHJpbnRWYWxpZGF0b3JEZWZhdWx0U2VydmljZVRlc3Qua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjZDk0NgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3NlcnZpY2UvQmx1ZVByaW50VmFsaWRhdG9yRGVmYXVsdFNlcnZpY2VUZXN0Lmt0CkBAIC0wLDAgKzEsNDggQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlDQorDQoraW1wb3J0IG9yZy5qdW5pdC5CZWZvcmUNCitpbXBvcnQgb3JnLmp1bml0LlRlc3QNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmZhY3RvcnkuQmx1ZVByaW50UGFyc2VyRmFjdG9yeQ0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzDQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXINCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3RvcnkNCisvKioNCisgKg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitjbGFzcyBCbHVlUHJpbnRWYWxpZGF0b3JEZWZhdWx0U2VydmljZVRlc3Qgew0KKyAgICBwcml2YXRlIHZhbCBsb2dnZXI6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXM6OmNsYXNzLnRvU3RyaW5nKCkpDQorICAgIHZhbCBiYXNlcGF0aCA9ICJsb2FkL2JsdWVwcmludHMiDQorDQorICAgIEBCZWZvcmUNCisgICAgZnVuIHNldFVwKCk6IFVuaXQgew0KKw0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0VmFsaWRhdGVCbHVlUHJpbnQoKSB7DQorICAgICAgICB2YWwgYmx1ZVByaW50Q29udGV4dDogQmx1ZVByaW50Q29udGV4dCA9IEJsdWVQcmludFBhcnNlckZhY3RvcnkuaW5zdGFuY2UoQmx1ZVByaW50Q29uc3RhbnRzLlRZUEVfREVGQVVMVCkhIQ0KKyAgICAgICAgICAgICAgICAucmVhZEJsdWVwcmludEZpbGUoImJhc2Vjb25maWd1cmF0aW9uL0RlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24iLCAgYmFzZXBhdGgpDQorICAgICAgICB2YWwgcHJvcGVydGllcyA6IE11dGFibGVNYXA8U3RyaW5nLCBBbnk+ID0gaGFzaE1hcE9mKCkNCisgICAgICAgIHZhbCB2YWxpZGF0b3JTZXJ2aWNlID0gQmx1ZVByaW50VmFsaWRhdG9yRGVmYXVsdFNlcnZpY2UoKQ0KKyAgICAgICAgdmFsaWRhdG9yU2VydmljZS52YWxpZGF0ZUJsdWVwcmludChibHVlUHJpbnRDb250ZXh0LnNlcnZpY2VUZW1wbGF0ZSxwcm9wZXJ0aWVzKQ0KKyAgICAgICAgbG9nZ2VyLmluZm8oIlZhbGlkYXRpb24gTWVzc2FnZSB7fSIsIHByb3BlcnRpZXMpDQorICAgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvQmx1ZVByaW50TWV0YWRhdGFVdGlsc1Rlc3Qua3QgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3Qva290bGluL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvY29yZS91dGlscy9CbHVlUHJpbnRNZXRhZGF0YVV0aWxzVGVzdC5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGIzOWEyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvQmx1ZVByaW50TWV0YWRhdGFVdGlsc1Rlc3Qua3QKQEAgLTAsMCArMSw0MCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzDQorDQorDQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlRvc2NhTWV0YURhdGENCitpbXBvcnQga290bGluLnRlc3QuYXNzZXJ0Tm90TnVsbA0KKw0KK2NsYXNzIEJsdWVQcmludE1ldGFkYXRhVXRpbHNUZXN0IHsNCisgICAgDQorICAgIEBUZXN0DQorICAgIGZ1biB0ZXN0VG9zY2FNZXRhRGF0YSgpew0KKw0KKyAgICAgICAgdmFsIGJhc2VQYXRoIDogU3RyaW5nID0gImxvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbiINCisNCisgICAgICAgIHZhbCB0b3NjYU1ldGFEYXRhIDogVG9zY2FNZXRhRGF0YSA9ICBCbHVlUHJpbnRNZXRhZGF0YVV0aWxzLnRvc2NhTWV0YURhdGEoYmFzZVBhdGgpDQorICAgICAgICBhc3NlcnROb3ROdWxsKHRvc2NhTWV0YURhdGEsICJNaXNzaW5nIFRvc2NhIERlZmluaXRpb24gT2JqZWN0IikNCisgICAgICAgIGFzc2VydE5vdE51bGwodG9zY2FNZXRhRGF0YS50b3NjYU1ldGFGaWxlVmVyc2lvbiwgIk1pc3NpbmcgVG9zY2EgTWV0YWRhdGEgVmVyc2lvbiIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKHRvc2NhTWV0YURhdGEuY3NhclZlcnNpb24sICJNaXNzaW5nIENTQVIgdmVyc2lvbiIpDQorICAgICAgICBhc3NlcnROb3ROdWxsKHRvc2NhTWV0YURhdGEuY3JlYXRlZEJ5LCAiTWlzc2luZyBDcmVhdGVkIGJ5IikNCisgICAgICAgIGFzc2VydE5vdE51bGwodG9zY2FNZXRhRGF0YS5lbnRpdHlEZWZpbml0aW9ucywgIk1pc3NpbmcgVG9zY2EgRW50aXR5IERlZmluaXRpb24iKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbCh0b3NjYU1ldGFEYXRhLnRlbXBsYXRlVGFncywgIk1pc3NpbmcgVGVtcGxhdGUgVGFncyIpDQorDQorICAgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvSmFja3NvblV0aWxzVGVzdC5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0phY2tzb25VdGlsc1Rlc3Qua3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhmM2IzOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL0phY2tzb25VdGlsc1Rlc3Qua3QKQEAgLTAsMCArMSw3MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZQ0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdA0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5TZXJ2aWNlVGVtcGxhdGUNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcg0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeQ0KK2ltcG9ydCBrb3RsaW4udGVzdC5hc3NlcnRFcXVhbHMNCitpbXBvcnQga290bGluLnRlc3QuYXNzZXJ0Tm90TnVsbA0KKw0KKy8qKg0KKyAqIEphY2tzb25VdGlsc1Rlc3QNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqICR7REFUQX0NCisgKi8NCitjbGFzcyBKYWNrc29uVXRpbHNUZXN0IHsNCisNCisgICAgcHJpdmF0ZSB2YWwgbG9nZ2VyOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzOjpjbGFzcy50b1N0cmluZygpKQ0KKw0KKyAgICB2YWwgYmFzZVBhdGggPSAibG9hZC9ibHVlcHJpbnRzIg0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdFJlYWRWYWx1ZXMoKSB7DQorICAgICAgICB2YWwgY29udGVudCA9IFJlc291cmNlUmVzb2x2ZXJVdGlscy5nZXRGaWxlQ29udGVudCgiYmFzZWNvbmZpZ3VyYXRpb24vRGVmaW5pdGlvbnMvYWN0aXZhdGlvbi1ibHVlcHJpbnQuanNvbiIsIGJhc2VQYXRoKQ0KKyAgICAgICAgdmFsIHNlcnZpY2VUZW1wbGF0ZSA9IEphY2tzb25VdGlscy5yZWFkVmFsdWUoY29udGVudCwgU2VydmljZVRlbXBsYXRlOjpjbGFzcy5qYXZhKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChzZXJ2aWNlVGVtcGxhdGUsICJGYWlsZWQgdG8gc2ltcGxlIHRyYW5zZm9ybSBTZXJ2aWNlIFRlbXBsYXRlIikNCisgICAgICAgIGFzc2VydEVxdWFscyh0cnVlLCBzZXJ2aWNlVGVtcGxhdGUgaXMgU2VydmljZVRlbXBsYXRlLCAiZmFpbGVkIHRvIGdldCBTZXJ2aWNlIFRlbXBsYXRlIGluc3RhbmNlIikNCisNCisgICAgICAgIHZhbCBqc29uQ29udGVudCA9IEphY2tzb25VdGlscy5nZXRKc29uKHNlcnZpY2VUZW1wbGF0ZSEhLCB0cnVlKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChqc29uQ29udGVudCwgIkZhaWxlZCB0byBnZXQganNvbiBjb250ZW50IikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEpzb25Ob2RlRnJvbUNsYXNzUGF0aEZpbGUoKSB7DQorICAgICAgICB2YWwgZmlsZVBhdGggPSAiZGF0YS9kZWZhdWx0LWNvbnRleHQuanNvbiINCisgICAgICAgIHZhbCBqc29uTm9kZSA9IEphY2tzb25VdGlscy5qc29uTm9kZUZyb21DbGFzc1BhdGhGaWxlKGZpbGVQYXRoKQ0KKyAgICAgICAgYXNzZXJ0Tm90TnVsbChqc29uTm9kZSwgIkZhaWxlZCB0byBnZXQganNvbiBub2RlIGZyb20gZmlsZSIpDQorICAgICAgICBhc3NlcnRFcXVhbHModHJ1ZSwganNvbk5vZGUgaXMgSnNvbk5vZGUsICJmYWlsZWQgdG8gZ2V0IEpTT04gbm9kZSBpbnN0YW5jZSIpDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgZnVuIHRlc3RKc29uTm9kZUZyb21GaWxlKCkgew0KKyAgICAgICAgdmFsIGZpbGVQYXRoID0gIGJhc2VQYXRoICsgIi9iYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uIg0KKyAgICAgICAgdmFsIGpzb25Ob2RlID0gSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbUZpbGUoZmlsZVBhdGgpDQorICAgICAgICBhc3NlcnROb3ROdWxsKGpzb25Ob2RlLCAiRmFpbGVkIHRvIGdldCBqc29uIG5vZGUgZnJvbSBmaWxlIikNCisgICAgICAgIGFzc2VydEVxdWFscyh0cnVlLCBqc29uTm9kZSBpcyBKc29uTm9kZSwgImZhaWxlZCB0byBnZXQgSlNPTiBub2RlIGluc3RhbmNlIikNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdEdldExpc3RGcm9tSnNvbigpIHsNCisgICAgICAgIHZhbCBjb250ZW50ID0gIltcImdvb2RcIixcImJveVwiIF0iDQorICAgICAgICB2YWwgbm9kZVR5cGUgPSBKYWNrc29uVXRpbHMuZ2V0TGlzdEZyb21Kc29uKGNvbnRlbnQsIFN0cmluZzo6Y2xhc3MuamF2YSkNCisgICAgICAgIGFzc2VydE5vdE51bGwobm9kZVR5cGUsICJGYWlsZWQgdG8gZ2V0IFN0cmluZyBhcnJheSBmcm9tIGNvbnRlbnQiKQ0KKyAgICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL1RvcG9sb2dpY2FsU29ydGluZ1V0aWxzVGVzdC5rdCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9rb3RsaW4vb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9jb3JlL3V0aWxzL1RvcG9sb2dpY2FsU29ydGluZ1V0aWxzVGVzdC5rdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDdlYjJlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L2tvdGxpbi9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL2NvcmUvdXRpbHMvVG9wb2xvZ2ljYWxTb3J0aW5nVXRpbHNUZXN0Lmt0CkBAIC0wLDAgKzEsMzYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscw0KKw0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdA0KKw0KK2NsYXNzIFRvcG9sb2dpY2FsU29ydGluZ1V0aWxzVGVzdCB7DQorICAgIA0KKyAgICBAVGVzdA0KKyAgICBmdW4gdGVzdFNvcnRpbmcoKTogVW5pdCB7DQorICAgICAgICB2YWwgZ3JhcGg6IFRvcG9sb2dpY2FsU29ydGluZ1V0aWxzPFN0cmluZz4gPSBUb3BvbG9naWNhbFNvcnRpbmdVdGlsczxTdHJpbmc+KCkNCisgICAgICAgIGdyYXBoLmFkZCgiYnVuZGxlLWlkIiwgImJ1bmRsZS1tYWMiKQ0KKyAgICAgICAgZ3JhcGguYWRkKCJidW5kbGUtaWQiLCAiYnVuZGxlLWlwIikNCisgICAgICAgIGdyYXBoLmFkZCgiYnVuZGxlLW1hYyIsICJidW5kbGUtaXAiKQ0KKyAgICAgICAgZ3JhcGguYWRkKCJidW5kbGUtaXAiLCAiYnVuZGxlLW1hYyIpDQorDQorICAgICAgICBwcmludGxuKCJUaGUgY3VycmVudCBncmFwaDogIiArIGdyYXBoKQ0KKyAgICAgICAgcHJpbnRsbigiSW4tZGVncmVlczogIiArIGdyYXBoLmluRGVncmVlKCkpDQorICAgICAgICBwcmludGxuKCJPdXQtZGVncmVlczogIiArIGdyYXBoLm91dERlZ3JlZSgpKQ0KKyAgICAgICAgcHJpbnRsbigiQSB0b3BvbG9naWNhbCBzb3J0IG9mIHRoZSB2ZXJ0aWNlczogIiArIGdyYXBoLnRvcFNvcnQoKSkNCisgICAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL2NvbXBvbmVudG5vZGUvZGVmYXVsdC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9jb21wb25lbnRub2RlL2RlZmF1bHQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzI2NWZjCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9jb21wb25lbnRub2RlL2RlZmF1bHQuanNvbgpAQCAtMCwwICsxLDEwMCBAQAorew0KKwkibWV0YWRhdGEiOiB7DQorCQkidGVtcGxhdGVfYXV0aG9yIjogImJzMjc5NiIsDQorCQkidmVuZG9yIjogIkp1bmlwZXIiLA0KKwkJIm9zIjogIlhYWCIsDQorCQkic2VydmljZS10eXBlIjogIkFWUE4iLA0KKwkJInZuZi10eXBlIjogIlZSUiIsDQorCQkiYWN0aW9uIjogIkJhc2UgQ29uZmlndXJhdGlvbiIsDQorCQkic3ViLWFjdGlvbiI6ICJHZW5lcmF0ZSBDb25maWd1cmF0aW9uIiwNCisJCSJ0ZW1wbGF0ZV9uYW1lIjogIlZSUi1iYXNlY29uZmlndXJhdGlvbiIsDQorCQkidGVtcGxhdGVfdmVyc2lvbiI6ICIxLjAuMCINCisJfSwNCisJInRvcG9sb2d5X3RlbXBsYXRlIjogew0KKwkJImlucHV0cyI6IHsNCisJCQkic2VydmljZS1pbnN0YW5jZS1pZCI6IHsNCisJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCX0sDQorCQkJInZuZi1pZCI6IHsNCisJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCX0sDQorCQkJInNlcnZpY2UiOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJyZWdpb24iOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJidW5kbGUtaWQiOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJidW5kbGUtbWFjIjogew0KKwkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfSwNCisJCSJub2RlX3RlbXBsYXRlcyI6IHsNCisJCQkiZ2VuZXJhdGUtY29uZmlndXJhdGlvbiI6IHsNCisJCQkJInR5cGUiOiAibW9jay1jb21wb25lbnQtZ2VuZXJhdGVDb25maWciLA0KKwkJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJCSJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLXBhcmFtcy1zZXJ2aWNlLU1vY2tDb21wb25lbnROb2RlIjogew0KKwkJCQkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkJCQkicHJvY2VzcyI6IHsNCisJCQkJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJCQkJImVudGl0eS10eXBlIjogInZuZi10eXBlIiwNCisJCQkJCQkJCQkidGVtcGxhdGUtY29udGVudCI6ICJzYW1wbGUtdGVtcGxhdGUiLA0KKwkJCQkJCQkJCSJlbnRpdHktaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJ2bmYtaWRcIiB9Ig0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJvdXRwdXRzIjogew0KKwkJCQkJCQkJCSJtZXJnZWREYXRhIjogIm1lcmdlZCBEYXRhIiwNCisJCQkJCQkJCQkic3RhdHVzIjogInN0YXR1cyINCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJIm5vZGVfdHlwZXMiOiB7DQorCQkibW9jay1jb21wb25lbnQtZ2VuZXJhdGVDb25maWciOiB7DQorCQkJImludGVyZmFjZXMiOiB7DQorCQkJCSJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLXBhcmFtcy1zZXJ2aWNlLU1vY2tDb21wb25lbnROb2RlIjogew0KKwkJCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCQkJInByb2Nlc3MiOiB7DQorCQkJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJCQkiZW50aXR5LXR5cGUiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJ0ZW1wbGF0ZS1jb250ZW50Ijogew0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkiZW50aXR5LWlkIjogew0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9LA0KKwkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCSJnZW5lcmF0ZWQtY29uZmlnIjogew0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJzdGF0dXMiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvZGF0YS9kZWZhdWx0LWNvbnRleHQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvY29yZS9zcmMvdGVzdC9yZXNvdXJjZXMvZGF0YS9kZWZhdWx0LWNvbnRleHQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Q0Y2JlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9kYXRhL2RlZmF1bHQtY29udGV4dC5qc29uCkBAIC0wLDAgKzEsNSBAQAorew0KKyAgInJlcXVlc3QtaWQiIDogIjEyMzQ1IiwNCisgICJob3N0bmFtZSIgOiAibG9jYWxob3N0IiwNCisgICJhY3Rpb24tbmFtZSIgOiAic2FtcGxlLWFjdGlvbiINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnlfc2NoZW1hLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL2RpY3Rpb25hcnkvZGljdGlvbmFyeV9zY2hlbWEuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDMxNzAwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9kaWN0aW9uYXJ5L2RpY3Rpb25hcnlfc2NoZW1hLmpzb24KQEAgLTAsMCArMSwyNjEgQEAKK3sNCisJInR5cGUiOiAib2JqZWN0IiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkicmVzb3VyY2UtcGF0aCI6IHsNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJyZXF1aXJlZCI6IHRydWUNCisJCX0sDQorCQkiZGVzY3JpcHRpb24iOiB7DQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJ1cGRhdGVkLWJ5Ijogew0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiZGF0YS10eXBlIjogew0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJInJlcXVpcmVkIjogdHJ1ZQ0KKwkJfSwNCisJCSJzb3VyY2UiOiB7DQorCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkiaW5wdXQiOiB7DQorCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJImtleSI6IHsNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImNvbXBvbmVudCI6IHsNCisJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkibmFtZSI6IHsNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZQ0KKwkJCQkJCX0sDQorCQkJCQkJImlucHV0LWtleS1tYXBwaW5nIjogew0KKwkJCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJCQkiYWRkaXRpb25hbFByb3BlcnRpZXMiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCX0NCisJCQkJCQl9LA0KKwkJCQkJCSJvdXRwdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImRlZmF1bHQiOiB7DQorCQkJCQkidHlwZSI6ICJhbnkiDQorCQkJCX0sDQorCQkJCSJhYWkiOiB7DQorCQkJCQkidHlwZSI6ICJhbnkiDQorCQkJCX0sDQorCQkJCSJtZHNhbCI6IHsNCisJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkicGF0aCI6IHsNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZQ0KKwkJCQkJCX0sDQorCQkJCQkJInVybC1wYXRoIjogew0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlDQorCQkJCQkJfSwNCisJCQkJCQkiaW5wdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0sDQorCQkJCQkJInR5cGUiOiB7DQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUNCisJCQkJCQl9LA0KKwkJCQkJCSJvdXRwdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0sDQorCQkJCQkJImJhc2UiOiB7DQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJuZXR3b3JrLXJlc291cmNlLWRpc2NvdmVyeSI6IHsNCisJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkiaW5wdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0sDQorCQkJCQkJIm91dHB1dC1rZXktbWFwcGluZyI6IHsNCisJCQkJCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkJCQkJImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjogew0KKwkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkiZGIiOiB7DQorCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJInF1ZXJ5Ijogew0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlDQorCQkJCQkJfSwNCisJCQkJCQkiaW5wdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0sDQorCQkJCQkJInR5cGUiOiB7DQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUNCisJCQkJCQl9LA0KKwkJCQkJCSJvdXRwdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0sDQorCQkJCQkJImJhc2UiOiB7DQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJwb2xpY3kiOiB7DQorCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJImlucHV0LWtleS1tYXBwaW5nIjogew0KKwkJCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJCQkiYWRkaXRpb25hbFByb3BlcnRpZXMiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCX0NCisJCQkJCQl9LA0KKwkJCQkJCSJvdXRwdXQta2V5LW1hcHBpbmciOiB7DQorCQkJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkJCSJhZGRpdGlvbmFsUHJvcGVydGllcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0sDQorCQkiY2FuZGlkYXRlLWRlcGVuZGVuY3kiOiB7DQorCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJImlucHV0Ijogew0KKwkJCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJCSJuYW1lcyI6IHsNCisJCQkJCQkJInR5cGUiOiAiYXJyYXkiLA0KKwkJCQkJCQkiaXRlbXMiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJjb21wb25lbnQiOiB7DQorCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJIm5hbWVzIjogew0KKwkJCQkJCQkidHlwZSI6ICJhcnJheSIsDQorCQkJCQkJCSJpdGVtcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImFhaSI6IHsNCisJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkibmFtZXMiOiB7DQorCQkJCQkJCSJ0eXBlIjogImFycmF5IiwNCisJCQkJCQkJIml0ZW1zIjogew0KKwkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkibWRzYWwiOiB7DQorCQkJCQkidHlwZSI6ICJvYmplY3QiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJIm5hbWVzIjogew0KKwkJCQkJCQkidHlwZSI6ICJhcnJheSIsDQorCQkJCQkJCSJpdGVtcyI6IHsNCisJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJIm5ldHdvcmstcmVzb3VyY2UtZGlzY292ZXJ5Ijogew0KKwkJCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJCSJuYW1lcyI6IHsNCisJCQkJCQkJInR5cGUiOiAiYXJyYXkiLA0KKwkJCQkJCQkiaXRlbXMiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJkYiI6IHsNCisJCQkJCSJ0eXBlIjogIm9iamVjdCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkibmFtZXMiOiB7DQorCQkJCQkJCSJ0eXBlIjogImFycmF5IiwNCisJCQkJCQkJIml0ZW1zIjogew0KKwkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkicG9saWN5Ijogew0KKwkJCQkJInR5cGUiOiAib2JqZWN0IiwNCisJCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJCSJuYW1lcyI6IHsNCisJCQkJCQkJInR5cGUiOiAiYXJyYXkiLA0KKwkJCQkJCQkiaXRlbXMiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9LA0KKwkJInRhZ3MiOiB7DQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJkZWZhdWx0Ijogew0KKwkJCSJ0eXBlIjogImFueSINCisJCX0sDQorCQkibmFtZSI6IHsNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJyZXF1aXJlZCI6IHRydWUNCisJCX0sDQorCQkidmFsaWQtdmFsdWVzIjogew0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkicmVzb3VyY2UtdHlwZSI6IHsNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJyZXF1aXJlZCI6IHRydWUNCisJCX0sDQorCQkic2FtcGxlLXZhbHVlIjogew0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiZW50cnktc2NoZW1hIjogew0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL3Byb3BlcnRpZXMvY29udmVydC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9wcm9wZXJ0aWVzL2NvbnZlcnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjdkMDhlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9wcm9wZXJ0aWVzL2NvbnZlcnQuanNvbgpAQCAtMCwwICsxLDMzIEBACit7DQorCSJ0eXBlIjogInNkbmMtY29tcG9uZW50LWdldFJlc291cmNlQXNzaWdubWVudCIsDQorCSJpbnRlcmZhY2VzIjogew0KKwkJIlJlc291cmNlQXNzaWdubWVudFNlcnZpY2UiOiB7DQorCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCSJnZXRSZXNvdXJjZUFzc2lnbm1lbnQiOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJhc3NpZ25tZW50LW1hcHBpbmdzIjogWw0KKwkJCQkJCQl7DQorCQkJCQkJCQkibmFtZSI6ICJzZXJ2aWNlLW5hbWUiLA0KKwkJCQkJCQkJIm1hcHBpbmctZmllbGQiOiAic2VydmljZSIsDQorCQkJCQkJCQkibWFwcGluZy1jYXRlZ29yeSI6ICJTRE4iLA0KKwkJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZQ0KKwkJCQkJCQl9LA0KKwkJCQkJCQl7DQorCQkJCQkJCQkibmFtZSI6ICJyZWdpb24tbmFtZSIsDQorCQkJCQkJCQkibWFwcGluZy1maWVsZCI6ICJyZWdpb24iLA0KKwkJCQkJCQkJIm1hcHBpbmctY2F0ZWdvcnkiOiAiU0ROIiwNCisJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUNCisJCQkJCQkJfQ0KKwkJCQkJCV0sDQorCQkJCQkJInByZS1kYXRhIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcImdldC1yZXNvdXJjZS1hc3NpZ25tZW50LmNvbmZpZy1wYXJhbXNcIiB9IiwNCisJCQkJCQkicHJpZml4IjogImdldC1yZXNvdXJjZS1hc3NpZ25tZW50Ig0KKwkJCQkJfSwNCisJCQkJCSJvdXRwdXRzIjogew0KKwkJCQkJCSJyZXNvdXJjZS1hc3NpZ25tZW50LXN0YXR1cyI6ICJzdWNjZXNzIiwNCisJCQkJCQkicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiAieyBcInNldF92YWx1ZVwiIDogXCJnZXQtcmVzb3VyY2UtYXNzaWdubWVudC5jb25maWctcGFyYW1zXCIgfSINCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL2NvcmUvc3JjL3Rlc3QvcmVzb3VyY2VzL3Byb3BlcnRpZXMvZGVmYXVsdC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9wcm9wZXJ0aWVzL2RlZmF1bHQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWM5N2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9jb3JlL3NyYy90ZXN0L3Jlc291cmNlcy9wcm9wZXJ0aWVzL2RlZmF1bHQuanNvbgpAQCAtMCwwICsxLDE2IEBACit7DQorCSJkZWZhdWx0IjogInsgXCJnZXRfaW5wdXRcIiA6IFwibG9vcGJhY2stZGVmYXVsdFwiIH0iLA0KKwkiZG9tYWluIjogImV0aGVybmV0IiwNCisJImNyaXRlcmlhIjogWw0KKwkJew0KKwkJCSJ2YWx1ZSI6ICJhdHRnYTMwMW1lMSIsDQorCQkJInR5cGUiOiAiY29tcGxleCIsDQorCQkJIm5vZGVTdHJpbmciOiAibGF5ZXIzLXNlcnZpY2UtbGlzdFtdLnNlcnZpY2UtZGF0YS5sM3Nkbi12bmYtZmllbGRzLnZuZi1uYW1lIg0KKwkJfSwNCisJCXsNCisJCQkidmFsdWUiOiAieyBcImdldF9pbnB1dFwiIDogXCJob3N0LWlwLWFkZHJlc3NcIiB9IiwNCisJCQkidHlwZSI6ICJzaW1wbGUiLA0KKwkJCSJub2RlU3RyaW5nIjogImxheWVyMy1zZXJ2aWNlLWxpc3RbXS5zZXJ2aWNlLWRhdGEubDNzZG4tdm5mLWZpZWxkcy52bmYtbmFtZSINCisJCX0NCisJXQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3BvbS54bWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU3MjE1YgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcG9tLnhtbApAQCAtMCwwICsxLDU0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIH4gQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgIH4NCisgIH4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICB+DQorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgIH4NCisgIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgIC0tPg0KKw0KKzxwcm9qZWN0DQorICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy94c2QvbWF2ZW4tNC4wLjAueHNkIg0KKyAgICAgICAgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCINCisgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KKyAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorICAgIDxwYXJlbnQ+DQorICAgICAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPg0KKyAgICAgICAgPGFydGlmYWN0SWQ+Y29udHJvbGxlcmJsdWVwcmludHMtcGFyZW50PC9hcnRpZmFjdElkPg0KKyAgICAgICAgPHZlcnNpb24+MC4zLjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorICAgICAgICA8cmVsYXRpdmVQYXRoPi4uL3BhcmVudDwvcmVsYXRpdmVQYXRoPg0KKyAgICA8L3BhcmVudD4NCisgICAgPGFydGlmYWN0SWQ+Y29udHJvbGxlcmJsdWVwcmludHMtbW9kdWxlczwvYXJ0aWZhY3RJZD4NCisgICAgPG5hbWU+Q29udHJvbGxlciBCbHVlcHJpbnRzIE1vZHVsZXM8L25hbWU+DQorICAgIDxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+DQorDQorICAgIDxtb2R1bGVzPg0KKyAgICAgICAgPG1vZHVsZT5jb3JlPC9tb2R1bGU+DQorICAgICAgICA8bW9kdWxlPnJlc291cmNlLWRpY3Q8L21vZHVsZT4NCisgICAgICAgIDxtb2R1bGU+c2VydmljZTwvbW9kdWxlPg0KKyAgICA8L21vZHVsZXM+DQorDQorICAgIDxidWlsZD4NCisgICAgICAgIDxwbHVnaW5zPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvbXBpbGVyLXBsdWdpbjwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+My4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNraXA+JHtza2lwLmNvbXBpbGV9PC9za2lwPi0tPg0KKyAgICAgICAgICAgICAgICAgICAgPHNvdXJjZT4xLjg8L3NvdXJjZT4NCisgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+MS44PC90YXJnZXQ+DQorICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgIDwvcGx1Z2lucz4NCisgICAgPC9idWlsZD4NCisNCis8L3Byb2plY3Q+DQorDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3BvbS54bWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3QvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGQxYmU2Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3BvbS54bWwKQEAgLTAsMCArMSw0NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICB+IENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICB+DQorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgfg0KKyAgfiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICB+DQorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICAtLT4NCisNCis8cHJvamVjdA0KKyAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcveHNkL21hdmVuLTQuMC4wLnhzZCINCisgICAgICAgIHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiDQorICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4NCisgICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKyAgICA8cGFyZW50Pg0KKyAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4NCisgICAgICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLW1vZHVsZXM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8dmVyc2lvbj4wLjMuMC1TTkFQU0hPVDwvdmVyc2lvbj4NCisgICAgPC9wYXJlbnQ+DQorICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXJlc291cmNlLWRpY3Q8L2FydGlmYWN0SWQ+DQorICAgIDxuYW1lPkNvbnRyb2xsZXIgQmx1ZXByaW50cyBSZXNvdXJjZSBEaWN0aW9uYXJ5PC9uYW1lPg0KKw0KKyAgICA8ZGVwZW5kZW5jaWVzPg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb250cm9sbGVyYmx1ZXByaW50cy1jb3JlPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+DQorICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+DQorICAgICAgICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKw0KKw0KKyAgICA8L2RlcGVuZGVuY2llcz4NCisNCisNCis8L3Byb2plY3Q+DQorDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L1Jlc291cmNlQXNzaWdubWVudC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L1Jlc291cmNlQXNzaWdubWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NTc2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvUmVzb3VyY2VBc3NpZ25tZW50LmphdmEKQEAgLTAsMCArMSwxNjcgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdDsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkZvcm1hdDsNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvblByb3BlcnR5Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5Qcm9wZXJ0eURlZmluaXRpb247DQorDQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisvKioNCisgKiBSZXNvdXJjZUFzc2lnbm1lbnQuamF2YSBQdXJwb3NlOiBQcm92aWRlIFJlc291cmNlQXNzaWdubWVudCBDdXN0b20gVE9TQ08gTW9kZWwgUE9KTyBiZWFuLg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VBc3NpZ25tZW50IHsNCisNCisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgicHJvcGVydHkiKQ0KKyAgICBwcml2YXRlIFByb3BlcnR5RGVmaW5pdGlvbiBwcm9wZXJ0eTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgiaW5wdXQtcGFyYW0iKQ0KKyAgICBwcml2YXRlIEJvb2xlYW4gaW5wdXRQYXJhbWV0ZXI7DQorDQorICAgIEBKc29uUHJvcGVydHkoImRpY3Rpb25hcnktbmFtZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIGRpY3Rpb25hcnlOYW1lOw0KKw0KKyAgICBASnNvblByb3BlcnR5KCJkaWN0aW9uYXJ5LXNvdXJjZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIGRpY3Rpb25hcnlTb3VyY2U7DQorDQorICAgIEBKc29uUHJvcGVydHkoImRlcGVuZGVuY2llcyIpDQorICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IGRlcGVuZGVuY2llczsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgidmVyc2lvbiIpDQorICAgIHByaXZhdGUgaW50IHZlcnNpb247DQorDQorICAgIEBKc29uUHJvcGVydHkoInN0YXR1cyIpDQorICAgIHByaXZhdGUgU3RyaW5nIHN0YXR1czsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgibWVzc2FnZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIG1lc3NhZ2U7DQorDQorICAgIEBKc29uUHJvcGVydHkoInVwZGF0ZWQtZGF0ZSIpDQorICAgIEBKc29uRm9ybWF0KHNoYXBlID0gSnNvbkZvcm1hdC5TaGFwZS5TVFJJTkcsIHBhdHRlcm4gPSAiZGQtTU0teXl5eSBoaDptbTpzcyIpDQorICAgIHByaXZhdGUgRGF0ZSB1cGRhdGVkRGF0ZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgidXBkYXRlZC1ieSIpDQorICAgIHByaXZhdGUgU3RyaW5nIHVwZGF0ZWRCeTsNCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7DQorICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigiWyIpOw0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIm5hbWUgPSAiICsgbmFtZSk7DQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBzb3VyY2UgPSAiICsgZGljdGlvbmFyeVNvdXJjZSk7DQorICAgICAgICBpZiAoZGVwZW5kZW5jaWVzICE9IG51bGwpIHsNCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCBkZXBlbmRlbmNpZXMgPSAiICsgZGVwZW5kZW5jaWVzKTsNCisgICAgICAgIH0NCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7DQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisgICAgICAgIHJldHVybiBuYW1lOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsNCisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFByb3BlcnR5RGVmaW5pdGlvbiBnZXRQcm9wZXJ0eSgpIHsNCisgICAgICAgIHJldHVybiBwcm9wZXJ0eTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRQcm9wZXJ0eShQcm9wZXJ0eURlZmluaXRpb24gcHJvcGVydHkpIHsNCisgICAgICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgQm9vbGVhbiBnZXRJbnB1dFBhcmFtZXRlcigpIHsNCisgICAgICAgIHJldHVybiBpbnB1dFBhcmFtZXRlcjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRJbnB1dFBhcmFtZXRlcihCb29sZWFuIGlucHV0UGFyYW1ldGVyKSB7DQorICAgICAgICB0aGlzLmlucHV0UGFyYW1ldGVyID0gaW5wdXRQYXJhbWV0ZXI7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXREaWN0aW9uYXJ5TmFtZSgpIHsNCisgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5TmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREaWN0aW9uYXJ5TmFtZShTdHJpbmcgZGljdGlvbmFyeU5hbWUpIHsNCisgICAgICAgIHRoaXMuZGljdGlvbmFyeU5hbWUgPSBkaWN0aW9uYXJ5TmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpY3Rpb25hcnlTb3VyY2UoKSB7DQorICAgICAgICByZXR1cm4gZGljdGlvbmFyeVNvdXJjZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREaWN0aW9uYXJ5U291cmNlKFN0cmluZyBkaWN0aW9uYXJ5U291cmNlKSB7DQorICAgICAgICB0aGlzLmRpY3Rpb25hcnlTb3VyY2UgPSBkaWN0aW9uYXJ5U291cmNlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0RGVwZW5kZW5jaWVzKCkgew0KKyAgICAgICAgcmV0dXJuIGRlcGVuZGVuY2llczsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZXBlbmRlbmNpZXMoTGlzdDxTdHJpbmc+IGRlcGVuZGVuY2llcykgew0KKyAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXM7DQorICAgIH0NCisNCisgICAgcHVibGljIGludCBnZXRWZXJzaW9uKCkgew0KKyAgICAgICAgcmV0dXJuIHZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VmVyc2lvbihpbnQgdmVyc2lvbikgew0KKyAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFN0YXR1cygpIHsNCisgICAgICAgIHJldHVybiBzdGF0dXM7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0U3RhdHVzKFN0cmluZyBzdGF0dXMpIHsNCisgICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsNCisgICAgICAgIHJldHVybiBtZXNzYWdlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpIHsNCisgICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7DQorICAgIH0NCisNCisgICAgcHVibGljIERhdGUgZ2V0VXBkYXRlZERhdGUoKSB7DQorICAgICAgICByZXR1cm4gdXBkYXRlZERhdGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXBkYXRlZERhdGUoRGF0ZSB1cGRhdGVkRGF0ZSkgew0KKyAgICAgICAgdGhpcy51cGRhdGVkRGF0ZSA9IHVwZGF0ZWREYXRlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VXBkYXRlZEJ5KCkgew0KKyAgICAgICAgcmV0dXJuIHVwZGF0ZWRCeTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRVcGRhdGVkQnkoU3RyaW5nIHVwZGF0ZWRCeSkgew0KKyAgICAgICAgdGhpcy51cGRhdGVkQnkgPSB1cGRhdGVkQnk7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L2RhdGEvRGVjcnlwdGlvblJ1bGUuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RlY3J5cHRpb25SdWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU0MzUyNAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RlY3J5cHRpb25SdWxlLmphdmEKQEAgLTAsMCArMSw2NyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LmRhdGE7DQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25Qcm9wZXJ0eTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorLyoqDQorICoNCisgKiBEZWNyeXB0aW9uUnVsZS5qYXZhIFB1cnBvc2U6DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitwdWJsaWMgY2xhc3MgRGVjcnlwdGlvblJ1bGUgew0KKw0KKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBzb3VyY2VzID0gbnVsbDsNCisgICAgcHJpdmF0ZSBTdHJpbmcgcGF0aDsNCisgICAgcHJpdmF0ZSBTdHJpbmcgcnVsZTsNCisgICAgQEpzb25Qcm9wZXJ0eSgiZGVjcnlwdC10eXBlIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGVjcnlwdFR5cGU7DQorDQorICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0U291cmNlcygpIHsNCisgICAgICAgIHJldHVybiBzb3VyY2VzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFNvdXJjZXMoTGlzdDxTdHJpbmc+IHNvdXJjZXMpIHsNCisgICAgICAgIHRoaXMuc291cmNlcyA9IHNvdXJjZXM7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRQYXRoKCkgew0KKyAgICAgICAgcmV0dXJuIHBhdGg7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0UGF0aChTdHJpbmcgcGF0aCkgew0KKyAgICAgICAgdGhpcy5wYXRoID0gcGF0aDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFJ1bGUoKSB7DQorICAgICAgICByZXR1cm4gcnVsZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRSdWxlKFN0cmluZyBydWxlKSB7DQorICAgICAgICB0aGlzLnJ1bGUgPSBydWxlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVjcnlwdFR5cGUoKSB7DQorICAgICAgICByZXR1cm4gZGVjcnlwdFR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGVjcnlwdFR5cGUoU3RyaW5nIGRlY3J5cHRUeXBlKSB7DQorICAgICAgICB0aGlzLmRlY3J5cHRUeXBlID0gZGVjcnlwdFR5cGU7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L2RhdGEvRGljdGlvbmFyeURlZmluaXRpb24uamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RpY3Rpb25hcnlEZWZpbml0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRjOWM4OQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RpY3Rpb25hcnlEZWZpbml0aW9uLmphdmEKQEAgLTAsMCArMSwxODEgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhOw0KKw0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uUHJvcGVydHk7DQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorLyoqDQorICoNCisgKiBEaWN0aW9uYXJ5RGVmaW5pdGlvbi5qYXZhIFB1cnBvc2U6DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitwdWJsaWMgY2xhc3MgRGljdGlvbmFyeURlZmluaXRpb24gew0KKyAgICBASnNvblByb3BlcnR5KHZhbHVlID0gIm5hbWUiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7DQorICAgIEBKc29uUHJvcGVydHkodmFsdWUgPSAiZGVzY3JpcHRpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJ2YWxpZC12YWx1ZXMiKQ0KKyAgICBwcml2YXRlIFN0cmluZyB2YWxpZFZhbHVlczsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJzYW1wbGUtdmFsdWUiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBzYW1wbGVWYWx1ZTsNCisNCisgICAgcHJpdmF0ZSBTdHJpbmcgdGFnczsNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJ1cGRhdGVkLWJ5IikNCisgICAgcHJpdmF0ZSBTdHJpbmcgdXBkYXRlZEJ5Ow0KKw0KKyAgICBASnNvblByb3BlcnR5KHZhbHVlID0gInJlc291cmNlLXR5cGUiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgU3RyaW5nIHJlc291cmNlVHlwZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJyZXNvdXJjZS1wYXRoIiwgcmVxdWlyZWQgPSB0cnVlKQ0KKyAgICBwcml2YXRlIFN0cmluZyByZXNvdXJjZVBhdGg7DQorDQorICAgIEBKc29uUHJvcGVydHkodmFsdWUgPSAiZGF0YS10eXBlIiwgcmVxdWlyZWQgPSB0cnVlKQ0KKyAgICBwcml2YXRlIFN0cmluZyBkYXRhVHlwZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgiZW50cnktc2NoZW1hIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZW50cnlTY2hlbWE7DQorDQorICAgIEBKc29uUHJvcGVydHkodmFsdWUgPSAiZGVmYXVsdCIpDQorICAgIHByaXZhdGUgT2JqZWN0IGRlZmF1bHRWYWx1ZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJzb3VyY2UiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgSnNvbk5vZGU+IHNvdXJjZTsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSgiY2FuZGlkYXRlLWRlcGVuZGVuY3kiKQ0KKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIERpY3Rpb25hcnlEZXBlbmRlbmN5PiBkZXBlbmRlbmN5Ow0KKw0KKyAgICBASnNvblByb3BlcnR5KCJkZWNyeXB0aW9uLXJ1bGVzIikNCisgICAgcHJpdmF0ZSBMaXN0PERlY3J5cHRpb25SdWxlPiBkZWNyeXB0aW9uUnVsZXM7DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisgICAgICAgIHJldHVybiBuYW1lOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsNCisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpIHsNCisgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbihTdHJpbmcgZGVzY3JpcHRpb24pIHsNCisgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFZhbGlkVmFsdWVzKCkgew0KKyAgICAgICAgcmV0dXJuIHZhbGlkVmFsdWVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFZhbGlkVmFsdWVzKFN0cmluZyB2YWxpZFZhbHVlcykgew0KKyAgICAgICAgdGhpcy52YWxpZFZhbHVlcyA9IHZhbGlkVmFsdWVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2FtcGxlVmFsdWUoKSB7DQorICAgICAgICByZXR1cm4gc2FtcGxlVmFsdWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0U2FtcGxlVmFsdWUoU3RyaW5nIHNhbXBsZVZhbHVlKSB7DQorICAgICAgICB0aGlzLnNhbXBsZVZhbHVlID0gc2FtcGxlVmFsdWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRUYWdzKCkgew0KKyAgICAgICAgcmV0dXJuIHRhZ3M7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VGFncyhTdHJpbmcgdGFncykgew0KKyAgICAgICAgdGhpcy50YWdzID0gdGFnczsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFVwZGF0ZWRCeSgpIHsNCisgICAgICAgIHJldHVybiB1cGRhdGVkQnk7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXBkYXRlZEJ5KFN0cmluZyB1cGRhdGVkQnkpIHsNCisgICAgICAgIHRoaXMudXBkYXRlZEJ5ID0gdXBkYXRlZEJ5Ow0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVzb3VyY2VUeXBlKCkgew0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlVHlwZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZVR5cGUoU3RyaW5nIHJlc291cmNlVHlwZSkgew0KKyAgICAgICAgdGhpcy5yZXNvdXJjZVR5cGUgPSByZXNvdXJjZVR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRSZXNvdXJjZVBhdGgoKSB7DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VQYXRoOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFJlc291cmNlUGF0aChTdHJpbmcgcmVzb3VyY2VQYXRoKSB7DQorICAgICAgICB0aGlzLnJlc291cmNlUGF0aCA9IHJlc291cmNlUGF0aDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERhdGFUeXBlKCkgew0KKyAgICAgICAgcmV0dXJuIGRhdGFUeXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldERhdGFUeXBlKFN0cmluZyBkYXRhVHlwZSkgew0KKyAgICAgICAgdGhpcy5kYXRhVHlwZSA9IGRhdGFUeXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RW50cnlTY2hlbWEoKSB7DQorICAgICAgICByZXR1cm4gZW50cnlTY2hlbWE7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RW50cnlTY2hlbWEoU3RyaW5nIGVudHJ5U2NoZW1hKSB7DQorICAgICAgICB0aGlzLmVudHJ5U2NoZW1hID0gZW50cnlTY2hlbWE7DQorICAgIH0NCisNCisgICAgcHVibGljIE9iamVjdCBnZXREZWZhdWx0VmFsdWUoKSB7DQorICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldERlZmF1bHRWYWx1ZShPYmplY3QgZGVmYXVsdFZhbHVlKSB7DQorICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgTWFwPFN0cmluZywgSnNvbk5vZGU+IGdldFNvdXJjZSgpIHsNCisgICAgICAgIHJldHVybiBzb3VyY2U7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0U291cmNlKE1hcDxTdHJpbmcsIEpzb25Ob2RlPiBzb3VyY2UpIHsNCisgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBEaWN0aW9uYXJ5RGVwZW5kZW5jeT4gZ2V0RGVwZW5kZW5jeSgpIHsNCisgICAgICAgIHJldHVybiBkZXBlbmRlbmN5Ow0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldERlcGVuZGVuY3koTWFwPFN0cmluZywgRGljdGlvbmFyeURlcGVuZGVuY3k+IGRlcGVuZGVuY3kpIHsNCisgICAgICAgIHRoaXMuZGVwZW5kZW5jeSA9IGRlcGVuZGVuY3k7DQorICAgIH0NCisNCisgICAgcHVibGljIExpc3Q8RGVjcnlwdGlvblJ1bGU+IGdldERlY3J5cHRpb25SdWxlcygpIHsNCisgICAgICAgIHJldHVybiBkZWNyeXB0aW9uUnVsZXM7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGVjcnlwdGlvblJ1bGVzKExpc3Q8RGVjcnlwdGlvblJ1bGU+IGRlY3J5cHRpb25SdWxlcykgew0KKyAgICAgICAgdGhpcy5kZWNyeXB0aW9uUnVsZXMgPSBkZWNyeXB0aW9uUnVsZXM7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L2RhdGEvRGljdGlvbmFyeURlcGVuZGVuY3kuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RpY3Rpb25hcnlEZXBlbmRlbmN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNiNzEwNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL0RpY3Rpb25hcnlEZXBlbmRlbmN5LmphdmEKQEAgLTAsMCArMSwzNiBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LmRhdGE7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKy8qKg0KKyAqDQorICogRGljdGlvbmFyeURlcGVuZGVuY3kNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEaWN0aW9uYXJ5RGVwZW5kZW5jeSB7DQorICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IG5hbWVzOw0KKw0KKyAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldE5hbWVzKCkgew0KKyAgICAgICAgcmV0dXJuIG5hbWVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldE5hbWVzKExpc3Q8U3RyaW5nPiBuYW1lcykgew0KKyAgICAgICAgdGhpcy5uYW1lcyA9IG5hbWVzOw0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZURiLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvZGF0YS9Tb3VyY2VEYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZDQwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvZGF0YS9Tb3VyY2VEYi5qYXZhCkBAIC0wLDAgKzEsODMgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhOw0KKw0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uUHJvcGVydHk7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorLyoqDQorICoNCisgKiBTb3VyY2VEYg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorcHVibGljIGNsYXNzIFNvdXJjZURiIHsNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJiYXNlIiwgcmVxdWlyZWQgPSB0cnVlKQ0KKyAgICBwcml2YXRlIFN0cmluZyBiYXNlOw0KKyAgICBASnNvblByb3BlcnR5KHZhbHVlID0gInR5cGUiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgU3RyaW5nIHR5cGU7IC8vIFNRTCB8IFBMU1FMDQorICAgIEBKc29uUHJvcGVydHkodmFsdWUgPSAicXVlcnkiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgU3RyaW5nIHF1ZXJ5Ow0KKw0KKyAgICBASnNvblByb3BlcnR5KCJpbnB1dC1rZXktbWFwcGluZyIpDQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBpbnB1dEtleU1hcHBpbmc7DQorDQorICAgIEBKc29uUHJvcGVydHkoIm91dHB1dC1rZXktbWFwcGluZyIpDQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBvdXRwdXRLZXlNYXBwaW5nOw0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2UoKSB7DQorICAgICAgICByZXR1cm4gYmFzZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRCYXNlKFN0cmluZyBiYXNlKSB7DQorICAgICAgICB0aGlzLmJhc2UgPSBiYXNlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpIHsNCisgICAgICAgIHJldHVybiB0eXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpIHsNCisgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRRdWVyeSgpIHsNCisgICAgICAgIHJldHVybiBxdWVyeTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRRdWVyeShTdHJpbmcgcXVlcnkpIHsNCisgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRJbnB1dEtleU1hcHBpbmcoKSB7DQorICAgICAgICByZXR1cm4gaW5wdXRLZXlNYXBwaW5nOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldElucHV0S2V5TWFwcGluZyhNYXA8U3RyaW5nLCBTdHJpbmc+IGlucHV0S2V5TWFwcGluZykgew0KKyAgICAgICAgdGhpcy5pbnB1dEtleU1hcHBpbmcgPSBpbnB1dEtleU1hcHBpbmc7DQorICAgIH0NCisNCisgICAgcHVibGljIE1hcDxTdHJpbmcsIFN0cmluZz4gZ2V0T3V0cHV0S2V5TWFwcGluZygpIHsNCisgICAgICAgIHJldHVybiBvdXRwdXRLZXlNYXBwaW5nOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldE91dHB1dEtleU1hcHBpbmcoTWFwPFN0cmluZywgU3RyaW5nPiBvdXRwdXRLZXlNYXBwaW5nKSB7DQorICAgICAgICB0aGlzLm91dHB1dEtleU1hcHBpbmcgPSBvdXRwdXRLZXlNYXBwaW5nOw0KKyAgICB9DQorDQorDQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZURlZmF1bHQuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZURlZmF1bHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTQzNTFjCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L2RhdGEvU291cmNlRGVmYXVsdC5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhOw0KKy8qKg0KKyAqDQorICogU291cmNlRGVmYXVsdA0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorcHVibGljIGNsYXNzIFNvdXJjZURlZmF1bHQgew0KKw0KKyAgICBwcml2YXRlIFN0cmluZyBrZXk7DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2V5KCkgew0KKyAgICAgICAgcmV0dXJuIGtleTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRLZXkoU3RyaW5nIGtleSkgew0KKyAgICAgICAgdGhpcy5rZXkgPSBrZXk7DQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L2RhdGEvU291cmNlSW5wdXQuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZUlucHV0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJjYjc2OQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZUlucHV0LmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LmRhdGE7DQorLyoqDQorICoNCisgKiBTb3VyY2VJbnB1dA0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorcHVibGljIGNsYXNzIFNvdXJjZUlucHV0IHsNCisNCisgICAgcHJpdmF0ZSBTdHJpbmcga2V5Ow0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldEtleSgpIHsNCisgICAgICAgIHJldHVybiBrZXk7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0S2V5KFN0cmluZyBrZXkpIHsNCisgICAgICAgIHRoaXMua2V5ID0ga2V5Ow0KKyAgICB9DQorDQorDQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC9kYXRhL1NvdXJjZU1kc2FsLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvZGF0YS9Tb3VyY2VNZHNhbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYjIzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvZGF0YS9Tb3VyY2VNZHNhbC5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhOw0KKy8qKg0KKyAqDQorICogU291cmNlTWRzYWwNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqLw0KK2ltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uUHJvcGVydHk7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQorcHVibGljIGNsYXNzIFNvdXJjZU1kc2FsIHsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJiYXNlIiwgcmVxdWlyZWQgPSB0cnVlKQ0KKyAgICBwcml2YXRlIFN0cmluZyBiYXNlOw0KKw0KKyAgICBASnNvblByb3BlcnR5KHZhbHVlID0gInR5cGUiLCByZXF1aXJlZCA9IHRydWUpDQorICAgIHByaXZhdGUgU3RyaW5nIHR5cGU7IC8vIFhNTCB8IEpTT04NCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJ1cmwtcGF0aCIsIHJlcXVpcmVkID0gdHJ1ZSkNCisgICAgcHJpdmF0ZSBTdHJpbmcgdXJsUGF0aDsNCisNCisgICAgQEpzb25Qcm9wZXJ0eSh2YWx1ZSA9ICJwYXRoIiwgcmVxdWlyZWQgPSB0cnVlKQ0KKyAgICBwcml2YXRlIFN0cmluZyBwYXRoOw0KKw0KKyAgICBASnNvblByb3BlcnR5KCJpbnB1dC1rZXktbWFwcGluZyIpDQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBpbnB1dEtleU1hcHBpbmc7DQorDQorICAgIEBKc29uUHJvcGVydHkoIm91dHB1dC1rZXktbWFwcGluZyIpDQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBvdXRwdXRLZXlNYXBwaW5nOw0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldEJhc2UoKSB7DQorICAgICAgICByZXR1cm4gYmFzZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRCYXNlKFN0cmluZyBiYXNlKSB7DQorICAgICAgICB0aGlzLmJhc2UgPSBiYXNlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VHlwZSgpIHsNCisgICAgICAgIHJldHVybiB0eXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFR5cGUoU3RyaW5nIHR5cGUpIHsNCisgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRVcmxQYXRoKCkgew0KKyAgICAgICAgcmV0dXJuIHVybFBhdGg7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXJsUGF0aChTdHJpbmcgdXJsUGF0aCkgew0KKyAgICAgICAgdGhpcy51cmxQYXRoID0gdXJsUGF0aDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFBhdGgoKSB7DQorICAgICAgICByZXR1cm4gcGF0aDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRQYXRoKFN0cmluZyBwYXRoKSB7DQorICAgICAgICB0aGlzLnBhdGggPSBwYXRoOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGdldElucHV0S2V5TWFwcGluZygpIHsNCisgICAgICAgIHJldHVybiBpbnB1dEtleU1hcHBpbmc7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0SW5wdXRLZXlNYXBwaW5nKE1hcDxTdHJpbmcsIFN0cmluZz4gaW5wdXRLZXlNYXBwaW5nKSB7DQorICAgICAgICB0aGlzLmlucHV0S2V5TWFwcGluZyA9IGlucHV0S2V5TWFwcGluZzsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRPdXRwdXRLZXlNYXBwaW5nKCkgew0KKyAgICAgICAgcmV0dXJuIG91dHB1dEtleU1hcHBpbmc7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0T3V0cHV0S2V5TWFwcGluZyhNYXA8U3RyaW5nLCBTdHJpbmc+IG91dHB1dEtleU1hcHBpbmcpIHsNCisgICAgICAgIHRoaXMub3V0cHV0S2V5TWFwcGluZyA9IG91dHB1dEtleU1hcHBpbmc7DQorICAgIH0NCisNCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L3V0aWxzL1Jlc291cmNlRGljdGlvbmFyeVV0aWxzLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvdXRpbHMvUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDUxZDgyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9yZXNvdXJjZS1kaWN0L3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9yZXNvdXJjZS9kaWN0L3V0aWxzL1Jlc291cmNlRGljdGlvbmFyeVV0aWxzLmphdmEKQEAgLTAsMCArMSwxMjkgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC51dGlsczsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLkpzb25Ob2RlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuTWFwVXRpbHM7DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkNvbmZpZ01vZGVsQ29uc3RhbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLkVudHJ5U2NoZW1hOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5Qcm9wZXJ0eURlZmluaXRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5SZXNvdXJjZUFzc2lnbm1lbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhLkRpY3Rpb25hcnlEZWZpbml0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuZGF0YS5EaWN0aW9uYXJ5RGVwZW5kZW5jeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCitpbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLlN1cHBsaWVyOw0KKw0KKy8qKg0KKyAqIFJlc291cmNlRGljdGlvbmFyeVV0aWxzLmphdmEgUHVycG9zZSB0byBwcm92aWRlIFJlc291cmNlRGljdGlvbmFyeVV0aWxzDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZURpY3Rpb25hcnlVdGlscyB7DQorDQorICAgIHByaXZhdGUgUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHMoKSB7DQorICAgICAgICAvLyBEbyBub3RoaW5nDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFJlc291cmNlRGljdGlvbmFyeVV0aWxzLmNsYXNzKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgTWV0aG9kIGlzIHRvIGFzc2lnbiB0aGUgc291cmNlIG5hbWUgdG8gdGhlIERpY3Rpb25hcnkgRGVmaW5pdGlvbiBDaGVjayB0byBzZWUgaWYgdGhlIHNvdXJjZQ0KKyAgICAgKiBkZWZpbml0aW9uIGlzIG5vdCBwcmVzZW50IHRoZW4gYXNzaWduLCBpZiBtb3JlIHRoYW4gb25lIHNvdXJjZSB0aGVuIGFzc2lnbiBvbmx5IG9uZSBmaXJzdCBzb3VyY2UuDQorICAgICAqDQorICAgICAqIEBwYXJhbSByZXNvdXJjZUFzc2lnbm1lbnQNCisgICAgICogQHBhcmFtIGRpY3Rpb25hcnlEZWZpbml0aW9uDQorICAgICAqLw0KKyAgICBAU3VwcHJlc3NXYXJuaW5ncygic3F1aWQ6UzM3NzYiKQ0KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcG9wdWxhdGVTb3VyY2VNYXBwaW5nKFJlc291cmNlQXNzaWdubWVudCByZXNvdXJjZUFzc2lnbm1lbnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGljdGlvbmFyeURlZmluaXRpb24gZGljdGlvbmFyeURlZmluaXRpb24pIHsNCisNCisgICAgICAgIGlmIChyZXNvdXJjZUFzc2lnbm1lbnQgIT0gbnVsbCAmJiBkaWN0aW9uYXJ5RGVmaW5pdGlvbiAhPSBudWxsDQorICAgICAgICAgICAgICAgICYmIFN0cmluZ1V0aWxzLmlzQmxhbmsocmVzb3VyY2VBc3NpZ25tZW50LmdldERpY3Rpb25hcnlTb3VyY2UoKSkpIHsNCisNCisgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIFByb3BlcnR5IERlZmluaXRpb25zIGZyb20gRGljdGlvbmFyeQ0KKyAgICAgICAgICAgIHNldFByb3BlcnR5KHJlc291cmNlQXNzaWdubWVudCwgZGljdGlvbmFyeURlZmluaXRpb24pOw0KKw0KKyAgICAgICAgICAgIE1hcDxTdHJpbmcsIEpzb25Ob2RlPiBkaWN0aW9uYXJ5U291cmNlID0gZGljdGlvbmFyeURlZmluaXRpb24uZ2V0U291cmNlKCk7DQorICAgICAgICAgICAgTWFwPFN0cmluZywgRGljdGlvbmFyeURlcGVuZGVuY3k+IGRpY3Rpb25hcnlEZXBlbmRlbmN5TWFwID0gZGljdGlvbmFyeURlZmluaXRpb24uZ2V0RGVwZW5kZW5jeSgpOw0KKw0KKyAgICAgICAgICAgIGlmIChNYXBVdGlscy5pc05vdEVtcHR5KGRpY3Rpb25hcnlTb3VyY2UpKSB7DQorICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSBmaW5kRmlyc3RTb3VyY2UoZGljdGlvbmFyeVNvdXJjZSk7DQorDQorICAgICAgICAgICAgICAgIC8vIFBvcHVsYXRlIGFuZCBBc3NpZ24gRmlyc3QgU291cmNlDQorICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHNvdXJjZSkpIHsNCisgICAgICAgICAgICAgICAgICAgIC8vIFNldCBEaWN0aW9uYXJ5IFNvdXJjZQ0KKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LnNldERpY3Rpb25hcnlTb3VyY2Uoc291cmNlKTsNCisNCisgICAgICAgICAgICAgICAgICAgIGlmIChNYXBVdGlscy5pc05vdEVtcHR5KGRpY3Rpb25hcnlEZXBlbmRlbmN5TWFwKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBEZXBlbmRlbmNpZXMNCisgICAgICAgICAgICAgICAgICAgICAgICBEaWN0aW9uYXJ5RGVwZW5kZW5jeSBkaWN0aW9uYXJ5RGVwZW5kZW5jeSA9IGRpY3Rpb25hcnlEZXBlbmRlbmN5TWFwLmdldChzb3VyY2UpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5RGVwZW5kZW5jeSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5zZXREZXBlbmRlbmNpZXMoZGljdGlvbmFyeURlcGVuZGVuY3kuZ2V0TmFtZXMoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LnNldERpY3Rpb25hcnlTb3VyY2UoQ29uZmlnTW9kZWxDb25zdGFudC5TT1VSQ0VfSU5QVVQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhdXRvIG1hcCByZXNvdXJjZUFzc2lnbm1lbnQgOiB7fSIsIHJlc291cmNlQXNzaWdubWVudCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHB1YmxpYyBzdGF0aWMgPFQ+IE9wdGlvbmFsPFQ+IHJlc29sdmUoU3VwcGxpZXI8VD4gcmVzb2x2ZXIpIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgVCByZXN1bHQgPSByZXNvbHZlci5nZXQoKTsNCisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZShyZXN1bHQpOw0KKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5lbXB0eSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBmaW5kRmlyc3RTb3VyY2UoTWFwPFN0cmluZywgSnNvbk5vZGU+IGRpY3Rpb25hcnlTb3VyY2UpIHsNCisgICAgICAgIFN0cmluZyBzb3VyY2UgPSBudWxsOw0KKyAgICAgICAgaWYgKE1hcFV0aWxzLmlzTm90RW1wdHkoZGljdGlvbmFyeVNvdXJjZSkpIHsNCisgICAgICAgICAgICBzb3VyY2UgPSBkaWN0aW9uYXJ5U291cmNlLmtleVNldCgpLnN0cmVhbSgpLmZpbmRGaXJzdCgpLmdldCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHNvdXJjZTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogT3ZlcnJpZGluZyBSZXNvdXJjZUFzc2lnbm1lbnQgUHJvcGVydGllcyB3aXRoIHByb3BlcnRpZXMgZGVmaW5lZCBpbiBEaWN0aW9uYXJ5DQorICAgICAqLw0KKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5KFJlc291cmNlQXNzaWdubWVudCByZXNvdXJjZUFzc2lnbm1lbnQsIERpY3Rpb25hcnlEZWZpbml0aW9uIGRpY3Rpb25hcnlEZWZpbml0aW9uKSB7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXREYXRhVHlwZSgpKSkgew0KKyAgICAgICAgICAgIFByb3BlcnR5RGVmaW5pdGlvbiBwcm9wZXJ0eSA9IHJlc291cmNlQXNzaWdubWVudC5nZXRQcm9wZXJ0eSgpOw0KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gbmV3IFByb3BlcnR5RGVmaW5pdGlvbigpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBwcm9wZXJ0eS5zZXREZWZhdWx0VmFsdWUoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0RGVmYXVsdFZhbHVlKCkpOw0KKyAgICAgICAgICAgIHByb3BlcnR5LnNldFR5cGUoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0RGF0YVR5cGUoKSk7DQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0RW50cnlTY2hlbWEoKSkpIHsNCisgICAgICAgICAgICAgICAgRW50cnlTY2hlbWEgZW50cnlTY2hlbWEgPSBuZXcgRW50cnlTY2hlbWEoKTsNCisgICAgICAgICAgICAgICAgZW50cnlTY2hlbWEuc2V0VHlwZShkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXRFbnRyeVNjaGVtYSgpKTsNCisgICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0RW50cnlTY2hlbWEoZW50cnlTY2hlbWEpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuc2V0UHJvcGVydHkocHJvcGVydHkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC92YWxpZGF0b3IvUmVzb3VyY2VBc3NpZ25tZW50VmFsaWRhdG9yLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvdmFsaWRhdG9yL1Jlc291cmNlQXNzaWdubWVudFZhbGlkYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ODBhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvdmFsaWRhdG9yL1Jlc291cmNlQXNzaWdubWVudFZhbGlkYXRvci5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QudmFsaWRhdG9yOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy50ZXh0LlN0ckJ1aWxkZXI7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5Db25maWdNb2RlbENvbnN0YW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5DYXBhYmlsaXR5QXNzaWdubWVudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuTm9kZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuVG9wb2xvZ2ljYWxTb3J0aW5nVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5SZXNvdXJjZUFzc2lnbm1lbnQ7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuKjsNCisvKioNCisgKg0KKyAqIFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvci5qYXZhIFB1cnBvc2U6DQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKi8NCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VBc3NpZ25tZW50VmFsaWRhdG9yIHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvci5jbGFzcyk7DQorICAgIHByaXZhdGUgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IGFzc2lnbm1lbnRzOw0KKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIFJlc291cmNlQXNzaWdubWVudD4gcmVzb3VyY2VBc3NpZ25tZW50TWFwID0gbmV3IEhhc2hNYXAoKTsNCisgICAgcHJpdmF0ZSBTdHJCdWlsZGVyIHZhbGlkYXRpb25NZXNzYWdlID0gbmV3IFN0ckJ1aWxkZXIoKTsNCisNCisgICAgcHVibGljIFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvcihMaXN0PFJlc291cmNlQXNzaWdubWVudD4gYXNzaWdubWVudHMpIHsNCisgICAgICAgIHRoaXMuYXNzaWdubWVudHMgPSBhc3NpZ25tZW50czsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgUmVzb3VyY2VBc3NpZ25tZW50VmFsaWRhdG9yKE5vZGVUZW1wbGF0ZSBub2RlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKw0KKyAgICAgICAgaWYgKG5vZGVUZW1wbGF0ZSAhPSBudWxsICYmIG5vZGVUZW1wbGF0ZS5nZXRDYXBhYmlsaXRpZXMoKSAhPSBudWxsKSB7DQorICAgICAgICAgICAgQ2FwYWJpbGl0eUFzc2lnbm1lbnQgY2FwYWJpbGl0eUFzc2lnbm1lbnQgPQ0KKyAgICAgICAgICAgICAgICAgICAgbm9kZVRlbXBsYXRlLmdldENhcGFiaWxpdGllcygpLmdldChDb25maWdNb2RlbENvbnN0YW50LkNBUEFCSUxJVFlfUFJPUEVSVFlfTUFQUElORyk7DQorICAgICAgICAgICAgaWYgKGNhcGFiaWxpdHlBc3NpZ25tZW50ICE9IG51bGwgJiYgY2FwYWJpbGl0eUFzc2lnbm1lbnQuZ2V0UHJvcGVydGllcygpICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgT2JqZWN0IG1hcHBpbmdPYmplY3QgPQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdHlBc3NpZ25tZW50LmdldFByb3BlcnRpZXMoKS5nZXQoQ29uZmlnTW9kZWxDb25zdGFudC5DQVBBQklMSVRZX1BST1BFUlRZX01BUFBJTkcpOw0KKyAgICAgICAgICAgICAgICBpZiAobWFwcGluZ09iamVjdCAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWFwcGluZ0NvbnRlbnQgPSBKYWNrc29uVXRpbHMuZ2V0SnNvbihtYXBwaW5nT2JqZWN0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKG1hcHBpbmdDb250ZW50KSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWdubWVudHMgPQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSmFja3NvblV0aWxzLmdldExpc3RGcm9tSnNvbihtYXBwaW5nQ29udGVudCwgUmVzb3VyY2VBc3NpZ25tZW50LmNsYXNzKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmRsbihTdHJpbmcuZm9ybWF0KCJGYWlsZWQgdG8gdHJhbnNmb3JtIE1hcHBpbmcgQ29udGVudCAoJXMpICIsIG1hcHBpbmdDb250ZW50KSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIkZhaWxlZCB0byB0cmFuc2Zvcm0gTWFwcGluZyBDb250ZW50ICglcykgIiwgbWFwcGluZ0NvbnRlbnQpKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHZhbGlkYXRlUmVzb3VyY2VBc3NpZ25tZW50IHRvIHZhbGlkYXRlIHRoZSBUb3BvbG9neSBUZW1wbGF0ZQ0KKyAgICAgKg0KKyAgICAgKiBAcmV0dXJuIGJvb2xlYW4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlUmVzb3VyY2VBc3NpZ25tZW50KCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAoYXNzaWdubWVudHMgIT0gbnVsbCAmJiAhYXNzaWdubWVudHMuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgdmFsaWRhdGVEdXBsaWNhdGVEaWN0aW9uYXJ5S2V5cygpOw0KKyAgICAgICAgICAgIHZhbGlkYXRlQ3ljbGljRGVwZW5kZW5jeSgpOw0KKyAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZS5sZW5ndGgoKSA+IDApIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiUmVzb3VyY2UgQXNzaWdubWVudCBWYWxpZGF0aW9uIDoiICsgdmFsaWRhdGlvbk1lc3NhZ2UudG9TdHJpbmcoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorICAgIH0NCisNCisgICAgQFN1cHByZXNzV2FybmluZ3MoInNxdWlkOlMzNzc2IikNCisgICAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlRHVwbGljYXRlRGljdGlvbmFyeUtleXMoKSB7DQorICAgICAgICB0aGlzLmFzc2lnbm1lbnRzLmZvckVhY2gocmVzb3VyY2VNYXBwaW5nIC0+IHsNCisgICAgICAgICAgICBpZiAocmVzb3VyY2VNYXBwaW5nICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgaWYgKCFyZXNvdXJjZUFzc2lnbm1lbnRNYXAuY29udGFpbnNLZXkocmVzb3VyY2VNYXBwaW5nLmdldE5hbWUoKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudE1hcC5wdXQocmVzb3VyY2VNYXBwaW5nLmdldE5hbWUoKSwgcmVzb3VyY2VNYXBwaW5nKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlLmFwcGVuZGxuKFN0cmluZy5mb3JtYXQoIkR1cGxpY2F0ZSBBc3NpZ25tZW50IFRlbXBsYXRlIEtleSAoJXMpIGlzIFByZXNlbnQiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZU1hcHBpbmcuZ2V0TmFtZSgpKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9KTsNCisNCisgICAgICAgIGlmICghYXNzaWdubWVudHMuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgU2V0PFN0cmluZz4gdW5pcXVlU2V0ID0gbmV3IEhhc2hTZXQ8PigpOw0KKyAgICAgICAgICAgIGZvciAoUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA6IGFzc2lnbm1lbnRzKSB7DQorICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZUFzc2lnbm1lbnQgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBhZGRlZCA9IHVuaXF1ZVNldC5hZGQocmVzb3VyY2VBc3NpZ25tZW50LmdldERpY3Rpb25hcnlOYW1lKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlLmFwcGVuZGxuKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiRHVwbGljYXRlIEFzc2lnbm1lbnQgRGljdGlvbmFyeSBLZXkgKCVzKSBwcmVzZW50IHdpdGggVGVtcGxhdGUgS2V5ICglcykiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSwgcmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZUN5Y2xpY0RlcGVuZGVuY3koKSB7DQorICAgICAgICBUb3BvbG9naWNhbFNvcnRpbmdVdGlsczxSZXNvdXJjZUFzc2lnbm1lbnQ+IHRvcG9sb2d5U29ydGluZyA9IG5ldyBUb3BvbG9naWNhbFNvcnRpbmdVdGlsczw+KCk7DQorICAgICAgICB0aGlzLnJlc291cmNlQXNzaWdubWVudE1hcC5mb3JFYWNoKChtYXBwaW5nS2V5LCBtYXBwaW5nKSAtPiB7DQorICAgICAgICAgICAgaWYgKG1hcHBpbmcgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBpZiAobWFwcGluZy5nZXREZXBlbmRlbmNpZXMoKSAhPSBudWxsICYmICFtYXBwaW5nLmdldERlcGVuZGVuY2llcygpLmlzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgZGVwZW5kZW5jeSA6IG1hcHBpbmcuZ2V0RGVwZW5kZW5jaWVzKCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICB0b3BvbG9neVNvcnRpbmcuYWRkKHJlc291cmNlQXNzaWdubWVudE1hcC5nZXQoZGVwZW5kZW5jeSksIG1hcHBpbmcpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgdG9wb2xvZ3lTb3J0aW5nLmFkZChudWxsLCBtYXBwaW5nKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0pOw0KKw0KKyAgICAgICAgaWYgKCF0b3BvbG9neVNvcnRpbmcuaXNEYWcoKSkgew0KKyAgICAgICAgICAgIFN0cmluZyBncmFwaCA9IGdldFRvcG9sb2dpY2FsR3JhcGgodG9wb2xvZ3lTb3J0aW5nKTsNCisgICAgICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZS5hcHBlbmRsbigiQ3ljbGljIERlcGVuZGVuY3kgOiIgKyBncmFwaCk7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCisgICAgcHVibGljIFN0cmluZyBnZXRUb3BvbG9naWNhbEdyYXBoKFRvcG9sb2dpY2FsU29ydGluZ1V0aWxzPFJlc291cmNlQXNzaWdubWVudD4gdG9wb2xvZ3lTb3J0aW5nKSB7DQorICAgICAgICBTdHJpbmdCdWlsZGVyIHMgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KKyAgICAgICAgaWYgKHRvcG9sb2d5U29ydGluZyAhPSBudWxsKSB7DQorICAgICAgICAgICAgTWFwPFJlc291cmNlQXNzaWdubWVudCwgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+PiBuZWlnaGJvcnMgPSB0b3BvbG9neVNvcnRpbmcuZ2V0TmVpZ2hib3JzKCk7DQorDQorICAgICAgICAgICAgbmVpZ2hib3JzLmZvckVhY2goKHYsIHZzKSAtPiB7DQorICAgICAgICAgICAgICAgIGlmICh2ID09IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKCJcbiAgICAqIC0+IFsiKTsNCisgICAgICAgICAgICAgICAgICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiBsaW5rcyA9IHZzOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChSZXNvdXJjZUFzc2lnbm1lbnQgcmVzb3VyY2VBc3NpZ25tZW50IDogbGlua3MpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgiKCIgKyByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSArICI6IiArIHJlc291cmNlQXNzaWdubWVudC5nZXROYW1lKCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiksIik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZCgiXSIpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoIlxuICAgICgiICsgdi5nZXREaWN0aW9uYXJ5TmFtZSgpICsgIjoiICsgdi5nZXROYW1lKCkgKyAiKSAtPiBbIik7DQorICAgICAgICAgICAgICAgICAgICBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gbGlua3MgPSB2czsNCisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA6IGxpbmtzKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoIigiICsgcmVzb3VyY2VBc3NpZ25tZW50LmdldERpY3Rpb25hcnlOYW1lKCkgKyAiOiIgKyByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0TmFtZSgpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpLCIpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoIl0iKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsNCisgICAgfQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvdXRpbC9SZXNvdXJjZURpY3Rpb25hcnlVdGlsc1Rlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvcmVzb3VyY2UtZGljdC9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvcmVzb3VyY2UvZGljdC91dGlsL1Jlc291cmNlRGljdGlvbmFyeVV0aWxzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjAxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3Jlc291cmNlLWRpY3Qvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3Jlc291cmNlL2RpY3QvdXRpbC9SZXNvdXJjZURpY3Rpb25hcnlVdGlsc1Rlc3QuamF2YQpAQCAtMCwwICsxLDE2NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LnV0aWw7DQorDQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZTsNCitpbXBvcnQgb3JnLmp1bml0LkFzc2VydDsNCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5Db25maWdNb2RlbENvbnN0YW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuUmVzb3VyY2VBc3NpZ25tZW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuZGF0YS4qOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QudXRpbHMuUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHM7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsNCitpbXBvcnQgamF2YS51dGlsLk1hcDsNCisNCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHNUZXN0IHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFJlc291cmNlRGljdGlvbmFyeVV0aWxzVGVzdC5jbGFzcyk7DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHZhbGlkYXRlU2luZ2xlSW5wdXRTb3VyY2UoKSB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIGxvZy5pbmZvKCIgKioqKioqKioqKioqKioqKiBWYWxpZGF0aW5nIHZhbGlkYXRlU2luZ2xlU291cmNlICoqKioqKioqKioqKioqKioqIik7DQorICAgICAgICAgICAgUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA9IG5ldyBSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuc2V0TmFtZSgidGVzdC1pbnB1dC1rZXkiKTsNCisgICAgICAgICAgICBEaWN0aW9uYXJ5RGVmaW5pdGlvbiBkaWN0aW9uYXJ5RGVmaW5pdGlvbiA9IG5ldyBEaWN0aW9uYXJ5RGVmaW5pdGlvbigpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldERhdGFUeXBlKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKTsNCisNCisgICAgICAgICAgICBNYXA8U3RyaW5nLCBKc29uTm9kZT4gc291cmNlID0gbmV3IEhhc2hNYXA8PigpOw0KKyAgICAgICAgICAgIFNvdXJjZUlucHV0IHNvdXJjZUlucHV0ID0gbmV3IFNvdXJjZUlucHV0KCk7DQorICAgICAgICAgICAgc291cmNlLnB1dChDb25maWdNb2RlbENvbnN0YW50LlNPVVJDRV9JTlBVVCwgSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbU9iamVjdChzb3VyY2VJbnB1dCkpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldFNvdXJjZShzb3VyY2UpOw0KKw0KKyAgICAgICAgICAgIFJlc291cmNlRGljdGlvbmFyeVV0aWxzLnBvcHVsYXRlU291cmNlTWFwcGluZyhyZXNvdXJjZUFzc2lnbm1lbnQsIGRpY3Rpb25hcnlEZWZpbml0aW9uKTsNCisgICAgICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiUmVzb3VyY2UgYXNzaWdubWVudCBpbnB1dCBzb3VyY2UgaXMgbWlzc2luZyAiLA0KKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LmdldERpY3Rpb25hcnlTb3VyY2UoKSk7DQorICAgICAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIlJlc291cmNlIGFzc2lnbm1lbnQgaW5wdXQgc291cmNlIHByb3BlcnR5IGlzIG1pc3NpbmcgIiwNCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5nZXRQcm9wZXJ0eSgpKTsNCisgICAgICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiUmVzb3VyY2UgYXNzaWdubWVudCBpbnB1dCBzb3VyY2UgcHJvcGVydHkgdHlwZSBpcyBtaXNzaW5nICIsDQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0UHJvcGVydHkoKS5nZXRUeXBlKCkpOw0KKw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHZhbGlkYXRlU2luZ2xlRGJTb3VyY2UoKSB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIGxvZy5pbmZvKCIgKioqKioqKioqKioqKioqKiBWYWxpZGF0aW5nIHZhbGlkYXRlU2luZ2xlU291cmNlICoqKioqKioqKioqKioqKioqIik7DQorICAgICAgICAgICAgUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA9IG5ldyBSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuc2V0TmFtZSgidGVzdC1kYi1rZXkiKTsNCisgICAgICAgICAgICBEaWN0aW9uYXJ5RGVmaW5pdGlvbiBkaWN0aW9uYXJ5RGVmaW5pdGlvbiA9IG5ldyBEaWN0aW9uYXJ5RGVmaW5pdGlvbigpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldERhdGFUeXBlKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKTsNCisNCisgICAgICAgICAgICBNYXA8U3RyaW5nLCBKc29uTm9kZT4gc291cmNlID0gbmV3IEhhc2hNYXA8PigpOw0KKyAgICAgICAgICAgIFNvdXJjZURiIHNvdXJjZURiID0gbmV3IFNvdXJjZURiKCk7DQorICAgICAgICAgICAgc291cmNlLnB1dChDb25maWdNb2RlbENvbnN0YW50LlNPVVJDRV9EQiwgSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbU9iamVjdChzb3VyY2VEYikpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldFNvdXJjZShzb3VyY2UpOw0KKw0KKyAgICAgICAgICAgIE1hcDxTdHJpbmcsIERpY3Rpb25hcnlEZXBlbmRlbmN5PiBkZXBlbmRlbmN5ID0gbmV3IEhhc2hNYXA8PigpOw0KKyAgICAgICAgICAgIERpY3Rpb25hcnlEZXBlbmRlbmN5IGRlcGVuZGVuY3lEYiA9IG5ldyBEaWN0aW9uYXJ5RGVwZW5kZW5jeSgpOw0KKyAgICAgICAgICAgIGRlcGVuZGVuY3lEYi5zZXROYW1lcyhBcnJheXMuYXNMaXN0KCJ2bmYtaWQiLCAidm5mLW5hbWUiKSk7DQorICAgICAgICAgICAgZGVwZW5kZW5jeS5wdXQoQ29uZmlnTW9kZWxDb25zdGFudC5TT1VSQ0VfREIsIGRlcGVuZGVuY3lEYik7DQorICAgICAgICAgICAgZGljdGlvbmFyeURlZmluaXRpb24uc2V0RGVwZW5kZW5jeShkZXBlbmRlbmN5KTsNCisNCisgICAgICAgICAgICBEZWNyeXB0aW9uUnVsZSBkZWNyeXB0aW9uUnVsZSA9IG5ldyBEZWNyeXB0aW9uUnVsZSgpOw0KKyAgICAgICAgICAgIGRlY3J5cHRpb25SdWxlLnNldERlY3J5cHRUeXBlKCJzYW1wbGUgVHlwZSIpOw0KKyAgICAgICAgICAgIGRlY3J5cHRpb25SdWxlLnNldFBhdGgoIiQuIik7DQorICAgICAgICAgICAgZGVjcnlwdGlvblJ1bGUuc2V0UnVsZSgiU2FtcGxlIFJ1bGUiKTsNCisgICAgICAgICAgICBkZWNyeXB0aW9uUnVsZS5zZXRTb3VyY2VzKEFycmF5cy5hc0xpc3QoInZuZi1pZCIpKTsNCisgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXREZWNyeXB0aW9uUnVsZXMoQXJyYXlzLmFzTGlzdChkZWNyeXB0aW9uUnVsZSkpOw0KKw0KKyAgICAgICAgICAgIFJlc291cmNlRGljdGlvbmFyeVV0aWxzLnBvcHVsYXRlU291cmNlTWFwcGluZyhyZXNvdXJjZUFzc2lnbm1lbnQsIGRpY3Rpb25hcnlEZWZpbml0aW9uKTsNCisgICAgICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiUmVzb3VyY2UgYXNzaWdubWVudCBkYiBzb3VyY2Ugc291cmNlIGlzIG1pc3NpbmcgIiwNCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5nZXREaWN0aW9uYXJ5U291cmNlKCkpOw0KKyAgICAgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJSZXNvdXJjZSBhc3NpZ25tZW50IGRiIHNvdXJjZSBzb3VyY2UgcHJvcGVydHkgaXMgbWlzc2luZyAiLA0KKyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LmdldFByb3BlcnR5KCkpOw0KKyAgICAgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJSZXNvdXJjZSBhc3NpZ25tZW50IGRiIHNvdXJjZSBzb3VyY2UgcHJvcGVydHkgdHlwZSBpcyBtaXNzaW5nICIsDQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0UHJvcGVydHkoKS5nZXRUeXBlKCkpOw0KKw0KKyAgICAgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJSZXNvdXJjZSBhc3NpZ25tZW50IGRiIGRlcGVuZGVjeSBpcyBtaXNzaW5nICIsIHJlc291cmNlQXNzaWdubWVudC5nZXREZXBlbmRlbmNpZXMoKSk7DQorICAgICAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscygiUmVzb3VyY2UgYXNzaWdubWVudCBkYiBkZXBlbmRlY3kgY291bnQgbWlzbWF0Y2ggIiwgMiwNCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5nZXREZXBlbmRlbmNpZXMoKS5zaXplKCkpOw0KKw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3RTb3VyY2VEZWZhdWx0KCkgew0KKyAgICAgICAgUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA9IG5ldyBSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5zZXROYW1lKCJ0ZXN0LWlucHV0LWtleSIpOw0KKw0KKyAgICAgICAgRGljdGlvbmFyeURlZmluaXRpb24gZGljdGlvbmFyeURlZmluaXRpb24gPSBuZXcgRGljdGlvbmFyeURlZmluaXRpb24oKTsNCisgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldERhdGFUeXBlKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKTsNCisNCisgICAgICAgIE1hcDxTdHJpbmcsIEpzb25Ob2RlPiBzb3VyY2UgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgICAgICBTb3VyY2VEZWZhdWx0IHNvdXJjZURlZmF1bHQgPSBuZXcgU291cmNlRGVmYXVsdCgpOw0KKyAgICAgICAgc291cmNlLnB1dChDb25maWdNb2RlbENvbnN0YW50LlNPVVJDRV9ERUZBVUxULCBKYWNrc29uVXRpbHMuanNvbk5vZGVGcm9tT2JqZWN0KHNvdXJjZURlZmF1bHQpKTsNCisgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldFNvdXJjZShzb3VyY2UpOw0KKw0KKyAgICAgICAgTWFwPFN0cmluZywgRGljdGlvbmFyeURlcGVuZGVuY3k+IGRlcGVuZGVuY3kgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgICAgICBEaWN0aW9uYXJ5RGVwZW5kZW5jeSBkZXBlbmRlbmN5RGVmYXVsdCA9IG5ldyBEaWN0aW9uYXJ5RGVwZW5kZW5jeSgpOw0KKyAgICAgICAgZGVwZW5kZW5jeURlZmF1bHQuc2V0TmFtZXMoQXJyYXlzLmFzTGlzdChuZXcgU3RyaW5nW117InZuZi1pZCIsICJ2bmYtbmFtZSJ9KSk7DQorICAgICAgICBkZXBlbmRlbmN5LnB1dChDb25maWdNb2RlbENvbnN0YW50LlNPVVJDRV9ERUZBVUxULCBkZXBlbmRlbmN5RGVmYXVsdCk7DQorICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXREZXBlbmRlbmN5KGRlcGVuZGVuY3kpOw0KKw0KKyAgICAgICAgUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHMucG9wdWxhdGVTb3VyY2VNYXBwaW5nKHJlc291cmNlQXNzaWdubWVudCwgZGljdGlvbmFyeURlZmluaXRpb24pOw0KKw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIlJlc291cmNlIGFzc2lnbm1lbnQgZGVmYXVsdCBzb3VyY2UgaXMgbWlzc2luZyAiLA0KKyAgICAgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeVNvdXJjZSgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJSZXNvdXJjZSBhc3NpZ25tZW50IGRlZmF1bHQgc291cmNlIHByb3BlcnR5IGlzIG1pc3NpbmcgIiwNCisgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LmdldFByb3BlcnR5KCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIlJlc291cmNlIGFzc2lnbm1lbnQgZGVmYXVsdCBzb3VyY2UgcHJvcGVydHkgdHlwZSBpcyBtaXNzaW5nICIsDQorICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5nZXRQcm9wZXJ0eSgpLmdldFR5cGUoKSk7DQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdFNvdXJjZU1kc2FsKCkgew0KKyAgICAgICAgUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA9IG5ldyBSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5zZXROYW1lKCJ0ZXN0LWlucHV0LWtleSIpOw0KKyAgICAgICAgRGljdGlvbmFyeURlZmluaXRpb24gZGljdGlvbmFyeURlZmluaXRpb24gPSBuZXcgRGljdGlvbmFyeURlZmluaXRpb24oKTsNCisgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldERhdGFUeXBlKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfU1RSSU5HKTsNCisNCisgICAgICAgIE1hcDxTdHJpbmcsIEpzb25Ob2RlPiBzb3VyY2UgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgICAgICBTb3VyY2VNZHNhbCBzb3VyY2VNZHNhbCA9IG5ldyBTb3VyY2VNZHNhbCgpOw0KKyAgICAgICAgc291cmNlLnB1dChDb25maWdNb2RlbENvbnN0YW50LlNPVVJDRV9NRFNBTCwgSmFja3NvblV0aWxzLmpzb25Ob2RlRnJvbU9iamVjdChzb3VyY2VNZHNhbCkpOw0KKyAgICAgICAgZGljdGlvbmFyeURlZmluaXRpb24uc2V0U291cmNlKHNvdXJjZSk7DQorDQorICAgICAgICBNYXA8U3RyaW5nLCBEaWN0aW9uYXJ5RGVwZW5kZW5jeT4gZGVwZW5kZW5jeSA9IG5ldyBIYXNoTWFwPD4oKTsNCisgICAgICAgIERpY3Rpb25hcnlEZXBlbmRlbmN5IGRlcGVuZGVuY3lNZHNhbCA9IG5ldyBEaWN0aW9uYXJ5RGVwZW5kZW5jeSgpOw0KKyAgICAgICAgZGVwZW5kZW5jeU1kc2FsLnNldE5hbWVzKEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdeyJ2bmYtaWQiLCAidm5mLW5hbWUifSkpOw0KKyAgICAgICAgZGVwZW5kZW5jeS5wdXQoQ29uZmlnTW9kZWxDb25zdGFudC5TT1VSQ0VfTURTQUwsIGRlcGVuZGVuY3lNZHNhbCk7DQorICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXREZXBlbmRlbmN5KGRlcGVuZGVuY3kpOw0KKw0KKyAgICAgICAgUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHMucG9wdWxhdGVTb3VyY2VNYXBwaW5nKHJlc291cmNlQXNzaWdubWVudCwgZGljdGlvbmFyeURlZmluaXRpb24pOw0KKw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIlJlc291cmNlIGFzc2lnbm1lbnQgbWRzYWwgc291cmNlIGlzIG1pc3NpbmcgIiwgcmVzb3VyY2VBc3NpZ25tZW50LmdldERpY3Rpb25hcnlTb3VyY2UoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiUmVzb3VyY2UgYXNzaWdubWVudCBtZHNhbCBzb3VyY2UgcHJvcGVydHkgaXMgbWlzc2luZyAiLCByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0UHJvcGVydHkoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiUmVzb3VyY2UgYXNzaWdubWVudCBtZHNhbCBzb3VyY2UgcHJvcGVydHkgdHlwZSBpcyBtaXNzaW5nICIsDQorICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5nZXRQcm9wZXJ0eSgpLmdldFR5cGUoKSk7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9EZWZpbml0aW9ucy9hY3RpdmF0aW9uLWJsdWVwcmludC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNWUxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL0RlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24KQEAgLTAsMCArMSw0MTEgQEAKK3sNCisgICJtZXRhZGF0YSI6IHsNCisgICAgInRlbXBsYXRlX2F1dGhvciI6ICJCcmluZGEgU2FudGggTXV0aHVyYW1hbGluZ2FtIiwNCisgICAgImF1dGhvci1lbWFpbCI6ICJicmluZGFzYW50aEBnbWFpbC5jb20iLA0KKyAgICAidXNlci1ncm91cHMiIDogIkFETUlOLCBPUEVSQVRJT04iLA0KKyAgICAidGVtcGxhdGVfbmFtZSI6ICJiYXNlY29uZmlndXJhdGlvbiIsDQorICAgICJ0ZW1wbGF0ZV92ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgInRlbXBsYXRlX3RhZ3MiOiAiYnJpbmRhLCB0b3NjYSINCisgIH0sDQorICAidG9wb2xvZ3lfdGVtcGxhdGUiOiB7DQorICAgICJpbnB1dHMiOiB7DQorICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJzY29wZS10eXBlIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJob3N0bmFtZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAibm9kZV90ZW1wbGF0ZXMiOiB7DQorICAgICAgImFjdGl2YXRlLXByb2Nlc3MiOiB7DQorICAgICAgICAidHlwZSI6ICJicG1uLWFjdGl2YXRlIiwNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAicHJvY2Vzcy1uYW1lIjogeyAiZ2V0X2lucHV0IiA6ICJhY3Rpb24tbmFtZSIgfSwNCisgICAgICAgICAgInZlcnNpb24iIDogeyAiZ2V0X3Byb3BlcnR5IiA6IFsiU0VMRiIsICJwcm9jZXNzLW5hbWUiXSB9LA0KKyAgICAgICAgICAiY29udGVudCI6IHsgImdldF9hcnRpZmFjdCIgOiBbIlNFTEYiLCAiYWN0aXZhdGUtcHJvY2VzcyJdIH0NCisgICAgICAgIH0sDQorICAgICAgICAiYXJ0aWZhY3RzIjogew0KKyAgICAgICAgICAiYWN0aXZhdGUtcHJvY2VzcyI6IHsNCisgICAgICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1icG1uLWNhbXVuZGEiLA0KKyAgICAgICAgICAgICJmaWxlIjogIlBsYW5zL0FjdGl2YXRlUHJvY2Vzcy5icG1uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAgICJ0eXBlIjogImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICJwcm9wZXJ0aWVzIjp7DQorICAgICAgICAgICJyZXF1ZXN0LWlkIjogWyIxMjM0IiwgIjEyMzQiXQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAiRGVmYXVsdENvbXBvbmVudE5vZGUiOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7ICJnZXRfaW5wdXQiIDogImFjdGlvbi1uYW1lIiB9LA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogInZuZi10eXBlIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWVzdC1pZCI6IHsgImdldF9pbnB1dCIgOiAicmVxdWVzdC1pZCIgfSwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiB7ICJnZXRfaW5wdXQiIDogImhvc3RuYW1lIiB9LA0KKyAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZS1jb250ZW50IjogeyAiZ2V0X2FydGlmYWN0IiA6IFsiU0VMRiIsICJiYXNlY29uZmlnLXRlbXBsYXRlIl0gfSwNCisgICAgICAgICAgICAgICAgICAibWFwcGluZy1jb250ZW50IjogeyAiZ2V0X2FydGlmYWN0IiA6IFsiU0VMRiIsICJiYXNlY29uZmlnLW1hcHBpbmciXSB9DQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyI6IHsNCisgICAgICAgICAgImJhc2Vjb25maWctdGVtcGxhdGUiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkiLA0KKyAgICAgICAgICAgICJmaWxlIjogIlRlbXBsYXRlcy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bCINCisgICAgICAgICAgfSwNCisgICAgICAgICAgImJhc2Vjb25maWctbWFwcGluZyI6IHsNCisgICAgICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1tYXBwaW5nLXJlc291cmNlIiwNCisgICAgICAgICAgICAiZmlsZSI6ICJNYXBwaW5ncy9iYXNlY29uZmlnLW1hcHBpbmcuanNvbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcHkiOiB7DQorICAgICAgICAidHlwZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAicHJvcGVydGllcyI6ew0KKyAgICAgICAgICAicmVxdWVzdC1pZCI6IFsiMTIzNCIsICIxMjM0Il0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIjogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAgICJpbXBsZW1lbnRhdGlvbiIgOnsNCisgICAgICAgICAgICAgICAgICAicHJpbWFyeSIgOiAiY29tcG9uZW50LXNjcmlwdCINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7ICJnZXRfaW5wdXQiIDogImFjdGlvbi1uYW1lIiB9DQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImFydGlmYWN0cyI6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1zY3JpcHQiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbiIsDQorICAgICAgICAgICAgImZpbGUiOiAiU2NyaXB0cy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bCINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIndvcmtmbG93cyI6ew0KKyAgICAgICJhY3RpdmF0ZS1wcm9jZXNzIjp7DQorICAgICAgICAic3RlcHMiIDogew0KKyAgICAgICAgICAgICJjYWxsLXJlc291cmNlLWFzc2lnbm1lbnQiIDogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJJbnZva2UgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQiLA0KKyAgICAgICAgICAgICAgInRhcmdldCIgOiAicmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAgICAgICAiYWN0aXZpdGllcyIgOiBbDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAiY2FsbF9vcGVyYXRpb24iOiAiUmVzb3VyY2VBc3NpZ25tZW50Tm9kZS5wcm9jZXNzIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgIm9uX3N1Y2Nlc3MiIDogWw0KKyAgICAgICAgICAgICAgICAiZG93bmxvYWQtYmFzZWNvbmZpZyINCisgICAgICAgICAgICAgIF0NCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAiZG93bmxvYWQtYmFzZWNvbmZpZyIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJDYWxsIERvd25sb2FkIEJhc2UgQ29uZmlnIENvbXBvbmVudCIsDQorICAgICAgICAgICAgInRhcmdldCIgOiAiYWN0aXZhdGUtbmV0Y29uZiIsDQorICAgICAgICAgICAgImFjdGl2aXRpZXMiIDogWw0KKyAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAiY2FsbF9vcGVyYXRpb24iOiAiTmV0Y29uZlRyYW5zYWN0aW9uTm9kZS5wcm9jZXNzIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgIm9uX3N1Y2Nlc3MiIDogWw0KKyAgICAgICAgICAgICAgImRvd25sb2FkLWxpY2VuY2UiDQorICAgICAgICAgICAgXQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAiZG93bmxvYWQtbGljZW5jZSIgOiB7DQorICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJDYWxsIERvd25sb2FkIExpY2VuY2UgQ29tcG9uZW50IiwNCisgICAgICAgICAgICAidGFyZ2V0IiA6ICJhY3RpdmF0ZS1uZXRjb25mIiwNCisgICAgICAgICAgICAiYWN0aXZpdGllcyIgOiBbDQorICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICJjYWxsX29wZXJhdGlvbiI6ICJOZXRjb25mVHJhbnNhY3Rpb25Ob2RlLnByb2Nlc3MiDQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgXQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9LA0KKyAgImFydGlmYWN0X3R5cGVzIjogew0KKyAgICAiYXJ0aWZhY3QtdGVtcGxhdGUtdmVsb2NpdHkiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIiBWZWxvY2l0eSBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgInZ0bCINCisgICAgICBdLA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2EuYXJ0aWZhY3RzLkltcGxlbWVudGF0aW9uIg0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZSI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiIFZlbG9jaXR5IFRlbXBsYXRlIFJlc291cmNlIE1hcHBpbmcgRmlsZSB1c2VkIGFsb25nIHdpdGggQ29uZmlndXJhdGlvbiB0ZW1wbGF0ZSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJmaWxlX2V4dCI6IFsNCisgICAgICAgICJqc29uIg0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1zY3JpcHQta290bGluIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgS290bGluIFNjcmlwdCBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgImt0Ig0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1zY3JpcHQtcHl0aG9uIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICIgS290bGluIFNjcmlwdCBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgInB5Ig0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1icG1uLWNhbXVuZGEiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIiBDYW11bmRhIEJQTSBGaWxlIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImZpbGVfZXh0IjogWw0KKyAgICAgICAgImJwbW4iDQorICAgICAgXSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbiINCisgICAgfSwNCisgICAgImFydGlmYWN0LWNvbXBvbmVudC1qYXIiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBvbmVudCBKYXIiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAiZmlsZV9leHQiOiBbDQorICAgICAgICAiamFyIg0KKyAgICAgIF0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorICAgIH0NCisgIH0sDQorICAibm9kZV90eXBlcyI6IHsNCisgICAgImJwbW4tYWN0aXZhdGUiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgQlBNTiBBY3RpdmF0ZSBub2RlIHR5cGUiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9jZXNzLW5hbWUiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInZlcnNpb24iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZGVmYXVsdCIgOiAiTEFURVNUIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorICAgIH0sDQorICAgICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQgQVBJIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAidHlwZSI6IHsNCisgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIkRlZmF1bHRPcGVyYXRpb24iOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICJ2YWxpZGF0ZSI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAidmFsaWRhdGUgZm9yIGFjdGlvbiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiYXJ0aWZhY3RzIiA6ew0KKyAgICAgICAgImNvbXBvbmVudC1qYXIiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21wb25lbnQgSmFyIiwNCisgICAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtY29tcG9uZW50LWphciIsDQorICAgICAgICAgICJmaWxlIjogIkNvbXBvbmVudC9iYXNlY29tcG9uZW50LmphciINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuUm9vdCINCisgICAgfSwNCisgICAgInRvc2NhLm5vZGVzLmNvbXBvbmVudC5QeXRob24iOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBQeXRob24gQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInR5cGUiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0T3BlcmF0aW9uIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAidmFsaWRhdGUiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInZhbGlkYXRlIGZvciBhY3Rpb24iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImFydGlmYWN0cyIgOnsNCisgICAgICAgICJjb21wb25lbnQtamFyIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcG9uZW50IEphciIsDQorICAgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbXBvbmVudC1qYXIiLA0KKyAgICAgICAgICAiZmlsZSI6ICJDb21wb25lbnQvYmFzZWNvbXBvbmVudC5qYXIiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLlJvb3QiDQorICAgIH0sDQorICAgICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJyZXF1ZXN0LWlkIjogew0KKyAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJEZWZhdWx0Q29tcG9uZW50Tm9kZSI6IHsNCisgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlY2lwZSBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yIHJlc291cmNlLWlkIHNob3VsZCBiZSBwcmVzZW50IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInRlbXBsYXRlLWNvbnRlbnQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklkIHVzZWQgdG8gcHVsbCB0aGUgZGF0YSBjb250ZW50IGZyb20gdGhlIGRhdGEgYmFzZS4gRWl0aGVyIHRlbXBsYXRlLWRhdGEgb3IgcmVzb3VyY2UtaWQgc2hvdWxkIGJlIHByZXNlbnQiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAibWFwcGluZy1jb250ZW50Ijogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZCB1c2VkIHRvIHB1bGwgdGhlIGRhdGEgY29udGVudCBmcm9tIHRoZSBkYXRhIGJhc2UuIEVpdGhlciB0ZW1wbGF0ZS1kYXRhIG9yIHJlc291cmNlLWlkIHNob3VsZCBiZSBwcmVzZW50IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KKyAgICB9LA0KKyAgICAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQtcHl0aG9uIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIkRlZmF1bHRDb21wb25lbnROb2RlIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVjaXBlIE5hbWUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuY29tcG9uZW50LlB5dGhvbiINCisgICAgfQ0KKyAgfSwNCisgICJkYXRhX3R5cGVzIjogew0KKyAgICAic2FtcGxlLXByb3BlcnR5IiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBzYW1wbGUgZGF0YSB0eXBlIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicHJvY2Vzcy1uYW1lIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgImRlZmF1bHQiIDogIkxBVEVTVCINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iIDogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KKyAgICB9DQorICB9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vTWFwcGluZ3MvYmFzZWNvbmZpZy1tYXBwaW5nLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYmZiNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL01hcHBpbmdzL2Jhc2Vjb25maWctbWFwcGluZy5qc29uCkBAIC0wLDAgKzEsMyBAQAorew0KKyAgImFzc2lnbm1lbnRzIjogIlNhbXBsZSBBc3NpZ25tZW50cyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9QbGFucy9BY3RpdmF0ZVByb2Nlc3MuYnBtbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU5NGMwZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4KQEAgLTAsMCArMSw2NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8YnBtbjpkZWZpbml0aW9ucyB4bWxuczpicG1uPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9CUE1OLzIwMTAwNTI0L01PREVMIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOmJwbW5kaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvQlBNTi8yMDEwMDUyNC9ESSINCisgICAgICAgICAgICAgICAgICB4bWxuczpkaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvREQvMjAxMDA1MjQvREkiIHhtbG5zOmRjPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9ERC8yMDEwMDUyNC9EQyINCisgICAgICAgICAgICAgICAgICB4bWxuczpjYW11bmRhPSJodHRwOi8vY2FtdW5kYS5vcmcvc2NoZW1hLzEuMC9icG1uIg0KKyAgICAgICAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIGlkPSJEZWZpbml0aW9uc18xIg0KKyAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL2JwbW4uaW8vc2NoZW1hL2JwbW4iIGV4cG9ydGVyPSJDYW11bmRhIE1vZGVsZXIiIGV4cG9ydGVyVmVyc2lvbj0iMS4xMS4yIj4NCisgICAgPGJwbW46cHJvY2VzcyBpZD0iQWN0aXZhdGVQcm9jZXNzIiBpc0V4ZWN1dGFibGU9InRydWUiPg0KKyAgICAgICAgPGJwbW46c3RhcnRFdmVudCBpZD0iU3RhcnRFdmVudF8xIj4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzdGFydEV2ZW50Pg0KKyAgICAgICAgPGJwbW46ZW5kRXZlbnQgaWQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgIDxicG1uOmluY29taW5nPlNlcXVlbmNlRmxvd18xYXkwazZwPC9icG1uOmluY29taW5nPg0KKyAgICAgICAgPC9icG1uOmVuZEV2ZW50Pg0KKyAgICAgICAgPGJwbW46c2VxdWVuY2VGbG93IGlkPSJTZXF1ZW5jZUZsb3dfMGwwZHE1OCIgc291cmNlUmVmPSJTdGFydEV2ZW50XzEiIHRhcmdldFJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siLz4NCisgICAgICAgIDxicG1uOnNlcXVlbmNlRmxvdyBpZD0iU2VxdWVuY2VGbG93XzFheTBrNnAiIHNvdXJjZVJlZj0iYWN0aXZhdGVfZGV2aWNlX3Rhc2siIHRhcmdldFJlZj0iRW5kRXZlbnRfMXByMGtpbCIvPg0KKyAgICAgICAgPGJwbW46c2VydmljZVRhc2sgaWQ9ImFjdGl2YXRlX2RldmljZV90YXNrIiBuYW1lPSJBY3RpdmF0ZSBEZXZpY2UiDQorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW11bmRhOmRlbGVnYXRlRXhwcmVzc2lvbj0iJHtjb21wb25lbnREZWxlZ2F0ZVNlcnZpY2V9Ij4NCisgICAgICAgICAgICA8YnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICAgICAgPGNhbXVuZGE6aW5wdXRPdXRwdXQ+DQorICAgICAgICAgICAgICAgICAgICA8Y2FtdW5kYTppbnB1dFBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciI+PCFbQ0RBVEFbcmVzb3VyY2UtYXNzaWdubWVudA0KK11dPjwvY2FtdW5kYTppbnB1dFBhcmFtZXRlcj4NCisgICAgICAgICAgICAgICAgPC9jYW11bmRhOmlucHV0T3V0cHV0Pg0KKyAgICAgICAgICAgIDwvYnBtbjpleHRlbnNpb25FbGVtZW50cz4NCisgICAgICAgICAgICA8YnBtbjppbmNvbWluZz5TZXF1ZW5jZUZsb3dfMGwwZHE1ODwvYnBtbjppbmNvbWluZz4NCisgICAgICAgICAgICA8YnBtbjpvdXRnb2luZz5TZXF1ZW5jZUZsb3dfMWF5MGs2cDwvYnBtbjpvdXRnb2luZz4NCisgICAgICAgIDwvYnBtbjpzZXJ2aWNlVGFzaz4NCisgICAgPC9icG1uOnByb2Nlc3M+DQorICAgIDxicG1uZGk6QlBNTkRpYWdyYW0gaWQ9IkJQTU5EaWFncmFtXzEiPg0KKyAgICAgICAgPGJwbW5kaTpCUE1OUGxhbmUgaWQ9IkJQTU5QbGFuZV8xIiBicG1uRWxlbWVudD0iQWN0aXZhdGVQcm9jZXNzIj4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iX0JQTU5TaGFwZV9TdGFydEV2ZW50XzIiIGJwbW5FbGVtZW50PSJTdGFydEV2ZW50XzEiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE3NSIgeT0iMTQzIiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjE0OCIgeT0iMTc5IiB3aWR0aD0iOTAiIGhlaWdodD0iMjAiLz4NCisgICAgICAgICAgICAgICAgPC9icG1uZGk6QlBNTkxhYmVsPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iRW5kRXZlbnRfMXByMGtpbF9kaSIgYnBtbkVsZW1lbnQ9IkVuZEV2ZW50XzFwcjBraWwiPg0KKyAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU3NSIgeT0iMTE0IiB3aWR0aD0iMzYiIGhlaWdodD0iMzYiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjU5MyIgeT0iMTU0IiB3aWR0aD0iMCIgaGVpZ2h0PSIxMiIvPg0KKyAgICAgICAgICAgICAgICA8L2JwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgPC9icG1uZGk6QlBNTlNoYXBlPg0KKyAgICAgICAgICAgIDxicG1uZGk6QlBNTkVkZ2UgaWQ9IlNlcXVlbmNlRmxvd18wbDBkcTU4X2RpIiBicG1uRWxlbWVudD0iU2VxdWVuY2VGbG93XzBsMGRxNTgiPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyMTEiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE2MSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIyNzMiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8ZGk6d2F5cG9pbnQgeHNpOnR5cGU9ImRjOlBvaW50IiB4PSIzMzQiIHk9IjE0OSIvPg0KKyAgICAgICAgICAgICAgICA8YnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICAgICAgICAgIDxkYzpCb3VuZHMgeD0iMjg4IiB5PSIxNDkiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5FZGdlIGlkPSJTZXF1ZW5jZUZsb3dfMWF5MGs2cF9kaSIgYnBtbkVsZW1lbnQ9IlNlcXVlbmNlRmxvd18xYXkwazZwIj4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNDM0IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxNDkiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTA1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGRpOndheXBvaW50IHhzaTp0eXBlPSJkYzpQb2ludCIgeD0iNTc1IiB5PSIxMzIiLz4NCisgICAgICAgICAgICAgICAgPGJwbW5kaTpCUE1OTGFiZWw+DQorICAgICAgICAgICAgICAgICAgICA8ZGM6Qm91bmRzIHg9IjUyMCIgeT0iMTM0LjUiIHdpZHRoPSIwIiBoZWlnaHQ9IjEyIi8+DQorICAgICAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5MYWJlbD4NCisgICAgICAgICAgICA8L2JwbW5kaTpCUE1ORWRnZT4NCisgICAgICAgICAgICA8YnBtbmRpOkJQTU5TaGFwZSBpZD0iU2VydmljZVRhc2tfMGU4ZWs0Zl9kaSIgYnBtbkVsZW1lbnQ9ImFjdGl2YXRlX2RldmljZV90YXNrIj4NCisgICAgICAgICAgICAgICAgPGRjOkJvdW5kcyB4PSIzMzQiIHk9IjEwOSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSI4MCIvPg0KKyAgICAgICAgICAgIDwvYnBtbmRpOkJQTU5TaGFwZT4NCisgICAgICAgIDwvYnBtbmRpOkJQTU5QbGFuZT4NCisgICAgPC9icG1uZGk6QlBNTkRpYWdyYW0+DQorPC9icG1uOmRlZmluaXRpb25zPg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9TY3JpcHRzL1NhbXBsZVB5dGhvbkNvbXBvbmVudE5vZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIxOThjNwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9TYW1wbGVQeXRob25Db21wb25lbnROb2RlLnB5CkBAIC0wLDAgKzEsOCBAQAorZnJvbSBjb20uYnJ2aXRoLm9yY2hlc3RyYXRvci5jb3JlLmludGVyZmFjZXMgaW1wb3J0IENvbXBvbmVudE5vZGUNCisNCitjbGFzcyBTYW1wbGVQeXRob25Db21wb25lbnROb2RlKENvbXBvbmVudE5vZGUpOg0KKyAgICBkZWYgcHJlcGFyZShzZWxmLCBjb250ZXh0LCBjb21wb25lbnRDb250ZXh0KToNCisgICAgICAgIHJldHVybiBOb25lDQorDQorICAgIGRlZiBwcmVwYXJlKHNlbGYsIGNvbnRleHQsIGNvbXBvbmVudENvbnRleHQpOg0KKyAgICAgICAgcmV0dXJuIE5vbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1NjcmlwdHMvX19pbml0X18ucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1NjcmlwdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvYmFzZWNvbmZpZ3VyYXRpb24vU2NyaXB0cy9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UT1NDQS1NZXRhZGF0YS9UT1NDQS5tZXRhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzJjNjcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEKQEAgLTAsMCArMSw4IEBACitUT1NDQS1NZXRhLUZpbGUtVmVyc2lvbjogMS4wLjANCitDU0FSLVZlcnNpb246IDEuMA0KK0NyZWF0ZWQtQnk6IEJyaW5kYSBTYW50aCBNDQorRW50cnktRGVmaW5pdGlvbnM6IERlZmluaXRpb25zL2FjdGl2YXRpb24tYmx1ZXByaW50Lmpzb24NCitUZW1wbGF0ZS1UYWdzOiB2cnItdGVzdCwgQnJpbmRhIFNhbnRoDQorDQorTmFtZTogUGxhbnMvQWN0aXZhdGVQcm9jZXNzLmJwbW4NCitDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5icG1uDQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL1RlbXBsYXRlcy9iYXNlY29uZmlnLXRlbXBsYXRlLnZ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjZjNTkxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9UZW1wbGF0ZXMvYmFzZWNvbmZpZy10ZW1wbGF0ZS52dGwKQEAgLTAsMCArMSBAQAorVGhpcyBpcyBTYW1wbGUgVmVsb2NpdHkgVGVtcGxhdGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL2Jhc2Vjb25maWd1cmF0aW9uL19faW5pdF9fLnB5IGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy9iYXNlY29uZmlndXJhdGlvbi9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy92cnItdGVzdC9EZWZpbml0aW9ucy92cnItdGVzdC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy92cnItdGVzdC9EZWZpbml0aW9ucy92cnItdGVzdC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNjMyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L0RlZmluaXRpb25zL3Zyci10ZXN0Lmpzb24KQEAgLTAsMCArMSw3NDIgQEAKK3sNCisgICJtZXRhZGF0YSI6IHsNCisgICAgInRlbXBsYXRlX2F1dGhvciI6ICJCcmluZGEgU2FudGggKCBiczI3OTZAb25hcC5jb20gKSIsDQorICAgICJ0ZW1wbGF0ZV9uYW1lIjogInZyci10ZXN0IiwNCisgICAgInRlbXBsYXRlX3ZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAicmVsZWFzZSI6ICIyMDE4MDIiLA0KKyAgICAic2VydmljZS10eXBlIjogIkFWUE4iLA0KKyAgICAidm5mLXR5cGUiOiAiVlJSIg0KKyAgfSwNCisgICJ0b3BvbG9neV90ZW1wbGF0ZSI6IHsNCisgICAgImlucHV0cyI6IHsNCisgICAgICAicmVxdWVzdC1pZCI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAic2VydmljZS1pbnN0YW5jZS1pZCI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgInNjb3BlLXR5cGUiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImhvc3RuYW1lIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXJlcXVlc3QiOiB7DQorICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBEeW5hbWljIERhdGEgdHlwZSBmb3IgdGhlIHJlY2VpcGUgcmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24uIiwNCisgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgInR5cGUiOiAiZHQtcmVzb3VyY2UtYXNzaWdubWVudC1yZXF1ZXN0Ig0KKyAgICAgIH0NCisgICAgfSwNCisgICAgIm5vZGVfdGVtcGxhdGVzIjogew0KKyAgICAgICJiYXNlLWNvbmZpZy10ZW1wbGF0ZSI6IHsNCisgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgImFjdGlvbi1uYW1lcyI6IFsNCisgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iDQorICAgICAgICAgIF0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJjb250ZW50IjogImRiOi8vYmFzZS1jb25maWctdGVtcGxhdGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAibWFwcGluZyI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJtYXBwaW5nIjogWw0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAidm5mLWlkIiwNCisgICAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlDQorICAgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIjogInZuZi1pZCIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogImlucHV0Ig0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ3JvdXAtbmFtZSIsDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZQ0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJncm91cC1uYW1lIiwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiAiaW5wdXQiDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIF0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJhY3RpdmF0ZS1hY3Rpb24iOiB7DQorICAgICAgICAidHlwZSI6ICJkZy1hY3RpdmF0ZS1uZXRjb25mIiwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAiQ09ORklHIjogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICAgIkFjdGl2YXRlTmV0Y29uZiI6IHt9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImRnLW5vZGUiOiB7fQ0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICAgIm5vZGUiOiAidHJhbnNhY3Rpb24tbmV0Y29uZi1iYXNlY29uZmlnIiwNCisgICAgICAgICAgICAicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iOiB7DQorICAgICAgICAidHlwZSI6ICJkZy1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAiQ09ORklHIjogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICAgIlJlc291cmNlQXNzaWdubWVudCI6IHt9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImRnLW5vZGUiOiB7fQ0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICAgIm5vZGUiOiAicmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAgICAgInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImxpY2VuY2UtdGVtcGxhdGUiOiB7DQorICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1jb25maWctdGVtcGxhdGUiLA0KKyAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICJhY3Rpb24tbmFtZXMiOiBbDQorICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtYWN0aW9uIg0KKyAgICAgICAgICBdDQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAiY29udGVudCI6ICJkYjovL2xpY2VuY2UtdGVtcGxhdGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAibWFwcGluZyI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJtYXBwaW5nIjogWw0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibGljZW5jZS1rZXkiLA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUNCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAibGljZW5jZS1rZXkiLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSI6ICJpbnB1dCINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgXQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJ1bm5pbmdjb25maWctdGVtcGxhdGUiOiB7DQorICAgICAgICAidHlwZSI6ICJhcnRpZmFjdC1jb25maWctdGVtcGxhdGUiLA0KKyAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICJhY3Rpb24tbmFtZXMiOiBbDQorICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtYWN0aW9uIg0KKyAgICAgICAgICBdDQorICAgICAgICB9LA0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAiY29udGVudCI6ICJkYjovL3J1bm5pbmdjb25maWctdGVtcGxhdGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAibWFwcGluZyI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJtYXBwaW5nIjogW10NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50Ijogew0KKyAgICAgICAgInR5cGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLWFzc2lnbm1lbnQtc2VydmljZS1Db25maWdBc3NpZ25tZW50Tm9kZSI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwidGVtcGxhdGVfbmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uXCIgfSIsDQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogInsgXCJnZXRfaW5wdXRcIiA6IFwiYWN0aW9uLW5hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInRlbXBsYXRlLW5hbWVzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgImJhc2UtY29uZmlnLXRlbXBsYXRlIiwNCisgICAgICAgICAgICAgICAgICAgICJsaWNlbmNlLXRlbXBsYXRlIg0KKyAgICAgICAgICAgICAgICAgIF0sDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJyZXF1ZXN0LWlkXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogInsgXCJnZXRfaW5wdXRcIiA6IFwidm5mLWlkXCIgfSINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogIiIsDQorICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICIiDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiY29tcG9uZW50LW5vZGUiOiB7fQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInZyci1uZXRjb25mLWRldmljZSI6IHsNCisgICAgICAgICJ0eXBlIjogInZuZi1uZXRjb25mLWRldmljZSIsDQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAibmV0Y29uZiI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJwcm9maWxlLW5hbWUiOiAic2FtcGxlIiwNCisgICAgICAgICAgICAgICJvYW0taXB2NC1hZGRyZXNzIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcImhvc3RuYW1lXCIgfSIsDQorICAgICAgICAgICAgICAicG9ydC1udW1iZXIiOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwiaG9zdC1wb3J0XCIgfSIsDQorICAgICAgICAgICAgICAiY29ubmVjdGlvbi10aW1lLW91dCI6IDMwDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAidHJhbnNhY3Rpb24tbmV0Y29uZi1iYXNlY29uZmlnIjogew0KKyAgICAgICAgInR5cGUiOiAiY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IiLA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZkV4ZWN1dG9yTm9kZSI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgICAiaW1wbGVtZW50YXRpb24iIDogew0KKyAgICAgICAgICAgICAgICAgICJwcmltYXJ5IiA6ICJmaWxlOi8vbmV0Y29uZi1hZGFwdG9yL0RlZmF1bHRHZXRDb25maWcucHkiDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogInsgXCJnZXRfaW5wdXRcIiA6IFwiYWN0aW9uLW5hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwicmVxdWVzdC1pZFwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcInZuZi1pZFwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJleGVjdXRpb24tc2NyaXB0IjogImV4ZWN1dGlvbi1zY3JpcHQiDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcIm5ldGNvbmYtZXhlY3V0b3ItYmFzZWNvbmZpZy5yZXNwb25zZS1kYXRhXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJuZXRjb25mLWV4ZWN1dG9yLWJhc2Vjb25maWcuc3RhdHVzXCIgfSINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtbm9kZSI6IHsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJuZXRjb25mLWNvbm5lY3Rpb24iOiB7DQorICAgICAgICAgICAgImNhcGFiaWxpdHkiOiAibmV0Y29uZiIsDQorICAgICAgICAgICAgIm5vZGUiOiAidnJyLW5ldGNvbmYtZGV2aWNlIiwNCisgICAgICAgICAgICAicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuQ29ubmVjdHNUbyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJub2RlX3R5cGVzIjogew0KKyAgICAiZGctcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IERpcmVjdGVkIEdyYXBoIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAibW9kZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgICAgICJkZWZhdWx0IjogInN5bmMiDQorICAgICAgICB9LA0KKyAgICAgICAgInZlcnNpb24iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZGVmYXVsdCI6ICJMQVRFU1QiDQorICAgICAgICB9LA0KKyAgICAgICAgImlzLXN0YXJ0LWZsb3ciOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgImRlZmF1bHQiOiAiZmFsc2UiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgImRnLW5vZGUiOiB7DQorICAgICAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKyAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAidHlwZSI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogImpzb24iDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlcXVpcmVtZW50cyI6IHsNCisgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisgICAgICAgICAgImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKyAgICAgICAgICAibm9kZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICJDT05GSUciOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICJSZXNvdXJjZUFzc2lnbm1lbnQiOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAicGFyYW1zIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuREciDQorICAgIH0sDQorICAgICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIm9yZy1vcGVuZWNvbXAtc2RuYy1jb25maWctYXNzaWdubWVudC1zZXJ2aWNlLUNvbmZpZ0Fzc2lnbm1lbnROb2RlIjogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWN0aW9uIE5hbWUgb2YgdGhlIHByb2Nlc3MiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS1uYW1lIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIE5hbWUuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBWZXJzaW9uLiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IHR5cGUuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInRlbXBsYXRlLW5hbWVzIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9mIHRoZSBhcnRpZmFjdCBOb2RlIFRlbXBsYXRlcywgdG8gZ2V0IHRoZSB0ZW1wbGF0ZSBDb250ZW50LiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJsaXN0IiwNCisgICAgICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIjogew0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQsIFVuaXF1ZSBJZCBmb3IgdGhlIHJlcXVlc3QuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBJZC4iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInN0YXR1cyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorICAgIH0sDQorICAgICJhcnRpZmFjdC1jb25maWctdGVtcGxhdGUiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgQ29uZmlndXJhdGlvbiBWZWxvY2l0eSBUZW1wbGF0ZSIsDQorICAgICAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgImFjdGlvbi1uYW1lcyI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiOiAibGlzdCIsDQorICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAibWFwcGluZyI6IHsNCisgICAgICAgICAgInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5NYXBwaW5nIiwNCisgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgIm1hcHBpbmciOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgInR5cGUiOiAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCINCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQXJ0aWZhY3QiDQorICAgIH0sDQorICAgICJ2bmYtbmV0Y29uZi1kZXZpY2UiOiB7DQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgVk5GIERldmljZSB3aXRoIE5ldGNvbmYgYW5kIFNTSCBDYXBhYmlsaXR5IiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICJuZXRjb25mIjogew0KKyAgICAgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5Lk5ldGNvbmYiLA0KKyAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAicHJvZmlsZS1uYW1lIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJvYW0taXB2NC1hZGRyZXNzIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJwb3J0LW51bWJlciI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogODMwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29ubmVjdGlvbi10aW1lLW91dCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCI6IDMwDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInNzaCI6IHsNCisgICAgICAgICAgInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Tc2giLA0KKyAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAicHJvZmlsZS1uYW1lIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJvYW0taXB2NC1hZGRyZXNzIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJwb3J0LW51bWJlciI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogMjINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJtZXNzYWdlLXRpbWUtb3V0Ijogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogMzAwMA0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImNvbm5lY3Rpb24tdGltZS1vdXQiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAzMDAwDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInNmdHAiOiB7DQorICAgICAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuU2Z0cCIsDQorICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICJwcm9maWxlLW5hbWUiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgIm9hbS1pcHY0LWFkZHJlc3MiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInBvcnQtbnVtYmVyIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAyMg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgIm1lc3NhZ2UtdGltZS1vdXQiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAzMDAwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29ubmVjdGlvbi10aW1lLW91dCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCI6IDMwMDANCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuVm5mIg0KKyAgICB9LA0KKyAgICAiZGctYWN0aXZhdGUtbmV0Y29uZiI6IHsNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBEb3dubG9hZCBOZXRjb25mIERpcmVjdGVkIEdyYXBoIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAibW9kZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgICAgICJkZWZhdWx0IjogInN5bmMiDQorICAgICAgICB9LA0KKyAgICAgICAgInZlcnNpb24iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZGVmYXVsdCI6ICJMQVRFU1QiDQorICAgICAgICB9LA0KKyAgICAgICAgImlzLXN0YXJ0LWZsb3ciOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgImRlZmF1bHQiOiAiZmFsc2UiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgImRnLW5vZGUiOiB7DQorICAgICAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKyAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAidHlwZSI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogImpzb24iDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVxdWlyZW1lbnRzIjogew0KKyAgICAgICAgImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKyAgICAgICAgICAiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICJub2RlIjogImNvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yIiwNCisgICAgICAgICAgInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgIkNPTkZJRyI6IHsNCisgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgIkFjdGl2YXRlTmV0Y29uZiI6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJwYXJhbXMiOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlzdCIsDQorICAgICAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5Ig0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyINCisgICAgfSwNCisgICAgImNvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yIjogew0KKyAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIE5ldGNvbmYgVHJhbnNhY3Rpb24gQ29uZmlndXJhdGlvbiBDb21wb25lbnQgQVBJIiwNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICJjb21wb25lbnQtbm9kZSI6IHsNCisgICAgICAgICAgInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVxdWlyZW1lbnRzIjogew0KKyAgICAgICAgIm5ldGNvbmYtY29ubmVjdGlvbiI6IHsNCisgICAgICAgICAgImNhcGFiaWxpdHkiOiAibmV0Y29uZiIsDQorICAgICAgICAgICJub2RlIjogInZuZi1uZXRjb25mLWRldmljZSIsDQorICAgICAgICAgICJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5Db25uZWN0c1RvIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAib3JnLW9wZW5lY29tcC1zZG5jLW5ldGNvbmYtYWRhcHRvci1zZXJ2aWNlLU5ldGNvbmZFeGVjdXRvck5vZGUiOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBOYW1lIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBWZXJzaW9uIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgVHlwZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgSWQgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImV4ZWN1dGlvbi1zY3JpcHQiOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlB5dGhvbiBTY3JpcHQgdG8gRXhlY3V0ZSBmb3IgdGhpcyBDb21wb25lbnQgYWN0aW9uLCBJdCBzaG91bGQgcmVmZXIgYW55IG9uZSBvZiBQcnl0aG9uIEFydGlmYWN0IERlZmluaXRpb24gZm9yIHRoaXMgTm9kZSBUZW1wbGF0ZS4iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIjogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFeGVjdXRpb24gUmVzcG9uc2UgRGF0YSBpbiBKU09OIGZvcm1hdC4iLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInN0YXR1cyI6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCisgICAgfQ0KKyAgfSwNCisgICJkYXRhX3R5cGVzIjogew0KKyAgICAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBEYXRhIFR5cGUiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisgICAgICAgIH0sDQorICAgICAgICAiaW5wdXQtcGFyYW0iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iDQorICAgICAgICB9LA0KKyAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImRlcGVuZGVuY2llcyI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiOiAibGlzdCIsDQorICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInN0YXR1cyI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAibWVzc2FnZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidXBkYXRlZC1kYXRlIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ1cGRhdGVkLWJ5Ijogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisgICAgfSwNCisgICAgImRhdGF0eXBlLXByb3BlcnR5Ijogew0KKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBFbnRyeSBwb2ludCBJbnB1dCBEYXRhIFR5cGUsIHdoaWNoIGlzIGR5bmFtaWMgZGF0YXR5cGUsIFRoZSBwYXJhbWV0ZXIgbmFtZXMgd2lsbCBiZSBwb3B1bGF0ZWQgZHVyaW5nIHRoZSBEZXNpZ24gdGltZSBmb3IgZWFjaCBpbnB1dHMiLA0KKyAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgInR5cGUiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZGVzY3JpcHRpb24iOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVkIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiINCisgICAgICAgIH0sDQorICAgICAgICAiZGVmYXVsdCI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZW50cnlfc2NoZW1hIjogew0KKyAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisgICAgfSwNCisgICAgImR0LXJlc291cmNlLWFzc2lnbm1lbnQtcmVxdWVzdCI6IHsNCisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgRHluYW1pYyBEYXRhIHR5cGUgZGVmaW5pdGlvbiBnZW5lcmF0ZWQgZnJvbSByZXNvdXJjZSBtYXBwaW5nIGZvciB0aGUgY29uZmlnIHRlbXBsYXRlIG5hbWUgYmFzZS1jb25maWctdGVtcGxhdGUuIiwNCisgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICJ2bmYtaWQiOiB7DQorICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAiZ3JvdXAtbmFtZSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJsaWNlbmNlLWtleSI6IHsNCisgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuRHluYW1pYyINCisgICAgfQ0KKyAgfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L1RPU0NBLU1ldGFkYXRhL1RPU0NBLm1ldGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRlMWRmMwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvdnJyLXRlc3QvVE9TQ0EtTWV0YWRhdGEvVE9TQ0EubWV0YQpAQCAtMCwwICsxLDUgQEAKK1RPU0NBLU1ldGEtRmlsZS1WZXJzaW9uOiAxLjAuMA0KK0NTQVItVmVyc2lvbjogMS4wDQorQ3JlYXRlZC1CeTogQnJpbmRhIFNhbnRoIE0NCitFbnRyeS1EZWZpbml0aW9uczogRGVmaW5pdGlvbnMvdnJyLXRlc3QuanNvbg0KK1RlbXBsYXRlLVRhZ3M6IHZyci10ZXN0LCBCcmluZGEgU2FudGgNCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L1RlbXBsYXRlcy9iYXNlLWNvbmZpZy10ZW1wbGF0ZS52dGwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L1RlbXBsYXRlcy9iYXNlLWNvbmZpZy10ZW1wbGF0ZS52dGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkYmExMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvdnJyLXRlc3QvVGVtcGxhdGVzL2Jhc2UtY29uZmlnLXRlbXBsYXRlLnZ0bApAQCAtMCwwICsxLDQwIEBACisgPGNvbmZpZz4NCisJICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisJICAgICAgICAJPGdyb3Vwcz4NCisJCQkJPG5hbWU+JHtncm91cC1uYW1lfTwvbmFtZT4NCisJCQkJPHJvdXRpbmctaW5zdGFuY2VzPg0KKwkJCQkJPGluc3RhbmNlPg0KKwkJCQkJCTxuYW1lPiZsdDsqJmd0OzwvbmFtZT4NCisJCQkJCQk8cHJvdG9jb2xzPg0KKwkJCQkJCQk8cGltPg0KKwkJCQkJCQkJPGRlbnNlLWdyb3Vwcz4NCisJCQkJCQkJCQk8ZHluYW1pYy1yZWplY3QgLz4NCisJCQkJCQkJCQk8cGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQkJCTxuYW1lPjIyNC4wLjEuNDAvMzI8L25hbWU+DQorCQkJCQkJCQkJPC9waW0tZGVuc2UtZ3JvdXAtdHlwZT4NCisJCQkJCQkJCQk8cGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQkJCTxuYW1lPjIyNC4wLjEuMzkvMzI8L25hbWU+DQorCQkJCQkJCQkJPC9waW0tZGVuc2UtZ3JvdXAtdHlwZT4NCisJCQkJCQkJCQk8cGltLWRlbnNlLWdyb3VwLXR5cGU+DQorCQkJCQkJCQkJCTxuYW1lPjIyNC4wLjAuMC80PC9uYW1lPg0KKwkJCQkJCQkJCQk8cmVqZWN0IC8+DQorCQkJCQkJCQkJPC9waW0tZGVuc2UtZ3JvdXAtdHlwZT4NCisJCQkJCQkJCTwvZGVuc2UtZ3JvdXBzPg0KKwkJCQkJCQkJPHJwPg0KKwkJCQkJCQkJCTxhdXRvLXJwPg0KKwkJCQkJCQkJCQk8ZGlzY292ZXJ5IC8+DQorCQkJCQkJCQkJPC9hdXRvLXJwPg0KKwkJCQkJCQkJPC9ycD4NCisJCQkJCQkJCTxpbnRlcmZhY2U+DQorCQkJCQkJCQkJPG5hbWU+Jmx0OyomZ3Q7PC9uYW1lPg0KKwkJCQkJCQkJCTxkaXNhYmxlIC8+DQorCQkJCQkJCQkJPHByaW9yaXR5PjEwMDA8L3ByaW9yaXR5Pg0KKwkJCQkJCQkJPC9pbnRlcmZhY2U+DQorCQkJCQkJCQk8cmVzZXQtdHJhY2tpbmctYml0IC8+DQorCQkJCQkJCTwvcGltPg0KKwkJCQkJCTwvcHJvdG9jb2xzPg0KKwkJCQkJPC9pbnN0YW5jZT4NCisJCQkJPC9yb3V0aW5nLWluc3RhbmNlcz4NCisJCQk8L2dyb3Vwcz4NCisJCTwvY29uZmlndXJhdGlvbj4NCisJPC9jb25maWc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy92cnItdGVzdC9UZW1wbGF0ZXMvbGljZW5jZS10ZW1wbGF0ZS52dGwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L1RlbXBsYXRlcy9saWNlbmNlLXRlbXBsYXRlLnZ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjY5NzRmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvYmx1ZXByaW50cy92cnItdGVzdC9UZW1wbGF0ZXMvbGljZW5jZS10ZW1wbGF0ZS52dGwKQEAgLTAsMCArMSw0IEBACisgPGNvbmZpZz4NCisJICAgICAgICA8Y29uZmlndXJhdGlvbj4NCisJICAgICAgICA8L2NvbmZpZ3VyYXRpb24+DQorCSAgICAgICAgIDwvY29uZmlnPg0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL2JsdWVwcmludHMvdnJyLXRlc3QvX19pbml0X18ucHkgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9ibHVlcHJpbnRzL3Zyci10ZXN0L19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3QtbWFwcGluZy1yZXNvdXJjZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LW1hcHBpbmctcmVzb3VyY2UuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTMyNjFiCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LW1hcHBpbmctcmVzb3VyY2UuanNvbgpAQCAtMCwwICsxLDggQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICIgVmVsb2NpdHkgVGVtcGxhdGUgUmVzb3VyY2UgTWFwcGluZyBGaWxlIHVzZWQgYWxvbmcgd2l0aCBDb25maWd1cmF0aW9uIHRlbXBsYXRlIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJmaWxlX2V4dCI6IFsNCisgICAgImpzb24iDQorICBdLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC1zY3JpcHQtcHl0aG9uLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OGQyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL2FydGlmYWN0X3R5cGUvYXJ0aWZhY3Qtc2NyaXB0LXB5dGhvbi5qc29uCkBAIC0wLDAgKzEsOCBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIiBLb3RsaW4gU2NyaXB0IFRlbXBsYXRlIHVzZWQgZm9yIENvbmZpZ3VyYXRpb24iLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImZpbGVfZXh0IjogWw0KKyAgICAicHkiDQorICBdLA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5hcnRpZmFjdHMuSW1wbGVtZW50YXRpb24iDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlL2FydGlmYWN0LXRlbXBsYXRlLXZlbG9jaXR5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM5NWQzOQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvYXJ0aWZhY3RfdHlwZS9hcnRpZmFjdC10ZW1wbGF0ZS12ZWxvY2l0eS5qc29uCkBAIC0wLDAgKzEsOCBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIiBWZWxvY2l0eSBUZW1wbGF0ZSB1c2VkIGZvciBDb25maWd1cmF0aW9uIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJmaWxlX2V4dCI6IFsNCisgICAgInZ0bCINCisgIF0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLmFydGlmYWN0cy5JbXBsZW1lbnRhdGlvbiINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcHJvcGVydHkuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXByb3BlcnR5Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4NGIxMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXByb3BlcnR5Lmpzb24KQEAgLTAsMCArMSwyNyBAQAorew0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEVudHJ5IHBvaW50IElucHV0IERhdGEgVHlwZSwgd2hpY2ggaXMgZHluYW1pYyBkYXRhdHlwZSwgVGhlIHBhcmFtZXRlciBuYW1lcyB3aWxsIGJlIHBvcHVsYXRlZCBkdXJpbmcgdGhlIERlc2lnbiB0aW1lIGZvciBlYWNoIGlucHV0cyIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJInR5cGUiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJImRlc2NyaXB0aW9uIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkicmVxdWlyZWQiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCX0sDQorCQkiZGVmYXVsdCI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9LA0KKwkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzk4MTZlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCkBAIC0wLDAgKzEsNDYgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IERhdGEgVHlwZSIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJInByb3BlcnR5Ijogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQl9LA0KKwkJImlucHV0LXBhcmFtIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCX0sDQorCQkiZGljdGlvbmFyeS1uYW1lIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkiZGljdGlvbmFyeS1zb3VyY2UiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJkZXBlbmRlbmNpZXMiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfSwNCisJCSJzdGF0dXMiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJtZXNzYWdlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkidXBkYXRlZC1kYXRlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyINCisJCX0sDQorCQkidXBkYXRlZC1ieSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LWxpY2Vuc2Uta2V5Lmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC1saWNlbnNlLWtleS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzMxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL2RhdGFfdHlwZS9kdC1saWNlbnNlLWtleS5qc29uCkBAIC0wLDAgKzEsMTEgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBkdC1wbGljZW5zZS1rZXkgRGF0YSBUeXBlIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkibGljZW5zZS1rZXkiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJzdHJpbmciDQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LXY0LWFnZ3JlZ2F0ZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9kYXRhX3R5cGUvZHQtdjQtYWdncmVnYXRlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyYTdmOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2R0LXY0LWFnZ3JlZ2F0ZS5qc29uCkBAIC0wLDAgKzEsMTUgQEAKK3sNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBkdC12NC1hZ2dyZWdhdGUgRGF0YSBUeXBlIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkiaXB2NC1hZGRyZXNzIjogew0KKwkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJfSwNCisJCSJpcHY0LXBsZW4iOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiaW50ZWdlciINCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9hcnRpZmFjdC1jb25maWctdGVtcGxhdGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTliYmZjCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlLmpzb24KQEAgLTAsMCArMSwzNyBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBDb25maWd1cmF0aW9uIFZlbG9jaXR5IFRlbXBsYXRlIiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJhY3Rpb24tbmFtZXMiOiB7DQorCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJImNvbnRlbnQiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfSwNCisJCSJtYXBwaW5nIjogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuTWFwcGluZyIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJtYXBwaW5nIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCINCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5BcnRpZmFjdCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LWNvbmZpZy1nZW5lcmF0b3IuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1jb25maWctZ2VuZXJhdG9yLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY0ZjllOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1jb25maWctZ2VuZXJhdG9yLmpzb24KQEAgLTAsMCArMSw3MiBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBHZW5lcmF0ZSBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiY29tcG9uZW50LW5vZGUiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQl9DQorCX0sDQorCSJpbnRlcmZhY2VzIjogew0KKwkJIm9yZy1vcGVuZWNvbXAtc2RuYy1jb25maWctZ2VuZXJhdG9yLXNlcnZpY2UtQ29uZmlnR2VuZXJhdG9yTm9kZSI6IHsNCisJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJInByb2Nlc3MiOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJ0ZW1wbGF0ZS1kYXRhIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBKU09OIHN0cmluZyB3aGljaCBpcyB1c2VkIHRvIG1hc2ggd2l0aCB0ZW1wbGF0ZS4gRWl0aGVyIHRlbXBsYXRlLWRhdGEgb3IgKCByZXNvdXJjZS1pZCBhbmQgcmVzb3VyY2UtdHlwZSApIHNob3VsZCBiZSBwcmVzZW50IiwNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJ0ZW1wbGF0ZS1jb250ZW50Ijogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBEeW5hbWljIFRlbXBsYXRlIHVzZWQgdG8gZ2VuZXJhdGUgQ29uZmlndXJhdGlvbi4iLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInJlc291cmNlLXR5cGUiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJDb25kaXRpb25hbCA6IHJlc291cmNlLXR5cGUgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciAoIHJlc291cmNlLWlkIGFuZCByZXNvdXJjZS10eXBlICkgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInJlcXVlc3QtaWQiOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJyZXNvdXJjZS1pZCI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkNvbmRpdGlvbmFsIDogSWQgdXNlZCB0byBwdWxsIHRoZSBkYXRhIGNvbnRlbnQgZnJvbSB0aGUgZGF0YSBiYXNlLiBFaXRoZXIgdGVtcGxhdGUtZGF0YSBvciAoIHJlc291cmNlLWlkIGFuZCByZXNvdXJjZS10eXBlICkgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJImFjdGlvbi1uYW1lIjogew0KKwkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29uZGl0aW9uYWwgOiBBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkidGVtcGxhdGUtbmFtZSI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIkNvbmRpdGlvbmFsIDogTmFtZSBvZiB0aGUgQXJ0aWZhY3QgTm9kZSBUZW1wbGF0ZSwgdG8gZ2V0IHRoZSB0ZW1wbGF0ZSBDb250ZW50LiBJZiB0ZW1wbGF0ZS1jb250ZW50IGlzIHByZXNlbnQsIHRoZW4gY29udGVudCB3b250IGJlIHJldGVyaXZlZCBmcm9tIHRoZSBBcnRpZmFjdCBOb2RlIFRlbXBsYXRlLiIsDQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9DQorCQkJCQl9LA0KKwkJCQkJIm91dHB1dHMiOiB7DQorCQkJCQkJImdlbmVyYXRlZC1jb25maWciOiB7DQorCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJHZW5lcmF0ZWQgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFRlbXBsYXRlIGFkbiBSZXNvdXJjZSBEYXRhIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJIm1hc2staW5mbyI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIklmIHRlbXBsYXRlIGNvbnRhaW5zIG1hc2sgZW5jcmlwdGlvbiBrZXlzLCB0aGVuIHRoaXMgbWFzay1pbmZvIGZpZWxkIHdpbGwgYmUgZ2VuZXJhdGVkLCBUaGlzIEpTT04gQ29udGVudCBhbGxpZ25zIHRvIHRoZSBiZWFuIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLmN1c3RvbS5NYXNrSW5mbyAiLA0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJImRlc2NyaXB0aW9uIjogIlN0YXR1cyBvZiB0aGUgQ29tcG9uZW50IEV4ZWN1dGlvbiAoIHN1Y2Nlc3Mgb3IgZmFpbHVyZSApIiwNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1uZXRjb25mLWVkaXQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1uZXRjb25mLWVkaXQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDRlMWRkCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZWRpdC5qc29uCkBAIC0wLDAgKzEsOTUgQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIE5ldGNvbmYgRWRpdCBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICB9DQorICB9LA0KKyAgImludGVyZmFjZXMiOiB7DQorICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtU2ltcGxlTmV0Y29uZkVkaXRDb25maWdOb2RlIjogew0KKyAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgInRlbXBsYXRlLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGVtcGxhdGUgbmFtZSB1c2VkIGJ5IHRoZSBDb21wb25lbnRzIGR1cmluZyBwcm9jZXNzaW5nIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInJwYy1tZXNzYWdlIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklmIHRoZSBtZXNzYWdlIGlzIE5lY29uZiBSUEMgbWVzc2FnZSxJdCBzaG91bGQgYmUgdHJ1ZSBvciBmYWxzZS4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogZmFsc2UNCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJ3YWl0Ijogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlbGF5IHRpbWUgaW4gc2VjIGJlZm9yZSBwZXJmb3JtaW5nIGVkaXQtY29uZmlnIGFjdGlvbi4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJpbnRlZ2VyIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogMA0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInVubG9jayI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZiB1bkxvY2sgY29tbWFuZCBoYXMgdG8gc2VuZCBiZWZvcmUgRWRpdCBDb25maWd1cmF0aW9uLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQ0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImNvbmZpZy10YXJnZXQiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJjb21taXQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXNzdWUgY29tbWl0IGNvbW1hbmQgdG8gdGhlIGRldmljZSBhZnRlciBwZXJmb3JtaW5nIGVkaXQtY29uZmlnIGFjdGlvbi4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogZmFsc2UNCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJlZGl0LWRlZmF1bHQtb3BlcmF0aW9uIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdGF0aWMgbWVzc2dhZSBjb250ZW50LCBJZiB0aGlzIGlzIG5vdCBzZXQsIG5lZWQgdG8gaGF2ZSBSZXF1aXJlbWVudCByZWxhdGlvbnNoaXAgdG8gQXJ0aWZhY3QgY29udGVudHMuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImxvY2siOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXNzdWUgbG9jayBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYmVmb3JlIHBlcmZvcm1pbmcgZWRpdC1jb25maWcgYWN0aW9uLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQ0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInBvc3QtcmVzdGFydC13YWl0Ijogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIklmIFJlc3RhcnQgY29tbWFuZCBzaG91bGQgYmUgaXNzdWVkIGJlZm9yZSB0aGUgRWRpdCBPcGVyYXRpb24sIFByb3ZpZGUgdGhlIHRpbWUgdG8gd2FpdCBhZnRlciByZXN0YXJ0LiAwIG1lYW5ubyByZXN0YXJ0IHJlcXVpcmVkIG9yIHdhaXQgdGltZSBpbiBzZWMgZXggOiAzMDAwIGZvciA1ICIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicHJlLXJlc3RhcnQtd2FpdCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJZiBSZXN0YXJ0IGNvbW1hbmQgc2hvdWxkIGJlIGlzc3VlZCBhZnRlciB0aGUgRWRpdCBPcGVyYXRpb24sIFByb3ZpZGUgdGhlIHRpbWUgdG8gd2FpdCBhZnRlciByZXN0YXJ0LiAwIG1lYW5ubyByZXN0YXJ0IHJlcXVpcmVkIG9yIHdhaXQgdGltZSBpbiBzZWMgZXggOiAzMDAwIGZvciA1ICIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAibWVzc2FnZS10aW1lLW91dCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCI6IDMwDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAicnBjLXJlc3BvbnNlLW1lc3NhZ2UiOiB7DQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAic3RhdHVzIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YXR1cyBvZiB0aGUgQ29tcG9uZW50IEV4ZWN1dGlvbiAoIHN1Y2Nlc3Mgb3IgZmFpbHVyZSApIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfQ0KKyAgICB9DQorICB9LA0KKyAgImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2NvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtbmV0Y29uZi1leGVjdXRvci5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZDY2N2EKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtbmV0Y29uZi1leGVjdXRvci5qc29uCkBAIC0wLDAgKzEsNzkgQEAKK3sNCisgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIE5ldGNvbmYgVHJhbnNhY3Rpb24gQ29uZmlndXJhdGlvbiBDb21wb25lbnQgQVBJIiwNCisgICJ2ZXJzaW9uIjogIjEuMC4wIiwNCisgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICJjb21wb25lbnQtbm9kZSI6IHsNCisgICAgICAidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgfQ0KKyAgfSwNCisgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICJuZXRjb25mLWNvbm5lY3Rpb24iOiB7DQorICAgICAgImNhcGFiaWxpdHkiOiAibmV0Y29uZiIsDQorICAgICAgIm5vZGUiOiAidm5mLW5ldGNvbmYtZGV2aWNlIiwNCisgICAgICAicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuQ29ubmVjdHNUbyINCisgICAgfQ0KKyAgfSwNCisgICJpbnRlcmZhY2VzIjogew0KKyAgICAib3JnLW9wZW5lY29tcC1zZG5jLW5ldGNvbmYtYWRhcHRvci1zZXJ2aWNlLU5ldGNvbmZFeGVjdXRvck5vZGUiOiB7DQorICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAicmVxdWVzdC1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkIHVzZWQgdG8gc3RvcmUgdGhlIGdlbmVyYXRlZCBjb25maWd1cmF0aW9uLCBpbiB0aGUgZGF0YWJhc2UgYWxvbmcgd2l0aCB0aGUgdGVtcGxhdGUtbmFtZSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIE5hbWUiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBWZXJzaW9uIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQWN0aW9uIE5hbWUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBUeXBlIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgSWQgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzZXJ2YXRpb24taWQiOiB7DQorCQkJCSJkZXNjcmlwdGlvbiI6ICJSZXNlcnZhdGlvbiBJZCB1c2VkIHRvIHNlbmQgdG8gTlBNIiwNCisJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKyAgICAgICAgICAgICJleGVjdXRpb24tc2NyaXB0Ijogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlB5dGhvbiBTY3JpcHQgdG8gRXhlY3V0ZSBmb3IgdGhpcyBDb21wb25lbnQgYWN0aW9uLCBJdCBzaG91bGQgcmVmZXIgYW55IG9uZSBvZiBQcnl0aG9uIEFydGlmYWN0IERlZmluaXRpb24gZm9yIHRoaXMgTm9kZSBUZW1wbGF0ZS4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIjogew0KKyAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkV4ZWN1dGlvbiBSZXNwb25zZSBEYXRhIGluIEpTT04gZm9ybWF0LiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZ2V0Lmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtbmV0Y29uZi1nZXQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjU5YmY0Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LW5ldGNvbmYtZ2V0Lmpzb24KQEAgLTAsMCArMSw2MSBAQAorew0KKyAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgTmV0Y29uZiBHZXQgUnVubmluZyBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICB9DQorICB9LA0KKyAgImludGVyZmFjZXMiOiB7DQorICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtU2ltcGxlTmV0Y29uZkdldENvbmZpZ05vZGUiOiB7DQorICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAidGVtcGxhdGUtbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUZW1wbGF0ZSBuYW1lIHVzZWQgYnkgdGhlIENvbXBvbmVudHMgZHVyaW5nIHByb2Nlc3NpbmciLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicnBjLW1lc3NhZ2UiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSXQgc2hvdWxkIGJlIHRydWUsIElmIHRoZSBtZXNzYWdlIGlzIE5lY29uZiBSUEMgbWVzc2FnZSwgSXQgc2hvdWxkIGJlIGZhbHNlIElmIGl0IGlzIHBsYWluIENvbmZpZyBtZXNzYWdlLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQ0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgIndhaXQiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAibG9jayI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCI6IGZhbHNlDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdGF0aWMgbWVzc2dhZSBjb250ZW50LCBJZiB0aGlzIGlzIG5vdCBzZXQsIG5lZWQgdG8gaGF2ZSBSZXF1aXJlbWVudCByZWxhdGlvbnNoaXAgdG8gQXJ0aWZhY3QgY29udGVudHMuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgIm1lc3NhZ2UtdGltZS1vdXQiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiOiAzMA0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgImNvbmZpZy1tZXNzYWdlIjogew0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInN0YXR1cyI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTdGF0dXMgb2YgdGhlIENvbXBvbmVudCBFeGVjdXRpb24gKCBzdWNjZXNzIG9yIGZhaWx1cmUgKSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGMwMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpAQCAtMCwwICsxLDY4IEBACit7DQorICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IENvbXBvbmVudCBBUEkiLA0KKyAgInZlcnNpb24iOiAiMS4wLjAiLA0KKyAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgImNvbXBvbmVudC1ub2RlIjogew0KKyAgICAgICJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICB9DQorICB9LA0KKyAgImludGVyZmFjZXMiOiB7DQorICAgICJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLWFzc2lnbm1lbnQtc2VydmljZS1Db25maWdBc3NpZ25tZW50Tm9kZSI6IHsNCisgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VydmljZSBUZW1wbGF0ZSBOYW1lLiIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXJ2aWNlIFRlbXBsYXRlIFZlcnNpb24uIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IHR5cGUuIiwNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAidGVtcGxhdGUtbmFtZXMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0aGUgYXJ0aWZhY3QgTm9kZSBUZW1wbGF0ZXMsIHRvIGdldCB0aGUgdGVtcGxhdGUgQ29udGVudC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCwgVW5pcXVlIElkIGZvciB0aGUgcmVxdWVzdC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBJZC4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSBvZiB0aGUgcHJvY2VzcyIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm91dHB1dHMiOiB7DQorICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtcGFyYW1zIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKyAgfSwNCisgICJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9jb21wb25lbnQtdHJhbnNhY3Rpb24tbmV0Y29uZi5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXRyYW5zYWN0aW9uLW5ldGNvbmYuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzM3NDU4Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvY29tcG9uZW50LXRyYW5zYWN0aW9uLW5ldGNvbmYuanNvbgpAQCAtMCwwICsxLDkzIEBACit7DQorICAiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBOZXRjb25mIFRyYW5zYWN0aW9uIENvbmZpZ3VyYXRpb24gQ29tcG9uZW50IEFQSSIsDQorICAidmVyc2lvbiI6ICIxLjAuMCIsDQorICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAiY29tcG9uZW50LW5vZGUiOiB7DQorICAgICAgInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorICAgIH0NCisgIH0sDQorICAicmVxdWlyZW1lbnRzIjogew0KKyAgICAibmV0Y29uZi1jb25uZWN0aW9uIjogew0KKyAgICAgICJjYXBhYmlsaXR5IjogIm5ldGNvbmYiLA0KKyAgICAgICJub2RlIjogInZuZi1uZXRjb25mLWRldmljZSIsDQorICAgICAgInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkNvbm5lY3RzVG8iDQorICAgIH0NCisgIH0sDQorICAiaW50ZXJmYWNlcyI6IHsNCisgICAgIm9yZy1vcGVuZWNvbXAtc2RuYy1uZXRjb25mLWFkYXB0b3Itc2VydmljZS1OZXRjb25mVHJhbnNhY3Rpb25Ob2RlIjogew0KKyAgICAgICJvcGVyYXRpb25zIjogew0KKyAgICAgICAgInByb2Nlc3MiOiB7DQorICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgInJvbGxiYWNrIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImFzc2lnbm1lbnQtYWN0aW9uLW5hbWUiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXNzaWdubWVudCBBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInRyYW5zYWN0aW9uLWNvbXBvbmVudHMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcG9uZW50cyB1c2VkIHRvIHVzZWQgZm9yIHRoZSBhdG9taWMgdHJhbnNhY3Rpb24sIERlZmF1bHQgSGFuZGxlcnMgYXJlIG9yZy5vcGVuZWNvbXAuc2RuYy5uZXRjb25mLmFkYXB0b3Iuc2VydmljZS5TaW1wbGVOZXRjb25mRWRpdENvbmZpZ05vZGUgYW5kIG9yZy5vcGVuZWNvbXAuc2RuYy5uZXRjb25mLmFkYXB0b3Iuc2VydmljZS5TaW1wbGVOZXRjb25mR2V0Q29uZmlnTm9kZSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAibGlzdCIsDQorICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIjogew0KKyAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBUeXBlIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiaW5pdGlhbGlzZS1zZnRwIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJpbml0aWFsaXNlLXNzaCI6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiOiAiYm9vbGVhbiINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJsb2NrIjogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogZmFsc2UNCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJ1bmxvY2siOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSWYgdW5Mb2NrIGNvbW1hbmQgaGFzIHRvIHNlbmQgYmVmb3JlIEVkaXQgQ29uZmlndXJhdGlvbi4iLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IjogZmFsc2UNCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJyZXNvdXJjZS1pZCI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBJZCB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6IHsNCisgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorICAgICAgICAgICAgICAicmVxdWlyZWQiOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICJycGMtcmVzcG9uc2UtbWVzc2FnZSI6IHsNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzdGF0dXMiOiB7DQorICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0sDQorICAiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctYWN0aXZhdGUtbmV0Y29uZi5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctYWN0aXZhdGUtbmV0Y29uZi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzhkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1hY3RpdmF0ZS1uZXRjb25mLmpzb24KQEAgLTAsMCArMSw2NiBAQAoreworCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIERvd25sb2FkIE5ldGNvbmYgRGlyZWN0ZWQgR3JhcGgiLAorCSJ2ZXJzaW9uIjogIjEuMC4wIiwKKwkicHJvcGVydGllcyI6IHsKKwkJIm1vZGUiOiB7CisJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCSJ0eXBlIjogInN0cmluZyIsCisJCQkiZGVmYXVsdCI6ICJzeW5jIgorCQl9LAorCQkidmVyc2lvbiI6IHsKKwkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJInR5cGUiOiAic3RyaW5nIiwKKwkJCSJkZWZhdWx0IjogIkxBVEVTVCIKKwkJfSwKKwkJImlzLXN0YXJ0LWZsb3ciOiB7CisJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCSJ0eXBlIjogImJvb2xlYW4iLAorCQkJImRlZmF1bHQiOiAiZmFsc2UiCisJCX0KKwl9LAorCSJjYXBhYmlsaXRpZXMiOiB7CisJCSJkZy1ub2RlIjogeworCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiCisJCX0sCisJCSJjb250ZW50IjogeworCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwKKwkJCSJwcm9wZXJ0aWVzIjogeworCQkJCSJ0eXBlIjogeworCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwKKwkJCQkJInR5cGUiOiAic3RyaW5nIiwKKwkJCQkJImRlZmF1bHQiOiAianNvbiIKKwkJCQl9LAorCQkJCSJjb250ZW50IjogeworCQkJCQkicmVxdWlyZWQiOiB0cnVlLAorCQkJCQkidHlwZSI6ICJzdHJpbmciCisJCQkJfQorCQkJfQorCQl9CisJfSwKKwkicmVxdWlyZW1lbnRzIjogeworCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7CisJCQkiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsCisJCQkibm9kZSI6ICJjb21wb25lbnQtbmV0Y29uZi1leGVjdXRvciIsCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIgorCQl9CisJfSwKKwkiaW50ZXJmYWNlcyI6IHsKKwkJIkNPTkZJRyI6IHsKKwkJCSJvcGVyYXRpb25zIjogeworCQkJCSJBY3RpdmF0ZU5ldGNvbmYiOiB7CisJCQkJCSJpbnB1dHMiOiB7CisJCQkJCQkicGFyYW1zIjogeworCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLAorCQkJCQkJCSJ0eXBlIjogImxpc3QiLAorCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7CisJCQkJCQkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5IgorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0sCisJCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyIKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1jb25maWctZ2VuZXJhdG9yLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1jb25maWctZ2VuZXJhdG9yLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhiYWNlMAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLWNvbmZpZy1nZW5lcmF0b3IuanNvbgpAQCAtMCwwICsxLDY1IEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIEFjdGl2YXRlIERHIGZvciBDb25maWcgR2VuZXJhdG9yIERpcmVjdGVkIEdyYXBoIiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkicHJvcGVydGllcyI6IHsNCisJCSJtb2RlIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAic3luYyINCisJCX0sDQorCQkidmVyc2lvbiI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogIkxBVEVTVCINCisJCX0sDQorCQkiaXMtc3RhcnQtZmxvdyI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkiZGVmYXVsdCI6ICJmYWxzZSINCisJCX0NCisJfSwNCisJImNhcGFiaWxpdGllcyI6IHsNCisJCSJkZy1ub2RlIjogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKwkJfSwNCisJCSJjb250ZW50Ijogew0KKwkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJ0eXBlIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAianNvbiINCisJCQkJfSwNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkicmVxdWlyZW1lbnRzIjogew0KKwkJImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkibm9kZSI6ICJjb21wb25lbnQtY29uZmlnLWdlbmVyYXRvciIsDQorCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCX0NCisJfSwNCisJImludGVyZmFjZXMiOiB7DQorCQkiQ09ORklHIjogew0KKwkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkiR2VuZXJhdGVDb25maWd1cmF0aW9uIjogew0KKwkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkicGFyYW1zIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAibGlzdCIsDQorCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJCQkidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5ERyINCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWduLWFjdGl2YXRlLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS9kZy1yZXNvdXJjZS1hc3NpZ24tYWN0aXZhdGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOThmYTVhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWduLWFjdGl2YXRlLmpzb24KQEAgLTAsMCArMSw3MCBAQAorew0KKwkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ24gYW5kIEFjdGl2YXRlIE5ldGNvbmYgRGlyZWN0ZWQgR3JhcGgiLA0KKwkidmVyc2lvbiI6ICIxLjAuMCIsDQorCSJwcm9wZXJ0aWVzIjogew0KKwkJIm1vZGUiOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJzeW5jIg0KKwkJfSwNCisJCSJ2ZXJzaW9uIjogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJImRlZmF1bHQiOiAiTEFURVNUIg0KKwkJfSwNCisJCSJpcy1zdGFydC1mbG93Ijogew0KKwkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCSJ0eXBlIjogImJvb2xlYW4iLA0KKwkJCSJkZWZhdWx0IjogImZhbHNlIg0KKwkJfQ0KKwl9LA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJImRnLW5vZGUiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQl9LA0KKwkJImNvbnRlbnQiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJInR5cGUiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJqc29uIg0KKwkJCQl9LA0KKwkJCQkiY29udGVudCI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkicmVxdWlyZW1lbnRzIjogew0KKwkJInJhLWNvbXBvbmVudCI6IHsNCisJCQkiY2FwYWJpbGl0eSI6ICJjb21wb25lbnQtbm9kZSIsDQorCQkJIm5vZGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKwkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorCQl9LA0KKwkJIm5ldGNvbmYtY29tcG9uZW50Ijogew0KKwkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkibm9kZSI6ICJjb21wb25lbnQtbmV0Y29uZi1leGVjdXRvciIsDQorCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCX0NCisJfSwNCisJImludGVyZmFjZXMiOiB7DQorCQkiQ09ORklHIjogew0KKwkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkiUmVzb3VyY2VBc3NpZ25BbmRBY3RpdmF0ZSI6IHsNCisJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJInBhcmFtcyI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuREciDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL2RnLXJlc291cmNlLWFzc2lnbm1lbnQuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZiYjY4Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvbW9kZWxfdHlwZS9ub2RlX3R5cGUvZGctcmVzb3VyY2UtYXNzaWdubWVudC5qc29uCkBAIC0wLDAgKzEsNjUgQEAKK3sNCisJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBEaXJlY3RlZCBHcmFwaCIsDQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJInByb3BlcnRpZXMiOiB7DQorCQkibW9kZSI6IHsNCisJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCSJkZWZhdWx0IjogInN5bmMiDQorCQl9LA0KKwkJInZlcnNpb24iOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkiZGVmYXVsdCI6ICJMQVRFU1QiDQorCQl9LA0KKwkJImlzLXN0YXJ0LWZsb3ciOiB7DQorCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJInR5cGUiOiAiYm9vbGVhbiIsDQorCQkJImRlZmF1bHQiOiAiZmFsc2UiDQorCQl9DQorCX0sDQorCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkiZGctbm9kZSI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCX0sDQorCQkiY29udGVudCI6IHsNCisJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkidHlwZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogImpzb24iDQorCQkJCX0sDQorCQkJCSJjb250ZW50Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJyZXF1aXJlbWVudHMiOiB7DQorCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7DQorCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCSJub2RlIjogImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKwkJfQ0KKwl9LA0KKwkiaW50ZXJmYWNlcyI6IHsNCisJCSJDT05GSUciOiB7DQorCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCSJSZXNvdXJjZUFzc2lnbm1lbnQiOiB7DQorCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCSJwYXJhbXMiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkJCSJ0eXBlIjogImRhdGF0eXBlLXByb3BlcnR5Ig0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwl9LA0KKwkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkRHIg0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS92bmYtbmV0Y29uZi1kZXZpY2UuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL21vZGVsX3R5cGUvbm9kZV90eXBlL3ZuZi1uZXRjb25mLWRldmljZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NTczYmEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9tb2RlbF90eXBlL25vZGVfdHlwZS92bmYtbmV0Y29uZi1kZXZpY2UuanNvbgpAQCAtMCwwICsxLDQyIEBACit7DQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIFZORiBEZXZpY2Ugd2l0aCBOZXRjb25mICBDYXBhYmlsaXR5IiwNCisJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkiY2FwYWJpbGl0aWVzIjogew0KKwkJIm5ldGNvbmYiOiB7DQorCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5OZXRjb25mIiwNCisJCQkicHJvcGVydGllcyI6IHsNCisJCQkJImxvZ2luLWtleSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAic2RuYyINCisJCQkJfSwNCisJCQkJImxvZ2luLWFjY291bnQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogInNkbmMtdGFjYWNzIg0KKwkJCQl9LA0KKwkJCQkic291cmNlIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJucG0iDQorCQkJCX0sDQorCQkJCSJ0YXJnZXQtaXAtYWRkcmVzcyI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0sDQorCQkJCSJwb3J0LW51bWJlciI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCSJkZWZhdWx0IjogODMwDQorCQkJCX0sDQorCQkJCSJjb25uZWN0aW9uLXRpbWUtb3V0Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCSJkZWZhdWx0IjogMzANCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSwNCisJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5WbmYiDQorCQ0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9yZXNvdXJjZV9kaWN0aW9uYXJ5L2FjdGlvbi1uYW1lLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9yZXNvdXJjZV9kaWN0aW9uYXJ5L2FjdGlvbi1uYW1lLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJiNjRlNgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL3Jlc291cmNlX2RpY3Rpb25hcnkvYWN0aW9uLW5hbWUuanNvbgpAQCAtMCwwICsxLDE3IEBACit7DQorCSJuYW1lIjogImFjdGlvbi1uYW1lIiwNCisJInJlc291cmNlLXBhdGgiOiAiYWN0aW9uLW5hbWUiLA0KKwkicmVzb3VyY2UtdHlwZSI6ICJPTkFQIiwNCisJImRlc2NyaXB0aW9uIjogIlRvIGJlIHByb3ZpZGVkIiwNCisJInZhbGlkLXZhbHVlcyI6IG51bGwsDQorCSJzYW1wbGUtdmFsdWUiOiBudWxsLA0KKwkidXBkYXRlZC1ieSI6ICJ5bTk0NzlAb25hcC5jb20iLA0KKwkidGFncyI6IG51bGwsDQorCSJkZWZhdWx0IjogbnVsbCwNCisJImRhdGEtdHlwZSI6ICJzdHJpbmciLA0KKwkic291cmNlIjogew0KKwkJImlucHV0Ijogew0KKwkJCSJrZXkiOiAiYWN0aW9uLW5hbWUiDQorCQl9DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL2xvYWQvcmVzb3VyY2VfZGljdGlvbmFyeS9idW5kbGUtaWQuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL3Jlc291cmNlX2RpY3Rpb25hcnkvYnVuZGxlLWlkLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NzhmNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL3Jlc291cmNlX2RpY3Rpb25hcnkvYnVuZGxlLWlkLmpzb24KQEAgLTAsMCArMSwzMiBAQAorew0KKyAgIm5hbWUiOiAiYnVuZGxlLWlkIiwNCisgICJkZXNjcmlwdGlvbiI6ICJuYW1lIG9mIHRoZSAiLA0KKyAgInJlc291cmNlLXR5cGUiOiAiT05BUCIsDQorICAicmVzb3VyY2UtcGF0aCI6ICJ2bmYvYnVuZGxlLWlkIiwNCisgICJ1cGRhdGVkLWJ5IjogInltOTQ3OUBvbmFwLmNvbSIsDQorICAiZGF0YS10eXBlIjogIlN0cmluZyIsDQorICAidGFncyI6ICJidW5kbGUtaWQsIHltOTQ3OUBvbmFwLmNvbSIsDQorICAic291cmNlIjogew0KKyAgICAiZGIiOiB7DQorICAgICAgInBhdGgiOiAiJGtleS12YWx1ZSIsDQorICAgICAgImlucHV0LWtleS1tYXBwaW5nIjogew0KKyAgICAgICAgImtleS12YWx1ZSI6ICIkcmVzb3VyY2UtZ3JvdXAta2V5Ig0KKyAgICAgIH0sDQorICAgICAgIm91dHB1dC1rZXktbWFwcGluZyI6IHsNCisgICAgICAgICJidW5kbGUtaWQiOiAiYnVuZGxlLWlkIg0KKyAgICAgIH0NCisgICAgfSwNCisgICAgImlucHV0Ijogew0KKyAgICB9DQorICB9LA0KKyAgImRlY3J5cHRpb24tcnVsZXMiOiBbDQorICAgIHsNCisgICAgICAic291cmNlcyI6IFsNCisgICAgICAgICJpbnB1dCINCisgICAgICBdLA0KKyAgICAgICJwYXRoIjogIi8uIiwNCisgICAgICAicnVsZSI6ICJMT0NBTC1EZWNyeXB0IiwNCisgICAgICAiZGVjcnlwdC10eXBlIjogIkFFUzEyOCINCisgICAgfQ0KKyAgXQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9yZXNvdXJjZV9kaWN0aW9uYXJ5L3Y0LWlwLXR5cGUuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9sb2FkL3Jlc291cmNlX2RpY3Rpb25hcnkvdjQtaXAtdHlwZS5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMjU0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvbG9hZC9yZXNvdXJjZV9kaWN0aW9uYXJ5L3Y0LWlwLXR5cGUuanNvbgpAQCAtMCwwICsxLDE0IEBACit7DQorCSJ0YWdzIjogInY0LWlwLXR5cGUsIHRvc2NhLmRhdGF0eXBlcy5Sb290LCBkYXRhX3R5cGUsIHltOTQ3OUBvbmFwLmNvbSIsDQorCSJuYW1lIjogInY0LWlwLXR5cGUiLA0KKwkiZGVzY3JpcHRpb24iOiAiVG8gYmUgcHJvdmlkZWQiLA0KKwkidXBkYXRlZC1ieSI6ICJ5bTk0NzlAb25hcC5jb20iLA0KKwkicmVzb3VyY2UtdHlwZSI6ICJPTkFQIiwNCisJInJlc291cmNlLXBhdGgiOiAidm5mL3Y0LWlwLXR5cGUiLA0KKwkiZGF0YS10eXBlIjogInN0cmluZyIsDQorCSJzb3VyY2UiOiB7DQorCQkiaW5wdXQiOiB7DQorCQkJDQorCQl9DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3BvbS54bWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2UvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzczOGJmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3BvbS54bWwKQEAgLTAsMCArMSw5NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICB+IENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICB+DQorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgfg0KKyAgfiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICB+DQorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICAtLT4NCisNCis8cHJvamVjdA0KKyAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcveHNkL21hdmVuLTQuMC4wLnhzZCINCisgICAgICAgIHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiDQorICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4NCisgICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKyAgICA8cGFyZW50Pg0KKyAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4NCisgICAgICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLW1vZHVsZXM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8dmVyc2lvbj4wLjMuMC1TTkFQU0hPVDwvdmVyc2lvbj4NCisgICAgPC9wYXJlbnQ+DQorICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXNlcnZpY2U8L2FydGlmYWN0SWQ+DQorICAgIDxuYW1lPkNvbnRyb2xsZXIgQmx1ZXByaW50cyBTZXJ2aWNlPC9uYW1lPg0KKw0KKyAgICA8cHJvcGVydGllcz4NCisgICAgPC9wcm9wZXJ0aWVzPg0KKw0KKyAgICA8ZGVwZW5kZW5jaWVzPg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb250cm9sbGVyYmx1ZXByaW50cy1yZXNvdXJjZS1kaWN0PC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5jb21tb25zPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtbGFuZzM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWNvbGxlY3Rpb25zPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtY29sbGVjdGlvbnM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5jb21tb25zLWlvPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbW1vbnMtaW88L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnZlbG9jaXR5PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnZlbG9jaXR5PC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+aW8uc3dhZ2dlcjwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5zd2FnZ2VyLWplcnNleTItamF4cnM8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuanNvbjwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5qc29uPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItd2ViPC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItamVyc2V5PC9hcnRpZmFjdElkPg0KKyAgICAgICAgPC9kZXBlbmRlbmN5Pg0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItZGF0YS1qcGE8L2FydGlmYWN0SWQ+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgICAgICA8ZGVwZW5kZW5jeT4NCisgICAgICAgICAgICA8Z3JvdXBJZD5teXNxbDwvZ3JvdXBJZD4NCisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5teXNxbC1jb25uZWN0b3ItamF2YTwvYXJ0aWZhY3RJZD4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgICAgIDxkZXBlbmRlbmN5Pg0KKyAgICAgICAgICAgIDxncm91cElkPmNvbS5oMmRhdGFiYXNlPC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPmgyPC9hcnRpZmFjdElkPg0KKyAgICAgICAgICAgIDxzY29wZT5ydW50aW1lPC9zY29wZT4NCisgICAgICAgIDwvZGVwZW5kZW5jeT4NCisgICAgICAgIDwhLS08ZGVwZW5kZW5jeT4tLT4NCisgICAgICAgIDwhLS08Z3JvdXBJZD5vcmcubWFyaWFkYi5qZGJjPC9ncm91cElkPi0tPg0KKyAgICAgICAgPCEtLTxhcnRpZmFjdElkPm1hcmlhZGItamF2YS1jbGllbnQ8L2FydGlmYWN0SWQ+LS0+DQorICAgICAgICA8IS0tPC9kZXBlbmRlbmN5Pi0tPg0KKw0KKyAgICAgICAgPGRlcGVuZGVuY3k+DQorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLnNwcmluZ2ZyYW1ld29yay5ib290PC9ncm91cElkPg0KKyAgICAgICAgICAgIDxhcnRpZmFjdElkPnNwcmluZy1ib290LXN0YXJ0ZXItdGVzdDwvYXJ0aWZhY3RJZD4NCisgICAgICAgICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+DQorICAgICAgICA8L2RlcGVuZGVuY3k+DQorICAgIDwvZGVwZW5kZW5jaWVzPg0KKzwvcHJvamVjdD4NCisNCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvQXV0b1Jlc291cmNlTWFwcGluZ1NlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9BdXRvUmVzb3VyY2VNYXBwaW5nU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMDljODEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvQXV0b1Jlc291cmNlTWFwcGluZ1NlcnZpY2UuamF2YQpAQCAtMCwwICsxLDIxMSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29sbGVjdGlvblV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlByb3BlcnR5RGVmaW5pdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LlJlc291cmNlQXNzaWdubWVudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LmRhdGEuRGljdGlvbmFyeURlZmluaXRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC51dGlscy5SZXNvdXJjZURpY3Rpb25hcnlVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5SZXNvdXJjZURpY3Rpb25hcnk7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5tb2RlbC5BdXRvTWFwUmVzcG9uc2U7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yZXBvc2l0b3J5LlJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KKy8qKg0KKyAqIEF1dG9SZXNvdXJjZU1hcHBpbmdTZXJ2aWNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBBdXRvbWFwcGluZyBvZiBSZXNvdXJjZSBBc3NpZ25tZW50cyBBdXRvUmVzb3VyY2VNYXBwaW5nU2VydmljZQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCisNCitAU2VydmljZQ0KK3B1YmxpYyBjbGFzcyBBdXRvUmVzb3VyY2VNYXBwaW5nU2VydmljZSB7DQorDQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihBdXRvUmVzb3VyY2VNYXBwaW5nU2VydmljZS5jbGFzcyk7DQorDQorICAgIHByaXZhdGUgUmVzb3VyY2VEaWN0aW9uYXJ5UmVwb3NpdG9yeSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgQXV0b1Jlc291cmNlTWFwcGluZ1NlcnZpY2UgY29uc3RydWN0b3INCisgICAgICogDQorICAgICAqIEBwYXJhbSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkNCisgICAgICogDQorICAgICAqLw0KKyAgICBwdWJsaWMgQXV0b1Jlc291cmNlTWFwcGluZ1NlcnZpY2UoUmVzb3VyY2VEaWN0aW9uYXJ5UmVwb3NpdG9yeSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkpIHsNCisgICAgICAgIHRoaXMuZGF0YURpY3Rpb25hcnlSZXBvc2l0b3J5ID0gZGF0YURpY3Rpb25hcnlSZXBvc2l0b3J5Ow0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgYXV0b01hcCBzZXJ2aWNlIHRvIG1hcCB0aGUgdGVtcGxhdGUga2V5cyBhdXRvbWF0aWNhbGx5IHRvIERpY3Rpb25hcnkgZmllbGRzLg0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHJlc291cmNlQXNzaWdubWVudHMNCisgICAgICogQHJldHVybiBBdXRvTWFwUmVzcG9uc2UNCisgICAgICovDQorICAgIHB1YmxpYyBBdXRvTWFwUmVzcG9uc2UgYXV0b01hcChMaXN0PFJlc291cmNlQXNzaWdubWVudD4gcmVzb3VyY2VBc3NpZ25tZW50cykgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBBdXRvTWFwUmVzcG9uc2UgYXV0b01hcFJlc3BvbnNlID0gbmV3IEF1dG9NYXBSZXNwb25zZSgpOw0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBpZiAoQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkocmVzb3VyY2VBc3NpZ25tZW50cykpIHsNCisNCisgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBEaWN0aW9uYXJ5IGRlZmluaXRpb25zIGZvciB0aGUgUmVzb3VyY2VBc3NpZ25tZW50IE5hbWVzDQorICAgICAgICAgICAgICAgIE1hcDxTdHJpbmcsIFJlc291cmNlRGljdGlvbmFyeT4gZGljdGlvbmFyeU1hcCA9IGdldERpY3Rpb25hcnlEZWZpbml0aW9ucyhyZXNvdXJjZUFzc2lnbm1lbnRzKTsNCisNCisgICAgICAgICAgICAgICAgZm9yIChSZXNvdXJjZUFzc2lnbm1lbnQgcmVzb3VyY2VBc3NpZ25tZW50IDogcmVzb3VyY2VBc3NpZ25tZW50cykgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlQXNzaWdubWVudCAhPSBudWxsICYmIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgU3RyaW5nVXRpbHMuaXNCbGFuayhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSkpIHsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZURpY3Rpb25hcnlNYXBwaW5nKGRpY3Rpb25hcnlNYXAsIHJlc291cmNlQXNzaWdubWVudCk7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIk1hcHBlZCBSZXNvdXJjZSA6IHt9IiwgcmVzb3VyY2VBc3NpZ25tZW50KTsNCisNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGlucw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIExpc3Q8UmVzb3VyY2VEaWN0aW9uYXJ5PiBkaWN0aW9uYXJpZXMgPSBnZXREaWN0aW9uYXJ5RGVmaW5pdGlvbnNMaXN0KHJlc291cmNlQXNzaWdubWVudHMpOw0KKyAgICAgICAgICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzRmluYWwgPSBnZXRBbGxBdXRvbWFwUmVzb3VyY2VBc3NpZ25tZW50cyhyZXNvdXJjZUFzc2lnbm1lbnRzKTsNCisgICAgICAgICAgICBhdXRvTWFwUmVzcG9uc2Uuc2V0RGF0YURpY3Rpb25hcmllcyhkaWN0aW9uYXJpZXMpOw0KKyAgICAgICAgICAgIGF1dG9NYXBSZXNwb25zZS5zZXRSZXNvdXJjZUFzc2lnbm1lbnRzKHJlc291cmNlQXNzaWdubWVudHNGaW5hbCk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIGxvZy5lcnJvcihTdHJpbmcuZm9ybWF0KCJGYWlsZWQgaW4gYXV0byBwcm9jZXNzICVzIiwgZS5nZXRNZXNzYWdlKCkpKTsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBhdXRvTWFwUmVzcG9uc2U7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSB2b2lkIHBvcHVsYXRlRGljdGlvbmFyeU1hcHBpbmcoTWFwPFN0cmluZywgUmVzb3VyY2VEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5TWFwLCBSZXNvdXJjZUFzc2lnbm1lbnQgcmVzb3VyY2VBc3NpZ25tZW50KSB7DQorICAgICAgICBSZXNvdXJjZURpY3Rpb25hcnkgZGJEYXRhRGljdGlvbmFyeSA9IGRpY3Rpb25hcnlNYXAuZ2V0KHJlc291cmNlQXNzaWdubWVudC5nZXROYW1lKCkpOw0KKyAgICAgICAgaWYgKGRiRGF0YURpY3Rpb25hcnkgIT0gbnVsbCAmJiBTdHJpbmdVdGlscy5pc05vdEJsYW5rKGRiRGF0YURpY3Rpb25hcnkuZ2V0RGVmaW5pdGlvbigpKSkgew0KKw0KKyAgICAgICAgICAgIERpY3Rpb25hcnlEZWZpbml0aW9uIGRpY3Rpb25hcnlEZWZpbml0aW9uID0gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShkYkRhdGFEaWN0aW9uYXJ5LmdldERlZmluaXRpb24oKSwgRGljdGlvbmFyeURlZmluaXRpb24uY2xhc3MpOw0KKw0KKyAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5RGVmaW5pdGlvbiAhPSBudWxsICYmIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0TmFtZSgpKQ0KKyAgICAgICAgICAgICAgICAgICAgJiYgU3RyaW5nVXRpbHMuaXNCbGFuayhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSkpIHsNCisNCisgICAgICAgICAgICAgICAgcmVzb3VyY2VBc3NpZ25tZW50LnNldERpY3Rpb25hcnlOYW1lKGRiRGF0YURpY3Rpb25hcnkuZ2V0TmFtZSgpKTsNCisgICAgICAgICAgICAgICAgUmVzb3VyY2VEaWN0aW9uYXJ5VXRpbHMucG9wdWxhdGVTb3VyY2VNYXBwaW5nKHJlc291cmNlQXNzaWdubWVudCwgZGljdGlvbmFyeURlZmluaXRpb24pOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIFJlc291cmNlRGljdGlvbmFyeT4gZ2V0RGljdGlvbmFyeURlZmluaXRpb25zKExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzKSB7DQorICAgICAgICBNYXA8U3RyaW5nLCBSZXNvdXJjZURpY3Rpb25hcnk+IGRpY3Rpb25hcnlNYXAgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgICAgICBMaXN0PFN0cmluZz4gbmFtZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIGZvciAoUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA6IHJlc291cmNlQXNzaWdubWVudHMpIHsNCisgICAgICAgICAgICBpZiAocmVzb3VyY2VBc3NpZ25tZW50ICE9IG51bGwgJiYgU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0TmFtZSgpKSkgew0KKyAgICAgICAgICAgICAgICBuYW1lcy5hZGQocmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKENvbGxlY3Rpb25VdGlscy5pc05vdEVtcHR5KG5hbWVzKSkgew0KKw0KKyAgICAgICAgICAgIExpc3Q8UmVzb3VyY2VEaWN0aW9uYXJ5PiBkaWN0aW9uYXJpZXMgPSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkuZmluZEJ5TmFtZUluKG5hbWVzKTsNCisgICAgICAgICAgICBpZiAoQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkoIGRpY3Rpb25hcmllcykpIHsNCisgICAgICAgICAgICAgICAgZm9yIChSZXNvdXJjZURpY3Rpb25hcnkgZGF0YURpY3Rpb25hcnkgOiBkaWN0aW9uYXJpZXMpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhRGljdGlvbmFyeSAhPSBudWxsICYmIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoZGF0YURpY3Rpb25hcnkuZ2V0TmFtZSgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlNYXAucHV0KGRhdGFEaWN0aW9uYXJ5LmdldE5hbWUoKSwgZGF0YURpY3Rpb25hcnkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlNYXA7DQorDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBMaXN0PFJlc291cmNlRGljdGlvbmFyeT4gZ2V0RGljdGlvbmFyeURlZmluaXRpb25zTGlzdChMaXN0PFJlc291cmNlQXNzaWdubWVudD4gcmVzb3VyY2VBc3NpZ25tZW50cykgew0KKyAgICAgICAgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IGRpY3Rpb25hcmllcyA9IG51bGw7DQorICAgICAgICBMaXN0PFN0cmluZz4gbmFtZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIGZvciAoUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA6IHJlc291cmNlQXNzaWdubWVudHMpIHsNCisgICAgICAgICAgICBpZiAocmVzb3VyY2VBc3NpZ25tZW50ICE9IG51bGwgJiYgU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSkpIHsNCisNCisgICAgICAgICAgICAgICAgaWYgKCFuYW1lcy5jb250YWlucyhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSkpIHsNCisgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFkZChyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeU5hbWUoKSk7DQorICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlQXNzaWdubWVudC5nZXREZXBlbmRlbmNpZXMoKSAhPSBudWxsICYmICFyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGVwZW5kZW5jaWVzKCkuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICBMaXN0PFN0cmluZz4gZGVwZW5kZW5jeU5hbWVzID0gcmVzb3VyY2VBc3NpZ25tZW50LmdldERlcGVuZGVuY2llcygpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgZGVwZW5kZW5jeU5hbWUgOiBkZXBlbmRlbmN5TmFtZXMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhkZXBlbmRlbmN5TmFtZSkgJiYgIW5hbWVzLmNvbnRhaW5zKGRlcGVuZGVuY3lOYW1lKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5hZGQoZGVwZW5kZW5jeU5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGlmIChDb2xsZWN0aW9uVXRpbHMuaXNOb3RFbXB0eShuYW1lcykpIHsNCisgICAgICAgICAgICBkaWN0aW9uYXJpZXMgPSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkuZmluZEJ5TmFtZUluKG5hbWVzKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBkaWN0aW9uYXJpZXM7DQorDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gZ2V0QWxsQXV0b21hcFJlc291cmNlQXNzaWdubWVudHMoTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMpIHsNCisgICAgICAgIExpc3Q8UmVzb3VyY2VEaWN0aW9uYXJ5PiBkaWN0aW9uYXJpZXMgPSBudWxsOw0KKyAgICAgICAgTGlzdDxTdHJpbmc+IG5hbWVzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorICAgICAgICBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gcmVzb3VyY2VBc3NpZ25tZW50c1dpdGhEZXBlbmNpZXMgPSByZXNvdXJjZUFzc2lnbm1lbnRzOw0KKyAgICAgICAgZm9yIChSZXNvdXJjZUFzc2lnbm1lbnQgcmVzb3VyY2VBc3NpZ25tZW50IDogcmVzb3VyY2VBc3NpZ25tZW50cykgew0KKyAgICAgICAgICAgIGlmIChyZXNvdXJjZUFzc2lnbm1lbnQgIT0gbnVsbCAmJiBTdHJpbmdVdGlscy5pc05vdEJsYW5rKHJlc291cmNlQXNzaWdubWVudC5nZXREaWN0aW9uYXJ5TmFtZSgpKSkgew0KKyAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VBc3NpZ25tZW50LmdldERlcGVuZGVuY2llcygpICE9IG51bGwgJiYgIXJlc291cmNlQXNzaWdubWVudC5nZXREZXBlbmRlbmNpZXMoKS5pc0VtcHR5KCkpIHsNCisgICAgICAgICAgICAgICAgICAgIExpc3Q8U3RyaW5nPiBkZXBlbmRlbmNpZU5hbWVzID0gcmVzb3VyY2VBc3NpZ25tZW50LmdldERlcGVuZGVuY2llcygpOw0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgZGVwZW5kZW5jaWVOYW1lIDogZGVwZW5kZW5jaWVOYW1lcykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGRlcGVuZGVuY2llTmFtZSkgJiYgIW5hbWVzLmNvbnRhaW5zKGRlcGVuZGVuY2llTmFtZSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFjaGVja0Fzc2lnbm1lbnRzRXhpc3RzKHJlc291cmNlQXNzaWdubWVudHNXaXRoRGVwZW5jaWVzLCBkZXBlbmRlbmNpZU5hbWUpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFkZChkZXBlbmRlbmNpZU5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAgIGlmICghbmFtZXMuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgZGljdGlvbmFyaWVzID0gZGF0YURpY3Rpb25hcnlSZXBvc2l0b3J5LmZpbmRCeU5hbWVJbihuYW1lcyk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZGljdGlvbmFyaWVzICE9IG51bGwpIHsNCisgICAgICAgICAgICBmb3IgKFJlc291cmNlRGljdGlvbmFyeSByZXNvdXJjZWRpY3Rpb25hcnkgOiBkaWN0aW9uYXJpZXMpIHsNCisgICAgICAgICAgICAgICAgRGljdGlvbmFyeURlZmluaXRpb24gZGljdGlvbmFyeURlZmluaXRpb24gPSBKYWNrc29uVXRpbHMucmVhZFZhbHVlKHJlc291cmNlZGljdGlvbmFyeS5nZXREZWZpbml0aW9uKCksIERpY3Rpb25hcnlEZWZpbml0aW9uLmNsYXNzKTsNCisgICAgICAgICAgICAgICAgUHJvcGVydHlEZWZpbml0aW9uIHByb3BlcnR5ID0gbmV3IFByb3BlcnR5RGVmaW5pdGlvbigpOw0KKwkJCQlwcm9wZXJ0eS5zZXRSZXF1aXJlZCh0cnVlKTsNCisJCQkJUmVzb3VyY2VBc3NpZ25tZW50IHJlc291cmNlQXNzaWdubWVudCA9IG5ldyBSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisJCQkJcmVzb3VyY2VBc3NpZ25tZW50LnNldE5hbWUocmVzb3VyY2VkaWN0aW9uYXJ5LmdldE5hbWUoKSk7DQorCQkJCXJlc291cmNlQXNzaWdubWVudC5zZXREaWN0aW9uYXJ5TmFtZShyZXNvdXJjZWRpY3Rpb25hcnkNCisJCQkJCQkuZ2V0TmFtZSgpKTsNCisJCQkJcmVzb3VyY2VBc3NpZ25tZW50LnNldFZlcnNpb24oMCk7DQorCQkJCXJlc291cmNlQXNzaWdubWVudC5zZXRQcm9wZXJ0eShwcm9wZXJ0eSk7DQorICAgICAgICAgICAgICAgIFJlc291cmNlRGljdGlvbmFyeVV0aWxzLnBvcHVsYXRlU291cmNlTWFwcGluZyhyZXNvdXJjZUFzc2lnbm1lbnQsIGRpY3Rpb25hcnlEZWZpbml0aW9uKTsNCisgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudHNXaXRoRGVwZW5jaWVzLmFkZChyZXNvdXJjZUFzc2lnbm1lbnQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXNvdXJjZUFzc2lnbm1lbnRzV2l0aERlcGVuY2llczsNCisNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0Fzc2lnbm1lbnRzRXhpc3RzKExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzV2l0aERlcGVuY2llcywgU3RyaW5nIHJlc291cmNlTmFtZSkgew0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlQXNzaWdubWVudHNXaXRoRGVwZW5jaWVzLnN0cmVhbSgpLmFueU1hdGNoKG5hbWVzIC0+IG5hbWVzLmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKHJlc291cmNlTmFtZSkpOw0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9CbHVlUHJpbnRFbmhhbmNlclJlcG9EQlNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9CbHVlUHJpbnRFbmhhbmNlclJlcG9EQlNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmU1YjEwCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyUmVwb0RCU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2U7DQorDQoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuUHJlY29uZGl0aW9uczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS4qOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZS5CbHVlUHJpbnRFbmhhbmNlclJlcG9TZXJ2aWNlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLk1vZGVsVHlwZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJlcG9zaXRvcnkuTW9kZWxUeXBlUmVwb3NpdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLlNlcnZpY2U7DQorDQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisvKioNCisgKiBCbHVlUHJpbnRFbmhhbmNlclJlcG9EQlNlcnZpY2UNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICovDQorQFNlcnZpY2UNCitwdWJsaWMgY2xhc3MgQmx1ZVByaW50RW5oYW5jZXJSZXBvREJTZXJ2aWNlIGltcGxlbWVudHMgQmx1ZVByaW50RW5oYW5jZXJSZXBvU2VydmljZSB7DQorDQorICAgIHByaXZhdGUgTW9kZWxUeXBlUmVwb3NpdG9yeSBtb2RlbFR5cGVSZXBvc2l0b3J5Ow0KKw0KKyAgICBwdWJsaWMgQmx1ZVByaW50RW5oYW5jZXJSZXBvREJTZXJ2aWNlKE1vZGVsVHlwZVJlcG9zaXRvcnkgbW9kZWxUeXBlUmVwb3NpdG9yeSkgew0KKyAgICAgICAgdGhpcy5tb2RlbFR5cGVSZXBvc2l0b3J5ID0gbW9kZWxUeXBlUmVwb3NpdG9yeTsNCisgICAgfQ0KKw0KKyAgIA0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIE5vZGVUeXBlIGdldE5vZGVUeXBlKFN0cmluZyBub2RlVHlwZU5hbWUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90Qmxhbmsobm9kZVR5cGVOYW1lKSwgIk5vZGVUeXBlIG5hbWUgaXMgbWlzc2luZyIpOw0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSBnZXRNb2RlbERlZmluaXRpb25zKG5vZGVUeXBlTmFtZSk7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhjb250ZW50KSwgIk5vZGVUeXBlIGNvbnRlbnQgaXMgbWlzc2luZyIpOw0KKyAgICAgICAgcmV0dXJuIEphY2tzb25VdGlscy5yZWFkVmFsdWUoY29udGVudCwgTm9kZVR5cGUuY2xhc3MpOw0KKyAgICB9DQorDQorICAgDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgRGF0YVR5cGUgZ2V0RGF0YVR5cGUoU3RyaW5nIGRhdGFUeXBlTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhkYXRhVHlwZU5hbWUpLCAiRGF0YVR5cGUgbmFtZSBpcyBtaXNzaW5nIik7DQorICAgICAgICBTdHJpbmcgY29udGVudCA9IGdldE1vZGVsRGVmaW5pdGlvbnMoZGF0YVR5cGVOYW1lKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGNvbnRlbnQpLCAiRGF0YVR5cGUgY29udGVudCBpcyBtaXNzaW5nIik7DQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50LCBEYXRhVHlwZS5jbGFzcyk7DQorICAgIH0NCisNCisgICANCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBBcnRpZmFjdFR5cGUgZ2V0QXJ0aWZhY3RUeXBlKFN0cmluZyBhcnRpZmFjdFR5cGVOYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGFydGlmYWN0VHlwZU5hbWUpLCAiQXJ0aWZhY3RUeXBlIG5hbWUgaXMgbWlzc2luZyIpOw0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSBnZXRNb2RlbERlZmluaXRpb25zKGFydGlmYWN0VHlwZU5hbWUpOw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoY29udGVudCksICJBcnRpZmFjdFR5cGUgY29udGVudCBpcyBtaXNzaW5nIik7DQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50LCBBcnRpZmFjdFR5cGUuY2xhc3MpOw0KKyAgICB9DQorDQorICAgDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgUmVsYXRpb25zaGlwVHlwZSBnZXRSZWxhdGlvbnNoaXBUeXBlKFN0cmluZyByZWxhdGlvbnNoaXBUeXBlTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZWxhdGlvbnNoaXBUeXBlTmFtZSksICJSZWxhdGlvbnNoaXBUeXBlIG5hbWUgaXMgbWlzc2luZyIpOw0KKyAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSBnZXRNb2RlbERlZmluaXRpb25zKHJlbGF0aW9uc2hpcFR5cGVOYW1lKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGNvbnRlbnQpLCAiUmVsYXRpb25zaGlwVHlwZSBjb250ZW50IGlzIG1pc3NpbmciKTsNCisgICAgICAgIHJldHVybiBKYWNrc29uVXRpbHMucmVhZFZhbHVlKGNvbnRlbnQsIFJlbGF0aW9uc2hpcFR5cGUuY2xhc3MpOw0KKyAgICB9DQorDQorICAgDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgQ2FwYWJpbGl0eURlZmluaXRpb24gZ2V0Q2FwYWJpbGl0eURlZmluaXRpb24oU3RyaW5nIGNhcGFiaWxpdHlEZWZpbml0aW9uTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhjYXBhYmlsaXR5RGVmaW5pdGlvbk5hbWUpLCAiQ2FwYWJpbGl0eURlZmluaXRpb24gbmFtZSBpcyBtaXNzaW5nIik7DQorICAgICAgICBTdHJpbmcgY29udGVudCA9IGdldE1vZGVsRGVmaW5pdGlvbnMoY2FwYWJpbGl0eURlZmluaXRpb25OYW1lKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGNvbnRlbnQpLCAiQ2FwYWJpbGl0eURlZmluaXRpb24gY29udGVudCBpcyBtaXNzaW5nIik7DQorICAgICAgICByZXR1cm4gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShjb250ZW50LCBDYXBhYmlsaXR5RGVmaW5pdGlvbi5jbGFzcyk7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0TW9kZWxEZWZpbml0aW9ucyhTdHJpbmcgbW9kZWxOYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIFN0cmluZyBtb2RlbERlZmluaXRpb24gPSBudWxsOw0KKyAgICAgICAgT3B0aW9uYWw8TW9kZWxUeXBlPiBtb2RlbFR5cGVkYiA9IG1vZGVsVHlwZVJlcG9zaXRvcnkuZmluZEJ5TW9kZWxOYW1lKG1vZGVsTmFtZSk7DQorICAgICAgICBpZiAobW9kZWxUeXBlZGIuaXNQcmVzZW50KCkpIHsNCisgICAgICAgICAgICBtb2RlbERlZmluaXRpb24gPSBtb2RlbFR5cGVkYi5nZXQoKS5nZXREZWZpbml0aW9uKCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oU3RyaW5nLmZvcm1hdCgiZmFpbGVkIHRvIGdldCBtb2RlbCBkZWZpbml0aW9uICglcykgZnJvbSByZXBvIiwgbW9kZWxOYW1lKSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbW9kZWxEZWZpbml0aW9uOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9CbHVlUHJpbnRFbmhhbmNlclNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9CbHVlUHJpbnRFbmhhbmNlclNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmQxMmYyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0JsdWVQcmludEVuaGFuY2VyU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMjA3IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2U7DQorDQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5Kc29uTm9kZTsNCitpbXBvcnQgY29tLmdvb2dsZS5jb21tb24uYmFzZS5QcmVjb25kaXRpb25zOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5qZXRicmFpbnMuYW5ub3RhdGlvbnMuTm90TnVsbDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkNvbmZpZ01vZGVsQ29uc3RhbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLio7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludEVuaGFuY2VyRGVmYXVsdFNlcnZpY2U7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5zZXJ2aWNlLkJsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2U7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5SZXNvdXJjZUFzc2lnbm1lbnQ7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KKy8qKg0KKyAqIEJsdWVQcmludEVuaGFuY2VyU2VydmljZQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGggREFURSA6IDgvOC8yMDE4DQorICovDQorDQorQFNlcnZpY2UNCitwdWJsaWMgY2xhc3MgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlIGV4dGVuZHMgQmx1ZVByaW50RW5oYW5jZXJEZWZhdWx0U2VydmljZSB7DQorDQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihCbHVlUHJpbnRFbmhhbmNlclNlcnZpY2UuY2xhc3MpOw0KKw0KKyAgICBwcml2YXRlIEhhc2hNYXA8U3RyaW5nLCBEYXRhVHlwZT4gcmVjaXBlRGF0YVR5cGVzID0gbmV3IEhhc2hNYXA8PigpOw0KKw0KKyAgICBwdWJsaWMgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlKEJsdWVQcmludEVuaGFuY2VyUmVwb1NlcnZpY2UgYmx1ZVByaW50RW5oYW5jZXJSZXBvREJTZXJ2aWNlKSB7DQorICAgICAgICBzdXBlcihibHVlUHJpbnRFbmhhbmNlclJlcG9EQlNlcnZpY2UpOw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgdm9pZCBlbnJpY2hUb3BvbG9neVRlbXBsYXRlKEBOb3ROdWxsIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUpIHsNCisgICAgICAgIHN1cGVyLmVucmljaFRvcG9sb2d5VGVtcGxhdGUoc2VydmljZVRlbXBsYXRlKTsNCisNCisgICAgICAgIC8vIFVwZGF0ZSB0aGUgUmVjaXBlIElucHV0cyBhbmQgRGF0YVR5cGVzDQorICAgICAgICBwb3B1bGF0ZVJlY2lwZUlucHV0cyhzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICB9DQorDQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgdm9pZCBlbnJpY2hOb2RlVGVtcGxhdGUoQE5vdE51bGwgU3RyaW5nIG5vZGVUZW1wbGF0ZU5hbWUsIEBOb3ROdWxsIE5vZGVUZW1wbGF0ZSBub2RlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgc3VwZXIuZW5yaWNoTm9kZVRlbXBsYXRlKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSk7DQorDQorICAgICAgICBTdHJpbmcgbm9kZVR5cGVOYW1lID0gbm9kZVRlbXBsYXRlLmdldFR5cGUoKTsNCisgICAgICAgIGxvZy5pbmZvKCIqKiogRW5yaWNoaW5nIE5vZGVUeXBlOiB7fSIsIG5vZGVUeXBlTmFtZSk7DQorICAgICAgICAvLyBHZXQgTm9kZVR5cGUgZnJvbSBSZXBvIGFuZCBVcGRhdGUgU2VydmljZSBUZW1wbGF0ZQ0KKyAgICAgICAgTm9kZVR5cGUgbm9kZVR5cGUgPSBzdXBlci5wb3B1bGF0ZU5vZGVUeXBlKG5vZGVUeXBlTmFtZSk7DQorDQorICAgICAgICAvLyBFbnJpY2ggTm9kZVR5cGUNCisgICAgICAgIHN1cGVyLmVucmljaE5vZGVUeXBlKG5vZGVUeXBlTmFtZSwgbm9kZVR5cGUpOw0KKw0KKyAgICAgICAgLy8gQ3VzdG9tIGZvciBBcnRpZmFjdCBQb3B1bGF0aW9uDQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhub2RlVHlwZS5nZXREZXJpdmVkRnJvbSgpKQ0KKyAgICAgICAgICAgICAgICAmJiBDb25maWdNb2RlbENvbnN0YW50Lk1PREVMX1RZUEVfTk9ERV9BUlRJRkFDVC5lcXVhbHNJZ25vcmVDYXNlKG5vZGVUeXBlLmdldERlcml2ZWRGcm9tKCkpKSB7DQorICAgICAgICAgICAgcG9wdWxhdGVBcnRpZmFjdFRlbXBsYXRlTWFwcGluZ0RhdGFUeXBlKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSk7DQorICAgICAgICB9DQorDQorICAgICAgICAvL0VucmljaCBOb2RlIFRlbXBsYXRlIEFydGlmYWN0cw0KKyAgICAgICAgc3VwZXIuZW5yaWNoTm9kZVRlbXBsYXRlQXJ0aWZhY3REZWZpbml0aW9uKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSk7DQorDQorICAgIH0NCisNCisNCisgICAgcHJpdmF0ZSB2b2lkIHBvcHVsYXRlQXJ0aWZhY3RUZW1wbGF0ZU1hcHBpbmdEYXRhVHlwZShATm90TnVsbCBTdHJpbmcgbm9kZVRlbXBsYXRlTmFtZSwgQE5vdE51bGwgTm9kZVRlbXBsYXRlIG5vZGVUZW1wbGF0ZSkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKioqKiogUHJvY2Vzc2luZyBBcnRpZmFjdCBOb2RlIFRlbXBsYXRlIDoge30iLCBub2RlVGVtcGxhdGVOYW1lKTsNCisNCisgICAgICAgIGlmIChub2RlVGVtcGxhdGUuZ2V0UHJvcGVydGllcygpICE9IG51bGwpIHsNCisNCisgICAgICAgICAgICBpZiAoIW5vZGVUZW1wbGF0ZS5nZXRQcm9wZXJ0aWVzKCkuY29udGFpbnNLZXkoQ29uZmlnTW9kZWxDb25zdGFudC5QUk9QRVJUWV9SRUNJUEVfTkFNRVMpKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk5vZGUgVGVtcGxhdGUgKCIgKyBub2RlVGVtcGxhdGVOYW1lICsgIikgZG9lc24ndCBoYXZlICINCisgICAgICAgICAgICAgICAgICAgICAgICArIENvbmZpZ01vZGVsQ29uc3RhbnQuUFJPUEVSVFlfUkVDSVBFX05BTUVTICsgIiBwcm9wZXJ0eS4iKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgLy8gTW9kaWZpZWQgZm9yIE9OQVAgY29udmVydGVkIE9iamVjdCB0byBKc29uTm9kZQ0KKyAgICAgICAgICAgIEpzb25Ob2RlIHJlY2lwZU5hbWVzID0gbm9kZVRlbXBsYXRlLmdldFByb3BlcnRpZXMoKS5nZXQoQ29uZmlnTW9kZWxDb25zdGFudC5QUk9QRVJUWV9SRUNJUEVfTkFNRVMpOw0KKw0KKyAgICAgICAgICAgIGxvZy5pbmZvKCJQcm9jZXNzaW5nIFJlY2VpcGUgTmFtZXMgOiB7fSAiLCByZWNpcGVOYW1lcyk7DQorDQorICAgICAgICAgICAgaWYgKHJlY2lwZU5hbWVzICE9IG51bGwgJiYgcmVjaXBlTmFtZXMuaXNBcnJheSgpICYmIHJlY2lwZU5hbWVzLnNpemUoKSA+IDApIHsNCisNCisgICAgICAgICAgICAgICAgTWFwPFN0cmluZywgUHJvcGVydHlEZWZpbml0aW9uPiBtYXBwaW5nUHJvcGVydGllcyA9DQorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2FwYWJpbGl0eU1hcHBpbmdQcm9wZXJ0aWVzKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSk7DQorDQorICAgICAgICAgICAgICAgIGZvciAoSnNvbk5vZGUgcmVjaXBlTmFtZU5vZGUgOiByZWNpcGVOYW1lcykgew0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlY2lwZU5hbWUgPSByZWNpcGVOYW1lTm9kZS50ZXh0VmFsdWUoKTsNCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NSZWNpcGUobm9kZVRlbXBsYXRlTmFtZSwgbWFwcGluZ1Byb3BlcnRpZXMsIHJlY2lwZU5hbWUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBwcm9jZXNzUmVjaXBlKEBOb3ROdWxsIFN0cmluZyBub2RlVGVtcGxhdGVOYW1lLCBNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+IG1hcHBpbmdQcm9wZXJ0aWVzLCBTdHJpbmcgcmVjaXBlTmFtZSkgew0KKyAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocmVjaXBlTmFtZSkpIHsNCisgICAgICAgICAgICBEYXRhVHlwZSByZWNpcGVEYXRhVHlwZSA9IHRoaXMucmVjaXBlRGF0YVR5cGVzLmdldChyZWNpcGVOYW1lKTsNCisgICAgICAgICAgICBpZiAocmVjaXBlRGF0YVR5cGUgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiRGF0YVR5cGUgbm90IHByZXNlbnQgZm9yIHRoZSByZWNpcGUoe30pIiAsIHJlY2lwZU5hbWUpOw0KKyAgICAgICAgICAgICAgICByZWNpcGVEYXRhVHlwZSA9IG5ldyBEYXRhVHlwZSgpOw0KKyAgICAgICAgICAgICAgICByZWNpcGVEYXRhVHlwZS5zZXRWZXJzaW9uKCIxLjAuMCIpOw0KKyAgICAgICAgICAgICAgICByZWNpcGVEYXRhVHlwZS5zZXREZXNjcmlwdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyBEeW5hbWljIERhdGEgdHlwZSBkZWZpbml0aW9uIGdlbmVyYXRlZCBmcm9tIHJlc291cmNlIG1hcHBpbmcgZm9yIHRoZSBjb25maWcgdGVtcGxhdGUgbmFtZSAiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5vZGVUZW1wbGF0ZU5hbWUgKyAiLiIpOw0KKyAgICAgICAgICAgICAgICByZWNpcGVEYXRhVHlwZS5zZXREZXJpdmVkRnJvbShDb25maWdNb2RlbENvbnN0YW50Lk1PREVMX1RZUEVfREFUQV9UWVBFX0RZTkFNSUMpOw0KKyAgICAgICAgICAgICAgICBNYXA8U3RyaW5nLCBQcm9wZXJ0eURlZmluaXRpb24+IGRhdGFUeXBlUHJvcGVydGllcyA9IG5ldyBIYXNoTWFwPD4oKTsNCisgICAgICAgICAgICAgICAgcmVjaXBlRGF0YVR5cGUuc2V0UHJvcGVydGllcyhkYXRhVHlwZVByb3BlcnRpZXMpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJEYXRhVHlwZSBBbHJlYWR5IHByZXNlbnQgZm9yIHRoZSByZWNpcGUoe30pIiAsIHJlY2lwZU5hbWUpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAvLyBNZXJnZSBhbGwgdGhlIFJlY2lwZSBQcm9wZXJ0aWVzDQorICAgICAgICAgICAgbWVyZ2VEYXRhVHlwZVByb3BlcnRpZXMocmVjaXBlRGF0YVR5cGUsIG1hcHBpbmdQcm9wZXJ0aWVzKTsNCisNCisgICAgICAgICAgICAvLyBPdmVyd3JpdGUgUmVjaXBlIERhdGFUeXBlDQorICAgICAgICAgICAgdGhpcy5yZWNpcGVEYXRhVHlwZXMucHV0KHJlY2lwZU5hbWUsIHJlY2lwZURhdGFUeXBlKTsNCisNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gZ2V0Q2FwYWJpbGl0eU1hcHBpbmdQcm9wZXJ0aWVzKFN0cmluZyBub2RlVGVtcGxhdGVOYW1lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVUZW1wbGF0ZSBub2RlVGVtcGxhdGUpIHsNCisNCisgICAgICAgIE1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gZGF0YVR5cGVQcm9wZXJ0aWVzID0gbnVsbDsNCisgICAgICAgIGlmIChub2RlVGVtcGxhdGUgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIENhcGFiaWxpdHlBc3NpZ25tZW50IGNhcGFiaWxpdHkgPQ0KKyAgICAgICAgICAgICAgICAgICAgbm9kZVRlbXBsYXRlLmdldENhcGFiaWxpdGllcygpLmdldChDb25maWdNb2RlbENvbnN0YW50LkNBUEFCSUxJVFlfUFJPUEVSVFlfTUFQUElORyk7DQorDQorICAgICAgICAgICAgaWYgKGNhcGFiaWxpdHkgIT0gbnVsbCAmJiBjYXBhYmlsaXR5LmdldFByb3BlcnRpZXMoKSAhPSBudWxsKSB7DQorDQorICAgICAgICAgICAgICAgIFN0cmluZyByZXNvdXJjZUFzc2lnbm1lbnRDb250ZW50ID0gSmFja3NvblV0aWxzDQorICAgICAgICAgICAgICAgICAgICAgICAgLmdldEpzb24oY2FwYWJpbGl0eS5nZXRQcm9wZXJ0aWVzKCkuZ2V0KENvbmZpZ01vZGVsQ29uc3RhbnQuQ0FQQUJJTElUWV9QUk9QRVJUWV9NQVBQSU5HKSk7DQorDQorICAgICAgICAgICAgICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzID0NCisgICAgICAgICAgICAgICAgICAgICAgICBKYWNrc29uVXRpbHMuZ2V0TGlzdEZyb21Kc29uKHJlc291cmNlQXNzaWdubWVudENvbnRlbnQsIFJlc291cmNlQXNzaWdubWVudC5jbGFzcyk7DQorDQorICAgICAgICAgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tOb3ROdWxsKHJlc291cmNlQXNzaWdubWVudHMsICJGYWlsZWQgdG8gUHJvY2Vzc2luZyBSZXNvdXJjZSBNYXBwaW5nICIgKyByZXNvdXJjZUFzc2lnbm1lbnRDb250ZW50KTsNCisgICAgICAgICAgICAgICAgZGF0YVR5cGVQcm9wZXJ0aWVzID0gbmV3IEhhc2hNYXA8PigpOw0KKw0KKyAgICAgICAgICAgICAgICBmb3IgKFJlc291cmNlQXNzaWdubWVudCByZXNvdXJjZUFzc2lnbm1lbnQgOiByZXNvdXJjZUFzc2lnbm1lbnRzKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VBc3NpZ25tZW50ICE9IG51bGwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJiYgQm9vbGVhbi52YWx1ZU9mKHJlc291cmNlQXNzaWdubWVudC5nZXRJbnB1dFBhcmFtZXRlcigpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0UHJvcGVydHkoKSAhPSBudWxsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSkpIHsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnJpY2ggdGhlIFByb3BlcnR5IERlZmluaXRpb24NCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlci5lbnJpY2hQcm9wZXJ0eURlZmluaXRpb24ocmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSwgcmVzb3VyY2VBc3NpZ25tZW50LmdldFByb3BlcnR5KCkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlUHJvcGVydGllcy5wdXQocmVzb3VyY2VBc3NpZ25tZW50LmdldE5hbWUoKSwgcmVzb3VyY2VBc3NpZ25tZW50LmdldFByb3BlcnR5KCkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGRhdGFUeXBlUHJvcGVydGllczsNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIHZvaWQgbWVyZ2VEYXRhVHlwZVByb3BlcnRpZXMoRGF0YVR5cGUgZGF0YVR5cGUsIE1hcDxTdHJpbmcsIFByb3BlcnR5RGVmaW5pdGlvbj4gbWVyZ2VQcm9wZXJ0aWVzKSB7DQorICAgICAgICBpZiAoZGF0YVR5cGUgIT0gbnVsbCAmJiBkYXRhVHlwZS5nZXRQcm9wZXJ0aWVzKCkgIT0gbnVsbCAmJiBtZXJnZVByb3BlcnRpZXMgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIC8vIEFkZCB0aGUgT3RoZXIgVGVtcGxhdGUgUHJvcGVydGllcw0KKyAgICAgICAgICAgIG1lcmdlUHJvcGVydGllcy5mb3JFYWNoKChtYXBwaW5nS2V5LCBwcm9wZXJ0eURlZmluaXRpb24pIC0+IHsNCisgICAgICAgICAgICAgICAgZGF0YVR5cGUuZ2V0UHJvcGVydGllcygpLnB1dChtYXBwaW5nS2V5LCBwcm9wZXJ0eURlZmluaXRpb24pOw0KKyAgICAgICAgICAgIH0pOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBwb3B1bGF0ZVJlY2lwZUlucHV0cyhTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlKSB7DQorICAgICAgICBpZiAodGhpcy5yZWNpcGVEYXRhVHlwZXMgIT0gbnVsbCAmJiAhdGhpcy5yZWNpcGVEYXRhVHlwZXMuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgdGhpcy5yZWNpcGVEYXRhVHlwZXMuZm9yRWFjaCgocmVjaXBlTmFtZSwgcmVjaXBlRGF0YVR5cGUpIC0+IHsNCisgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGFUeXBlUHJpZml4ID0gcmVjaXBlTmFtZS5yZXBsYWNlKCItYWN0aW9uIiwgIiIpICsgIi1yZXF1ZXN0IjsNCisgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGFUeXBlTmFtZSA9ICJkdC0iICsgZGF0YVR5cGVQcmlmaXg7DQorDQorICAgICAgICAgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5nZXREYXRhVHlwZXMoKS5wdXQoZGF0YVR5cGVOYW1lLCByZWNpcGVEYXRhVHlwZSk7DQorDQorICAgICAgICAgICAgICAgIFByb3BlcnR5RGVmaW5pdGlvbiBjdXN0b21JbnB1dFByb3BlcnR5ID0gbmV3IFByb3BlcnR5RGVmaW5pdGlvbigpOw0KKyAgICAgICAgICAgICAgICBjdXN0b21JbnB1dFByb3BlcnR5LnNldERlc2NyaXB0aW9uKCJUaGlzIGlzIER5bmFtaWMgRGF0YSB0eXBlIGZvciB0aGUgcmVjZWlwZSAiICsgcmVjaXBlTmFtZSArICIuIik7DQorICAgICAgICAgICAgICAgIGN1c3RvbUlucHV0UHJvcGVydHkuc2V0UmVxdWlyZWQoQm9vbGVhbi5GQUxTRSk7DQorICAgICAgICAgICAgICAgIGN1c3RvbUlucHV0UHJvcGVydHkuc2V0VHlwZShkYXRhVHlwZU5hbWUpOw0KKyAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0VG9wb2xvZ3lUZW1wbGF0ZSgpLmdldElucHV0cygpLnB1dChkYXRhVHlwZVByaWZpeCwgY3VzdG9tSW5wdXRQcm9wZXJ0eSk7DQorDQorICAgICAgICAgICAgfSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0NvbmZpZ01vZGVsQ3JlYXRlU2VydmljZS5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0NvbmZpZ01vZGVsQ3JlYXRlU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlOTZmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvQ29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzMzkgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZTsNCisNCitpbXBvcnQgY29tLmdvb2dsZS5jb21tb24uYmFzZS5QcmVjb25kaXRpb25zOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29sbGVjdGlvblV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uSU9VdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQ29uZmlnTW9kZWxDb25zdGFudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuY29tbW9uLkFwcGxpY2F0aW9uQ29uc3RhbnRzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsQ29udGVudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJlcG9zaXRvcnkuQ29uZmlnTW9kZWxSZXBvc2l0b3J5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLlNlcnZpY2U7DQorDQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDsNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisvKioNCisgKiBTZXJ2aWNlVGVtcGxhdGVDcmVhdGVTZXJ2aWNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBTZXJ2aWNlIFRlbXBsYXRlIENyZWF0ZSBTZXJ2aWNlIHByb2Nlc3NpbmcNCisgKiBTZXJ2aWNlVGVtcGxhdGVDcmVhdGVTZXJ2aWNlDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KKw0KK0BTZXJ2aWNlDQorcHVibGljIGNsYXNzIENvbmZpZ01vZGVsQ3JlYXRlU2VydmljZSB7DQorDQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihDb25maWdNb2RlbENyZWF0ZVNlcnZpY2UuY2xhc3MpOw0KKw0KKyAgICBwcml2YXRlIENvbmZpZ01vZGVsUmVwb3NpdG9yeSBjb25maWdNb2RlbFJlcG9zaXRvcnk7DQorICAgIHByaXZhdGUgQ29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlIGNvbmZpZ01vZGVsVmFsaWRhdG9yU2VydmljZTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBDb25maWdNb2RlbENyZWF0ZVNlcnZpY2UNCisgICAgICoNCisgICAgICogQHBhcmFtIGNvbmZpZ01vZGVsUmVwb3NpdG9yeSAgICAgICBDb25maWdNb2RlbFJlcG9zaXRvcnkNCisgICAgICogQHBhcmFtIGNvbmZpZ01vZGVsVmFsaWRhdG9yU2VydmljZSBDb25maWdNb2RlbFZhbGlkYXRvclNlcnZpY2UNCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbENyZWF0ZVNlcnZpY2UoQ29uZmlnTW9kZWxSZXBvc2l0b3J5IGNvbmZpZ01vZGVsUmVwb3NpdG9yeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdNb2RlbFZhbGlkYXRvclNlcnZpY2UgY29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlKSB7DQorICAgICAgICB0aGlzLmNvbmZpZ01vZGVsUmVwb3NpdG9yeSA9IGNvbmZpZ01vZGVsUmVwb3NpdG9yeTsNCisgICAgICAgIHRoaXMuY29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlID0gY29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgY3JlYXRlSW5pdGlhbFNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQgbWV0aG9kDQorICAgICAqDQorICAgICAqIEBwYXJhbSB0ZW1wbGF0ZU5hbWUgdGVtcGxhdGVOYW1lDQorICAgICAqIEByZXR1cm4gU3RyaW5nDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFN0cmluZyBjcmVhdGVJbml0aWFsU2VydmljZVRlbXBsYXRlQ29udGVudChTdHJpbmcgdGVtcGxhdGVOYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIFN0cmluZyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ID0gbnVsbDsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRlbXBsYXRlTmFtZSkpIHsNCisgICAgICAgICAgICB0cnkgew0KKyAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ID0gSU9VdGlscy50b1N0cmluZyhDb25maWdNb2RlbENyZWF0ZVNlcnZpY2UuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRSZXNvdXJjZUFzU3RyZWFtKCJzZXJ2aWNlX3RlbXBsYXRlLyIgKyB0ZW1wbGF0ZU5hbWUgKyAiLmpzb24iKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBzZXJ2aWNlVGVtcGxhdGVDb250ZW50Ow0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgY3JlYXRlSW5pdGlhbFNlcnZpY2VUZW1wbGF0ZSBtZXRob2QNCisgICAgICoNCisgICAgICogQHBhcmFtIHRlbXBsYXRlTmFtZSB0ZW1wbGF0ZU5hbWUNCisgICAgICogQHJldHVybiBTZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlIGNyZWF0ZUluaXRpYWxTZXJ2aWNlVGVtcGxhdGUoU3RyaW5nIHRlbXBsYXRlTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlID0gbnVsbDsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRlbXBsYXRlTmFtZSkpIHsNCisgICAgICAgICAgICB0cnkgew0KKyAgICAgICAgICAgICAgICBTdHJpbmcgc2VydmljZVRlbXBsYXRlQ29udGVudCA9IElPVXRpbHMudG9TdHJpbmcoQ29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlLmNsYXNzLmdldENsYXNzTG9hZGVyKCkNCisgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2VBc1N0cmVhbSgic2VydmljZV90ZW1wbGF0ZS8iICsgdGVtcGxhdGVOYW1lICsgIi5qc29uIiksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSk7DQorICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQpKSB7DQorICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUgPSBKYWNrc29uVXRpbHMucmVhZFZhbHVlKHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQsIFNlcnZpY2VUZW1wbGF0ZS5jbGFzcyk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBzZXJ2aWNlVGVtcGxhdGU7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBzYXZlQ29uZmlnTW9kZWwgbWV0aG9kDQorICAgICAqDQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbCBjb25maWdNb2RlbA0KKyAgICAgKiBAcmV0dXJuIENvbmZpZ01vZGVsDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIENvbmZpZ01vZGVsIHNhdmVDb25maWdNb2RlbChDb25maWdNb2RlbCBjb25maWdNb2RlbCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorDQorICAgICAgICBpZiAoY29uZmlnTW9kZWwgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIFN0cmluZyBhcnRpZmFjdE5hbWUgPSBjb25maWdNb2RlbC5nZXRBcnRpZmFjdE5hbWUoKTsNCisgICAgICAgICAgICBTdHJpbmcgYXJ0aWZhY3RWZXJzaW9uID0gY29uZmlnTW9kZWwuZ2V0QXJ0aWZhY3RWZXJzaW9uKCk7DQorICAgICAgICAgICAgU3RyaW5nIGF1dGhvciA9IGNvbmZpZ01vZGVsLmdldFVwZGF0ZWRCeSgpOw0KKyAgICAgICAgICAgIC8vIGNvbmZpZ01vZGVsLnNldFRhZ3MoYXJ0aWZhY3ROYW1lKTsNCisNCisgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNCbGFuayhhdXRob3IpKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIkFydGlmYWN0IEF1dGhvciBpcyBtaXNzaW5nIGluIHRoZSBTZXJ2aWNlIFRlbXBsYXRlIik7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0JsYW5rKGFydGlmYWN0TmFtZSkpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiQXJ0aWZhY3QgTmFtZSBpcyBtaXNzaW5nIGluIHRoZSBTZXJ2aWNlIFRlbXBsYXRlIik7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0JsYW5rKGFydGlmYWN0VmVyc2lvbikpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiQXJ0aWZhY3QgVmVyc2lvbiBpcyBtaXNzaW5nIGluIHRoZSBTZXJ2aWNlIFRlbXBsYXRlIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIENvbmZpZ01vZGVsIHVwZGF0ZUNvbmZpZ01vZGVsID0gbnVsbDsNCisNCisgICAgICAgICAgICBPcHRpb25hbDxDb25maWdNb2RlbD4gZGJDb25maWdNb2RlbE9wdGlvbmFsID0gT3B0aW9uYWwuZW1wdHkoKTsNCisNCisgICAgICAgICAgICBpZiAoY29uZmlnTW9kZWwuZ2V0SWQoKSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJTZWFyY2hpbmcgZm9yIGNvbmZpZyBtb2RlbCBpZCA6IHt9IiwgY29uZmlnTW9kZWwuZ2V0SWQoKSk7DQorICAgICAgICAgICAgICAgIGRiQ29uZmlnTW9kZWxPcHRpb25hbCA9IGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5maW5kQnlJZChjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKCFkYkNvbmZpZ01vZGVsT3B0aW9uYWwuaXNQcmVzZW50KCkpIHsNCisgICAgICAgICAgICAgICAgbG9nLmluZm8oIlNlYXJjaGluZyBmb3IgY29uZmlnIG1vZGVsIG5hbWUgOiINCisgICAgICAgICAgICAgICAgICAgICAgICArIGNvbmZpZ01vZGVsLmdldEFydGlmYWN0TmFtZSgpICsgIiwgdmVyc2lvbiAiICsgY29uZmlnTW9kZWwuZ2V0QXJ0aWZhY3RWZXJzaW9uKCkpOw0KKyAgICAgICAgICAgICAgICBkYkNvbmZpZ01vZGVsT3B0aW9uYWwgPSBjb25maWdNb2RlbFJlcG9zaXRvcnkuZmluZEJ5QXJ0aWZhY3ROYW1lQW5kQXJ0aWZhY3RWZXJzaW9uKA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsLmdldEFydGlmYWN0TmFtZSgpLCBjb25maWdNb2RlbC5nZXRBcnRpZmFjdFZlcnNpb24oKSk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmIChkYkNvbmZpZ01vZGVsT3B0aW9uYWwuaXNQcmVzZW50KCkpIHsNCisgICAgICAgICAgICAgICAgdXBkYXRlQ29uZmlnTW9kZWwgPSBkYkNvbmZpZ01vZGVsT3B0aW9uYWwuZ2V0KCk7DQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJQcm9jZXNzaW5nIGZvciBjb25maWcgbW9kZWwgaWQgOiB7fSB3aXRoIGNvbmZpZyBtb2RlbCBjb250ZW50IGNvdW50IDoge30iDQorICAgICAgICAgICAgICAgICAgICAgICAgLCB1cGRhdGVDb25maWdNb2RlbC5nZXRJZCgpLCB1cGRhdGVDb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkuc2l6ZSgpKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBDb25maWdNb2RlbCB0ZW1wQ29uZmlnTW9kZWwgPSBuZXcgQ29uZmlnTW9kZWwoKTsNCisgICAgICAgICAgICAgICAgdGVtcENvbmZpZ01vZGVsLnNldEFydGlmYWN0VHlwZShBcHBsaWNhdGlvbkNvbnN0YW50cy5BU0RDX0FSVElGQUNUX1RZUEVfU0ROQ19NT0RFTCk7DQorICAgICAgICAgICAgICAgIHRlbXBDb25maWdNb2RlbC5zZXRBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lKTsNCisgICAgICAgICAgICAgICAgdGVtcENvbmZpZ01vZGVsLnNldEFydGlmYWN0VmVyc2lvbihhcnRpZmFjdFZlcnNpb24pOw0KKyAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnTW9kZWwuc2V0VXBkYXRlZEJ5KGF1dGhvcik7DQorICAgICAgICAgICAgICAgIHRlbXBDb25maWdNb2RlbC5zZXRQdWJsaXNoZWQoQXBwbGljYXRpb25Db25zdGFudHMuQUNUSVZFX04pOw0KKyAgICAgICAgICAgICAgICB0ZW1wQ29uZmlnTW9kZWwuc2V0VGFncyhhcnRpZmFjdE5hbWUpOw0KKyAgICAgICAgICAgICAgICBjb25maWdNb2RlbFJlcG9zaXRvcnkuc2F2ZUFuZEZsdXNoKHRlbXBDb25maWdNb2RlbCk7DQorICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ01vZGVsID0gdGVtcENvbmZpZ01vZGVsOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBMb25nIGRiQ29uZmlnTW9kZWxJZCA9IHVwZGF0ZUNvbmZpZ01vZGVsLmdldElkKCk7DQorDQorICAgICAgICAgICAgaWYgKGRiQ29uZmlnTW9kZWxJZCA9PSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oImZhaWxlZCB0byBnZXQgdGhlIGluaXRpYWwgc2F2ZWQgY29uZmlnIG1vZGVsIGlkLiIpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBsb2cuaW5mbygiUHJvY2Vzc2luZyBmb3IgY29uZmlnIG1vZGVsIGlkIDoge30iLCBkYkNvbmZpZ01vZGVsSWQpOw0KKw0KKyAgICAgICAgICAgIGRlbGV0ZUNvbmZpZ01vZGVsQ29udGVudChkYkNvbmZpZ01vZGVsSWQpOw0KKw0KKyAgICAgICAgICAgIGFkZENvbmZpZ01vZGVsQ29udGVudChkYkNvbmZpZ01vZGVsSWQsIGNvbmZpZ01vZGVsKTsNCisNCisgICAgICAgICAgICAvLyBQb3B1bGF0ZSBDb250ZW50IG1vZGVsIHR5cGVzDQorICAgICAgICAgICAgdXBkYXRlQ29uZmlnTW9kZWwgPSB1cGRhdGVDb25maWdNb2RlbChkYkNvbmZpZ01vZGVsSWQsIGFydGlmYWN0TmFtZSwgYXJ0aWZhY3RWZXJzaW9uLCBhdXRob3IpOw0KKw0KKw0KKyAgICAgICAgICAgIHJldHVybiB1cGRhdGVDb25maWdNb2RlbDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiQ29uZmlnIG1vZGVsIGluZm9ybWF0aW9uIGlzIG1pc3NpbmciKTsNCisgICAgICAgIH0NCisNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIHZvaWQgZGVsZXRlQ29uZmlnTW9kZWxDb250ZW50KExvbmcgZGJDb25maWdNb2RlbElkKSB7DQorICAgICAgICBpZiAoZGJDb25maWdNb2RlbElkICE9IG51bGwpIHsNCisgICAgICAgICAgICBDb25maWdNb2RlbCBkYkNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWxSZXBvc2l0b3J5LmdldE9uZShkYkNvbmZpZ01vZGVsSWQpOw0KKyAgICAgICAgICAgIGlmIChkYkNvbmZpZ01vZGVsICE9IG51bGwgJiYgQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkoZGJDb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpKSB7DQorICAgICAgICAgICAgICAgIGRiQ29uZmlnTW9kZWwuZ2V0Q29uZmlnTW9kZWxDb250ZW50cygpLmNsZWFyKCk7DQorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQ29uZmlndXJhdGlvbiBNb2RlbCBjb250ZW50IGRlbGV0aW5nIDoge30iLCBkYkNvbmZpZ01vZGVsLmdldENvbmZpZ01vZGVsQ29udGVudHMoKSk7DQorICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5zYXZlQW5kRmx1c2goZGJDb25maWdNb2RlbCk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBhZGRDb25maWdNb2RlbENvbnRlbnQoTG9uZyBkYkNvbmZpZ01vZGVsSWQsIENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsKSB7DQorICAgICAgICBpZiAoZGJDb25maWdNb2RlbElkICE9IG51bGwgJiYgY29uZmlnTW9kZWwgIT0gbnVsbA0KKyAgICAgICAgICAgICAgICAmJiBDb2xsZWN0aW9uVXRpbHMuaXNOb3RFbXB0eShjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpKSB7DQorICAgICAgICAgICAgQ29uZmlnTW9kZWwgZGJDb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5nZXRPbmUoZGJDb25maWdNb2RlbElkKTsNCisgICAgICAgICAgICBpZiAoZGJDb25maWdNb2RlbCAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGZvciAoQ29uZmlnTW9kZWxDb250ZW50IGNvbmZpZ01vZGVsQ29udGVudCA6IGNvbmZpZ01vZGVsLmdldENvbmZpZ01vZGVsQ29udGVudHMoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ01vZGVsQ29udGVudCAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnTW9kZWxDb250ZW50LnNldElkKG51bGwpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudC5zZXRDb25maWdNb2RlbChkYkNvbmZpZ01vZGVsKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBkYkNvbmZpZ01vZGVsLmdldENvbmZpZ01vZGVsQ29udGVudHMoKS5hZGQoY29uZmlnTW9kZWxDb250ZW50KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkNvbmZpZ3VyYXRpb24gTW9kZWwgY29udGVudCBhZGRpbmcgOiB7fSIsIGNvbmZpZ01vZGVsQ29udGVudCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgY29uZmlnTW9kZWxSZXBvc2l0b3J5LnNhdmVBbmRGbHVzaChkYkNvbmZpZ01vZGVsKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBDb25maWdNb2RlbCB1cGRhdGVDb25maWdNb2RlbChMb25nIGRiQ29uZmlnTW9kZWxJZCwgU3RyaW5nIGFydGlmYWN0TmFtZSwgU3RyaW5nIGFydGlmYWN0VmVyc2lvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYXV0aG9yKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisNCisgICAgICAgIENvbmZpZ01vZGVsIGRiQ29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlcG9zaXRvcnkuZ2V0T25lKGRiQ29uZmlnTW9kZWxJZCk7DQorICAgICAgICBpZiAoZGJDb25maWdNb2RlbCAhPSBudWxsKSB7DQorICAgICAgICAgICAgLy8gUG9wdWxhdGUgdGFncyBmcm9tIG1ldGFkYXRhDQorICAgICAgICAgICAgU3RyaW5nIHRhZ3MgPSBnZXRDb25maWdNb2RlbFRhZ3MoZGJDb25maWdNb2RlbCk7DQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsodGFncykpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiRmFpbGVkIHRvIHBvcHVsYXRlIHRhZ3MgZm9yIHRoZSBjb25maWcgbW9kZWwgbmFtZSAiICsgYXJ0aWZhY3ROYW1lKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZGJDb25maWdNb2RlbC5zZXRBcnRpZmFjdFR5cGUoQXBwbGljYXRpb25Db25zdGFudHMuQVNEQ19BUlRJRkFDVF9UWVBFX1NETkNfTU9ERUwpOw0KKyAgICAgICAgICAgIGRiQ29uZmlnTW9kZWwuc2V0QXJ0aWZhY3ROYW1lKGFydGlmYWN0TmFtZSk7DQorICAgICAgICAgICAgZGJDb25maWdNb2RlbC5zZXRBcnRpZmFjdFZlcnNpb24oYXJ0aWZhY3RWZXJzaW9uKTsNCisgICAgICAgICAgICBkYkNvbmZpZ01vZGVsLnNldFVwZGF0ZWRCeShhdXRob3IpOw0KKyAgICAgICAgICAgIGRiQ29uZmlnTW9kZWwuc2V0UHVibGlzaGVkKEFwcGxpY2F0aW9uQ29uc3RhbnRzLkFDVElWRV9OKTsNCisgICAgICAgICAgICBkYkNvbmZpZ01vZGVsLnNldFRhZ3ModGFncyk7DQorICAgICAgICAgICAgY29uZmlnTW9kZWxSZXBvc2l0b3J5LnNhdmVBbmRGbHVzaChkYkNvbmZpZ01vZGVsKTsNCisNCisgICAgICAgICAgICBsb2cuaW5mbygiQ29uZmlnIG1vZGVsICh7fSkgc2F2ZWQgc3VjY2Vzc2Z1bGx5LiIsIGRiQ29uZmlnTW9kZWwuZ2V0SWQoKSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gZGJDb25maWdNb2RlbDsNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBnZXRWYWxpZENvbnRlbnRUeXBlcygpIHsNCisgICAgICAgIExpc3Q8U3RyaW5nPiB2YWxpZHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIHZhbGlkcy5hZGQoQ29uZmlnTW9kZWxDb25zdGFudC5NT0RFTF9DT05URU5UX1RZUEVfVE9TQ0FfSlNPTik7DQorICAgICAgICB2YWxpZHMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfQ09OVEVOVF9UWVBFX1RFTVBMQVRFKTsNCisgICAgICAgIHJldHVybiB2YWxpZHM7DQorDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0Q29uZmlnTW9kZWxUYWdzKENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIFN0cmluZyB0YWdzID0gbnVsbDsNCisgICAgICAgIGlmIChDb2xsZWN0aW9uVXRpbHMuaXNOb3RFbXB0eShjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpKSB7DQorDQorICAgICAgICAgICAgZm9yIChDb25maWdNb2RlbENvbnRlbnQgY29uZmlnTW9kZWxDb250ZW50IDogY29uZmlnTW9kZWwuZ2V0Q29uZmlnTW9kZWxDb250ZW50cygpKSB7DQorICAgICAgICAgICAgICAgIGlmIChjb25maWdNb2RlbENvbnRlbnQgIT0gbnVsbCAmJiBTdHJpbmdVdGlscy5pc05vdEJsYW5rKGNvbmZpZ01vZGVsQ29udGVudC5nZXRDb250ZW50VHlwZSgpKSkgew0KKw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFnZXRWYWxpZENvbnRlbnRUeXBlcygpLmNvbnRhaW5zKGNvbmZpZ01vZGVsQ29udGVudC5nZXRDb250ZW50VHlwZSgpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oY29uZmlnTW9kZWxDb250ZW50LmdldENvbnRlbnRUeXBlKCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgYSB2YWxpZCBjb250ZW50IHR5cGUsIEl0IHNob3VsZCBiZSBhbnkgb25lIG9mIHRoaXMgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBnZXRWYWxpZENvbnRlbnRUeXBlcygpKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdNb2RlbENvbnRlbnQuZ2V0Q29udGVudFR5cGUoKS5lcXVhbHMoQ29uZmlnTW9kZWxDb25zdGFudC5NT0RFTF9DT05URU5UX1RZUEVfVE9TQ0FfSlNPTikpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlID0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEphY2tzb25VdGlscy5yZWFkVmFsdWUoY29uZmlnTW9kZWxDb250ZW50LmdldENvbnRlbnQoKSwgU2VydmljZVRlbXBsYXRlLmNsYXNzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrTm90TnVsbChzZXJ2aWNlVGVtcGxhdGUsICJmYWlsZWQgdG8gdHJhbnNmb3JtIHNlcnZpY2UgdGVtcGxhdGUgY29udGVudCIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5nZXRNZXRhZGF0YSgpLnB1dChCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfQVVUSE9SLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsLmdldFVwZGF0ZWRCeSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldE1ldGFkYXRhKCkucHV0KEJsdWVQcmludENvbnN0YW50cy5NRVRBREFUQV9URU1QTEFURV9WRVJTSU9OLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsLmdldEFydGlmYWN0VmVyc2lvbigpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldE1ldGFkYXRhKCkucHV0KEJsdWVQcmludENvbnN0YW50cy5NRVRBREFUQV9URU1QTEFURV9OQU1FLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsLmdldEFydGlmYWN0TmFtZSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgdGFncyA9IFN0cmluZy52YWx1ZU9mKHNlcnZpY2VUZW1wbGF0ZS5nZXRNZXRhZGF0YSgpKTsNCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gTm90aGluZw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHRhZ3M7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBwdWJsaXNoQ29uZmlnTW9kZWwgbWV0aG9kDQorICAgICAqDQorICAgICAqIEBwYXJhbSBpZCBpZA0KKyAgICAgKiBAcmV0dXJuIENvbmZpZ01vZGVsDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIENvbmZpZ01vZGVsIHB1Ymxpc2hDb25maWdNb2RlbChMb25nIGlkKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIENvbmZpZ01vZGVsIGRiQ29uZmlnTW9kZWwgPSBudWxsOw0KKyAgICAgICAgaWYgKGlkICE9IG51bGwpIHsNCisgICAgICAgICAgICBPcHRpb25hbDxDb25maWdNb2RlbD4gZGJDb25maWdNb2RlbE9wdGlvbmFsID0gY29uZmlnTW9kZWxSZXBvc2l0b3J5LmZpbmRCeUlkKGlkKTsNCisgICAgICAgICAgICBpZiAoZGJDb25maWdNb2RlbE9wdGlvbmFsLmlzUHJlc2VudCgpKSB7DQorICAgICAgICAgICAgICAgIGRiQ29uZmlnTW9kZWwgPSBkYkNvbmZpZ01vZGVsT3B0aW9uYWwuZ2V0KCk7DQorICAgICAgICAgICAgICAgIExpc3Q8Q29uZmlnTW9kZWxDb250ZW50PiBjb25maWdNb2RlbENvbnRlbnRzID0gZGJDb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCk7DQorICAgICAgICAgICAgICAgIGlmIChjb25maWdNb2RlbENvbnRlbnRzICE9IG51bGwgJiYgIWNvbmZpZ01vZGVsQ29udGVudHMuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKENvbmZpZ01vZGVsQ29udGVudCBjb25maWdNb2RlbENvbnRlbnQgOiBjb25maWdNb2RlbENvbnRlbnRzKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ01vZGVsQ29udGVudC5nZXRDb250ZW50VHlwZSgpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXF1YWxzKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfQ09OVEVOVF9UWVBFX1RPU0NBX0pTT04pKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUgPSBKYWNrc29uVXRpbHMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVhZFZhbHVlKGNvbmZpZ01vZGVsQ29udGVudC5nZXRDb250ZW50KCksIFNlcnZpY2VUZW1wbGF0ZS5jbGFzcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlVGVtcGxhdGUgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUoc2VydmljZVRlbXBsYXRlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkYkNvbmZpZ01vZGVsLnNldFB1Ymxpc2hlZChBcHBsaWNhdGlvbkNvbnN0YW50cy5BQ1RJVkVfWSk7DQorICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5zYXZlKGRiQ29uZmlnTW9kZWwpOw0KKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiQ29uZmlnIG1vZGVsICh7fSkgcHVibGlzaGVkIHN1Y2Nlc3NmdWxseS4iLCBpZCk7DQorDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGRiQ29uZmlnTW9kZWw7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZSBtZXRob2QNCisgICAgICoNCisgICAgICogQHBhcmFtIHNlcnZpY2VUZW1wbGF0ZSBTZXJ2aWNlIFRlbXBsYXRlDQorICAgICAqIEByZXR1cm4gU2VydmljZVRlbXBsYXRlDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFNlcnZpY2VUZW1wbGF0ZSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ01vZGVsVmFsaWRhdG9yU2VydmljZS52YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9Db25maWdNb2RlbFNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9Db25maWdNb2RlbFNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWVlM2EzCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0NvbmZpZ01vZGVsU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMjQ3IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2U7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5Db2xsZWN0aW9uVXRpbHM7DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50czsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkNvbmZpZ01vZGVsQ29uc3RhbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlNlcnZpY2VUZW1wbGF0ZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmNvbW1vbi5BcHBsaWNhdGlvbkNvbnN0YW50czsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbENvbnRlbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yZXBvc2l0b3J5LkNvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yZXBvc2l0b3J5LkNvbmZpZ01vZGVsUmVwb3NpdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5TZXJ2aWNlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuT3B0aW9uYWw7DQorDQorLyoqDQorICogQ29uZmlnTW9kZWxTZXJ2aWNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBTZXJ2aWNlIFRlbXBsYXRlIFNlcnZpY2UgcHJvY2Vzc2luZyBDb25maWdNb2RlbFNlcnZpY2UNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorDQorQFNlcnZpY2UNCitwdWJsaWMgY2xhc3MgQ29uZmlnTW9kZWxTZXJ2aWNlIHsNCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENvbmZpZ01vZGVsU2VydmljZS5jbGFzcyk7DQorDQorICAgIHByaXZhdGUgQ29uZmlnTW9kZWxSZXBvc2l0b3J5IGNvbmZpZ01vZGVsUmVwb3NpdG9yeTsNCisgICAgcHJpdmF0ZSBDb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5IGNvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnk7DQorICAgIHByaXZhdGUgQ29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlIGNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBDb25maWdNb2RlbFNlcnZpY2UgY29uc3RydWN0b3IuDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gY29uZmlnTW9kZWxSZXBvc2l0b3J5DQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5DQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbENyZWF0ZVNlcnZpY2UNCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbFNlcnZpY2UoQ29uZmlnTW9kZWxSZXBvc2l0b3J5IGNvbmZpZ01vZGVsUmVwb3NpdG9yeSwNCisgICAgICAgICAgICBDb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5IGNvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnksDQorICAgICAgICAgICAgQ29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlIGNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZSkgew0KKyAgICAgICAgdGhpcy5jb25maWdNb2RlbFJlcG9zaXRvcnkgPSBjb25maWdNb2RlbFJlcG9zaXRvcnk7DQorICAgICAgICB0aGlzLmNvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnkgPSBjb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5Ow0KKyAgICAgICAgdGhpcy5jb25maWdNb2RlbENyZWF0ZVNlcnZpY2UgPSBjb25maWdNb2RlbENyZWF0ZVNlcnZpY2U7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZXRJbml0aWFsQ29uZmlnTW9kZWwgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gdGVtcGxhdGVOYW1lDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBnZXRJbml0aWFsQ29uZmlnTW9kZWwoU3RyaW5nIHRlbXBsYXRlTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBDb25maWdNb2RlbCBjb25maWdNb2RlbCA9IG51bGw7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayh0ZW1wbGF0ZU5hbWUpKSB7DQorICAgICAgICAgICAgY29uZmlnTW9kZWwgPSBuZXcgQ29uZmlnTW9kZWwoKTsNCisgICAgICAgICAgICBjb25maWdNb2RlbC5zZXRBcnRpZmFjdE5hbWUodGVtcGxhdGVOYW1lKTsNCisgICAgICAgICAgICBjb25maWdNb2RlbC5zZXRBcnRpZmFjdFR5cGUoQXBwbGljYXRpb25Db25zdGFudHMuQVNEQ19BUlRJRkFDVF9UWVBFX1NETkNfTU9ERUwpOw0KKyAgICAgICAgICAgIGNvbmZpZ01vZGVsLnNldFVwZGF0ZWRCeSgieHh4eHhAeHh4LmNvbSIpOw0KKyAgICAgICAgICAgIENvbmZpZ01vZGVsQ29udGVudCBjb25maWdNb2RlbENvbnRlbnQgPSBuZXcgQ29uZmlnTW9kZWxDb250ZW50KCk7DQorICAgICAgICAgICAgY29uZmlnTW9kZWxDb250ZW50LnNldENvbnRlbnRUeXBlKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfQ09OVEVOVF9UWVBFX1RPU0NBX0pTT04pOw0KKyAgICAgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudC5zZXROYW1lKHRlbXBsYXRlTmFtZSk7DQorICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSB0aGlzLmNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZS5jcmVhdGVJbml0aWFsU2VydmljZVRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZU5hbWUpOw0KKyAgICAgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudC5zZXRDb250ZW50KGNvbnRlbnQpOw0KKw0KKyAgICAgICAgICAgIExpc3Q8Q29uZmlnTW9kZWxDb250ZW50PiBjb25maWdNb2RlbENvbnRlbnRzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorICAgICAgICAgICAgY29uZmlnTW9kZWxDb250ZW50cy5hZGQoY29uZmlnTW9kZWxDb250ZW50KTsNCisNCisgICAgICAgICAgICBjb25maWdNb2RlbC5zZXRDb25maWdNb2RlbENvbnRlbnRzKGNvbmZpZ01vZGVsQ29udGVudHMpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGVsOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2F2ZUNvbmZpZ01vZGVsIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGNvbmZpZ01vZGVsDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBzYXZlQ29uZmlnTW9kZWwoQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlLnNhdmVDb25maWdNb2RlbChjb25maWdNb2RlbCk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBwdWJsaXNoQ29uZmlnTW9kZWwgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gaWQNCisgICAgICogQHJldHVybiBDb25maWdNb2RlbA0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIENvbmZpZ01vZGVsIHB1Ymxpc2hDb25maWdNb2RlbChMb25nIGlkKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZS5wdWJsaXNoQ29uZmlnTW9kZWwoaWQpOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2VhcmNoQ29uZmlnTW9kZWxzIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBDb25maWdNb2RlbA0KKyAgICAgKi8NCisgICAgcHVibGljIExpc3Q8Q29uZmlnTW9kZWw+IHNlYXJjaENvbmZpZ01vZGVscyhTdHJpbmcgdGFncykgew0KKyAgICAgICAgTGlzdDxDb25maWdNb2RlbD4gbW9kZWxzID0gY29uZmlnTW9kZWxSZXBvc2l0b3J5LmZpbmRCeVRhZ3NDb250YWluaW5nSWdub3JlQ2FzZSh0YWdzKTsNCisgICAgICAgIGlmIChtb2RlbHMgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIGZvciAoQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgOiBtb2RlbHMpIHsNCisgICAgICAgICAgICAgICAgY29uZmlnTW9kZWwuc2V0Q29uZmlnTW9kZWxDb250ZW50cyhudWxsKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbW9kZWxzOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0Q29uZmlnTW9kZWxCeU5hbWVBbmRWZXJzaW9uIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWUNCisgICAgICogQHBhcmFtIHZlcnNpb24NCisgICAgICogQHJldHVybiBDb25maWdNb2RlbA0KKyAgICAgKi8NCisgICAgcHVibGljIENvbmZpZ01vZGVsIGdldENvbmZpZ01vZGVsQnlOYW1lQW5kVmVyc2lvbihTdHJpbmcgbmFtZSwgU3RyaW5nIHZlcnNpb24pIHsNCisgICAgICAgIENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsID0gbnVsbDsNCisgICAgICAgIE9wdGlvbmFsPENvbmZpZ01vZGVsPiBkYkNvbmZpZ01vZGVsID0gbnVsbDsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHZlcnNpb24pKSB7DQorICAgICAgICAgICAgZGJDb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5maW5kQnlBcnRpZmFjdE5hbWVBbmRBcnRpZmFjdFZlcnNpb24obmFtZSwgdmVyc2lvbik7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGRiQ29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlcG9zaXRvcnkuZmluZFRvcEJ5QXJ0aWZhY3ROYW1lT3JkZXJCeUFydGlmYWN0VmVyc2lvbkRlc2MobmFtZSk7DQorICAgICAgICB9DQorICAgICAgICBpZiAoZGJDb25maWdNb2RlbC5pc1ByZXNlbnQoKSkgew0KKyAgICAgICAgICAgIGNvbmZpZ01vZGVsID0gZGJDb25maWdNb2RlbC5nZXQoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBjb25maWdNb2RlbDsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdldENvbmZpZ01vZGVsIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBnZXRDb25maWdNb2RlbChMb25nIGlkKSB7DQorICAgICAgICBDb25maWdNb2RlbCBjb25maWdNb2RlbCA9IG51bGw7DQorICAgICAgICBpZiAoaWQgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIE9wdGlvbmFsPENvbmZpZ01vZGVsPiBkYkNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWxSZXBvc2l0b3J5LmZpbmRCeUlkKGlkKTsNCisgICAgICAgICAgICBpZiAoZGJDb25maWdNb2RlbC5pc1ByZXNlbnQoKSkgew0KKyAgICAgICAgICAgICAgICBjb25maWdNb2RlbCA9IGRiQ29uZmlnTW9kZWwuZ2V0KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGVsOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGNsb25lIG9mIHRoZSBnaXZlbiBtb2RlbCBpZCwgYnkgbWFza2luZyB0aGUgb3RoZXIgdW5yZWxhdGVkIGZpZWxkcw0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4NCisgICAgICovDQorDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBnZXRDbG9uZUNvbmZpZ01vZGVsKExvbmcgaWQpIHsNCisNCisgICAgICAgIENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsID0gbnVsbDsNCisgICAgICAgIENvbmZpZ01vZGVsIGNsb25lQ29uZmlnTW9kZWwgPSBudWxsOw0KKyAgICAgICAgaWYgKGlkICE9IG51bGwpIHsNCisgICAgICAgICAgICBPcHRpb25hbDxDb25maWdNb2RlbD4gZGJDb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVwb3NpdG9yeS5maW5kQnlJZChpZCk7DQorICAgICAgICAgICAgaWYgKGRiQ29uZmlnTW9kZWwuaXNQcmVzZW50KCkpIHsNCisgICAgICAgICAgICAgICAgY29uZmlnTW9kZWwgPSBkYkNvbmZpZ01vZGVsLmdldCgpOw0KKyAgICAgICAgICAgICAgICBjbG9uZUNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWw7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0VXBkYXRlZEJ5KCJ4eHh4eEB4eHguY29tIik7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0QXJ0aWZhY3ROYW1lKCJYWFhYIik7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0UHVibGlzaGVkKCJYWFhYIik7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0UHVibGlzaGVkKCJYWFhYIik7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0VXBkYXRlZEJ5KCJYWFhYIik7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0SWQobnVsbCk7DQorICAgICAgICAgICAgICAgIGNsb25lQ29uZmlnTW9kZWwuc2V0VGFncyhudWxsKTsNCisgICAgICAgICAgICAgICAgY2xvbmVDb25maWdNb2RlbC5zZXRDcmVhdGVkRGF0ZShuZXcgRGF0ZSgpKTsNCisgICAgICAgICAgICAgICAgTGlzdDxDb25maWdNb2RlbENvbnRlbnQ+IGNvbmZpZ01vZGVsQ29udGVudHMgPSBjbG9uZUNvbmZpZ01vZGVsLmdldENvbmZpZ01vZGVsQ29udGVudHMoKTsNCisNCisgICAgICAgICAgICAgICAgaWYgKENvbGxlY3Rpb25VdGlscy5pc05vdEVtcHR5KGNvbmZpZ01vZGVsQ29udGVudHMpKSB7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKENvbmZpZ01vZGVsQ29udGVudCBjb25maWdNb2RlbENvbnRlbnQgOiBjb25maWdNb2RlbENvbnRlbnRzKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ01vZGVsQ29udGVudCAhPSBudWxsICYmIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoY29uZmlnTW9kZWxDb250ZW50LmdldENvbnRlbnRUeXBlKCkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudC5zZXRJZChudWxsKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnTW9kZWxDb250ZW50LnNldENyZWF0aW9uRGF0ZShuZXcgRGF0ZSgpKTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfQ09OVEVOVF9UWVBFX1RPU0NBX0pTT04NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXF1YWxzSWdub3JlQ2FzZShjb25maWdNb2RlbENvbnRlbnQuZ2V0Q29udGVudFR5cGUoKSkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUgPSBKYWNrc29uVXRpbHMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlYWRWYWx1ZShjb25maWdNb2RlbENvbnRlbnQuZ2V0Q29udGVudCgpLCBTZXJ2aWNlVGVtcGxhdGUuY2xhc3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VUZW1wbGF0ZSAhPSBudWxsICYmIHNlcnZpY2VUZW1wbGF0ZS5nZXRNZXRhZGF0YSgpICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1dChCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfQVVUSE9SLCAiWFhYWCIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5nZXRNZXRhZGF0YSgpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHV0KEJsdWVQcmludENvbnN0YW50cy5NRVRBREFUQV9URU1QTEFURV9WRVJTSU9OLCAiMS4wLjAiKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnB1dChCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfTkFNRSwgIlhYWFhYWCIpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudC5zZXRDb250ZW50KEphY2tzb25VdGlscy5nZXRKc29uKHNlcnZpY2VUZW1wbGF0ZSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIGNsb25lQ29uZmlnTW9kZWw7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBkZWxldGVDb25maWdNb2RlbCBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBpZA0KKyAgICAgKi8NCisNCisgICAgQFRyYW5zYWN0aW9uYWwNCisgICAgcHVibGljIHZvaWQgZGVsZXRlQ29uZmlnTW9kZWwoTG9uZyBpZCkgew0KKyAgICAgICAgT3B0aW9uYWw8Q29uZmlnTW9kZWw+IGRiQ29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlcG9zaXRvcnkuZmluZEJ5SWQoaWQpOw0KKyAgICAgICAgaWYgKGRiQ29uZmlnTW9kZWwuaXNQcmVzZW50KCkpIHsNCisgICAgICAgICAgICBjb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5LmRlbGV0ZUJ5Q29uZmlnTW9kZWwoZGJDb25maWdNb2RlbC5nZXQoKSk7DQorICAgICAgICAgICAgY29uZmlnTW9kZWxSZXBvc2l0b3J5LmRlbGV0ZShkYkNvbmZpZ01vZGVsLmdldCgpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvQ29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvQ29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiMDBmOAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9Db25maWdNb2RlbFZhbGlkYXRvclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2U7DQorDQoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuUHJlY29uZGl0aW9uczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5TZXJ2aWNlVGVtcGxhdGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS52YWxpZGF0b3IuU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsNCisNCisvKioNCisgKiBTZXJ2aWNlVGVtcGxhdGVWYWxpZGF0b3JTZXJ2aWNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBTZXJ2aWNlIHRvIFZhbGlkYXRlIFNlcnZpY2UgTW9kZWwgVGVtcGxhdGUNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorDQorQFNlcnZpY2UNCitwdWJsaWMgY2xhc3MgQ29uZmlnTW9kZWxWYWxpZGF0b3JTZXJ2aWNlIHsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gc2VydmljZVRlbXBsYXRlQ29udGVudA0KKyAgICAgKiBAcmV0dXJuIFNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFNlcnZpY2VUZW1wbGF0ZSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShTdHJpbmcgc2VydmljZVRlbXBsYXRlQ29udGVudCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhzZXJ2aWNlVGVtcGxhdGVDb250ZW50KSwgIlNlcnZpY2UgVGVtcGxhdGUgQ29udGVudCBpcyAgKCIgKyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ICsgIikgbm90IERlZmluZWQuIik7DQorICAgICAgICBTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlID0NCisgICAgICAgICAgICAgICAgSmFja3NvblV0aWxzLnJlYWRWYWx1ZShzZXJ2aWNlVGVtcGxhdGVDb250ZW50LCBTZXJ2aWNlVGVtcGxhdGUuY2xhc3MpOw0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlU2VydmljZVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZSk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBlbmhhbmNlU2VydmljZVRlbXBsYXRlDQorICAgICAqDQorICAgICAqIEBwYXJhbSBzZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHJldHVybiBTZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJzcXVpZDpTMDAxMTIiKQ0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlIHZhbGlkYXRlU2VydmljZVRlbXBsYXRlKFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGwoc2VydmljZVRlbXBsYXRlLCAiU2VydmljZSBUZW1wbGF0ZSBpcyBub3QgZGVmaW5lZC4iKTsNCisgICAgICAgIFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRvciB2YWxpZGF0b3IgPSBuZXcgU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yKCk7DQorICAgICAgICB2YWxpZGF0b3IudmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUoc2VydmljZVRlbXBsYXRlKTsNCisgICAgICAgIHJldHVybiBzZXJ2aWNlVGVtcGxhdGU7DQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL0RhdGFCYXNlSW5pdFNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9EYXRhQmFzZUluaXRTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiMzE5YwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9EYXRhQmFzZUluaXRTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzMjUgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZTsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLkNvbGxlY3Rpb25VdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLklPVXRpbHM7DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRleHQuU3RyQnVpbGRlcjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50czsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuQXJ0aWZhY3RUeXBlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5EYXRhVHlwZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuTm9kZVR5cGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhLkRpY3Rpb25hcnlEZWZpbml0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLk1vZGVsVHlwZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5SZXNvdXJjZURpY3Rpb25hcnk7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS51dGlscy5Db25maWdNb2RlbFV0aWxzOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5WYWx1ZTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LmF1dG9jb25maWd1cmUuY29uZGl0aW9uLkNvbmRpdGlvbmFsT25Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlLmlvLlJlc291cmNlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUuaW8uc3VwcG9ydC5SZXNvdXJjZVBhdHRlcm5SZXNvbHZlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLkNvbXBvbmVudDsNCisNCitpbXBvcnQgamF2YXguYW5ub3RhdGlvbi5Qb3N0Q29uc3RydWN0Ow0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIERhdGFCYXNlSW5pdFNlcnZpY2UuamF2YSBQdXJwb3NlOiBQcm92aWRlIERhdGFCYXNlSW5pdFNlcnZpY2UgU2VydmljZQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCisNCitAQ29tcG9uZW50DQorQENvbmRpdGlvbmFsT25Qcm9wZXJ0eShuYW1lID0gImJsdWVwcmludHMubG9hZC5pbml0aWFsLWRhdGEiLCBoYXZpbmdWYWx1ZSA9ICJ0cnVlIiwgbWF0Y2hJZk1pc3NpbmcgPSBmYWxzZSkNCitwdWJsaWMgY2xhc3MgRGF0YUJhc2VJbml0U2VydmljZSB7DQorDQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihEYXRhQmFzZUluaXRTZXJ2aWNlLmNsYXNzKTsNCisgICAgQFZhbHVlKCIke2JsdWVwcmludHMubG9hZC5wYXRofSIpDQorICAgIHByaXZhdGUgU3RyaW5nIG1vZGVsTG9hZFBhdGg7DQorICAgIHByaXZhdGUgTW9kZWxUeXBlU2VydmljZSBtb2RlbFR5cGVTZXJ2aWNlOw0KKyAgICBwcml2YXRlIFJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UgcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZTsNCisgICAgcHJpdmF0ZSBDb25maWdNb2RlbFNlcnZpY2UgY29uZmlnTW9kZWxTZXJ2aWNlOw0KKw0KKyAgICBwcml2YXRlIFN0cmluZyBkYXRhVHlwZVBhdGg7DQorICAgIHByaXZhdGUgU3RyaW5nIG5vZGVUeXBlUGF0aDsNCisgICAgcHJpdmF0ZSBTdHJpbmcgYXJ0aWZhY3RUeXBlUGF0aDsNCisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VEaWN0aW9uYXJ5UGF0aDsNCisgICAgcHJpdmF0ZSBTdHJpbmcgYmx1ZVByaW50c1BhdGg7DQorDQorICAgIEBBdXRvd2lyZWQNCisgICAgcHJpdmF0ZSBSZXNvdXJjZVBhdHRlcm5SZXNvbHZlciByZXNvdXJjZUxvYWRlcjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBEYXRhQmFzZUluaXRTZXJ2aWNlLCB1c2VkIHRvIGxvYWQgdGhlIGluaXRpYWwgZGF0YQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gbW9kZWxUeXBlU2VydmljZQ0KKyAgICAgKiBAcGFyYW0gcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZQ0KKyAgICAgKiBAcGFyYW0gY29uZmlnTW9kZWxTZXJ2aWNlDQorICAgICAqLw0KKyAgICBwdWJsaWMgRGF0YUJhc2VJbml0U2VydmljZShNb2RlbFR5cGVTZXJ2aWNlIG1vZGVsVHlwZVNlcnZpY2UsIFJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UgcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnTW9kZWxTZXJ2aWNlIGNvbmZpZ01vZGVsU2VydmljZSkgew0KKyAgICAgICAgdGhpcy5tb2RlbFR5cGVTZXJ2aWNlID0gbW9kZWxUeXBlU2VydmljZTsNCisgICAgICAgIHRoaXMucmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZSA9IHJlc291cmNlRGljdGlvbmFyeVNlcnZpY2U7DQorICAgICAgICB0aGlzLmNvbmZpZ01vZGVsU2VydmljZSA9IGNvbmZpZ01vZGVsU2VydmljZTsNCisgICAgICAgIGxvZy5pbmZvKCJEYXRhQmFzZUluaXRTZXJ2aWNlIHN0YXJ0ZWQuLi4iKTsNCisNCisgICAgfQ0KKw0KKyAgICBAUG9zdENvbnN0cnVjdA0KKyAgICBwcml2YXRlIHZvaWQgaW5pdERhdGFiYXNlKCkgew0KKyAgICAgICAgbG9nLmluZm8oImxvYWRpbmcgQmx1ZXByaW50cyBmcm9tIERJUiA6IHt9IiwgbW9kZWxMb2FkUGF0aCk7DQorICAgICAgICBkYXRhVHlwZVBhdGggPSBtb2RlbExvYWRQYXRoICsgIi9tb2RlbF90eXBlL2RhdGFfdHlwZSI7DQorICAgICAgICBub2RlVHlwZVBhdGggPSBtb2RlbExvYWRQYXRoICsgIi9tb2RlbF90eXBlL25vZGVfdHlwZSI7DQorICAgICAgICBhcnRpZmFjdFR5cGVQYXRoID0gbW9kZWxMb2FkUGF0aCArICIvbW9kZWxfdHlwZS9hcnRpZmFjdF90eXBlIjsNCisgICAgICAgIHJlc291cmNlRGljdGlvbmFyeVBhdGggPSBtb2RlbExvYWRQYXRoICsgIi9yZXNvdXJjZV9kaWN0aW9uYXJ5IjsNCisgICAgICAgIGJsdWVQcmludHNQYXRoID0gbW9kZWxMb2FkUGF0aCArICIvYmx1ZXByaW50cyI7DQorDQorICAgICAgICBsb2cuaW5mbygibG9hZGluZyBkYXRhVHlwZVBhdGggZnJvbSBESVIgOiB7fSIsIGRhdGFUeXBlUGF0aCk7DQorICAgICAgICBsb2cuaW5mbygibG9hZGluZyBub2RlVHlwZVBhdGggZnJvbSBESVIgOiB7fSIsIG5vZGVUeXBlUGF0aCk7DQorICAgICAgICBsb2cuaW5mbygibG9hZGluZyBhcnRpZmFjdFR5cGVQYXRoIGZyb20gRElSIDoge30iLCBhcnRpZmFjdFR5cGVQYXRoKTsNCisgICAgICAgIGxvZy5pbmZvKCJsb2FkaW5nIHJlc291cmNlRGljdGlvbmFyeVBhdGggZnJvbSBESVIgOiB7fSIsIHJlc291cmNlRGljdGlvbmFyeVBhdGgpOw0KKyAgICAgICAgbG9nLmluZm8oImxvYWRpbmcgYmx1ZVByaW50c1BhdGggZnJvbSBESVIgOiB7fSIsIGJsdWVQcmludHNQYXRoKTsNCisNCisgICAgICAgIGxvYWRNb2RlbFR5cGUoKTsNCisgICAgICAgIGxvYWRSZXNvdXJjZURpY3Rpb25hcnkoKTsNCisgICAgICAgIGxvYWRCbHVlcHJpbnRzKCk7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSB2b2lkIGxvYWRNb2RlbFR5cGUoKSB7DQorICAgICAgICBsb2cuaW5mbygiICoqKioqKioqKioqKioqKioqKioqKioqKioqKiBsb2FkTW9kZWxUeXBlICoqKioqKioqKioqKioqKioqKioqKioiKTsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgUmVzb3VyY2VbXSBkYXRhVHlwZWZpbGVzID0gZ2V0UGF0aFJlc291cmNlcyhkYXRhVHlwZVBhdGgsICIuanNvbiIpOw0KKyAgICAgICAgICAgIFN0ckJ1aWxkZXIgZXJyb3JCdWlsZGVyID0gbmV3IFN0ckJ1aWxkZXIoKTsNCisgICAgICAgICAgICBpZiAoZGF0YVR5cGVmaWxlcyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIGZvciAoUmVzb3VyY2UgZmlsZSA6IGRhdGFUeXBlZmlsZXMpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkRGF0YVR5cGUoZmlsZSwgZXJyb3JCdWlsZGVyKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBSZXNvdXJjZVtdIG5vZGVUeXBlZmlsZXMgPSBnZXRQYXRoUmVzb3VyY2VzKG5vZGVUeXBlUGF0aCwgIi5qc29uIik7DQorICAgICAgICAgICAgaWYgKG5vZGVUeXBlZmlsZXMgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBmb3IgKFJlc291cmNlIGZpbGUgOiBub2RlVHlwZWZpbGVzKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE5vZGVUeXBlKGZpbGUsIGVycm9yQnVpbGRlcik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgUmVzb3VyY2VbXSBhcnRpZmFjdFR5cGVmaWxlcyA9IGdldFBhdGhSZXNvdXJjZXMoYXJ0aWZhY3RUeXBlUGF0aCwgIi5qc29uIik7DQorICAgICAgICAgICAgaWYgKGFydGlmYWN0VHlwZWZpbGVzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgZm9yIChSZXNvdXJjZSBmaWxlIDogYXJ0aWZhY3RUeXBlZmlsZXMpIHsNCisgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQXJ0aWZhY3RUeXBlKGZpbGUsIGVycm9yQnVpbGRlcik7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKCFlcnJvckJ1aWxkZXIuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgIGxvZy5lcnJvcihlcnJvckJ1aWxkZXIudG9TdHJpbmcoKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBsb2cuZXJyb3IoIkZhaWxlZCBpbiBEYXRhIHR5cGUgbG9hZGluZyIsIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBsb2FkUmVzb3VyY2VEaWN0aW9uYXJ5KCkgew0KKyAgICAgICAgbG9nLmluZm8oDQorICAgICAgICAgICAgICAgICIgKioqKioqKioqKioqKioqKioqKioqKioqKioqIGxvYWRSZXNvdXJjZURpY3Rpb25hcnkgKioqKioqKioqKioqKioqKioqKioqKiIpOw0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBSZXNvdXJjZVtdIGRhdGFUeXBlZmlsZXMgPSBnZXRQYXRoUmVzb3VyY2VzKHJlc291cmNlRGljdGlvbmFyeVBhdGgsICIuanNvbiIpOw0KKyAgICAgICAgICAgIGlmIChkYXRhVHlwZWZpbGVzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgU3RyQnVpbGRlciBlcnJvckJ1aWxkZXIgPSBuZXcgU3RyQnVpbGRlcigpOw0KKyAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSBudWxsOw0KKyAgICAgICAgICAgICAgICBmb3IgKFJlc291cmNlIGZpbGUgOiBkYXRhVHlwZWZpbGVzKSB7DQorICAgICAgICAgICAgICAgICAgICB0cnkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZS5nZXRGaWxlbmFtZSgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy50cmFjZSgiTG9hZGluZyA6IHt9IiwgZmlsZU5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZWZpbml0aW9uQ29udGVudCA9IGdldFJlc291cmNlQ29udGVudChmaWxlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICBEaWN0aW9uYXJ5RGVmaW5pdGlvbiBkaWN0aW9uYXJ5RGVmaW5pdGlvbiA9DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKYWNrc29uVXRpbHMucmVhZFZhbHVlKGRlZmluaXRpb25Db250ZW50LCBEaWN0aW9uYXJ5RGVmaW5pdGlvbi5jbGFzcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpY3Rpb25hcnlEZWZpbml0aW9uICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VEaWN0aW9uYXJ5IHJlc291cmNlRGljdGlvbmFyeSA9IG5ldyBSZXNvdXJjZURpY3Rpb25hcnkoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5LnNldFJlc291cmNlUGF0aChkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXRSZXNvdXJjZVBhdGgoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeS5zZXROYW1lKGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeS5zZXREZWZpbml0aW9uKGRlZmluaXRpb25Db250ZW50KTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldFZhbGlkVmFsdWVzKCkgIT0gbnVsbCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0VmFsaWRWYWx1ZXMoU3RyaW5nLnZhbHVlT2YoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0VmFsaWRWYWx1ZXMoKSkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0U2FtcGxlVmFsdWUoKSAhPSBudWxsKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWxpZFZhbHVlcyhTdHJpbmcudmFsdWVPZihkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXRTYW1wbGVWYWx1ZSgpKSk7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeS5zZXRSZXNvdXJjZVR5cGUoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0UmVzb3VyY2VUeXBlKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURpY3Rpb25hcnkuc2V0RGF0YVR5cGUoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0RGF0YVR5cGUoKSk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeS5zZXRFbnRyeVNjaGVtYShkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXRFbnRyeVNjaGVtYSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5LnNldERlc2NyaXB0aW9uKGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldERlc2NyaXB0aW9uKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURpY3Rpb25hcnkuc2V0VXBkYXRlZEJ5KGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldFVwZGF0ZWRCeSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0VGFncygpKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5LnNldFRhZ3MoDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldE5hbWUoKSArICIsICIgKyBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5nZXRVcGRhdGVkQnkoKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIiArIGRpY3Rpb25hcnlEZWZpbml0aW9uLmdldFJlc291cmNlVHlwZSgpICsgIiwgIg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGljdGlvbmFyeURlZmluaXRpb24uZ2V0VXBkYXRlZEJ5KCkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5LnNldFRhZ3MoZGljdGlvbmFyeURlZmluaXRpb24uZ2V0VGFncygpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlLnNhdmVSZXNvdXJjZURpY3Rpb25hcnkocmVzb3VyY2VEaWN0aW9uYXJ5KTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nLnRyYWNlKCIgTG9hZGVkIHN1Y2Nlc3NmdWxseSA6IHt9IiwgZmlsZS5nZXRGaWxlbmFtZSgpKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJjb3VsZG4ndCBnZXQgZGljdGlvbmFyeSBmcm9tIGNvbnRlbnQgaW5mb3JtYXRpb24iKTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQnVpbGRlci5hcHBlbmRsbigiRGljdGlvbmFyeSBsb2FkaW5nIEVycm9ycyA6ICIgKyBmaWxlLmdldEZpbGVuYW1lKCkgKyAiOiIgKyBlLmdldE1lc3NhZ2UoKSk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKCFlcnJvckJ1aWxkZXIuaXNFbXB0eSgpKSB7DQorICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoZXJyb3JCdWlsZGVyLnRvU3RyaW5nKCkpOw0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBsb2cuZXJyb3IoDQorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIGluIFJlc291cmNlIGRpY3Rpb25hcnkgbG9hZGluZyIsIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBsb2FkQmx1ZXByaW50cygpIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKioqKioqKioqKioqKioqKioqKioqKioqKiogbG9hZFNlcnZpY2VUZW1wbGF0ZSAqKioqKioqKioqKioqKioqKioqKioqIik7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIExpc3Q8U3RyaW5nPiBzZXJ2aWNlVGVtcGxhdGVEaXJzID0gQ29uZmlnTW9kZWxVdGlscy5nZXRCbHVlcHJpbnROYW1lcyhibHVlUHJpbnRzUGF0aCk7DQorICAgICAgICAgICAgaWYgKENvbGxlY3Rpb25VdGlscy5pc05vdEVtcHR5KHNlcnZpY2VUZW1wbGF0ZURpcnMpKSB7DQorICAgICAgICAgICAgICAgIFN0ckJ1aWxkZXIgZXJyb3JCdWlsZGVyID0gbmV3IFN0ckJ1aWxkZXIoKTsNCisgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgZmlsZU5hbWUgOiBzZXJ2aWNlVGVtcGxhdGVEaXJzKSB7DQorICAgICAgICAgICAgICAgICAgICB0cnkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBibHVlUHJpbnRQYXRoID0gdGhpcy5ibHVlUHJpbnRzUGF0aC5jb25jYXQoIi8iKS5jb25jYXQoZmlsZU5hbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiKioqKiogTG9hZGluZyBzZXJ2aWNlIHRlbXBsYXRlIDogIHt9IiwgYmx1ZVByaW50UGF0aCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgPSBDb25maWdNb2RlbFV0aWxzLmdldENvbmZpZ01vZGVsKGJsdWVQcmludFBhdGgpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ01vZGVsID0gdGhpcy5jb25maWdNb2RlbFNlcnZpY2Uuc2F2ZUNvbmZpZ01vZGVsKGNvbmZpZ01vZGVsKTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiUHVibGlzaGluZyA6IHt9IiwgY29uZmlnTW9kZWwuZ2V0SWQoKSk7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdNb2RlbFNlcnZpY2UucHVibGlzaENvbmZpZ01vZGVsKGNvbmZpZ01vZGVsLmdldElkKCkpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJMb2FkZWQgc2VydmljZSB0ZW1wbGF0ZSBzdWNjZXNzZnVsbHk6IHt9IiwgZmlsZU5hbWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckJ1aWxkZXIuYXBwZW5kbG4oImxvYWQgY29uZmlnIG1vZGVsICIgKyBmaWxlTmFtZSArICIgZXJyb3IgOiAiICsgZS5nZXRNZXNzYWdlKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgICAgIGlmICghZXJyb3JCdWlsZGVyLmlzRW1wdHkoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9yKGVycm9yQnVpbGRlci50b1N0cmluZygpKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgbG9nLmVycm9yKCJGYWlsZWQgaW4gU2VydmljZSBUZW1wbGF0ZSBsb2FkaW5nIiwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSB2b2lkIGxvYWROb2RlVHlwZShSZXNvdXJjZSBmaWxlLCBTdHJCdWlsZGVyIGVycm9yQnVpbGRlcikgew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBsb2cudHJhY2UoIkxvYWRpbmcgTm9kZSBUeXBlIDoge30iLCBmaWxlLmdldEZpbGVuYW1lKCkpOw0KKyAgICAgICAgICAgIFN0cmluZyBub2RlS2V5ID0gZmlsZS5nZXRGaWxlbmFtZSgpLnJlcGxhY2UoIi5qc29uIiwgIiIpOw0KKyAgICAgICAgICAgIFN0cmluZyBkZWZpbml0aW9uQ29udGVudCA9IGdldFJlc291cmNlQ29udGVudChmaWxlKTsNCisgICAgICAgICAgICBOb2RlVHlwZSBub2RlVHlwZSA9IEphY2tzb25VdGlscy5yZWFkVmFsdWUoZGVmaW5pdGlvbkNvbnRlbnQsIE5vZGVUeXBlLmNsYXNzKTsNCisgICAgICAgICAgICBNb2RlbFR5cGUgbW9kZWxUeXBlID0gbmV3IE1vZGVsVHlwZSgpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZWZpbml0aW9uVHlwZShCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX05PREVfVFlQRSk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldERlcml2ZWRGcm9tKG5vZGVUeXBlLmdldERlcml2ZWRGcm9tKCkpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZXNjcmlwdGlvbihub2RlVHlwZS5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0RGVmaW5pdGlvbihkZWZpbml0aW9uQ29udGVudCk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldE1vZGVsTmFtZShub2RlS2V5KTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0VmVyc2lvbihub2RlVHlwZS5nZXRWZXJzaW9uKCkpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXRVcGRhdGVkQnkoIlN5c3RlbSIpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXRUYWdzKG5vZGVLZXkgKyAiLCIgKyBCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX05PREVfVFlQRSArICIsIg0KKyAgICAgICAgICAgICAgICAgICAgKyBub2RlVHlwZS5nZXREZXJpdmVkRnJvbSgpKTsNCisgICAgICAgICAgICBtb2RlbFR5cGVTZXJ2aWNlLnNhdmVNb2RlbChtb2RlbFR5cGUpOw0KKyAgICAgICAgICAgIGxvZy50cmFjZSgiTG9hZGVkIE5vZGUgVHlwZSBzdWNjZXNzZnVsbHkgOiB7fSIsIGZpbGUuZ2V0RmlsZW5hbWUoKSk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIGVycm9yQnVpbGRlci5hcHBlbmRsbigiTm9kZSB0eXBlIGxvYWRpbmcgZXJyb3IgOiAiICsgZmlsZS5nZXRGaWxlbmFtZSgpICsgIjoiICsgZS5nZXRNZXNzYWdlKCkpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHByaXZhdGUgdm9pZCBsb2FkRGF0YVR5cGUoUmVzb3VyY2UgZmlsZSwgU3RyQnVpbGRlciBlcnJvckJ1aWxkZXIpIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgbG9nLnRyYWNlKCJMb2FkaW5nIERhdGEgVHlwZToge30iLCBmaWxlLmdldEZpbGVuYW1lKCkpOw0KKyAgICAgICAgICAgIFN0cmluZyBkYXRhS2V5ID0gZmlsZS5nZXRGaWxlbmFtZSgpLnJlcGxhY2UoIi5qc29uIiwgIiIpOw0KKyAgICAgICAgICAgIFN0cmluZyBkZWZpbml0aW9uQ29udGVudCA9IGdldFJlc291cmNlQ29udGVudChmaWxlKTsNCisgICAgICAgICAgICBEYXRhVHlwZSBkYXRhVHlwZSA9IEphY2tzb25VdGlscy5yZWFkVmFsdWUoZGVmaW5pdGlvbkNvbnRlbnQsIERhdGFUeXBlLmNsYXNzKTsNCisgICAgICAgICAgICBNb2RlbFR5cGUgbW9kZWxUeXBlID0gbmV3IE1vZGVsVHlwZSgpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZWZpbml0aW9uVHlwZShCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0RBVEFfVFlQRSk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldERlcml2ZWRGcm9tKGRhdGFUeXBlLmdldERlcml2ZWRGcm9tKCkpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZXNjcmlwdGlvbihkYXRhVHlwZS5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0RGVmaW5pdGlvbihkZWZpbml0aW9uQ29udGVudCk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldE1vZGVsTmFtZShkYXRhS2V5KTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0VmVyc2lvbihkYXRhVHlwZS5nZXRWZXJzaW9uKCkpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXRVcGRhdGVkQnkoIlN5c3RlbSIpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXRUYWdzKGRhdGFLZXkgKyAiLCIgKyBkYXRhVHlwZS5nZXREZXJpdmVkRnJvbSgpICsgIiwiDQorICAgICAgICAgICAgICAgICAgICArIEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfREFUQV9UWVBFKTsNCisgICAgICAgICAgICBtb2RlbFR5cGVTZXJ2aWNlLnNhdmVNb2RlbChtb2RlbFR5cGUpOw0KKyAgICAgICAgICAgIGxvZy50cmFjZSgiIExvYWRlZCBEYXRhIFR5cGUgc3VjY2Vzc2Z1bGx5IDoge30iLCBmaWxlLmdldEZpbGVuYW1lKCkpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBlcnJvckJ1aWxkZXIuYXBwZW5kbG4oIkRhdGEgdHlwZSBsb2FkaW5nIGVycm9yIDogIiArIGZpbGUuZ2V0RmlsZW5hbWUoKSArICI6IiArIGUuZ2V0TWVzc2FnZSgpKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIHZvaWQgbG9hZEFydGlmYWN0VHlwZShSZXNvdXJjZSBmaWxlLCBTdHJCdWlsZGVyIGVycm9yQnVpbGRlcikgew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICBsb2cudHJhY2UoIkxvYWRpbmcgQXJ0aWZhY3QgVHlwZToge30iLCBmaWxlLmdldEZpbGVuYW1lKCkpOw0KKyAgICAgICAgICAgIFN0cmluZyBkYXRhS2V5ID0gZmlsZS5nZXRGaWxlbmFtZSgpLnJlcGxhY2UoIi5qc29uIiwgIiIpOw0KKyAgICAgICAgICAgIFN0cmluZyBkZWZpbml0aW9uQ29udGVudCA9IGdldFJlc291cmNlQ29udGVudChmaWxlKTsNCisgICAgICAgICAgICBBcnRpZmFjdFR5cGUgYXJ0aWZhY3RUeXBlID0gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShkZWZpbml0aW9uQ29udGVudCwgQXJ0aWZhY3RUeXBlLmNsYXNzKTsNCisgICAgICAgICAgICBNb2RlbFR5cGUgbW9kZWxUeXBlID0gbmV3IE1vZGVsVHlwZSgpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZWZpbml0aW9uVHlwZShCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0FSVElGQUNUX1RZUEUpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZS5zZXREZXJpdmVkRnJvbShhcnRpZmFjdFR5cGUuZ2V0RGVyaXZlZEZyb20oKSk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldERlc2NyaXB0aW9uKGFydGlmYWN0VHlwZS5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0RGVmaW5pdGlvbihkZWZpbml0aW9uQ29udGVudCk7DQorICAgICAgICAgICAgbW9kZWxUeXBlLnNldE1vZGVsTmFtZShkYXRhS2V5KTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0VmVyc2lvbihhcnRpZmFjdFR5cGUuZ2V0VmVyc2lvbigpKTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0VXBkYXRlZEJ5KCJTeXN0ZW0iKTsNCisgICAgICAgICAgICBtb2RlbFR5cGUuc2V0VGFncyhkYXRhS2V5ICsgIiwiICsgYXJ0aWZhY3RUeXBlLmdldERlcml2ZWRGcm9tKCkgKyAiLCINCisgICAgICAgICAgICAgICAgICAgICsgQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9BUlRJRkFDVF9UWVBFKTsNCisgICAgICAgICAgICBtb2RlbFR5cGVTZXJ2aWNlLnNhdmVNb2RlbChtb2RlbFR5cGUpOw0KKyAgICAgICAgICAgIGxvZy50cmFjZSgiTG9hZGVkIEFydGlmYWN0IFR5cGUgc3VjY2Vzc2Z1bGx5IDoge30iLCBmaWxlLmdldEZpbGVuYW1lKCkpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBlcnJvckJ1aWxkZXIuYXBwZW5kbG4oIkFydGlmYWN0IHR5cGUgbG9hZGluZyBlcnJvciA6ICIgKyBmaWxlLmdldEZpbGVuYW1lKCkgKyAiOiIgKyBlLmdldE1lc3NhZ2UoKSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBSZXNvdXJjZVtdIGdldFBhdGhSZXNvdXJjZXMoU3RyaW5nIHBhdGgsIFN0cmluZyBleHRlbnNpb24pIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VMb2FkZXIuZ2V0UmVzb3VyY2VzKCJmaWxlOiIgKyBwYXRoICsgIi8qIiArIGV4dGVuc2lvbik7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0UmVzb3VyY2VDb250ZW50KFJlc291cmNlIHJlc291cmNlKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KKyAgICAgICAgcmV0dXJuIElPVXRpbHMudG9TdHJpbmcocmVzb3VyY2UuZ2V0SW5wdXRTdHJlYW0oKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvTW9kZWxUeXBlU2VydmljZS5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL01vZGVsVHlwZVNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmMyOTYzCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL01vZGVsVHlwZVNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDE3OCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uTW9kZWxUeXBlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeS5Nb2RlbFR5cGVSZXBvc2l0b3J5Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UudmFsaWRhdG9yLk1vZGVsVHlwZVZhbGlkYXRvcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLlNlcnZpY2U7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOw0KKw0KKy8qKg0KKyAqIE1vZGVsVHlwZVNlcnZpY2UuamF2YSBQdXJwb3NlOiBQcm92aWRlIE1vZGVsVHlwZVNlcnZpY2UgU2VydmljZSBNb2RlbFR5cGVTZXJ2aWNlDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KKw0KK0BTZXJ2aWNlDQorQFRyYW5zYWN0aW9uYWwNCitwdWJsaWMgY2xhc3MgTW9kZWxUeXBlU2VydmljZSB7DQorDQorICAgIHByaXZhdGUgTW9kZWxUeXBlUmVwb3NpdG9yeSBtb2RlbFR5cGVSZXBvc2l0b3J5Ow0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIE1vZGVsVHlwZVNlcnZpY2UsIHVzZWQgdG8gc2F2ZSBhbmQgZ2V0IHRoZSBtb2RlbCB0eXBlcyBzdG9yZWQgaW4gZGF0YWJhc2UNCisgICAgICoNCisgICAgICogQHBhcmFtIG1vZGVsVHlwZVJlcG9zaXRvcnkNCisgICAgICovDQorICAgIHB1YmxpYyBNb2RlbFR5cGVTZXJ2aWNlKE1vZGVsVHlwZVJlcG9zaXRvcnkgbW9kZWxUeXBlUmVwb3NpdG9yeSkgew0KKyAgICAgICAgdGhpcy5tb2RlbFR5cGVSZXBvc2l0b3J5ID0gbW9kZWxUeXBlUmVwb3NpdG9yeTsNCisgICAgfQ0KKw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdldE1vZGVsVHlwZUJ5TmFtZSBzZXJ2aWNlDQorICAgICAqDQorICAgICAqIEBwYXJhbSBtb2RlbFR5cGVOYW1lDQorICAgICAqIEByZXR1cm4gTW9kZWxUeXBlDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgTW9kZWxUeXBlIGdldE1vZGVsVHlwZUJ5TmFtZShTdHJpbmcgbW9kZWxUeXBlTmFtZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBNb2RlbFR5cGUgbW9kZWxUeXBlID0gbnVsbDsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKG1vZGVsVHlwZU5hbWUpKSB7DQorICAgICAgICAgICAgT3B0aW9uYWw8TW9kZWxUeXBlPiBtb2RlbFR5cGVPcHRpb24gPSBtb2RlbFR5cGVSZXBvc2l0b3J5LmZpbmRCeU1vZGVsTmFtZShtb2RlbFR5cGVOYW1lKTsNCisgICAgICAgICAgICBpZiAobW9kZWxUeXBlT3B0aW9uLmlzUHJlc2VudCgpKSB7DQorICAgICAgICAgICAgICAgIG1vZGVsVHlwZSA9IG1vZGVsVHlwZU9wdGlvbi5nZXQoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk1vZGVsIE5hbWUgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiBtb2RlbFR5cGU7DQorICAgIH0NCisNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBzZWFyY2hNb2RlbFR5cGVzIHNlcnZpY2UNCisgICAgICoNCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBMaXN0PE1vZGVsVHlwZT4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBMaXN0PE1vZGVsVHlwZT4gc2VhcmNoTW9kZWxUeXBlcyhTdHJpbmcgdGFncykgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAodGFncyAhPSBudWxsKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1vZGVsVHlwZVJlcG9zaXRvcnkuZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlKHRhZ3MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJObyBTZWFyY2ggSW5mb3JtYXRpb24gcHJvdmlkZSIpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2F2ZU1vZGVsIHNlcnZpY2UNCisgICAgICoNCisgICAgICogQHBhcmFtIG1vZGVsVHlwZQ0KKyAgICAgKiBAcmV0dXJuIE1vZGVsVHlwZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIE1vZGVsVHlwZSBzYXZlTW9kZWwoTW9kZWxUeXBlIG1vZGVsVHlwZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorDQorICAgICAgICBNb2RlbFR5cGVWYWxpZGF0b3IudmFsaWRhdGVNb2RlbFR5cGUobW9kZWxUeXBlKTsNCisNCisgICAgICAgIE9wdGlvbmFsPE1vZGVsVHlwZT4gZGJNb2RlbFR5cGUgPSBtb2RlbFR5cGVSZXBvc2l0b3J5LmZpbmRCeU1vZGVsTmFtZShtb2RlbFR5cGUuZ2V0TW9kZWxOYW1lKCkpOw0KKyAgICAgICAgaWYgKGRiTW9kZWxUeXBlLmlzUHJlc2VudCgpKSB7DQorICAgICAgICAgICAgTW9kZWxUeXBlIGRiTW9kZWwgPSBkYk1vZGVsVHlwZS5nZXQoKTsNCisgICAgICAgICAgICBkYk1vZGVsLnNldERlc2NyaXB0aW9uKG1vZGVsVHlwZS5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgICAgICBkYk1vZGVsLnNldERlZmluaXRpb24obW9kZWxUeXBlLmdldERlZmluaXRpb24oKSk7DQorICAgICAgICAgICAgZGJNb2RlbC5zZXREZWZpbml0aW9uVHlwZShtb2RlbFR5cGUuZ2V0RGVmaW5pdGlvblR5cGUoKSk7DQorICAgICAgICAgICAgZGJNb2RlbC5zZXREZXJpdmVkRnJvbShtb2RlbFR5cGUuZ2V0RGVyaXZlZEZyb20oKSk7DQorICAgICAgICAgICAgZGJNb2RlbC5zZXRUYWdzKG1vZGVsVHlwZS5nZXRUYWdzKCkpOw0KKyAgICAgICAgICAgIGRiTW9kZWwuc2V0VmVyc2lvbihtb2RlbFR5cGUuZ2V0VmVyc2lvbigpKTsNCisgICAgICAgICAgICBkYk1vZGVsLnNldFVwZGF0ZWRCeShtb2RlbFR5cGUuZ2V0VXBkYXRlZEJ5KCkpOw0KKyAgICAgICAgICAgIG1vZGVsVHlwZSA9IG1vZGVsVHlwZVJlcG9zaXRvcnkuc2F2ZShkYk1vZGVsKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgbW9kZWxUeXBlID0gbW9kZWxUeXBlUmVwb3NpdG9yeS5zYXZlKG1vZGVsVHlwZSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gbW9kZWxUeXBlOw0KKyAgICB9DQorDQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlQnlNb2RlbE5hbWUgc2VydmljZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gbW9kZWxOYW1lDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgdm9pZCBkZWxldGVCeU1vZGVsTmFtZShTdHJpbmcgbW9kZWxOYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIGlmIChtb2RlbE5hbWUgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIG1vZGVsVHlwZVJlcG9zaXRvcnkuZGVsZXRlQnlNb2RlbE5hbWUobW9kZWxOYW1lKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTW9kZWwgTmFtZSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0TW9kZWxUeXBlQnlUYWdzIHNlcnZpY2UNCisgICAgICoNCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBMaXN0PE1vZGVsVHlwZT4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBMaXN0PE1vZGVsVHlwZT4gZ2V0TW9kZWxUeXBlQnlUYWdzKFN0cmluZyB0YWdzKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRhZ3MpKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1vZGVsVHlwZVJlcG9zaXRvcnkuZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlKHRhZ3MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJNb2RlbCBUYWcgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdldE1vZGVsVHlwZUJ5RGVmaW5pdGlvblR5cGUgc2VydmljZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gZGVmaW5pdGlvblR5cGUNCisgICAgICogQHJldHVybiBMaXN0PE1vZGVsVHlwZT4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBMaXN0PE1vZGVsVHlwZT4gZ2V0TW9kZWxUeXBlQnlEZWZpbml0aW9uVHlwZShTdHJpbmcgZGVmaW5pdGlvblR5cGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoZGVmaW5pdGlvblR5cGUpKSB7DQorICAgICAgICAgICAgcmV0dXJuIG1vZGVsVHlwZVJlcG9zaXRvcnkuZmluZEJ5RGVmaW5pdGlvblR5cGUoZGVmaW5pdGlvblR5cGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJNb2RlbCBkZWZpbml0aW9uVHlwZSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0TW9kZWxUeXBlQnlEZXJpdmVkRnJvbSBzZXJ2aWNlDQorICAgICAqDQorICAgICAqIEBwYXJhbSBkZXJpdmVkRnJvbQ0KKyAgICAgKiBAcmV0dXJuIExpc3Q8TW9kZWxUeXBlPg0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIExpc3Q8TW9kZWxUeXBlPiBnZXRNb2RlbFR5cGVCeURlcml2ZWRGcm9tKFN0cmluZyBkZXJpdmVkRnJvbSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhkZXJpdmVkRnJvbSkpIHsNCisgICAgICAgICAgICByZXR1cm4gbW9kZWxUeXBlUmVwb3NpdG9yeS5maW5kQnlEZXJpdmVkRnJvbShkZXJpdmVkRnJvbSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk1vZGVsIGRlcml2ZWRGcm9tIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICB9DQorICAgIH0NCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL1Jlc291cmNlRGljdGlvbmFyeVNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9SZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1NjdkYgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9SZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwxNjkgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZTsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuZGF0YS5EaWN0aW9uYXJ5RGVmaW5pdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5SZXNvdXJjZURpY3Rpb25hcnk7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yZXBvc2l0b3J5LlJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS52YWxpZGF0b3IuUmVzb3VyY2VEaWN0aW9uYXJ5VmFsaWRhdG9yOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisvKioNCisgKiBSZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBEYXRhRGljdGlvbmFyeVNlcnZpY2UgU2VydmljZQ0KKyAqIERhdGFEaWN0aW9uYXJ5U2VydmljZQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitAU2VydmljZQ0KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlIHsNCisNCisgICAgcHJpdmF0ZSBSZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5IHJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgRGF0YURpY3Rpb25hcnlTZXJ2aWNlLCB1c2VkIHRvIHNhdmUgYW5kIGdldCB0aGUgUmVzb3VyY2UgTWFwcGluZyBzdG9yZWQgaW4gZGF0YWJhc2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkNCisgICAgICogDQorICAgICAqLw0KKyAgICBwdWJsaWMgUmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZShSZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5IGRhdGFEaWN0aW9uYXJ5UmVwb3NpdG9yeSkgew0KKyAgICAgICAgdGhpcy5yZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5ID0gZGF0YURpY3Rpb25hcnlSZXBvc2l0b3J5Ow0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0RGF0YURpY3Rpb25hcnlCeU5hbWUgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWUNCisgICAgICogQHJldHVybiBEYXRhRGljdGlvbmFyeQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFJlc291cmNlRGljdGlvbmFyeSBnZXRSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWUoU3RyaW5nIG5hbWUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90QmxhbmsobmFtZSkpIHsNCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VEaWN0aW9uYXJ5UmVwb3NpdG9yeS5maW5kQnlOYW1lKG5hbWUpLmdldCgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJSZXNvdXJjZSBNYXBwaW5nIE5hbWUgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZXMgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWVzDQorICAgICAqIEByZXR1cm4gTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+DQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IHNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZXMoTGlzdDxTdHJpbmc+IG5hbWVzKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgaWYgKG5hbWVzICE9IG51bGwgJiYgIW5hbWVzLmlzRW1wdHkoKSkgew0KKyAgICAgICAgICAgIHJldHVybiByZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5LmZpbmRCeU5hbWVJbihuYW1lcyk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk5vIFNlYXJjaCBJbmZvcm1hdGlvbiBwcm92aWRlIik7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBzZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeVRhZ3Mgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBMaXN0PFJlc291cmNlRGljdGlvbmFyeT4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBMaXN0PFJlc291cmNlRGljdGlvbmFyeT4gc2VhcmNoUmVzb3VyY2VEaWN0aW9uYXJ5QnlUYWdzKFN0cmluZyB0YWdzKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRhZ3MpKSB7DQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnkuZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlKHRhZ3MpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJObyBTZWFyY2ggSW5mb3JtYXRpb24gcHJvdmlkZSIpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2F2ZURhdGFEaWN0aW9uYXJ5IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSByZXNvdXJjZURpY3Rpb25hcnkNCisgICAgICogQHJldHVybiBEYXRhRGljdGlvbmFyeQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFJlc291cmNlRGljdGlvbmFyeSBzYXZlUmVzb3VyY2VEaWN0aW9uYXJ5KFJlc291cmNlRGljdGlvbmFyeSByZXNvdXJjZURpY3Rpb25hcnkpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAocmVzb3VyY2VEaWN0aW9uYXJ5ICE9IG51bGwpIHsNCisgICAgICAgICAgICBSZXNvdXJjZURpY3Rpb25hcnlWYWxpZGF0b3IudmFsaWRhdGVSZXNvdXJjZURpY3Rpb25hcnkocmVzb3VyY2VEaWN0aW9uYXJ5KTsNCisNCisgICAgICAgICAgICBEaWN0aW9uYXJ5RGVmaW5pdGlvbiBkaWN0aW9uYXJ5RGVmaW5pdGlvbiA9DQorICAgICAgICAgICAgICAgICAgICBKYWNrc29uVXRpbHMucmVhZFZhbHVlKHJlc291cmNlRGljdGlvbmFyeS5nZXREZWZpbml0aW9uKCksIERpY3Rpb25hcnlEZWZpbml0aW9uLmNsYXNzKTsNCisNCisgICAgICAgICAgICBpZiAoZGljdGlvbmFyeURlZmluaXRpb24gPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJSZXNvdXJjZSBkaWN0aW9uYXJ5IGRlZmluaXRpb24gaXMgbm90IHZhbGlkIGNvbnRlbnQgIiArIHJlc291cmNlRGljdGlvbmFyeS5nZXREZWZpbml0aW9uKCkpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXROYW1lKHJlc291cmNlRGljdGlvbmFyeS5nZXROYW1lKCkpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldFJlc291cmNlUGF0aChyZXNvdXJjZURpY3Rpb25hcnkuZ2V0UmVzb3VyY2VQYXRoKCkpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldFJlc291cmNlVHlwZShyZXNvdXJjZURpY3Rpb25hcnkuZ2V0UmVzb3VyY2VUeXBlKCkpOw0KKyAgICAgICAgICAgIGRpY3Rpb25hcnlEZWZpbml0aW9uLnNldERhdGFUeXBlKHJlc291cmNlRGljdGlvbmFyeS5nZXREYXRhVHlwZSgpKTsNCisgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXRFbnRyeVNjaGVtYShyZXNvdXJjZURpY3Rpb25hcnkuZ2V0RW50cnlTY2hlbWEoKSk7DQorICAgICAgICAgICAgZGljdGlvbmFyeURlZmluaXRpb24uc2V0VGFncyhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0VGFncygpKTsNCisgICAgICAgICAgICBkaWN0aW9uYXJ5RGVmaW5pdGlvbi5zZXREZXNjcmlwdGlvbihyZXNvdXJjZURpY3Rpb25hcnkuZ2V0RGVzY3JpcHRpb24oKSk7DQorICAgICAgICAgICAgZGljdGlvbmFyeURlZmluaXRpb24uc2V0VXBkYXRlZEJ5KHJlc291cmNlRGljdGlvbmFyeS5nZXRVcGRhdGVkQnkoKSk7DQorDQorICAgICAgICAgICAgU3RyaW5nIGRlZmluaXRpb25Db250ZW50ID0gSmFja3NvblV0aWxzLmdldEpzb24oZGljdGlvbmFyeURlZmluaXRpb24sIHRydWUpOw0KKyAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeS5zZXREZWZpbml0aW9uKGRlZmluaXRpb25Db250ZW50KTsNCisNCisgICAgICAgICAgICBPcHRpb25hbDxSZXNvdXJjZURpY3Rpb25hcnk+IGRiUmVzb3VyY2VEaWN0aW9uYXJ5RGF0YSA9DQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5LmZpbmRCeU5hbWUocmVzb3VyY2VEaWN0aW9uYXJ5LmdldE5hbWUoKSk7DQorICAgICAgICAgICAgaWYgKGRiUmVzb3VyY2VEaWN0aW9uYXJ5RGF0YS5pc1ByZXNlbnQoKSkgew0KKyAgICAgICAgICAgICAgICBSZXNvdXJjZURpY3Rpb25hcnkgZGJSZXNvdXJjZURpY3Rpb25hcnkgPSBkYlJlc291cmNlRGljdGlvbmFyeURhdGEuZ2V0KCk7DQorDQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJ5LnNldE5hbWUocmVzb3VyY2VEaWN0aW9uYXJ5LmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJ5LnNldERlZmluaXRpb24ocmVzb3VyY2VEaWN0aW9uYXJ5LmdldERlZmluaXRpb24oKSk7DQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJ5LnNldERlc2NyaXB0aW9uKHJlc291cmNlRGljdGlvbmFyeS5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgICAgICAgICAgZGJSZXNvdXJjZURpY3Rpb25hcnkuc2V0UmVzb3VyY2VUeXBlKHJlc291cmNlRGljdGlvbmFyeS5nZXRSZXNvdXJjZVR5cGUoKSk7DQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJ5LnNldFJlc291cmNlUGF0aChyZXNvdXJjZURpY3Rpb25hcnkuZ2V0UmVzb3VyY2VQYXRoKCkpOw0KKyAgICAgICAgICAgICAgICBkYlJlc291cmNlRGljdGlvbmFyeS5zZXREYXRhVHlwZShyZXNvdXJjZURpY3Rpb25hcnkuZ2V0RGF0YVR5cGUoKSk7DQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJ5LnNldEVudHJ5U2NoZW1hKHJlc291cmNlRGljdGlvbmFyeS5nZXRFbnRyeVNjaGVtYSgpKTsNCisgICAgICAgICAgICAgICAgZGJSZXNvdXJjZURpY3Rpb25hcnkuc2V0VGFncyhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0VGFncygpKTsNCisgICAgICAgICAgICAgICAgZGJSZXNvdXJjZURpY3Rpb25hcnkuc2V0VmFsaWRWYWx1ZXMocmVzb3VyY2VEaWN0aW9uYXJ5LmdldFZhbGlkVmFsdWVzKCkpOw0KKyAgICAgICAgICAgICAgICByZXNvdXJjZURpY3Rpb25hcnkgPSByZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5LnNhdmUoZGJSZXNvdXJjZURpY3Rpb25hcnkpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeSA9IHJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnkuc2F2ZShyZXNvdXJjZURpY3Rpb25hcnkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiUmVzb3VyY2UgRGljdGlvbmFyeSBpbmZvcm1hdGlvbiBpcyBtaXNzaW5nIik7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VEaWN0aW9uYXJ5Ow0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlUmVzb3VyY2VEaWN0aW9uYXJ5IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgdm9pZCBkZWxldGVSZXNvdXJjZURpY3Rpb25hcnkoU3RyaW5nIG5hbWUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIHJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnkuZGVsZXRlQnlOYW1lKG5hbWUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJSZXNvdXJjZSBNYXBwaW5nIElkIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICB9DQorDQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL1NjaGVtYUdlbmVyYXRvclNlcnZpY2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9TY2hlbWFHZW5lcmF0b3JTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1NjUxZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9TY2hlbWFHZW5lcmF0b3JTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwxMTYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZTsNCisNCitpbXBvcnQgY29tLmdvb2dsZS5jb21tb24uYmFzZS5QcmVjb25kaXRpb25zOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuTWFwVXRpbHM7DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuRGF0YVR5cGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlNlcnZpY2VUZW1wbGF0ZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmNvbW1vbi5Td2FnZ2VyR2VuZXJhdG9yOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQorLyoqDQorICogU2NoZW1hR2VuZXJhdG9yU2VydmljZS5qYXZhIFB1cnBvc2U6IFByb3ZpZGUgU2VydmljZSB0byBnZW5lcmF0ZSBzZXJ2aWNlIHRlbXBsYXRlIGlucHV0IHNjaGVtYSBkZWZpbml0aW9uIGFuZCBTYW1wbGUNCisgKiBKc29uIGdlbmVyYXRpb24uDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KKw0KK3B1YmxpYyBjbGFzcyBTY2hlbWFHZW5lcmF0b3JTZXJ2aWNlIHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFNjaGVtYUdlbmVyYXRvclNlcnZpY2UuY2xhc3MpOw0KKw0KKyAgICBwcml2YXRlIE1hcDxTdHJpbmcsIERhdGFUeXBlPiBkYXRhVHlwZXM7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgU2NoZW1hR2VuZXJhdG9yU2VydmljZSBjb25zdHJ1Y3Rvcg0KKyAgICAgKi8NCisgICAgcHVibGljIFNjaGVtYUdlbmVyYXRvclNlcnZpY2UoKSB7DQorICAgICAgICBkYXRhVHlwZXMgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZW5lcmF0ZVNjaGVtYQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gc2VydmljZVRlbXBsYXRlQ29udGVudCBzZXJ2aWNlIHRlbXBsYXRlIGNvbnRlbnQNCisgICAgICogQHJldHVybiBTdHJpbmcNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gQmx1ZXByaW50IEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFN0cmluZyBnZW5lcmF0ZVNjaGVtYShTdHJpbmcgc2VydmljZVRlbXBsYXRlQ29udGVudCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhzZXJ2aWNlVGVtcGxhdGVDb250ZW50KSkgew0KKyAgICAgICAgICAgIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUgPSBKYWNrc29uVXRpbHMucmVhZFZhbHVlKHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQsDQorICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlVGVtcGxhdGUuY2xhc3MpOw0KKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVNjaGVtYShzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKA0KKyAgICAgICAgICAgICAgICAgICAgIlNlcnZpY2UgVGVtcGxhdGUgQ29udGVudCBpcyAgKCIgKyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ICsgIikgbm90IERlZmluZWQuIik7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZW5lcmF0ZVNjaGVtYQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gc2VydmljZVRlbXBsYXRlIHNlcnZpY2UgdGVtcGxhdGUgY29udGVudA0KKyAgICAgKiBAcmV0dXJuIFN0cmluZw0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiBCbHVlcHJpbnQgRXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgU3RyaW5nIGdlbmVyYXRlU2NoZW1hKFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgU3RyaW5nIHNjaGVtYUNvbnRlbnQgPSBudWxsOw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGwoc2VydmljZVRlbXBsYXRlLCAiU2VydmljZSBUZW1wbGF0ZSBpcyBub3QgZGVmaW5lZC4iKTsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgaWYgKHNlcnZpY2VUZW1wbGF0ZS5nZXRUb3BvbG9neVRlbXBsYXRlKCkgIT0gbnVsbA0KKyAgICAgICAgICAgICAgICAgICAgJiYgc2VydmljZVRlbXBsYXRlLmdldFRvcG9sb2d5VGVtcGxhdGUoKS5nZXRJbnB1dHMoKSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIFN3YWdnZXJHZW5lcmF0b3Igc3dhZ2dlckdlbmVyYXRvciA9IG5ldyBTd2FnZ2VyR2VuZXJhdG9yKHNlcnZpY2VUZW1wbGF0ZSk7DQorICAgICAgICAgICAgICAgIHNjaGVtYUNvbnRlbnQgPSBzd2FnZ2VyR2VuZXJhdG9yLmdlbmVyYXRlU3dhZ2dlcigpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorDQorICAgICAgICByZXR1cm4gc2NoZW1hQ29udGVudDsNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIHZvaWQgbWFuYWdlU2VydmljZVRlbXBsYXRlQWN0aW9ucyhTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlLCBTdHJpbmcgYWN0aW9uTmFtZSkgew0KKyAgICAgICAgaWYgKHNlcnZpY2VUZW1wbGF0ZSAhPSBudWxsICYmIHNlcnZpY2VUZW1wbGF0ZS5nZXRUb3BvbG9neVRlbXBsYXRlKCkgIT0gbnVsbA0KKyAgICAgICAgICAgICAgICAmJiBTdHJpbmdVdGlscy5pc05vdEJsYW5rKGFjdGlvbk5hbWUpKSB7DQorDQorICAgICAgICAgICAgaWYgKE1hcFV0aWxzLmlzTm90RW1wdHkoc2VydmljZVRlbXBsYXRlLmdldFRvcG9sb2d5VGVtcGxhdGUoKS5nZXRJbnB1dHMoKSkpIHsNCisNCisgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldFRvcG9sb2d5VGVtcGxhdGUoKS5nZXRJbnB1dHMoKS5lbnRyeVNldCgpLnJlbW92ZUlmKGVudGl0eSAtPiB7DQorICAgICAgICAgICAgICAgICAgICBTdHJpbmcga2V5TmFtZSA9IGVudGl0eS5nZXRLZXkoKTsNCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXBsYWNlZEFjdGlvbiA9IGFjdGlvbk5hbWUucmVwbGFjZSgiLWFjdGlvbiIsICItcmVxdWVzdCIpOw0KKyAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJLZXkgbmFtZSA6ICIgKyBrZXlOYW1lICsgIiwgYWN0aW9uTmFtZSAiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYWN0aW9uTmFtZSArICIsIHJlcGxhY2VkQWN0aW9uIDoiICsgcmVwbGFjZWRBY3Rpb24pOw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGtleU5hbWUuZW5kc1dpdGgoIi1yZXF1ZXN0IikgJiYgIWtleU5hbWUuZXF1YWxzKHJlcGxhY2VkQWN0aW9uKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJkZWxldGluZyBpbnB1dCBwcm9wZXJ0eSB7fSAiLCBrZXlOYW1lKTsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCisgICAgICAgICAgICAgICAgfSk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9TZXJ2aWNlVGVtcGxhdGVTZXJ2aWNlLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvU2VydmljZVRlbXBsYXRlU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYjc5MTcKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvU2VydmljZVRlbXBsYXRlU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTQwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2U7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuUmVzb3VyY2VBc3NpZ25tZW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QudmFsaWRhdG9yLlJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvcjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbENvbnRlbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5tb2RlbC5BdXRvTWFwUmVzcG9uc2U7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yZXBvc2l0b3J5LlJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5TZXJ2aWNlOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7DQoraW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOw0KKw0KKy8qKg0KKyAqIFNlcnZpY2VUZW1wbGF0ZVNlcnZpY2UuamF2YSBQdXJwb3NlOiBQcm92aWRlIFNlcnZpY2UgVGVtcGxhdGUgQ3JlYXRlIFNlcnZpY2UgcHJvY2Vzc2luZyBTZXJ2aWNlVGVtcGxhdGVTZXJ2aWNlDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KKw0KK0BTZXJ2aWNlDQorcHVibGljIGNsYXNzIFNlcnZpY2VUZW1wbGF0ZVNlcnZpY2Ugew0KKw0KKyAgICBwcml2YXRlIFJlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnkgZGF0YURpY3Rpb25hcnlSZXBvc2l0b3J5Ow0KKw0KKyAgICBwcml2YXRlIENvbmZpZ01vZGVsQ3JlYXRlU2VydmljZSBjb25maWdNb2RlbENyZWF0ZVNlcnZpY2U7DQorICAgIHByaXZhdGUgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlIGJsdWVQcmludEVuaGFuY2VyU2VydmljZTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBTY2hlbWFHZW5lcmF0b3JTZXJ2aWNlIGNvbnN0cnVjdG9yDQorICAgICAqDQorICAgICAqIEBwYXJhbSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkNCisgICAgICogQHBhcmFtIGNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZQ0KKyAgICAgKiBAcGFyYW0gYmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlDQorICAgICAqLw0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlU2VydmljZShSZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5IGRhdGFEaWN0aW9uYXJ5UmVwb3NpdG9yeSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnTW9kZWxDcmVhdGVTZXJ2aWNlIGNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlIGJsdWVQcmludEVuaGFuY2VyU2VydmljZSkgew0KKyAgICAgICAgdGhpcy5kYXRhRGljdGlvbmFyeVJlcG9zaXRvcnkgPSBkYXRhRGljdGlvbmFyeVJlcG9zaXRvcnk7DQorICAgICAgICB0aGlzLmNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZSA9IGNvbmZpZ01vZGVsQ3JlYXRlU2VydmljZTsNCisgICAgICAgIHRoaXMuYmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlID0gYmx1ZVByaW50RW5oYW5jZXJTZXJ2aWNlOw0KKw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgdmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUgbWV0aG9kDQorICAgICAqDQorICAgICAqIEBwYXJhbSBzZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHJldHVybiBTZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIHB1YmxpYyBTZXJ2aWNlVGVtcGxhdGUgdmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUoU2VydmljZVRlbXBsYXRlIHNlcnZpY2VUZW1wbGF0ZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICByZXR1cm4gdGhpcy5jb25maWdNb2RlbENyZWF0ZVNlcnZpY2UudmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUoc2VydmljZVRlbXBsYXRlKTsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGVucmljaFNlcnZpY2VUZW1wbGF0ZSBtZXRob2QNCisgICAgICoNCisgICAgICogQHBhcmFtIHNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKiBAcmV0dXJuIFNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIFNlcnZpY2VUZW1wbGF0ZSBlbnJpY2hTZXJ2aWNlVGVtcGxhdGUoU2VydmljZVRlbXBsYXRlIHNlcnZpY2VUZW1wbGF0ZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0aGlzLmJsdWVQcmludEVuaGFuY2VyU2VydmljZS5lbmhhbmNlKHNlcnZpY2VUZW1wbGF0ZSk7DQorICAgICAgICByZXR1cm4gc2VydmljZVRlbXBsYXRlOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgYXV0b01hcCBtZXRob2QgdG8gbWFwIHRoZSB0ZW1wbGF0ZSBrZXlzDQorICAgICAqDQorICAgICAqIEBwYXJhbSByZXNvdXJjZUFzc2lnbm1lbnRzDQorICAgICAqIEByZXR1cm4gQXV0b01hcFJlc3BvbnNlDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgQXV0b01hcFJlc3BvbnNlIGF1dG9NYXAoTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgQXV0b1Jlc291cmNlTWFwcGluZ1NlcnZpY2UgYXV0b01hcHBpbmdTZXJ2aWNlID0gbmV3IEF1dG9SZXNvdXJjZU1hcHBpbmdTZXJ2aWNlKGRhdGFEaWN0aW9uYXJ5UmVwb3NpdG9yeSk7DQorICAgICAgICBBdXRvTWFwUmVzcG9uc2UgYXV0b01hcFJlc3BvbnNlID0gYXV0b01hcHBpbmdTZXJ2aWNlLmF1dG9NYXAocmVzb3VyY2VBc3NpZ25tZW50cyk7DQorICAgICAgICByZXR1cm4gYXV0b01hcFJlc3BvbnNlOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgdmFsaWRhdGVSZXNvdXJjZUFzc2lnbm1lbnRzIG1ldGhvZA0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gcmVzb3VyY2VBc3NpZ25tZW50cw0KKyAgICAgKiBAcmV0dXJuIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50Pg0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiB2YWxpZGF0ZVJlc291cmNlQXNzaWdubWVudHMoTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvciByZXNvdXJjZUFzc2lnbm1lbnRWYWxpZGF0b3IgPQ0KKyAgICAgICAgICAgICAgICAgICAgbmV3IFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvcihyZXNvdXJjZUFzc2lnbm1lbnRzKTsNCisgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnRWYWxpZGF0b3IudmFsaWRhdGVSZXNvdXJjZUFzc2lnbm1lbnQoKTsNCisgICAgICAgIH0gY2F0Y2ggKEJsdWVQcmludEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VBc3NpZ25tZW50czsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdlbmVyYXRlUmVzb3VyY2VBc3NpZ25tZW50cyBtZXRob2QNCisgICAgICoNCisgICAgICogQHBhcmFtIHRlbXBsYXRlQ29udGVudA0KKyAgICAgKiBAcmV0dXJuIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50Pg0KKyAgICAgKi8NCisgICAgcHVibGljIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiBnZW5lcmF0ZVJlc291cmNlQXNzaWdubWVudHMoQ29uZmlnTW9kZWxDb250ZW50IHRlbXBsYXRlQ29udGVudCkgew0KKyAgICAgICAgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIGlmICh0ZW1wbGF0ZUNvbnRlbnQgIT0gbnVsbCAmJiBTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRlbXBsYXRlQ29udGVudC5nZXRDb250ZW50KCkpKSB7DQorICAgICAgICAgICAgUGF0dGVybiBwID0gUGF0dGVybi5jb21waWxlKCIoPzw9XFwkXFx7KShbXlxcfV0rKSg/PVxcfSkiKTsNCisgICAgICAgICAgICBNYXRjaGVyIG0gPSBwLm1hdGNoZXIodGVtcGxhdGVDb250ZW50LmdldENvbnRlbnQoKSk7DQorICAgICAgICAgICAgd2hpbGUgKG0uZmluZCgpKSB7DQorICAgICAgICAgICAgICAgIFJlc291cmNlQXNzaWdubWVudCByZXNvdXJjZUFzc2lnbm1lbnQgPSBuZXcgUmVzb3VyY2VBc3NpZ25tZW50KCk7DQorICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudC5zZXROYW1lKG0uZ3JvdXAoKSk7DQorICAgICAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudHMuYWRkKHJlc291cmNlQXNzaWdubWVudCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlQXNzaWdubWVudHM7DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9BcHBsaWNhdGlvbkNvbnN0YW50cy5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9BcHBsaWNhdGlvbkNvbnN0YW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDc0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvY29tbW9uL0FwcGxpY2F0aW9uQ29uc3RhbnRzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmNvbW1vbjsNCisNCisvKioNCisgKiBBcHBsaWNhdGlvbkNvbnN0YW50cy5qYXZhIFB1cnBvc2U6IFByb3ZpZGUgQ29udHJvbGxlckJsdXByaW50c0FwcGxpY2F0aW9uIENvbnN0YW50IEluZm9ybWF0aW9uDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK3B1YmxpYyBmaW5hbCBjbGFzcyBBcHBsaWNhdGlvbkNvbnN0YW50cyB7DQorICAgIHByaXZhdGUgQXBwbGljYXRpb25Db25zdGFudHMoKSB7DQorDQorICAgIH0NCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSVZFX1kgPSAiWSI7DQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElWRV9OID0gIk4iOw0KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBU0RDX0FSVElGQUNUX1RZUEVfU0ROQ19NT0RFTCA9ICJTRE5DX01PREVMIjsNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9FcnJvck1lc3NhZ2UuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vRXJyb3JNZXNzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhODAyZQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vRXJyb3JNZXNzYWdlLmphdmEKQEAgLTAsMCArMSw2MyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmNvbW1vbjsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkluY2x1ZGU7DQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25JbmNsdWRlLkluY2x1ZGU7DQorDQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOw0KKw0KK0BKc29uSW5jbHVkZShJbmNsdWRlLk5PTl9OVUxMKQ0KK3B1YmxpYyBjbGFzcyBFcnJvck1lc3NhZ2UgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgew0KKyAgICBwcml2YXRlIEludGVnZXIgaHR0cFN0YXR1czsNCisgICAgcHJpdmF0ZSBTdHJpbmcgbWVzc2FnZTsNCisgICAgcHJpdmF0ZSBJbnRlZ2VyIGNvZGU7DQorICAgIHByaXZhdGUgU3RyaW5nIGRldmVsb3Blck1lc3NhZ2U7DQorDQorICAgIHB1YmxpYyBJbnRlZ2VyIGdldEh0dHBTdGF0dXMoKSB7DQorICAgICAgICByZXR1cm4gaHR0cFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRIdHRwU3RhdHVzKEludGVnZXIgaHR0cFN0YXR1cykgew0KKyAgICAgICAgdGhpcy5odHRwU3RhdHVzID0gaHR0cFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7DQorICAgICAgICByZXR1cm4gbWVzc2FnZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKFN0cmluZyBtZXNzYWdlKSB7DQorICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBJbnRlZ2VyIGdldENvZGUoKSB7DQorICAgICAgICByZXR1cm4gY29kZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRDb2RlKEludGVnZXIgY29kZSkgew0KKyAgICAgICAgdGhpcy5jb2RlID0gY29kZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERldmVsb3Blck1lc3NhZ2UoKSB7DQorICAgICAgICByZXR1cm4gZGV2ZWxvcGVyTWVzc2FnZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZXZlbG9wZXJNZXNzYWdlKFN0cmluZyBkZXZlbG9wZXJNZXNzYWdlKSB7DQorICAgICAgICB0aGlzLmRldmVsb3Blck1lc3NhZ2UgPSBkZXZlbG9wZXJNZXNzYWdlOw0KKyAgICB9DQorDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vU2VydmljZUV4Y2VwdGlvbk1hcHBlci5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9TZXJ2aWNlRXhjZXB0aW9uTWFwcGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIyM2RjYwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vU2VydmljZUV4Y2VwdGlvbk1hcHBlci5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5jb21tb247DQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQorDQoraW1wb3J0IGphdmF4LndzLnJzLmNvcmUuTWVkaWFUeXBlOw0KK2ltcG9ydCBqYXZheC53cy5ycy5jb3JlLlJlc3BvbnNlOw0KK2ltcG9ydCBqYXZheC53cy5ycy5leHQuRXhjZXB0aW9uTWFwcGVyOw0KK2ltcG9ydCBqYXZheC53cy5ycy5leHQuUHJvdmlkZXI7DQoraW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7DQoraW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOw0KKw0KK0BQcm92aWRlcg0KK3B1YmxpYyBjbGFzcyBTZXJ2aWNlRXhjZXB0aW9uTWFwcGVyIGltcGxlbWVudHMgRXhjZXB0aW9uTWFwcGVyPEJsdWVQcmludEV4Y2VwdGlvbj4gew0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIFJlc3BvbnNlIHRvUmVzcG9uc2UoQmx1ZVByaW50RXhjZXB0aW9uIGV4KSB7DQorICAgICAgICBFcnJvck1lc3NhZ2UgZXJyb3JNZXNzYWdlID0gbmV3IEVycm9yTWVzc2FnZSgpOw0KKyAgICAgICAgZXJyb3JNZXNzYWdlLnNldENvZGUoZXguZ2V0Q29kZSgpKTsNCisgICAgICAgIGVycm9yTWVzc2FnZS5zZXRNZXNzYWdlKGV4LmdldE1lc3NhZ2UoKSk7DQorICAgICAgICBTdHJpbmdXcml0ZXIgZXJyb3JTdGFja1RyYWNlID0gbmV3IFN0cmluZ1dyaXRlcigpOw0KKyAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKG5ldyBQcmludFdyaXRlcihlcnJvclN0YWNrVHJhY2UpKTsNCisgICAgICAgIGVycm9yTWVzc2FnZS5zZXREZXZlbG9wZXJNZXNzYWdlKGV4LnRvU3RyaW5nKCkpOw0KKyAgICAgICAgcmV0dXJuIFJlc3BvbnNlLnN0YXR1cyg1MDApLmVudGl0eShlcnJvck1lc3NhZ2UpLnR5cGUoTWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT04pLmJ1aWxkKCk7DQorICAgIH0NCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9Td2FnZ2VyR2VuZXJhdG9yLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvY29tbW9uL1N3YWdnZXJHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTA4MDc2Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9Td2FnZ2VyR2VuZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxODcgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5jb21tb247DQorDQoraW1wb3J0IGlvLnN3YWdnZXIubW9kZWxzLio7DQoraW1wb3J0IGlvLnN3YWdnZXIubW9kZWxzLnBhcmFtZXRlcnMuQm9keVBhcmFtZXRlcjsNCitpbXBvcnQgaW8uc3dhZ2dlci5tb2RlbHMucGFyYW1ldGVycy5QYXJhbWV0ZXI7DQoraW1wb3J0IGlvLnN3YWdnZXIubW9kZWxzLnByb3BlcnRpZXMuKjsNCitpbXBvcnQgaW8uc3dhZ2dlci51dGlsLkpzb247DQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5NYXBVdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLkJvb2xlYW5VdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludENvbnN0YW50czsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludFR5cGVzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5Qcm9wZXJ0eURlZmluaXRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlNlcnZpY2VUZW1wbGF0ZTsNCisNCitpbXBvcnQgamF2YS51dGlsLio7DQorDQorLyoqDQorICogU3dhZ2dlckdlbmVyYXRvci5qYXZhIFB1cnBvc2U6IFByb3ZpZGUgU2VydmljZSB0byBnZW5lcmF0ZSBzZXJ2aWNlIHRlbXBsYXRlIGlucHV0IHNjaGVtYSBkZWZpbml0aW9uIGFuZCBTYW1wbGUgSnNvbg0KKyAqIGdlbmVyYXRpb24uDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BEZXByZWNhdGVkDQorcHVibGljIGNsYXNzIFN3YWdnZXJHZW5lcmF0b3Igew0KKw0KKyAgICBwcml2YXRlIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGU7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgU3dhZ2dlckdlbmVyYXRvciBjb25zdHJ1Y3Rvcg0KKyAgICAgKi8NCisgICAgcHVibGljIFN3YWdnZXJHZW5lcmF0b3IoU2VydmljZVRlbXBsYXRlIHNlcnZpY2VUZW1wbGF0ZSkgew0KKyAgICAgICAgdGhpcy5zZXJ2aWNlVGVtcGxhdGUgPSBzZXJ2aWNlVGVtcGxhdGU7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZW5lcmF0ZVN3YWdnZXINCisgICAgICoNCisgICAgICogQHJldHVybiBTdHJpbmcNCisgICAgICovDQorICAgIHB1YmxpYyBTdHJpbmcgZ2VuZXJhdGVTd2FnZ2VyKCkgew0KKyAgICAgICAgU3RyaW5nIHN3YWdnZXJDb250ZW50ID0gbnVsbDsNCisNCisgICAgICAgIFN3YWdnZXIgc3dhZ2dlciA9IG5ldyBTd2FnZ2VyKCkuaW5mbyhnZXRJbmZvKCkpOw0KKw0KKyAgICAgICAgc3dhZ2dlci5zZXRQYXRocyhnZXRQYXRocygpKTsNCisgICAgICAgIHN3YWdnZXIuc2V0RGVmaW5pdGlvbnMoZ2V0RGVmaW5pdGlvbigpKTsNCisNCisNCisgICAgICAgIHN3YWdnZXJDb250ZW50ID0gSnNvbi5wcmV0dHkoc3dhZ2dlcik7DQorICAgICAgICByZXR1cm4gc3dhZ2dlckNvbnRlbnQ7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBJbmZvIGdldEluZm8oKSB7DQorICAgICAgICBJbmZvIGluZm8gPSBuZXcgSW5mbygpOw0KKyAgICAgICAgQ29udGFjdCBjb250YWN0ID0gbmV3IENvbnRhY3QoKTsNCisgICAgICAgIGNvbnRhY3Quc2V0TmFtZShzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKS5nZXQoQmx1ZVByaW50Q29uc3RhbnRzLk1FVEFEQVRBX1RFTVBMQVRFX0FVVEhPUikpOw0KKyAgICAgICAgaW5mby5zZXRDb250YWN0KGNvbnRhY3QpOw0KKyAgICAgICAgaW5mby5zZXRUaXRsZShzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKS5nZXQoQmx1ZVByaW50Q29uc3RhbnRzLk1FVEFEQVRBX1RFTVBMQVRFX05BTUUpKTsNCisgICAgICAgIGluZm8uc2V0RGVzY3JpcHRpb24oc2VydmljZVRlbXBsYXRlLmdldERlc2NyaXB0aW9uKCkpOw0KKyAgICAgICAgaW5mby5zZXRWZXJzaW9uKHNlcnZpY2VUZW1wbGF0ZS5nZXRNZXRhZGF0YSgpLmdldChCbHVlUHJpbnRDb25zdGFudHMuTUVUQURBVEFfVEVNUExBVEVfVkVSU0lPTikpOw0KKyAgICAgICAgcmV0dXJuIGluZm87DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBQYXRoPiBnZXRQYXRocygpIHsNCisgICAgICAgIE1hcDxTdHJpbmcsIFBhdGg+IHBhdGhzID0gbmV3IEhhc2hNYXA8PigpOw0KKyAgICAgICAgUGF0aCBwYXRoID0gbmV3IFBhdGgoKTsNCisgICAgICAgIE9wZXJhdGlvbiBwb3N0ID0gbmV3IE9wZXJhdGlvbigpOw0KKyAgICAgICAgcG9zdC5zZXRPcGVyYXRpb25JZCgiY29uZmlndXJlIik7DQorICAgICAgICBwb3N0LnNldENvbnN1bWVzKEFycmF5cy5hc0xpc3QoImFwcGxpY2F0aW9uL2pzb24iLCAiYXBwbGljYXRpb24veG1sIikpOw0KKyAgICAgICAgcG9zdC5zZXRQcm9kdWNlcyhBcnJheXMuYXNMaXN0KCJhcHBsaWNhdGlvbi9qc29uIiwgImFwcGxpY2F0aW9uL3htbCIpKTsNCisgICAgICAgIExpc3Q8UGFyYW1ldGVyPiBwYXJhbWV0ZXJzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorICAgICAgICBQYXJhbWV0ZXIgaW4gPSBuZXcgQm9keVBhcmFtZXRlcigpLnNjaGVtYShuZXcgUmVmTW9kZWwoIiMvZGVmaW5pdGlvbnMvaW5wdXRzIikpOw0KKyAgICAgICAgaW4uc2V0UmVxdWlyZWQodHJ1ZSk7DQorICAgICAgICBpbi5zZXROYW1lKCJpbnB1dHMiKTsNCisgICAgICAgIHBhcmFtZXRlcnMuYWRkKGluKTsNCisgICAgICAgIHBvc3Quc2V0UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsNCisNCisgICAgICAgIE1hcDxTdHJpbmcsIFJlc3BvbnNlPiByZXNwb25zZXMgPSBuZXcgSGFzaE1hcDw+KCk7DQorICAgICAgICBSZXNwb25zZSByZXNwb25zZSA9IG5ldyBSZXNwb25zZSgpLmRlc2NyaXB0aW9uKCJTdWNjZXNzIik7DQorICAgICAgICByZXNwb25zZXMucHV0KCIyMDAiLCByZXNwb25zZSk7DQorDQorICAgICAgICBSZXNwb25zZSBmYWlsdXJlUmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoKS5kZXNjcmlwdGlvbigiRmFpbHVyZSIpOw0KKyAgICAgICAgcmVzcG9uc2VzLnB1dCgiNDAwIiwgZmFpbHVyZVJlc3BvbnNlKTsNCisgICAgICAgIHBvc3Quc2V0UmVzcG9uc2VzKHJlc3BvbnNlcyk7DQorDQorICAgICAgICBwYXRoLnNldFBvc3QocG9zdCk7DQorICAgICAgICBwYXRocy5wdXQoIi9vcGVyYXRpb25zL2NvbmZpZy1zZWxmc2VydmljZS1hcGk6Y29uZmlndXJlIiwgcGF0aCk7DQorICAgICAgICByZXR1cm4gcGF0aHM7DQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBNYXA8U3RyaW5nLCBNb2RlbD4gZ2V0RGVmaW5pdGlvbigpIHsNCisgICAgICAgIE1hcDxTdHJpbmcsIE1vZGVsPiBtb2RlbHMgPSBuZXcgSGFzaE1hcDw+KCk7DQorDQorICAgICAgICBNb2RlbEltcGwgaW5wdXRtb2RlbCA9IG5ldyBNb2RlbEltcGwoKTsNCisgICAgICAgIGlucHV0bW9kZWwuc2V0VGl0bGUoImlucHV0cyIpOw0KKyAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldFRvcG9sb2d5VGVtcGxhdGUoKS5nZXRJbnB1dHMoKS5mb3JFYWNoKChwcm9wZXJ0eU5hbWUsIHByb3BlcnR5KSAtPiB7DQorICAgICAgICAgICAgUHJvcGVydHkgZGVmUHJvcGVydHkgPSBnZXRQcm9wZXJ5KHByb3BlcnR5TmFtZSwgcHJvcGVydHkpOw0KKyAgICAgICAgICAgIGlucHV0bW9kZWwucHJvcGVydHkocHJvcGVydHlOYW1lLCBkZWZQcm9wZXJ0eSk7DQorICAgICAgICB9KTsNCisgICAgICAgIG1vZGVscy5wdXQoImlucHV0cyIsIGlucHV0bW9kZWwpOw0KKw0KKyAgICAgICAgaWYgKE1hcFV0aWxzLmlzTm90RW1wdHkoc2VydmljZVRlbXBsYXRlLmdldERhdGFUeXBlcygpKSkgew0KKyAgICAgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5nZXREYXRhVHlwZXMoKS5mb3JFYWNoKChuYW1lLCBkYXRhVHlwZSkgLT4gew0KKyAgICAgICAgICAgICAgICBNb2RlbEltcGwgbW9kZWwgPSBuZXcgTW9kZWxJbXBsKCk7DQorICAgICAgICAgICAgICAgIG1vZGVsLnNldERlc2NyaXB0aW9uKGRhdGFUeXBlLmdldERlc2NyaXB0aW9uKCkpOw0KKyAgICAgICAgICAgICAgICAvLyBtb2RlbC5zZXRUeXBlKCJvYmplY3QiKTsNCisgICAgICAgICAgICAgICAgaWYgKGRhdGFUeXBlICE9IG51bGwgJiYgTWFwVXRpbHMuaXNOb3RFbXB0eShkYXRhVHlwZS5nZXRQcm9wZXJ0aWVzKCkpKSB7DQorDQorICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZS5nZXRQcm9wZXJ0aWVzKCkuZm9yRWFjaCgocHJvcGVydHlOYW1lLCBwcm9wZXJ0eSkgLT4gew0KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5IGRlZlByb3BlcnR5ID0gZ2V0UHJvcGVyeShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5KTsNCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5hZGRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGRlZlByb3BlcnR5KTsNCisgICAgICAgICAgICAgICAgICAgIH0pOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG1vZGVscy5wdXQobmFtZSwgbW9kZWwpOw0KKyAgICAgICAgICAgIH0pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIG1vZGVsczsNCisNCisgICAgfQ0KKw0KKyAgICBwcml2YXRlIFByb3BlcnR5IGdldFByb3BlcnkoU3RyaW5nIG5hbWUsIFByb3BlcnR5RGVmaW5pdGlvbiBwcm9wZXJ0eURlZmluaXRpb24pIHsNCisgICAgICAgIFByb3BlcnR5IGRlZlByb3BlcnR5ID0gbnVsbDsNCisNCisgICAgICAgIGlmIChCbHVlUHJpbnRUeXBlcy52YWxpZFByaW1pdGl2ZVR5cGVzKCkuY29udGFpbnMocHJvcGVydHlEZWZpbml0aW9uLmdldFR5cGUoKSkpIHsNCisgICAgICAgICAgICBpZiAoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9CT09MRUFOLmVxdWFscyhwcm9wZXJ0eURlZmluaXRpb24uZ2V0VHlwZSgpKSkgew0KKyAgICAgICAgICAgICAgICBkZWZQcm9wZXJ0eSA9IG5ldyBCb29sZWFuUHJvcGVydHkoKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludENvbnN0YW50cy5EQVRBX1RZUEVfSU5URUdFUi5lcXVhbHMocHJvcGVydHlEZWZpbml0aW9uLmdldFR5cGUoKSkpIHsNCisgICAgICAgICAgICAgICAgU3RyaW5nUHJvcGVydHkgc3RyaW5nUHJvcGVydHkgPSBuZXcgU3RyaW5nUHJvcGVydHkoKTsNCisgICAgICAgICAgICAgICAgc3RyaW5nUHJvcGVydHkuc2V0VHlwZSgiaW50ZWdlciIpOw0KKyAgICAgICAgICAgICAgICBkZWZQcm9wZXJ0eSA9IHN0cmluZ1Byb3BlcnR5Ow0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9GTE9BVC5lcXVhbHMocHJvcGVydHlEZWZpbml0aW9uLmdldFR5cGUoKSkpIHsNCisgICAgICAgICAgICAgICAgU3RyaW5nUHJvcGVydHkgc3RyaW5nUHJvcGVydHkgPSBuZXcgU3RyaW5nUHJvcGVydHkoKTsNCisgICAgICAgICAgICAgICAgc3RyaW5nUHJvcGVydHkuc2V0Rm9ybWF0KCJmbG9hdCIpOw0KKyAgICAgICAgICAgICAgICBkZWZQcm9wZXJ0eSA9IHN0cmluZ1Byb3BlcnR5Ow0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoQmx1ZVByaW50Q29uc3RhbnRzLkRBVEFfVFlQRV9USU1FU1RBTVAuZXF1YWxzKHByb3BlcnR5RGVmaW5pdGlvbi5nZXRUeXBlKCkpKSB7DQorICAgICAgICAgICAgICAgIERhdGVUaW1lUHJvcGVydHkgZGF0ZVRpbWVQcm9wZXJ0eSA9IG5ldyBEYXRlVGltZVByb3BlcnR5KCk7DQorICAgICAgICAgICAgICAgIGRhdGVUaW1lUHJvcGVydHkuc2V0Rm9ybWF0KCJkYXRlLXRpbWUiKTsNCisgICAgICAgICAgICAgICAgZGVmUHJvcGVydHkgPSBkYXRlVGltZVByb3BlcnR5Ow0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGRlZlByb3BlcnR5ID0gbmV3IFN0cmluZ1Byb3BlcnR5KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfSBlbHNlIGlmIChCbHVlUHJpbnRUeXBlcy52YWxpZENvbGxlY3Rpb25UeXBlcygpLmNvbnRhaW5zKHByb3BlcnR5RGVmaW5pdGlvbi5nZXRUeXBlKCkpKSB7DQorICAgICAgICAgICAgQXJyYXlQcm9wZXJ0eSBhcnJheVByb3BlcnR5ID0gbmV3IEFycmF5UHJvcGVydHkoKTsNCisgICAgICAgICAgICBpZiAocHJvcGVydHlEZWZpbml0aW9uLmdldEVudHJ5U2NoZW1hKCkgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBTdHJpbmcgZW50cnlTY2hlbWEgPSBwcm9wZXJ0eURlZmluaXRpb24uZ2V0RW50cnlTY2hlbWEoKS5nZXRUeXBlKCk7DQorICAgICAgICAgICAgICAgIGlmICghQmx1ZVByaW50VHlwZXMudmFsaWRQcmltaXRpdmVUeXBlcygpLmNvbnRhaW5zKGVudHJ5U2NoZW1hKSkgew0KKyAgICAgICAgICAgICAgICAgICAgUHJvcGVydHkgaW5uZXJUeXBlID0gbmV3IFJlZlByb3BlcnR5KCIjL2RlZmluaXRpb25zLyIgKyBlbnRyeVNjaGVtYSk7DQorICAgICAgICAgICAgICAgICAgICBhcnJheVByb3BlcnR5LnNldEl0ZW1zKGlubmVyVHlwZSk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eSBpbm5lclR5cGUgPSBuZXcgU3RyaW5nUHJvcGVydHkoKTsNCisgICAgICAgICAgICAgICAgICAgIGFycmF5UHJvcGVydHkuc2V0SXRlbXMoaW5uZXJUeXBlKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBkZWZQcm9wZXJ0eSA9IGFycmF5UHJvcGVydHk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBkZWZQcm9wZXJ0eSA9IG5ldyBSZWZQcm9wZXJ0eSgiIy9kZWZpbml0aW9ucy8iICsgcHJvcGVydHlEZWZpbml0aW9uLmdldFR5cGUoKSk7DQorICAgICAgICB9DQorICAgICAgICBkZWZQcm9wZXJ0eS5zZXROYW1lKG5hbWUpOw0KKyAgICAgICAgaWYgKHByb3BlcnR5RGVmaW5pdGlvbi5nZXREZWZhdWx0VmFsdWUoKSAhPSBudWxsKSB7DQorICAgICAgICAgICAgZGVmUHJvcGVydHkuc2V0RGVmYXVsdChTdHJpbmcudmFsdWVPZihwcm9wZXJ0eURlZmluaXRpb24uZ2V0RGVmYXVsdFZhbHVlKCkpKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGRlZlByb3BlcnR5LnNldFJlcXVpcmVkKEJvb2xlYW5VdGlscy5pc1RydWUocHJvcGVydHlEZWZpbml0aW9uLmdldFJlcXVpcmVkKCkpKTsNCisgICAgICAgIGRlZlByb3BlcnR5LnNldERlc2NyaXB0aW9uKHByb3BlcnR5RGVmaW5pdGlvbi5nZXREZXNjcmlwdGlvbigpKTsNCisgICAgICAgIHJldHVybiBkZWZQcm9wZXJ0eTsNCisgICAgfQ0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL0NvbmZpZ01vZGVsLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL0NvbmZpZ01vZGVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0OTYwZgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9kb21haW4vQ29uZmlnTW9kZWwuamF2YQpAQCAtMCwwICsxLDI5MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbjsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkZvcm1hdDsNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbk1hbmFnZWRSZWZlcmVuY2U7DQoraW1wb3J0IG9yZy5oaWJlcm5hdGUuYW5ub3RhdGlvbnMuUHJveHk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5hbm5vdGF0aW9uLkxhc3RNb2RpZmllZERhdGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEuZG9tYWluLnN1cHBvcnQuQXVkaXRpbmdFbnRpdHlMaXN0ZW5lcjsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuKjsNCitpbXBvcnQgamF2YXgudmFsaWRhdGlvbi5jb25zdHJhaW50cy5Ob3ROdWxsOw0KK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIENvbmZpZ01vZGVsLmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBDb25maWdNb2RlbCBFbnRpdHkNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorDQorQEVudGl0eUxpc3RlbmVycyh7QXVkaXRpbmdFbnRpdHlMaXN0ZW5lci5jbGFzc30pDQorQEVudGl0eQ0KK0BUYWJsZShuYW1lID0gIkNPTkZJR19NT0RFTCIpDQorQFByb3h5KGxhenk9ZmFsc2UpDQorcHVibGljIGNsYXNzIENvbmZpZ01vZGVsIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorICAgIEBJZA0KKyAgICBAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkNCisgICAgQENvbHVtbihuYW1lID0gImNvbmZpZ19tb2RlbF9pZCIpDQorICAgIHByaXZhdGUgTG9uZyBpZDsNCisNCisgICAgQENvbHVtbihuYW1lID0gInNlcnZpY2VfdXVpZCIpDQorICAgIHByaXZhdGUgU3RyaW5nIHNlcnZpY2VVVUlEOw0KKw0KKyAgICBAQ29sdW1uKG5hbWUgPSAiZGlzdHJpYnV0aW9uX2lkIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGlzdHJpYnV0aW9uSWQ7DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJzZXJ2aWNlX25hbWUiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlTmFtZTsNCisNCisgICAgQENvbHVtbihuYW1lID0gInNlcnZpY2VfZGVzY3JpcHRpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBzZXJ2aWNlRGVzY3JpcHRpb247DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJyZXNvdXJjZV91dWlkIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VVVUlEOw0KKw0KKyAgICBAQ29sdW1uKG5hbWUgPSAicmVzb3VyY2VfaW5zdGFuY2VfbmFtZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIHJlc291cmNlSW5zdGFuY2VOYW1lOw0KKw0KKyAgICBAQ29sdW1uKG5hbWUgPSAicmVzb3VyY2VfbmFtZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIHJlc291cmNlTmFtZTsNCisNCisgICAgQENvbHVtbihuYW1lID0gInJlc291cmNlX3ZlcnNpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyByZXNvdXJjZVZlcnNpb247DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJyZXNvdXJjZV90eXBlIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VUeXBlOw0KKw0KKyAgICBAQ29sdW1uKG5hbWUgPSAiYXJ0aWZhY3RfdXVpZCIpDQorICAgIHByaXZhdGUgU3RyaW5nIGFydGlmYWN0VVVJZDsNCisNCisgICAgQENvbHVtbihuYW1lID0gImFydGlmYWN0X3R5cGUiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBhcnRpZmFjdFR5cGU7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJhcnRpZmFjdF92ZXJzaW9uIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgYXJ0aWZhY3RWZXJzaW9uOw0KKw0KKyAgICBATG9iDQorICAgIEBDb2x1bW4obmFtZSA9ICJhcnRpZmFjdF9kZXNjcmlwdGlvbiIpDQorICAgIHByaXZhdGUgU3RyaW5nIGFydGlmYWN0RGVzY3JpcHRpb247DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJpbnRlcm5hbF92ZXJzaW9uIikNCisgICAgcHJpdmF0ZSBJbnRlZ2VyIGludGVybmFsVmVyc2lvbjsNCisNCisgICAgQEpzb25Gb3JtYXQoc2hhcGUgPSBKc29uRm9ybWF0LlNoYXBlLlNUUklORywgcGF0dGVybiA9ICJNTS9kZC95eXl5IEtLOm1tOnNzIGEgWiIpDQorICAgIEBMYXN0TW9kaWZpZWREYXRlDQorICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuVElNRVNUQU1QKQ0KKyAgICBAQ29sdW1uKG5hbWUgPSAiY3JlYXRpb25fZGF0ZSIpDQorICAgIHByaXZhdGUgRGF0ZSBjcmVhdGVkRGF0ZSA9IG5ldyBEYXRlKCk7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJhcnRpZmFjdF9uYW1lIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgYXJ0aWZhY3ROYW1lOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBAQ29sdW1uKG5hbWUgPSAicHVibGlzaGVkIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgcHVibGlzaGVkOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBAQ29sdW1uKG5hbWUgPSAidXBkYXRlZF9ieSIpDQorICAgIHByaXZhdGUgU3RyaW5nIHVwZGF0ZWRCeTsNCisNCisgICAgQE5vdE51bGwNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAidGFncyIpDQorICAgIHByaXZhdGUgU3RyaW5nIHRhZ3M7DQorDQorDQorICAgIEBPbmVUb01hbnkobWFwcGVkQnkgPSAiY29uZmlnTW9kZWwiLCBmZXRjaCA9IEZldGNoVHlwZS5FQUdFUiwgb3JwaGFuUmVtb3ZhbCA9IHRydWUsIGNhc2NhZGUgPSBDYXNjYWRlVHlwZS5BTEwpDQorICAgIEBDb2x1bW4obnVsbGFibGUgPSB0cnVlKQ0KKyAgICBASnNvbk1hbmFnZWRSZWZlcmVuY2UNCisgICAgcHJpdmF0ZSBMaXN0PENvbmZpZ01vZGVsQ29udGVudD4gY29uZmlnTW9kZWxDb250ZW50cyA9IG5ldyBBcnJheUxpc3Q8PigpOw0KKw0KKyAgICBwdWJsaWMgTG9uZyBnZXRJZCgpIHsNCisgICAgICAgIHJldHVybiBpZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRJZChMb25nIGlkKSB7DQorICAgICAgICB0aGlzLmlkID0gaWQ7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlVVVJRCgpIHsNCisgICAgICAgIHJldHVybiBzZXJ2aWNlVVVJRDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRTZXJ2aWNlVVVJRChTdHJpbmcgc2VydmljZVVVSUQpIHsNCisgICAgICAgIHRoaXMuc2VydmljZVVVSUQgPSBzZXJ2aWNlVVVJRDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3RyaWJ1dGlvbklkKCkgew0KKyAgICAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbklkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldERpc3RyaWJ1dGlvbklkKFN0cmluZyBkaXN0cmlidXRpb25JZCkgew0KKyAgICAgICAgdGhpcy5kaXN0cmlidXRpb25JZCA9IGRpc3RyaWJ1dGlvbklkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2VydmljZU5hbWUoKSB7DQorICAgICAgICByZXR1cm4gc2VydmljZU5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0U2VydmljZU5hbWUoU3RyaW5nIHNlcnZpY2VOYW1lKSB7DQorICAgICAgICB0aGlzLnNlcnZpY2VOYW1lID0gc2VydmljZU5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRTZXJ2aWNlRGVzY3JpcHRpb24oKSB7DQorICAgICAgICByZXR1cm4gc2VydmljZURlc2NyaXB0aW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFNlcnZpY2VEZXNjcmlwdGlvbihTdHJpbmcgc2VydmljZURlc2NyaXB0aW9uKSB7DQorICAgICAgICB0aGlzLnNlcnZpY2VEZXNjcmlwdGlvbiA9IHNlcnZpY2VEZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlc291cmNlVVVJRCgpIHsNCisgICAgICAgIHJldHVybiByZXNvdXJjZVVVSUQ7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0UmVzb3VyY2VVVUlEKFN0cmluZyByZXNvdXJjZVVVSUQpIHsNCisgICAgICAgIHRoaXMucmVzb3VyY2VVVUlEID0gcmVzb3VyY2VVVUlEOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVzb3VyY2VJbnN0YW5jZU5hbWUoKSB7DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VJbnN0YW5jZU5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0UmVzb3VyY2VJbnN0YW5jZU5hbWUoU3RyaW5nIHJlc291cmNlSW5zdGFuY2VOYW1lKSB7DQorICAgICAgICB0aGlzLnJlc291cmNlSW5zdGFuY2VOYW1lID0gcmVzb3VyY2VJbnN0YW5jZU5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRSZXNvdXJjZU5hbWUoKSB7DQorICAgICAgICByZXR1cm4gcmVzb3VyY2VOYW1lOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFJlc291cmNlTmFtZShTdHJpbmcgcmVzb3VyY2VOYW1lKSB7DQorICAgICAgICB0aGlzLnJlc291cmNlTmFtZSA9IHJlc291cmNlTmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlc291cmNlVmVyc2lvbigpIHsNCisgICAgICAgIHJldHVybiByZXNvdXJjZVZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0UmVzb3VyY2VWZXJzaW9uKFN0cmluZyByZXNvdXJjZVZlcnNpb24pIHsNCisgICAgICAgIHRoaXMucmVzb3VyY2VWZXJzaW9uID0gcmVzb3VyY2VWZXJzaW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVzb3VyY2VUeXBlKCkgew0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlVHlwZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZVR5cGUoU3RyaW5nIHJlc291cmNlVHlwZSkgew0KKyAgICAgICAgdGhpcy5yZXNvdXJjZVR5cGUgPSByZXNvdXJjZVR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdFVVSWQoKSB7DQorICAgICAgICByZXR1cm4gYXJ0aWZhY3RVVUlkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldEFydGlmYWN0VVVJZChTdHJpbmcgYXJ0aWZhY3RVVUlkKSB7DQorICAgICAgICB0aGlzLmFydGlmYWN0VVVJZCA9IGFydGlmYWN0VVVJZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldEFydGlmYWN0VHlwZSgpIHsNCisgICAgICAgIHJldHVybiBhcnRpZmFjdFR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3RUeXBlKFN0cmluZyBhcnRpZmFjdFR5cGUpIHsNCisgICAgICAgIHRoaXMuYXJ0aWZhY3RUeXBlID0gYXJ0aWZhY3RUeXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3RWZXJzaW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0VmVyc2lvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdFZlcnNpb24oU3RyaW5nIGFydGlmYWN0VmVyc2lvbikgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdFZlcnNpb24gPSBhcnRpZmFjdFZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdERlc2NyaXB0aW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0RGVzY3JpcHRpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3REZXNjcmlwdGlvbihTdHJpbmcgYXJ0aWZhY3REZXNjcmlwdGlvbikgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdERlc2NyaXB0aW9uID0gYXJ0aWZhY3REZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgSW50ZWdlciBnZXRJbnRlcm5hbFZlcnNpb24oKSB7DQorICAgICAgICByZXR1cm4gaW50ZXJuYWxWZXJzaW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldEludGVybmFsVmVyc2lvbihJbnRlZ2VyIGludGVybmFsVmVyc2lvbikgew0KKyAgICAgICAgdGhpcy5pbnRlcm5hbFZlcnNpb24gPSBpbnRlcm5hbFZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIERhdGUgZ2V0Q3JlYXRlZERhdGUoKSB7DQorICAgICAgICByZXR1cm4gY3JlYXRlZERhdGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0Q3JlYXRlZERhdGUoRGF0ZSBjcmVhdGVkRGF0ZSkgew0KKyAgICAgICAgdGhpcy5jcmVhdGVkRGF0ZSA9IGNyZWF0ZWREYXRlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3ROYW1lKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0TmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdE5hbWUoU3RyaW5nIGFydGlmYWN0TmFtZSkgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdE5hbWUgPSBhcnRpZmFjdE5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoZWQoKSB7DQorICAgICAgICByZXR1cm4gcHVibGlzaGVkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hlZChTdHJpbmcgcHVibGlzaGVkKSB7DQorICAgICAgICB0aGlzLnB1Ymxpc2hlZCA9IHB1Ymxpc2hlZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFVwZGF0ZWRCeSgpIHsNCisgICAgICAgIHJldHVybiB1cGRhdGVkQnk7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXBkYXRlZEJ5KFN0cmluZyB1cGRhdGVkQnkpIHsNCisgICAgICAgIHRoaXMudXBkYXRlZEJ5ID0gdXBkYXRlZEJ5Ow0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFncygpIHsNCisgICAgICAgIHJldHVybiB0YWdzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFRhZ3MoU3RyaW5nIHRhZ3MpIHsNCisgICAgICAgIHRoaXMudGFncyA9IHRhZ3M7DQorICAgIH0NCisNCisgICAgcHVibGljIExpc3Q8Q29uZmlnTW9kZWxDb250ZW50PiBnZXRDb25maWdNb2RlbENvbnRlbnRzKCkgew0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGVsQ29udGVudHM7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0Q29uZmlnTW9kZWxDb250ZW50cyhMaXN0PENvbmZpZ01vZGVsQ29udGVudD4gY29uZmlnTW9kZWxDb250ZW50cykgew0KKyAgICAgICAgdGhpcy5jb25maWdNb2RlbENvbnRlbnRzID0gY29uZmlnTW9kZWxDb250ZW50czsNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL0NvbmZpZ01vZGVsQ29udGVudC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2RvbWFpbi9Db25maWdNb2RlbENvbnRlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2JkNTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2RvbWFpbi9Db25maWdNb2RlbENvbnRlbnQuamF2YQpAQCAtMCwwICsxLDE3NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbjsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkJhY2tSZWZlcmVuY2U7DQoraW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25Gb3JtYXQ7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5hbm5vdGF0aW9uLkxhc3RNb2RpZmllZERhdGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEuZG9tYWluLnN1cHBvcnQuQXVkaXRpbmdFbnRpdHlMaXN0ZW5lcjsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuKjsNCitpbXBvcnQgamF2YXgudmFsaWRhdGlvbi5jb25zdHJhaW50cy5Ob3ROdWxsOw0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCitpbXBvcnQgamF2YS51dGlsLk9iamVjdHM7DQorDQorLyoqDQorICogRGF0YURpY3Rpb25hcnkuamF2YSBQdXJwb3NlOiBQcm92aWRlIENvbmZpZ3VyYXRpb24gR2VuZXJhdG9yIERhdGFEaWN0aW9uYXJ5IEVudGl0eQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitARW50aXR5TGlzdGVuZXJzKHtBdWRpdGluZ0VudGl0eUxpc3RlbmVyLmNsYXNzfSkNCitARW50aXR5DQorQFRhYmxlKG5hbWUgPSAiQ09ORklHX01PREVMX0NPTlRFTlQiKQ0KK3B1YmxpYyBjbGFzcyBDb25maWdNb2RlbENvbnRlbnQgew0KKw0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisNCisgICAgQElkDQorICAgIEBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQ0KKyAgICBAQ29sdW1uKG5hbWUgPSAiY29uZmlnX21vZGVsX2NvbnRlbnRfaWQiKQ0KKyAgICBwcml2YXRlIExvbmcgaWQ7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJuYW1lIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gImNvbnRlbnRfdHlwZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIGNvbnRlbnRUeXBlOw0KKw0KKw0KKyAgICBATWFueVRvT25lDQorICAgIEBKb2luQ29sdW1uKG5hbWUgPSAiY29uZmlnX21vZGVsX2lkIikNCisgICAgQEpzb25CYWNrUmVmZXJlbmNlDQorICAgIHByaXZhdGUgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWw7DQorDQorICAgIEBMb2INCisgICAgQENvbHVtbihuYW1lID0gImRlc2NyaXB0aW9uIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGVzY3JpcHRpb247DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBMb2INCisgICAgQENvbHVtbihuYW1lID0gImNvbnRlbnQiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBjb250ZW50Ow0KKw0KKw0KKyAgICBASnNvbkZvcm1hdChzaGFwZSA9IEpzb25Gb3JtYXQuU2hhcGUuU1RSSU5HLCBwYXR0ZXJuID0gIk1NL2RkL3l5eXkgS0s6bW06c3MgYSBaIikNCisgICAgQExhc3RNb2RpZmllZERhdGUNCisgICAgQFRlbXBvcmFsKFRlbXBvcmFsVHlwZS5USU1FU1RBTVApDQorICAgIEBDb2x1bW4obmFtZSA9ICJ1cGRhdGVkX2RhdGUiKQ0KKyAgICBwcml2YXRlIERhdGUgY3JlYXRpb25EYXRlOw0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJbIik7DQorICAgICAgICBidWlsZGVyLmFwcGVuZCgiaWQgPSAiICsgaWQpOw0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIiwgbmFtZSA9ICIgKyBuYW1lKTsNCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGNvbnRlbnRUeXBlID0gIiArIGNvbnRlbnRUeXBlKTsNCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7DQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsNCisNCisgICAgICAgIGlmIChvID09IHRoaXMpIHsNCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgIH0NCisgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBDb25maWdNb2RlbENvbnRlbnQpKSB7DQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KKyAgICAgICAgfQ0KKyAgICAgICAgQ29uZmlnTW9kZWxDb250ZW50IGNvbmZpZ01vZGVsQ29udGVudCA9IChDb25maWdNb2RlbENvbnRlbnQpIG87DQorICAgICAgICByZXR1cm4gT2JqZWN0cy5lcXVhbHMoaWQsIGNvbmZpZ01vZGVsQ29udGVudC5pZCkgJiYgT2JqZWN0cy5lcXVhbHMobmFtZSwgY29uZmlnTW9kZWxDb250ZW50Lm5hbWUpDQorICAgICAgICAgICAgICAgICYmIE9iamVjdHMuZXF1YWxzKGNvbnRlbnRUeXBlLCBjb25maWdNb2RlbENvbnRlbnQuY29udGVudFR5cGUpOw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgew0KKyAgICAgICAgcmV0dXJuIE9iamVjdHMuaGFzaChpZCwgbmFtZSwgY29udGVudFR5cGUpOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBMb25nIGdldElkKCkgew0KKyAgICAgICAgcmV0dXJuIGlkOw0KKyAgICB9DQorDQorDQorICAgIHB1YmxpYyB2b2lkIHNldElkKExvbmcgaWQpIHsNCisgICAgICAgIHRoaXMuaWQgPSBpZDsNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7DQorICAgICAgICByZXR1cm4gbmFtZTsNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7DQorICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOw0KKyAgICB9DQorDQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGUoKSB7DQorICAgICAgICByZXR1cm4gY29udGVudFR5cGU7DQorICAgIH0NCisNCisNCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFR5cGUoU3RyaW5nIGNvbnRlbnRUeXBlKSB7DQorICAgICAgICB0aGlzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGU7DQorICAgIH0NCisNCisNCisgICAgcHVibGljIENvbmZpZ01vZGVsIGdldENvbmZpZ01vZGVsKCkgew0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGVsOw0KKyAgICB9DQorDQorDQorICAgIHB1YmxpYyB2b2lkIHNldENvbmZpZ01vZGVsKENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsKSB7DQorICAgICAgICB0aGlzLmNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWw7DQorICAgIH0NCisNCisNCisgICAgcHVibGljIFN0cmluZyBnZXREZXNjcmlwdGlvbigpIHsNCisgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZXNjcmlwdGlvbihTdHJpbmcgZGVzY3JpcHRpb24pIHsNCisgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldENvbnRlbnQoKSB7DQorICAgICAgICByZXR1cm4gY29udGVudDsNCisgICAgfQ0KKw0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRDb250ZW50KFN0cmluZyBjb250ZW50KSB7DQorICAgICAgICB0aGlzLmNvbnRlbnQgPSBjb250ZW50Ow0KKyAgICB9DQorDQorDQorICAgIHB1YmxpYyBEYXRlIGdldENyZWF0aW9uRGF0ZSgpIHsNCisgICAgICAgIHJldHVybiBjcmVhdGlvbkRhdGU7DQorICAgIH0NCisNCisNCisgICAgcHVibGljIHZvaWQgc2V0Q3JlYXRpb25EYXRlKERhdGUgY3JlYXRpb25EYXRlKSB7DQorICAgICAgICB0aGlzLmNyZWF0aW9uRGF0ZSA9IGNyZWF0aW9uRGF0ZTsNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL0NvbmZpZ01vZGVsU2VhcmNoLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL0NvbmZpZ01vZGVsU2VhcmNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU5MDE4OAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9kb21haW4vQ29uZmlnTW9kZWxTZWFyY2guamF2YQpAQCAtMCwwICsxLDE3MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbjsNCisNCitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkZvcm1hdDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmFubm90YXRpb24uTGFzdE1vZGlmaWVkRGF0ZTsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuKjsNCitpbXBvcnQgamF2YXgudmFsaWRhdGlvbi5jb25zdHJhaW50cy5Ob3ROdWxsOw0KK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQorDQorQEVudGl0eQ0KK0BUYWJsZShuYW1lID0gIkNPTkZJR19NT0RFTCIpDQorcHVibGljIGNsYXNzIENvbmZpZ01vZGVsU2VhcmNoIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorICAgIEBJZA0KKyAgICBAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkNCisgICAgQENvbHVtbihuYW1lID0gImNvbmZpZ19tb2RlbF9pZCIpDQorICAgIHByaXZhdGUgTG9uZyBpZDsNCisNCisgICAgQENvbHVtbihuYW1lID0gImFydGlmYWN0X3V1aWQiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBhcnRpZmFjdFVVSWQ7DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJhcnRpZmFjdF90eXBlIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgYXJ0aWZhY3RUeXBlOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBAQ29sdW1uKG5hbWUgPSAiYXJ0aWZhY3RfdmVyc2lvbiIpDQorICAgIHByaXZhdGUgU3RyaW5nIGFydGlmYWN0VmVyc2lvbjsNCisNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAiYXJ0aWZhY3RfZGVzY3JpcHRpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBhcnRpZmFjdERlc2NyaXB0aW9uOw0KKw0KKyAgICBAQ29sdW1uKG5hbWUgPSAiaW50ZXJuYWxfdmVyc2lvbiIpDQorICAgIHByaXZhdGUgSW50ZWdlciBpbnRlcm5hbFZlcnNpb247DQorDQorICAgIEBKc29uRm9ybWF0KHNoYXBlID0gSnNvbkZvcm1hdC5TaGFwZS5TVFJJTkcsIHBhdHRlcm4gPSAiTU0vZGQveXl5eSBLSzptbTpzcyBhIFoiKQ0KKyAgICBATGFzdE1vZGlmaWVkRGF0ZQ0KKyAgICBAVGVtcG9yYWwoVGVtcG9yYWxUeXBlLlRJTUVTVEFNUCkNCisgICAgQENvbHVtbihuYW1lID0gImNyZWF0aW9uX2RhdGUiKQ0KKyAgICBwcml2YXRlIERhdGUgY3JlYXRlZERhdGUgPSBuZXcgRGF0ZSgpOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBAQ29sdW1uKG5hbWUgPSAiYXJ0aWZhY3RfbmFtZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIGFydGlmYWN0TmFtZTsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gInB1Ymxpc2hlZCIpDQorICAgIHByaXZhdGUgU3RyaW5nIHB1Ymxpc2hlZDsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gInVwZGF0ZWRfYnkiKQ0KKyAgICBwcml2YXRlIFN0cmluZyB1cGRhdGVkQnk7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBMb2INCisgICAgQENvbHVtbihuYW1lID0gInRhZ3MiKQ0KKyAgICBwcml2YXRlIFN0cmluZyB0YWdzOw0KKw0KKyAgICBwdWJsaWMgTG9uZyBnZXRJZCgpIHsNCisgICAgICAgIHJldHVybiBpZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRJZChMb25nIGlkKSB7DQorICAgICAgICB0aGlzLmlkID0gaWQ7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdFVVSWQoKSB7DQorICAgICAgICByZXR1cm4gYXJ0aWZhY3RVVUlkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldEFydGlmYWN0VVVJZChTdHJpbmcgYXJ0aWZhY3RVVUlkKSB7DQorICAgICAgICB0aGlzLmFydGlmYWN0VVVJZCA9IGFydGlmYWN0VVVJZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldEFydGlmYWN0VHlwZSgpIHsNCisgICAgICAgIHJldHVybiBhcnRpZmFjdFR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3RUeXBlKFN0cmluZyBhcnRpZmFjdFR5cGUpIHsNCisgICAgICAgIHRoaXMuYXJ0aWZhY3RUeXBlID0gYXJ0aWZhY3RUeXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3RWZXJzaW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0VmVyc2lvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdFZlcnNpb24oU3RyaW5nIGFydGlmYWN0VmVyc2lvbikgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdFZlcnNpb24gPSBhcnRpZmFjdFZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRBcnRpZmFjdERlc2NyaXB0aW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0RGVzY3JpcHRpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0QXJ0aWZhY3REZXNjcmlwdGlvbihTdHJpbmcgYXJ0aWZhY3REZXNjcmlwdGlvbikgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdERlc2NyaXB0aW9uID0gYXJ0aWZhY3REZXNjcmlwdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgSW50ZWdlciBnZXRJbnRlcm5hbFZlcnNpb24oKSB7DQorICAgICAgICByZXR1cm4gaW50ZXJuYWxWZXJzaW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldEludGVybmFsVmVyc2lvbihJbnRlZ2VyIGludGVybmFsVmVyc2lvbikgew0KKyAgICAgICAgdGhpcy5pbnRlcm5hbFZlcnNpb24gPSBpbnRlcm5hbFZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIERhdGUgZ2V0Q3JlYXRlZERhdGUoKSB7DQorICAgICAgICByZXR1cm4gY3JlYXRlZERhdGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0Q3JlYXRlZERhdGUoRGF0ZSBjcmVhdGVkRGF0ZSkgew0KKyAgICAgICAgdGhpcy5jcmVhdGVkRGF0ZSA9IGNyZWF0ZWREYXRlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXJ0aWZhY3ROYW1lKCkgew0KKyAgICAgICAgcmV0dXJuIGFydGlmYWN0TmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRBcnRpZmFjdE5hbWUoU3RyaW5nIGFydGlmYWN0TmFtZSkgew0KKyAgICAgICAgdGhpcy5hcnRpZmFjdE5hbWUgPSBhcnRpZmFjdE5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRQdWJsaXNoZWQoKSB7DQorICAgICAgICByZXR1cm4gcHVibGlzaGVkOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFB1Ymxpc2hlZChTdHJpbmcgcHVibGlzaGVkKSB7DQorICAgICAgICB0aGlzLnB1Ymxpc2hlZCA9IHB1Ymxpc2hlZDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFVwZGF0ZWRCeSgpIHsNCisgICAgICAgIHJldHVybiB1cGRhdGVkQnk7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXBkYXRlZEJ5KFN0cmluZyB1cGRhdGVkQnkpIHsNCisgICAgICAgIHRoaXMudXBkYXRlZEJ5ID0gdXBkYXRlZEJ5Ow0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFncygpIHsNCisgICAgICAgIHJldHVybiB0YWdzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFRhZ3MoU3RyaW5nIHRhZ3MpIHsNCisgICAgICAgIHRoaXMudGFncyA9IHRhZ3M7DQorICAgIH0NCisNCisgICAgcHVibGljIHN0YXRpYyBsb25nIGdldFNlcmlhbHZlcnNpb251aWQoKSB7DQorICAgICAgICByZXR1cm4gc2VyaWFsVmVyc2lvblVJRDsNCisgICAgfQ0KKw0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL01vZGVsVHlwZS5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2RvbWFpbi9Nb2RlbFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDYzNDBhCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2RvbWFpbi9Nb2RlbFR5cGUuamF2YQpAQCAtMCwwICsxLDE3MCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbjsNCisNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmFubm90YXRpb24uTGFzdE1vZGlmaWVkRGF0ZTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmpwYS5kb21haW4uc3VwcG9ydC5BdWRpdGluZ0VudGl0eUxpc3RlbmVyOw0KKw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS4qOw0KK2ltcG9ydCBqYXZheC52YWxpZGF0aW9uLmNvbnN0cmFpbnRzLk5vdE51bGw7DQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOw0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCisNCisNCisvKioNCisgKiBBc2RjUmVmZXJlbmNlLmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBBc2RjUmVmZXJlbmNlIEVudGl0eQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitARW50aXR5TGlzdGVuZXJzKHtBdWRpdGluZ0VudGl0eUxpc3RlbmVyLmNsYXNzfSkNCitARW50aXR5DQorQFRhYmxlKG5hbWUgPSAiTU9ERUxfVFlQRSIpDQorcHVibGljIGNsYXNzIE1vZGVsVHlwZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7DQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKyAgICBASWQNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gIm1vZGVsX25hbWUiLCBudWxsYWJsZSA9IGZhbHNlKQ0KKyAgICBwcml2YXRlIFN0cmluZyBtb2RlbE5hbWU7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJkZXJpdmVkX2Zyb20iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBkZXJpdmVkRnJvbTsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gImRlZmluaXRpb25fdHlwZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIGRlZmluaXRpb25UeXBlOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBATG9iDQorICAgIEBDb2x1bW4obmFtZSA9ICJkZWZpbml0aW9uIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGVmaW5pdGlvbjsNCisNCisgICAgQE5vdE51bGwNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAiZGVzY3JpcHRpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gInZlcnNpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyB2ZXJzaW9uOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBATG9iDQorICAgIEBDb2x1bW4obmFtZSA9ICJ0YWdzIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgdGFnczsNCisNCisgICAgLy8gQEpzb25Gb3JtYXQoc2hhcGUgPSBKc29uRm9ybWF0LlNoYXBlLlNUUklORywgcGF0dGVybiA9ICJNTS9kZC95eXl5IEtLOm1tOnNzIGEgWiIpDQorICAgIEBMYXN0TW9kaWZpZWREYXRlDQorICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuVElNRVNUQU1QKQ0KKyAgICBAQ29sdW1uKG5hbWUgPSAiY3JlYXRpb25fZGF0ZSIpDQorICAgIHByaXZhdGUgRGF0ZSBjcmVhdGlvbkRhdGU7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJ1cGRhdGVkX2J5IikNCisgICAgcHJpdmF0ZSBTdHJpbmcgdXBkYXRlZEJ5Ow0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1aWxkZXIoIlsiKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgbW9kZWxOYW1lID0gIiArIG1vZGVsTmFtZSk7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIGRlcml2ZWRGcm9tID0gIiArIGRlcml2ZWRGcm9tKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgZGVmaW5pdGlvblR5cGUgPSAiICsgZGVmaW5pdGlvblR5cGUpOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLCBkZXNjcmlwdGlvbiA9ICIgKyBkZXNjcmlwdGlvbik7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIGNyZWF0aW9uRGF0ZSA9ICIgKyBjcmVhdGlvbkRhdGUpOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLCB2ZXJzaW9uID0gIiArIHZlcnNpb24pOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLCB1cGRhdGVkQnkgPSAiICsgdXBkYXRlZEJ5KTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgdGFncyA9ICIgKyB0YWdzKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIl0iKTsNCisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldE1vZGVsTmFtZSgpIHsNCisgICAgICAgIHJldHVybiBtb2RlbE5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0TW9kZWxOYW1lKFN0cmluZyBtb2RlbE5hbWUpIHsNCisgICAgICAgIHRoaXMubW9kZWxOYW1lID0gbW9kZWxOYW1lOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVyaXZlZEZyb20oKSB7DQorICAgICAgICByZXR1cm4gZGVyaXZlZEZyb207DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGVyaXZlZEZyb20oU3RyaW5nIGRlcml2ZWRGcm9tKSB7DQorICAgICAgICB0aGlzLmRlcml2ZWRGcm9tID0gZGVyaXZlZEZyb207DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXREZWZpbml0aW9uVHlwZSgpIHsNCisgICAgICAgIHJldHVybiBkZWZpbml0aW9uVHlwZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZWZpbml0aW9uVHlwZShTdHJpbmcgZGVmaW5pdGlvblR5cGUpIHsNCisgICAgICAgIHRoaXMuZGVmaW5pdGlvblR5cGUgPSBkZWZpbml0aW9uVHlwZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERlZmluaXRpb24oKSB7DQorICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXREZWZpbml0aW9uKFN0cmluZyBkZWZpbml0aW9uKSB7DQorICAgICAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVzY3JpcHRpb24oKSB7DQorICAgICAgICByZXR1cm4gZGVzY3JpcHRpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGVzY3JpcHRpb24oU3RyaW5nIGRlc2NyaXB0aW9uKSB7DQorICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRWZXJzaW9uKCkgew0KKyAgICAgICAgcmV0dXJuIHZlcnNpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VmVyc2lvbihTdHJpbmcgdmVyc2lvbikgew0KKyAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFRhZ3MoKSB7DQorICAgICAgICByZXR1cm4gdGFnczsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRUYWdzKFN0cmluZyB0YWdzKSB7DQorICAgICAgICB0aGlzLnRhZ3MgPSB0YWdzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBEYXRlIGdldENyZWF0aW9uRGF0ZSgpIHsNCisgICAgICAgIHJldHVybiBjcmVhdGlvbkRhdGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0Q3JlYXRpb25EYXRlKERhdGUgY3JlYXRpb25EYXRlKSB7DQorICAgICAgICB0aGlzLmNyZWF0aW9uRGF0ZSA9IGNyZWF0aW9uRGF0ZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFVwZGF0ZWRCeSgpIHsNCisgICAgICAgIHJldHVybiB1cGRhdGVkQnk7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0VXBkYXRlZEJ5KFN0cmluZyB1cGRhdGVkQnkpIHsNCisgICAgICAgIHRoaXMudXBkYXRlZEJ5ID0gdXBkYXRlZEJ5Ow0KKyAgICB9DQorDQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9kb21haW4vUmVzb3VyY2VEaWN0aW9uYXJ5LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL1Jlc291cmNlRGljdGlvbmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYjAxODgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvZG9tYWluL1Jlc291cmNlRGljdGlvbmFyeS5qYXZhCkBAIC0wLDAgKzEsMjA3IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluOw0KKw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmRhdGEuYW5ub3RhdGlvbi5MYXN0TW9kaWZpZWREYXRlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmRhdGEuanBhLmRvbWFpbi5zdXBwb3J0LkF1ZGl0aW5nRW50aXR5TGlzdGVuZXI7DQorDQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLio7DQoraW1wb3J0IGphdmF4LnZhbGlkYXRpb24uY29uc3RyYWludHMuTm90TnVsbDsNCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7DQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KKw0KKy8qKg0KKyAqIERhdGFEaWN0aW9uYXJ5LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBEYXRhRGljdGlvbmFyeSBFbnRpdHkNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorQEVudGl0eUxpc3RlbmVycyh7QXVkaXRpbmdFbnRpdHlMaXN0ZW5lci5jbGFzc30pDQorQEVudGl0eQ0KK0BUYWJsZShuYW1lID0gIlJFU09VUkNFX0RJQ1RJT05BUlkiKQ0KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZURpY3Rpb25hcnkgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgew0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisNCisgICAgQElkDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJuYW1lIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsNCisNCisgICAgQE5vdE51bGwNCisgICAgQENvbHVtbihuYW1lID0gInJlc291cmNlX3BhdGgiKQ0KKyAgICBwcml2YXRlIFN0cmluZyByZXNvdXJjZVBhdGg7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJyZXNvdXJjZV90eXBlIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VUeXBlOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBAQ29sdW1uKG5hbWUgPSAiZGF0YV90eXBlIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGF0YVR5cGU7DQorDQorICAgIEBDb2x1bW4obmFtZSA9ICJlbnRyeV9zY2hlbWEiKQ0KKyAgICBwcml2YXRlIFN0cmluZyBlbnRyeVNjaGVtYTsNCisNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAidmFsaWRfdmFsdWVzIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgdmFsaWRWYWx1ZXM7DQorDQorICAgIEBMb2INCisgICAgQENvbHVtbihuYW1lID0gInNhbXBsZV92YWx1ZSIpDQorICAgIHByaXZhdGUgU3RyaW5nIHNhbXBsZVZhbHVlOw0KKw0KKyAgICBATm90TnVsbA0KKyAgICBATG9iDQorICAgIEBDb2x1bW4obmFtZSA9ICJkZWZpbml0aW9uIikNCisgICAgcHJpdmF0ZSBTdHJpbmcgZGVmaW5pdGlvbjsNCisNCisgICAgQE5vdE51bGwNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAiZGVzY3JpcHRpb24iKQ0KKyAgICBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsNCisNCisgICAgQE5vdE51bGwNCisgICAgQExvYg0KKyAgICBAQ29sdW1uKG5hbWUgPSAidGFncyIpDQorICAgIHByaXZhdGUgU3RyaW5nIHRhZ3M7DQorDQorICAgIEBMYXN0TW9kaWZpZWREYXRlDQorICAgIEBUZW1wb3JhbChUZW1wb3JhbFR5cGUuVElNRVNUQU1QKQ0KKyAgICBAQ29sdW1uKG5hbWUgPSAiY3JlYXRpb25fZGF0ZSIpDQorICAgIHByaXZhdGUgRGF0ZSBjcmVhdGlvbkRhdGU7DQorDQorICAgIEBOb3ROdWxsDQorICAgIEBDb2x1bW4obmFtZSA9ICJ1cGRhdGVkX2J5IikNCisgICAgcHJpdmF0ZSBTdHJpbmcgdXBkYXRlZEJ5Ow0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1aWxkZXIoIlsiKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgbmFtZSA9ICIgKyBuYW1lKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgcmVzb3VyY2VQYXRoID0gIiArIHJlc291cmNlUGF0aCk7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIHJlc291cmNlVHlwZSA9ICIgKyByZXNvdXJjZVR5cGUpOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLCBkYXRhVHlwZSA9ICIgKyBkYXRhVHlwZSk7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIGVudHJ5U2NoZW1hID0gIiArIGVudHJ5U2NoZW1hKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgdmFsaWRWYWx1ZXMgPSAiICsgdmFsaWRWYWx1ZXMpOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLCBkZWZpbml0aW9uID0iICsgZGVmaW5pdGlvbik7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIGRlc2NyaXB0aW9uID0gIiArIGRlc2NyaXB0aW9uKTsNCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiwgdXBkYXRlZEJ5ID0gIiArIHVwZGF0ZWRCeSk7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIHRhZ3MgPSAiICsgdGFncyk7DQorICAgICAgICBidWZmZXIuYXBwZW5kKCIsIGNyZWF0aW9uRGF0ZSA9ICIgKyBjcmVhdGlvbkRhdGUpOw0KKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiXSIpOw0KKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVzb3VyY2VQYXRoKCkgew0KKyAgICAgICAgcmV0dXJuIHJlc291cmNlUGF0aDsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRSZXNvdXJjZVBhdGgoU3RyaW5nIHJlc291cmNlUGF0aCkgew0KKyAgICAgICAgdGhpcy5yZXNvdXJjZVBhdGggPSByZXNvdXJjZVBhdGg7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgew0KKyAgICAgICAgcmV0dXJuIG5hbWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgew0KKyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlc291cmNlVHlwZSgpIHsNCisgICAgICAgIHJldHVybiByZXNvdXJjZVR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0UmVzb3VyY2VUeXBlKFN0cmluZyByZXNvdXJjZVR5cGUpIHsNCisgICAgICAgIHRoaXMucmVzb3VyY2VUeXBlID0gcmVzb3VyY2VUeXBlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGF0YVR5cGUoKSB7DQorICAgICAgICByZXR1cm4gZGF0YVR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGF0YVR5cGUoU3RyaW5nIGRhdGFUeXBlKSB7DQorICAgICAgICB0aGlzLmRhdGFUeXBlID0gZGF0YVR5cGU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXRFbnRyeVNjaGVtYSgpIHsNCisgICAgICAgIHJldHVybiBlbnRyeVNjaGVtYTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRFbnRyeVNjaGVtYShTdHJpbmcgZW50cnlTY2hlbWEpIHsNCisgICAgICAgIHRoaXMuZW50cnlTY2hlbWEgPSBlbnRyeVNjaGVtYTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldFZhbGlkVmFsdWVzKCkgew0KKyAgICAgICAgcmV0dXJuIHZhbGlkVmFsdWVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFZhbGlkVmFsdWVzKFN0cmluZyB2YWxpZFZhbHVlcykgew0KKyAgICAgICAgdGhpcy52YWxpZFZhbHVlcyA9IHZhbGlkVmFsdWVzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0U2FtcGxlVmFsdWUoKSB7DQorICAgICAgICByZXR1cm4gc2FtcGxlVmFsdWU7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0U2FtcGxlVmFsdWUoU3RyaW5nIHNhbXBsZVZhbHVlKSB7DQorICAgICAgICB0aGlzLnNhbXBsZVZhbHVlID0gc2FtcGxlVmFsdWU7DQorICAgIH0NCisNCisgICAgcHVibGljIFN0cmluZyBnZXREZWZpbml0aW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGRlZmluaXRpb247DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGVmaW5pdGlvbihTdHJpbmcgZGVmaW5pdGlvbikgew0KKyAgICAgICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgew0KKyAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldERlc2NyaXB0aW9uKFN0cmluZyBkZXNjcmlwdGlvbikgew0KKyAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFncygpIHsNCisgICAgICAgIHJldHVybiB0YWdzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFRhZ3MoU3RyaW5nIHRhZ3MpIHsNCisgICAgICAgIHRoaXMudGFncyA9IHRhZ3M7DQorICAgIH0NCisNCisgICAgcHVibGljIERhdGUgZ2V0Q3JlYXRpb25EYXRlKCkgew0KKyAgICAgICAgcmV0dXJuIGNyZWF0aW9uRGF0ZTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRDcmVhdGlvbkRhdGUoRGF0ZSBjcmVhdGlvbkRhdGUpIHsNCisgICAgICAgIHRoaXMuY3JlYXRpb25EYXRlID0gY3JlYXRpb25EYXRlOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0VXBkYXRlZEJ5KCkgew0KKyAgICAgICAgcmV0dXJuIHVwZGF0ZWRCeTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgdm9pZCBzZXRVcGRhdGVkQnkoU3RyaW5nIHVwZGF0ZWRCeSkgew0KKyAgICAgICAgdGhpcy51cGRhdGVkQnkgPSB1cGRhdGVkQnk7DQorICAgIH0NCisNCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL21vZGVsL0F1dG9NYXBSZXNwb25zZS5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL21vZGVsL0F1dG9NYXBSZXNwb25zZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNTA4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvbW9kZWwvQXV0b01hcFJlc3BvbnNlLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLm1vZGVsOw0KKw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuUmVzb3VyY2VBc3NpZ25tZW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLlJlc291cmNlRGljdGlvbmFyeTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQorLyoqDQorICogQXJ0aWZhY3RSZXF1ZXN0LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBBcnRpZmFjdFJlcXVlc3QgTW9kZWwNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorcHVibGljIGNsYXNzIEF1dG9NYXBSZXNwb25zZSB7DQorDQorICAgIHByaXZhdGUgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHM7DQorICAgIHByaXZhdGUgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IGRhdGFEaWN0aW9uYXJpZXM7DQorDQorICAgIHB1YmxpYyBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gZ2V0UmVzb3VyY2VBc3NpZ25tZW50cygpIHsNCisgICAgICAgIHJldHVybiByZXNvdXJjZUFzc2lnbm1lbnRzOw0KKyAgICB9DQorDQorICAgIHB1YmxpYyB2b2lkIHNldFJlc291cmNlQXNzaWdubWVudHMoTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMpIHsNCisgICAgICAgIHRoaXMucmVzb3VyY2VBc3NpZ25tZW50cyA9IHJlc291cmNlQXNzaWdubWVudHM7DQorICAgIH0NCisNCisgICAgcHVibGljIExpc3Q8UmVzb3VyY2VEaWN0aW9uYXJ5PiBnZXREYXRhRGljdGlvbmFyaWVzKCkgew0KKyAgICAgICAgcmV0dXJuIGRhdGFEaWN0aW9uYXJpZXM7DQorICAgIH0NCisNCisgICAgcHVibGljIHZvaWQgc2V0RGF0YURpY3Rpb25hcmllcyhMaXN0PFJlc291cmNlRGljdGlvbmFyeT4gZGF0YURpY3Rpb25hcmllcykgew0KKyAgICAgICAgdGhpcy5kYXRhRGljdGlvbmFyaWVzID0gZGF0YURpY3Rpb25hcmllczsNCisgICAgfQ0KKw0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyNTg0YQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9yZXBvc2l0b3J5L0NvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnkuamF2YQpAQCAtMCwwICsxLDk1IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeTsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbENvbnRlbnQ7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5KcGFSZXBvc2l0b3J5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuUmVwb3NpdG9yeTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisvKioNCisgKiBDb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWdNb2RlbENvbnRlbnRSZXBvc2l0b3J5IG9mIFJlcG9zaXRvcnkNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorQFJlcG9zaXRvcnkNCitwdWJsaWMgaW50ZXJmYWNlIENvbmZpZ01vZGVsQ29udGVudFJlcG9zaXRvcnkgZXh0ZW5kcyBKcGFSZXBvc2l0b3J5PENvbmZpZ01vZGVsQ29udGVudCwgTG9uZz4gew0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeUlkIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8QXNkY0FydGlmYWN0cz4NCisgICAgICovDQorICAgIE9wdGlvbmFsPENvbmZpZ01vZGVsQ29udGVudD4gZmluZEJ5SWQoTG9uZyBpZCk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZFRvcEJ5Q29uZmlnTW9kZWxBbmRDb250ZW50VHlwZSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbA0KKyAgICAgKiBAcGFyYW0gY29udGVudFR5cGUNCisgICAgICogQHJldHVybiBPcHRpb25hbDxDb25maWdNb2RlbENvbnRlbnQ+DQorICAgICAqLw0KKyAgICBPcHRpb25hbDxDb25maWdNb2RlbENvbnRlbnQ+IGZpbmRUb3BCeUNvbmZpZ01vZGVsQW5kQ29udGVudFR5cGUoQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwsIFN0cmluZyBjb250ZW50VHlwZSk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5Q29uZmlnTW9kZWxBbmRDb250ZW50VHlwZSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbA0KKyAgICAgKiBAcGFyYW0gY29udGVudFR5cGUNCisgICAgICogQHJldHVybiBPcHRpb25hbDxDb25maWdNb2RlbENvbnRlbnQ+DQorICAgICAqLw0KKyAgICBMaXN0PENvbmZpZ01vZGVsQ29udGVudD4gZmluZEJ5Q29uZmlnTW9kZWxBbmRDb250ZW50VHlwZShDb25maWdNb2RlbCBjb25maWdNb2RlbCwgU3RyaW5nIGNvbnRlbnRUeXBlKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kQnlDb25maWdNb2RlbCBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbA0KKyAgICAgKiBAcmV0dXJuIE9wdGlvbmFsPENvbmZpZ01vZGVsQ29udGVudD4NCisgICAgICovDQorICAgIExpc3Q8Q29uZmlnTW9kZWxDb250ZW50PiBmaW5kQnlDb25maWdNb2RlbChDb25maWdNb2RlbCBjb25maWdNb2RlbCk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5Q29uZmlnTW9kZWxBbmRDb250ZW50VHlwZUFuZE5hbWUgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gY29uZmlnTW9kZWwNCisgICAgICogQHBhcmFtIGNvbnRlbnRUeXBlDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8Q29uZmlnTW9kZWxDb250ZW50Pg0KKyAgICAgKi8NCisgICAgT3B0aW9uYWw8Q29uZmlnTW9kZWxDb250ZW50PiBmaW5kQnlDb25maWdNb2RlbEFuZENvbnRlbnRUeXBlQW5kTmFtZShDb25maWdNb2RlbCBjb25maWdNb2RlbCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBuYW1lKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBkZWxldGVCeU1kZWxldGVCeUNvbmZpZ01vZGVsb2RlbE5hbWUgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gY29uZmlnTW9kZWwNCisgICAgICovDQorICAgIHZvaWQgZGVsZXRlQnlDb25maWdNb2RlbChDb25maWdNb2RlbCBjb25maWdNb2RlbCk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlQnlJZCBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBpZA0KKyAgICAgKi8NCisgICAgdm9pZCBkZWxldGVCeUlkKExvbmcgaWQpOw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbFJlcG9zaXRvcnkuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9yZXBvc2l0b3J5L0NvbmZpZ01vZGVsUmVwb3NpdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MjJlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbFJlcG9zaXRvcnkuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeTsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmpwYS5yZXBvc2l0b3J5LkpwYVJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5SZXBvc2l0b3J5Ow0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgamF2YS51dGlsLk9wdGlvbmFsOw0KKw0KKy8qKg0KKyAqIEFzZGNBcnRpZmFjdHNSZXBvc2l0b3J5LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBBc2RjQXJ0aWZhY3RzUmVwb3NpdG9yeQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCitAUmVwb3NpdG9yeQ0KK3B1YmxpYyBpbnRlcmZhY2UgQ29uZmlnTW9kZWxSZXBvc2l0b3J5IGV4dGVuZHMgSnBhUmVwb3NpdG9yeTxDb25maWdNb2RlbCwgTG9uZz4gew0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeUlkIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8QXNkY0FydGlmYWN0cz4NCisgICAgICovDQorICAgIE9wdGlvbmFsPENvbmZpZ01vZGVsPiBmaW5kQnlJZChMb25nIGlkKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kQnlBcnRpZmFjdE5hbWVBbmRBcnRpZmFjdFZlcnNpb24gbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lDQorICAgICAqIEBwYXJhbSBhcnRpZmFjdFZlcnNpb24NCisgICAgICogQHJldHVybiBPcHRpb25hbDxBc2RjQXJ0aWZhY3RzPg0KKyAgICAgKi8NCisgICAgT3B0aW9uYWw8Q29uZmlnTW9kZWw+IGZpbmRCeUFydGlmYWN0TmFtZUFuZEFydGlmYWN0VmVyc2lvbihTdHJpbmcgYXJ0aWZhY3ROYW1lLCBTdHJpbmcgYXJ0aWZhY3RWZXJzaW9uKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kVG9wQnlBcnRpZmFjdE5hbWVPcmRlckJ5QXJ0aWZhY3RJZERlc2MgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8QXNkY0FydGlmYWN0cz4NCisgICAgICovDQorICAgIE9wdGlvbmFsPENvbmZpZ01vZGVsPiBmaW5kVG9wQnlBcnRpZmFjdE5hbWVPcmRlckJ5QXJ0aWZhY3RWZXJzaW9uRGVzYyhTdHJpbmcgYXJ0aWZhY3ROYW1lKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kVG9wQnlBcnRpZmFjdE5hbWUgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8QXNkY0FydGlmYWN0cz4NCisgICAgICovDQorICAgIExpc3Q8Q29uZmlnTW9kZWw+IGZpbmRUb3BCeUFydGlmYWN0TmFtZShTdHJpbmcgYXJ0aWZhY3ROYW1lKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kQnlUYWdzQ29udGFpbmluZ0lnbm9yZUNhc2UgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gdGFncw0KKyAgICAgKiBAcmV0dXJuIE9wdGlvbmFsPE1vZGVsVHlwZT4NCisgICAgICovDQorICAgIExpc3Q8Q29uZmlnTW9kZWw+IGZpbmRCeVRhZ3NDb250YWluaW5nSWdub3JlQ2FzZShTdHJpbmcgdGFncyk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlQnlBcnRpZmFjdE5hbWVBbmRBcnRpZmFjdFZlcnNpb24gbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gYXJ0aWZhY3ROYW1lDQorICAgICAqIEBwYXJhbSBhcnRpZmFjdFZlcnNpb24NCisgICAgICovDQorICAgIHZvaWQgZGVsZXRlQnlBcnRpZmFjdE5hbWVBbmRBcnRpZmFjdFZlcnNpb24oU3RyaW5nIGFydGlmYWN0TmFtZSwgU3RyaW5nIGFydGlmYWN0VmVyc2lvbik7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlQnlJZCBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBpZA0KKyAgICAgKi8NCisgICAgdm9pZCBkZWxldGVCeUlkKExvbmcgaWQpOw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbFNlYXJjaFJlcG9zaXRvcnkuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9yZXBvc2l0b3J5L0NvbmZpZ01vZGVsU2VhcmNoUmVwb3NpdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZmMzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Db25maWdNb2RlbFNlYXJjaFJlcG9zaXRvcnkuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeTsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbFNlYXJjaDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmpwYS5yZXBvc2l0b3J5LkpwYVJlcG9zaXRvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5SZXBvc2l0b3J5Ow0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisvKioNCisgKiBDb25maWdNb2RlbFNlYXJjaFJlcG9zaXRvcnkuamF2YSBQdXJwb3NlOiBQcm92aWRlIENvbmZpZ3VyYXRpb24gR2VuZXJhdG9yIEFzZGNBcnRpZmFjdHNSZXBvc2l0b3J5DQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BSZXBvc2l0b3J5DQorcHVibGljIGludGVyZmFjZSBDb25maWdNb2RlbFNlYXJjaFJlcG9zaXRvcnkgZXh0ZW5kcyBKcGFSZXBvc2l0b3J5PENvbmZpZ01vZGVsU2VhcmNoLCBMb25nPiB7DQorDQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBPcHRpb25hbDxNb2RlbFR5cGU+DQorICAgICAqLw0KKyAgICBMaXN0PENvbmZpZ01vZGVsPiBmaW5kQnlUYWdzQ29udGFpbmluZ0lnbm9yZUNhc2UoU3RyaW5nIHRhZ3MpOw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Nb2RlbFR5cGVSZXBvc2l0b3J5LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9Nb2RlbFR5cGVSZXBvc2l0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhZTc1MgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9yZXBvc2l0b3J5L01vZGVsVHlwZVJlcG9zaXRvcnkuamF2YQpAQCAtMCwwICsxLDk4IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeTsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Nb2RlbFR5cGU7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5KcGFSZXBvc2l0b3J5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuUmVwb3NpdG9yeTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisNCisvKioNCisgKiBNb2RlbFR5cGVSZXBvc2l0b3J5LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBNb2RlbFR5cGVSZXBvc2l0b3J5DQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BSZXBvc2l0b3J5DQorcHVibGljIGludGVyZmFjZSBNb2RlbFR5cGVSZXBvc2l0b3J5IGV4dGVuZHMgSnBhUmVwb3NpdG9yeTxNb2RlbFR5cGUsIFN0cmluZz4gew0KKw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeU1vZGVsTmFtZSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBtb2RlbE5hbWUNCisgICAgICogQHJldHVybiBPcHRpb25hbDxNb2RlbFR5cGU+DQorICAgICAqLw0KKyAgICBPcHRpb25hbDxNb2RlbFR5cGU+IGZpbmRCeU1vZGVsTmFtZShTdHJpbmcgbW9kZWxOYW1lKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kQnlEZXJpdmVkRnJvbSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBkZXJpdmVkRnJvbQ0KKyAgICAgKiBAcmV0dXJuIExpc3Q8TW9kZWxUeXBlPg0KKyAgICAgKi8NCisgICAgTGlzdDxNb2RlbFR5cGU+IGZpbmRCeURlcml2ZWRGcm9tKFN0cmluZyBkZXJpdmVkRnJvbSk7DQorDQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5RGVyaXZlZEZyb21JbiBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBkZXJpdmVkRnJvbXMNCisgICAgICogQHJldHVybiBMaXN0PE1vZGVsVHlwZT4NCisgICAgICovDQorICAgIExpc3Q8TW9kZWxUeXBlPiBmaW5kQnlEZXJpdmVkRnJvbUluKExpc3Q8U3RyaW5nPiBkZXJpdmVkRnJvbXMpOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeURlZmluaXRpb25UeXBlIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGRlZmluaXRpb25UeXBlDQorICAgICAqIEByZXR1cm4gTGlzdDxNb2RlbFR5cGU+DQorICAgICAqLw0KKyAgICBMaXN0PE1vZGVsVHlwZT4gZmluZEJ5RGVmaW5pdGlvblR5cGUoU3RyaW5nIGRlZmluaXRpb25UeXBlKTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBmaW5kQnlEZWZpbml0aW9uVHlwZUluIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGRlZmluaXRpb25UeXBlcw0KKyAgICAgKiBAcmV0dXJuIExpc3Q8TW9kZWxUeXBlPg0KKyAgICAgKi8NCisgICAgTGlzdDxNb2RlbFR5cGU+IGZpbmRCeURlZmluaXRpb25UeXBlSW4oTGlzdDxTdHJpbmc+IGRlZmluaXRpb25UeXBlcyk7DQorDQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBPcHRpb25hbDxNb2RlbFR5cGU+DQorICAgICAqLw0KKyAgICBMaXN0PE1vZGVsVHlwZT4gZmluZEJ5VGFnc0NvbnRhaW5pbmdJZ25vcmVDYXNlKFN0cmluZyB0YWdzKTsNCisNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBkZWxldGVCeU1vZGVsTmFtZSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBtb2RlbE5hbWUNCisgICAgICogQHJldHVybiBPcHRpb25hbDxNb2RlbFR5cGU+DQorICAgICAqLw0KKyAgICB2b2lkIGRlbGV0ZUJ5TW9kZWxOYW1lKFN0cmluZyBtb2RlbE5hbWUpOw0KKw0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9SZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcmVwb3NpdG9yeS9SZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5ZGNkMQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9yZXBvc2l0b3J5L1Jlc291cmNlRGljdGlvbmFyeVJlcG9zaXRvcnkuamF2YQpAQCAtMCwwICsxLDY4IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeTsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5SZXNvdXJjZURpY3Rpb25hcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5KcGFSZXBvc2l0b3J5Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuUmVwb3NpdG9yeTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5PcHRpb25hbDsNCisNCisvKioNCisgKiBSZXNvdXJjZU1hcHBpbmdSZXBvc2l0b3J5LmphdmEgUHVycG9zZTogUHJvdmlkZSBDb25maWd1cmF0aW9uIEdlbmVyYXRvciBSZXNvdXJjZU1hcHBpbmdSZXBvc2l0b3J5DQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BSZXBvc2l0b3J5DQorcHVibGljIGludGVyZmFjZSBSZXNvdXJjZURpY3Rpb25hcnlSZXBvc2l0b3J5IGV4dGVuZHMgSnBhUmVwb3NpdG9yeTxSZXNvdXJjZURpY3Rpb25hcnksIFN0cmluZz4gew0KKw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeU5hbWUgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gbmFtZQ0KKyAgICAgKiBAcmV0dXJuIE9wdGlvbmFsPFJlc291cmNlTWFwcGluZz4NCisgICAgICovDQorICAgIE9wdGlvbmFsPFJlc291cmNlRGljdGlvbmFyeT4gZmluZEJ5TmFtZShTdHJpbmcgbmFtZSk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZmluZEJ5TmFtZUluIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWVzDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8UmVzb3VyY2VNYXBwaW5nPg0KKyAgICAgKi8NCisgICAgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IGZpbmRCeU5hbWVJbihMaXN0PFN0cmluZz4gbmFtZXMpOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGZpbmRCeVRhZ3NDb250YWluaW5nSWdub3JlQ2FzZSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSB0YWdzDQorICAgICAqIEByZXR1cm4gT3B0aW9uYWw8TW9kZWxUeXBlPg0KKyAgICAgKi8NCisgICAgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IGZpbmRCeVRhZ3NDb250YWluaW5nSWdub3JlQ2FzZShTdHJpbmcgdGFncyk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZGVsZXRlQnlOYW1lIG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWUNCisgICAgICovDQorICAgIHZvaWQgZGVsZXRlQnlOYW1lKFN0cmluZyBuYW1lKTsNCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL0NvbmZpZ01vZGVsUmVzdC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL0NvbmZpZ01vZGVsUmVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Yzg5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvQ29uZmlnTW9kZWxSZXN0LmphdmEKQEAgLTAsMCArMSwxNzkgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgaW8uc3dhZ2dlci5hbm5vdGF0aW9ucy4qOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5TZXJ2aWNlVGVtcGxhdGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uQ29uZmlnTW9kZWw7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmJpbmQuYW5ub3RhdGlvbi5SZXF1ZXN0TWFwcGluZzsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuYmluZC5hbm5vdGF0aW9uLlJlcXVlc3RNZXRob2Q7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmJpbmQuYW5ub3RhdGlvbi5SZXNwb25zZUJvZHk7DQorDQoraW1wb3J0IGphdmF4LndzLnJzLio7DQoraW1wb3J0IGphdmF4LndzLnJzLmNvcmUuTWVkaWFUeXBlOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisvKioNCisgKiBDb25maWdNb2RlbFJlc3QuamF2YSBQdXJwb3NlOiBSZXN0IHNlcnZpY2UgY29udHJvbGxlciBmb3IgQ29uZmlnTW9kZWxSZXN0IE1hbmFnZW1lbnQNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorQEFwaQ0KK0BQYXRoKCIvc2VydmljZSIpDQorQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorcHVibGljIGludGVyZmFjZSBDb25maWdNb2RlbFJlc3Qgew0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdldENvbmZpZ01vZGVsIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBHRVQNCisgICAgQFBhdGgoIi9jb25maWdtb2RlbC97aWR9IikNCisgICAgQENvbnN1bWVzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBQcm9kdWNlcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAQXBpT3BlcmF0aW9uKHZhbHVlID0gIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBTZWFyY2ggU2VydmljZSBUZW1wbGF0ZSIsIHJlc3BvbnNlID0gQ29uZmlnTW9kZWwuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBAUmVxdWVzdE1hcHBpbmcodmFsdWUgPSAiL2NvbmZpZ21vZGVsL3tpZH0iLCBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLkdFVCkNCisgICAgQFJlc3BvbnNlQm9keSBDb25maWdNb2RlbCBnZXRDb25maWdNb2RlbChAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJpZCIpIExvbmcgaWQpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisgICAgDQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2F2ZUNvbmZpZ01vZGVsIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGNvbmZpZ01vZGVsDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBQT1NUDQorICAgIEBQYXRoKCIvY29uZmlnbW9kZWwiKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBNb2RlbCBUeXBlIGJ5IFRhZ3MiLCByZXNwb25zZSA9IFNlcnZpY2VUZW1wbGF0ZS5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIENvbmZpZ01vZGVsIHNhdmVDb25maWdNb2RlbChAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBDb25maWdNb2RlbCBjb25maWdNb2RlbCkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGRlbGV0ZUNvbmZpZ01vZGVsIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAREVMRVRFDQorICAgIEBQYXRoKCIvY29uZmlnbW9kZWwve2lkfSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gZGVsZXRlIENvbmZpZ01vZGVsLiIpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICB2b2lkIGRlbGV0ZUNvbmZpZ01vZGVsKEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oImlkIikgTG9uZyBpZCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZXRJbml0aWFsQ29uZmlnTW9kZWwgcmVzdCBzZXJ2aWNlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gbmFtZQ0KKyAgICAgKiBAcmV0dXJuIENvbmZpZ01vZGVsDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAR0VUDQorICAgIEBQYXRoKCIvY29uZmlnbW9kZWxpbml0aWFsL3tuYW1lfSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gY3JlYXRlIGRlZmF1bHQgU2VydmljZSBUZW1wbGF0ZSIsIHJlc3BvbnNlID0gQ29uZmlnTW9kZWwuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBDb25maWdNb2RlbCBnZXRJbml0aWFsQ29uZmlnTW9kZWwoQEFwaVBhcmFtKHJlcXVpcmVkID0gdHJ1ZSkgQFBhdGhQYXJhbSgibmFtZSIpIFN0cmluZyBuYW1lKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0Q2xvbmVDb25maWdNb2RlbCByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBpZA0KKyAgICAgKiBAcmV0dXJuIENvbmZpZ01vZGVsDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAR0VUDQorICAgIEBQYXRoKCIvY29uZmlnbW9kZWxjbG9uZS97aWR9IikNCisgICAgQENvbnN1bWVzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBQcm9kdWNlcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAQXBpT3BlcmF0aW9uKHZhbHVlID0gIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBjcmVhdGUgZGVmYXVsdCBTZXJ2aWNlIFRlbXBsYXRlIiwgcmVzcG9uc2UgPSBDb25maWdNb2RlbC5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIENvbmZpZ01vZGVsIGdldENsb25lQ29uZmlnTW9kZWwoQEFwaVBhcmFtKHJlcXVpcmVkID0gdHJ1ZSkgQFBhdGhQYXJhbSgiaWQiKSBMb25nIGlkKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgcHVibGlzaENvbmZpZ01vZGVsIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGlkDQorICAgICAqIEByZXR1cm4gU2VydmljZVRlbXBsYXRlDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAR0VUDQorICAgIEBQYXRoKCIvY29uZmlnbW9kZWxwdWJsaXNoL3tpZH0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBNb2RlbCBUeXBlIGJ5IFRhZ3MiLCByZXNwb25zZSA9IENvbmZpZ01vZGVsLmNsYXNzKQ0KKyAgICBAQXBpUmVzcG9uc2VzKHZhbHVlID0ge0BBcGlSZXNwb25zZShjb2RlID0gNDA0LCBtZXNzYWdlID0gIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSIpLA0KKyAgICAgICAgICAgIEBBcGlSZXNwb25zZShjb2RlID0gNTAwLCBtZXNzYWdlID0gIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciIpfSkNCisgICAgQ29uZmlnTW9kZWwgcHVibGlzaENvbmZpZ01vZGVsKEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oImlkIikgTG9uZyBpZCkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGdldENvbmZpZ01vZGVsQnlOYW1lQW5kVmVyc2lvbiByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEBwYXJhbSB2ZXJzaW9uDQorICAgICAqIEByZXR1cm4gQ29uZmlnTW9kZWwNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBHRVQNCisgICAgQFBhdGgoIi9jb25maWdtb2RlbGJ5bmFtZS97bmFtZX0vdmVyc2lvbi97dmVyc2lvbn0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIFNlYXJjaCBTZXJ2aWNlIFRlbXBsYXRlIiwgcmVzcG9uc2UgPSBDb25maWdNb2RlbC5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIENvbmZpZ01vZGVsIGdldENvbmZpZ01vZGVsQnlOYW1lQW5kVmVyc2lvbihAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJuYW1lIikgU3RyaW5nIG5hbWUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJ2ZXJzaW9uIikgU3RyaW5nIHZlcnNpb24pIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2VhcmNoU2VydmljZU1vZGVscyByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSB0YWdzDQorICAgICAqIEByZXR1cm4gTGlzdDxDb25maWdNb2RlbD4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBHRVQNCisgICAgQFBhdGgoIi9jb25maWdtb2RlbHNlYXJjaC97dGFnc30iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIFNlYXJjaCBTZXJ2aWNlIFRlbXBsYXRlIiwgcmVzcG9uc2UgPSBDb25maWdNb2RlbC5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIExpc3Q8Q29uZmlnTW9kZWw+IHNlYXJjaENvbmZpZ01vZGVscyhAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJ0YWdzIikgU3RyaW5nIHRhZ3MpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL0NvbmZpZ01vZGVsUmVzdEltcGwuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Db25maWdNb2RlbFJlc3RJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlhYmNkNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Db25maWdNb2RlbFJlc3RJbXBsLmphdmEKQEAgLTAsMCArMSwxMTYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLkNvbmZpZ01vZGVsU2VydmljZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLlNlcnZpY2U7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIHtAaW5oZXJpdERvY30NCisgKi8NCitAU2VydmljZQ0KK3B1YmxpYyBjbGFzcyBDb25maWdNb2RlbFJlc3RJbXBsIGltcGxlbWVudHMgQ29uZmlnTW9kZWxSZXN0IHsNCisNCisgICAgcHJpdmF0ZSBDb25maWdNb2RlbFNlcnZpY2UgY29uZmlnTW9kZWxTZXJ2aWNlOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIENvbmZpZ01vZGVsUmVzdEltcGwgY29uc3RydWN0b3IuDQorICAgICAqDQorICAgICAqIEBwYXJhbSBjb25maWdNb2RlbFNlcnZpY2UgQ29uZmlnIE1vZGVsIFNlcnZpY2UNCisgICAgICovDQorICAgIHB1YmxpYyBDb25maWdNb2RlbFJlc3RJbXBsKENvbmZpZ01vZGVsU2VydmljZSBjb25maWdNb2RlbFNlcnZpY2UpIHsNCisgICAgICAgIHRoaXMuY29uZmlnTW9kZWxTZXJ2aWNlID0gY29uZmlnTW9kZWxTZXJ2aWNlOw0KKw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgQ29uZmlnTW9kZWwgZ2V0SW5pdGlhbENvbmZpZ01vZGVsKFN0cmluZyBuYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnTW9kZWxTZXJ2aWNlLmdldEluaXRpYWxDb25maWdNb2RlbChuYW1lKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyMDAwLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBzYXZlQ29uZmlnTW9kZWwoQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdNb2RlbFNlcnZpY2Uuc2F2ZUNvbmZpZ01vZGVsKGNvbmZpZ01vZGVsKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyMjAwLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyB2b2lkIGRlbGV0ZUNvbmZpZ01vZGVsKExvbmcgaWQpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICB0aGlzLmNvbmZpZ01vZGVsU2VydmljZS5kZWxldGVDb25maWdNb2RlbChpZCk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oNDAwMCwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgQ29uZmlnTW9kZWwgcHVibGlzaENvbmZpZ01vZGVsKExvbmcgaWQpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdNb2RlbFNlcnZpY2UucHVibGlzaENvbmZpZ01vZGVsKGlkKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyNTAwLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBnZXRDb25maWdNb2RlbChMb25nIGlkKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnTW9kZWxTZXJ2aWNlLmdldENvbmZpZ01vZGVsKGlkKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyMDAxLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBDb25maWdNb2RlbCBnZXRDb25maWdNb2RlbEJ5TmFtZUFuZFZlcnNpb24oU3RyaW5nIG5hbWUsIFN0cmluZyB2ZXJzaW9uKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnTW9kZWxTZXJ2aWNlLmdldENvbmZpZ01vZGVsQnlOYW1lQW5kVmVyc2lvbihuYW1lLCB2ZXJzaW9uKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyMDAyLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBMaXN0PENvbmZpZ01vZGVsPiBzZWFyY2hDb25maWdNb2RlbHMoU3RyaW5nIHRhZ3MpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdNb2RlbFNlcnZpY2Uuc2VhcmNoQ29uZmlnTW9kZWxzKHRhZ3MpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKDIwMDMsIGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIENvbmZpZ01vZGVsIGdldENsb25lQ29uZmlnTW9kZWwoTG9uZyBpZCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ01vZGVsU2VydmljZS5nZXRDbG9uZUNvbmZpZ01vZGVsKGlkKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigyMDA0LCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL01vZGVsVHlwZVJlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTliNzMwMwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0LmphdmEKQEAgLTAsMCArMSwxMjUgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgaW8uc3dhZ2dlci5hbm5vdGF0aW9ucy4qOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLk1vZGVsVHlwZTsNCisNCitpbXBvcnQgamF2YXgud3MucnMuKjsNCitpbXBvcnQgamF2YXgud3MucnMuY29yZS5NZWRpYVR5cGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIE1vZGVsVHlwZVJlc3QuamF2YSBQdXJwb3NlOiBSZXN0IHNlcnZpY2UgY29udHJvbGxlciBmb3IgQXJ0aWZhY3QgSGFuZGxpbmcNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorQEFwaQ0KK0BQYXRoKCIvc2VydmljZSIpDQorQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorcHVibGljIGludGVyZmFjZSBNb2RlbFR5cGVSZXN0IHsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZXRNb2RlbFR5cGVCeU5hbWUgcmVzdCBzZXJ2aWNlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gbmFtZQ0KKyAgICAgKiBAcmV0dXJuIE1vZGVsVHlwZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQEdFVA0KKyAgICBAUGF0aCgiL21vZGVsdHlwZS97bmFtZX0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBNb2RlbCBUeXBlIGJ5IGlkIiwgcmVzcG9uc2UgPSBNb2RlbFR5cGUuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBNb2RlbFR5cGUgZ2V0TW9kZWxUeXBlQnlOYW1lKEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oIm5hbWUiKSBTdHJpbmcgbmFtZSkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHNhdmVNb2RlbFR5cGUgcmVzdCBzZXJ2aWNlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gbW9kZWxUeXBlDQorICAgICAqIEByZXR1cm4gTW9kZWxUeXBlDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKw0KKyAgICBAUE9TVA0KKyAgICBAUGF0aCgiL21vZGVsdHlwZSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gU2F2ZSBNb2RlbCBUeXBlIiwgcmVzcG9uc2UgPSBNb2RlbFR5cGUuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBNb2RlbFR5cGUgc2F2ZU1vZGVsVHlwZShAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBNb2RlbFR5cGUgbW9kZWxUeXBlKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGRlbGV0ZU1vZGVsVHlwZSByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAREVMRVRFDQorICAgIEBQYXRoKCIvbW9kZWx0eXBlL3tuYW1lfSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gZGVsZXRlIE1vZGVsIFR5cGUiKQ0KKyAgICBAQXBpUmVzcG9uc2VzKHZhbHVlID0ge0BBcGlSZXNwb25zZShjb2RlID0gNDA0LCBtZXNzYWdlID0gIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSIpLA0KKyAgICAgICAgICAgIEBBcGlSZXNwb25zZShjb2RlID0gNTAwLCBtZXNzYWdlID0gIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciIpfSkNCisgICAgdm9pZCBkZWxldGVNb2RlbFR5cGVCeU5hbWUoQEFwaVBhcmFtKHJlcXVpcmVkID0gdHJ1ZSkgQFBhdGhQYXJhbSgibmFtZSIpIFN0cmluZyBuYW1lKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgc2VhcmNoTW9kZWxUeXBlIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRhZ3MNCisgICAgICogQHJldHVybiBMaXN0PE1vZGVsVHlwZT4NCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBHRVQNCisgICAgQFBhdGgoIi9tb2RlbHR5cGVzZWFyY2gve3RhZ3N9IikNCisgICAgQENvbnN1bWVzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBQcm9kdWNlcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAQXBpT3BlcmF0aW9uKHZhbHVlID0gIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgTW9kZWwgVHlwZSBieSB0YWdzIiwgcmVzcG9uc2UgPSBNb2RlbFR5cGUuY2xhc3MsDQorICAgICAgICAgICAgcmVzcG9uc2VDb250YWluZXIgPSAiTGlzdCIpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBMaXN0PE1vZGVsVHlwZT4gc2VhcmNoTW9kZWxUeXBlcyhAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJ0YWdzIikgU3RyaW5nIHRhZ3MpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZXRNb2RlbFR5cGVCeURlZmluaXRpb25UeXBlIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIGRlZmluaXRpb25UeXBlDQorICAgICAqIEByZXR1cm4gTGlzdDxNb2RlbFR5cGU+DQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAR0VUDQorICAgIEBQYXRoKCIvbW9kZWx0eXBlYnlkZWZpbml0aW9uL3tkZWZpbml0aW9uVHlwZX0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBNb2RlbCBUeXBlIGJ5IHRhZ3MiLCByZXNwb25zZSA9IE1vZGVsVHlwZS5jbGFzcywNCisgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9ICJMaXN0IikNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIExpc3Q8TW9kZWxUeXBlPiBnZXRNb2RlbFR5cGVCeURlZmluaXRpb25UeXBlKA0KKyAgICAgICAgICAgIEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oImRlZmluaXRpb25UeXBlIikgU3RyaW5nIGRlZmluaXRpb25UeXBlKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0SW1wbC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL01vZGVsVHlwZVJlc3RJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZiYzY5NgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0SW1wbC5qYXZhCkBAIC0wLDAgKzEsODcgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLk1vZGVsVHlwZVNlcnZpY2U7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uTW9kZWxUeXBlOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsNCisNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQorLyoqDQorICoge0Bpbmhlcml0RG9jfQ0KKyAqLw0KK0BTZXJ2aWNlDQorcHVibGljIGNsYXNzIE1vZGVsVHlwZVJlc3RJbXBsIGltcGxlbWVudHMgTW9kZWxUeXBlUmVzdCB7DQorDQorICAgIHByaXZhdGUgTW9kZWxUeXBlU2VydmljZSBtb2RlbFR5cGVTZXJ2aWNlOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIE1vZGVsVHlwZVJlc291cmNlSW1wbCwgdXNlZCB0byBzYXZlIGFuZCBnZXQgdGhlIG1vZGVsIHR5cGVzIHN0b3JlZCBpbiBkYXRhYmFzZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gbW9kZWxUeXBlU2VydmljZSBNb2RlbCBUeXBlIFNlcnZpY2UNCisgICAgICovDQorICAgIHB1YmxpYyBNb2RlbFR5cGVSZXN0SW1wbChNb2RlbFR5cGVTZXJ2aWNlIG1vZGVsVHlwZVNlcnZpY2UpIHsNCisgICAgICAgIHRoaXMubW9kZWxUeXBlU2VydmljZSA9IG1vZGVsVHlwZVNlcnZpY2U7DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBNb2RlbFR5cGUgZ2V0TW9kZWxUeXBlQnlOYW1lKFN0cmluZyBtb2RlbE5hbWUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gbW9kZWxUeXBlU2VydmljZS5nZXRNb2RlbFR5cGVCeU5hbWUobW9kZWxOYW1lKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigxMDAwLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBMaXN0PE1vZGVsVHlwZT4gc2VhcmNoTW9kZWxUeXBlcyhTdHJpbmcgdGFncykgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIHJldHVybiBtb2RlbFR5cGVTZXJ2aWNlLnNlYXJjaE1vZGVsVHlwZXModGFncyk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oMTAwMSwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgTGlzdDxNb2RlbFR5cGU+IGdldE1vZGVsVHlwZUJ5RGVmaW5pdGlvblR5cGUoU3RyaW5nIGRlZmluaXRpb25UeXBlKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIG1vZGVsVHlwZVNlcnZpY2UuZ2V0TW9kZWxUeXBlQnlEZWZpbml0aW9uVHlwZShkZWZpbml0aW9uVHlwZSk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oMTAwMiwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgTW9kZWxUeXBlIHNhdmVNb2RlbFR5cGUoTW9kZWxUeXBlIG1vZGVsVHlwZSkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIHJldHVybiBtb2RlbFR5cGVTZXJ2aWNlLnNhdmVNb2RlbChtb2RlbFR5cGUpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKDExMDAsIGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIHZvaWQgZGVsZXRlTW9kZWxUeXBlQnlOYW1lKFN0cmluZyBuYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgbW9kZWxUeXBlU2VydmljZS5kZWxldGVCeU1vZGVsTmFtZShuYW1lKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigxNDAwLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1Jlc291cmNlRGljdGlvbmFyeVJlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9SZXNvdXJjZURpY3Rpb25hcnlSZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjOTgzMwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9SZXNvdXJjZURpY3Rpb25hcnlSZXN0LmphdmEKQEAgLTAsMCArMSwxMjYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgaW8uc3dhZ2dlci5hbm5vdGF0aW9ucy4qOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50RXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLlJlc291cmNlRGljdGlvbmFyeTsNCisNCitpbXBvcnQgamF2YXgud3MucnMuKjsNCitpbXBvcnQgamF2YXgud3MucnMuY29yZS5NZWRpYVR5cGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIFJlc291cmNlRGljdGlvbmFyeVJlc3QuamF2YSBQdXJwb3NlOiBSZXN0IHNlcnZpY2UgY29udHJvbGxlciBmb3IgQXJ0aWZhY3QgSGFuZGxpbmcNCisgKg0KKyAqIEBhdXRob3IgQnJpbmRhIFNhbnRoDQorICogQHZlcnNpb24gMS4wDQorICovDQorQEFwaQ0KK0BQYXRoKCIvc2VydmljZSIpDQorQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorDQorcHVibGljIGludGVyZmFjZSBSZXNvdXJjZURpY3Rpb25hcnlSZXN0IHsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBnZXREYXRhRGljdGlvbmFyeUJ5UGF0aCByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEByZXR1cm4gUmVzb3VyY2VEaWN0aW9uYXJ5DQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAR0VUDQorICAgIEBQYXRoKCIvZGljdGlvbmFyeS97bmFtZX0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGdldCBSZXNvdXJjZSBkaWN0aW9uYXJ5IiwgcmVzcG9uc2UgPSBSZXNvdXJjZURpY3Rpb25hcnkuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBSZXNvdXJjZURpY3Rpb25hcnkgZ2V0UmVzb3VyY2VEaWN0aW9uYXJ5QnlOYW1lKEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oIm5hbWUiKSBTdHJpbmcgbmFtZSkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHNhdmVEYXRhRGljdGlvbmFyeSByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSByZXNvdXJjZU1hcHBpbmcNCisgICAgICogQHJldHVybiBSZXNvdXJjZURpY3Rpb25hcnkNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorDQorICAgIEBQT1NUDQorICAgIEBQYXRoKCIvZGljdGlvbmFyeSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gU2F2ZSBSZXNvdXJjZSBkaWN0aW9uYXJ5IFR5cGUiLCByZXNwb25zZSA9IFJlc291cmNlRGljdGlvbmFyeS5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIFJlc291cmNlRGljdGlvbmFyeSBzYXZlUmVzb3VyY2VEaWN0aW9uYXJ5KEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIFJlc291cmNlRGljdGlvbmFyeSByZXNvdXJjZU1hcHBpbmcpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBkZWxldGVEYXRhRGljdGlvbmFyeUJ5TmFtZSByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBuYW1lDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAREVMRVRFDQorICAgIEBQYXRoKCIvZGljdGlvbmFyeS97bmFtZX0iKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGRlbGV0ZSBSZXNvdXJjZURpY3Rpb25hcnkgVHlwZSIpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICB2b2lkIGRlbGV0ZVJlc291cmNlRGljdGlvbmFyeUJ5TmFtZShAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBAUGF0aFBhcmFtKCJuYW1lIikgU3RyaW5nIG5hbWUpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBzZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeVRhZ3MgcmVzdCBzZXJ2aWNlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gdGFncw0KKyAgICAgKiBAcmV0dXJuIFJlc291cmNlRGljdGlvbmFyeQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQEdFVA0KKyAgICBAUGF0aCgiL2RpY3Rpb25hcnlzZWFyY2gve3RhZ3N9IikNCisgICAgQENvbnN1bWVzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBQcm9kdWNlcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAQXBpT3BlcmF0aW9uKHZhbHVlID0gIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBzZWFyY2ggUmVzb3VyY2UgZGljdGlvbmFyeSBieSB0YWdzIiwNCisgICAgICAgICAgICByZXNwb25zZSA9IFJlc291cmNlRGljdGlvbmFyeS5jbGFzcywgcmVzcG9uc2VDb250YWluZXIgPSAiTGlzdCIpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBMaXN0PFJlc291cmNlRGljdGlvbmFyeT4gc2VhcmNoUmVzb3VyY2VEaWN0aW9uYXJ5QnlUYWdzKA0KKyAgICAgICAgICAgIEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIEBQYXRoUGFyYW0oInRhZ3MiKSBTdHJpbmcgdGFncykgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbjsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBzZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWVzIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIG5hbWVzDQorICAgICAqIEByZXR1cm4gTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+DQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAUE9TVA0KKyAgICBAUGF0aCgiL2RpY3Rpb25hcnlieW5hbWVzIikNCisgICAgQENvbnN1bWVzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBQcm9kdWNlcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAQXBpT3BlcmF0aW9uKHZhbHVlID0gIlByb3ZpZGVzIFJlc3Qgc2VydmljZSB0byBnZXQgUmVzb3VyY2VEaWN0aW9uYXJ5IFR5cGUgYnkgbmFtZXMiLA0KKyAgICAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VEaWN0aW9uYXJ5LmNsYXNzLCByZXNwb25zZUNvbnRhaW5lciA9ICJMaXN0IikNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIExpc3Q8UmVzb3VyY2VEaWN0aW9uYXJ5PiBzZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWVzKEBBcGlQYXJhbShyZXF1aXJlZCA9IHRydWUpIExpc3Q8U3RyaW5nPiBuYW1lcykNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvUmVzb3VyY2VEaWN0aW9uYXJ5UmVzdEltcGwuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9SZXNvdXJjZURpY3Rpb25hcnlSZXN0SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNDQ4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvUmVzb3VyY2VEaWN0aW9uYXJ5UmVzdEltcGwuamF2YQpAQCAtMCwwICsxLDkxIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucnM7DQorDQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5SZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLlJlc291cmNlRGljdGlvbmFyeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLlNlcnZpY2U7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKy8qKg0KKyAqIHtAaW5oZXJpdERvY30NCisgKi8NCitAU2VydmljZQ0KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZURpY3Rpb25hcnlSZXN0SW1wbCBpbXBsZW1lbnRzIFJlc291cmNlRGljdGlvbmFyeVJlc3Qgew0KKw0KKw0KKyAgICBwcml2YXRlIFJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UgcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZTsNCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBEYXRhRGljdGlvbmFyeVJlc3RJbXBsLCB1c2VkIHRvIHNhdmUgYW5kIGdldCB0aGUgUmVzb3VyY2UgTWFwcGluZyBzdG9yZWQgaW4gZGF0YWJhc2UNCisgICAgICoNCisgICAgICogQHBhcmFtIGRhdGFEaWN0aW9uYXJ5U2VydmljZSBEYXRhIERpY3Rpb25hcnkgU2VydmljZQ0KKyAgICAgKi8NCisgICAgcHVibGljIFJlc291cmNlRGljdGlvbmFyeVJlc3RJbXBsKFJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UgZGF0YURpY3Rpb25hcnlTZXJ2aWNlKSB7DQorICAgICAgICB0aGlzLnJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UgPSBkYXRhRGljdGlvbmFyeVNlcnZpY2U7DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBSZXNvdXJjZURpY3Rpb25hcnkgc2F2ZVJlc291cmNlRGljdGlvbmFyeShSZXNvdXJjZURpY3Rpb25hcnkgZGF0YURpY3Rpb25hcnkpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICB0cnkgew0KKyAgICAgICAgICAgIHJldHVybiByZXNvdXJjZURpY3Rpb25hcnlTZXJ2aWNlLnNhdmVSZXNvdXJjZURpY3Rpb25hcnkoZGF0YURpY3Rpb25hcnkpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKDQxMDAsIGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIHZvaWQgZGVsZXRlUmVzb3VyY2VEaWN0aW9uYXJ5QnlOYW1lKFN0cmluZyBuYW1lKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZS5kZWxldGVSZXNvdXJjZURpY3Rpb25hcnkobmFtZSk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oNDQwMCwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgUmVzb3VyY2VEaWN0aW9uYXJ5IGdldFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZShTdHJpbmcgcmVzb3VyY2VQYXRoKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlRGljdGlvbmFyeVNlcnZpY2UuZ2V0UmVzb3VyY2VEaWN0aW9uYXJ5QnlOYW1lKHJlc291cmNlUGF0aCk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oNDAwMSwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IHNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5TmFtZXMoTGlzdDxTdHJpbmc+IG5hbWVzKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VEaWN0aW9uYXJ5U2VydmljZS5zZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWVzKG5hbWVzKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbig0MDAyLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBMaXN0PFJlc291cmNlRGljdGlvbmFyeT4gc2VhcmNoUmVzb3VyY2VEaWN0aW9uYXJ5QnlUYWdzKFN0cmluZyB0YWdzKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlRGljdGlvbmFyeVNlcnZpY2Uuc2VhcmNoUmVzb3VyY2VEaWN0aW9uYXJ5QnlUYWdzKHRhZ3MpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKDQwMDMsIGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvU2VydmljZVRlbXBsYXRlUmVzdC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1NlcnZpY2VUZW1wbGF0ZVJlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2I4ZjMxCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1NlcnZpY2VUZW1wbGF0ZVJlc3QuamF2YQpAQCAtMCwwICsxLDEzNCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJzOw0KKw0KK2ltcG9ydCBpby5zd2FnZ2VyLmFubm90YXRpb25zLio7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLlNlcnZpY2VUZW1wbGF0ZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LlJlc291cmNlQXNzaWdubWVudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbENvbnRlbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5tb2RlbC5BdXRvTWFwUmVzcG9uc2U7DQorDQoraW1wb3J0IGphdmF4LndzLnJzLkNvbnN1bWVzOw0KK2ltcG9ydCBqYXZheC53cy5ycy5QT1NUOw0KK2ltcG9ydCBqYXZheC53cy5ycy5QYXRoOw0KK2ltcG9ydCBqYXZheC53cy5ycy5Qcm9kdWNlczsNCitpbXBvcnQgamF2YXgud3MucnMuY29yZS5NZWRpYVR5cGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KKw0KKy8qKg0KKyAqIFNlcnZpY2VUZW1wbGF0ZVJlc3QuamF2YSBQdXJwb3NlOiBTZXJ2aWNlVGVtcGxhdGVSZXN0IGludGVyZmFjZQ0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCisNCitAQXBpDQorQFBhdGgoIi9zZXJ2aWNlIikNCitAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCitwdWJsaWMgaW50ZXJmYWNlIFNlcnZpY2VUZW1wbGF0ZVJlc3Qgew0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGVucmljaFNlcnZpY2VUZW1wbGF0ZSByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSBzZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHJldHVybiBTZXJ2aWNlVGVtcGxhdGUNCisgICAgICogQHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24NCisgICAgICovDQorICAgIEBQT1NUDQorICAgIEBQYXRoKCIvc2VydmljZXRlbXBsYXRlL2VucmljaCIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gZW5yaWNoIHNlcnZpY2UgdGVtcGxhdGUiLCByZXNwb25zZSA9IFNlcnZpY2VUZW1wbGF0ZS5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIFNlcnZpY2VUZW1wbGF0ZSBlbnJpY2hTZXJ2aWNlVGVtcGxhdGUoQEFwaVBhcmFtKHJlcXVpcmVkID0gdHJ1ZSkgU2VydmljZVRlbXBsYXRlIHNlcnZpY2VUZW1wbGF0ZSkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHZhbGlkYXRlU2VydmljZVRlbXBsYXRlIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKiBAcmV0dXJuIFNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQFBPU1QNCisgICAgQFBhdGgoIi9zZXJ2aWNldGVtcGxhdGUvdmFsaWRhdGUiKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIHZhbGlkYXRlIHNlcnZpY2UgdGVtcGxhdGUiLCByZXNwb25zZSA9IFNlcnZpY2VUZW1wbGF0ZS5jbGFzcykNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIFNlcnZpY2VUZW1wbGF0ZSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2VuZXJhdGVSZXNvdXJjZUFzc2lnbm1lbnRzIHJlc3Qgc2VydmljZQ0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHRlbXBsYXRlQ29udGVudA0KKyAgICAgKiBAcmV0dXJuIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50Pg0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQFBPU1QNCisgICAgQFBhdGgoIi9yZXNvdXJjZWFzc2lnbm1lbnQvZ2VuZXJhdGUiKQ0KKyAgICBAQ29uc3VtZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQFByb2R1Y2VzKHtNZWRpYVR5cGUuQVBQTElDQVRJT05fSlNPTn0pDQorICAgIEBBcGlPcGVyYXRpb24odmFsdWUgPSAiUHJvdmlkZXMgUmVzdCBzZXJ2aWNlIHRvIGF1dG8gbWFwIGZvciB0aGUgUmVzb3VyY2UgTWFwcGluZyIsDQorICAgICAgICAgICAgcmVzcG9uc2UgPSBSZXNvdXJjZUFzc2lnbm1lbnQuY2xhc3MsIHJlc3BvbnNlQ29udGFpbmVyID0gIkxpc3QiKQ0KKyAgICBAQXBpUmVzcG9uc2VzKHZhbHVlID0ge0BBcGlSZXNwb25zZShjb2RlID0gNDA0LCBtZXNzYWdlID0gIlNlcnZpY2Ugbm90IGF2YWlsYWJsZSIpLA0KKyAgICAgICAgICAgIEBBcGlSZXNwb25zZShjb2RlID0gNTAwLCBtZXNzYWdlID0gIlVuZXhwZWN0ZWQgUnVudGltZSBlcnJvciIpfSkNCisgICAgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IGdlbmVyYXRlUmVzb3VyY2VBc3NpZ25tZW50cygNCisgICAgICAgICAgICBAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBDb25maWdNb2RlbENvbnRlbnQgdGVtcGxhdGVDb250ZW50KSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIGF1dG9NYXAgcmVzdCBzZXJ2aWNlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gcmVzb3VyY2VBc3NpZ25tZW50cw0KKyAgICAgKiBAcmV0dXJuIEF1dG9NYXBSZXNwb25zZQ0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQFBPU1QNCisgICAgQFBhdGgoIi9yZXNvdXJjZWFzc2lnbm1lbnQvYXV0b21hcCIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gYXV0byBtYXAgZm9yIHRoZSBSZXNvdXJjZSBhc3NpZ25tZW50cyIsDQorICAgICAgICAgICAgcmVzcG9uc2UgPSBBdXRvTWFwUmVzcG9uc2UuY2xhc3MpDQorICAgIEBBcGlSZXNwb25zZXModmFsdWUgPSB7QEFwaVJlc3BvbnNlKGNvZGUgPSA0MDQsIG1lc3NhZ2UgPSAiU2VydmljZSBub3QgYXZhaWxhYmxlIiksDQorICAgICAgICAgICAgQEFwaVJlc3BvbnNlKGNvZGUgPSA1MDAsIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBSdW50aW1lIGVycm9yIil9KQ0KKyAgICBBdXRvTWFwUmVzcG9uc2UgYXV0b01hcChAQXBpUGFyYW0ocmVxdWlyZWQgPSB0cnVlKSBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gcmVzb3VyY2VBc3NpZ25tZW50cykNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uOw0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHZhbGlkYXRlUmVzb3VyY2VBc3NpZ25tZW50cyByZXN0IHNlcnZpY2UNCisgICAgICogDQorICAgICAqIEBwYXJhbSByZXNvdXJjZUFzc2lnbm1lbnRzDQorICAgICAqIEByZXR1cm4gTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+DQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBAUE9TVA0KKyAgICBAUGF0aCgiL3Jlc291cmNlYXNzaWdubWVudC92YWxpZGF0ZSIpDQorICAgIEBDb25zdW1lcyh7TWVkaWFUeXBlLkFQUExJQ0FUSU9OX0pTT059KQ0KKyAgICBAUHJvZHVjZXMoe01lZGlhVHlwZS5BUFBMSUNBVElPTl9KU09OfSkNCisgICAgQEFwaU9wZXJhdGlvbih2YWx1ZSA9ICJQcm92aWRlcyBSZXN0IHNlcnZpY2UgdG8gdmFsaWRhdGUgUmVzb3VyY2UgYXNzaWdubWVudHMiLCByZXNwb25zZSA9IFJlc291cmNlQXNzaWdubWVudC5jbGFzcywNCisgICAgICAgICAgICByZXNwb25zZUNvbnRhaW5lciA9ICJMaXN0IikNCisgICAgQEFwaVJlc3BvbnNlcyh2YWx1ZSA9IHtAQXBpUmVzcG9uc2UoY29kZSA9IDQwNCwgbWVzc2FnZSA9ICJTZXJ2aWNlIG5vdCBhdmFpbGFibGUiKSwNCisgICAgICAgICAgICBAQXBpUmVzcG9uc2UoY29kZSA9IDUwMCwgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIFJ1bnRpbWUgZXJyb3IiKX0pDQorICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiB2YWxpZGF0ZVJlc291cmNlQXNzaWdubWVudHMoDQorICAgICAgICAgICAgQEFwaVBhcmFtKHJlcXVpcmVkID0gdHJ1ZSkgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IHJlc291cmNlQXNzaWdubWVudHMpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb247DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9TZXJ2aWNlVGVtcGxhdGVSZXN0SW1wbC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1NlcnZpY2VUZW1wbGF0ZVJlc3RJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0OWQ1YwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9TZXJ2aWNlVGVtcGxhdGVSZXN0SW1wbC5qYXZhCkBAIC0wLDAgKzEsOTQgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCisNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLkJsdWVQcmludEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuUmVzb3VyY2VBc3NpZ25tZW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuU2VydmljZVRlbXBsYXRlU2VydmljZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmRvbWFpbi5Db25maWdNb2RlbENvbnRlbnQ7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5tb2RlbC5BdXRvTWFwUmVzcG9uc2U7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5TZXJ2aWNlOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisvKioNCisgKiB7QGluaGVyaXREb2N9DQorICovDQorQFNlcnZpY2UNCitwdWJsaWMgY2xhc3MgU2VydmljZVRlbXBsYXRlUmVzdEltcGwgaW1wbGVtZW50cyBTZXJ2aWNlVGVtcGxhdGVSZXN0IHsNCisNCisgICAgcHJpdmF0ZSBTZXJ2aWNlVGVtcGxhdGVTZXJ2aWNlIHNlcnZpY2VUZW1wbGF0ZVNlcnZpY2U7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgU2VydmljZVRlbXBsYXRlUmVzdEltcGwgY29uc3RydWN0b3INCisgICAgICoNCisgICAgICogQHBhcmFtIHNlcnZpY2VUZW1wbGF0ZVNlcnZpY2UgU2VydmljZSBUZW1wbGF0ZSBTZXJ2aWNlDQorICAgICAqLw0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlUmVzdEltcGwoU2VydmljZVRlbXBsYXRlU2VydmljZSBzZXJ2aWNlVGVtcGxhdGVTZXJ2aWNlKSB7DQorICAgICAgICB0aGlzLnNlcnZpY2VUZW1wbGF0ZVNlcnZpY2UgPSBzZXJ2aWNlVGVtcGxhdGVTZXJ2aWNlOw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlIGVucmljaFNlcnZpY2VUZW1wbGF0ZShTZXJ2aWNlVGVtcGxhdGUgc2VydmljZVRlbXBsYXRlKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2VUZW1wbGF0ZVNlcnZpY2UuZW5yaWNoU2VydmljZVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZSk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oMzUwMCwgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgU2VydmljZVRlbXBsYXRlIHZhbGlkYXRlU2VydmljZVRlbXBsYXRlKFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gc2VydmljZVRlbXBsYXRlU2VydmljZS52YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKDM1MDEsIGUuZ2V0TWVzc2FnZSgpLCBlKTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBAT3ZlcnJpZGUNCisgICAgcHVibGljIEF1dG9NYXBSZXNwb25zZSBhdXRvTWFwKExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzKSB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2VUZW1wbGF0ZVNlcnZpY2UuYXV0b01hcChyZXNvdXJjZUFzc2lnbm1lbnRzKTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigzNTAyLCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyBMaXN0PFJlc291cmNlQXNzaWdubWVudD4gdmFsaWRhdGVSZXNvdXJjZUFzc2lnbm1lbnRzKExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gc2VydmljZVRlbXBsYXRlU2VydmljZS52YWxpZGF0ZVJlc291cmNlQXNzaWdubWVudHMocmVzb3VyY2VBc3NpZ25tZW50cyk7DQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKyAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oMzUwMywgZS5nZXRNZXNzYWdlKCksIGUpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IGdlbmVyYXRlUmVzb3VyY2VBc3NpZ25tZW50cyhDb25maWdNb2RlbENvbnRlbnQgdGVtcGxhdGVDb250ZW50KQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgdHJ5IHsNCisgICAgICAgICAgICByZXR1cm4gc2VydmljZVRlbXBsYXRlU2VydmljZS5nZW5lcmF0ZVJlc291cmNlQXNzaWdubWVudHModGVtcGxhdGVDb250ZW50KTsNCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigzNTA0LCBlLmdldE1lc3NhZ2UoKSwgZSk7DQorICAgICAgICB9DQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3V0aWxzL0NvbmZpZ01vZGVsVXRpbHMuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS91dGlscy9Db25maWdNb2RlbFV0aWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxYjA0ZAotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS91dGlscy9Db25maWdNb2RlbFV0aWxzLmphdmEKQEAgLTAsMCArMSwxMjQgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS51dGlsczsNCisNCitpbXBvcnQgY29tLmdvb2dsZS5jb21tb24uYmFzZS5QcmVjb25kaXRpb25zOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29sbGVjdGlvblV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uRmlsZVV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uRmlsZW5hbWVVdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLmZpbGVmaWx0ZXIuRGlyZWN0b3J5RmlsZUZpbHRlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQ29uZmlnTW9kZWxDb25zdGFudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuVG9zY2FNZXRhRGF0YTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkJsdWVQcmludE1ldGFkYXRhVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uQ29uZmlnTW9kZWw7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uQ29uZmlnTW9kZWxDb250ZW50Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCisNCitpbXBvcnQgamF2YS5pby5GaWxlOw0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK3B1YmxpYyBjbGFzcyBDb25maWdNb2RlbFV0aWxzIHsNCisNCisgICAgcHJpdmF0ZSBDb25maWdNb2RlbFV0aWxzKCl7DQorDQorICAgIH0NCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENvbmZpZ01vZGVsVXRpbHMuY2xhc3MpOw0KKw0KKyAgICBwdWJsaWMgc3RhdGljIENvbmZpZ01vZGVsIGdldENvbmZpZ01vZGVsKFN0cmluZyBibHVlcHJpbnRQYXRoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGJsdWVwcmludFBhdGgpLCAiQmx1ZXByaW50IFBhdGggaXMgbWlzc2luZyIpOw0KKyAgICAgICAgVG9zY2FNZXRhRGF0YSB0b3NjYU1ldGFEYXRhID0gQmx1ZVByaW50TWV0YWRhdGFVdGlscy50b3NjYU1ldGFEYXRhKGJsdWVwcmludFBhdGgpOw0KKw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGwodG9zY2FNZXRhRGF0YSwgImZhaWxlZCB0byBnZXQgQmx1ZXByaW50IE1ldGFkYXRhIGluZm9ybWF0aW9uIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayh0b3NjYU1ldGFEYXRhLmdldEVudGl0eURlZmluaXRpb25zKCkpLCAiZmFpbGVkIHRvIGdldCBCbHVlcHJpbnQgRGVmaW5pdGlvbiBmaWxlIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayh0b3NjYU1ldGFEYXRhLmdldENyZWF0ZWRCeSgpKSwgImZhaWxlZCB0byBnZXQgQmx1ZXByaW50IGNyZWF0ZWQgYnkiKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudChTdHJpbmdVdGlscy5pc05vdEJsYW5rKHRvc2NhTWV0YURhdGEuZ2V0VG9zY2FNZXRhRmlsZVZlcnNpb24oKSksICJmYWlsZWQgdG8gZ2V0IEJsdWVwcmludCBwYWNrYWdlIHZlcnNpb24iKTsNCisNCisgICAgICAgIFN0cmluZyBibHVlUHJpbnROYW1lID0gRmlsZW5hbWVVdGlscy5nZXRCYXNlTmFtZSh0b3NjYU1ldGFEYXRhLmdldEVudGl0eURlZmluaXRpb25zKCkpOw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoYmx1ZVByaW50TmFtZSksICJmYWlsZWQgdG8gZ2V0IEJsdWVwcmludCBEZWZpbml0aW9uIE5hbWUiKTsNCisNCisgICAgICAgIC8vIFRPRE8gLSBVcGRhdGUgUmVzdCBvZiB0aGUgTW9kZWwNCisgICAgICAgIENvbmZpZ01vZGVsIGNvbmZpZ01vZGVsID0gbmV3IENvbmZpZ01vZGVsKCk7DQorICAgICAgICBjb25maWdNb2RlbC5zZXRVcGRhdGVkQnkodG9zY2FNZXRhRGF0YS5nZXRDcmVhdGVkQnkoKSk7DQorICAgICAgICBjb25maWdNb2RlbC5zZXRBcnRpZmFjdE5hbWUoYmx1ZVByaW50TmFtZSk7DQorICAgICAgICBjb25maWdNb2RlbC5zZXRBcnRpZmFjdFZlcnNpb24odG9zY2FNZXRhRGF0YS5nZXRUb3NjYU1ldGFGaWxlVmVyc2lvbigpKTsNCisgICAgICAgIGNvbmZpZ01vZGVsLnNldFRhZ3ModG9zY2FNZXRhRGF0YS5nZXRUZW1wbGF0ZVRhZ3MoKSk7DQorICAgICAgICBjb25maWdNb2RlbC5zZXRBcnRpZmFjdFR5cGUoIlNETkNfTU9ERUwiKTsNCisNCisgICAgICAgIFN0cmluZyBibHVlcHJpbnRDb250ZW50ID0NCisgICAgICAgICAgICAgICAgZ2V0UGF0aENvbnRlbnQoYmx1ZXByaW50UGF0aCArICIvIiArIHRvc2NhTWV0YURhdGEuZ2V0RW50aXR5RGVmaW5pdGlvbnMoKSk7DQorDQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhibHVlcHJpbnRQYXRoKSwgImZhaWxlZCB0byBnZXQgQmx1ZXByaW50IGNvbnRlbnQiKTsNCisNCisgICAgICAgIExpc3Q8Q29uZmlnTW9kZWxDb250ZW50PiBjb25maWdNb2RlbENvbnRlbnRzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorICAgICAgICBDb25maWdNb2RlbENvbnRlbnQgc3RDb25maWdNb2RlbENvbnRlbnQgPSBuZXcgQ29uZmlnTW9kZWxDb250ZW50KCk7DQorICAgICAgICBzdENvbmZpZ01vZGVsQ29udGVudC5zZXROYW1lKGNvbmZpZ01vZGVsLmdldEFydGlmYWN0TmFtZSgpKTsNCisgICAgICAgIHN0Q29uZmlnTW9kZWxDb250ZW50LnNldENvbnRlbnRUeXBlKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfQ09OVEVOVF9UWVBFX1RPU0NBX0pTT04pOw0KKyAgICAgICAgc3RDb25maWdNb2RlbENvbnRlbnQuc2V0Q29udGVudChibHVlcHJpbnRDb250ZW50KTsNCisgICAgICAgIGNvbmZpZ01vZGVsQ29udGVudHMuYWRkKHN0Q29uZmlnTW9kZWxDb250ZW50KTsNCisNCisgICAgICAgIFN0cmluZyB2ZWxvY2l0eURpciA9IGJsdWVwcmludFBhdGggKyAiL1RlbXBsYXRlcyI7DQorICAgICAgICBMaXN0PEZpbGU+IHZlbG9jaXR5VGVtcGxhdGVGaWxlcyA9IGdldEZpbGVPZkV4dGVuc2lvbih2ZWxvY2l0eURpciwgbmV3IFN0cmluZ1tdeyJ2dGwifSk7DQorDQorICAgICAgICBpZiAoQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkodmVsb2NpdHlUZW1wbGF0ZUZpbGVzKSkgew0KKyAgICAgICAgICAgIGZvciAoRmlsZSB2ZWxvY2l0eVRlbXBsYXRlRmlsZSA6IHZlbG9jaXR5VGVtcGxhdGVGaWxlcykgew0KKyAgICAgICAgICAgICAgICBpZiAodmVsb2NpdHlUZW1wbGF0ZUZpbGUgIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnROYW1lID0gdmVsb2NpdHlUZW1wbGF0ZUZpbGUuZ2V0TmFtZSgpLnJlcGxhY2UoIi52dGwiLCAiIik7DQorICAgICAgICAgICAgICAgICAgICBDb25maWdNb2RlbENvbnRlbnQgdmVsb2NpdHlDb25maWdNb2RlbENvbnRlbnQgPSBuZXcgQ29uZmlnTW9kZWxDb250ZW50KCk7DQorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmVsb2NpdHlDb25maWdDb250ZW50ID0gZ2V0UGF0aENvbnRlbnQodmVsb2NpdHlUZW1wbGF0ZUZpbGUpOw0KKyAgICAgICAgICAgICAgICAgICAgdmVsb2NpdHlDb25maWdNb2RlbENvbnRlbnQuc2V0TmFtZShjb250ZW50TmFtZSk7DQorICAgICAgICAgICAgICAgICAgICB2ZWxvY2l0eUNvbmZpZ01vZGVsQ29udGVudA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGVudFR5cGUoQ29uZmlnTW9kZWxDb25zdGFudC5NT0RFTF9DT05URU5UX1RZUEVfVEVNUExBVEUpOw0KKyAgICAgICAgICAgICAgICAgICAgdmVsb2NpdHlDb25maWdNb2RlbENvbnRlbnQuc2V0Q29udGVudCh2ZWxvY2l0eUNvbmZpZ0NvbnRlbnQpOw0KKyAgICAgICAgICAgICAgICAgICAgY29uZmlnTW9kZWxDb250ZW50cy5hZGQodmVsb2NpdHlDb25maWdNb2RlbENvbnRlbnQpOw0KKyAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIkxvYWRlZCBibHVlcHJpbnQgdGVtcGxhdGUgc3VjY2Vzc2Z1bGx5OiB7fSIsIHZlbG9jaXR5VGVtcGxhdGVGaWxlLmdldE5hbWUoKSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBjb25maWdNb2RlbC5zZXRDb25maWdNb2RlbENvbnRlbnRzKGNvbmZpZ01vZGVsQ29udGVudHMpOw0KKw0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGVsOw0KKw0KKyAgICB9DQorDQorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBhdGhDb250ZW50KFN0cmluZyBwYXRoKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocGF0aCksICJQYXRoIGlzIG1pc3NpbmciKTsNCisgICAgICAgIHJldHVybiBGaWxlVXRpbHMucmVhZEZpbGVUb1N0cmluZyhuZXcgRmlsZShwYXRoKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQYXRoQ29udGVudChGaWxlIGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrTm90TnVsbChmaWxlLCAiRmlsZSBpcyBtaXNzaW5nIik7DQorICAgICAgICByZXR1cm4gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcoZmlsZSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgc3RhdGljIExpc3Q8RmlsZT4gZ2V0RmlsZU9mRXh0ZW5zaW9uKFN0cmluZyBiYXNlUGF0aCwgU3RyaW5nW10gZXh0ZW5zaW9ucykgew0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoYmFzZVBhdGgpLCAiUGF0aCBpcyBtaXNzaW5nIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrTm90TnVsbChleHRlbnNpb25zLCAiRXh0ZW5zaW9ucyBpcyBtaXNzaW5nIik7DQorICAgICAgICByZXR1cm4gKExpc3Q8RmlsZT4pIEZpbGVVdGlscy5saXN0RmlsZXMobmV3IEZpbGUoYmFzZVBhdGgpLCBleHRlbnNpb25zLCB0cnVlKTsNCisgICAgfQ0KKw0KKyAgICBwdWJsaWMgc3RhdGljIExpc3Q8U3RyaW5nPiBnZXRCbHVlcHJpbnROYW1lcyhTdHJpbmcgcGF0aE5hbWUpIHsNCisgICAgICAgIEZpbGUgYmx1ZXByaW50RGlyID0gbmV3IEZpbGUocGF0aE5hbWUpOw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGwoYmx1ZXByaW50RGlyLCAiZmFpbGVkIHRvIGZpbmQgdGhlIGJsdWVwcmludCBwYXRoTmFtZSBmaWxlIik7DQorICAgICAgICByZXR1cm4gIEFycmF5cy5hc0xpc3QoYmx1ZXByaW50RGlyLmxpc3QoRGlyZWN0b3J5RmlsZUZpbHRlci5JTlNUQU5DRSkpOw0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS92YWxpZGF0b3IvTW9kZWxUeXBlVmFsaWRhdG9yLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvdmFsaWRhdG9yL01vZGVsVHlwZVZhbGlkYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZjI1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvdmFsaWRhdG9yL01vZGVsVHlwZVZhbGlkYXRvci5qYXZhCkBAIC0wLDAgKzEsMjAwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UudmFsaWRhdG9yOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5Db25maWdNb2RlbENvbnN0YW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5BcnRpZmFjdFR5cGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLkNhcGFiaWxpdHlEZWZpbml0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuZGF0YS5EYXRhVHlwZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuTm9kZVR5cGU7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uTW9kZWxUeXBlOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisvKioNCisgKiBNb2RlbFR5cGVWYWxpZGF0aW9uLmphdmEgUHVycG9zZTogUHJvdmlkZSBWYWxpZGF0aW9uIFNlcnZpY2UgZm9yIE1vZGVsIFR5cGUgTW9kZWxUeXBlVmFsaWRhdGlvbg0KKyAqDQorICogQGF1dGhvciBCcmluZGEgU2FudGgNCisgKiBAdmVyc2lvbiAxLjANCisgKi8NCisNCitwdWJsaWMgY2xhc3MgTW9kZWxUeXBlVmFsaWRhdG9yIHsNCisNCisgICAgcHJpdmF0ZSBNb2RlbFR5cGVWYWxpZGF0b3IoKSB7DQorDQorICAgIH0NCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgTGlzdDxTdHJpbmc+IGdldFZhbGlkTW9kZWxEZWZpbml0aW9uVHlwZSgpIHsNCisgICAgICAgIExpc3Q8U3RyaW5nPiB2YWxpZFR5cGVzID0gbmV3IEFycmF5TGlzdDw+KCk7DQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0RBVEFfVFlQRSk7DQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX05PREVfVFlQRSk7DQorICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0FSVElGQUNUX1RZUEUpOw0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9DQVBBQklMSVRZX1RZUEUpOw0KKyAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9SRUxBVElPTlNISVBfVFlQRSk7DQorICAgICAgICByZXR1cm4gdmFsaWRUeXBlczsNCisgICAgfQ0KKw0KKyAgICBARGVwcmVjYXRlZA0KKyAgICBwcml2YXRlIHN0YXRpYyBMaXN0PFN0cmluZz4gZ2V0VmFsaWRNb2RlbERlcml2ZWRGcm9tKFN0cmluZyBkZWZpbml0aW9uVHlwZSkgew0KKyAgICAgICAgTGlzdDxTdHJpbmc+IHZhbGlkVHlwZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc05vdEJsYW5rKGRlZmluaXRpb25UeXBlKSkgew0KKyAgICAgICAgICAgIGlmIChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX05PREVfVFlQRS5lcXVhbHNJZ25vcmVDYXNlKGRlZmluaXRpb25UeXBlKSkgew0KKyAgICAgICAgICAgICAgICB2YWxpZFR5cGVzLmFkZChDb25maWdNb2RlbENvbnN0YW50Lk1PREVMX1RZUEVfTk9ERV9ERyk7DQorICAgICAgICAgICAgICAgIHZhbGlkVHlwZXMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfVFlQRV9OT0RFX0NPTVBPTkVOVCk7DQorICAgICAgICAgICAgICAgIHZhbGlkVHlwZXMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfVFlQRV9OT0RFX1ZORik7DQorICAgICAgICAgICAgICAgIHZhbGlkVHlwZXMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfVFlQRV9OT0RFX0FSVElGQUNUKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfQ0FQQUJJTElUWV9UWVBFLmVxdWFsc0lnbm9yZUNhc2UoZGVmaW5pdGlvblR5cGUpKSB7DQorICAgICAgICAgICAgICAgIHZhbGlkVHlwZXMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfVFlQRV9DQVBBQklMSVRZX05FVENPTkYpOw0KKyAgICAgICAgICAgICAgICB2YWxpZFR5cGVzLmFkZChDb25maWdNb2RlbENvbnN0YW50Lk1PREVMX1RZUEVfQ0FQQUJJTElUWV9TU0gpOw0KKyAgICAgICAgICAgICAgICB2YWxpZFR5cGVzLmFkZChDb25maWdNb2RlbENvbnN0YW50Lk1PREVMX1RZUEVfQ0FQQUJJTElUWV9TRlRQKTsNCisgICAgICAgICAgICAgICAgdmFsaWRUeXBlcy5hZGQoQ29uZmlnTW9kZWxDb25zdGFudC5NT0RFTF9UWVBFX0NBUEFCSUxJVFlfQ0hFRik7DQorICAgICAgICAgICAgICAgIHZhbGlkVHlwZXMuYWRkKENvbmZpZ01vZGVsQ29uc3RhbnQuTU9ERUxfVFlQRV9DQVBBQklMSVRZX0FOU0lCTEVGKTsNCisgICAgICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfUkVMQVRJT05TSElQX1RZUEUuZXF1YWxzSWdub3JlQ2FzZShkZWZpbml0aW9uVHlwZSkpIHsNCisgICAgICAgICAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX1RZUEVfUkVMQVRJT05TSElQU19ERVBFTkRTX09OKTsNCisgICAgICAgICAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX1RZUEVfUkVMQVRJT05TSElQU19IT1NURURfT04pOw0KKyAgICAgICAgICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfVFlQRV9SRUxBVElPTlNISVBTX0NPTk5FQ1RTX1RPKTsNCisgICAgICAgICAgICAgICAgdmFsaWRUeXBlcy5hZGQoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX1RZUEVfUkVMQVRJT05TSElQU19BVFRBQ0hfVE8pOw0KKyAgICAgICAgICAgICAgICB2YWxpZFR5cGVzLmFkZChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfVFlQRV9SRUxBVElPTlNISVBTX1JPVVRFU19UTyk7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHZhbGlkVHlwZXM7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSB2YWxpZGF0ZU5vZGVUeXBlDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gZGVmaW5pdGlvblR5cGUNCisgICAgICogQHBhcmFtIGRlcml2ZWRGcm9tDQorICAgICAqIEByZXR1cm4gYm9vbGVhbg0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIHZhbGlkYXRlTm9kZVR5cGUoU3RyaW5nIGRlZmluaXRpb25UeXBlLCBTdHJpbmcgZGVyaXZlZEZyb20pIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgYm9vbGVhbiB2YWxpZCA9IHRydWU7DQorICAgICAgICBpZiAoIUJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfREFUQV9UWVBFLmVxdWFsc0lnbm9yZUNhc2UoZGVmaW5pdGlvblR5cGUpDQorICAgICAgICAgICAgICAgICYmICFCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0FSVElGQUNUX1RZUEUuZXF1YWxzSWdub3JlQ2FzZShkZWZpbml0aW9uVHlwZSkpIHsNCisgICAgICAgICAgICBMaXN0PFN0cmluZz4gdmFsaWRUeXBlcyA9IGdldFZhbGlkTW9kZWxEZXJpdmVkRnJvbShkZWZpbml0aW9uVHlwZSk7DQorICAgICAgICAgICAgaWYgKCF2YWxpZFR5cGVzLmNvbnRhaW5zKGRlcml2ZWRGcm9tKSkgew0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgVmFsaWQgTW9kZWwgVHlwZSAoIiArIGRlcml2ZWRGcm9tICsgIiksIEl0IHNvdWxkIGJlICIgKyB2YWxpZFR5cGVzKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gdmFsaWQ7DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSB2YWxpZGF0ZU1vZGVsVHlwZURlZmluaXRpb24NCisgICAgICogDQorICAgICAqIEBwYXJhbSBkZWZpbml0aW9uVHlwZQ0KKyAgICAgKiBAcGFyYW0gZGVmaW5pdGlvbkNvbnRlbnQNCisgICAgICogQHJldHVybiBib29sZWFuDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gdmFsaWRhdGVNb2RlbFR5cGVEZWZpbml0aW9uKFN0cmluZyBkZWZpbml0aW9uVHlwZSwgU3RyaW5nIGRlZmluaXRpb25Db250ZW50KQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgYm9vbGVhbiB2YWxpZCA9IHRydWU7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhkZWZpbml0aW9uQ29udGVudCkpIHsNCisgICAgICAgICAgICBpZiAoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9EQVRBX1RZUEUuZXF1YWxzSWdub3JlQ2FzZShkZWZpbml0aW9uVHlwZSkpIHsNCisgICAgICAgICAgICAgICAgRGF0YVR5cGUgZGF0YVR5cGUgPSBKYWNrc29uVXRpbHMucmVhZFZhbHVlKGRlZmluaXRpb25Db250ZW50LCBEYXRhVHlwZS5jbGFzcyk7DQorICAgICAgICAgICAgICAgIGlmIChkYXRhVHlwZSA9PSBudWxsKSB7DQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kZWwgdHlwZSBkZWZpbml0aW9uIGlzIG5vdCBEYXRhVHlwZSB2YWxpZCBjb250ZW50ICIgKyBkZWZpbml0aW9uQ29udGVudCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9ERUZJTklUSU9OX1RZUEVfTk9ERV9UWVBFLmVxdWFsc0lnbm9yZUNhc2UoZGVmaW5pdGlvblR5cGUpKSB7DQorICAgICAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0gSmFja3NvblV0aWxzLnJlYWRWYWx1ZShkZWZpbml0aW9uQ29udGVudCwgTm9kZVR5cGUuY2xhc3MpOw0KKyAgICAgICAgICAgICAgICBpZiAobm9kZVR5cGUgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZGVsIHR5cGUgZGVmaW5pdGlvbiBpcyBub3QgTm9kZVR5cGUgdmFsaWQgY29udGVudCAiICsgZGVmaW5pdGlvbkNvbnRlbnQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIGlmIChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0FSVElGQUNUX1RZUEUuZXF1YWxzSWdub3JlQ2FzZShkZWZpbml0aW9uVHlwZSkpIHsNCisgICAgICAgICAgICAgICAgQXJ0aWZhY3RUeXBlIGFydGlmYWN0VHlwZSA9IEphY2tzb25VdGlscy5yZWFkVmFsdWUoZGVmaW5pdGlvbkNvbnRlbnQsIEFydGlmYWN0VHlwZS5jbGFzcyk7DQorICAgICAgICAgICAgICAgIGlmIChhcnRpZmFjdFR5cGUgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZGVsIHR5cGUgZGVmaW5pdGlvbiBpcyBub3QgQXJ0aWZhY3RUeXBlIHZhbGlkIGNvbnRlbnQgIiArIGRlZmluaXRpb25Db250ZW50KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH1lbHNlIGlmIChCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0NBUEFCSUxJVFlfVFlQRS5lcXVhbHNJZ25vcmVDYXNlKGRlZmluaXRpb25UeXBlKSkgew0KKyAgICAgICAgICAgICAgICBDYXBhYmlsaXR5RGVmaW5pdGlvbiBjYXBhYmlsaXR5RGVmaW5pdGlvbiA9DQorICAgICAgICAgICAgICAgICAgICAgICAgSmFja3NvblV0aWxzLnJlYWRWYWx1ZShkZWZpbml0aW9uQ29udGVudCwgQ2FwYWJpbGl0eURlZmluaXRpb24uY2xhc3MpOw0KKyAgICAgICAgICAgICAgICBpZiAoY2FwYWJpbGl0eURlZmluaXRpb24gPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZGVsIHR5cGUgZGVmaW5pdGlvbiBpcyBub3QgQ2FwYWJpbGl0eURlZmluaXRpb24gdmFsaWQgY29udGVudCAiICsgZGVmaW5pdGlvbkNvbnRlbnQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuIHZhbGlkOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgdmFsaWRhdGVNb2RlbFR5cGUgbWV0aG9kDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gbW9kZWxUeXBlDQorICAgICAqIEByZXR1cm4gYm9vbGVhbg0KKyAgICAgKi8NCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIHZhbGlkYXRlTW9kZWxUeXBlKE1vZGVsVHlwZSBtb2RlbFR5cGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgaWYgKG1vZGVsVHlwZSAhPSBudWxsKSB7DQorDQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsobW9kZWxUeXBlLmdldE1vZGVsTmFtZSgpKSkgew0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJNb2RlbCBOYW1lIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmIChTdHJpbmdVdGlscy5pc0JsYW5rKG1vZGVsVHlwZS5nZXREZWZpbml0aW9uVHlwZSgpKSkgew0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKCJNb2RlbCBSb290IFR5cGUgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsobW9kZWxUeXBlLmdldERlcml2ZWRGcm9tKCkpKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk1vZGVsIFR5cGUgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsobW9kZWxUeXBlLmdldERlZmluaXRpb24oKSkpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTW9kZWwgRGVmaW5pdGlvbiBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNCbGFuayhtb2RlbFR5cGUuZ2V0RGVzY3JpcHRpb24oKSkpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTW9kZWwgRGVzY3JpcHRpb24gSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzQmxhbmsobW9kZWxUeXBlLmdldFZlcnNpb24oKSkpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTW9kZWwgVmVyc2lvbiBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNCbGFuayhtb2RlbFR5cGUuZ2V0VXBkYXRlZEJ5KCkpKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oIk1vZGVsIFVwZGF0ZWQgQnkgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgTGlzdDxTdHJpbmc+IHZhbGlkUm9vdFR5cGVzID0gZ2V0VmFsaWRNb2RlbERlZmluaXRpb25UeXBlKCk7DQorICAgICAgICAgICAgaWYgKCF2YWxpZFJvb3RUeXBlcy5jb250YWlucyhtb2RlbFR5cGUuZ2V0RGVmaW5pdGlvblR5cGUoKSkpIHsNCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTm90IFZhbGlkIE1vZGVsIFJvb3QgVHlwZSgiICsgbW9kZWxUeXBlLmdldERlZmluaXRpb25UeXBlKCkNCisgICAgICAgICAgICAgICAgICAgICAgICArICIpLCBJdCBzb3VsZCBiZSAiICsgdmFsaWRSb290VHlwZXMpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICB2YWxpZGF0ZU1vZGVsVHlwZURlZmluaXRpb24obW9kZWxUeXBlLmdldERlZmluaXRpb25UeXBlKCksIG1vZGVsVHlwZS5nZXREZWZpbml0aW9uKCkpOw0KKw0KKyAgICAgICAgICAgIHZhbGlkYXRlTm9kZVR5cGUobW9kZWxUeXBlLmdldERlZmluaXRpb25UeXBlKCksIG1vZGVsVHlwZS5nZXREZXJpdmVkRnJvbSgpKTsNCisNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgdGhyb3cgbmV3IEJsdWVQcmludEV4Y2VwdGlvbigiTW9kZWwgVHlwZSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorDQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3ZhbGlkYXRvci9SZXNvdXJjZURpY3Rpb25hcnlWYWxpZGF0b3IuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS92YWxpZGF0b3IvUmVzb3VyY2VEaWN0aW9uYXJ5VmFsaWRhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIyNDQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS92YWxpZGF0b3IvUmVzb3VyY2VEaWN0aW9uYXJ5VmFsaWRhdG9yLmphdmEKQEAgLTAsMCArMSw4OCBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnZhbGlkYXRvcjsNCisNCitpbXBvcnQgY29tLmdvb2dsZS5jb21tb24uYmFzZS5QcmVjb25kaXRpb25zOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS51dGlscy5KYWNrc29uVXRpbHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMucmVzb3VyY2UuZGljdC5kYXRhLkRpY3Rpb25hcnlEZWZpbml0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLlJlc291cmNlRGljdGlvbmFyeTsNCisNCisvKioNCisgKiBSZXNvdXJjZURpY3Rpb25hcnlWYWxpZGF0b3IuamF2YSBQdXJwb3NlOiBQcm92aWRlIFZhbGlkYXRpb24gU2VydmljZSBmb3IgTW9kZWwgVHlwZSBSZXNvdXJjZQ0KKyAqIERpY3Rpb25hcnkgVmFsaWRhdG9yDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZURpY3Rpb25hcnlWYWxpZGF0b3Igew0KKw0KKyAgICBwcml2YXRlIFJlc291cmNlRGljdGlvbmFyeVZhbGlkYXRvcigpIHt9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgdmFsaWRhdGVSZXNvdXJjZURpY3Rpb25hcnlEZWZpbml0aW9uDQorICAgICAqIA0KKyAgICAgKiBAcGFyYW0gZGVmaW5pdGlvbkNvbnRlbnQNCisgICAgICogQHJldHVybiBib29sZWFuDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gdmFsaWRhdGVSZXNvdXJjZURpY3Rpb25hcnlEZWZpbml0aW9uKFN0cmluZyBkZWZpbml0aW9uQ29udGVudCkNCisgICAgICAgICAgICB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uIHsNCisgICAgICAgIGJvb2xlYW4gdmFsaWQgPSB0cnVlOw0KKyAgICAgICAgaWYgKFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoZGVmaW5pdGlvbkNvbnRlbnQpKSB7DQorICAgICAgICAgICAgRGljdGlvbmFyeURlZmluaXRpb24gZGljdGlvbmFyeURlZmluaXRpb24gPQ0KKyAgICAgICAgICAgICAgICAgICAgSmFja3NvblV0aWxzLnJlYWRWYWx1ZShkZWZpbml0aW9uQ29udGVudCwgRGljdGlvbmFyeURlZmluaXRpb24uY2xhc3MpOw0KKyAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5RGVmaW5pdGlvbiA9PSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBCbHVlUHJpbnRFeGNlcHRpb24oDQorICAgICAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlIGRpY3Rpb25hcnkgZGVmaW5pdGlvbiBpcyBub3QgdmFsaWQgY29udGVudCAiICsgZGVmaW5pdGlvbkNvbnRlbnQpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiB2YWxpZDsNCisgICAgfQ0KKw0KKyAgICAvKioNCisgICAgICogVGhpcyBpcyBhIHZhbGlkYXRlUmVzb3VyY2VEaWN0aW9uYXJ5IG1ldGhvZA0KKyAgICAgKiANCisgICAgICogQHBhcmFtIHJlc291cmNlRGljdGlvbmFyeQ0KKyAgICAgKiBAcmV0dXJuIGJvb2xlYW4NCisgICAgICoNCisgICAgICovDQorICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB2YWxpZGF0ZVJlc291cmNlRGljdGlvbmFyeShSZXNvdXJjZURpY3Rpb25hcnkgcmVzb3VyY2VEaWN0aW9uYXJ5KSB7DQorDQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrTm90TnVsbChyZXNvdXJjZURpY3Rpb25hcnksIlJlc291cmNlRGljdGlvbmFyeSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIgKTsNCisNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudCggU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0TmFtZSgpKSwNCisgICAgICAgICAgICAgICAgIkRhdGFEaWN0aW9uYXJ5IEFsaWFzIE5hbWUgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudCggU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0UmVzb3VyY2VQYXRoKCkpLA0KKyAgICAgICAgICAgICAgICAiRGF0YURpY3Rpb25hcnkgUmVzb3VyY2UgTmFtZSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KCBTdHJpbmdVdGlscy5pc05vdEJsYW5rKHJlc291cmNlRGljdGlvbmFyeS5nZXRSZXNvdXJjZVR5cGUoKSksDQorICAgICAgICAgICAgICAgICJEYXRhRGljdGlvbmFyeSBSZXNvdXJjZSBUeXBlIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocmVzb3VyY2VEaWN0aW9uYXJ5LmdldERlZmluaXRpb24oKSksDQorICAgICAgICAgICAgICAgICJEYXRhRGljdGlvbmFyeSBEZWZpbml0aW9uIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoIFN0cmluZ1V0aWxzLmlzTm90QmxhbmsocmVzb3VyY2VEaWN0aW9uYXJ5LmdldERlc2NyaXB0aW9uKCkpLA0KKyAgICAgICAgICAgICAgICAiRGF0YURpY3Rpb25hcnkgRGVzY3JpcHRpb24gSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudCggU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0VGFncygpKSwNCisgICAgICAgICAgICAgICAgIkRhdGFEaWN0aW9uYXJ5IFRhZ3MgSW5mb3JtYXRpb24gaXMgbWlzc2luZy4iKTsNCisgICAgICAgIFByZWNvbmRpdGlvbnMuY2hlY2tBcmd1bWVudCggU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhyZXNvdXJjZURpY3Rpb25hcnkuZ2V0VXBkYXRlZEJ5KCkpLA0KKyAgICAgICAgICAgICAgICAiRGF0YURpY3Rpb25hcnkgVXBkYXRlZCBCeSBJbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiIpOw0KKyAgICAgICAgcmV0dXJuIHRydWU7DQorDQorICAgIH0NCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3ZhbGlkYXRvci9TZXJ2aWNlVGVtcGxhdGVWYWxpZGF0b3IuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS92YWxpZGF0b3IvU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE0NmYzYQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS92YWxpZGF0b3IvU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yLmphdmEKQEAgLTAsMCArMSwxMjMgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS52YWxpZGF0b3I7DQorDQoraW1wb3J0IGNvbS5nb29nbGUuY29tbW9uLmJhc2UuUHJlY29uZGl0aW9uczsNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ1V0aWxzOw0KK2ltcG9ydCBvcmcuamV0YnJhaW5zLmFubm90YXRpb25zLk5vdE51bGw7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRDb25zdGFudHM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5CbHVlUHJpbnRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuY29yZS5kYXRhLk5vZGVUZW1wbGF0ZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuc2VydmljZS5CbHVlUHJpbnRWYWxpZGF0b3JEZWZhdWx0U2VydmljZTsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLnV0aWxzLkphY2tzb25VdGlsczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5yZXNvdXJjZS5kaWN0LnZhbGlkYXRvci5SZXNvdXJjZUFzc2lnbm1lbnRWYWxpZGF0b3I7DQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KKy8qKg0KKyAqIFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRvci5qYXZhIFB1cnBvc2U6IFByb3ZpZGUgQ29uZmlndXJhdGlvbiBHZW5lcmF0b3IgU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KKw0KK3B1YmxpYyBjbGFzcyBTZXJ2aWNlVGVtcGxhdGVWYWxpZGF0b3IgZXh0ZW5kcyBCbHVlUHJpbnRWYWxpZGF0b3JEZWZhdWx0U2VydmljZSB7DQorDQorICAgIFN0cmluZ0J1aWxkZXIgbWVzc2FnZSA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQorICAgIHByaXZhdGUgTWFwPFN0cmluZywgU3RyaW5nPiBtZXRhRGF0YSA9IG5ldyBIYXNoTWFwKCk7DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgdmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUNCisgICAgICoNCisgICAgICogQHBhcmFtIHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQNCisgICAgICogQHJldHVybiBib29sZWFuDQorICAgICAqIEB0aHJvd3MgQmx1ZVByaW50RXhjZXB0aW9uDQorICAgICAqLw0KKyAgICBwdWJsaWMgYm9vbGVhbiB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShTdHJpbmcgc2VydmljZVRlbXBsYXRlQ29udGVudCkgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBpZiAoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhzZXJ2aWNlVGVtcGxhdGVDb250ZW50KSkgew0KKyAgICAgICAgICAgIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUgPQ0KKyAgICAgICAgICAgICAgICAgICAgSmFja3NvblV0aWxzLnJlYWRWYWx1ZShzZXJ2aWNlVGVtcGxhdGVDb250ZW50LCBTZXJ2aWNlVGVtcGxhdGUuY2xhc3MpOw0KKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZShzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aHJvdyBuZXcgQmx1ZVByaW50RXhjZXB0aW9uKA0KKyAgICAgICAgICAgICAgICAgICAgIlNlcnZpY2UgVGVtcGxhdGUgQ29udGVudCBpcyAgKCIgKyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ICsgIikgbm90IERlZmluZWQuIik7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZQ0KKyAgICAgKg0KKyAgICAgKiBAcGFyYW0gc2VydmljZVRlbXBsYXRlDQorICAgICAqIEByZXR1cm4gYm9vbGVhbg0KKyAgICAgKiBAdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbg0KKyAgICAgKi8NCisgICAgQFN1cHByZXNzV2FybmluZ3MoInNxdWlkOlMwMDExMiIpDQorICAgIHB1YmxpYyBib29sZWFuIHZhbGlkYXRlU2VydmljZVRlbXBsYXRlKFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUpIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgTWFwPFN0cmluZywgT2JqZWN0PiBwcm9wZXJ0aWVzID0gbmV3IEhhc2hNYXA8PigpOw0KKyAgICAgICAgc3VwZXIudmFsaWRhdGVCbHVlcHJpbnQoc2VydmljZVRlbXBsYXRlLCBwcm9wZXJ0aWVzKTsNCisgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICB9DQorDQorICAgIC8qKg0KKyAgICAgKiBUaGlzIGlzIGEgZ2V0TWV0YURhdGEgdG8gZ2V0IHRoZSBrZXkgaW5mb3JtYXRpb24gZHVyaW5nIHRoZQ0KKyAgICAgKg0KKyAgICAgKiBAcmV0dXJuIE1hcDxTdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsDQorICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgIFN0cmluZz4NCisgICAgICovDQorICAgIHB1YmxpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGdldE1ldGFEYXRhKCkgew0KKyAgICAgICAgcmV0dXJuIG1ldGFEYXRhOw0KKyAgICB9DQorDQorICAgIEBPdmVycmlkZQ0KKyAgICBwdWJsaWMgdm9pZCB2YWxpZGF0ZU1ldGFkYXRhKEBOb3ROdWxsIE1hcDxTdHJpbmcsIFN0cmluZz4gbWV0YURhdGFNYXApIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja05vdE51bGwoc2VydmljZVRlbXBsYXRlLmdldE1ldGFkYXRhKCksICJTZXJ2aWNlIFRlbXBsYXRlIE1ldGFkYXRhIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorDQorICAgICAgICB0aGlzLm1ldGFEYXRhLnB1dEFsbChzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKSk7DQorDQorICAgICAgICBTdHJpbmcgYXV0aG9yID0gc2VydmljZVRlbXBsYXRlLmdldE1ldGFkYXRhKCkuZ2V0KEJsdWVQcmludENvbnN0YW50cy5NRVRBREFUQV9URU1QTEFURV9BVVRIT1IpOw0KKyAgICAgICAgU3RyaW5nIHNlcnZpY2VUZW1wbGF0ZU5hbWUgPQ0KKyAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKS5nZXQoQmx1ZVByaW50Q29uc3RhbnRzLk1FVEFEQVRBX1RFTVBMQVRFX05BTUUpOw0KKyAgICAgICAgU3RyaW5nIHNlcnZpY2VUZW1wbGF0ZVZlcnNpb24gPQ0KKyAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0TWV0YWRhdGEoKS5nZXQoQmx1ZVByaW50Q29uc3RhbnRzLk1FVEFEQVRBX1RFTVBMQVRFX1ZFUlNJT04pOw0KKw0KKyAgICAgICAgUHJlY29uZGl0aW9ucy5jaGVja0FyZ3VtZW50KFN0cmluZ1V0aWxzLmlzTm90QmxhbmsoYXV0aG9yKSwgIlRlbXBsYXRlIE1ldGFkYXRhIChhdXRob3IpIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhzZXJ2aWNlVGVtcGxhdGVOYW1lKSwgIlRlbXBsYXRlIE1ldGFkYXRhIChzZXJ2aWNlLXRlbXBsYXRlLW5hbWUpIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgICAgICBQcmVjb25kaXRpb25zLmNoZWNrQXJndW1lbnQoU3RyaW5nVXRpbHMuaXNOb3RCbGFuayhzZXJ2aWNlVGVtcGxhdGVWZXJzaW9uKSwgIlRlbXBsYXRlIE1ldGFkYXRhIChzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24pIEluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIik7DQorICAgIH0NCisNCisNCisgICAgQE92ZXJyaWRlDQorICAgIHB1YmxpYyB2b2lkIHZhbGlkYXRlTm9kZVRlbXBsYXRlKEBOb3ROdWxsIFN0cmluZyBub2RlVGVtcGxhdGVOYW1lLCBATm90TnVsbCBOb2RlVGVtcGxhdGUgbm9kZVRlbXBsYXRlKQ0KKyAgICAgICAgICAgIHRocm93cyBCbHVlUHJpbnRFeGNlcHRpb24gew0KKyAgICAgICAgc3VwZXIudmFsaWRhdGVOb2RlVGVtcGxhdGUobm9kZVRlbXBsYXRlTmFtZSwgbm9kZVRlbXBsYXRlKTsNCisgICAgICAgIHZhbGlkYXRlTm9kZVRlbXBsYXRlQ3VzdG9tKG5vZGVUZW1wbGF0ZU5hbWUsIG5vZGVUZW1wbGF0ZSk7DQorDQorICAgIH0NCisNCisgICAgQERlcHJlY2F0ZWQoKQ0KKyAgICBwcml2YXRlIHZvaWQgdmFsaWRhdGVOb2RlVGVtcGxhdGVDdXN0b20oQE5vdE51bGwgU3RyaW5nIG5vZGVUZW1wbGF0ZU5hbWUsIEBOb3ROdWxsIE5vZGVUZW1wbGF0ZSBub2RlVGVtcGxhdGUpDQorICAgICAgICAgICAgdGhyb3dzIEJsdWVQcmludEV4Y2VwdGlvbiB7DQorICAgICAgICBTdHJpbmcgZGVyaXZlZEZyb20gPSBnZXRCbHVlUHJpbnRDb250ZXh0KCkubm9kZVRlbXBsYXRlTm9kZVR5cGUobm9kZVRlbXBsYXRlTmFtZSkuZ2V0RGVyaXZlZEZyb20oKTsNCisgICAgICAgIGlmICgidG9zY2Eubm9kZXMuQXJ0aWZhY3QiLmVxdWFscyhkZXJpdmVkRnJvbSkpIHsNCisgICAgICAgICAgICBSZXNvdXJjZUFzc2lnbm1lbnRWYWxpZGF0b3IgcmVzb3VyY2VBc3NpZ25tZW50VmFsaWRhdG9yID0gbmV3IFJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvcihub2RlVGVtcGxhdGUpOw0KKyAgICAgICAgICAgIHJlc291cmNlQXNzaWdubWVudFZhbGlkYXRvci52YWxpZGF0ZVJlc291cmNlQXNzaWdubWVudCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc2VydmljZV90ZW1wbGF0ZS9kZWZhdWx0X25ldGNvbmYuanNvbiBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc2VydmljZV90ZW1wbGF0ZS9kZWZhdWx0X25ldGNvbmYuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWM4MjljCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL3Jlc291cmNlcy9zZXJ2aWNlX3RlbXBsYXRlL2RlZmF1bHRfbmV0Y29uZi5qc29uCkBAIC0wLDAgKzEsODkwIEBACit7DQorCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJIm1ldGFkYXRhIjogew0KKwkJInRlbXBsYXRlX2F1dGhvciI6ICJ4eHh4QG9uYXAuY29tIiwNCisJCSJ0ZW1wbGF0ZV9uYW1lIjogImRlZmF1bHRfbmV0Y29uZiIsDQorCQkidGVtcGxhdGVfdmVyc2lvbiI6ICIxLjAuMCIsDQorCQkic2VydmljZS10eXBlIjogIlhYWFhYWFhYWFhYIiwNCisJCSJ2bmYtdHlwZSI6ICJYWFhYWFhYWFgiDQorCX0sDQorCSJ0b3BvbG9neV90ZW1wbGF0ZSI6IHsNCisJCSJpbnB1dHMiOiB7DQorCQkJInJlcXVlc3QtaWQiOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJhY3Rpb24tbmFtZSI6IHsNCisJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCX0sDQorCQkJInNlcnZpY2UtaW5zdGFuY2UtaWQiOiB7DQorCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQl9LA0KKwkJCSJyZXNvdXJjZS10eXBlIjogew0KKwkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJfQ0KKwkJfSwNCisJCSJub2RlX3RlbXBsYXRlcyI6IHsNCisJCQkiYmFzZS1jb25maWctdGVtcGxhdGUiOiB7DQorCQkJCSJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJImFjdGlvbi1uYW1lcyI6IFsNCisJCQkJCQkicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iDQorCQkJCQldDQorCQkJCX0sDQorCQkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCQkiY29udGVudCI6IHsNCisJCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkJImNvbnRlbnQiOiAiIg0KKwkJCQkJCX0NCisJCQkJCX0sDQorCQkJCQkibWFwcGluZyI6IHsNCisJCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkJIm1hcHBpbmciOiBbXQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJImxpY2VuY2UtdGVtcGxhdGUiOiB7DQorCQkJCSJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJImFjdGlvbi1uYW1lcyI6IFsNCisJCQkJCQkiYWN0aXZhdGUtbmV0Y29uZi1hY3Rpb24iDQorCQkJCQldDQorCQkJCX0sDQorCQkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCQkiY29udGVudCI6IHsNCisJCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkJImNvbnRlbnQiOiAiIg0KKwkJCQkJCX0NCisJCQkJCX0sDQorCQkJCQkibWFwcGluZyI6IHsNCisJCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkJIm1hcHBpbmciOiBbXQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJInJ1bm5pbmdjb25maWctdGVtcGxhdGUiOiB7DQorCQkJCSJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJImFjdGlvbi1uYW1lcyI6IFsNCisJCQkJCQkiYWN0aXZhdGUtbmV0Y29uZi1hY3Rpb24iDQorCQkJCQldDQorCQkJCX0sDQorCQkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCQkiY29udGVudCI6IHsNCisJCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkJImNvbnRlbnQiOiAiPGdldC1jb25maWc+PHNvdXJjZT48cnVubmluZy8+PC9zb3VyY2U+PC9nZXQtY29uZmlnPiINCisJCQkJCQl9DQorCQkJCQl9LA0KKwkJCQkJIm1hcHBpbmciOiB7DQorCQkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJCSJtYXBwaW5nIjogW10NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJyZXNvdXJjZS1hc3NpZ25tZW50LWFjdGlvbiI6IHsNCisJCQkJInR5cGUiOiAiZGctcmVzb3VyY2UtYXNzaWdubWVudCIsDQorCQkJCSJpbnRlcmZhY2VzIjogew0KKwkJCQkJIkNPTkZJRyI6IHsNCisJCQkJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJCQkJIlJlc291cmNlQXNzaWdubWVudCI6IHsNCisJCQkJCQkJCQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkiY2FwYWJpbGl0aWVzIjogew0KKwkJCQkJImRnLW5vZGUiOiB7DQorCQkJCQkJDQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJyZXF1aXJlbWVudHMiOiB7DQorCQkJCQkiY29tcG9uZW50LWRlcGVuZGVuY3kiOiB7DQorCQkJCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCQkJCSJub2RlIjogImdldC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisJCQkJCQkicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiYWN0aXZhdGUtbmV0Y29uZi1hY3Rpb24iOiB7DQorCQkJCSJ0eXBlIjogImRnLWFjdGl2YXRlLW5ldGNvbmYiLA0KKwkJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJCSJDT05GSUciOiB7DQorCQkJCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCQkJCSJBY3RpdmF0ZU5ldGNvbmYiOiB7DQorCQkJCQkJCQkNCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJCSJkZy1ub2RlIjogew0KKwkJCQkJCQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkicmVxdWlyZW1lbnRzIjogew0KKwkJCQkJImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKwkJCQkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkJCQkibm9kZSI6ICJ0cmFuc2FjdGlvbi1uZXRjb25mLWJhc2Vjb25maWciLA0KKwkJCQkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJyZXNvdXJjZS1hc3NpZ25tZW50Ijogew0KKwkJCQkidHlwZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorCQkJCSJpbnRlcmZhY2VzIjogew0KKwkJCQkJIm9yZy1vcGVuZWNvbXAtc2RuYy1jb25maWctYXNzaWdubWVudC1zZXJ2aWNlLUNvbmZpZ0Fzc2lnbm1lbnROb2RlIjogew0KKwkJCQkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkJCQkicHJvY2VzcyI6IHsNCisJCQkJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJCQkJInJlc291cmNlLXR5cGUiOiAidm5mLXR5cGUiLA0KKwkJCQkJCQkJCSJ0ZW1wbGF0ZS1uYW1lcyI6IFsNCisJCQkJCQkJCQkJImJhc2UtY29uZmlnLXRlbXBsYXRlIiwNCisJCQkJCQkJCQkJImxpY2VuY2UtdGVtcGxhdGUiDQorCQkJCQkJCQkJXSwNCisJCQkJCQkJCQkicmVxdWVzdC1pZCI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJyZXF1ZXN0LWlkXCIgfSIsDQorCQkJCQkJCQkJInJlc291cmNlLWlkIjogInsgXCJnZXRfaW5wdXRcIiA6IFwidm5mLWlkXCIgfSINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCQkicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiAiIiwNCisJCQkJCQkJCQkic3RhdHVzIjogIiINCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJCSJjb21wb25lbnQtbm9kZSI6IHsNCisJCQkJCQkNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJImVkaXQtbmV0Y29uZi1jb25maWciOiB7DQorCQkJCSJ0eXBlIjogImNvbXBvbmVudC1uZXRjb25mLWVkaXQiLA0KKwkJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJCSJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtU2ltcGxlTmV0Y29uZkVkaXRDb25maWdOb2RlIjogew0KKwkJCQkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkJCQkicHJvY2VzcyI6IHsNCisJCQkJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJCQkJInJwYy1tZXNzYWdlIjogZmFsc2UsDQorCQkJCQkJCQkJIndhaXQiOiAwLA0KKwkJCQkJCQkJCSJ1bmxvY2siOiBmYWxzZSwNCisJCQkJCQkJCQkiY29uZmlnLXRhcmdldCI6ICJSVU5OSU5HIiwNCisJCQkJCQkJCQkiY29tbWl0IjogdHJ1ZSwNCisJCQkJCQkJCQkiZWRpdC1kZWZhdWx0LW9wZXJhdGlvbiI6ICJyZXBhbGNlIiwNCisJCQkJCQkJCQkibG9jayI6IGZhbHNlLA0KKwkJCQkJCQkJCSJwb3N0LXJlc3RhcnQtd2FpdCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJwcmUtcmVzdGFydC13YWl0IjogZmFsc2UNCisJCQkJCQkJCX0sDQorCQkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCQkicnBjLXJlc3BvbnNlLW1lc3NhZ2UiOiAiIiwNCisJCQkJCQkJCQkic3RhdHVzIjogIiINCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJCSJjb21wb25lbnQtbm9kZSI6IHsNCisJCQkJCQkNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJInRyYW5zYWN0aW9uLW5ldGNvbmYtYmFzZWNvbmZpZyI6IHsNCisJCQkJInR5cGUiOiAiY29tcG9uZW50LXRyYW5zYWN0aW9uLW5ldGNvbmYiLA0KKwkJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJCSJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZlRyYW5zYWN0aW9uTm9kZSI6IHsNCisJCQkJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJCQkJInByb2Nlc3MiOiB7DQorCQkJCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCQkJCSJyb2xsYmFjayI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0cmFuc2FjdGlvbi10ZW1wbGF0ZXMiOiBbDQorCQkJCQkJCQkJCSJydW5uaW5nY29uZmlnLXRlbXBsYXRlIg0KKwkJCQkJCQkJCV0sDQorCQkJCQkJCQkJImFzc2lnbm1lbnQtYWN0aW9uLW5hbWUiOiAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iLA0KKwkJCQkJCQkJCSJ0cmFuc2FjdGlvbi1jb21wb25lbnRzIjogWw0KKwkJCQkJCQkJCQkiZ2V0LW5ldGNvbmYtY29uZmlnIg0KKwkJCQkJCQkJCV0sDQorCQkJCQkJCQkJInJlc291cmNlLXR5cGUiOiAidm5mLXR5cGUiLA0KKwkJCQkJCQkJCSJpbml0aWFsaXNlLXNmdHAiOiBmYWxzZSwNCisJCQkJCQkJCQkicmVxdWVzdC1pZCI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcInJlcXVlc3QtaWRcIiB9IiwNCisJCQkJCQkJCQkiaW5pdGlhbGlzZS1zc2giOiBmYWxzZSwNCisJCQkJCQkJCQkicmVzb3VyY2UtaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJ2bmYtaWRcIiB9IiwNCisJCQkJCQkJCQkiYWN0aW9uLW5hbWUiOiAieyBcImdldF9pbnB1dFwiIDogXCJhY3Rpb24tbmFtZVwiIH0iDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIm91dHB1dHMiOiB7DQorCQkJCQkJCQkJInJwYy1yZXNwb25zZS1tZXNzYWdlIjogIiIsDQorCQkJCQkJCQkJInN0YXR1cyI6ICIiDQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCQkiY29tcG9uZW50LW5vZGUiOiB7DQorCQkJCQkJDQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJyZXF1aXJlbWVudHMiOiB7DQorCQkJCQkibmV0Y29uZi1jb25uZWN0aW9uIjogew0KKwkJCQkJCSJjYXBhYmlsaXR5IjogIm5ldGNvbmYiLA0KKwkJCQkJCSJub2RlIjogInZkYmUtbmV0Y29uZi1kZXZpY2UiLA0KKwkJCQkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5Db25uZWN0c1RvIg0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZ2V0LW5ldGNvbmYtY29uZmlnIjogew0KKwkJCQkidHlwZSI6ICJjb21wb25lbnQtbmV0Y29uZi1nZXQiLA0KKwkJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJCSJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtU2ltcGxlTmV0Y29uZkdldENvbmZpZ05vZGUiOiB7DQorCQkJCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCQkJCSJwcm9jZXNzIjogew0KKwkJCQkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkJCQkicnBjLW1lc3NhZ2UiOiB0cnVlLA0KKwkJCQkJCQkJCSJ3YWl0IjogMSwNCisJCQkJCQkJCQkibWVzc2FnZS10aW1lLW91dCI6IDEwDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIm91dHB1dHMiOiB7DQorCQkJCQkJCQkJInJwYy1yZXNwb25zZS1tZXNzYWdlIjogIiIsDQorCQkJCQkJCQkJInN0YXR1cyI6ICIiDQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0sDQorCQkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCQkiY29tcG9uZW50LW5vZGUiOiB7DQorCQkJCQkJDQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0sDQorCSJub2RlX3R5cGVzIjogew0KKwkJInZuZi1uZXRjb25mLWRldmljZSI6IHsNCisJCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBWTkYgRGV2aWNlIHdpdGggTmV0Y29uZiBhbmQgU1NIIENhcGFiaWxpdHkiLA0KKwkJCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJCQkiY2FwYWJpbGl0aWVzIjogew0KKwkJCQkibmV0Y29uZiI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuTmV0Y29uZiIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkicGFzc3dvcmQiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkidXNlci1pZCI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJImhvc3QtaXAtYWRkcmVzcyI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInBvcnQtbnVtYmVyIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCQkJImRlZmF1bHQiOiA4MzANCisJCQkJCQl9LA0KKwkJCQkJCSJtZXNzYWdlLXRpbWUtb3V0Ijogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCSJkZWZhdWx0IjogMzAwMA0KKwkJCQkJCX0sDQorCQkJCQkJImNvbm5lY3Rpb24tdGltZS1vdXQiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCQkJImRlZmF1bHQiOiAzMA0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJInNzaCI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuU3NoIiwNCisJCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJCSJwYXNzd29yZCI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJ1c2VyLWlkIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkiaG9zdC1pcC1hZGRyZXNzIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfSwNCisJCQkJCQkicG9ydC1udW1iZXIiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJCQkiZGVmYXVsdCI6IDIyDQorCQkJCQkJfSwNCisJCQkJCQkibWVzc2FnZS10aW1lLW91dCI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJCQkiZGVmYXVsdCI6IDE4MA0KKwkJCQkJCX0sDQorCQkJCQkJImNvbm5lY3Rpb24tdGltZS1vdXQiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJpbnRlZ2VyIiwNCisJCQkJCQkJImRlZmF1bHQiOiAzMA0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfSwNCisJCQkJInNmdHAiOiB7DQorCQkJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LlNmdHAiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJInBhc3N3b3JkIjogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0sDQorCQkJCQkJInVzZXItaWQiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJob3N0LWlwLWFkZHJlc3MiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9LA0KKwkJCQkJCSJwb3J0LW51bWJlciI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCSJkZWZhdWx0IjogMjINCisJCQkJCQl9LA0KKwkJCQkJCSJtZXNzYWdlLXRpbWUtb3V0Ijogew0KKwkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCSJkZWZhdWx0IjogMTgwDQorCQkJCQkJfSwNCisJCQkJCQkiY29ubmVjdGlvbi10aW1lLW91dCI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJCQkiZGVmYXVsdCI6IDMwDQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLlZuZiINCisJCX0sDQorCQkiZGctcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisJCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBSZXNvdXJjZSBBc3NpZ25tZW50IERpcmVjdGVkIEdyYXBoIiwNCisJCQkidmVyc2lvbiI6ICIxLjAuMCIsDQorCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCSJtb2RlIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAic3luYyINCisJCQkJfSwNCisJCQkJInZlcnNpb24iOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkiZGVmYXVsdCI6ICJMQVRFU1QiDQorCQkJCX0sDQorCQkJCSJpcy1zdGFydC1mbG93Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCSJkZWZhdWx0IjogImZhbHNlIg0KKwkJCQl9DQorCQkJfSwNCisJCQkiY2FwYWJpbGl0aWVzIjogew0KKwkJCQkiZGctbm9kZSI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKwkJCQl9LA0KKwkJCQkiY29udGVudCI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkidHlwZSI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyIsDQorCQkJCQkJCSJkZWZhdWx0IjogImpzb24iDQorCQkJCQkJfSwNCisJCQkJCQkiY29udGVudCI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJInJlcXVpcmVtZW50cyI6IHsNCisJCQkJImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKwkJCQkJImNhcGFiaWxpdHkiOiAiY29tcG9uZW50LW5vZGUiLA0KKwkJCQkJIm5vZGUiOiAiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiLA0KKwkJCQkJInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisJCQkJfQ0KKwkJCX0sDQorCQkJImludGVyZmFjZXMiOiB7DQorCQkJCSJDT05GSUciOiB7DQorCQkJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJCQkiUmVzb3VyY2VBc3NpZ25tZW50Ijogew0KKwkJCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCQkJInBhcmFtcyI6IHsNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJCQkidHlwZSI6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisJCQkJCQkJCQl9DQorCQkJCQkJCQl9DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJkZXJpdmVkX2Zyb20iOiAidG9zY2Eubm9kZXMuREciDQorCQl9LA0KKwkJImRnLWFjdGl2YXRlLW5ldGNvbmYiOiB7DQorCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgRG93bmxvYWQgTmV0Y29uZiBEaXJlY3RlZCBHcmFwaCIsDQorCQkJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkibW9kZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIiwNCisJCQkJCSJkZWZhdWx0IjogInN5bmMiDQorCQkJCX0sDQorCQkJCSJ2ZXJzaW9uIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJImRlZmF1bHQiOiAiTEFURVNUIg0KKwkJCQl9LA0KKwkJCQkiaXMtc3RhcnQtZmxvdyI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAiYm9vbGVhbiIsDQorCQkJCQkiZGVmYXVsdCI6ICJmYWxzZSINCisJCQkJfQ0KKwkJCX0sDQorCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJImRnLW5vZGUiOiB7DQorCQkJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCQkJfSwNCisJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKwkJCQkJInByb3BlcnRpZXMiOiB7DQorCQkJCQkJInR5cGUiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciLA0KKwkJCQkJCQkiZGVmYXVsdCI6ICJqc29uIg0KKwkJCQkJCX0sDQorCQkJCQkJImNvbnRlbnQiOiB7DQorCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJyZXF1aXJlbWVudHMiOiB7DQorCQkJCSJjb21wb25lbnQtZGVwZW5kZW5jeSI6IHsNCisJCQkJCSJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisJCQkJCSJub2RlIjogImNvbXBvbmVudC10cmFuc2FjdGlvbi1uZXRjb25mIiwNCisJCQkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorCQkJCX0NCisJCQl9LA0KKwkJCSJpbnRlcmZhY2VzIjogew0KKwkJCQkiQ09ORklHIjogew0KKwkJCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCQkJIkFjdGl2YXRlTmV0Y29uZiI6IHsNCisJCQkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkJCSJwYXJhbXMiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAibGlzdCIsDQorCQkJCQkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkRHIg0KKwkJfSwNCisJCSJhcnRpZmFjdC1jb25maWctdGVtcGxhdGUiOiB7DQorCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgQ29uZmlndXJhdGlvbiBWZWxvY2l0eSBUZW1wbGF0ZSIsDQorCQkJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkiYWN0aW9uLW5hbWVzIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCSJjb250ZW50Ijogew0KKwkJCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0eS5Db250ZW50IiwNCisJCQkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkJCSJjb250ZW50Ijogew0KKwkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9LA0KKwkJCQkibWFwcGluZyI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdHkuTWFwcGluZyIsDQorCQkJCQkicHJvcGVydGllcyI6IHsNCisJCQkJCQkibWFwcGluZyI6IHsNCisJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCINCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5BcnRpZmFjdCINCisJCX0sDQorCQkiY29tcG9uZW50LXJlc291cmNlLWFzc2lnbm1lbnQiOiB7DQorCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBDb21wb25lbnQgQVBJIiwNCisJCQkidmVyc2lvbiI6ICIxLjAuMCIsDQorCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJImNvbXBvbmVudC1ub2RlIjogew0KKwkJCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQkJCX0NCisJCQl9LA0KKwkJCSJpbnRlcmZhY2VzIjogew0KKwkJCQkib3JnLW9wZW5lY29tcC1zZG5jLWNvbmZpZy1hc3NpZ25tZW50LXNlcnZpY2UtQ29uZmlnQXNzaWdubWVudE5vZGUiOiB7DQorCQkJCQkib3BlcmF0aW9ucyI6IHsNCisJCQkJCQkicHJvY2VzcyI6IHsNCisJCQkJCQkJImlucHV0cyI6IHsNCisJCQkJCQkJCSJoYW5kbGVyLW5hbWUiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIEFydGlmYWN0IE5vZGUgVGVtcGxhdGUsIHRvIGdldCB0aGUgdGVtcGxhdGUgQ29udGVudC4gSWYgdGVtcGxhdGUtY29udGVudCBpcyBwcmVzZW50LCB0aGVuIGNvbnRlbnQgd29udCBiZSByZXRlcml2ZWQgZnJvbSB0aGUgQXJ0aWZhY3QgTm9kZSBUZW1wbGF0ZS4iLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJyZXNvdXJjZS10eXBlIjogew0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkidGVtcGxhdGUtbmFtZXMiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIEFydGlmYWN0IE5vZGUgVGVtcGxhdGVzLCB0byBnZXQgdGhlIHRlbXBsYXRlIENvbnRlbnQuIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCQl9DQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInJlcXVlc3QtaWQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkicmVzb3VyY2UtaWQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIklkIHVzZWQgdG8gcHVsbCB0aGUgZGF0YSBjb250ZW50IGZyb20gdGhlIGRhdGEgYmFzZS4gRWl0aGVyIHRlbXBsYXRlLWRhdGEgb3IgcmVzb3VyY2UtaWQgc2hvdWxkIGJlIHByZXNlbnQiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJhY3Rpb24tbmFtZSI6IHsNCisJCQkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQWN0aW9uIE5hbWUgdG8gZ2V0IGZyb20gRGF0YWJhc2UsIEVpdGhlciAobWVzc2FnZSAmIG1hc2staW5mbyApIG9yICggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0NCisJCQkJCQkJfSwNCisJCQkJCQkJIm91dHB1dHMiOiB7DQorCQkJCQkJCQkicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0NCisJCQkJCQkJfQ0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0sDQorCQkJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorCQl9LA0KKwkJImNvbXBvbmVudC1uZXRjb25mLWdldCI6IHsNCisJCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBOZXRjb25mIEdldCBSdW5uaW5nIENvbmZpZ3VyYXRpb24gQ29tcG9uZW50IEFQSSIsDQorCQkJInZlcnNpb24iOiAiMS4wLjAiLA0KKwkJCSJjYXBhYmlsaXRpZXMiOiB7DQorCQkJCSJjb21wb25lbnQtbm9kZSI6IHsNCisJCQkJCSJ0eXBlIjogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKwkJCQl9DQorCQkJfSwNCisJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJIm9yZy1vcGVuZWNvbXAtc2RuYy1uZXRjb25mLWFkYXB0b3Itc2VydmljZS1TaW1wbGVOZXRjb25mR2V0Q29uZmlnTm9kZSI6IHsNCisJCQkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkJCSJwcm9jZXNzIjogew0KKwkJCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCQkJInJwYy1tZXNzYWdlIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJJdCBzaG91bGQgYmUgdHJ1ZSwgSWYgdGhlIG1lc3NhZ2UgaXMgTmVjb25mIFJQQyBtZXNzYWdlLCBJdCBzaG91bGQgYmUgZmFsc2UgSWYgaXQgaXMgcGxhaW4gQ29uZmlnIG1lc3NhZ2UuIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCQkJCQkiZGVmYXVsdCI6IGZhbHNlDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIndhaXQiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCQkJImRlZmF1bHQiOiAwDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIm1lc3NhZ2UtdGltZS1vdXQiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCQkJImRlZmF1bHQiOiAzMA0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9LA0KKwkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCSJjb25maWctbWVzc2FnZSI6IHsNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJCQkiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCisJCX0sDQorCQkiY29tcG9uZW50LW5ldGNvbmYtZWRpdCI6IHsNCisJCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBOZXRjb25mIEVkaXQgQ29uZmlndXJhdGlvbiBDb21wb25lbnQgQVBJIiwNCisJCQkidmVyc2lvbiI6ICIxLjAuMCIsDQorCQkJImNhcGFiaWxpdGllcyI6IHsNCisJCQkJImNvbXBvbmVudC1ub2RlIjogew0KKwkJCQkJInR5cGUiOiAidG9zY2EuY2FwYWJpbGl0aWVzLk5vZGUiDQorCQkJCX0NCisJCQl9LA0KKwkJCSJpbnRlcmZhY2VzIjogew0KKwkJCQkib3JnLW9wZW5lY29tcC1zZG5jLW5ldGNvbmYtYWRhcHRvci1zZXJ2aWNlLVNpbXBsZU5ldGNvbmZFZGl0Q29uZmlnTm9kZSI6IHsNCisJCQkJCSJvcGVyYXRpb25zIjogew0KKwkJCQkJCSJwcm9jZXNzIjogew0KKwkJCQkJCQkiaW5wdXRzIjogew0KKwkJCQkJCQkJInJwYy1tZXNzYWdlIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJJZiB0aGUgbWVzc2FnZSBpcyBOZWNvbmYgUlBDIG1lc3NhZ2UsSXQgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2UuIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCQkJCQkiZGVmYXVsdCI6IGZhbHNlDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIndhaXQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIkRlbGF5IHRpbWUgaW4gc2VjIGJlZm9yZSBwZXJmb3JtaW5nIGVkaXQtY29uZmlnIGFjdGlvbi4iLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJCQkJCSJkZWZhdWx0IjogMA0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJ1bmxvY2siOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIklmIHVuTG9jayBjb21tYW5kIGhhcyB0byBzZW5kIGJlZm9yZSBFZGl0IENvbmZpZ3VyYXRpb24uIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCQkJCQkiZGVmYXVsdCI6IGZhbHNlDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJImNvbmZpZy10YXJnZXQiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJjb21taXQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIklzc3VlIGNvbW1pdCBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYWZ0ZXIgcGVyZm9ybWluZyBlZGl0LWNvbmZpZyBhY3Rpb24uIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCQkJCQkiZGVmYXVsdCI6IGZhbHNlDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJImVkaXQtZGVmYXVsdC1vcGVyYXRpb24iOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJsb2NrIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJJc3N1ZSBsb2NrIGNvbW1hbmQgdG8gdGhlIGRldmljZSBiZWZvcmUgcGVyZm9ybWluZyBlZGl0LWNvbmZpZyBhY3Rpb24uIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJib29sZWFuIiwNCisJCQkJCQkJCQkiZGVmYXVsdCI6IGZhbHNlDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInBvc3QtcmVzdGFydC13YWl0Ijogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJJZiBSZXN0YXJ0IGNvbW1hbmQgc2hvdWxkIGJlIGlzc3VlZCBiZWZvcmUgdGhlIEVkaXQgT3BlcmF0aW9uLCBQcm92aWRlIHRoZSB0aW1lIHRvIHdhaXQgYWZ0ZXIgcmVzdGFydC4gMCBtZWFubm8gcmVzdGFydCByZXF1aXJlZCBvciB3YWl0IHRpbWUgaW4gc2VjIGV4IDogMzAwMCBmb3IgNSAiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogImludGVnZXIiLA0KKwkJCQkJCQkJCSJkZWZhdWx0IjogMA0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJwcmUtcmVzdGFydC13YWl0Ijogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJJZiBSZXN0YXJ0IGNvbW1hbmQgc2hvdWxkIGJlIGlzc3VlZCBhZnRlciB0aGUgRWRpdCBPcGVyYXRpb24sIFByb3ZpZGUgdGhlIHRpbWUgdG8gd2FpdCBhZnRlciByZXN0YXJ0LiAwIG1lYW5ubyByZXN0YXJ0IHJlcXVpcmVkIG9yIHdhaXQgdGltZSBpbiBzZWMgZXggOiAzMDAwIGZvciA1ICIsDQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCQkJImRlZmF1bHQiOiAwDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJIm1lc3NhZ2UtdGltZS1vdXQiOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiaW50ZWdlciIsDQorCQkJCQkJCQkJImRlZmF1bHQiOiAzMA0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9LA0KKwkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCSJycGMtcmVzcG9uc2UtbWVzc2FnZSI6IHsNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJCQkiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCisJCX0sDQorCQkiY29tcG9uZW50LXRyYW5zYWN0aW9uLW5ldGNvbmYiOiB7DQorCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgTmV0Y29uZiBUcmFuc2FjdGlvbiBDb25maWd1cmF0aW9uIENvbXBvbmVudCBBUEkiLA0KKwkJCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJCQkiY2FwYWJpbGl0aWVzIjogew0KKwkJCQkiY29tcG9uZW50LW5vZGUiOiB7DQorCQkJCQkidHlwZSI6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisJCQkJfQ0KKwkJCX0sDQorCQkJInJlcXVpcmVtZW50cyI6IHsNCisJCQkJIm5ldGNvbmYtY29ubmVjdGlvbiI6IHsNCisJCQkJCSJjYXBhYmlsaXR5IjogIm5ldGNvbmYiLA0KKwkJCQkJIm5vZGUiOiAidm5mLW5ldGNvbmYtZGV2aWNlIiwNCisJCQkJCSJyZWxhdGlvbnNoaXAiOiAidG9zY2EucmVsYXRpb25zaGlwcy5Db25uZWN0c1RvIg0KKwkJCQl9DQorCQkJfSwNCisJCQkiaW50ZXJmYWNlcyI6IHsNCisJCQkJIm9yZy1vcGVuZWNvbXAtc2RuYy1uZXRjb25mLWFkYXB0b3Itc2VydmljZS1OZXRjb25mVHJhbnNhY3Rpb25Ob2RlIjogew0KKwkJCQkJIm9wZXJhdGlvbnMiOiB7DQorCQkJCQkJInByb2Nlc3MiOiB7DQorCQkJCQkJCSJpbnB1dHMiOiB7DQorCQkJCQkJCQkicm9sbGJhY2siOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkidHJhbnNhY3Rpb24tdGVtcGxhdGVzIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJUZW1wbGF0ZXMgdXNlZCBieSB0aGUgVHJhbnNhY3Rpb24gQ29tcG9uZW50cyBkdXJpbmcgcHJvY2Vzc2luZyIsDQorCQkJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJhc3NpZ25tZW50LWFjdGlvbi1uYW1lIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJBc3NpZ25tZW50IEFjdGlvbiBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkidHJhbnNhY3Rpb24tY29tcG9uZW50cyI6IHsNCisJCQkJCQkJCQkiZGVzY3JpcHRpb24iOiAiQ29tcG9uZW50cyB1c2VkIHRvIHVzZWQgZm9yIHRoZSBhdG9taWMgdHJhbnNhY3Rpb24sIERlZmF1bHQgSGFuZGxlcnMgYXJlIG9yZy5vcGVuZWNvbXAuc2RuYy5uZXRjb25mLmFkYXB0b3Iuc2VydmljZS5TaW1wbGVOZXRjb25mRWRpdENvbmZpZ05vZGUgYW5kIG9yZy5vcGVuZWNvbXAuc2RuYy5uZXRjb25mLmFkYXB0b3Iuc2VydmljZS5TaW1wbGVOZXRjb25mR2V0Q29uZmlnTm9kZSIsDQorCQkJCQkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCQkJCQkidHlwZSI6ICJsaXN0IiwNCisJCQkJCQkJCQkiZW50cnlfc2NoZW1hIjogew0KKwkJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJfSwNCisJCQkJCQkJCSJyZXNvdXJjZS10eXBlIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBUeXBlIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciggcmVzb3VyY2UtaWQgJiByZXNvdXJjZS10eXBlICYgYWN0aW9uLW5hbWUgJiB0ZW1wbGF0ZS1uYW1lICkgc2hvdWxkIGJlIHByZXNlbnQuIE1lc3NhZ2Ugd2lsbCBiZSBnaXZlbiBoaWdlc3QgcHJpb3JpdHkiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkiaW5pdGlhbGlzZS1zZnRwIjogew0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJCQkJCSJ0eXBlIjogImJvb2xlYW4iDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInJlcXVlc3QtaWQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWQgdXNlZCB0byBzdG9yZSB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24sIGluIHRoZSBkYXRhYmFzZSBhbG9uZyB3aXRoIHRoZSB0ZW1wbGF0ZS1uYW1lIiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkiaW5pdGlhbGlzZS1zc2giOiB7DQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAiYm9vbGVhbiINCisJCQkJCQkJCX0sDQorCQkJCQkJCQkicmVzb3VyY2UtaWQiOiB7DQorCQkJCQkJCQkJImRlc2NyaXB0aW9uIjogIlJlc291cmNlIElkIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisJCQkJCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJImFjdGlvbi1uYW1lIjogew0KKwkJCQkJCQkJCSJkZXNjcmlwdGlvbiI6ICJBY3Rpb24gTmFtZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IgKCByZXNvdXJjZS1pZCAmIHJlc291cmNlLXR5cGUgJiBhY3Rpb24tbmFtZSAmIHRlbXBsYXRlLW5hbWUgKSBzaG91bGQgYmUgcHJlc2VudC4gTWVzc2FnZSB3aWxsIGJlIGdpdmVuIGhpZ2VzdCBwcmlvcml0eSIsDQorCQkJCQkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9LA0KKwkJCQkJCQkib3V0cHV0cyI6IHsNCisJCQkJCQkJCSJycGMtcmVzcG9uc2UtbWVzc2FnZSI6IHsNCisJCQkJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQkJCQl9LA0KKwkJCQkJCQkJInN0YXR1cyI6IHsNCisJCQkJCQkJCQkiZGVzY3JpcHRpb24iOiAiU3RhdHVzIG9mIHRoZSBDb21wb25lbnQgRXhlY3V0aW9uICggc3VjY2VzcyBvciBmYWlsdXJlICkiLA0KKwkJCQkJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQkJCQkJfQ0KKwkJCQkJCQl9DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfSwNCisJCQkiZGVyaXZlZF9mcm9tIjogInRvc2NhLm5vZGVzLkNvbXBvbmVudCINCisJCX0NCisJfSwNCisJImRhdGFfdHlwZXMiOiB7DQorCQkiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCI6IHsNCisJCQkidmVyc2lvbiI6ICIxLjAuMCIsDQorCQkJImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgUmVzb3VyY2UgQXNzaWdubWVudCBEYXRhIFR5cGUiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkicHJvcGVydHkiOiB7DQorCQkJCQkicmVxdWlyZWQiOiB0cnVlLA0KKwkJCQkJInR5cGUiOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorCQkJCX0sDQorCQkJCSJpbnB1dC1wYXJhbSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJib29sZWFuIg0KKwkJCQl9LA0KKwkJCQkiZGljdGlvbmFyeS1uYW1lIjogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0sDQorCQkJCSJkaWN0aW9uYXJ5LXNvdXJjZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9LA0KKwkJCQkiZGVwZW5kZW5jaWVzIjogew0KKwkJCQkJInJlcXVpcmVkIjogdHJ1ZSwNCisJCQkJCSJ0eXBlIjogImxpc3QiLA0KKwkJCQkJImVudHJ5X3NjaGVtYSI6IHsNCisJCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCQl9DQorCQkJCX0NCisJCQl9LA0KKwkJCSJkZXJpdmVkX2Zyb20iOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorCQl9LA0KKwkJImRhdGF0eXBlLXByb3BlcnR5Ijogew0KKwkJCSJ2ZXJzaW9uIjogIjEuMC4wIiwNCisJCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBpcyBFbnRyeSBwb2ludCBJbnB1dCBEYXRhIFR5cGUsIHdoaWNoIGlzIGR5bmFtaWMgZGF0YXR5cGUsIFRoZSBwYXJhbWV0ZXIgbmFtZXMgd2lsbCBiZSBwb3B1bGF0ZWQgZHVyaW5nIHRoZSBEZXNpZ24gdGltZSBmb3IgZWFjaCBpbnB1dHMiLA0KKwkJCSJwcm9wZXJ0aWVzIjogew0KKwkJCQkidHlwZSI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IHRydWUsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0sDQorCQkJCSJkZXNjcmlwdGlvbiI6IHsNCisJCQkJCSJyZXF1aXJlZCI6IGZhbHNlLA0KKwkJCQkJInR5cGUiOiAic3RyaW5nIg0KKwkJCQl9LA0KKwkJCQkicmVxdWlyZWQiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogImJvb2xlYW4iDQorCQkJCX0sDQorCQkJCSJkZWZhdWx0Ijogew0KKwkJCQkJInJlcXVpcmVkIjogZmFsc2UsDQorCQkJCQkidHlwZSI6ICJzdHJpbmciDQorCQkJCX0sDQorCQkJCSJlbnRyeV9zY2hlbWEiOiB7DQorCQkJCQkicmVxdWlyZWQiOiBmYWxzZSwNCisJCQkJCSJ0eXBlIjogInN0cmluZyINCisJCQkJfQ0KKwkJCX0sDQorCQkJImRlcml2ZWRfZnJvbSI6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisJCX0NCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vcmVzb3VyY2VzL3NxbC9kYXRhLnNxbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL2RhdGEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vcmVzb3VyY2VzL3NxbC9kYXRhLnNxbApkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy9tYWluL3Jlc291cmNlcy9zcWwvc2NoZW1hLWxvY2FsLnNxbCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL3NjaGVtYS1sb2NhbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhOWMzNgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL3NjaGVtYS1sb2NhbC5zcWwKQEAgLTAsMCArMSw4NyBAQAorLS0gZHJvcCB0YWJsZSBzZG5jdGwuTU9ERUxfVFlQRTsNCistLSBkcm9wIHRhYmxlIHNkbmN0bC5SRVNPVVJDRV9ESUNUSU9OQVJZOw0KKy0tIGRyb3AgdGFibGUgc2RuY3RsLkNPTkZJR19NT0RFTF9DT05URU5UOw0KKy0tIGRyb3AgdGFibGUgc2RuY3RsLkNPTkZJR19NT0RFTDsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIENPTkZJR19NT0RFTA0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgc2RuY3RsLkNPTkZJR19NT0RFTCAoDQorICBjb25maWdfbW9kZWxfaWQgCQlJTlQoMTEpIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULA0KKyAgc2VydmljZV91dWlkIAkJCVZBUkNIQVIoNTApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgZGlzdHJpYnV0aW9uX2lkIAkJVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzZXJ2aWNlX25hbWUgCQkJVkFSQ0hBUigyNTUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgc2VydmljZV9kZXNjcmlwdGlvbiAJCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX3V1aWQgCQlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICByZXNvdXJjZV9pbnN0YW5jZV9uYW1lIAlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICByZXNvdXJjZV9uYW1lIAkJdmFyY2hhcigyNTUpIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcmVzb3VyY2VfdmVyc2lvbiAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcmVzb3VyY2VfdHlwZSAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgYXJ0aWZhY3RfdXVpZCAJCXZhcmNoYXIoNTApIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgYXJ0aWZhY3RfdHlwZSAJCXZhcmNoYXIoNTApIG5vdCBudWxsLA0KKyAgYXJ0aWZhY3RfdmVyc2lvbiAJCXZhcmNoYXIoMjUpIG5vdCBudWxsLA0KKyAgYXJ0aWZhY3RfZGVzY3JpcHRpb24gCQlsb25ndGV4dCBudWxsIGRlZmF1bHQgbnVsbCwNCisgIGludGVybmFsX3ZlcnNpb24gCQlpbnQoMTEpIG51bGwgZGVmYXVsdCBudWxsLA0KKyAgY3JlYXRpb25fZGF0ZSAJCWRhdGV0aW1lIG5vdCBudWxsIGRlZmF1bHQgY3VycmVudF90aW1lc3RhbXAsDQorICBhcnRpZmFjdF9uYW1lIAkJdmFyY2hhcigxMDApIG5vdCBudWxsLA0KKyAgcHVibGlzaGVkIAkJCXZhcmNoYXIoMSkgbm90IG51bGwsDQorICB1cGRhdGVkX2J5IAkJCXZhcmNoYXIoMTAwKSBub3QgbnVsbCwNCisgIHRhZ3MgCQkJCWxvbmd0ZXh0IG51bGwgZGVmYXVsdCBudWxsLA0KKyAgcHJpbWFyeSBrZXkgUEtfQ09ORklHX01PREVMIChjb25maWdfbW9kZWxfaWQpLA0KKyAgVU5JUVVFIEtFWSBVS19DT05GSUdfTU9ERUwgKGFydGlmYWN0X25hbWUgLCBhcnRpZmFjdF92ZXJzaW9uKQ0KKykgRU5HSU5FPUlubm9EQjsNCisNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIENPTkZJR19NT0RFTF9DT05URU5UDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBzZG5jdGwuQ09ORklHX01PREVMX0NPTlRFTlQgKA0KKyAgY29uZmlnX21vZGVsX2NvbnRlbnRfaWQgCUlOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsIA0KKyAgY29uZmlnX21vZGVsX2lkIAkJSU5UIE5PVCBOVUxMLA0KKyAgbmFtZSAJCQkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgY29udGVudF90eXBlIAkJCVZBUkNIQVIoNTApIE5PVCBOVUxMLA0KKyAgZGVzY3JpcHRpb24gCQkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICB1cGRhdGVkX2RhdGUgCQkJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIGNvbnRlbnQgCQkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBQUklNQVJZIEtFWSBQS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2NvbnRlbnRfaWQpLA0KKyAgVU5JUVVFIEtFWSBVS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2lkLCBuYW1lLCBjb250ZW50X3R5cGUpLA0KKyAgRk9SRUlHTiBLRVkgRktfQ09ORklHX01PREVMX0NPTlRFTlQgKGNvbmZpZ19tb2RlbF9pZCkgUkVGRVJFTkNFUyBzZG5jdGwuQ09ORklHX01PREVMKGNvbmZpZ19tb2RlbF9pZCkgT04gREVMRVRFIENBU0NBREUNCispIEVOR0lORT1Jbm5vREI7DQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSB0YWJsZSBNT0RFTF9UWVBFDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBzZG5jdGwuTU9ERUxfVFlQRSAoDQorICBtb2RlbF9uYW1lIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGVyaXZlZF9mcm9tIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGVmaW5pdGlvbl90eXBlIAlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZWZpbml0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB2ZXJzaW9uIAkJVkFSQ0hBUigxMCkgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCUxPTkdURVhUIE5PVCBOVUxMLA0KKyAgdGFncyAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwgIA0KKyAgY3JlYXRpb25fZGF0ZSAJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIHVwZGF0ZWRfYnkgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBQUklNQVJZIEtFWSBQS19NT0RFTF9UWVBFIChtb2RlbF9uYW1lKSwNCisgIElOREVYIElYX01PREVMX1RZUEUgKG1vZGVsX25hbWUpDQorKSBFTkdJTkU9SW5ub0RCOw0KKw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgUkVTT1VSQ0VfRElDVElPTkFSWQ0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgc2RuY3RsLlJFU09VUkNFX0RJQ1RJT05BUlkgKA0KKyAgbmFtZSAJCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICByZXNvdXJjZV9wYXRoIAlWQVJDSEFSKDUwMCkgTk9UIE5VTEwsICANCisgIHJlc291cmNlX3R5cGUgCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGRhdGFfdHlwZSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGVudHJ5X3NjaGVtYSAJCVZBUkNIQVIoMTAwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHZhbGlkX3ZhbHVlcyAJCUxPTkdURVhUIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgc2FtcGxlX3ZhbHVlIAkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBkZWZpbml0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCUxPTkdURVhUIE5PVCBOVUxMLA0KKyAgdGFncyAJCQlMT05HVEVYVCBOT1QgTlVMTCwgIA0KKyAgY3JlYXRpb25fZGF0ZSAJREFURVRJTUUgTk9UIE5VTEwgREVGQVVMVCBDVVJSRU5UX1RJTUVTVEFNUCwNCisgIHVwZGF0ZWRfYnkgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBwcmltYXJ5IGtleSBQS19SRVNPVVJDRV9ESUNUSU9OQVJZIChuYW1lKSwNCisgIElOREVYIElYX1JFU09VUkNFX0RJQ1RJT05BUlkgKG5hbWUpDQorKSBFTkdJTkU9SW5ub0RCOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvbWFpbi9yZXNvdXJjZXMvc3FsL3NjaGVtYS5zcWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vcmVzb3VyY2VzL3NxbC9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ODRjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL21haW4vcmVzb3VyY2VzL3NxbC9zY2hlbWEuc3FsCkBAIC0wLDAgKzEsODIgQEAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgQ09ORklHX01PREVMDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBjb25maWd1cmF0b3IuQ09ORklHX01PREVMICgNCisgIGNvbmZpZ19tb2RlbF9pZCAJCUlOVCgxMSkgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsDQorICBzZXJ2aWNlX3V1aWQgCQkJVkFSQ0hBUig1MCkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBkaXN0cmlidXRpb25faWQgCQlWQVJDSEFSKDUwKSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHNlcnZpY2VfbmFtZSAJCQlWQVJDSEFSKDI1NSkgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzZXJ2aWNlX2Rlc2NyaXB0aW9uIAkJVkFSQ0hBUigyNTUpIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgcmVzb3VyY2VfdXVpZCAJCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX2luc3RhbmNlX25hbWUgCVZBUkNIQVIoMjU1KSBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHJlc291cmNlX25hbWUgCQl2YXJjaGFyKDI1NSkgbnVsbCBkZWZhdWx0IG51bGwsDQorICByZXNvdXJjZV92ZXJzaW9uIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICByZXNvdXJjZV90eXBlIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBhcnRpZmFjdF91dWlkIAkJdmFyY2hhcig1MCkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBhcnRpZmFjdF90eXBlIAkJdmFyY2hhcig1MCkgbm90IG51bGwsDQorICBhcnRpZmFjdF92ZXJzaW9uIAkJdmFyY2hhcigyNSkgbm90IG51bGwsDQorICBhcnRpZmFjdF9kZXNjcmlwdGlvbiAJCWxvbmd0ZXh0IG51bGwgZGVmYXVsdCBudWxsLA0KKyAgaW50ZXJuYWxfdmVyc2lvbiAJCWludCgxMSkgbnVsbCBkZWZhdWx0IG51bGwsDQorICBjcmVhdGlvbl9kYXRlIAkJZGF0ZXRpbWUgbm90IG51bGwgZGVmYXVsdCBjdXJyZW50X3RpbWVzdGFtcCwNCisgIGFydGlmYWN0X25hbWUgCQl2YXJjaGFyKDEwMCkgbm90IG51bGwsDQorICBwdWJsaXNoZWQgCQkJdmFyY2hhcigxKSBub3QgbnVsbCwNCisgIHVwZGF0ZWRfYnkgCQkJdmFyY2hhcigxMDApIG5vdCBudWxsLA0KKyAgdGFncyAJCQkJbG9uZ3RleHQgbnVsbCBkZWZhdWx0IG51bGwsDQorICBwcmltYXJ5IGtleSBQS19DT05GSUdfTU9ERUwgKGNvbmZpZ19tb2RlbF9pZCksDQorICBVTklRVUUgS0VZIFVLX0NPTkZJR19NT0RFTCAoYXJ0aWZhY3RfbmFtZSAsIGFydGlmYWN0X3ZlcnNpb24pDQorKSBFTkdJTkU9SW5ub0RCOw0KKw0KKw0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLS0gdGFibGUgQ09ORklHX01PREVMX0NPTlRFTlQNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGNvbmZpZ3VyYXRvci5DT05GSUdfTU9ERUxfQ09OVEVOVCAoDQorICBjb25maWdfbW9kZWxfY29udGVudF9pZCAJSU5UKDExKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwgDQorICBjb25maWdfbW9kZWxfaWQgCQlJTlQgTk9UIE5VTEwsDQorICBuYW1lIAkJCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBjb250ZW50X3R5cGUgCQkJVkFSQ0hBUig1MCkgTk9UIE5VTEwsDQorICBkZXNjcmlwdGlvbiAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIHVwZGF0ZWRfZGF0ZSAJCQlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgY29udGVudCAJCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIFBSSU1BUlkgS0VZIFBLX0NPTkZJR19NT0RFTF9DT05URU5UIChjb25maWdfbW9kZWxfY29udGVudF9pZCksDQorICBVTklRVUUgS0VZIFVLX0NPTkZJR19NT0RFTF9DT05URU5UIChjb25maWdfbW9kZWxfaWQsIG5hbWUsIGNvbnRlbnRfdHlwZSksDQorICBGT1JFSUdOIEtFWSBGS19DT05GSUdfTU9ERUxfQ09OVEVOVCAoY29uZmlnX21vZGVsX2lkKSBSRUZFUkVOQ0VTIGNvbmZpZ3VyYXRvci5DT05GSUdfTU9ERUwoY29uZmlnX21vZGVsX2lkKSBPTiBERUxFVEUgQ0FTQ0FERQ0KKykgRU5HSU5FPUlubm9EQjsNCisNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy0tIHRhYmxlIE1PREVMX1RZUEUNCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGNvbmZpZ3VyYXRvci5NT0RFTF9UWVBFICgNCisgIG1vZGVsX25hbWUgCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZXJpdmVkX2Zyb20gCQlWQVJDSEFSKDEwMCkgTk9UIE5VTEwsDQorICBkZWZpbml0aW9uX3R5cGUgCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIGRlZmluaXRpb24gCQlMT05HVEVYVCBOT1QgTlVMTCwNCisgIHZlcnNpb24gCQlWQVJDSEFSKDEwKSBOT1QgTlVMTCwNCisgIGRlc2NyaXB0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB0YWdzIAkJCUxPTkdURVhUIE5VTEwgREVGQVVMVCBOVUxMLCAgDQorICBjcmVhdGlvbl9kYXRlIAlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgdXBkYXRlZF9ieSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIFBSSU1BUlkgS0VZIFBLX01PREVMX1RZUEUgKG1vZGVsX25hbWUpLA0KKyAgSU5ERVggSVhfTU9ERUxfVFlQRSAobW9kZWxfbmFtZSkNCispIEVOR0lORT1Jbm5vREI7DQorDQorDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCistLSB0YWJsZSBSRVNPVVJDRV9ESUNUSU9OQVJZDQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBjb25maWd1cmF0b3IuUkVTT1VSQ0VfRElDVElPTkFSWSAoDQorICBuYW1lIAkJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIHJlc291cmNlX3BhdGggCVZBUkNIQVIoNTAwKSBOT1QgTlVMTCwgIA0KKyAgcmVzb3VyY2VfdHlwZSAJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZGF0YV90eXBlIAkJVkFSQ0hBUigxMDApIE5PVCBOVUxMLA0KKyAgZW50cnlfc2NoZW1hIAkJVkFSQ0hBUigxMDApIE5VTEwgREVGQVVMVCBOVUxMLA0KKyAgdmFsaWRfdmFsdWVzIAkJTE9OR1RFWFQgTlVMTCBERUZBVUxUIE5VTEwsDQorICBzYW1wbGVfdmFsdWUgCQlMT05HVEVYVCBOVUxMIERFRkFVTFQgTlVMTCwNCisgIGRlZmluaXRpb24gCQlMT05HVEVYVCBOT1QgTlVMTCwNCisgIGRlc2NyaXB0aW9uIAkJTE9OR1RFWFQgTk9UIE5VTEwsDQorICB0YWdzIAkJCUxPTkdURVhUIE5PVCBOVUxMLCAgDQorICBjcmVhdGlvbl9kYXRlIAlEQVRFVElNRSBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLA0KKyAgdXBkYXRlZF9ieSAJCVZBUkNIQVIoMTAwKSBOT1QgTlVMTCwNCisgIHByaW1hcnkga2V5IFBLX1JFU09VUkNFX0RJQ1RJT05BUlkgKG5hbWUpLA0KKyAgSU5ERVggSVhfUkVTT1VSQ0VfRElDVElPTkFSWSAobmFtZSkNCispIEVOR0lORT1Jbm5vREI7DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9EYXRhYmFzZUNvbmZpZy5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9EYXRhYmFzZUNvbmZpZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMzVmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL0RhdGFiYXNlQ29uZmlnLmphdmEKQEAgLTAsMCArMSw2MSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsNCisNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LmF1dG9jb25maWd1cmUuZG9tYWluLkVudGl0eVNjYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkJlYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkNvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5jb25maWcuRW5hYmxlSnBhQXVkaXRpbmc7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEucmVwb3NpdG9yeS5jb25maWcuRW5hYmxlSnBhUmVwb3NpdG9yaWVzOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLm9ybS5qcGEuTG9jYWxDb250YWluZXJFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW47DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsub3JtLmpwYS52ZW5kb3IuSGliZXJuYXRlSnBhVmVuZG9yQWRhcHRlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLkVuYWJsZVRyYW5zYWN0aW9uTWFuYWdlbWVudDsNCisNCitpbXBvcnQgamF2YXguc3FsLkRhdGFTb3VyY2U7DQorDQorLyoqDQorICogRGF0YWJhc2VDb25maWcuamF2YSBQdXJwb3NlOiBQcm92aWRlIENvbmZpZ3VyYXRpb24gR2VuZXJhdG9yIERhdGFiYXNlQ29uZmlnIEluZm9ybWF0aW9uDQorICoNCisgKiBAYXV0aG9yIEJyaW5kYSBTYW50aA0KKyAqIEB2ZXJzaW9uIDEuMA0KKyAqLw0KK0BDb25maWd1cmF0aW9uDQorQEVudGl0eVNjYW4oIm9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4iKQ0KK0BFbmFibGVUcmFuc2FjdGlvbk1hbmFnZW1lbnQNCitARW5hYmxlSnBhUmVwb3NpdG9yaWVzKCJvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucmVwb3NpdG9yeSIpDQorQEVuYWJsZUpwYUF1ZGl0aW5nDQorcHVibGljIGNsYXNzIERhdGFiYXNlQ29uZmlnIHsNCisgICAgLyoqDQorICAgICAqIFRoaXMgaXMgYSBlbnRpdHlNYW5hZ2VyRmFjdG9yeSBtZXRob2QNCisgICAgICogDQorICAgICAqIEBwYXJhbSBkYXRhU291cmNlDQorICAgICAqIEByZXR1cm4gTG9jYWxDb250YWluZXJFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW4NCisgICAgICovDQorDQorICAgIEBCZWFuDQorICAgIHB1YmxpYyBMb2NhbENvbnRhaW5lckVudGl0eU1hbmFnZXJGYWN0b3J5QmVhbiBlbnRpdHlNYW5hZ2VyRmFjdG9yeShEYXRhU291cmNlIGRhdGFTb3VyY2UpIHsNCisgICAgICAgIEhpYmVybmF0ZUpwYVZlbmRvckFkYXB0ZXIgdmVuZG9yQWRhcHRlciA9IG5ldyBIaWJlcm5hdGVKcGFWZW5kb3JBZGFwdGVyKCk7DQorICAgICAgICB2ZW5kb3JBZGFwdGVyLnNldEdlbmVyYXRlRGRsKHRydWUpOw0KKyAgICAgICAgdmVuZG9yQWRhcHRlci5zZXRTaG93U3FsKGZhbHNlKTsNCisgICAgICAgIExvY2FsQ29udGFpbmVyRW50aXR5TWFuYWdlckZhY3RvcnlCZWFuIGZhY3RvcnkgPSBuZXcgTG9jYWxDb250YWluZXJFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW4oKTsNCisgICAgICAgIGZhY3Rvcnkuc2V0SnBhVmVuZG9yQWRhcHRlcih2ZW5kb3JBZGFwdGVyKTsNCisgICAgICAgIGZhY3Rvcnkuc2V0UGFja2FnZXNUb1NjYW4oIm9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4iKTsNCisgICAgICAgIGZhY3Rvcnkuc2V0RGF0YVNvdXJjZShkYXRhU291cmNlKTsNCisgICAgICAgIHJldHVybiBmYWN0b3J5Ow0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvSmVyc2V5Q29uZmlndXJhdGlvbi5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9KZXJzZXlDb25maWd1cmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MzVlYgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvSmVyc2V5Q29uZmlndXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50czsKKworaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25JbmNsdWRlOworaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5EZXNlcmlhbGl6YXRpb25GZWF0dXJlOworaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5NYXBwZXJGZWF0dXJlOworaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5PYmplY3RNYXBwZXI7CitpbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmRhdGFiaW5kLlNlcmlhbGl6YXRpb25GZWF0dXJlOworaW1wb3J0IG9yZy5nbGFzc2Zpc2guamVyc2V5LmxvZ2dpbmcuTG9nZ2luZ0ZlYXR1cmU7CitpbXBvcnQgb3JnLmdsYXNzZmlzaC5qZXJzZXkuc2VydmVyLlJlc291cmNlQ29uZmlnOworaW1wb3J0IG9yZy5nbGFzc2Zpc2guamVyc2V5LnNlcnZsZXQuU2VydmxldFByb3BlcnRpZXM7CitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLmNvbW1vbi5TZXJ2aWNlRXhjZXB0aW9uTWFwcGVyOworaW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5ycy5Db25maWdNb2RlbFJlc3RJbXBsOworaW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5ycy5Nb2RlbFR5cGVSZXN0SW1wbDsKK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucnMuUmVzb3VyY2VEaWN0aW9uYXJ5UmVzdEltcGw7CitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJzLlNlcnZpY2VUZW1wbGF0ZVJlc3RJbXBsOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuYW5ub3RhdGlvbi5CZWFuOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLlByaW1hcnk7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLkNvbXBvbmVudDsKKworaW1wb3J0IGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlcjsKKworCitAQ29tcG9uZW50CitwdWJsaWMgY2xhc3MgSmVyc2V5Q29uZmlndXJhdGlvbiBleHRlbmRzIFJlc291cmNlQ29uZmlnIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcihKZXJzZXlDb25maWd1cmF0aW9uLmNsYXNzLmdldE5hbWUoKSk7CisKKyAgICBAQmVhbgorICAgIEBQcmltYXJ5CisgICAgcHVibGljIE9iamVjdE1hcHBlciBvYmplY3RNYXBwZXIoKSB7CisgICAgICAgIE9iamVjdE1hcHBlciBvYmplY3RNYXBwZXIgPSBuZXcgT2JqZWN0TWFwcGVyKCk7CisgICAgICAgIG9iamVjdE1hcHBlci5zZXRTZXJpYWxpemF0aW9uSW5jbHVzaW9uKEpzb25JbmNsdWRlLkluY2x1ZGUuTk9OX05VTEwpOworICAgICAgICBvYmplY3RNYXBwZXIuY29uZmlndXJlKFNlcmlhbGl6YXRpb25GZWF0dXJlLldSSVRFX0RBVEVTX0FTX1RJTUVTVEFNUFMsIGZhbHNlKTsKKyAgICAgICAgb2JqZWN0TWFwcGVyLmVuYWJsZShNYXBwZXJGZWF0dXJlLkFDQ0VQVF9DQVNFX0lOU0VOU0lUSVZFX1BST1BFUlRJRVMpOworICAgICAgICBvYmplY3RNYXBwZXIuZW5hYmxlKERlc2VyaWFsaXphdGlvbkZlYXR1cmUuUkVBRF9FTlVNU19VU0lOR19UT19TVFJJTkcpOworICAgICAgICBvYmplY3RNYXBwZXIuZW5hYmxlKFNlcmlhbGl6YXRpb25GZWF0dXJlLldSSVRFX0VOVU1TX1VTSU5HX1RPX1NUUklORyk7CisgICAgICAgIHJldHVybiBvYmplY3RNYXBwZXI7CisgICAgfQorCisgICAgQEF1dG93aXJlZAorICAgIHB1YmxpYyBKZXJzZXlDb25maWd1cmF0aW9uKCkgeworICAgICAgICByZWdpc3RlcihDb25maWdNb2RlbFJlc3RJbXBsLmNsYXNzKTsKKyAgICAgICAgcmVnaXN0ZXIoTW9kZWxUeXBlUmVzdEltcGwuY2xhc3MpOworICAgICAgICByZWdpc3RlcihSZXNvdXJjZURpY3Rpb25hcnlSZXN0SW1wbC5jbGFzcyk7CisgICAgICAgIHJlZ2lzdGVyKFNlcnZpY2VUZW1wbGF0ZVJlc3RJbXBsLmNsYXNzKTsKKyAgICAgICAgLy8gRXhjZXB0aW9uIE1hcHBpbmcKKyAgICAgICAgcmVnaXN0ZXIoU2VydmljZUV4Y2VwdGlvbk1hcHBlci5jbGFzcyk7CisgICAgICAgIHByb3BlcnR5KFNlcnZsZXRQcm9wZXJ0aWVzLkZJTFRFUl9GT1JXQVJEX09OXzQwNCwgdHJ1ZSk7CisgICAgICAgIHJlZ2lzdGVyKG5ldyBMb2dnaW5nRmVhdHVyZShsb2cpKTsKKyAgICB9CisKKworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvVGVzdEFwcGxpY2F0aW9uLmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL1Rlc3RBcHBsaWNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNzQyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL1Rlc3RBcHBsaWNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHM7DQorDQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC5TcHJpbmdBcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LmF1dG9jb25maWd1cmUuRW5hYmxlQXV0b0NvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC5hdXRvY29uZmlndXJlLlNwcmluZ0Jvb3RBcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uQ29tcG9uZW50U2NhbjsNCisNCisNCitAU3ByaW5nQm9vdEFwcGxpY2F0aW9uDQorQENvbXBvbmVudFNjYW4oYmFzZVBhY2thZ2VzID0geyJvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzIn0pDQorQEVuYWJsZUF1dG9Db25maWd1cmF0aW9uDQorcHVibGljIGNsYXNzIFRlc3RBcHBsaWNhdGlvbiB7DQorDQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCisgICAgICAgIFNwcmluZ0FwcGxpY2F0aW9uLnJ1bihUZXN0QXBwbGljYXRpb24uY2xhc3MsIGFyZ3MpOw0KKyAgICB9DQorDQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvVGVzdENvbmZpZ3VyYXRpb24uamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvVGVzdENvbmZpZ3VyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTI1OWM5Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9UZXN0Q29uZmlndXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHM7DQorDQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5hbm5vdGF0aW9uLkJlYW47DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQorDQorLy9AQ29uZmlndXJhdGlvbg0KK3B1YmxpYyBjbGFzcyBUZXN0Q29uZmlndXJhdGlvbiB7DQorDQorICAgIEBCZWFuKCJqYXhyc1Byb3ZpZGVycyIpDQorICAgIHB1YmxpYyBBcnJheUxpc3Q8T2JqZWN0PiBwcm92aWRlcigpIHsNCisgICAgICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisgICAgfQ0KKw0KKyAgICBAQmVhbigiamF4cnNTZXJ2aWNlcyIpDQorICAgIHB1YmxpYyBBcnJheUxpc3Q8T2JqZWN0PiBzZXJ2aWNlKCkgew0KKyAgICAgICAgcmV0dXJuIG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOw0KKyAgICB9DQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vU2NoZW1hR2VuZXJhdG9yU2VydmljZVRlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vU2NoZW1hR2VuZXJhdG9yU2VydmljZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGU5NGRmCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL2NvbW1vbi9TY2hlbWFHZW5lcmF0b3JTZXJ2aWNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5jb21tb247DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5GaWxlVXRpbHM7DQoraW1wb3J0IG9yZy5qdW5pdC5Bc3NlcnQ7DQoraW1wb3J0IG9yZy5qdW5pdC5GaXhNZXRob2RPcmRlcjsNCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLk1ldGhvZFNvcnRlcnM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5TY2hlbWFHZW5lcmF0b3JTZXJ2aWNlOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCisNCitpbXBvcnQgamF2YS5pby5GaWxlOw0KK2ltcG9ydCBqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQ7DQorDQorDQorQEZpeE1ldGhvZE9yZGVyKE1ldGhvZFNvcnRlcnMuTkFNRV9BU0NFTkRJTkcpDQorcHVibGljIGNsYXNzIFNjaGVtYUdlbmVyYXRvclNlcnZpY2VUZXN0IHsNCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRpb25UZXN0LmNsYXNzKTsNCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDAxR2VuZXJhdGVTd2FnZ2VyRGF0YSgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqKioqKioqKioqKioqKioqKiogdGVzdDAxR2VuZXJhdGVTd2FnZ2VyRGF0YSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7DQorDQorICAgICAgICBTdHJpbmcgZmlsZSA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvZW5oYW5jZS9lbmhhbmNlZC10ZW1wbGF0ZS5qc29uIjsNCisgICAgICAgIFN0cmluZyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ID0gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcobmV3IEZpbGUoZmlsZSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSk7DQorICAgICAgICBTY2hlbWFHZW5lcmF0b3JTZXJ2aWNlIHNjaGVtYUdlbmVyYXRvclNlcnZpY2UgPSBuZXcgU2NoZW1hR2VuZXJhdG9yU2VydmljZSgpOw0KKyAgICAgICAgU3RyaW5nIHNjaGVtYSA9IHNjaGVtYUdlbmVyYXRvclNlcnZpY2UuZ2VuZXJhdGVTY2hlbWEoc2VydmljZVRlbXBsYXRlQ29udGVudCk7DQorICAgICAgICBsb2cudHJhY2UoIkdlbmVyYXRlZCBTY2hlbWEgIiArIHNjaGVtYSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiZmFpbGVkIHRvIGdlbmVyYXRlIFNhbXBsZSBEYXRhIiwgc2NoZW1hKTsNCisNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvY29tbW9uL1NlcnZpY2VUZW1wbGF0ZVZhbGlkYXRpb25UZXN0LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvY29tbW9uL1NlcnZpY2VUZW1wbGF0ZVZhbGlkYXRpb25UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYzMDllMgotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9jb21tb24vU2VydmljZVRlbXBsYXRlVmFsaWRhdGlvblRlc3QuamF2YQpAQCAtMCwwICsxLDU2IEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuY29tbW9uOw0KKw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uSU9VdGlsczsNCitpbXBvcnQgb3JnLmp1bml0LkFzc2VydDsNCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS51dGlscy5Db25maWdNb2RlbFV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UudmFsaWRhdG9yLlNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRvcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQorDQoraW1wb3J0IGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQorcHVibGljIGNsYXNzIFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRpb25UZXN0IHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRpb25UZXN0LmNsYXNzKTsNCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdEJsdWVQcmludERpcnMoKXsNCisgICAgICAgIExpc3Q8U3RyaW5nPiBkaXJzID0gQ29uZmlnTW9kZWxVdGlscy5nZXRCbHVlcHJpbnROYW1lcygibG9hZC9ibHVlcHJpbnRzIik7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBibHVlcHJpbnQgZGlyZWN0b3JpZXMiLCBkaXJzICk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzKCJGYWlsZWQgdG8gZ2V0IGFjdHVhbCBkaXJlY3RvcmllcyIsMiwgZGlycy5zaXplKCkgKTsNCisgICAgfQ0KKw0KKyAgICAvLyBAVGVzdA0KKyAgICBwdWJsaWMgdm9pZCB2YWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZSgpIHsNCisgICAgICAgIHRyeSB7DQorICAgICAgICAgICAgU3RyaW5nIGZpbGUgPSAibG9hZC9zZXJ2aWNlX3RlbXBsYXRlL3Zyci0yMDE4MDYtdGVzdC9zZXJ2aWNlLXRlbXBsYXRlLmpzb24iOw0KKyAgICAgICAgICAgIFN0cmluZyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ID0NCisgICAgICAgICAgICAgICAgICAgIElPVXRpbHMudG9TdHJpbmcoU2VydmljZVRlbXBsYXRlVmFsaWRhdGlvblRlc3QuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKGZpbGUpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpOw0KKyAgICAgICAgICAgIFNlcnZpY2VUZW1wbGF0ZVZhbGlkYXRvciBzZXJ2aWNlVGVtcGxhdGVWYWxpZGF0b3IgPSBuZXcgU2VydmljZVRlbXBsYXRlVmFsaWRhdG9yKCk7DQorICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlVmFsaWRhdG9yLnZhbGlkYXRlU2VydmljZVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQpOw0KKyAgICAgICAgICAgIGxvZy5pbmZvKCJWYWxpZGF0ZWQgU2VydmljZSBUZW1wbGF0ZSAiICsgc2VydmljZVRlbXBsYXRlVmFsaWRhdG9yLmdldE1ldGFEYXRhKCkpOw0KKw0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Db25maWdNb2RlbFJlc3RUZXN0LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvQ29uZmlnTW9kZWxSZXN0VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTBhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvQ29uZmlnTW9kZWxSZXN0VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTcyIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucnM7DQorDQoraW1wb3J0IG9yZy5qdW5pdC4qOw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLk1ldGhvZFNvcnRlcnM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuVGVzdEFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLlRlc3RDb25maWd1cmF0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UudXRpbHMuQ29uZmlnTW9kZWxVdGlsczsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdC5XZWJFbnZpcm9ubWVudDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuQ29udGV4dENvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudGVzdC5jb250ZXh0Lmp1bml0NC5TcHJpbmdSdW5uZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK0BSdW5XaXRoKFNwcmluZ1J1bm5lci5jbGFzcykNCitAU3ByaW5nQm9vdFRlc3Qod2ViRW52aXJvbm1lbnQgPSBXZWJFbnZpcm9ubWVudC5SQU5ET01fUE9SVCkNCitAQ29udGV4dENvbmZpZ3VyYXRpb24oY2xhc3NlcyA9IHtUZXN0QXBwbGljYXRpb24uY2xhc3MsIFRlc3RDb25maWd1cmF0aW9uLmNsYXNzfSkNCitARml4TWV0aG9kT3JkZXIoTWV0aG9kU29ydGVycy5OQU1FX0FTQ0VORElORykNCitwdWJsaWMgY2xhc3MgQ29uZmlnTW9kZWxSZXN0VGVzdCB7DQorDQorICAgIHByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihDb25maWdNb2RlbFJlc3RUZXN0LmNsYXNzKTsNCisNCisgICAgQEF1dG93aXJlZA0KKyAgICBDb25maWdNb2RlbFJlc3QgY29uZmlnTW9kZWxSZXN0Ow0KKw0KKyAgICBDb25maWdNb2RlbCBjb25maWdNb2RlbDsNCisNCisgICAgU3RyaW5nIG5hbWUgPSAidnJyLXRlc3QiOw0KKyAgICBTdHJpbmcgdmVyc2lvbiA9ICIxLjAuMCI7DQorDQorICAgIEBCZWZvcmUNCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB7DQorDQorICAgIH0NCisNCisNCisgICAgQEFmdGVyDQorICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkgew0KKyAgICB9DQorDQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwMWdldEluaXRpYWxDb25maWdNb2RlbCgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqIHRlc3QwMWdldEluaXRpYWxDb25maWdNb2RlbCAgKioqKioqKioqKioqKioqKioiKTsNCisNCisgICAgICAgIFN0cmluZyBuYW1lID0gImRlZmF1bHRfbmV0Y29uZiI7DQorICAgICAgICBDb25maWdNb2RlbCBjb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVzdC5nZXRJbml0aWFsQ29uZmlnTW9kZWwobmFtZSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBJbml0aWFsIENvbmZpZyBNb2RlbCAsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsIGNvbmZpZ01vZGVsKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gZ2V0IFNlcnZpY2UgVGVtcGxhdGUgQ29udGVudCAiLCBjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpOw0KKw0KKyAgICB9DQorDQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwMlNhdmVTZXJ2aWNlVGVtcGxhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKioqKioqKioqKioqKioqKioqKioqKiogdGVzdDAyU2F2ZVNlcnZpY2VUZW1wbGF0ZSAgKioqKioqKioqKioqKioqKioqIik7DQorDQorDQorICAgICAgICBjb25maWdNb2RlbCA9IENvbmZpZ01vZGVsVXRpbHMuZ2V0Q29uZmlnTW9kZWwoImxvYWQvYmx1ZXByaW50cy92cnItdGVzdCIpOw0KKw0KKyAgICAgICAgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlc3Quc2F2ZUNvbmZpZ01vZGVsKGNvbmZpZ01vZGVsKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsIGNvbmZpZ01vZGVsKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwgSWQgLCBSZXR1cm4gSUQgb2JqZWN0IGlzIE51bGwiLCBjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwgQ29udGVudCwgUmV0dXJuIG9iamVjdCBpcyBOdWxsIiwNCisgICAgICAgICAgICAgICAgY29uZmlnTW9kZWwuZ2V0Q29uZmlnTW9kZWxDb250ZW50cygpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnRFcXVhbHMoIkZhaWxlZCBpbiB2YWxpZGF0aW9uIG9mIENvbmZpZ01vZGVsIENvbnRlbnQgY291bnQsIiwgMywNCisgICAgICAgICAgICAgICAgY29uZmlnTW9kZWwuZ2V0Q29uZmlnTW9kZWxDb250ZW50cygpLnNpemUoKSk7DQorDQorICAgICAgICBDb25maWdNb2RlbCBkYmNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWxSZXN0LmdldENvbmZpZ01vZGVsKGNvbmZpZ01vZGVsLmdldElkKCkpOw0KKw0KKyAgICAgICAgbG9nLmluZm8oIioqKioqKioqKioqKioqKioqKioqKioqKiB0ZXN0MDJTYXZlU2VydmljZVRlbXBsYXRlLTIgICoqKioqKioqKioqKioqKioqKiIpOw0KKw0KKyAgICAgICAgZGJjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkucmVtb3ZlKDIpOw0KKyAgICAgICAgZGJjb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVzdC5zYXZlQ29uZmlnTW9kZWwoZGJjb25maWdNb2RlbCk7DQorICAgICAgICBsb2cuaW5mbygiU2F2ZWQgQ29uZmlnIE1vZGVsICIgKyBjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsIGRiY29uZmlnTW9kZWwpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBDb25maWdNb2RlbCBJZCAiLCBkYmNvbmZpZ01vZGVsLmdldElkKCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBDb25maWdNb2RlbCBDb250ZW50IiwNCisgICAgICAgICAgICAgICAgZGJjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscygiRmFpbGVkIHRvIFJlbW92ZSB0aGUgQ29uZmlnTW9kZWwgQ29udGVudCwiLCAyLA0KKyAgICAgICAgICAgICAgICBkYmNvbmZpZ01vZGVsLmdldENvbmZpZ01vZGVsQ29udGVudHMoKS5zaXplKCkpOw0KKw0KKw0KKyAgICB9DQorDQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwM1B1Ymxpc2hTZXJ2aWNlVGVtcGxhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKiB0ZXN0MDNQdWJsaXNoU2VydmljZVRlbXBsYXRlICAqKioqKioqKioqKioqKioqKiIpOw0KKw0KKyAgICAgICAgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlc3QuZ2V0Q29uZmlnTW9kZWxCeU5hbWVBbmRWZXJzaW9uKG5hbWUsIHZlcnNpb24pOw0KKyAgICAgICAgbG9nLmluZm8oIlB1Ymxpc2hpbmcgQ29uZmlnIE1vZGVsICIgKyBjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgIGNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWxSZXN0LnB1Ymxpc2hDb25maWdNb2RlbChjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsIGNvbmZpZ01vZGVsKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gQ29uZmlnTW9kZWwgSWQgIiwgY29uZmlnTW9kZWwuZ2V0SWQoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIENvbmZpZ01vZGVsIENvbnRlbnQiLCBjb25maWdNb2RlbC5nZXRDb25maWdNb2RlbENvbnRlbnRzKCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydEVxdWFscygiRmFpbGVkIHRvIHVwZGF0ZSB0aGUgcHVibGlzaCBpbmRpY2F0b3IiLCAiWSIsIGNvbmZpZ01vZGVsLmdldFB1Ymxpc2hlZCgpKTsNCisgICAgfQ0KKw0KKw0KKyAgICBAVGVzdA0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0MDRHZXRDb25maWdNb2RlbCgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqIHRlc3QwNEdldENvbmZpZ01vZGVsICAqKioqKioqKioqKioqKioqKiIpOw0KKw0KKyAgICAgICAgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlc3QuZ2V0Q29uZmlnTW9kZWxCeU5hbWVBbmRWZXJzaW9uKG5hbWUsIHZlcnNpb24pOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgQ29uZmlnTW9kZWwgZm9yIHRoZSBOYW1lICgiICsgY29uZmlnTW9kZWwuZ2V0QXJ0aWZhY3ROYW1lKCkgKyAiKSBhbmQgKCINCisgICAgICAgICAgICAgICAgKyBjb25maWdNb2RlbC5nZXRBcnRpZmFjdFZlcnNpb24oKSArICIpIiwgY29uZmlnTW9kZWwpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgQ29uZmlnTW9kZWwgSWQiLCBjb25maWdNb2RlbC5nZXRJZCgpKTsNCisNCisgICAgICAgIGNvbmZpZ01vZGVsID0gY29uZmlnTW9kZWxSZXN0LmdldENvbmZpZ01vZGVsKGNvbmZpZ01vZGVsLmdldElkKCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgQ29uZmlnTW9kZWwgZm9yIHRoZSBJZCAoIiArIGNvbmZpZ01vZGVsLmdldElkKCkgKyAiKSAiLCBjb25maWdNb2RlbCk7DQorDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDA1R2V0Q2xvbmVDb25maWdNb2RlbCgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqIHRlc3QwNUdldENsb25lQ29uZmlnTW9kZWwgICoqKioqKioqKioqKioqKioqIik7DQorDQorICAgICAgICBDb25maWdNb2RlbCBjb25maWdNb2RlbCA9IGNvbmZpZ01vZGVsUmVzdC5nZXRDb25maWdNb2RlbEJ5TmFtZUFuZFZlcnNpb24obmFtZSwgdmVyc2lvbik7DQorDQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBDb25maWdNb2RlbCBmb3IgdGhlIE5hbWUgKCIgKyBjb25maWdNb2RlbC5nZXRBcnRpZmFjdE5hbWUoKSArICIpIGFuZCAoIg0KKyAgICAgICAgICAgICAgICArIGNvbmZpZ01vZGVsLmdldEFydGlmYWN0VmVyc2lvbigpICsgIikiLCBjb25maWdNb2RlbCk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBDb25maWdNb2RlbCBJZCIsIGNvbmZpZ01vZGVsLmdldElkKCkpOw0KKw0KKyAgICAgICAgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlc3QuZ2V0Q2xvbmVDb25maWdNb2RlbChjb25maWdNb2RlbC5nZXRJZCgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gZ2V0IENvbmZpZ01vZGVsIGZvciB0aGUgSWQgKCIgKyBjb25maWdNb2RlbC5nZXRJZCgpICsgIikgIiwgY29uZmlnTW9kZWwpOw0KKyAgICB9DQorDQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwN1NlYXJjaENvbmZpZ01vZGVscygpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqIHRlc3QwN1NlYXJjaENvbmZpZ01vZGVscyAgKioqKioqKioqKioqKioqKioiKTsNCisNCisgICAgICAgIExpc3Q8Q29uZmlnTW9kZWw+IGNvbmZpZ01vZGVscyA9IGNvbmZpZ01vZGVsUmVzdC5zZWFyY2hDb25maWdNb2RlbHMoInZyci10ZXN0Iik7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIHNlYXJjaCBDb25maWdNb2RlbCIsIGNvbmZpZ01vZGVscyk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmFpbGVkIHRvIHNlYXJjaCBDb25maWdNb2RlbCB3aXRoIGNvdW50IiwgY29uZmlnTW9kZWxzLnNpemUoKSA+IDApOw0KKyAgICAgICAgLy8gdXBkYXRlIHRoZSBTZXJ2aWNlTW9kZWxDb250ZW50DQorICAgIH0NCisNCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDA4RGVsZXRlQ29uZmlnTW9kZWxzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorICAgICAgICBsb2cuaW5mbygiKiogdGVzdDA4RGVsZXRlQ29uZmlnTW9kZWxzICAqKioqKioqKioqKioqKioqKiIpOw0KKw0KKyAgICAgICAgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgPSBjb25maWdNb2RlbFJlc3QuZ2V0Q29uZmlnTW9kZWxCeU5hbWVBbmRWZXJzaW9uKG5hbWUsIHZlcnNpb24pOw0KKyAgICAgICAgY29uZmlnTW9kZWxSZXN0LmRlbGV0ZUNvbmZpZ01vZGVsKGNvbmZpZ01vZGVsLmdldElkKCkpOw0KKw0KKyAgICB9DQorDQorDQorfQ0KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0VGVzdC5qYXZhIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL01vZGVsVHlwZVJlc3RUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMzMzQ5YwotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9Nb2RlbFR5cGVSZXN0VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMwIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UucnM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5pby5GaWxlVXRpbHM7DQoraW1wb3J0IG9yZy5qdW5pdC4qOw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLk1ldGhvZFNvcnRlcnM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuVGVzdEFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLlRlc3RDb25maWd1cmF0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQmx1ZVByaW50Q29uc3RhbnRzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLk1vZGVsVHlwZTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdC5XZWJFbnZpcm9ubWVudDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuQ29udGV4dENvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudGVzdC5jb250ZXh0Lmp1bml0NC5TcHJpbmdSdW5uZXI7DQorDQoraW1wb3J0IGphdmEuaW8uRmlsZTsNCitpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitAUnVuV2l0aChTcHJpbmdSdW5uZXIuY2xhc3MpDQorQFNwcmluZ0Jvb3RUZXN0KHdlYkVudmlyb25tZW50ID0gV2ViRW52aXJvbm1lbnQuUkFORE9NX1BPUlQpDQorQENvbnRleHRDb25maWd1cmF0aW9uKGNsYXNzZXMgPSB7VGVzdEFwcGxpY2F0aW9uLmNsYXNzLCBUZXN0Q29uZmlndXJhdGlvbi5jbGFzc30pDQorQEZpeE1ldGhvZE9yZGVyKE1ldGhvZFNvcnRlcnMuTkFNRV9BU0NFTkRJTkcpDQorcHVibGljIGNsYXNzIE1vZGVsVHlwZVJlc3RUZXN0IHsNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKE1vZGVsVHlwZVJlc3RUZXN0LmNsYXNzKTsNCisgICAgQEF1dG93aXJlZA0KKyAgICBNb2RlbFR5cGVSZXN0IG1vZGVsVHlwZVJlc3Q7DQorDQorICAgIFN0cmluZyBtb2RlbE5hbWUgPSAidGVzdC1kYXRhdHlwZSI7DQorDQorICAgIEBCZWZvcmUNCisgICAgcHVibGljIHZvaWQgc2V0VXAoKSB7DQorDQorICAgIH0NCisNCisNCisgICAgQEFmdGVyDQorICAgIHB1YmxpYyB2b2lkIHRlYXJEb3duKCkge30NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDAxU2F2ZU1vZGVsVHlwZSgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oICIqKioqKioqKioqKioqKioqIHRlc3QwMVNhdmVNb2RlbFR5cGUgICoqKioqKioqKioqKioqKioqKioqIik7DQorDQorICAgICAgICBTdHJpbmcgY29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKG5ldyBGaWxlKCJsb2FkL21vZGVsX3R5cGUvZGF0YV90eXBlL2RhdGF0eXBlLXByb3BlcnR5Lmpzb24iKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgICAgIE1vZGVsVHlwZSBtb2RlbFR5cGUgPSBuZXcgTW9kZWxUeXBlKCk7DQorICAgICAgICBtb2RlbFR5cGUuc2V0RGVmaW5pdGlvblR5cGUoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9EQVRBX1RZUEUpOw0KKyAgICAgICAgbW9kZWxUeXBlLnNldERlcml2ZWRGcm9tKEJsdWVQcmludENvbnN0YW50cy5NT0RFTF9UWVBFX0RBVEFUWVBFU19ST09UKTsNCisgICAgICAgIG1vZGVsVHlwZS5zZXREZXNjcmlwdGlvbigiRGVmaW5pdGlvbiBmb3IgU2FtcGxlIERhdGF0eXBlICIpOw0KKyAgICAgICAgbW9kZWxUeXBlLnNldERlZmluaXRpb24oY29udGVudCk7DQorICAgICAgICBtb2RlbFR5cGUuc2V0TW9kZWxOYW1lKG1vZGVsTmFtZSk7DQorICAgICAgICBtb2RlbFR5cGUuc2V0VmVyc2lvbigiMS4wLjAiKTsNCisgICAgICAgIG1vZGVsVHlwZS5zZXRUYWdzKCJ0ZXN0LWRhdGF0eXBlICwiICsgQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX1RZUEVfREFUQVRZUEVTX1JPT1QgKyAiLCINCisgICAgICAgICAgICAgICAgKyBCbHVlUHJpbnRDb25zdGFudHMuTU9ERUxfREVGSU5JVElPTl9UWVBFX0RBVEFfVFlQRSk7DQorICAgICAgICBtb2RlbFR5cGUuc2V0VXBkYXRlZEJ5KCJ4eHh4eHhAeHh4LmNvbSIpOw0KKyAgICAgICAgbW9kZWxUeXBlID0gbW9kZWxUeXBlUmVzdC5zYXZlTW9kZWxUeXBlKG1vZGVsVHlwZSk7DQorICAgICAgICBsb2cuaW5mbyggIlNhdmVkIE1vZGUge30iLCBtb2RlbFR5cGUudG9TdHJpbmcoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBTYXZlZCBNb2RlbFR5cGUiLCBtb2RlbFR5cGUpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgU2F2ZWQgTW9kZWxUeXBlLCBJZCIsIG1vZGVsVHlwZS5nZXRNb2RlbE5hbWUoKSk7DQorDQorICAgICAgICBNb2RlbFR5cGUgZGJNb2RlbFR5cGUgPSBtb2RlbFR5cGVSZXN0LmdldE1vZGVsVHlwZUJ5TmFtZShtb2RlbFR5cGUuZ2V0TW9kZWxOYW1lKCkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBxdWVyeSBSZXNvdXJjZU1hcHBpbmcgZm9yIElEICgiICsgZGJNb2RlbFR5cGUuZ2V0TW9kZWxOYW1lKCkgKyAiKSIsDQorICAgICAgICAgICAgICAgIGRiTW9kZWxUeXBlKTsNCisNCisgICAgICAgIC8vIE1vZGVsIFVwZGF0ZQ0KKyAgICAgICAgbW9kZWxUeXBlLnNldFVwZGF0ZWRCeSgiYnMyNzk2QHh4eC5jb20iKTsNCisgICAgICAgIG1vZGVsVHlwZSA9IG1vZGVsVHlwZVJlc3Quc2F2ZU1vZGVsVHlwZShtb2RlbFR5cGUpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgU2F2ZWQgTW9kZWxUeXBlIiwgbW9kZWxUeXBlKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnRFcXVhbHMoIkZhaWxlZCB0byBnZXQgU2F2ZWQgZ2V0VXBkYXRlZEJ5ICIsICJiczI3OTZAeHh4LmNvbSIsIG1vZGVsVHlwZS5nZXRVcGRhdGVkQnkoKSk7DQorDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDAyU2VhcmNoTW9kZWxUeXBlcygpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oICIqKioqKioqKioqKioqKioqKioqKioqKiB0ZXN0MDJTZWFyY2hNb2RlbFR5cGVzICAqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsNCisNCisgICAgICAgIFN0cmluZyB0YWdzID0gInRlc3QtZGF0YXR5cGUiOw0KKw0KKyAgICAgICAgTGlzdDxNb2RlbFR5cGU+IGRiTW9kZWxUeXBlcyA9IG1vZGVsVHlwZVJlc3Quc2VhcmNoTW9kZWxUeXBlcyh0YWdzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gc2VhcmNoIFJlc291cmNlTWFwcGluZyBieSB0YWdzIiwgZGJNb2RlbFR5cGVzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnRFcXVhbHMoIkZhaWxlZCB0byBzZWFyY2ggUmVzb3VyY2VNYXBwaW5nIGJ5IHRhZ3MgY291bnQiLCB0cnVlLCBkYk1vZGVsVHlwZXMuc2l6ZSgpID4gMCk7DQorDQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDAzR2V0TW9kZWxUeXBlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorICAgICAgICBsb2cuaW5mbyggIioqKioqKioqKioqKioqKioqKioqKioqKiogdGVzdDAzR2V0TW9kZWxUeXBlICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsNCisgICAgICAgIE1vZGVsVHlwZSBkYk1vZGVsVHlwZSA9IG1vZGVsVHlwZVJlc3QuZ2V0TW9kZWxUeXBlQnlOYW1lKG1vZGVsTmFtZSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCByZXNwb25zZSBmb3IgYXBpIGNhbGwgZ2V0TW9kZWxCeU5hbWUgIiwgZGJNb2RlbFR5cGUpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgSWQgZm9yIGFwaSBjYWxsICBnZXRNb2RlbEJ5TmFtZSAiLCBkYk1vZGVsVHlwZS5nZXRNb2RlbE5hbWUoKSk7DQorDQorICAgICAgICBMaXN0PE1vZGVsVHlwZT4gZGJEYXRhdHlwZU1vZGVsVHlwZXMgPQ0KKyAgICAgICAgICAgICAgICBtb2RlbFR5cGVSZXN0LmdldE1vZGVsVHlwZUJ5RGVmaW5pdGlvblR5cGUoQmx1ZVByaW50Q29uc3RhbnRzLk1PREVMX0RFRklOSVRJT05fVFlQRV9EQVRBX1RZUEUpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBmaW5kIGdldE1vZGVsVHlwZUJ5RGVmaW5pdGlvblR5cGUgYnkgdGFncyIsIGRiRGF0YXR5cGVNb2RlbFR5cGVzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnRFcXVhbHMoIkZhaWxlZCB0byBmaW5kIGdldE1vZGVsVHlwZUJ5RGVmaW5pdGlvblR5cGUgYnkgY291bnQiLCB0cnVlLA0KKyAgICAgICAgICAgICAgICBkYkRhdGF0eXBlTW9kZWxUeXBlcy5zaXplKCkgPiAwKTsNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0MDREZWxldGVNb2RlbFR5cGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKA0KKyAgICAgICAgICAgICAgICAiKioqKioqKioqKioqKioqKioqKioqKioqIHRlc3QwM0RlbGV0ZU1vZGVsVHlwZSAgKioqKioqKioqKioqKioqKioqKioqKioiKTsNCisgICAgICAgIE1vZGVsVHlwZSBkYlJlc291cmNlTWFwcGluZyA9IG1vZGVsVHlwZVJlc3QuZ2V0TW9kZWxUeXBlQnlOYW1lKG1vZGVsTmFtZSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCByZXNwb25zZSBmb3IgYXBpIGNhbGwgZ2V0TW9kZWxCeU5hbWUgIiwgZGJSZXNvdXJjZU1hcHBpbmcpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgSWQgZm9yIGFwaSBjYWxsICBnZXRNb2RlbEJ5TmFtZSAiLCBkYlJlc291cmNlTWFwcGluZy5nZXRNb2RlbE5hbWUoKSk7DQorDQorICAgICAgICBtb2RlbFR5cGVSZXN0LmRlbGV0ZU1vZGVsVHlwZUJ5TmFtZShkYlJlc291cmNlTWFwcGluZy5nZXRNb2RlbE5hbWUoKSk7DQorICAgIH0NCisNCisNCisNCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1Jlc291cmNlRGljdGlvbmFyeVJlc3RUZXN0LmphdmEgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvUmVzb3VyY2VEaWN0aW9uYXJ5UmVzdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWRmZjMzCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L2phdmEvb3JnL29uYXAvY2NzZGsvYXBwcy9jb250cm9sbGVyYmx1ZXByaW50cy9zZXJ2aWNlL3JzL1Jlc291cmNlRGljdGlvbmFyeVJlc3RUZXN0LmphdmEKQEAgLTAsMCArMSwxMTMgQEAKKy8qDQorICogQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCisgKg0KKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCitwYWNrYWdlIG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5yczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmlvLklPVXRpbHM7DQoraW1wb3J0IG9yZy5qdW5pdC5Bc3NlcnQ7DQoraW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7DQoraW1wb3J0IG9yZy5qdW5pdC5GaXhNZXRob2RPcmRlcjsNCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXIuUnVuV2l0aDsNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuTWV0aG9kU29ydGVyczsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5UZXN0QXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuVGVzdENvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuc2VydmljZS5kb21haW4uUmVzb3VyY2VEaWN0aW9uYXJ5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QudGVzdC5jb250ZXh0LlNwcmluZ0Jvb3RUZXN0Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QudGVzdC5jb250ZXh0LlNwcmluZ0Jvb3RUZXN0LldlYkVudmlyb25tZW50Ow0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRlc3QuY29udGV4dC5Db250ZXh0Q29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuanVuaXQ0LlNwcmluZ1J1bm5lcjsNCisNCitpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisNCitAUnVuV2l0aChTcHJpbmdSdW5uZXIuY2xhc3MpDQorQFNwcmluZ0Jvb3RUZXN0KHdlYkVudmlyb25tZW50ID0gV2ViRW52aXJvbm1lbnQuUkFORE9NX1BPUlQpDQorQENvbnRleHRDb25maWd1cmF0aW9uKGNsYXNzZXMgPSB7VGVzdEFwcGxpY2F0aW9uLmNsYXNzLCBUZXN0Q29uZmlndXJhdGlvbi5jbGFzc30pDQorQEZpeE1ldGhvZE9yZGVyKE1ldGhvZFNvcnRlcnMuTkFNRV9BU0NFTkRJTkcpDQorcHVibGljIGNsYXNzIFJlc291cmNlRGljdGlvbmFyeVJlc3RUZXN0IHsNCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFJlc291cmNlRGljdGlvbmFyeVJlc3RUZXN0LmNsYXNzKTsNCisNCisgICAgQEF1dG93aXJlZA0KKyAgICBwcm90ZWN0ZWQgUmVzb3VyY2VEaWN0aW9uYXJ5UmVzdCByZXNvdXJjZURpY3Rpb25hcnlSZXN0Ow0KKw0KKyAgICBAQmVmb3JlDQorICAgIHB1YmxpYyB2b2lkIHNldFVwKCkgew0KKw0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwMVNhdmVEYXRhRGljdGlvbmFyeSgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgU3RyaW5nIGRlZmluaXRpb24gPSBJT1V0aWxzLnRvU3RyaW5nKA0KKyAgICAgICAgICAgICAgICBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbSgicmVzb3VyY2VkaWN0aW9uYXJ5L2RlZmF1bHRfZGVmaW5pdGlvbi5qc29uIiksDQorICAgICAgICAgICAgICAgIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSk7DQorDQorICAgICAgICBSZXNvdXJjZURpY3Rpb25hcnkgZGF0YURpY3Rpb25hcnkgPSBuZXcgUmVzb3VyY2VEaWN0aW9uYXJ5KCk7DQorICAgICAgICBkYXRhRGljdGlvbmFyeS5zZXRSZXNvdXJjZVBhdGgoInRlc3Qvdm5mL2lwYWRkcmVzcyIpOw0KKyAgICAgICAgZGF0YURpY3Rpb25hcnkuc2V0TmFtZSgidGVzdC1uYW1lIik7DQorICAgICAgICBkYXRhRGljdGlvbmFyeS5zZXREZWZpbml0aW9uKGRlZmluaXRpb24pOw0KKyAgICAgICAgZGF0YURpY3Rpb25hcnkuc2V0VmFsaWRWYWx1ZXMoIjEyNy4wLjAuMSIpOw0KKyAgICAgICAgZGF0YURpY3Rpb25hcnkuc2V0UmVzb3VyY2VUeXBlKCJPTkFQIik7DQorICAgICAgICBkYXRhRGljdGlvbmFyeS5zZXREYXRhVHlwZSgic3RyaW5nIik7DQorICAgICAgICBkYXRhRGljdGlvbmFyeS5zZXREZXNjcmlwdGlvbigiU2FtcGxlIFJlc291cmNlIE1hcHBpbmciKTsNCisgICAgICAgIGRhdGFEaWN0aW9uYXJ5LnNldFRhZ3MoInRlc3QsIGlwYWRkcmVzcyIpOw0KKyAgICAgICAgZGF0YURpY3Rpb25hcnkuc2V0VXBkYXRlZEJ5KCJ4eHh4eHhAeHh4LmNvbSIpOw0KKw0KKyAgICAgICAgZGF0YURpY3Rpb25hcnkgPSByZXNvdXJjZURpY3Rpb25hcnlSZXN0LnNhdmVSZXNvdXJjZURpY3Rpb25hcnkoZGF0YURpY3Rpb25hcnkpOw0KKw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgU2F2ZWQgUmVzb3VyY2UgRGljdGlvbmFyeSIsIGRhdGFEaWN0aW9uYXJ5KTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gZ2V0IFNhdmVkIFJlc291cmNlIERpY3Rpb25hcnksIElkIiwgZGF0YURpY3Rpb25hcnkuZ2V0TmFtZSgpKTsNCisNCisgICAgICAgIFJlc291cmNlRGljdGlvbmFyeSBkYkRhdGFEaWN0aW9uYXJ5ID0NCisgICAgICAgICAgICAgICAgcmVzb3VyY2VEaWN0aW9uYXJ5UmVzdC5nZXRSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWUoZGF0YURpY3Rpb25hcnkuZ2V0TmFtZSgpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gcXVlcnkgUmVzb3VyY2UgRGljdGlvbmFyeSBmb3IgSUQgKCIgKyBkYXRhRGljdGlvbmFyeS5nZXROYW1lKCkgKyAiKSIsDQorICAgICAgICAgICAgICAgIGRiRGF0YURpY3Rpb25hcnkpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBxdWVyeSBSZXNvdXJjZSBEaWN0aW9uYXJ5IGRlZmluaXRpb24gZm9yIElEICgiICsgZGF0YURpY3Rpb25hcnkuZ2V0TmFtZSgpICsgIikiLA0KKyAgICAgICAgICAgICAgICBkYkRhdGFEaWN0aW9uYXJ5LmdldERlZmluaXRpb24oKSk7DQorDQorICAgICAgICBsb2cudHJhY2UoIlNhdmVkIERpY3Rpb25hcnkgIiArIGRiRGF0YURpY3Rpb25hcnkuZ2V0RGVmaW5pdGlvbigpKTsNCisNCisgICAgfQ0KKw0KKyAgICBAVGVzdA0KKyAgICBwdWJsaWMgdm9pZCB0ZXN0MDJHZXREYXRhRGljdGlvbmFyeSgpIHRocm93cyBFeGNlcHRpb24gew0KKw0KKyAgICAgICAgUmVzb3VyY2VEaWN0aW9uYXJ5IGRiUmVzb3VyY2VEaWN0aW9uYXJ5ID0gcmVzb3VyY2VEaWN0aW9uYXJ5UmVzdC5nZXRSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWUoInRlc3QtbmFtZSIpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBxdWVyeSBSZXNvdXJjZSBEaWN0aW9uYXJ5IGJ5IE5hbWUiLCBkYlJlc291cmNlRGljdGlvbmFyeSk7DQorDQorICAgICAgICBTdHJpbmcgdGFncyA9ICJpcGFkZHJlc3MiOw0KKw0KKyAgICAgICAgTGlzdDxSZXNvdXJjZURpY3Rpb25hcnk+IGRiUmVzb3VyY2VEaWN0aW9uYXJpZXMgPSByZXNvdXJjZURpY3Rpb25hcnlSZXN0LnNlYXJjaFJlc291cmNlRGljdGlvbmFyeUJ5VGFncyh0YWdzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gc2VhcmNoIFJlc291cmNlRGljdGlvbmFyeSBieSB0YWdzIiwgZGJSZXNvdXJjZURpY3Rpb25hcmllcyk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmFpbGVkIHRvIHNlYXJjaCBzZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeVRhZ3MgYnkgdGFncyBieSBjb3VudCIsDQorICAgICAgICAgICAgICAgIGRiUmVzb3VyY2VEaWN0aW9uYXJpZXMuc2l6ZSgpID4gMCk7DQorDQorICAgICAgICBMaXN0PFN0cmluZz4gbmFtZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsNCisgICAgICAgIG5hbWVzLmFkZCgidGVzdC1uYW1lIik7DQorICAgICAgICBkYlJlc291cmNlRGljdGlvbmFyaWVzID0gcmVzb3VyY2VEaWN0aW9uYXJ5UmVzdC5zZWFyY2hSZXNvdXJjZURpY3Rpb25hcnlCeU5hbWVzKG5hbWVzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gc2VhcmNoIFJlc291cmNlRGljdGlvbmFyeSBieSBOYW1lcyIsIGRiUmVzb3VyY2VEaWN0aW9uYXJpZXMpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydFRydWUoIkZhaWxlZCB0byBzZWFyY2ggc2VhcmNoUmVzb3VyY2VEaWN0aW9uYXJ5QnlOYW1lcyBieSB0YWdzIGJ5IGNvdW50IiwNCisgICAgICAgICAgICAgICAgZGJSZXNvdXJjZURpY3Rpb25hcmllcy5zaXplKCkgPiAwKTsNCisNCisgICAgfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvU2VydmljZVRlbXBsYXRlUmVzdFRlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS9ycy9TZXJ2aWNlVGVtcGxhdGVSZXN0VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MWRkNDEKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvcnMvU2VydmljZVRlbXBsYXRlUmVzdFRlc3QuamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoNCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KKyAqDQorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KK3BhY2thZ2Ugb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLnJzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29sbGVjdGlvblV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaW8uRmlsZVV0aWxzOw0KK2ltcG9ydCBvcmcuanVuaXQuQXNzZXJ0Ow0KK2ltcG9ydCBvcmcuanVuaXQuRml4TWV0aG9kT3JkZXI7DQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0Ow0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLk1ldGhvZFNvcnRlcnM7DQoraW1wb3J0IG9yZy5vbmFwLmNjc2RrLmFwcHMuY29udHJvbGxlcmJsdWVwcmludHMuVGVzdEFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLlRlc3RDb25maWd1cmF0aW9uOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUuQ29uZmlnTW9kZWxDb25zdGFudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5jb3JlLmRhdGEuU2VydmljZVRlbXBsYXRlOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLmNvcmUudXRpbHMuSmFja3NvblV0aWxzOw0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnJlc291cmNlLmRpY3QuUmVzb3VyY2VBc3NpZ25tZW50Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsQ29udGVudDsNCitpbXBvcnQgb3JnLm9uYXAuY2NzZGsuYXBwcy5jb250cm9sbGVyYmx1ZXByaW50cy5zZXJ2aWNlLm1vZGVsLkF1dG9NYXBSZXNwb25zZTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5ib290LnRlc3QuY29udGV4dC5TcHJpbmdCb290VGVzdC5XZWJFbnZpcm9ubWVudDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuQ29udGV4dENvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudGVzdC5jb250ZXh0Lmp1bml0NC5TcHJpbmdSdW5uZXI7DQorDQoraW1wb3J0IGphdmEuaW8uRmlsZTsNCitpbXBvcnQgamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCisNCitAUnVuV2l0aChTcHJpbmdSdW5uZXIuY2xhc3MpDQorQFNwcmluZ0Jvb3RUZXN0KHdlYkVudmlyb25tZW50ID0gV2ViRW52aXJvbm1lbnQuUkFORE9NX1BPUlQpDQorQENvbnRleHRDb25maWd1cmF0aW9uKGNsYXNzZXMgPSB7VGVzdEFwcGxpY2F0aW9uLmNsYXNzLCBUZXN0Q29uZmlndXJhdGlvbi5jbGFzc30pDQorQEZpeE1ldGhvZE9yZGVyKE1ldGhvZFNvcnRlcnMuTkFNRV9BU0NFTkRJTkcpDQorcHVibGljIGNsYXNzIFNlcnZpY2VUZW1wbGF0ZVJlc3RUZXN0IHsNCisNCisgICAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFNlcnZpY2VUZW1wbGF0ZVJlc3RUZXN0LmNsYXNzKTsNCisgICAgQEF1dG93aXJlZA0KKyAgICBNb2RlbFR5cGVSZXN0IG1vZGVsVHlwZVJlc3Q7DQorDQorICAgIEBBdXRvd2lyZWQNCisgICAgcHJpdmF0ZSBTZXJ2aWNlVGVtcGxhdGVSZXN0IHNlcnZpY2VUZW1wbGF0ZVJlc3Q7DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwMkVucmljaFNlcnZpY2VUZW1wbGF0ZSgpIHRocm93cyBFeGNlcHRpb24gew0KKyAgICAgICAgbG9nLmluZm8oIioqKioqKioqKioqIHRlc3QwMkVucmljaFNlcnZpY2VUZW1wbGF0ZSAgKioqKioqKioqKioqKioqKioqKioqKioiKTsNCisgICAgICAgIFN0cmluZyBmaWxlID0gInNyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2UtdGVtcGxhdGUuanNvbiI7DQorDQorICAgICAgICBTdHJpbmcgc2VydmljZVRlbXBsYXRlQ29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKG5ldyBGaWxlKGZpbGUpLCBDaGFyc2V0LmRlZmF1bHRDaGFyc2V0KCkpOw0KKw0KKyAgICAgICAgU2VydmljZVRlbXBsYXRlIHNlcnZpY2VUZW1wbGF0ZSA9IEphY2tzb25VdGlscy5yZWFkVmFsdWUoc2VydmljZVRlbXBsYXRlQ29udGVudCwgU2VydmljZVRlbXBsYXRlLmNsYXNzKTsNCisNCisgICAgICAgIHNlcnZpY2VUZW1wbGF0ZSA9IHNlcnZpY2VUZW1wbGF0ZVJlc3QuZW5yaWNoU2VydmljZVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZSk7DQorDQorICAgICAgICBTdHJpbmcgZW5oYW5jZWRGaWxlID0gInNyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2VkLXRlbXBsYXRlLmpzb24iOw0KKw0KKyAgICAgICAgRmlsZVV0aWxzLndyaXRlKG5ldyBGaWxlKGVuaGFuY2VkRmlsZSksDQorICAgICAgICAgICAgICAgIEphY2tzb25VdGlscy5nZXRKc29uKHNlcnZpY2VUZW1wbGF0ZSwgdHJ1ZSksIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSk7DQorDQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBFbnJpY2hlZCBCbHVlcHJpbnRzLCBSZXR1cm4gb2JqZWN0IGlzIE51bGwiLCBzZXJ2aWNlVGVtcGxhdGUpOw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgRW5yaWNoZWQgQmx1ZXByaW50cyBEYXRhIFR5cGUsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsDQorICAgICAgICAgICAgICAgIHNlcnZpY2VUZW1wbGF0ZS5nZXREYXRhVHlwZXMoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBFbnJpY2hlZCBCbHVlcHJpbnRzIE5vZGUgVHlwZSwgUmV0dXJuIG9iamVjdCBpcyBOdWxsIiwNCisgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldE5vZGVUeXBlcygpKTsNCisgICAgICAgIGxvZy50cmFjZSgiRW5yaWNoZWQgU2VydmljZSBUZW1wbGF0ZSA6XG4iICsgSmFja3NvblV0aWxzLmdldEpzb24oc2VydmljZVRlbXBsYXRlLCB0cnVlKSk7DQorICAgIH0NCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDAzVmFsaWRhdGVTZXJ2aWNlVGVtcGxhdGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKioqKioqKioqKiB0ZXN0MDNWYWxpZGF0ZVNlcnZpY2VUZW1wbGF0ZSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOw0KKyAgICAgICAgU3RyaW5nIGVuaGFuY2VkRmlsZSA9ICJzcmMvdGVzdC9yZXNvdXJjZXMvZW5oYW5jZS9lbmhhbmNlZC10ZW1wbGF0ZS5qc29uIjsNCisgICAgICAgIFN0cmluZyBzZXJ2aWNlVGVtcGxhdGVDb250ZW50ID0gRmlsZVV0aWxzLnJlYWRGaWxlVG9TdHJpbmcobmV3IEZpbGUoZW5oYW5jZWRGaWxlKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisNCisgICAgICAgIFNlcnZpY2VUZW1wbGF0ZSBzZXJ2aWNlVGVtcGxhdGUgPQ0KKyAgICAgICAgICAgICAgICBKYWNrc29uVXRpbHMucmVhZFZhbHVlKHNlcnZpY2VUZW1wbGF0ZUNvbnRlbnQsIFNlcnZpY2VUZW1wbGF0ZS5jbGFzcyk7DQorDQorICAgICAgICBzZXJ2aWNlVGVtcGxhdGUgPSBzZXJ2aWNlVGVtcGxhdGVSZXN0LnZhbGlkYXRlU2VydmljZVRlbXBsYXRlKHNlcnZpY2VUZW1wbGF0ZSk7DQorDQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIHZhbGlkYXRlIFNlcnZpY2UgVGVtcGxhdGUsIFJldHVybiBvYmplY3QgaXMgTnVsbCIsIHNlcnZpY2VUZW1wbGF0ZSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBTZXJ2aWNlIFRlbXBsYXRlIERhdGEgVHlwZSwgUmV0dXJuIG9iamVjdCBpcyBOdWxsIiwNCisgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlLmdldERhdGFUeXBlcygpKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gZ2V0IFNlcnZpY2UgVGVtcGxhdGUgTm9kZSBUeXBlLCBSZXR1cm4gb2JqZWN0IGlzIE51bGwiLA0KKyAgICAgICAgICAgICAgICBzZXJ2aWNlVGVtcGxhdGUuZ2V0Tm9kZVR5cGVzKCkpOw0KKw0KKyAgICAgICAgbG9nLnRyYWNlKCJWYWxpZGF0ZWQgU2VydmljZSBUZW1wbGF0ZSA6XG4iICsgSmFja3NvblV0aWxzLmdldEpzb24oc2VydmljZVRlbXBsYXRlLCB0cnVlKSk7DQorDQorICAgIH0NCisNCisNCisgICAgQFRlc3QNCisgICAgcHVibGljIHZvaWQgdGVzdDA0R2VuZXJhdGVSZXNvdXJjZUFzc2lnbm1lbnRzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorICAgICAgICBsb2cuaW5mbygiKioqKioqKioqKiogdGVzdDA0R2VuZXJhdGVSZXNvdXJjZUFzc2lnbm1lbnRzICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7DQorICAgICAgICBDb25maWdNb2RlbENvbnRlbnQgYmFzZUNvbmZpZ0NvbmZpZ01vZGVsQ29udGVudCA9IG5ldyBDb25maWdNb2RlbENvbnRlbnQoKTsNCisgICAgICAgIFN0cmluZyBiYXNlQ29uZmlnQ29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKG5ldyBGaWxlKCJsb2FkL2JsdWVwcmludHMvdnJyLXRlc3QvVGVtcGxhdGVzL2Jhc2UtY29uZmlnLXRlbXBsYXRlLnZ0bCIpDQorICAgICAgICAgICAgICAgICwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgICAgIGJhc2VDb25maWdDb25maWdNb2RlbENvbnRlbnQuc2V0TmFtZSgiYmFzZS1jb25maWctdGVtcGxhdGUiKTsNCisgICAgICAgIGJhc2VDb25maWdDb25maWdNb2RlbENvbnRlbnQuc2V0Q29udGVudFR5cGUoQ29uZmlnTW9kZWxDb25zdGFudC5NT0RFTF9DT05URU5UX1RZUEVfVEVNUExBVEUpOw0KKyAgICAgICAgYmFzZUNvbmZpZ0NvbmZpZ01vZGVsQ29udGVudC5zZXRDb250ZW50KGJhc2VDb25maWdDb250ZW50KTsNCisNCisgICAgICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiByZXNvdXJjZUFzc2lnbm1lbnRzID0NCisgICAgICAgICAgICAgICAgc2VydmljZVRlbXBsYXRlUmVzdC5nZW5lcmF0ZVJlc291cmNlQXNzaWdubWVudHMoYmFzZUNvbmZpZ0NvbmZpZ01vZGVsQ29udGVudCk7DQorDQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBSZXNvdXJjZUFzc2lnbm1lbnRzLCBSZXR1cm4gb2JqZWN0IGlzIE51bGwiLCByZXNvdXJjZUFzc2lnbm1lbnRzKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJGYWlsZWQgdG8gZ2V0IFJlc291cmNlQXNzaWdubWVudHMgY291bnQiLCByZXNvdXJjZUFzc2lnbm1lbnRzLnNpemUoKSA+IDApOw0KKw0KKyAgICAgICAgbG9nLnRyYWNlKCJWYWxpZGF0ZWQgU2VydmljZSBUZW1wbGF0ZSA6XG4iICsgSmFja3NvblV0aWxzLmdldEpzb24ocmVzb3VyY2VBc3NpZ25tZW50cywgdHJ1ZSkpOw0KKw0KKw0KKyAgICB9DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3QwNUF1dG9NYXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisgICAgICAgIGxvZy5pbmZvKCIqKioqKioqKioqKiB0ZXN0MDVBdXRvTWFwICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7DQorDQorICAgICAgICBTdHJpbmcgcmVzb3VyY2Vhc3NpZ25tZW50Q29udGVudCA9IEZpbGVVdGlscy5yZWFkRmlsZVRvU3RyaW5nKA0KKyAgICAgICAgICAgICAgICBuZXcgRmlsZSgic3JjL3Rlc3QvcmVzb3VyY2VzL3Jlc291cmNlZGljdGlvbmFyeS9hdXRvbWFwLmpzb24iKSwgQ2hhcnNldC5kZWZhdWx0Q2hhcnNldCgpKTsNCisgICAgICAgIExpc3Q8UmVzb3VyY2VBc3NpZ25tZW50PiBiYXRjaFJlc291cmNlQXNzaWdubWVudCA9DQorICAgICAgICAgICAgICAgIEphY2tzb25VdGlscy5nZXRMaXN0RnJvbUpzb24ocmVzb3VyY2Vhc3NpZ25tZW50Q29udGVudCwgUmVzb3VyY2VBc3NpZ25tZW50LmNsYXNzKTsNCisgICAgICAgIEF1dG9NYXBSZXNwb25zZSBhdXRvTWFwUmVzcG9uc2UgPSBzZXJ2aWNlVGVtcGxhdGVSZXN0LmF1dG9NYXAoYmF0Y2hSZXNvdXJjZUFzc2lnbm1lbnQpOw0KKw0KKyAgICAgICAgQXNzZXJ0LmFzc2VydE5vdE51bGwoIkZhaWxlZCB0byBnZXQgUmVzb3VyY2VBc3NpZ25tZW50cywgUmV0dXJuIG9iamVjdCBpcyBOdWxsIiwNCisgICAgICAgICAgICAgICAgYXV0b01hcFJlc3BvbnNlLmdldFJlc291cmNlQXNzaWdubWVudHMoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiRmFpbGVkIHRvIGdldCBEYXRhIERpY3Rpb25hcnkgZnJvbSBSZXNvdXJjZUFzc2lnbm1lbnRzIiwNCisgICAgICAgICAgICAgICAgYXV0b01hcFJlc3BvbnNlLmdldERhdGFEaWN0aW9uYXJpZXMoKSk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmFpbGVkIHRvIGdldCBSZXNvdXJjZUFzc2lnbm1lbnRzIGNvdW50IiwNCisgICAgICAgICAgICAgICAgQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkoYXV0b01hcFJlc3BvbnNlLmdldERhdGFEaWN0aW9uYXJpZXMoKSkpOw0KKw0KKyAgICAgICAgTGlzdDxSZXNvdXJjZUFzc2lnbm1lbnQ+IGF1dG9NYXBwZWRSZXNvdXJjZUFzc2lnbm1lbnQgPSBhdXRvTWFwUmVzcG9uc2UuZ2V0UmVzb3VyY2VBc3NpZ25tZW50cygpOw0KKyAgICAgICAgYXV0b01hcHBlZFJlc291cmNlQXNzaWdubWVudC5mb3JFYWNoKHJlc291cmNlQXNzaWdubWVudCAtPiB7DQorICAgICAgICAgICAgaWYgKCJidW5kbGUtaWQiLmVxdWFscyhyZXNvdXJjZUFzc2lnbm1lbnQuZ2V0TmFtZSgpKSkgew0KKyAgICAgICAgICAgICAgICBBc3NlcnQuYXNzZXJ0RXF1YWxzKCJGYWlsZWQgdG8gYXNzaWduIGRlZmF1bHQgZmlyc3Qgc291cmNlIiwgImRiIiwNCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUFzc2lnbm1lbnQuZ2V0RGljdGlvbmFyeVNvdXJjZSgpKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9KTsNCisNCisgICAgfQ0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvdXRpbHMvQ29uZmlnTW9kZWxVdGlsc1Rlc3QuamF2YSBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9qYXZhL29yZy9vbmFwL2Njc2RrL2FwcHMvY29udHJvbGxlcmJsdWVwcmludHMvc2VydmljZS91dGlscy9Db25maWdNb2RlbFV0aWxzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzOGRkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvamF2YS9vcmcvb25hcC9jY3Nkay9hcHBzL2NvbnRyb2xsZXJibHVlcHJpbnRzL3NlcnZpY2UvdXRpbHMvQ29uZmlnTW9kZWxVdGlsc1Rlc3QuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKg0KKyAqIENvcHlyaWdodCDCqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQorICoNCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorcGFja2FnZSBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UudXRpbHM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5Db2xsZWN0aW9uVXRpbHM7DQoraW1wb3J0IG9yZy5qdW5pdC5Bc3NlcnQ7DQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0Ow0KK2ltcG9ydCBvcmcub25hcC5jY3Nkay5hcHBzLmNvbnRyb2xsZXJibHVlcHJpbnRzLnNlcnZpY2UuZG9tYWluLkNvbmZpZ01vZGVsOw0KKw0KK3B1YmxpYyBjbGFzcyBDb25maWdNb2RlbFV0aWxzVGVzdCB7DQorDQorICAgIEBUZXN0DQorICAgIHB1YmxpYyB2b2lkIHRlc3RDb25maWdNb2RlbCgpIHRocm93cyBFeGNlcHRpb24gew0KKw0KKyAgICAgICAgQ29uZmlnTW9kZWwgY29uZmlnTW9kZWwgPSBDb25maWdNb2RlbFV0aWxzLmdldENvbmZpZ01vZGVsKCJsb2FkL2JsdWVwcmludHMvdnJyLXRlc3QiKTsNCisgICAgICAgIEFzc2VydC5hc3NlcnROb3ROdWxsKCJGYWlsZWQgdG8gcHJlcGFyZSBjb25maWcgbW9kZWwiLCBjb25maWdNb2RlbCk7DQorICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmFpbGVkIHRvIHByZXBhcmUgY29uZmlnIG1vZGVsIGNvbnRlbnRzIiwgQ29sbGVjdGlvblV0aWxzLmlzTm90RW1wdHkoY29uZmlnTW9kZWwuZ2V0Q29uZmlnTW9kZWxDb250ZW50cygpKSk7DQorICAgIH0NCit9DQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVzIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9hcHBsaWNhdGlvbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExM2UxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvcmVzb3VyY2VzL2FwcGxpY2F0aW9uLnByb3BlcnRpZXMKQEAgLTAsMCArMSw2NyBAQAorIworIyBDb3B5cmlnaHQgqSAyMDE3LTIwMTggQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCisjCisjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisjIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIworIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKK2luZm8uYnVpbGQuYXJ0aWZhY3Q9QHByb2plY3QuYXJ0aWZhY3RJZEAKK2luZm8uYnVpbGQubmFtZT1AcHJvamVjdC5uYW1lQAoraW5mby5idWlsZC5kZXNjcmlwdGlvbj1AcHJvamVjdC5kZXNjcmlwdGlvbkAKK2luZm8uYnVpbGQudmVyc2lvbj1AcHJvamVjdC52ZXJzaW9uQAoraW5mby5idWlsZC5ncm91cElkPUBwcm9qZWN0Lmdyb3VwSWRACitsb2dnaW5nLmxldmVsLnJvb3Q9aW5mbworCitzZXJ2ZXIuY29udGV4dFBhdGg9Lworc2VydmVyLnNlcnZsZXQtcGF0aD0vCitzcHJpbmcuamVyc2V5LmFwcGxpY2F0aW9uLXBhdGg9L2FwaS9jb250cm9sbGVyLWJsdWVwcmludHMvdjEKK3NlcnZlci5yb3V0aW5nUGF0aD0vYXBpCisKKworbW90cy5hcHBsaWNhdGlvbi5hY3JvbnltPU1PVFNfSUQKK3BsYXRmb3JtLmlkZW50aWZpZXI9QUpTQzdfSkVSU0VZCisjc3ByaW5nLmF1dG9jb25maWd1cmUuZXhjbHVkZT1vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5qZGJjLkRhdGFTb3VyY2VBdXRvQ29uZmlndXJhdGlvbixvcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3QuYXV0b2NvbmZpZ3VyZS5vcm0uanBhLkhpYmVybmF0ZUpwYUF1dG9Db25maWd1cmF0aW9uCisKKyNsb2dnaW5nLnBhdHRlcm4uY29uc29sZT0lY2xyKCVke3l5eXktTU0tZGQgSEg6bW06c3MuU1NTfSl7ZmFpbnR9ICVjbHIoJTVwKSAlY2xyKCQgdGhyZWFkSWQ6IHtQSUQ6LSB9KXttYWdlbnRhfSAlY2xyKC0tLSl7ZmFpbnR9ICVjbHIoWyBob3N0bmFtZTogJVh7aG9zdG5hbWV9IHNlcnZpY2VOYW1lOiAlWHtzZXJ2aWNlTmFtZX0gdmVyc2lvbjogJVh7dmVyc2lvbn0gdHJhbnNhY3Rpb25JZDogJVh7dHJhbnNhY3Rpb25JZH0gcmVxdWVzdFRpbWVTdGFtcDogJVh7cmVxdWVzdFRpbWVzdGFtcH0gIHJlc3BvbnNlVGltZVN0YW1wOiAlWHtyZXNwb25zZVRpbWVzdGFtcH0gZHVyYXRpb246ICVYe2R1cmF0aW9ufV0pe3llbGxvd30gJWNscihbJTE1LjE1dF0pe2ZhaW50fSAlY2xyKCUtNDAuNDBsb2dnZXJ7Mzl9KXtjeWFufSAlY2xyKDope2ZhaW50fSAlbSVuJXdleAorCisKKyNUaGUgbWF4IG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcyBpbiB0aGlzIHBvb2wKK3NlcnZlci50b21jYXQubWF4LXRocmVhZHM9MjAwCisjVGhlIG1pbmltdW0gbnVtYmVyIG9mIHRocmVhZHMgYWx3YXlzIGtlcHQgYWxpdmUKK3NlcnZlci50b21jYXQubWluLVNwYXJlLVRocmVhZHM9MjUKKyNUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZWZvcmUgYW4gaWRsZSB0aHJlYWQgc2h1dHNkb3duLCB1bmxlc3MgdGhlIG51bWJlciBvZiBhY3RpdmUgdGhyZWFkcyBhcmUgbGVzcyBvciBlcXVhbCB0byBtaW5TcGFyZVRocmVhZHMKK3NlcnZlci50b21jYXQubWF4LWlkbGUtdGltZT02MDAwMAorCisjZm9yIGNoYW5naW5nIHRoZSB0b21jYXQgcG9ydC4uLgorI3NlcnZlci5wb3J0PTgwODEKKworCisKKyNTZXJ2bGV0IGNvbnRleHQgcGFyYW1ldGVycworc2VydmVyLmNvbnRleHRfcGFyYW1ldGVycy5wLW5hbWU9dmFsdWUgI2NvbnRleHQgcGFyYW1ldGVyIHdpdGggcC1uYW1lIGFzIGtleSBhbmQgdmFsdWUgYXMgdmFsdWUuCisKKyMgbWFrZSB0aGlzIHRydWUgZm9yIEFBRiBhdXRoZW50aWNhdGlvbiBhbmQgcGxhY2UgY2FkaS5wcm9wZXJ0aWVzIGludG8gZXRjIGZvbGRlcgorYWFmLmVuYWJsZWQ9dHJ1ZQorCisjIHNldCB0byB0cnVlIHRvIGVuYWJsZSB2ZXJzaW9uIHByb3h5CisjaXZwLmVuYWJsZWQ9ZmFsc2UKKworc3ByaW5nLmphY2tzb24uc2VyaWFsaXphdGlvbi5XUklURV9EQVRFU19BU19USU1FU1RBTVBTID0gZmFsc2UKKworCitsb2dnaW5nLmxldmVsLm9yZy5zcHJpbmdmcmFtZXdvcmsud2ViPUlORk8KK2xvZ2dpbmcubGV2ZWwub3JnLmhpYmVybmF0ZS5TUUw9d2FybgorbG9nZ2luZy5sZXZlbC5vcmcuaGliZXJuYXRlLnR5cGUuZGVzY3JpcHRvci5zcWw9ZGVidWcKKworCitibHVlcHJpbnRzLmxvYWQuaW5pdGlhbC1kYXRhPXRydWUKK2JsdWVwcmludHMubG9hZC5wYXRoPWxvYWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvcmVzb3VyY2VzL2VuaGFuY2UvZW5oYW5jZS10ZW1wbGF0ZS5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2UtdGVtcGxhdGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjRmZDlkCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2UtdGVtcGxhdGUuanNvbgpAQCAtMCwwICsxLDM0NSBAQAorew0KKyAgIm1ldGFkYXRhIjogew0KKyAgICAidGVtcGxhdGVfYXV0aG9yIjogIkJyaW5kYSBTYW50aCIsDQorICAgICJ0ZW1wbGF0ZV9uYW1lIjogImVuaGFuY2UtdGVtcGxhdGUiLA0KKyAgICAidGVtcGxhdGVfdmVyc2lvbiI6ICIxLjAuMCIsDQorICAgICJzZXJ2aWNlLXR5cGUiOiAiU2FtcGxlIFNlcnZpY2UiLA0KKyAgICAicmVsZWFzZSI6ICIxODA2IiwNCisgICAgInZuZi10eXBlIjogIlZQRSINCisgIH0sDQorICAidG9wb2xvZ3lfdGVtcGxhdGUiOiB7DQorICAgICJpbnB1dHMiOiB7DQorICAgICAgInJlcXVlc3QtaWQiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgInNlcnZpY2UtaW5zdGFuY2UtaWQiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgInNjb3BlLXR5cGUiOiB7DQorICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImFjdGlvbi1uYW1lIjogew0KKyAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJob3N0bmFtZSI6IHsNCisgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAibm9kZV90ZW1wbGF0ZXMiOiB7DQorICAgICAgInZwZS1uZXRjb25mLWRldmljZSI6IHsNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJuZXRjb25mIjogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgImxvZ2luLWtleSI6ICJzZG5jIiwNCisgICAgICAgICAgICAgICJsb2dpbi1hY2NvdW50IjogInNuZGMtbG9jYWwiLA0KKyAgICAgICAgICAgICAgInNvdXJjZSI6ICJsb2NhbCIsDQorICAgICAgICAgICAgICAidGFyZ2V0LWlwLWFkZHJlc3MiOiAie1wiZ2V0X2F0dHJpYnV0ZVwiOlwibG8wLWxvY2FsLWlwdjQtYWRkcmVzc1wifSIsDQorICAgICAgICAgICAgICAicG9ydC1udW1iZXIiOiAyMiwNCisgICAgICAgICAgICAgICJjb25uZWN0aW9uLXRpbWUtb3V0IjogMzANCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJ2bmYtbmV0Y29uZi1kZXZpY2UiDQorICAgICAgfSwNCisgICAgICAiYWN0aXZhdGUtbmV0Y29uZi1jb21wb25lbnQiOiB7DQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiY29tcG9uZW50LW5vZGUiOiB7fQ0KKyAgICAgICAgfSwNCisgICAgICAgICJyZXF1aXJlbWVudHMiOiB7DQorICAgICAgICAgICJuZXRjb25mLWNvbm5lY3Rpb24iOiB7DQorICAgICAgICAgICAgImNhcGFiaWxpdHkiOiAibmV0Y29uZiIsDQorICAgICAgICAgICAgIm5vZGUiOiAidnBlLW5ldGNvbmYtZGV2aWNlIiwNCisgICAgICAgICAgICAicmVsYXRpb25zaGlwIjogInRvc2NhLnJlbGF0aW9uc2hpcHMuQ29ubmVjdHNUbyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJpbnRlcmZhY2VzIjogew0KKyAgICAgICAgICAib3JnLW9wZW5lY29tcC1zZG5jLW5ldGNvbmYtYWRhcHRvci1zZXJ2aWNlLU5ldGNvbmZFeGVjdXRvck5vZGUiOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiOiB7DQorICAgICAgICAgICAgICAicHJvY2VzcyI6IHsNCisgICAgICAgICAgICAgICAgImlucHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiOiAieyBcImdldF9pbnB1dFwiIDogXCJhY3Rpb24tbmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZV9uYW1lIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcInRlbXBsYXRlX25hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvblwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIjogInZuZi10eXBlIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWVzdC1pZCI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcInJlcXVlc3QtaWRcIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJob3N0bmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJleGVjdXRpb24tc2NyaXB0IjogImV4ZWN1dGlvbi1zY3JpcHQiDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIjogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcIm5ldGNvbmYtZXhlY3V0b3ItYmFzZWNvbmZpZy5yZXNwb25zZS1kYXRhXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJuZXRjb25mLWV4ZWN1dG9yLWJhc2Vjb25maWcuc3RhdHVzXCIgfSINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9uIiA6IHsNCisgICAgICAgICAgICAgICAgICAicHJpbWFyeSIgOiAiZmlsZTovL25ldGNvbmZfYWRhcHRvci9EZWZhdWx0QmFzZUxpY2VuY2VDb25maWcucHkiDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJjb21wb25lbnQtbmV0Y29uZi1leGVjdXRvciINCisgICAgICB9LA0KKyAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXJhLWNvbXBvbmVudCI6IHsNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJjb21wb25lbnQtbm9kZSI6IHt9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiOiB7DQorICAgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLWFzc2lnbm1lbnQtc2VydmljZS1Db25maWdBc3NpZ25tZW50Tm9kZSI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIjogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIjogew0KKyAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZS1uYW1lcyI6IFsNCisgICAgICAgICAgICAgICAgICAgICJiYXNlLWNvbmZpZy10ZW1wbGF0ZSIsDQorICAgICAgICAgICAgICAgICAgICAibGljZW5jZS10ZW1wbGF0ZSINCisgICAgICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgICAgICJhY3Rpb24tbmFtZSI6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcImFjdGlvbi1uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJ0ZW1wbGF0ZV9uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvbiI6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb25cIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSI6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiOiAieyBcImdldF9pbnB1dFwiIDogXCJyZXF1ZXN0LWlkXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIjogInsgXCJnZXRfaW5wdXRcIiA6IFwiaG9zdG5hbWVcIiB9Ig0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAib3V0cHV0cyI6IHsNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiOiAic3VjY2VzcyIsDQorICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJzdGF0dXMiDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCINCisgICAgICB9LA0KKyAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LWFjdGlvbiI6IHsNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAibW9kZSI6ICJzeW5jIiwNCisgICAgICAgICAgInZlcnNpb24iOiAiTEFURVNUIiwNCisgICAgICAgICAgImlzLXN0YXJ0LWZsb3ciOiAiZmFsc2UiDQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVtZW50cyI6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKyAgICAgICAgICAgICJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisgICAgICAgICAgICAibm9kZSI6ICJyZXNvdXJjZS1hc3NpZ25tZW50LXJhLWNvbXBvbmVudCIsDQorICAgICAgICAgICAgInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJkZy1ub2RlIjoge30sDQorICAgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgInR5cGUiOiAianNvbiINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICAgIkNPTkZJRyI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJSZXNvdXJjZUFzc2lnbm1lbnQiOiB7DQorICAgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgInBhcmFtcyI6IFtdDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJkZy1yZXNvdXJjZS1hc3NpZ25tZW50Ig0KKyAgICAgIH0sDQorICAgICAgImFjdGl2YXRlLWFjdGlvbiI6IHsNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAibW9kZSI6ICJzeW5jIiwNCisgICAgICAgICAgInZlcnNpb24iOiAiTEFURVNUIiwNCisgICAgICAgICAgImlzLXN0YXJ0LWZsb3ciOiAiZmFsc2UiDQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVtZW50cyI6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1kZXBlbmRlbmN5Ijogew0KKyAgICAgICAgICAgICJjYXBhYmlsaXR5IjogImNvbXBvbmVudC1ub2RlIiwNCisgICAgICAgICAgICAibm9kZSI6ICJhY3RpdmF0ZS1uZXRjb25mLWNvbXBvbmVudCIsDQorICAgICAgICAgICAgInJlbGF0aW9uc2hpcCI6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiOiB7DQorICAgICAgICAgICJkZy1ub2RlIjoge30sDQorICAgICAgICAgICJjb250ZW50Ijogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgInR5cGUiOiAianNvbiINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyI6IHsNCisgICAgICAgICAgIkNPTkZJRyI6IHsNCisgICAgICAgICAgICAib3BlcmF0aW9ucyI6IHsNCisgICAgICAgICAgICAgICJBY3RpdmF0ZU5ldGNvbmYiOiB7DQorICAgICAgICAgICAgICAgICJpbnB1dHMiOiB7DQorICAgICAgICAgICAgICAgICAgInBhcmFtcyI6IFtdDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAidHlwZSI6ICJkZy1hY3RpdmF0ZS1uZXRjb25mIg0KKyAgICAgIH0sDQorICAgICAgImJhc2UtY29uZmlnLXRlbXBsYXRlIjogew0KKyAgICAgICAgImNhcGFiaWxpdGllcyI6IHsNCisgICAgICAgICAgImNvbnRlbnQiOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAiY29udGVudCI6ICJkYjovL2Jhc2UtY29uZmlnLXRlbXBsYXRlIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm1hcHBpbmciOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICAgICAibWFwcGluZyI6IFsNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICJuYW1lIjogImJ1bmRsZS1tYWMiLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsDQorICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIiIsDQorICAgICAgICAgICAgICAgICAgICAiY29uc3RyYWludHMiOiBbDQorICAgICAgICAgICAgICAgICAgICAgIHt9DQorICAgICAgICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiIg0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJidW5kbGUtbWFjIiwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiAiZGIiLA0KKyAgICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbDQorICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUiDQorICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDANCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICJuYW1lIjogIndhbi1hZ2dyZWdhdGUtaXB2NC1hZGRyZXNzZXMiLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImxpc3QiLA0KKyAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICIiLA0KKyAgICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnRzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgICB7fQ0KKyAgICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiOiB7DQorICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImR0LXY0LWFnZ3JlZ2F0ZSINCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAid2FuLWFnZ3JlZ2F0ZS1pcHY0LWFkZHJlc3NlcyIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogIm1kc2FsIiwNCisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogWw0KKyAgICAgICAgICAgICAgICAgICAgInNlcnZpY2UtaW5zdGFuY2UtaWQiLA0KKyAgICAgICAgICAgICAgICAgICAgIm9hbS1uZXR3b3JrLXJvbGUiLA0KKyAgICAgICAgICAgICAgICAgICAgIm9hbS12NC1pcC10eXBlICIsDQorICAgICAgICAgICAgICAgICAgICAib2FtLXZtLXR5cGUiDQorICAgICAgICAgICAgICAgICAgXSwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDANCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICJuYW1lIjogImhvc3RuYW1lIiwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJob3N0bmFtZSIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogImlucHV0IiwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDAsDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogZmFsc2UNCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICJuYW1lIjogInNlcnZpY2UiLA0KKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSI6IHsNCisgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IHRydWUsDQorICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIjogInNlcnZpY2UiLA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSI6ICJpbnB1dCIsDQorICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAwLA0KKyAgICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSI6IGZhbHNlDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXJ2aWNlLWluc3RhbmNlLWlkIiwNCisgICAgICAgICAgICAgICAgICAicHJvcGVydHkiOiB7DQorICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSI6ICJzZXJ2aWNlLWluc3RhbmNlLWlkIiwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiAiaW5wdXQiLA0KKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogMCwNCisgICAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iOiBmYWxzZQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICBdDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInByb3BlcnRpZXMiOiB7DQorICAgICAgICAgICJhY3Rpb24tbmFtZXMiOiBbDQorICAgICAgICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtYWN0aW9uIg0KKyAgICAgICAgICBdDQorICAgICAgICB9LA0KKyAgICAgICAgInR5cGUiOiAiYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlIg0KKyAgICAgIH0sDQorICAgICAgImxpY2VuY2UtdGVtcGxhdGUiOiB7DQorICAgICAgICAiY2FwYWJpbGl0aWVzIjogew0KKyAgICAgICAgICAiY29udGVudCI6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyI6IHsNCisgICAgICAgICAgICAgICJjb250ZW50IjogImRiOi8vbGljZW5jZS10ZW1wbGF0ZSINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0sDQorICAgICAgICAgICJtYXBwaW5nIjogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAgICAgIm1hcHBpbmciOiBbDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAibmFtZSI6ICJsaWNlbnNlcyIsDQorICAgICAgICAgICAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIiIsDQorICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAibGlzdCIsDQorICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIiIsDQorICAgICAgICAgICAgICAgICAgICAiY29uc3RyYWludHMiOiBbDQorICAgICAgICAgICAgICAgICAgICAgIHt9DQorICAgICAgICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSI6IHsNCisgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZHQtbGljZW5zZS1rZXkiDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIjogImxpY2Vuc2VzIiwNCisgICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiOiAibWRzYWwiLA0KKyAgICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbDQorICAgICAgICAgICAgICAgICAgICAic2VydmljZS1pbnN0YW5jZS1pZCINCisgICAgICAgICAgICAgICAgICBdLA0KKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogMA0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICAgInByb3BlcnR5Ijogew0KKyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyINCisgICAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIjogImlucHV0IiwNCisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6IDAsDQorICAgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIjogZmFsc2UNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgXQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJwcm9wZXJ0aWVzIjogew0KKyAgICAgICAgICAiYWN0aW9uLW5hbWVzIjogWw0KKyAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LWFjdGlvbiINCisgICAgICAgICAgXQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ0eXBlIjogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSINCisgICAgICB9DQorICAgIH0NCisgIH0sDQorICAibm9kZV90eXBlcyI6IHsNCisgIH0sDQorICAiZGF0YV90eXBlcyI6IHsNCisgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2VkLXRlbXBsYXRlLmpzb24gYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvcmVzb3VyY2VzL2VuaGFuY2UvZW5oYW5jZWQtdGVtcGxhdGUuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY0OTkyCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9lbmhhbmNlL2VuaGFuY2VkLXRlbXBsYXRlLmpzb24KQEAgLTAsMCArMSw4MjQgQEAKK3sNCisgICJtZXRhZGF0YSIgOiB7DQorICAgICJ0ZW1wbGF0ZV9hdXRob3IiIDogIkJyaW5kYSBTYW50aCIsDQorICAgICJ0ZW1wbGF0ZV9uYW1lIiA6ICJlbmhhbmNlLXRlbXBsYXRlIiwNCisgICAgInRlbXBsYXRlX3ZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgInNlcnZpY2UtdHlwZSIgOiAiU2FtcGxlIFNlcnZpY2UiLA0KKyAgICAicmVsZWFzZSIgOiAiMTgwNiIsDQorICAgICJ2bmYtdHlwZSIgOiAiVlBFIg0KKyAgfSwNCisgICJ0b3NjYV9kZWZpbml0aW9uc192ZXJzaW9uIiA6ICJjb250cm9sbGVyX2JsdWVwcmludF8xXzBfMCIsDQorICAiYXJ0aWZhY3RfdHlwZXMiIDogeyB9LA0KKyAgImRhdGFfdHlwZXMiIDogew0KKyAgICAiZHQtdjQtYWdncmVnYXRlIiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iIDogIlRoaXMgaXMgZHQtdjQtYWdncmVnYXRlIERhdGEgVHlwZSIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiaXB2NC1hZGRyZXNzIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImlwdjQtcGxlbiIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogImludGVnZXIiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIiA6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisgICAgfSwNCisgICAgImR0LWxpY2Vuc2Uta2V5IiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iIDogIlRoaXMgaXMgZHQtcGxpY2Vuc2Uta2V5IERhdGEgVHlwZSIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAibGljZW5zZS1rZXkiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iIDogInRvc2NhLmRhdGF0eXBlcy5Sb290Ig0KKyAgICB9LA0KKyAgICAiZGF0YXR5cGUtcmVzb3VyY2UtYXNzaWdubWVudCIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgRGF0YSBUeXBlIiwNCisgICAgICAidmVyc2lvbiIgOiAiMS4wLjAiLA0KKyAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAiZGF0YXR5cGUtcHJvcGVydHkiDQorICAgICAgICB9LA0KKyAgICAgICAgImlucHV0LXBhcmFtIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgImRpY3Rpb25hcnktc291cmNlIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXBlbmRlbmNpZXMiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogImxpc3QiLA0KKyAgICAgICAgICAiZW50cnlfc2NoZW1hIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICB9DQorICAgICAgICB9LA0KKyAgICAgICAgInN0YXR1cyIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAibWVzc2FnZSIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAidXBkYXRlZC1kYXRlIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ1cGRhdGVkLWJ5IiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSIgOiAidG9zY2EuZGF0YXR5cGVzLlJvb3QiDQorICAgIH0sDQorICAgICJkYXRhdHlwZS1wcm9wZXJ0eSIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIEVudHJ5IHBvaW50IElucHV0IERhdGEgVHlwZSwgd2hpY2ggaXMgZHluYW1pYyBkYXRhdHlwZSwgVGhlIHBhcmFtZXRlciBuYW1lcyB3aWxsIGJlIHBvcHVsYXRlZCBkdXJpbmcgdGhlIERlc2lnbiB0aW1lIGZvciBlYWNoIGlucHV0cyIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAidHlwZSIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0sDQorICAgICAgICAicmVxdWlyZWQiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIg0KKyAgICAgICAgfSwNCisgICAgICAgICJkZWZhdWx0IiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIiA6ICJ0b3NjYS5kYXRhdHlwZXMuUm9vdCINCisgICAgfSwNCisgICAgImR0LXJlc291cmNlLWFzc2lnbm1lbnQtcmVxdWVzdCIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIER5bmFtaWMgRGF0YSB0eXBlIGRlZmluaXRpb24gZ2VuZXJhdGVkIGZyb20gcmVzb3VyY2UgbWFwcGluZyBmb3IgdGhlIGNvbmZpZyB0ZW1wbGF0ZSBuYW1lIGJhc2UtY29uZmlnLXRlbXBsYXRlLiIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiYnVuZGxlLW1hYyIgOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KKyAgICAgICAgICAic3RhdHVzIiA6ICIiLA0KKyAgICAgICAgICAiY29uc3RyYWludHMiIDogWyB7IH0gXSwNCisgICAgICAgICAgImVudHJ5X3NjaGVtYSIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogIiINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJob3N0bmFtZSIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgfSwNCisgICAgICAgICJsaWNlbnNlcyIgOiB7DQorICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJsaXN0IiwNCisgICAgICAgICAgInN0YXR1cyIgOiAiIiwNCisgICAgICAgICAgImNvbnN0cmFpbnRzIiA6IFsgeyB9IF0sDQorICAgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAgICJ0eXBlIiA6ICJkdC1saWNlbnNlLWtleSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJ3YW4tYWdncmVnYXRlLWlwdjQtYWRkcmVzc2VzIiA6IHsNCisgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogImxpc3QiLA0KKyAgICAgICAgICAic3RhdHVzIiA6ICIiLA0KKyAgICAgICAgICAiY29uc3RyYWludHMiIDogWyB7IH0gXSwNCisgICAgICAgICAgImVudHJ5X3NjaGVtYSIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogImR0LXY0LWFnZ3JlZ2F0ZSINCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJzZXJ2aWNlIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICB9LA0KKyAgICAgICAgInNlcnZpY2UtaW5zdGFuY2UtaWQiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iIDogInRvc2NhLmRhdGF0eXBlcy5EeW5hbWljIg0KKyAgICB9DQorICB9LA0KKyAgIm5vZGVfdHlwZXMiIDogew0KKyAgICAiZGctcmVzb3VyY2UtYXNzaWdubWVudCIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgRGlyZWN0ZWQgR3JhcGgiLA0KKyAgICAgICJ2ZXJzaW9uIiA6ICIxLjAuMCIsDQorICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgIm1vZGUiIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KKyAgICAgICAgICAiZGVmYXVsdCIgOiAic3luYyINCisgICAgICAgIH0sDQorICAgICAgICAidmVyc2lvbiIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQorICAgICAgICAgICJkZWZhdWx0IiA6ICJMQVRFU1QiDQorICAgICAgICB9LA0KKyAgICAgICAgImlzLXN0YXJ0LWZsb3ciIDogew0KKyAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICJ0eXBlIiA6ICJib29sZWFuIiwNCisgICAgICAgICAgImRlZmF1bHQiIDogImZhbHNlIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImNhcGFiaWxpdGllcyIgOiB7DQorICAgICAgICAiZGctbm9kZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgICAgIH0sDQorICAgICAgICAiY29udGVudCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCIgOiAianNvbiINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJjb250ZW50IiA6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVxdWlyZW1lbnRzIiA6IHsNCisgICAgICAgICJjb21wb25lbnQtZGVwZW5kZW5jeSIgOiB7DQorICAgICAgICAgICJjYXBhYmlsaXR5IiA6ICJjb21wb25lbnQtbm9kZSIsDQorICAgICAgICAgICJub2RlIiA6ICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIsDQorICAgICAgICAgICJyZWxhdGlvbnNoaXAiIDogInRvc2NhLnJlbGF0aW9uc2hpcHMuRGVwZW5kc09uIg0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImludGVyZmFjZXMiIDogew0KKyAgICAgICAgIkNPTkZJRyIgOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAiUmVzb3VyY2VBc3NpZ25tZW50IiA6IHsNCisgICAgICAgICAgICAgICJpbnB1dHMiIDogew0KKyAgICAgICAgICAgICAgICAicGFyYW1zIiA6IHsNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogImxpc3QiLA0KKyAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogImRhdGF0eXBlLXByb3BlcnR5Ig0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSIgOiAidG9zY2Eubm9kZXMuREciDQorICAgIH0sDQorICAgICJjb21wb25lbnQtcmVzb3VyY2UtYXNzaWdubWVudCIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIFJlc291cmNlIEFzc2lnbm1lbnQgQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICJjb21wb25lbnQtbm9kZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIiA6IHsNCisgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtY29uZmlnLWFzc2lnbm1lbnQtc2VydmljZS1Db25maWdBc3NpZ25tZW50Tm9kZSIgOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAicHJvY2VzcyIgOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJTZXJ2aWNlIFRlbXBsYXRlIE5hbWUuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2UgVGVtcGxhdGUgVmVyc2lvbi4iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlJlcXVlc3QgdHlwZS4iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZS1uYW1lcyIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBhcnRpZmFjdCBOb2RlIFRlbXBsYXRlcywgdG8gZ2V0IHRoZSB0ZW1wbGF0ZSBDb250ZW50LiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogImxpc3QiLA0KKyAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJyZXF1ZXN0LWlkIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlJlcXVlc3QgSWQsIFVuaXF1ZSBJZCBmb3IgdGhlIHJlcXVlc3QuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAicmVzb3VyY2UtaWQiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiUmVzb3VyY2UgSWQuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAiYWN0aW9uLW5hbWUiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiQWN0aW9uIE5hbWUgb2YgdGhlIHByb2Nlc3MiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAib3V0cHV0cyIgOiB7DQorICAgICAgICAgICAgICAgICJyZXNvdXJjZS1hc3NpZ25tZW50LXBhcmFtcyIgOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInN0YXR1cyIgOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSIgOiAidG9zY2Eubm9kZXMuQ29tcG9uZW50Ig0KKyAgICB9LA0KKyAgICAiYXJ0aWZhY3QtY29uZmlnLXRlbXBsYXRlIiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iIDogIlRoaXMgaXMgQ29uZmlndXJhdGlvbiBWZWxvY2l0eSBUZW1wbGF0ZSIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAiYWN0aW9uLW5hbWVzIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICJ0eXBlIiA6ICJsaXN0IiwNCisgICAgICAgICAgImVudHJ5X3NjaGVtYSIgOiB7DQorICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImNhcGFiaWxpdGllcyIgOiB7DQorICAgICAgICAiY29udGVudCIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJ0b3NjYS5jYXBhYmlsaXR5LkNvbnRlbnQiLA0KKyAgICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgImNvbnRlbnQiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfSwNCisgICAgICAgICJtYXBwaW5nIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInRvc2NhLmNhcGFiaWxpdHkuTWFwcGluZyIsDQorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAibWFwcGluZyIgOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSIgOiAibGlzdCIsDQorICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICAgInR5cGUiIDogImRhdGF0eXBlLXJlc291cmNlLWFzc2lnbm1lbnQiDQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIiA6ICJ0b3NjYS5ub2Rlcy5BcnRpZmFjdCINCisgICAgfSwNCisgICAgInZuZi1uZXRjb25mLWRldmljZSIgOiB7DQorICAgICAgImRlc2NyaXB0aW9uIiA6ICJUaGlzIGlzIFZORiBEZXZpY2Ugd2l0aCBOZXRjb25mICBDYXBhYmlsaXR5IiwNCisgICAgICAidmVyc2lvbiIgOiAiMS4wLjAiLA0KKyAgICAgICJjYXBhYmlsaXRpZXMiIDogew0KKyAgICAgICAgIm5ldGNvbmYiIDogew0KKyAgICAgICAgICAidHlwZSIgOiAidG9zY2EuY2FwYWJpbGl0eS5OZXRjb25mIiwNCisgICAgICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICJsb2dpbi1rZXkiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJzZG5jIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImxvZ2luLWFjY291bnQiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJzZG5jLXRhY2FjcyINCisgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICJzb3VyY2UiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJucG0iDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAidGFyZ2V0LWlwLWFkZHJlc3MiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgInBvcnQtbnVtYmVyIiA6IHsNCisgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgInR5cGUiIDogImludGVnZXIiLA0KKyAgICAgICAgICAgICAgImRlZmF1bHQiIDogODMwDQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAiY29ubmVjdGlvbi10aW1lLW91dCIgOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSIgOiAiaW50ZWdlciIsDQorICAgICAgICAgICAgICAiZGVmYXVsdCIgOiAzMA0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImRlcml2ZWRfZnJvbSIgOiAidG9zY2Eubm9kZXMuVm5mIg0KKyAgICB9LA0KKyAgICAiY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IiIDogew0KKyAgICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBpcyBOZXRjb25mIFRyYW5zYWN0aW9uIENvbmZpZ3VyYXRpb24gQ29tcG9uZW50IEFQSSIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICJjb21wb25lbnQtbm9kZSIgOiB7DQorICAgICAgICAgICJ0eXBlIiA6ICJ0b3NjYS5jYXBhYmlsaXRpZXMuTm9kZSINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJyZXF1aXJlbWVudHMiIDogew0KKyAgICAgICAgIm5ldGNvbmYtY29ubmVjdGlvbiIgOiB7DQorICAgICAgICAgICJjYXBhYmlsaXR5IiA6ICJuZXRjb25mIiwNCisgICAgICAgICAgIm5vZGUiIDogInZuZi1uZXRjb25mLWRldmljZSIsDQorICAgICAgICAgICJyZWxhdGlvbnNoaXAiIDogInRvc2NhLnJlbGF0aW9uc2hpcHMuQ29ubmVjdHNUbyINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIiA6IHsNCisgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZkV4ZWN1dG9yTm9kZSIgOiB7DQorICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAicHJvY2VzcyIgOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiUmVxdWVzdCBJZCB1c2VkIHRvIHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJhdGlvbiwgaW4gdGhlIGRhdGFiYXNlIGFsb25nIHdpdGggdGhlIHRlbXBsYXRlLW5hbWUiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLW5hbWUiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiU2VydmljZSBUZW1wbGF0ZSBOYW1lIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlNlcnZpY2UgVGVtcGxhdGUgVmVyc2lvbiIsDQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIkFjdGlvbiBOYW1lIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc291cmNlLXR5cGUiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiUmVzb3VyY2UgVHlwZSB0byBnZXQgZnJvbSBEYXRhYmFzZSwgRWl0aGVyIChtZXNzYWdlICYgbWFzay1pbmZvICkgb3IoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc291cmNlLWlkIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlJlc291cmNlIElkIHRvIGdldCBmcm9tIERhdGFiYXNlLCBFaXRoZXIgKG1lc3NhZ2UgJiBtYXNrLWluZm8gKSBvciAoIHJlc291cmNlLWlkICYgcmVzb3VyY2UtdHlwZSAmIGFjdGlvbi1uYW1lICYgdGVtcGxhdGUtbmFtZSApIHNob3VsZCBiZSBwcmVzZW50LiBNZXNzYWdlIHdpbGwgYmUgZ2l2ZW4gaGlnZXN0IHByaW9yaXR5IiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgInJlc2VydmF0aW9uLWlkIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlJlc2VydmF0aW9uIElkIHVzZWQgdG8gc2VuZCB0byBOUE0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAiZXhlY3V0aW9uLXNjcmlwdCIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJQeXRob24gU2NyaXB0IHRvIEV4ZWN1dGUgZm9yIHRoaXMgQ29tcG9uZW50IGFjdGlvbiwgSXQgc2hvdWxkIHJlZmVyIGFueSBvbmUgb2YgUHJ5dGhvbiBBcnRpZmFjdCBEZWZpbml0aW9uIGZvciB0aGlzIE5vZGUgVGVtcGxhdGUuIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgIm91dHB1dHMiIDogew0KKyAgICAgICAgICAgICAgICAicmVzcG9uc2UtZGF0YSIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICJFeGVjdXRpb24gUmVzcG9uc2UgRGF0YSBpbiBKU09OIGZvcm1hdC4iLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAic3RhdHVzIiA6IHsNCisgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iIDogIlN0YXR1cyBvZiB0aGUgQ29tcG9uZW50IEV4ZWN1dGlvbiAoIHN1Y2Nlc3Mgb3IgZmFpbHVyZSApIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiZGVyaXZlZF9mcm9tIiA6ICJ0b3NjYS5ub2Rlcy5Db21wb25lbnQiDQorICAgIH0sDQorICAgICJkZy1hY3RpdmF0ZS1uZXRjb25mIiA6IHsNCisgICAgICAiZGVzY3JpcHRpb24iIDogIlRoaXMgaXMgRG93bmxvYWQgTmV0Y29uZiBEaXJlY3RlZCBHcmFwaCIsDQorICAgICAgInZlcnNpb24iIDogIjEuMC4wIiwNCisgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAibW9kZSIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogInN0cmluZyIsDQorICAgICAgICAgICJkZWZhdWx0IiA6ICJzeW5jIg0KKyAgICAgICAgfSwNCisgICAgICAgICJ2ZXJzaW9uIiA6IHsNCisgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgImRlZmF1bHQiIDogIkxBVEVTVCINCisgICAgICAgIH0sDQorICAgICAgICAiaXMtc3RhcnQtZmxvdyIgOiB7DQorICAgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICAgInR5cGUiIDogImJvb2xlYW4iLA0KKyAgICAgICAgICAiZGVmYXVsdCIgOiAiZmFsc2UiDQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICJkZy1ub2RlIiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInRvc2NhLmNhcGFiaWxpdGllcy5Ob2RlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjb250ZW50IiA6IHsNCisgICAgICAgICAgInR5cGUiIDogInRvc2NhLmNhcGFiaWxpdHkuQ29udGVudCIsDQorICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAidHlwZSIgOiB7DQorICAgICAgICAgICAgICAicmVxdWlyZWQiIDogZmFsc2UsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIiwNCisgICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJqc29uIg0KKyAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgImNvbnRlbnQiIDogew0KKyAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlcXVpcmVtZW50cyIgOiB7DQorICAgICAgICAiY29tcG9uZW50LWRlcGVuZGVuY3kiIDogew0KKyAgICAgICAgICAiY2FwYWJpbGl0eSIgOiAiY29tcG9uZW50LW5vZGUiLA0KKyAgICAgICAgICAibm9kZSIgOiAiY29tcG9uZW50LW5ldGNvbmYtZXhlY3V0b3IiLA0KKyAgICAgICAgICAicmVsYXRpb25zaGlwIiA6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkRlcGVuZHNPbiINCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJpbnRlcmZhY2VzIiA6IHsNCisgICAgICAgICJDT05GSUciIDogew0KKyAgICAgICAgICAib3BlcmF0aW9ucyIgOiB7DQorICAgICAgICAgICAgIkFjdGl2YXRlTmV0Y29uZiIgOiB7DQorICAgICAgICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgInBhcmFtcyIgOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJsaXN0IiwNCisgICAgICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJkYXRhdHlwZS1wcm9wZXJ0eSINCisgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9LA0KKyAgICAgICJkZXJpdmVkX2Zyb20iIDogInRvc2NhLm5vZGVzLkRHIg0KKyAgICB9DQorICB9LA0KKyAgInRvcG9sb2d5X3RlbXBsYXRlIiA6IHsNCisgICAgImlucHV0cyIgOiB7DQorICAgICAgInJlcXVlc3QtaWQiIDogew0KKyAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgInNlcnZpY2UtaW5zdGFuY2UtaWQiIDogew0KKyAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgInNjb3BlLXR5cGUiIDogew0KKyAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgIH0sDQorICAgICAgImFjdGlvbi1uYW1lIiA6IHsNCisgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICB9LA0KKyAgICAgICJob3N0bmFtZSIgOiB7DQorICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1yZXF1ZXN0IiA6IHsNCisgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiVGhpcyBpcyBEeW5hbWljIERhdGEgdHlwZSBmb3IgdGhlIHJlY2VpcGUgcmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24uIiwNCisgICAgICAgICJyZXF1aXJlZCIgOiBmYWxzZSwNCisgICAgICAgICJ0eXBlIiA6ICJkdC1yZXNvdXJjZS1hc3NpZ25tZW50LXJlcXVlc3QiDQorICAgICAgfQ0KKyAgICB9LA0KKyAgICAibm9kZV90ZW1wbGF0ZXMiIDogew0KKyAgICAgICJ2cGUtbmV0Y29uZi1kZXZpY2UiIDogew0KKyAgICAgICAgInR5cGUiIDogInZuZi1uZXRjb25mLWRldmljZSIsDQorICAgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICAgIm5ldGNvbmYiIDogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJsb2dpbi1rZXkiIDogInNkbmMiLA0KKyAgICAgICAgICAgICAgImxvZ2luLWFjY291bnQiIDogInNuZGMtbG9jYWwiLA0KKyAgICAgICAgICAgICAgInNvdXJjZSIgOiAibG9jYWwiLA0KKyAgICAgICAgICAgICAgInRhcmdldC1pcC1hZGRyZXNzIiA6ICJ7XCJnZXRfYXR0cmlidXRlXCI6XCJsbzAtbG9jYWwtaXB2NC1hZGRyZXNzXCJ9IiwNCisgICAgICAgICAgICAgICJwb3J0LW51bWJlciIgOiAyMiwNCisgICAgICAgICAgICAgICJjb25uZWN0aW9uLXRpbWUtb3V0IiA6IDMwDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiYWN0aXZhdGUtbmV0Y29uZi1jb21wb25lbnQiIDogew0KKyAgICAgICAgInR5cGUiIDogImNvbXBvbmVudC1uZXRjb25mLWV4ZWN1dG9yIiwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiIDogew0KKyAgICAgICAgICAiY29tcG9uZW50LW5vZGUiIDogeyB9DQorICAgICAgICB9LA0KKyAgICAgICAgInJlcXVpcmVtZW50cyIgOiB7DQorICAgICAgICAgICJuZXRjb25mLWNvbm5lY3Rpb24iIDogew0KKyAgICAgICAgICAgICJjYXBhYmlsaXR5IiA6ICJuZXRjb25mIiwNCisgICAgICAgICAgICAibm9kZSIgOiAidnBlLW5ldGNvbmYtZGV2aWNlIiwNCisgICAgICAgICAgICAicmVsYXRpb25zaGlwIiA6ICJ0b3NjYS5yZWxhdGlvbnNoaXBzLkNvbm5lY3RzVG8iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyIgOiB7DQorICAgICAgICAgICJvcmctb3BlbmVjb21wLXNkbmMtbmV0Y29uZi1hZGFwdG9yLXNlcnZpY2UtTmV0Y29uZkV4ZWN1dG9yTm9kZSIgOiB7DQorICAgICAgICAgICAgIm9wZXJhdGlvbnMiIDogew0KKyAgICAgICAgICAgICAgInByb2Nlc3MiIDogew0KKyAgICAgICAgICAgICAgICAiaW1wbGVtZW50YXRpb24iIDogew0KKyAgICAgICAgICAgICAgICAgICJwcmltYXJ5IiA6ICJmaWxlOi8vbmV0Y29uZl9hZGFwdG9yL0RlZmF1bHRCYXNlTGljZW5jZUNvbmZpZy5weSINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImlucHV0cyIgOiB7DQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIiA6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcImFjdGlvbi1uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInRlbXBsYXRlX25hbWUiIDogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcInRlbXBsYXRlX25hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAic2VydmljZS10ZW1wbGF0ZS12ZXJzaW9uIiA6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb25cIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtdHlwZSIgOiAidm5mLXR5cGUiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1ZXN0LWlkIiA6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcInJlcXVlc3QtaWRcIiB9IiwNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtaWQiIDogInsgXCJnZXRfaW5wdXRcIiA6IFwiaG9zdG5hbWVcIiB9IiwNCisgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uLXNjcmlwdCIgOiAiZXhlY3V0aW9uLXNjcmlwdCINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgIm91dHB1dHMiIDogew0KKyAgICAgICAgICAgICAgICAgICJyZXNwb25zZS1kYXRhIiA6ICJ7IFwiZ2V0X2F0dHJpYnV0ZVwiIDogXCJuZXRjb25mLWV4ZWN1dG9yLWJhc2Vjb25maWcucmVzcG9uc2UtZGF0YVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiIDogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcIm5ldGNvbmYtZXhlY3V0b3ItYmFzZWNvbmZpZy5zdGF0dXNcIiB9Ig0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1yYS1jb21wb25lbnQiIDogew0KKyAgICAgICAgInR5cGUiIDogImNvbXBvbmVudC1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiIDogew0KKyAgICAgICAgICAiY29tcG9uZW50LW5vZGUiIDogeyB9DQorICAgICAgICB9LA0KKyAgICAgICAgImludGVyZmFjZXMiIDogew0KKyAgICAgICAgICAib3JnLW9wZW5lY29tcC1zZG5jLWNvbmZpZy1hc3NpZ25tZW50LXNlcnZpY2UtQ29uZmlnQXNzaWdubWVudE5vZGUiIDogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAgICJwcm9jZXNzIiA6IHsNCisgICAgICAgICAgICAgICAgImlucHV0cyIgOiB7DQorICAgICAgICAgICAgICAgICAgInRlbXBsYXRlLW5hbWVzIiA6IFsgImJhc2UtY29uZmlnLXRlbXBsYXRlIiwgImxpY2VuY2UtdGVtcGxhdGUiIF0sDQorICAgICAgICAgICAgICAgICAgImFjdGlvbi1uYW1lIiA6ICJ7IFwiZ2V0X2lucHV0XCIgOiBcImFjdGlvbi1uYW1lXCIgfSIsDQorICAgICAgICAgICAgICAgICAgInNlcnZpY2UtdGVtcGxhdGUtbmFtZSIgOiAieyBcImdldF9hdHRyaWJ1dGVcIiA6IFwidGVtcGxhdGVfbmFtZVwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJzZXJ2aWNlLXRlbXBsYXRlLXZlcnNpb24iIDogInsgXCJnZXRfYXR0cmlidXRlXCIgOiBcInNlcnZpY2UtdGVtcGxhdGUtdmVyc2lvblwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS10eXBlIiA6ICJ2bmYtdHlwZSIsDQorICAgICAgICAgICAgICAgICAgInJlcXVlc3QtaWQiIDogInsgXCJnZXRfaW5wdXRcIiA6IFwicmVxdWVzdC1pZFwiIH0iLA0KKyAgICAgICAgICAgICAgICAgICJyZXNvdXJjZS1pZCIgOiAieyBcImdldF9pbnB1dFwiIDogXCJob3N0bmFtZVwiIH0iDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJvdXRwdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgICAicmVzb3VyY2UtYXNzaWdubWVudC1wYXJhbXMiIDogInN1Y2Nlc3MiLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiIDogInN0YXR1cyINCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgInJlc291cmNlLWFzc2lnbm1lbnQtYWN0aW9uIiA6IHsNCisgICAgICAgICJ0eXBlIiA6ICJkZy1yZXNvdXJjZS1hc3NpZ25tZW50IiwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgIm1vZGUiIDogInN5bmMiLA0KKyAgICAgICAgICAidmVyc2lvbiIgOiAiTEFURVNUIiwNCisgICAgICAgICAgImlzLXN0YXJ0LWZsb3ciIDogImZhbHNlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiIDogew0KKyAgICAgICAgICAiZGctbm9kZSIgOiB7IH0sDQorICAgICAgICAgICJjb250ZW50IiA6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAianNvbiINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicmVxdWlyZW1lbnRzIiA6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1kZXBlbmRlbmN5IiA6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSIgOiAiY29tcG9uZW50LW5vZGUiLA0KKyAgICAgICAgICAgICJub2RlIiA6ICJyZXNvdXJjZS1hc3NpZ25tZW50LXJhLWNvbXBvbmVudCIsDQorICAgICAgICAgICAgInJlbGF0aW9uc2hpcCIgOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyIgOiB7DQorICAgICAgICAgICJDT05GSUciIDogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAgICJSZXNvdXJjZUFzc2lnbm1lbnQiIDogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgICAicGFyYW1zIiA6IFsgXQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiYWN0aXZhdGUtYWN0aW9uIiA6IHsNCisgICAgICAgICJ0eXBlIiA6ICJkZy1hY3RpdmF0ZS1uZXRjb25mIiwNCisgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgIm1vZGUiIDogInN5bmMiLA0KKyAgICAgICAgICAidmVyc2lvbiIgOiAiTEFURVNUIiwNCisgICAgICAgICAgImlzLXN0YXJ0LWZsb3ciIDogImZhbHNlIg0KKyAgICAgICAgfSwNCisgICAgICAgICJjYXBhYmlsaXRpZXMiIDogew0KKyAgICAgICAgICAiZGctbm9kZSIgOiB7IH0sDQorICAgICAgICAgICJjb250ZW50IiA6IHsNCisgICAgICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICAgICAidHlwZSIgOiAianNvbiINCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAicmVxdWlyZW1lbnRzIiA6IHsNCisgICAgICAgICAgImNvbXBvbmVudC1kZXBlbmRlbmN5IiA6IHsNCisgICAgICAgICAgICAiY2FwYWJpbGl0eSIgOiAiY29tcG9uZW50LW5vZGUiLA0KKyAgICAgICAgICAgICJub2RlIiA6ICJhY3RpdmF0ZS1uZXRjb25mLWNvbXBvbmVudCIsDQorICAgICAgICAgICAgInJlbGF0aW9uc2hpcCIgOiAidG9zY2EucmVsYXRpb25zaGlwcy5EZXBlbmRzT24iDQorICAgICAgICAgIH0NCisgICAgICAgIH0sDQorICAgICAgICAiaW50ZXJmYWNlcyIgOiB7DQorICAgICAgICAgICJDT05GSUciIDogew0KKyAgICAgICAgICAgICJvcGVyYXRpb25zIiA6IHsNCisgICAgICAgICAgICAgICJBY3RpdmF0ZU5ldGNvbmYiIDogew0KKyAgICAgICAgICAgICAgICAiaW5wdXRzIiA6IHsNCisgICAgICAgICAgICAgICAgICAicGFyYW1zIiA6IFsgXQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgfSwNCisgICAgICAiYmFzZS1jb25maWctdGVtcGxhdGUiIDogew0KKyAgICAgICAgInR5cGUiIDogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICJhY3Rpb24tbmFtZXMiIDogWyAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iIF0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICAgImNvbnRlbnQiIDogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJjb250ZW50IiA6ICJkYjovL2Jhc2UtY29uZmlnLXRlbXBsYXRlIg0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfSwNCisgICAgICAgICAgIm1hcHBpbmciIDogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJtYXBwaW5nIiA6IFsgew0KKyAgICAgICAgICAgICAgICAibmFtZSIgOiAiYnVuZGxlLW1hYyIsDQorICAgICAgICAgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciLA0KKyAgICAgICAgICAgICAgICAgICJzdGF0dXMiIDogIiIsDQorICAgICAgICAgICAgICAgICAgImNvbnN0cmFpbnRzIiA6IFsgeyB9IF0sDQorICAgICAgICAgICAgICAgICAgImVudHJ5X3NjaGVtYSIgOiB7DQorICAgICAgICAgICAgICAgICAgICAidHlwZSIgOiAiIg0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIiA6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIiA6ICJidW5kbGUtbWFjIiwNCisgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIiA6ICJkYiIsDQorICAgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiIDogWyAiaG9zdG5hbWUiIF0sDQorICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6IDANCisgICAgICAgICAgICAgIH0sIHsNCisgICAgICAgICAgICAgICAgIm5hbWUiIDogIndhbi1hZ2dyZWdhdGUtaXB2NC1hZGRyZXNzZXMiLA0KKyAgICAgICAgICAgICAgICAicHJvcGVydHkiIDogew0KKyAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiIgOiAiIiwNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAibGlzdCIsDQorICAgICAgICAgICAgICAgICAgInN0YXR1cyIgOiAiIiwNCisgICAgICAgICAgICAgICAgICAiY29uc3RyYWludHMiIDogWyB7IH0gXSwNCisgICAgICAgICAgICAgICAgICAiZW50cnlfc2NoZW1hIiA6IHsNCisgICAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJkdC12NC1hZ2dyZWdhdGUiDQorICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iIDogZmFsc2UsDQorICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiIDogIndhbi1hZ2dyZWdhdGUtaXB2NC1hZGRyZXNzZXMiLA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiIDogIm1kc2FsIiwNCisgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyIgOiBbICJzZXJ2aWNlLWluc3RhbmNlLWlkIiwgIm9hbS1uZXR3b3JrLXJvbGUiLCAib2FtLXY0LWlwLXR5cGUgIiwgIm9hbS12bS10eXBlIiBdLA0KKyAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAwDQorICAgICAgICAgICAgICB9LCB7DQorICAgICAgICAgICAgICAgICJuYW1lIiA6ICJob3N0bmFtZSIsDQorICAgICAgICAgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSIgOiAiaG9zdG5hbWUiLA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiIDogImlucHV0IiwNCisgICAgICAgICAgICAgICAgInZlcnNpb24iIDogMCwNCisgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIiA6IGZhbHNlDQorICAgICAgICAgICAgICB9LCB7DQorICAgICAgICAgICAgICAgICJuYW1lIiA6ICJzZXJ2aWNlIiwNCisgICAgICAgICAgICAgICAgInByb3BlcnR5IiA6IHsNCisgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiIDogdHJ1ZSwNCisgICAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIg0KKyAgICAgICAgICAgICAgICB9LA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIiA6ICJzZXJ2aWNlIiwNCisgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktc291cmNlIiA6ICJpbnB1dCIsDQorICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6IDAsDQorICAgICAgICAgICAgICAgICJpbnB1dC1wYXJhbSIgOiBmYWxzZQ0KKyAgICAgICAgICAgICAgfSwgew0KKyAgICAgICAgICAgICAgICAibmFtZSIgOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIiA6IHRydWUsDQorICAgICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyINCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImRpY3Rpb25hcnktbmFtZSIgOiAic2VydmljZS1pbnN0YW5jZS1pZCIsDQorICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSIgOiAiaW5wdXQiLA0KKyAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAwLA0KKyAgICAgICAgICAgICAgICAiaW5wdXQtcGFyYW0iIDogZmFsc2UNCisgICAgICAgICAgICAgIH0gXQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0sDQorICAgICAgImxpY2VuY2UtdGVtcGxhdGUiIDogew0KKyAgICAgICAgInR5cGUiIDogImFydGlmYWN0LWNvbmZpZy10ZW1wbGF0ZSIsDQorICAgICAgICAicHJvcGVydGllcyIgOiB7DQorICAgICAgICAgICJhY3Rpb24tbmFtZXMiIDogWyAicmVzb3VyY2UtYXNzaWdubWVudC1hY3Rpb24iIF0NCisgICAgICAgIH0sDQorICAgICAgICAiY2FwYWJpbGl0aWVzIiA6IHsNCisgICAgICAgICAgImNvbnRlbnQiIDogew0KKyAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsNCisgICAgICAgICAgICAgICJjb250ZW50IiA6ICJkYjovL2xpY2VuY2UtdGVtcGxhdGUiDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICB9LA0KKyAgICAgICAgICAibWFwcGluZyIgOiB7DQorICAgICAgICAgICAgInByb3BlcnRpZXMiIDogew0KKyAgICAgICAgICAgICAgIm1hcHBpbmciIDogWyB7DQorICAgICAgICAgICAgICAgICJuYW1lIiA6ICJsaWNlbnNlcyIsDQorICAgICAgICAgICAgICAgICJwcm9wZXJ0eSIgOiB7DQorICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiA6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJsaXN0IiwNCisgICAgICAgICAgICAgICAgICAic3RhdHVzIiA6ICIiLA0KKyAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50cyIgOiBbIHsgfSBdLA0KKyAgICAgICAgICAgICAgICAgICJlbnRyeV9zY2hlbWEiIDogew0KKyAgICAgICAgICAgICAgICAgICAgInR5cGUiIDogImR0LWxpY2Vuc2Uta2V5Ig0KKyAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfSwNCisgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIiA6IGZhbHNlLA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1uYW1lIiA6ICJsaWNlbnNlcyIsDQorICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LXNvdXJjZSIgOiAibWRzYWwiLA0KKyAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIiA6IFsgInNlcnZpY2UtaW5zdGFuY2UtaWQiIF0sDQorICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6IDANCisgICAgICAgICAgICAgIH0sIHsNCisgICAgICAgICAgICAgICAgIm5hbWUiIDogInNlcnZpY2UtaW5zdGFuY2UtaWQiLA0KKyAgICAgICAgICAgICAgICAicHJvcGVydHkiIDogew0KKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCIgOiB0cnVlLA0KKyAgICAgICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciDQorICAgICAgICAgICAgICAgIH0sDQorICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5LW5hbWUiIDogInNlcnZpY2UtaW5zdGFuY2UtaWQiLA0KKyAgICAgICAgICAgICAgICAiZGljdGlvbmFyeS1zb3VyY2UiIDogImlucHV0IiwNCisgICAgICAgICAgICAgICAgInZlcnNpb24iIDogMCwNCisgICAgICAgICAgICAgICAgImlucHV0LXBhcmFtIiA6IGZhbHNlDQorICAgICAgICAgICAgICB9IF0NCisgICAgICAgICAgICB9DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9yZXNvdXJjZWRpY3Rpb25hcnkvYXV0b21hcC5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9yZXNvdXJjZWRpY3Rpb25hcnkvYXV0b21hcC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NWU3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9tb2R1bGVzL3NlcnZpY2Uvc3JjL3Rlc3QvcmVzb3VyY2VzL3Jlc291cmNlZGljdGlvbmFyeS9hdXRvbWFwLmpzb24KQEAgLTAsMCArMSwxMSBAQAorWw0KKwl7DQorCQkibmFtZSI6ICJhY3Rpb24tbmFtZSINCisJfSwNCisJew0KKwkJIm5hbWUiOiAidjQtaXAtdHlwZSINCisJfSwNCisJew0KKwkJIm5hbWUiOiAiYnVuZGxlLWlkIg0KKwl9DQorXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9yZXNvdXJjZXMvcmVzb3VyY2VkaWN0aW9uYXJ5L2RlZmF1bHRfZGVmaW5pdGlvbi5qc29uIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvbW9kdWxlcy9zZXJ2aWNlL3NyYy90ZXN0L3Jlc291cmNlcy9yZXNvdXJjZWRpY3Rpb25hcnkvZGVmYXVsdF9kZWZpbml0aW9uLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIzOTIwNQotLS0gL2Rldi9udWxsCisrKyBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL21vZHVsZXMvc2VydmljZS9zcmMvdGVzdC9yZXNvdXJjZXMvcmVzb3VyY2VkaWN0aW9uYXJ5L2RlZmF1bHRfZGVmaW5pdGlvbi5qc29uCkBAIC0wLDAgKzEsMTkgQEAKK3sNCisJIm5hbWUiOiAidjQtYWdncmVnYXQtbGlzdCIsDQorCSJkZXNjcmlwdGlvbiI6ICJUaGlzIGNvbGxlY3Rpb24gdjQtYWdncmVnYXRlIGxpc3QiLA0KKwkidmFsaWQtdmFsdWVzIjogbnVsbCwNCisJInNhbXBsZS12YWx1ZSI6IG51bGwsDQorCSJ1cGRhdGVkLWJ5IjogIkJyaW5kYSBTYW50aCAoYnMyNzk2KSIsDQorCSJyZXNvdXJjZS10eXBlIjogIk9OQVAiLA0KKwkicmVzb3VyY2UtcGF0aCI6ICIvdjQtYWdncmVnYXQtbGlzdCIsDQorCSJkYXRhLXR5cGUiOiAibGlzdCIsDQorCSJlbnRyeS1zY2hlbWEiOiAiZHQtdjQtYWdncmVnYXRlIiwNCisJInRhZ3MiOiBudWxsLA0KKwkiZGVmYXVsdCI6IG51bGwsDQorCSJzb3VyY2UiOiB7DQorCQkiaW5wdXQiOiB7DQorCQkJDQorCQl9DQorCX0sDQorCSJjYW5kaWRhdGUtZGVwZW5kZW5jeSI6IG51bGwNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvcGFyZW50L3BvbS54bWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9wYXJlbnQvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjE5MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvcGFyZW50L3BvbS54bWwKQEAgLTAsMCArMSwyMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIH4gQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKyAgfgorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgfgorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgfgorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxwcm9qZWN0CisgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2QiCisgICAgICAgIHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCisgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPgorICAgIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKyAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPgorICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXBhcmVudDwvYXJ0aWZhY3RJZD4KKyAgICA8bmFtZT5Db250cm9sbGVyIEJsdWVwcmludHMgUGFyZW50PC9uYW1lPgorICAgIDx2ZXJzaW9uPjAuMy4wLVNOQVBTSE9UPC92ZXJzaW9uPgorICAgIDxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+CisgICAgPHByb3BlcnRpZXM+CisgICAgICAgIDxwcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPlVURi04PC9wcm9qZWN0LmJ1aWxkLnNvdXJjZUVuY29kaW5nPgorICAgICAgICA8bWF2ZW4uY29tcGlsZXIudGFyZ2V0PjEuODwvbWF2ZW4uY29tcGlsZXIudGFyZ2V0PgorICAgICAgICA8bWF2ZW4uY29tcGlsZXIuc291cmNlPjEuODwvbWF2ZW4uY29tcGlsZXIuc291cmNlPgorICAgICAgICA8a290bGluLnZlcnNpb24+MS4yLjUxPC9rb3RsaW4udmVyc2lvbj4KKyAgICAgICAgPGFqc2MudmVyc2lvbj4yMDAuNC4yLVJFTEVBU0U8L2Fqc2MudmVyc2lvbj4KKyAgICAgICAgPGNvbW1vbi52ZXJzaW9uPjIuNC4yLVJFTEVBU0U8L2NvbW1vbi52ZXJzaW9uPgorICAgICAgICA8Y2FkaS5hYWYudmVyc2lvbj4xLjQuMjwvY2FkaS5hYWYudmVyc2lvbj4KKyAgICAgICAgPHNwcmluZy5ib290LnZlcnNpb24+MS41LjcuUkVMRUFTRTwvc3ByaW5nLmJvb3QudmVyc2lvbj4KKyAgICAgICAgPHNkbmMuY29uZmlnLnZlcnNpb24+MjAuMC4xLVNOQVBTSE9UPC9zZG5jLmNvbmZpZy52ZXJzaW9uPgorICAgIDwvcHJvcGVydGllcz4KKyAgICA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+CisgICAgICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuc3ByaW5nZnJhbWV3b3JrLmJvb3Q8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3ByaW5nLWJvb3QtZGVwZW5kZW5jaWVzPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7c3ByaW5nLmJvb3QudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgPHR5cGU+cG9tPC90eXBlPgorICAgICAgICAgICAgICAgIDxzY29wZT5pbXBvcnQ8L3Njb3BlPgorICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgorCisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLmNvbW1vbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1sYW5nMzwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zLjIuMTwvdmVyc2lvbj4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtY29sbGVjdGlvbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1jb2xsZWN0aW9uczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zLjIuMjwvdmVyc2lvbj4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgIDxncm91cElkPmNvbW1vbnMtaW88L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29tbW9ucy1pbzwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjY8L3ZlcnNpb24+CisgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLnZlbG9jaXR5PC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnZlbG9jaXR5PC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEuNzwvdmVyc2lvbj4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5qc29uPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmpzb248L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjAxODAxMzA8L3ZlcnNpb24+CisgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZ29vZ2xlLmd1YXZhPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmd1YXZhPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI1LjEtanJlPC92ZXJzaW9uPgorICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgorCisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5pby5zd2FnZ2VyPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnN3YWdnZXItamVyc2V5Mi1qYXhyczwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xLjUuMjA8L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgPGV4Y2x1c2lvbnM+CisgICAgICAgICAgICAgICAgICAgIDxleGNsdXNpb24+CisgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuZ2xhc3NmaXNoLmplcnNleS5jb250YWluZXJzPC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+KjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CisgICAgICAgICAgICAgICAgICAgIDxleGNsdXNpb24+CisgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuZ2xhc3NmaXNoLmplcnNleS5jb3JlPC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+KjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICAgICAgPC9leGNsdXNpb24+CisgICAgICAgICAgICAgICAgPC9leGNsdXNpb25zPgorICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgorCisgICAgICAgICAgICA8IS0tIEtvdGxpbiBEZXBlbmRlbmNpZXMgLS0+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuamV0YnJhaW5zLmtvdGxpbjwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tc3RkbGliPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7a290bGluLnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmpldGJyYWlucy5rb3RsaW48L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+a290bGluLXJlZmxlY3Q8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtrb3RsaW4udmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5jb20uZmFzdGVyeG1sLmphY2tzb24ubW9kdWxlPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmphY2tzb24tbW9kdWxlLWtvdGxpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjkuNjwvdmVyc2lvbj4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5qZXRicmFpbnMua290bGluPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmtvdGxpbi10ZXN0PC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7a290bGluLnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5vbmFwLmNjc2RrLmFwcHM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+Y29udHJvbGxlcmJsdWVwcmludHMtY29yZTwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4ke3Byb2plY3QudmVyc2lvbn08L3ZlcnNpb24+CisgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPmNvbnRyb2xsZXJibHVlcHJpbnRzLXNlcnZpY2U8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgPC9kZXBlbmRlbmN5PgorICAgICAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5jb250cm9sbGVyYmx1ZXByaW50cy1yZXNvdXJjZS1kaWN0PC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4KKyAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgPC9kZXBlbmRlbmNpZXM+CisgICAgPC9kZXBlbmRlbmN5TWFuYWdlbWVudD4KKworICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmpldGJyYWlucy5rb3RsaW48L2dyb3VwSWQ+CisgICAgICAgICAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tc3RkbGliPC9hcnRpZmFjdElkPgorICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgPC9kZXBlbmRlbmNpZXM+CisKKworICAgIDxidWlsZD4KKyAgICAgICAgPHBsdWdpbnM+CisgICAgICAgICAgICA8cGx1Z2luPgorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zb3VyY2UtcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjMuMC4xPC92ZXJzaW9uPgorICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPgorICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmF0dGFjaC1zb3VyY2VzPC9pZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5qYXI8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+CisgICAgICAgICAgICA8L3BsdWdpbj4KKworICAgICAgICAgICAgPHBsdWdpbj4KKyAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5rb3RsaW4tbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5qZXRicmFpbnMua290bGluPC9ncm91cElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPiR7a290bGluLnZlcnNpb259PC92ZXJzaW9uPgorICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPgorICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmNvbXBpbGU8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmNvbXBpbGU8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZURpcnM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VEaXI+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL2tvdGxpbjwvc291cmNlRGlyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlRGlyPiR7cHJvamVjdC5iYXNlZGlyfS9zcmMvbWFpbi9qYXZhPC9zb3VyY2VEaXI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zb3VyY2VEaXJzPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpZD50ZXN0LWNvbXBpbGU8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPnRlc3QtY29tcGlsZTwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlRGlycz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNvdXJjZURpcj4ke3Byb2plY3QuYmFzZWRpcn0vc3JjL3Rlc3Qva290bGluPC9zb3VyY2VEaXI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VEaXI+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy90ZXN0L2phdmE8L3NvdXJjZURpcj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NvdXJjZURpcnM+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4KKyAgICAgICAgICAgIDwvcGx1Z2luPgorICAgICAgICAgICAgPHBsdWdpbj4KKyAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjMuNS4xPC92ZXJzaW9uPgorICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICA8c291cmNlPiR7bWF2ZW4uY29tcGlsZXIuc291cmNlfTwvc291cmNlPgorICAgICAgICAgICAgICAgICAgICA8dGFyZ2V0PiR7bWF2ZW4uY29tcGlsZXIudGFyZ2V0fTwvdGFyZ2V0PgorICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8ZXhlY3V0aW9ucz4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXBsYWNpbmcgZGVmYXVsdC1jb21waWxlIGFzIGl0IGlzIHRyZWF0ZWQgc3BlY2lhbGx5IGJ5IG1hdmVuIC0tPgorICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmRlZmF1bHQtY29tcGlsZTwvaWQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+bm9uZTwvcGhhc2U+CisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICA8IS0tIFJlcGxhY2luZyBkZWZhdWx0LXRlc3RDb21waWxlIGFzIGl0IGlzIHRyZWF0ZWQgc3BlY2lhbGx5IGJ5IG1hdmVuIC0tPgorICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPGlkPmRlZmF1bHQtdGVzdENvbXBpbGU8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPm5vbmU8L3BoYXNlPgorICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5qYXZhLWNvbXBpbGU8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPmNvbXBpbGU8L3BoYXNlPgorICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnb2FsPmNvbXBpbGU8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPGV4ZWN1dGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5qYXZhLXRlc3QtY29tcGlsZTwvaWQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+dGVzdC1jb21waWxlPC9waGFzZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxnb2Fscz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD50ZXN0Q29tcGlsZTwvZ29hbD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZ29hbHM+CisgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9ucz4KKyAgICAgICAgICAgIDwvcGx1Z2luPgorICAgICAgICA8L3BsdWdpbnM+CisgICAgPC9idWlsZD4KKzwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL3BvbS54bWwgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NmY0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy9wb20ueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIH4gQ29weXJpZ2h0IMKpIDIwMTctMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKyAgfgorICB+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgfgorICB+ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgfgorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxwcm9qZWN0IHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiCisgICAgICAgICB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KKyAgICA8cGFyZW50PgorICAgICAgICA8Z3JvdXBJZD5vcmcub25hcC5jY3Nkay5hcHBzPC9ncm91cElkPgorICAgICAgICA8YXJ0aWZhY3RJZD5jY3Nkay1hcHBzPC9hcnRpZmFjdElkPgorICAgICAgICA8dmVyc2lvbj4wLjMuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICA8L3BhcmVudD4KKyAgICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisgICAgPGdyb3VwSWQ+b3JnLm9uYXAuY2NzZGsuYXBwczwvZ3JvdXBJZD4KKyAgICA8YXJ0aWZhY3RJZD5jb250cm9sbGVyYmx1ZXByaW50czwvYXJ0aWZhY3RJZD4KKyAgICA8bmFtZT5Db250cm9sbGVyIEJsdWVwcmludHMgUm9vdDwvbmFtZT4KKyAgICA8dmVyc2lvbj4wLjMuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKyAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPHNlcnZpY2UubmFtZT5Db250cm9sbGVyQmx1ZXByaW50czwvc2VydmljZS5uYW1lPgorICAgICAgICA8cHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZz5VVEYtODwvcHJvamVjdC5idWlsZC5zb3VyY2VFbmNvZGluZz4KKyAgICA8L3Byb3BlcnRpZXM+CisgICAgPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4KKyAgICA8bW9kdWxlcz4KKyAgICAgICAgPG1vZHVsZT5wYXJlbnQ8L21vZHVsZT4KKyAgICAgICAgPG1vZHVsZT5tb2R1bGVzPC9tb2R1bGU+CisgICAgICAgIDxtb2R1bGU+YXBwbGljYXRpb248L21vZHVsZT4KKyAgICA8L21vZHVsZXM+Cis8L3Byb2plY3Q+CisKZGlmZiAtLWdpdCBhL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL3JlcG9wcm9qZWN0LnR4dCBiL21zL2NvbnRyb2xsZXJibHVlcHJpbnRzL3JlcG9wcm9qZWN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWE1YzhlCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvcmVwb3Byb2plY3QudHh0CkBAIC0wLDAgKzEgQEAKK1NUX1NETkNNUwpkaWZmIC0tZ2l0IGEvbXMvY29udHJvbGxlcmJsdWVwcmludHMvdGltZS50eHQgYi9tcy9jb250cm9sbGVyYmx1ZXByaW50cy90aW1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQyOWZiCi0tLSAvZGV2L251bGwKKysrIGIvbXMvY29udHJvbGxlcmJsdWVwcmludHMvdGltZS50eHQKQEAgLTAsMCArMSBAQAorQ3VycmVudCB0aW1lIDogMTc6Mzg6MDYK